LIKEREC(内部レコード名{:*ALL|*INPUT|*OUTPUT|*KEY|*NULL})
LIKEREC キーワードは、データ構造、データ構造サブフィールド、プロトタイプされた戻り値、またはプロトタイプ・パラメーターを、レコード
と同様に定義するために使用します。
データ構造のサブフィールドは、レコードのフィールドと同じになります。
LIKEREC
は、2 番目の任意指定パラメーターを使用できます。このパラメーターはレコードのどのフィールドをデータ構造に入れるかを指定します。 これには以下のものが含まれます。
- *ALL 外部レコードのすべてのフィールドが抜き出されます。
- *INPUT すべての入力可能フィールドが抜き出されます。 (これはデフォルトです。)
- *OUTPUT すべての出力可能フィールドが抜き出されます。
- *KEY キー・フィールドが、キーが DDS の K 指定に定義されている順番に抜き出されます。
ファイル内のフィールドと同じデータ・タイプを持つサブフィールドを定義するのではなく、それらのサブフィールドがすべて標識であることを示すために、*NULL を指定することもできます。
データベース・ファイルの場合、これらの標識のレイアウトは、レコードのヌル・バイト・マップと同じです。
LIKEREC キーワードの使用時には、次の点を考慮する必要があります。
- キーワード LIKEREC の最初のパラメーターはプログラム内のレコード名です。 レコード名の名前が変更された場合、これはレコードの内部名になります。
LIKEREC の残りの抜き出しタイプパラメーターは、システム上のファイルの関連レコードの定義と一致しなければなりません。
*INPUT は、入力可能レコードおよび更新可能
レコードにのみ使用できます。*OUTPUT は、出力可能レコードにのみ使用できます。*ALL はどのレコード・タイプにも使用できます。
*KEY はキー付きファイルにのみ使用できます。 指定されない場合は、
このパラメーターのデフォルト値 *INPUT が使用されます。ただし、DISK ファイルからのレコード名に対して抜き出しタイプ・パラメーターが指定されず、出力バッファーのレイアウトが入力バッファーのレイアウトと完全に一致するときは、WRITE 命令でデータ構造を使用できます。
- *NULL が指定されていない *INPUT および *OUTPUT の場合は、データ構造に含まれるサブフィールドは外部レコード記述内と同じ開始位置を占めます。
- ファイルの接頭部が指定された場合、指定された接頭部はサブフィールドの名前に使用されます。
*NULL が指定されると、標識はデータベース・ファイルの外部レコードのヌル・バイト・マップ内のヌル標識と同じ開始位置を占めます。
その他のタイプのファイルの場合は、標識サブフィールドの開始位置は順次に割り当てられます。
- レコード内のフィールドが入力仕様において明示的に名前変更された場合でも、 内部名ではなく、外部名 (おそらく接頭部) が使用されます。
- ALIAS キーワードを使用してファイルが定義されている場合、 別名が、データ構造のサブフィールドに使用されます。 外部記述ファイルに対する ALIAS キーワードの使用 に、ファイルが ALIAS キーワードを使用して定義され、 LIKEREC キーワードでデータ構造を定義した例が示されています。
- LIKEREC を使用して定義されたデータ構造は、QUALIFIED データ構造です。 サブフィールドの名前は、DS1.SUBF1 という新しいデータ構造名によって修飾されます。
- LIKEREC は、修飾されたデータ構造のサブフィールドに関してコーディングすることができます。 LIKEREC がデータ構造のサブフィールド定義でコーディングされる場合、 サブフィールドのデータ構造は自動的に QUALIFIED として定義されます。 LIKEREC サブフィールドのデータ構造のサブフィールドは、完全修飾形式 "ds.subf.subfa" で 参照されます。LIKEREC を使用して定義されたサブフィールドは、 それ自体がデータ構造であり、データ構造が必要な任意の場所で使用することができます。
抜き出しタイプ *NULL で定義されたデータ構造を入出力操作と一緒に使用することはできません。