これからのシリーズでは 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)になることを利用して
処理を行っている。
