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

The following example demonstrates a Java program accessing a COBOL program's working-storage items, displaying them within Java, and then updating their values.

To use the Java and COBOL from within separate projects, see Java 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.demo2.

      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 COBOL program (demo2.cbl):
    1. Select the project in the COBOL Explorer view and click File > New > COBOL Program.
    2. In the New file name field, type demo2.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 sourceformat(variable)
             program-id. demo2 as "demo2".
             working-storage section.
             >>JAVA-SHAREABLE ON 
             01 grp1.
                03 i1 pic 9(8) comp-5 value 88888888.
                03 i2 pic 9(8) comp-5 value 12345678.
             >>JAVA-SHAREABLE OFF
             01 grp2.
                03 p1 pic x.
                03 p2 pic 9. 
             procedure division.
             display "start".
             display "value of shared CBL grp is: "
             display grp1::i1.
             display grp1::i2.
             end program demo2.

      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 Java program (Demo2.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.demo2, in the Name field, enter Demo2, 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.demo2;
      
      public class Demo2
       {
         public static void main(String[] args)
          {
            System.out.println("--COBOL items now accessible in Java--"); 
            int i1 = strg.demo2.grp1.i1.get();
            int i2 = strg.demo2.grp1.i2.get();      
            System.out.println("-- COBOL item i1 = " + i1);
            System.out.println("-- COBOL item i2 = " + i2);
            strg.demo2.grp1.i1.put(77777777);
            System.out.println("-- i1 updated from Java = " + strg.demo2.grp1.i1.get());
          }
       }

      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 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.demo2.Demo2.
    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:
    --COBOL items now accessible in Java--
    -- COBOL item i1 = 88888888
    -- COBOL item i2 = 12345678
    -- i1 updated from Java = 77777777

    The code and the output shows that the COBOL program has shared two PIC 9 COMP-5 items with the Java program. The Java program has used the get method to view the value of the COBOL data (to do this, the COMP-5 item was mapped to int types, as per Mapping COBOL Items and Java Types). The Java program then used the put method to change the value of the COBOL item (where again the mapping process was used, under the covers).