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