先の「244. POPUPウインドウを表示すると親ウィンドウが消えてしまう ?!」でも
説明したように本来、i5/OS にある機能を使えていない例が非常に多い。
十分、技術に精通しているIBM i のユーザー(開発者)なら何だ、いまさらそんなことを ?!
とお思いになると思うがエラー・メッセージを出力する機能(ERRMSG, SFLMSG )が
十分に使い切れていないケースが非常に多い。
23 〜24行目にフィールドにメッセージを出力して
エラー・フィールドにカーソルを位置づけて反転イメージに変更する、といった具合で
これを「これをうちではエラー・メッセージと呼んでいます。」という開発者もいる。
ここで敢えてエラー・メッセージの出力方法を紹介するのは、
エラー・メッセージの出力方法を学習してもらいたいからである。
A JUTKCD R 4A B 4 17 A 61 DSPATR(RI) A 61 DSPATR(PC) : A 99 ERRMSG 80A O 23 2 A 99 DSPATR(RI) A 99 DSPATR(HI)
この方法はプログラムの中でフィールド ERRMSG にメッセージを MOVE しなければならない。
またキー・ボードはロックされずに RESET も行わない。
これはIBM i の一般的なエラー・メッセージではないし、リセット操作もない。
A JUTKCD R 4A B 4 17 A 61 ERRMSG('得意先コードの誤りです' 61)
たったこれだけである。SFLMSG のときも大差はない。
どちらが簡単だろうか ?
この場合、エラー・メッセージは通常のエラー・メッセージと同じように出力され
カーソルの位置づけ(DSPATR(PC)) や反転イメージ(DSPATR(RI)) も i5/OSによって自動的に行われる。
エラーが発生するとキー・ポードがロックされて RESET キーを押す必要もある。
つまり IBM i の標準的なエラー処理と同等なものとなる。
独自のエラー処理にしてしまうとIBM i のユーティリティーとは異なった操作を
エンド・ユーザーに強いることになってしまう。
一般的な企業のシステム室による開発のほうが SSO に比べてはるかに技術力も高く
MSGF や SFLMSG によるメッセージよる出力の例も珍しくない。
なお 23行目にメッセージを出したいのであれば
ファイル・レベル・キーワードとして MSGLOC を MSGLOC(23) として CRTDSPF すれば
エラー・メッセージは 23行目に出力される。
MSGLOC は飾りではない。
GUI化や Web化を唱える前に IBM i の正規の使用方法をぜひ学んで頂きたい。