$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()); } }