CBL XOPTS(ANSI85)
CBL NODYNAM,LIB,OBJECT,RENT,RES,APOST * * * ------------------------------------------------------------- * IDENTIFICATIONDIVISION. * ------------------------------------------------------------- * PROGRAM-ID. CSQ4CVK1. *REMARKS ***************************************************************** * @START_COPYRIGHT@ * * Statement: Licensed Materials - Property of IBM * * * * 5695-137 * * (C) Copyright IBM Corporation. 1993, 1997 * * * * Status: Version 1 Release 2 * * @END_COPYRIGHT@ * * * * Module Name : CSQ4CVK1 * * * * Environment : CICS/ESA Version 3.3; COBOL II * * * * CICS Transaction Name : MVPT * * * * Description : Sample program to put a number of messages * * to a queue. * * * * Note : The maximum message length is 65535. Messages * * greater than this will not cause an error but * * will be truncated. * * * ***************************************************************** * * * Program Logic * * -------------- * * * * main * * ---- * * * * Receive the parameter list from CICS. * * If parameter list is invalid then * * Call USAGE-ERROR and exit. * * * * Setup message buffer. * * * * Open the specified message queue (MQOPEN). * * If open failed then * * Call DISPLAY-ERROR-MESSAGE and exit. * * * * Set the put message options. * * Loop while the messages are put to queue * * Put message to queue (MQPUT) * * If put failed * * Call DISPLAY-MESSAGE * * Break from loop * * Endif * * Endloop. * * If no error occurred * * Display number of messages put to the queue. * * Endif * * * * Close the message queue. * * If close failed then * * Call DISPLAY-ERROR-MESSAGE. * * * * Return control to CICS. * * * * * *---------------------------------------------------------------* * * * USAGE-ERROR * * ----------- * * * * Print message showing correct usage for program. * * * * * *---------------------------------------------------------------* * * * DISPLAY-ERROR-MESSAGE * * --------------------- * * * * Create error message. * * Print error message to CICS screen. * * * * * *---------------------------------------------------------------* * * * DISPLAY-MESSAGE * * --------------- * * * * Sends valid message to CICS screen. * * * * * ***************************************************************** * ------------------------------------------------------------- * ENVIRONMENTDIVISION. * ------------------------------------------------------------- * * ------------------------------------------------------------- * DATADIVISION. * ------------------------------------------------------------- * FILESECTION. * ------------------------------------------------------------- * WORKING-STORAGESECTION. * ------------------------------------------------------------- * * * W00 - General work fields *
01 W00-RETURN-CODE PIC S9(4) BINARYVALUEZERO.
01 W00-LOOP PIC S9(9) BINARYVALUE 0.
01 W00-NUMPUTS-CHAR PIC X(9) VALUESPACES.
01 W00-NUMPUTS PIC S9(9) BINARYVALUE 0.
01 W00-ERROR-MESSAGE PIC X(10) VALUESPACES.
01 W00-MESSAGE PIC X(80) VALUESPACES. * * Parameter variables *
01 W00-PARM-LEN PIC S9(03) BINARY.
01 W00-PARM-STRING.
02 W00-PARM-STRING-ARRAY PIC X(1) OCCURS 100 TIMES. *
01 W00-TRANSNAME PIC X(8) VALUE' '.
01 W00-QNAME PIC X(48) VALUESPACES.
01 W00-PADCHAR PIC X(1) VALUE'*'.
01 W00-MSGBUFFER.
02 W00-MSGBUFFER-ARRAY PIC X(1) OCCURS 65535 TIMES.
01 W00-NUMMSGS-CHAR PIC X(4) VALUESPACES.
01 W00-NUMMSGS PIC S9(9) BINARYVALUE 1.
01 W00-MSGLENGTH-CHAR PIC X(4) VALUESPACES.
01 W00-MSGLENGTH PIC S9(9) BINARYVALUE 100.
01 W00-PERSISTENCE PIC X(1) VALUE'N'.
88 PERSISTENT VALUE'P'.
88 NOT-PERSISTENT VALUE'N'. * * W03 - API fields *
01 W03-HCONN PIC S9(9) BINARYVALUEZERO.
01 W03-HOBJ PIC S9(9) BINARYVALUEZERO.
01 W03-OPENOPTIONS PIC S9(9) BINARYVALUEZERO.
01 W03-COMPCODE PIC S9(9) BINARYVALUEZERO.
01 W03-COMPCODE-CHAR PIC X(9) VALUESPACES.
01 W03-REASON PIC S9(9) BINARYVALUEZERO.
01 W03-REASON-CHAR PIC X(9) VALUESPACES. * * API control blocks *
01 MQM-OBJECT-DESCRIPTOR.
COPY CMQODV.
01 MQM-MESSAGE-DESCRIPTOR.
COPY CMQMDV.
01 MQM-PUT-MESSAGE-OPTIONS.
COPY CMQPMOV. * * MQV contains constants (for filling in the control blocks) * and return codes (for testing the result of a call) *
01 MQM-CONSTANTS.
COPY CMQV SUPPRESS. * * DFHAID contains the constants used for checking for * attention identifiers *
COPY DFHAID SUPPRESS. * * * ------------------------------------------------------------- * LINKAGESECTION. * ------------------------------------------------------------- *
EJECT * ------------------------------------------------------------- * PROCEDUREDIVISION. * ------------------------------------------------------------- * * ------------------------------------------------------------- *
A-MAIN SECTION. * ------------------------------------------------------------- * * * Receive the parameter list passed in by CICS * MOVESPACESTO W00-PARM-STRING. EXECCICS IGNORE CONDITION LENGERR END-EXEC. EXECCICS RECEIVE INTO( W00-PARM-STRING ) LENGTH( W00-PARM-LEN ) END-EXEC. * * If parameter list invalid then call USAGE-ERROR * and exit * IF (W00-PARM-LEN < 20) THEN PERFORM USAGE-ERROR MOVE 8 TO W00-RETURN-CODE GOTO A-MAIN-END END-IF. * IF ((W00-PARM-STRING-ARRAY(5) NOT = ',') OR
(W00-PARM-STRING-ARRAY(10) NOT = ',') OR
(W00-PARM-STRING-ARRAY(12) NOT = ',') OR
(W00-PARM-STRING-ARRAY(17) NOT = ',') OR
(W00-PARM-STRING-ARRAY(19) NOT = ',')) THEN * PERFORM USAGE-ERROR MOVE 8 TO W00-RETURN-CODE GOTO A-MAIN-END END-IF. * * Move parameters into corresponding variables * UNSTRING W00-PARM-STRING DELIMITEDBYALL',' INTO W00-TRANSNAME
W00-NUMMSGS-CHAR
W00-PADCHAR
W00-MSGLENGTH-CHAR
W00-PERSISTENCE
W00-QNAME. MOVE W00-MSGLENGTH-CHAR TO W00-MSGLENGTH. MOVE W00-NUMMSGS-CHAR TO W00-NUMMSGS. * * * Setup the message buffer * PERFORMWITHTESTBEFOREVARYING W00-LOOP FROM 1 BY 1 UNTIL (W00-LOOP > W00-MSGLENGTH) * MOVE W00-PADCHAR TO W00-MSGBUFFER-ARRAY(W00-LOOP) * END-PERFORM. * * * * Open the queue for output * MOVE MQOO-OUTPUT TO W03-OPENOPTIONS. MOVE W00-QNAME TO MQOD-OBJECTNAME. * CALL'MQOPEN'USING W03-HCONN
MQOD
W03-OPENOPTIONS
W03-HOBJ
W03-COMPCODE
W03-REASON. * * If open failed then display error message and exit * IF (W03-COMPCODE NOT = MQCC-OK) THEN MOVE'MQOPEN'TO W00-ERROR-MESSAGE PERFORM DISPLAY-ERROR-MESSAGE MOVE W03-REASON TO W00-RETURN-CODE GOTO A-MAIN-END END-IF. * * * Set persistence depending on parameter passed * IF PERSISTENT THEN MOVE MQPER-PERSISTENT TO MQMD-PERSISTENCE ELSE MOVE MQPER-NOT-PERSISTENT TO MQMD-PERSISTENCE END-IF. * * Loop until specified number of messages put to queue * PERFORMWITHTESTBEFOREVARYING W00-LOOP FROM 0 BY 1 UNTIL (W00-LOOP >= W00-NUMMSGS) * MOVE MQMI-NONE TO MQMD-MSGID MOVE MQCI-NONE TO MQMD-CORRELID * CALL'MQPUT'USING W03-HCONN
W03-HOBJ
MQMD
MQPMO
W00-MSGLENGTH
W00-MSGBUFFER
W03-COMPCODE
W03-REASON * * If put failed then display error message * and break out of loop * ADD 1 TO W00-NUMPUTS IF (W03-COMPCODE NOT = MQCC-OK) THEN MOVE W00-NUMPUTS TO W00-NUMPUTS-CHAR MOVE W03-COMPCODE TO W03-COMPCODE-CHAR MOVE W03-REASON TO W03-REASON-CHAR * MOVESPACESTO W00-MESSAGE STRING'MQPUT ', W00-NUMPUTS-CHAR, ' failed' ' * CC : ', W03-COMPCODE-CHAR, ' * RC : ', W03-REASON-CHAR, ' *' DELIMITEDBYSIZEINTO W00-MESSAGE PERFORM DISPLAY-MESSAGE * MOVE W00-NUMMSGS TO W00-LOOP MOVE W03-REASON TO W00-RETURN-CODE END-IF * END-PERFORM. * * If no error occurred, display the number of messages * successfully put to the queue * IF (W03-COMPCODE = MQCC-OK) THEN MOVE W00-NUMPUTS TO W00-NUMPUTS-CHAR MOVESPACESTO W00-MESSAGE STRING W00-NUMPUTS-CHAR, ' MESSAGES PUT TO QUEUE' DELIMITEDBYSIZEINTO W00-MESSAGE PERFORM DISPLAY-MESSAGE END-IF * * * * * Close the queue * CALL'MQCLOSE'USING W03-HCONN
W03-HOBJ
MQCO-NONE
W03-COMPCODE
W03-REASON. IF (W03-COMPCODE NOT = MQCC-OK) THEN MOVE'MQCLOSE'TO W00-ERROR-MESSAGE PERFORM DISPLAY-ERROR-MESSAGE MOVE W03-REASON TO W00-RETURN-CODE END-IF. * * *
A-MAIN-END. * * MOVE W00-RETURN-CODE TORETURN-CODE EXECCICSRETURNEND-EXEC. * GOBACK.
EJECT * * ------------------------------------------------------------- *
USAGE-ERROR SECTION. * ------------------------------------------------------------- * * MOVESPACESTO W00-MESSAGE. MOVE'=Usage : MVPT,9999,*,9999,P,QUEUE.NAME='TO
W00-MESSAGE. PERFORM DISPLAY-MESSAGE. *
USAGE-ERROR-END. * * RETURN TO PERFORMING FUNCTION * EXIT. * * ------------------------------------------------------------- *
DISPLAY-ERROR-MESSAGE SECTION. * ------------------------------------------------------------- * * MOVE W03-COMPCODE TO W03-COMPCODE-CHAR. MOVE W03-REASON TO W03-REASON-CHAR. * MOVESPACESTO W00-MESSAGE. STRING'* ', W00-ERROR-MESSAGE, ' * CC : ', W03-COMPCODE-CHAR, ' * RC : ', W03-REASON-CHAR, ' *' DELIMITEDBYSIZEINTO W00-MESSAGE. PERFORM DISPLAY-MESSAGE. *
DISPLAY-ERROR-MESSAGE-END. * * RETURN TO PERFORMING FUNCTION * EXIT. * * ------------------------------------------------------------- *
DISPLAY-MESSAGE SECTION. * ------------------------------------------------------------- * * EXECCICS SEND FROM( W00-MESSAGE ) LENGTH( 79 )
ERASE END-EXEC. MOVESPACESTO W00-MESSAGE. *
DISPLAY-MESSAGE-END. * * RETURN TO PERFORMING FUNCTION * EXIT. * * * ------------------------------------------------------------- * * END OF PROGRAM * ------------------------------------------------------------- *
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.