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