配列データ構造
「配列データ構造」は、DIM キーワードを使用して定義されるデータ構造です。配列データ構造は、 複数オカレンス・データ構造と似ていますが、指標は配列の場合と同様に明示的に指定されます。
「キー付き配列データ構造」とは、1 つのサブフィールドが検索キーまたはソート・キーとして識別された配列データ構造です。 配列データ構造には (*) という指標が付き、その後にキー・サブフィールドの指定が続きます。 例えば、配列データ構造 FAMILIES にスカラー・サブフィールド NAME と配列サブフィールド CHILDREN があるとします。 NAME をキーとする配列データ構造として FAMILIES データ構造を使用するには、FAMILIES(*).NAME と指定します。 CHILDREN の最初の要素をキーとして使用するには、FAMILIES(*).CHILDREN(1) と指定します。
注:
- キーワード DIM は QUALIFIED として定義されるデータ構造に使用できます。
- キーワード DIM をデータ構造または LIKEDS サブフィールドにコーディングする場合、配列キーワード CTDATA、FROMFILE、および TOFILE は使用できません。
さらに、次のデータ構造キーワードは配列データ構造では使用できません。
- DTAARA
- OCCURS
- LIKEDS(Y) を使用して定義されているデータ構造 X の場合、データ構造 Y がキーワード DIM で定義されると、データ構造 X は 配列データ構造として定義されません。
- X が配列データ構造 DS のサブフィールドである場合、修飾名で X が参照されるときには、配列指標を指定する必要があります。 さらに、配列指標は、キー付き配列データ構造のコンテキスト内を除いて、* でない場合があります。 完全修飾名の式においては、配列指標は一番右の名前についてのみ省略 (または * を指定) することができます。
- 配列データ構造は、SORTA (配列の分類) 命令コードを使用してソートできます。 配列は、サブフィールドの 1 つをキーとして使用してソートされます。
- 配列データ構造は、 %LOOKUP 組み込み関数を使用して検索できます。 配列は、サブフィールドの 1 つをキーとして使用して検索されます。
- 以下に、無効なキー付き配列データ構造式を使用したステートメントの例をいくつか示します。
TEAMS という配列データ構造があり、スカラー・サブフィールド MANAGER とデータ構造サブフィールド EMPS が含まれているとします。
- TEAMS は配列データ構造であるため、以下のステートメントは無効です。
非配列キー・サブフィールドが指定されなければなりません。
SORTA TEAMS; SORTA TEAMS(*); - TEAMS(1).EMPS は配列データ構造であるため、以下のステートメントは無効です。
非配列キー・サブフィールドが指定されなければなりません。
SORTA TEAMS(1).EMPS; SORTA TEAMS(1).EMPS(*); - TEAMS(*).EMPS(*) では、2 つの異なるソート対象配列が指定されているため、このステートメントは無効です。
(*) は 1 つしか指定できません。
SORTA TEAMS(*).EMPS(*).NAME; - 修飾名のすべての配列に指標が必要なため、以下のステートメントは無効です。
TEAMS と EMPS の両方のサブフィールドに指標が必要です。
一方には、(*) という指標が付いていなければなりません。
SORTA TEAMS(*).EMPS.NAME; SORTA TEAMS.EMPS(*).NAME; - 少なくとも 1 つの配列に (*) という指標が付かなければならないため、以下のステートメントは無効です。
TEAMS(1).EMPS(1).NAME はスカラー値です。
SORTA TEAMS(1).EMPS(1).NAME;
- TEAMS は配列データ構造であるため、以下のステートメントは無効です。
非配列キー・サブフィールドが指定されなければなりません。
以下の資料も参照してください。