変更の始まり

自由形式のデータ構造定義

データ構造は DCL-DS ステートメントで始まります。

DCL-DS ステートメントに LIKEDS キーワードも LIKEREC キーワードも 指定されていない場合、DCL-DS ステートメント の後にはゼロ個またはそれ以上のサブフィールドが続き、 その後に END-DS ステートメントが続きます。

DCL-DS ステートメント

最初のステートメントは DCL-DS で始まり、 その後にデータ構造の名前が続くか、データ構造に名前がない場合は *N が続き、 さらにその後にキーワードが続き、最後はセミコロンで終わります。

サブフィールド

注: LIKEDS または LIKEREC キーワードを使用して定義された データ構造には、サブフィールドは指定されません。

自由形式のサブフィールド定義を参照してください。

END-DS ステートメント

外部記述データ構造

EXT キーワード または EXTNAME キーワード のいずれかを最初のキーワードとして指定します。
  DCL-DS myfile EXT END-DS;
  DCL-DS extds1 EXTNAME('MYFILE') END-DS;
EXT キーワードを指定する場合、 その後にあるキーワードの 1 つとして EXTNAME キーワードも指定できます。
  DCL-DS extds2 EXT INZ(*EXTDFT) EXTNAME('MYFILE') END-DS;

プログラム状況データ構造 (PSDS)

PSDS を定義するには、PSDS キーワードを指定します。 *STATUS などの事前定義サブフィールドには、 データ・タイプ・キーワードの代わりに予約語を指定します。
  DCL-DS pgm_stat PSDS;
     status *STATUS;
     routine *ROUTINE;
     library CHAR(10) POS(81);
  END-DS;

PSDS のすべての事前定義サブフィールドのリストについては、プログラム状況データ構造を参照してください。

ファイル情報データ構造 (INFDS)

INFDS の名前は、 ファイル定義の INFDS キーワード のパラメーターとして指定されます。

*STATUS などの事前定義サブフィールドには、 データ・タイプ・キーワードの代わりに予約語を指定します。
  DCL-F myfile DISK(*EXT) INFDS(myfileInfo);
  DCL-DS myfileInfo;
     status *STATUS;
     opcode *OPCODE;
     msgid CHAR(7) POS(46);
  END-DS;

INFDS のすべての事前定義サブフィールドのリストについては、ファイル・フィードバック情報を参照してください。

ファイル情報データ構造

DTAARA キーワードに *AUTO パラメーターを指定します。
  DCL-DS dtaara_ds DTAARA(*AUTO) LEN(100);
     name CHAR(10);
  END-DS;

自由形式のデータ構造の例

  1. LIKEDS および LIKEREC を使用して定義されたデータ構造が、END-DS のない 1 つのステートメント としてコーディングされています。
       DCL-DS info LIKEDS(info_T);
       DCL-DS inputDs LIKEREC(custFmt : *INPUT);
  2. 3 つのサブフィールドがあるデータ構造 cust_info。 END-DS ステートメントは名前なしで指定されています。
      DCL-DS cust_info;
         id INT(10);
         name VARCHAR(25);
         startDate DATE(*ISO);
      END-DS;
  3. 一部のサブフィールドの定義に DCL-SUBF が使用されているデータ構造。
    • サブフィールド select は、自由形式演算内で使用を許可されている命令コードと同じ名前です。 このサブフィールドには DCL-SUBF が必要です。 表 1を参照してください。
    • サブフィールド name は、命令コードと同じ名前ではないため、DCL-SUBF は不要です。
    • サブフィールド address は、命令コードと同じ名前ではないため、 DCL-SUBF は必要ありませんが、あっても有効です。
      DCL-DS *N;
         DCL-SUBF select CHAR(10);
         name CHAR(10);
         DCL-SUBF address CHAR(25);
      END-DS;
  4. データ構造 order_info。 END-DS ステートメントが名前とともに指定されています。
      DCL-DS order_info QUALIFIED;
         part LIKEDS(part_info_T);
         quantity INT(10);
         unit_price PACKED(9 : 2);
         discount PACKED(7 : 2);
      END-DS order_info;
  5. 追加のサブフィールドがある外部記述データ構造。
      DCL-DS cust_info EXTNAME('CUSTFILE');
         num_orders INT(10);
         earliest_order DATE(*ISO);
         latest_order DATE(*ISO);
      END-DS;
  6. 外部ファイル 'CUSTINFO' の名前と同じ名前の外部記述データ構造。 このデータ構造には、EXTFLD キーワードで示される外部サブフィールドがあります。 EXTFLD キーワードは、サブフィールド名が外部名と同じである場合はパラメーターなしで指定されます。
      DCL-DS custInfo EXT;
         cust_name EXTFLD('CSTNAM');
         id_no EXTFLD INZ(0);
      END-DS;
  7. 名前の付いていないデータ構造。
      DCL-DS *N;
         string CHAR(100);
         string_array CHAR(1) DIM(100) OVERLAY(string);
      END-DS;
変更の終わり