Professional Documents
Culture Documents
COM
MQ Series Reference
For z/OS
Kannan (indianZombie)
Contents
An Introduction to MQSeries Messaging and Queuing...................................................................................3
What is MQSeries?...........................................................................................................................................3
MQSeries Objects .........................................................................................................................................3
1.1 Queue Manager............................................................................................................................................................3
1.2 Queues..............................................................................................................................................................................4
1.3 Channels...........................................................................................................................................................................4
1.4 Messages..........................................................................................................................................................................4
1.5 Pic: Message Flow Between Applications........................................................................................................7
Frequently used APIs’ in Application Programs..............................................................................................7
1.6 Need for API:..................................................................................................................................................................7
API Commands sequence for Sending MQ Messages ....................................................................................8
API Command sequence for Receiving MQ Messages ................................................................................10
Sample COBOL code ....................................................................................................................................13
Sample JCL code ...........................................................................................................................................32
Reference .......................................................................................................................................................33
10.0 Reference........................................................................................Error: Reference source not found
An Introduction to MQSeries Messaging and Queuing
IBM WebSphere MQSeries allows different applications to communicate
asynchronously through queues across different operating systems, different
processors, and different application systems.
WebSphere MQSeries includes the Message Queue Interface (MQI), a common
low-level programming application program interface (API). Applications use
MQI to read and write messages to the queues.
What is MQSeries?
Queuing - messages are put on queues in storage, eliminating the need for
programs to be logically connected.
MQSeries Objects
1.1 Queue Manager
1.2 Queues
Alias Queue - another name for a local or remote queue. Typically used to
switch queue destinations without modifying program code
Model Queue - a template whose properties are copied when creating a new
dynamic local queue (“create queue xxx “like” queue yyy).
1.3 Channels
A channel provides a communication path between Queue Managers.
1.4 Messages
• A message any arbitrary data that one program wants to send to another. This
data is called the application data.
• What to do with undeliverable messages? Each queue manager can have a dead-letter
queue.
• Segmented Messages - allows ending of VERY LARGE messages (> 100 MB)
• A message can contain a “reply to” address (the name of a Queue Manager and
Queue). This tells the receiving application where any response should be sent.
• When an app reads a message from a queue, a message “appears” to have been
removed, but in fact, it is still in storage until the app “commits” the unit of work.
1.5 Pic: Message Flow Between Applications
• Step 3: The MQPUT call puts a message on a queue or distribution list. The queue or
distribution list must already be open.
Syntax : MQPUT (Hconn, Hobj, MsgDesc, PutMsgOpts, BufferLength, Buffer,
CompCode, Reason)
• Step 4: The MQCLOSE call relinquishes access to an object, and is the inverse of the
MQOPEN call.
• Step 5: The MQDISC call breaks the connection between the queue manager and the
application program, and is the inverse of the MQCONN or MQCONNX call.
• Step 5: The MQDISC call breaks the connection between the queue manager and the
application program, and is the inverse of the MQCONN or MQCONNX call.
Note: CICS programs do not have to issue MQCONN and MQDISC commands. The
programs are connected automatically to the queue manager to which the CICS
system is connected.
Sample COBOL code
1.1.1 MQPUT
IDENTIFICATION DIVISION.
PROGRAM-ID. MQPUTPGM.
AUTHOR. INDIANZOMBIE.
DATE-WRITTEN. 19/07/2009.
*----------------------------------------------------------------*
* ENVIRONMENT DIVISION **
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM.
OBJECT-COMPUTER. IBM.
DATA DIVISION.
***------------------------------------------------------------***
* MQPUTPGM WORKING STORAGE BEGINS HERE **
***------------------------------------------------------------***
WORKING-STORAGE SECTION.
01 WS-ABEND-VARS.
10 WS-ILBOABN0-RTN PIC X(08) VALUE
'ILBOABN0'.
10 WS-ABND-PGM PIC X(08) VALUE
'MQPUTPGM'.
10 WS-ABND-PARA PIC X(30) VALUE SPACES.
10 WS-ABND-MSG PIC X(60) VALUE SPACES.
10 WS-ABEND-CODE PIC S9(04) COMP
VALUE ZEROES.
01 WS-VARIABLES.
05 WS-QMESG PIC X(100) VALUE SPACES.
01 W00-LOOP PIC S9(09) BINARY VALUE 0.
01 W00-NUMPUTS PIC S9(09) BINARY VALUE 0.
01 W00-ERROR-MESSAGE PIC X(48) VALUE SPACES.
01 W00-QMGR PIC X(10) VALUE 'MQA1'.
01 W00-QNAME PIC X(48) VALUE
'TCH.TRAINING.LOCAL1'.
01 W00-MSGBUFFER PIC X(5000) VALUE SPACES.
01 W00-PERS-NOPERS PIC X(01) VALUE 'P'.
88 PERSISTENT VALUE 'P'.
88 NOT-PERSISTENT VALUE 'N'.
01 W03-HCONN PIC S9(09) BINARY VALUE 0.
01 W03-HOBJ PIC S9(09) BINARY VALUE 0.
01 W03-OPENOPTIONS PIC S9(09) BINARY.
01 W03-COMPCODE PIC S9(09) BINARY.
01 W03-REASON PIC S9(09) BINARY.
01 PARM-LEN PIC 9(4) VALUE 0.
01 MQM-OBJECT-DESCRIPTOR.
COPY MQCOPY2.
01 MQM-MESSAGE-DESCRIPTOR.
COPY MQCOPY1.
01 MQM-PUT-MESSAGE-OPTIONS.
COPY MQCOPY3.
01 MQM-CONSTANTS.
COPY MQCOPY4.
***------------------------------------------------------------***
PROCEDURE DIVISION.
***------------------------------------------------------------***
* MAIN PARA **
***------------------------------------------------------------***
1000-MAIN-PARA.
PERFORM 1000-INITIALIZE-PARA
THRU 1000-EXIT
PERFORM 2000-PROCESS-PARA
THRU 2000-EXIT
PERFORM 3000-CLOSE-MQ-PARA
THRU 3000-EXIT.
1000-MAIN-EXIT.
STOP RUN.
***------------------------------------------------------------***
* INITIALIZE PARA **
***------------------------------------------------------------***
1000-INITIALIZE-PARA.
*-------------------CONNECTING TO QUEUE--------------------------*
DISPLAY '==========================================='
DISPLAY ' QMGR - ', W00-QMGR
DISPLAY ' QNAME - ', W00-QNAME
DISPLAY '==========================================='
2500-EXIT.
EXIT.
3000-CLOSE-MQ-PARA.
*------CLOSING MQ
CALL 'CSQBCLOS' USING W03-HCONN
W03-HOBJ
MQCO-NONE
W03-COMPCODE
W03-REASON
IF (W03-COMPCODE NOT = MQCC-OK) THEN
MOVE 'CSQBCLOS' TO W00-ERROR-MESSAGE
MOVE '3000-CLOSE-PARA' TO WS-ABND-PARA
MOVE 400 TO WS-ABEND-CODE
MOVE 'CLOSE OPERATION FAILED FOR QUEUE'
TO WS-ABND-MSG
PERFORM 5555-DISPLAY-ERROR-MESSAGE
THRU 5555-EXIT
ELSE
PERFORM 6666-MAIN-DISCONNECT
THRU 6666-EXIT
END-IF
DISPLAY '**************************************************'
DISPLAY 'NUMBER OF MESSAGES PUT TO QUEUE:' W00-NUMPUTS
DISPLAY '**************************************************'.
3000-EXIT.
EXIT.
***------------------------------------------------------------**
* MQ ERROR MESSAGE PARA *
***------------------------------------------------------------**
5555-DISPLAY-ERROR-MESSAGE.
DISPLAY '**********************************************'
DISPLAY '* ' W00-ERROR-MESSAGE
DISPLAY '* COMPLETION CODE : ' W03-COMPCODE
DISPLAY '* REASON CODE : ' W03-REASON
DISPLAY '**********************************************'
PERFORM 9000-FILE-ABEND-PARA
THRU 9000-EXIT.
5555-EXIT.
EXIT.
***------------------------------------------------------------**
* MQ MAIN DISCONNECT PARA *
***------------------------------------------------------------**
6666-MAIN-DISCONNECT.
CALL 'CSQBDISC' USING W03-HCONN
W03-COMPCODE
W03-REASON.
IF (W03-COMPCODE NOT = MQCC-OK) THEN
MOVE 'CSQBDISC' TO W00-ERROR-MESSAGE
MOVE '6666-MAIN-DISCONNECT' TO WS-ABND-PARA
MOVE 600 TO WS-ABEND-CODE
MOVE 'QUEUE MANAGER DICONNECT FAILURE'
TO WS-ABND-MSG
PERFORM 5555-DISPLAY-ERROR-MESSAGE
THRU 5555-EXIT
END-IF.
6666-EXIT.
EXIT.
***------------------------------------------------------------**
* FILE ABEND PARA *
***------------------------------------------------------------**
9000-FILE-ABEND-PARA.
MOVE WS-ABEND-CODE TO RETURN-CODE
DISPLAY '**************************************************'
DISPLAY ' ABEND SUMMARY '
DISPLAY '**************************************************'
DISPLAY 'PROGRAM-NAME : ' WS-ABND-PGM
DISPLAY 'ERROR-PARA : ' WS-ABND-PARA
DISPLAY 'ERROR-MESSAGE : ' WS-ABND-MSG
DISPLAY '**************************************************'
CALL WS-ILBOABN0-RTN USING WS-ABEND-CODE.
9000-EXIT.
EXIT.
1.1.2 MQGET
IDENTIFICATION DIVISION.
PROGRAM-ID. MQGETPGM.
AUTHOR. INDIANZOMBIE.
DATE-WRITTEN. 19/07/2009.
*----------------------------------------------------------------*
* ENVIRONMENT DIVISION **
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM.
OBJECT-COMPUTER. IBM.
DATA DIVISION.
***------------------------------------------------------------***
* MQPUTPGM WORKING STORAGE BEGINS HERE **
***------------------------------------------------------------***
WORKING-STORAGE SECTION.
01 WS-ABEND-VARS.
10 WS-ILBOABN0-RTN PIC X(08) VALUE
'ILBOABN0'.
10 WS-ABND-PGM PIC X(08) VALUE
'MQGETPGM'.
10 WS-ABND-PARA PIC X(30) VALUE SPACES.
10 WS-ABND-MSG PIC X(60) VALUE SPACES.
10 WS-ABEND-CODE PIC S9(04) COMP
VALUE ZEROES.
01 WS-VARIABLES.
05 WS-QMESG PIC X(100) VALUE SPACES.
01 W00-LOOP PIC S9(09) BINARY VALUE 0.
01 W00-ERROR-MESSAGE PIC X(48) VALUE SPACES.
01 W00-QMGR PIC X(10) VALUE 'MQA1'.
01 W00-QNAME PIC X(48) VALUE
'TCH.TRAINING.LOCAL1'.
01 W00-MSGBUFFER PIC X(8000) VALUE SPACES.
01 W00-NUMGETS PIC S9(09) BINARY VALUE 0.
01 W00-MSGBUFLEN PIC S9(09) BINARY.
01 W00-DATALEN PIC S9(09) BINARY.
01 W00-PERS-NOPERS PIC X(01) VALUE 'P'.
88 PERSISTENT VALUE 'P'.
88 NOT-PERSISTENT VALUE 'N'.
01 W03-HCONN PIC S9(09) BINARY VALUE 0.
01 W03-HOBJ PIC S9(09) BINARY VALUE 0.
01 W03-OPENOPTIONS PIC S9(09) BINARY.
01 W03-COMPCODE PIC S9(09) BINARY.
01 W03-REASON PIC S9(09) BINARY.
01 PARM-LEN PIC 9(4) VALUE 0.
01 MQM-OBJECT-DESCRIPTOR.
COPY MQCOPY2.
01 MQM-MESSAGE-DESCRIPTOR.
COPY MQCOPY1.
01 MQM-GET-MESSAGE-OPTIONS.
COPY CMQGMOV.
01 MQM-CONSTANTS.
COPY MQCOPY4.
***------------------------------------------------------------***
PROCEDURE DIVISION.
***------------------------------------------------------------***
* MAIN PARA **
***------------------------------------------------------------***
1000-MAIN-PARA.
PERFORM 1000-INITIALIZE-PARA
THRU 1000-EXIT
PERFORM 2000-PROCESS-PARA
THRU 2000-EXIT
PERFORM 3000-CLOSE-MQ-PARA
THRU 3000-EXIT.
1000-MAIN-EXIT.
STOP RUN.
***------------------------------------------------------------***
* INITIALIZE PARA **
***------------------------------------------------------------***
1000-INITIALIZE-PARA.
*-------------------CONNECTING TO QUEUE--------------------------*
DISPLAY '==========================================='
DISPLAY ' QMGR - ', W00-QMGR
DISPLAY ' QNAME - ', W00-QNAME
DISPLAY '==========================================='
2500-EXIT.
EXIT.
3000-CLOSE-MQ-PARA.
*------CLOSING MQ
CALL 'CSQBCLOS' USING W03-HCONN
W03-HOBJ
MQCO-NONE
W03-COMPCODE
W03-REASON
IF (W03-COMPCODE NOT = MQCC-OK) THEN
MOVE 'CSQBCLOS' TO W00-ERROR-MESSAGE
MOVE '3000-CLOSE-PARA' TO WS-ABND-PARA
MOVE 400 TO WS-ABEND-CODE
MOVE 'CLOSE OPERATION FAILED FOR QUEUE'
TO WS-ABND-MSG
PERFORM 5555-DISPLAY-ERROR-MESSAGE
THRU 5555-EXIT
ELSE
PERFORM 6666-MAIN-DISCONNECT
THRU 6666-EXIT
END-IF
DISPLAY '**************************************************'
DISPLAY 'NUMBER OF MESSAGES GOT TO QUEUE:' W00-NUMGETS
DISPLAY '**************************************************'.
3000-EXIT.
EXIT.
***------------------------------------------------------------**
* MQ ERROR MESSAGE PARA *
***------------------------------------------------------------**
5555-DISPLAY-ERROR-MESSAGE.
DISPLAY '**********************************************'
DISPLAY '* ' W00-ERROR-MESSAGE
DISPLAY '* COMPLETION CODE : ' W03-COMPCODE
DISPLAY '* REASON CODE : ' W03-REASON
DISPLAY '**********************************************'
PERFORM 9000-FILE-ABEND-PARA
THRU 9000-EXIT.
5555-EXIT.
EXIT.
***------------------------------------------------------------**
* MQ MAIN DISCONNECT PARA *
***------------------------------------------------------------**
6666-MAIN-DISCONNECT.
CALL 'CSQBDISC' USING W03-HCONN
W03-COMPCODE
W03-REASON.
IF (W03-COMPCODE NOT = MQCC-OK) THEN
MOVE 'CSQBDISC' TO W00-ERROR-MESSAGE
MOVE '6666-MAIN-DISCONNECT' TO WS-ABND-PARA
MOVE 600 TO WS-ABEND-CODE
MOVE 'QUEUE MANAGER DICONNECT FAILURE'
TO WS-ABND-MSG
PERFORM 5555-DISPLAY-ERROR-MESSAGE
THRU 5555-EXIT
END-IF.
6666-EXIT.
EXIT.
***------------------------------------------------------------**
* FILE ABEND PARA *
***------------------------------------------------------------**
9000-FILE-ABEND-PARA.
MOVE WS-ABEND-CODE TO RETURN-CODE
DISPLAY '**************************************************'
DISPLAY ' ABEND SUMMARY '
DISPLAY '**************************************************'
DISPLAY 'PROGRAM-NAME : ' WS-ABND-PGM
DISPLAY 'ERROR-PARA : ' WS-ABND-PARA
DISPLAY 'ERROR-MESSAGE : ' WS-ABND-MSG
DISPLAY '**************************************************'
CALL WS-ILBOABN0-RTN USING WS-ABEND-CODE.
9000-EXIT.
EXIT.
1.1.3 MQBROWSE
IDENTIFICATION DIVISION.
PROGRAM-ID. MQBROWSE.
AUTHOR. INDIANZOMBIE.
DATE-WRITTEN. 19/07/2009.
*----------------------------------------------------------------
* ENVIRONMENT DIVISION *
*----------------------------------------------------------------
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM.
OBJECT-COMPUTER. IBM.
DATA DIVISION.
***------------------------------------------------------------**
* MQPUTPGM WORKING STORAGE BEGINS HERE *
***------------------------------------------------------------**
WORKING-STORAGE SECTION.
01 WS-ABEND-VARS.
10 WS-ILBOABN0-RTN PIC X(08) VALUE
'ILBOABN0'.
10 WS-ABND-PGM PIC X(08) VALUE
'MQGETPGM'.
10 WS-ABND-PARA PIC X(30) VALUE SPACES.
10 WS-ABND-MSG PIC X(60) VALUE SPACES.
10 WS-ABEND-CODE PIC S9(04) COMP
VALUE ZEROES.
01 WS-VARIABLES.
05 WS-QMESG PIC X(100) VALUE SPACES.
01 W00-LOOP PIC S9(09) BINARY VALUE 0.
01 W00-ERROR-MESSAGE PIC X(48) VALUE SPACES.
01 W00-QMGR PIC X(10) VALUE 'MQA1'.
01 W00-QNAME PIC X(48) VALUE
'TCH.TRAINING.LOCAL1'.
01 W00-MSGBUFFER PIC X(8000) VALUE SPACES.
01 W00-NUMGETS PIC S9(09) BINARY VALUE 0.
01 W00-MSGBUFLEN PIC S9(09) BINARY.
01 W00-DATALEN PIC S9(09) BINARY.
01 W00-PERS-NOPERS PIC X(01) VALUE 'P'.
88 PERSISTENT VALUE 'P'.
88 NOT-PERSISTENT VALUE 'N'.
01 W03-HCONN PIC S9(09) BINARY VALUE 0.
01 W03-HOBJ PIC S9(09) BINARY VALUE 0.
01 W03-OPENOPTIONS PIC S9(09) BINARY.
01 W03-COMPCODE PIC S9(09) BINARY.
01 W03-REASON PIC S9(09) BINARY.
01 PARM-LEN PIC 9(4) VALUE 0.
01 MQM-OBJECT-DESCRIPTOR.
COPY CMQODV.
01 MQM-MESSAGE-DESCRIPTOR.
COPY CMQMDV.
01 MQM-GET-MESSAGE-OPTIONS.
COPY CMQGMOV.
01 MQM-CONSTANTS.
COPY CMQV.
***------------------------------------------------------------**
PROCEDURE DIVISION.
***------------------------------------------------------------**
* MAIN PARA *
***------------------------------------------------------------**
1000-MAIN-PARA.
PERFORM 1000-INITIALIZE-PARA
THRU 1000-EXIT
PERFORM 2000-PROCESS-PARA
THRU 2000-EXIT
PERFORM 3000-CLOSE-MQ-PARA
THRU 3000-EXIT.
1000-MAIN-EXIT.
STOP RUN.
***------------------------------------------------------------***
* INITIALIZE PARA **
***------------------------------------------------------------***
1000-INITIALIZE-PARA.
*-------------------CONNECTING TO QUEUE--------------------------*
DISPLAY '==========================================='
DISPLAY ' QMGR - ', W00-QMGR
DISPLAY ' QNAME - ', W00-QNAME
DISPLAY '==========================================='
1.1.4 MQINQ
IDENTIFICATION DIVISION.
PROGRAM-ID. MQPUTPGM.
AUTHOR. INDIANZOMBIE.
DATE-WRITTEN. 19/07/2009.
*----------------------------------------------------------------*
* ENVIRONMENT DIVISION **
*----------------------------------------------------------------*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM.
OBJECT-COMPUTER. IBM.
DATA DIVISION.
***------------------------------------------------------------***
* MQPUTPGM WORKING STORAGE BEGINS HERE **
***------------------------------------------------------------***
WORKING-STORAGE SECTION.
01 WS-ABEND-VARS.
10 WS-ILBOABN0-RTN PIC X(08) VALUE
'ILBOABN0'.
10 WS-ABND-PGM PIC X(08) VALUE
'MQPUTPGM'.
10 WS-ABND-PARA PIC X(30) VALUE SPACES.
10 WS-ABND-MSG PIC X(60) VALUE SPACES.
10 WS-ABEND-CODE PIC S9(04) COMP
VALUE ZEROES.
01 WS-VARIABLES.
05 WS-QMESG PIC X(100) VALUE SPACES.
01 W00-LOOP PIC S9(09) BINARY VALUE 0.
01 W00-NUMPUTS PIC S9(09) BINARY VALUE 0.
01 W00-ERROR-MESSAGE PIC X(48) VALUE SPACES.
01 W00-SELECTOR-COUNT PIC S9(09) BINARY.
01 W00-SELECTORS-TABLE.
02 W00-SELECTORS PIC S9(9) BINARY OCCURS 3 TIMES.
01 W00-INTATTRCOUNT PIC S9(9) BINARY.
01 W00-INTATTRS-TABLE.
02 W00-INTATTRS PIC S9(9) BINARY OCCURS 3 TIMES.
01 W00-CHARATTRLENGTH PIC S9(9) BINARY.
01 W00-CHARATTRS PIC X(500).
01 W00-QMGR PIC X(10) VALUE 'MQA1'.
01 W00-QNAME PIC X(48) VALUE
'TCH.TRAINING.LOCAL1'.
01 W00-MSGBUFFER PIC X(8000) VALUE SPACES.
01 W00-PERS-NOPERS PIC X(01) VALUE 'P'.
88 PERSISTENT VALUE 'P'.
88 NOT-PERSISTENT VALUE 'N'.
01 W03-HCONN PIC S9(09) BINARY VALUE 0.
01 W03-HOBJ PIC S9(09) BINARY VALUE 0.
01 W03-OPENOPTIONS PIC S9(09) BINARY.
01 W03-COMPCODE PIC S9(09) BINARY.
01 W03-REASON PIC S9(09) BINARY.
01 PARM-LEN PIC 9(4) VALUE 0.
01 MQM-OBJECT-DESCRIPTOR.
COPY MQCOPY2.
01 MQM-MESSAGE-DESCRIPTOR.
COPY MQCOPY1.
01 MQM-PUT-MESSAGE-OPTIONS.
COPY MQCOPY3.
01 MQM-CONSTANTS.
COPY MQCOPY4.
***------------------------------------------------------------***
PROCEDURE DIVISION.
***------------------------------------------------------------***
* MAIN PARA **
***------------------------------------------------------------***
1000-MAIN-PARA.
PERFORM 1000-INITIALIZE-PARA
THRU 1000-EXIT
PERFORM 2000-PROCESS-PARA
THRU 2000-EXIT
PERFORM 3000-CLOSE-MQ-PARA
THRU 3000-EXIT.
1000-MAIN-EXIT.
STOP RUN.
***------------------------------------------------------------***
* INITIALIZE PARA **
***------------------------------------------------------------***
1000-INITIALIZE-PARA.
*-------------------CONNECTING TO QUEUE--------------------------*
DISPLAY '==========================================='
DISPLAY ' QMGR - ', W00-QMGR
DISPLAY ' QNAME - ', W00-QNAME
DISPLAY '==========================================='
2500-EXIT.
EXIT.
3000-CLOSE-MQ-PARA.
*------CLOSING MQ
CALL 'CSQBCLOS' USING W03-HCONN
W03-HOBJ
MQCO-NONE
W03-COMPCODE
W03-REASON
IF (W03-COMPCODE NOT = MQCC-OK) THEN
MOVE 'CSQBCLOS' TO W00-ERROR-MESSAGE
MOVE '3000-CLOSE-PARA' TO WS-ABND-PARA
MOVE 400 TO WS-ABEND-CODE
MOVE 'CLOSE OPERATION FAILED FOR QUEUE'
TO WS-ABND-MSG
PERFORM 5555-DISPLAY-ERROR-MESSAGE
THRU 5555-EXIT
ELSE
PERFORM 6666-MAIN-DISCONNECT
THRU 6666-EXIT
END-IF
DISPLAY '**************************************************'
DISPLAY 'NUMBER OF MESSAGES PUT TO QUEUE:' W00-NUMPUTS
DISPLAY '**************************************************'.
3000-EXIT.
EXIT.
***------------------------------------------------------------**
* MQ ERROR MESSAGE PARA *
***------------------------------------------------------------**
5555-DISPLAY-ERROR-MESSAGE.
DISPLAY '**********************************************'
DISPLAY '* ' W00-ERROR-MESSAGE
DISPLAY '* COMPLETION CODE : ' W03-COMPCODE
DISPLAY '* REASON CODE : ' W03-REASON
DISPLAY '**********************************************'
PERFORM 9000-FILE-ABEND-PARA
THRU 9000-EXIT.
5555-EXIT.
EXIT.
***------------------------------------------------------------**
* MQ MAIN DISCONNECT PARA *
***------------------------------------------------------------**
6666-MAIN-DISCONNECT.
CALL 'CSQBDISC' USING W03-HCONN
W03-COMPCODE
W03-REASON.
IF (W03-COMPCODE NOT = MQCC-OK) THEN
MOVE 'CSQBDISC' TO W00-ERROR-MESSAGE
MOVE '6666-MAIN-DISCONNECT' TO WS-ABND-PARA
MOVE 600 TO WS-ABEND-CODE
MOVE 'QUEUE MANAGER DICONNECT FAILURE'
TO WS-ABND-MSG
PERFORM 5555-DISPLAY-ERROR-MESSAGE
THRU 5555-EXIT
END-IF.
6666-EXIT.
EXIT.
***------------------------------------------------------------**
* FILE ABEND PARA *
***------------------------------------------------------------**
9000-FILE-ABEND-PARA.
MOVE WS-ABEND-CODE TO RETURN-CODE
DISPLAY '**************************************************'
DISPLAY ' ABEND SUMMARY '
DISPLAY '**************************************************'
DISPLAY 'PROGRAM-NAME : ' WS-ABND-PGM
DISPLAY 'ERROR-PARA : ' WS-ABND-PARA
DISPLAY 'ERROR-MESSAGE : ' WS-ABND-MSG
DISPLAY '**************************************************'
CALL WS-ILBOABN0-RTN USING WS-ABEND-CODE.
9000-EXIT.
EXIT.
Reference
1) http://middleware.its.state.nc.us/middleware/Documentation/html/csqzak05/csqzak05tfrm.htm
2) www.indianzombie.blogspot.com