LoginSignup
1
0

COBOLに入門してみた・・・

Posted at

レガシーなCOBOLから別言語に移行したい。
COBOLを読むために最低限のCOBOL知識が必要というのが学習のモチベーション。

COBOLの構成

以下4部で構成。

  • 見出し部(IDENTIFICATION DIVISION)
    • プログラム名、作成者名、作成日などが書かれる
  • 環境部(ENVIRONMENT DIVISION)
    • 環境変数、ファイルなどが書かれる
  • データ部(DATA DIVISION)
    • 変数定義、ファイルレイアウトなどが書かれる
  • 手続き部(PROCEDURE DIVISION)
    • 処理が書かれる

命令文

  • DISPLAY
    • 表示内容をコンソールに出力する
  • ACCEPT
    • キーボードからの入力を受け取る
  • IF~THEN
    • 条件分岐
  • EVALUATE
    • 条件分岐(switch文のような)
  • PERFORM UNTIL
    • 繰り返し
  • PERFORM VARYING UNTIL
    • 繰り返し(VARYINGにより、カウンタが自動的にカウントアップ)
  • PERFORM TIMES
    • 繰り返し(固定回数の繰り返し)

データ定義

以下のように定義する。

レベル番号 変数名 PIC 型(桁数)
例:01 I PIC 9(3).

聞きなれないレベル番号は、階層を表す。
集団項目をみるとイメージがつく。

01 EMP.
    03 NMB PIC 9(5).
    03 NAME PIC X(40).

データ型

  • 数値
    • 9:数字。例えば、9(5)と書くと、数字5桁という意味になる。
    • S:符号。例えば、S9(2)と書くと、負数を扱える数字2桁という意味になる。
    • V:小数点の位置。例えば、9(5)V9(2)と書くと、整数部5桁小数部2桁という意味になる。
       
  • 英数字
    • X:任意の文字(英字、数字、空白含む)。例えば、X(40)と書くと、任意の文字40桁という意味になる。
       
  • 書式編集
    • Z:指定桁数に満たない場合、空白に置換え。例えば、Z(3)のように書く。
    • ,:カンマが挿入される文字位置。例えば、9(5),9(2)のように書くと、数字5桁,数字2桁という意味になる。

コード例

COBOLでFizzbuzzのコード例。

IDENTIFICATION DIVISION.
PROGRAM-ID. FIZZBUZZ.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 I PIC 9(3).
01 FIZZ PIC 9(1).
01 BUZZ PIC 9(1).
PROCEDURE DIVISION.
   PERFORM VARYING I FROM 1 BY 1 UNTIL I > 100
   
       COMPUTE FIZZ = FUNCTION MOD(I 3)
       COMPUTE BUZZ = FUNCTION MOD(I 5)
   
       IF FIZZ = 0 AND BUZZ = 0
           DISPLAY "FizzBuzz"
       ELSE IF FIZZ = 0
           DISPLAY "Fizz"
       ELSE IF BUZZ = 0
           DISPLAY "Buzz"
       ELSE
           DISPLAY I
       END-IF
   END-PERFORM
   STOP RUN.
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0