データ構造の表示

独立したフィールドと同じように、データ構造またはそのサブフィールドの内容を表 示します。 内容全体を参照するために EVAL の後にデータ構造名を使用するか、 あるいはサブセットを参照するためにサブフィールド名を使用するだけです。

データ構造が修飾されている場合は、次の表記のいずれかを使用してサブフィールドを指定します。

EVAL subfield-name OF datastructure-name

EVAL datastructure-name.subfield-name:

例えば、修飾されたデータ構造 INFO のサブフィールド NAME を表示するには、以下のいずれかを入力します。

EVAL NAME OF INFO

EVAL NAME OF INFO EVAL INFO.NAME

複数回繰り返しデータ構造を表示する時に、データ構造名に対して EVAL を 使用すると、現行指標を使ってサブフィールドが表示されます。 特定の オカレンスを指定するには、データ構造名の後の括弧内に指標を指 定してください。 例えば、DS1 の 2 番目の内容を表示するには次を入力してください。

EVAL DS1(2)

同様に、サブフィールドの特定のオカレンスの内容を表示するためには、 指標表記法を使用してください。

現行指標の値を決定するには、次のコマンドを入力してください。

EVAL _QRNU_DSI_name

ここでは name は該当のデータ構造名を表します。

あるサブフィールドが別のサブフィールドの配列オーバーレイとして定義されてい る場合に、そのオーバーレイ・サブフィールドの内容を表示するためには 、%INDEX 組み込み関数を使用してオカレンスを指定し、指標表記法を使用して配列を指 定することができます。

配列オーバーレイであるサブフィールドを表示するもう 1 つの方法として、次 の表記法を使用することができます。

EVAL subfield-name(occurrence-index,array-index)

ここで、変数 subfield-name は表示したいサブフィールドの名前で、 occurrence-idex は表示する配列オカレンスの番号、 array-index は表示する要素の番号です。

図 120 は、DBGEX で定義されたデータ構造に対して EVAL を使 用するいくつかの例を示したものです。

図 120. データ構造に対する EVAL の使用
** データ構造名またはサブフィールド名を入力できることに注意してください。**
> EVAL DS3
  TITLE OF DS3 = 'Mr.  '                  5A   INZ('Mr.  ')
  LASTNAME OF DS3 = 'Jones     '         10A   INZ('Jones    ')
  FIRSTNAME OF DS3 = 'Fred      '        10A   INZ('Fred     ')
> EVAL LastName
  LASTNAME = 'Jones     '
> EVAL DS1                                     OCCURS(3)
  FLD1 OF DS1 = 'ABCDE'                   5A   INZ('ABCDE')
  FLD1A OF DS1(1) = 'A'                   1A   DIM(5) OVERLAY(Fld1)
  FLD1A OF DS1(2) = 'B'                   5B 2 INZ(123.45)
  FLD1A OF DS1(3) = 'C'
  FLD1A OF DS1(4) = 'D'
  FLD1A OF DS1(5) = 'E'
  FLD2 OF DS1 = 123.45
> EVAL _QRNU_DSI_DS1     ** 現行指標値の判別 **
  _QRNU_DSI_DS1 = 1
> EVAL DS1=%INDEX(2)     ** DS1 のオカレンスの変更 **
  DS1=%INDEX(2) = 2
> EVAL Fld1              ** サブフィールドの表示  **
  FLD1 = 'ABCDE'            (現行オカレンス)
> EVAL fld1(2)
  FLD1(2) = 'ABCDE'         (2 番目のオカレンス)
> EVAL Fld1a             ** 配列オーバーレイ・サブフィールドの表示 **
  FLD1A OF DS1(1) = 'A'     (現行オカレンス)
  FLD1A OF DS1(2) = 'B'
  FLD1A OF DS1(3) = 'C'
  FLD1A OF DS1(4) = 'D'
  FLD1A OF DS1(5) = 'E'
> EVAL Fld1a(2,1)        ** 2 番目のオカレンスの表示、最初の要素  **
  FLD1A(2,1) = 'A'
> EVAL Fld1a(2,1..2)     ** 2 番目のオカレンスの表示、1 番目 〜 2 番目の要素 **
  FLD1A(2,1) = 'A'
  FLD1A(2,2) = 'B'
> EVAL QUALDS.ID_NUM              ** 修飾された DS のサブフィールドの表示
     QUALDS.ID_NUM = 1100022
> EVAL LIKE_QUALDS.ID_NUM         ** 別の DS の同じサブフィールドの表示
     LIKE_QUALDS.ID_NUM = 0
> EVAL LIKE_QUALDS.COUNTRY(1)     ** 修飾された DS からの配列要素
     LIKE_QUALDS.COUNTRY(1) = 'CANADA'
> EVAL cust(1).parts.item(2).Id_Num       ** 複雑な構造のサブフィールドを表示
     CUST(1).PARTS.ITEM(2).ID_NUM = 15

サブフィールドが定義されていないデータ構造を表示するためには、以下に説明 する EVAL の文字表示機能を使用しなければなりません。