MQIのサンプルコーディング(COBOL言語)

COBOL言語でのコーディング例を示します。

     *****************************************************
     *        MQ-ACCESS SAMPLE                           *
     *****************************************************
     *
      IDENTIFICATION DIVISION.
     *
      PROGRAM-ID. MAIN.
     *
     *****************************************************
     *        INITIALIZE                                 *
     *****************************************************
     *
      DATA DIVISION.
      WORKING-STORAGE SECTION.
     *
      01  MQ-MGRNAME         PIC X(48) VALUE SPACES.
      01  MQ-HCONN           PIC S9(9) BINARY.
      01  MQ-COMPCODE        PIC S9(9) BINARY.
      01  MQ-REASON          PIC S9(9) BINARY.
      01  MQ-HOBJ            PIC S9(9) BINARY.
      01  MQ-OPTIONS         PIC S9(9) BINARY.
      01  MQ-BUFFLEN         PIC S9(9) BINARY.
      01  MQ-DATALEN         PIC S9(9) BINARY.
      01  MQ-BUFFER          PIC X(200) VALUE SPACE.
     *
      01  PUT-DATA           PIC X(33) VALUE
                      '***** COBOL sample put data *****'.
      01  QUEUENAME          PIC X(48) VALUE
                             'dynq1    '.
     *
      01 MQ-OBJECT-DESC.
         COPY CMQODV.
     *
      01 MQ-MESSAGE-DESCRIPTOR.
         COPY CMQMDV.
     *
      01 MQ-PUT-MESSAGE-OPTIONS.
         COPY CMQPMOV.
     *
      01 MQ-GET-MESSAGE-OPTIONS.
         COPY CMQGMOV.
     *
      01 MQ-BEGIN-OPTIONS.
         COPY CMQBOV.
     *
      01 MQ-CONSTANTS.
         COPY CMQV SUPPRESS.
     *  
      PROCEDURE DIVISION.  
     *  
     *****************************************************
     *        CONNECT TO THE QUEUE MANAGER               *
     *****************************************************
     *
      CALL 'MQCONN' USING MQ-MGRNAME
                          MQ-HCONN
                          MQ-COMPCODE
                          MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQCONN FAILED. REASON CODE = '
            MQ-REASON
            STOP RUN
          END-IF.
     *
     *****************************************************
     *        OPEN THE QUEUE                             *
     *****************************************************
     *
      MOVE QUEUENAME TO MQOD-OBJECTNAME.
     *
      COMPUTE MQ-OPTIONS = MQOO-OUTPUT +
                                      MQOO-INPUT-AS-Q-DEF.
     *
      CALL 'MQOPEN' USING MQ-HCONN
                          MQOD
                          MQ-OPTIONS
                          MQ-HOBJ
                          MQ-COMPCODE
                          MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQOPEN FAILED. REASON CODE = '
            MQ-REASON  
            GO TO PROG-END
          END-IF.
     *
     *****************************************************
     *        SET THE PUT MESSAGE OPTIONS                *
     *****************************************************
     *
      MOVE MQPMO-SYNCPOINT     TO MQPMO-OPTIONS.
      MOVE 33                  TO MQ-BUFFLEN.
     *
      MOVE PUT-DATA            TO MQ-BUFFER.
     *
     *****************************************************
     *        SET THE GET MESSAGE OPTIONS                *
     *****************************************************
     *
      MOVE MQGMO-SYNCPOINT     TO MQGMO-OPTIONS.
     *
     *****************************************************
     *        BEGIN LOCAL TRANSACTION                    *
     *****************************************************
     *
      CALL 'MQBEGIN' USING MQ-HCONN
                           MQ-BEGIN-OPTIONS
                           MQ-COMPCODE
                           MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQBEGIN FAILED. REASON CODE = '
            MQ-REASON  
            STOP RUN
          END-IF.
     *
     *****************************************************
     *        PUT THE MESSAGE                            *
     *****************************************************
     *
      CALL 'MQPUT' USING MQ-HCONN
                         MQ-HOBJ
                         MQMD
                         MQPMO
                         MQ-BUFFLEN
                         MQ-BUFFER
                         MQ-COMPCODE
                         MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQPUT FAILED. REASON CODE = '
            MQ-REASON  
          END-IF.
     *  
     *****************************************************
     *        COMMIT LOCAL TRANSACTION                   *
     *****************************************************
     *
      CALL 'MQCMIT' USING MQ-HCONN
                          MQ-COMPCODE
                          MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQCMIT FAILED. REASON CODE = '
            MQ-REASON  MQ-COMPCODE
            STOP RUN
          END-IF.
     *
     *****************************************************
     *        BEGIN LOCAL TRANSACTION                    *
     *****************************************************
     *
      CALL 'MQBEGIN' USING MQ-HCONN
                           MQ-BEGIN-OPTIONS
                           MQ-COMPCODE
                           MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQBEGIN FAILED. REASON CODE = '
            MQ-REASON  
            STOP RUN
          END-IF.
     *
     *****************************************************
     *        GET THE MESSAGE                            *
     *****************************************************
     *
      CALL 'MQGET' USING MQ-HCONN
                         MQ-HOBJ
                         MQMD
                         MQGMO
                         MQ-BUFFLEN
                         MQ-BUFFER
                         MQ-DATALEN
                         MQ-COMPCODE
                         MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQGET FAILED. REASON CODE = '
            MQ-REASON  
          END-IF.
     *  
     *****************************************************
     *        COMMIT LOCAL TRANSACTION                   *
     *****************************************************
     *
      CALL 'MQCMIT' USING MQ-HCONN
                          MQ-COMPCODE
                          MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQCMIT FAILED. REASON CODE = '
            MQ-REASON  MQ-COMPCODE
            STOP RUN
          END-IF.
     *
     *****************************************************
     *        CLOSE THE QUEUE                            *
     *****************************************************
     *
      MOVE MQCO-NONE TO MQ-OPTIONS.
     *
      CALL 'MQCLOSE' USING MQ-HCONN
                           MQ-HOBJ
                           MQ-OPTIONS
                           MQ-COMPCODE
                           MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQCLOSE FAILED. REASON CODE = '
            MQ-REASON  
          END-IF.
     *
      PROG-END.
     *  
     *****************************************************
     *        DISCONNECT FROM THE QUEUE MANAGER          *
     *****************************************************
     *
      CALL 'MQDISC' USING MQ-HCONN
                          MQ-COMPCODE
                          MQ-REASON.
          IF MQ-COMPCODE NOT = MQCC-OK THEN
            DISPLAY 'MQTRN:MQDISC FAILED. REASON CODE = '
            MQ-REASON  
          END-IF.
     *  
      STOP RUN.
      END PROGRAM MAIN.