COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド

COBOL(コボル)言語で頻繁に活用される繰り返し処理のパターンとは

基礎-繰り返し処理パターン-イメージ

COBOL(コボル)言語の繰り返し処理とは?

COBOL(コボル)言語を始め、様々な業務プログラムで、処理を一定回数繰り返す繰り返し処理は頻繁に登場します。例えばファイルに存在する複数レコードに対して同じ演算処理を行い、結果を出力するという場合、繰り返し処理は大変有効です。

ここでは、まずCOBOL(コボル)言語での繰り返し処理の基本的な書き方についてご紹介しますので、しっかりその書き方及び使用方法について理解していきましょう。

書き方:

PERFORM データ項目 TIMES

繰り返す処理

END-PERFORM.

使用例:

基礎-繰り返し処理パターン-使用例

使用例は、WK-KAISUというデータ項目に繰り返す回数を指定し、その回数分WK-SUJI(初期値0)に1を加算し、結果を画面表示するというプログラムです。この使用例のように、繰り返し処理を活用すると、処理回数分同じ演算式を記述する事なく、プログラムが作成できる事が理解いただけるかと思います。

実行結果:

基礎-繰り返し処理パターン-実行結果

COBOL(コボル)言語の繰り返し処理のパターン

COBOL(コボル)言語の基本的な書き方が理解いただけたところで、次はCOBOL(コボル)言語に用意されている繰り返し処理のパターンについてご紹介します。

COBOL(コボル)言語の繰り返し処理は大きく分けて、繰り返す回数が決まっているもの、繰り返す回数が決まっていないものの2つのパターンに分けられます。回数が決まった繰り返し処理は先程ご紹介しましたので、ここでは回数が決まっていない繰り返し処理のパターンについてご紹介します。回数が決まっていない繰り返し処理は、ある条件に合致するまで処理を繰り返す事になりますが、主に3つの書き方が存在します。

書き方1:処理の最初に条件判断を行うもの(前判定)

PERFORM WITH TEST BEFORE UNTIL 条件式

繰り返す処理

END-PERFORM.

使用例1:

基礎-繰り返し処理パターン-使用例1

この繰り返し処理のパターンは、条件によっては「繰り返す処理」を一度も処理しないという特徴があります。

実行結果1:

基礎-繰り返し処理パターン-実行結果1

書き方2:処理の最後に条件判断を行うもの(後判定)

PERFORM WITH TEST AFTER UNTIL 条件式

繰り返す処理

END-PERFORM.

使用例2:

基礎-繰り返し処理パターン-使用例2

この繰り返し処理のパターンは、条件によらず必ず1回は「繰り返す処理」が行われるという特徴があります。前判定の繰り返し処理と比較して、実行結果が変わる事が理解いただけるかと思います。

実行結果2:

基礎-繰り返し処理パターン-実行結果2

書き方3:データ項目を規則的に変化させながら繰り返し処理を行うもの

PERFORM VARYING データ項目 FROM データ項目の初期値 BY 変化させる値

UNTIL 条件式

繰り返す処理

END-PERFORM.

使用例3:

基礎-繰り返し処理パターン-使用例3

この繰り返し処理のパターンは、繰り返し処理の条件にあたるデータ項目を規則的に変化させる事ができるため、処理の記述を単純化できる特徴があります。今までの使用例で記述していたADD文の記述が無くなっている事が理解いただけるかと思います。

実行結果3:

基礎-繰り返し処理パターン-実行結果3

COBOL(コボル)言語における繰り返し処理の基本事項や注意事項

  1. 繰り返し処理「PERFORM データ項目 TIMES」等の間の空白や改行は、自由に設定できます。
  2. 前判定の繰り返し処理「PERFORM WITH TEST BEFORE UNTIL 条件式」の「WITH TEST BEFORE」部分は、省略する事ができます。
  3. 後判定の繰り返し処理「PERFORM WITH TEST AFTER UNTIL 条件式」の「WITH TEST AFTER」部分は、省略する事ができません。
  4. 「PERFORM VARYING データ項目 FROM データ項目の初期値 BY 変化させる値」の「変化させる値」には、負の数字も記述する事ができます。

繰り返し処理を使ったCOBOL(コボル)プログラムの活用法

COBOL(コボル)言語の繰り返し処理の基本的な書き方や使用例について理解いただけたでしょうか?最後に活用法として繰り返し処理の中で繰り返し処理を行う多重反復についてご紹介します。今までご紹介した書き方のパターンを組み合わせる事で処理が実現できますので、ここまでの内容を理解いただけていれば、それ程難しい内容ではないでしょう。

サンプルプログラム:

  1. IDENTIFICATION DIVISION.
  2. PROGRAM-ID. LOOP_SAMPLE05.
  3. ENVIRONMENT DIVISION.
  4. DATA DIVISION.
  5. WORKING-STORAGE SECTION.
  6. 01 WK-SUJI PIC 99 VALUE ZERO.
  7. 01 WK-SUJI-TTL PIC 999 VALUE ZERO.
  8. PROCEDURE DIVISION.
  9. *> 条件付繰り返し処理
  10. PERFORM 10 TIMES
  11. *> 繰り返し処理の中の繰り返し処理
  12. PERFORM VARYING WK-SUJI FROM 1 BY 1
  13. UNTIL WK-SUJI > 10
  14. ADD 1 TO WK-SUJI-TTL
  15. END-PERFORM
  16.  
  17. DISPLAY WK-SUJI-TTL
  18. END-PERFORM.
  19.  
  20. STOP RUN.
  21. END PROGRAM LOOP_SAMPLE05.

実行結果:

基礎-繰り返し処理パターン-実行結果

いかがでしたでしょうか?決まった処理を何度も正確に処理できるのがプログラムの特徴です。特にこのプログラムの特徴を象徴するような処理が、今回ご紹介した繰り返し処理になりますので、同じような処理を記述する場合には、今回ご紹介した繰り返し処理が使えないか一度は考えるようにしてみましょう。ただし、多重反復については階層が深くなるとプログラムが読み難くなりますので、読みやすさも加味したプログラムになるよう心がけましょう。

この記事を読んだ人は、こちらの記事も読んでいます

あなたのCOBOL技術を活かしませんか?

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

|  基礎  |  応用  |  勉強  |  試験 |  辞書  |

取引企業様 募集中
COBOL技術者 募集
COBOL魂
COBOL入門