DISPLAY OBJECTコマンドは,オブジェクト参照データ項目または既定義オブジェクトSELF,EXCEPTION-OBJECTの指定によって,その参照するオブジェクトの次の情報を表示します。
- オブジェクト参照の値
- クラス名
- インスタンスオブジェクト・ファクトリオブジェクトの種別
- データの値
DISPLAY FACTORYコマンドは,クラス名の指定によって,ファクトリオブジェクトの次の情報を表示します。
- 形式
![[図データ]](figure/td050320.gif)
- データ名指定
オブジェクトを参照するオブジェクト参照データ項目を指定します。
- SELF,EXCEPTION-OBJECT
オブジェクトを参照する既定義オブジェクト名を指定します。
- #>
データ名指定,SELFまたはEXCEPTION-OBJECTで参照するオブジェクトの特定のデータ名を指すために指定します。
- クラス名指定1
データ名が所属するクラス名を指定します。クラス名は,オブジェクトを定義するクラスまたはそのスーパクラスの名称です。
- データ名
表示するデータ名を指定します。
- #ALL
クラス名指定1が指定されないときは,オブジェクトを定義するクラスとそのスーパクラスに所属するデータをすべて表示します。クラス名指定1が指定されたときは,指定されたクラスに所属するデータをすべて表示します。ただし,データが定義されていないスーパクラスは何も表示されません。
- ATTRIBUTE | HEX | ALLTYPE
データの表示形式を指定します。
・ATTRIBUTE:データ名の属性で表示します。
・HEX:16進で表示します。
・ALLTYPE:ATTRIBUTE,HEXの両方の形式で表示します。
- GROUP | ELEMENT
集団項目の表示形式を指定します。
・GROUP:英数字集団項目を英数字項目とみなし全体を先頭から表示します。または,AIX(32),AIX(64),Linux(x86),Linux(x64)の場合,日本語集団項目を日本語項目とみなし全体を先頭から表示します。
・ELEMENT:基本項目単位に表示します。
- PRINT
SET PRINTコマンドで指定した出力先に結果を表示します。
SET PRINTコマンドについては,「5.4.35 SET PRINT/RESET PRINT(テスト結果蓄積先の設定と解除)」の「(1) SET PRINT(テスト結果蓄積先の設定)」を参照してください。
- 形式
![[図データ]](figure/td050330.gif)
- クラス名指定2
ファクトリオブジェクトのクラス名を指定します。
- #>
参照するオブジェクトの特定のデータ名を指すために指定します。
- クラス名指定3
データ名が定義されているクラス名を指定します。クラス名は,オブジェクトを作成したクラスまたはそのスーパクラスの名称です。
- データ名
表示するデータ名を指定します。
- #ALL
クラス名指定3が指定されないときは,オブジェクトを定義するクラスとそのスーパクラスに所属するデータをすべて表示します。クラス名指定3が指定されたときは,指定されたクラスに所属するデータをすべて表示します。ただしデータが定義されていないスーパクラスは何も表示されません。
- ATTRIBUTE | HEX | ALLTYPE
データの表示形式を指定します。
・ATTRIBUTE:データ名の属性で表示します。
・HEX:16進で表示します。
・ALLTYPE:ATTRIBUTE,HEXの両方の形式で表示します。
- GROUP | ELEMENT
集団項目の表示形式を指定します。
・GROUP:集団項目を英数字項目とみなし全体を先頭から表示します。
・ELEMENT:基本項目単位に表示します。
- PRINT
SET PRINTコマンドで指定した出力先に結果を表示します。
SET PRINTコマンドについては,「5.4.35 SET PRINT/RESET PRINT(テスト結果蓄積先の設定と解除)」の「(1) SET PRINT(テスト結果蓄積先の設定)」を参照してください。
- 注意事項
- GROUPオペランド,およびELEMENTオペランドは,データ名が集団項目でないときは無効となります。
- #ALLを指定したとき,ELEMENTオペランドは無効となります。集団項目はGROUPオペランドの形式で表示されます。
- 既定義オブジェクトのEXCEPTION-OBJECTは,COBOLプログラムの手続きで使用されているときに指定できます。既定義オブジェクトのSELFは,メソッド内では常に指定できます。
- ELEMENTオペランドは,集団項目を部分参照で表示する場合は無効となります。
- HEX | ALLTYPEオペランドは,データ名が内部ブール項目のときは無効となります。
- 表示するデータ名がオブジェクト参照データ項目の場合,データの値を表示します。オブジェクト参照データ項目が参照するオブジェクトの情報とデータ名は表示しません。
- クラス名指定1,クラス名指定2,クラス名指定3で指定するクラスは,-TDInfコンパイラオプションを指定してコンパイルする必要があります。データ名,#ALL指定によってデータを表示するスーパクラスも,-TDInfコンパイラオプションを指定してコンパイルしたクラスだけです。
- データ名に,特殊レジスタは指定できません。
- データ名が表のとき,添字および部分参照の最左端位置と長さは整数定数を指定する必要があります。
- データ名,#ALLを指定しないとき,データ名の値は表示しません。DISPLAY OBJECTコマンドはオブジェクトの種別とクラス名だけを,DISPLAY FACTORYコマンドはクラス名だけを表示します。
- 使用例と表示形式
- 次のCOBOLプログラムのクラス定義に従って,TDコマンドの使用例を示します。
- クラスMILKは,クラスDRINKを継承します。
- 使用例1について,UNIX32の場合と,UNIX64の場合の使用例を示します。使用例2以降で,明記されていない場合については,UNIX32の場合だけを示します。
- UNIX32の場合とUNIX64の場合の相違は,16進表示個所でアドレスを表示している部分が8けたから16けたになっていることです。また,表示するデータによってはデータサイズが変更になるものもあります。変更になるデータについては,「9.1.2 UNIX64 COBOL2002固有の言語仕様」の「(1) アドレス系データを表現するデータ項目」を参照してください。
- クラスDRINK
IDENTIFICATION DIVISION.
CLASS-ID. DRINK INHERITS BASE.
:
IDENTIFICATION DIVISION.
FACTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 F-DATA01 PIC S9(9) COMP.
01 F-DATA02.
02 F-DATA03 PIC X(25).
02 F-DATA04 PIC 9(18).
02 F-DATA05 PIC X(5).
01 F-DATA06 PIC X(5).
:
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 O-DATA01 PIC S9(9) COMP.
01 O-DATA02 PIC S9(9) COMP.
:
END CLASS DRINK.
- クラスMILK
IDENTIFICATION DIVISION.
CLASS-ID. MILK INHERITS DRINK.
:
IDENTIFICATION DIVISION.
FACTORY.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 F-DATA01 PIC S9(9) COMP.
01 F-DATA11 PIC S9(9) COMP.
01 F-DATA12 PIC S9(9) COMP.
:
OBJECT.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 O-DATA01 PIC S9(9) COMP.
01 O-DATA11 PIC S9(9) COMP.
:
END CLASS MILK.
- 使用例1
- 既定義オブジェクトSELFの値が,クラスMILKから生成されたファクトリオブジェクトを参照するときに,クラスMILKのスーパクラスDRINKに定義されたデータ名F-DATA01を属性と16進で表示します。
DISPLAY OBJECT (SELF #> #CLASS(DRINK) F-DATA01) ALLTYPE
![[図データ]](figure/td050321.gif)
- 使用例2
- 既定義オブジェクトSELFの値がクラスMILKから生成されたインスタンスオブジェクトを参照するとき,クラスMILKのスーパクラスDRINKで定義されたデータ名O-DATA01を属性と16進で表示します。
DISPLAY OBJECT (SELF #> #CLASS(DRINK) O-DATA01) ALLTYPE
![[図データ]](figure/td050322.gif)
- 使用例3
- 既定義オブジェクトSELFの値が,クラスMILKから生成されたインスタンスオブジェクトを参照するとき,クラス名を指定しないで,データ名O-DATA01を属性と16進で表示します。
DISPLAY OBJECT (SELF #> O-DATA01) ALLTYPE
![[図データ]](figure/td050323.gif)
![[図データ]](figure/td050334.gif)
![[図データ]](figure/td05032a.gif)
![[図データ]](figure/td050332.gif)
- 使用例4
- 既定義オブジェクトSELFの値が,クラスMILKから生成されたファクトリオブジェクトを参照するとき,クラスMILKのスーパクラスDRINKのすべてのファクトリデータを,属性と16進で表示します。
DISPLAY OBJECT (SELF #> #CLASS(DRINK) #ALL) ALLTYPE
![[図データ]](figure/td050324.gif)
- 使用例5
- オブジェクト参照データ項目A-DRINKの値が,クラスMILKから生成されたファクトリオブジェクトを参照するとき,オブジェクトのすべてのファクトリデータを,属性で表示します。
DISPLAY OBJECT (A-DRINK #> #ALL) ATTRIBUTE
![[図データ]](figure/td050325.gif)
- 使用例6
- クラス名MILKを指定して,ファクトリオブジェクトのスーパクラスDRINKのデータ名F-DATA01を属性と16進で表示します。
DISPLAY FACTORY (#CLASS(MILK) #> #CLASS(DRINK) F-DATA01) ALLTYPE
![[図データ]](figure/td050326.gif)
- 使用例7
- クラス名MILKを指定して,ファクトリオブジェクトのデータ名F-DATA01を属性で表示します。
- ファクトリオブジェクトのスーパクラス名は指定しないで,該当するデータ名をすべて表示します。
DISPLAY FACTORY (#CLASS(MILK) #> F-DATA01) ATTRIBUTE
![[図データ]](figure/td050327.gif)
- 使用例8
- クラス名MILKを指定して,ファクトリオブジェクトのスーパクラスDRINKのすべてのデータを属性と16進で表示します。
DISPLAY FACTORY (#CLASS(MILK) #> #CLASS(DRINK) #ALL) ALLTYPE
![[図データ]](figure/td050328.gif)
- 使用例9
- オブジェクト参照データ項目B-DRINKがクラスMILKのインスタンスオブジェクトを参照するとき,オブジェクト参照の値,クラス名,オブジェクトの種別を表示します。
DISPLAY OBJECT (B-DRINK)
![[図データ]](figure/td050329.gif)