       IDENTIFICATION DIVISION.
       PROGRAM-ID. LEXER2B.
       ENVIRONMENT DIVISION.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
      * API Parms
       01 daemongroup                  PIC X(8) VALUE LOW-VALUES.
       01 node-name                    PIC X(8).
       01 server-name                  PIC X(8).
       01 register-name                PIC X(12) VALUE SPACES.
       01 minconn                      PIC 9(8) COMP VALUE 1.
       01 maxconn                      PIC 9(8) COMP VALUE 10.
       01 regopts                      PIC 9(8) COMP VALUE 0.
       01 urgopts                      PIC 9(8) COMP VALUE 0.
      * Invoke Parms
       01 service-name                 PIC X(255).
       01 service-name-length          PIC 9(8) COMP.
       01 rqst-area                    PIC X(100) VALUE SPACES.
       01 rqst-area-addr               USAGE POINTER.
       01 rqst-area-length             PIC 9(8) COMP VALUE 100.
       01 resp-area                    PIC X(100) VALUE SPACES.
       01 resp-area-addr               USAGE POINTER.
       01 resp-area-length             PIC 9(8) COMP VALUE 100.
       01 wait-time                    PIC 9(8) USAGE BINARY.
       01 rqst-type                    PIC 9(8) COMP VALUE 1.
       01 rc                           PIC 9(8) COMP VALUE 0.
       01 rsn                          PIC 9(8) COMP VALUE 0.
       01 rv                           PIC 9(8) COMP VALUE 0.
      * Working Variables
       01 text-msg                     PIC X(40) VALUE SPACES.
       01 text-msg-with-counter        PIC X(45) VALUE SPACES.
       01 stop-loop-flag               PIC 9(1) COMP VALUE 0.
       01 loop-limit                   PIC 9(4) COMP VALUE 0.
       01 loop-counter                 PIC 9(4) COMP VALUE 0.
       01 loop-counter-text            PIC X(5) VALUE SPACES.

      * Procedures Section
       PROCEDURE DIVISION.
       MAINLINE SECTION.
           MOVE 'LEXER2B'                      TO register-name.
           MOVE 'GROUP'                        TO daemongroup.
           MOVE 'NAME2'                        TO node-name.
           MOVE 'NAME3'                        TO server-name.
      *
           MOVE 10                             TO loop-limit.
      *
           MOVE 'This is a test message'       TO text-msg.
           MOVE 'java:global/OLASampleLiberty/OLASampleLibertyEJB/EchoBe
      -     'an!com.ibm.websphere.ola.ExecuteLocalBusiness'
                TO service-name.

      *  Register into Daemon Group using BBOA1REG API

           INSPECT daemongroup CONVERTING ' ' to LOW-VALUES.

           CALL 'BBOA1REG' USING
                 daemongroup,
                 node-name,
                 server-name,
                 register-name,
                 minconn,
                 maxconn,
                 regopts,
                 rc,
                 rsn.

           IF rc > 0 THEN
             DISPLAY "OLA - BBOA1REG problem -- rc/rsn : " rc "/" rsn
             GO TO Bad-RC
           ELSE
             DISPLAY "Successfully registered into " daemongroup
           END-IF.

      * Invoke using BBOA1INV and loop

           PERFORM UNTIL loop-counter EQUAL loop-limit

             COMPUTE loop-counter = loop-counter + 1

             MOVE loop-counter TO loop-counter-text

             STRING
               loop-counter-text DELIMITED BY SIZE
               text-msg DELIMITED BY SIZE
               INTO text-msg-with-counter
             END-STRING

             MOVE text-msg-with-counter TO rqst-area
             MOVE LENGTH OF rqst-area TO rqst-area-length
             MOVE rqst-area-length TO resp-area-length
             INSPECT service-name CONVERTING ' ' to LOW-VALUES

             SET rqst-area-addr TO ADDRESS OF rqst-area
             SET resp-area-addr TO ADDRESS OF resp-area

             CALL 'BBOA1INV' USING
                 register-name,
                 rqst-type,
                 service-name,
                 service-name-length,
                 rqst-area-addr,
                 rqst-area-length,
                 resp-area-addr,
                 resp-area-length,
                 wait-time,
                 rc,
                 rsn,
                 rv

             IF rc > 0 THEN
               DISPLAY "OLA - BBOA1INV problem, rc/rsn: " rc "/" rsn
               GO TO Bad-RC
             ELSE
               DISPLAY "Message sent: " rqst-area
               DISPLAY "Message back: " rqst-area
             END-IF

           END-PERFORM.

      *  Unregister from Daemon Group using BBOA1URG API

           CALL 'BBOA1URG' USING
               register-name,
               urgopts,
               rc,
               rsn.

           IF rc > 0 THEN
             DISPLAY "OLA - BBOA1URG problem -- rc/rsn: " rc "/" rsn
             GO TO Bad-RC
           ELSE
             DISPLAY "Successfully unregistered from " daemongroup
           END-IF.

           GOBACK.

      *  Section used to exit batch if any API returned RC>0

       Bad-RC.
           DISPLAY "OLA - EXITING program due to non-RC=0."
           GOBACK.
