"opensource COBOL 4J"は、COBOLソースコードをJavaソースコードに変換するCOBOLコンパイラです。 "opensource COBOL 4J"は、COBOLからCソースコードに変換するCOBOLコンパイラ"opensource COBOL"をもとに開発されています。 (実際、このリポジトリには多くの"opensource COBOL"のソースファイルが含まれています。)
変更履歴はCHANGELOG.mdをご覧ください。
ランタイムライブラリであるlibcobjはLGPL 3、それ以外のソフトウェアやライブラリはGPL 3の下で配布されています。
opensource COBOL 4Jは、下記の環境でテストされています:
- Ubuntu 24.04 と OpenJDK 21
- AlmaLinux 9 と OpenJDK 11
- Amazon Linux 2023 と OpenJDK 21
古いバージョンの動作環境については、doc/requirements-all.mdをご覧ください。
下記のコマンドを実行します。
sudo apt-get update
sudo apt-get install -y default-jdk build-essential bison flex gettext texinfo libgmp-dev autoconf
dnf -y update
dnf install -y java-11-openjdk-devel gcc make bison flex automake autoconf diffutils gettext
dnf -y update
dnf install -y java-21-amazon-corretto-devel gcc make bison flex automake autoconf diffutils gettext tar gzip
curl -L -o opensourcecobol4j-v1.1.8.tar.gz https://github.com/opensourcecobol/opensourcecobol4j/archive/refs/tags/v1.1.8.tar.gz
tar zxvf opensourcecobol4j-v1.1.8.tar.gz
cd opensourcecobol4j-1.1.8
./configure --prefix=/usr/
make
sudo make install
UTF-8のCOBOLソースコード対応版コンパイラをインストールする場合は、下記のコマンドを実行する。
curl -L -o opensourcecobol4j-v1.1.8.tar.gz https://github.com/opensourcecobol/opensourcecobol4j/archive/refs/tags/v1.1.8.tar.gz
tar zxvf opensourcecobol4j-v1.1.8.tar.gz
cd opensourcecobol4j-1.1.8
./configure --prefix=/usr/ --enable-utf8
touch cobj/*.m4
make
sudo make install
/usr/lib/opensourcecobol4j/libcobj.jarを環境変数$CLASSPATHに追加します。 例えば、Unix系システムで次のコードを実行します。
export CLASSPATH="$CLASSPATH:/usr/lib/opensourcecobol4j/libcobj.jar"
古いバージョンのインストール方法は、doc/installation_jpをご覧ください。
Windows版のopensource COBOL 4JはVisual Studioに含まれるCLコンパイラを使用します。 そのため、まずはVisual Studioをインストールする必要があります。
- opensource COBOL 4Jのファイル一式をダウンロードする。
- Visual Studioでwin/opensourcecobol4j.slnを開く。
- ”Debug”または”Release”モードを選択する。
- ”ビルド” -> ”ソリューションのビルド” を選択する。
ビルドが完了すると、
win/x64/Debug
またはwin/x64/Release
に"cobj.exe"が作成される。
- JDKをインストールする。 https://www.oracle.com/java/technologies/downloads/?er=221886#java8-windows
- PowerShellを開く。
- "libcobj"ディレクトリに移動し、
.\gradlew shadowJar
を実行する。これにより、cd libcobj .\gradlew shadowJar
libcobj\app\build\libs\
に"libcobj.jar"が作成される。
- Debugモードでビルドした場合、
win/make-install.ps1
の5行目を\x64\Release\cobj.exe
から\x64\Debug\cobj.exe
に変更する。 - PowerShellを開く。
- ”win”ディレクトリに移動し、
make-install.ps1
を実行する。cd win .\make-install.ps1
-
各ファイルは以下の場所に配置されます。
ファイル名 配置場所 cobj.exe C:\opensourcecobol4j\bin libcobj.jar C:\opensourcecobol4j\lib configファイル C:\opensourcecobol4j\config -
ファイルの配置場所を変更したい場合は、
make-install.ps1
に記載してあるパスを編集してください。
C:\opensourcecobol4j\bin
を環境変数PATHに追加する。C:\opensourcecobol4j\lib\libcobj.jar
を環境変数CLASSPATHに追加する。
opensource COBOL 4JのDockerコンテナを利用できます。
docker pull opensourcecobol/opensourcecobol4j:20250307
以下のコマンドを実行して、"Hello World"のCOBOLプログラムを実行します。
# サンプルディレクトリに移動
$ cd /root/cobol_sample
# COBOLをJavaに変換し、Javaソースファイルをコンパイル
$ cobj HELLO.cbl
# "Hello World"を実行
$ java HELLO
HELLO WORLD!
コンパイルします。
cobj [COBOL source file]
(cobjコマンドにより、カレントディレクトリに[PROGRAM-ID].javaと[PROGRAM-ID].classが生成されます。)
実行します。
java [PROGRAM-ID]
実装済み機能:
- 基本的なデータ操作 (MOVE, COMPUTEなど)
- 制御文 (IF, PERFORM, GO TOなど)
- 一部のI/O機能 (DISPLAY, ACCEPTなど)
- CALLによる呼び出し
- SEQUENTIALファイルの入出力機能
- RELATIVEファイルの入出力機能
- INDEXEDファイルの入出力機能
- SORT文
- 組み込み関数 (ACOS, LENGTH, MAXなど)
opensource COBOL 4JはNIST COBOL85 test suiteによりテストされています。
主要テスト結果:
------ Directory Information ------- --- Total Tests Information ---
Module Programs Executed Error Crash Pass Fail Deleted Inspect Total
------ -------- -------- ----- ----- ----- ---- ------- ------- -----
NC 90 90 0 0 4352 0 6 11 4369 COBOLの中核機能のテスト
SM 15 15 0 0 290 0 3 1 294 COPY句のテスト
IC 13 13 0 0 97 0 0 0 97 CALL文のテスト
SQ 81 81 0 0 512 0 6 81 599 Sequentialファイルの入出力テスト
IX 39 39 0 0 507 0 1 0 508 Indexedファイルの入出力テスト
ST 39 39 0 0 278 0 0 0 278 SORT文のテスト
SG 5 5 0 0 193 0 0 0 193 セグメントのテスト
OB 5 5 0 0 16 0 0 0 16 廃止された機能のテスト
IF 42 42 0 0 732 0 0 0 732 組み込み関数のテスト
RL 32 32 0 0 1827 0 5 0 1832 Relativeファイルの入出力テスト
------ -------- -------- ----- ----- ----- ---- ------- ------- -----
Total 361 361 0 0 8804 0 21 93 8918
追加テストの結果:
------ directory information ------- --- total tests information ---
module programs executed error crash pass fail deleted inspect total
------ -------- -------- ----- ----- ----- ---- ------- ------- -----
cm 7 0 7 0 0 0 0 0 0 COMMUNICATION SECTIONのテスト
db 10 0 10 0 0 0 0 0 0 Debugging機能のテスト
rw 4 0 4 0 0 0 0 0 0 REPORT SECTIONのテスト
------ -------- -------- ----- ----- ----- ---- ------- ------- -----
total 21 0 21 0 0 0 0 0 0
cobj-idx
コマンドはINDEXEDファイルを扱うためのユーティリティで、opensource COBOL 4Jをインストールする際に、一緒にインストールされます。
cobj-idx - A utility tool to handle an indexed file of opensource COBOL 4J
Usage:
cobj-idx <sub command> [options] <indexed file>
Sub commands:
cobj-idx info <indexed-file>
Show information of the indexed file.
cobj-idx load <indexed file>
Load the data from stdin into the indexed file.
The default format of the input data is SEQUENTIAL of COBOL.
cobj-idx load <indexed file> <input file>
Load data from the input file into the indexed file.
The default format of the input data is SEQUENTIAL of COBOL.
cobj-idx unload <indexed file>
Write the records stored in the indexed file into stdout.
The default format of the output data is SEQUENTIAL of COBOL.
cobj-idx unload <indexed file> <output file>
Write the records stored in the indexed file into the output file.
The default format of the output data is SEQUENTIAL of COBOL.
Options:
-f <format>, --format=<format>
Specify the format of the input and output data.
Possible values are 'txt' and the default value 'bin'
'bin' and 'txt' means SEQUENTIAL and LINE SEQUENTIAL respectively.
When doing a `load`, this option specifies the format of input data which will be inserted to an indexed file.
When doing an `unload`, this option specifies the format of output data which will be read from an indexed file.
-h --help
Print this message.
-n, --new
Delete all data before inserting new data. This option is only valid when the sub command is 'load'.
-v, --version
Print the version of cobj-idx.
cobj-api
コマンドを使用することで、cobj
で生成されたプログラムを呼び出すSpring boot向けのJavaファイルを簡単に生成できます。
Usage: cobj-api [options] <json-file>
Arguments:
<json-file>: a json file generated by cobj with `-info-json-dir` option
Options:
-h, --help Display this message
-java-package=<package name> Specify the package name of the generated source code
-o=<dir>, --output-dir=<dir> Set the output destination of the java file to an arbitrary destination
-v, --version Prints the version of the cobj-api
cobj-apiを用いたSpring Bootアプリケーションの作成方法については、こちらをご覧ください。
コントリビュータ向けのガイドラインはCONTRIBUTING_JP.mdを参照してください。 コントリビュータの一覧は https://github.com/opensourcecobol/opensourcecobol4j/graphs/contributors に掲載されています。