Newer
Older
langhist-study / cob-src / cobol.md
@HIROSE Yuuji HIROSE Yuuji on 2 Dec 2019 2 KB add cobol.md

COBOL

歴史

  • 1960年アメリカ

4つの部

  • IDENTIFICATION DIVISION
    プログラム全体の見出し

  • ENVIRONMENT DIVISION
    データベースへのアクセスのための記述など (DB名とテーブル名)

  • DATA DIVISION
    データの型、変数宣言など

  • PROCEDURE DIVISION
    処理する内容

ファイル、レコード、項目

  • ファイル
    レコードの集合
  • レコード 1件分のデータ
  • 項目
    基本項目と集団項目 「20191120」→「2019」年「11」月「20」日

コーディング

  • 1〜6桁目
    一連番号
  • 7桁目
    標識領域
    * アスタリスク=コメント
    * スラッシュは改ページ
    * ハイフンは継続行(通常使用しない)
  • 8から11桁目 = A領域
    部、節、段落、FD項、01レベルのレベル番号を記述する場合
    FD項=ファイルを使用する場合の宣言など
  • 12〜72桁目 = B領域
    固定形式と可変形式によって違う
    可変形式は(富士通の場合)223桁
  • 行内コメントは *> で書く

利用できる語

文字の組 - 文字列 - 予約語
                    利用者語
                    定数 (数字定数/文字定数/表意定数)
           分離符   利用者語

予約語= MOVE, WRITE, SECTION, DIVISION, ... 利用者語=プログラマが自由に定義できる

  • プログラム名
  • ファイル名
  • ファイル識別名
  • レコード名
  • データ項目名
  • 節名
MOVE ZERO TO WORK-AREA        (数値としてのゼロクリア)
MOVE SPACE TO WORK-AREA        (文字列としての空白)
INITIALIZE WORK-AREA        (型に応じたクリア)

予約語

データ部

PICTURE
01        9が数字
    999V999
    X(5) 文字列5桁
    N(8) 日本語の桁数
  • OCCURS
    その回数くり返す(配列のようにまとめて確保) 01 WORK-YOJI-DATA OCCURS 10. 02 HYOJI-ID PIC 99. 02 HYOJI-DATE PIC 99(8). 02 HYOJI-NAIYO PIC X(20).

手続部

MOVE a TO b.
READ URIAGE-F.
MOVE URIAGE-TOKUI TO GOKEI-TOKUI.


COMPUTE var = exp.

DISPLAY value " and " 123
PERFORM
    PERFORM SUBROUTINE 10 TIMES.
    PERFORM SUBROUTINE UNTIL VAR >= 10.
    PERFORM SUBROUTINE.
    SUBROUTINE.
       処理.
       処理.
    NEXTROUTINE.

PERFORMにWHILEはない
PERFORM VARYING
    PERFORM VARYING FROM 1 BY 1 UNTIL WORK-COUNTER > 10
       処理
    END-PERFORM.

ADD 1 TO VAR
SUBTRACT 1 TO VAR

DIVIDE 除数 INTO HOGE-A GIVING HOGE-AMARI.
被除数の変数は必ず破壊される

NOT =
NOT EQUAL

IF文

IF HOGE-AMARI = 1 THEN
  DISPLAY 'KISU'
ELSE
  DISPLAY 'GUSU'
END-IF.

EVALUATE

MOVE 60 TO HOGE-A.
EVALUATE HOGE-A
WHEN 0 THRU 50
  処理
WHEN 50 THRU 100
WHEN OTHER
  処理
END-EVALUATE.

Hello, world