USE FOR DEBUGGING 文

USE FOR DEBUGGING 文は、関連付けられたデバッグ節が監視する利用者項目を特定する。

一般形式


*

RTS スイッチ

  1. 次の RTS スイッチは、本セクションで説明する構文または意味に影響を与える場合がある。
    • D - ANSI デバッグ機能の起動

構文規則

  1. デバッグ節を指定する場合は、DECLARATIVES ヘッダーの直後にまとめて置く。
  2. USE FOR DEBUGGING 文自体を除き、デバッグ節に非宣言手続きの参照を含めることはできない。

    OSVSVSC2MF この制限は強制されない。

  3. デバッグ節の外に記述した文は、デバッグ節内で定義した手続き名を参照できない。
  4. USE FOR DEBUGGING 文自体を除き、所定のデバッグ節に記述した文は、PERFORM 文を使用する場合にのみ、別の USE 手続きで定義されている手続き名を参照できる。
  5. デバッグ節で定義した手続き名は、USE FOR DEBUGGING 文では指定できない。
  6. 識別子、ファイル名、または手続き名はいずれも、単一の USE FOR DEBUGGING 文では一度だけ指定できる。
  7. ALL PROCEDURES 指定は、1 つのプログラム内で一度だけ使用できる。
  8. ALL PROCEDURES を指定した場合、いずれの USE FOR DEBUGGING 文でも手続き名-1 を指定することはできない。
  9. 一意名-1 が参照するデータ項目のデータ記述項に OCCURS 句が含まれる場合、またはそのデータ記述項が、OCCURS 句を含むデータ記述項に従属する場合、一意名-1 は通常必要な添字または指標なしで指定することはできない。
  10. 特殊レジスタ DEBUG-ITEM は、デバッグ節からのみ参照できる。

一般規則

  1. デバッグ節内の文によってデバッグ節が自動的に起動することはない。
  2. USE FOR DEBUGGING 文でファイル名-1 を指定すると、そのデバッグ節が次の場合に実行される。
    1. ファイル名-1 を参照する OPEN 文または CLOSE 文が実行された後。
    2. (別途指定された USE 手続きの後に) READ 文が実行された後に、関連付けられた AT END または INVALID KEY 無条件文が実行されない場合。
    3. ファイル名-1 を参照する DELETE 文または START 文が実行された後。
  3. USE FOR DEBUGGING 文で手続き名-1 を指定すると、そのデバッグ節が次の場合に実行される。
    1. 指定した手続きがそれぞれ実行される直前。
    2. 手続き名-1 を参照する ALTER 文が実行された直後。
  4. ALL PROCEDURE を指定すると、上記の一般規則 3 の効果がプログラム中のすべての手続き名 (デバッグ節内の手続き名は除く) に適用される。
  5. ALL REFERENCES OF 識別子を指定すると、そのデバッグ節は、識別子-1 を明示的に参照するすべての文に対して、次の場合に実行される。
    1. WRITE 文または REWRITE 文が実行される直前。ただし、FROM 句が指定されている場合は、暗黙の転記が実行された後。
    2. DEPENDING ON 指定を伴う GO TO 文の使用時に、制御が移行する直前、および制御の移行先の手続き名に関連付けられたデバッグ節が実行される前。
    3. PERFORM 文内で一意名-1 を参照する VARYING、AFTER、または UNTIL を指定している場合、その一意名-1 が参照するデータ項目の内容が初期化、変更、または評価された直後。
    4. その他の COBOL 文が実行された直後。

    実行も評価もされない指定の中に一意名-1 を指定した場合、関連付けられたデバッグ節は実行されない。

  6. ALL REFERENCES OF を指定せずに一意名-1 を指定すると、そのデバッグ節が以下のそれぞれの時点で実行される。
    1. 一意名-1 を明示的に参照する WRITE 文または REWRITE 文が実行される直前。ただし、FROM が指定されている場合は、暗黙の転記が実行された後。
    2. PERFORM 文内で一意名-1 を参照する VARYING、AFTER、または UNTIL を指定している場合、その一意名-1 が参照するデータ項目の内容が初期化、変更、または評価された直後。
    3. 一意名-1 が参照するデータ項目の内容を明示的に参照して変更する、その他の COBOL 文が実行された直後。

    実行も評価もされない指定の中に一意名-1 を指定した場合、関連付けられたデバッグ節は実行されない。

  7. 単一の文を実行する場合は、作用対象が明示的に指定された回数にかかわらず、その作用対象に対してデバッグ節は一度しか実行されない。参照する手続きを繰り返し実行する PERFORM 文の場合は、繰り返し処理ごとに一回、関連付けられたデバッグ節を実行する。

    無条件文では、個々の無条件動詞は、デバッグの目的上は別々の文を識別する。

  8. ファイル名-1、一意名-1、または手続き名-1 への修飾語としての参照は、上記の一般規則に記載のデバッグ用の項目の参照にはならない。
  9. 特殊レジスタ DEBUG-ITEM はデバッグ節の各実行に関連付けられ、デバッグ節を実行させる条件に関する情報を提供する。DEBUG-ITEM は、次のような暗黙の記述を保持する。
     01 debug-item.
         02 debug-line      pic x(6).
         02 filler          pic x value space.
         02 debug-name      pic x(30).
         02 filler          pic x value space.
         02 debug-sub-1     pic s9999 sign is leading separate character.
         02 filler          pic x value space
         02 debug-sub-2     pic s9999 sign is leading separate character.
         02 filler          pic x value space.
         02 debug-sub-3     pic s9999 sign is leading separate character.
         02 filler          pic x value space.
         02 debug-contents  pic x(n).
  10. デバッグ節の毎回の実行に先立ち、DEBUG-ITEM が参照するデータ項目の内容が空白で埋められる。その後、DEBUG-ITEM に従属するデータ項目の内容が下記の一般規則に従って更新され、その直後に制御がデバッグ節に移行する。下記の一般規則に該当しないデータ項目の内容は、空白のまま残る。

    更新は MOVE 文の規則に従って行われる。ただし、DEBUG-CONTENTS への転記は唯一の例外で、データの内部表現の型に違いがあっても変換することなく、複数の英数字基本項目の間での転記と同様に扱われる。

  11. DEBUG-LINE の内容は、対応する COBOL ソース プログラムの行番号である。これにより、特定のソース文を識別できる。
  12. DEBUG-NAME には、デバッグ節を実行させた要因の名前の最初の 30 文字が含まれる。

    DEBUG-NAME では、その名前の修飾語はすべて語 IN または OF で区切られている。

    添字または指標は、存在する場合でも、DEBUG-NAME には含まれない。

  13. デバッグ節を実行させるデータ項目への参照が添字付けまたは指標付けされている場合、各レベルの出現番号はそれぞれ必要に応じて DEBUG-SUB-1、DEBUG-SUB-2、および DEBUG-SUB-3 に含まれる。
  14. DEBUG-CONTENTS は、下記の一般規則によって必要となるデータを格納するのに十分な大きさのデータ項目である。
  15. プログラム内の宣言手続きではない最初の手続きが最初に実行された際にデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、その手続きの最初の文を識別する。
    2. DEBUG-NAME には、その手続きの名前が含まれる。
    3. DEBUG-CONTENTS には、「START PROGRAM」が含まれる。
  16. ALTER 文で手続き名-1 への参照によりデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、手続き名-1 を参照する ALTER 文を識別する。
    2. DEBUG-NAME には、手続き名-1 が含まれる。
    3. DEBUG-CONTENTS には、ALTER 文の TO 指定に関連付けられた該当の手続き名が含まれる。
  17. GO TO 文の実行によって関連付けられた制御の移行によりデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、手続き名-1 に制御を移行した GO TO 文を識別する。
    2. DEBUG-NAME には、手続き名-1 が含まれる。
  18. SORT または MERGE 文の INPUT または OUTPUT 指定内の手続き名-1 への参照によりデバッグ節が実行され場合、次の条件が存在する。
    1. DEBUG-LINE は、手続き名-1 を参照する SORT または MERGE 文を識別する。
    2. DEBUG-NAME には、手続き名-1 が含まれる。
    3. DEBUG-CONTENTS には、以下が含まれる。
      1. 手続き名-1 への参照が SORT 文の INPUT 指定である場合、「SORT INPUT」。
      2. 手続き名-1 への参照が SORT 文の OUTPUT 指定である場合、「SORT OUTPUT」。
      3. 手続き名-1 への参照が MERGE 文の OUTPUT 指定である場合、「MERGE OUTPUT」。
  19. PERFORM 文に関連付けられた制御メカニズムによる制御の移行により、手続き名-1 に関連付けられたデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、手続き名-1 を参照する PERFORM 文を識別する。
    2. DEBUG-NAME には、手続き名-1 が含まれる。
    3. DEBUG-CONTENTS には、「PERFORM LOOP」が含まれる。
  20. 手続き名-1 が実行される予定の USE 手続きである場合、次の条件が存在する。
    1. DEBUG-LINE は、USE 手続きを実行させる文を識別する。
    2. DEBUG-NAME には、手続き名-1 が含まれる。
    3. DEBUG-CONTENTS には、「USE PROCEDURE」が含まれる。
  21. 先行する段落から手続き名-1 に暗黙的に制御が移行されることによりデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、前の文を識別する。
    2. DEBUG-NAME には、手続き名-1 が含まれる。
    3. DEBUG-CONTENTS には、「FALL THROUGH」が含まれる。
  22. ファイル名-1 への参照によりデバッグ節が実行される場合、次のようになる。
    1. DEBUG-LINE は、ファイル名-1 を参照するソース文を識別する。
    2. DEBUG-NAME には、ファイル名-1 の名前が含まれる。
    3. READ の場合、読み込まれたレコード全体が DEBUG-CONTENTS に含まれる。
    4. ファイル名-1 へのその他のすべての参照では、DEBUG-CONTENTS に空白が含まれる。
  23. 一意名-1 への参照によりデバッグ節が実行される場合、次のようになる。
    1. DEBUG-LINE は、一意名-1 を参照するソース文を識別する。
    2. DEBUG-NAME には、一意名-1 の名前が含まれる。
    3. DEBUG-CONTENTS には、デバッグ節に制御が移された時点で一意名-1 が参照するデータ項目の内容が含まれる (一般規則の 5 および 6 を参照)。