COBOL覚書

この記事は約6分で読めます。

絶滅していいよCOBOL・・・

****************************************

000010 IDENTIFICATION DIVISION.

000020 PROGRAM-ID. SAMPLE-01.
000030*
000040 ENVIRONMENT DIVISION.
000050*
000060 DATA DIVISION.
000070*
000080 PROCEDURE DIVISION.
000090 MAIN.
000100 DISPLAY “Hello world!” UPON CONSOLE.
000110 STOP RUN.

****************************************

*>コメント
*>小文字もおk!gnu-cobolから以前は大文字のみ
*>.を忘れずに
*>DIVISION > SECTIONのような構造
*>4つのDIVISION

*>見出し部(必ず書かないと行けない,プログラムIDは自由に!)
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

*>環境部
ENVIRONMENT DIVISION.

*>データ部
DATA DIVISION.

*>手続き部
PROCEDURE DIVISION.
MAIN SECTION.
MOVE “HELLO WORLD!!” TO MY-DATA1.
DISPLAY MY-DATA1.
STOP RUN.

****************************************

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-DATA1 PIC X(20).

*>変数の宣言はDATA DIVISION の WORKING-STORAGE SECTION の中で行う
*>01 はおまじない MY-DATA1 は変数名 PICは予約語(領域を描くというイメージ)
*>文字列を格納するときはX(文字数)のように領域を確保する。

PROCEDURE DIVISION.
MAIN SECTION.
MOVE ‘HELLO WORLD!’ TO MY-DATA1.
DISPLAY MY-DATA1.
STOP RUN.

*>変数の代入はMOVE hoge TO hoge
*>文字列はシングルクオテーションでもダブルクオテーションでもおk!

****************************************

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-DATA1 PIC X(20).
01 MY-DATA2 PIC 99999.
01 MY-DATA3 PIC 9(5)V9(2).
01 MY-DATA4 PIC 99999 VALUE 12345.

*>数値を扱う場合 9(数字の桁数) あるいは 99999 のように桁数分並べる
*>小数点はV を使う。 よって、整数部5桁小数部2桁の場合 PIC 99999V99 あるいは PIC 9(5)V9(2)
*>変数に初期値を入れるとき(数値でも文字列でも)は VALUE を使う

PROCEDURE DIVISION.
MAIN SECTION.
MOVE 120 TO MY-DATA2.
MOVE 123.42 TO MY-DATA3.
MOVE ‘HELLO WORLD!’ TO MY-DATA1.
DISPLAY MY-DATA4.
STOP RUN.

****************************************

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-PRODUCT.
03 PRODUCT-ID PIC X(5).
03 FILLER PIC X(20).
03 PRODUCT-PRICE PIC 9(5).
PROCEDURE DIVISION.
MAIN SECTION.
MOVE “ID-12” TO PRODUCT-ID.
MOVE 3939 TO PRODUCT-PRICE.
DISPLAY PRODUCT-PRICE.
DISPLAY MY-PRODUCT.
STOP RUN.

*>集合項目(構造体) 01,03はレベル番号 2飛ばしとか5飛ばしが普通
*>DISPLAY MY-PRODUCT. で一気に見れる
*>FILLERは特別な項目。あとでの変更に備えるもの??

****************************************

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-COLORS.
03 MY-COLOR OCCURS 3 PIC X(10).
PROCEDURE DIVISION.
MAIN SECTION.
MOVE “red” TO MY-COLOR(1).
MOVE “blue” TO MY-COLOR(2).
MOVE “yello” TO MY-COLOR(3).
DISPLAY MY-COLOR(2).
DISPLAY MY-COLORS.
STOP RUN.

*>配列について
*>集合項目っぽく書くが、OCCURS 3 で 配列が作られる。
*>配列のインデックスは0からでなく1から始まる。

****************************************

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-DATA PIC X(10).
PROCEDURE DIVISION.
MAIN SECTION.
DISPLAY “What’s your name?”.
ACCEPT MY-DATA.
DISPLAY “Hello!” MY-DATA.
STOP RUN.

****************************************

条件分岐は IF THEN ELSE END-IF.

あるいは、EVALUATE WHEN OTHER END-EVALUATE.

 

コメント

タイトルとURLをコピーしました