ユーザーに表示されるFOCエラーメッセージを自由にカスタマイズする方法

2024年3月23日テクニカルメモ

バージョン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 を使って分岐処理を行えば、エラーの内容によってメッセージを変えたりすることもできそうだね!

外部ファイル化して共通処理として利用すれば、色々なプロシジャのエラーメッセージのカスタマイズができるよ!ぜひ使ってみてね!