DSPF上でのエラー・メッセージの表示の方法についていくつか紹介する。
意外と多くの開発者が、ユーザー独自の通常のフィールドをメッセージ用に割り当てて
エラー・メッセージとして表示していることに驚く。
DSPFには非常に便利なメッセージの表示機能が提供されているのでこれを使わない手はない。
DSPF には ERRMSG, ERRMSGID, SFLMSG および SFLMSGID キーワードの4つが
用意されている。
SFLMSGKEY もあるが CLP などによる外部呼出しが必要となるので
使用はあまりお奨めできない。
DSPF のこれらのキーワードを使用する理由は、
ことが挙げられる。
まず最初にこれらのキーワードの基本的な使用方法を紹介して、
次に少し変わったメッセージの利用方法を次の章で紹介しよう。
SFLMSG は 基本的には ERRMSGキーワードと同じ使用方法であるが
SFLMSG は SFLCTLレコードにのみ定義する。
A MSGLOC(24)
A R DSPHEAD
:
A JUDATE 6Y 0B 3 73TEXT(' 受注日 ')
A 64 ERRMSG(' 受注日の誤りです。' 64)
この例では標識 64 が *ON になって表示されるとエラー・メツセージは 24行目に表示されて
DSPF は入力禁止となる。
操作員がリセット・キーを押すと、
ERRMSG(' 受注日の誤りです。' 64)
に標識 64 が記述されているので 標識 64 は、このリセット操作と同時に *OFF に設定される。
RPG で標識 64 を *OFF にする記述は必要でない。
SFLMSGID は 基本的には ERRMSGIDキーワードと同じ使用方法であるが
SFLMSGID は SFLCTLレコードにのみ定義する。
A JUDATE 6Y 0B 3 73TEXT(' 受注日 ')
A 64 ERRMSGID(MSG0007 MYLIB/MYMSGF 64)
この記述はライブラリー MYLIB のメッセージ・ファイル MYMSGF のメッセージ識別 MSG0007 を
エラー・メッセージとして出力することを意味している。
メッセージ・ファイルは CRTMSGF コマンドで作成して、WRKMSGD コマンドによって簡単に保守
することができる。
言語によっては OVRMSGF を使用すると日本語用のメッセージ・ファイルの使用と
英語のメッセージ・ファイルの使用を実行時に簡単に切り替えることができる。
メッセージ・ファイルの利点はまだある。
どうせなら「入力した xxxxx は正しくありません。」のように操作員の入力した値も
合わせて動的なメッセージとして表示すれば、よりわかりやすいものとなるであろう。
データ・ベースのフィールド値を表示してもよい。
A JUDATE 6Y 0B 3 73TEXT(' 受注日 ')
A 64 ERRMSGID(MSG0007 MYLIB/MYMSGF 64 &MSGDTA)
:
A MSGDTA 6A P
とすれば &MSGDTA をメッセージの中に埋め込むことができる。
メッセージは
'入力した &N は正しくありません。'
のように定義しておけばよい。
SFL に対するメッセージは SFLCTL レコード上に SFLMSG または SFLMSGID で定義
するとともにエラー行のフィールドを下記のように示す必要がある。
A R SFREC01 SFL
:
A SHSCOD 4A B 8 58TEXT(' 品種 コード')
A 63 DSPATR(PC RI)
:
A R SFCTL01 SFLCTL(SFREC01)
A TEXT(' SFLコントロール ')
:
A 63 SFLMSG(' 品種 コード の誤りです。' 63)