IBM Support

Example of COBOL Calling Java

Troubleshooting


Problem

This example uses two includes that can be found in QSYSINC/QCBLLESRC. Note that the include is for JDK 11INIT is based off the Java Native Interface Specifications for Release 1.1.

Resolving The Problem

This example uses two includes that can be found in QSYSINC/QCBLLESRC. Note that the include is for JDK 11INIT is based off the Java Native Interface Specifications for Release 1.1. We provide an include for JDK 1.1.x only. If you are not using JDK 1.1.x, find the Java Native Interface Specifications for the release you will be using, and modify the copybook.

Note the lines in red that must be changed.

Source for COBOL program:              
         
       PROCESS MAP NOMONOPRC NOSTDTRUNC OPTIONS THREAD(SERIALIZE).

      *** COBOL calls to invoke Java methods
      *****************************************************************
      * Taken from the ILE COBOL Programmer's Guide Ch 10 - Fig 63.   *
      *****************************************************************

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELLOWORLD.
       Author.
       INSTALLATION.
       DATE-WRITTEN.
       DATE-COMPILED.

       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. IBM-AS400.
       OBJECT-COMPUTER. IBM-AS400.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.

       DATA DIVISION.
       FILE SECTION.
       WORKING-STORAGE SECTION.

      *** JDK 1.1 VM initialization arguments

       COPY JDK11INIT.

       01 JVM-PTR USAGE POINTER.
       01 ENV-PTR USAGE POINTER.
       01 VM-ARGS-PTR USAGE POINTER.

       01 RC1 PIC S9(9) BINARY VALUE 1.
       01 RC2 PIC S9(9) BINARY VALUE 1.
       01 RC3 PIC S9(9) BINARY VALUE 1.

       01 CLASS-NAME PIC X(30).
       01 CLASS-NAME-PTR USAGE POINTER.

       01 METHOD-NAME PIC X(30).
       01 METHOD-NAME-PTR USAGE POINTER.

       01 SIGNATURE-NAME PIC X(45).
       01 SIGNATURE-NAME-PTR USAGE POINTER.

      *** Parameters for QDCXLATE- EBCDIC to ASCII translation
       01 QDCXLATE-TABLE PIC X(10) VALUE "QASCII".
       01 QDCXLATE-TABLE1 PIC X(10) VALUE "QEBCDIC".

      *** CLASSPATH Parameters
       01 CLASSPATH-LENGTH PIC 9(5) COMP-3 VALUE 14.              These two must be changed
       01 CLASSPATH-STRING PIC X(14) VALUE ":/home/myclass".      to match the path to the Java
       01 CLASSPATH-NEW PIC X(500).                               program.

      *** "HelloWorldCbl" CLASS Parameters
       01 HELLOWORLD-CLASS-LENGTH PIC 9(5) COMP-3 VALUE 13.
       01 HELLOWORLD-CLASS-STRING PIC X(13) VALUE "HelloWorldCbl".

      *** "java/lang/String" CLASS Parameters
       01 STRING-CLASS-LENGTH PIC 9(5) COMP-3 VALUE 16.
       01 STRING-CLASS-STRING PIC X(16) VALUE "java/lang/String".

      *** "<init>" METHOD Parameters
       01 INIT-METHOD-LENGTH PIC 9(5) COMP-3 VALUE 6.
       01 INIT-METHOD-STRING PIC X(6) VALUE "<init>".
       01 INIT-SIGNATURE-LENGTH PIC 9(5) COMP-3 VALUE 3.
       01 INIT-SIGNATURE-STRING PIC X(3) VALUE "()V".

      *** "main" METHOD Parameters
       01 MAIN-METHOD-LENGTH PIC 9(5) COMP-3 VALUE 4.
       01 MAIN-METHOD-STRING PIC X(4) VALUE "main".
       01 MAIN-SIGNATURE-LENGTH PIC 9(5) COMP-3 VALUE 22.
       01 MAIN-SIGNATURE-STRING PIC X(22) VALUE
           X"285B4C6A6176612F6C616E672F537472696E673B2956".
      * Note: QDCXLATEwill not translate '[' correctly
      * for signature "([Ljava/lang/String;)V".

      *** "display" METHOD Parameters
       01 DISPLAY-METHOD-LENGTH PIC 9(5) COMP-3 VALUE 7.
       01 DISPLAY-METHOD-STRING PIC X(7) VALUE "display".
       01 DISPLAY-SIGNATURE-LENGTH PIC 9(5) COMP-3 VALUE 6.
       01 DISPLAY-SIGNATURE-STRING PIC X(6) VALUE
           X"285B49492956".
      * Note: QDCXLATEwill not translate '[' correctly
      * for signature "([II)V".

      *** "addone" METHOD Parameters
       01 ADDONE-METHOD-LENGTH PIC 9(5) COMP-3 VALUE 6.
       01 ADDONE-METHOD-STRING PIC X(6) VALUE "addone".
       01 ADDONE-SIGNATURE-LENGTH PIC 9(5) COMP-3 VALUE 6.
       01 ADDONE-SIGNATURE-STRING PIC X(6) VALUE
           X"285B49492949".
      * Note: QDCXLATEwill not translate '[' correctly
      * for signature "([II)I".

      *** "dspchr" METHOD Parameters
      ***  X"28285B4C6A6176612F6C616E672F537472696E673B29".
       01 DSPCHR-METHOD-LENGTH PIC 9(5) COMP-3 VALUE 6.
       01 DSPCHR-METHOD-STRING PIC X(6) VALUE "dspchr".
       01 DSPCHR-SIGNATURE-LENGTH PIC 9(5) COMP-3 VALUE 39.
       01 DSPCHR-SIGNATURE-STRING.
      *    05 DSPCHR-SIG1 PIC X(22) VALUE
           05 DSPCHR-SIG1 PIC X(21) VALUE
           X"285B4C6A6176612F6C616E672F537472696E673B29".
           05 DSPCHR-SIG2 PIC X(19) VALUE
           X"5B4C6A6176612F6C616E672F537472696E673B".

      * Note: QDCXLATEwill not translate '[' correctly
      * for signature "(([Ljava/lang/String;)[Ljava/lang/String;".


      *** Object Reference Variables

       01 MY-CLASS-REF PIC S9(9) BINARY.
       01 STRING-CLASS-REF PIC S9(9) BINARY.
       01 METHOD-ID PIC S9(9) BINARY.
       01 INIT-METHOD-ID PIC S9(9) BINARY.
       01 STATIC-METHOD-ID PIC S9(9) BINARY.
       01 OBJECT-REF PIC S9(9) BINARY.
       01 ARG-REF PIC S9(9) BINARY.
       01 STRING-REF PIC S9(9) BINARY.
       01 RETURN-INT PIC S9(9) BINARY.
       01 MY-PTR USAGE POINTER.

      *** Parameter Array for calling METHODA
       01 PARM-ARRAY.
          05 PARM-ARRAY-ELEMENT OCCURS 10 TIMES.
             10 PARM-ARRAY-ELEMENT-VALUE PIC S9(9) BINARY.
             10 FILLER PIC X(4).

       01 PARM-ARRAY-PTR USAGE POINTER.

       01 STRING-ONE-VALUE  PIC X(10) VALUE "First Parm".
       01 STRING-ONE-LENGTH  PIC 9(5) COMP-3 VALUE 10.

       01 STRING-TWO-VALUE  PIC X(11) VALUE "Second Parm".
       01 STRING-TWO-LENGTH  PIC 9(5) COMP-3 VALUE 11.

       01 STRING-THREE-VALUE  PIC X(10) VALUE "Third Parm".
       01 STRING-THREE-LENGTH  PIC 9(5) COMP-3 VALUE 10.

       01 STRING-FOUR-VALUE  PIC X(11) VALUE "Fourth Parm".
       01 STRING-FOUR-LENGTH  PIC 9(5) COMP-3 VALUE 11.

       01 STRING-PTR USAGE POINTER.
       01 STRING-OBJECT-PTR USAGE POINTER.
       01 STRING-UTF-LENGTH PIC S9(9) BINARY.
       01 STRING-OBJECT-REF PIC S9(9) BINARY.
       01 ARRAY-OBJECT-REF PIC S9(9) BINARY.

       01 ARRAY-LENGTH PIC S9(9) BINARY.
       01 ARRAY-INDEX  PIC S9(9) BINARY.
       01 RETURN-STRING-VALUE PIC X(40).

       LINKAGE SECTION.

      *** JNI interface function table
       COPY JNI.

       01 INTERFACE-PTR USAGE POINTER.
       01 JVM PIC S9(9) BINARY.

       01 CLASSPATH-DEFAULT PIC X(550).
       01 MY-STRING   PIC X(11).

       PROCEDURE DIVISION.
       MAIN-LINE SECTION.
       MAIN-PROGRAM-LOGIC.

      *** Retrieve default JVM initialization arguments
           SET VM-ARGS-PTR TO ADDRESS OF VM-INIT-ARGS.
           CALL PROCEDURE "JNI_GetDefaultJavaVMInitArgs"
                USING VM-INIT-ARGS
                RETURNING INTO RC1.

      *    DISPLAY "JNI_GetDefaultJavaVMInitArgs: " RC1.

      *** Append my classpath (:/home/myclass) to CLASSPATH
           SET ADDRESS OF CLASSPATH-DEFAULT TO CLASSPATH.

           CALL "QDCXLATE" USING CLASSPATH-LENGTH
                                 CLASSPATH-STRING
                                 QDCXLATE-TABLE.

           STRING CLASSPATH-DEFAULT DELIMITED BY X"00"
                  CLASSPATH-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
           INTO CLASSPATH-NEW.

           SET CLASSPATH TO ADDRESS OF CLASSPATH-NEW.

      *** Load and initialize the Java VM
           CALL PROCEDURE "JNI_CreateJavaVM"
           USING JVM-PTR ENV-PTR VM-INIT-ARGS
           RETURNING INTO RC2.

      *    DISPLAY "JNI_CreateJavaVM: " RC2.

           SET ADDRESS OF INTERFACE-PTR TO ENV-PTR.
           SET ADDRESS OF JNI-NATIVE-INTERFACE TO INTERFACE-PTR.

      *** Callback JNI interface function FIND-CLASS "HelloWorldCbl"

           CALL "QDCXLATE" USING HELLOWORLD-CLASS-LENGTH
                                 HELLOWORLD-CLASS-STRING
                                 QDCXLATE-TABLE.

           STRING HELLOWORLD-CLASS-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
           INTO CLASS-NAME.

           SET CLASS-NAME-PTR TO ADDRESS OF CLASS-NAME.

           CALL FIND-CLASS USING BY VALUE ENV-PTR
                                          CLASS-NAME-PTR
                           RETURNING INTO MY-CLASS-REF.

      *    DISPLAY "Class Ref: " MY-CLASS-REF.

      *** Callback JNI interface function FIND-CLASS "java/lang/String"
           CALL "QDCXLATE" USING STRING-CLASS-LENGTH
                                 STRING-CLASS-STRING
                                 QDCXLATE-TABLE.

           STRING STRING-CLASS-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
           INTO CLASS-NAME.

           SET CLASS-NAME-PTR TO ADDRESS OF CLASS-NAME.

           CALL FIND-CLASS USING BY VALUE ENV-PTR
                                          CLASS-NAME-PTR
                           RETURNING INTO STRING-CLASS-REF.

      *    DISPLAY "String Class Ref: " STRING-CLASS-REF.

      *** Callback JNI interface function GET-METHOD-ID "<init>"
      *** to retrieve constructor method ID

           CALL "QDCXLATE" USING INIT-METHOD-LENGTH
                                 INIT-METHOD-STRING
                                 QDCXLATE-TABLE.

           STRING INIT-METHOD-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
           INTO METHOD-NAME.

           CALL "QDCXLATE" USING INIT-SIGNATURE-LENGTH
                                 INIT-SIGNATURE-STRING
                                 QDCXLATE-TABLE.

           STRING INIT-SIGNATURE-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
           INTO SIGNATURE-NAME.

           SET METHOD-NAME-PTR TO ADDRESS OF METHOD-NAME.
           SET SIGNATURE-NAME-PTR TO ADDRESS OF SIGNATURE-NAME.

           CALL GET-METHOD-ID USING BY VALUE ENV-PTR
                                             MY-CLASS-REF
                                             METHOD-NAME-PTR
                                             SIGNATURE-NAME-PTR
                              RETURNING INTO INIT-METHOD-ID.

      *    DISPLAY "Init Method ID: " INIT-METHOD-ID.

      *** Callback JNI interface function NEW-OBJECT "HelloWorldCbl"

           CALL NEW-OBJECT USING BY VALUE ENV-PTR
                                          MY-CLASS-REF
                                          INIT-METHOD-ID
                           RETURNING INTO OBJECT-REF.

      *    DISPLAY "Object Ref: " OBJECT-REF.

      *** Callback JNI interface function GET-STATIC-METHOD-ID "main"

           CALL "QDCXLATE" USING MAIN-METHOD-LENGTH
                                 MAIN-METHOD-STRING
                                 QDCXLATE-TABLE.

           STRING MAIN-METHOD-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO METHOD-NAME.

           STRING MAIN-SIGNATURE-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO SIGNATURE-NAME.

           SET METHOD-NAME-PTR TO ADDRESS OF METHOD-NAME.
           SET SIGNATURE-NAME-PTR TO ADDRESS OF SIGNATURE-NAME.

           CALL GET-STATIC-METHOD-ID USING BY VALUE ENV-PTR
                                              MY-CLASS-REF
                                              METHOD-NAME-PTR
                                              SIGNATURE-NAME-PTR
                                     RETURNING INTO STATIC-METHOD-ID.

      *    DISPLAY "Static Method ID: " STATIC-METHOD-ID.

      *** Callback JNI interface function NEW-OBJECT-ARRAY

           CALL NEW-OBJECT-ARRAY USING BY VALUE ENV-PTR
                                                0
                                                STRING-CLASS-REF
                                                0
                                 RETURNING INTO ARG-REF.

      *    DISPLAY "Arg Ref: " ARG-REF.

      *** Callback JNI interface function CALL-STATIC-VOID-METHODA

           SET PARM-ARRAY-PTR TO ADDRESS OF PARM-ARRAY.

           INITIALIZE PARM-ARRAY.

           MOVE ARG-REF TO PARM-ARRAY-ELEMENT-VALUE(1).

           CALL CALL-STATIC-VOID-METHODA USING BY VALUE ENV-PTR
                                                        MY-CLASS-REF
                                                    STATIC-METHOD-ID
                                                      PARM-ARRAY-PTR.

      *** Callback JNI interface function GET-METHOD-ID "display"

           CALL "QDCXLATE" USING DISPLAY-METHOD-LENGTH
                                 DISPLAY-METHOD-STRING
                                 QDCXLATE-TABLE.

           STRING DISPLAY-METHOD-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO METHOD-NAME.

           STRING DISPLAY-SIGNATURE-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO SIGNATURE-NAME.

           SET METHOD-NAME-PTR TO ADDRESS OF METHOD-NAME.
           SET SIGNATURE-NAME-PTR TO ADDRESS OF SIGNATURE-NAME.

           CALL GET-METHOD-ID USING BY VALUE ENV-PTR
                                             MY-CLASS-REF
                                             METHOD-NAME-PTR
                                             SIGNATURE-NAME-PTR
                              RETURNING INTO METHOD-ID.

      *    DISPLAY "Method ID: " METHOD-ID.

      *** Callback JNI interface function NEW-INT-ARRAY

           CALL NEW-INT-ARRAY USING BY VALUE ENV-PTR
                                             10
                              RETURNING INTO ARG-REF.

      *    DISPLAY "Arg Ref: " ARG-REF.

      *** Callback JNI interface function CALL-VOID-METHODA

           SET PARM-ARRAY-PTR TO ADDRESS OF PARM-ARRAY.

           INITIALIZE PARM-ARRAY.

           MOVE ARG-REF TO PARM-ARRAY-ELEMENT-VALUE(1).
           MOVE 2 TO PARM-ARRAY-ELEMENT-VALUE(2).

           CALL CALL-VOID-METHODA USING BY VALUE ENV-PTR
                                                 OBJECT-REF
                                                 METHOD-ID
                                                 PARM-ARRAY-PTR.

      *** Callback JNI interface function GET-METHOD-ID "addone"

           CALL "QDCXLATE" USING ADDONE-METHOD-LENGTH
                                 ADDONE-METHOD-STRING
                                 QDCXLATE-TABLE.

           STRING ADDONE-METHOD-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO METHOD-NAME.

           STRING ADDONE-SIGNATURE-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO SIGNATURE-NAME.

           SET METHOD-NAME-PTR TO ADDRESS OF METHOD-NAME.
           SET SIGNATURE-NAME-PTR TO ADDRESS OF SIGNATURE-NAME.

           CALL GET-METHOD-ID USING BY VALUE ENV-PTR
                                             MY-CLASS-REF
                                             METHOD-NAME-PTR
                                             SIGNATURE-NAME-PTR
                              RETURNING INTO METHOD-ID.

      *    DISPLAY "Method ID: " METHOD-ID.

      *** Callback JNI interface function CALL-INT-METHODA

           DISPLAY "Sent Param Value = "
                   PARM-ARRAY-ELEMENT-VALUE(2).

           CALL CALL-INT-METHODA USING BY VALUE ENV-PTR
                                                 OBJECT-REF
                                                 METHOD-ID
                                                 PARM-ARRAY-PTR
                   RETURNING INTO RETURN-INT.

           DISPLAY "Returned Param Value = "
                   RETURN-INT.

      *** Callback JNI interface function GET-METHOD-ID "dspchr"

      *** Callback JNI interface function NEW-STRING-ARRAY


           CALL "QDCXLATE" USING DSPCHR-METHOD-LENGTH
                                 DSPCHR-METHOD-STRING
                                 QDCXLATE-TABLE.

           STRING DSPCHR-METHOD-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO METHOD-NAME.

           STRING DSPCHR-SIGNATURE-STRING DELIMITED BY SIZE
                  X"00" DELIMITED BY SIZE
            INTO SIGNATURE-NAME.

           SET METHOD-NAME-PTR TO ADDRESS OF METHOD-NAME.
           SET SIGNATURE-NAME-PTR TO ADDRESS OF SIGNATURE-NAME.

           CALL GET-METHOD-ID USING BY VALUE ENV-PTR
                                             MY-CLASS-REF
                                             METHOD-NAME-PTR
                                             SIGNATURE-NAME-PTR
                              RETURNING INTO METHOD-ID.

      *    DISPLAY "Method ID: " METHOD-ID.


      *** Callback JNI interface function NEW-OBJECT-ARRAY


      *    DISPLAY "Arg Ref: " ARG-REF.

           CALL "QDCXLATE" USING STRING-ONE-LENGTH
                                 STRING-ONE-VALUE
                                 QDCXLATE-TABLE.



           SET STRING-PTR TO ADDRESS OF STRING-ONE-VALUE.

           CALL NEW-STRING-UTF USING BY VALUE ENV-PTR
                                          STRING-PTR
                           RETURNING INTO STRING-OBJECT-REF.

           CALL NEW-OBJECT-ARRAY USING BY VALUE ENV-PTR
                                                4
                                                STRING-CLASS-REF
                                                STRING-OBJECT-REF
                                 RETURNING INTO ARG-REF.


           CALL SET-OBJECT-ARRAY-ELEMENT USING BY VALUE ENV-PTR
                                                ARG-REF
                                                0
                                                STRING-OBJECT-REF.

           CALL "QDCXLATE" USING STRING-TWO-LENGTH
                                 STRING-TWO-VALUE
                                 QDCXLATE-TABLE.



           SET STRING-PTR TO ADDRESS OF STRING-TWO-VALUE.

           CALL NEW-STRING-UTF USING BY VALUE ENV-PTR
                                          STRING-PTR
                           RETURNING INTO STRING-OBJECT-REF.

           CALL GET-STRING-UTF-LENGTH USING BY VALUE ENV-PTR
                                           STRING-OBJECT-REF
                           RETURNING INTO STRING-UTF-LENGTH.

           DISPLAY "STRING TWO LENGTH: "  STRING-UTF-LENGTH.

           CALL SET-OBJECT-ARRAY-ELEMENT USING BY VALUE ENV-PTR
                                                ARG-REF
                                                1
                                                STRING-OBJECT-REF.

           CALL "QDCXLATE" USING STRING-THREE-LENGTH
                                 STRING-THREE-VALUE
                                 QDCXLATE-TABLE.



           SET STRING-PTR TO ADDRESS OF STRING-THREE-VALUE.

           CALL NEW-STRING-UTF USING BY VALUE ENV-PTR
                                          STRING-PTR
                           RETURNING INTO STRING-OBJECT-REF.

           CALL SET-OBJECT-ARRAY-ELEMENT USING BY VALUE ENV-PTR
                                                ARG-REF
                                                2
                                                STRING-OBJECT-REF.

           CALL "QDCXLATE" USING STRING-FOUR-LENGTH
                                 STRING-FOUR-VALUE
                                 QDCXLATE-TABLE.



           SET STRING-PTR TO ADDRESS OF STRING-FOUR-VALUE.

           CALL NEW-STRING-UTF USING BY VALUE ENV-PTR
                                          STRING-PTR
                           RETURNING INTO STRING-OBJECT-REF.

           CALL SET-OBJECT-ARRAY-ELEMENT USING BY VALUE ENV-PTR
                                                ARG-REF
                                                3
                                                STRING-OBJECT-REF.


           INITIALIZE PARM-ARRAY.

           MOVE ARG-REF TO PARM-ARRAY-ELEMENT-VALUE(1).

           CALL CALL-OBJECT-METHODA USING BY VALUE ENV-PTR
                                                 OBJECT-REF
                                                 METHOD-ID
                                                 PARM-ARRAY-PTR
                                  RETURNING INTO ARRAY-OBJECT-REF.

           CALL GET-ARRAY-LENGTH  USING BY VALUE ENV-PTR
                                                 ARRAY-OBJECT-REF
                                  RETURNING INTO ARRAY-LENGTH.

           PERFORM  VARYING ARRAY-INDEX FROM 0  BY 1
                    UNTIL ARRAY-INDEX = ARRAY-LENGTH

           DISPLAY "ARRAY-INDEX: " ARRAY-INDEX

           CALL GET-OBJECT-ARRAY-ELEMENT USING BY VALUE ENV-PTR
                                                     ARRAY-OBJECT-REF
                                                     ARRAY-INDEX
                                  RETURNING INTO STRING-OBJECT-REF
           CALL GET-STRING-UTF-LENGTH USING BY VALUE ENV-PTR
                                                     STRING-OBJECT-REF
                                  RETURNING INTO STRING-UTF-LENGTH
           MOVE STRING-UTF-LENGTH TO STRING-FOUR-LENGTH
           SET MY-PTR TO NULL
           CALL GET-STRING-UTF-CHARS USING BY VALUE ENV-PTR
                                                    STRING-OBJECT-REF
                                                    MY-PTR
                                  RETURNING INTO STRING-PTR
           SET ADDRESS OF MY-STRING TO STRING-PTR
           MOVE MY-STRING TO STRING-FOUR-VALUE
           CALL "QDCXLATE" USING STRING-FOUR-LENGTH
                                 STRING-FOUR-VALUE
                                 QDCXLATE-TABLE1
           DISPLAY "STRING:" STRING-FOUR-VALUE
           CALL RELEASE-STRING-UTF-CHARS USING BY VALUE ENV-PTR
                                                    STRING-OBJECT-REF
                                                    STRING-PTR
           END-PERFORM.


      *** Destroy the Java VM

           SET ADDRESS OF JVM TO JVM-PTR.

           CALL PROCEDURE "DestroyJavaVM"
                USING JVM
                RETURNING INTO RC3.

           DISPLAY "DestroyJavaVM: " RC3.

           GOBACK.                                                                      
                                   

Java Code for program HelloWorldCbl.java:

class HelloWorldCbl {

    public static void main(String[] args) {
    HelloWorldCbl myobj = new HelloWorldCbl();
    String[] mystr = new String[4];

        System.out.println("Hello World");
        mystr[0] = "parm1";
        mystr[1] = "parm2";
        mystr[2] = "parm3";
        mystr[3] = "parm4";
        myobj.dspchr(mystr);

    }

    void display(int[] args, int i) {

        System.out.println("Length of integer arrar is " + args.length);
        System.out.println("Value of integer variable is " + i);
        System.out.println("Bye World");
    }

    int addone(int[] args, int i) {

        ++i;
        return i;
    }
    String[] dspchr(String[] args) {
        int j;
        String newargs[] = new String[args.length];

        System.out.println("Value of args 0 " + args[0]);
        System.out.println("Value of args 1 " + args[1]);
        System.out.println("Value of args 2 " + args[2]);
        System.out.println("Value of args 3 " + args[3]);
        for (int i = 0; i < args.length; i++) {
           j = args.length - i - 1;
           newargs[j] = args[i];
           }
        return newargs;
    }

}                                  
                                                               

[{"Type":"MASTER","Line of Business":{"code":"LOB68","label":"Power HW"},"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"ARM Category":[{"code":"a8m3p000000F98bAAC","label":"Programming ILE Languages-\u003ECOBOL"}],"ARM Case Number":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions"}]

Historical Number

28751644

Document Information

Modified date:
09 December 2024

UID

nas8N1016744