プロシジャの処理を確認してみよう(-SET &ECHO =ALL;)

2024年3月23日はじめてのWebFOCUS

バージョン9.0.3

本ページについて

特定のプロシジャでエラーが発生したり、意図しない処理となった場合、プロシジャ実行時の処理状況を確認し、デバッグを行っていきます。
本ページでは、ECHOコマンド(エコーコマンド)を使用したソースの処理状況を確認する方法を記載します。

使用するコマンド

-SET &ECHO =ALL;

実行したプロシジャのソースを、変数に値が表示された状態で確認することができます。
実際に経由した分岐が出力されるので、処理の流れが明確になります。

弊社では、「エコーを確認する」「エコーをとる」と表現します。

テキストベースでの確認方法

  1. 該当のプロシジャ(.fex)をテキストエディタで開きます。
  2. プロシジャの先頭に以下のコマンドを追加します。
-SET &ECHO = ALL;
  1. エラーが発生する場合、画面上に詳細が表示されます。

エラーが発生せず実行結果が表示される場合、ブラウザを右クリックし、[ソースの表示]から実行されたソースを確認することができます。

[ソースの表示]メニューについては、ブラウザにより表示が異なります。
実行形式は"HTML"としてください。

App Studioでの確認方法

レポートを実行時、[メッセージビューアオプション]を[ダイアログマネージャコマンドの表示]に変更することで確認ができます。

確認後は、[メッセージビューア オフ]に戻してください。

InfoAssistでの確認方法

InfoAsssitの機能で確認することができません。
WebFOCUSホームページから該当のレポートを右クリックし、[テキストエディタで編集]からデバッグコマンドを追加し、確認します。

-SET &ECHO = ALL;

デバッグコマンドを入力したままレポートを保存すると、InfoAsssitで開けなくなります。
テキストエディタで編集後は保存せず閉じてください。

ビジュアライゼーションでの確認方法

Designer、ビジュアライゼーションの機能で確認することができません。
WebFOCUS Hubから該当のレポートを右クリックし、[テキストエディタで編集]からデバッグコマンドを追加し、確認します。

-SET &ECHO = ALL;

デバッグコマンドを入力したままレポートを保存すると、ビジュアライゼーションで開けなくなります。
テキストエディタで編集後は保存せず閉じてください。

チェックポイント

  • エラーが発生していないか

 例)testecho.fex

-SET &ECHO = ALL;

-DEFAULT &TEST = 'ENGLAND';

TABLE FILE CAR
PRINT COUNTRY
WHERE COUNTRY EQ '&TEST
END

上記プロシジャを実行すると、エラーが発生します。
ECHOコマンドを付けた場合、実行したソースの内容が確認できます。
エラーとソースの内容を確認することで、変数格納後に「’」がついておらずエラーになっていることがわかります。

-DEFAULT &TEST = 'ENGLAND';
TABLE FILE CAR
PRINT COUNTRY
WHERE COUNTRY EQ 'ENGLAND ★確認箇所★
END
-RUN
0(INF32073) エラーのある行      8  プロシジャ名 __WCFEX FOCEXEC *                                                                                                                                                                                                                                              
(FOC257) 引用符がありません : 'ENGLAND
(FOC009) リクエストの検証でエラーが見つかりました。リクエストは実行されません。
  • 変数値が正常に受け渡されているか
  • 処理分岐が行われている場合、期待する分岐が行われているか

 例) testecho2.fex

-SET &ECHO = ALL;

-DEFAULT &TEST = 'JAPAN';

-IF &TEST EQ 'ENGLAND' THEN GOTO
-LAB1 ELSE GOTO LAB2;

-LAB1
TABLE FILE CAR
PRINT COUNTRY
WHERE COUNTRY EQ '&TEST'
END
-EXIT

-LAB2
TABLE FILE CAR
PRINT CAR
WHERE COUNTRY EQ '&TEST'
END

上記を実行すると、エラーは発生せず項目CARを表示したレポートが表示されます。

ブラウザを右クリックし、[ソースの表示]から実行されたソースを確認することができます。

変数には’JAPAN’という値が格納されていることが確認できます。
“-LAB1″ではなく、"-LAB2″に遷移していることが確認できます。

-DEFAULT &TEST = 'JAPAN';
-IF JAPAN EQ 'ENGLAND' THEN GOTO
-LAB1 ELSE GOTO LAB2;
-LAB2 ★確認箇所★
TABLE FILE CAR
PRINT CAR
WHERE COUNTRY EQ 'JAPAN' ★確認箇所★
END
-RUN
0(INF32080) テーブルのレコード数 =        2  行数 =      2