指定端末でプログラム起動方法


メッセージキューの作成

CRTMSGQ  ライブラリー名/キュー名
   メッセージ・キューを端末単位に定義して下さい。

メッセージファイルを使用した場合

送信PG

PGM   PARM(&DEV)                                                 
             DCL        VAR(&DEV   ) TYPE(*CHAR) LEN(10)         
             DCL        VAR(&MSGKEY) TYPE(*CHAR) LEN(4)          
             DCL        VAR(&MSGQ  ) TYPE(*CHAR) LEN(10)         
             CHGVAR &MSGQ ('M' *TCAT %SST(&DEV 2 9))             
             SNDPGMMSG  MSGID(TST0000) MSGF(HRMLIB/TESTMSGF) +   
 
                          TOMSGQ(QGPL/&MSGQ) MSGTYPE(*INQ) +     
                          KEYVAR(&MSGKEY)                        
             RCVMSG     MSGTYPE(*RPY) MSGKEY(&MSGKEY) WAIT(120)  
ENDPGM                                                           

受信PG

BRKPGM:     PGM (&MSGQ &MSGQLIB &MSGMRK)                                
              DCL &MSGQ TYPE(*CHAR) LEN(10)                             
              DCL &MSGQLIB TYPE(*CHAR) LEN(10)                          
              DCL &MSGMRK TYPE(*CHAR) LEN(4)                            
              DCL &MSGID TYPE(*CHAR) LEN(7)                             
              RCVMSG     MSGQ(&MSGQLIB/&MSGQ) MSGKEY(&MSGMRK) +          
                              MSGID(&MSGID)                       
              IF (&MSGID *EQ 'TST0000') +                               
                     DO                                                 
                     EDTCDE                                             
                     MONMSG CPF0000                                     
                     SNDRPY MSGKEY(&MSGMRK) MSGQ(&MSGQLIB/&MSGQ) RPY(I) 
                     MONMSG CPF0000                                     
                     ENDDO                                              
              /* OTHER MESSAGES REQUIRE USER INTERVENTION */            
              ELSE CMD(DSPMSG MSGQ(&MSGQLIB/&MSGQ))                     
  ENDBRKPGM:  ENDPGM                                                    

メッセージ使用した場合

送信PG

PGM   PARM(&DEV)                                                 
             DCL        VAR(&DEV   ) TYPE(*CHAR) LEN(10)         
             DCL        VAR(&MSGKEY) TYPE(*CHAR) LEN(4)          
             DCL        VAR(&MSGQ  ) TYPE(*CHAR) LEN(10)         
             CHGVAR &MSGQ ('M' *TCAT %SST(&DEV 2 9))             
             SNDPGMMSG  MSG(’EDTCDE’)  +   
                          TOMSGQ(QGPL/&MSGQ) MSGTYPE(*INQ) +     
 
                          KEYVAR(&MSGKEY)                        
             RCVMSG     MSGTYPE(*RPY) MSGKEY(&MSGKEY) WAIT(120)  
ENDPGM                                                           

受信PG

BRKPGM:     PGM (&MSGQ &MSGQLIB &MSGMRK)                                
              DCL &MSGQ TYPE(*CHAR) LEN(10)                             
              DCL &MSGQLIB TYPE(*CHAR) LEN(10)                          
              DCL &MSGMRK TYPE(*CHAR) LEN(4)                            
              DCL &MSGID   TYPE(*CHAR) LEN(7)                             
              DCL &MSG    TYPE(*CHAR) LEN(6)                             
             RCVMSG     MSGQ(&MSGQLIB/&MSGQ) MSGKEY(&MSGMRK) +          
                              MSGID(&MSGID)   MSG(&MSG)                    
              IF (&MSG *EQ 'EDTCDE') +                               
                     DO                                                 
                     EDTCDE                                             
                     MONMSG CPF0000                                     
                     SNDRPY MSGKEY(&MSGMRK) MSGQ(&MSGQLIB/&MSGQ) RPY(I) 
                     MONMSG CPF0000                                     
                     ENDDO                                              
              /* OTHER MESSAGES REQUIRE USER INTERVENTION */            
              ELSE CMD(DSPMSG MSGQ(&MSGQLIB/&MSGQ))                     
  ENDBRKPGM:  ENDPGM