事前処理を行わずに 1 つの入力ファイル (MERGE の場合は複数のファイル) からレコードを読み取るには、SORT . . . USING または MERGE . . . USING および SELECT 文節で宣言された入力ファイル (1 つまたは複数) の名前を使用してください。
ソート済みまたはマージ済みレコードを、これ以上処理せずに、ソート・プログラムまたはマージ・プログラムから別のファイルへ転送するには、SORT . . . GIVING または MERGE . . . GIVING、および SELECT 文節で宣言された出力ファイルの名前を使用してください。以下に、その例を示します。
SORT Sort-Work-1
ON ASCENDING KEY Sort-Key-1
USING Input-File
GIVING Output-File.
SORT . . . USING または MERGE . . . USING の場合、コンパイラーは、ファイルをオープンし、レコードを読み取り、レコードをソートまたはマージ・プログラムに解放し、そしてファイルをクローズするための入力プロシージャーを生成します。SORT または MERGE ステートメントが実行を開始するとき、ファイルがオープンされていてはなりません。SORT . . . GIVING または MERGE . . . GIVING の場合、コンパイラーは、ファイルをオープンし、レコードを戻し、レコードを書き込み、そしてファイルをクローズするための出力プロシージャーを生成します。SORT または MERGE ステートメントが実行を開始するとき、ファイルがオープンしていてはなりません。
例: SORT 用のソート・ファイルおよびの入力ファイルの記述
ソート・レコードがソートされる前に、それらのレコードに対して入力プロシージャーが実行されるようにしたい場合は、SORT . . . INPUT PROCEDURE を使用してください。 ソート済みレコードに対して出力プロシージャーが実行されるようにしたい場合は、 SORT . . .OUTPUT PROCEDURE を使用してください。以下に、その例を示します。
SORT Sort-Work-1
ON ASCENDING KEY Sort-Key-1
INPUT PROCEDURE EditInputRecords
OUTPUT PROCEDURE FormatData.
制約事項: MERGE ステートメントで入力プロシージャーを使用することはできません。マージ操作への入力ソースは、すでにソート済みのファイルの集合でなければなりません。 しかし、マージ済みレコードに対して出力プロシージャーが実行されるようにしたい場合は、MERGE . . . OUTPUT PROCEDURE を使用してください。以下に、その例を示します。
MERGE Merge-Work
ON ASCENDING KEY Merge-Key
USING Input-File-1 Input-File-2 Input-File-3
OUTPUT PROCEDURE ProcessOutput.
FILE SECTION で、Merge-Work は SD 記入項目に定義しなければならず、入力ファイルは FD 記入項目に定義しなければなりません。
関連参照
SORT ステートメント
(「COBOL for Windows 言語解説書」)
MERGE ステートメント
(「COBOL for Windows 言語解説書」)