Java calling COBOL and accessing COBOL working-storage (COBOL/Java Interoperability project)

The following example demonstrates a Java program calling two COBOL programs, and also accessing and updating their shared working-storage items.

To use the Java and COBOL from within separate projects, see Java calling COBOL and accessing COBOL working-storage (separate projects).

  1. Create a COBOL/Java Interoperability project:
    1. Click File > New > Project, select COBOL/Java Interoperability Project type from the Micro Focus COBOL folder, and then click Next.
    2. In the Project name field, enter a name for the project, select a project template, and then click Next.
    3. Select a Java runtime to use with the project, and then click Finish.
    The project is created and displayed in the workspace. It is recommended to work in COBOL Explorer view with this type of project as it gives full visibility to all project artifacts by default.
  2. Set the package name in the project properties:
    Note: The package name is used to package up all the COBOL-generated Java artifacts required for the Java code to interoperate with the COBOL.
    1. Ensure that your project is selected, then on the Project menu, click Properties.

      The Properties for <project-name> dialog box appears.

    2. Select Micro Focus > Project Settings > COBOL.
    3. Update the Package Name field to com.mycompany.demo4.

      Other settings are required for this example, such as the Java Interoperability Output Path set to src, and the project being built to a single native library file, but these are the default settings and so are already set.

    4. Click Apply and Close.
  3. Create the first COBOL program (demo4.cbl):
    1. Select the project in the COBOL Explorer view and click File > New > COBOL Program.
    2. In the New file name field, type demo4.cbl, and then click Finish.

      The program is opened in the editor.

    3. Replace the text with the following, and then save the program.
            $set nsymbol(national) 
             >>JAVA-CALLABLE
             program-id. demo4 as "demo4".
             working-storage section.
             >>JAVA-SHAREABLE ON
             01 Int1 pic 9(9) comp-5 value 10.
             01 Alpha1 pic x(100) value "Pink".
             01 Group1.
                03 colour1 pic x(10) occurs 10 value "Red" "Green" "Blue".
             01 Num1 pic S9(5)v9(5) comp-3 value 3141.59265.
             01 Nat1 pic n(20) value n"Unicode" national.
             >>JAVA-SHAREABLE OFF
             01 ed-num1 pic +9(5).9(5).
             procedure division.
                 display "--In COBOL Program demo4--"
                 display "Int1= " Int1
                 display "Alpha1= " Alpha1
                 display "colour1(1)= "colour1(1)
                 display "colour1(2)= "colour1(2)
                 display "colour1(3)= "colour1(3)
                 move num1 to ed-num1
                 display "Num1= " ed-num1
                 display "Nat1= " Nat1
             goback.
             end program demo4.

      If your workspace is set to build automatically, the program is compiled. If the workspace is not set to build automatically, on the Project menu, click Build Project.

  4. Create the second COBOL program (demo5.cbl):
    1. Select the project in the COBOL Explorer view and click File > New > COBOL Program.
    2. In the New file name field, type demo5.cbl, and then click Finish.

      The program is opened in the editor.

    3. Replace the text with the following, and then save the program.
            $set nsymbol(national) 
             >>JAVA-CALLABLE
             program-id. demo5 as "demo5".
             working-storage section.
             >>JAVA-SHAREABLE ON
             01 Group1.
                03 Group2.
                  05 item1 pic x(10) value "Purple".
                  05 Group3.
                    07 item2 pic x(10) value "Green".
             >>JAVA-SHAREABLE OFF
             01 3item pic 9(10).
             procedure division.
                 display "--In COBOL Program demo5--"
                 display "Item1= " item1
                 display "Item2= " item2
             goback.
             end program demo5.
      If your workspace is set to build automatically, the program is compiled. If the workspace is not set to build automatically, on the Project menu, click Build Project.
  5. Create the Java program (Demo4.java):
    1. Select the project in the COBOL Explorer view and click File > New > Other > Class, and then click Next.
    2. Ensure that the Source folder field specifies <project-name>/src, in the Package field enter com.mycompany.demo4, in the Name field, enter Demo4, and then click Finish.

      The program is opened in the editor.

    3. Replace the text with the following, and then save the program.
      package com.mycompany.demo4;
      import java.math.BigDecimal;
      
      public class Demo4
      {
          public static void main(String[] args)
          {
            System.out.println("--Java--");
            int i = strg.demo4.Int1.get();
            System.out.println("Int1= " + i);
            strg.demo4.Int1.put(10201);
      
            String s = strg.demo4.Alpha1.get();
            System.out.println("Alpha1= " + s);
            strg.demo4.Alpha1.put("Purple");
      
            strg.demo4.Group1.colour1[2].put("Yellow");
            strg.demo4.Group1.colour1[3].put("Cyan");
      
            BigDecimal num1 = strg.demo4.Num1.get();
            System.out.println("Num1= " + num1);
            strg.demo4.Num1.put(new BigDecimal("1579.1113"));
      
            String n = strg.demo4.Nat1.get();
            System.out.println("Nat1= " + n);
            strg.demo4.Nat1.put("abcdeFGHIJ");
      
            String i1 = strg.demo5.Group1.Group2.item1.get();
            System.out.println("Item1= " + i1);
            strg.demo5.Group1.Group2.item1.put("Orange");
      
            String i2 = strg.demo5.Group1.Group2.Group3.item2.get();
            System.out.println("Item1= " + i2);
            strg.demo5.Group1.Group2.Group3.item2.put("Yellow");
      
            progs.demo4();
            progs.demo5();
          }
      }

      If your workspace is set to build automatically, the program is compiled. If the workspace is not set to build automatically, on the Project menu, click Build Project.

  6. Create and execute the run configuration:
    1. Right-click the project in the COBOL Explorer view and select Run As > Run Configurations.
    2. Double-click the Java Application launch configuration.

      A new configuration is displayed in the right-hand pane.

    3. In the Name field, enter a name for the configuration.
    4. In the Main class field, enter com.mycompany.demo4.Demo4.
    5. Select the Arguments tab, and in the VM arguments field, enter the following argument:
      -Djava.library.path=<path-to-COBOL-output-folder> 

      replacing <path-to-COBOL-output-folder> with the full path name to the COBOL project's output folder.

    6. Click Apply, and then click Run.
    The following output is produced in the Console window:
    --Java--
    Int1= 10
    Alpha1= Pink                                                                                                
    Num1= 3141.59265
    Nat1= Unicode             
    Item1= Purple    
    Item1= Green     
    --In COBOL Program demo4--
    Int1= 0000010201
    Alpha1= Purple                                                                                              
    colour1(1)= Red       
    colour1(2)= Green     
    colour1(3)= Yellow    
    Num1= +01579.11130
    Nat1= abcdeFGHIJ          
    --In COBOL Program demo5--
    Item1= Orange    
    Item2= Yellow 

    The code and the output show the Java program accessing the working-storage data in the COBOL programs, even declaring Java variables using the values of the COBOL items. The Java code also calls both of the COBOL programs.