データ構造

ILE RPG コンパイラーによって、記憶域の区域およびその区域内 のサブフィールドと呼ばれるフィールドのレイアウトを定義する ことができます。記憶域のこの区域は、データ構造と呼ばれます。

変更の始まり自由形式でデータ構造を定義するには、 DCL-DS 命令コードの後にデータ構造名とキーワードを指定します。 固定形式でデータ構造を定義するには、定義仕様書の 24 から 25 桁目に DS を 指定します。変更の終わり

データ構造は次の目的で使用することができます。
  • 種々のデータ形式を使用して同じ内部域を複数回定義する。
  • レコードを定義するのと同じ方法でデータ構造およびそのサブフィールドを 定義する。
  • データのセットの複数オカレンスを定義する。
  • 不連続のデータを連続した内部記憶場所の中にグループ化する。
  • データ構造の名前を使用してすべてのサブフィールドをグループとして操 作する。
  • その名前を使用して個別のサブフィールドを操作する。
さらに、次の 4 つの特殊なデータ構造があり、それぞれが 特定の目的を持っています。
  • 変更の始まりデータ域データ構造 (自由形式定義では DTAARA キーワードの *AUTO パラメーター によって識別され、固定形式定義では 23 桁目の U によって識別される)。変更の終わり
  • ファイル情報データ構造 (ファイル仕様書 の INFDS キーワードによって識別される)。
  • 変更の始まりプログラム状況データ構造 (自由形式定義 では PSDS キーワードで識別され、固定形式定義では 23 桁目の S によって識別される)。変更の終わり
  • 標識データ構造 (ファイル仕様書 の INDDS キーワードによって識別される)。

データ構造は、プログラム記述または外部記述とすることができます。 ただし、標識データ構造は プログラム記述のみです。

あるデータ構造を、LIKEDS キーワードを使用して別のデータ構造と同じように定義することができます。

プログラム記述データ構造は、自由形式定義では EXT または EXTNAME キーワード がないことによって識別され、固定形式定義では 22 桁目のブランクによって識別されます。プログラム記述データ構造のサブフィールド定義は、データ構造定義の直後に続 いていなければなりません。

変更の始まり外部記述データ構造 (自由形式定義 では EXT キーワードまたは EXTNAME キーワードによって識別され、 固定形式定義では 22 桁目の E によって識別される) のサブフィールド記述は外部記述ファイル に入っています。コンパイル時に、ILE RPG コンパイラーは、外部名を使用してデータ構造サブ フィールドの外部記述を見付けて、それを抜き出します。EXTNAME キーワード が指定されていない場合、外部ファイル名にはデータ構造の名前が使用されます。変更の終わり

注: 外部記述にサブフィールドについて指定されたデータ形式は、コンパイラーによ ってそのサブフィールドの内部形式として使用されます。 これは、外部記述ファイルの取り扱われ方と異なっています。

外部サブフィールドの名前は、キーワード EXTFLD を使用してプログラム中で変 更することができます。 キーワード PREFIX を使用して、EXTFLD によって名前が変更されていない外部サ ブフィールド名に接頭部を追加することができます。 ファイル名が、外部ファイル名を使用したデータ構造の定義時に EXTNAME キーワ ードに指定されたパラメーターと同じであっても、データ構造サブフィールドは 、ファイル仕様書に指定された PREFIX キーワードの影響を受けないことに注 意してください。 追加のサブフィールドは、外部サブフィールドのリストの直後にプログラム記述 サブフィールドを指定することによって、外部記述データ構造に追加することが できます。

変更の始まり外部記述データ構造は LIKEREC キーワードを使用して定義することもできます。変更の終わり

変更の始まりデータ構造に CCSID(*EXACT) または CCSID(*NOEXACT) キーワードを指定することによって、 外部記述データ構造の英数字サブフィールドの CCSID を制御できます。 CCSID(*EXACT) を指定すると、英数字サブフィールドの CCSID はファイル内のフィールド と同じ CCSID になります。 CCSID(*NOEXACT) を指定するか、または、データ構造に対して CCSID キーワードを指定しない 場合、英数字サブフィールドの CCSID は、英数字定義のデフォルト CCSID になります。 英数字 CCSID について詳しくは、CCSID(*EXACT | *NOEXACT) および CCSID(*CHAR : *JOBRUN | *JOBRUNMIX | *UTF8 | *HEX | 番号) を 参照してください。変更の終わり