DSPFのあるレコードをメッセージとともに表示する方法を紹介する。
例えば次のような表示である。
_
DFUのようにレコードを更新したとき
初期画面に戻って「1レコードを更新しました」と
メッセージを表示して初期画面に戻りたいとする。
読者はそれは簡単。ERRMSGまたはERMSGIDキー・ワードで
メッセージを表示すれはよいと思うかも知れないが
それはできない。
あるいはSFLMSGを使えば良いという人もいるかも知れないが
それもできない。
なぜならこれらのMSGキー・ワードはある表示レコードが
事前に表示されていて同じ表示レコードをERMSGキー・ワードで
表示するときだけ有効に働くからである。
このことはIBMマニュアルにもERRMSGキー・ワードの説明に
書かれている。
つまりもとの画面にメッセージを表示することはできても
いきなりメッセージさきの画面を始めて表示することは難しいのである。
意外とメッセージつきの表示画面をいきなり表示することは簡単ではないのだ。
_
それではどのようにすればこのメッセージつきの画面を
表示することができるのだろうか?
それには2つの条件が必要となる。
①表示レコードにOVERLAYキー・ワードが必要
②自分自身に状況メッセージ(*STATUS)で出力すること
状況メッセージとは「..を実行中です」のように進行状況を表示する
メッセージである。
例えば次のように表示する。
DCL VAR(&MSG) TYPE(*CHAR) LEN(132) : CHGVAR &MSG VALUE('1レコードを追加しました。') SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&STSMSG) + TOPGMQ(*EXT) MSGTYPE(*STATUS)
このメッセージ表示を実行直後にOVERLAYを指定した表示レコードを
表示すると初めての表示であっても画面左下に
「1レコードを追加しました。」とのメッセージが表示される。
このサンプルがCLPであることからわかるように RPGで同じことを実現するには
API または RPGの中で同じCLPコマンドを呼び出す必要がある。
後者のほうがやさしいだろう。
_