作ってみたものの話。

気になって作ってみたものの記録。

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.

なかなか色々あるなぁ。。。
今日はここまで。