COBOL言語の「RETURN文」と整列用ファイルの関係とは? | 用語辞典
COBOL(コボル)言語の予約語RETURNを使った命令文の書き方とは
COBOL(コボル)言語のRETURN文とは?
COBOL(コボル)におけるRETURN文は、ファイルの内容をソートするときに使用する、整列併合用ファイル(ソート処理用ファイル)の内容を読み込むときに使用する命令文です。
本記事では、RETURN文の基本的な使い方やルール、注意点などをご紹介します。
なお、RETURN文はSORT文に付随した命令文のため、SORT文の基本的な理解が必須となります。
SORT文については「COBOL言語の「SORT文」を活用してファイル整理をしよう!|用語辞典」で詳しく解説しています。
また、RETURN文はRELEASE文とセットで使用されるため、(RETURN文のみの単独使用は不可)RELEASE文の基本的な理解も必要です。
RELEASE文については「COBOL言語の「RELEASE文」と整列用ファイルの関係とは?|用語辞典」で詳しく解説しています。
RETURN文は、SORT文でソート実行時に使用する作業領域である並列併合用ファイルに、ソートした対象のレコードをRELEASE文で書き込んだあとに、並列併合用ファイルを読み込むために使用します。
並列併合用ファイルは、ソート実行時のみ使用される一時ファイルのため、通常のファイルのようにREAD文で読み込むことはできません。
書き方1-1:(RETURN文使用時のSORT文の設定)
SORT文でRELEASE文及びRETURN文を使用する場合は、INPUT PROCEDURE(入力手続き)とOUTPUT PROCEDURE(出力手続き)をそれぞれ指定する必要があります。
SORT [ソート作業領域項目]
[ASCENDING(昇順)又はDESCENDING(降順)] KEY [ソートキー項目]
INPUT PROCEDURE [サブルーチン名]
OUTPUT PROCEDURE [サブルーチン名].
書き方1-2:(RETRUN文の設定)
ソート前に整列併合用ファイルのレコードを読み込むときに指定します。
RETURN 並列併合用ファイル名
AT END
読み込み終了時の処理
NOT AT END
読み込み実行時の処理
END-RETURN.
RETURN文は、通常のファイル読み込み時に使用するREAD文と同様の書式となります。
並列併合用ファイルのオープン処理は、SORT文で自動的に実施されます。
書き方1-1、1-2を踏まえて、実際にソート対象ファイルの内容をRETURN文を使用して、整列併合用ファイルを読み込むサンプルを以下に紹介します。
ソート対象ファイルは事前に用意しておきます。 ここでは、行順編成のフラット形式で以下のようにレコードを記述します。
test.txt-------------------
11111AAAaaaaa
22222BBBbbbbb
11111BBBbbbbb
44444DDDddddd
11111DDDddddd
11111CCCccccc
33333CCCccccc
----------------------------
使用例:(1/2)
使用例:(2/2)
実行結果:
紹介したサンプルでは、SORT文でソートを行う前に実行するサブルーチンを指定しています。
サブルーチンのRELEASE-PROCとRELEASE-MAIN-PROCでソート用ファイルのオープン及びRELEASE文で並列併合用ファイルの書き込み処理を行っています。
続けてOUTPUTでRETURN文の処理をするために、サブルーチンRETURN-PROCを呼び出し、書き込みファイルのオープンとPERFORM文でサブルーチンRETURN-MAIN-PROCを呼び出しています。
RETURN-MAIN-PROCではRETURN文を使用して、並列併合用ファイルを読み込み、ソート結果を結果出力用ファイルに書き込んでいます。
実行結果のとおり、並列併合用ファイルをRETURN文で読み込んだときは、SORT文によるソート処理が実行されているため、昇順でソートされていることがわかります。
RETURN文のCOBOL(コボル)言語における基本事項やルールについて
- RETURN文と出力レコードの間の空白は自由に設定できます。
- RETURN文はAT END(読み込み終了時の処理)、NOT AT END(読み込み時の処理)の処理は必要に応じて記述します。どちらか片方、または両方省略してもかまいません。
- RETURN文を実行すると、整列併合用ファイルに書き込まれたレコードが読み込まれます。
- SORT文のINPUT PROCEDUREには、整列併合用ファイルへデータの引渡しを行うサブルーチンを指定します。基本的にはRELEASE文のメイン処理を記述します。
- SORT文のOUTPUT PROCEDUREには、ソート実施後に実行するサブルーチンを指定します。このサブルーチンでは、整列併合用ファイルを使用してのRETURN文の処理を行うのが基本です。
COBOL(コボル)言語のRETURN文を扱う上での注意点
- 整列併合用ファイルは、COBOLプログラムがソートで一時的に入出力を行うファイルのため、ファイルの実体はありません。
- RETURN文では必ずSD句で指定した並列併合用ファイルを指定しなければいけません。誤って通常のファイルを指定した場合は、以下のようにコンパイルエラーとなります。
RETURNE文を使ったCOBOL(コボル)プログラムの活用法
以下にソートキーが11111の場合のみ、RELEASE文で並列併合用ファイルに書き込んでSORT文を実行し、RETRUN文でSORT文実行時に指定されたソートキーのみをソートする、簡単なサンプルを紹介します。
- IDENTIFICATION DIVISION.
- PROGRAM-ID. RETURN_SAMPLE02.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT TEST-FILE ASSIGN TO 'test.txt' *>ソート対象ファイル
- ORGANIZATION IS LINE SEQUENTIAL
- STATUS IS IN-FIlE-STATUS.
- SELECT KEKKA-FILE ASSIGN TO 'kekka.txt' *>結果出力用ファイル
- ORGANIZATION IS LINE SEQUENTIAL.
- SELECT SORT-FILE ASSIGN TO 'sort.wrk'. *>作業領域
- DATA DIVISION.
- FILE SECTION.
- FD TEST-FILE.
- 01 TEST-RECORD.
- 05 NO-CORD PIC 9(5).
- 05 DATA-1 PIC X(3).
- 05 DATA-2 PIC X(5).
- FD KEKKA-FILE.
- 01 KEKKA-RECORD.
- 05 KEKKA-KEY1 PIC 9(5).
- 05 KEKKA-KEY2 PIC X(3).
- 05 KEKKA-DATA PIC X(5).
- SD SORT-FILE.
- 01 SORT-RECORD.
- 05 SORT-KEY1 PIC 9(5).
- 05 SORT-KEY2 PIC X(3).
- 05 SORT-DATA PIC X(5).
- WORKING-STORAGE SECTION.
- 01 IN-FILE-STATUS PIC XX.
- 01 KEY-NUM PIC 9(5) VALUE 11111.
- 77 CST-END PIC X(4) VALUE "END ".
- 01 WRK-FLAGS.
- 03 WRK-RELEASE-END PIC X(4).
- 03 WRK-RETURN-END PIC X(4).
- PROCEDURE DIVISION.
- SORT SORT-FILE
- ASCENDING KEY SORT-KEY2
- INPUT PROCEDURE RELEASE-PROC
- OUTPUT PROCEDURE RETURN-PROC.
- DISPLAY "プログラム終了"
- STOP RUN.
- *>*******ソート対象ファイルの読み込み*******
- RELEASE-PROC SECTION.
- OPEN INPUT TEST-FILE.
- PERFORM RELEASE-MAIN-PROC
- UNTIL WRK-RELEASE-END = CST-END.
- CLOSE TEST-FILE.
- EXIT.
- *>********RELEASE文の処理*******
- RELEASE-MAIN-PROC SECTION.
- IF IN-FILE-STATUS = "00"
- THEN
- CONTINUE
- ELSE
- STOP RUN
- END-IF.
- READ TEST-FILE
- AT END
- MOVE "END" TO WRK-RELEASE-END
- NOT AT END
- MOVE TEST-RECORD TO SORT-RECORD
- *>SORT-KEY1が11111の場合のみレコードを書き込む
- IF SORT-KEY1 = KEY-NUM
- RELEASE SORT-RECORD
- DISPLAY "RELEASE文: "SORT-KEY1","SORT-KEY2","SORT-DATA
- END-IF
- END-READ
- EXIT.
- *>*******結果出力用ファイルの読み込み*******
- RETURN-PROC SECTION.
- OPEN OUTPUT KEKKA-FILE.
- PERFORM RETURN-MAIN-PROC
- UNTIL WRK-RETURN-END = CST-END.
- CLOSE KEKKA-FILE.
- EXIT.
- *>********RETURN文の処理*******
- RETURN-MAIN-PROC SECTION.
- RETURN SORT-FILE
- AT END
- MOVE "END" TO WRK-RETURN-END
- NOT AT END
- DISPLAY "RETURN文: "SORT-KEY1","SORT-KEY2","SORT-DATA
- MOVE SORT-KEY1 TO KEKKA-KEY1
- MOVE SORT-KEY2 TO KEKKA-KEY2
- MOVE SORT-DATA TO KEKKA-DATA
- WRITE KEKKA-RECORD
- END-RETURN.
- EXIT.
実行結果:
紹介したサンプルの基本処理は、使用例で紹介したサンプルと基本的に同じですが、SORT文実行時のキーをSORT-KEY2のアルファベットの文字列で指定しています。
また、RELEASE文の実行時は、SORT-KEY1の値が数値の11111だったら、並列併合用ファイルに書き込むようにしています。
RELEASE文実行後はSORT文によるソート処理が行われ、RETURN文で並列併合用ファイルのレコードを1つずつ読み込んで、結果出力用ファイルに書き込んでいます。
実行結果のとおり、RETRUN文実行時の並列併合用ファイルには、SORT-KEY1の11111のみ書き込まれ、SORT-KEY2で指定したアルファベット3文字が昇順でソートされています。
結果出力用ファイルのkekka.txtには、RETURN文実行時の内容がそのままWRITE文で書き込まれています。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典