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.