データ構造は DCL-DS ステートメントで始まります。
DCL-DS ステートメントに LIKEDS キーワードも LIKEREC キーワードも 指定されていない場合、DCL-DS ステートメント の後にはゼロ個またはそれ以上のサブフィールドが続き、 その後に END-DS ステートメントが続きます。
最初のステートメントは DCL-DS で始まり、 その後にデータ構造の名前が続くか、データ構造に名前がない場合は *N が続き、 さらにその後にキーワードが続き、最後はセミコロンで終わります。
DCL-DS custInfo QUALIFIED;
id INT(10);
name VARCHAR(50);
city VARCHAR(50);
orders LIKEDS(order_t) DIM(100);
numOrders INT(10);
END-DS custInfo;
DCL-DS prtDs LEN(132) END-DS;
DCL-DS myfile EXT END-DS;
DCL-DS extds1 EXTNAME('MYFILE') END-DS;
DCL-DS extds2 EXT INZ(*EXTDFT) EXTNAME('MYFILE') END-DS;
DCL-DS pgm_stat PSDS;
status *STATUS;
routine *ROUTINE;
library CHAR(10) POS(81);
END-DS;
PSDS のすべての事前定義サブフィールドのリストについては、プログラム状況データ構造を参照してください。
INFDS の名前は、 ファイル定義の INFDS キーワード のパラメーターとして指定されます。
DCL-F myfile DISK(*EXT) INFDS(myfileInfo);
DCL-DS myfileInfo;
status *STATUS;
opcode *OPCODE;
msgid CHAR(7) POS(46);
END-DS;
INFDS のすべての事前定義サブフィールドのリストについては、ファイル・フィードバック情報を参照してください。
DCL-DS dtaara_ds DTAARA(*AUTO) LEN(100);
name CHAR(10);
END-DS;
DCL-DS info LIKEDS(info_T);
DCL-DS inputDs LIKEREC(custFmt : *INPUT);
DCL-DS cust_info;
id INT(10);
name VARCHAR(25);
startDate DATE(*ISO);
END-DS;
DCL-DS *N;
DCL-SUBF select CHAR(10);
name CHAR(10);
DCL-SUBF address CHAR(25);
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;
DCL-DS cust_info EXTNAME('CUSTFILE');
num_orders INT(10);
earliest_order DATE(*ISO);
latest_order DATE(*ISO);
END-DS;
DCL-DS custInfo EXT;
cust_name EXTFLD('CSTNAM');
id_no EXTFLD INZ(0);
END-DS;
DCL-DS *N;
string CHAR(100);
string_array CHAR(1) DIM(100) OVERLAY(string);
END-DS;
