レコードのブロック化および非ブロック化
- ファイルがプログラム記述であるか、あるいは外部記述の場合には、1 つだ けのレコード様式をもっている。
- ファイル仕様書にキーワード RECNO が使用されていない。
注: RECNO を使う場合、ILE RPG コンパイラーはレコードのブロック化を許可しません。ただし、ファイルが入力ファイルで RECNO が使われると、高速順次アクセスが設定される場合、 データ管理は依然、レコードをブロック化することがあります。 この場合、更新された レコードは直ちには見られなくなります。
- 次の 1 つが真である。
- ファイルが出力ファイルである。
- ファイルが入出力共用ファイルの場合には、配列または テーブル・ファイルである。
- ファイルが入力専用ファイルである。これは、レコード・アドレス・ファイルでないか、 またはレコード・アドレス・ファイルによって処理されないということです。OPEN、CLOSE FEOD、 および READ ファイル命令だけを使用します (換言すると、ファイル命令の READE、READPE、SETGT、 SETLL、および CHAIN は許可されません)。
RPG コンパイラーは、 上記の条件を満たすすべての SEQ または DISK ファイルのレコードをブロック化および非ブロック化するための、 オブジェクト・プログラム・コードを生成します。 特定の IBM® i システム制約事項により、ブロック化および非ブロック化が妨げられることがあります。 その場合には、パフォーマンスは改良されません。
ファイルのファイル仕様書にキーワード BLOCK(*YES) を指定することによって レコードのブロック化を明示的に要求することができます。デフォルトのレコードのブロック化と ユーザーが要求したレコードのブロック化との相違点は、入力ファイルに BLOCK(*YES) が指定されている時には、入力ファイルで命令 SETLL、 SETGT、および CHAIN を使用することができ (上記の 3.c に示されている条件を参照)、ブロック化が行われる ことです。BLOCK キーワードが指定されておらず、これらの命令を使用した場合には、 レコードのブロック化は行われません。
また、ファイル仕様書にキーワード BLOCK(*NO) を指定することによって デフォルトのレコードのブロック化を 防止することができます。 BLOCK(*NO) を指定した場合には、コンパイラーによっても、データ管理によっ てもレコードのブロック化は行われません。キーワード BLOCK が指定されていない場合には、 デフォルトのブロック化が 上で説明したとおり行われます。
ファイル情報データ構造の入出力および装置固有のフィードバックは、 レコードが RPG コンパイラーによってブロック化および非ブロック化されるファイル の各読み取りまたは書き出し後に (ブロック読み取りでの RRN およびキー情報を除く)、 更新されません。 フィードバック域は、レコード・ブロックが転送されるたびに更新されま す。 (ファイル情報データ構造の詳細については、「IBM Rational® Development Studio for i: ILE RPG 解説書」を参照してください。)
- ファイル仕様書に BLOCK(*NO) を指定します。
- 実行時に、SEQONLY(*NO) を指定した CL コマンド OVRDBF (データベース・ファイル一時変更) を使用します。