COBOL2002 ユーザーズガイド
'.\SampleQueue'というキューからメッセージを受信するコーディングの例を次に示します。
: DATA DIVISION. WORKING-STORAGE SECTION. 01 CBLMQINF. 02 MSMQ-ERRCD PIC X(8) VALUE SPACE. 02 DETAIL-CD PIC S9(9) USAGE COMP VALUE ZERO. 02 LOCATE-END PIC X VALUE SPACE. 02 QUEUE-ACCESS PIC X VALUE SPACE. 02 MQMSG-CLASS PIC X(2) VALUE SPACE. 02 MQMSG-TIMEOUT PIC S9(9) USAGE COMP VALUE ZERO. 02 MQMSG-PRIORITY PIC 9(4) USAGE COMP VALUE ZERO. 02 MQMSG-DELIVERY PIC X VALUE SPACE. 02 MQMSG-JOURNAL PIC X VALUE SPACE. 02 MQMSG-DEADLETTER PIC X VALUE SPACE. 02 MSGDATA-CONV PIC X VALUE SPACE. 02 CBLMQ-RESERVE PIC X(102) VALUE LOW-VALUE. 01 QUEUE-PARM. 02 PATH-LEN PIC S9(9) USAGE COMP VALUE 13. 02 PATH-NAME PIC X(256) VALUE '.\SampleQueue'. 01 MESSAGE-PARM. 02 LABEL-LEN PIC S9(9) USAGE COMP. 02 LABEL-DAT PIC X(512). 02 BODY-LEN PIC S9(9) USAGE COMP. 02 BODY-DAT PIC X(512). : PROCEDURE DIVISION. : INITIALIZE CBLMQINF. MOVE LOW-VALUE TO CBLMQ-RESERVE OF CBLMQINF. MOVE '1' TO QUEUE-ACCESS OF CBLMQINF. CALL 'CBLMQOPEN' USING CBLMQINF QUEUE-PARM. IF ZERO NOT = RETURN-CODE THEN DISPLAY 'QUEUE OPEN ERROR' STOP RUN END-IF. MOVE 20000 TO MQMSG-TIMEOUT OF CBLMQINF. MOVE '0' TO MSGDATA-CONV OF CBLMQINF. COMPUTE BODY-LEN = FUNCTION LENGTH(BODY-DAT). CALL 'CBLMQRECEIVEMSG' USING CBLMQINF MESSAGE-PARM. EVALUATE RETURN-CODE WHEN ZERO WHEN 2 IF 2 = RETURN-CODE THEN DISPLAY 'RECEIVE MESSAGE DATA ERROR' ELSE IF LOW-VALUE = MQMSG-CLASS OF CBLMQINF THEN DISPLAY 'NORMAL MESSAGE' ELSE DISPLAY 'NOT NORMAL MESSAGE' END-IF END-IF DISPLAY 'PRIORITY :' MQMSG-PRIORITY OF CBLMQINF DISPLAY 'DELIVERY :' MQMSG-DELIVERY OF CBLMQINF DISPLAY 'JOURNAL :' MQMSG-JOURNAL OF CBLMQINF DISPLAY 'DEAD-LETTER:' MQMSG-DEADLETTER OF CBLMQINF DISPLAY 'LABEL:' LABEL-DAT(1:LABEL-LEN) DISPLAY 'DATA :' BODY-DAT (1:BODY-LEN) WHEN 1 DISPLAY 'RECEIVE MESSAGE BUFFER OVERFLOW:' BODY-LEN WHEN 100 DISPLAY 'RECEIVE MESSAGE TIME-OUT' WHEN OTHER DISPLAY 'QUEUE RECEIVE MESSAGE ERROR' END-EVALUATE. CALL 'CBLMQCLOSE' USING CBLMQINF QUEUE-PARM. IF ZERO NOT = RETURN-CODE THEN DISPLAY 'QUEUE CLOSE ERROR' STOP RUN END-IF. :
All Rights Reserved. Copyright (C) 2013, 2016, Hitachi, Ltd.
All Rights Reserved. Copyright (C) 2002, 2011, Microsoft Corporation.