世界の潮流は広範で、順応すれば繁栄し、逆らえば滅びます。2023 年の初めの数ヶ月は、LLM の助けを借りて、「天上の一日、地上の一年」という感じでした。しかし、この急速な発展は、人々を無限の不安にさせるものであり、私は自分の不安を和らげるために一連の記事を書くことに決めました。30 年前に戻って「スローライフ」を感じるためです。
奇妙な言語で奇妙なものを書く人がいつも私を探してくるからではありません。
COBOL とは#
COBOL の正式名称は Common Business Oriented Language であり、主に金融業や会計業などのビジネスデータ処理に使用される言語です。2023 年現在、COBOL は絶滅の道を歩んでいるかもしれませんが、まだ多くの金融コアシステムで使用されています。その理由は 2 つあります。1 つは COBOL 自体の安定性が高いことであり、もう 1 つは既存のシステムを変更するコストが高すぎるためです(つまり、他の言語でこれらのシステムを再構築することは多くの場合、経済的に合理的ではありません)。
この記事シリーズの COBOL の部分では、COBOL の基礎を簡単に紹介し、簡単な COBOL チュートリアルを行います。(もちろん、COBOL の研究に多くの時間を費やすことはお勧めしません。この言語の最終的な運命はサイバー化石になることですから。)
最初の一歩を踏み出す#
COBOL と言えば、IBM とメインフレームを思い浮かべる人も多いでしょう。COBOL はメインフレーム上で実行される言語ですが、メインフレームがなければ COBOL を実行することはできないのでしょうか?実際にはそうではありません。現在、さまざまな方法があり、パーソナルコンピュータ上でプログラムを実行するためにメインフレームをシミュレートすることができます。もし COBOL を試してみたいと思うのであれば、以下のチュートリアルを参考にしてください:
- https://www.geeksforgeeks.org/how-to-install-cobol-on-macos/
- https://ibm.github.io/zopeneditor-about/Docs/interact_zos_zowe_explorer.html#setting-up-and-using-profiles-in-zowe-explorer
- https://www.youtube.com/watch?v=RdMAEdGvtLA&t=478s
Hello COBOL#
どんなプログラミング言語でも "Hello, World!" を表示する必要がありますが、COBOL も例外ではありません。ただし、COBOL の特殊性により、完全な COBOL プログラムの構造を理解する必要があります。
この図は上から下への包含関係を示しており、つまり:
- プログラムは複数の DIVISION で構成される
- DIVISION は複数の SECTIONS で構成される
- .....
000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID. HELLO.
000300 ENVIRONMENT DIVISION.
000400 DATA DIVISION.
000500 PROCEDURE DIVISION.
000600 DISPLAY 'HELLO WORLD'
000700 STOP RUN.
この短いプログラムから、COBOL の構文が現代のプログラムとは異なり、アセンブリ言語のような特徴を持っていることがわかります。この言語の誕生時期を考えると、それは驚くことではありません。次に、このプログラムの構造を分解してみましょう。まず、個々の行を見てみましょう:
COBOL プログラムの形式はかなり厳格であり、各行は次の 5 つの部分に分解できます:
- 列 1〜6 はシーケンス領域であり、行番号を示します
- 列 7 はフラグ領域であり、この位置が * の場合はコメント行、- の場合は継続行、/ の場合は改ページを示します
- 列 8〜11 はすべての COBOL 部、セクション、ディビジョン、および一部の特殊エントリが A 領域から始まる必要があります。
- 列 12〜72 はすべての COBOL ステートメントが B 領域から始まる必要があります。
- 列 73〜80 はプログラマの必要に応じて使用できます。ここに修正コードなどの識別子を追加します。
IDENTIFICATION DIVISION. は識別部を宣言します
ENVIRONMENT DIVISION. は環境部を宣言します
DATA DIVISION. はデータ部を宣言します
PROCEDURE DIVISION. は手続き部を宣言します
COBOL プログラムには識別部が必要ですが、環境部とデータ部は省略することができます。
ここでは、部分的なプログラムの宣言以外の部分を分析します。
PROGRAM-ID xxxxx. はプログラムの ID(プログラムの識別子と考えることができます)を示します。
DISPLAY は、Python の print に似ており、後続の内容を表示します。
STOP RUN. はプログラムの終了を示します。
"Hello, World!" プログラムでは、これを前述の COBOL プログラムの構造と対応させることはまだできないかもしれません。これは、この COBOL プログラムがファイルの読み書きを必要とせず、中間変数を保存する必要もないためです。次回の記事でプログラムを完全に紹介します。