TEST を使用すると、デバッグ・ツール がバッチ・デバッグおよび対話式デバッグを実行できるようにするオブジェクト・コードが生成されます。TEST を使用すれば、言語環境プログラムによって生成された定様式ダンプにあるシンボリック変数の組み込みも可能になります。
TEST オプションの構文 .-NOTEST----------------------------------------------. >>-+-----------------------------------------------------+----->< '-TEST-+--------------------------------------------+-' | .-HOOK---. .-,NOSEPARATE-. .-,NOEJPD-. | '-(-+--------+-+-------------+-+---------+-)-' '-NOHOOK-' '-,SEPARATE---' '-,EJPD---'
デフォルト・オプション: NOTEST
サブオプションのデフォルトは、HOOK、NOSEPARATE、NOEJPD です。
省略形: SEP|NOSEP
TEST サブオプションは、どのような順序でも指定できます。 また、どのようなサブオプションの組み合わせ (1 つでも、2 つでも、すべてでも) でも指定することができます。 ただし、TEST の後ろに左括弧をコーディングした場合には、少なくとも 1 つ以上のサブオプションをコーディングする必要があります。
使用できるデバッグ・サポートの量は、以下で説明するように、どの TEST サブオプションを使用するかによって決まります。 デバッグ情報が入ったオブジェクト・コードを生成しない場合、および定様式ダンプにシンボリック変数を組み込む必要がない場合には、NOTEST を使用します。
フック・サブオプション (コンパイルされたフック vs 動的フック)
パス点とは、ロジック・フローが必ずしも順次でなくてもよいか、あるいはロジック・フローを変更できるプログラム内の任意の場所です。パス点の例としては、IF-THEN-ELSE 構成、PERFORM ループ、ON SIZE ERROR 句、および CALL ステートメントなどがあります。
シンボリック・デバッグ情報サブオプション
シンボリック・デバッグを有効化するために必要な情報は、TEST オプションが有効化されている場合には常に生成されます。
JUMPTO および GOTO 有効化サブオプション
EJPD および NOEJPD サブオプションは、実動デバッグ・セッションでの、デバッグ・ツール・コマンド JUMPTO および GOTO の有効化を制御します。 TEST(NOHOOK) および OPTIMIZE コンパイラー・オプションが指定されている場合にのみ、これらのサブオプションは有効になります。
デバッグ能力を維持したモジュール・サイズの制御:
JCL または TSO から COBOL コンパイラーを呼び出し、TEST(. . .,SEPARATE,. . .) を指定すると、シンボリック・デバッグ情報テーブルは、SYSDEBUG DD ステートメントで指定したデータ・セットに書き込まれます。 このステートメントのコーディング方法および SYSDEBUG データ・セットの詳細については、 デバッグ・データ・セットの定義方法および論理レコード長とブロック・サイズについての下記の関連情報を参照してください。
z/OS UNIX シェルから COBOL コンパイラーを呼び出すときに、TEST(. . .,SEPARATE,. . .) を指定すると、シンボリック・デバッグ情報テーブルは、現行ディレクトリー内の file.dbg に書き込まれます。file は COBOL ソース・ファイルの名前です。
パフォーマンスとデバッグ能力:
以下のように、得られるデバッグ能力の程度およびプログラムのパフォーマンスを制御できます。
デバッグ・ツール の動的デバッグ機能 (SET DYNDEBUG ON) を使用すると、プログラムに コンパイルされたデバッグ・フックがない場合でも、プログラムを対話式にデバッグできます。
TEST(NOHOOK,. . .,NOEJPD) では、プログラムを効率化するために、 OPTIMIZE (OPT(STD) または OPT(FULL)) も使用してコンパイルできますが、 デバッグにいくつかの制限がかかります。
OPT(FULL) によって破棄される項目の参照および AT CALL コマンドに関する上記の制約は、この組み合わせのオプションを使用した場合にも適用されます。
この組み合わせは、最適化されたコードほど速く動作しませんが、デバッグ能力は向上します。すべてのデバッグ・ツールのコマンドがサポートされます (AT CALL entry-name を除く)。
TEST(HOOK) を指定すると、コンパイラーはすべてのステートメントにコンパイルされたフックを設けるので、 コードの実行は遅くなりますが、すべてのデバッグ・ツールのコマンドがサポートされます。
言語環境プログラム:
サブオプションのいずれかを指定した TEST オプションによって、以下の 2 つの機能をダンプに追加して、言語環境プログラムからの定様式ダンプを改善することができます。
NOTEST を使用すれば、ダンプでは、プログラム変数も失敗したステートメントの行番号も示されません。
Enterprise COBOL は、言語環境プログラムが提供するダンプ・サービスを使用して、言語環境プログラム準拠のその他のメンバー言語によって生成されるダンプの内容および形式と一致するダンプを生成します。
処理されない条件に対して言語環境プログラムがダンプを作成するかどうかは、ランタイム・オプション TERMTHDACT の設定値によって決まります。TERMTHDACT(DUMP) を指定した場合は、重大度 2 以上の条件が処理されないと、ダンプが生成されます。
SEPARATE サブオプションおよび言語環境プログラム:
TEST(. . .,SEPARATE,. . .) を使用してコンパイルされたプログラムの場合、 言語環境プログラムは、(DD 名 SYSDEBUG に書き込まれる) 別のデバッグ・データ・セットの名前をオブジェクト・プログラムから取得します。 別のデバッグ・データ・セットの名前を変更するには、言語環境プログラムの COBOL デバッグ・ファイル出口を使用します。
関連タスク
デバッグ・データ・セットの定義 (SYSDEBUG)
言語環境プログラム デバッグのガイド (TERMTHDACT
を使用した言語環境プログラムのダンプの生成)
Debug Tool User's Guide (TEST ランタイム・オプションを使用した Debug Tool
の使用)
言語環境プログラム カスタマイズ (COBOL デバッグ・ファイル名の修正)
関連参照論理レコード長とブロック・サイズ
cob2 入出力ファイル
矛盾するコンパイラー・オプション
OPTIMIZE
言語環境プログラム プログラミング・リファレンス (TEST | NOTEST)