cbl dll,thread,lib * IDENTIFICATION DIVISION. *----------------------- PROGRAM-ID. PTCBMAIN RECURSIVE. ENVIRONMENT DIVISION. *-------------------- CONFIGURATION SECTION. SPECIAL-NAMES. C01 IS TO-TOP-OF-PAGE. REPOSITORY. Class javaPerf is "javaPerf" Class JavaException is "java.lang.Exception" Class UserControlledTransaction is "com.ibm.batch.spi.UserControlledTransactionHelper". DATA DIVISION. WORKING-STORAGE SECTION. 01 ex object reference JavaException. 01 HELLO-OPRNS. 10 HELLO-CHAR PIC X(20). 01 I PIC S9(9) BINARY. 01 J PIC S9(9) BINARY. 01 NCOMMN PIC S9(9) BINARY. 01 COUNTINS PIC S9(9) BINARY. 01 TAIL PIC S9(9) BINARY. 01 TABLENUM PIC S9(9) BINARY. 01 DB2CALLN PIC 9(9) BINARY. 01 JAVCALLN PIC 9(9) BINARY. 01 JAVRC PIC S9(9) BINARY. 01 COBRC PIC S9(9) BINARY. COPY JCOB. *-------------------- LINKAGE SECTION. COPY JNI. 01 INPARM PIC X(80). 01 CALPARMS REDEFINES INPARM. 05 FILLER PIC X(2). 05 DB2CAL PIC X(9). 05 SEPARATOR PIC X(1). 05 JAVCAL PIC X(9). 05 SEPARATOR PIC X(1). 05 TABNUM PIC X(2). 05 SEPARATOR PIC X(1). 05 NCOMM PIC X(9). 05 SEPARATOR PIC X(1). 05 DEBUG PIC X(1). *-------------------- PROCEDURE DIVISION USING INPARM. ***************************************************** * MAIN PROGRAM ROUTINE * ***************************************************** PROG-START. MOVE 0 to RETURN-CODE. SET ADDRESS OF JNIENV TO JNIENVPTR SET ADDRESS OF JNINATIVEINTERFACE TO JNIENV MOVE DB2CAL to DB2CALLN. MOVE JAVCAL to JAVCALLN. MOVE TABNUM to TABLENUM. MOVE NCOMM to NCOMMN. DISPLAY "--------------------------------------------------" UPON CONSOLE. DISPLAY "Cobol main performance test" UPON CONSOLE. IF DEBUG = 'Y' Display "Count of COBOL Helloworld calls:" DB2CALLN Display "Count of JAVA Helloworld calls:" JAVCALLN Display "Number of HELLOWLD table:" TABLENUM Display "Number of insertions between commits:" NCOMMN DISPLAY "DB2 from COBOL test started: " DB2CAL. MOVE 0 TO I. MOVE 0 TO COUNTINS. CALL-DB2. IF DB2CALLN - I < NCOMMN COMPUTE TAIL = DB2CALLN - I ELSE MOVE NCOMMN TO TAIL. MOVE 0 TO J. CALL-DB2-BC. ADD 1 TO J. ADD 1 TO COUNTINS. CALL "PTCOBHLW" USING COUNTINS TABLENUM RETURNING COBRC. IF DEBUG = 'Y' Display COUNTINS ": Returned from COBOL. RC=" COBRC. IF RETURN-CODE < COBRC MOVE COBRC TO RETURN-CODE. IF J < TAIL AND RETURN-CODE = 0 GO TO CALL-DB2-BC. Invoke UserControlledTransaction "commit" Perform ErrorCheck. IF DEBUG = 'Y' DISPLAY COUNTINS ": COMMIT went ok". ADD NCOMMN TO I. IF I < DB2CALLN AND RETURN-CODE = 0 GO TO CALL-DB2. IF DEBUG = 'Y' DISPLAY "DB2 called " COUNTINS " times". IF RETURN-CODE NOT = 0 IF DEBUG = 'Y' DISPLAY "Test ended" END-IF GO TO PROG-END. IF DEBUG = 'Y' DISPLAY "DB2 from JAVA test started: " JAVCAL. MOVE 0 TO I. MOVE 0 TO COUNTINS. CALL-JAVA. IF JAVCALLN - I < NCOMMN COMPUTE TAIL = JAVCALLN - I ELSE MOVE NCOMMN TO TAIL. MOVE 0 TO J. CALL-JAVA-BC. ADD 1 TO J. ADD 1 TO COUNTINS. Invoke javaPerf "DB2call" using by value COUNTINS TABLENUM returning JAVRC. IF DEBUG = 'Y' Display COUNTINS ": Returned from JAVA. RC=" JAVRC. IF RETURN-CODE < JAVRC MOVE JAVRC TO RETURN-CODE. Perform ErrorCheck. IF J < TAIL AND RETURN-CODE = 0 GO TO CALL-JAVA-BC. Invoke UserControlledTransaction "commit" Perform ErrorCheck. IF DEBUG = 'Y' DISPLAY COUNTINS ": COMMIT went ok". ADD NCOMMN TO I. IF I < JAVCALLN AND RETURN-CODE = 0 GO TO CALL-JAVA. IF DEBUG = 'Y' DISPLAY "Test ended after " COUNTINS " JAVA calls". PROG-END. IF RETURN-CODE = 0 DISPLAY "Everything went OK" UPON CONSOLE ELSE DISPLAY "Something went wrong. rc=" RETURN-CODE UPON CONSOLE. DISPLAY "--------------------------------------------------" UPON CONSOLE. GOBACK. ***************************************************** * Java Exception Check * ***************************************************** ErrorCheck. Call ExceptionOccurred using by value JNIEnvPtr returning ex If ex not = null then Call ExceptionClear using by value JNIEnvPtr Display "Caught an unexpected exception" Upon Console Invoke ex "printStackTrace" IF RETURN-CODE < 4 MOVE 4 to RETURN-CODE End-if.