MessageQueueDirector説明書
|
目次
索引

|
B.1 メッセージ監視プログラムの記述例 (COBOL言語の場合)
付図B.1に、Interstage(コンポーネントトランザクションサービス)のサーバアプリケーションを呼び出すメッセージ監視プログラムの記述例を示します。
なお、Interstageのサーバアプリケーションの呼出し方法の詳細については、“アプリケーション作成ガイド(CORBAサービス編)”を参照してください。
* -----------------------------------------------------------------------
* メッセージ監視プログラム (Interstageのクライアントアプリケーション)
* -----------------------------------------------------------------------
IDENTIFICATION DIVISION.
PROGRAM-ID. MSGWAIT-PROG.
AUTHOR. MQDUSER3.
*
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
ARGUMENT-NUMBER IS ARG-C
ARGUMENT-VALUE IS ARG-V
SYMBOLIC CONSTANT
COPY SYMBOL-CONST IN CORBA.
.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
*
* ----------------------------------------------------------------
* 作業領域の定義
* ----------------------------------------------------------------
01 SYSNAME PIC X(9) SYNC VALUE SPACE.
01 QUENAME PIC X(64) VALUE SPACE.
*
01 MQDSYS USAGE POINTER.
01 MQDQUE USAGE POINTER.
01 WAITMODE PIC 9(5) COMP-5 VALUE 2.
01 CURSOR PIC 9(5) COMP-5 VALUE 2.
01 MQD-STS PIC 9(5) COMP-5 VALUE 0.
01 FLG-END PIC 9(5) COMP-5 VALUE 0.
*
* < 復帰情報 >
01 RETENV.
02 LEVEL PIC 9(5) COMP-5 VALUE 0.
02 RCODE PIC 9(5) COMP-5 VALUE 0.
01 RETVALUE PIC S9(5) COMP-5 VALUE 0.
*
* < メッセージヘッダ >
COPY "HEADER.cbl".
*
* < メッセージ本体 >
01 MSGBODY.
02 MSGPTR USAGE POINTER.
01 MSGBODYDATA PIC X(200) VALUE SPACE.
01 BODYLENGTH PIC 9(9) COMP-5 VALUE 200.
*
* < Interstageのサーバアプリケーション呼出し用のデータ記述 >
* → この記述は“アプリケーション作成ガイド(CORBAサービス編)”
* を参照してください。
*
* ----------------------------------------------------------------
* 処理手続き
* ----------------------------------------------------------------
PROCEDURE DIVISION.
*
*-----------------------------------------------*
* Interstageのサーバアプリケーション呼出しの *
* ための前処理 *
*-----------------------------------------------*
* → この処理は“アプリケーション作成ガイド(CORBAサービス編)”
* を参照してください。
*
DISPLAY "メッセージ受信を開始".
MOVE 0 TO MQD-STS.
MOVE 0 TO FLG-END.
*
*-----------------------------------------------*
* MQDへの接続 *
*-----------------------------------------------*
MOVE "MQD001" TO SYSNAME.
CALL "MQDCONNECT" USING SYSNAME RETENV MQDSYS.
DISPLAY "MQDCONNECT" " " RCODE.
IF PROGRAM-STATUS < 0
THEN
MOVE 1 TO MQD-STS
GO TO EXT-PRO
END-IF.
*
*-----------------------------------------------*
* メッセージキューへの接続 *
*-----------------------------------------------*
MOVE "Q002" TO QUENAME
CALL "MQDCONNECTQ" USING MQDSYS QUENAME RETENV MQDQUE.
DISPLAY "MQDCONNECTQ" " " RCODE.
IF PROGRAM-STATUS < 0
THEN
MOVE 2 TO MQD-STS
GO TO EXT-DCM
END-IF.
*
PERFORM UNTIL FLG-END = 1
*-----------------------------------------------*
* メッセージの参照(到着待ち) *
*-----------------------------------------------*
MOVE FUNCTION ADDR( MSGBODYDATA ) TO MSGPTR.
CALL "MQDPEEKMSG" USING MQDQUE WAITMODE MSGHEAD MSGBODY BODYLENGTH CURSOR
RETENV RETVALUE.
DISPLAY "MQDPEEKMSG" " " RCODE.
IF PROGRAM-STATUS < 0
THEN
MOVE 3 TO MQD-STS
GO TO EXT-DCQ
END-IF.
IF MSGBODYDATA(1:3) = "END"
MOVE 1 TO FLG-END.
*
*-----------------------------------------------*
* Interstageのサーバアプリケーションの呼出し *
*-----------------------------------------------*
* < トランザクション開始 >
CALL "COSTRANSACTIONS-CURRENT-BEGIN" USING ….
* < アプリケーション呼出し >
CALL "IS-SVR-APPL" USING ….
IF PROGRAM-STATUS < 0
THEN
MOVE 4 TO MQD-STS
* < トランザクション異常終了 >
CALL "COSTRANSACTIONS-CURRENT-ROLLBACK" USING …
GO TO EXT-DCQ
END-IF.
* < トランザクション正常終了 >
CALL "COSTRANSACTIONS-CURRENT-COMMIT" USING ….
END-PERFORM.
*
EXT-DCQ.
*-----------------------------------------------*
* メッセージキューからの切断 *
*-----------------------------------------------*
CALL "MQDDISCONNECTQ" USING MQDQUE RETENV RETVALUE.
DISPLAY "MQDDISCONNECTQ" " " RCODE.
IF PROGRAM-STATUS < 0
THEN
MOVE 5 TO MQD-STS
GO TO EXT-PRO
END-IF.
*
EXT-DCM.
*-----------------------------------------------*
* MQDからの切断 *
*-----------------------------------------------*
CALL "MQDDISCONNECT" USING MQDSYS RETENV RETVALUE.
DISPLAY "MQDDISCONNECT" " " RCODE.
IF PROGRAM-STATUS < 0
MOVE 6 TO MQD-STS.
*
EXT-PRO.
*-----------------------------------------------*
* Interstageのサーバアプリケーション呼出しの *
* ための後処理 *
*-----------------------------------------------*
* → この処理は“アプリケーション作成ガイド(CORBAサービス編)”
* を参照してください。
*
MOVE MQD-STS TO PROGRAM-STATUS.
EXIT PROGRAM.
END PROGRAM MSGWAIT-PROG.
All Rights Reserved, Copyright(C) 富士通株式会社 2005