COBOL2002 ユーザーズガイド

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

29.5.3 メッセージを送信するコーディングの例

'.\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 VALUE 14.
         02 LABEL-DAT PIC X(512) VALUE 'Sample Message'.
         02 BODY-LEN  PIC S9(9)  USAGE COMP VALUE 19.
         02 BODY-DAT  PIC X(512) VALUE 'Sample Message data'.
         :
       PROCEDURE DIVISION.
           :
           INITIALIZE CBLMQINF.
           MOVE LOW-VALUE TO CBLMQ-RESERVE OF CBLMQINF.
 
           MOVE '2' 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.
 
           DISPLAY 'SEND MESSAGE LABEL:' LABEL-DAT(1:LABEL-LEN).
           DISPLAY 'SEND MESSAGE DATA:' BODY-DAT(1:BODY-LEN).
           MOVE 3   TO MQMSG-PRIORITY   OF CBLMQINF.
           MOVE '0' TO MQMSG-DELIVERY   OF CBLMQINF.
           MOVE '0' TO MQMSG-JOURNAL    OF CBLMQINF.
           MOVE '0' TO MQMSG-DEADLETTER OF CBLMQINF.
           MOVE '0' TO MSGDATA-CONV     OF CBLMQINF.
           CALL 'CBLMQSENDMSG' USING CBLMQINF MESSAGE-PARM.
           IF ZERO NOT = RETURN-CODE THEN
             DISPLAY 'QUEUE SEND MESSAGE ERROR'
           END-IF.
 
           CALL 'CBLMQCLOSE' USING CBLMQINF QUEUE-PARM.
           IF ZERO NOT = RETURN-CODE THEN
             DISPLAY 'QUEUE CLOSE ERROR'
             STOP RUN
           END-IF.
           :