はじめに
銀行障害でちょっとだけCOBOLが注目されました。
他のプログラム言語に比べて、COBOL言語がちょっと変わっているな、と思う部分を紹介します。
これは全くの個人的趣味なので、他の人には全くささらないかもしれません。
マイナスがデータ名に使える
009500 WORKING-STORAGE SECTION.
009600 01 A PIC 9(5) VALUE 4.
009700 01 B PIC 9(5) VALUE 1.
009800 01 C PIC 9(5) .
009900 01 A-B PIC 9(5) VALUE 2.
010000 PROCEDURE DIVISION.
010100 COMPUTE C=A-B *> これは「A-B」というデータ名
010200 DISPLAY 'C=' C .
010300 COMPUTE C = A - B . *> こちらは減算
010400 DISPLAY 'C=' C .
実行結果
C=00002
C=00003
ピリオドが後ろの文字で意味が変わる
009600 REPLACE ==999.== BY ==ZZZ.==.
009610 01 AAA PIC 999. *> PICTURE文字列999と終止符の. 置換される
009620 01 BBB PIC 999.. *> PICTURE文字列999.と終止符の. 置換される
009630 01 CCC PIC 999.999. *> PICTURE文字列999.999と終止符の. 置換されない
010000 PROCEDURE DIVISION.
010200 MOVE 3.4 TO AAA BBB.
010300 DISPLAY AAA.
010300 DISPLAY BBB.
実行結果
3
3.
※実行は「Windows版 MicroFocus COBOL V9.0(Personal Edition)」を使っています。
似たようなUSAGE(データの型)が多い
USAGE COMP
USAGE COMP-1
USAGE COMP-2
USAGE COMP-3
というのがあって、その違いを覚えるのに最初苦労します。
そのうち各ベンダーが拡張機能をつくり
USAGE COMP-4
USAGE COMP-5
などというものがあったり、さらにはラスボス感のある名前
USAGE COMP-X
が出てきたりと大変です。
最後の方のはC言語連携などで使う2進系の型なのですが、COBOLの国際規格でBINARY-SHORT、BINARY-LONGなども出てきてこれまた大変です。
USAGEの何と何が同じ意味になるのか、マニア向けのクイズになりそうです。
参考)
https://www.microfocus.co.jp/manuals/VC90/VS2022/HRLHLHPDF40Q.html
※私はMicroFocus社の人間ではありません。単なる一(いち)プログラマーです。