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がいいです。
