TEST オプションは、コンパイラーがオブジェクト・コードの一部 として生成する検査機能のレベルを指定します。 この機能を使うと、テスト・フックの位置を制御したり、シンボル・テーブルを 生成するかどうかを制御することができます。
.-NOTEST-----------------------------. | .-+---+--------------. | | | '-,-' | | | V .-ALL---. | | >>-+-TEST--(----+-+-STMT--+------+-+--)-+---------------------->< | +-PATH--+ | | +-BLOCK-+ | | '-NONE--' | | .-SYM---. | +-+-NOSYM-+------+ | .-HOOK---. | +-+-NOHOOK-+-----+ | .-NOSEPARATE-. | +-+-SEPARATE---+-+ | .-SEPNAME---. | '-+-NOSEPNAME-+--'
省略形: AALL、ACICS、AMACRO、ASQL
デバッグ・ツールがオーバーレイ・フックを生成する場合、サブオプション ALL、PATH、STMT、または BLOCK の 1 つを指定しなければなりませんが、HOOK は指定する必要はなく、事実上 NOHOOK を指定することをお勧めします。
NOHOOK を指定すると、ENTRY および EXIT のブレークポイントは、デバッグ・ツール が停止する PATH ブレークポイントにすぎなくなります。
プログラムに GET または PUT DATA ステートメントが含まれる場合、別個のデバッグ・ファイルに含まれるデバッグ情報の量が少なくなります。これらのステートメントについては、シンボル・テーブル情報をオブジェクト・デックに書き込む必要があるためです。
生成されるデバッグ情報には、コンパイラーに渡されたソースの圧縮版が常に含まれています。 これは、ソースは SYSIN DD * で指定したものであっても、これまでのジョブ・ステップで作成された一時データ・セットであってもかまわないことを意味します (例えば、以前の SQL プリコンパイラーや CICS プリコンパイラーの出力がソースであってもかまいません)。
このサブオプションをバッチ・コンパイルで使用する場合は、そのコンパイルの JCL に SYSDEBUG を表す DD カードが含まれていて、その DD カードは RECFM=FB および 80 <= LRECL <= 1024 のデータ・セットを指定していなければなりません。
このサブオプションを LINEDIR コンパイラー・オプションと一緒に使用することはできません。
このオプションを指定すると、生成されるデバッグ情報には、コンパイラーに渡されたソースの圧縮版は含まれません。 これは、プログラムをデバッグしようとするときに DebugTool で見つけることができるデータ・セットにソースがなければならないことを意味します。
SEPARATE オプションが有効になっていない場合、このオプションは無視されます。
SEPARATE オプションが有効になっていない場合、このオプションは無視されます。
TEST(NONE,NOSYM) を指定すると、コンパイラーはこのオプションを NOTEST に設定します。
TEST(NONE,SYM) は使用しないでください。この設定を指定する意図が不明です。 TEST(ALL,SYM,NOHOOK) または TEST(STMT,SYM,NOHOOK) を指定するとよいでしょう。
NOTEST と TEST(NONE,NOSYM) 以外の TEST オプションは、 いずれもプログラム・テストのためのアテンション割り込み機能を 提供します。
プログラムに、呼び出したい ATTENTION ON ユニットがある場合は、 次のオプションのどちらかを用いてプログラムをコンパイルしなければ なりません。
TEST オプションでは GONUMBER が暗黙指定されます。
TEST オプションでは、オブジェクト・コードのサイズが増大して パフォーマンスに影響が出ることがあるため、フックの数と位置に限度を 設けなければならないことがあります。
TEST オプションを指定した場合、インライン化は行われません。
REFER の構造体はシンボル・テーブルでサポートされています。
TEST(SYM) が有効な場合は、DebugTool の自動モニター機能を有効にするために、コンパイラーはテーブルを生成します。 TEST(SEPARATE) オプションが有効になっていなければ、これらのテーブルのために、オブジェクト・モジュールのサイズがかなり大きくなる場合があります。 DebugTool の自動モニター機能を活動化すると、これらのテーブルを使用して、ステートメントで使用される変数の値が ステートメントの実行前に表示されます。これは、変数が計算可能なタイプであるか、 POINTER、OFFSET、または HANDLE の属性を持っていることが条件となります。 ステートメントが割り当てステートメントである場合は、ターゲットの値も表示されます。ただし、ターゲットの初期設定や割り当てがあらかじめ行われていない場合は、その値に意味がありません。
名前に * を使用して宣言されている変数はすべて、DebugTool の使用時には表示されません。 また、* が親構造体または副構造の名前として使用されている場合は、そのすべての子も表示されません。 このような目的のために、名前を付けないでおく任意の構造体エレメントの名前に、単一下線を使用することをお勧めします。
AFTERMACRO、AFTERSQL、および AFTERALL サブオプションの異なる影響の例として、PP オプションが PP( MACRO('INCONLY'), SQL, MACRO) であったと仮定してください。そうすると、