BLOCK(*YES |*NO)

BLOCK キーワードは、ファイルと関連したレコードのブロック化を制御します。 このキーワードが有効なのは、DISK または SEQ ファイルの場合だけです。

このキーワードを指定しない場合、以下の条件を満たしていれば、RPG コンパイラー は入力レコードを非ブロック化し、出力レコードをブロック化 して、SEQ または DISK ファイルの実行時パフォーマンスを改善します。
  1. ファイルはプログラム記述であるか、または 1 つのレコード様式だけを含む 外部記述である。
  2. ファイル仕様書でキーワード RECNO が使用されていない。
    注: RECNO を使用した場合、ILE RPG コンパイラーはレコードのブロック化を許可しません。ただし、ファイルが入力ファイルの場合には、RECNO を使用しても、高速順次アクセスが 設定されていれば、データ管理機能は依然としてレコードをブロック化することがあります。 これは、更新レコードがただちに検出されない可能性があることを意味します。
  3. 次の 1 つが真である。
    1. ファイルは出力ファイルである。
    2. ファイルが入出力共用ファイルである場合には、それが配列またはテーブル ・ファイルである。
    3. ファイルが入力専用ファイルである場合には、それがレコード・アドレス・ ファイルでないかまたはレコード・アドレス・ファイルによって処理されるもの ではなく、ファイルで READE、READPE、SETGT、SETLL、および CHAIN 命令が使用されていない。(READE または READPE 命令が 使用されている場合には、入力ファイルのレコードのブロック化は行われません。SETGT、SETLL、または CHAIN 命令が使用されている場合、BLOCK(*YES) キーワードが 指定されていなければ、入力ファイルのレコードのブロック化は行われません。)

BLOCK(*YES) が指定されている場合、レコードのブロック化は上記のように 行われます。ただし、入力ファイルで SETLL、SETGT、および CHAIN 命令を使用 することができ、なおかつ、ブロック化が依然として行われます (上記の 3c を参照)。 レコードのブロック化を防ぐために、BLOCK(*NO) を指定することができます。 そうすれば、レコードのブロック化はコンパイラーによって行われません。