COBOL記載方法まとめ　【初心者編】1

##    はじめに

  __<font color="blue">　【COBOL(Common Business Oriented Language) = コボル】</font>とは__
　　　　主にメインフレームという大型の汎用機や、
　　　一部WEB系システムで使用されているプログラム言語です。

##### このメモは、COBOLの基本的な記載方法のまとめです。

## <font color="green">①COBOLプログラムの構成</font>
#### 以下の4部（DIVISION）
      1･･･ 見出し部（IDENTIFICATION DIVISION）
           COBOLプログラムの識別情報を記載する。
      
      2･･･ 環境部  （ENVIRONMENT DIVISION）
           COBOLプログラムが動作する際の性質を記載
           
      3･･･ データ部（DATA DIVISION） 
           COBOLプログラムが使用するデータについてを記載
           
      4･･･ 手続き部（PROCEDURE DIVISION）
           COBOLプログラムの処理の内容を記載

--------------------------------------------------------------


※
以下のサンプルでは、記載しておりませんが、
COBOLでは、開始位置が先頭1文字目～6文字目を一連番号領域と言い、行の番号を記載します。

1･･･ <font color="blue">見出し部</font>（IDENTIFICATION DIVISION）
````
**********************************************************************
 IDENTIFICATION            DIVISION.
**********************************************************************
 PROGRAM-ID.            TESTPRGM.　ここにプログラム名
*
````

※
なお、節を記載する場所と節の次の段落を記載する場所も、
開始位置が先頭から8文字目～11文字目までである必要があります。

さらに、段落の内容は、開始位置が先頭から12文字目～72文字目までに記載する必要があります。

--------------------------------------------------------------

2･･･ <font color="blue">環境部</font>（ENVIRONMENT DIVISION）
#### 環境部は、さらに以下の2節（SECTION）から構成される。
           構成節    （CONFIGURATION SECTION）
           入出力節  （INPUT-OUTPUT SECTION）
````
**************************************************************************
 ENVIRONMENT            DIVISION.
**************************************************************************
*
*
 CONFIGURATION          SECTION.　　
 SOURCE-COMPUTER.       MYCOMPUTER.  ここに翻訳するコンピュータ名
 OBJECT-COMPUTER.       MYCOMPUTER.  ここに実行するコンピュータ名
 SPECIAL-NAMES.   ここは特殊名段落　（以下は使用するときの例）
     ENVIRONMENT-NAME IS ENVNAM.　環境変数へのアクセスとかの内容
*
*
 INPUT-OUTPUT          SECTION.　　
 FILE-CONTROL.　　ここはファイル管理段落
     SELECT IN-FILE ASSIGN TO "text01.txt"
         ORGANIZATION IS LINE SEQUENTIAL.
     SELECT OUT-FILE ASSIGN TO "text02.txt"
         ORGANIZATION IS SEQUENTIAL.
*
````
--------------------------------------------------------------

3･･･ <font color="blue">データ部</font>（DATA DIVISION）
#### データ部は、さらに以下の5節（SECTION）から構成される。
           ファイル節    （FILE SECTION）
           作業場所節    （WORKING-STORAGE SECTION）
           通信節    （LINKAGE SECTION）
           連絡節    （COMMUNICATION SECTION）
           レポート節  （REPORT SECTION）
````
**************************************************************************
 DATA                   DIVISION.
**************************************************************************
 FILE                SECTION.　　ここにファイルのレコードレイアウトを記述
 FD  IN-FILE.
 01  IN-FILE-R.
     03  IN-FILE-REC         PIC  X(80).
 FD  OUT-FILE.
 01  OUT-FILE-R.
     03  OUT-FILE-REC        PIC  X(80).
 WORKING-STORAGE    SECTION.　ここに静的にメモリ領域に確保する変数を記述
 01  WK-AREA.
     03  END-FLG             PIC  X(3).
     03  WK-COUNT            PIC  9(2).
 LINKAGE     SECTION.　　ここにプログラム間でデータを受け渡す際の変数を記述
 COMMUNICATION    SECTION.　　ここに画面の入出力に必要な情報を記述
 REPORT            SECTION.　　ここに帳票フォーマットを定義情報を記述
*
````
--------------------------------------------------------------

4･･･ <font color="blue">手続き部</font>（PROCEDURE DIVISION）

````
**************************************************************************
 PROCEDURE                DIVISION.
**************************************************************************
*
* 各種処理の呼び出し
*
 000-CONTTOLLER-S.
 PERFORM 100-START-S  THRU 100-START-E.
*            >開始前処理を実行する。
*
 PERFORM 200-MAIN-S   THRU 200-MAIN-E.
*            >主処理を実行する。
*
 PERFORM 300-END-S    THRU 300-END-E.
*            >終了後処理を実行する。
 STOP RUN.
 000-CONTTOLLER-S.
*
**************************************************************************
*100-開始前処理
**************************************************************************
 100-START-S.
 START-PROC             SECTION.
*
*初期化
 INITIALIZE WK-AREA.
*
*ファイルオープン
 OPEN INPUT IN-FILE.
 OPEN OUTPUT OUT-FILE.
*
 100-START-E.
*
*
**************************************************************************
*200-主処理
**************************************************************************
 200-MAIN-S.
*
*メイン処理
 PERFORM UNTIL END-FLG = "END" OR WK-COUNT > 99
     READ IN-FILE
         AT END
             MOVE "END" TO END-FLG
         NOT AT END
             MOVE IN-FILE-REC TO OUT-FILE-REC
             WRITE OUT-REC
             ADD 1 TO WK-COUNT
    END-READ
 END-PERFORM.
*
 200-MAIN-E.
*
*
**************************************************************************
*300-終了後処理
**************************************************************************
 300-END-S.
*
*ファイルクローズ
 CLOSE IN-FILE.
 CLOSE OUT-FILE.

*
 300-END-E.
*
*
````

--------------------------------------------------------------

   次回：COBOL記載方法まとめ　【初心者編】2
　　　https://qiita.com/nano357/items/b5b4a030424fcaf9a278

## 参考文献

COBOL関連情報サイト様
　　　http://www.kitagawa-hanga.com/se/index.html
　　　https://www.shakaijintanaka.com/comp-cobol/

#### 謝辞：「いかなる組織体も、自由な教育用説明書その他の目的でCOBOL　報告書とその仕様との一部または全部を複製し、また報告書の着想を利用してかまわない。 ただし、その文書の序文の一部にこの部分を掲載されたい。
書評などで短い文章を引用するときは出所についての謝辞にCOBOLの名称をあげれば全文をかかげる必要はない。
COBOLは産業界の言語であって、いかなる会社、会社団体、組織、組織団体の所有物ではない。各寄与者、COBOL委員会とも、 プログラミングシステムと言語の正確性や機能について、いかなる保証も与えない。またこれに関する事項についていかなる責任も負わない。
COBOL　保全の手続きははっきりしている。変更を提案する手続きについての照会はデータ組織言語会議の理事会にあてられたい。
ここで利用した以下の資料すなわち、

FLOW-MATIC(スペリーランド社の商標)
Programming for UNIVAC(R) Ⅰ and Ⅱ
Data Automation Systems
スペリーランド社、1958年，1959年版権；

IBM Commercial Translator
No.F28-8013
IBM社、1959年版権；

FACT
DSI27 A 5260-2760
ミネアポリス・ハネウエル社、1960年版権；

この著者、版権者はCOBOL　仕様書に一部または全部を利用することを許可した。このことはプログラミング説明書や類似の出版物にCOBOL　仕様書を複製、利用する場合にも適用される。」

ここで、本解説書およびCOBOL　処理プログラムの作成者とそれの使用者は、CODASYL COBOL委員会と各寄与者の努力と成果を高く評価するとともに感謝の意を表すものであります。