Skip to content

Conversation

@yutaro-sakamoto
Copy link
Contributor

JavaからCOBOLプログラムを呼び出す際のインターフェースを改善した。
下記のようなプログラムでJavaからCOBOLプログラムを呼び出せるようになる。

b.cbl

       identification division.
       program-id. b.
       data division.
       linkage section.
       01 arg pic 9(3).
       procedure division using arg.
         add 1 to arg.

a.java

import jp.osscons.opensourcecobol.libcobj.ui.*;
public class a {
        public static void main(String[] args) {
                b prog = new b();
                CobolResultSet rs = prog.execute(2);
                try{
                        int ret = rs.getInt(1);
                        System.out.println("return: " + ret);
                } catch(CobolResultSetException e){
                        e.printStackTrace();
                }
        }
}

コンパイルと実行は下記の通り。

cobj b.cbl
javac a.java
java a

また、tests/misc.src/java-interface.at にこの修正に対するテストを追加した。
主に次の点をテストした。

  • 整数型(PIC 9(n))、符号付き整数、COMP-3、符号付きCOMP-3、仮想小数点を含むデータ、文字列型(PIC X(n))に対するテスト。
  • Cobolプログラムの実行結果を表すCobolResultSetに対するテスト。

下記の点は今後の課題とする。

  • USAGE BINARY、数値編集項目、集団項目等のその他のデータ型への対応。
  • OCCURSを利用した多次元のデータ型への対応。
  • 日本語データ(Shift_JIS)の実装・テスト。
    • 今のところ、COBOLプログラムからJavaプログラムに日本語データ(Shift_JIS)を正しく受け渡すことができない。

@yutaro-sakamoto yutaro-sakamoto merged commit 7b27ad5 into opensourcecobol:develop Jan 19, 2023
@yutaro-sakamoto yutaro-sakamoto deleted the feature/java_interface branch January 30, 2023 06:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant