9.4.1 マルチスレッド対応COBOLプログラムのテストデバッグ
マルチスレッド対応COBOLプログラムのデバッグのための機能と注意事項を説明します。
マルチスレッド対応COBOLプログラムは,プロセス内で動作するすべてのCOBOLプログラムを,-MultiThreadコンパイラオプションを使ってコンパイルしないと,実行時の動作は保証しません。
マルチスレッド対応COBOLプログラムの詳細については,マニュアル「COBOL2002 ユーザーズガイド」の,マルチスレッド環境での実行についての記述を参照してください。
(1) プログラムの実行
マルチスレッド対応COBOLプログラムを実行するときの仕様は次のとおりです。
-
中断点の設定による中断
スレッドに依存しないで,中断点に達すれば中断します。
-
データ監視条件による中断
マルチスレッド対応COBOLプログラムでは,スレッドごとにデータ値の変化を監視します。どれかのスレッドでデータの値が変化するか,または,比較条件式が成立したときに中断します。
-
特定スレッドに対応するデータの値だけを監視する設定もできます。この場合,設定時のプログラムによって,監視するデータは次のとおりになります。
-
プログラムの中断時
中断しているスレッドの指定ソース要素のデータ
-
プログラムの起動前
プログラムの起動後に,最初に生成された指定ソース要素を実行するスレッドのデータ
-
-
ステップイン
ステップインが実行されると,スレッドが切り替わるタイミングに関係なく,次に実行される文で中断します。つまり,ステップインを実行した直後にスレッドの切り替えが発生すると,ステップイン実行前の中断位置とステップイン実行後の中断位置は別のスレッドで実行されるプログラムとなります。
-
ステップオーバー
ステップオーバーを実行したスレッドと同じスレッドで,CALL文,INVOKE文および関数呼び出しを行う文を1文として実行して中断します。中断点の設定,データ監視,実行時エラー,割り込みによる中断がなければ,ステップオーバーを実行したスレッド以外で中断しません。
-
ジャンプ,ジャンプ実行
ジャンプ,ジャンプ実行したスレッドで,指定された文にジャンプします。ただし,ジャンプ,ジャンプ実行の直後に,別スレッドに切り替わり,そのプログラムで中断点の設定・データ監視・実行時エラー・割り込みなどによって中断した場合は,ジャンプ,ジャンプ実行は行われません。
-
呼び出し順序番号
マルチスレッドで実行するプログラムの場合は,スレッドごとに呼び出し順序番号の増加と減少が行われます。
(2) 中断時のスレッド
プログラムが中断したとき,すべてのスレッドは停止しています。[ウィンドウ]メニューから[呼び出し一覧ウィンドウ]を選ぶと,COBOLプログラムが動くスレッドIDの一覧を表示できます。詳細については「10.3.4 呼び出し一覧ウィンドウ」を参照してください。
(3) データの操作
GUIモードでは,中断点のスレッドだけでなく,停止しているほかのCOBOLプログラムが動くスレッドのデータも表示できます。ただし,指定したデータに対する転記の処理の途中でスレッドが停止した場合は,正しく値を表示できない可能性があります。ほかのスレッドのデータへ,値の代入はできません。