変数および式の表示

変数の値を表示する最も簡単な方法は、「モジュール・ソースの表示」画面で F11 (変数の表示) を使用することです。 F11 (変数の表示) を使用して変数を表示するには、カーソルを表示したい変数のところに移動して、F11 (変数の表示) を押します。 変数の現行値が、「モジュール・ソースの表示」画面の最下部にあるメッセージ行に表示されます。 たとえば図 44 に示されているモジュール・オブジェクトの 221 行目の変数 COUNTER の値を見たい場合は、 その変数の先頭にカーソルを移動して、F11 (変数の表示) を押します。 変数 COUNTER の現行値が、メッセージ行に表示されます。

図 44. F11 (変数の表示) を使用して変数を表示する
                                
                             モジュール・ソースの表示
  PROGRAM:   TEST           LIBRARY:   TESTLIB        MODULE:   SAMPMDF
     213
     214         PROCEDURE-SECTION SECTION.
     215         FILL-TERMINAL-LIST.
     216             READ TERMINAL-FILE RECORD INTO LIST-OF-TERMINALS(COUNTER)
     217                 AT END
     218                     SET END-OF-TERMINAL-LIST TO TRUE
     219                     SUBTRACT 1 FROM COUNTER
     220                     MOVE COUNTER TO NO-OF-TERMINALS.
     221             ADD 1 TO COUNTER.
     222
     223         ACQUIRE-AND-INVITE-TERMINALS.
     224             ACQUIRE LIST-OF-TERMINALS(COUNTER) FOR MULTIPLE FILE.
     225             WRITE MULTIPLE-REC
     226                 FORMAT IS "SIGNON"
     227                 TERMINAL IS LIST-OF-TERMINALS(COUNTER).
                                                                        続く...
  デバッグ . . ._________________________________________________________________
_______________________________________________________________________________
 F3= 終了プログラム   F6= 停止点の追加 / 消去   F10= ステップ   F11= 変数の表示
 F12= 再開       F17= ウォッチ変数   F18= ウォッチの処理   F24= キーの続き
 COUNTER = 89.

レコード、グループ項目、または配列を評価している場合、F11 (変数の表示) を押すと、複数行にわたるメッセージが戻されることがあります。 複数行にわたるメッセージは、その全テキストが「評価式」画面に表示されます。 「評価式」画面に表示されたメッセージを読み終ったら、実行キーを押して、「モジュール・ソースの表示」画面に戻ります。

EVAL デバッグ・コマンドを使って、変数の値を判別することができます。 まず、QUAL デバッグ・コマンドを使用して、表示する変数の行番号を指定します。 変数の有効範囲に関する規則が、この行から適用されます。

注:
デフォルトの QUAL の位置は、現在行です。

EVAL デバッグ・コマンドを使用して変数の値を表示するには、デバッグ・コマンド行で次のように入力します。

EVAL variable-name

変数名 は、表示したい変数の名前です。 「モジュール・ソースの表示」画面から EVAL デバッグ・コマンドを入力し、変数の値が 1 行内に収まる場合、値はメッセージ行に表示されます。 それ以外の場合、変数の値は「評価式」画面に表示されます。

たとえば、図 44 に示されているモジュール・オブジェクトの 221 行の変数 COUNTER の値を表示するには、次のように入力します。

EVAL COUNTER

図 45 に示すように、「モジュール・ソースの表示」画面のメッセージ行に COUNTER = 89 が表示されます。

図 45. EVAL デバッグ・コマンドを使用して変数を表示する
                                   
                                   モジュール・ソースの表示
  プログラム:   TEST       ライブラリー:   TESTLIB    モジュール:   SAMPMDF
     213
     214         PROCEDURE-SECTION SECTION.
     215         FILL-TERMINAL-LIST.
     216             READ TERMINAL-FILE RECORD INTO LIST-OF-TERMINALS(COUNTER)
     217                 AT END
     218                     SET END-OF-TERMINAL-LIST TO TRUE
     219                     SUBTRACT 1 FROM COUNTER
     220                     MOVE COUNTER TO NO-OF-TERMINALS.
     221             ADD 1 TO COUNTER.
     222
     223         ACQUIRE-AND-INVITE-TERMINALS.
     224             ACQUIRE LIST-OF-TERMINALS(COUNTER) FOR MULTIPLE FILE.
     225             WRITE MULTIPLE-REC
     226                 FORMAT IS "SIGNON"
     227                 TERMINAL IS LIST-OF-TERMINALS(COUNTER).
                                                                    続く...
  デバッグ . . ._________________________________________________________________
_______________________________________________________________________________
 F3= 終了プログラム   F6= 停止点の追加 / 消去   F10= ステップ   F11= 変数の表示
 F12= 再開       F17= ウォッチ変数   F18= ウォッチの処理   F24= キーの続き
 COUNTER = 89.

16 進値の変数の表示

EVAL デバッグ・コマンドを使用して、変数の値を 16 進型式で表示することができます。 変数を 16 進型式で表示するには、デバッグ・コマンド行で次のように入力します。

EVAL variable-name: x 32

変数名 は、16 進型式で表示したい変数の名前です。 「x」は変数を 16 進型式で表示するということ、「32」は変数の開始後に 32 バイトのダンプが表示されることを指定するものです。 変数の 16 進値が図 46 に示す「評価式」画面に表示されます。 「x」の後に長さを指定しない場合、変数の長さが長さとして使用されます。 最低 16 バイトの長さが、常に表示されます。 変数の長さが 16 バイト未満の場合、16 バイトに達するまで残りのスペースにゼロが埋め込まれます。

図 46. EVAL デバッグ・コマンドを使用して 16 進値で変数を表示する
                                    
                                    評価式
  前のデバッグ式
  > BREAK 221
  > EVAL COUNTER
  COUNTER = 89.
  > EVAL B : X 32
             00000     F8F90000 00000000 00000000 00000000   - 89..............
             00010     00000000 00000000 00000000 00000000   - ................






                                                                          終わり
  デバッグ . . ._________________________________________________________________
_______________________________________________________________________________
  F3= 終了   F9= コマンド複写   F12= 取り消し   F16= 検索の反復   F19= 左   F20= 右
  F21= コマンド入力   F23= 出力表示

文字ストリング変数のサブストリングの表示

ILE ソース・デバッガーは、ILE COBOL の参照変更の構文をサポートしていません。 その代わりに、EVAL コマンドに %SUBSTR 演算子を使用して、文字ストリング変数のサブストリングを表示することができます。 %SUBSTR 演算子により、いくつかのエレメントのうちのエレメント開始位置から文字ストリング変数のサブストリングが獲得されます。

注:
ILE ソース・デバッガーは、COBOL の参照変更の構文を使用したサブストリングの処理はサポートしていません。 サブストリングの処理には、ILE ソース・デバッガーの %SUBSTR 演算子が必要です。

%SUBSTR 演算子の構文は、次のとおりです。

          %SUBSTR(identifier start-element number-of-elements)

ここで、id は文字ストリング変数でなければならず、開始エレメントエレメント数 は、ゼロ以外の正の整数リテラルでなければなりません。 id は、修飾変数、添え字付き変数、または指標付き変数です。 開始エレメント + エレメント数 - 1 の値は、id のエレメントの合計数以下でなければなりません。

たとえば、%SUBSTR(CHAR20 1 10) を使うと、20 個のエレメントを含む文字ストリングの最初の 10 個のエレメントを取得できます。 %SUBSTR(CHAR8 4 5) を使用すると、8 個のエレメントを含む文字ストリングの最後の 5 個のエレメントを取得できます。 DBCS または DBCS 編集項目の場合、エレメントは DBCS 文字 (すなわち 2 バイト文字) のことです。

%SUBSTR 演算子を使用するなら、文字ストリング変数のサブストリングを別の変数または変数のサブストリングに代入することができます。 ソース変数のデータがターゲット変数に、左から右へコピーされます。 ソース変数またはターゲット変数あるいはその両方がサブストリングの場合、オペランドは、文字ストリング変数の全体ではなく、サブストリングの部分だけです。 ソース変数とターゲット変数のサイズが異なる場合、次の切り捨てまたは埋め込みの規則が適用されます。

注:
同じ文字ストリング変数のサブストリングをソース変数とターゲット変数の両方で使用することができますが、 ターゲット・ストリングの一部がソース・ストリングに重なるとエラーになります。

図 47 は、%SUBSTR 演算子の使用法を示す例です。

図 47. %SUBSTR 演算子を使用して文字ストリング変数のサブストリングを表示する
                                
                                    評価式
 前のデバッグ式
 > EVAL CHAR10
    CHAR10 = '10CHARLONG'
 > EVAL CHARA
    CHARA = 'A'
 > EVAL CHARA = %SUBSTR(CHAR10 3 5)
    CHARA = 'C'
 > EVAL %SUBSTR(CHAR10 1 2) = 'A'
    CHAR10 = 'A CHARLONG'
 > EVAL %SUBSTR(CHAR10 1 2) = 'XYZ'
    CHAR10 = 'XYCHARLONG'
 > EVAL %SUBSTR(CHAR10 7 4) = 'ABCD'
    CHAR10 = 'XYCHARABCD'
 > EVAL %SUBSTR(CHAR10 1 2) = %SUBSTR(CHAR10 7 4)
    CHAR10 = 'ABCHARABCD'
                                                                          終わり
 デバッグ . . ._________________________________________________________________
 _______________________________________________________________________________
  F3= 終了  F9= コマンド複写   F12= 取り消し   F16= 検索の反復   F19= 左   F20= 右
  F21= コマンド入力   F23= 出力表示

レベル 01 またはレベル 77 のデータ項目のアドレスの表示

ILE ソース・デバッガーの EVAL コマンドの %ADDR 演算子を 使用して、レベル 01 またはレベル 77 のデータ項目のアドレスを表示でき ます。 レベル 01 またはレベル 77 の変数のアドレスを表示するには、次のよ うに入力します。

EVAL %ADDR(variable-name)

ILE COBOL には間接参照演算子はありませんが、 それでもポインター・データ項目が指す領域を複数の 16 進値または文字 値として表示することはできます。 ポインター・データ項目のターゲット領域を複数の 16 進値で表示す るには、以下のように入力します。

EVAL pointer-name: x size 

ポインター・データ項目のターゲット領域を複数の文字値で表示するに は、以下のように入力します。

EVAL pointer-name: c size