Using the COBOL Program from Java

You can use the ILCUTPREFIX directive to remove a specified prefix from the COBOL data items. In this case, you can use it to remove the Lnk prefix. This results in the class becoming Sum. To do this insert the following line at the top of the Calculator.cbl program:
$set ILCUTPREFIX "lnk-"

You can also use ILSMARTNEST, in conjunction with ILSMARTLINKAGE directive, to manage code as nested classes of the program class in which they are defined. In this case, it results in the LnkSum class becoming an internal class inside the Calculator class (my.pack.Calculator.LnkSum).

The default option for input arguments is by reference. If both by value and by reference are omitted then the Compiler accepts the arguments as by reference type.

To simplify the method signature you can group the arguments together. Your Calculator.cbl program should now look like:

       $set ilsmartlinkage "my.pack"
       $set ilnamespace "my.pack"
       $set ilcutprefix "lnk-"
       program-id. Calculator as "Calculator".

       data division.
       working-storage section.
       
       linkage section.
       01 args
           03 lnk-arg1           pic 9(5) comp-3.
           03 lnk-arg2           pic 9(5) comp-3.
           03 lnk-sum            pic 9(5) comp-3.

       procedure division using args.
           add lnk-arg1 to lnk-arg2 giving lnk-sum.
           goback.

       end program Calculator.

Your MainClass.java should now look like:

package com.calc;

import my.pack.Calculator;
import my.pack.Args;

public class MainClass {

	public static void main(String[] args) {
		Calculator calc = new Calculator();
		Args arguments = new Args();
		arguments.setArg1(4);
		arguments.setArg2(2);
		calc.Calculator(arguments);
		System.out.println(arguments.getSum());
	}	
}