Ubuntu(Linux)に Gnu COBOL(Open COBOL) をインストールする手順とコンパイル方法などを紹介します。
GNU COBOLのインストール
インストール
$ sudo apt-get update
$ sudo apt install open-cobol
エラーが出たら「gnucobol4」を試してください。
$ sudo apt install gnucobol4
正常にインストールされたかを確認します。
# $ cobc -version cobc (GnuCOBOL) 4.0-early-dev.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 Sep 14 2021 19:23:38 Packaged Jun 06 2020 20:56:36 UTC C version "11.2.0"
COBOLソースのコンパイル/実行
COBOLのソースプログラムを作成
専用のCOBOLエディタなどはありません。
Ubuntuのviだと、COBOL用に色付けしてくれます。
以下は、TeraTermでUbuntuサーバに接続し、viでCOBOLソースプログラムを表示させた画面です。
・COBOLの予約語(DIVISIONやPICなど)の色付け
・コメント行の色付け(7桁目に”*”がある行はコメント行です。)
COBOLソースのコンパイル
コンパイルにcobc コマンドを使います。
実行可能プログラムの作成には、-x オプションを付けます。
# # $ cobc -x cobol-test1.cbl $ ./cobol-test1 HELLO world! 0.3529411
複数のソースファイルで構成される場合
MAIN01.cbl から、SUB01.cblを呼び出すプログラムです。
# # $ cat MAIN01.cbl IDENTIFICATION DIVISION. PROGRAM-ID. MAIN01. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 PARAMETRES. 02 PA-RETURN-CODE PIC 99 VALUE 0. PROCEDURE DIVISION. MAIN-PROCEDURE. DISPLAY "Hello world (MAIN) !" MOVE 1 TO PA-RETURN-CODE. CALL "SUB01" USING BY REFERENCE PARAMETRES . STOP RUN. END PROGRAM MAIN01. $ cat SUB01.cbl IDENTIFICATION DIVISION. PROGRAM-ID. SUB01. DATA DIVISION. WORKING-STORAGE SECTION. LINKAGE SECTION. 01 PARAMETRES. 02 PA-RETURN-CODE PIC 99 . PROCEDURE DIVISION USING PARAMETRES. MAIN-PROCEDURE. DISPLAY "Hello world (SUB01) !" DISPLAY "PA-RETURN-CODE=" PA-RETURN-CODE . STOP RUN. END PROGRAM SUB01.
cobc -xでコンパイルします。
MAIN01 という実行可能プログラムが作成されます。
# # $ cobc -x MAIN01.cbl SUB01.cbl $ ls -ltrF -rw-rw-r-- 1 testuser testuser 438 Jan 28 08:30 MAIN01.cbl -rw-rw-r-- 1 testuser testuser 410 Jan 28 08:30 SUB01.cbl -rwxrwxr-x 1 testuser testuser 17568 Jan 28 08:31 MAIN01* $ ./MAIN01 Hello world (MAIN) ! Hello world (SUB01) ! PA-RETURN-CODE=01
Gnu COBOLコンパイラの特長
Gnu COBOLは、COBOLソースを C言語のソースへ変換して、C言語のソースをGCC(GnuのCコンパイラ)でコンパイルして実行可能プログラムを生成しています。
COBOLのソースを C言語のソースへ変換するだけもできます。
-x の代わりに -C オプションを指定します。
cobc -C -v cobol-test1.cbl
# # $ cobc -C -v cobol-test1.cbl cobc (GnuCOBOL) 4.0-early-dev.0 Built Sep 14 2021 19:23:38 Packaged Jun 06 2020 20:56:36 UTC C version "11.2.0" loading standard configuration file 'default.conf' command line: cobc -C -v cobol-test1.cbl preprocessing: cobol-test1.cbl -> /tmp/cob5103_0.cob return status: 0 parsing: /tmp/cob5103_0.cob (cobol-test1.cbl) return status: 0 translating: /tmp/cob5103_0.cob -> cobol-test1.c (cobol-test1.cbl)
# # $ ls -ltrF -rw-rw-r-- 1 testuser testuser 1052 Jan 28 08:35 cobol-test1.c.l.h -rw-rw-r-- 1 testuser testuser 882 Jan 28 08:35 cobol-test1.c.h -rw-rw-r-- 1 testuser testuser 5277 Jan 28 08:35 cobol-test1.c $ cat cobol-test1.c /* Generated by cobc 4.0-early-dev.0 */ /* Generated from cobol-test1.cbl */ /* Generated at Jan 28 2023 08:35:17 */ /* GnuCOBOL build date Sep 14 2021 19:23:38 */ /* GnuCOBOL package date Jun 06 2020 20:56:36 UTC */ /* Compile command cobc -C -v cobol-test1.cbl */ #include #include #define COB_KEYWORD_INLINE __inline #include #include #define COB_SOURCE_FILE "cobol-test1.cbl" /* Global variables */ #include "cobol-test1.c.h" /* Function prototypes */ int SAMPLE1 (void); static int SAMPLE1_ (const int); static void SAMPLE1_module_init (cob_module *module); /* PROGRAM-ID 'SAMPLE1' */ int SAMPLE1 () { return SAMPLE1_ (0); } static int SAMPLE1_ (const int entry) { #include "cobol-test1.c.l.h" static const unsigned int st_name_hash [] = { 0x9B860601, /* SAMPLE1 */ 0}; ★省略
最後に
GnuCOBOLの公式の情報は以下です。
https://sourceforge.net/projects/gnucobol/
Linuxの標準のデバッガGDBを使って、デバッグできそうな雰囲気ですが、分かりませんでした。
全般的にGnuCOBOLの情報は少ないですね。
ちょっとだけ試す目的なら、OpenCobolIDE。
本格的に使うなら、Visual COBOLがいいです。