COBOL
メインページ > 工学 > 情報技術 > プログラミング > COBOL
COBOL(コボル)は、1959年に事務処理用に開発されたプログラミング言語です。 名前は「Common Business Oriented Language」(共通事務処理用言語)に由来します。 Fortran・Lispとともに最も古いプログラミング言語の1つですが、 それ故、多くのソフトウェア資産の蓄積があり、2022年の今日でも現役のプログラミング言語として使用されています。
簡単なCOBOLプログラム 編集
以下は簡単なCOBOLのプログラムです。
- hello.cbl
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. DISPLAY "Hello World 12345!". STOP RUN.
- 実行結果
Hello World!
オンラインのコンパイル・実行環境 |
paiza.IO の様な、オンラインのコンパイル・実行環境であればウェブブラウザーだけで、COBOLのプログラムをコンパイル・実行できます。
上の例の、hello.cbl のようなリンク先を開くと、ウェブブラウザー上でコンパイル・実行することが出来ます。 |
環境構築 編集
GnuCobol 編集
GnuCOBOL(旧OpenCOBOL、短期間GNU Cobolとして知られていました)は、COBOLのフリーな実装です。 GnuCOBOLは、ネイティブのCコンパイラを使用するCへのトランスコンパイラです。
GNU/Linuxの場合 編集
ディストリビューションにより、パッケージマネージャとパッケージ体系に違いがありますが、例えば Fedora Linux では、
$ sudo dnf install gnucobol
$ cobc --version
cobc (GnuCOBOL) 3.1.2.0
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Keisuke Nishida, Roger While, Ron Norman, Simon Sobisch, Edward Hart
Built Jan 26 2021 00:00:00
Packaged Dec 23 2020 12:04:58 UTC
C version "11.0.0 20210123 (Red Hat 11.0.0-0)"
loading standard configuration file 'default.conf'
- で導入およびバージョンの確認できます。
FreeBSDの場合 編集
FreeBSD Ports/Packages Collection の、ports/lang/gnucobol
にあるので、
% sudo make -C /usr/ports/lang/gnucobol all install clean
でビルドしインストールできます。 また
% sudo pkg install gnu-cobol-3.1.2_1
でビルド済みパッケージをインストールできますが、GnuCOBOL自身のバージョンアップやportsのパッチレベルの更新で gnu-cobol-3.1.2_1
の部分は変わるので、
% pkg search cobol gnu-cobol-3.1.2_1 Open-source COBOL compiler
の様に、最初に最新のパッケージ名を確認してください。
- バージョンを確認
% cobc -V cobc (GnuCOBOL) 3.1.2.0 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html> This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Keisuke Nishida, Roger While, Ron Norman, Simon Sobisch, Edward Hart Built Nov 12 2022 15:48:13 Packaged Dec 23 2020 12:04:58 UTC C version "FreeBSD Clang 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc12386ae247c)" % _
コマンドラインでのコンパイルと実行 編集
簡単なCOBOLプログラムのソースコードを hello.cbl という名前で保存し、コンパイルし実行してみよう。
% cobc -x hello.cbl % ls hello hello.cbl % ./hello Hello World 12345!
- 実行ファイル
hello
を得るためにCOBOLコンパイラ cobc に −x をつけてコンパイル- -x をつけないとシェアードライブラリが出来、これは実行できません。
- 確認してみると
- hello が出来ている
- 早速実行すると
- 正しく表示
COBOLの正書法 編集
COBOLの正書法には、自由書式正書法と固定書式正書法の2種類があります。
それぞれの正書法には以下のような特徴があります。
- 固定形式正書法
- 一連番号領域、標識領域、プログラム記述領域など、行内の文字位置によって使い方が明確に定義されている書き方です。
- 自由書式正書法
- 一連番号領域や標識領域がなく、プログラムは行のどの位置にも書くことが出来ます。
処理系によっては、コマンドラインオプションなどで正書法の切り替えが可能な場合があるので、詳しくは使用している処理系のマニュアルを参照してください。
COBOLプログラムの構成 編集
COBOLプログラムのトップレベルの構成 編集
COBOLプログラムのトップレベルは
- 見出し部(IDENTIFICATION DIVISION)
- 環境部(ENVIRONMENT DIVISION)
- データ部(DATA DIVISION)
- 手続き部(PROCEDURE DIVISION)
の4つのパートから構成され、順序もこの順序である必要があります。
見出し部(IDENTIFICATION DIVISION) 編集
IDENTIFICATION DIVISIONは、COBOLプログラムの最初のパートで、 プログラム名、作成者、作成日などのプログラム保守情報を含みます。 これらは、見出し部の段落として記述します。
環境部(ENVIRONMENT DIVISION) 編集
ENVIRONMENT DIVISIONは、COBOLプログラムの2番目のパートで、 作成するプログラムをコンパイルして実行するコンピュータの名前、環境変数の受け渡しに関する情報、プログラムとの間で読み書きするファイルの名前と種類を定義します。
データ部(DATA DIVISION) 編集
DATA DIVISIONはCOBOLプログラムの3番目のパートで、これまでのDIVISIONはCOBOLプログラムを構築するためのメタデータで、 DATA DIVISIONからが実際にプログラムを構築していくところだと言えます。 DATA DIVISIONでは、入出力ファイルの配置、データ項目(変数)、外部プログラムとのインタフェース(引数)など、プログラムで扱うすべてのデータを定義します。
手続き部(PROCEDURE DIVISION) 編集
PROCEDURE DIVISIONは、COBOLプログラムの最後のパートで、プログラムが実行する処理を記述します。
前3つのDIVISIONとは異なり、手続き部には定義された節や段落の様な既定の構造はありません。 節や段落は、プログラマが必要に応じて作成します。 節はFortranのSubroutineやC言語の関数に相当し、段落は、節の中にある小さな処理の集まりです。