COBOL2002 操作ガイド


12.2 オペランドの指定方法

〈この節の構成〉

(1) ソース要素の名称

(a) 外部プログラム名と内部プログラム名

外部プログラム名は,プログラム定義の最外のプログラムである外部プログラムのプログラム名段落(PROGRAM-ID)で指定した名称です。内部プログラム名は,内部プログラムのプログラム名段落(PROGRAM-ID)で指定した名称です。記述規則は,COBOLの言語仕様に従って,変換規則も適用します。変換後の名称をTDコマンドのオペランドに指定できます。

(b) クラス名とメソッド名

クラス名は,クラス定義のクラス名段落(CLASS-ID)で指定した名称です。メソッド名は,メソッド定義のメソッド名段落(METHOD-ID)で指定した名称です。記述規則は,COBOLの言語仕様に従って,変換規則も適用します。変換後の名称をTDコマンドのオペランドに指定できます。

(c) 関数名

利用者による関数定義の関数名段落(FUNCTION-ID)で指定した名称です。記述規則は,COBOLの言語仕様に従って,変換規則も適用します。変換後の名称をTDコマンドのオペランドに指定できます。

(2) 行番号(=一連番号)

原始プログラムの一連番号領域に記述してある番号です。原始プログラムの一連番号領域に番号の記述がない場合,順序が昇順でない場合,または自由形式正書法の場合は,コンパイラが自動的に振り直す番号が行番号となります。

(3) 文番号

COBOL言語の文を指定する番号です。行番号と位置番号をピリオドでつなぎます。行の先頭文を位置番号の1とします。位置番号の1は省略できます。

使用例

[図データ]

(4) 入口名

外部プログラム名およびENTRY文で指定される入口点の名前を,入口名とします。

(5) 手続き名

COBOL言語の手続き名です。手続き名には,段落名と節名があります。手続き名も一つの文として文番号が割り当てられます。

使用例

[図データ]

(6) データ名

テストデバッグで指定できるCOBOL言語のデータは次のとおりです。

データ名は,COBOL言語の仕様に準拠した形で,修飾,添字付けおよび部分参照の指定ができます。COBOL言語との指定方法の違いは次のとおりです。

(a) 表の参照

表の属性を持つデータ名を参照するときは,添字を付けて指定します。添字は,整数定数,添字の付かない数字項目,指標名の指定ができます。ただし,データ監視条件では,整数定数でなければなりません。

次の項目は,添字に指定できません。

  • ALL

  • 算術式(相対添字付け)

  • ほかの表に割り当てた指標名

また,整数定数を,ピリオドを2個(..)続けてつなぎ,添字に指定すると,表の一部の範囲を一度に参照できます。

(b) 部分参照

データの部分を参照するときは,最左端位置と長さを指定します。最左端位置と長さは,整数定数を指定します。部分参照には,次の制限があります。

  • 最左端位置と長さに,算術式は指定できません。

  • 添字付けの範囲指定と部分参照は同時に指定できません。

注意事項
  • 報告書節のデータ項目および画面節(SCREEN SECTION)の画面名は参照できません。

  • 最適化オプション(-Optimize,2)でコンパイルしたソース要素をテストデバッグするときは,最適化されたデータ項目を参照できないことがあります。

  • TYPEDEF句の付いたデータ項目およびその下位項目のデータ項目は参照できません。

  • DISPLAY OBJECTコマンド,DISPLAY FACTORYコマンドによって,オブジェクトまたはファクトリオブジェクト内に定義されている表を参照するときの添字の指定は,整数定数でなければなりません。

(7) 定数

テストデバッガで使用できる定数には,COBOLの言語仕様に準拠した形式と,拡張16進定数があります。COBOLの言語仕様に準拠した形式では,次の定数を代入,比較で使用できます。

(a) COBOL言語の仕様に準拠した定数

記号文字・定数名は使用できません。ALLは,英数字定数・ブール定数・日本語文字定数・表意定数に指定できます。

定数を囲む一対の区切り記号には,アポストロフィ(')またはダブルコーテーション(")が使用できます。区切り記号としてアポストロフィ(')またはダブルコーテーション(")を使用する場合の指定方法については「12.1 TDコマンドの指定方法」を参照してください。

表12‒1 COBOL言語の仕様に準拠した定数一覧

定数の種類

英数字定数

英数字

'ABC'

16進英数字

X'0AE2'

数字定数

固定小数点数字

123 123.45

浮動小数点数字

123.E+02

16進数字

H'B0EF'長さ8文字まで指定できます。

2の倍数長である必要はありません。

ブール定数

ブール

B'1010'

日本語文字定数

日本語文字

N'日本語' ,

NC'日本語' ,

ND'日本語'

16進日本語文字

NX'81568134'

表意定数

ALL 'A',

ALL N'日本語',

ALL B'1010' ,

〔ALL〕HIGH-VALUE,

〔ALL〕HIGH-VALUES,

〔ALL〕LOW-VALUE,

〔ALL〕LOW-VALUES,

〔ALL〕ZERO,

〔ALL〕ZEROS,

〔ALL〕ZEROES,

〔ALL〕SPACE,

〔ALL〕SPACES,

〔ALL〕QUOTE,

〔ALL〕QUOTES,

〔ALL〕NULL,

〔ALL〕NULLS

(b) 拡張16進定数

#Xで始まり,一対のアポストロフィ(')またはダブルコーテーション(")で囲んだ0〜9,A〜Fの文字列です。文字数は,2の倍数で,160文字までの長さです。ALLによる定数の繰り返しも指定できます。

拡張16進定数は,COBOL2002の定数で代入,比較ができないデータ項目にも,代入,比較ができます。代入,比較の規則の詳細については,「9.3.1 データの比較・代入規則」の「(1) データの代入規則」,「(2) データの比較規則」を参照してください。

構文規則
〔ALL〕  #X' ・・・・ '
〔ALL〕  #X" ・・・・ "
使用例
#X'313233'
ALL  #X'FF'

(8) 既定義オブジェクト名

テストデバッガで使用できるCOBOL言語の既定義オブジェクトは次のとおりです。

(9) オペランドの補助語

オペランドの内容を指定するときに,補助語を使用します。補助語の先頭にはシャープ(#)が付きます。オペランドの補助語を次に示します。

表12‒2 オペランドの補助語

補助語

内容

#ENTRY

ソース要素の入口を指定します。

#EXIT

ソース要素の出口を指定します。

#PROGRAM

プログラム名を指定します。

#CLASS

クラス名を指定します。

#FACTORY

ファクトリオブジェクトを示します。

#OBJECT

インスタンスオブジェクトを示します。

#FUNCTION

利用者定義関数名を指定します。

#ALL

すべてという意味で指定します。

#>

参照するオブジェクトの特定のデータ名を示します。

#LASTCODE

直前のASSIGN CASECODEコマンドで設定した値を示します。

(10)  TD利用者定義語

利用者が任意に指定する語です。先頭が英字で始まる英数字で,長さは31バイト以内です。

表12‒3 TD利用者定義語

種類

用途

カウンタ変数

TDコマンド群の実行回数をカウントします。

記号名

シミュレーションでデータ名を識別します。

監視識別子

データ条件中断の設定を識別します。

ケース識別子

テストケースを識別します。

TD利用者定義語は,TDコマンドで使用するCOBOL2002の予約語(OF,IN,WITHなど)と同じ名称を指定できません。

(11) 翻訳単位指定

翻訳単位を特定します。

翻訳単位指定が指定されていない場合は,次の順で翻訳単位指定を仮定します。SET QUALIFICATIONコマンドの詳細については,「12.4 TDコマンドの詳細」の「(23) SET QUALIFICATION/RESET QUALIFICATION(翻訳単位・ソース要素の指定と解除)」の「(a) SET QUALIFICATION(翻訳単位・ソース要素の指定)」を参照してください。

(a) プログラム指定

プログラムを特定するときに指定します。

形式

[図データ]

(b) クラス指定

クラスを特定するときに指定します。

形式

[図データ]

(c) 関数指定

関数を特定するときに指定します。

形式

[図データ]

(12) ソース要素指定

ソース要素を特定します。

ソース要素指定が指定されていない場合は,次の順でソース要素指定を仮定します。

SET QUALIFICATIONコマンドの詳細については,「12.4 TDコマンドの詳細」の「(23) SET QUALIFICATION/RESET QUALIFICATION(翻訳単位・ソース要素の指定と解除)」の「(a) SET QUALIFICATION(翻訳単位・ソース要素の指定)」を参照してください。

プログラム定義のソース要素を指定します。

形式

[図データ]

クラス定義のソース要素を特定します。

形式

[図データ]

関数を指定します。

形式

[図データ]

(13) 文番号指定

文を文番号で指定します。

形式

[図データ]

(14) 手続き名指定

手続き名を指定します。

形式

[図データ]

(15) 入口,出口指定

ソース要素の入口,出口を指定します。ソース要素の入口とはソース要素の最初の文を実行する前の状態です。ソース要素の出口とはソース要素の最後の文を実行したあとの状態です。

ソース要素の入口を#ENTRY,ソース要素の出口を#EXITで表します。

形式

[図データ]

使用例
#ENTRY                *> 入口
#PROGRAM(A/A)#ENTRY   *> 外部プログラムAの入口
#EXIT                 *> 出口
#PROGRAM(A/B)#EXIT    *> 外部プログラムAに属する
                      *> 内部プログラムBの出口
注意事項

ソース要素指定をするとき,次の指定はできません。

#CLASS(クラス名/#FACTORY)
#CLASS(クラス名/#OBJECT)

(16) データ名指定

操作する対象となるデータを一意にするときに指定します。

形式

[図データ]

(17) ファイル名指定

COBOL言語の原始プログラムのファイル記述項のファイル名を指定します。

形式

[図データ]

(18) TDコマンド群

一つにまとまった処理をするためのTDコマンドの集まりをTDコマンド群として指定できます。TDコマンド群は,次のTDコマンドで指定できます。

使用例
SET BREAK STATEMENT(100) DO
 DISPLAY DATA(品名)
 SET BREAK STATEMENT(500) DO  *> ネスト
   DISPLAY DATA(番号)
 ENDDO
ENDDO

データ監視条件の設定,または中断点の設定による中断が一つの文で同時に成立したときは,次の順番でTDコマンド群が実行されます。

  1. 「データ監視条件の設定」のTDコマンド群

  2. 「中断点の設定」のTDコマンド群

さらに,データ監視条件の設定によって,一つの文で複数のデータ監視条件が同時に成立したときは,監視識別子の昇順にTDコマンド群が実行されます。

使用例

次のTDコマンドを実行し,一つの文で同時に中断が成立すると,「データ監視の設定(SET WATCH(DATAA))」「データ監視の設定(SET WATCH(WORK))」「中断点の設定」の順番でTDコマンド群が実行されます。

TDコマンド群
SET BREAK STATEMENT(5000)               *> 中断点の設定
DO
  DISPLAY COMMENT("TEST#1 OK!")
ENDDO
SET WATCH(WORK) CONDITION(WORK NOT = 0) *> データ監視の設定(1)
DO
  DISPLAY DATA(WORK)
ENDDO
SET WATCH(DATAA) CONDITION(DATAA NOT = 0) *> データ監視の設定(2)
DO
  DISPLAY DATA(DATAA)
ENDDO
実行結果

[図データ]

次の,プログラムを続行するTDコマンドをTDコマンド群に指定すると,プログラムの実行が再開されてしまうために,それ以降のTDコマンドは実行されません。TDコマンド群が複数ある場合,最初に実行されるTDコマンド群にプログラムを続行するTDコマンドが指定されていたときは,それ以降のTDコマンド群は実行されません。

TDコマンド群が実行されなかったとき,カウンタ変数は加算されません。中断点を設定したときのスキップ回数のカウントは加算されます。

使用例

次のTDコマンドを実行した結果,文番号6000で比較条件式A = 50が成立したとします。SET WATCHコマンドで指定されたTDコマンド群が実行され,GOコマンドによってプログラムが続行されます。SET BREAKコマンドで指定された無条件中断のTDコマンド群のDISPLAY DATAコマンドは実行されません。カウンタ変数Cの値も変化しません。

SET WATCH(WATCH50)  CONDITION(A = 50)
DO
  GO
ENDDO
 
SET BREAK STATEMENT(6000) COUNTER(C)
DO
  DISPLAY DATA(B)
ENDDO
注意事項
  • 「データ監視条件の設定」と「中断点の設定」が成立しても,TDコマンド群でプログラムを続行するコマンドが実行されたときは,入力待ちにならないで,実行が継続されます。

  • ステップイン,ステップオーバーまたはジャンプで中断した文で,同時に「データ監視条件の設定」と「中断点の設定」が成立しても,TDコマンド群は一切実行しません。

  • 中断点のスキップ回数は,TDコマンド群の実行には関係なく,中断点を通過した場合には必ず更新されます。

  • 中断点に達した場合のメッセージおよびデータ監視条件が成立した場合のメッセージは,TDコマンド群の実行に関係なく表示されます。

  • GUIモードでは,TDコマンド群の実行を強制的に中止できます。コマンド実行中に割り込みを指示した場合は,その時点で実行しているTDコマンド以降のコマンドは実行されないで中断します。

  • シミュレーション手続きの場合は,シミュレーション対象入出力文の次の文でプログラムが中断します。

(19) カウンタ変数

カウンタ変数は,TDコマンド群の実行回数を参照するための変数です。カウンタ変数を定義したTDコマンド群の中でだけ参照できます。2進項目のデータとして扱われ,1から始まり,TDコマンド群が実行されるたびに1ずつ加算されます。最大値は2,147,483,647で,最大値を超えた場合は,最大値のまま更新されません。

カウンタ変数は,表示,代入,比較に使用できます。ただし,添字・部分参照には使用できません。

TDコマンド群が実行される場合,カウンタ変数と同じ名前のデータ名が参照範囲にあるときは,カウンタ変数が指定できるオペランドであれば,カウンタ変数とみなします。カウンタ変数が指定できないオペランドであれば,データ名とみなします。

使用例

カウンタ変数によって,実行されるTDコマンドを変えます。

SET QUALIFICATION (#PROG (給与計算))
SET BREAK  ST(1350)  COUNTER(CNT)
DO
    IF  C (CNT = 1)
      DISPLAY DATA(合計)                 *> 一度目に実行される
    ENDIF
    IF  C (CNT = 2)
        DISPLAY DATA(総合計)             *> 二度目に実行される
    ENDIF
ENDDO

(20) 記号名

記号名は,副プログラムシミュレーション・ファイルシミュレーションのために定義する名前です。記号名については,「9.2.7 プログラムの単体テスト」の「(4) 記号名」を参照してください。

カウンタ変数と同じ名前は指定できません。ソース要素中のデータ名と同じ名前を記号名として定義したときは,記号名とみなします。記号名に対応するデータ名が表の場合は,添字を必要とします。部分参照できるデータ名であれば,部分参照の指定ができます。

使用例

ファイルシミュレーションのレコード定義に記号名を割り当てます。

    SIMULATE FILE(OUTPUT-FILE) OPENMODE(OUTPUT) RECORD(SYMBOL1)
       DEFINE
        01 SYMBOL1
          02 SYMBOL11
           03 SYMBOL111
       ENDDEFINE
          DISPLAY DATA (SYMBOL111(1, J)(1:5))
    ENDSIMULATE

(21) 繰り返し指定

次のシミュレーションで,反復回数とTDコマンド群を指定します。「12.4 TDコマンドの詳細」の「(17) REPEAT(繰り返し指定)」を参照してください。

繰り返し指定の使用例については,「9.2.7 プログラムの単体テスト」の「(3) ファイルシミュレーション」の「(a) ファイル入出力文のシミュレーション」の使用例2を参照してください。

繰り返し指定を複数記述することで,シミュレーションが行われるごとに実行されるTDコマンド群を変更できます。反復回数分のシミュレーションでTDコマンドを実行されると,次のシミュレーションから次の繰り返し指定のTDコマンド群が実行されます。すべての繰り返し指定を実行したあとに,シミュレーションが実行されるときは,最後の繰り返し指定のTDコマンド群を実行します。

(22) 入出力文選択指定

シミュレーションする次の入出力文に対応させて,ファイルシミュレーションの手続きを実行させます。「12.4 TDコマンドの詳細」の「(18) SELECT ACTION(入出力文選択指定)」を参照してください。

使用例については「9.2.7 プログラムの単体テスト」の「(3) ファイルシミュレーション」の「(a) ファイル入出力文のシミュレーション」の使用例3を参照してください。

(23) 比較条件式

条件を指定します。

形式

[図データ]

(24) OLEプロパティ指定

OLEプロパティを特定します。

形式

[図データ]

オペランドの詳細
  • データ名指定1

    OLEプロパティの名称が設定された英字項目,英数字項目,日本語項目または集団項目を指定します。

  • 定数

    OLEプロパティの名称を指定する英数字定数,または日本語定数を指定します。

  • データ名指定2

    OLEオブジェクト参照データ項目のデータ名を指定します。

注意事項

データ名指定1およびデータ名指定2には,添字の範囲指定はできません。

使用例
'Caption' WITH OLE-OBJ1
     *> OLE-OBJ1のOLEオブジェクトに属するOLEプロパティ'Caption'
PROP1 WITH OLE-OBJ2
      *> OLE-OBJ2のOLEオブジェクトに属し
      *> データ名PROP1に設定された名称のOLEプロパティ