Google検索窓に「COBOL 」と打ちこむだけで出てくる EVALUATE

COBOL? に反応する人なんか、いるんだろうか?

コンピュータプログラミング言語の中でも最古に属するもの、それが COBOL。FORTRAN よりはやや新しい。誕生は 1959 年だそーな。FORTRAN は 1957 年ね。

ぢつはどっちもそこそこな年数経験あり。FORTRAN は2年間、COBOL も2年間、かな。とはいえパンチカード時代ぢゃないぞ、バカにすんな。

COBOL はまぁ、「まったくもって好きじゃない言語」の一つにカウントされることになったわけだが、COBOL でほぼ唯一、「この機能は他にもくれぃ」と思うもんがあって。それが「多岐選択 EVALUATE」。

C 系言語の switch~case に相当するものなのだけど、「評価対象が複数」を一撃で記述出来る:

 1 000190*
 2 000200     EVALUATE  WRK-X  ALSO  WRK-Y
 3 000210         WHEN  100  ALSO  100
 4 000220               DISPLAY  "100ずつ"       UPON  CONSOLE
 5 000230*
 6 000240         WHEN  100  ALSO  200
 7 000250               DISPLAY  "100:200"   UPON  CONSOLE
 8 000260*
 9 000270         WHEN  300  ALSO  ANY
10 000280               DISPLAY  "とにかくXは300"     UPON  CONSOLE
11 000290*
12 000300         WHEN  OTHER
13 000310               DISPLAY  "判断つかぬ"     UPON  CONSOLE
14 000320*
15 000330     END-EVALUATE.

今更 COBOL プログラマなんか日本で5人くらいしかいないだろう(ウソです、いまでも2位らしいね、日本で)。だからこんな話はどうでも良い。とも言えなくてな、これが。なぜって、この記述が出来るだけで、「設計書の excel の表そのまんま」書けたりすんだな。

で、特に C、java を使うときに、「あぅ、EVALUATE」と思う。

Python は、やろうと思えば、tuple を使うだけなので、誰も困らないし、気付きもせずに活用してた、なんてツワモノもいるかもね:

1 >>> a, b, c = 1, 2, 3
2 >>> (a, b, c) == (2, 2, 3)
3 False
4 >>> (a, b, c) == (1, 2, 3)
5 True
6 >>> (a, b, c) == (1, 2, 3, 4)
7 False

まぁ Python には switch~case はないわけで、if~elif~else で書き連ねなければいけないけどね。

C++ は、「困ることがない」わけではないんだけど、そこまで困れば Python 流儀と同じく struct (std::pairやstd::tupleも含む) と operator== と if 羅列、でやっちゃうので。もしくは switch~case を出来るだけ避けるよね。