Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


RECORDING MODE 節

RECORDING MODE 節は、QSAM ファイル内の物理レコードのフォーマットを指定します。VSAM ファイルではこの節は無視されます。

RECORDING MODE で使用できる値は次のとおりです。

レコード・モード F (固定長)
ファイル内のレコードはすべて同一の長さで、 それぞれのレコードは 1 つのブロック内に完全に含まれています。 ブロックには複数のレコードを含めることが可能であり、 多くの場合、1 ブロックのレコード数は一定しています。 このモードには、 レコード長フィールドやブロック記述子フィールドはありません。
レコード・モード V (可変長)
レコードは固定長または可変長であり、 各レコードは 1 つのブロック内に完全に含まれなければなりません。 ブロックには複数のレコードを含めることができます。 各データ・レコードにはレコード長フィールドが含まれており、 各ブロックにはブロック記述子フィールドが含まれています。 これらのフィールドは、データ部には記述されません。これらのフィールドの長さはそれぞれ 4 バイトであり、 それは自動的に用意されます。 これらのフィールドを利用することはできません。
レコード・モード U (固定長または可変長)
レコードは固定長か可変長のいずれかです。 しかし、各ブロックのレコードは 1 つだけです。 レコード長フィールドやブロック記述子フィールドはありません。

RECORDING MODE U は、 BLOCK CONTAINS 節を使用している場合には使用できません。

レコード・モード S (スパン)
レコードは、可変長または固定長のどちらかであり、 1 ブロックより大きい場合も可能です。 1 つのレコードが 1 ブロック内の残りのスペースよりも大きい場合、 そのブロックの残りのスペースを埋める分だけ、 そのレコードの一部が書き込まれます。 レコードの残りの部分は次のブロックに保管されます (必要なら次の複数のブロックにわたって保管されます)。 利用できるのは完全なレコードだけです。 あるブロックの中のレコードの各セグメントには、 それがそのレコード全体であるとしても、セグメント記述子フィールドが含まれ、 各ブロックにはブロック記述子フィールドが含まれます。 これらのフィールドはデータ部には記述されていません。それは自動的に用意されます。 これらのフィールドを利用することはできません。

レコード・モード S を使用する場合は、 BLOCK CONTAINS CHARACTERS 節が指定されていなければなりません。 レコード・モード S は、ASCII ファイルでは使用することができません。

QSAM ファイルで RECORDING MODE 節を指定しない場合、Enterprise COBOL コンパイラーがレコード・モードを次のように決定します。

F
そのファイルに関連付けられたレベル 01 の最大のレコードが、 BLOCK CONTAINS 節の中に指定されたブロック・サイズ以下である場合、 コンパイラーはレコード・モードを F にします。 この場合、次のいずれかのようにします。
  • RECORD CONTAINS integer 節を使用します。(詳細については、「Enterprise COBOL コンパイラーおよび実行時プログラム 移行ガイド」を参照してください。)
  • RECORD 節を省き、 そのファイルに関連したすべてのレベル 01 のレコードが同じサイズであり、 OCCURS DEPENDING ON 節の指定されたレコードがないことを確認します。
V
そのファイルに関連付けられたレベル 01 の最大のレコードが、 BLOCK CONTAINS 節の中に指定されたブロック・サイズよりも大きくない場合、 コンパイラーはレコード・モードを V にします。 この場合、次のいずれかのようにします。
  • RECORD IS VARYING 節を使用します。
  • RECORD 節を省き、そのファイルに関連したすべてのレベル 01 のレコードが同じサイズではなく、OCCURS DEPENDING ON 節の指定されたレコードがあることを確認します。
  • ファイルに関連したレベル 01 レコードの最小の長さを整数-1 に、最大の長さを整数-2 に指定して、RECORD CONTAINS 整数-1 TO 整数-2 節を使用します。 これら 2 つの整数の値は違う値であり、 異なる長さのレコードまたは OCCURS DEPENDING ON 節の指定されたレコードのどちらかの 最小値と最大値に一致した値でなければなりません。
S
最大のブロック・サイズが最大のレコード・サイズより小さい場合、 コンパイラーはレコード・モードを S にします。
U
レコード・モード U は、デフォルトでは決して指定されません。 RECORDING MODE U 節は、モード U の記録を取得するように 明示的に指定しなければなりません。

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)