メッセージキューイングアクセス機能 TP1/Message Queue - Access 使用の手引

[目次][用語][索引][前へ][次へ]

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.