テキスト・エリアまたはテキストBOXと呼ばれるGUIコントロールは
複数行の文字テキストを入力するコントロールである。
IBM iでもテキスト・エリアまたはテキストBOXと呼ばれる
GUIコントロールを作ることができる。
IBMはどうもMicrosoftの真似をするのが嫌いらしく
全く別の用語を使うので一般にこれがテキスト・エリアとはは
認識されないようである。
次の入力画面を見て欲しい。
これはDDSのCNTFLDというキー・ワードを使って
ある大きなひとつのフィールドを複数行に分割して表示したものである。
もちろんこれは表示だけでなく入力することもできる。
CNTFLDキー・ワードはある長いフィールドの
一行の桁数に分割して表示するキー・ワードである。
DDSソースを次に紹介する。
[ CNTFLDFM ]
ソースはこちらから
0001.00 A DSPSIZ(24 80 *DS3) 0002.00 A MSGLOC(24) 0003.00 A******************************************************************* 0004.00 A R DSPDTA01 0005.00 A******************************************************************* 0006.00 A*%%TS SD 20210805 150710 QTR REL-V6R1M0 5761-WDS 0007.00 A TEXT(' 明細画面 01') 0008.00 A CF03(03 ' 終了 ') 0009.00 A CF12(12 ' 前画面 ') 0010.00 A SETOF(99) 0011.00 A BLINK 0012.00 A 1 21' 部品検収の入力 ' 0013.00 A DSPATR(HI) 0014.00 A DSPMSG 6A O 1 53TEXT(' 保守モード ') 0015.00 A DSPATR(HI) 0016.00 A 2 40' 検収日 ' 0017.00 A BKDATE 8Y 0O 2 49EDTCDE(W) 0018.00 A 3 2' 部品コード ' 0019.00 A BKNCOD 12A O 3 17TEXT(' 部品コード ') 0020.00 A 4 2' 部品名 ' 0021.00 A BHNAME 20O O 4 17TEXT(' 部品名 ') 0022.00 A 5 2' 検収数 ' 0023.00 A BKNUKO 7Y 0B 5 17TEXT(' 検収数 ') 0024.00 A EDTCDE(K) 0025.00 A 9 2' 摘要 ' 0026.00 A BKTEKI 408A B 9 17CNTFLD(034) 0027.00 A* 0028.00 A 23 2'F3= 終了 ' 0029.00 ****************************************************************** 0030.00 A R DSPHEAD 0031.00 ****************************************************************** 0032.00 A TEXT(' 初期画面 ') 0033.00 A* 11:59:33 QSECOFR REL-R06M00 5714-UT1 0034.00 A CF03(03 ' 終了 ') 0035.00 A ROLLUP(07) 0036.00 A ROLLDOWN(08) 0037.00 A BLINK 0038.00 A 1 21' 部品検収の入力 ' 0039.00 A DSPATR(HI) 0040.00 A 2 40' 検収日 ' 0041.00 A BKDATE 8Y 0B 2 49 0042.00 A EDTCDE(W) 0043.00 A 3 2' 部品コード ' 0044.00 A BKNCOD 12A B 3 17TEXT(' 部品コード ') 0045.00 A 11 13' 部品コードを入れて + 0046.00 A 実行キーを押してください ' 0047.00 A DSPATR(HI) 0048.00 A F3FLD 2Y 0B 23 2PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 0049.00 A TEXT(' 終了ボタン ') 0050.00 A PSHBTNCHC(1 '*END' CF03) 0051.00 ******************************************************************* 0052.00 A R ENDOPT 0053.00 ******************************************************************* 0054.00 A TEXT(' 終了画面 ') 0055.00 A CF03(03 ' 終了 ') 0056.00 A CSRLOC(LIN POS) 0057.00 A 1 34' 終了 ' 0058.00 A COLOR(PNK) 0059.00 A DSPATR(HI) 0060.00 A 3 2' 処理されたレコード数 ' 0061.00 A 5 10' 追加 . . . . . :' 0062.00 A ADDREC 5Y 0O 5 35EDTCDE(4) 0063.00 A 6 10' 変更 . . . . . :' 0064.00 A CHGREC 5Y 0O 6 35EDTCDE(4) 0065.00 A 7 10' 削除 . . . . . :' 0066.00 A DLTREC 5Y 0O 7 35EDTCDE(4) 0067.00 A 11 2' 選択項目を打鍵して,実行キーを押 + 0068.00 A してください。 ' 0069.00 A COLOR(BLU) 0070.00 A 13 5' データ入力の終了 . . . . . .' 0071.00 A ANS 1A B 13 39VALUES('Y' 'N') 0072.00 A 13 53'Y=YES, N=NO' 0073.00 A F3FLD 2Y 0B 23 2PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 0074.00 A TEXT(' 終了ボタン ') 0075.00 A PSHBTNCHC(1 '*END' CF03) 0076.00 A PREV 2Y 0B 23 15PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 0077.00 A TEXT(' 戻る ') 0078.00 A PSHBTNCHC(1 '*PREV' CF12) 0079.00 A LIN 3S 0H 0080.00 A POS 3S 0H![]()
[解説]
0026.00 A BKTEKI 408A B 9 17CNTFLD(034)
フィールド : BKTEKI は 408バイトであるが CNTFLD(034) によって
一行は 34桁で 408 / 34 = 12行として表示されることになる。
[ RPG : CNTFLD ]
ソースはこちらから
001.00 H DFTNAME(CNTFLD) DATEDIT(*YMD/)BNDDIR('QC2LE') 002.00 F******** *FILETEXT*********************************************** 003.00 FCNTFLDFM CF E WORKSTN 004.00 F INFDS(INFDSF) 005.00 F***************************************************************** 006.00 * QTRSRC/QRPGLESRC(CNTFLD) 007.00 * 使用目的 : 更新 (*UPDATE) 008.00 * 作成日 : 2023/10/31 11:06:52 009.00 * 作成者 : QTR 010.00 011.00 D INFDSF DS QUALIFIED 012.00 * オープン・フィードバック域 160 BYTES 81-240 013.00 D OPNFBK 81 240 ファイル名 014.00 D ODP_TYPE 81 82 ODP タイプ 015.00 D FILE_NAME 83 92 ODP タイプ 016.00 D LIBRARY 93 102 ODP タイプ 017.00 D MEMBER 129 138 メンバー名 018.00 019.00 D*( WORK 日付 YYMMDD データ 構造 ) 020.00 D DATEDS DS 021.00 D SRY 1 2 0 022.00 D SRYMD 1 8 0 023.00 D YYMMDD 3 8 0 0024.00 D YYMM 3 6 0 0025.00 D MMDD 5 8 0 0026.00 D YY 3 4 0 0027.00 D MM 5 6 0 0028.00 D DD 7 8 0 0029.00 0030.00 D DSPMSG S 6A 0031.00 0032.00 C*----------------------------------------------------+ 0033.00 C GOTO DSPLY 0034.00 C*----------------------------------------------------+ 0035.00 C*( 初期画面 ) 0036.00 C*----------------------------------------------------+ 0037.00 C START TAG | 0038.00 C EXFMT DSPHEAD | 0039.00 C*----------------------------------------------------+ 0040.00 C SETOFF 99 0041.00 C*( CF03 )- 終了 0042.00 C *IN03 IFEQ *ON CF03 0043.00 C SETON LR 0044.00 C EXSR LRRTN 0045.00 C LR RETURN 0046.00 C GOTO START 0047.00 C ENDIF 0048.00 C*( 実行キー ) 0049.00 C GET_RECORD TAG 0050.00 C SETOFF 90 0051.00 C 90 MOVEL ' 入力 ' DSPMSG 0052.00 C N90 MOVEL ' 更新 ' DSPMSG 0053.00 C N90 EXSR CHECK 0054.00 C 99 GOTO START 0055.00 C*( 明細画面 ) 0056.00 C*-------------------------------------------------------------------------+ 0057.00 C DSPLY TAG | 0058.00 C EXFMT DSPDTA01 | 0059.00 C*-------------------------------------------------------------------------+ 0060.00 C SETOFF 99 0061.00 C*( CF03 )- 終了 0062.00 C *IN03 IFEQ *ON CF03 0063.00 C SETON LR 0064.00 C EXSR LRRTN 0065.00 C LR RETURN 0066.00 C GOTO DSPLY 0067.00 C ENDIF CF03 0068.00 C*( CF12 )- 前画面 0069.00 C *IN12 IFEQ *ON CF12 0070.00 C SETOFF 12 0071.00 C GOTO START 0072.00 C ENDIF CF12 0073.00 C*( 実行キー ) 0074.00 C EXSR CHECK 0075.00 C GOTO DSPLY 0076.00 C END TAG 0077.00 C****************************************************** 0078.00 C *INZSR BEGSR 0079.00 C****************************************************** 0080.00 C* 初期サイクルのみの実行 0081.00 C ENDSR 0082.00 C****************************************************** 0083.00 C CHECK BEGSR 0084.00 C****************************************************** 0085.00 C*( 明細チエック ) 0086.00 C* 0087.00 C ENDSR 0088.00 C****************************************************** 0089.00 C LRRTN BEGSR 0090.00 C****************************************************** 0091.00 C SETON LR 0092.00 C ENDSR![]()