2.2.1 プログラムの中断
テスト中のプログラムの実行を任意に中断させることができます。中断させた状態で,次の操作をし,プログラムを調査できます。
-
データの値を表示,変更する。
-
プログラムの実行経路を表示する。
プログラムを中断させるには,次の方法があります。
-
中断点を設定する。
-
データ監視条件を設定する。
また,ラインモードでは,次の場合にもプログラムを中断させます。
-
プログラムで実行時エラーが発生した。
-
ファイル管理記述項で指定した装置名にファイルの割り当てをしていないファイルをオープンした。
(1) 中断点の設定による中断
プログラムの実行を,任意の個所で中断させるには,中断点を設定します。中断点を設定すると,実行中のプログラムが中断点に達したときに,中断状態になります。中断中は,中断状態で実行できるTDコマンドだけを指定できます。処理が繰り返し実行されるような個所に中断点を設定する場合は,スキップ回数を指定できます。この指定によって,不要な中断回数を減らすことができ,効率良くプログラムをテストできます。
TDコマンドの場合,SET BREAKコマンドやRESET BREAKコマンドで,中断点を設定したり,解除したりできます。SET BREAKコマンドおよびRESET BREAKコマンドの詳細については,「5.4 TDコマンドの詳細」の「5.4.1 SET BREAK/RESET BREAK(中断点の設定と解除)」を参照してください。
(2) データ監視条件の設定による中断
データの値を監視し,その状態によってプログラムを中断できます。監視したいデータの値に条件式を指定することもできます。
TDコマンドの場合,SET WATCHコマンドやRESET WATCHコマンドで,データ監視条件を設定したり,解除したりできます。SET WATCHコマンドおよびRESET WATCHコマンドの詳細については,「5.4 TDコマンドの詳細」の「5.4.3 SET WATCH/RESET WATCH(データ監視条件の設定と解除)」を参照してください。
データ監視条件の設定による中断の詳細は次のとおりです。
-
データ値の変化の監視
データ値が次の変化をしたときに,プログラムの実行が中断されます。
-
データ値が変化した。
-
アドレス名によって参照されるデータの場合,アドレス不正(アドレスが設定されていない,不正なアドレスが設定されている)によって参照できない状態から,参照できる状態に変化した。または,参照できる状態から,アドレス不正(アドレスが設定されていない,不正なアドレスが設定されている)によって参照できない状態に変化した。
-
-
比較条件式の監視
比較条件式の判定結果が次のとき,プログラムの実行が中断されます。比較条件式の評価については,比較の規則「2.3.1 データの比較・代入規則」の「(2) データの比較規則」を参照してください。
-
比較条件式が,不成立の状態から,成立の状態に変わった(ただし,成立の状態からデータが変更されたとき,さらに成立の状態が継続しても,中断の状態とはならない)。
-
アドレス名によって参照されるデータの場合,アドレス不正(アドレスが設定されていない,不正なアドレスが設定されている)によって参照できない状態から参照できる状態に変化したときに,比較条件式が成立した。
-
左辺・右辺の両方のデータが参照できるソース要素に制御が渡ったときに,比較条件式が成立した。
- (例)
-
次のプログラムに,(A > B)の比較条件式のデータ監視をすると一連番号3000の行で中断します。一連番号7000の行で比較条件式は成立しますが,すでに一連番号3000の行で成立していて,不成立な状態から成立な状態に変化したわけではないので中断されません。再び比較条件式が不成立な状態から成立の状態になり,中断されるのは一連番号11000の行となります。
プログラム 001000 MOVE 10 TO A. 002000 MOVE 5 TO B. 003000 〜 005000 〜 006000 MOVE 11 TO A. 007000 〜. 008000 MOVE 1 TO A. 009000 〜 010000 MOVE 10 TO A. 011000 〜
データの監視範囲については,「2.3.2 データ項目・ファイル名が参照できる範囲」を参照してください。
-
- 注意事項
-
-
COBOLプログラムの連絡節や局所場所節に定義されたデータ項目および特殊レジスタは,次に示す実行単位ごとに,それぞれ異なるデータとして監視されます。
・オブジェクト指向のインスタンス単位
・シングルスレッドやマルチスレッドなどのスレッド単位
・再帰できるソース要素※の再帰単位
- 注※
-
再帰できるソース要素とは次のCOBOLプログラムを示します。
-
RECURSIVE指定を伴うプログラム
-
利用者定義関数
-
メソッド
-
-
プログラムの中断時に,データ監視条件を設定した場合,監視対象データが参照できればその位置から,参照できなければ参照できる実行時要素に制御が渡ったときにデータの監視が開始されます。
-
(3) 実行時エラーが発生した場合の中断
ラインモードの場合,実行時エラーが発生したときプログラムが中断します。実行時エラーが発生した文で,プログラムの状態を調べることができます。この中断のための設定は特に必要ありません。
次の条件がすべて当てはまるときに,プログラムが中断します。
-
実行時エラーのメッセージのレベルがSまたはUのとき,または,CBLABNサービスルーチンによってユーザプログラムが終了したとき(KCCC0900R-Iのメッセージが表示されます)。
-
プログラムが,実行時エラーによって中断したあとに,データ参照などデバッガの操作の対象にできる状態であるとき。
-
-TDInfコンパイラオプションでコンパイルした翻訳単位で実行時エラーが発生したとき。
AIXの場合,実行時エラーによってユーザプログラムが中断したときは,次の手順でユーザプログラムを続行できます。
-
データの値を変えるなどのデバッガの操作によって実行時エラーの原因を解決する。
-
実行時エラーの原因を解決したあとに,ジャンプまたはジャンプ実行によって,実行時エラーが発生した文を再び実行させる。
ただし,実行時エラーの種類によっては,ジャンプまたはジャンプ実行ができない場合があります。ジャンプまたはジャンプ実行をしないで,ユーザプログラムを続行したときは,ユーザプログラムが終了します。