RPG

122. 押しボタンを DSPF で表示するには?

DDS解説書を読むと DSPF でも、結構、GUIコントロールを作成することができる。
ここからのシリーズでは DSPF上での GUIコントロールを紹介する。
最初は「押しボタン」(プッシュ・ボタン)であり、マウスを使って押すことができるボタンである。

【 解説 】

この DSPF画面でOKボタンをマウスの左ボタンで押すと、次々と数値がカウント・アップされる。

【 DSPFソース 】
0001.00      A*%%TS  SD  20070817  120013  QTR         REL-V5R4M0  5722-WDS     
0002.00      A*            11:59:33    QSECOFR     REL-R06M00  5714-UT1         
0003.00      A*%%EC                                                             
0004.00      A                                      DSPSIZ(24 80 *DS3)          
0005.00      A                                      MSGLOC(24)                  
0006.00      A                                      PRINT                       
0007.00      A          R DSPDTA01                                              
0008.00      A*%%TS  SD  20070817  120013  QTR         REL-V5R4M0  5722-WDS     
0009.00      A                                      TEXT(' 明細画面 01')        
0010.00      A                                      CF03(03 ' 終了 ')           
0011.00      A                                      SETOF(99)                   
0012.00      A                                      BLINK                       
0013.00      A                                  1 27' 押しボタン '              
0014.00      A                                      DSPATR(HI)                  
SOSI         A                                  3  2' 下記は押しボタンのサンプ  
SOSI         A                                  4  3'OK ボタンを押したときは押  
0017.00      A                                       回数をカウントします。 '   
0018.00      A                                  8  4' 押した回数 . . . . . . .  
0019.00      A            KAISU          3Y 0B  8 37                            
0020.00      A            PSHFLD         2Y 0B  8 45PSHBTNFLD(*RSTCSR (*NUMCOL  
0021.00      A                                      PSHBTNCHC(1 ' OK ' ENTER)
0022.00      A            PSHF10         2Y 0B 10 45PSHBTNFLD(*RSTCSR (*NUMCOL 
0023.00      A                                      PSHBTNCHC(1 ' F1O ' CF10
0024.00      A            DSPMSG        40A  O 20  4DSPATR(HI)                 
0025.00      A                                 23  2'F3= 終了 '
【 CLP ソース 】
0001.00              PGM                                                       
0002.00 /*---------------------------------------------------------*/          
0003.00 /*    BUTTON    :   押しボタン                             */          
0004.00 /*---------------------------------------------------------*/          
0005.00              DCL        VAR(&MSG)      TYPE(*CHAR) LEN(80)             
0006.00              DCLF       FILE(QTROBJ/BUTTONFM)                          
0007.00                                                                        
0008.00              CHGVAR     VAR(&KAISU) VALUE(0)                           
0009.00  DSPLY:      SNDRCVF    RCDFMT(DSPDTA01)                               
0010.00              IF         COND(&IN03 *EQ '1') THEN(RETURN)               
0011.00              IF         COND(&PSHF10 *EQ 1) THEN(DO)                   
0012.00              CHGVAR     VAR(&DSPMSG) VALUE('F10 ボタンが押されました ')
0013.00              ENDDO                                                     
0014.00              ELSE       CMD(DO)                                        
0015.00              CHGVAR     VAR(&DSPMSG) VALUE('OK ボタンが押されました ') 
0016.00              ENDDO                                                     
0017.00              CHGVAR     VAR(&KAISU) VALUE(&KAISU + 1)                  
0018.00              GOTO       DSPLY                                          
0019.00              RETURN                                                    
0020.00                                                                        
0021.00  ERROR:      RCVMSG     RMV(*NO) MSG(&MSG)      
0022.00  SNDMSG:     SNDPGMMSG  MSG(&MSG) MSGTYPE(*DIAG)
0023.00              ENDPGM