Example of Java Calling COBOL

Java Program

import com.acucorp.acucobolgt.*; 
public static void main(String[] args) throws IOException { 
  try{ 
     CVM cvm = CVM.GET_INSTANCE(); 
     cvm.setErrorsOut("/tmp/errfile"); 
     cvm.setConfigFile("c:/myproject/config"); 
     cvm.initialize(); 

     CALL_OPTIONS co = new CALL_OPTIONS(); 
     co.setOption("debug_method", "1"); 

     int intParam = 1; 
     Integer objInt = new Integer(intParam); 

     byte byteParam = 'a'; 
     Byte objByte = new Byte(byteParam); 

     char charParam = 'b'; 
       Character objChar = new Character(charParam); 

     Object params[] = { 
       objInt, 
       objByte, 
       objChar 
     }; 
     cvm.callProgram("TestJavaToCobol", params, co); 
     cvm.cancelProgram("TestJavaToCobol"); 
     objInt = (Integer)params[0]; 
     objByte = (Byte)params[1];
     objChar = (Character)params[2]; 
  
     System.out.println("COBOL changed value to " +     
        objInt.intValue());
     System.out.println("COBOL changed value to " + 
        objByte.byteValue(); 
     System.out.println("COBOL changed value to " + 
        objChar.charValue()); 

     cvm.shutdown(); 
   } catch (Exception e){ 
    e.printStackTrace(); 
   } 
}

COBOL Program

identification division.
program-id. TestJavaToCobol.
data division.
working-storage section.
COPY "java.def".
01 status-val pic 9(02) value zero. 

linkage section.
01 integer-parameter usage is signed-int.
01 byte-parameter pic x.
01 char-parameter pic x. 

procedure division 
   using integer-parameter, byte-parameter,  
   char-parameter.
main-logic.
   move 3 to integer-parameter.
   move "d" to byte-parameter.
   move "e" to char-parameter.
   exit program.