プロシジャの処理を確認してみよう(-SET &ECHO =ALL;)
バージョン | 9.0.3 |
本ページについて
特定のプロシジャでエラーが発生したり、意図しない処理となった場合、プロシジャ実行時の処理状況を確認し、デバッグを行っていきます。
本ページでは、ECHOコマンド(エコーコマンド)を使用したソースの処理状況を確認する方法を記載します。
使用するコマンド
-SET &ECHO =ALL;
実行したプロシジャのソースを、変数に値が表示された状態で確認することができます。
実際に経由した分岐が出力されるので、処理の流れが明確になります。
弊社では、「エコーを確認する」「エコーをとる」と表現します。
テキストベースでの確認方法
- 該当のプロシジャ(.fex)をテキストエディタで開きます。
- プロシジャの先頭に以下のコマンドを追加します。
-SET &ECHO = ALL;
- エラーが発生する場合、画面上に詳細が表示されます。
エラーが発生せず実行結果が表示される場合、ブラウザを右クリックし、[ソースの表示]から実行されたソースを確認することができます。
[ソースの表示]メニューについては、ブラウザにより表示が異なります。
実行形式は"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