今回は、COBOLで作成した簡単な電卓プログラム(加減乗除)をご紹介しよう。ユーザーが2つの数値と演算子(+、-、*、/)を入力すると、その計算結果を表示する。
IDENTIFICATION DIVISION.
PROGRAM-ID. CALC.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 NUM1 PIC 9(5)V99 VALUE 0.
77 NUM2 PIC 9(5)V99 VALUE 0.
77 RESULT PIC 9(7)V99 VALUE 0.
77 OPERATOR PIC X VALUE SPACE.
77 WS-DIV-ZERO PIC X VALUE 'N'.
PROCEDURE DIVISION.
MAIN-PROCESS.
DISPLAY "=== COBOL CALCULATOR ===".
DISPLAY "Enter first number (e.g., 123.45)".
ACCEPT NUM1.
DISPLAY "Enter second number (e.g., 67.89)".
ACCEPT NUM2.
DISPLAY "Enter operator (+ - * /)".
ACCEPT OPERATOR.
EVALUATE OPERATOR
WHEN "+"
COMPUTE RESULT = NUM1 + NUM2
WHEN "-"
COMPUTE RESULT = NUM1 - NUM2
WHEN "*"
COMPUTE RESULT = NUM1 * NUM2
WHEN "/"
IF NUM2 = 0
DISPLAY "Error: division by zero"
MOVE 'Y' TO WS-DIV-ZERO
ELSE
COMPUTE RESULT = NUM1 / NUM2
END-IF
WHEN OTHER
DISPLAY "Invalid operator"
STOP RUN
END-EVALUATE.
IF WS-DIV-ZERO = 'N'
DISPLAY "Result: " RESULT
END-IF.
STOP RUN.
実行方法(calc.cob というファイル名で保存)
cobc -x calc.cob
./calc
ファイル保存時の注意
- エンコーディング:UTF-8
- 行末に改行:あり。(ないと
-Wmissing-newline
エラー) - 72文字超過に注意:GnuCOBOLは73文字目以降を無視することがある。
- エディタ設定:タブを使わずスペースでインデントを推奨。
実行例
=== COBOL CALCULATOR ===
Enter first number (e.g., 123.45)
13.34
Enter second number (e.g., 67.89)
67.38
Enter operator (+ - * /)
+
Result: 0000080.72
補足
- PIC 9(5)V99 は整数5桁、小数2桁(合計7桁)の数値を扱う定義である。
- 除算の際にはゼロ除算のチェック(IF NUM2 = 0)を入れてある。
- EVALUATE は switch 文に相当する。演算子ごとの分岐処理に便利である。
- COBOL(特に GnuCOBOL)では、全角文字を含む長い
DISPLAY
文はトラブルの元になるので今回は避けた。
コメント