条件付きジョブ・ブレークポイントの設定および除去

以下を使って、条件付きジョブ・ブレークポイントを設定または除去することができます。

注:
条件付きブレークポイント用にサポートされる関係演算子は、<、>、=、<=、>=、 および <> (等しくない) です。

条件付きジョブ・ブレークポイントを設定または除去できる 1 つの方法は、 「モジュール・ブレークポイントの処理」画面によるものです。「モジュール・ブレークポイントの処理」画面には、 「モジュール・ソースの表示」画面で F13 (モジュール・ブレークポイントの処理) キーを押すことによってアクセスします。 この画面は、条件付きまたは無条件ジョブ・ブレークポイントの追加、 または除去のいずれかを許可するオプションのリストを提供します。 画面の例を 図 102 に示します。

ジョブ・ブレークポイントを条件付きにするには、条件 フィールドに 条件式を指定します。ジョブ・ブレークポイントを設定しようとする行が 実行可能ステートメントではない場合、ブレークポイントは次の実行可能ステートメントに 設定されます。

スレッド列を表示するには、実行キー を押す前にスレッド・ フィールドに *JOB と入力します。

すべてのジョブ・ブレークポイントを指定し終えたら、プログラムを 呼び出します。「モジュール・ソースの表示」画面から F21 (コマンド入力) を使用して コマンド行でプログラム・オブジェクトを呼び出すか、あるいはこの画面を出た後で プログラムを呼び出すことができます。

条件付きジョブ・ブレークポイントが設定されたステートメントに達すると 、ジョブ・ブレークポイントに関連した条件式が、そのステートメントが実行される 前に評価されます。結果が偽の場合には、プログラム・オブジェクトは実行し続けます。 結果が真の場合には、プログラム・オブジェクトが停止し、 「モジュール・ソースの表示」画面が表示されます。 この時点でフィールドを評価し、より多くのブレークポイントを設定し、任意のデバッグ・コマンドを実行することができます。

条件付きブレークポイントを設定および除去するもう 1 つの 方法は、BREAK および CLEAR デバッグ・コマンドの使用です。

BREAK デバッグ・コマンドを使用して条件付きブレークポイントを設定するためには、 デバッグ・コマンド行に、

BREAK line-number WHEN expression

と入力します。 変数の line-number は、ブレークポイントを設定したいモジュール・オブジェクトの 現在表示されているビューの行番号で、expression はブレークポイントが出てくる時に 評価される条件付き式です。 条件式ブレークポイントに対しサポートされている比較演算子は、 このセクションの始めに注記されています。

非数字の条件式ブレークポイントの式では、比較が起こる前に、 より短い式が暗黙にブランクで埋め込まれます。 この暗黙の埋め込みは国別言語分類順序 (NLSS) 変換の前に起こります。NLSS の 詳細については、国別言語分類順序 (NLSS)を参照してください。

CLEAR デバッグ・コマンドを使用して条件付きブレークポイントを除去するためには、デバッグ・コマンド行に

CLEAR line-number

と入力します。変数の line-number は、ブレークポイントを除去したいモジュール・オブジェクトが現在表示されているビューの行番号です。

F13 を使った条件付きジョブ・ブレークポイントの設定例

この例では、F13 (モジュール停止点の処理) を使って条件付きジョブ・ブレークポイントを 設定します。

  1. 条件付きジョブ・ブレークポイントを設定するには 、F13 (モジュール停止点の処理) を押します。「モジュール停止点の処理」画面が表示されます。
  2. この画面では、リストの最初の行に 1 (追加) を入力して条件付きブレークポイント を追加します。
  3. *IN02='1' の時に条件付きブレークポイントを行 127 に設定するには、 フィールド に 127、条件 フィールドに *IN02='1' と入力します。
  4. スレッド列を表示するには、実行キーを押す前にスレッド・フィールドに *JOB と入力します。

    図 102 は、条件付きブレークポイントの追加後の「モジュール停止点の処理」 画面を示します。

    図 102. 条件付きジョブ・ブレークポイントの設定
                              モジュール停止点の処理
                                                              システム :   TORASD80
     プログラム . . :   DEBUGEX               ライブラリー . :   MYLIB
       モジュール . :     DBGEX               タイプ . . . . :   *PGM
     オプションを入力して,実行キーを押してください。
       1= 追加   4= 消去
    
     OPT               条件
             127    *in02='1'
             88
             102
    
    
    
    
    
    
    
                                                                            終わり
     コマンド
     ===> _________________________________________________________________________
     F3= 終了   F4=プロンプト  F5= 最新表示   F9=コマンド複写   F12= 取消し
     停止点が行 127 に追加されました。 

    条件付きジョブ・ブレークポイントが行 127 に設定されます。式はステートメントの実行前に評価されます。 結果が真の場合には (例では *IN02='1' の場合)、プログラムが 停止し、「モジュール・ソースの表示」画面が表示されます。 結果が偽の場合には、プログラムは実行し続けます。

    既存のブレークポイントは常に、同じ位置に入力された新しいブレークポイントによって置き換えら れます。

  5. ブレークポイントの設定後に、F12 (取消し) キーを押して「モジュール・ブレークポイントの処理」画面 を出てください。 F3 (終了プログラム) キーを押して、ILE ソース・デバッガーを終了し てください。 ブレークポイントは除去されません。
  6. プログラムを呼び出してください。ブレークポイントに達するとプログラムが停止し、 「モジュール・ソースの表示」画面が 再び表示されます。この時点で、プログラムをステップスルーするか、あるいは処理を再開するこ とができます。

BREAK コマンドを使用した条件付きジョブ・ブレークポイントの設定例

この例では、日付フィールド BigDate に特定の値がある時にプログラムが 停止させたいものとします。 BREAK コマンドを使って条件付きジョブ・ブレークポイントを 指定するには、次のようにします。

  1. 「モジュール・ソースの表示」画面から次の入力をします。
    break 128 when BigDate='1994-09-30'
    条件付きジョブ・ブレークポイントが行 128 に設定されます。
  2. ブレークポイントの設定後、F3 (終了プログラム) キーを押して ILE ソース・デバッガー を終了してください。 ブレークポイントは除去されません。
  3. プログラムを呼び出してください。ブレークポイントに達するとプログラムが停止し、 「モジュール・ソースの表示」画面が 再び表示されます。
図 103. BREAK コマンドを使用した条件付きジョブ・ブレークポイントの設定
                             モジュール・ソースの表示
 PROGRAM:   DEBUGEX        LIBRARY:   MYLIB          MODULE:   DBGEX
    122
    123        *---------------------------------------------------------------
    124        * 次の SETON 命令後に、*IN02 = '1'.
    125        *---------------------------------------------------------------
    126       C                   SETON
    127       C                   IF        *IN02
    128       C                   MOVE      '1994-09-30'  BigDate
    129       C                   ENDIF
    130
    131        *---------------------------------------------------------------
    132        * ARRY の 2 番目のセルに新しい値を入れる。
    133        *---------------------------------------------------------------
    134       C                   MOVE      4             Arry
    135
    136        *---------------------------------------------------------------
                                                                        続く...
 デバッグ. . break 128 when BigDate='1994-09-30'________________________________
_______________________________________________________________________________
 F3=終了プログラム  F6=停止点の追加/消去  F10=ステップ  F11=変数の表示
 F12=再開       F17=ウォッチ変数   F18=ウォッチの処理   F24=キーの続き