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 文でも procedure-name-1 を指定することはできない。
  9. identifier-1 が参照するデータ項目のデータ記述項に OCCURS 句が含まれる場合、またはそのデータ記述項が、OCCURS 句を含むデータ記述項に従属する場合、identifier-1 は通常必要な添え字または指標なしで指定する必要がある。
  10. 特殊レジスタ DEBUG-ITEM は、デバッグ節からのみ参照できる。

一般規則

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

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

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

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

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

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

  8. file-name-1、identifier-1、または procedure-name-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 文で procedure-name-1 への参照によりデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、procedure-name-1 を参照する ALTER 文を識別する。
    2. DEBUG-NAME には、procedure-name-1 が含まれる。
    3. DEBUG-CONTENTS には、ALTER 文の TO 指定に関連付けられた該当の手続き名が含まれる。
  17. GO TO 文の実行によって関連付けられた制御の移行によりデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、procedure-name-1 に制御を移行した GO TO 文を識別する。
    2. DEBUG-NAME には、procedure-name-1 が含まれる。
  18. SORT または MERGE 文の INPUT または OUTPUT 指定内の procedure-name-1 への参照によりデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、procedure-name-1 を参照する SORT または MERGE 文を識別する。
    2. DEBUG-NAME には、procedure-name-1 が含まれる。
    3. DEBUG-CONTENTS には、以下が含まれる。
      1. procedure-name-1 への参照が SORT 文の INPUT 指定である場合、「SORT INPUT」。
      2. procedure-name-1 への参照が SORT 文の OUTPUT 指定である場合、「SORT OUTPUT」。
      3. procedure-name-1 への参照が MERGE 文の OUTPUT 指定である場合、「MERGE OUTPUT」。
  19. PERFORM 文に関連付けられた制御メカニズムによる制御の移行により、procedure-name-1 に関連付けられたデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、procedure-name-1 を参照する PERFORM 文を識別する。
    2. DEBUG-NAME には、procedure-name-1 が含まれる。
    3. DEBUG-CONTENTS には、「PERFORM LOOP」が含まれる。
  20. procedure-name-1 が実行される予定の USE 手続きである場合、次の条件が存在する。
    1. DEBUG-LINE は、USE 手続きを実行させる文を識別する。
    2. DEBUG-NAME には、procedure-name-1 が含まれる。
    3. DEBUG-CONTENTS には、「USE PROCEDURE」が含まれる。
  21. 先行する段落から procedure-name-1 に暗黙的に制御が移行されることによりデバッグ節が実行される場合、次の条件が存在する。
    1. DEBUG-LINE は、前の文を識別する。
    2. DEBUG-NAME には、procedure-name-1 が含まれる。
    3. DEBUG-CONTENTS には、「FALL THROUGH」が含まれる。
  22. file-name-1 への参照によりデバッグ節が実行される場合、次のようになる。
    1. DEBUG-LINE は、file-name-1 を参照するソース文を識別する。
    2. DEBUG-NAME には、file-name-1 の名前が含まれる。
    3. READ の場合、読み取ったレコード全体が DEBUG-CONTENTS に含まれる。
    4. file-name-1 へのその他のすべての参照では、DEBUG-CONTENTS に空白が含まれる。
  23. identifier-1 への参照によりデバッグ節が実行される場合、次のようになる。
    1. DEBUG-LINE は、identifier-1 を参照するソース文を識別する。
    2. DEBUG-NAME には、identifier-1 の名前が含まれる。
    3. DEBUG-CONTENTS には、デバッグ節に制御が移された時点で identifier-1 が参照するデータ項目の内容が含まれる (一般規則の 5 および 6 を参照)。