PRGTRACEオプションは、プログラムの実行時に、プログラムの各行が現行の出力ファイルまたはデバッグ・ファイルに記録されるかどうかを制御します。PRGTRACEは、プログラムの実行をトレースすることによって問題を検出するためのデバッグ・ツールとして主に使用されます。
OLAP DML文として提供されるOLAP DMLプログラムは、EXPTRACEの設定がYES
でないかぎり、トレースされません。
DBGOUTFILE文を使用してデバッグ・ファイルを指定した場合、PRGTRACEの出力は現行の出力ファイルではなくデバッグ・ファイルに送信されます。
使用上の注意
PRGTRACEの出力
PRGTRACEでは、現行プログラムの名前が各プログラム行の先頭に記録されます。コンパイル済の行を示すには、等号が挿入されます。
(PRG= SALESREP) . . .
未コンパイルの行を示すには、コロンが挿入されます。
(PRG: SALESREP) . . .
コンパイル済の行は、効率的な内部形式に変換された行であるのに対して、未コンパイルの行は変換されていません。Oracle OLAPでは、プログラム(特にループが含まれるプログラム)がより効率的に動作するように、通常はコンパイル済の形式で行を格納します。
未コンパイルのプログラム行
Oracle OLAPは、プログラムをコンパイルしてから実行します。したがって、PRGTRACEの出力で未コンパイルとマークされる行は、アンパサンド置換が記述された行などのコンパイルできない行に限定されます。
例
例5-91 プログラム実行のトレース
単純な予算レポートを生成するsalesrep
という名前のプログラムがあるとします。
DEFINE salesrep PROGRAM PROGRAM PUSH month division line TRAP ON cleanup LIMIT month TO &ARGS LIMIT division TO ALL LIMIT line TO FIRST 1 REPORT DOWN division across month: dec 0 budget cleanup: POP month division line END
このプログラムをデバッグする場合、PRGTRACEをオンにしてからプログラムを実行し、プログラムの各行の実行をトレースします。
PRGTRACE = yes salesrep FIRST 3
PRGTRACEにより、現行の出力ファイルまたはデバッグ・ファイルに次の出力が生成されます。
(PRG= SALESREP) push month division line (PRG= SALESREP) trap on cleanup (PRG: SALESREP) limit month to &args (PRG= SALESREP) limit division to all (PRG= SALESREP) limit line to first 1 (PRG= SALESREP) report down division across month: dec0 budget LINE: REVENUE -------------BUDGET------------- -------------MONTH-------------- DIVISION JAN95 FEB95 MAR95 -------------- ---------- ---------- ---------- CAMPING 679,149 707,945 780,994 SPORTING 482,771 517,387 525,368 CLOTHING 983,888 1,016,528 992,331 (PRG= SALESREP) cleanup: (PRG= SALESREP) pop month division line