これからのシリーズでは 5250エミュレータでもできるGUIコントロールを
紹介していく。
IBM i もGUIコントロールはないわけではなくいくつかを
用意している。
その中でも最初は押しボタンである。
5250エミュレータ画面にボタンらしきものが現れて
押しボタンを押すと押された回数をカウント・アップするというものである。
最初に実行中の画面を紹介すると
[押しボタンDSPF: BUTTONFM ]
http://218.44.135.18/QSYS.LIB/QTRSRC.LIB.LIB/QDSPSRC.FILE/BUTTONFM.MBR
ソースはこちらから
0001.00 A DSPSIZ(24 80 *DS3) 0002.00 A MSGLOC(24) 0003.00 A PRINT 0004.00 A R DSPDTA01 0005.00 A*%%TS SD 20070817 120013 QTR REL-V5R4M0 5722-WDS 0006.00 A TEXT(' 明細画面 01') 0007.00 A CF03(03 ' 終了 ') 0008.00 A SETOF(99) 0009.00 A BLINK 0010.00 A 1 27' 押しボタン ' 0011.00 A DSPATR(HI) 0012.00 A 3 2' 下記は押しボタンのサンプルです ' 0013.00 A 4 3'OK ボタンを押したときは押した + 0014.00 A 回数をカウントします。 ' 0015.00 A 8 4' 押した回数 . . . . . . . . . .' 0016.00 A KAISU 3Y 0B 8 37 0017.00 A PSHFLD 2Y 0B 8 45PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 0018.00 A PSHBTNCHC(1 ' OK ' ENTER) 0019.00 A PSHF10 2Y 0B 10 45PSHBTNFLD(*RSTCSR (*NUMCOL 1)) 0020.00 A* PSHBTNCHC(1 ' F1O ' CF10) 0021.00 A PSHBTNCHC(1 'ボタン 10 ' CF10) 0022.00 A 10 55' ←クリックまたは CF10' 0023.00 A DSPMSG 40A O 20 4DSPATR(HI) 0024.00 A 23 2'F3= 終了 ' 0025.00 A COLOR(BLU)
[解説]
PSHBTNFLD というものが押しボタンを表すキー・ワードである。
PCHBTNCHC がボタンの表示文字列と機能キーである。
ボタンそのものは 2バイトの数字フィールドとして定義されており
ボタンが押されたときは値に1が入る。
[押しボタンRPG: BUTTON]
ソースはこちらから
0001.00 H DFTNAME(BUTTON) DATEDIT(*YMD/) 0002.00 F******** 押しボタン ************************************************* 0003.00 FBUTTONFM CF E WORKSTN 0004.00 F********************************************************************** 0005.00 D F10MSG C CONST('F10 ボタンが押されました。 ') 0006.00 D OKMSG C CONST('OK ボタンが押されました。 ') 0007.00 D ON S 2S 0 INZ(1) 0008.00 C*----------------------------------------------------+ 0009.00 C DSPLY TAG | 0010.00 C EXFMT DSPDTA01 | 0011.00 C*----------------------------------------------------+ 0012.00 C SETOFF 99 0013.00 C*( CF03 )- 終了 0014.00 C *IN03 IFEQ *ON CF03 0015.00 C SETON LR 0016.00 C RETURN 0017.00 C ENDIF CF03 0018.00 C*( 実行キー ) 0019.00 C EXSR COUNT 0020.00 C GOTO DSPLY 0021.00 C****************************************************** 0022.00 C *INZSR BEGSR 0023.00 C****************************************************** 0024.00 C Z-ADD 0 KAISU 0025.00 C ENDSR 0026.00 C****************************************************** 0027.00 C COUNT BEGSR 0028.00 C****************************************************** 0029.00 *( F10 ボタン ) 0030.00 C PSHF10 IFEQ ON 0031.00 C MOVEL(P) F10MSG DSPMSG 0032.00 C ADD 1 KAISU 0033.00 C ELSE 0034.00 *( 押しボタン ) 0035.00 C PSHFLD IFEQ ON 0036.00 C MOVEL(P) OKMSG DSPMSG 0037.00 C ADD 1 KAISU 0038.00 C ELSE 0039.00 C MOVE *BLANKS DSPMSG 0040.00 C ENDIF 0041.00 C ENDIF 0042.00 C ENDSR
[解説]
ボタンが押されたときは値が ON (=1)になることを利用して
処理を行っている。