LoginSignup
0
0

COBOLの少しおもしろい言語仕様

Posted at

はじめに

銀行障害でちょっとだけ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社の人間ではありません。単なる一(いち)プログラマーです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0