テキスト・エリアまたはテキスト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
