ユーザーに表示されるFOCエラーメッセージを自由にカスタマイズする方法
バージョン | 9.2 |
WebFOCUSのエラーメッセージの内容をエンドユーザが見たら困惑しそうだし、エラーメッセージは見せたくないな・・・
エラーメッセージがでたら管理者に知らせてもらえるように、メッセージを追加できないか
WebFOCUSでは、プロシジャ実行時にエラーが発生した際には、以下のような画面が表示されます。
このエラーメッセージを「-HTMLFORM」構文を使い、任意のHTMLを埋め込んでおくことで、エラーメッセージの画面をカスタマイズすることが可能です。
プロシジャ実行時に、エラーが発生した場合と、正常終了した場合で分岐処理を設定し、エラーが発生した場合のみ、[-HTMLFORM]で任意のテキストをHTMLで表示させる処理を作成していくよ
今回は、エラーメッセージのカスタマイズ方法として、以下2通りの方法をご紹介します。
- エラー発生時に任意のテキストのみを表示させる方法
- 出力されるエラーメッセージの詳細も表示させる方法
-HTMLFORM
プロシジャ内にHTMLを埋め込むことができる構文です。
例
-HTMLFORM BEGIN
<html><body>
任意のテキスト
</body></html>
–HTMLFORM END
&FOCERRNUM
プロシジャの実行後、出力されたエラー番号を記録する変数です。
正常終了した場合は、この変数値は「0」になります。
&FOCERRNUMを使い、エラーが発生した場合のみ[-HTMLFORM]を実行する処理を行います。
例(正常終了した場合は、処理を飛ばす分岐処理)
-IF &FOCERRNUM EQ 0 THEN GOTO :L_NOERR;
エラーメッセージに任意のテキストのみを表示させる
実装イメージ
実装サンプル
-****************************************
-*プロシジャの実行
-****************************************
TABLE FILE CAR
SUM SALES
BY CAR
END
-****************************************
-*エラーが出なかったら終了する分岐処理
-****************************************
-IF &FOCERRNUM EQ 0 THEN GOTO :L_NOERR;
-****************************************
-*出力させるHTMLの中身を以下に記載
-****************************************
-HTMLFORM BEGIN
<html><body>
<pre>
エラーが発生しました。
情報システム部 XX課 XXXまでご連絡をお願いします。
</pre>
</body></html>
-HTMLFORM END
-:L_NOERR
エラーメッセージの詳細内容も表示させる
上記のエラーメッセージの編集に加えて、WebFOCUS側で出力されているエラー内容の詳細も表示させる方法をご紹介します。
実装イメージ
実装サンプル
エラー内容の詳細まで表示させるためには、以下2つの設定が追加で必要です。
SET EMGSRV = FILE
エラーメッセージをファイルに出力する設定です。
!IBI.FIL.EMGFILE
エラーメッセージを表示させたい箇所に挿入することで、エラーメッセージを表示することができます。
-****************************************
-*エラーメッセージ等をファイルに出力する設定
-****************************************
SET EMGSRV = FILE
-****************************************
-*プロシジャの実行
-****************************************
TABLE FILE CAR
SUM SALES
BY CAR
END
-****************************************
-*エラーが出なかったら終了する分岐処理
-****************************************
-IF &FOCERRNUM EQ 0 THEN GOTO :L_NOERR;
-****************************************
-*出力させるHTMLの中身を以下に記載
-****************************************
-HTMLFORM BEGIN
<html><body>
<pre>
エラーが発生しました。
管理者まで、エラー内容のご連絡をお願いいたします。
****************************************
エラー内容詳細
****************************************
!IBI.FIL.EMGFILE;
****************************************
</pre>
</body></html>
-HTMLFORM END
-:L_NOERR
外部ファイルとして実装する方法
他のプロシジャでもエラーメッセージのカスタマイズはしたいけど、1つ1つにHTML文を書くのは大変だよ・・・
プロシジャごとに処理を書く以外にも、分岐処理やHTML文を外部ファイル化し、共通処理として利用することが可能です。
実装サンプル
プロシジャ
-****************************************
-*エラーメッセージ等をファイルに出力する設定
-****************************************
SET EMGSRV = FILE
-****************************************
-*プロシジャ
-****************************************
TABLE FILE CAR
SUM SALES
BY CAR
END
-****************************************
-*分岐処理が実行されるファイルを取り込む
-****************************************
-INCLUDE IBFS:/WFC/Repository/test/error.fex
分岐処理
プロシジャで指定しているIBFS:/WFC/Repository/test/error.fexの内容です。
-****************************************
-*エラーが出なかったら終了する分岐処理
-****************************************
-IF &FOCERRNUM EQ 0 THEN GOTO :L_NOERR;
-****************************************
-*出力させるHTMLの中身を以下に記載
-****************************************
-HTMLFORM IBFS:/WFC/Repository/test/error.htm
-:L_NOERR
HTML
上記のerror.fexで指定しているIBFS:/WFC/Repository/test/error.htmの内容です。
<html><body>
<pre>
エラーが出ました。
管理者までご連絡をお願いいたします。
****************************************
エラー内容詳細
****************************************
!IBI.FIL.EMGFILE;
****************************************
</pre>
</body></html>
最後に
HTMLFORM で任意のHTMLを書くことができるから、エラーメッセージも自由にカスタマイズすることができるよ♪
また、&FOCERRN を使って分岐処理を行えば、エラーの内容によってメッセージを変えたりすることもできそうだね!
外部ファイル化して共通処理として利用すれば、色々なプロシジャのエラーメッセージのカスタマイズができるよ!ぜひ使ってみてね!