      Process pgmname(longmixed),lib,thread NSYMBOL(NATIONAL)
      ******************************************************
      * THIS PROGRAM IS CALLED TO PROCESS RECORDS          *
      * PASSED TO THIS PROGRAM THAT WILL THEN CALL THE JAVA*
      * CMS DRG JAR V38.1 DATA IS RETURNED TO CALLING PGM  *
      ******************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. "DRG381JV" RECURSIVE.
      ************************
      * ENV / DATA DIVISIONS *
      ************************
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       REPOSITORY.
           Class Base is "java.lang.Object"
           Class jstring is "jstring"
           Class Msdrg is
               "gov/cms/grouper/mainframe/Msdrg".
      *        "com/mmm/his/cer/msdrgmf/Msdrg".
       DATA DIVISION.
      ******************************************************
      * WORKING STORAGE                                    *
      ******************************************************
       WORKING-STORAGE SECTION.
       01  WS-Parm-String   object reference jstring.
       01  WS-Return-String object reference jstring.
       01  WS-Return-String-length object reference jstring.
       01  WS-length-field                   PIC S9(9) COMP-5.
       01  RC                                PIC S9(9) COMP-5.
       01  DEBUG-TRACKING.
           03 DISP-IND                       PIC X(01).
       01  WS-INTERFACE-AREA-1               PIC X(0639).
       01  WS-INTERFACE-AREA-2               PIC X(1163).
       01  WS-CNV-INTERFACE-AREA-1           PIC X(1163).
       01  WS-CNV-INTERFACE-AREA-2           PIC X(1163).
       01  WS-CCSID                          PIC 9(0005).
       01  WS-AREA                           PIC N(1163).
       01  WS-ASCII                          PIC X(1163).
       01  WS-EBCDIC                         PIC X(1163).
      ******************************************************
      ******************************************************
      * COMMUNICATION AREA                                 *
      ******************************************************
       LINKAGE SECTION.
       01  LNK-INTERFACE-AREA-1                  PIC X(0638).
       01  LNK-INTERFACE-AREA-2                  PIC X(1162).
       COPY JNI.
      ******************************************************
      * PROGRAM EXECUTION                                  *
      ******************************************************
       PROCEDURE DIVISION USING
                 LNK-INTERFACE-AREA-1
                 LNK-INTERFACE-AREA-2.
       0100-MAINLINE.
           SET ADDRESS OF JNIENV TO JNIENVPTR
           SET ADDRESS OF JNINATIVEINTERFACE TO JNIENV
           MOVE LNK-INTERFACE-AREA-1 TO WS-INTERFACE-AREA-1.
           MOVE 'N'    TO DISP-IND.
           IF LNK-INTERFACE-AREA-1 (638:1) = 'Y'
              MOVE 'Y' TO DISP-IND.
           IF DISP-IND = 'Y'
              DISPLAY "0100 COMPILE DATE 01/26/2021"
              DISPLAY "     COBOL PROGRAM DRG381JV ENTERED"
              DISPLAY "     LNK-INTERFACE-AREA-1          "
                            LNK-INTERFACE-AREA-1.
      *------------------------------------------------------------*
      *    Call NewStringPlatform to convert from EBCDIC to jstring
      *------------------------------------------------------------*
           CALL "NewStringPlatform"
               USING BY VALUE   JNIEnvPtr
                     ADDRESS OF WS-INTERFACE-AREA-1
                     ADDRESS OF WS-Parm-String
                     0
                     RETURNING RC
           IF RC NOT = ZERO THEN
              DISPLAY "Error occurred creating jstring OBJECT"
              STOP RUN
           END-IF.
      *------------------------------------------------------------*
      *    Call (processMsdrg) method
      *------------------------------------------------------------*
           IF DISP-IND = 'Y'
              DISPLAY "    JUST BEFORE processMsdrg CALL".
           INVOKE Msdrg "processMsdrg"
                  USING   BY VALUE
                             WS-Parm-String
                  RETURNING  WS-Return-String
           END-INVOKE.
           IF DISP-IND = 'Y'
              DISPLAY "   RETURNED FROM JAVA processMsdrg TO DRG381JV".
      *------------------------------------------------------------*
      *    Call getStringPlatform to convert from jstring to EBCDIC
      *------------------------------------------------------------*
           IF DISP-IND = 'Y'
              DISPLAY "     ABOUT TO CALL GetStringPlatform".
           CALL "GetStringPlatform"
               USING BY VALUE   JNIEnvPtr
                     WS-Return-String
                     ADDRESS OF WS-INTERFACE-AREA-2
                     LENGTH  OF WS-INTERFACE-AREA-2
                     0
                     RETURNING RC
           IF DISP-IND = 'Y'
           DISPLAY "1st 440 char of string displayed       "
                    WS-INTERFACE-AREA-2 (1:440)
           DISPLAY "1st 2 bytes are RC                     "
                    WS-INTERFACE-AREA-2 (1:2)
           DISPLAY "bytes 3-4   are MDC                    "
                    WS-INTERFACE-AREA-2 (3:2)
           DISPLAY "bytes 5-8   are DRG                    "
                    WS-INTERFACE-AREA-2 (5:4).
           IF RC NOT = ZERO
              DISPLAY "Error occurred creating EBCDIC  OBJECT"
              DISPLAY "RETURN CODE " RC
              STOP RUN
           END-IF.
           IF DISP-IND = 'Y'
              DISPLAY "     BACK FROM CALL TO GetStringPlatform"
              DISPLAY "     WS-INTERFACE-AREA-2         "
                            WS-INTERFACE-AREA-2.
           MOVE WS-INTERFACE-AREA-2 TO LNK-INTERFACE-AREA-2.
      *------------------------------------------------------------*
      *    Call DeleteLocalRef to free up jstring object
      *------------------------------------------------------------*
      *    IF DISP-IND = 'Y'
      *       DISPLAY 'Del Local Ref WS-Parm-String '.
      *    CALL  DeleteLocalRef
      *        USING BY VALUE   JNIEnvPtr
      *              WS-Parm-String.
      *------------------------------------------------------------*
      *    Call DeleteLocalRef to free up jstring object
      *------------------------------------------------------------*
      *    IF DISP-IND = 'Y'
      *       DISPLAY 'Del Local Ref WS-Return-String '.
      *    CALL  DeleteLocalRef
      *        USING BY VALUE   JNIEnvPtr
      *              WS-Return-String.
           GOBACK.
