COBOLの話2 書き方を覚える
書き方が細かいようなので色々試してみた。
全部大文字で書いても
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-01. * ENVIRONMENT DIVISION. * DATA DIVISION. * PROCEDURE DIVISION. MAIN. DISPLAY "Hello World!" UPON CONSOLE. STOP RUN.
全部小文字で書いても
identification division. program-id. sample-01-02. * environment division. * data division. * procedure division. main. display "hello world!" upon console. stop run.
キャメルケースで書いても動く。
Identification Division. Program-id. Sample-01-03. * Environment Division. * Data Division. * Procedure Division. Main. Display "hello world!" Upon Console. Stop Run.
特に全部大文字じゃないとだめとかそういうことではないようだ。
何回も繰り返すには
「PERFORM n TIMES」~「END-PERFORM」の中に処理を書く。
nは回数。ただ、囲った中の処理では処理の最後に「.」いらない。
あると動かない。
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-04. * ENVIRONMENT DIVISION. * DATA DIVISION. * PROCEDURE DIVISION. PERFORM 5 TIMES DISPLAY "Hello World!" UPON CONSOLE END-PERFORM STOP RUN.
指定回数繰り返せる感じ。
変数定義しても行ける。
ただ、CNTの値は変化しないのでDISPLAYで表示されるCNTはずっと5のまま。
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-04. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 CNT PIC 9(3) VALUE 5. PROCEDURE DIVISION. PERFORM CNT TIMES DISPLAY "Hello World!" CNT UPON CONSOLE END-PERFORM STOP RUN.
「DATA DIVISION.
WORKING-STORAGE SECTION.」
↑が変数定義する場所っていう記述
「 01 CNT PIC 9(3) VALUE 5. 」
変数は頭に数値をつける様子。(「01」の部分。付け方は検索すれば出てきます。)
CNTが変数名。
PICがPICTURE句。英字,数字,英数字,英数字編集,及び数字編集のどれかっていうのを次に続く数値で示す。
9:変数の型を示す。9は数値を示す。他には型によって「P」,「S」,及び「V」がある。
(3):前の数値の型の桁数。9(3)で数字3桁という意味。
VALUE 5:変数CNTの初期値5。
CのWhile文ぽくも使える。
>=とかも使える。
COBOLって開始は1~が多いんかな?
個人的には0始まりが落ち着くけど。
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-05. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 CNT PIC 9(3) VALUE 0. PROCEDURE DIVISION. PERFORM UNTIL CNT >= 10 ADD 1 TO CNT DISPLAY "Hello World!" CNT UPON CONSOLE END-PERFORM STOP RUN.
こっちはfor文っぽいやつ
IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE-06. * ENVIRONMENT DIVISION. * DATA DIVISION. WORKING-STORAGE SECTION. 01 CNT PIC 9(3) VALUE 0. PROCEDURE DIVISION. PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT >10 DISPLAY "Hello World!" CNT UPON CONSOLE END-PERFORM STOP RUN.
なかなか色々あるなぁ。。。
今日はここまで。