ページの先頭行へ戻る
Interstage Application Server MessageQueueDirector説明書

6.6.3 業務用データベースのトランザクション

  メッセージ格納ファイルとしてデータベースを使用する場合、一つのアプリケーションで業務用データベースとMQDを使用する場合には、MQDプログラムインタフェースを呼ぶ前に、業務用データベースに対してCOMMIT文を発行して、トランザクションを完結させておく必要があります。ただし、Interstageのトランザクション連携機能を使用している場合は、トランザクションを完結する必要はありません。

  以下に、誤ったCOBOLコーディング例を示します。

  
  EXEC SQL CONNECT  TO 'DB01' AS 'C1' END-EXEC.
  MOVE "MQD001"      TO    MQD-SYSNAME.
  CALL "MQDCONNECT"  USING MQD-SYSNAME MQD-ENVIRONMENT MQD-RESULT.
  MOVE "QUE001"      TO    MQD-QUENAME.
  CALL "MQDCONNECTQ" USING MQD-SYSADDR MQD-QUENAME MQD-ENVIRONMENT MQD-RESULT.
      ・
      ・
  EXEC SQL SET CONNECTION 'C1' END-EXEC.
  EXEC SQL SELECT 在庫数量 ・・ END-EXEC.
  CALL "MQDPUTMSG"  USING MQD-QUEADDR MQD-UNITFLG MQD-MESSAGEHEADER
                          MQD-MSGBODY MQD-ENVIRONMENT MQD-RESULT.
       ※ 誤り
            業務用データベース‘DB01‘に対するトランザクションが完結してない状態で
            MQDPUTMSGを呼び出している。
  EXEC SQL COMMIT END-EXEC.

  以下に、Interstageのトランザクション連携機能を使用した場合のCOBOLコーディング例を示します。

  
  MOVE "MQD001"      TO    MQD-SYSNAME.
  CALL "MQDCONNECT"  USING MQD-SYSNAME MQD-ENVIRONMENT MQD-RESULT.
  MOVE "QUE001"      TO    MQD-QUENAME.
  CALL "MQDCONNECTQ" USING MQD-SYSADDR MQD-QUENAME MQD-ENVIRONMENT MQD-RESULT.
      ・
      ・
  EXEC SQL SET CONNECTION 'C1' END-EXEC.
  EXEC SQL SELECT 在庫数量 ・・ END-EXEC.
      ・
      ・
  CALL "MQDPUTMSG"  USING MQD-QUEADDR MQD-UNITFLG MQD-MESSAGEHEADER
                          MQD-MSGBODY MQD-ENVIRONMENT MQD-RESULT.
      ・
      ・
  EXEC SQL SET CONNECTION 'C1' END-EXEC.
  EXEC SQL SELECT 在庫数量 ・・ END-EXEC.