CL

31. ファイルを使用しているCLPで再表示するには?

RPGを使わなくてもCLPの中でファイルを DCLF で宣言して処理することは便利な方法である。
このサイトの「2.CLで画面ファイルを表示するには?」「3.CLでデータ・ベースを読んで処理する
には?」
を参照すればCLPでもファイルを手軽に処理できることがおわかり頂けると思う。
しかし、そのCLP 内でファイルを更新したりしたので、再表示させたい場合はどのようにすれば
よいのであろうか?
CLP 内でのファイル処理は明示的にオープン・クローズができないからである。
このような再表示を実現するには、自分自身のCLP を TFRCTL によって再呼び出し
すればよい。
弊社製品では WRK... という、いくつかのコマンドが提供されているが再表示機能の多くは、
この TFRCTL によって実現されている。

0001.00              PGM                                                 
0002.00 /*---------------------------------------------------------*/    
0003.00 /*   DSPAGAIN    :    再表示する CLP                       */    
0004.00 /*---------------------------------------------------------*/    
0005.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(80)            
0006.00              DCLF       FILE(MYOBJLIB/DSPAGAINFM)                
0007.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))  
0008.00                                                                  
0009.00  DSPLY:      SNDRCVF    RCDFMT(DSPDTA)                           
0010.00              IF         COND(&IN03 *EQ '1') THEN(RETURN)         
0011.00  /*( CF05- 再表示 )*/                                            
0012.00              IF         COND(&IN05 *EQ '1') THEN(DO)             
0013.00              TFRCTL     PGM(MYOBJLIB/DSPAGAIN)                   
0014.00              ENDDO                                               
0015.00 /*( 実行キー )*/                                                 
0016.00              GOTO       DSPLY                                    
0017.00                                                                  
0018.00  ERROR:      RCVMSG     RMV(*NO) MSG(&MSG)                       
0019.00  SNDMSG:     SNDPGMMSG  MSG(&MSG) MSGTYPE(*DIAG)                 
0020.00              ENDPGM