OpenTP1 Version 7　メッセージキューイングアクセス機能　TP1/Message Queue Access 使用の手引

解説・手引・文法・操作書

3000-3-D94-30

前書き

対象製品

P-1M64-C781 uCosminexus TP1/Message Queue Access 07-50（適用OS：AIX V7.1，AIX V7.2）

P-8264-C811 uCosminexus TP1/Message Queue Access（64） 07-51（適用OS：Red Hat Enterprise Linux Server 7（64-bit x86_64）, Red Hat Enterprise Linux Server 8（64-bit x86_64））

P-1M64-D721 uCosminexus TP1/Message Queue Access（64） 07-51（適用OS：AIX V7.2）

これらのプログラムプロダクトのほかにもこのマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。

輸出時の注意

本製品を輸出される場合には、外国為替及び外国貿易法の規制並びに米国輸出管理規則など外国の輸出関連法規をご確認の上、必要な手続きをお取りください。

なお、不明な場合は、弊社担当営業にお問い合わせください。

商標類

HITACHI，OpenTP1，uCosminexusは，株式会社 日立製作所の商標または登録商標です。

AIXは，世界の多くの国で登録されたInternational Business Machines Corporationの商標です。

IBMは，世界の多くの国で登録されたInternational Business Machines Corporationの商標です。

Linuxは，Linus Torvalds氏の日本およびその他の国における登録商標または商標です。

OracleおよびJavaは，オラクルおよびその関連会社の登録商標です。

Red Hat is a registered trademark of Red Hat, Inc. in the United States and other countries.

Red Hatは，米国およびその他の国におけるRed Hat, Inc.の登録商標です。

Red Hat Enterprise Linux is a registered trademark of Red Hat, Inc. in the United States and other countries.

Red Hat Enterprise Linuxは，米国およびその他の国におけるRed Hat, Inc.の登録商標です。

UNIXは，The Open Groupの商標です。

Visual C++は，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

その他記載の会社名，製品名などは，それぞれの会社の商標もしくは登録商標です。

発行

2021年12月　3000-3-D94-30

著作権

All Rights Reserved. Copyright (C) 2006, 2021, Hitachi, Ltd.

(C) Copyright International Business Machines Corporation 1994, 1999. All rights reserved.

変更内容

変更内容(3000-3-D94-30)　uCosminexus TP1/Message Queue Access（64）　07-51

追加・変更内容

変更個所

AIXの場合，インストール時に作成されるファイルに，JavaのJMSインタフェースを追加しました。

表2-1

ユーザがUAP（JavaインタフェースやJMSインタフェースの場合，JavaVM）のプロセスで同時に使用できるファイル記述子の最大数（ソケット用のファイル記述子も含む）に関する計算式の記述を変更しました。

2.3.2

次の理由コードの説明を変更しました。

2195L（10進数），X'00000893'（16進数）

表A-1

単なる誤字・脱字などはお断りなく訂正しました。

変更内容(3000-3-D94-20)　uCosminexus TP1/Message Queue Access　07-51

追加・変更内容

Windowsに関する記載を削除しました。

「OpenTP1システム以外のトランザクションマネジャ（TM）」を「クライアントアプリケーションおよびMQCクライアント機能」に記載を変更しました。

MQCクライアント機能の記載内容を変更しました。

トランザクション連携の記載内容を変更しました。

HP-UXに関する記載を削除しました。

AIXで提供されないファイルを削除しました。

Linuxで提供されないファイルを削除しました。

XA連携に関する記載を削除しました。

次に示すMQCクライアント機能の環境変数のオペランドに関する記載を変更しました。

DCMQCEXPTRN

StrictXaStart

java起動時のオプション形式を変更しました。

クライアントアプリケーションをマルチスレッドで作成する場合に関する記載を変更しました。

XA連携に関する記載を変更しました。

出力形式の記載内容を変更しました。

注意事項の内容を変更しました。

uCosminexus Application ServerのDeployツール上に表示されるリソースアダプタの表示名を追加しました。

はじめに

このマニュアルは，TP1/Message Queue Accessの機能，操作，および運用について説明したものです。

TP1/Message Queue Accessおよびマニュアルは，米国International Business Machines Corporationとのライセンス契約に基づき，IBM MQのMQIの仕様をベースに実装しています。

対象読者

TP1/Message Queue Accessを使用するシステム管理者およびシステム設計者で，OpenTP1システムの知識がある方を対象としています。また，次のマニュアルを理解されていることを前提としています。

OpenTP1 解説（3000-3-D50）

OpenTP1 プログラム作成の手引（3000-3-D51）

OpenTP1 システム定義（3000-3-D52）

OpenTP1 運用と操作（3000-3-D53）

TP1/Message Queue 使用の手引（3000-3-D90）

TP1/Message Queue プログラム作成の手引（3000-3-D92）

TP1/Message Queue プログラム作成リファレンス（3000-3-D93）

マニュアルの構成

このマニュアルは，次に示す章と付録から構成されています。

第1章　概要

TP1/Message Queue Access（MQC）の接続形態や，MQCクライアント機能とMQCサーバ機能の関係などについて説明しています。

第2章　MQCクライアント機能

MQCクライアント機能の定義，クライアントアプリケーションの作成，および障害対策について説明しています。

第3章　MQCクライアント機能の運用コマンド

MQCクライアント機能の運用コマンドについて説明しています。

第4章　MQCクライアント機能のMQI

C言語またはCOBOL言語のMQIを使用したクライアントアプリケーションの作成方法について説明しています。

第5章　MQCクライアント機能のC++インタフェース

MQCクライアント機能のC++インタフェースについて説明しています。

第6章　MQCクライアント機能のJavaインタフェース

MQCクライアント機能のJavaインタフェースについて説明しています。

第7章　MQCクライアント機能のJMSインタフェース

MQCクライアント機能のJMSインタフェースについて説明しています。

第8章　メッセージの一覧

MQCクライアント機能が出力するメッセージについて説明しています。

付録A　理由コード

MQCの理由コードについて説明しています。

付録B　JMS仕様とMQCクライアント機能のJMSインタフェースとの差異

Oracle Corporationが提供するJMS 1.0とMQCクライアント機能のJMSインタフェースとの機能差について説明しています。

付録C　MQMessageクラスで変換できるコード化文字セット識別子の一覧

MQMessageクラスで変換できるコード化文字セット識別子について説明しています。

付録D　用語解説

関係する用語について説明しています。

関連マニュアル

読書手順

このマニュアルは，利用目的に合わせて直接章を選択して読むことができます。

このマニュアルでの表記

このマニュアルで使用する製品名称の略称を次に示します。

名称

略称

AIX V7.1

AIX

AIX V7.2

JavaTM

Java

JavaBeansTM

JavaBeans

Red Hat Enterprise Linux Server 7（64-bit x86_64）

Linux

Red Hat Enterprise Linux Server 8（64-bit x86_64）

uCosminexus TP1/Message Queue

TP1/Message Queue

uCosminexus TP1/Message Queue（64）

uCosminexus TP1/Message Queue Access

TP1/Message Queue Access

uCosminexus TP1/Message Queue Access（64）

AIXおよびLinuxを合わせてUNIXと表記することがあります。

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

文法の記号

このマニュアルで使用する各種の記号を説明します。

属性表示記号

ユーザ指定値の範囲などを説明する記号です。

属性表示記号

意味

〜

この記号のあとにユーザ指定値の属性を示します。

《　》

ユーザが指定を省略したときの解釈値を示します。

＜　＞

ユーザ指定値の構文要素を示します。

((　))

ユーザ指定値の指定範囲を示します。

構文要素記号

ユーザ指定値の内容を説明する記号です。

構文要素記号

意味

＜符号なし整数＞

数字列（0〜9）

＜10進数＞

数字（0〜9）

＜16進数＞

数字（0〜9）と（A〜F，a〜f）

＜識別子＞

先頭がアルファベットの英数字列

＜文字列＞

任意の文字の配列

文法記述記号

記述形式を説明する記号です。

文法記述記号

意味

〔　〕

この記号で囲まれている項目は省略してもよいことを示します。

（例）〔-e 終了処理監視タイマ値〕

-eオプションとそのオペランドを指定するか，何も指定しないことを示します。

{　 }

この記号で囲まれている複数の項目のうちから一つを選択することを示します。

（例）{ -p 自システムのポート番号 ｜ -s 自システムのサービス名 }

-p 自システムのポート番号と-s 自システムのサービス名のうち，どちらかを指定することを示します。

|

（ストローク）

この記号で区切られた項目は選択できることを示します。

（例）trn_crm_use = Y｜N

YまたはNを指定できることを示します。

略語一覧

このマニュアルで使用する英略語の一覧を次に示します。

英略語

英字での表記

API

Application Programming Interface

DNS

Domain Name Server

EBCDIC

Extended Binary Coded Decimal Interchange Code

EJB

Enterprise JavaBeans

EUC

Extended UNIX Code

J2EE

Java 2 Platform Enterprise Edition

J2SE

Java 2 Standard Edition

JAR

Java Archive

JIS

Japan Industrial Standard

JMS

Java Message Service

JNDI

Java Naming and Directory Interface

JNI

Java Native Interface

JTA

Java Transaction API

LAN

Local Area Network

MDB

Message-Driven Bean

MQA

Message Queue - Access

MQC

TP1/Message Queue Access

MQI

Message Queue Interface

OS

Operating System

PTP

Point to Point

RM

Resource Manager

RPC

Remote Procedure Call

SUP

Service Using Program

TCP/IP

Transmission Control Protocol /Internet Protocol

TM

Transaction Manager

TP1/Message Queue

OpenTP1/Message Queue

UAP

User Application Program

UTF-8

8-bit UCS Transformation Format

KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

謝辞

COBOL言語仕様は，CODASYL（the Conference on Data Systems Languages：データシステムズ言語協議会）によって，開発された。原開発者に対し謝意を表すとともに，CODASYLの要求に従って以下の謝辞を掲げる。なお，この文章は，COBOLの原仕様書「CODASYL COBOL JOURNAL OF DEVELOPMENT 1984」の謝辞の一部を再掲するものである。

いかなる組織であっても，COBOLの原仕様書とその仕様の全体又は一部分を複製すること，マニュアルその他の資料のための土台として原仕様書のアイデアを利用することは自由である。ただし，その場合には，その刊行物のまえがきの一部として，次の謝辞を掲載しなければならない。書評などに短い文章を引用するときは，"COBOL"という名称を示せば謝辞全体を掲載する必要はない。

COBOLは産業界の言語であり，特定の団体や組織の所有物ではない。

CODASYL　COBOL委員会又は仕様変更の提案者は，このプログラミングシステムと言語の正確さや機能について，いかなる保証も与えない。さらに，それに関連する責任も負わない。

次に示す著作権表示付資料の著作者及び著作権者

FLOW-MATIC（Sperry Rand Corporationの商標），

Programming for the Univac（R）I and II，

Data Automation Systems，Sperry Rand Corporation　著作権表示1958年，1959年；

IBM Commercial Translator Form No.F 28-8013，IBM著作権表示1959年;

FACT，DSI 27A5260-2760，Minneapolis-Honeywell，著作権表示1960年

は，これら全体又は一部分をCOBOLの原仕様書中に利用することを許可した。この許可は，COBOL原仕様書をプログラミングマニュアルや類似の刊行物に複製したり，利用したりする場合にまで拡張される。

1　概要

この章では，TP1/Message Queue Access（MQC）の接続形態や，MQCクライアント機能とMQCサーバ機能の関係などについて説明します。

1.1　TP1/Message Queue Accessの概要

TP1/Message Queue Access（MQC）を使用すると，クライアントアプリケーションからTP1/Message Queueのメッセージキューにメッセージを登録したり，取り出したりできます。

TP1/Message Queue AccessはMQCクライアント機能を提供し，TP1/Message QueueはMQCサーバ機能を提供します。MQCクライアント機能は，OpenTP1システムが存在しないマシンで動作できます。

MQCクライアント機能とMQCサーバ機能の通信について次の図に示します。

図1‒1　MQCクライアント機能とMQCサーバ機能の通信

TP1/Message Queue Accessの通信では，TCP/IPプロトコル上のMQCプロトコルを使用します。

MQCプロトコルは，MQCクライアント機能とMQCサーバ機能との間にMQCコネクションを確立します。MQCコネクションの確立は必ずMQCクライアント機能から開始します。MQCコネクションとTCP/IPコネクションとは1対1の関係です。

MQCプロトコルでは，クライアントアプリケーションで指定されたパラメタを一定の長さに分割してヘッダを付けたあと，TCP/IPに送信します。この分割の単位をセグメントといいます。セグメントサイズは，MQCの環境変数DCMQCSEGSIZEで指定します。

MQCプロトコルにはバージョンがあります。MQCクライアント機能とMQCサーバ機能は同じバージョンで動作します。

1.2　TP1/Message Queue Accessの機能

この節では，TP1/Message Queue Accessの機能について説明します。

1.2.1　MQCクライアント機能

MQCクライアント機能は，ユーザが業務に合わせて作成するクライアントアプリケーションを実行することによってMQCサーバ機能と通信します。

クライアントアプリケーションは，TP1/Message Queueのメッセージキューにメッセージを登録したり，取り出したりします。作成時には，MQI（C言語またはCOBOL言語），C++言語，Java言語，およびJMSインタフェースのJava言語を使用できます。

APIはトランザクションの範囲内でも範囲外でも使用できます。

1.2.2　MQCサーバ機能

MQCサーバ機能は，MQCリスナサーバとMQCゲートウェイサーバとで構成されます。なお，MQCサーバ機能を構成するファイルは，TP1/Message Queueに添付されています。MQCサーバ機能の定義，運用，および障害対策については，マニュアル「TP1/Message Queue 使用の手引」を参照してください。

MQCリスナサーバ

MQCリスナサーバは，TP1/Message Queueに組み込まれて動作します。MQCクライアント機能からの通信を基にMQCゲートウェイサーバを予約し，トランザクションを処理します。

MQCゲートウェイサーバ

MQCゲートウェイサーバは，OpenTP1システムのユーザサーバとして動作します。MQCゲートウェイサーバは，MQCクライアント機能とは1対1の関係でキューアクセスを処理します。また，送受信するメッセージを格納するためにTP1/Message Queueのキューを使用します。

注意事項

TP1/Message Queue 07-00より前のバージョンのMQCサーバに接続しようとした場合，MQCゲートウェイサーバが異常終了（アボートコード：Mqcgw0c），またはMQCONN命令がMQRC_Q_MGR_NOT_AVAILABLE（2059）でエラーリターンします。必ず，TP1/Message Queue 07-00以降のMQCサーバに接続してください。

1.2.3　トランザクション連携

TP1/Message Queue Accessのトランザクション連携には，次の2種類があります。

非XAインタフェース接続

JTAインタフェース接続

(1)　非XAインタフェース接続

非XAインタフェース接続は，MQCクライアント機能がOpenTP1システムのTMと接続して動作します。

非XAインタフェース接続について次の図に示します。

図1‒2　非XAインタフェース接続

非XAインタフェース接続のクライアントアプリケーション3でトランザクションを開始するときは，「ローカルトランザクション」を開始します。ローカルトランザクションは，参加プログラムがキューマネジャだけのトランザクションです。ローカルトランザクションではキューマネジャがTMとして機能します。

(2)　JTAインタフェース接続

JTAインタフェース接続では，Cosminexus Component ContainerをTMとして接続します。この接続は，Cosminexus側のEJBクライアントアプリケーションから発行されるJMSインタフェースのAPIをMQCクライアント機能が持つJNIのMQIに変換することで実現します。変換されたMQIは，MQCプロトコルを介してTP1/Message Queueに通知されます。JTAインタフェース接続について次の図に示します。

図1‒3　JTAインタフェース接続

1.2.4　時間監視機能

MQCクライアント機能とMQCサーバ機能の監視タイマについて次の図に示します。

MQCクライアント機能の監視タイマ値の設定については，「2.2　MQCクライアント機能の環境設定」を参照してください。MQCサーバ機能の監視タイマ値の設定については，マニュアル「TP1/Message Queue 使用の手引」を参照してください。

図1‒4　MQCクライアント機能とMQCサーバ機能の監視タイマ

注※

この時間は，DCMQCTIMEREQオペランドで指定する結果応答受信監視タイマ値となります。結果応答受信監視タイマ値には，DCMQCTIMEGETオペランドで指定する，MQGET命令の待ち合わせ最大時間を含んでいます。

1.2.5　JMSインタフェース機能

JMSインタフェース機能は，EJBクライアントアプリケーションおよびCosminexus Component ContainerをTP1/Message Queueに接続します。この場合，JTAによってトランザクションと連携します。

(1)　コネクション制御

JMSインタフェース機能では，Cosminexusによるコネクションプーリングでコネクションを制御します。コネクションプーリングでは，クライアントアプリケーションがコネクションのクローズを要求すると，内部でコネクションの確立状態が保持されたままとなります。その後，新しいコネクションの確立を要求すると，確立状態が保持されていたコネクションが割り当てられます。これによって，コネクションの確立および解放に関するオーバーヘッドが減少します。

(2)　Message-Driven Beanキュー監視機能

Message-Driven Beanは，Cosminexus Component ContainerのEJBコンテナが実行を制御するEnterprise Beanの一つで，JMSと連携するメッセージ駆動タイプのBeanです。TP1/Message Queue Accessでは，Message-Driven Beanを介して，キューに到着したメッセージをEJBクライアントアプリケーションに割り当てます。

Message-Driven Beanキュー監視機能の動作の仕組みは次のとおりです。

TP1/Message Queue Accessは，複数のキュー監視スレッドを起動して常にTP1/Message Queueのキューへのメッセージ到着を監視します。

キューにメッセージが到着すると，キュー監視スレッドはそのメッセージを取得してMessage-Driven Beanに通知します。

Message-Driven Beanは，メッセージを処理するEJBクライアントアプリケーションを決定して起動します。

EJBクライアントアプリケーションは，データベースなどのほかのリソースマネジャ（RM）にアクセスしてメッセージを処理します。

2　MQCクライアント機能

この章では，MQCクライアント機能の定義，クライアントアプリケーションの作成，および障害対策について説明します。

2.1　MQCクライアント機能のセットアップ

MQCクライアント機能のライブラリのディレクトリを，適用OSに応じて次に示す環境変数に追加してください。

AIXの場合：LIBPATH

Linuxの場合：LD_LIBRARY_PATH

表2-1〜表2-2に，MQCクライアント機能のインストール時に作成されるファイルを適用OSごとに示します。なお，表中の$MQCDIRはTP1/Message Queue Accessのファイルが格納されているディレクトリです。標準はインストールディレクトリとなります。

表2‒1　MQCクライアント機能のインストール時に作成されるファイル（AIX）

言語

名称

ディレクトリ

ファイル名

C

非XAインタフェースライブラリ※

$MQCDIR/lib

libmqc.a

ヘッダファイル

$MQCDIR/include

cmqc.h

cmqcfc.h

サンプルAP

$MQCDIR/examples/c

mqcsample.c

makefile

COBOL

非XAインタフェースライブラリ※

$MQCDIR/lib

libmqccb.a

COBOLコピーファイル

$MQCDIR/include/COBOL

CMQ*.cbl

サンプルAP

$MQCDIR/examples/cobol

MQCSAMPLE.cbl

makefile

C++

非XAインタフェースライブラリ※

$MQCDIR/lib

libmqccpp.a

ヘッダファイル

$MQCDIR/include/cplus

imq*.hpp

imqtype.h

サンプルAP

$MQCDIR/examples/cpp

mqcsample.cpp

makefile

Java

非XAインタフェースライブラリ※

$MQCDIR/lib

libmqcj.a

Javaクラスライブラリ

$MQCDIR/lib

mqc.jar

サンプルAP

$MQCDIR/examples/java

MQAccessSample.java

makefile

JavaのJMSインタフェース

Javaクラスライブラリ

$MQCDIR/lib

mqcadpt.rar

mqcadptdef.jar

サンプルAP

$MQCDIR/examples/jms/SessionBean1

JMSSample1.java

JMSSample1Client.java

JMSSample1EJB.java

JMSSample1Home.java

compileBean

compileClient

config.xml

deployApp

testClient

QueueConfig

unDeployApp

$MQCDIR/examples/jms/SessionBean1/DD/META-INF

ejb-jar.xml

application.xml

サンプルAP（MQCインタフェース使用）

$MQCDIR/examples/jms/SessionBean2

JMSSample2.java

JMSSample2Client.java

JMSSample2EJB.java

JMSSample2Home.java

compileBean

compileClient

config.xml

deployApp

testClient

QueueConfig

unDeployApp

$MQCDIR/examples/jms/SessionBean2/DD/META-INF

ejb-jar.xml

application.xml

その他

運用コマンド

$MQCDIR/bin

mqcapiout

注※

これらのライブラリは，共用ライブラリとしても使用できます。

表2‒2　MQCクライアント機能のインストール時に作成されるファイル（Linux）

言語

名称

ディレクトリ

ファイル名

C

非XAインタフェースライブラリ

$MQCDIR/lib

libmqc.a

非XAインタフェース共用ライブラリ

$MQCDIR/lib

libmqc.so

ヘッダファイル

$MQCDIR/include

cmqc.h

cmqcfc.h

サンプルAP

$MQCDIR/examples/c

mqcsample.c

makefile

COBOL

非XAインタフェースライブラリ

$MQCDIR/lib

libmqccb.a

非XAインタフェース共用ライブラリ

$MQCDIR/lib

libmqccb.so

COBOLコピーファイル

$MQCDIR/include/COBOL

CMQ*.cbl

サンプルAP

$MQCDIR/examples/cobol

MQCSAMPLE.cbl

makefile

C++

非XAインタフェースライブラリ

$MQCDIR/lib

libmqccpp.a

非XAインタフェース共用ライブラリ

$MQCDIR/lib

libmqccpp.so

ヘッダファイル

$MQCDIR/include/cplus

imq*.hpp

imqtype.h

サンプルAP

$MQCDIR/examples/cpp

mqcsample.cpp

makefile

Java

非XAインタフェース共用ライブラリ

$MQCDIR/lib

libmqcj.so

Javaクラスライブラリ

$MQCDIR/lib

mqc.jar

サンプルAP

$MQCDIR/examples/java

MQAccessSample.java

makefile

JavaのJMSインタフェース

Javaクラスライブラリ

$MQCDIR/lib

mqcadpt.rar

mqcadptdef.jar

サンプルAP

$MQCDIR/examples/jms/SessionBean1

JMSSample1.java

JMSSample1Client.java

JMSSample1EJB.java

JMSSample1Home.java

compileBean

compileClient

config.xml

deployApp

testClient

QueueConfig

unDeployApp

$MQCDIR/examples/jms/SessionBean1/DD/META-INF

ejb-jar.xml

application.xml

サンプルAP（MQCインタフェース使用）

$MQCDIR/examples/jms/SessionBean2

JMSSample2.java

JMSSample2Client.java

JMSSample2EJB.java

JMSSample2Home.java

compileBean

compileClient

config.xml

deployApp

testClient

QueueConfig

unDeployApp

$MQCDIR/examples/jms/SessionBean2/DD/META-INF

ejb-jar.xml

application.xml

その他

運用コマンド

$MQCDIR/bin

mqcapiout

2.2　MQCクライアント機能の環境設定

MQCクライアント機能が使用する環境変数，Java言語のJMSインタフェースを使用する場合に必要なキュー定義ファイル，およびXAインタフェースの設定について説明します。

2.2.1　MQCクライアント機能の環境変数

UNIXの場合，MQCクライアント機能が使用する環境変数の設定形式は，MQCクライアント機能があるコンピュータのシェルによって異なります。

ボーンシェルを使用する場合は/etc/profileまたは$HOME/.profileに記述してください。

Cシェルを使用する場合は/etc/cshrcまたは$HOME/.cshrcに記述してください。

Java言語のJMSインタフェースを使用する場合は，uCosminexus Application Server上でリソースアダプタのプロパティ定義に次の環境変数を設定してください。

(1)　ボーンシェルを使用する場合の形式（UNIX）

$ DCMQCSRVHOSTNAME = 窓口となるMQCリスナサーバのホスト名
$ DCMQCSRVHOSTIP = 窓口となるMQCリスナサーバのIPアドレス
$ DCMQCSRVSERVNAME = 窓口となるMQCリスナサーバのサービス名
$ DCMQCSRVPORT = 窓口となるMQCリスナサーバのポート番号
〔$ DCMQCCLTHOSTIP = 自システムのIPアドレス〕
〔$ DCMQCCLTPORT = 自システムのポート番号〕
〔$ DCMQCTIMEREQ = MQCリスナサーバまたはMQCゲートウェイサーバからの
                     結果応答受信監視タイマ値〕
〔$ DCMQCTIMEGET = MQCゲートウェイサーバでのMQGET命令の
                     待ち合わせ最大時間〕
〔$ DCMQCTIMESEG = MQCリスナサーバまたはMQCゲートウェイサーバからの
                     継続セグメント受信監視タイマ値〕
〔$ DCMQCTIMECON = MQCリスナサーバまたはMQCゲートウェイサーバへの
                     最大接続試行時間〕
〔$ DCMQCSEGSIZE = 転送時のセグメントサイズ〕
〔$ DCMQCAPITRCOUT = APIトレースディスク出力要否〕
〔$ DCMQCAPITRCFILNUM = APIトレースファイル数〕
〔$ DCMQCAPITRCSIZE = APIトレース容量（エントリ数）〕
〔$ DCMQCAPITRCWRITE = APIトレース出力単位（エントリ数）〕
〔$ DCMQCEXPTRN = トランザクション処理方式の拡張要否〕
〔$ DCMQCDEFCON = 接続先情報定義ファイル読み込み要否〕
〔$ DCMQCDEFCONPATH = 接続先情報定義ファイルのパス〕

$ export DCMQCSRVHOSTNAME DCMQCSRVHOSTIP DCMQCSRVSERVNAME
DCMQCSRVPORT DCMQCCLTHOSTIP DCMQCCLTPORT DCMQCTIMEREQ
DCMQCTIMEGET DCMQCTIMESEG DCMQCTIMECON DCMQCSEGSIZE
DCMQCAPITRCOUT DCMQCAPITRCFILNUM DCMQCAPITRCSIZE DCMQCAPITRCWRITE
DCMQCEXPTRN DCMQCDEFCON DCMQCDEFCONPATH

(2)　Cシェルを使用する場合の形式（UNIX）

% setenv DCMQCSRVHOSTNAME  窓口となるMQCリスナサーバのホスト名
% setenv DCMQCSRVHOSTIP  窓口となるMQCリスナサーバのIPアドレス
% setenv DCMQCSRVSERVNAME  窓口となるMQCリスナサーバのサービス名
% setenv DCMQCSRVPORT  窓口となるMQCリスナサーバのポート番号
〔% setenv DCMQCCLTHOSTIP  自システムのIPアドレス〕
〔% setenv DCMQCCLTPORT  自システムのポート番号〕
〔% setenv DCMQCTIMEREQ  MQCリスナサーバまたはMQCゲートウェイサーバ
                           からの結果応答受信監視タイマ値〕
〔% setenv DCMQCTIMEGET  MQCゲートウェイサーバでのMQGET命令の
                           待ち合わせ最大時間〕
〔% setenv DCMQCTIMESEG  MQCリスナサーバまたはMQCゲートウェイサーバ
                           からの継続セグメント受信監視タイマ値〕
〔% setenv DCMQCTIMECON = MQCリスナサーバまたはMQCゲートウェイサーバへの
                            最大接続試行時間〕
〔% setenv DCMQCSEGSIZE  転送時のセグメントサイズ〕
〔% setenv DCMQCAPITRCOUT  APIトレースディスク出力要否〕
〔% setenv DCMQCAPITRCFILNUM  APIトレースファイル数〕
〔% setenv DCMQCAPITRCSIZE  APIトレース容量（エントリ数）〕
〔% setenv DCMQCAPITRCWRITE  APIトレース出力単位（エントリ数）〕
〔% setenv DCMQCEXPTRN  トランザクション処理方式の拡張要否〕
〔% setenv DCMQCDEFCON  接続先情報定義ファイル読み込み要否〕
〔% setenv DCMQCDEFCONPATH  接続先情報定義ファイルのパス〕

(3)　JMSインタフェース使用時の環境変数の設定

JMSインタフェースを使用する場合は，(1)〜(2)で示したMQCクライアント機能の環境変数に加えて，JMSインタフェース専用の環境変数を設定する必要があります。この設定では，uCosminexus Application Serverでリソースアダプタのプロパティ定義に設定します。詳細については，マニュアル「Cosminexus V9 アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

(a)　デプロイおよびアンデプロイ時の注意事項（JMSインタフェース使用時）

TP1/Message Queue Accessのリソースアダプタをインポートするには，リソースアダプタのインポートでmqcadpt.rarファイルを指定します。mqcadpt.rarファイルは，TP1/Message Queue Access製品のインストール先のlibディレクトリに格納されています。

TP1/Message Queue Accessのリソースアダプタは，アプリケーションデプロイして使用することはできません。また，複数デプロイして使用することもできません。

TP1/Message Queue Accessのリソースアダプタが出力するメッセージは，すべてログファイルに書き込まれます。ログを出力するかどうかは，「リソースアダプタのプロパティ定義」−「実行時のプロパティ」で設定できます。設定する場合は，必ずログを出力する設定にしてください。

TP1/Message Queue Accessのリソースアダプタをデプロイしたあとに削除する場合は，サーバを再起動してから削除してください。

TP1/Message Queue Access製品のリプレースなどで，TP1/Message Queue Access製品を削除する場合は，削除する前に必ずTP1/Message Queue Accessのリソースアダプタをエクスポートしてください。エクスポートの操作については，マニュアル「Cosminexus V9 アプリケーションサーバ アプリケーション設定操作ガイド」を参照してください。

なお，TP1/Message Queue AccessのリソースアダプタをスタートしたあとにTP1/Message Queue Access製品を削除するとエラーになります。この場合は，サーバを再起動してからTP1/Message Queue Access製品を削除してください。

(b)　環境変数の設定項目（JMSインタフェース使用時）

JMSインタフェースを使用する場合に設定する必要がある環境変数を次の表に示します。

表2‒3　JMSインタフェース使用時に必要な環境変数

分類

設定項目

設定する内容

MQCクライアント機能共通

DCMQCSRVHOSTNAME

窓口となるMQCリスナサーバのホスト名

DCMQCSRVHOSTIP

窓口となるMQCリスナサーバのIPアドレス

DCMQCSRVSERVNAME

窓口となるMQCリスナサーバのサービス名

DCMQCSRVPORT

窓口となるMQCリスナサーバのポート番号

DCMQCCLTHOSTIP

自システムのIPアドレス

DCMQCCLTPORT

自システムのポート番号

DCMQCTIMEREQ

MQCリスナサーバまたはMQCゲートウェイサーバからの結果応答受信監視タイマ値

DCMQCTIMEGET

MQCゲートウェイサーバでのMQGET命令の待ち合わせ最大時間

DCMQCTIMESEG

MQCリスナサーバまたはMQCゲートウェイサーバからの継続セグメント受信監視タイマ値

DCMQCTIMECON

MQCリスナサーバまたはMQCゲートウェイサーバへの最大接続試行時間

DCMQCSEGSIZE

転送時のセグメントサイズ

DCMQCAPITRCOUT

APIトレースディスク出力要否

DCMQCAPITRCFILNUM

APIトレースファイル数

DCMQCAPITRCSIZE

APIトレース容量（エントリ数）

DCMQCAPITRCWRITE

APIトレース出力単位（エントリ数）

JMSインタフェース専用

ModelQueueName

TemporaryQueueオブジェクト生成時のモデルキュー定義

TraceLevel

JMSAPIトレース情報の出力レベル

PrfTraceLevel

JMSPRFトレース情報の取得レベル

QueueConfigFileName

キュー定義ファイル名

StrictXaStart

ユーザトランザクション開始と同時にMQCサーバでトランザクションを開始するかどうか

注

JMSインタフェースを使用する場合のMQCクライアント機能の環境変数の型は次のとおりです。

TraceLevelおよびPrfTraceLevel：java.lang.Integer型

その他の環境変数：すべてjava.lang.String型

(4)　環境変数の設定場所の有効性

接続先情報定義ファイルを読み込むかどうかによって，有効になる環境変数の設定場所が異なります。接続先情報定義ファイルを読み込む（DCMQCDEFCON=Y）場合，および接続先情報定義ファイルを読み込まない（DCMQCDEFCON=N）場合の，環境変数の設定場所の有効性を次の表に示します。

表2‒4　接続先情報定義ファイルの読み込みの有無による環境変数の設定場所の有効性

環境変数名

指定する内容

DCMQCDEFCON=Y

DCMQCDEFCON=N

接続先情報定義ファイル

OSに設定する環境変数

接続先情報定義ファイル

OSに設定する環境変数

DCMQCDEFCON

接続先情報定義ファイル読み込み要否

−

○

−

○

DCMQCDEFCONPATH

接続先情報定義ファイルのパス

−

○

−

−

DCMQCMGRNAME

接続先のMQサーバのキューマネジャ名

○

−

−

−

DCMQCSRVHOSTNAME

窓口となるMQCリスナサーバのホスト名

○

−

−

○

DCMQCSRVHOSTIP

窓口となるMQCリスナサーバのIPアドレス

○

−

−

○

DCMQCSRVSERVNAME

窓口となるMQCリスナサーバのサービス名

○

−

−

○

DCMQCSRVPORT

窓口となるMQCリスナサーバのポート番号

○

−

−

○

DCMQCCLTHOSTIP

自システムのIPアドレス

○

−

−

○

DCMQCCLTPORT

自システムのポート番号

○

−

−

○

DCMQCTIMEREQ

MQCリスナサーバまたはMQCゲートウェイサーバからの結果応答受信監視タイマ値

○

−

−

○

DCMQCTIMEGET

MQCゲートウェイサーバでのMQGET命令の待ち合わせ最大時間

○

−

−

○

DCMQCTIMESEG

MQCリスナサーバまたはMQCゲートウェイサーバからの継続セグメント受信監視タイマ値

○

−

−

○

DCMQCTIMECON

MQCリスナサーバまたはMQCゲートウェイサーバへの最大接続試行時間

○

−

−

○

DCMQCSEGSIZE

転送時のセグメントサイズ

○

−

−

○

DCMQCAPITRCOUT

APIトレースディスク出力要否

−

○

−

○

DCMQCAPITRCFILNUM

APIトレースファイル数

−

○

−

○

DCMQCAPITRCSIZE

APIトレース容量（エントリ数）

−

○

−

○

DCMQCAPITRCWRITE

APIトレース出力単位（エントリ数）

−

○

−

○

DCMQCEXPTRN

トランザクション処理方式の拡張要否

−

○

−

○

（凡例）

○：有効になります。

−：無効になります。

2.2.2　MQCクライアント機能の環境変数のオペランド

MQCクライアント機能を使用するための環境を定義します。

(1)　環境変数のオペランド（共通）

ここでは，UNIXでボーンシェルを使用する場合の形式で表記しています。

・DCMQCSRVHOSTNAME = 窓口となるMQCリスナサーバのホスト名

〜＜1〜255バイトの文字列＞

窓口となるMQCリスナサーバのホスト名を指定します。

このホスト名は，ドメインネームサーバ（DNS）またはホスト名ファイルに登録されている必要があります。この環境変数には途中に空白文字を含んだ文字列を指定しないでください。途中に空白文字を含んだ文字列を指定した場合，システムログにKFCA30951-Eメッセージが出力され，MQCリスナサーバへの接続に失敗します。DCMQCSRVHOSTIPで窓口となるMQCリスナサーバのIPアドレスを指定した場合は，この指定は省略できます。DCMQCSRVHOSTNAMEとDCMQCSRVHOSTIPの両方を指定した場合は，DCMQCSRVHOSTIPの指定が優先されます。

・DCMQCSRVHOSTIP = 窓口となるMQCリスナサーバのIPアドレス

〜（nnn.nnn.nnn.nnn）((0〜255))

窓口となるMQCリスナサーバのIPアドレスを指定します。

指定形式は，nnn.nnn.nnn.nnnです。nnnの値をピリオド（.）で区切って指定します。nnnの値は，10進数で0から255まで指定できます。また，先頭に0を指定した場合は，8進数値として扱われます。例えば，10を010と指定するとシステムは8が指定されたと認識するので注意してください。

DCMQCSRVHOSTNAMEで窓口となるMQCリスナサーバのホスト名を指定した場合，この指定は省略できます。DCMQCSRVHOSTNAMEとDCMQCSRVHOSTIPの両方を指定した場合は，DCMQCSRVHOSTIPの指定が優先されます。

・DCMQCSRVSERVNAME = 窓口となるMQCリスナサーバのサービス名

〜＜1〜32バイトの文字列＞

窓口となるMQCリスナサーバのサービス名を指定します。

このサービス名は，サービス名ファイルに登録されている必要があります。この環境変数には途中に空白文字を含んだ文字列を指定しないでください。途中に空白文字を含んだ文字列を指定した場合，システムログにKFCA30951-Eメッセージが出力され，MQCリスナサーバへの接続に失敗します。DCMQCSRVPORTで窓口となるMQCリスナサーバのポート番号を指定した場合は，この指定は省略できます。DCMQCSRVPORTとDCMQCSRVSERVNAMEの両方を指定した場合は，DCMQCSRVPORTの指定が優先されます。

サービス名は，サービス名ファイルに次の形式で指定します。

サービス名　　　　　　　ポート番号/TCP

・DCMQCSRVPORT = 窓口となるMQCリスナサーバのポート番号

〜＜符号なし整数＞((5001〜65535))

窓口となるMQCリスナサーバのポート番号を指定します。

DCMQCSRVSERVNAMEで窓口となるMQCリスナサーバのサービス名を指定した場合は，この指定は省略できます。DCMQCSRVPORTとDCMQCSRVSERVNAMEの両方を指定した場合は，DCMQCSRVPORTの指定が優先されます。

・DCMQCCLTHOSTIP = 自システムのIPアドレス

〜（nnn.nnn.nnn.nnn）((0〜255))

自システムのIPアドレスを指定します。

指定形式は，nnn.nnn.nnn.nnnです。nnnの値を".（ピリオド）"で区切って指定します。nnnの値は，10進数で0から255まで指定できます。また，先頭に0を指定した場合は，8進数値として扱われます。例えば，10を010と指定するとシステムは8が指定されたと認識するので注意してください。

この指定は省略できます。省略した場合は，自システムから自動的に検出されたIPアドレスでMQCリスナサーバおよびMQCゲートウェイサーバに接続します。

・DCMQCCLTPORT = 自システムのポート番号

〜＜符号なし整数＞((5001〜65535))

自システムのポート番号を指定します。

OSが自動割り当てするポート番号の範囲外で，かつほかのプログラムが使用しない番号を指定してください。OSが自動割り当てするポート番号は，OSの種別やOSのバージョンなどによって異なります。詳細は，OSのマニュアルを参照してください。

・DCMQCTIMEREQ = MQCリスナサーバまたはMQCゲートウェイサーバからの結果応答受信監視タイマ値

〜＜符号なし整数＞((10〜65535))《180》（単位：秒）

MQCクライアント機能からMQCリスナサーバ，またはMQCゲートウェイサーバへ要求を送ってから応答が返るまでの待ち時間を指定します。

MQGMO_WAITオプションを指定したMQGET命令の場合には，次に示すどちらか小さい方の値が指定時間に加算されます。

DCMQCTIMEGETで指定した時間

（MQGET命令のオプションであるWaitIntervalフィールドの値）

−（MQGET命令発行からの経過時間）

指定時間を過ぎても応答が返らない場合は，API実行がエラーリターンします。

・DCMQCTIMEGET = MQCゲートウェイサーバでのMQGET命令の待ち合わせ最大時間

〜＜符号なし整数＞((1〜60))《1》（単位：秒）

メッセージを取り出す場合に，MQCゲートウェイサーバで発行するMQGET命令の待ち合わせ最大時間を指定します。

MQGET命令のオプションであるWaitIntervalフィールドの値が，DCMQCTIMEGETで指定した値より小さい場合，MQCゲートウェイサーバはWaitIntervalフィールドの値でMQGET命令を発行します。

MQGET命令のオプションであるWaitIntervalフィールドの値が，DCMQCTIMEGETで指定した値より大きい場合，MQCゲートウェイサーバはDCMQCTIMEGETで指定した値でMQGET命令を発行します。

時間内にメッセージが取り出せない場合，MQCゲートウェイサーバは次に示すどちらか小さい方の値で再度，MQGET命令を発行します。

DCMQCTIMEGETで指定した時間

（MQGET命令のオプションであるWaitIntervalフィールドの値）−（MQGET命令発行からの経過時間）

このオペランドは，MQGET命令でMQGMO_WAITオプションを指定した場合だけ有効です。

・DCMQCTIMESEG = MQCリスナサーバまたはMQCゲートウェイサーバからの継続セグメント受信監視タイマ値

〜＜符号なし整数＞((10〜65535))《30》（単位：秒）

MQCリスナサーバからの応答がセグメント分割される場合に，継続セグメントを受信する時間を指定します。

・DCMQCTIMECON = MQCリスナサーバまたはMQCゲートウェイサーバへの最大接続試行時間

〜＜符号なし整数＞((10〜180))《10》（単位：秒）

MQCクライアントがMQCリスナサーバまたはMQCゲートウェイサーバとの間にTCP/IPコネクションを確立する際に，接続を試行する最大時間を指定します。

MQCクライアントは，TCP/IPコネクションの確立を試行したあと，次に試行するまでの間隔を，1ミリ秒から始めて順に2倍ずつ増やし，最大1秒間隔となるまで延ばします。つまり，1ミリ秒，2ミリ秒，4ミリ秒，8ミリ秒，…，512ミリ秒，1秒と間隔を延ばし，以降は1秒間隔で試行を続けます。

DCMQCTIMECONに指定する時間は，このTCP/IPコネクションの再試行間隔の合計時間を意味します。TCP/IPコネクションの確立を試行し始めてから，この時間分の再試行を繰り返してもコネクションを確立できなかったときAPIはエラーリターンします。

この指定を省略すると，最小値10が設定されます。10未満の値を指定した場合は，設定値は最小値10に変更され，180より大きな値を指定した場合は，設定値は最大値180に変更されます。

・DCMQCSEGSIZE = 転送時のセグメントサイズ

〜＜符号なし整数＞((1024〜131071))《16384》（単位：バイト）

要求または応答をセグメント分割で送受信する場合の転送セグメントサイズを指定します。TCP/IPウィンドサイズは，転送時のセグメントサイズの2倍のサイズで指定されます。

TCP/IPウィンドウサイズは，このオペランドで指定する転送セグメントサイズを2倍した値で取得されます。また，TCP/IPのsetsockopt関数で取得されるウィンドウサイズをサポートしていないシステムでは，APIの実行時にエラーリターンする場合があります。この場合は，システムで指定できるウィンドウサイズの範囲を調査の上，このオペランドで指定する転送セグメントサイズを変更してください。

・DCMQCAPITRCOUT = APIトレースディスク出力要否

〜｛ON | OFF｝《OFF》

APIトレース情報の取得を指定します。

ON：APIトレース情報が取得されます。

OFF：APIトレース情報は取得されません。

この指定は省略できます。省略した場合はAPIトレース情報は取得されません。

APIトレース情報を取得するとカレントディレクトリにAPIトレースファイルが作成されます。ファイル名は次のようになります。

mpc.api.ppp.n

ppp：プロセスID

n：0 〜（指定ファイル数-1）

・DCMQCAPITRCFILNUM = APIトレースファイル数

〜＜符号なし整数＞((5〜65536))《5》

APIトレース情報を取得する場合のAPIトレースファイルの数を指定します。この指定は，DCMQCAPITRCOUTの指定がONの場合にだけ有効です。

この指定は省略できます。省略した場合は5が設定されます。

・DCMQCAPITRCSIZE = APIトレース容量（エントリ数）

〜＜符号なし整数＞((1024〜65536))《1024》

APIトレース情報を取得する場合のAPIトレースファイルの最大エントリ数を指定します。1エントリは232バイトです。このエントリ数を超えるAPIトレース情報の書き込みが発生すると，APIトレース情報は折り返します。この指定は，DCMQCAPITRCOUTの指定がONの場合にだけ有効です。

この指定は省略できます。省略した場合は1024が設定されます。

・DCMQCAPITRCWRITE = APIトレース出力単位（エントリ数）

〜＜符号なし整数＞((0〜1024))

UNIXの場合《0》

APIトレース情報を取得する場合のAPIトレースの出力単位を指定します。このエントリ数のAPIトレース情報の取得，最大エントリ数分のAPIトレース情報の取得，またはMQDISC命令の発行を契機に，APIトレース情報の書き込みが発生します。この指定は，DCMQCAPITRCOUTの指定がONの場合にだけ有効です。

APIトレースは，MQCONN命令からMQDISC命令までが取得されます。また，同一プロセス内で複数回MQCONN命令を発行し，それぞれのコネクションハンドルに対して，MQDISC命令を発行した場合，コネクションハンドルに関係なく，最初に発行したMQCONN命令から最後のMQDISC命令までが取得されます。

この指定は省略できます。省略したときの値はOSの種別によって異なります。UNIXでは0が設定され，最大エントリ数分のAPIトレース情報の取得，またはMQDISC命令の発行を契機に，APIトレース情報の書き込みが発生します。

JMSインタフェース使用時の注意

JMSインタフェースを使用する場合，リソースアダプタのプロパティ定義には，あらかじめDCMQCAPITRCWRITEの値に1が設定されています。必要に応じて変更してください。

・DCMQCEXPTRN =トランザクション処理方式の拡張要否

〜｛Y | N｝《Y》

このオペランドは，使用しているTP1/Message Queue Accessのバージョンでは必要ありません。通常は省略してください。ただし，指定してもエラーにはなりません。

このオペランドは，過去のバージョンで作成された定義との互換性のためだけに指定できます。

(2)　環境変数のオペランド（JMSインタフェース用）

・ModelQueueName = TemporaryQueueオブジェクト生成時のモデルキュー定義

〜＜java.lang.String型の文字列＞

TemporaryQueue（動的キュー）を生成する場合のモデルキュー名を指定します。

48文字を超える文字列が指定された場合，超えた部分は切り捨てられます。

また，モデルキュー以外のキュー名は指定しないでください。モデルキュー以外のキュー名を指定した場合の動作は保証されません。

・TraceLevel = JMSAPIトレース情報の出力レベル

〜＜java.lang.Integer型の符号なし整数＞((0〜4))《3》（単位：トレース出力レベル）

JMSAPIトレース情報の出力レベルを指定します。

上記以外の値を指定すると出力レベル3（デフォルト）に相当するトレース情報が出力されます。

JMSAPIトレース情報の出力レベルの詳細については，「2.4.3　JMSAPIトレースファイルの出力形式」を参照してください。

・PrfTraceLevel = JMSPRFトレース情報の取得レベル

〜＜java.lang.Integer型の符号なし整数＞((0〜1))《1》（単位：トレース取得レベル）

JMSPRFトレース情報の取得レベルを指定します。

上記以外の値を指定すると取得レベル1（デフォルト）に相当するトレース情報が取得されます。

JMSPRFトレース情報の取得レベルの詳細については，「2.4.4　JMSPRFトレースファイルの取得形式」を参照してください。

・QueueConfigFileName = キュー定義ファイル名

〜＜java.lang.String型の文字列＞

キュー定義ファイル名をフルパスで指定します。

このキュー定義ファイルは，JMSインタフェースを使用する場合だけ必要なファイルです。

指定したキュー定義ファイルの読み込みに失敗した場合は，TP1/Message Queue Accessの起動に失敗します。キュー定義ファイルの作成方法については，「2.2.3　キュー定義ファイルの作成（JMSインタフェース用）」を参照してください。

・StrictXaStart = ユーザトランザクション開始と同時にMQCサーバでトランザクションを開始するか

〜｛ON | OFF｝《OFF》

ユーザトランザクション開始と同時にMQCサーバでトランザクションを開始するかどうかを指定します。

ON：トランザクションを開始します。

OFF：同時には開始しないで，必要になったときに開始します。

この指定は省略できます。省略した場合はOFFを指定したものとして扱われます。

この環境変数にOFFを指定した場合，ユーザトランザクション開始と同時にMQCサーバでトランザクションは開始しません（最適化）。次のどれかのメソッドを発行した時点で，初めてMQCサーバ側にトランザクションが発生します。

QueueSender.send()

QueueReceiver.receive()

QueueReceiver.receiveNoWait()

通常OFFの動作で問題が発生することはありませんが，次に示す利用方法で使用する場合には問題が発生します。

1相コミット環境で，ユーザトランザクションを開始してからコミットするまでの間に，MQCサーバのトランザクションを発生させるための上記メソッド（1〜3）を発行しない場合，最適化の影響からユーザトランザクションがロールバック決着します。

この場合はStrictXaStartにONを指定することで回避できます。

ただし，StrictXaStartにONを指定した場合，次のような影響があります。

xa_start時の最適化が無効になり，MQCサーバとの通信が発生します。このため，StrictXaStartにOFFを指定した場合に比べて性能が低下します。

MQCサーバ側でのトランザクション発生契機が変わるため，次に示すタイマ値の再設計が必要です。

再検討が必要なタイマ

　次に示すトランザクションサービス定義のオペランドなど，トランザクション開始から監視をするタイマ値の再検討が必要です。

　・trn_expiration_time

　・trn_completion_limit_time

　・trn_cpu_time

　・trn_limit_time

StrictXaStartにONを指定する場合は，上記影響を考慮の上で使用してください。

(3)　環境変数のオペランド（接続先情報定義ファイルのキューマネジャ接続用）

・DCMQCDEFCON = 接続先情報定義ファイル読み込み要否

〜｛Y | N｝《N》

接続先情報定義ファイルを読み込むかどうかを指定します。

Y：接続先情報定義ファイルを読み込みます。この指定によって，接続先情報定義ファイルに設定されている複数のMQサーバに接続できます。ただし，接続先情報定義ファイルに設定できるキューマネジャ構成定義は最大16です。それ以上設定しても有効になりません。

接続先情報定義ファイルが読み込まれるのは，非XAライブラリのAPを使用しているときだけです。JMSインタフェース使用時に設定しても無効となります。

接続先情報定義ファイルの読み込みを指定した場合は，MQCONN命令のName引数に，環境変数DCMQCMGRNAMEのオペランド値を指定してください。MQCONN命令でキューマネジャ名に空白を指定した場合は，MQRC_Q_MGR_NAME_ERR（2058）でエラーになります。

N：接続先情報定義ファイルを読み込みません。

接続先情報定義ファイルは，該当する接続先情報定義ファイルを使用しているユーザアプリケーションを終了しなくても修正できます。ただし，修正した値を有効にするには，該当する接続先情報定義ファイルを使用しているユーザアプリケーションの停止が必要です。

・DCMQCDEFCONPATH = 接続先情報定義ファイルのパス

〜＜1〜256バイトの文字列＞

接続先情報定義ファイルをフルパスで指定します。パスにはファイル名を含みます。パス名に日本語文字を指定した場合，OSによってシステムログにパス名が正しく表示されません。

2.2.3　キュー定義ファイルの作成（JMSインタフェース用）

JMSインタフェースを使用する場合は，キュー定義ファイルでアプリケーションが使用するキューを定義しておく必要があります。

キュー定義ファイルはテキストエディタを使用して作成します。キュー定義ファイルの名称および格納先ディレクトリは任意です。作成したキュー定義ファイルは，TP1/Message Queue Accessの環境変数QueueConfigFileNameでキュー定義ファイル名を指定することによって有効になります。キュー定義ファイルはTP1/Message Queue Accessの起動時に読み込まれます。キュー定義ファイルの記述形式が不正な場合は，TP1/Message Queue Accessの起動に失敗します。

(1)　キュー定義ファイルの記述形式

QueueImplClass=QImpl名※1
Queue.通番※2.DisplayName=キューの表示名※3
Queue.通番.QueueName=キュー名称※4
Queue.通番.QueueManagerName=キューマネジャ名称※5

注※1

QImpl名は「jp.co.Hitachi.soft.mqadaptor.QueueImpl」固定です。

注※2

通番には，1〜20480の範囲の値を指定してください。

この値は，連番になるように設定してください。連番で指定していない場合，アプリケーションのデプロイ実行時にエラーとなります。

（例）

Queue.1.DisplayName=Que1
Queue.1.QueueName=Queue1
Queue.1.QueueManagerName=QMgr1
Queue.2.DisplayName=Que2
Queue.2.QueueName=Queue2
Queue.3.QueueManagerName=QMgr1

注※3

CosminexusのNameSpaceには，「TP1_Message_Queue_Access_表示名_que」の値で登録されます。

注※4

キュー名称には，モデルキュー以外のキューを指定してください。

注※5

キューマネジャ名称には，接続先のキューマネジャ名称を指定してください。

(2)　キュー定義ファイルの記述例

QueueImplClass=jp.co.Hitachi.soft.mqadaptor.QueueImpl
Queue.1.DisplayName=Que1
Queue.1.QueueName=Queue1
Queue.1.QueueManagerName=
Queue.2.DisplayName=Que2
Queue.2.QueueName=Queue2
Queue.2.QueueManagerName=
Queue.3.DisplayName=Que3
Queue.3.QueueName=Queue3
Queue.3.QueueManagerName=

(3)　キュー定義ファイルの作成規則

コメントや継続行の記述も含めて，java.util.Propertiesクラスのloadメソッドで読み出しできる形式で作成してください。

QueueImplClassの指定がない場合，またはQueueImplClassの値が指定されていない場合はデプロイがエラーになります。

個々のキューごとに，DisplayName，QueueName，およびQueueManagerNameのそれぞれを指定してください。

Queue.n.DisplayNameの指定がない場合，またはQueue.n.DisplayNameの値が指定されていない場合は，通番がn-1のキューまでが有効になります。この場合，通番n以降のキュー定義は無視されます。

QueueNameの指定がない，またはQueueNameの値が指定されていないキューは無効になります。

QueueManagerNameの指定がない，QueueManagerNameの値が指定されていない，またはすべて空白が指定されているキューは，デフォルトのキューマネジャが指定されたものと認識されます。

同一のプロパティを複数記述した場合は，どの値が有効になるか保証されません。

キュー定義が一つもない場合は，フォーマット不正となります。

表示名が重複した場合，通番の大きい方が有効となります。

DisplayNameに指定できる文字は，半角英字（A〜Z，a〜z），半角数字（0〜9），および半角のアンダスコア（_）です。それ以外の文字を指定したキューは無効になります。

キュー名称には，モデルキューは指定しないでください。モデルキューを指定した場合，該当するモデルキューを指定したcreateSender，createReceiver，およびcreateBrowser，ならびにQueue指定のsendが発行されると，InvalidDestinationExceptionがスローされます。

2.2.4　接続先情報定義ファイルの設定項目

接続先情報定義ファイルには，MQCクライアント機能を使用するための環境を定義します。

(1)　環境変数のオペランド（接続先情報定義ファイル）

接続先情報定義ファイル独自のオペランドを次に示します。そのほかのオペランドについては，「2.2.2　MQCクライアント機能の環境変数のオペランド」を参照してください。有効になる環境変数の設定場所については，「表2-4　接続先情報定義ファイルの読み込みの有無による環境変数の設定場所の有効性」を参照してください。

・DCMQCMGRNAME = 接続先のMQサーバのキューマネジャ名

〜＜1〜48バイトのMQ文字列＞

接続先のMQサーバのキューマネジャ名を指定します。

このキューマネジャ名は，接続先のMQAサービス定義のmqaquemgr -nオプションで指定されているキューマネジャ名を指定してください。同一キューマネジャ名を指定し，IPアドレスやポート番号が異なる場合は，定義ファイルで最初に設定したキューマネジャの値が有効になります。

(2)　接続先情報定義ファイルの記述形式

MGR
DCMQCMGRNAME=キューマネジャ名※1
DCMQCSRVHOSTIP=窓口となるMQCリスナサーバのIPアドレス※2
DCMQCSRVHOSTNAME=窓口となるMQCリスナサーバのホスト名※2
DCMQCSRVPORT=窓口となるMQCリスナサーバのポート番号※3
DCMQCSRVSERVNAME=窓口となるMQCリスナサーバのサービス名※3
DCMQCCLTHOSTIP=自システムのIPアドレス
DCMQCCLTPORT=自システムのポート番号
DCMQCTIMEREQ=MQCリスナサーバまたはMQCゲートウェイサーバからの結果応答
             受信監視タイマ値
DCMQCTIMEGET=MQCゲートウェイサーバでのMQGET命令の待ち合わせ最大時間
DCMQCTIMESEG=MQCリスナサーバまたはMQCゲートウェイサーバからの継続
             セグメント受信監視タイマ値
DCMQCTIMECON=MQCリスナサーバまたはMQCゲートウェイサーバへの最大接続試行
             時間
DCMQCSEGSIZE=転送時のセグメントサイズ
MGREND

注※1

必須環境変数です。定義値に空白を指定しないでください。

注※2

必須環境変数です。どちらか一つを指定してください。両方指定した場合はDCMQCSRVHOSTIPが有効になります。

注※3

必須環境変数です。どちらか一つを指定してください。両方指定した場合はDCMQCSRVPORTが有効になります。

(3)　接続先情報定義ファイルの作成規則

「MGR」から「MGREND」まで（以降，キューマネジャ構成定義と呼びます）が一つの接続先の情報となるため，この間に各環境変数を設定してください。それ以外の場所に環境変数を設定した場合，その行は無効になります。また，「MGR」を設定したあと，「MGREND」を設定しないで，再び「MGR」を設定した場合は，その「MGR」行は無効になります。

接続先情報定義ファイルに設定しているキューマネジャ構成定義は，最大16個まで読み込まれます。

1行に301バイト以上の文字列を指定したとき，301バイト以降は無効になります（改行は文字としてカウントされません）。

コメントを入れる場合は，コメントの先頭に「#」を指定してください。

接続先情報定義ファイルに指定する文字は，半角で記述してください。全角で記述した場合，次のどれかになります。

無効な行になります。

変数名が指定されていないと判断されます。

定義値に不正な値が設定されていると判断されます。

ただし，ホスト名，サービス名の定義値，または「#」以降のコメント文字は，全角で記述できます。

キューマネジャ構成定義内で，同じ環境変数を指定した場合，あとから指定した値が有効となります。

複数のキューマネジャ構成定義が設定されているとき，環境変数DCMQCMGRNAMEに同一キューマネジャ名を指定し，ほかの環境変数（DCMQCSRVHOSTIPなど）が異なる場合は，最初に設定されているキューマネジャ構成定義だけが有効になります。

環境変数は１行に一つだけ指定できます。複数指定した場合，二つ目以降の環境変数は無効となります。

接続先情報定義ファイルのオペランドにない環境変数を指定した場合は，その行は無効になります。

「=」より前を環境変数，「=」より後ろを定義値として扱います。「=」を同じ行に二つ以上指定しても二つ目以降の「=」は無効となります。

環境変数の後ろに，空白文字，またはタブを指定した場合は，そこから「=」または改行の前までが無効となります。また，定義値の後ろに空白文字，タブ，「=」，または「#」を指定した場合，該当する行の，空白文字，タブ，「=」，または「#」以降が無効になります。

「MGR」，および「MGREND」の前に設定できるのは，空白文字とタブだけです。後ろに設定できるのは空白文字とタブ，またはコメントです。それ以外の文字を指定した場合，その行は無効になります。

キューマネジャ構成定義内で必須環境変数を省略した場合，または，環境変数の定義値に何も指定していない場合は，該当するキューマネジャ構成定義は無効になります。

接続先情報定義ファイルに設定できる最大行数は720です。それ以上は設定しても無効になります。

接続先情報定義ファイルで，次のような設定をした場合，フォーマット不正として，MQCONNでMQRC_UNEXPECTED_ERROR（2195）のエラーとなります。

キューマネジャ構成定義を一つも定義していない場合

接続先情報定義ファイルに設定している，すべてのキューマネジャ構成定義が無効な場合

(4)　接続先情報定義ファイルの記述例

接続先情報定義ファイルの設定と解析結果を次の図に示します。

図2‒1　接続先情報定義ファイルの設定と解析結果

注※1

デフォルト値であることを示します。

注※2

環境変数はすべて正しく設定されているため，すべて有効な定義値として読み込まれます。ただし，環境変数DCMQCSRVHOSTNAMEおよびDCMQCSRVSERVNAMEは，それぞれDCMQCSRVHOSTIPおよびDCMQCSRVPORTが設定されて有効になっているため，無効な値となります。

注※3

20行目で環境変数DCMQCMGRNAMEを設定していますが，25行目でもDCMQCMGRNAMEを設定しているため，作成規則6.によって25行目のDCMQCMGRNAMEで設定した値が有効になります。

22行目は作成規則12.によって無効な行となります。そのため，作成規則1.によって24行目も無効な行となり，19行目から31行目までが一つのキューマネジャ構成定義となります。

29行目は作成規則8.によって，先に設定されている環境変数DCMQCTIMEGET=60が有効になり，あとに設定した環境変数DCMQCTIMECON=120は無効となります。

30行目は作成規則11.によって，環境変数DCMQCSEGSIZEの後ろに空白文字が指定されているため，環境変数DCMQCTIMEREQが無効になります。同様に定義値の「2048」の後ろに空白文字が指定されているため，「20」は無効となります。

注※4

33行目から37行目のキューマネジャ構成定義は，34〜36行目の必須環境変数は正しく設定されており，ほかの環境変数にデフォルトの値が設定されています。しかし，19行目からのキューマネジャ構成定義と同じキューマネジャ名を設定しているため，作成規則7.によって，このキューマネジャ構成定義は無効となります。

注※5

43行目の「DCMQCMGRNAME＝TESTMGR」で「＝」は全角であるため，作成規則5.および10.によって，この１行が環境変数として解析されます。そのため，必須環境変数である，「DCMQCMGRNAME」は設定されていないと判断されます。また，44行目で定義値を設定していないため，作成規則13.によって，このキューマネジャ構成定義は無効になります。

注※6

39行目は，作成規則1.によって，キューマネジャ構成定義外に設定しているため，この行は無効となります。

2.3　クライアントアプリケーションの作成

MQCクライアント機能のクライアントアプリケーションの作成時に使用できる言語，リンケージオプション，およびトランザクションに関する注意事項について説明します。

2.3.1　使用できる言語

MQCクライアント機能のクライアントアプリケーションの作成時には，次に示すプログラミング言語を使用できます。

C言語

C言語のMQIを使用して作成します。詳細については，「4.　MQCクライアント機能のMQI」を参照してください。

C言語で作成したクライアントアプリケーションで必要なリンケージオプションを次の表に示します。

表2‒5　リンケージオプション（C言語）

適用OS

トランザクション連携の種別

リンケージオプション

AIX

非XAインタフェース接続

-lmqc -brtl -lpthread -lC

Linux

非XAインタフェース接続

-lmqc -lpthread

COBOL言語

COBOL言語のMQIを使用して作成します。詳細については，「4.　MQCクライアント機能のMQI」を参照してください。

COBOL言語で作成したクライアントアプリケーションで必要なリンケージオプションを次の表に示します。

表2‒6　リンケージオプション（COBOL言語）

適用OS

トランザクション連携の種別

リンケージオプション

AIX

非XAインタフェース接続

-lmqccb -brtl -lpthread -lC

Linux

非XAインタフェース接続

-lmqccb -lpthread

C++言語

C++言語を使用して作成します。詳細については，「5.　MQCクライアント機能のC++インタフェース」を参照してください。

C++言語で作成したクライアントアプリケーションで必要なリンケージオプションを次の表に示します。

表2‒7　リンケージオプション（C++言語）

適用OS

トランザクション連携の種別

リンケージオプション

AIX

非XAインタフェース接続

-brtl -lmqccpp -lmqc -lpthread

Linux

非XAインタフェース接続

-lmqccpp -lmqc -lpthread

Java言語

Java言語を使用して作成します。詳細については，「6.　MQCクライアント機能のJavaインタフェース」を参照してください。

JTAインタフェース接続をする場合は，Java言語のJMSインタフェースを使用して作成します。詳細については，「7.　MQCクライアント機能のJMSインタフェース」を参照してください。

TP1/Message Queue AccessのJMSインタフェースは，Oracle Corporationが提供するJMS 1.0のインタフェースに基づいて実装しています。JMS 1.0とMQCクライアント機能のJMSインタフェースとの機能差については，「付録B　JMS仕様とMQCクライアント機能のJMSインタフェースとの差異」を参照してください。

2.3.2　注意事項

クライアントアプリケーションの作成，および実行時の注意事項について次に示します。

TP1/Message Queue Accessは2相コミットに対応しています。ただし，ローカルトランザクション機能は1相コミットです。

MQCクライアント機能は，トランザクションの決着をMQCサーバ機能に依頼します。そのため，回線障害やサーバダウンが原因でトランザクションの決着時にMQCサーバ機能と連絡が取れない場合は，TMの決着依頼に対しリトライを要求します。

したがって，トランザクション中にMQCサーバ機能を停止した場合は，MQCクライアント機能はMQCサーバ機能が再起動するまで，TMの決着依頼に対し繰り返しリトライを要求します。

TP1/Message Queue Accessは，次の命令のエラー時に理由コードとしてMQRC_CONNECTION_BROKEN（コネクション切断）を返す場合があります。この理由コードを受け取った場合は，MQIに指定したコネクションハンドルが無効になります。MQCONN命令の発行によってコネクションを再度設定してください。

MQDISC，MQOPEN，MQCLOSE，MQGET，MQPUT，MQPUT1，MQSET，MQINQ，MQCMIT，またはMQBACK

TP1/Message Queue Accessを使用するUAPで，MQGMO構造体のOptionsパラメタにMQGMO_WAITを指定した場合は，MQGET命令が完了するまで，UAPを正常に停止させることはできません。

UAPをJavaで作成する場合，Javaがプロセスメモリを解放します。このため，メモリ不足（理由コード：SIGSEGV）でJavaが異常終了する場合があります。Java起動時に，-XmxXXm（XXm：サイズ（m：メガバイトを表す））を指定して最大ヒープサイズを調整してください。

TP1/Message Queue Accessは，MQDISC命令発行時にMQCゲートウェイサーバで後処理をするため，直後に発行されたMQCONN命令がMQRC_Q_MGR_NOT_AVAILABLE（キューマネジャが接続不能）でエラーリターンする場合があります。

MQDISC命令，またはMQCONN命令を繰り返し発行するUAPを使用した場合は，同時MQCONN数とMQCゲートウェイサーバ数が同じであるときにも，MQCONN命令のリトライ発行処理をしてください。

TP1/Message Queue Accessを使用するUAPでは，MQCONN命令発行時に回線障害（ソケット関数異常終了）が発生した場合に，理由コードとしてMQRC_UNEXPECTED_ERROR（予期しないエラーが発生）を返します。また，MQCゲートウェイサーバが不足した場合には，理由コードとしてMQRC_Q_MGR_NOT_AVAILABLE（キューマネジャが接続不能）を返します。どちらの場合もUAPでMQCONN命令のリトライ発行処理をしてください。

サーバ側に対するトランザクション制御依頼の送受信中にクライアントアプリケーションがダウンした場合，サーバ側のトランザクション状態とクライアント側のトランザクション状態が不一致となることがあります。この場合，サーバ側で次の対処をすることでトランザクションをロールバックできます。

OpenTP1のトランザクション状態表示コマンド（trnls -t）を実行し，不一致となったトランザクションを発生させたサーバ名（MQCGWPサーバ名）を確認します。

確認したMQCGWPサーバをdcsvstopコマンドで正常停止します。

1.で確認したMQCGWPサーバに対してmqccontrnコマンドに-fオプションを指定して実行します。

JMSインタフェースのAPIトレース取得情報について

JMSインタフェースのAPIトレースは，MQIレベルの情報が取得されます。JMSインタフェースでは，デプロイ以降で発行されたすべてのMQI情報が取得されます。

トランザクションが中断している間（xa_end（TM_SUSPEND））は，別のトランザクションを開始できません。

クライアントアプリケーションをマルチスレッドで作成する場合，JMSインタフェースの使用有無によって動作や注意事項が異なります。動作や注意事項を次の表に示します。

表2‒8　動作と注意事項

JMSインタフェースの使用有無

動作と注意事項

なし

（JMSインタフェース以外の場合）

MQCONN命令でMQCサーバと接続し，MQDISC命令でMQCサーバとの接続を解放します。

同一スレッド内で複数のMQCONN命令を発行できます。ただし，同一のコネクションハンドルを使用したMQI命令を複数スレッドで同時に発行した場合の動作は保証できません。

コネクションハンドルを別スレッドで使用できます。

あり

（JMSインタフェースの場合）

MQCONN命令でMQCサーバと接続し,MQDISC命令でMQCサーバとの接続を解放します。ただし，コネクションプーリング機能を使用している場合は，TP1/Message Queue Accessリソースアダプタ起動時にMQCサーバとの接続を行い，コネクションプーリングの仕様に従って接続が保持されます。

同一スレッド内で複数のMQCONN命令を発行できます。また，同一のコネクションハンドルを使用したMQI命令を複数スレッドで同時に発行できますが，MQCサーバへの要求はスレッド単位でシリアライズされます。

コネクションハンドルを別スレッドで使用できます。

ユーザがUAP（JavaインタフェースやJMSインタフェースの場合，JavaVM）のプロセスで同時に使用できるファイル記述子には最大数（ソケット用のファイル記述子も含む）が存在します。

ユーザがプロセスで同時に使用できるファイル記述子の最大数を超えて使用した場合は，次に示す現象が起こるおそれがあります。

UAPまたはJavaVMが異常終了する。

コネクションの確立が長時間完了しないで待ち状態となる。

MQCONN命令が理由コードMQRC_UNEXPECTED_ERROR（予期しないエラーが発生）で失敗する。

APIトレースファイルの出力に失敗する。

ユーザがプロセスで同時に使用できるファイル記述子の最大数は，次に示す計算式で求められます。ユーザがプロセスで同時に使用するファイル記述子の数が右辺の計算式で求めた値を超えないように，UAPの処理方式やプロセス構成を設計してください。

A ≦ B - （（C × 5） + D）

A：ユーザがプロセスで同時に使用できるファイル記述子の最大数

適用OS

バージョン

Aが右辺の計算式で求めた値を超えた場合の対処方法

Linux

07-51-01以前

カーネル設定値が1024未満の場合

カーネル設定値を変更することでプロセスで使用できるファイル記述子の数を増やせます。

カーネル設定値が1024以上の場合

カーネル設定値を変更するといった対策はありません。Aの同時使用数を減らしてください。多数のファイル記述子を同時に使用する必要がある（減らせない）ときは，プロセスを分割してください。

07-51-02以降

カーネル設定値を変更することでプロセスで使用できるファイル記述子の数を増やせます。

AIX

07-50以降

カーネル設定値を変更することでプロセスで使用できるファイル記述子の数を増やせます。

B：プロセスで使用できるファイル記述子の最大数

OSの制限による上限またはuCosminexus TP1/Message Queue Accessの制限による上限のどちらか小さい方の値が上限値です。

適用OS

バージョン

プロセスで使用できるファイル記述子の上限

OSの制限による上限

uCosminexus TP1/Message Queue Accessの制限による上限

Linux

07-51-01以前

カーネル設定値※1

1024

07-51-02以降

カーネル設定値※1

カーネル設定値※1

AIX

07-50以降

カーネル設定値※1

65534※2

C：JMSインタフェース以外の場合，uCosminexus TP1/Message Queue Accessの関数を発行するスレッドの同時実行数

JMSインタフェースの場合，uCosminexus TP1/Message Queue Accessのリソースアダプタの数（通常は1）

1スレッド当たりuCosminexus TP1/Message Queue Accessが同時に使用するファイル記述子は最大5個です。

D：同時使用コネクション数※³

注※1

カーネル設定値の詳細については，OSのマニュアルを参照してください。

注※2

ファイル記述子の最大数は65534です。

ただし，fopen関数の最大同時使用数は，OSの仕様によってFOPEN_MAXで制限されています。詳細については，OSのマニュアルを参照してください。

uCosminexus TP1/Message Queue Accessが同時に使用するfopen関数の最大同時使用数は1スレッド当たり最大2個です。プロセスで同時に使用するfopen関数の同時使用数が制限を超えないようにしてください。

制限を超えて使用した場合は，次に示す現象が起こるおそれがあります。

・MQCONN命令が理由コードMQRC_UNEXPECTED_ERROR（予期しないエラーが発生）で失敗する。

・APIトレースファイルの出力に失敗する。

注※3

コネクション数の最大値は，すべての接続先uCosminexus TP1/Message QueueのMQCゲートウェイサーバの総数となります。

詳細は，マニュアル「TP1/Message Queue使用の手引」のMQCサービス定義の種類について説明している個所の表の「注※」の説明を参照してください。MQCサービス定義の種類については，MQCサービス定義の準備作業で説明されています。

2.4　MQCクライアント機能の障害対策

MQCクライアント機能が障害時に取得する情報について次の表に示します。

なお，次の表に示す障害情報を残しておきたい場合は，必要に応じてコピーしてください。

表2‒9　MQCクライアント機能が障害時に取得する情報

取得情報

出力情報

参照方法

コアファイル（.core）

内部情報のプロセスなど

−

APIトレースファイル

（mqc.api.XXX.ZZ※1）

API情報など

mqcapioutコマンドで取得して参照してください。

Javaコンソール

Javaのメソッド情報など

−

JavaEnvironmentトレース

Javaのメソッド情報など

−

JMSAPIトレースファイル

（J2EEサーバログ出力ディレクトリ（ejb.server.log.directory）/connectors/リソースアダプタの表示名*.log※2）

JMSインタフェースのメソッド情報など

−

JMSPRFトレースファイル

（スプールディレクトリ(prfspool)/utt/prf/PRF識別子/dcopltrc/prf_*）

JMSインタフェースの性能検証用情報

Cosminexus Performance Tracerのcprfflushコマンドで取得し，cprfedコマンドで編集して参照してください

システムログファイル

TP1/Message Queue Accessが出力するメッセージ

−

（凡例）

−：該当しません。

注※1

XXX：プロセスID

ZZ：0〜65536

注※2

斜体で示す部分はシステム構成によって値が変わる部分です。

2.4.1　APIトレースファイルの出力形式

APIトレースファイルは，mqcapioutコマンドで取得できます。出力形式については，3章の「mqcapiout（APIトレースファイル取得）」を参照してください。

2.4.2　JavaEnvironmentトレースファイルの出力形式

JavaEnvironmentトレースファイルには，Javaのメソッドに関する情報が出力されます。

ここでは，JavaEnvironmentトレース情報の出力形式について説明します。〔　〕で囲んだ項目は，出力レベルの指定値によって出力の有無を選択できる項目です。

なお，JavaEnvironmentトレース情報の出力レベルは，MQEnvironmentクラスのenableTracingメソッドで指定します。出力レベルの詳細については，6章の「MQEnvironmentクラス（Java）」を参照してください。

(1)　出力形式

XX....XX YY....YY
〔Value = AA....AA〕
〔送信／受信のMQヘッダ〕
〔MQGMO情報 | MQPMO情報〕
〔送信／受信ユーザメッセージデータ〕

(2)　出力項目の説明

XX....XX

記入項目（文字列）を「記入項目 = クラス名@ハッシュ値#メソッド名」の形式で出力します。

YY....YY

発行個所（文字列）を次の値で出力します。

Start：入口

End：出口

AA....AA

パラメタ情報（文字列）です。

(3)　送信／受信のMQヘッダ

送信／受信のMQヘッダの出力形式

*** MQMessage Variable *** @ aa....aa
report = bb....bb
messageType = cc....cc
expiry = dd....dd
feedback = ee....ee
encoding = ff....ff
characterSet = gg....gg
format = hh....hh
priority = ii....ii
persistence = jj....jj
messageId = kk....kk
correlationId = ll....ll
backoutCount = mm....mm
replyToQueueName = nn....nn
replyToQueueManagerName = oo....oo
userId = pp....pp
accountingToken = qq....qq
applicationIdData = rr....rr
putApplicationType = ss....ss
putApplicationName = tt....tt
putDateTime = uu....uu
applicationOriginData = vv....vv
groupId = ww....ww
messageSequenceNumber = xx....xx
offset = yy....yy
messageFlags = zz....zz
originalLength = AA....AA

送信／受信のMQヘッダの出力項目の説明

aa....aa

ハッシュコード（16進数）です。

bb....bb

報告オプション（10進数）です。

cc....cc

メッセージタイプ（10進数）です。

dd....dd

メッセージ保持時間（10進数）です。

ee....ee

返答コード（10進数）です。

ff.....ff

マシンコード形式（10進数）です。

gg....gg

文字セット識別子（10進数）です。

hh....hh

フォーマット名（文字列）です。

ii....ii

メッセージ優先度（10進数）です。

jj....jj

メッセージ永続性（10進数）です。

kk....kk

メッセージ識別子の内容（16進数）です。

ll....ll

相関識別子（16進数）です。

mm....mm

ロールバックカウンタ（10進数）です。

nn....nn

応答キュー名（文字列）です。

oo....oo

応答キューマネジャ名（文字列）です。

pp....pp

ユーザ識別子（文字列）です。

qq....qq

課金トークン（16進数）です。

rr....rr

アプリケーション識別データ（文字列）です。

ss....ss

登録アプリケーションタイプ（10進数）です。

tt....tt

登録アプリケーション名（文字列）です。

uu....uu

登録日付および登録時刻（文字列）です。

vv....vv

登録元データ（文字列）です。

ww....ww

グループ識別子（16進数）です。

xx....xx

メッセージシーケンス番号（10進数）です。

yy....yy

オフセット（10進数）です。

zz....zz

メッセージフラグ（10進数）です。

AA....AA

登録元メッセージ長（10進数）です。

(4)　MQGMO情報

MQGMO情報の出力形式

*** MQGetMessageOptions Variable *** @ aa....aa
options = bb....bb
waitInterval = cc....cc
resolvedQueueName = dd....dd
matchOptions = ee....ee
groupStatus = ff....ff
segmentStatus = gg....gg
segmentation = hh....hh

MQGMO情報の出力項目の説明

aa....aa

ハッシュコード（16進数）です。

bb....bb

取り出しオプション（10進数）です。

cc....cc

待ち合わせ最大時間（10進数）です。

dd....dd

受信キュー名（文字列）です。

ee....ee

一致オプション（10進数）です。

ff.....ff

メッセージグループフラグ（文字列）です。

gg....gg

論理メッセージフラグ（文字列）です。

hh....hh

セグメント分割フラグ（文字列）です。

(5)　MQPMO情報

MQPMO情報の出力形式

*** MQPutMessageOptions Variable *** @ aa....aa
options = bb....bb
resolvedQueueName= cc....cc
resolvedQueueManagerName= dd....dd
knownDestCount= ee....ee
unknownDestCount= ff....ff
invalidDestCount= gg....gg
contextReference= hh....hh
recordFields = ii....ii

MQPMO情報の出力項目の説明

aa....aa

ハッシュコード（16進数）です。

bb....bb

登録オプション（10進数）です。

cc....cc

受信キュー名（文字列）です。

dd....dd

受信キューマネジャ名（文字列）です。

ee....ee

ローカルキューの数（10進数）です。

ff.....ff

リモートキューの数（10進数）です。

gg....gg

送信に失敗したキューの数（10進数）です。

hh....hh

コンテキスト（文字列）です。

ii....ii

MQPMR構造体フィールドの存在（10進数）です。

(6)　送信／受信ユーザメッセージデータ

送信／受信ユーザメッセージデータの出力形式

aa....aa message size: bb....bb
aa....aa message: cc....cc

送信／受信ユーザメッセージデータの出力項目の説明

aa....aa

メッセージの種類（文字列）を次の値で出力します。

・Get：Getメッセージ

・Put：Putメッセージ

bb....bb

メッセージデータのサイズ（10進数）です。

cc....cc

メッセージデータ（16進数）です。

2.4.3　JMSAPIトレースファイルの出力形式

JMSAPIトレースファイルには，ユーザAPIおよびCosminexusインタフェースのメソッドに関する情報が出力されます。

ここでは，JMSAPIトレース情報の出力レベルと出力形式について説明します。

(1)　出力レベル

JMSAPIトレースファイルでは，次の表に示す5とおりの出力レベルを指定できます。デフォルトは「レベル3」です。

表2‒10　JMSAPIトレース情報の出力レベル

ユーザAPIおよびCosminexusインタフェースのメソッドに関する出力情報

出力レベル

レベル0※

レベル1

レベル2

レベル3

レベル4

入口情報

×

○

○

○

○

正常時の出口情報

×

○

○

○

○

異常時の出口情報（Messageインタフェース以外）

×

○

○

○

○

送信／受信メッセージデータ

×

×

○

○

○

パラメタなどの埋め込み情報

×

×

×

○

○

Messageインタフェースのトレース情報

×

×

×

×

○

（凡例）

○：出力されます。

×：出力されません。

注※

レベル0では，ユーザAPIおよびCosminexusインタフェースのメソッドに関する情報は出力されません。KFCAから始まるメッセージ（TP1/Message Queue Accessのメッセージ），および例外スタックトレースだけが出力されます。

(2)　出力形式

各トレース情報の出力形式を示します。〔　〕で囲んだ項目は，出力レベルの指定値によって出力の有無を選択できる項目です。

(a)　入口情報の出力形式

(AA....AA)yyyy-mm-dd hh:mi:ss.mss        〔Hconn = BB....BB〕
〔Xid = [0x CC....CC] [0x CC....CC]〕
XX....XX # YY....YY START
〔QueueName = DD....DD〕
〔Value1 = EE....EE
  Value2 = EE....EE
     :
     :
  〕
〔MessageObject = FF....FF〕
〔送信／受信メッセージデータ〕

(b)　正常時の出口情報の出力形式

(AA....AA)yyyy-mm-dd hh:mi:ss.mss        〔Hconn = BB....BB〕
〔Xid = [0x CC....CC] [0x CC....CC]〕
XX....XX # YY....YY END
〔QueueName = DD....DD〕
〔Value1 = EE....EE
  Value2 = EE....EE
     :
     :
  〕
〔MessageObject = FF....FF〕
〔送信／受信メッセージデータ〕

(c)　異常時の出口情報の出力形式

(AA....AA)yyyy-mm-dd hh:mi:ss.mss        〔Hconn = BB....BB〕
〔Xid = [0x CC....CC] [0x CC....CC]〕
XX....XX # YY....YY ERR
〔QueueName = DD..DD〕
〔Value1 = EE....EE
  Value2 = EE....EE
     :
     :
  〕
〔MessageObject = FF....FF〕
〔CompletionCode = GG....GG〕
〔ReasonCode = HH....HH〕

(d)　出力項目の説明

AA....AA

トレースタイプを次の値で出力します。

API：APIトレースレベル

COS：Cosminexusインタフェースレベル

yyyy-mm-dd

取得した年（西暦）月日（10進数）です。

hh:mi:ss.mss

取得した時分秒ミリ秒（10進数）です。

BB....BB

コネクションハンドルの値（10進数）です。

CC....CC

トランザクションID（16進数）です。

XX....XX

発行元オブジェクトのクラス名称（文字列）です。

YY....YY

発行元のメソッド名称（文字列）です。

DD....DD

キュー名称（文字列）が埋め込み情報として出力されます。

EE....EE

パラメタのなどの埋め込み情報（int型，String型，long型，float型，double型，boolean型，short型，char型，byte型，またはObject型）です。

FF....FF

Messageオブジェクトのクラス名称およびハッシュコード（文字列）が埋め込み情報として出力されます。

GG....GG

完了コード（10進数）です。

HH....HH

理由コード（10進数）です。

(e)　送信／受信メッセージデータ

送信／受信メッセージデータの出力形式

<<<----- Message Data ----->>>
message size = aa....aa
message =
bb....bb
[0x cc....cc]

送信／受信メッセージデータの出力項目の説明

aa....aa

メッセージデータのサイズ（10進数）です。

bb....bb

メッセージデータ（文字列）です。最大64バイトを出力します。

メッセージデータの中に，MQ文字列でも空白でもない文字が含まれている場合は，その文字をピリオド（.）に変換して出力します。

cc....cc

メッセージデータ（16進数）です。最大64バイトを出力します。

2.4.4　JMSPRFトレースファイルの取得形式

JMSPRFトレースファイルには，性能検証用の情報が出力されます。

JMSPRFトレースを編集するには，Cosminexus Performance Tracerをインストールする必要があります。また，トレース情報の強制ファイル出力（cprfflushコマンド），およびトレース情報ファイルの編集出力（cprfedコマンド）については，マニュアル「Cosminexus V9 アプリケーションサーバ リファレンス コマンド編」を参照してください。

ここでは，JMSPRFトレースの取得レベルとイベントIDごとの取得内容について説明します。

(1)　取得レベル

JMSPRFトレースファイルでは取得レベルを指定できます。デフォルトは「レベル1」です。

0：JMSPRFトレースは取得しません。

1：イベントIDが0x920，0x921，0x92A，0x92Bで始まる情報を取得します。

(2)　取得ポイント

トレース情報が取得されたタイミングは，出力されたイベントIDで識別します。イベントIDおよびTP1/Message Queue AccessのJMSPRFトレース情報の取得ポイントを次の表に示します。

表2‒11　JMSPRFトレース情報の取得ポイント

イベントID

トレース取得ポイント

詳細情報データ長

（単位：バイト）

0x9200

send(message only)の入口

0

0x9210

send(message only)の出口

152

0x9201

send(message and 3 parameters)の入口

0

0x9211

send(message and 3 parameters)の出口

152

0x9202

send(queue, message)の入口

0

0x9212

send(queue, message)の出口

152

0x9203

send(queue, message and 3 parameters)の入口

0

0x9213

send(queue, message and 3 parameters)の出口

152

0x9204

receive()の入口

0

0x9214

receive()の出口

152

0x9205

receive(long timeout)の入口

0

0x9215

receive(long timeout)の出口

152

0x9206

receiveNoWait()の入口

0

0x9216

receiveNoWait()の出口

152

0x9207

nextElement()の入口

0

0x9217

nextElement()の出口

152

0x92A0

キュー監視スレッド・MQCONNの入口

0

0x92B0

キュー監視スレッド・MQCONNの出口

152

0x92A1

キュー監視スレッド・MQOPENの入口

0

0x92B1

キュー監視スレッド・MQOPENの出口

152

0x92A2

キュー監視スレッド・MQGET(検索)の入口※1

0

0x92B2

キュー監視スレッド・MQGET(検索)の出口※2

152

0x92A3

キュー監視スレッド・MQGET(削除)の入口

0

0x92B3

キュー監視スレッド・MQGET(削除)の出口

152

0x92A4

キュー監視スレッド・MQGET(ガーベッジ)の入口

0

0x92B4

キュー監視スレッド・MQGET(ガーベッジ)の出口

152

0x92A5

キュー監視スレッド・MQCLOSEの入口

0

0x92B5

キュー監視スレッド・MQCLOSEの出口

152

0x92A6

キュー監視スレッド・MQDISCの入口

0

0x92B6

キュー監視スレッド・MQDISCの出口

152

0x92A7

キュー監視スレッド・MQBEGINの入口

0

0x92B7

キュー監視スレッド・MQBEGINの出口

152

0x92A8

キュー監視スレッド・MQCMITの入口

0

0x92B8

キュー監視スレッド・MQCMITの出口

152

0x92A9

キュー監視スレッド・MQBACKの入口

0

0x92B9

キュー監視スレッド・MQBACKの出口

152

0x92AA

キュー監視スレッド・onMessageの入口

0

0x92BA

キュー監視スレッド・onMessageの出口

152

0x92AB

キュー監視スレッド・beforeDeliveryの入口

0

0x92BB

キュー監視スレッド・beforeDeliveryの出口

152

0x92AC

キュー監視スレッド・afterDeliveryの入口

0

0x92BC

キュー監視スレッド・afterDeliveryの出口

152

注※1

前回のMQGET(検索)の理由コードに，MQRC_NO_MSG_AVAILABLEが返された場合，MQGET(検索)が繰り返し実行されますが，その場合，0x92A2のトレースファイルは取得されません。

注※2

MQGET(検索)の理由コードにMQRC_NO_MSG_AVAILABLEが返された場合，スレッド終了時を除いて0x92B2のトレースファイルは取得されません。

(3)　イベントIDごとの取得内容

JMSPRFトレースファイルのイベントIDごとの取得内容を，次の表に示します。メッセージ識別子または相関識別子によって，MQCサーバでのメッセージを特定できます。

表2‒12　JMSPRFトレースファイルのイベントIDごとの取得内容

イベントID

リターンコード

インタフェース名※2

オペレーション名※2

詳細情報※1

キュー名称（48）

メッセージ識別子（32）

相関識別子（32）

ユーザデータ（32）

コネクションハンドル（4）

オブジェクトハンドル（4）

0x9200

○

○

○

−

−

−

−

−

−

0x9210

○

○

○

○

○

○

○

○

▲

0x9201

○

○

○

−

−

−

−

−

−

0x9211

○

○

○

○

○

○

○

○

▲

0x9202

○

○

○

−

−

−

−

−

−

0x9212

○

○

○

○

○

○

○

○

△

0x9203

○

○

○

−

−

−

−

−

−

0x9213

○

○

○

○

○

○

○

○

△

0x9204

○

○

○

−

−

−

−

−

−

0x9214

○

○

○

○

○

○

○

○

▲

0x9205

○

○

○

−

−

−

−

−

−

0x9215

○

○

○

○

○

○

○

○

▲

0x9206

○

○

○

−

−

−

−

−

−

0x9216

○

○

○

○

○

○

○

○

▲

0x9207

○

○

○

−

−

−

−

−

−

0x9217

○

○

○

○

○

○

○

○

▲

0x92A0

○

○

○

−

−

−

−

−

−

0x92B0

○

○

○

△

△

△

△

▲

△

0x92A1

○

○

○

−

−

−

−

−

−

0x92B1

○

○

○

○

△

△

△

○

▲

0x92A2

○

○

○

−

−

−

−

−

−

0x92B2

○

○

○

○

▲

▲

▲

○

○

0x92A3

○

○

○

−

−

−

−

−

−

0x92B3

○

○

○

○

▲

▲

▲

○

○

0x92A4

○

○

○

−

−

−

−

−

−

0x92B4

○

○

○

○

△

△

△

○

○

0x92A5

○

○

○

−

−

−

−

−

−

0x92B5

○

○

○

○

△

△

△

○

○

0x92A6

○

○

○

−

−

−

−

−

−

0x92B6

○

○

○

△

△

△

△

○

△

0x92A7

○

○

○

−

−

−

−

−

−

0x92B7

○

○

○

△

△

△

△

○

△

0x92A8

○

○

○

−

−

−

−

−

−

0x92B8

○

○

○

△

△

△

△

○

△

0x92A9

○

○

○

−

−

−

−

−

−

0x92B9

○

○

○

△

△

△

△

○

△

0x92AA

○

○

○

−

−

−

−

−

−

0x92BA

○

○

○

△

△

△

△

○

△

0x92AB

○

○

○

−

−

−

−

−

−

0x92BB

○

○

○

△

△

△

△

○

△

0x92AC

○

○

○

−

−

−

−

−

−

0x92BC

○

○

○

△

△

△

△

○

△

（凡例）

○：情報を取得します。

▲：情報を取得しますが，エラーの場合は無効な値です。

△：情報を取得しますが，常に無効な値です。

−：情報を取得しません。

注※1

cprfedコマンドに-Dumpまたは-CSVを指定した場合に出力される情報，および出力順序を示します。括弧内は，取得バイト数です。

注※2

出力される文字数の詳細については，マニュアル「Cosminexus V9 アプリケーションサーバ リファレンス コマンド編」の「cprfed（性能解析トレース情報の編集出力）」の「出力形式」を参照してください。

(4)　表示形式

(a)　JMSPRFトレース情報の表示形式

取得したトレース情報はcprfedコマンドで出力される次の形式に対応します。

リターンコード

リターンコードは，「Rc」に表示されます。

イベントID

トレース取得ポイント

リターンコード

0x920

入口

0

0x921，0x922

正常出口

1

異常出口

-1

0x92B0〜0x92B9

正常出口

0

異常出口

（各MQIの理由コード）

0x92BA〜0x92BC

正常出口

0

異常出口

-1

インタフェース名

インタフェース名は，「INT」に「MQAccess:メソッド名」の形式で表示されます。

イベントID

インタフェース名

0x9200，0x9210

MQAccess:send(message only)

0x9201，0x9211

MQAccess:send(msg, 3param)

0x9202，0x9212

MQAccess:send(queue, message)

0x9203，0x9213

MQAccess:send(que, msg, 3param)

0x9204，0x9214

MQAccess:receive(no argument)

0x9205，0x9215

MQAccess:receive(timeout)

0x9206，0x9216

MQAccess:receiveNoWait

0x9207，0x9217

MQAccess:browse(nextElement)

0x92A0，0x92B0

MQAccess:run MQCONN

0x92A1，0x92B1

MQAccess:run MQOPEN

0x92A2，0x92B2

MQAccess:run MQGET(browse)

0x92A3，0x92B3

MQAccess:run MQGET(delete)

0x92A4，0x92B4

MQAccess:run MQGET(garbage)

0x92A5，0x92B5

MQAccess:run MQCLOSE

0x92A6，0x92B6

MQAccess:run MQDISC

0x92A7，0x92B7

MQAccess:run MQBEGIN

0x92A8，0x92B8

MQAccess:run MQCMIT

0x92A9，0x92B9

MQAccess:run MQBACK

0x92AA，0x92BA

MQAccess:run onMessage

0x92AB，0x92BB

MQAccess:run beforeDelivery

0x92AC，0x92BC

MQAccess:run afterDelivery

オペレーション名

オペレーション名は，「OPR」に「オブジェクト名&ハッシュコード」の形式で表示されます。

イベントID

オペレーション名

0x9200，0x9210，0x9201，0x9211，0x9202，0x9212，0x9203，0x9213

jp.co.Hitachi.soft.mqadaptor.QueueSenderImpl@00000000

【出力文字列※】*adaptor.QueueSenderImpl@00000000

0x9204，0x9214，0x9205，0x9215，0x9206，0x9216

jp.co.Hitachi.soft.mqadaptor.QueueReceiverImpl@00000000

【出力文字列※】*aptor.QueueReceiverImpl@00000000

0x9207，0x9217

jp.co.Hitachi.soft.mqadaptor.MessageEnumeration@00000000

【出力文字列※】*ptor.MessageEnumeration@00000000

0x92A0，0x92B0，0x92A1，0x92B1，0x92A2，0x92B2，0x92A3，0x92B3，0x92A4，0x92B4，0x92A5，0x92B5，0x92A6，0x92B6，0x92A7，0x92B7，0x92A8，0x92B8，0x92A9，0x92B9，0x92AA，0x92BA，0x92AB，0x92BB，0x92AC，0x92BC

jp.co.Hitachi.soft.mqadaptor.ThreadController@00000000

【出力文字列※】*daptor.ThreadController@00000000

注※

オブジェクトの文字列表現の後ろ32文字が出力されます。

(b)　JMSPRFトレースファイル個別情報の表示形式

cprfedコマンドの-Dumpオプション（詳細情報をダンプ形式で出力），または-CSVオプション（詳細情報をCSV形式で出力）で表示される詳細情報は，OPTに連続して表示されます。

キュー名称

  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa（キュー名称（48バイト））
  合計48バイト
  キュー名称が48バイト以下の場合，後ろが「¥0」で埋められます。

メッセージ識別子

  bbbbbbbbbbbbbbbbbbbbbbbb（メッセージ識別子（24バイト） +
  ”¥0¥0¥0¥0¥0¥0¥0¥0”）
  合計32バイト
  接頭辞が「ID:」で始まる場合，取得する情報は「ID:」以降の24バイトと
  なります。

相関識別子

  cccccccccccccccccccccccc（相関識別子（24バイト） +
”¥0¥0¥0¥0¥0¥0¥0¥0”）
  合計32バイト
  接頭辞が「ID:」で始まる場合，取得する情報は「ID:」以降の24バイトと
  なります。

ユーザデータ

  dddddddddddddddddddddddddddddddd（ユーザデータ先頭32バイト）
  合計32バイト
   ユーザデータが32バイト以下の場合，後ろが「¥0」で埋められます。

コネクションハンドル

  eeeeeeee（コネクションハンドル，4バイト16進情報）
  合計4バイト

オブジェクトハンドル

  ffffffff（オブジェクトハンドル，4バイト16進情報）
  合計4バイト

3　MQCクライアント機能の運用コマンド

この章では，MQCクライアント機能の運用コマンドについて説明します。

MQCクライアント機能の運用コマンドの概要

MQCクライアント機能の運用コマンド一覧

MQCクライアント機能の運用コマンドについて次の表に示します。コマンドの詳細については，以降で説明します。

表3‒1　MQCクライアント機能の運用コマンド

機能

コマンド名称

オフライン中に実行

オンライン中に実行

アクセス権

APIトレースファイル取得

mqcapiout

○

×

TP1/Message Queue Access管理者

（凡例）

○：実行できます。

×：実行できません。

コマンド実行時の注意事項

ありません。

mqcapiout（APIトレースファイル取得）

形式

mqcapiout 〔 { -i スレッドID | -x | -k コネクションハンドル | -s | -t } 〕
             { トレースファイル名 | -c コアファイル名 }

機能

UAPが異常終了した場合に，APIトレースファイルまたはコアファイルからAPIトレースファイル情報を取得します。〔　〕内のすべてのオプションを省略した場合は，すべてのAPIトレース情報がスレッドID単位に出力されます。

オプション

●　-i スレッドID 〜＜10進数＞

指定されたスレッドIDのAPIトレース情報を出力します。スレッドIDは，-xオプションで出力されるIDを指定します。

●　-k　コネクションハンドル 〜((0x00000001〜0x7FFFFFFF※))

指定されたコネクションハンドルのAPIトレース情報を出力します。コネクションハンドルは，-sオプションで出力されるコネクションハンドルをコピー（複写）&ペースト（貼り付け）で指定します。ただし，0x00000001〜0x7FFFFFFF※以外の値を指定した場合は，メッセージKFCA30971-Eを出力します。

注※

64bit版OSでは，0x0000000000000001〜0x000000007FFFFFFFになります。

●　-x

スレッドIDを一覧で出力します。

●　-s

MQI命令の成功および失敗※に関係なく，トレースファイル内にあるすべてのコネクションハンドルを一覧で出力します。MQCONNの入口情報とMQDISCの出口情報はコネクションハンドルを持たないため，APIトレースファイルにこれら2種類のトレース情報しかない場合は，メッセージKFCA30982-Eを出力します。

注※

コネクションハンドルの値が不定（0x00000000〜0xFFFFFFFF）になります。ただし，64bit版OSでは，0x0000000000000000〜0x00000000FFFFFFFFになります。

●　-t

APIトレース情報を取得日時の順番で出力します。

●　-c コアファイル名

UAPが異常終了した場合に出力されるコアファイル名を指定します。

コマンド引数

●　トレースファイル名 〜＜文字列＞

UAPが異常終了した場合に出力されるAPIトレースファイル名を指定します。

APIトレースファイルは，APIトレースディスク出力要否がONの場合，UAPを実行したディレクトリに次の形式で出力します。

mqc.api.ppp.n

ppp：プロセスID

n：0〜指定ファイル数-1

出力形式

次の文字コードをシステム環境LANGに設定している場合，APIトレースの編集結果は日本語で出力します。そのほかの認識できない環境の場合は，英語で出力します。

AIXの場合：Ja_JP

Linuxの場合：ja_JP.UTF-8，ja_JP.UTF8，ja_JP.utf-8，またはja_JP.utf8

出力形式（MQCONNの場合）

関数　＝　MQCONN (出口)
          取得日時　＝　yy/mm/dd hh:mm:ss
          マイクロ秒　＝　AA....AA
          トレース取得通番　＝　BB....BB
          スレッドID　＝　CC....CC
          キューマネジャー名　＝　DD....DD
          コネクションハンドル　＝　[0x EE....EE]※1
          完了コード　＝　FF....FF (GG....GG)※1
          理由コード　＝　HH....HH (GG....GG)※1

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

キューマネジャ名（文字列）です。

EE....EE

コネクションハンドル（16進数）です。

FF....FF

完了コード（10進数）です。

GG....GG

定数名です。

HH....HH

理由コード（10進数）です。

出力形式（MQOPENの場合）

関数　＝　MQOPEN (出口)
        取得日時　＝　yy/mm/dd hh:mm:ss
        マイクロ秒　＝　AA....AA
        トレース取得通番　＝　BB....BB
        スレッドID　＝　CC....CC
        コネクションハンドル　＝　[0xDD....DD]
        オブジェクトハンドル　＝　[0xEE....EE]※1
        構造体識別子　＝　FF....FF (GG....GG)
        構造体バージョン番号　＝　HH....HH (GG....GG)
        オブジェクトタイプ　＝　II....II (GG....GG)
        オブジェクト名　＝　JJ....JJ
        オブジェクトキューマネジャー名　＝　KK....KK
        動的キュー名　＝　LL....LL
        代替ユーザ識別子　＝　MM....MM
        動作オプション　＝　NN....NN (GG....GG)
                                        :
                                     (GG....GG)
        完了コード　＝　OO....OO (MQCC_OK)※1
        理由コード　＝　PP....PP (MQRC_NON)※1
        オブジェクトレコード数　＝　QQ....QQ※2※3
        ローカルキューの数　＝　RR....RR※1※2※3
        リモートキューの数　＝　SS....SS※1※2※3
        オープンに失敗したキューの数　＝　TT....TT※1※2※3
        最初のオブジェクトレコードまでのオフセット　＝　UU....UU※2※3
        最初の応答レコードまでのオフセット　＝　VV....VV※2※3
        最初のオブジェクトレコードのアドレス　＝　[0x WW....WW]※2※3
        最初の応答レコードのアドレス　＝　[0x XX....XX]※2※3
         ------ 代替セキュリティ識別子 ------※3
        000000  [0x YY....YY YY....YY YY....YY YY....YY]  aa....aa※3
        000010  [0x YY....YY YY....YY YY....YY YY....YY]  aa....aa※3
        000020  [0x YY....YY YY....YY]  aa....aa※3
        解決したキュー名称　＝　bb....bb※3
        解決したキューマネジャー名称　＝　cc....cc※3

注※1

出口情報を表示するときだけ出力します。

注※2

MQOD構造体バージョン番号がMQOD_VERSION_2の場合に出力します。

注※3

MQOD構造体バージョン番号がMQOD_VERSION_3の場合に出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

オブジェクトハンドル（16進数）です。

FF....FF

構造体識別子（文字列）です。

GG....GG

定数名です。

HH....HH

構造体バージョン番号（10進数）です。

II....II

オブジェクトタイプ（10進数）です。

JJ....JJ

オブジェクト名（文字列）です。

KK....KK

オブジェクトキューマネジャ名（文字列）です。

LL....LL

動的キュー名（文字列）です。

MM....MM

代替ユーザ識別子（文字列）です。

NN....NN

動作オプション（10進数）です。

OO....OO

完了コード（10進数）です。

PP....PP

理由コード（10進数）です。

QQ....QQ

オブジェクトレコード数（10進数）です。

RR....RR

ローカルキュー数（10進数）です。

SS....SS

リモートキュー数（10進数）です。

TT....TT

オープンに失敗したキューの数（10進数）です。

UU....UU

オブジェクトレコードまでのオフセット（16進数）です。

VV....VV

応答レコードまでのオフセット（16進数）です。

WW....WW

オブジェクトレコードのアドレス（16進数）です。

値がヌルポインタの場合に，次のように表示されることがあります。△は空白を表します。

"0x△△△△△△△△△△△(nil)"

XX....XX

応答レコードのアドレス（16進数）です。

値がヌルポインタの場合に，次のように表示されることがあります。△は空白を表します。

"0x△△△△△△△△△△△(nil)"

YY....YY

代替セキュリティ識別子の内容（16進数）です。

aa....aa

代替セキュリティ識別子の内容（文字列）です。

bb....bb

キュー名称（文字列）です。

cc....cc

キューマネジャ名称（文字列）です。

出力形式（MQPUTの場合）

関数　＝　MQPUT (出口)
         取得日時　＝　yy/mm/dd hh:mm:ss
         マイクロ秒　＝　AA....AA
         トレース取得通番　＝　BB....BB
         スレッドID　＝　CC....CC
         コネクションハンドル　＝　[0x DD....DD]
         オブジェクトハンドル　＝　[0x EE....EE]
         バッファ長　＝　FF....FF
         ------  バッファの内容  ------
         000000    [0x GG....GG GG....GG GG....GG]    HH....HH
         完了コード　＝　II....II (JJ....JJ)※1
         理由コード　＝　KK....KK(JJ....JJ)※1
         構造体識別子　＝　LL....LL   (JJ....JJ)
         構造体バージョン番号　＝　MM....MM (JJ....JJ)
         報告オプション　＝　NN....NN(JJ....JJ)
         メッセージタイプ　＝　OO....OO(JJ....JJ)
         メッセージ保持時間　＝　PP....PP (JJ....JJ)
         返答コード　＝　QQ....QQ (JJ....JJ)
         マシンコード形式　＝　RR....RR(JJ....JJ)
         文字セット識別子　＝　SS....SS
         フォーマット名　＝　TT....TT    (JJ....JJ)
         メッセージ優先度　＝　UU....UU (JJ....JJ)
         メッセージ永続性　＝　VV....VV (JJ....JJ)
         ------  メッセージ識別子  ------
         000000    [0x WW....WW WW....WW WW....WW WW....WW]    XX....XX
         000010    [0x WW....WW WW....WW]    XX....XX
         ------  相関識別子  ------
         000000    [0x YY....YY YY....YY YY....YY YY....YY]    aa....aa
         000010    [0x YY....YY YY....YY ]    aa....aa
         ロールバックカウンタ　＝　bb... bb
         応答先キュー名　＝　cc....cc
         応答先キューマネジャー名　＝　dd....dd
         ユーザ識別子　＝　ee....ee
         ------  課金トークン  ------
         000000    [0x ff....ff ff....ff ff....ff ff....ff]    gg....gg
         000010    [0x ff....ff ff....ff ff....ff ff....ff]    gg....gg
         識別データ　＝　hh....hh
         登録アプリケーションタイプ　＝　ii....ii (JJ....JJ)
         登録アプリケーション名　＝　jj....jj
         登録日時　＝　kk....kk ll....ll
         登録元データ　＝　mm....mm

         ------  グループ識別子  ------※2
         000000    [0x nn....nn nn....nn nn....nn nn....nn]    oo....oo※2
         000010    [0x nn....nn nn....nn]    oo....oo※2
         メッセージシーケンス番号　＝　pp....pp※2
         オフセット　＝　qq....qq※2
         メッセージフラグ　＝　rr....rr (JJ....JJ)※2
         登録元メッセージ長　＝　ss....ss※2

         MQPMO構造体識別子　＝　MM....MM  (JJ....JJ)
         MQPMO構造体バージョン番号　＝　MM....MM (JJ....JJ)
         オプション　＝　tt....tt (JJ....JJ)
         コンテキスト　＝　[0x uu....uu]
         ローカルキューの数　＝　vv....vv
         リモートキューの数　＝　ww....ww
         送信に失敗したキューの数　＝　xx....xx

         受信キュー名　＝　yy....yy
         受信キューマネジャー名　＝　zz....zz
         登録メッセージレコード数または応答メッセージレコード数　＝　a1....a1※3
         MQPMR構造体フィールドの存在　＝　b1....b1 (JJ....JJ)※3
         最初の登録メッセージレコードのオフセット　＝　c1....c1※3
         最初の応答レコードのオフセット　＝　d1....d1※3
         最初の登録メッセージレコードのアドレス　＝　[0x e1....e1]※3
         最初の応答レコードのアドレス　＝　[0x f1....f1]※3

注※1

出口情報を表示するときだけ出力します。

注※2

MQMD構造体バージョン番号がMQMD_VERSION_2の場合に出力します。

注※3

MQPMO構造体バージョン番号がMQPMO_VERSION_2の場合に出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

オブジェクトハンドル（16進数）です。

FF....FF

バッファ長（10進数）です。単位はバイトです。

GG....GG

バッファの内容（16進数）です。

バッファ長が0バイトのときは出力しません。バッファ長が32バイトを超えるときは先頭から32バイトまでを出力します。

HH....HH

バッファの内容（16進数）です。

バッファ長が0バイトのときは出力しません。バッファ長が32バイトを超えるときは先頭から32バイトまでを出力します。

II....II

完了コード（10進数）です。

JJ....JJ

定数名です。

KK....KK

理由コード（10進数）です。

LL....LL

構造体識別子（文字列）です。

MM....MM

構造体バージョン番号（10進数）です。

NN....NN

報告オプション（10進数）です。

OO....OO

メッセージタイプ（10進数）です。

PP....PP

メッセージ保持時間（10進数）です。

QQ....QQ

返答コード（10進数）です。

RR....RR

マシンコード形式（10進数）です。

SS....SS

文字セット識別子（10進数）です。

TT....TT

フォーマット名（文字列）です。

UU....UU

メッセージ優先度（10進数）です。

VV....VV

メッセージ永続性（10進数）です。

WW....WW

メッセージ識別子の内容（16進数）です。

XX....XX

メッセージ識別子の内容（文字列）です。

YY....YY

相関識別子の内容（16進数）です。

aa....aa

相関識別子の内容（文字列）です。

bb....bb

ロールバックカウンタ（10進数）です。

cc....cc

応答先キュー名（文字列）です。

dd....dd

応答先キューマネジャ名（文字列）です。

ee....ee

ユーザ識別子（文字列）です。

ff....ff

課金トークンの内容（16進数）です。

gg....gg

課金トークンの内容（文字列）です。

hh....hh

識別データ（文字列）です。

ii....ii

登録アプリケーションタイプ（10進数）です。

jj....jj

登録アプリケーション名（文字列）です。

kk....kk

登録日（半角数字8文字）です。

ll....ll

登録時刻（半角数字8文字）です。

mm....mm

登録元データ（文字列）です。

nn....nn

グループ識別子の内容（16進数）です。

oo....oo

グループ識別子の内容（文字列）です。

pp....pp

メッセージシーケンス番号（10進数）です。

qq....qq

オフセット（16進数）です。

rr....rr

メッセージフラグ（10進数）です。

ss....ss

登録元メッセージ長（10進数）です。単位はバイトです。

tt....tt

オプション（10進数）です。

uu....uu

コンテキスト（16進数）です。

vv....vv

ローカルキューの数（10進数）です。

ww....ww

リモートキューの数（10進数）です。

xx....xx

送信に失敗したキューの数（10進数）です。

yy....yy

受信キュー名（文字列）です。

zz....zz

受信キューマネジャ名（文字列）です。

a1....a1

レコード数（10進数）です。

b1....b1

MQPMR構造体フィールドの存在（10進数）です。

c1....c1

登録メッセージレコードのオフセット（16進数）です。

d1....d1

応答レコードのオフセット（16進数）です。

e1....e1

オブジェクトレコードのアドレス（16進数）です。

値がヌルポインタの場合に，次のように表示されることがあります。△は空白を表します。

"0x△△△△△△△△△△△(nil)"

f1....f1

応答レコードのアドレス（16進数）です。

値がヌルポインタの場合に，次のように表示されることがあります。△は空白を表します。

"0x△△△△△△△△△△△(nil)"

出力形式（MQGETの場合）

関数　＝　MQGET (出口)
         取得日時　＝　yy/mm/dd hh:mm:ss
         マイクロ秒　＝　AA....AA
         トレース取得通番　＝　BB....BB
         スレッドID　＝　CC....CC
         コネクションハンドル　＝　[0x DD....DD]
         オブジェクトハンドル　＝　[0x EE....EE]
         バッファ長　＝　FF....FF

         ------  バッファの内容  ------※1
         000000    [0x GG....GG GG....GG GG....GG GG....GG]   HH....HH※1
         000010    [0x GG....GG GG....GG GG....GG GG....GG]   HH....HH※1
         完了コード　＝　II....II (JJ....JJ)※1
         理由コード　＝　KK....KK (JJ....JJ)※1
         構造体識別子　＝　LL....LL   (JJ....JJ)
         構造体バージョン番号　＝　MM....MM (JJ....JJ)
         報告オプション　＝　NN....NN (JJ....JJ)
         メッセージタイプ　＝　OO....OO (JJ....JJ)
         メッセージ保持時間　＝　PP....PP (JJ....JJ)
         返答コード　＝　QQ....QQ (JJ....JJ)
         マシンコード形式　＝　RR....RR (JJ....JJ)
         文字セット識別子　＝　SS....SS
         フォーマット名　＝　TT....TT   (JJ....JJ)
         メッセージ優先度　＝　UU....UU
         メッセージ永続性　＝　VV....VV (JJ....JJ)

         ------  メッセージ識別子  ------
         000000    [0x WW....WW WW....WW WW....WW WW....WW]   XX....XX
         000010    [0x WW....WW WW....WW]   XX....XX

         ------  相関識別子  ------
         000000    [0x YY....YY YY....YY YY....YY YY....YY]   aa....aa
         000010    [0x YY....YY YY....YY]   aa....aa
         ロールバックカウンタ　＝　bb....bb
         応答先キュー名　＝　cc....cc
         応答先キューマネジャー名　＝　dd....dd
         ユーザ識別子　＝　ee....ee

         ------  課金トークン  ------
         000000    [0x ff....ff ff....ff ff....ff ff....ff]   gg....gg
         000010    [0x ff....ff ff....ff ff....ff ff....ff]   gg....gg
         識別データ　＝　hh....hh
         登録アプリケーションタイプ　＝　ii....ii (JJ....JJ)
         登録アプリケーション名　＝　jj....jj
         登録日時　＝　kk....kk ll....ll
         登録元データ　＝　mm....mm

         ------  グループ識別子  ------
         000000    [0x nn....nn nn....nn nn....nn nn....nn] oo....oo※2
         000010    [0x nn....nn nn....nn]   oo....oo※2
         メッセージシーケンス番号　＝　pp....pp※2
         オフセット　＝　qq....qq※2
         メッセージフラグ　＝　rr....rr (JJ....JJ)※2
         登録元メッセージ長　＝　ss....ss※2
         MQGMO構造体識別子　＝　LL....LL(JJ....JJ)
         MQGMO構造体バージョン番号　＝　MM....MM (JJ....JJ)
         オプション　＝　tt....tt  (JJ....JJ)
                                     :
                                (JJ....JJ)
         待ち合わせ最大時間　＝　uu....uu
         シグナル　＝　vv....vv
         受信キュー名　＝　ww....ww
         メッセージ長　＝　xx....xx

         一致オプション　＝　yy....yy (JJ....JJ)※3
         メッセージグループフラグ　＝　zz....zz (JJ....JJ)※3
         論理メッセージフラグ　＝　a1....a1 (JJ....JJ)※3
         セグメント分割フラグ　＝　b1....b1 (JJ....JJ)※3

注※1

出口情報を表示するときだけ出力します。

注※2

MQMD構造体バージョン番号がMQMD_VERSION_2の場合に出力します。

注※3

MQGMO構造体バージョン番号がMQGMO_VERSION_2の場合に出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

オブジェクトハンドル（16進数）です。

FF....FF

バッファ長（10進数）です。単位はバイトです。

GG....GG

バッファの内容（16進数）です。

バッファ長が0バイトのときは出力しません。バッファ長が32バイトを超えるときは先頭から32バイトまでを出力します。

HH....HH

バッファの内容（文字列）です。

バッファ長が0バイトのときは出力しません。バッファ長が32バイトを超えるときは先頭から32バイトまでを出力します。

II....II

完了コード（10進数）です。

JJ....JJ

定数名です。

KK....KK

理由コード（10進数）です。

LL....LL

構造体識別子（文字列）です。

MM....MM

構造体バージョン番号（10進数）です。

NN....NN

報告オプション（10進数）です。

OO....OO

メッセージタイプ（10進数）です。

PP....PP

メッセージ保持時間（10進数）です。

QQ....QQ

返答コード（10進数）です。

RR....RR

マシンコード形式（10進数）です。

SS....SS

文字セット識別子（10進数）です。

TT....TT

フォーマット名（文字列）です。

UU....UU

メッセージ優先度（10進数）です。

VV....VV

メッセージ永続性（10進数）です。

WW....WW

メッセージ識別子の内容（16進数）です。

XX....XX

メッセージ識別子の内容（文字列）です。

YY....YY

相関識別子の内容（16進数）です。

aa....aa

相関識別子の内容（文字列）です。

bb....bb

ロールバックカウンタ（10進数）です。

cc....cc

応答先キュー名（文字列）です。

dd....dd

応答先キューマネジャ名（文字列）です。

ee....ee

ユーザ識別子（文字列）です。

ff....ff

課金トークンの内容（16進数）です。

gg....gg

課金トークンの内容（文字列）です。

hh....hh

識別データ（文字列）です。

ii....ii

登録アプリケーションタイプ（10進数）です。

jj....jj

登録アプリケーション名（文字列）です。

kk....kk

登録日（半角数字8文字）です。

ll....ll

登録時刻（半角数字8文字）です。

mm....mm

登録元データ（文字列）です。

nn....nn

グループ識別子の内容（16進数）です。

oo....oo

グループ識別子の内容（文字列）です。

pp....pp

メッセージシーケンス番号（10進数）です。

qq....qq

オフセット（16進数）です。

rr....rr

メッセージフラグ（10進数）です。

ss....ss

登録元メッセージ長（10進数）です。単位はバイトです。

tt....tt

オプション（10進数）です。

uu....uu

待ち合わせ最大時間（10進数）です。

vv....vv

シグナル（10進数）です。

ww....ww

受信キュー名（文字列）です。

xx....xx

メッセージ長（10進数）です。単位はバイトです。

yy....yy

一致オプション（10進数）です。

zz....zz

メッセージグループフラグ（文字列）です。

a1....a1

論理メッセージフラグ（文字列）です。

b1....b1

セグメント分割フラグ（文字列）です。

出力形式（MQCLOSEの場合）

関数　＝　MQCLOSE (出口)
          取得日時　＝　yy/mm/dd hh:mm:ss
          マイクロ秒　＝　AA....AA
          トレース取得通番　＝　BB....BB
          スレッドID　＝　CC....CC
          コネクションハンドル　＝　[0x DD....DD]
          オブジェクトハンドル　＝　[0x EE....EE]
          動作オプション　＝　FF....FF (GG....GG)
          完了コード　＝　HH....HH(GG....GG)※1
          理由コード　＝　II....II (GG....GG)※1

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

オブジェクトハンドル（16進数）です。

FF....FF

動作オプション（10進数）です。

GG....GG

定数名です。

HH....HH

完了コード（10進数）です。

II....II

理由コード（10進数）です。

出力形式（MQDISCの場合）

関数　＝　MQDISC (出口)
          取得日時　＝　yy/mm/dd hh:mm:ss
          マイクロ秒　＝　AA....AA
          トレース取得通番　＝　BB....BB
          スレッドID　＝　CC....CC
          コネクションハンドル　＝　[0x DD....DD]
          完了コード　＝　EE....EE (FF....FF)※1
          理由コード　＝　GG....GG (FF....FF)※1

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

完了コード（10進数）です。

FF....FF

定数名です。

GG....GG

理由コード（10進数）です。

出力形式（MQPUT1の場合）

関数　＝　MQPUT1 (出口)
          取得日時　＝　yy/mm/dd hh:mm:ss
           マイクロ秒　＝　AA....AA
           トレース取得通番　＝　BB....BB
           スレッドID　＝　CC....CC
           コネクションハンドル　＝　[0x DD....DD]
           バッファ長　＝　EE....EE

           ------  バッファの内容  ------
           000000    [0x FF....FF FF....FF FF....FF FF....FF]   GG....GG
           000010    [0x FF....FF FF....FF FF....FF FF....FF]   GG....GG
           完了コード　＝　HH....HH(II....II)※1
           理由コード　＝　JJ....JJ (II....II)※1
           構造体識別子　＝　KK....KK   (II....II)
           構造体バージョン番号　＝　LL....LL (II....II)
           報告オプション　＝　MM....MM (II....II)
           メッセージタイプ　＝　NN....NN (II....II)
           メッセージ保持時間　＝　OO....OO (II....II)
           返答コード　＝　PP....PP (II....II)
           マシンコード形式　＝　QQ....QQ (II....II)
           文字セット識別子　＝　RR....RR (II....II)
           フォーマット名　＝　SS....SS  (II....II)
           メッセージ優先度　＝　TT....TT (II....II)
           メッセージ永続性　＝　UU....UU (II....II)

           ------  メッセージ識別子  ------
           000000    [0x VV....VV VV....VV VV....VV VV....VV]   WW....WW
           000010    [0x VV....VV VV....VV]   WW....WW

           ------  相関識別子  ------
           000000    [0x XX....XX XX....XX XX....XX XX....XX]   YY....YY
           000010    [0x XX....XX XX....XX]   YY....YY
           ロールバックカウンタ　＝　aa....aa
           応答先キュー名　＝　bb....bb
           応答先キューマネジャー名　＝　cc....cc
           ユーザ識別子　＝　dd....dd

           ------  課金トークン  ------
           000000    [0x ee....ee ee....ee ee....ee ee....ee]   ff....ff
           000010    [0x ee....ee ee....ee ee....ee ee....ee]   ff....ff
           識別データ　＝　gg....gg
           登録アプリケーションタイプ　＝　hh....hh (II....II)
           登録アプリケーション名　＝　ii....ii
           登録日時　＝　jj....jj kk....kk
           登録元データ　＝　ll....ll

           ------  グループ識別子  ------
           000000    [0x mm....mm mm....mm mm....mm mm....mm]   nn....nn
           000010    [0x mm....mm mm....mm]   nn....nn
           メッセージシーケンス番号　＝　oo....oo
           オフセット　＝　pp....pp
           メッセージフラグ　＝　qq....qq (II....II)
           登録元メッセージ長　＝　rr....rr
           MQPMO構造体識別子　＝　KK....KK  (II....II)
           MQPMO構造体バージョン番号　＝　LL....LL (II....II)
           オプション　＝　ss....ss (II....II)
           コンテキスト　＝　[0x tt....tt]
           ローカルキューの数　＝　uu....uu
           リモートキューの数　＝　vv....vv
           送信に失敗したキューの数　＝　ww....ww
           受信キュー名　＝　xx....xx
           受信キューマネジャー名　＝　yy....yy
           登録メッセージレコード数または応答メッセージレコード数　＝　zz....zz※2
           MQPMR構造体フィールドの存在　＝　a1....a1 (II....II)※2
           最初の登録メッセージレコードのオフセット　＝　b1....b1※2
           最初の応答レコードのオフセット　＝　c1....c1※2
           最初の登録メッセージレコードのアドレス　＝　[0x d1....d1]※2
           最初の応答レコードのアドレス　＝　[0x e1....e1]※2
           MQOD構造体識別子　＝　KK....KK   (II....II)
           MQOD構造体バージョン番号　＝　LL....LL (II....II)
           オブジェクトタイプ　＝　f1....f1
           オブジェクト名　＝　g1....g1
           オブジェクトキューマネジャー名　＝　h1....h1
           動的キュー名　＝　i1....i1
           代替ユーザ識別子　＝　j1....j1

           オブジェクトレコード数　＝　k1....k1※3※4
           ローカルキューの数　＝　uu....uu※1※3※4
           リモートキューの数　＝　vv....vv※1※3※4
           オープンに失敗したキューの数　＝　l1....l1※1※3※4
           最初のオブジェクトレコードまでのオフセット　＝　b1....b1※3※4
           最初の応答レコードまでのオフセット　＝　c1....c1※3※4
           最初のオブジェクトレコードのアドレス　＝　[0x d1....d1]※3※4
           最初の応答レコードのアドレス　＝　[0x e1....e1]※3※4

           ------ 代替セキュリティ識別子 ------※4
           000000    [0x m1....m1 m1....m1 m1....m1 m1....m1]   n1....n1※4
           000010    [0x m1....m1 m1....m1 m1....m1 m1....m1]   n1....n1※4
           000020    [0x m1....m1 m1....m1]   n1....n1※4
           解決したキュー名称　＝　o1....o1※4
           解決したキューマネジャー名称　＝　p1....p1※4

注※1

出口情報を表示するときだけ出力します。

注※2

MQPMO構造体バージョン番号がMQPMO_VERSION_2の場合に出力します。

注※3

MQOD構造体バージョン番号がMQOD_VERSION_2の場合に出力します。

注※4

MQOD構造体バージョン番号がMQOD_VERSION_3の場合に出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

バッファ長（10進数）です。単位はバイトです。

FF....FF

バッファの内容（16進数）です。

バッファ長が0バイトのときは出力しません。バッファ長が32バイトを超えるときは先頭から32バイトまでを出力します。

GG....GG

バッファの内容（文字列）です。

バッファ長が0バイトのときは出力しません。バッファ長が32バイトを超えるときは先頭から32バイトまでを出力します。

HH....HH

完了コード（10進数）です。

II....II

定数名です。

JJ....JJ

理由コード（10進数）です。

KK....KK

構造体識別子（文字列）です。

LL....LL

構造体バージョン番号（10進数）です。

MM....MM

報告オプション（10進数）です。

NN....NN

メッセージタイプ（10進数）です。

OO....OO

メッセージ保持時間（10進数）です。

PP....PP

返答コード（10進数）です。

QQ....QQ

マシンコード形式（10進数）です。

RR....RR

文字セット識別子（10進数）です。

SS....SS

フォーマット名（文字列）です。

TT....TT

メッセージ優先度（10進数）です。

UU....UU

メッセージ永続性（10進数）です。

VV....VV

メッセージ識別子の内容（16進数）です。

WW....WW

メッセージ識別子の内容（文字列）です。

XX....XX

相関識別子の内容（16進数）です。

YY....YY

相関識別子の内容（文字列）です。

aa....aa

ロールバックカウンタ（10進数）です。

bb....bb

応答先キュー名（文字列）です。

cc....cc

応答先キューマネジャ名（文字列）です。

dd....dd

ユーザ識別子（文字列）です。

ee....ee

課金トークンの内容（16進数）です。

ff....ff

課金トークンの内容（文字列）です。

gg....gg

識別データ（文字列）です。

hh..hh

登録アプリケーションタイプ（10進数）です。

ii....ii

登録アプリケーション名（文字列）です。

jj....jj

登録日付（半角数字8文字）です。

kk....kk

登録時刻（半角数字8文字）です。

ll....ll

登録元データ（文字列）です。

mm....mm

グループ識別子の内容（16進数）です。

nn....nn

グループ識別子の内容（文字列）です。

oo....oo

メッセージシーケンス番号（10進数）です。

pp....pp

オフセット（10進数）です。

qq....qq

メッセージフラグ（16進数）です。

rr....rr

登録元メッセージ長（10進数）です。単位はバイトです。

ss....ss

オプション（10進数）です。

tt....tt

コンテキスト（16進数）です。

uu....uu

ローカルキューの数（10進数）です。

vv....vv

リモートキューの数（10進数）です。

ww....ww

送信に失敗したキューの数（10進数）です。

xx....xx

受信キュー名（文字列）です。

yy....yy

受信キューマネジャー名（文字列）です。

zz....zz

メッセージレコード数（10進数）です。

a1....a1

MQPMR構造体フィールドの存在です。

b1....b1

登録メッセージレコードのオフセットです。

c1....c1

応答レコードのオフセットです。

d1....d1

登録メッセージレコードのアドレス（16進数）です。

値がヌルポインタの場合に，次のように表示されることがあります。△は空白を表します。

"0x△△△△△△△△△△△(nil)"

e1....e1

応答レコードのアドレス（16進数）です。

値がヌルポインタの場合に，次のように表示されることがあります。△は空白を表します。

"0x△△△△△△△△△△△(nil)"

f1....f1

オブジェクトタイプ（10進数）です。

g1....g1

オブジェクト名（文字列）です。

h1....h1

オブジェクトキューマネジャ名（文字列）です。

i1....i1

動的キュー名（文字列）です。

j1....j1

代替ユーザ識別子（文字列）です。

k1....k1

オブジェクトレコード数（10進数）です。

l1....l1

オープンに失敗したキューの数（10進数）です。

m1....m1

代替識別子の内容（16進数）です。

n1....n1

代替識別子の内容（文字列）です。

o1....o1

キュー名称（文字列）です。

p1....p1

キューマネジャ名称（文字列）です。

出力形式（MQINQの場合）

関数　＝　MQINQ (出口)
       取得日時　＝　yy/mm/dd hh:mm:ss
       マイクロ秒 ＝ AA....AA
       トレース取得通番　＝　BB....BB
       スレッドID　＝　CC....CC
       コネクションハンドル　＝　[0x DD....DD]
       オブジェクトハンドル　＝　[0x EE....EE]
       セレクタ数　＝　FF....FF
       セレクタ　＝　GG....GG (HH....HH)
                     GG....GG (HH....HH)
                                  ：
                     GG....GG (HH....HH)
       整数型属性数　＝　II....II
       文字型属性長　＝　JJ....JJ
       完了コード　＝　KK....KK (HH....HH)※1
       理由コード　＝　LL....LL (HH....HH)※1

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

オブジェクトハンドル（16進数）です。

FF....FF

セレクタ数（10進数）です。

GG....GG

セレクタ（10進数）です。

HH....HH

定数名です。

II....II

整数型属性数（10進数）です。

JJ....JJ

文字型属性長（10進数）です。

KK....KK

完了コード（10進数）です。

LL....LL

理由コード（10進数）です。

出力形式（MQSETの場合）

関数　＝　MQSET (出口)
          取得日時　＝　yy/mm/dd hh:mm:ss
          マイクロ秒　＝　AA....AA
          トレース取得通番　＝　BB....BB
          スレッドID　＝　CC....CC
          コネクションハンドル　＝　[0x DD....DD]
          オブジェクトハンドル　＝　[0x EE....EE]
          セレクタ数　＝　FF....FF
          セレクタ　＝　GG....GG (HH....HH)
                        GG....GG (HH....HH)
                                     ：
                        GG....GG (HH....HH)
          整数型属性数　＝　II....II
          文字型属性長　＝　JJ....JJ
          完了コード　＝　KK....KK (HH....HH)※1
          理由コード　＝　LL....LL (HH....HH)※1
          整数型属性値　＝　MM....MM
                            MM....MM
                               ：
                            MM....MM
          文字型属性値　＝　NN....NN

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

オブジェクトハンドル（16進数）です。

FF....FF

セレクタ数（10進数）です。

GG....GG

セレクタ（10進数）です。

HH....HH

定数名です。

II....II

整数型属性数（10進数）です。

JJ....JJ

文字型属性長（10進数）です。

KK....KK

完了コード（10進数）です。

LL....LL

理由コード（10進数）です。

MM....MM

整数型属性値（10進数）です。

NN....NN

文字型属性値（文字列）です。

出力形式（MQBEGINの場合）

関数　＝　MQBEGIN (出口)
          取得日時　＝　yy/mm/dd hh:mm:ss
          マイクロ秒　＝　AA....AA
          トレース取得通番　＝　BB....BB
          スレッドID　＝　CC....CC
          コネクションハンドル　＝　[0x DD....DD]
          完了コード　＝　EE....EE (FF....FF)※1
          理由コード　＝　GG....GG (FF....FF)※1

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

完了コード（10進数）です。

FF....FF

定数名です。

GG....GG

理由コード（10進数）です。

出力形式（MQCMITの場合）

関数　＝　MQCMIT (出口)
       取得日時　＝　yy/mm/dd hh:mm:ss
       マイクロ秒　＝　AA....AA
       トレース取得通番　＝　BB....BB
       スレッドID　＝　CC....CC
       コネクションハンドル　＝　[0x DD....DD]
       完了コード　＝　EE....EE (FF....FF)※1
       理由コード　＝　GG....GG (FF....FF)※1

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

完了コード（10進数）です。

FF....FF

定数名です。

GG....GG

理由コード（10進数）です。

出力形式（MQBACKの場合）

関数　＝　MQBACK (出口)
       取得日時　＝　yy/mm/dd hh:mm:ss
       マイクロ秒　＝　AA....AA
       トレース取得通番　＝　BB....BB
       スレッドID　＝　CC....CC
       コネクションハンドル　＝　[0x DD....DD]
       完了コード　＝　EE....EE (FF....FF)※1
       理由コード　＝　GG....GG (FF....FF)※1

注※1

出口情報を表示するときだけ出力します。

●　出力項目の説明

yy/mm/dd

取得した年（西暦下2けた）月日（半角数字8文字）です。

hh:mm:ss

取得した時分秒（半角数字8文字）です。

AA....AA

取得日時のマイクロ秒（10進数）です。

BB....BB

トレース取得通番（10進数）です。

CC....CC

スレッドID（10進数）です。

DD....DD

コネクションハンドル（16進数）です。

EE....EE

完了コード（10進数）です。

FF....FF

定数名です。

GG....GG

理由コード（10進数）です。

出力形式（スレッドID一覧表）

スレッドID一覧
        スレッドID　＝　AA....AA
        スレッドID　＝　AA....AA
             :
        スレッドID　＝　AA....AA

●　出力項目の説明

AA....AA

スレッドID（10進数）です。

出力形式（コネクションハンドル一覧表）

コネクションハンドル一覧
      コネクションハンドル  ＝  [0xAA....AA] (BB....BB)
      コネクションハンドル  ＝  [0xAA....AA] (BB....BB)
           :
      コネクションハンドル  ＝  [0xAA....AA] (BB....BB)

●　出力項目の説明

AA....AA

コネクションハンドル（16進数）です。

BB....BB

キューマネジャ名です。

4　MQCクライアント機能のMQI

この章では，C言語またはCOBOL言語のMQIを使用したクライアントアプリケーションの作成方法について説明します。

使用できるMQI

MQCクライアント機能は，ローカルトランザクション機能でOpenTP1システムと接続して動作します。

MQCクライアント機能のクライアントアプリケーションは，TP1/Message QueueのMQIを使用できます。MQIはローカルトランザクションの範囲およびローカルトランザクションの範囲外で使用できます。

MQCクライアント機能のクライアントアプリケーションが使用できるMQIを次の表に示します。

表4‒1　MQCクライアント機能のクライアントアプリケーションが使用できるMQI一覧

項番

関数名

機能

1

MQCLOSE

オブジェクトのクローズ

2

MQCONN※

キューマネジャへの接続

3

MQDISC

キューマネジャからの切り離し

4

MQGET

メッセージの取り出し

5

MQINQ

オブジェクトの属性の照会

6

MQOPEN

オブジェクトのオープン

7

MQPUT

メッセージの登録

8

MQPUT1

1メッセージの登録

9

MQSET

オブジェクトの属性の設定

10

MQBACK

ローカルトランザクションのロールバック

11

MQBEGIN

ローカルトランザクションの開始

12

MQCMIT

ローカルトランザクションのコミット

注※

コネクションハンドルの有効範囲は，環境のパラレル処理の最小単位までです。MQCONN命令を呼び出したパラレル処理の単位外ではこのハンドルは無効です。TP1/Message Queue Accessのパラレル処理の最小単位はスレッドです。

MQIの詳細については，項番1から9は，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。項番10から12は以降のページで説明します。

MQCクライアント機能のクライアントアプリケーションのコンパイルおよびリンケージ時に使用するライブラリファイルについては，「2.1　MQCクライアント機能のセットアップ」を参照してください。

MQBACK命令　−　ローカルトランザクションのロールバック

機能

MQBACK命令では，最後の同期点以降に発生したメッセージの読み取りと書き込みをすべてロールバックすることをキューマネジャに指示します。トランザクションの一部として書き込まれたメッセージは削除されます。トランザクションの一部として取り出されたメッセージはキューに戻されます。

形式

C言語の場合

MQBACK (MQHCONN Hconn, MQLONG *CompCode, MQLONG *Reason)

COBOL言語の場合

CALL 'MQBACK' USING HCONN, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−　input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

●　CompCode（MQLONG型）　−　output

完了コードです。次のどれかが返されます。

MQCC_OK：成功

MQCC_WARNING：警告（一部成功）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−　output

理由コードです。

表4‒2　CompCode引数がMQCC_OKの場合（MQBACK命令の場合）

理由コード

意味

MQRC_NONE

理由コードはありません。

表4‒3　CompCode引数がMQCC_WARNINGの場合（MQBACK命令の場合）

理由コード

意味

MQRC_OUTCOME_PENDING

コミットまたはロールバック操作の結果が保留状態です。

表4‒4　CompCode引数がMQCC_FAILEDの場合（MQBACK命令の場合）

理由コード

意味

MQRC_CALL_IN_PROGRESS

前の呼び出しが完了する前に，再度MQI呼び出しが実行されました。

MQRC_CONNECTION_BROKEN

キューマネジャとの接続が失われました。

MQRC_ENVIRONMENT_ERROR

呼び出しが環境内で有効ではありません。

MQRC_HCONN_ERROR

コネクションハンドルが無効です。

MQRC_OBJECT_DAMAGED

オブジェクトが破損しています。

MQRC_OUTCOME_MIXED

コミットまたはロールバック操作の結果が混合しています。

MQRC_Q_MGR_STOPPING

キューマネジャが終了処理中です。

MQRC_RESOURCE_PROBLEM

システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABLE

記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR

予期しないエラーが発生しました。

「理由コード」の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

注意事項

この命令は，キューマネジャ自体がトランザクションを管理する環境（ローカルトランザクション）だけで使用できます。

ローカルトランザクションの詳細については，「MQBEGIN命令」を参照してください。

1トランザクションには，一つのコネクションハンドルと同じ有効範囲があります。つまり，特定のトランザクションに影響を与えるMQI命令は，同じコネクションハンドルを使用して実行しなければなりません。例えば，別のアプリケーションで命令を呼び出すなど，別のコネクションハンドルを用いて命令を呼び出すと，別のトランザクションに影響が及びます。

コネクションハンドルの有効範囲については，マニュアル「TP1/Message Queue プログラム作成リファレンス」のMQCONN命令を参照してください。

この命令で影響を受けるメッセージは，現在のトランザクションの一部として書き込まれたメッセージ，または取り出されたメッセージに限られます。

長時間実行しているアプリケーションで，1トランザクションに対してMQGET命令，MQPUT命令，またはMQPUT1命令を呼び出している場合，コミット命令またはロールバック命令を一度も呼び出さないと，ほかのアプリケーションでは使用できないメッセージで，キューがいっぱいになることがあります。

トランザクションが発生していない状態でMQBACK命令を発行した場合はMQRC_HCONN_ERRORのエラーになります。

MQBEGIN命令　−　ローカルトランザクションの開始

機能

MQBEGIN命令で，キューマネジャによって管理されるトランザクションを開始します。

形式

C言語の場合

MQBEGIN (MQHCONN Hconn, MQBO *BeginOptions, MQLONG *CompCode,
         MQLONG *CompReason)

COBOL言語の場合

CALL 'MQBEGIN' USING HCONN, BEGINOPTIONS, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−　input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

●　BeginOptions（MQBO構造体）　−　input

MQBEGIN命令の動作を制御するオプションです。

詳細については，「MQBO構造体」を参照してください。

BeginOptionsは，予約済みパラメタです。C言語で作成されたプログラムでは，MQBO構造体のアドレスを指定しないで，NULLアドレスを指定できます。

●　CompCode（MQLONG型）　−　output

完了コードです。次のどちらかが返されます。

MQCC_OK：成功

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−　output

理由コードです。

表4‒5　CompCode引数がMQCC_OKの場合（MQBEGIN命令の場合）

理由コード

意味

MQRC_NONE

理由コードはありません。

表4‒6　CompCode引数がMQCC_FAILEDの場合（MQBEGIN命令の場合）

理由コード

意味

MQRC_BO_ERROR

開始オプション構造体が無効です。

MQRC_CALL_IN_PROGRESS

前の呼び出しが完了する前に，再度MQI呼び出しが実行されました。

MQRC_CONNECTION_BROKEN

キューマネジャとの接続が失われました。

MQRC_ENVIRONMENT_ERROR

呼び出しが環境内で有効ではありません。

MQRC_HCONN_ERROR

コネクションハンドルが無効です。

MQRC_OPTIONS_ERROR

オプションが有効でないか，整合性がありません。

MQRC_Q_MGR_STOPPING

キューマネジャが終了処理中です。

MQRC_RESOURCE_PROBLEM

システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABLE

記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR

予期しないエラーが発生しました。

MQRC_UOW_IN_PROGRESS

トランザクションが開始済みです。

「理由コード」の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

注意事項

MQBEGIN命令は，キューマネジャで管理されるトランザクションの開始に使用します。

キューマネジャは，次のタイプのトランザクションをサポートします。

キューマネジャで管理されるローカルトランザクション

参加プログラムがキューマネジャだけのトランザクションであり，キューマネジャがTMとして機能します。

ローカルトランザクションを開始するには，トランザクション内の最初のMQPUT，MQPUT1，またはMQGET命令にMQPMO_SYNCPOINTまたはMQGMO_SYNCPOINTオプションを指定してください。ローカルトランザクションを開始するのに，アプリケーションがMQBEGIN命令を呼び出す必要はありません。

ローカルトランザクションをコミットまたはロールバックするには，MQCMITまたはMQBACK命令を使用する必要があります。アプリケーションでどちらの命令も呼び出さない場合，このトランザクションは，MQDISC命令を呼び出すとコミットされますが，MQDISC命令を呼び出さないで終了するとロールバックされます。

アプリケーションが一度に参加プログラムとしてかかわれるトランザクションは，一つだけです。アプリケーションでMQBEGIN命令を呼び出す場合，そのアプリケーション用のトランザクションがすでに存在していると，その命令は失敗し，理由コードMQRC_UOW_IN_PROGRESSが戻ります。

MQCMIT命令　−　ローカルトランザクションのコミット

機能

アプリケーションが同期点に達していることと，最後の同期点が永続化されてから発生した，すべてのメッセージの読み取りと書き込みをキューマネジャに指示します。

形式

C言語の場合

MQCMIT (MQHCONN Hconn, MQLONG *CompCode, MQLONG *Reason)

COBOL言語の場合

CALL 'MQCMIT' USING HCONN, COMPCODE, REASON.

引数

●　Hconn（MQHCONN型）　−　input

コネクションハンドルです。

キューマネジャへの接続を示すハンドルです。MQCONN命令の戻り値を指定してください。

●　CompCode（MQLONG型）　−　output

完了コードです。

次のどれかが返されます。

MQCC_OK：成功

MQCC_WARNING：警告（一部成功）

MQCC_FAILED：失敗

●　Reason（MQLONG型）　−　output

理由コードです。

表4‒7　CompCode引数がMQCC_OKの場合（MQCMIT命令の場合）

理由コード

意味

MQRC_NONE

理由コードはありません。

表4‒8　CompCode引数がMQCC_WARNINGの場合（MQCMIT命令の場合）

理由コード

意味

MQRC_BACKED_OUT

同期点は完了しましたが，資源がロールバックしました。

MQRC_OUTCOME_PENDING

コミットまたはロールバック操作の結果が保留状態です。

表4‒9　CompCode引数がMQCC_FAILEDの場合（MQCMIT命令の場合）

理由コード

意味

MQRC_CALL_IN_PROGRESS

前の呼び出しが完了する前に，再度MQI呼び出しが実行されました。

MQRC_CONNECTION_BROKEN

キューマネジャとの接続が失われました。

MQRC_ENVIRONMENT_ERROR

呼び出しが環境内で有効ではありません。

MQRC_HCONN_ERROR

コネクションハンドルが無効です。

MQRC_OBJECT_DAMAGED

オブジェクトが破損しています。

MQRC_OUTCOME_MIXED

コミットまたはロールバック操作の結果が混合しています。

MQRC_Q_MGR_STOPPING

キューマネジャが終了処理中です。

MQRC_RESOURCE_PROBLEM

システム資源が不足しています。

MQRC_STORAGE_NOT_AVAILABLE

記憶容量が不足しています。

MQRC_UNEXPECTED_ERROR

予期しないエラーが発生しました。

「理由コード」の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

注意事項

この命令は，キューマネジャ自体がトランザクションを管理する環境（ローカルトランザクション）だけで使用できます。

ローカルトランザクションの詳細については，「MQBEGIN命令」を参照してください。

1トランザクションには，一つのコネクションハンドルと同じ有効範囲があります。つまり，特定のトランザクションに影響を与えるMQI命令は，同じコネクションハンドルを使用して実行しなければなりません。例えば，別のアプリケーションで命令を呼び出すなど，別のコネクションハンドルを用いて命令を発行すると，別のトランザクションに影響が及びます。

コネクションハンドルの有効範囲については，マニュアル「TP1/Message Queue プログラム作成リファレンス」のMQCONN命令を参照してください。

この命令で影響を受けるメッセージは，現行のトランザクションの一部として書き込まれたメッセージ，または取り出されたメッセージに限られます。

トランザクション内部にコミットされていない変更内容がある場合，アプリケーションがMQCMIT命令およびMQBACK命令を呼び出さないで終了すると，それらの変更内容に対する後処理は，そのアプリケーションの終了方法によって異なります。

アプリケーションが終了前にMQDISC命令を呼び出す場合，その命令によってトランザクションがコミットされます。

アプリケーションが異常終了する場合，またはMQDISC命令を呼び出さない場合，トランザクションはロールバックされます。これは，MQBACK命令が呼び出されるのと同様です。

長時間実行しているアプリケーションで，1トランザクションに対してMQGET命令，MQPUT命令，またはMQPUT1命令を呼び出している場合，コミット命令またはロールバック命令を一度も呼び出さないと，キューがほかのアプリケーションでは使用できないメッセージで満たされることがあります。

ReasonパラメタがMQRC_CONNECTION_BROKENで，CompCodeパラメタがMQCC_FAILEDの場合，トランザクションは正常にコミットされた可能性があります。

トランザクションが発生していない状態でMQCMIT命令を発行した場合はMQRC_HCONN_ERRORのエラーになります。

MQBO構造体　−　ローカルトランザクション開始オプション

MQBO構造体は，MQBEGIN命令で使用する入力用の引数です。次のフィールドから構成されます。

表4‒10　MQBO構造体を構成するフィールド一覧

フィールド（データタイプ）

内容

初期値

StrucId（MQCHAR4型）

構造体識別子

MQBO_STRUC_ID

Version（MQLONG型）

構造体バージョン番号

MQBO_VERSION_1

Options（MQLONG型）

開始オプション

MQBO_NONE

フィールド

●　StructId（MQCHAR4型）　構造体識別子

次の値をとります。

MQBO_STRUC_ID：ローカルトランザクション開始オプションの構造体識別子

C言語では，MQBO_STRUC_ID_ARRAYも定義されています。これは，MQBO_STRUC_IDと同じ値です。ただし，文字列ではなく文字の配列として定義されています。

これは，入力用のフィールドです。

このフィールドの初期値は，MQBO_STRUC_IDです。

●　Version（MQLONG型）　構造体バージョン番号

次の値をとります。

MQBO_VERSION_1：ローカルトランザクション開始オプションの構造体バージョン番号

これは，入力用のフィールドです。

このフィールドの初期値は，MQBO_VERSION_1です。

●　Options（MQLONG型）　開始オプション

MQBEGIN命令の動作を制御します。

指定できるオプションを説明します。

MQBO_NONE：オプションを指定しません。

このオプションは，ほかにオプションを指定しない場合に指定します。

これは，入力用のフィールドです。

このフィールドの初期値は，MQBO_NONEです。

MQIのサンプルアプリケーション

ローカルトランザクションを使用する場合の処理の流れを次の図に示します。

図4‒1　処理の流れ

MQIのサンプルコーディング（C言語）

C言語でのコーディング例を示します。

/* All Rights Reserved, Copyright (C) 2003, Hitachi, Ltd. */
/***********************************************************
**  mqcsample.c
**  functions = main()
***********************************************************/

/***********************************************************
**  name = main()
**  func = main function of UAP
**      (1)start UAP(output start message)
**      (2)MQCONN(Connect queue manager)
**      (3)MQOPEN(Open queue)
**      (4)MQBEGIN(begin local transaction)
**      (5)MQPUT(Put message)
**      (6)MQBACK(rollback local transaction)
**      (7)MQCMIT(commit local transaction)
**      (8)MQBEGIN(begin local transaction)
**      (9)MQGET(Get message)
**      (10)MQBACK(rollback local transaction)
**      (11)MQCMIT(commit local transaction)
**      (12)MQCLOSE(Close queue)
**      (13)MQDISC(Disconnect queue manager)
**      (14)finish UAP(output end message)
***********************************************************/
#include    <stdio.h>
#include    <string.h>
#include    <cmqc.h>

#define PUT_DATA     "******** sample put data ********"

int main(void)
{
    MQCHAR48    QueueManager = " ";      /* queue manager name  */
    MQLONG      comp_code,               /* completion code     */
                reason;                  /* reason code         */
    MQHCONN     qm_handle;               /* connection handle   */
    MQCHAR      message_data[200];       /* buffer              */
    MQHOBJ      que_handle;              /* object handle       */
    MQLONG      buffer_length;           /* buffer length       */
    MQLONG      data_length;             /* message length      */
    MQLONG      open_options;            /* open options        */
    MQOD        obj_desc = { MQOD_DEFAULT };
                                         /* object descriptor   */
    MQMD        msg_desc = { MQMD_DEFAULT };
                                         /* message descriptor  */
    MQPMO       put_options = { MQPMO_DEFAULT };
                                         /* put message options */
    MQGMO       get_options = { MQGMO_DEFAULT };
                                         /* get message options */
    MQBO        begin_options = { MQBO_DEFAULT };
                                         /* begin options       */

    /* set the queue name */
    strcpy(obj_desc.ObjectName, "dynq1");

    /* set the message data */
    strcpy(message_data, PUT_DATA) ;
    buffer_length = strlen(message_data);

    printf("MQTRN:Start service. ¥n");

    /* MQCONN( connect to the queue manager ) */
    MQCONN(QueueManager, &qm_handle, &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQCONN. CODE = %ld¥n", reason);
        goto PROG_END;
    }

    /* MQOPEN( open the queue ) */
    open_options = MQOO_OUTPUT | MQOO_INPUT_AS_Q_DEF;
    MQOPEN(qm_handle, &obj_desc, open_options, &que_handle,
            &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQOPEN. CODE = %ld¥n", reason);
        goto MQ_END;
    }

    /* MQBEGIN( begin local transaction ) */
    MQBEGIN(qm_handle, &begin_options, &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQBEGIN. CODE = %ld¥n",reason);
        goto MQ_END;
    }

    /* MQPUT( put the message ) */
    put_options.Options = MQPMO_SYNCPOINT;
    MQPUT(qm_handle, que_handle, &msg_desc, &put_options,
            buffer_length, (PMQBYTE)message_data,&comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQPUT. CODE = %ld¥n", reason);
        /* MQBACK( rollback local transaction ) */
        MQBACK(qm_handle, &comp_code, &reason);
        if (comp_code != MQCC_OK)
        {
            printf("MQTRN:Failed at MQBACK. CODE = %ld¥n",reason);
        }
        goto MQ_END;
    }

    /* MQCMIT( commit local transaction ) */
    MQCMIT(qm_handle, &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQCMIT. CODE = %ld¥n", reason);
        goto MQ_END;
    }

    /* MQBEGIN( begin local transaction ) */
    MQBEGIN(qm_handle, &begin_options, &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQBEGIN. CODE = %ld¥n",reason);
        goto MQ_END;
    }

    /* MQGET( get the message ) */
    get_options.Options = MQGMO_SYNCPOINT | MQGMO_NO_WAIT;
    MQGET(qm_handle, que_handle, &msg_desc, &get_options,
            buffer_length, (PMQBYTE)message_data,
            &data_length, &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQGET. CODE = %ld¥n", reason);
        /* MQBACK( rollback local transaction ) */
        MQBACK(qm_handle, &comp_code, &reason);
        if (comp_code != MQCC_OK)
        {
            printf("MQTRN:Failed at MQBACK. CODE = %ld¥n",reason);
        }
        goto MQ_END;
    }

    /* MQCMIT( commit local transaction ) */
    MQCMIT(qm_handle, &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQCMIT. CODE = %ld¥n", reason);
        goto MQ_END;
    }

    /* MQCLOSE( close the queue ) */
    MQCLOSE(qm_handle, &que_handle, MQCO_NONE, &comp_code,
                &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQCLOSE. CODE = %ld¥n",reason);
    }

MQ_END:
    /* MQDISC( disconnect from the queue manager ) */
    MQDISC(&qm_handle, &comp_code, &reason);
    if (comp_code != MQCC_OK)
    {
        printf("MQTRN:Failed at MQDISC. CODE = %ld¥n", reason);
    }

PROG_END:
    printf("MQTRN:Terminate service. ¥n");
    return(0);
}

MQIのサンプルコーディング（COBOL言語）

COBOL言語でのコーディング例を示します。

      *****************************************************
      *        MQ-ACCESS SAMPLE                           *
      *****************************************************
      *
       IDENTIFICATION DIVISION.
      *
       PROGRAM-ID. MAIN.
      *
      *****************************************************
      *        INITIALIZE                                 *
      *****************************************************
      *
       DATA DIVISION.
       WORKING-STORAGE SECTION.
      *
       01  MQ-MGRNAME         PIC X(48) VALUE SPACES.
       01  MQ-HCONN           PIC S9(9) BINARY.
       01  MQ-COMPCODE        PIC S9(9) BINARY.
       01  MQ-REASON          PIC S9(9) BINARY.
       01  MQ-HOBJ            PIC S9(9) BINARY.
       01  MQ-OPTIONS         PIC S9(9) BINARY.
       01  MQ-BUFFLEN         PIC S9(9) BINARY.
       01  MQ-DATALEN         PIC S9(9) BINARY.
       01  MQ-BUFFER          PIC X(200) VALUE SPACE.
      *
       01  PUT-DATA           PIC X(33) VALUE
                       '***** COBOL sample put data *****'.
       01  QUEUENAME          PIC X(48) VALUE
                              'dynq1    '.
      *
       01 MQ-OBJECT-DESC.
          COPY CMQODV.
      *
       01 MQ-MESSAGE-DESCRIPTOR.
          COPY CMQMDV.
      *
       01 MQ-PUT-MESSAGE-OPTIONS.
          COPY CMQPMOV.
      *
       01 MQ-GET-MESSAGE-OPTIONS.
          COPY CMQGMOV.
      *
       01 MQ-BEGIN-OPTIONS.
          COPY CMQBOV.
      *
       01 MQ-CONSTANTS.
          COPY CMQV SUPPRESS.
      *
       PROCEDURE DIVISION.
      *
      *****************************************************
      *        CONNECT TO THE QUEUE MANAGER               *
      *****************************************************
      *
       CALL 'MQCONN' USING MQ-MGRNAME
                           MQ-HCONN
                           MQ-COMPCODE
                           MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQCONN FAILED. REASON CODE = '
             MQ-REASON
             STOP RUN
           END-IF.
      *
      *****************************************************
      *        OPEN THE QUEUE                             *
      *****************************************************
      *
       MOVE QUEUENAME TO MQOD-OBJECTNAME.
      *
       COMPUTE MQ-OPTIONS = MQOO-OUTPUT +
                                       MQOO-INPUT-AS-Q-DEF.
      *
       CALL 'MQOPEN' USING MQ-HCONN
                           MQOD
                           MQ-OPTIONS
                           MQ-HOBJ
                           MQ-COMPCODE
                           MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQOPEN FAILED. REASON CODE = '
             MQ-REASON
             GO TO PROG-END
           END-IF.
      *
      *****************************************************
      *        SET THE PUT MESSAGE OPTIONS                *
      *****************************************************
      *
       MOVE MQPMO-SYNCPOINT     TO MQPMO-OPTIONS.
       MOVE 33                  TO MQ-BUFFLEN.
      *
       MOVE PUT-DATA            TO MQ-BUFFER.
      *
      *****************************************************
      *        SET THE GET MESSAGE OPTIONS                *
      *****************************************************
      *
       MOVE MQGMO-SYNCPOINT     TO MQGMO-OPTIONS.
      *
      *****************************************************
      *        BEGIN LOCAL TRANSACTION                    *
      *****************************************************
      *
       CALL 'MQBEGIN' USING MQ-HCONN
                            MQ-BEGIN-OPTIONS
                            MQ-COMPCODE
                            MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQBEGIN FAILED. REASON CODE = '
             MQ-REASON
             STOP RUN
           END-IF.
      *
      *****************************************************
      *        PUT THE MESSAGE                            *
      *****************************************************
      *
       CALL 'MQPUT' USING MQ-HCONN
                          MQ-HOBJ
                          MQMD
                          MQPMO
                          MQ-BUFFLEN
                          MQ-BUFFER
                          MQ-COMPCODE
                          MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQPUT FAILED. REASON CODE = '
             MQ-REASON
           END-IF.
      *
      *****************************************************
      *        COMMIT LOCAL TRANSACTION                   *
      *****************************************************
      *
       CALL 'MQCMIT' USING MQ-HCONN
                           MQ-COMPCODE
                           MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQCMIT FAILED. REASON CODE = '
             MQ-REASON  MQ-COMPCODE
             STOP RUN
           END-IF.
      *
      *****************************************************
      *        BEGIN LOCAL TRANSACTION                    *
      *****************************************************
      *
       CALL 'MQBEGIN' USING MQ-HCONN
                            MQ-BEGIN-OPTIONS
                            MQ-COMPCODE
                            MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQBEGIN FAILED. REASON CODE = '
             MQ-REASON
             STOP RUN
           END-IF.
      *
      *****************************************************
      *        GET THE MESSAGE                            *
      *****************************************************
      *
       CALL 'MQGET' USING MQ-HCONN
                          MQ-HOBJ
                          MQMD
                          MQGMO
                          MQ-BUFFLEN
                          MQ-BUFFER
                          MQ-DATALEN
                          MQ-COMPCODE
                          MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQGET FAILED. REASON CODE = '
             MQ-REASON
           END-IF.
      *
      *****************************************************
      *        COMMIT LOCAL TRANSACTION                   *
      *****************************************************
      *
       CALL 'MQCMIT' USING MQ-HCONN
                           MQ-COMPCODE
                           MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQCMIT FAILED. REASON CODE = '
             MQ-REASON  MQ-COMPCODE
             STOP RUN
           END-IF.
      *
      *****************************************************
      *        CLOSE THE QUEUE                            *
      *****************************************************
      *
       MOVE MQCO-NONE TO MQ-OPTIONS.
      *
       CALL 'MQCLOSE' USING MQ-HCONN
                            MQ-HOBJ
                            MQ-OPTIONS
                            MQ-COMPCODE
                            MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQCLOSE FAILED. REASON CODE = '
             MQ-REASON
           END-IF.
      *
       PROG-END.
      *
      *****************************************************
      *        DISCONNECT FROM THE QUEUE MANAGER          *
      *****************************************************
      *
       CALL 'MQDISC' USING MQ-HCONN
                           MQ-COMPCODE
                           MQ-REASON.
           IF MQ-COMPCODE NOT = MQCC-OK THEN
             DISPLAY 'MQTRN:MQDISC FAILED. REASON CODE = '
             MQ-REASON
           END-IF.
      *
       STOP RUN.
       END PROGRAM MAIN.

5　MQCクライアント機能のC++インタフェース

この章では，MQCクライアント機能のC++インタフェースについて説明します。

MQCクライアント機能のC++クラス一覧

MQCクライアント機能が提供するC++クラスの一覧を次の表に示します。

表5‒1　クラスの一覧（C++）

クラス名

機能

ImqBinary

2進バイトアレイをカプセル化します。

ImqCache

データのメモリ保持および整理をカプセル化します。

ImqDeadLetterHeader

MQDLH構造体の特定の機能をカプセル化します。

ImqDistributionList

配布リストをカプセル化します。

ImqError

エラーに関する情報を提供します。

ImqGetMessageOptions

MQGMO構造体をカプセル化します。

ImqHeader

MQDLH構造体の共通機能をカプセル化します。

ImqItem

一つのメッセージ内の一つの項目です。

ImqMessage

MQMD構造体のカプセル化します。

ImqMessageTracker

ImqMessageまたはImqQueueオブジェクトと関連づけできる属性をカプセル化します。

ImqObject

キューマネジャおよびキューの属性をカプセル化します。

ImqProcess

トリガモニタによってトリガできるアプリケーションプロセスの属性をカプセル化します。

ImqPutMessageOptions

MQPMO構造体をカプセル化します。

ImqQueue

キューの属性およびアクセスをカプセル化します。

ImqQueueManager

キューマネジャの属性およびアクセスをカプセル化します。

ImqReferenceHeader

MQRMH構造体をカプセル化します。

ImqString

ヌル文字で終了する文字列に，記憶域と操作を提供します。

ImqTrigger

MQTM構造体をカプセル化します。

C++クラス継承図

クラス継承図を次の図に示します。

図5‒1　クラス継承図（C++の場合）

ImqBinaryクラス（C++）

このクラスは，ImqMessageTrackerクラスのaccounting token，correlation id，およびmessage id値に使用できる2進バイトアレイをカプセル化します。これによって，割り当て，コピー，および比較が容易になります。

インクルードファイル

このクラスを使用するときは，imqbin.hppファイルをインクルードしてください。

オブジェクト属性

●　data

2進データのバイトアレイです。初期値はヌル文字です。

●　data length

バイト数です。初期値はヌルです。

●　data pointer

dataの最初のバイトのアドレスです。初期値はヌルです。

コンストラクタ

●　ImqBinary( );

デフォルトのコンストラクタです。

●　ImqBinary(const ImqBinary & binary );

コピーコンストラクタです。

●　ImqBinary( const void * data， const size_t length );

dataからlength分のバイトをコピーします。

メソッド

●　virtual ImqBoolean copyOut( ImqMessage & msg );

多重定義されたImqItemメソッドです。dataをメッセージバッファにコピーし，既存の内容があれば置き換えます。msg formatをMQFMT_NONEに設定します。

詳細については，「ImqItemクラス（C++）」の「メソッド」を参照してください。

●　virtual ImqBoolean pasteIn( ImqMessage & msg );

多重定義されたImqItemメソッドです。メッセージバッファから残っているデータを転送し，既存のdataを置き換えることによって，dataを設定します。正常に実行されるためには，ImqMessage formatがMQFMT_NONEでなければなりません。

詳細については，「ImqItemクラス（C++）」の「メソッド」を参照してください。

●　void operator = ( const ImqBinary & binary );

binary分のバイトをコピーします。

●　ImqBoolean operator == ( const ImqBinary & binary );

このオブジェクトをbinaryと比較します。これらが等しくない場合は0を，それ以外の場合は「0でない」を返します。二つのオブジェクトが同じdatalengthを持っており，バイト数が一致する場合，二つのオブジェクトは等しいと見なされます。

●　ImqBoolean copyOut( void * buffer， const size_t length， const char pad = 0 );

最大length分のバイトをdata pointerからbufferへコピーします。data lengthが不十分であるときは，buffer内の残りのスペースにはpad分のバイトが埋められます。lengthも0である場合は，bufferが0であると考えられます。lengthが負であってはなりません。正常に実行された場合はTRUEを返します。

●　size_t dataLength( ) const ;

data lengthを返します。

●　ImqBoolean setDataLength( const size_t length );

data lengthを設定します。このメソッドの結果としてdata lengthが変更された場合，オブジェクト内のデータの初期設定は解除されます。正常に実行された場合はTRUEを返します。

●　void * dataPointer( ) const ;

data pointerを返します。

●　ImqBoolean isNull( ) const ;

data lengthが0である場合，またはdataバイトがすべて0である場合はTRUEを返します。それ以外の場合はFALSEを返します。

●　ImqBoolean set( const void * buffer， const size_t length );

bufferからlength分のバイトをコピーします。正常に実行された場合はTRUEを返します。

メソッド（protected）

●　void clear( );

data lengthを減らして0にします。

その他の関連クラス

ImqItem

ImqMessage

理由コード

MQRC_NO_BUFFER

MQRC_STORAGE_NOT_AVAILABLE

理由コードの詳細については，「付録A　理由コード」，またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqCacheクラス（C++）

このクラスは，データをメモリに保持したり，整理したりするのに使用します。ユーザが固定サイズのメモリのバッファを指定したり，システムによる自動的で柔軟なメモリ設定に任せたりもできます。

インクルードファイル

このクラスを使用するときは，imqcac.hppファイルをインクルードしてください。

オブジェクト属性

●　automatic buffer

バッファメモリがシステムによって自動的に管理されるときはTRUE，ユーザによって提供されるときはFALSEを示します。初期値はTRUEです。

●　buffer length

バッファ内のメモリのバイト数です。初期値は0です。

●　buffer pointer

バッファメモリのアドレスです。初期値はヌルです。

●　data length

data pointerよりあとのバイト数です。message lengthに等しいか，それより小さい数値です。初期値は0です。

●　data offset

data pointerより前のバイト数です。message lengthに等しいか，それより小さい数値です。初期値は0です。

●　data pointer

読み取りまたは書き込みが実行されるバッファのアドレスです。初期値はヌルです。

●　message length

バッファ内の有効なデータのバイト数です。初期値は0です。

コンストラクタ

●　ImqCache( );

デフォルトのコンストラクタです。

●　ImqCache( const ImqCache & cache );

コピーコンストラクタです。

メソッド

●　void operator = ( const ImqCache & cache );

message length分のバイトのデータをcacheオブジェクトから該当するオブジェクトへコピーします。automatic bufferがFALSEである場合は，buffer lengthが，コピーされたデータを収容できるだけの大きさでなければなりません。

●　ImqBoolean automaticBuffer( ) const ;

automatic bufferの値を返します。

●　size_t bufferLength( ) const ;

buffer lengthを返します。

●　char * bufferPointer( ) const ;

buffer pointerを返します。

●　void clearMessage( );

message lengthとdata offsetを両方とも0に設定します。

●　size_t dataLength( ) const ;

data lengthを返します。

●　size_t dataOffset( ) const ;

data offsetを返します。

●　ImqBoolean setDataOffset( const size_t offset );

data offsetを設定します。message lengthがdata offset以上であることが必要なときは，message lengthを増やします。正常に実行された場合はTRUEを返します。

●　char * dataPointer( ) const ;

data pointerのコピーを返します。

●　size_t messageLength( ) const ;

message lengthを返します。

●　ImqBoolean setMessageLength( const size_t length );

message lengthを設定します。

message lengthがbuffer length以下であることが必要なときは，buffer lengthを増やします。data offsetがmessage length以下であることが必要なときは，data offsetを減らします。正常に実行された場合はTRUEを返します。

●　ImqBoolean moreBytes( const size_t bytes-required );

data pointerからバッファの終わりまでの間で，さらにbytes-required分のバイトを書き込みに使用できるようにします。正常に実行された場合はTRUEを返します。

automatic bufferがTRUEである場合は，必要に応じて，さらに多くのメモリが取得されます。それ以外の場合は，buffer lengthが十分な大きさでなければなりません。

●　ImqBoolean read( const size_t length， char * & external-buffer );

length分のバイトを，data pointer位置で始まるバッファからexternal-bufferへコピーします。データがコピーされたあとで，data offsetはlengthだけ増やされます。正常に実行された場合はTRUEを返します。

●　ImqBoolean resizeBuffer( const size_t length );

automatic bufferがTRUEである場合は，バッファメモリを再度割り振ることによって，buffer lengthを変更します。

既存のバッファから最大message length分のバイトのデータが新しいバッファにコピーされます。コピーされる最大数はlengthバイトです。buffer pointerは変更されます。message lengthとdata offsetは，新しいバッファの範囲内で可能な限り接近して予約されます。正常に実行された場合はTRUEを返します。automatic bufferがFALSEである場合はFALSEを返します。

注意

システム資源に問題があると，このメソッドは失敗し，理由コードMQRC_STORAGE_NOT_AVAILABLEが返されます。

●　ImqBoolean useEmptyBuffer( const char * external-buffer， const size_t length );

空のユーザバッファを識別し，buffer pointerがexternal-bufferを示すように設定し，buffer lengthをlengthに，また，message lengthを0にそれぞれ設定します。clearMessageを実行します。バッファがデータで完全に満たされている場合は，代わりにuseFullBufferメソッドを使用してください。バッファの一部にデータが入っている場合は，setMessageLengthメソッドを使用して，正しい量を示してください。正常に実行された場合はTRUEを返します。

このように，このメソッドを使用して，固定量のメモリ（external-bufferがヌル文字でなく，lengthが0でない）を識別できます。この場合，automatic bufferはFALSEに設定されます。また，システムによる柔軟なメモリ管理（external-bufferがヌル文字で，かつlengthが0である）に戻すこともできます。この場合，automatic bufferはTRUEに設定されます。

●　ImqBoolean useFullBuffer( const char * externalBuffer， const size_t length );

このメソッドとImqBoolean useEmptyBufferメソッドの違いは，message lengthがlengthに設定されていることだけです。正常に実行された場合はTRUEを返します。

●　ImqBoolean write( const size_t length， const char * external-buffer );

length分のバイトを，external-bufferから，data1 pointer位置で始まるバッファへコピーします。データがコピーされたあとで，data offsetはlengthだけ増やされます。また，message lengthが新しいdata offset値以上になるようにする必要がある場合はmessage lengthが増やされます。正常に実行された場合はTRUEを返します。

automatic bufferがTRUEである場合は，十分な量のメモリが保証されます。それ以外の場合は，最終的なdata offsetがbuffer lengthを超えてはいけません。

その他の関連クラス

ImqError

理由コード

MQRC_BUFFER_NOT_AUTOMATIC

MQRC_DATA_TRUNCATED

MQRC_INSUFFICIENT_BUFFER

MQRC_INSUFFICIENT_DATA

MQRC_NULL_POINTER

MQRC_STORAGE_NOT_AVAILABLE

MQRC_ZERO_LENGTH

理由コードの詳細については，「付録A　理由コード」，またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqDeadLetterHeaderクラス（C++）

このクラスは，MQDLH構造体の特定の機能をカプセル化します。このクラスのオブジェクトは，一般的に，処理不能なメッセージを検出するアプリケーションによって使用されます。送達不能ヘッダと処理不能なメッセージ内容とで構成される新規メッセージは送達不能キューに入れられ，その処理不能メッセージは破棄されます。

インクルードファイル

このクラスを使用するときは，imqdlh.hppファイルをインクルードしてください。

オブジェクト属性

●　dead-letter reason code

メッセージが送達不能キューに届いた理由です。初期値はMQRC_NONEです。

MQDLH構造体の，Reasonフィールドに相当します。

●　destination queue manager name

元の宛先キューマネジャの名前です。初期値はヌル文字です。

MQDLH構造体の，DestQMgrNameフィールドに相当します。

●　destination queue name

元の宛先キューの名前です。初期値はヌル文字です。

MQDLH構造体の，DestQNameフィールドに相当します。

●　put application name

メッセージを送達不能キューに書き込んだアプリケーションの名前です。初期値はヌル文字です。

MQDLH構造体の，PutApplNameフィールドに相当します。

●　put application type

メッセージを送達不能キューに書き込んだアプリケーションのタイプです。初期値は0です。

MQDLH構造体の，PutApplTypeフィールドに相当します。

●　put date

メッセージが送達不能キューに書き込まれた日付です。初期値は空白です。

MQDLH構造体の，PutDateフィールドに相当します。

●　put time

メッセージが送達不能キューに書き込まれた時刻です。初期値は空白です。

MQDLH構造体の，PutTimeフィールドに相当します。

コンストラクタ

●　ImqDeadLetterHeader( );

デフォルトのコンストラクタです。

●　ImqDeadLetterHeader( const ImqDeadLetterHeader & header );

コピーコンストラクタです。

メソッド

●　virtual ImqBoolean copyOut( ImqMessage & msg );

多重定義されたImqItemメソッドです。MQDLH構造体をメッセージバッファの初めに挿入し，既存のメッセージデータを後ろにずらします。msg formatをMQFMT_DEAD_LETTER_HEADERに設定します。

詳細については，「ImqHeaderクラス（C++）」の「メソッド」を参照してください。

●　virtual ImqBoolean pasteIn( ImqMessage & msg );

多重定義されたImqItemメソッドです。メッセージバッファからMQDLH構造体を読み取ります。

正常に実行されるためには，ImqMessage formatがMQFMT_DEAD_LETTER_HEADERでなければなりません。

詳細については，「ImqHeaderクラス（C++）」の「メソッド」を参照してください。

●　void operator = ( const ImqDeadLetterHeader & header );

インスタンスデータがheaderからコピーされ，既存のインスタンスデータと置き換えられます。

●　MQLONG deadLetterReasonCode( ) const ;

dead-letter reason codeを返します。

●　void setDeadLetterReasonCode( const MQLONG reason );

dead-letter reason codeを設定します。

●　ImqString destinationQueueManagerName( ) const ;

destination queue manager nameを返します。

●　void setDestinationQueueManagerName( const char * name );

destination queue manager nameを設定します。

●　ImqString destinationQueueName( ) const ;

destination queue nameのコピーを返します。

●　void setDestinationQueueName( const char * name );

destination queue nameを設定します。

●　ImqString putApplicationName( ) const ;

put application nameのコピーを返します。

●　void setPutApplicationName( const char * name = 0 );

put application nameを設定します。

●　MQLONG putApplicationType( ) const ;

put application typeを返します。

●　void setPutApplicationType( const MQLONG type = MQAT_NO_CONTEXT );

put application typeを設定します。

●　ImqString putDate( ) const ;

put dateのコピーを返します。

●　void setPutDate( const char * date = 0 );

put dateを設定します。

●　ImqString putTime( ) const ;

put timeのコピーを返します。

●　void setPutTime( const char * time = 0 );

put timeを設定します。

オブジェクト属性（protected）

●　MQDLH omqdlh

MQDLH構造体です。

その他の関連クラス

ImqHeader

ImqItem

ImqMessage

ImqString

ImqDistributionListクラス（C++）

このクラスは，複数の宛先に一つまたは複数のメッセージを送信するために，一つまたは複数のキューを参照する動的配布リストをカプセル化します。

インクルードファイル

このクラスを使用するときは，imqdst.hppファイルをインクルードしてください。

オブジェクト属性

●　first distributed queue

ImqQueueクラスの一つまたは複数のオブジェクトの，ImqQueue distribution list referenceがオブジェクトをアドレス指定する最初のキューです。初期値は0です。

ImqDistributionListオブジェクトがオープンされると，それを参照するImqQueueオブジェクトはすべて自動的にクローズされます。

コンストラクタ

●　ImqDistributionList();

デフォルトのコンストラクタです。

●　ImqDistributionList(const ImqDistributionList & list);

コピーコンストラクタです。

メソッド

●　void operator = (const ImqDistributionList & list);

このオブジェクトを参照するすべてのImqQueueオブジェクトは，コピーの前に参照の対象から外されます。このメソッドが呼び出されたあとに，このオブジェクトを参照するImqQueueオブジェクトはありません。

●　ImqQueue * firstDistributedQueue() const;

first distributed queueを返します。

メソッド（protected）

●　void setFirstDistributedQueue(ImqQueue * queue = 0);

first distributed queueを設定します。

その他の関連クラス

ImqMessage

ImqQueue

ImqErrorクラス（C++）

この抽象クラスは，あるオブジェクトに関連づけられたエラーに関する情報を提供します。

インクルードファイル

このクラスを使用するときは，imqerr.hppファイルをインクルードしてください。

オブジェクト属性

●　completion code

最新の完了コードです。初期値は0です。

●　reason code

最新の理由コードです。初期値は0です。

コンストラクタ

●　ImqError( );

デフォルトのコンストラクタです。

●　ImqError( const ImqError & error );

コピーコンストラクタです。

メソッド

●　void operator = ( const ImqError & error );

インスタンスデータがerrorからコピーされ，既存のインスタンスデータと置き換えられます。

●　void clearErrorCodes( );

completion codeとreason codeを両方とも0に設定します。

●　MQLONG completionCode( ) const ;

completion codeを返します。

●　MQLONG reasonCode( ) const ;

reason codeを返します。

メソッド（protected）

●　ImqBoolean checkReadPointer( const void * pointer， const size_t length );

pointerとlengthの組み合わせが，読み取り専用アクセスに有効であるかどうかを調べます。正常に実行された場合はTRUEを返します。

●　ImqBoolean checkWritePointer( const void * pointer， const size_t length );

pointerとlengthの組み合わせが，読み取りおよび書き込みアクセスに有効であるかどうかを調べます。正常に実行された場合はTRUEを返します。

●　void setCompletionCode( const MQLONG code = 0 );

completion codeを設定します。

●　void setReasonCode( const MQLONG code = 0 );

reason codeを設定します。

理由コード

MQRC_BUFFER_ERROR

理由コードの詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqGetMessageOptionsクラス（C++）

このクラスは，MQGMO構造体をカプセル化します。

インクルードファイル

このクラスを使用するときは，imqgmo.hppファイルをインクルードしてください。

オブジェクト属性

●　group status

メッセージのグループに関連するメッセージの状況です。初期値はMQGS_NOT_IN_GROUPです。

MQGMO構造体の，GroupStatusフィールドに相当します。

●　match options

着信メッセージを選択するためのオプションです。初期値は，MQMO_MATCH_MSG_IDまたはMQMO_MATCH_CORREL_IDです。

MQGMO構造体の，MatchOptionsフィールドに相当します。

●　options

メッセージに適用できるオプションです。初期値はMQGMO_NO_WAITです。

MQGMO構造体の，Optionsフィールドに相当します。

●　resolved queue name

解決されたキューの名前です。属性は読み取り専用です。名前は長さが48文字以下でなければならないので，その長さになるまでヌル文字が埋められます。初期値は空白です。

MQGMO構造体の，ResolvedQNameフィールドに相当します。

●　segmentation

メッセージを分割する機能です。初期値はMSEG_INHIBITEDです。

MQGMO構造体の，Segmentationフィールドに相当します。

●　segment status

メッセージの分割状況です。初期値はMQSS_NOT_A_SEGMENTです。

MQGMO構造体の，SegmentStatusフィールドに相当します。

●　sync-point participation

同期点制御を受けてメッセージが検索される場合はTRUEです。

●　wait interval

適切なメッセージがまだ使用可能でない場合に，ImqQueueクラスのgetメソッドが適切なメッセージの着信を待つ時間の長さです。初期値は0で，この場合は無期限に待機します。optionsにMQGMO_WAITが組み込まれていない場合は，この属性は無視されます。

MQGMO構造体の，WaitIntervalフィールドに相当します。

コンストラクタ

●　ImqGetMessageOptions( );

デフォルトのコンストラクタです。

●　ImqGetMessageOptions( const ImqGetMessageOptions & gmo );

コピーコンストラクタです。

メソッド

●　void operator = ( const ImqGetMessageOptions & gmo );

インスタンスデータがgmoからコピーされ，既存のインスタンスデータと置き換えられます。

●　MQCHAR groupStatus() const ;

group statusを返します。

●　void setGroupStatus( const MQCHAR status);

group statusを設定します。

●　MQLONG matchOptions() const ;

match optionsを返します。

●　void setMatchOptions( const MQLONG options);

match optionsを設定します。

●　MQLONG options( ) const ;

optionsを返します。

●　void setOptions( const MQLONG options );

sync-point participation値を組み込んで，optionsを設定します。

●　ImqString resolvedQueueName( ) const ;

resolved queue nameのコピーを返します。

●　MQCHAR segmentation( ) const ;

segmentationを返します。

●　void setSegmentation( const MQCHAR value );

segmentationを設定します。

●　MQCHAR segmentStatus( ) const ;

segment statusを返します。

●　void setSegmentStatus( const MQCHAR status );

segment statusを設定します。

●　ImqBoolean syncPointParticipation( ) const ;

sync-point participation値を返します。optionsにMQGMO_SYNCPOINTが組み込まれている場合はTRUEを返します。

●　void setSyncPointParticipation( const ImqBoolean sync );

sync-point participation値を設定します。optionsのMQGMO_SYNCPOINTフラグだけを変更します。

●　MQLONG waitInterval( ) const ;

wait intervalを返します。

●　void setWaitInterval( const MQLONG interval );

wait intervalを設定します。

オブジェクト属性（protected）

●　PMQGMO opgmo

MQGMO構造体のアドレスです。

●　MQLONG olVersion

opgmoでアドレス指定されたMQGMO構造体のバージョン番号です。

その他の関連クラス

ImqString

ImqHeaderクラス（C++）

この抽象クラスは，MQDLH構造体，およびMQRMH構造体の共通機能をカプセル化します。

インクルードファイル

このクラスを使用するときは，imqhdr.hppファイルをインクルードしてください。

オブジェクト属性

●　character set

元のコード化文字セット識別子です。初期値はMQCCSI_Q_MGRです。

MQDLH構造体，MQRMH構造体の，CodedCharSetIdフィールドに相当します。

●　encoding

元の符号化です。初期値はMQENC_NATIVEです。

MQDLH構造体，MQRMH構造体の，Encodingフィールドに相当します。

●　format

元の形式です。初期値はMQFMT_NONEです。

MQDLH構造体，MQRMH構造体の，Formatフィールドに相当します。

●　header flags

初期値は次のとおりです。

ImqDeadLetterHeaderクラスのオブジェクト：0

ImqIMSBridgeHeaderクラスのオブジェクト：MQIIH_NONE

ImqReferenceHeaderクラスのオブジェクト：MQRMHF_LAST

MQRMH構造体の，Flagsフィールドに相当します。

コンストラクタ

●　ImqHeader( );

デフォルトのコンストラクタです。

●　ImqHeader( const ImqHeader & header );

コピーコンストラクタです。

メソッド

●　void operator=( const ImqHeader & header );

インスタンスデータがheaderからコピーされ，既存のインスタンスデータと置き換えられます。

●　virtual MQLONG characterSet( ) const;

character setを返します。

●　virtual void setCharacterSet( const MQLONG ccsid = MQCCSI_Q_MGR );

character setを設定します。

●　virtual MQLONG encoding( ) const ;

encodingを返します。

●　virtual void setEncoding( const MQLONG encoding = MQENC_NATIVE );

encodingを設定します。

●　virtual ImqString format( ) const ;

空白を含め，formatのコピーを返します。

●　virtual void setFormat( const char * name = 0 );

formatを設定し，空白で8文字までを埋めます。

●　virtual MQLONG headerFlags() const ;

header flagsを返します。

●　virtual void setHeaderFlags( const MQLONG flags = 0 );

header flagsを設定します。

その他の関連クラス

ImqDeadLetterHeader

ImqItem

ImqMessage

ImqReferenceHeader

ImqString

ImqItemクラス（C++）

この抽象クラスは，一つのメッセージ内の一つの項目を表します。項目は，メッセージバッファ内で一つに連結されます。どの特殊化も，一つの構造体IDで始まる特定の構造体と関連づけられます。

この抽象クラス内で多様メソッドを使用することによって，メッセージとの間で項目をコピーできます。ImqMessageクラスのreadItemメソッドおよびwriteItemメソッドでは，アプリケーションプログラムにとって無理のない別の方法でこれらの多様メソッドを呼び出せるようにします。

インクルードファイル

このクラスを使用するときは，imqitm.hppファイルをインクルードしてください。

オブジェクト属性

●　structure id

構造体の始めにある，4文字のストリングです。属性は読み取り専用です。

MQ*構造体の，StrucIdフィールドに相当します。

コンストラクタ

●　ImqItem( );

デフォルトのコンストラクタです。

●　ImqItem( const ImqItem & item );

コピーコンストラクタです。

メソッド

●　static ImqBoolean structureIdIs( const char * structure-id-to-test， const ImqMessage & msg );

着信msg内の次のImqItemのstructure idが，structure-id-to-testと同じであれば，TRUEを返します。次の項目は，現在ImqCache data pointerによってアドレス指定されているメッセージバッファの部分として識別されます。

●　void operator = ( const ImqItem & item );

インスタンスデータがitemからコピーされ，既存のインスタンスデータと置き換えられます。

●　virtual ImqBoolean copyOut( ImqMessage & msg ) = 0 ;

このオブジェクトを次の項目として出力メッセージバッファに書き込み，既存の項目があればそれに付加します。書き込み操作が正常に実行されると，ImqCache data lengthは増やされます。正常に実行された場合はTRUEを返します。

特定のサブクラスを扱うときは，このメソッドを上書きしてください。

●　virtual ImqBoolean pasteIn( ImqMessage & msg ) = 0 ;

オブジェクトを着信メッセージバッファから読み取ります。

オブジェクトのサブクラスは，msgオブジェクトのメッセージバッファ内で次に検出されたstructure idと矛盾しないものでなければなりません。

msgオブジェクトのencodingは，MQENC_NATIVEでなければなりません。メッセージは，ImqMessage encodingをMQENC_NATIVEに設定し，ImqGetMessageOptionsを使って検索してください。

読み取り操作が正常に実行されると，ImqCache data lengthは減少します。正常に実行された場合はTRUEを返します。

特定のサブクラスを扱うときは，このメソッドを上書きしてください。

その他の関連クラス

ImqCache

ImqError

ImqMessage

理由コード

MQRC_ENCODING_ERROR

MQRC_STRUC_ID_ERROR

MQRC_INCONSISTENT_FORMAT

MQRC_INSUFFICIENT_BUFFER

MQRC_INSUFFICIENT_DATA

理由コードの詳細については，「付録A　理由コード」を参照してください。

ImqMessageクラス（C++）

このクラスは，MQMD構造体をカプセル化し，メッセージデータを構築および再構築します。

インクルードファイル

このクラスを使用するときは，imqmsg.hppファイルをインクルードしてください。

オブジェクト属性

●　application id data

メッセージに関連づけられたID情報です。初期値は空白です。

MQMD構造体の，ApplIdentityDataフィールドに相当します。

●　application origin data

メッセージに関連づけられた起点情報です。初期値は空白です。

MQMD構造体の，ApplOriginDataフィールドに相当します。

●　backout count

メッセージが試験的に取り出され，次にロールバックされた回数です。属性は読み取り専用です。初期値は0です。

MQMD構造体の，BackoutCountフィールドに相当します。

●　character set

コード化文字セットIDです。初期値はMQCCSI_Q_MGRです。

MQMD構造体の，CodedCharSetIdフィールドに相当します。

●　encoding

メッセージデータのマシン符号化です。初期値はMQENC_NATIVEです。

MQMD構造体の，Encodingフィールドに相当します。

●　expiry

TP1/Message Queue Accessが未検索メッセージを破棄する前に保存する期間を制御する時間，依存の数量です。初期値はMQEI_UNLIMITEDです。

MQMD構造体の，Expiryフィールドに相当します。

●　format

バッファ内のデータのレイアウトを記述する形式（テンプレート）の名前です。9文字以上の名前は，8文字に切り捨てられます。名前は，8文字の長さまで空白で埋められます。初期値はMQFMT_NONEです。

MQMD構造体の，Formatフィールドに相当します。

●　message flags

分割制御情報です。初期値はMQMF_SEGMENTATION_INHIBITEDです。

MQMD構造体の，MsgFlagsフィールドに相当します。

●　message type

メッセージの広範囲なカテゴリ化です。初期値はMQMT_DATAGRAMです。

MQMD構造体の，MsgTypeフィールドに相当します。

●　offset

オフセット情報です。初期値は0です。

MQMD構造体の，Offsetフィールドに相当します。

●　original length

分割されたメッセージの元の長さです。初期値はMQOL_UNDEFINEDです。

MQMD構造体の，OriginalLengthフィールドに相当します。

●　persistence

該当するメッセージが重大であり，持続記憶域を使用して，常にバックアップを取っておく必要があることを示します。このオプションを利用すると，パフォーマンスが低下します。初期値はMQPER_PERSISTENCE_AS_Q_DEFです。

MQMD構造体の，Persistenceフィールドに相当します。

●　priority

伝送および送達の相対優先順位です。同じ優先順位のメッセージは，通常，提供されたのと同じ順序で送達されます。ただし，これが確実に実行されるようにするには，満たさなければならない基準が幾つかあります。初期値はMQPRI_PRIORITY_AS_Q_DEFです。

MQMD構造体の，Priorityフィールドに相当します。

●　put application name

メッセージを書き込むアプリケーションの名前です。初期値はヌル文字です。

MQMD構造体の，PutApplNameフィールドに相当します。

●　put application type

メッセージを書き込むアプリケーションのタイプです。初期値はMQAT_NO_CONTEXTです。

MQMD構造体の，PutApplTypeフィールドに相当します。

●　put date

メッセージが書き込まれた日付です。初期値は空白です。

MQMD構造体の，PutDateフィールドに相当します。

●　put time

メッセージが書き込まれた時刻です。初期値は空白です。

MQMD構造体の，PutTimeフィールドに相当します。

●　reply-to queue manager name

応答メッセージが送られるキューマネジャの名前です。初期値はヌル文字です。

MQMD構造体の，ReplyToQMgrフィールドに相当します。

●　reply-to queue name

応答が送られるキューマネジャの名前です。初期値はヌル文字です。

MQMD構造体の，ReplyToQフィールドに相当します。

●　report

メッセージと関連づけられているフィードバック情報です。初期値はMQRO_NONEです。

MQMD構造体の，Reportフィールドに相当します。

●　sequence number

グループ内のメッセージを識別するシーケンス情報です。初期値は1です。

MQMD構造体の，MsgSeqNumberフィールドに相当します。

●　total message length

メッセージを最後に読み取ろうとしたときに有効だったバイト数です。属性は読み取り専用で，初期値は0です。

最後のメッセージに切り捨てが発生した場合，または切り捨てが発生したために読み取りが行われなかった場合，この値はImqCacheクラスのmessage lengthより大きくなります。

●　user id

メッセージと関連づけられているユーザIDです。初期値はヌル文字です。

MQMD構造体の，UserIdentifierフィールドに相当します。

コンストラクタ

●　ImqMessage( );

デフォルトのコンストラクタです。

●　ImqMessage( const ImqMessage & msg );

コピーコンストラクタです。詳細については，「メソッド」のoperatorの説明を参照してください。

メソッド

●　void operator = ( const ImqMessage & msg );

msgからMQMD構造体，およびメッセージデータをコピーします。このオブジェクトのユーザによってバッファが提供されている場合は，コピーされるデータの量は使用できるバッファサイズまでに制限されます。そうでない場合は，システムは，必ず十分なサイズのバッファがコピーされたデータに使用できるようにします。

●　ImqString applicationIdData( ) const ;

application id dataのコピーを返します。

●　void setApplicationIdData( const char * data = 0 );

application id dataを設定します。

●　ImqString applicationOriginData( ) const ;

application origin dataのコピーを返します。

●　void setApplicationOriginData( const char * data = 0 );

application origin dataを設定します。

●　MQLONG backoutCount( ) const ;

backout countを返します。

●　MQLONG characterSet( ) const ;

character setを返します。

●　void setCharacterSet( const MQLONG ccsid = MQCCSI_Q_MGR );

character setを設定します。

●　MQLONG encoding( ) const ;

encodingを返します。

●　void setEncoding( const MQLONG encoding = MQENC_NATIVE );

encodingを設定します。

●　MQLONG expiry( ) const ;

expiryを返します。

●　void setExpiry( const MQLONG expiry );

expiryを設定します。

●　ImqString format( ) const ;

空白を含め，formatのコピーを返します。

●　ImqBoolean formatIs( const char * format-to-test ) const ;

formatがformat-to-testと同じであれば，TRUEを返します。

●　void setFormat( const char * name = 0 );

formatを設定し，空白で8文字までを埋めます。

●　MQLONG messageFlags() const ;

message flagsを返します。

●　void setMessageFlags( const MQLONG flags);

message flagsを設定します。

●　MQLONG messageType( ) const ;

message typeを返します。

●　void setMessageType( const MQLONG type );

message typeを設定します。

●　MQLONG offset() const ;

offsetを返します。

●　void setOffset( const MQLONG offset);

offsetを設定します。

●　MQLONG originalLength() const ;

original lengthを返します。

●　void setOriginalLength( const MQLONG length);

original lengthを設定します。

●　MQLONG persistence( ) const ;

persistenceを返します。

●　void setPersistence( const MQLONG persistence );

persistenceを設定します。

●　MQLONG priority( ) const ;

priorityを返します。

●　void setPriority( const MQLONG priority );

priorityを設定します。

●　ImqString putApplicationName( ) const ;

put application nameのコピーを返します。

●　void setPutApplicationName( const char * name = 0 );

put application nameを設定します。

●　MQLONG putApplicationType( ) const ;

put application typeを返します。

●　void setPutApplicationType( const MQLONG type = MQAT_NO_CONTEXT );

put application typeを設定します。

●　ImqString putDate( ) const ;

put dateのコピーを返します。

●　void setPutDate( const char * date = 0 );

put dateを設定します。

●　ImqString putTime( ) const ;

put timeのコピーを返します。

●　void setPutTime( const char * time = 0 );

put timeを設定します。

●　ImqBoolean readItem( ImqItem & item );

ImqItem pasteInメソッドを使用して，メッセージバッファからitemオブジェクトへ読み込みます。正常に実行された場合はTRUEを返します。

●　ImqString replyToQueueManagerName( ) const ;

reply-to queue manager nameのコピーを返します。

●　void setReplyToQueueManagerName( const char * name = 0 );

reply-to queue manager nameを設定します。

●　ImqString replyToQueueName( ) const ;

reply-to queue nameのコピーを返します。

●　void setReplyToQueueName( const char * name = 0 );

reply-to queue nameを設定します。

●　MQLONG report( ) const ;

reportを返します。

●　void setReport( const MQLONG report );

reportを設定します。

●　MQLONG sequenceNumber() const ;

sequence numberを返します。

●　void setSequenceNumber( const MQLONG number);

sequence numberを設定します。

●　size_t totalMessageLength( ) const ;

total message lengthを返します。

●　ImqString userId( ) const ;

user idのコピーを返します。

●　void setUserId( const char * id = 0 );

user idを設定します。

●　ImqBoolean writeItem( ImqItem & item );

ImqItem copyOutメソッドを使用して，itemオブジェクトからメッセージバッファへ書き込みます。書き込みは，挿入，置換，または付加の形態をとる場合がありますが，これはitemオブジェクトのクラスによって決まります。正常に実行された場合はTRUEを返します。

オブジェクト属性（protected）

●　MQMD omqmd

MQMD構造体です。

その他の関連クラス

ImqCache

ImqItem

ImqMessageTracker

ImqString

理由コード

MQRC_ENCODING_ERROR

MQRC_STRUC_ID_ERROR

MQRC_INSUFFICIENT_BUFFER

MQRC_INSUFFICIENT_DATA

理由コードの詳細については，「付録A　理由コード」を参照してください。

ImqMessageTrackerクラス（C++）

この抽象クラスは，ImqMessageオブジェクトまたはImqQueueオブジェクトの属性のうち，もう一方のオブジェクトと関連づけることのできる属性をカプセル化します。

インクルードファイル

このクラスを使用するときは，imqmtr.hppファイルをインクルードしてください。

オブジェクト属性

●　accounting token

長さMQ_ACCOUNTING_TOKEN_LENGTHの2進値（MQBYTE32）です。初期値はMQACT_NONEです。

MQMD構造体，MQPMR構造体の，AccountingTokenフィールドに相当します。

●　correlation id

メッセージを相互に関連づける目的でユーザが割り当てた，長さがMQ_CORREL_ID_LENGTHの2進値（MQBYTE24）です。初期値はMQCI_NONEです。

MQMD構造体，MQPMR構造体の，CorrelIdフィールドに相当します。

●　feedback

メッセージとともに送られるフィードバック情報です。初期値はMQFB_NONEです。

MQMD構造体，MQPMR構造体の，Feedbackフィールドに相当します。

●　group id

キュー内で固有の長さMQ_GROUP_ID_LENGTHの2進値（MQBYTE24）です。初期値はMQGI_NONEです。

MQMD構造体，MQPMR構造体の，GroupIdフィールドに相当します。

●　message id

キュー内で固有の長さMQ_MSG_ID_LENGTHの2進値（MQBYTE24）です。初期値はMQMI_NONEです。

MQMD構造体，MQPMR構造体の，MsgIdフィールドに相当します。

コンストラクタ

●　ImqMessageTracker( );

デフォルトのコンストラクタです。

●　ImqMessageTracker( const ImqMessageTracker & tracker );

コピーコンストラクタです。詳細については，「メソッド」のoperatorの説明を参照してください。

メソッド

●　void operator = ( const ImqMessageTracker & tracker );

インスタンスデータがtrackerからコピーされ，既存のインスタンスデータと置き換えられます。

●　ImqBinary accountingToken( ) const ;

accounting tokenのコピーを返します。

●　ImqBoolean setAccountingToken( const ImqBinary & token );

accounting tokenを設定します。tokenのdata lengthは，0またはMQ_ACCOUNTING_TOKEN_ID_LENGTHのどちらかでなければなりません。正常に実行された場合はTRUEを返します。

●　void setAccountingToken( const MQBYTE32 token = 0 );

accounting tokenを設定します。tokenが0の場合は，MQACT_NONEを指定するのと同じです。tokenが0でない場合は，MQ_ACCOUNTING_TOKEN_LENGTHバイトの2進データをアドレス指定する必要があります。

MQACT_NONEなどの事前定義値を使用する場合は，確実に信号機能が一致するようにキャストを作成する必要があります。

キャストは，例えば(MQBYTE *)MQACT_NONEのように作成します。

●　ImqBinary correlationId( ) const ;

correlation idのコピーを返します。

●　ImqBoolean setCorrelationId( const ImqBinary & token );

correlation idを設定します。tokenのdata lengthは，0またはMQ_CORREL_ID_LENGTHのどちらかでなければなりません。正常に実行された場合はTRUEを返します。

●　void setCorrelationId( const MQBYTE24 id = 0 );

correlation idを設定します。idが0の場合は，MQCI_NONEを指定するのと同じです。idが0でない場合には，MQ_CORREL_ID_LENGTHバイトの2進データをアドレス指定する必要があります。MQCI_NONEなどの事前定義値を使用する場合は，確実に信号機能が一致するようにキャストを作成する必要があります。

キャストは，例えば(MQBYTE *)MQCI_NONE のように作成します。

●　MQLONG feedback( ) const ;

feedbackを返します。

●　void setFeedback( const MQLONG feedback );

feedbackを設定します。

●　ImqBinary groupId() const ;

group idのコピーを返します。

●　ImqBoolean setGroupId( const ImqBinary & token);

group idを設定します。tokenのdata lengthは，0またはMQ_GROUP_ID_LENGTHのどちらかでなければなりません。正常に実行された場合はTRUEを返します。

●　void setGroupId( const MQBYTE24 id = 0);

group idを設定します。idが0の場合は，MQGI_NONEを指定するのと同じです。idが0でない場合は，MQ_GROUP_ID_LENGTHバイトの2進データをアドレス指定する必要があります。MQGI_NONEなどの事前定義値を使用する場合は，確実に信号機能が一致するようにキャストを作成する必要があります。

キャストは，例えば(MQBYTE *)MQGI_NONEのように作成します。

●　ImqBinary messageId( ) const ;

message idのコピーを返します。

●　ImqBoolean setMessageId( const ImqBinary & token );

message idを設定します。tokenのdata lengthは，0またはMQ_MSG_ID_LENGTHのどちらかでなければなりません。正常に実行された場合はTRUEを返します。

●　void setMessageId( const MQBYTE24 id = 0 );

message idを設定します。idが0の場合は，MQMI_NONEを指定するのと同じです。idが0でない場合には，MQ_MSG_ID_LENGTHバイトの2進データをアドレス指定する必要があります。MQMI_NONEなどの事前定義値を使用する場合は，確実に信号機能が一致するようにキャストを作成する必要があります。

キャストは，例えば(MQBYTE*)MQMI_NONEのように作成します。

その他の関連クラス

ImqBinary

ImqError

ImqMessage

ImqQueue

理由コード

MQRC_BINARY_DATA_LENGTH_ERROR

理由コードの詳細については，「付録A　理由コード」を参照してください。

ImqObjectクラス（C++）

このクラスは，キューマネジャおよびキューの属性をカプセル化します。

このクラスは抽象クラスです。このクラスのオブジェクトが破棄されると，このクラスは自動的にクローズされ，そのImqQueueManager接続は切断されます。

インクルードファイル

このクラスを使用するときは，imqobj.hppファイルをインクルードしてください。

オブジェクト属性

●　alternate user id

最大MQ_USER_ID_LENGTH文字です。初期値はヌル文字です。

MQOD構造体の，AlternateUserIdフィールドに相当します。

●　close options

初期値はMQCO_NONEです。この属性は，暗黙の再オープン操作時には無視されます。この操作では，必ず値MQCO_NONEが使用されるためです。

●　connection reference

ローカルのキューマネジャへの必要な接続を提供するImqQueueManagerオブジェクトへの参照です。ImqQueueManagerオブジェクトの場合，参照はオブジェクト自身です。初期値はヌル文字です。

注意

connection referenceと，名前を指定されたキューのキューマネジャを識別するImqQueue queue manager nameとを混同しないようにしてください。

●　description

キューマネジャ，キュー，またはプロセスの記述名（最大64文字）です。属性は読み取り専用です。

●　name

キューマネジャ，キュー，または該当するプロセスの名前（最大48文字）です。初期値はヌル文字です。これは，結果として生じた動的キューの名前に対するopenのあとのモデルキュー変更の名前です。空のキューマネジャ名の代わりに，必ず実際のキューマネジャ名が返されます。

MQOD構造体，MQOR構造体の，ObjectNameフィールド，またはObjectQMgrNameフィールドに相当します。

●　next managed object

特定の順序でなく，このクラスの次のオブジェクトで，このオブジェクトと同じconnection referenceを持つものです。初期値は0です。

●　open options

初期値はMQOO_INQUIREです。適切な値を設定する方法には，次の2通りがあります。

open optionsを設定しないで，openメソッドも使用しないでください。

TP1/Message Queue Accessは，open optionsを自動的に調整し，必要に応じてオブジェクトの自動的なオープン，再オープン，およびクローズを実行します。この結果，不要な再オープン操作が実行される場合があります。これは，TP1/Message Queue AccessがopenForメソッドを使用するため，open optionsが次々に追加されるためです。

結果的にMQI命令が発生する任意のメソッドを使用する前に，open optionsを適切に設定してください。

これによって，不要な再オープン操作が実行されなくなります。潜在的な再オープン問題が発生しやすい場合は，必ず，open optionsを明示的に設定してください。

openメソッドを使用する場合は，最初にopen optionsが適切かどうか確認する必要があります。ただし，必ずしもopenメソッドを使用する必要はありません。TP1/Message Queue Accessは，引き続き1の場合と同じ動作を示しますが，2の状況では効率の低下にはなりません。

0は有効な値ではないため，オブジェクトをオープンしてみる前に，適切な値を設定する必要があります。setOpenOptions(open options)のあとにopen( )を使用するか，openFor(open options)を使用して実行します。

●　open status

オブジェクトがオープンである（TRUE）か，クローズされている（FALSE）かを示します。属性は読み取り専用です。初期値はFALSEです。

●　previous managed object

特定の順序ではなく，このクラスの直前のオブジェクトで，このオブジェクトと同じconnection referenceを持つものです。初期値は0です。

コンストラクタ

●　ImqObject( );

デフォルトのコンストラクタです。

●　ImqObject( const ImqObject & object );

コピーコンストラクタです。open statusはFALSEとなります。

メソッド

●　void operator = ( const ImqObject & object );

必要に応じてクローズを実行し，objectからインスタンスデータをコピーします。open statusはFALSEとなります。

●　ImqString alternateUserId( ) const ;

alternate user idのコピーを返します。

●　ImqBoolean setAlternateUserId( const char * id );

alternate user idを設定します。alternate user idを設定できるのは，open statusがFALSEである場合だけです。正常に実行された場合はTRUEを返します。

●　ImqBoolean close( );

open statusをFALSEに設定します。正常に実行された場合はTRUEを返します。

MQCLOSE命令に相当します。

●　MQLONG closeOptions( ) const ;

close optionsを返します。

●　void setCloseOptions( const MQLONG options );

close optionsを設定します。

●　ImqQueueManager * connectionReference( ) const ;

connection referenceを返します。

●　void setConnectionReference( ImqQueueManager & manager );

connection referenceを設定します。

●　void setConnectionReference( ImqQueueManager * manager = 0 );

connection referenceを設定します。

●　virtual ImqBoolean description( ImqString & description ) = 0 ;

descriptionのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_Q_MGR_DESCセレクタ，MQCA_Q_DESCセレクタ，およびMQCA_PROCESS_DESCセレクタに相当します。

●　ImqString description( );

考えられるエラーを指示しないで，descriptionのコピーを返します。

MQINQ命令の，MQCA_Q_MGR_DESCセレクタ，MQCA_Q_DESCセレクタ，およびMQCA_PROCESS_DESCセレクタに相当します。

●　ImqObject * nextManagedObject( ) const ;

next managed object を返します。

●　virtual ImqBoolean name( ImqString & name );

nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_Q_MGR_NAMEセレクタ，MQCA_Q_NAMEセレクタ，およびMQCA_PROCESS_NAMEセレクタに相当します。

●　ImqString name( );

考えられるエラーを指示しないで，nameのコピーを返します。

MQINQ命令の，MQCA_Q_MGR_NAMEセレクタ，MQCA_Q_NAMEセレクタ，およびMQCA_PROCESS_NAMEセレクタに相当します。

●　ImqBoolean setName( const char * name = 0 );

nameを設定します。nameを設定できるのは，open statusがFALSEである場合だけです。また，ImqQueueManagerの場合は，connection statusがFALSEである場合です。正常に実行された場合はTRUEを返します。

●　ImqBoolean open( );

open optionsとnameを使用して必要に応じてオブジェクトをオープンすることによって，open statusをTRUEに変更します。ImqQueueManager connection statusを必ずTRUEにする必要がある場合には，connection reference情報とImqQueueManager connectメソッドを使用します。open statusを返します。

MQOPEN命令に相当します。

●　ImqBoolean openFor( const MQLONG required-options = 0 );

required-optionsが組み込まれたopen optionsを指定した状態で，オブジェクトがオープンされるようにします。

required-optionsが0である場合

入力は必須であり，どの入力オプションでも有効です。

open optionsにMQOO_INPUT_AS_Q_DEF，MQOO_INPUT_SHARED，およびMQOO_INPUT_EXCLUSIVEが含まれているときは，open optionsはすでに有効であり，変更されません。

open optionsにMQOO_INPUT_AS_Q_DEF，MQOO_INPUT_SHARED，およびMQOO_INPUT_EXCLUSIVEのどれも含まれていないときは，open optionsにMQOO_INPUT_AS_Q_DEFが設定されます。

required-optionsが0でない場合

必要なオプションがopen optionsに追加されます。

open optionsがMQOO_INPUT_AS_Q_DEF，MQOO_INPUT_SHARED，およびMQOO_INPUT_EXCLUSIVEのどれかであるとき，それ以外の値はリセットされます。

open optionsのどれかが変更され，オブジェクトがすでにオープンになっている場合は，open optionsを調整するためにオブジェクトは一時的にクローズされ，再オープンされます。

正常に実行された場合はTRUEを返します。正常に実行されたということは，オブジェクトが適切なオプションでオープンになっていることを示します。

MQOPEN命令に相当します。

●　MQLONG openOptions( ) const ;

open optionsを返します。

●　ImqBoolean setOpenOptions( const MQLONG options );

open optionsを設定します。open optionsを設定できるのは，open statusがFALSEである場合だけです。正常に実行された場合はTRUEを返します。

●　ImqBoolean openStatus( ) const ;

open statusを返します。

●　ImqObject * previousManagedObject( ) const ;

previous managed objectを返します。

メソッド（protected）

●　MQHCONN connectionHandle( ) const ;

connection referenceと関連づけられたMQHCONNを返します。この値は，connection referenceがない場合，またはImqQueueManagerが接続されていない場合は0です。

●　ImqBoolean inquire( const MQLONG int-attr， MQLONG & value );

整数値を返します。この索引はMQIA_*値です。エラーがあった場合，値はMQIAV_UNDEFINEDに設定されます。

●　ImqBoolean inquire( const MQLONG char-attr， char * & buffer， const size_t length );

文字ストリングを返します。この索引はMQCA_*値です。

注意

上記のメソッドは，どれも単一の属性値しか返しません。複数の値についてスナップショットが必要な場合，値は一つのインスタンスについて互いに一貫していますが，MQCクライアント機能が提供するC++インタフェースではこの機能が用意されていないため，適切なパラメタを使ってMQINQ命令を使用する必要があります。

●　virtual void openInformationDisperse( );

MQOPEN命令の直後にMQOD構造体の可変部分から情報を分散させます。

●　virtual ImqBoolean openInformationPrepare( );

MQOPEN命令の直前にMQOD構造体の可変部分の情報を準備します。正常に実行された場合はTRUEを返します。

●　ImqBoolean set( const MQLONG int-attr， const MQLONG value );

TP1/Message Queue Access整数属性を設定します。

●　ImqBoolean set( const MQLONG char-attr， const char * buffer， const size_t required-length );

TP1/Message Queue Access文字属性を設定します。

●　void setNextManagedObject( const ImqObject * object = 0 );

next managed objectを設定します。

●　void setPreviousManagedObject( const ImqObject * object = 0 );

previous managed objectを設定します。

オブジェクト属性（protected）

●　MQHOBJ ohobj

TP1/Message Queue Accessオブジェクトハンドルです。open statusがTRUEである場合にだけ有効です。

●　MQOD omqod

組み込みMQOD構造体です。

その他の関連クラス

ImqBinary

ImqError

ImqQueue

ImqQueueManager

ImqString

理由コード

MQRC_ATTRIBUTE_LOCKED

MQRC_INCONSISTENT_OBJECT_STATE

MQRC_NO_CONNECTION_REFERENCE

MQRC_STORAGE_NOT_AVAILABLE

（MQCLOSEからの理由コード）

（MQCONNからの理由コード）

（MQINQからの理由コード）

（MQOPENからの理由コード）

理由コードの詳細については，「付録A　理由コード」，またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqProcessクラス（C++）

このクラスは，トリガモニタによってトリガできるアプリケーションプロセスの属性をカプセル化（オブジェクトタイプMQOT_PROCESS）します。

インクルードファイル

このクラスを使用するときは，imqpro.hppファイルをインクルードしてください。

オブジェクト属性

●　application id

アプリケーションプロセスのIDです。属性は読み取り専用です。

●　application type

アプリケーションプロセスのタイプです。属性は読み取り専用です。

●　environment data

プロセスの環境情報です。属性は読み取り専用です。

●　user data

プロセスのユーザデータです。属性は読み取り専用です。

コンストラクタ

●　ImqProcess( );

デフォルトのコンストラクタです。

●　ImqProcess( const ImqProcess & process );

コピーコンストラクタです。ImqObject open statusはFALSEです。

●　ImqProcess( const char * name );

ImqObject nameを設定します。

メソッド

●　void operator = ( const ImqProcess & process );

必要に応じてクローズを実行し，processからインスタンスデータをコピーします。ImqObject open statusはFALSEです。

●　ImqBoolean applicationId( ImqString & id );

application idのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_APPL_IDセレクタに相当します。

●　ImqString applicationId( );

考えられるエラーを指示しないで，application idを返します。

MQINQ命令の，MQCA_APPL_IDセレクタに相当します。

●　ImqBoolean applicationType( MQLONG & type );

application typeのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_APPL_TYPEセレクタに相当します。

●　MQLONG applicationType( );

考えられるエラーを指示しないで，application typeを返します。

MQINQ命令の，MQIA_APPL_TYPEセレクタに相当します。

●　ImqBoolean environmentData( ImqString & data );

environment dataのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_ENV_DATAセレクタに相当します。

●　ImqString environmentData( );

考えられるエラーを指示しないで，environment dataを返します。

MQINQ命令の，MQCA_ENV_DATAセレクタに相当します。

●　ImqBoolean userData( ImqString & data );

user dataのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_USER_DATAセレクタに相当します。

●　ImqString userData( );

考えられるエラーを指示しないで，user dataを返します。

MQINQ命令の，MQCA_USER_DATAセレクタに相当します。

その他の関連クラス

ImqObject

ImqPutMessageOptionsクラス（C++）

このクラスはMQPMO構造体をカプセル化します。

インクルードファイル

このクラスを使用するときは，imqpmo.hppファイルをインクルードしてください。

オブジェクト属性

●　context reference

メッセージにコンテキストを提供するImqQueueです。最初は，参照はありません。

MQPMO構造体の，Contextフィールドに相当します。

●　options

書き込みメッセージオプションです。初期値はMQPMO_NONEです。

MQPMO構造体の，Optionsフィールドに相当します。

●　record fields

メッセージが書き込まれるときにPUTメッセージレコードの組み込みを制御するフラグです。初期値はMQPMRF_NONEです。

ImqMessageTracker属性は，指定されたフィールドについてはImqQueueオブジェクトから取得されます。指定されないフィールドについては，ImqMessageTracker属性はImqMessageオブジェクトから取得されます。

MQPMO構造体の，PutMsgRecFieldsフィールドに相当します。

●　resolved queue manager name

書き込み中に判別された宛先キューマネジャの名前です。属性は読み取り専用です。初期値はヌル文字です。

MQPMO構造体の，ResolvedQMgrNameフィールドに相当します。

●　resolved queue name

書き込み中に判別された宛先キューの名前です。属性は読み取り専用です。初期値はヌル文字です。

MQPMO構造体の，ResolvedQNameフィールドに相当します。

●　sync-point participation

メッセージが同期点制御のときに書き込まれた場合はTRUEです。

コンストラクタ

●　ImqPutMessageOptions( );

デフォルトのコンストラクタです。

●　ImqPutMessageOptions( const ImqPutMessageOptions & pmo );

コピーコンストラクタです。

メソッド

●　void operator = ( const ImqPutMessageOptions & pmo );

インスタンスデータがpmoからコピーされ，既存のインスタンスデータと置き換えられます。

●　ImqQueue * contextReference( ) const ;

context referenceを返します。

●　void setContextReference( const ImqQueue & queue );

context referenceを設定します。

●　void setContextReference( const ImqQueue * queue = 0 );

context referenceを設定します。

●　MQLONG options( ) const ;

optionsを返します。

●　void setOptions( const MQLONG options );

sync-point participation値を組み込んで，optionsを設定します。

●　MQLONG recordFields() const ;

record fieldsを返します。

●　void setRecordFields( const MQLONG fields);

record fieldsを設定します。

●　ImqString resolvedQueueManagerName( ) const ;

resolved queue manager nameのコピーを返します。

●　ImqString resolvedQueueName( ) const ;

resolved queue nameのコピーを返します。

●　ImqBoolean syncPointParticipation( ) const ;

sync-point participation値を返します。optionsにMQPMO_SYNCPOINTが組み込まれている場合はTRUEを返します。

●　void setSyncPointParticipation( const ImqBoolean sync );

sync-point participation値を設定します。optionsのMQPMO_SYNCPOINTフラグだけを変更します。

オブジェクト属性（protected）

●　MQPMO omqpmo

MQPMO構造体です。

その他の関連クラス

ImqError

ImqMessage

ImqQueue

ImqString

理由コード

MQRC_STORAGE_NOT_AVAILABLE

理由コードの詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqQueueクラス（C++）

このクラスは，メッセージキューをカプセル化（オブジェクトタイプMQOT_Q）します。

インクルードファイル

このクラスを使用するときは，imqque.hppファイルをインクルードしてください。

オブジェクト属性

●　base queue name

別名の元となるキューの名前です。属性は読み取り専用です。

●　cluster name

クラスタの名前です。属性は読み取り専用です。

●　creation date

キュー作成データです。属性は読み取り専用です。

●　creation time

キュー作成時刻です。属性は読み取り専用です。

●　current depth

キュー上にあるメッセージの数です。属性は読み取り専用です。

●　default bind

デフォルトのバインドです。属性は読み取り専用です。

●　default input open option

デフォルトの入力用オープンオプションです。属性は読み取り専用です。

●　default persistence

デフォルトのメッセージ持続性です。属性は読み取り専用です。

●　default priority

デフォルトのメッセージ優先順位です。属性は読み取り専用です。

●　definition type

キューの定義タイプです。属性は読み取り専用です。

●　distribution list reference

このキューを含む，複数のキューにメッセージを配布するのに使用できるImqDistributionListへの任意選択の参照です。初期値はヌル文字です。

ImqQueueオブジェクトがオープンされると，任意でオープンしていて，ImqQueueオブジェクトが参照するImqDistributionListオブジェクトは，自動的にクローズされます。

●　distribution lists

配布リストをサポートするための転送キューの機能です。属性は読み取り専用です。

●　dynamic queue name

動的キュー名です。初期値は，すべてのパーソナルコンピュータ，およびUNIXプラットフォームについて"AMQ.*"です。

MQOD構造体の，DynamicQNameフィールドに相当します。

●　harden get backout

ロールバックカウントを固定するかどうかを判別します。属性は読み取り専用です。

●　inhibit get

読み取り操作が許されているかどうかを判別します。初期値はキューの定義によって異なります。別名またはローカルキューについてだけ有効です。

●　inhibit put

書き込み操作が許されているかどうかを判別します。初期値はキューの定義によって異なります。

●　initiation queue name

開始キューの名前です。属性は読み取り専用です。

●　maximum depth

キューで許されるメッセージの最大数です。属性は読み取り専用です。

●　maximum message length

キュー上のあらゆるメッセージの最大長です。関連づけられているキューマネジャによって管理されるどのキューの最大長の値より小さいことがあります。属性は読み取り専用です。

●　message delivery sequence

メッセージ優先順位が関係あるかどうかを判別します。属性は読み取り専用です。

●　next distributed queue

ImqQueueクラスの，ImqDistributionListクラスに設定されている順序ではなく，このクラスの次のオブジェクトで，このオブジェクトと同じdistribution list referenceを持つキューです。初期値は0です。

●　open input count

入力できるようにオープンになっているImqQueueオブジェクトの数です。属性は読み取り専用です。

●　open output count

出力できるようにオープンになっているImqQueueオブジェクトの数です。属性は読み取り専用です。

●　previous distributed queue

ImqQueueクラスの，ImqDistributionListクラスに設定されている順序ではなく，このクラスの直前のオブジェクトで，このオブジェクトと同じdistribution list referenceを持つキューです。初期値は0です。

●　process name

プロセス定義の名前です。属性は読み取り専用です。

●　queue manager name

キューが実際に入っているキューマネジャの名前です。キューが実際に入っているのは，多くの場合リモートキューマネジャです。ここに指定するキューマネジャを，接続を提供するキューマネジャを参照するImqObjectクラスの connection referenceメソッドと混同しないでください。初期値はヌル文字です。

MQOD構造体，MQOR構造体の，ObjectQMgrNameフィールドに相当します。

●　queue type

キュータイプです。属性は読み取り専用です。

●　remote queue manager name

リモートキューマネジャの名前です。属性は読み取り専用です。

●　remote queue name

リモートキューマネジャで認識されているとおりのリモートキューの名前です。属性は読み取り専用です。

●　resolved queue manager name

解決済みのキューマネジャの名前です。属性は読み取り専用です。

MQOD構造体の，ResolvedQMgrNameフィールドに相当します。

●　resolved queue name

解決済みのキューの名前です。属性は読み取り専用です。

MQOD構造体の，ResolvedQNameフィールドに相当します。

●　scope

キュー定義の有効範囲です。属性は読み取り専用です。

●　shareability

キューを共用できるかどうかを判別します。属性は読み取り専用です。

●　transmission queue name

転送キューの名前です。属性は読み取り専用です。

●　trigger control

トリガ制御です。初期値は，キュー定義によって異なります。ローカルキューについてだけ有効です。

●　trigger data

トリガデータです。初期値は，キュー定義によって異なります。ローカルキューについてだけ有効です。

●　trigger depth

トリガサイズです。初期値はキュー定義によって異なります。ローカルキューについてだけ有効です。

●　trigger message priority

トリガのしきい値メッセージ優先順位です。初期値はキュー定義によって異なります。ローカルキューについてだけ有効です。

●　trigger type

トリガタイプです。初期値はキュー定義によって異なります。ローカルキューについてだけ有効です。

●　usage

使用方法です。属性は読み取り専用です。

コンストラクタ

●　ImqQueue( );

デフォルトのコンストラクタです。

●　ImqQueue( const ImqQueue & queue );

コピーコンストラクタです。ImqObject open statusはFALSEです。

●　ImqQueue( const char * name );

ImqObject nameを設定します。

メソッド

●　void operator = ( const ImqQueue & queue );

必要に応じてクローズを実行し，queueからインスタンスデータをコピーします。ImqObject open statusはFALSEです。

●　ImqBoolean baseQueueName( ImqString & name );

base queue nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_BASE_Q_NAMEセレクタに相当します。

●　ImqString baseQueueName( );

考えられるエラーを指示しないで，base queue nameを返します。

MQINQ命令の，MQCA_BASE_Q_NAMEセレクタに相当します。

●　ImqBoolean clusterName( ImqString & name );

cluster nameのコピーを提供します。正常に終了した場合はTRUEを返します。

MQINQ命令の，MQCA_CLUSTER_NAMEセレクタに相当します。

●　ImqString clusterName();

考えられるエラーを指示しないで，cluster nameを返します。

MQINQ命令の，MQCA_CLUSTER_NAMEセレクタに相当します。

●　ImqBoolean creationDate( ImqString & date );

creation dateのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_CREATION_DATEセレクタに相当します。

●　ImqString creationDate( );

考えられるエラーを指示しないで，creation dateを返します。

MQINQ命令の，MQCA_CREATION_DATEセレクタに相当します。

●　ImqBoolean creationTime( ImqString & time );

creation timeのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_CREATION_TIMEセレクタに相当します。

●　ImqString creationTime( );

考えられるエラーを指示しないで，creation timeを返します。

MQINQ命令の，MQCA_CREATION_TIMEセレクタに相当します。

●　ImqBoolean currentDepth( MQLONG & depth );

current depthのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_CURRENT_Q_DEPTHセレクタに相当します。

●　MQLONG currentDepth( );

考えられるエラーを指示しないで，current depthを返します。

MQINQ命令の，MQIA_CURRENT_Q_DEPTHセレクタに相当します。

●　ImqBoolean defaultInputOpenOption( MQLONG & option );

default input open optionのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_DEF_INPUT_OPEN_OPTIONセレクタに相当します。

●　MQLONG defaultInputOpenOption( );

考えられるエラーを指示しないで，default input open optionを返します。

MQINQ命令の，MQIA_DEF_INPUT_OPEN_OPTIONセレクタに相当します。

●　ImqBoolean defaultPersistence( MQLONG & persistence );

default persistenceのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_DEF_PERSISTENCEセレクタに相当します。

●　MQLONG defaultPersistence( );

考えられるエラーを指示しないで，default persistenceを返します。

MQINQ命令の，MQIA_DEF_PERSISTENCEセレクタに相当します。

●　ImqBoolean defaultPriority( MQLONG & priority );

default priorityのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_DEF_PRIORITYセレクタに相当します。

●　MQLONG defaultPriority( );

考えられるエラーを指示しないで，default priorityを返します。

MQINQ命令の，MQIA_DEF_PRIORITYセレクタに相当します。

●　ImqBoolean defaultBind( MQLONG & bind );

default bindのコピーを提供します。正常に終了した場合はTRUEを返します。

MQINQ命令の，MQIA_DEF_BINDセレクタに相当します。

●　MQLONG defaultBind();

考えられるエラーを指示しないで，default bindを返します。

MQINQ命令の，MQIA_DEF_BINDセレクタに相当します。

●　ImqBoolean definitionType( MQLONG & type );

definition typeのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_DEFINITION_TYPEセレクタに相当します。

●　MQLONG definitionType( );

考えられるエラーを指示しないで，definition typeを返します。

MQINQ命令の，MQIA_DEFINITION_TYPEセレクタに相当します。

●　ImqDistributionList * distributionListReference() const ;

distribution list referenceを返します。

●　void setDistributionListReference( ImqDistributionList & list );

distribution list referenceを設定します。

●　void setDistributionListReference( ImqDistributionList * list = 0 );

distribution list referenceを設定します。

●　ImqBoolean distributionLists( MQLONG & support );

distribution lists値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_DIST_LISTSセレクタに相当します。

●　MQLONG distributionLists();

考えられるエラーを指示しないで，distribution lists値を返します。

MQINQ命令の，MQIA_DIST_LISTSセレクタに相当します。

●　ImqBoolean setDistributionLists( const MQLONG support );

distribution lists値を設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQIA_DIST_LISTSセレクタに相当します。

●　ImqString dynamicQueueName( ) const ;

dynamic queue nameのコピーを返します。

●　ImqBoolean setDynamicQueueName( const char * name );

dynamic queue nameを設定します。dynamic queue nameを設定できるのは，ImqObject open statusがFALSEである場合だけです。正常に実行された場合はTRUEを返します。

●　ImqBoolean get( ImqMessage & msg );

デフォルトの読み取りメッセージオプションを使用して，キューからメッセージを検索します。ImqObject open optionsにMQOO_INPUT_*値のどれかが必ず含まれるようにする必要がある場合は，ImqObject openForメソッドを使用します。検索の前に，msgオブジェクトに対してclearMessageメソッドが呼び出されます。正常に実行された場合はTRUEを返します。

MQGET命令に相当します。

注意

MQRC_TRUNCATED_MSG_FAILEDというImqObject reason codeは，警告ではなく，障害として扱われます。切り捨てられたメッセージが受け入れられる場合，ImqCache message lengthは切り捨てられた長さを反映します。

●　ImqBoolean get( ImqMessage & msg， ImqGetMessageOptions & options );

指定された読み取りメッセージオプションを使用して，キューからメッセージを検索します。ImqGetMessageOptions optionsに応じて，ImqObject open optionsに，MQOO_INPUT_*値のどれか，またはMQOO_BROWSE値のどちらかが必ず含まれるようにする必要がある場合はImqObject openForメソッドを使用します。検索の前に，msgオブジェクトに対してclearMessageメソッドが呼び出されます。正常に実行された場合はTRUEを返します。

MQGET命令に相当します。

注意

MQRC_TRUNCATED_MSG_FAILEDというImqObject reason codeは，警告ではなく，障害として扱われます。切り捨てられたメッセージが受け入れられる場合，ImqCache message lengthは切り捨てられた長さを反映します。

●　ImqBoolean get( ImqMessage & msg, ImqGetMessageOptions & options, const size_t buffer-size );

buffer sizeで指定を変更できること以外は，ImqBoolean get( ImqMessage & msg );メソッド，およびImqBoolean get( ImqMessage & msg， ImqGetMessageOptions & options );メソッドと同じです。msgオブジェクトがImqCacheのautomatic bufferを使用している場合は，メッセージを検索する前に，msgオブジェクトに対してresizeBufferメソッドが呼び出されます。このバッファは検索されたメッセージに合わせて大きくなりません。

MQGET命令に相当します。

●　ImqBoolean get( ImqMessage & msg, const size_t buffer-size );

デフォルトの読み取りメッセージオプションが使用されること以外は，ImqBoolean get( ImqMessage & msg, ImqGetMessageOptions & options, const size_t buffer-size );メソッドと同じです。

MQGET命令に相当します。

●　ImqBoolean hardenGetBackout( MQLONG & harden );

harden get backout値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_HARDEN_GET_BACKOUTセレクタに相当します。

●　MQLONG hardenGetBackout( );

考えられるエラーを指示しないで，harden get backout値を返します。

MQINQ命令の，MQIA_HARDEN_GET_BACKOUTセレクタに相当します。

●　ImqBoolean inhibitGet( MQLONG & inhibit );

inhibit get値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_INHIBIT_GETセレクタに相当します。

●　MQLONG inhibitGet( );

考えられるエラーを指示しないで，inhibit get値を返します。

MQINQ命令の，MQIA_INHIBIT_GETセレクタに相当します。

●　ImqBoolean setInhibitGet( const MQLONG inhibit );

inhibit get値を設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQIA_INHIBIT_GETセレクタに相当します。

●　ImqBoolean inhibitPut( MQLONG & inhibit );

inhibit put値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_INHIBIT_PUTセレクタに相当します。

●　MQLONG inhibitPut( );

考えられるエラーを指示しないで，inhibit put値を返します。

MQINQ命令の，MQIA_INHIBIT_PUTセレクタに相当します。

●　ImqBoolean setInhibitPut( const MQLONG inhibit );

inhibit put値を設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQIA_INHIBIT_PUTセレクタに相当します。

●　ImqBoolean initiationQueueName( ImqString & name );

initiation queue nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_INITIATION_Q_NAMEセレクタに相当します。

●　ImqString initiationQueueName( );

考えられるエラーを指示しないで，initiation queue nameを返します。

MQINQ命令の，MQCA_INITIATION_Q_NAMEセレクタに相当します。

●　ImqBoolean maximumDepth( MQLONG & depth );

maximum depthのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_MAX_Q_DEPTHセレクタに相当します。

●　MQLONG maximumDepth( );

考えられるエラーを指示しないで，maximum depthを返します。

MQINQ命令の，MQIA_MAX_Q_DEPTHセレクタに相当します。

●　ImqBoolean maximumMessageLength( MQLONG & length );

maximum message lengthのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_MAX_MSG_LENGTHセレクタに相当します。

●　MQLONG maximumMessageLength( );

考えられるエラーを指示しないで，maximum message lengthを返します。

MQINQ命令の，MQIA_MAX_MSG_LENGTHセレクタに相当します。

●　ImqBoolean messageDeliverySequence( MQLONG & sequence );

message delivery sequenceのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_MSG_DELIVERY_SEQUENCEセレクタに相当します。

●　MQLONG messageDeliverySequence( );

考えられるエラーを指示しないで，message delivery sequence値を返します。

MQINQ命令の，MQIA_MSG_DELIVERY_SEQUENCEセレクタに相当します。

●　ImqQueue * nextDistributedQueue() const ;

next distributed queueを返します。

●　ImqBoolean openInputCount( MQLONG & count );

open input countのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_OPEN_INPUT_COUNTセレクタに相当します。

●　MQLONG openInputCount( );

考えられるエラーを指示しないで，open input countを返します。

MQINQ命令の，MQIA_OPEN_INPUT_COUNTセレクタに相当します。

●　ImqBoolean openOutputCount( MQLONG & count );

open output countのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_OPEN_OUTPUT_COUNTセレクタに相当します。

●　MQLONG openOutputCount( );

考えられるエラーを指示しないで，open output countを返します。

MQINQ命令の，MQIA_OPEN_OUTPUT_COUNTセレクタに相当します。

●　ImqQueue * previousDistributedQueue() const ;

previous distributed queueを返します。

●　ImqBoolean processName( ImqString & name );

process nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_PROCESS_NAMEセレクタに相当します。

●　ImqString processName( );

考えられるエラーを指示しないで，process nameを返します。

MQINQ命令の，MQCA_PROCESS_NAMEセレクタに相当します。

●　ImqBoolean put( ImqMessage & msg );

デフォルトの書き込みメッセージオプションを使用して，キューにメッセージを配置します。ImqObject open optionsにMQOO_OUTPUT値が必ず含まれるようにする必要がある場合は，ImqObject openForメソッドを使用します。正常に実行された場合はTRUEを返します。

MQPUT命令に相当します。

●　ImqBoolean put( ImqMessage & msg， ImqPutMessageOptions & pmo );

指定されたpmoを使用して，キューにメッセージを配置します。次の条件が満たされた場合に，対応するMQOO_*_CONTEXT値が必ず含まれるようにする必要があれば，ImqObject openForメソッドを使用します。

ImqObject open optionsにMQOO_OUTPUTが含まれている場合

pmo optionsにMQPMO_PASS_IDENTITY_CONTEXT，MQPMO_PASS_ALL_CONTEXT，MQPMO_SET_IDENTITY_CONTEXT，またはMQPMO_SET_ALL_CONTEXTのどれかが含まれている場合

正常に実行された場合はTRUEを返します。

MQPUT命令に相当します。

注意

pmoにcontext referenceが一つ含まれている場合，コンテキストを提供する必要があれば，参照されるオブジェクトはオープンされます。

●　ImqString queueManagerName( ) const ;

queue manager nameを返します。

●　ImqBoolean setQueueManagerName( const char * name );

queue manager nameを設定します。queue manager nameを設定できるのは，ImqObject open statusがFALSEである場合だけです。正常に実行された場合はTRUEを返します。

●　ImqBoolean queueType( MQLONG & type );

queue type値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_Q_TYPEセレクタに相当します。

●　MQLONG queueType( );

考えられるエラーを指示しないで，queue typeを返します。

MQINQ命令の，MQIA_Q_TYPEセレクタに相当します。

●　ImqBoolean remoteQueueManagerName( ImqString & name );

remote queue manager nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_REMOTE_Q_MGR_NAMEセレクタに相当します。

●　ImqString remoteQueueManagerName( );

考えられるエラーを指示しないで，remote queue manager nameを返します。

MQINQ命令の，MQCA_REMOTE_Q_MGR_NAMEセレクタに相当します。

●　ImqBoolean remoteQueueName( ImqString & name );

remote queue nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_REMOTE_Q_NAMEセレクタに相当します。

●　ImqString remoteQueueName( );

考えられるエラーを指示しないで，remote queue nameを返します。

MQINQ命令の，MQCA_REMOTE_Q_NAMEセレクタに相当します。

●　ImqBoolean resolvedQueueManagerName( ImqString & name );

resolved queue manager nameのコピーを提供します。正常に終了した場合はTRUEを返します。

●　ImqString resolvedQueueManagerName() const ;

考えられるエラーを指示しないで，resolved queue nameを返します。

●　ImqBoolean resolvedQueueName( ImqString & name );

resolved queue nameのコピーを提供します。正常に終了した場合はTRUEを返します。

●　ImqString resolvedQueueName() const ;

考えられるエラーを指示しないで，resolved queue nameを返します。

●　ImqBoolean scope( MQLONG & scope );

scopeのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_SCOPEセレクタに相当します。

●　MQLONG scope( );

考えられるエラーを指示しないで，scopeを返します。

MQINQ命令の，MQIA_SCOPEセレクタに相当します。

●　ImqBoolean shareability( MQLONG & shareability );

shareability値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_SHAREABILITYセレクタに相当します。

●　MQLONG shareability( );

考えられるエラーを指示しないで，shareability値を返します。

MQINQ命令の，MQIA_SHAREABILITYセレクタに相当します。

●　ImqBoolean transmissionQueueName( ImqString & name );

transmission queue nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_XMIT_Q_NAMEセレクタに相当します。

●　ImqString transmissionQueueName( );

考えられるエラーを指示しないで，transmission queue nameを返します。

MQINQ命令の，MQCA_XMIT_Q_NAMEセレクタに相当します。

●　ImqBoolean triggerControl( MQLONG & control );

trigger control値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_TRIGGER_CONTROLセレクタに相当します。

●　MQLONG triggerControl( );

考えられるエラーを指示しないで，trigger control値を返します。

MQINQ命令の，MQIA_TRIGGER_CONTROLセレクタに相当します。

●　ImqBoolean setTriggerControl( const MQLONG control );

trigger control値を設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQIA_TRIGGER_CONTROLセレクタに相当します。

●　ImqBoolean triggerData( ImqString & data );

trigger dataのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_TRIGGER_DATAセレクタに相当します。

●　ImqString triggerData( );

考えられるエラーを指示しないで，trigger dataのコピーを返します。

MQINQ命令の，MQCA_TRIGGER_DATAセレクタに相当します。

●　ImqBoolean setTriggerData( const char * data );

trigger dataを設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQCA_TRIGGER_DATAセレクタに相当します。

●　ImqBoolean triggerDepth( MQLONG & depth );

trigger depthのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_TRIGGER_DEPTHセレクタに相当します。

●　MQLONG triggerDepth( );

考えられるエラーを指示しないで，trigger depthを返します。

MQINQ命令の，MQIA_TRIGGER_DEPTHセレクタに相当します。

●　ImqBoolean setTriggerDepth( const MQLONG depth );

trigger depthを設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQIA_TRIGGER_DEPTHセレクタに相当します。

●　ImqBoolean triggerMessagePriority( MQLONG & priority );

trigger message priorityのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_TRIGGER_MSG_PRIORITYセレクタに相当します。

●　MQLONG triggerMessagePriority( );

考えられるエラーを指示しないで，trigger message priorityを返します。

MQINQ命令の，MQIA_TRIGGER_MSG_PRIORITYセレクタに相当します。

●　ImqBoolean setTriggerMessagePriority( const MQLONG priority );

trigger message priorityを設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQIA_TRIGGER_MSG_PRIORITYセレクタに相当します。

●　ImqBoolean triggerType( MQLONG & type );

trigger typeのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_TRIGGER_TYPEセレクタに相当します。

●　MQLONG triggerType( );

考えられるエラーを指示しないで，trigger typeを返します。

MQINQ命令の，MQIA_TRIGGER_TYPEセレクタに相当します。

●　ImqBoolean setTriggerType( const MQLONG type );

trigger typeを設定します。正常に実行された場合はTRUEを返します。

MQSET命令の，MQIA_TRIGGER_TYPEセレクタに相当します。

●　ImqBoolean usage( MQLONG & usage );

usage値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_USAGEセレクタに相当します。

●　MQLONG usage( );

考えられるエラーを指示しないで，usage値を返します。

MQINQ命令の，MQIA_USAGEセレクタに相当します。

メソッド（protected）

●　void setNextDistributedQueue( ImqQueue * queue = 0 );

next distributed queueを設定します。

●　void setPreviousDistributedQueue( ImqQueue * queue = 0 );

previous distributed queueを設定します。

その他の関連クラス

ImqCache

ImqDistributionList

ImqGetMessageOptions

ImqMessage

ImqMessageTracker

ImqObject

ImqPutMessageOptions

ImqQueueManager

ImqString

理由コード

MQRC_CONTEXT_OBJECT_NOT_VALID

MQRC_CONTEXT_OPEN_ERROR

MQRC_CURSOR_NOT_VALID

MQRC_NO_BUFFER

MQRC_REOPEN_EXCL_INPUT_ERROR

MQRC_REOPEN_INQUIRE_ERROR

MQRC_REOPEN_SAVED_CONTEXT_ERR

MQRC_REOPEN_TEMPORARY_Q_ERROR

（MQGETからの理由コード）

（MQPUTからの理由コード）

理由コードの詳細については，「付録A　理由コード」，またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqQueueManagerクラス（C++）

このクラスは，キューマネジャをカプセル化（オブジェクトMQOT_Q_MGR）します。

インクルードファイル

このクラスを使用するときは，imqmgr.hppファイルをインクルードしてください。

オブジェクト属性

●　authority event

許可事象を制御します。属性は読み取り専用です。

●　begin options

beginメソッドに適用されるオプションです。初期値はMQBO_NONEです。

MQBO構造体の，Optionsフィールドに相当します。

●　character set

コード化文字セット識別子です。属性は読み取り専用です。

●　command input queue name

システムコマンド入力キュー名です。属性は読み取り専用です。

●　command level

キューマネジャによってサポートされているコマンドレベルです。属性は読み取り専用です。

●　connect options

connectメソッドに適用されるオプションです。初期値はMQCNO_NONEです。

●　connection status

TRUEかFALSEかをメソッドに返します。キューマネジャに接続されている場合は，TRUEです。属性は読み取り専用です。

●　dead-letter queue name

送達不能キューの名前です。属性は読み取り専用です。

●　default transmission queue name

デフォルトの転送キュー名です。属性は読み取り専用です。

●　distribution lists

配布リストをサポートするためのキューマネジャの機能です。属性は読み取り専用です。

●　first managed object

ImqObjectクラスのconnection referenceメソッドにアドレス指定される複数のオブジェクトのうち，先頭になるオブジェクトです。初期値は0です。

●　inhibit event

禁止事象を制御します。属性は読み取り専用です。

●　local event

ローカル事象を制御します。属性は読み取り専用です。

●　maximum handles

ハンドルの最大数です。属性は読み取り専用です。

●　maximum message length

キューマネジャによって管理される任意のキュー上にある任意のメッセージの最大長です。属性は読み取り専用です。

●　maximum priority

最高のメッセージ優先順位です。属性は読み取り専用です。

●　maximum uncommitted messages

一つのトランザクション内のコミットされていないメッセージの最大数です。属性は読み取り専用です。

●　performance event

パフォーマンス事象を制御します。属性は読み取り専用です。

●　platform

キューマネジャが収容されているプラットフォームです。属性は読み取り専用です。

●　remote event

リモート事象を制御します。属性は読み取り専用です。

●　repository name

リポジトリの名前です。属性は読み取り専用です。

●　start-stop event

調歩式事象を制御します。属性は読み取り専用です。

●　sync-point availability

同期点参加の可用性です。属性は読み取り専用です。

●　trigger interval

トリガ間隔です。属性は読み取り専用です。

コンストラクタ

●　ImqQueueManager( );

デフォルトのコンストラクタです。

●　ImqQueueManager( const ImqQueueManager & manager );

コピーコンストラクタです。connection statusはFALSEです。

●　ImqQueueManager( const char * name );

ImqObject nameをnameに設定します。

デストラクタ

ImqQueueManagerオブジェクトは，破棄されると自動的に切断されます。

メソッド

●　void operator = ( const ImqQueueManager & mgr );

必要に応じて切断し，次に，mgrからインスタンスデータをコピーします。connection statusはFALSEです。

●　ImqBoolean backout( );

コミットされていない変更内容をロールバックします。正常に実行された場合はTRUEを返します。

MQBACK命令に相当します。

●　ImqBoolean begin( );

一つのトランザクションを始めます。begin optionsは，このメソッドの動作に影響します。正常に実行された場合はTRUEを返します。

MQBEGIN命令に相当します。

●　MQLONG beginOptions( ) const ;

begin optionsを返します。

●　void setBeginOptions( const MQLONG options = MQBO_NONE );

begin optionsを設定します。

●　ImqBoolean characterSet( MQLONG & ccsid );

character setのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_CODED_CHAR_SET_IDセレクタに相当します。

●　MQLONG characterSet( );

考えられるエラーを指示しないで，character setのコピーを返します。

MQINQ命令の，MQIA_CODED_CHAR_SET_IDセレクタに相当します。

●　ImqBoolean commit( );

コミットされていない変更内容をコミットします。正常に実行された場合はTRUEを返します。

MQCMIT命令に相当します。

●　ImqBoolean connect( );

与えられたImqObject nameを持つキューマネジャへ接続します。デフォルトはローカルキューマネジャです。特定のキューマネジャに接続したい場合は，接続前にImqObject setNameメソッドを使用してください。connect optionsは，このメソッドの動作に影響します。connection statusをTRUEに設定します。正常に実行された場合はTRUEを返します。

MQCONN命令に相当します。

注意

同一のキューマネジャに複数のImqQueueManagerオブジェクトを接続できますが，各接続は，別個のスレッドから実行する必要があります。

●　ImqBoolean connectionStatus( ) const ;

connection statusを返します。

●　ImqBoolean deadLetterQueueName( ImqString & name );

dead-letter queue nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_DEAD_LETTER_Q_NAMEセレクタに相当します。

●　ImqString deadLetterQueueName( );

考えられるエラーを指示しないで，dead-letter queue nameのコピーを返します。

MQINQ命令の，MQCA_DEAD_LETTER_Q_NAMEセレクタに相当します。

●　ImqBoolean defaultTransmissionQueueName( ImqString & name );

default transmission queue nameのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQCA_DEF_XMIT_Q_NAMEセレクタに相当します。

●　ImqString defaultTransmissionQueueName( );

考えられるエラーを指示しないで，default transmission queue nameを返します。

MQINQ命令の，MQCA_DEF_XMIT_Q_NAMEセレクタに相当します。

●　ImqBoolean disconnect( );

キューマネジャから切断し，connection statusをFALSEに設定します。このオブジェクトと関連づけられているImqProcessオブジェクト，およびImqQueueオブジェクトはすべて，プログラムの切断前にクローズされ，それぞれのconnection referenceは切断されます。同一のキューマネジャに複数のImqQueueManagerオブジェクトが接続されている場合，最後に切断されるオブジェクトが物理的な切断を実行します。それ以外のオブジェクトは論理的な切断を実行します。物理的な切断時には，コミットされていない変更内容はコミットされます。正常に実行された場合はTRUEを返します。

MQDISC命令に相当します。

●　ImqBoolean distributionLists( MQLONG & support );

distribution lists値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_DIST_LISTSセレクタに相当します。

●　MQLONG distributionLists();

考えられるエラーを指示しないで，distribution lists値を返します。

MQINQ命令の，MQIA_DIST_LISTSセレクタに相当します。

●　ImqObject * firstManagedObject( ) const ;

first managed objectを返します。

●　ImqBoolean maximumHandles( MQLONG & number );

maximum handlesのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_MAX_HANDLESセレクタに相当します。

●　MQLONG maximumHandles( );

考えられるエラーを指示しないで，maximum handlesを返します。

MQINQ命令の，MQIA_MAX_HANDLESセレクタに相当します。

●　ImqBoolean maximumMessageLength( MQLONG & length );

maximum message lengthのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_MAX_MSG_LENGTHセレクタに相当します。

●　MQLONG maximumMessageLength( );

考えられるエラーを指示しないで，maximum message lengthを返します。

MQINQ命令の，MQIA_MAX_MSG_LENGTHセレクタに相当します。

●　ImqBoolean maximumPriority( MQLONG & priority );

maximum priorityのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_MAX_PRIORITYセレクタに相当します。

●　MQLONG maximumPriority( );

考えられるエラーを指示しないで，maximum priorityのコピーを返します。

MQINQ命令の，MQIA_MAX_PRIORITYセレクタに相当します。

●　ImqBoolean maximumUncommittedMessages( MQLONG & number );

maximum uncommitted messagesのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_MAX_UNCOMMITTED_MSGSセレクタに相当します。

●　MQLONG maximumUncommittedMessages( );

考えられるエラーを指示しないで，maximum uncommitted messagesを返します。

MQINQ命令の，MQIA_MAX_UNCOMMITTED_MSGSセレクタに相当します。

●　ImqBoolean platform( MQLONG & platform );

platformのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_PLATFORMセレクタに相当します。

●　MQLONG platform( );

考えられるエラーを指示しないで，platformを返します。

MQINQ命令の，MQIA_PLATFORMセレクタに相当します。

●　ImqBoolean repositoryName( ImqString & name );

repository nameのコピーを提供します。正常に終了した場合はTRUEを返します。

MQINQ命令の，MQCA_REPOSITORY_NAMEセレクタに相当します。

●　ImqString repositoryName();

考えられるエラーを指示しないで，repository nameを返します。

MQINQ命令の，MQCA_REPOSITORY_NAMEセレクタに相当します。

●　ImqBoolean syncPointAvailability( MQLONG & sync );

sync-point availability値のコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_SYNCPOINTセレクタに相当します。

●　MQLONG syncPointAvailability();

考えられるエラーを指示しないで，sync-point availability値のコピーを返します。

MQINQ命令の，MQIA_SYNCPOINTセレクタに相当します。

●　ImqBoolean triggerInterval( MQLONG & interval );

trigger intervalのコピーを提供します。正常に実行された場合はTRUEを返します。

MQINQ命令の，MQIA_TRIGGER_INTERVALセレクタに相当します。

●　MQLONG triggerInterval( );

考えられるエラーを指示しないで，trigger intervalを返します。

MQINQ命令の，MQIA_TRIGGER_INTERVALセレクタに相当します。

メソッド（protected）

●　void setFirstManagedObject( const ImqObject * object = 0 );

first managed objectを設定します。

オブジェクト属性（protected）

●　MQHCONN ohconn

TP1/Message Queue Access接続ハンドルです。connection statusがTRUEである場合だけ意味を持ちます。

その他の関連クラス

ImqObject

理由コード

（MQBACKからの理由コード）

（MQBEGINからの理由コード）

（MQCMITからの理由コード）

（MQDISCからの理由コード）

理由コードの詳細については，「付録A　理由コード」，またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqReferenceHeaderクラス（C++）

このクラスは，MQRMH構造体の特定の機能をカプセル化します。

インクルードファイル

このクラスを使用するときは，imqrfh.hppファイルをインクルードしてください。

オブジェクト属性

●　destination environment

宛先の環境です。初期値はヌル文字です。

●　destination name

データ宛先の名前です。初期値はヌル文字です。

●　instance id

長さがMQ_OBJECT_INSTANCE_ID_LENGTHの2進値（MQBYTE24）です。初期値はMQOII_NONEです。

MQRMH構造体の，ObjectInstanceIdフィールドに相当します。

●　logical length

このヘッダに続くメッセージデータの論理上の長さ，つまり使用する予定の長さです。初期値は0です。

MQRMH構造体の，DataLogicalLengthフィールドに相当します。

●　logical offset

後続のメッセージデータの論理オフセットです。最終宛先で，全体としてデータのコンテキストで解釈されます。初期値は0です。

MQRMH構造体の，DataLogicalOffsetフィールドに相当します。

●　logical offset2

logical offsetへの高位拡張です。初期値は0です。

MQRMH構造体の，DataLogicalOffset2フィールドに相当します。

●　reference type

参照タイプです。初期値はヌル文字です。

MQRMH構造体の，ObjectTypeフィールドに相当します。

●　source environment

データ送信側の環境です。初期値はヌル文字です。

●　source name

データ送信側の名前です。初期値はヌル文字です。

コンストラクタ

●　ImqReferenceHeader();

デフォルトのコンストラクタです。

●　ImqReferenceHeader( const ImqReferenceHeader & header );

コピーコンストラクタです。

メソッド

●　virtual ImqBoolean copyOut( ImqMessage & msg );

多重定義されたImqItemメソッドです。MQRMH構造体をメッセージバッファの始めに挿入して，既存のメッセージデータを後ろにずらします。msg formatをMQFMT_REF_MSG_HEADERに設定します。

詳細については，「ImqHeaderクラス（C++）」を参照してください。

●　virtual ImqBoolean pasteIn( ImqMessage & msg );

多重定義されたImqItemメソッドです。メッセージバッファからMQRMH構造体を読み取ります。

正常に実行するためには，ImqMessage formatがMQFMT_REF_MSG_HEADERでなければなりません。

詳細については，「ImqHeaderクラス（C++）」を参照してください。

●　void operator = ( const ImqReferenceHeader & header );

インスタンスデータがヘッダファイルからコピーされ，既存のインスタンスデータと置き換えられます。

●　ImqString destinationEnvironment() const;

destination environmentのコピーを返します。

●　void setDestinationEnvironment( const char * environment = 0 );

destination environmentを設定します。

●　ImqString destinationName() const ;

destination nameのコピーを返します。

●　void setDestinationName( const char * name = 0 );

destination nameを設定します。

●　ImqBinary instanceId() const ;

instance idのコピーを返します。

●　ImqBoolean setInstanceId( const ImqBinary & id );

instance idを設定します。tokenのdata lengthは，0またはMQ_OBJECT_INSTANCE_ID_LENGTHのどちらかでなければなりません。正常に実行された場合はTRUEを返します。

●　void setInstanceId( const MQBYTE24 id = 0 );

instance idを設定します。idが0の場合は，MQOII_NONEを指定するのと同じです。idが0でない場合は，MQ_OBJECT_INSTANCE_ID_LENGTHバイトの2進データをアドレス指定する必要があります。

MQOII_NONEなどの事前定義値を使用する場合は，確実に信号機能が一致するようにキャストを作成する必要があります。

キャストは，例えば(MQBYTE *)MQOII_NONEのように作成します。

●　MQLONG logicalLength() const ;

logical lengthを返します。

●　void setLogicalLength( const MQLONG length );

logical lengthを設定します。

●　MQLONG logicalOffset() const ;

logical offsetを返します。

●　void setLogicalOffset( const MQLONG offset );

logical offsetを設定します。

●　MQLONG logicalOffset2() const;

logical offset2を返します。

●　void setLogicalOffset2( const MQLONG offset );

logical offset2を設定します。

●　ImqString referenceType() const ;

reference typeのコピーを返します。

●　void setReferenceType( const char * name = 0 );

reference typeを設定します。

●　ImqString sourceEnvironment() const ;

source environmentのコピーを返します。

●　void setSourceEnvironment( const char * environment = 0 );

source environmentを設定します。

●　ImqString sourceName() const ;

source nameのコピーを返します。

●　void setSourceName( const char * name = 0 );

source nameを設定します。

オブジェクト属性（protected）

●　MQRMH omqrmh

MQRMH構造体です。

その他の関連クラス

ImqBinary

ImqHeader

ImqItem

ImqMessage

ImqString

ImqStringクラス（C++）

このクラスは，ヌル文字で終了するストリングに文字ストリング記憶域と操作を提供します。パラメタがchar*を呼び出す状態では，多くの場合，char*の代わりにImqStringを使用できます。

インクルードファイル

このクラスを使用するときは，imqstr.hppファイルをインクルードしてください。

オブジェクト属性

●　characters

ヌル文字の前にあるstorage内の文字です。

●　length

characters内のバイト数です。storageがない場合，lengthは0です。初期値は0です。

●　storage

任意のサイズの，バイトアレイです。charactersの終わりを検出できるように，charactersの後ろのstorageには，必ずヌル文字が含まれなければなりません。メソッドは，この状態が必ず保持されるようにしますが，アレイにバイトを直接設定するときには，必ず，変更の後ろにヌル文字があるように注意する必要があります。最初は，storageはありません。

コンストラクタ

●　ImqString( );

デフォルトのコンストラクタです。

●　ImqString( const ImqString & string);

コピーコンストラクタです。

●　ImqString( const char c );

charactersはcから構成されます。

●　ImqString( const char * text );

charactersはtextからコピーされます。

●　ImqString( const void * buffer， const size_t length );

bufferからlength分のバイトをコピーし，それらをcharactersに割り当てます。コピーされたすべてのヌル文字は，ピリオド（.）に置き換えます。ヌル文字以外の印刷不能または表示不能文字はそのままになります。

メソッド

●　static ImqBoolean copy( char * destination-buffer， const size_t length， const char* source-buffer， const char pad = 0 );

最大length分のバイトをsource-bufferからdestination-bufferへコピーします。

source-buffer内の文字数が不十分な場合，destination-buffer内の残りのスペースにpad文字が埋められます。source-bufferは0でもかまいません。lengthも0の場合は，destination-bufferはヌルでかまいません。正常に実行された場合はTRUEを返します。

●　virtual ImqBoolean copyOut( ImqMessage & msg );

多重定義されたImqItemメソッドです。charactersをメッセージバッファへコピーし，既存の内容と置き換えます。msgformatをMQFMT_STRINGに設定します。

詳細については，親クラスのメソッドの説明を参照してください。

●　virtual ImqBoolean pasteIn( ImqMessage & msg );

多重定義されたImqItemメソッドです。メッセージバッファから残りのデータを転送することによってcharactersを設定し，既存のcharactersを置き換えます。

正常に実行されるためには，次の指定をしなければなりません。

msgオブジェクトのencodingがMQENC_NATIVEでなければなりません。メッセージは，MQGMO_CONVERTをMQENC_NATIVEに設定して検索してください。

ImqMessage formatがMQFMT_STRINGでなければなりません。

詳細については，親クラスのメソッドの説明を参照してください。

●　char & operator [ ] ( const size_t offset ) const ;

storage内のオフセット（offset）にある文字を参照します。必ず関係のあるバイトが存在し，アドレス可能であるようにしてください。

●　ImqString operator ( ) ( const size_t offset， const size_t length = 1 ) const ;

offsetから始まるcharactersからバイトをコピーすることによってサブストリングを返します。

lengthが0の場合は，charactersの残りが返されます。offsetとlengthを組み合わせてもcharacters内で参照されない場合には，空のImqStringが返されます。

●　void operator = ( const ImqString & string );

インスタンスデータがstringからコピーされ，既存のインスタンスデータと置き換えられます。

●　ImqString operator + ( const char c ) const ;

cをcharactersに付加した結果を返します。

●　ImqString operator + ( const char * text ) const ;

textをcharactersに付加した結果を返します。位置を逆に指定できます。例えば，次のどちらの形式で指定してもかまいません。

strOne + "string two" ;
"string one" + strTwo;

●　ImqString operator + ( const ImqString & string1 ) const ;

string1をcharactersに付加した結果を返します。

●　ImqString operator + ( const double number ) const ;

テキストに変換後numberをcharactersに付加した結果を返します。

●　ImqString operator + ( const long number ) const ;

テキストに変換後numberをcharactersに付加した結果を返します。

●　void operator += ( const char c );

cはcharactersに付加されます。

●　void operator += ( const char * text );

textをcharactersに付加します。

●　void operator += ( const ImqString & string );

stringをcharactersに付加します。

●　void operator += ( const double number );

テキストに変換後numberをcharactersに付加します。

●　void operator += ( const long number );

テキストに変換後numberをcharactersに付加します。

●　void operator char * ( ) const ;

storage内の最初のバイトのアドレスを返します。この値は0でもかまいません。

●　ImqBoolean operator < ( const ImqString & string ) const ; ，ImqBoolean operator > ( const ImqString & string ) const ; ，ImqBoolean operator <= ( const ImqString & string ) const ; ，ImqBoolean operator >= ( const ImqString & string ) const ; ，ImqBoolean operator == ( const ImqString & string ) const ; ，またはImqBoolean operator != ( const ImqString & string ) const ;

compareメソッドを使用して，charactersをstringの内容と比較します。TRUEまたはFALSEのどれかを返します。

●　short compare( const ImqString & string ) const ;

charactersをstringの内容と比較します。結果は，両方のcharactersが等しい場合は0，前者の方が小さい場合は負，大きい場合は正です。比較には，大文字小文字の区別があります。

空のImqStringは，空でないImqStringより小さいと見なされます。

●　ImqBoolean copyOut( char * buffer， const size_t length， const char pad = 0 );

最大length分のバイトをcharactersからbufferへコピーします。buffer内のcharactersの数が不十分な場合，buffer内の残りのスペースにpad文字が埋められます。lengthも0であれば，bufferは0でもかまいません。正常に実行された場合はTRUEを返します。

●　size_t copyOut( long & number ) const ;

テキストから変換後，charactersからnumberを設定します。変換にかかわった文字数を返します。

これが0の場合，変換されていないので，numberは設定されません。変換文字シーケンスは，次の形式で始まっている必要があります。

ストリングテキストから整数への変換の形式は次のとおりです。

　　<blank(s)>
　　<+|->
　　digit(s)

●　size_t copyOut( ImqString & token， const char c = ' ' ) const ;

charactersにcと異なる一つまたは複数の文字が含まれている場合，tokenは，そのような文字の最初の連続するシーケンスとして識別されます。この場合，tokenはそのシーケンスに設定され，返された値は先行文字cの数とシーケンス中のバイトの数との合計です。それ以外の場合は，0が返され，tokenは設定されません。

●　size_t cutOut( long & number );

copyメソッドの場合と同様にnumberを設定しますが，さらに，戻り値によって指示されたバイト数をcharactersから除去します。例えば，次に示すストリングは，cutOut( number )を3回使用することによって，三つの数値に分割できます。

ストリングテキストから整数を検索する例を次に示します。

strNumbers = "-1 0　　 +55 ";
　while ( strNumbers.cutOut( number ) );
　number becomes -1, then 0, then 55
　leaving strNumbers == " "

●　size_t cutOut( ImqString & token, const char c = ' ' );

copyOutメソッドの場合と同様にtokenを設定し，charactersからstrToken分の文字を除去し，さらに，token分の文字の前にある任意の文字cも除去します。cが空白でない場合，token分の文字の直後に続く文字cも除去されます。除去された文字の数を返します。例えば，次のストリングは，cutOut( token )を3回使用することによって，三つのtokenに分割できます。

ストリングテキストからtokenを検索する例を次に示します。

　strText = "　Program Version 1.1　";
　 while ( strText.cutOut( token ) );
　// token becomes "Program", then "Version",
　// then "1.1" leaving strText == "　"

ストリング内のDOSパス名を解析する方法について，次の例で示します。

　strPath = "C:¥¥WINNT¥¥WINNT.BMP"
　strPath.cutOut( strDrive, ':' );
　strPath.stripLeading( ':' );
　while ( strPath.cutOut( strFile, '¥¥' ) );
　// strDrive becomes "C".
　// strFile becomes "WINNT",
　// then "WINNT.BMP" leaving strPath empty.

●　ImqBoolean find( const ImqString & string );

characters内のどこかにstringの完全一致がないか探索します。一致が見つからない場合は，FALSEを返します。一致が見つかった場合は，TRUEを返します。stringが空の場合は，TRUEを返します。

●　ImqBoolean find( const ImqString & string， size_t & offset );

オフセットoffsetから先のcharacters内のどこかにstringの完全一致がないか探索します。

stringが空の場合は，offsetを更新しないでTRUEを返します。一致が見つからない場合はFALSEを返します。offsetの値が増やされている場合もあるので注意してください。一致が見つかった場合は，TRUEを返し，offsetをcharacters内のstringのオフセットに更新します。

●　size_t length( ) const ;

lengthを返します。

●　ImqBoolean pasteIn( const double number， const char * format = "%f" );

テキストへの変換後，numberがcharactersに付加されます。正常に実行された場合はTRUEを返します。

浮動小数点変換を形式設定するために，指定formatが使用されます。これを指定する場合は，printf，および浮動小数点数（例えば，"%.3f"）とともに使用するのに適したものでなければなりません。

●　ImqBoolean pasteIn( const long number );

テキストへの変換後，numberがcharactersに付加されます。正常に実行された場合はTRUEを返します。

●　ImqBoolean pasteIn( const void * buffer， const size_t length );

bufferからcharactersへlength分のバイトを付加し，最後のヌル文字を追加します。コピーされたあらゆるヌル文字に対して置き換えられます。置き換えられる文字はピリオド（.）です。コピーされたその他の印刷不能または表示不能文字に特別な考慮はされません。正常に実行された場合はTRUEを返します。

●　ImqBoolean set( const char * buffer， const size_t length );

固定長文字フィールドからのcharactersを設定します。これには，ヌル文字が含まれている場合もありますが，含まれていない場合もあります。必要に応じて固定長フィールドからの文字にヌル文字が付加されます。正常に実行された場合はTRUEを返します。

●　size_t storage( ) const ;

storage内のバイト数を返します。

●　ImqBoolean setStorage( const size_t length );

storageを（再度）割り振り，現在割り振られているバイトの数を返します。ヌル文字を含め，元のcharactersが収まるだけの余裕がある場合には，それらは保存されますが，追加の記憶域は初期化されません。

正常に実行された場合はTRUEを返します。

●　size_t stripLeading( const char c = ' ' );

charactersから先行文字cを除去し，除去された数を返します。

●　size_t stripTrailing( const char c = ' ' );

charactersから文字cを除去し，除去された数を返します。

●　ImqString upperCase( ) const ;

charactersの大文字のコピーを返します。

メソッド（protected）

●　ImqBoolean assign( const ImqString & string );

同等のoperator=メソッドに等しい非仮想のメソッドです。

正常に実行された場合はTRUEを返します。

その他の関連クラス

ImqItem

ImqMessage

注意

ほとんどのコンパイラはstrOne + "string two"を受け入れますが，Visual C++ではstrOne + (char *)"string two"が必要です。

理由コード

MQRC_DATA_TRUNCATED

MQRC_NULL_POINTER

MQRC_STORAGE_NOT_AVAILABLE

理由コードの詳細については，「付録A　理由コード」，またはマニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ImqTriggerクラス（C++）

このクラスは，MQTM構造体をカプセル化します。このクラスのオブジェクトは，通常，トリガモニタプログラムが使用します。このプログラムの機能は特定のメッセージを待ち，メッセージに加工を加えることによって，メッセージがほかのTP1/Message Queue Accessアプリケーションを待っているとき，これらのアプリケーションの起動を確実にすることです。

インクルードファイル

このクラスを使用するとき，imqtrg.hppファイルをインクルードしてください。

オブジェクト属性

●　application id

該当するメッセージを送信したアプリケーションのIDです。初期値はヌル文字です。

MQTM構造体の，ApplIdフィールドに相当します。

●　application type

該当するメッセージを送信したアプリケーションのタイプです。初期値は0です。

MQTM構造体の，ApplTypeフィールドに相当します。

●　environment data

プロセスの環境データです。初期値はヌル文字です。

MQTM構造体の，EnvDataフィールドに相当します。

●　process name

プロセス名です。初期値はヌル文字です。

MQTM構造体の，ProcessNameフィールドに相当します。

●　queue name

開始されるキューの名前です。初期値はヌル文字です。

MQTM構造体の，QNameフィールドに相当します。

●　trigger data

プロセスのトリガデータです。初期値はヌル文字です。

MQTM構造体の，TriggerDataフィールドに相当します。

●　user data

プロセスのユーザデータです。初期値はヌル文字です。

MQTM構造体の，UserDataフィールドに相当します。

コンストラクタ

●　ImqTrigger( );

デフォルトのコンストラクタです。

●　ImqTrigger( const ImqTrigger & trigger );

コピーコンストラクタです。

メソッド

●　virtual ImqBoolean copyOut( ImqMessage & msg );

多重定義されたImqItemメソッドです。MQTM構造体をメッセージバッファに書き込み，既存の内容と置き換えます。msg formatをMQFMT_TRIGGERに設定します。

詳細については，「ImqItemクラス（C++）」の「メソッド」を参照してください。

●　virtual ImqBoolean pasteIn( ImqMessage & msg );

多重定義されたImqItemメソッドです。メッセージバッファからMQTM構造体を読み取ります。

正常に実行されるためには，ImqMessage formatがMQFMT_TRIGGERでなければなりません。

詳細については，「ImqItemクラス（C++）」の「メソッド」を参照してください。

●　void operator =( const ImqTrigger & trigger );

インスタンスデータがtriggerからコピーされ，既存のインスタンスデータと置き換えられます。

●　ImqString applicationId( ) const ;

application idのコピーを返します。

●　void setApplicationId( const char * id );

application idを設定します。

●　MQLONG applicationType( ) const ;

application typeを返します。

●　void setApplicationType( const MQLONG type );

application typeを設定します。

●　ImqBoolean copyOut( MQTMC2 * ptmc2 );

このクラスは，開始キューで受信されたMQTM構造体をカプセル化します。このメソッドは，呼び出し側によって提供された同等なMQTMC2構造体を設定し，QMgrNameフィールドをすべて空白に設定します。なお， QMgrNameフィールドはMQTM構造体には存在しません。

MQTMC2構造体は，従来，トリガモニタによって開始されたアプリケーションに対するパラメタとして使用されています。正常に実行された場合はTRUEを返します。

●　ImqString environmentData( ) const ;

environment dataのコピーを返します。

●　void setEnvironmentData( const char * data );

environment dataを設定します。

●　ImqString processName( ) const ;

process nameのコピーを返します。

●　void setProcessName( const char * name );

process nameを設定します。

●　ImqString queueName( ) const ;

queue nameのコピーを返します。

●　void setQueueName( const char * name );

queue nameを設定します。

●　ImqString triggerData( ) const ;

trigger dataのコピーを返します。

●　void setTriggerData( const char * data );

trigger dataを設定します。

●　ImqString userData( ) const ;

user dataのコピーを返します。

●　void setUserData( const char * data );

user dataを設定します。

オブジェクト属性（protected）

●　MQTM omqtm

MQTM構造体です。

その他の関連クラス

ImqGetMessageOptions

ImqItem

ImqMessage

ImqString

理由コード

MQRC_NULL_POINTER

理由コードの詳細については，「付録A　理由コード」を参照してください。

C++のサンプルアプリケーション

C++のサンプルアプリケーションです。処理の流れを次の図に示します。

図5‒2　処理の流れ（C++の場合）

C++のサンプルコーディング

コーディング例を示します。

#include <stdio.h>
#include <imqi.hpp>          // include MQAccess C++ class

int main (void) {
  ImqQueueManager  mgr(" ");      /* queue manager name */
  ImqQueue       queue;           /* queue */
  ImqMessage     msg;             /* message */
  ImqString      str("****** C++ sample put data ******");
                                  /* message data */
  ImqGetMessageOptions getoption; /* get message options */
  ImqPutMessageOptions putoption; /* put message options */

  // connect to the queue manager
  if ( ! mgr.connect( ) ) {
    /* stop if it failed */
    printf(
    "ImqQueueManager::connect ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
    return ( (int)mgr.reasonCode( ) );
  }

  // set the connection reference
  queue.setConnectionReference( mgr );

  // set the queue name
  queue.setName("dynq1");

  // set the message
  msg.writeItem( str );

  // set the open options
  queue.setOpenOptions(MQOO_OUTPUT | MQOO_INPUT_AS_Q_DEF);

  // open the queue
  queue.open( );
  if ( queue.reasonCode( ) ) {
    printf( "ImqQueue::open ended with reason code %d¥n",
                               (int)queue.reasonCode( ) );
    return( (int)queue.reasonCode( ) );
  }

  // set the get message options
  getoption.setSyncPointParticipation(TRUE);
  // set the put message options
  putoption.setSyncPointParticipation(TRUE);

  // begin local transaction
  if ( ! mgr.begin( ) ) {
    printf(
    "ImqQueueManager::begin ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
    return( (int)mgr.reasonCode( ) );
  }

  // put the message
  if ( ! queue.put( msg, putoption ) ) {
    printf( "ImqQueue::put ended with reason code %d¥n",
                                (int)queue.reasonCode( ) );
  }

  // commit local transaction
  if ( queue.reasonCode( ) == 0 ) {
    if ( ! mgr.commit( ) ) {
      printf(
     "ImqQueueManager::commit ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
      return( (int)mgr.reasonCode( ) );
    }
  } else {
    if ( ! mgr.backout( ) ) {
      printf(
    "ImqQueueManager::backout ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
      return( (int)mgr.reasonCode( ) );
    }
  }

  // begin local transaction
  if ( ! mgr.begin( ) ) {
    printf(
     "ImqQueueManager::begin ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
    return( (int)mgr.reasonCode( ) );
  }

  // get the message
  if ( ! queue.get( msg, getoption ) ) {
    printf( "ImqQueue::get ended with reason code %d¥n",
                                (int)queue.reasonCode( ) );
  }

  // commit local transaction
  if ( queue.reasonCode( ) == 0 ) {
    if ( ! mgr.commit( ) ) {
      printf(
     "ImqQueueManager::commit ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
      return( (int)mgr.reasonCode( ) );
    }
  } else {
    if ( ! mgr.backout( ) ) {
      printf(
    "ImqQueueManager::backout ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
      return( (int)mgr.reasonCode( ) );
    }
  }

  // close the queue
  if ( ! queue.close( ) ) {
    printf( "ImqQueue::close ended with reason code %d¥n",
                                (int)queue.reasonCode( ) );
  }

  // disconnect from the queue manager
  if ( ! mgr.disconnect( ) ) {
    printf(
 "ImqQueueManager::disconnect ended with reason code %d¥n",
                                  (int)mgr.reasonCode( ) );
  }
  return (0);
}

6　MQCクライアント機能のJavaインタフェース

この章では，MQCクライアント機能のJavaインタフェースについて説明します。

MQCクライアント機能のJavaパッケージ

MQCクライアント機能のJavaインタフェースは，パッケージとして次の非XAインタフェースを提供します。

JP.co.Hitachi.soft.MQ.Access

非XAインタフェースパッケージです。ローカルトランザクション機能だけ使用できます。

MQCクライアント機能のJavaクラス一覧

MQCクライアント機能が提供するクラスの概要について説明します。

クラスの一覧を次の表に示します。

表6‒1　クラスの一覧（Java）

クラス名

機能

MQDistributionList

配布リストです。

MQDistributionListItem

配布リスト中の単一項目です。

MQEnvironment

Java環境を設定します。

MQException

MQの例外発生を示します。

MQGetMessageOptions

MQQueue:getメソッドのオプションです。

MQManagedObject

MQQueueManager，MQQueue，MQProcessのスーパクラスです。

MQMessage

MQで登録・取り出しするメッセージです。

MQMessageTracker

メッセージパラメタです。

MQProcess

MQのプロセス定義にアクセスします。

MQPutMessageOptions

MQQueue:putメソッドのオプションです。

MQQueue

MQのキューにアクセスします。

MQQueueManager

MQのキューマネジャにアクセスします。

インタフェースの一覧を次の表に示します。

表6‒2　インタフェースの一覧（Java）

インタフェース名

機能

MQC

TP1/Message Queueの定義値です。

Javaクラス継承図

クラス継承図を次の図に示します。

図6‒1　クラス継承図（Javaの場合）

MQDistributionListクラス（Java）

このクラスは，配布リストです。

コンストラクタ

●　public MQDistributionList(MQQueueManager qMgr, MQDistributionListItem[] litems, Int openOptions, String alternateUserId) throws MQException

MQDistributionListコンスタラクタです。

配布リストは，put()メソッドへの単一呼び出しを使用してメッセージを送信できる一連のオープンキューを表示します。

パラメタ

qMgr

配布リストがオープンされるキューマネジャを指定します。

litems

配布リストに組み込む項目を指定します。

openOptions

オープンオプションを指定します。

alternateUserId

代替ユーザ識別子を指定します。

メソッド

●　public synchronized void put(MQMessage message, MQPutMessageOptions putMessageOptions) throws MQException

メッセージを配布リスト上のキューに書き込みます。

配布リスト用MQPUT命令に相当します。

パラメタ

message

メッセージ記述子情報，および戻されたメッセージデータを格納する入出力パラメタを指定します。

putMessageOptions

MQPUT命令の動作を制御するオプションを指定します。

●　public MQDistributionListItem getFirstDistributionListItem()

配布リストの先頭項目を戻します。配布リストが空の場合はnullを戻します。

●　public int getValidDestinationCount()

正常にオープンされた配布リストの項目数を戻します。

MQPUT命令の，MQPMO構造体のKnownDestCountとUnknownDestCountの合計に相当します。

●　public int getInvalidDestinationCount()

正常にオープンされなかった配布リストの項目数を戻します。

MQPUT命令の，MQPMO構造体のInvalidDestCountに相当します。

MQDistributionListItemクラス（Java）

このクラスは，配布リスト中の単一項目です。

変数

●　public int completionCode

完了コードです。

●　public String queueName

配布リストで使用するキューの名前です。

●　public String queueManagerName

キューが定義されているキューマネジャの名前です。

●　public int reasonCode

理由コードです。

コンストラクタ

●　public MQDistributionListItem()

MQDistributionListItemコンストラクタです。

配布リスト中の単一項目（キュー）を表示します。

MQEnvironmentクラス（Java）

このクラスでは，Java環境の設定をします。

変数

●　public final static String version_notice

MQCクライアント機能のJavaインタフェースバージョンです。

メソッド

●　public static void disableTracing()

トレース機能を停止します。

●　public static void enableTracing(int level)

JavaEnvironmentトレース機能を開始します。JavaEnvironmentトレース情報は，Javaコンソール（System.err）に出力されます。出力形式については，「2.4.2　JavaEnvironmentトレースファイルの出力形式」を参照してください。

パラメタ

level

JavaEnvironmentトレース情報の出力レベルを1〜5の値で指定します。指定した値に応じて，次の表に示すトレース情報が出力されます。

表6‒3　JavaEnvironmentトレース情報の出力レベル

出力情報

出力レベル

1

2

3

4

5

記入項目

○

○

○

○

○

出口情報

○

○

○

○

○

例外トレース

○

○

○

○

○

入口情報

×

○

○

○

○

パラメタ情報

×

×

○

○

○

送信／受信のMQヘッダ

×

×

×

○

○

MQGMO情報／MQPMO情報

×

×

×

○

○

送信／受信ユーザメッセージデータ

×

×

×

×

○

（凡例）

○：出力されます。

×：出力されません。

●　public static void enableTracing(int level, OutputStream stream)

トレース機能を開始します。トレース情報の出力先を指定できます。

パラメタ

level

トレース出力レベルを1〜5の値で指定します。各レベルについては，上記のenableTracingメソッドを参照してください。

stream

トレース情報の出力先を指定します。

コンストラクタ

●　public MQEnvironment()

MQEnvironmentコンストラクタです。

MQExceptionクラス（Java）

このクラスでは，MQの例外発生を管理します。

変数

●　public static java.io.outputStreamWriter log

例外ログ出力先を指定します。省略するとSystem.errに出力します。また，nullを設定するとログを出力しません。

●　public Object exceptionSource

例外発生オブジェクトです。

●　public int completionCode

完了コードです。完了コードの詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

●　public int reasonCode

理由コードです。理由コードの詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

完了コード，理由コード

完了コード，理由コードの値の一覧を示します。詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

public static final int MQCC_WARNING

public static final int MQCC_FAILED

public static final int MQRC_ADAPTER_STORAGE_SHORTAGE

public static final int MQRC_ADAPTER_CONN_LOAD_ERROR

public static final int MQRC_ADAPTER_SERV_LOAD_ERROR

public static final int MQRC_ADAPTER_DEFS_ERROR

public static final int MQRC_ADAPTER_DEFS_LOAD_ERROR

public static final int MQRC_ADAPTER_CONV_LOAD_ERROR

public static final int MQRC_ADAPTER_DISC_LOAD_ERROR

public static final int MQRC_ADAPTER_NOT_AVAILABLE

public static final int MQRC_ALIAS_BASE_Q_TYPE_ERROR

public static final int MQRC_ALREADY_CONNECTED

public static final int MQRC_ANOTHER_Q_MGR_CONNECTED

public static final int MQRC_API_EXIT_LOAD_ERROR

public static final int MQRC_ASID_MISMATCH

public static final int MQRC_BACKED_OUT

public static final int MQRC_BO_ERROR

public static final int MQRC_BRIDGE_STARTED

public static final int MQRC_BRIDGE_STOPPED

public static final int MQRC_BUFFER_ERROR

public static final int MQRC_BUFFER_LENGTH_ERROR

public static final int MQRC_CALL_IN_PROGRESS

public static final int MQRC_CFH_ERROR

public static final int MQRC_CFIL_ERROR

public static final int MQRC_CFIN_ERROR

public static final int MQRC_CFSL_ERROR

public static final int MQRC_CFST_ERROR

public static final int MQRC_CHANNEL_AUTO_DEF_ERROR

public static final int MQRC_CHANNEL_AUTO_DEF_OK

public static final int MQRC_CHANNEL_ACTIVATED

public static final int MQRC_CHANNEL_NOT_ACTIVATED

public static final int MQRC_CHANNEL_STARTED

public static final int MQRC_CHANNEL_STOPPED

public static final int MQRC_CHANNEL_CONV_ERROR

public static final int MQRC_CICS_WAIT_FAILED

public static final int MQRC_CONNECTION_QUIESCING

public static final int MQRC_CONNECTION_STOPPING

public static final int MQRC_CONNECTION_NOT_AUTHORIZED

public static final int MQRC_CORREL_ID_ERROR

public static final int MQRC_CHAR_ATTR_LENGTH_ERROR

public static final int MQRC_CHAR_ATTRS_ERROR

public static final int MQRC_CHAR_ATTRS_TOO_SHORT

public static final int MQRC_CLUSTER_PUT_INHIBITED

public static final int MQRC_CLUSTER_RESOLUTION_ERROR

public static final int MQRC_CONTEXT_HANDLE_ERROR

public static final int MQRC_CONTEXT_NOT_AVAILABLE

public static final int MQRC_COD_NOT_VALID_FOR_XCF_Q

public static final int MQRC_CONVERTED_MSG_TOO_BIG

public static final int MQRC_CNO_ERROR

public static final int MQRC_CONN_ID_IN_USE

public static final int MQRC_CONNECTION_BROKEN

public static final int MQRC_DATA_LENGTH_ERROR

public static final int MQRC_DBCS_ERROR

public static final int MQRC_DEF_XMIT_Q_TYPE_ERROR

public static final int MQRC_DEF_XMIT_Q_USAGE_ERROR

public static final int MQRC_DEST_ENV_ERROR

public static final int MQRC_DEST_NAME_ERROR

public static final int MQRC_DH_ERROR

public static final int MQRC_DLH_ERROR

public static final int MQRC_DUPLICATE_RECOV_COORD

public static final int MQRC_DYNAMIC_Q_NAME_ERROR

public static final int MQRC_ENVIRONMENT_ERROR

public static final int MQRC_EXPIRY_ERROR

public static final int MQRC_FEEDBACK_ERROR

public static final int MQRC_FILE_SYSTEM_ERROR

public static final int MQRC_FORMAT_ERROR

public static final int MQRC_FUNCTION_ERROR

public static final int MQRC_GET_INHIBITED

public static final int MQRC_GMO_ERROR

public static final int MQRC_GROUP_ID_ERROR

public static final int MQRC_HANDLE_NOT_AVAILABLE

public static final int MQRC_HCONFIG_ERROR

public static final int MQRC_HCONN_ERROR

public static final int MQRC_HEADER_ERROR

public static final int MQRC_HOBJ_ERROR

public static final int MQRC_INHIBIT_VALUE_ERROR

public static final int MQRC_IIH_ERROR

public static final int MQRC_INCOMPLETE_GROUP

public static final int MQRC_INCOMPLETE_MSG

public static final int MQRC_INCONSISTENT_BROWSE

public static final int MQRC_INCONSISTENT_CCSID

public static final int MQRC_INCONSISTENT_ENCODINGS

public static final int MQRC_INCONSISTENT_PERSISTENCE

public static final int MQRC_INCONSISTENT_UOW

public static final int MQRC_INITIALIZATION_FAILED

public static final int MQRC_INVALID_MSG_UNDER_CURSOR

public static final int MQRC_INT_ATTR_COUNT_ERROR

public static final int MQRC_INT_ATTR_COUNT_TOO_SMALL

public static final int MQRC_INT_ATTRS_ARRAY_ERROR

public static final int MQRC_MATCH_OPTIONS_ERROR

public static final int MQRC_MAX_CONNS_LIMIT_REACHED

public static final int MQRC_MD_ERROR

public static final int MQRC_MDE_ERROR

public static final int MQRC_MISSING_REPLY_TO_Q

public static final int MQRC_MSG_ID_ERROR

public static final int MQRC_MSG_FLAGS_ERROR

public static final int MQRC_MSG_SEQ_NUMBER_ERROR

public static final int MQRC_MSG_TOO_BIG_FOR_CHANNEL

public static final int MQRC_MSG_TOO_BIG_FOR_Q

public static final int MQRC_MSG_TOO_BIG_FOR_Q_MGR

public static final int MQRC_MSG_TYPE_ERROR

public static final int MQRC_MULTIPLE_REASONS

public static final int MQRC_NAME_IN_USE

public static final int MQRC_NAME_NOT_VALID_FOR_TYPE

public static final int MQRC_NOT_CONVERTED

public static final int MQRC_NO_MSG_LOCKED

public static final int MQRC_NO_DESTINATIONS_AVAILABLE

public static final int MQRC_NO_EXTERNAL_PARTICIPANTS

public static final int MQRC_NO_MSG_AVAILABLE

public static final int MQRC_NO_MSG_UNDER_CURSOR

public static final int MQRC_NOT_AUTHORIZED

public static final int MQRC_NOT_OPEN_FOR_BROWSE

public static final int MQRC_NOT_OPEN_FOR_INPUT

public static final int MQRC_NOT_OPEN_FOR_INQUIRE

public static final int MQRC_NOT_OPEN_FOR_OUTPUT

public static final int MQRC_NOT_OPEN_FOR_SET

public static final int MQRC_NOT_OPEN_FOR_PASS_ALL

public static final int MQRC_NOT_OPEN_FOR_PASS_IDENT

public static final int MQRC_NOT_OPEN_FOR_SET_ALL

public static final int MQRC_NOT_OPEN_FOR_SET_IDENT

public static final int MQRC_OBJECT_ALREADY_EXISTS

public static final int MQRC_OBJECT_CHANGED

public static final int MQRC_OBJECT_DAMAGED

public static final int MQRC_OBJECT_IN_USE

public static final int MQRC_OBJECT_NAME_ERROR

public static final int MQRC_OBJECT_Q_MGR_NAME_ERROR

public static final int MQRC_OBJECT_RECORDS_ERROR

public static final int MQRC_OBJECT_TYPE_ERROR

public static final int MQRC_OD_ERROR

public static final int MQRC_OFFSET_ERROR

public static final int MQRC_OPEN_FAILED

public static final int MQRC_OPTION_NOT_VALID_FOR_TYPE

public static final int MQRC_OPTIONS_ERROR

public static final int MQRC_ORIGINAL_LENGTH_ERROR

public static final int MQRC_OUTCOME_MIXED

public static final int MQRC_OUTCOME_PENDING

public static final int MQRC_PARTICIPANT_NOT_AVAILABLE

public static final int MQRC_PAGESET_FULL

public static final int MQRC_PAGESET_ERROR

public static final int MQRC_PCF_ERROR

public static final int MQRC_PERSISTENCE_ERROR

public static final int MQRC_PERSISTENT_NOT_ALLOWED

public static final int MQRC_PMO_ERROR

public static final int MQRC_PMO_RECORD_FLAGS_ERROR

public static final int MQRC_PRIORITY_EXCEEDS_MAXIMUM

public static final int MQRC_PRIORITY_ERROR

public static final int MQRC_PUT_INHIBITED

public static final int MQRC_PUT_MSG_RECORDS_ERROR

public static final int MQRC_Q_ALREADY_EXISTS

public static final int MQRC_Q_DEPTH_HIGH

public static final int MQRC_Q_DEPTH_LOW

public static final int MQRC_Q_DELETED

public static final int MQRC_Q_FULL

public static final int MQRC_Q_MGR_ACTIVE

public static final int MQRC_Q_MGR_NAME_ERROR

public static final int MQRC_Q_MGR_NOT_AVAILABLE

public static final int MQRC_Q_MGR_NOT_ACTIVE

public static final int MQRC_Q_MGR_QUIESCING

public static final int MQRC_Q_SERVICE_INTERVAL_HIGH

public static final int MQRC_Q_SERVICE_INTERVAL_OK

public static final int MQRC_Q_MGR_STOPPING

public static final int MQRC_Q_NOT_EMPTY

public static final int MQRC_Q_SPACE_NOT_AVAILABLE

public static final int MQRC_Q_TYPE_ERROR

public static final int MQRC_RECS_PRESENT_ERROR

public static final int MQRC_REPORT_OPTIONS_ERROR

public static final int MQRC_RESOURCE_PROBLEM

public static final int MQRC_RESPONSE_RECORDS_ERROR

public static final int MQRC_REMOTE_Q_NAME_ERROR

public static final int MQRC_RMH_ERROR

public static final int MQRC_SECOND_MARK_NOT_ALLOWED

public static final int MQRC_SECURITY_ERROR

public static final int MQRC_SEGMENT_LENGTH_ZERO

public static final int MQRC_SELECTOR_COUNT_ERROR

public static final int MQRC_SELECTOR_LIMIT_EXCEEDED

public static final int MQRC_SELECTOR_ERROR

public static final int MQRC_SELECTOR_NOT_FOR_TYPE

public static final int MQRC_SERVICE_ERROR

public static final int MQRC_SERVICE_NOT_AVAILABLE

public static final int MQRC_SIGNAL_OUTSTANDING

public static final int MQRC_SIGNAL_REQUEST_ACCEPTED

public static final int MQRC_SIGNAL1_ERROR

public static final int MQRC_SOURCE_BUFFER_ERROR

public static final int MQRC_SOURCE_CCSID_ERROR

public static final int MQRC_SOURCE_DECIMAL_ENC_ERROR

public static final int MQRC_SOURCE_FLOAT_ENC_ERROR

public static final int MQRC_SOURCE_INTEGER_ENC_ERROR

public static final int MQRC_SOURCE_LENGTH_ERROR

public static final int MQRC_SRC_ENV_ERROR

public static final int MQRC_SRC_NAME_ERROR

public static final int MQRC_STORAGE_CLASS_ERROR

public static final int MQRC_STORAGE_NOT_AVAILABLE

public static final int MQRC_SUPPRESSED_BY_EXIT

public static final int MQRC_SYNCPOINT_LIMIT_REACHED

public static final int MQRC_SYNCPOINT_NOT_AVAILABLE

public static final int MQRC_TARGET_CCSID_ERROR

public static final int MQRC_TARGET_DECIMAL_ENC_ERROR

public static final int MQRC_TARGET_FLOAT_ENC_ERROR

public static final int MQRC_TARGET_INTEGER_ENC_ERROR

public static final int MQRC_TARGET_LENGTH_ERROR

public static final int MQRC_TARGET_BUFFER_ERROR

public static final int MQRC_TERMINATION_FAILED

public static final int MQRC_TM_ERROR

public static final int MQRC_TMC_ERROR

public static final int MQRC_TRIGGER_CONTROL_ERROR

public static final int MQRC_TRIGGER_DEPTH_ERROR

public static final int MQRC_TRIGGER_MSG_PRIORITY_ERR

public static final int MQRC_TRIGGER_TYPE_ERROR

public static final int MQRC_TRUNCATED

public static final int MQRC_TRUNCATED_MSG_ACCEPTED

public static final int MQRC_TRUNCATED_MSG_FAILED

public static final int MQRC_UNEXPECTED_ERROR

public static final int MQRC_UNKNOWN_AUTH_ENTITY

public static final int MQRC_UNKNOWN_DEF_XMIT_Q

public static final int MQRC_UNKNOWN_ENTITY

public static final int MQRC_UNKNOWN_Q_NAME

public static final int MQRC_UNKNOWN_REF_OBJECT

public static final int MQRC_UNKNOWN_XMIT_Q

public static final int MQRC_UNKNOWN_ALIAS_BASE_Q

public static final int MQRC_UNKNOWN_OBJECT_NAME

public static final int MQRC_UNKNOWN_OBJECT_Q_MGR

public static final int MQRC_UNKNOWN_REMOTE_Q_MGR

public static final int MQRC_UNKNOWN_REPORT_OPTION

public static final int MQRC_UOW_IN_PROGRESS

public static final int MQRC_UOW_NOT_AVAILABLE

public static final int MQRC_USER_ID_NOT_AVAILABLE

public static final int MQRC_WAIT_INTERVAL_ERROR

public static final int MQRC_WRONG_GMO_VERSION

public static final int MQRC_WRONG_MD_VERSION

public static final int MQRC_XMIT_Q_TYPE_ERROR

public static final int MQRC_XMIT_Q_USAGE_ERROR

public static final int MQRC_XQH_ERROR

public static final int MQRC_XWAIT_CANCELED

public static final int MQRC_XWAIT_ERROR

コンストラクタ

●　public MQException(int completionCode, int reasonCode, Object source)

MQExceptionコンストラクタです。

パラメタ

completionCode

完了コードを指定します。

reasonCode

理由コードを指定します。

source

例外発生オブジェクトを指定します。

●　public MQException(int completionCode, int reasonCode, Object source,String explanation)

MQExceptionコンストラクタです。

パラメタ

completionCode

完了コードを指定します。

reasonCode

理由コードを指定します。

source

例外発生オブジェクトを指定します。

explanation

例外詳細情報を指定します。

MQGetMessageOptionsクラス（Java）

このクラスは，MQQueue:getメソッドのオプションです。

変数

●　public int options

MQQueue:getメソッドの動作を制御するオプションを指定します。

0個以上の指定ができます。2個以上必要とする場合，ビットのOR演算子を使用して結合します。

MQGMO構造体の，Optionsフィールドに相当します。

●　public int waitInterval

ウェイト間隔を指定します。MQQueue:getメソッドで適合したメッセージの到着を待つ最大時間で，単位はミリ秒です。この時間が経過しても適合するメッセージが到着しなかった場合は，メソッドは完了コードMQC.MQCC_FAILEDおよび理由コードMQException.MQRC_NO_MSG_AVAILABLEで例外が発生します。

この変数はoptionsのMQC.MQGMO_WAITと一緒に使用します。

このオプションが指定されている場合，waitIntervalに0以上，またはMQC.MQWI_UNLIMITEDを指定してください。

MQGMO構造体の，WaitIntervalフィールドに相当します。

●　public String resolvedQueueName

宛先キューの解決された名称です。

MQGMO構造体の，ResolvedQNameフィールドに相当します。

●　public int matchOptions

検索するメッセージを判別する選択基準を指定します。

MQGMO構造体の，MatchOptionsフィールドに相当します。

●　public char groupStatus

検索するメッセージがグループ内にあるかどうかを指示します。メッセージがグループ内にある場合は，グループ内の最後のメッセージかどうかを指示します。

MQGMO構造体の，GroupStatusフィールドに相当します。

●　public char segmentStatus

検索するメッセージが，論理メッセージのセグメントの一つであるかどうかを指示します。メッセージが論理メッセージのセグメントの一つである場合，そのセグメントが最後のセグメントかどうかを指示します。

MQGMO構造体の，SegmentStatusフィールドに相当します。

●　public char segmentation

検索するメッセージが論理メッセージのセグメントの一つである場合，そのメッセージがセグメント化できるかどうかを指示します。

MQGMO構造体の，Segmentationフィールドに相当します。

コンストラクタ

●　public MQGetMessageOptions()

MQGetMessageOptionsコンストラクタです。

optionsにMQC.MQGMO_NO_WAIT，waitIntervalに0，resolvedQueueNameに空白を設定します。

MQManagedObjectクラス（Java）

このクラスは，MQQueueManager，MQQueue，MQProcessのスーパクラスです。

変数

●　public String alternateUserId

代替ユーザ識別子です。この変数は変更しないでください。

MQMD構造体の，AlternateUserIdフィールドに相当します。

●　public String name

リソース名称です。この変数は変更しないでください。

●　public int openOption

リソースをオープンしたオプションです。この変数は変更しないでください。

MQOPEN命令の，Options引数に相当します。

●　public boolean isOpen

オープン済みフラグです。この変数は変更しないでください。

●　public MQQueueManager connectionReference

キューマネジャ接続情報です。この変数は変更しないでください。

●　 public int closeOption

クローズオプションです。リソースをクローズするオプションを指定してください。

MQCLOSE命令の，Options引数に相当します。

コンストラクタ

●　protected MQManagedObject()

MQManagedObjectコンストラクタです。

メソッド

●　public String getDescription() throws MQException

リソース記述子を取得します。

リソースの種類によって取得する内容が異なります。

MQQueueManager：キューマネジャ記述子を取得します。

MQQueue：キュー記述子を取得します。

MQProcess：プロセス記述子を取得します。

●　public void inquire(int selectors[], int intAttrs[],byte charAttrs[]) throws MQException

リソース属性を照会します。

MQINQ命令に相当します。

パラメタ

selectors

属性セレクタの配列を指定します。

intAttrs

照会結果の整数型属性を格納する配列領域を指定します。

charAttrs

照会結果の文字型属性を格納する領域を指定します。

●　public Boolean isOpen()

オープン済みフラグです。このメソッドは変更しないでください。

●　public synchronized void set(int selectors[], int intAttrs[],byte charAttrs[]) throws MQException

リソース属性を設定します。

MQSET命令に相当します。

パラメタ

selectors

属性セレクタの配列を指定します。

intAttrs

整数型属性の配列を指定します。

charAttrs

文字型属性を指定します。

●　public synchronized void close() throws MQException

リソースをクローズします。

MQCLOSE命令に相当します。

MQMessageクラス（Java）

このクラスは，MQで登録・取り出しするメッセージのメッセージ記述子とメッセージバッファから形成されています。変数はメッセージ記述子の要素です。

メッセージ記述子の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

変数

●　public int report

報告オプションです。

MQMD構造体の，Reportフィールドに相当します。

●　public int messageType

メッセージタイプです。

MQMD構造体の，MsgTypeフィールドに相当します。

●　public int expiry

メッセージの生存期間です。

MQMD構造体の，Expiryフィールドに相当します。

●　public int feedback

フィードバックコードです。

MQMD構造体の，Feedbackフィールドに相当します。

●　public int encoding

データのマシンコード化です。

MQMD構造体の，Encodingフィールドに相当します。

●　public int characterSet

コード化文字セット識別子です。

MQMD構造体の，CodedCharSetIdフィールドに相当します。

●　public String format

フォーマット名称です。

MQMD構造体の，Formatフィールドに相当します。

●　public int priority

メッセージ優先度です。

MQMD構造体の，Priorityフィールドに相当します。

●　public int persistence

メッセージの永続性です。

MQMD構造体の，Persistenceフィールドに相当します。

●　public byte messageId[]（24バイト）

メッセージ識別子です。

MQMD構造体の，MsgIdフィールドに相当します。

次に示す条件でこの変数を指定した場合，MQRC_MSG_ID_ERROR(2206)でMQExceptionがスローされます。

24バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

24バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsにMQPMO_NEW_MSG_IDオプションを指定して，MQQueue.putメソッドが発行されました。

すべて0で設定された24バイト未満のbyte型配列を指定して，MQQueue.putメソッドが発行されました。

●　public byte correlationId[]（24バイト）

相関識別子です。

MQMD構造体の，CorrelIdフィールドに相当します。

次に示す条件でこの変数を指定した場合，MQRC_CORREL_ID_ERROR(2207)でMQExceptionがスローされます。

24バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

24バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsにMQPMO_NEW_CORREL_IDオプションを指定して，MQQueue.putメソッドが発行されました。

●　public int backoutCount

バックアウトカウンタです。

MQMD構造体の，BackoutCountフィールドに相当します。

●　public String replyToQueueName

応答キューの名称です。

MQMD構造体の，ReplyToQフィールドに相当します。

●　public String replyToQueueManagerName

応答キューマネジャの名称です。

MQMD構造体の，ReplyToQMgrフィールドに相当します。

●　public String userId

ユーザ識別子です。

MQMD構造体の，UserIdentifierフィールドに相当します。

●　public byte accountingToken[]（32バイト）

課金tokenです。

MQMD構造体の，AccountingTokenフィールドに相当します。

次に示す条件でこの変数を指定した場合，MQRC_MD_ERROR(2026)でMQExceptionがスローされます。

32バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

32バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsに次に示すどちらかのオプションを指定して，MQQueue.putメソッドが発行されました。

MQPMO_PASS_IDENTITY_CONTEXT

MQPMO_PASS_ALL_CONTEXT

すべて0で設定された32バイト未満のbyte型配列を指定して，MQQueue.putメソッドが発行されました。

●　public String applicationIdData

アイデンティティに関連したアプリケーションデータです。

MQMD構造体の，ApplIdentityDataフィールドに相当します。

●　public int putApplicationType

メッセージを登録したアプリケーションのタイプです。

MQMD構造体の，PutApplTypeフィールドに相当します。

●　public String putApplicationName

メッセージを登録したアプリケーションのアイデンティティです。

MQMD構造体の，PutApplNameフィールドに相当します。

●　public GregorianCalender putDateTime

メッセージを登録した日時です。

MQMD構造体の，PutDate,PutTimeフィールドに相当します。

Javaではフォーマット形式はDate型です。

●　public String applicationOriginData

登録元に関連するアプリケーションデータです。

MQMD構造体の，ApplOriginDataフィールドに相当します。

●　public byte[] groupId（24バイト）

物理メッセージが属しているメッセージグループを識別するバイト列です。

MQMD構造体の，GroupIdフィールドに相当します。

次に示す条件でこの変数を指定した場合，MQRC_GROUP_ID_ERROR(2258)でMQExceptionがスローされます。

MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で，24バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で，24バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsにMQPMO_LOGICAL_ORDERオプション，MQMessage.messageFlagsに次に示すどれかのオプションを指定して，MQQueue.putメソッドが発行されました。

MQMF_SEGMENTATION_ALLOWED

MQMF_MSG_IN_GROUP

MQMF_LAST_MSG_IN_GROUP

MQMF_SEGMENT

MQMF_LAST_SEGMENT

MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で，すべて0で設定された24バイト未満のbyte型配列を指定し，MQMessage.messageFlagsに次に示すどれかのオプションを指定して，MQQueue.putメソッドが発行されました。

MQMF_SEGMENTATION_ALLOWED

MQMF_MSG_IN_GROUP

MQMF_LAST_MSG_IN_GROUP

MQMF_SEGMENT

MQMF_LAST_SEGMENT

●　public int messageSequenceNumber

グループ内の論理メッセージの順序番号です。

MQMD構造体の，MsgSeqNumberフィールドに相当します。

●　public int offset

セグメント化されたメッセージの場合，論理メッセージ先頭からの物理メッセージのデータのオフセットです。

MQMD構造体の，Offsetフィールドに相当します。

●　public int messageFlags

メッセージのセグメント化と状況を制御するフラグです。

MQMD構造体の，MsgFlagsフィールドに相当します。

●　public int originalLength

セグメント化されたメッセージの元の長さです。

MQMD構造体の，OriginalLengthフィールドに相当します。

コンストラクタ

●　public MQMessage()

MQMessageコンストラクタです。

メッセージ記述子を初期化し，メッセージバッファを空にします。

メソッド

●　public int getTotalMessageLength()

getしたメッセージ長を取得します。

MQQueue:getしたメッセージのバイト数です。MQQueue:getがメッセージ切り捨て例外を発生させた場合に，このメソッドでメッセージ長を取得できます。

●　public int getMessageLength() throws IOException

getしたメッセージバッファのバイト数を取得します。

●　public int getDataLength() throws IOException

getしたメッセージバッファの未読み込みデータバイト数を取得します。

●　public void seek(int pos) throws IOException

getしたメッセージバッファの現在読み込み位置を指定されたバイト数分移動します。

パラメタ

pos

移動するバイト数を指定します。

●　public void setDataOffset(int offset) throws IOException

getしたメッセージバッファの読み込み位置を指定された位置に移動します。

パラメタ

offset

バッファ先頭からのバイト数を指定します。

●　public int getDataOffset() throws IOException

getしたメッセージバッファの現在読み込み位置を取得します。

●　public void clearMessage() throws IOException

put/getメッセージバッファをクリアします。

●　public int getVersion()

メッセージ記述子バージョンを取得します。

●　public void resizeBuffer(int size) throws IOException

getしたメッセージバッファのサイズを変更します。

パラメタ

size

変更するバイト数を指定します。

●　public boolean readBoolean() throws IOException, EOFException

getしたメッセージバッファの現在位置からboolean型でデータを読み込みます。

●　public char readChar() throws IOException, EOFException

getしたメッセージバッファの現在位置からUnicode char型でデータを読み込みます。

●　public double readDouble() throws IOException, EOFException

getしたメッセージバッファの現在位置からdouble型でデータを読み込みます。

●　public float readFloat() throws IOException, EOFException

getしたメッセージバッファの現在位置からfloat型でデータを読み込みます。

●　public void readFully(byte b[]) throws IOException, EOFException

getしたメッセージバッファの現在位置から指定されたバッファいっぱいにデータを読み込みます。

パラメタ

b

データ取得バッファを指定します。

●　public void readFully(byte b[], int off,int len) throws IOException, EOFException

getしたメッセージバッファの現在位置から指定されたバッファの指定位置から指定サイズ分データを読み込みます。

パラメタ

b

データ取得バッファを指定します。

off

データ取得バッファ位置を指定します。

len

データ取得バイト数を指定します。

●　public int readInt() throws IOException, EOFException

getしたメッセージバッファの現在位置からint型でデータを読み込みます。

●　public int readInt4() throws IOException, EOFException

getしたメッセージバッファの現在位置からint型でデータを読み込みます。

●　public String readLine() throws IOException

getしたメッセージバッファの現在位置から終端文字（¥n，¥r，¥r¥n）までデータを読み込みます。

●　public long readLong() throws IOException, EOFException

getしたメッセージバッファの現在位置からlong型でデータを読み込みます。

●　public long readInt8() throws IOException, EOFException

getしたメッセージバッファの現在位置からlong型でデータを読み込みます。

●　public short readShort() throws IOException, EOFException

getしたメッセージバッファの現在位置からshort型でデータを読み込みます。

●　public short readInt2() throws IOException, EOFException

getしたメッセージバッファの現在位置からshort型でデータを読み込みます。

●　public String readUTF() throws IOException

getしたメッセージバッファの現在位置からUTFフォーマットでデータを読み込みます。

●　public int readUnsignedByte() throws IOException, EOFException

getしたメッセージバッファの現在位置からunsigned byte型でデータを読み込みます。

●　public int readUnsignedShort() throws IOException, EOFException

getしたメッセージバッファの現在位置からunsigned short型でデータを読み込みます。

●　public int readUInt2() throws IOException, EOFException

getしたメッセージバッファの現在位置からunsigned short型でデータを読み込みます。

●　public String readString(int length) throws IOException, EOFException

getしたメッセージバッファの現在位置から指定バイト数分String型でデータを読み込みます。getしたメッセージバッファは，characterSetメンバ変数で指定されるコード化文字セット識別子のString型として，データ読み込み時にUnicodeに変換されます。このメソッドでコード変換対象となるコード化文字セット識別子については，「付録C　MQMessageクラスで変換できるコード化文字セット識別子の一覧」を参照してください。

パラメタ

length

読み込みバイト数を指定します。

●　public void setVersion(int version)

メッセージ記述子バージョンを設定します。

パラメタ

version

バージョンを指定します。

●　public int skipBytes(int n) throws IOException, EOFException

getしたメッセージバッファを指定バイト数分読み飛ばします。

パラメタ

n

読み飛ばしバイト数を指定します。

●　public void write(int b) throws IOException

putするメッセージバッファに1バイトを書き込みます。

パラメタ

b

書き込みデータを指定します。

●　public void write(byte b[]) throws IOException

putするメッセージバッファに指定バイト配列を書き込みます。

パラメタ

b

書き込みデータバッファを指定します。

●　public void write(byte b[], int off, int len) throws IOException

putするメッセージバッファに指定バイト配列の指定位置から指定バイト数分データを書き込みます。

パラメタ

b

書き込みデータバッファを指定します。

off

書き込み位置を指定します。

len

書き込みバイト数を指定します。

●　public void writeBoolean(boolean v) throws IOException

putするメッセージバッファにboolean型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeByte(int v) throws IOException

putするメッセージバッファにbyte型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeBytes(String s) throws IOException

putするメッセージバッファにbyte型配列でデータを書き込みます。

パラメタ

s

書き込みデータを指定します。

●　public void writeChar(int v) throws IOException

putするメッセージバッファにUnicode char型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeChars(String s) throws IOException

putするメッセージバッファにUnicode char型配列でデータを書き込みます。

パラメタ

s

書き込みデータを指定します。

●　public void writeDouble(double v) throws IOException

putするメッセージバッファにdouble型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeFloat(float v) throws IOException

putするメッセージバッファにfloat型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeInt(int v) throws IOException

putするメッセージバッファにint型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeInt4(int v) throws IOException

putするメッセージバッファにint型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeLong(long v) throws IOException

putするメッセージバッファにlong型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeInt8(long v) throws IOException

putするメッセージバッファにlong型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeShort(int v) throws IOException

putするメッセージバッファにshort型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeInt2(int v) throws IOException

putするメッセージバッファにshort型でデータを書き込みます。

パラメタ

v

書き込みデータを指定します。

●　public void writeUTF(String str) throws IOException

putするメッセージバッファにUTFフォーマット型でデータを書き込みます。

パラメタ

str

書き込みデータを指定します。

●　public void writeString(String str) throws IOException

strパラメタで指定したString型データを，characterSetメンバ変数で指定されるコード化文字セット識別子へ変換し，putするメッセージバッファに書き込みます。このメソッドでコード変換対象となるコード化文字セット識別子については，「付録C　MQMessageクラスで変換できるコード化文字セット識別子の一覧」を参照してください。

パラメタ

str

書き込みデータを指定します。

MQMessageTrackerクラス（Java）

このクラスは，メッセージパラメタを，配布リスト内に指定された宛先用に調整します。

変数

●　public int feedback

フィードバックコードです。

●　public byte messageId[]

メッセージIDです。

●　public byte correlationId[]

相関識別子です。

●　public byte accountingToken[]

課金トークンです。

●　public byte[] groupId

グループIDです。

MQProcessクラス（Java）

このクラスは，MQのプロセス定義にアクセスします。

コンストラクタ

●　public MQProcess(MQQueueManager qMgr, String processName, int openOptions, String queueManagerName, String alternateUserId) throws MQException

MQProcessコンストラクタです。

プロセス定義をオープンします。MQOPEN命令での，MQOT_PROCESSの指定に相当します。

パラメタ

qMgr

取得済みMQQueueManagerオブジェクトを指定します。

processName

プロセス定義名称を指定します。

openOptions

オープンオプションを指定します。

queueManagerName

キューマネジャ名称を指定します。

alternateUserId

代替ユーザ識別子を指定します。

メソッド

●　public String getApplicationId() throws MQException

アプリケーション識別子を取得します。

MQINQ命令の，MQCA_APPL_IDセレクタに相当します。

●　public int getApplicationType() throws MQException

アプリケーションタイプを取得します。

MQINQ命令の，MQIA_APPL_TYPEセレクタに相当します。

●　public String getEnvironmentData() throws MQException

環境データを取得します。

MQINQ命令の，MQCA_ENV_DATAセレクタに相当します。

●　public String getUserData() throws MQException

ユーザデータを取得します。

MQINQ命令の，MQCA_USER_DATAセレクタに相当します。

MQPutMessageOptionsクラス（Java）

このクラスは，MQQueue:putメソッドのオプションです。

変数

●　public int options

MQQueue:putメソッドの動作を制御するオプションです。

0個以上の指定ができます。2個以上必要とする場合，ビットのOR演算子を使用して結合します。

MQPMO構造体の，Optionsフィールドに相当します。

●　public MQQueue ContextReference

コンテキスト情報のソースを指示します。

MQPMO構造体の，Contextフィールドに相当します。

注

上記変数は未サポートとなります。変数に値を指定しても無視されます。

●　public int recordFields

メッセージを配布リストに書き込むときに，キューごとにカスタマイズするフィールドを指示するフラグです。

MQPMO構造体の，PutMsgRecFieldsフィールドに相当します。

●　public String resolvedQueueName

宛先キューの解決された名称です。

MQPMO構造体の，ResolvedQNameフィールドに相当します。

●　public String resolvedQueueManagerName

宛先キューの解決された名称です。

MQPMO構造体の，ResolvedQMgrNameフィールドに相当します。

●　public int knownDestCount

正常に送信が完了したローカルキュー数です。

MQPMO構造体の，knownDestCountフィールドに相当します。

●　public int unknownDestCount

正常に送信が完了したリモートキュー数です。

MQPMO構造体の，unknownDestCountフィールドに相当します。

●　public int invalidDestCount

配布リスト内のキューに正常に送信できなかったメッセージ数です。

MQPMO構造体の，invalidDestCountフィールドに相当します。

コンストラクタ

●　public MQPutMessageOptions()

MQPutMessageOptionsコンストラクタです。

optionsにオプションなし，resolvedQueueNameおよびresolvedQueueManagerNameに空白を設定します。

MQQueueクラス（Java）

このクラスは，MQのキューにアクセスします。

コンストラクタ

●　public MQQueue(MQQueueManager qMgr,String queueName,int openOptions, String queueManagerName,String dynamicQueueName,String alternateUserId) throws MQException

MQQueueコンストラクタです。

キューをオープンします。MQOPEN命令での，MQOT_Qの指定に相当します。

パラメタ

qMgr

取得済みMQQueueManagerオブジェクトを指定します

queueName

キュー名称を指定します。

openOptions

オープンオプションを指定します。

queueManagerName

キューマネジャ名称を指定します。

dynamicQueueName

ダイナミックキュー名称を指定します。

alternateUserId

代替ユーザ識別子を指定します。

メソッド

●　public synchronized void get(MQMessage message, MQGetMessageOptions getMessageOptions, int MaxMsgSize) throws MQException

メッセージを取り出します。

MQGET命令に相当します。

パラメタ

message

MQMessageオブジェクトを指定します。

getMessageOptions

MQGetMessageOptionsオブジェクトを指定します。

MaxMsgSize

最大メッセージ長を指定します。

●　public synchronized void get(MQMessage message, MQGetMessageOptions getMessageOptions ) throws MQException

メッセージを取り出します。メッセージサイズを取得するため，内部的にgetを2回実行します。

MQGET命令に相当します。

パラメタ

message

MQMessageオブジェクトを指定します。

getMessageOptions

MQGetMessageOptionsオブジェクトを指定します。

●　public synchronized void get(MQMessage message) throws MQException

メッセージを取り出します。メッセージサイズを取得するため，内部的にgetを2回実行します。public synchronized void get(MQMessage message, MQGetMessageOptions getMessageOptions ) throws MQExceptionメソッドを単純化したものです。

MQGET命令に相当します。

パラメタ

message

MQMessageオブジェクトです。

●　public synchronized void put(MQMessage message, MQPutMessageOptions putMessageOptions ) throws MQException

メッセージを登録します。

MQPUT命令に相当します。

パラメタ

message

MQMessageオブジェクトです。

putMessageOptions

MQPutMessageOptionsオブジェクトです。

●　public synchronized void put(MQMessage message) throws MQException

メッセージを登録します。public synchronized void put(MQMessage message, MQPutMessageOptions putMessageOptions ) throws MQExceptionメソッドを単純化したものです。

MQPUT命令に相当します。

パラメタ

message

MQMessageオブジェクトです。

●　public GregorianCalender getCreationDateTime() throws MQException

キュー作成日時を取得します。

●　public int getQueueType() throws MQException

次に示す値でキュータイプを取得します。

MQC.MQQT_ALIAS：別名キューです。

MQC.MQQT_LOCAL：ローカルキューです。

MQC.MQQT_MODEL：モデルキューです。

MQC.MQQT_REMOTE：リモートキューのローカル定義です。

MQINQ命令の，MQIA_Q_TYPEセレクタに相当します。

●　public int getCurrentDepth() throws MQException

カレントキューのメッセージ個数を取得します。

MQINQ命令の，MQIA_CURRENT_Q_DEPTHセレクタに相当します。

●　public int getDefinitionType() throws MQException

次に示す値でキュー定義タイプを取得します。

MQC.MQQDT_PREDEFINED：事前定義キューです。

MQC.MQQDT_PERMANENT_DYNAMIC：永続的動的キューです。

MQC.MQQDT_TEMPORARY_DYNAMIC：一時的動的キューです。

MQINQ命令の，MQIA_DEFINITION_TYPEセレクタに相当します。

●　public int getMaximumDepth () throws MQException

キューの最大メッセージ個数を取得します。

MQINQ命令の，MQIA_MAX_Q_DEPTHセレクタに相当します。

●　public int getMaximumMessageLength() throws MQException

メッセージの最大長を取得します。

MQINQ命令の，MQIA_MAX_MSG_LENGTHセレクタに相当します。

●　public int getOpenInputCount() throws MQException

入力用にキューをオープンしている数を取得します。

MQINQ命令の，MQIA_OPEN_INPUT_COUNTセレクタに相当します。

●　public int getOpenOutputCount() throws MQException

出力用にキューをオープンしている数を取得します。

MQINQ命令の，MQIA_OPEN_OUTPUT_COUNTセレクタに相当します。

●　public int getShareability() throws MQException

次に示す値でキュー共用性を取得します。

MQC.MQQA_SHAREABLE：共用できます。

MQC.MQQA_NOT_SHAREABLE：共用できません。

MQINQ命令の，MQIA_SHAREABILITYセレクタに相当します。

●　public int getInhibitPut() throws MQException

次に示す値でメッセージ登録許可属性を取得します。

MQC.MQQA_PUT_INHIBITED：登録禁止です。

MQC.MQQA_PUT_ALLOWED：登録許可です。

MQINQ命令の，MQIA_INHIBIT_PUTセレクタに相当します。

●　public void setInhibitPut(int inhibit) throws MQException

メッセージ登録許可属性を設定します。

MQSET命令の，MQIA_INHIBIT_PUTセレクタに相当します。

パラメタ

inhibit

登録許可属性です。次に示すどちらかの値を設定してください。

MQC.MQQA_PUT_INHIBITED：登録を禁止します。

MQC.MQQA_PUT_ALLOWED：登録を許可します。

●　public int getInhibitGet() throws MQException

次に示す値でメッセージ取り出し許可属性を取得します。

MQC.MQQA_GET_INHIBITED：取り出し禁止です。

MQC.MQQA_GET_ALLOWED：取り出し許可です。

MQINQ命令の，MQIA_INHIBIT_GETセレクタに相当します。

●　public void setInhibitGet(int inhibit) throws MQException

メッセージ取り出し許可属性を設定します。

MQSET命令の，MQIA_INHIBIT_GETセレクタに相当します。

パラメタ

inhibit

登録許可属性です。次に示すどちらかの値を設定してください。

MQC.MQQA_GET_INHIBITED：取り出しを禁止します。

MQC.MQQA_GET_ALLOWED：取り出しを許可します。

●　public int getTriggerControl() throws MQException

次に示す値でトリガ制御情報を取得します。

MQC.MQTC_OFF：トリガ制御をしません。

MQC.MQTC_ON：トリガ制御をします。

MQINQ命令の，MQIA_TRIGGER_CONTROLセレクタに相当します。

●　public void setTriggerControl(int trigger) throws MQException

トリガ制御情報を設定します。

MQSET命令の，MQIA_TRIGGER_CONTROLセレクタに相当します。

パラメタ

trigger

トリガ制御情報です。次に示すどちらかの値を設定してください。

MQC.MQTC_OFF：トリガ制御をしません。

MQC.MQTC_ON：トリガ制御をします。

●　public String getTriggerData() throws MQException

トリガデータを取得します。

MQINQ命令の，MQCA_TRIGGER_DATAセレクタに相当します。

●　public void setTriggerData(String data) throws MQException

トリガデータを設定します。

MQSET命令の，MQCA_TRIGGER_DATAセレクタに相当します。

パラメタ

data

トリガデータ（最大長のMQC.MQ_TRIGGER_DATA_LENGTH）を指定します。

●　public int getTriggerDepth() throws MQException

トリガのためのメッセージ登録数の下限値を取得します。

トリガタイプがMQC.MQTT_DEPTHの場合に，メッセージがキューにトリガのためのメッセージ登録数の下限値まで登録されたとき，トリガメッセージが発生します。

MQINQ命令の，MQIA_TRIGGER_DEPTHセレクタに相当します。

●　public void setTriggerDepth(int depth) throws MQException

トリガのためのメッセージ登録数の下限値を設定します。

トリガタイプがMQC.MQTT_DEPTHの場合に，メッセージがキューにトリガのためのメッセージ登録数の下限値まで登録されたとき，トリガメッセージが発生します。

MQSET命令の，MQIA_TRIGGER_DEPTHセレクタに相当します。

パラメタ

depth

トリガのためのメッセージ登録数の下限値を指定します。

●　public int getTriggerMessagePriority() throws MQException

トリガに対するメッセージ優先度しきい値を取得します。

MQINQ命令の，MQIA_TRIGGER_MSG_PRIORITYセレクタに相当します。

●　public void setTriggerMessagePriority(int priority) throws MQException

トリガに対するメッセージ優先度しきい値を設定します。

MQSET命令の，MQIA_TRIGGER_MSG_PRIORITYセレクタに相当します。

パラメタ

priority

トリガに対するメッセージ優先度しきい値を指定します。

●　public int getTriggerType() throws MQException

次に示す値でトリガタイプを取得します。

MQC.MQTT_NONE：定義なしです。トリガは発生しません。

MQC.MQTT_FIRST：キューが空き以外になった時に発生します。

MQC.MQTT_EVERY：キューにメッセージが到着するごとに発生します。

MQC.MQTT_DEPTH：キューに一定数のメッセージがある時に発生します。

MQINQ命令の，MQIA_TRIGGER_TYPEセレクタに相当します。

●　public void setTriggerType(int type) throws MQException

トリガタイプを設定します。

MQSET命令の，MQIA_TRIGGER_TYPEセレクタに相当します。

パラメタ

type

トリガタイプです。次に示す値のどれかを設定してください。

MQC.MQTT_NONE：定義なしです。トリガは発生しません。

MQC.MQTT_FIRST：キューが空き以外になった時に発生します。

MQC.MQTT_EVERY：キューにメッセージが到着するごとに発生します。

MQC.MQTT_DEPTH：キューに一定数のメッセージがある時に発生します。

MQQueueManagerクラス（Java）

このクラスは，MQのキューマネジャにアクセスします。

変数

●　public boolean isConnected

コネクション状態です。

コンストラクタ

●　public MQQueueManager(String queueManagerName ) throws MQException

MQQueueManagerコンストラクタです。

コネクションを接続し，キューマネジャをオープンします。MQOPEN命令の，MQOT_Q_MGRセレクタに相当します。

パラメタ

queueManagerName

キューマネジャ名称を指定します。

メソッド

●　public int getCharacterSet() throws MQException

コード化文字集合識別子を取得します。

MQINQ命令の，MQIA_CODED_CHAR_SET_IDセレクタに相当します。

●　public int getMaximumMessageLength() throws MQException

メッセージの最大長を取得します。

MQINQ命令の，MQIA_MAX_MSG_LENGTHセレクタに相当します。

●　public int getMaximumPriority() throws MQException

最大優先度を取得します。

MQINQ命令の，MQIA_MAX_PRIORITYセレクタに相当します。

●　public int getSyncpointAvailability() throws MQException

次に示す値で同期点の有効性を取得します。

MQC.MQSP_AVAILABLE：コミット単位とシンクポイントが利用できます。

MQC.MQSP_NOT_AVAILABLE：コミット単位とシンクポイントが利用できません。

MQINQ命令の，MQIA_SYNCPOINTセレクタに相当します。

●　public boolean getDistributionListCapable()

キューマネジャが配布リストをサポートするかどうかを指示します。

MQINQ命令の，MQIA_DIST_LISTSセレクタに相当します。

●　public synchronized void disconnect() throws MQException

キューマネジャへの接続を切り離します。

MQDISC命令に相当します。

●　public synchronized void commit() throws MQException

アプリケーションが同期点に達していることと，最後の同期点が永続化されてから発生した，すべてのメッセージの読み取りと書き込みをキューマネジャに指示します。

MQCMIT命令に相当します。

●　public synchronized void backout() throws MQException

最後の同期点以降に発生した，メッセージの読み取りと書き込みをすべてロールバックすることをキューマネジャに指示します。

MQBACK命令に相当します。

●　public synchronized MQQueue accessQueue(String queueName, int openOptions, String queueManagerName, String dynamicQueueName, String alternateUserId) throws MQException

キューをオープンします。

MQOPEN命令の，MQOT_Qセレクタに相当します。

パラメタ

queueName

キュー名称を指定します。

openOptions

オープンオプションを指定します。

queueManagerName

キューマネジャ名称を指定します。

dynamicQueueName

ダイナミックキュー名称を指定します。

alternateUserId

代替ユーザ識別子を指定します。

●　public synchronized MQQueue accessQueue(String queueName, int openOptions) throws MQException

キューをオープンします。

MQOPEN命令の，MQOT_Qセレクタに相当します。

パラメタ

queueName

キュー名称を指定します。

openOptions

オープンオプションを指定します。

●　public synchronized MQProcess accessProcess(String processName, int openOptions, String queueManagerName, String alternateUserId) throws MQException

プロセス定義をオープンします。

MQOPEN命令の，MQOT_PROCESSセレクタに相当します。

パラメタ

processName

プロセス定義名称を指定します。

openOptions

オープンオプションを指定します。

queueManagerName

キューマネジャ名称を指定します。

alternateUserId

代替ユーザ識別子を指定します。

●　public synchronized MQProcess accessProcess(String processName, int openOptions) throws MQException

プロセス定義をオープンします。

MQOPEN命令の，MQOT_PROCESSセレクタに相当します。

パラメタ

processName

プロセス定義名称を指定します。

openOptions

オープンオプションを指定します。

●　public synchronized MQDistributionList accessDistributionList(MQDistributionListItem[] litems, int openOptions, String alternateUserId) throws MQException

配布リストをオープンします。

配布リスト用MQOPEN命令に相当します。

パラメタ

litems

配布リストに組み込む項目を指定します。

openOptions

オープンオプションを指定します。

alternateUserId

代替ユーザ識別子を指定します。

●　public synchronized MQDistributionList accessDistributionList(MQDistributionListItem[] litems, int openOptions)

配布リストをオープンします。

配布リスト用MQOPEN命令に相当します。

パラメタ

litems

配布リストに組み込む項目を指定します。

openOptions

オープンオプションを指定します。

●　public synchronized void begin() throws MQException

新しい作業単位が開始されたことを示すシグナルをキューマネジャに送ります。

●　public Boolean isConnected() throws MQException

isConnectの変数の値を戻します。

MQCインタフェース（Java）

TP1/Message Queue Accessで指定できる値，およびデフォルト値の定義の一覧を示します。

各変数の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

変数

public final static int MQ_ACCOUNTING_TOKEN_LENGTH

public final static int MQ_APPL_IDENTITY_DATA_LENGTH

public final static int MQ_APPL_ORIGIN_DATA_LENGTH

public final static int MQ_CHANNEL_NAME_LENGTH

public final static int MQ_CLUSTER_NAME_LENGTH

public final static int MQ_CORREL_ID_LENGTH

public final static int MQ_CREATION_DATE_LENGTH

public final static int MQ_CREATION_TIME_LENGTH

public final static int MQ_FORMAT_LENGTH

public final static int MQ_GROUP_ID_LENGTH

public final static int MQ_MODE_NAME_LENGTH

public final static int MQ_MSG_HEADER_LENGTH

public final static int MQ_MSG_ID_LENGTH

public final static int MQ_PROCESS_APPL_ID_LENGTH

public final static int MQ_PROCESS_DESC_LENGTH

public final static int MQ_PROCESS_ENV_DATA_LENGTH

public final static int MQ_PROCESS_NAME_LENGTH

public final static int MQ_PROCESS_USER_DATA_LENGTH

public final static int MQ_PUT_TIME_LENGTH

public final static int MQ_PUT_APPL_NAME_LENGTH

public final static int MQ_PUT_DATE_LENGTH

public final static int MQ_Q_DESC_LENGTH

public final static int MQ_Q_MGR_DESC_LENGTH

public final static int MQ_Q_MGR_NAME_LENGTH

public final static int MQ_Q_NAME_LENGTH

public final static int MQ_TRIGGER_DATA_LENGTH

public final static int MQ_USER_ID_LENGTH

public final static byte MQACT_NONE[]

public final static int MQAT_UNKNOWN

public final static int MQAT_NO_CONTEXT

public final static int MQAT_CICS

public final static int MQAT_MVS

public final static int MQAT_IMS

public final static int MQAT_OS2

public final static int MQAT_DOS

public final static int MQAT_AIX

public final static int MQAT_UNIX

public final static int MQAT_QMGR

public final static int MQAT_OS400

public final static int MQAT_WINDOWS

public final static int MQAT_CICS_VSE

public final static int MQAT_VMS

public final static int MQAT_GUARDIAN

public final static int MQAT_VOS

public final static int MQAT_OPEN_TP1

public final static int MQAT_XDM

public final static int MQAT_TMS_4V

public final static int MQAT_DEFAULT

public final static int MQAT_USER_FIRST

public final static int MQAT_USER_LAST

public final static int MQAT_WINDOWS_NT

public final static int MQCA_FIRST

public final static int MQCA_APPL_ID

public final static int MQCA_BASE_Q_NAME

public final static int MQCA_CREATION_DATE

public final static int MQCA_CREATION_TIME

public final static int MQCA_DEAD_LETTER_Q_NAME

public final static int MQCA_ENV_DATA

public final static int MQCA_INITIATION_Q_NAME

public final static int MQCA_PROCESS_DESC

public final static int MQCA_PROCESS_NAME

public final static int MQCA_Q_DESC

public final static int MQCA_Q_MGR_DESC

public final static int MQCA_Q_MGR_NAME

public final static int MQCA_Q_NAME

public final static int MQCA_REMOTE_Q_MGR_NAME

public final static int MQCA_REMOTE_Q_NAME

public final static int MQCA_NAMES

public final static int MQCA_USER_DATA

public final static int MQCA_TRIGGER_DATA

public final static int MQCA_XMIT_Q_NAME

public final static int MQCA_DEF_XMIT_Q_NAME

public final static int MQCA_LAST_USED

public final static int MQCA_LAST

public final static int MQCA_CLUSTER_NAME

public final static int MQCA_REPOSITORY_NAME

public final static int MQCCSI_EMBEDDED

public final static int MQCCSI_DEFAULT

public final static int MQCCSI_INHERIT

public final static int MQCCSI_Q_MGR

public final static byte MQCI_NONE[]

public final static int MQCO_NONE

public final static int MQCO_DELETE

public final static int MQCO_DELETE_PURGE

public final static int MQDCC_NONE

public final static int MQDL_NOT_SUPPORTED

public final static int MQDL_SUPPORTED

public final static int MQEI_UNLIMITED

public final static int MQENC_NATIVE

public final static int MQENC_INTEGER_MASK

public final static int MQENC_DECIMAL_MASK

public final static int MQENC_FLOAT_MASK

public final static int MQENC_RESERVED_MASK

public final static int MQENC_INTEGER_UNDEFINED

public final static int MQENC_INTEGER_NORMAL

public final static int MQENC_INTEGER_REVERSED

public final static int MQENC_DECIMAL_UNDEFINED

public final static int MQENC_DECIMAL_NORMAL

public final static int MQENC_DECIMAL_REVERSED

public final static int MQENC_FLOAT_UNDEFINED

public final static int MQENC_FLOAT_IEEE_NORMAL

public final static int MQENC_FLOAT_IEEE_REVERSED

public final static int MQENC_FLOAT_S390

public final static int MQFB_NONE

public final static int MQFB_SYSTEM_FIRST

public final static int MQFB_EXPIRATION

public final static int MQFB_COA

public final static int MQFB_COD

public final static int MQFB_QUIT

public final static int MQFB_APPL_CANNOT_BE_STARTED

public final static int MQFB_TM_ERROR

public final static int MQFB_APPL_TYPE_ERROR

public final static int MQFB_STOPPED_BY_MSG_EXIT

public final static int MQFB_XMIT_Q_MSG_ERROR

public final static int MQFB_SYSTEM_LAST

public final static int MQFB_APPL_FIRST

public final static int MQFB_APPL_LAST

public final static int MQFB_NOT_A_REPOSITORY_MSG

public final static int MQFB_PAN

public final static int MQFB_NAN

public final static String MQFMT_NONE

public final static String MQFMT_ADMIN

public final static String MQFMT_DEAD_LETTER_HEADER

public final static String MQFMT_EVENT

public final static String MQFMT_PCF

public final static String MQFMT_STRING

public final static String MQFMT_TRIGGER

public final static String MQFMT_XMIT_Q_HEADER

public final static String MQFMT_DIST_HEADER

public final static String MQFMT_MD_EXTENSION

public final static String MQFMT_REF_MSG_HEADER

public final static byte MQGI_NONE

public final static int MQGMO_ALL_MSGS_AVAILABLE

public final static int MQGMO_ALL_SEGMENTS_AVAILABLE

public final static int MQGMO_COMPLETE_MSG

public final static int MQGMO_WAIT

public final static int MQGMO_NO_WAIT

public final static int MQGMO_SYNCPOINT

public final static int MQGMO_SYNCPOINT_IF_PERSISTENT

public final static int MQGMO_NO_SYNCPOINT

public final static int MQGMO_BROWSE_FIRST

public final static int MQGMO_BROWSE_NEXT

public final static int MQGMO_BROWSE_MSG_UNDER_CURSOR

public final static int MQGMO_MSG_UNDER_CURSOR

public final static int MQGMO_LOCK

public final static int MQGMO_UNLOCK

public final static int MQGMO_ACCEPT_TRUNCATED_MSG

public final static int MQGMO_CURRENT_VERSION

public final static int MQGMO_FAIL_IF_QUIESCING

public final static int MQGMO_CONVERT

public final static int MQGMO_NONE

public final static int MQGMO_LOGICAL_ORDER

public final static int MQGMO_VERSION_1

public final static int MQGMO_VERSION_2

public final static int MQGMO_VERSION_3

public final static char MQGS_NOT_IN_GROUP

public final static char MQGS_MSG_IN_GROUP

public final static char MQGS_LAST_MSG_IN_GROUP

public final static int MQIA_FIRST

public final static int MQIA_APPL_TYPE

public final static int MQIA_CODED_CHAR_SET_ID

public final static int MQIA_CURRENT_Q_DEPTH

public final static int MQIA_DEF_INPUT_OPEN_OPTION

public final static int MQIA_DEF_PERSISTENCE

public final static int MQIA_DEF_PRIORITY

public final static int MQIA_DEFINITION_TYPE

public final static int MQIA_HARDEN_GET_BACKOUT

public final static int MQIA_INHIBIT_GET

public final static int MQIA_INHIBIT_PUT

public final static int MQIA_MAX_HANDLES

public final static int MQIA_USAGE

public final static int MQIA_MAX_MSG_LENGTH

public final static int MQIA_MAX_PRIORITY

public final static int MQIA_MAX_Q_DEPTH

public final static int MQIA_MSG_DELIVERY_SEQUENCE

public final static int MQIA_OPEN_INPUT_COUNT

public final static int MQIA_OPEN_OUTPUT_COUNT

public final static int MQIA_NAME_COUNT

public final static int MQIA_Q_TYPE

public final static int MQIA_RETENTION_INTERVAL

public final static int MQIA_SHAREABILITY

public final static int MQIA_TRIGGER_CONTROL

public final static int MQIA_TRIGGER_INTERVAL

public final static int MQIA_TRIGGER_MSG_PRIORITY

public final static int MQIA_TRIGGER_TYPE

public final static int MQIA_TRIGGER_DEPTH

public final static int MQIA_SYNCPOINT

public final static int MQIA_PLATFORM

public final static int MQIA_MAX_UNCOMMITTED_MSGS

public final static int MQIA_SCOPE

public final static int MQIA_LAST_USED

public final static int MQIA_LAST

public final static int MQIA_DIST_LISTS

public final static int MQIA_DEF_BIND

public final static int MQIAV_NOT_APPLICABLE

public final static int MQMD_VERSION_1

public final static int MQMD_VERSION_2

public final static int MQMD_CURRENT_VERSION

public final static int MQMDS_PRIORITY

public final static int MQMDS_FIFO

public final static int MQMF_SEGMENTATION_INHIBITED

public final static int MQMF_NONE

public final static int MQMF_SEGMENTATION_ALLOWED

public final static int MQMF_LAST_SEGMENT

public final static int MQMF_SEGMENT

public final static int MQMF_MSG_IN_GROUP

public final static int MQMF_LAST_MSG_IN_GROUP

public final static byte MQMI_NONE[]

public final static int MQMO_NONE

public final static int MQMO_MATCH_MSG_ID

public final static int MQMO_MATCH_CORREL_ID

public final static int MQMO_MATCH_GROUP_ID

public final static int MQMO_MATCH_MSG_SEQ_NUMBER

public final static int MQMO_MATCH_OFFSET

public final static int MQMT_SYSTEM_FIRST

public final static int MQMT_REQUEST

public final static int MQMT_REPLY

public final static int MQMT_DATAGRAM

public final static int MQMT_REPORT

public final static int MQMT_SYSTEM_LAST

public final static int MQMT_APPL_FIRST

public final static int MQMT_APPL_LAST

public final static byte MQOII_NONE

public final static int MQOL_UNDEFINED

public final static int MQOO_INPUT_AS_Q_DEF

public final static int MQOO_INPUT_SHARED

public final static int MQOO_INPUT_EXCLUSIVE

public final static int MQOO_BROWSE

public final static int MQOO_OUTPUT

public final static int MQOO_SAVE_ALL_CONTEXT

public final static int MQOO_ALTERNATE_USER_AUTHORITY

public final static int MQOO_FAIL_IF_QUIESCING

public final static int MQOO_PASS_IDENTITY_CONTEXT

public final static int MQOO_PASS_ALL_CONTEXT

public final static int MQOO_SET_IDENTITY_CONTEXT

public final static int MQOO_SET_ALL_CONTEXT

public final static int MQOO_INQUIRE

public final static int MQOO_SET

public final static int MQOO_BIND_AS_Q_DEF

public final static int MQOO_BIND_ON_OPEN

public final static int MQOO_BIND_NOT_FIXED

public final static int MQOT_Q

public final static int MQOT_PROCESS

public final static int MQOT_Q_MGR

public final static int MQPER_PERSISTENT

public final static int MQPER_NOT_PERSISTENT

public final static int MQPER_PERSISTENCE_AS_Q_DEF

public final static int MQPL_MVS

public final static int MQPL_OS2

public final static int MQPL_AIX

public final static int MQPL_OS400

public final static int MQPL_OPEN_TP1

public final static int MQPL_XDM

public final static int MQPL_TMS4V

public final static int MQPMO_SYNCPOINT

public final static int MQPMO_NO_SYNCPOINT

public final static int MQPMO_NO_CONTEXT

public final static int MQPMO_DEFAULT_CONTEXT

public final static int MQPMO_PASS_IDENTITY_CONTEXT

public final static int MQPMO_PASS_ALL_CONTEXT

public final static int MQPMO_SET_IDENTITY_CONTEXT

public final static int MQPMO_SET_ALL_CONTEXT

public final static int MQPMO_ALTERNATE_USER_AUTHORITY

public final static int MQPMO_FAIL_IF_QUIESCING

public final static int MQPMO_NONE

public final static int MQPMO_NEW_MSG_ID

public final static int MQPMO_NEW_CORREL_ID

public final static int MQPMO_LOGICAL_ORDER

public final static int MQPMO_VERSION_1

public final static int MQPMO_VERSION_2

public final static int MQPMO_CURRENT_VERSION

public final static int MQPMRF_NONE

public final static int MQPMRF_MSG_ID

public final static int MQPMRF_CORREL_ID

public final static int MQPMRF_GROUP_ID

public final static int MQPMRF_FEEDBACK

public final static int MQPMRF_ACCOUNTING_TOKEN

public final static int MQPRI_PRIORITY_AS_Q_DEF

public final static int MQQA_GET_INHIBITED

public final static int MQQA_GET_ALLOWED

public final static int MQQA_PUT_INHIBITED

public final static int MQQA_PUT_ALLOWED

public final static int MQQA_SHAREABLE

public final static int MQQA_NOT_SHAREABLE

public final static int MQQA_BACKOUT_HARDENED

public final static int MQQA_BACKOUT_NOT_HARDENED

public final static int MQQDT_PREDEFINED

public final static int MQQDT_PERMANENT_DYNAMIC

public final static int MQQDT_TEMPORARY_DYNAMIC

public final static int MQQT_LOCAL

public final static int MQQT_MODEL

public final static int MQQT_ALIAS

public final static int MQQT_REMOTE

public final static int MQQT_CLUSTER

public final static int MQRO_EXCEPTION

public final static int MQRO_EXCEPTION_WITH_DATA

public final static int MQRO_EXCEPTION_WITH_FULL_DATA

public final static int MQRO_EXPIRATION

public final static int MQRO_EXPIRATION_WITH_DATA

public final static int MQRO_EXPIRATION_WITH_FULL_DATA

public final static int MQRO_COA

public final static int MQRO_COA_WITH_DATA

public final static int MQRO_COA_WITH_FULL_DATA

public final static int MQRO_COD

public final static int MQRO_COD_WITH_DATA

public final static int MQRO_COD_WITH_FULL_DATA

public final static int MQRO_COPY_MSG_ID_TO_CORREL_ID

public final static int MQRO_PASS_CORREL_ID

public final static int MQRO_NEW_MSG_ID

public final static int MQRO_PASS_MSG_ID

public final static int MQRO_DEAD_LETTER_Q

public final static int MQRO_DISCARD_MSG

public final static int MQRO_NONE

public final static int MQRO_REJECT_UNSUP_MASK

public final static int MQRO_ACCEPT_UNSUP_MASK

public final static int MQRO_ACCEPT_UNSUP_IF_XMIT_MASK

public final static int MQRO_PAN

public final static int MQRO_NAN

public final static char MQSEG_INHIBITED

public final static char MQSS_NOT_A_SEGMENT

public final static int MQSP_AVAILABLE

public final static int MQSP_NOT_AVAILABLE

public final static char MQSS_LAST_SEGMENT

public final static char MQSS_SEGMENT

public final static int MQTC_OFF

public final static int MQTC_ON

public final static int MQTT_NONE

public final static int MQTT_FIRST

public final static int MQTT_EVERY

public final static int MQTT_DEPTH

public final static int MQUS_NORMAL

public final static int MQUS_TRANSMISSION

public final static int MQWI_UNLIMITED

Javaのサンプルアプリケーション

Javaのサンプルアプリケーションです。処理の流れを次の図に示します。

図6‒2　処理の流れ（Javaの場合）

Javaのサンプルコーディング

コーディング例を次に示します。

import JP.co.Hitachi.soft.MQ.Access.*;
                            // import the MQAccess package

public class MQAccessSample
{
  private String QMgrName = " ";  // queue manager name
  private MQQueueManager QMgr;    // MQQueueManager object
  public MQAccessSample()
  {
    try {
      // connect to the queue manager
      QMgr = new MQQueueManager(QMgrName);

      // set the open options
      int openOptions = MQC.MQOO_OUTPUT |
                                  MQC.MQOO_INPUT_AS_Q_DEF ;

      // open the queue
      MQQueue LocalQ =
          QMgr.accessQueue("dynq1", openOptions, null,
                                              null, null);

      // create a message object
      MQMessage PutMessage = new MQMessage();
      // UTF format message data
  PutMessage.writeUTF("******** sample put data ********");

      // set the put message options
      MQPutMessageOptions mqpmo= new MQPutMessageOptions();
      mqpmo.options = MQC.MQPMO_SYNCPOINT;

      // begin local transaction
      QMgr.begin();

      // put the message
      LocalQ.put(PutMessage, mqpmo);

      // commit local transaction
      QMgr.commit();

      // create a message object
      MQMessage GetMessage = new MQMessage();

      // set the get message id
      GetMessage.messageId = PutMessage.messageId;

      // set the get message options
      MQGetMessageOptions mqgmo= new MQGetMessageOptions();
      mqgmo.options = MQC.MQGMO_SYNCPOINT |
                                        MQC.MQGMO_NO_WAIT;

      // begin local transaction
      QMgr.begin();

      // get the message
      LocalQ.get(GetMessage, mqgmo);

      // commit local transaction
      QMgr.commit();

      // display the get message
      String msgText = GetMessage.readUTF();
      System.out.println("The message is: " + msgText);

      // close the queue
      LocalQ.close();

      // disconnect from the queue manager
      QMgr.disconnect();
    }
    catch (MQException ex)
    {
      // MQ error
      System.out.println
      ("An MQ error occurred : Completion code " +
      ex.completionCode + " Reason code " + ex.reasonCode);
    }
    catch (java.io.IOException ex)
    {
      // buffer error
      System.out.println
        ("An error occurred whilst writing to the buffer:"
                                                    + ex);
    }
  }

  public static void main(String args[])
  {
    // execute this sample program
    MQAccessSample sample = new MQAccessSample();
  }
}

7　MQCクライアント機能のJMSインタフェース

この章では，MQCクライアント機能のJMSインタフェースについて説明します。

JMSインタフェースのJavaパッケージ

MQCクライアント機能のJMSインタフェースは，パッケージとして次のインタフェースを提供します。

jp.co.Hitachi.soft.mqadaptor

Javaクラス（JMSインタフェース）パッケージです。

MQCクライアント機能のJMSインタフェース一覧

MQCクライアント機能が提供するJMSインタフェースの概要について説明します。

Java言語のJMSインタフェースの一覧を次の表に示します。なお，Oracle Corporationが提供するJMS 1.0とMQCクライアント機能のJMSインタフェースとの機能差については，「付録B　JMS仕様とMQCクライアント機能のJMSインタフェースとの差異」を参照してください。

表7‒1　JMSインタフェースの一覧

クラス名

機能

BytesMessage

解釈されないバイトのストリームを含むメッセージです。

ConnectionMetaData

Connectionを示すインフォメーションを提供します。

DeliveryMode

JMSによってサポートされる配送モードです。

Destination

Queue

プロバイダ特有のキュー名をカプセル化します。

Message

すべてのJMSメッセージのルートインタフェースです。

MessageConsumer

QueueReceiver

クライアントはキューに届けられたメッセージを受け取ります。

MessageProducer

QueueSender

クライアントはキューにメッセージを送ります。

QueueBrowser

クライアントがキューのメッセージを取り去らないで参照します。

QueueConnection

Connection

JMS PTPプロバイダへのアクティブな接続です。

QueueConnectionFactory

ConnectionFactory

クライアントがJMS PTPプロバイダでQueueConnectionを生成するためにQueueConnectionFactoryを使用します。

QueueSession

Session

QueueReceiver，QueueSender，QueueBrowser，およびTemporaryQueueを作るためのメソッドを提供します。

TemporaryQueue

QueueConnectionがアクティブ状態のときに生成されるユニークなQueueオブジェクトです。

インタフェースの一覧を次の表に示します。

表7‒2　インタフェースの一覧（JMSインタフェース）

インタフェース名

機能

MQC

TP1/Message Queueの定義値です。

JMSインタフェース使用時のJava例外クラスの一覧を次の表に示します。

表7‒3　例外クラスの一覧（JMSインタフェース）

クラス名

例外をスローするタイミング

IllegalStateException

メソッドが不正な場合，不適当なタイミングで起動された場合，またはプロバイダが要求されたオペレーションを実行するための適切な状態でない場合

InvalidClientIDException

クライアントが接続のクライアントIDをプロバイダによって拒否される値にセットしようとした場合

InvalidDestinationException

宛先がプロバイダによって理解されない，つまり宛先が有効でない場合

InvalidSelectorException

JMSクライアントが不正な構文のメッセージセレクタをプロバイダに指定しようとした場合

JMSException

すべてのJMS例外のルートクラスであるため，特定のタイミングに該当しません。

JMSSecurityException

クライアントによって送られたユーザ名またはパスワードが，プロバイダによって拒否された場合

MessageEOFException

StreamMessageかBytesMessageが読みこまれている最中に，ストリームが予期しないで終了に達した場合

MessageFormatException

JMSクライアントがメッセージによってサポートされていないデータタイプを使おうとした場合，またはメッセージデータを間違ったタイプで読み込もうとした場合

MessageNotReadableException

JMSクライアントが書き込み専用のメッセージを読み込もうとした場合

MessageNotWriteableException

JMSクライアントが読み込み専用のメッセージに書き込もうとした場合

ResourceAllocationException

プロバイダがメソッドによって要求されたリソースを割り当てられない場合

TransactionInProgressException

トランザクションが進行中であるために，オペレーションが無効の場合

TransactionRolledBackException

Session.commitの呼び出しの結果が現在のトランザクションのロールバックに帰着する場合

JMSインタフェース継承図

JMSインタフェースの継承図と例外クラスの継承図を次の図に示します。

図7‒1　JMSインタフェース継承図

図7‒2　例外クラス継承図

JMSインタフェースのメソッドとMQIの対応

JMSインタフェースのメソッドの発行時に，内部でMQIが発行される場合があります。その対応を次の表に示します。

表7‒4　メソッド発行時に内部で発行されるMQI

Queueオブジェクト使用時

TemporaryQueueオブジェクト使用時

発行されるMQI

インタフェース

メソッド

インタフェース

メソッド

QueueSession

createSender

createReceiver

QueueSession

createTemporaryQueue

MQOPEN

QueueBrowser

getEnumeration

QueueSender

QueueReceiver

QueueBrowser

close

QueueSession

close

MQCLOSE

QueueSender

send

（Queue未指定時）

QueueSender

send

（Queue未指定時）

MQPUT

QueueSender

send

（Queue指定時）

QueueSender

send

（Queue指定時）

MQPUT1

QueueReceiver

receive

receiveNoWait

QueueReceiver

receive

receiveNoWait

MQGET

Enumeration※

hasMoreElements

nextElement

Enumeration※

hasMoreElements

nextElement

注※

QueueBrowserインタフェースのgetEnumerationメソッドによって取得したEnumerationオブジェクトです。

なお，Cosminexus Component Containerのアソシエーション機能によって，各キューに対してMQCLOSE，MQOPENの順に発行されます。

JMSメッセージのヘッダとプロパティ

JMSメッセージとTP1/Message Queueのメッセージとの対応

MQCクライアント機能のJMSインタフェースで作成したメッセージ（JMSメッセージ）と，TP1/Message Queueのメッセージとの対応を次の図に示します。

図7‒3　JMSメッセージとTP1/Message Queueのメッセージとの対応

JMSメッセージは，ヘッダ，プロパティ，およびメッセージ本体で構成されています。

一般的なJMSメッセージのヘッダは，クライアントとプロバイダの双方がメッセージを識別・送信するための値を含みます。プロパティは，アプリケーション固有の値を格納するためのフィールドを定義する組み込み機能を提供します。

TP1/Message Queue Accessでは，図7-3に示すとおり，JMSメッセージのヘッダとプロパティがMQMD構造体に対応づけられてキューに格納されます。また，プロパティは，MQMD構造体の各フィールドに値を設定・取得するために使用されます。アプリケーション固有のプロパティ値はTP1/Message Queueのキューには格納されません。

JMSヘッダと対応するMQMD構造体のフィールド，およびJMSプロパティと対応するMQMD構造体のフィールドを次の表に示します。設定者が「クライアント」以外のヘッダは指定できません。

表7‒5　JMSヘッダと対応するMQMD構造体のフィールド

ヘッダ

型

対応するMQMD構造体のフィールド

設定者

備考

JMSDestination

Destination

−

送信時プロバイダ

送信時に設定しても無視されます。

JMSMessageID

String

MsgId

送信時プロバイダ

送信時に設定しても無視されます。

JMSTimestamp

long

PutDate，PutTime

送信時プロバイダ

送信時に設定しても無視されます。

JMSRedelivered

boolean

BackoutCount

受信時プロバイダ

送信時に設定しても無視されます。

JMSCorrelationID

String※1

CorrelId

クライアント（Message）

−

JMSReplyTo

Destination

ReplyToQ，ReplyToQMgr

クライアント（Message）

−

JMSType

String

−

クライアント（Message）

TP1/Message Queueでは使用されません。

JMSDeliveryMode

int

Persistence

クライアント（QueueSender）

−

JMSExpiration

long

Expiry

クライアント（QueueSender）

−

JMSPriority

int

Priority

クライアント（QueueSender）

−

表7‒6　JMSプロパティと対応するMQMD構造体のフィールド

プロパティ

型

対応するMQMD構造体のフィールド

設定者

備考

JMSXAppID

String

PutApplName

送信時プロバイダ

送信時に設定しても無視されます。

JMSXUserID

String

UserIdentifier

送信時プロバイダ

送信時に設定しても無視されます。

JMSXDeliveryCount

int

BackoutCount

受信時プロバイダ

送信時に設定しても無視されます。

JMSXGroupID※1

String※2

GroupId

クライアント（Message）

−

JMSXGroupSeq

int

MsgSeqNumber

クライアント（Message）

−

JMS_HITACHI_PutApplType

int

PutApplType

送信時プロバイダ

送信時に設定しても無視されます。

JMS_HITACHI_CodedCharSetId

int

CodedCharSetId

クライアント（Message）

−

JMS_HITACHI_Encoding

int

Encoding

クライアント（Message）

−

JMS_HITACHI_Feedback

int

Feedback

クライアント（Message）

−

JMS_HITACHI_MsgType

int

MsgType

クライアント（Message）

−

JMS_HITACHI_Report

int

Report

クライアント（Message）

−

JMS_HITACHI_Format

String※3

Format

クライアント（Message）

−

JMS_HITACHI_MQMF_LAST_MSG_IN_GROUP※1

boolean

MsgFlags

クライアント（Message）

−

（凡例）

−：該当しません。

注※1

プロパティJMSXGroupIDの文字列が有効かどうか，またプロパティJMS_HITACHI_MQMF_LAST_MSG_IN_GROUPの値によって，MQMD構造体のMsgFlagsフィールドに次の値が代入されます。

JMSXGroupIDの文字列

JMS_HITACHI_MQMF_LAST_MSG_IN_GROUPの値

false

true

無効

MQMF_NONE

有効

MQMF_MSG_IN_GROUP

MQMF_LAST_MSG_IN_GROUP

注※2

String型から長さ24バイトのbyte型配列（TP1/Message QueueのMQBYTE24型）に変換された結果，24バイトを超える部分は切り捨てられます。

文字列の先頭が「ID:」ではない場合，UTF-8ストリングとしてエンコードされます。さらに，メッセージの送信を契機に，ヘッダとプロパティに格納された文字列は，先頭が「ID:」で以降が48けたの16進数の文字列に置き換えられます。

文字列の先頭が「ID:」の場合，「ID:＋16進数」と解釈されて16進数がMQBYTE24型に変換されます。この場合，16進数の部分が48けたに満たないときは，不足部分は48けたまで「0」を補われてMQBYTE24型に変換されます。また，16進数の部分が48けたを超えるときは，超える部分は切り捨てられます。

次に示す1.〜4.の文字列にあてはまる場合は無効な文字列と見なされ，対応するMQMD構造体のフィールドにはMQCI_NONEまたはMQGI_NONEが格納されます。

nullの場合

先頭が「ID:」で，後続の文字がない場合

先頭が「ID:」で，後続の文字は48文字目まですべて「0」の場合

先頭が「ID:」で，後続の文字が16進数として解釈できない場合

注※3

String型から長さ8バイトのchar型配列（TP1/Message QueueのMQCHAR8型）に変換（UTF-8から7ビットASCIIに変換）された結果，8バイトを超える部分は切り捨てられます。

JMSプロパティ読み込み時の型変換

JMSプロパティに設定できる型は，boolean，byte，short，int，long，float，double，およびStringです。書き込まれたときとは異なる型でJMSプロパティを読み込む場合，次の表に示すように型が変換されます。

表7‒7　JMSプロパティの型変換

プロパティの型

読み込むときの型

boolean

byte

short

int

long

float

double

String

書き込まれたときの型

boolean

○

○

byte

○

○

○

○

○

short

○

○

○

○

int

○

○

○

long

○

○

float

○

○

○

double

○

○

String※

○

○

○

○

○

○

○

○

（凡例）

○：型が変換されます。

空白：型が変換されません。この場合，読み込み時に例外がスローされます。

注※

String型で書き込まれた文字列が変換される場合，書き込まれた文字列が変換後の型のラッパークラスのvalueOfメソッドによって解釈ができないときは，例外がスローされる場合があります。

メッセージセレクタ

QueueSession.createReceiverメソッドまたはcreateBrowserメソッドの引数に，メッセージセレクタを指定できます。メッセージセレクタは，受信するメッセージの条件を指定するためのjava.lang.String型の構文です。受信側アプリケーションはメッセージセレクタを使用することによって，構文の条件に合うヘッダの値を持つメッセージをキューから受信できます。

メッセージセレクタには，識別子，比較演算子，リテラル，および論理演算子を組み合わせた構文を指定します。

識別子

次に示す識別子を指定できます。

ヘッダのJMSMessageID

ヘッダのJMSCorrelationID

識別子は半角英字であり，大文字と小文字が区別されます。識別子はそれぞれ１回だけ指定できます。不正な識別子を指定した場合，または同じ識別子を複数回指定した場合は，InvalidSelectorExceptionが発生します。

比較演算子

等号（=）だけを指定できます。比較演算子は半角記号です。不正な比較演算子を指定した場合は，InvalidSelectorExceptionが発生します。

リテラル

各識別子に指定できるリテラルを次に示します。不正なリテラルを指定した場合は，InvalidSelectorExceptionが発生します。

ヘッダのJMSMessageIDまたはJMSCorrelationIDの場合

文字列リテラルを指定できます。

文字列リテラルはアポストロフィ（'）で囲んでください。文字列リテラルにアポストロフィ（'）を含む場合はアポストロフィ（'）を二つ記述します。例えば"literal's"を指定する場合は，次に示すとおり記述します。

'literal''s'

なお，リテラルは次のどちらかの形式で指定できます。指定されたリテラルは受信時に，JMSMessageIDヘッダはMQMDのMsgIdフィールドに，JMSCorrelationIDヘッダはMQMDのCorrelIdフィールドに変換されます。

文字列の先頭が「ID:」ではない場合，UTF-8ストリングとしてエンコードされます。String型から長さ24バイトのbyte型配列（TP1/Message QueueのMQBYTE24型）に変換された結果，24バイトを超える部分は切り捨てられます。

文字列の先頭が「ID:」の場合，「ID:＋16進数」と解釈されて16進数がMQBYTE24型に変換されます。この場合，16進数の部分が48けたに満たないときは，不足部分は48けたまで「0」を補われてMQBYTE24型に変換されます。また，16進数の部分が48けたを超えるときは，超える部分は切り捨てられます。

次に示す1.〜4.の文字列にあてはまる場合は無効な文字列と見なされ，対応するMQMD構造体のフィールドにはMQMI_NONE，またはMQCI_NONEが格納されます。

nullの場合

先頭が「ID:」で，後続の文字がない場合

先頭が「ID:」で，後続の文字は48文字目まですべて「0」の場合

先頭が「ID:」で，後続の文字が16進数として解釈できない場合

論理演算子

ANDだけを指定できます。論理演算子は半角英字であり，大文字だけを指定できます。論理演算子の前後には空白が必要です。

上記条件を満たさない場合は，InvalidSelectorExceptionが発生します。

指定できる構文の例

メッセージセレクタに指定できる構文の例を次に示します。

JMSMessageID = 'aaa'
JMSCorrelationID = 'bbb'
JMSMessageID = 'aaa' AND JMSCorrelationID = 'bbb'
JMSCorrelationID = 'aaa' AND JMSMessageID = 'bbb'

アプリケーション作成時の注意事項（JMS）

TP1/Message Queue AccessのJMSインタフェースでは，論理コネクション（QueueSession）と物理コネクションを1対1で対応づける必要があります。このため，アプリケーション（EJB）のResource Referenceタブで必ずUnshareableを設定してください。Shareableを設定して，アプリケーションで複数のQueueSessionを作成すると，例外がスローされます。

QueueSession，およびQueueSessionを使用して生成したオブジェクトを複数のスレッドやアプリケーション間で共有することはできません。複数のスレッドやアプリケーション間で共有した場合の動作は保証できません。

一つのQueueSessionが生成されるたびに，一つの物理コネクションが消費されます。このため，アプリケーションで使用しなくなったQueueSessionに対しては必ずQueueSessionのcloseメソッドを発行し，物理コネクションを解放するようにしてください。

QueueSessionの生成時にtransactedパラメタにtrueを指定した場合の注意事項を次に示します。

該当するQueueSessionから生成したQueueSender，QueueReceiverオブジェクトからのsendまたはreceiveメソッドの発行を契機に，ローカルトランザクションが開始されます。したがって，これらのメソッドの発行前にQueueSessionのcommitまたはrollbackメソッドを発行すると，例外がスローされます。

該当するQueueSessionから生成したQueueSender，QueueReceiverオブジェクトからのsendまたはreceiveメソッドの発行前にユーザトランザクションを開始したときは，sendまたはreceiveメソッドはユーザトランザクションに含まれます。ユーザトランザクションによってトランザクションを開始した場合は，ユーザトランザクションからcommitまたはrollbackメソッドを発行してください。ユーザトランザクションが開始済みの状態でQueueSessionからcommitまたはrollbackメソッドを発行すると，例外がスローされます。

コミットまたはロールバックをするためには，QueueSessionオブジェクトのcommitまたはrollbackメソッドを使用してください。

なお，ローカルトランザクションが開始済みの状態のときは，ユーザトランザクションのコミットまたはロールバックは受け付けられません。

QueueConnectionのcreateQueueSessionメソッドとQueueSessionのcloseメソッドを繰り返し発行すると，QueueConnectionのcreateQueueSessionメソッドで回線障害によってコネクション確立に失敗し，例外がスローされる場合があります。このため，このようなアプリケーションを作成する場合はコネクションプーリング機能を使用してください。

QueueReceiverの生成時に指定するキューが共用できない属性（Shareability属性がMQQA_NOT_SHAREABLE）の場合，QueueReceiverを複数生成できません。

QueueReceiverを複数生成する場合は，共用できる属性（Shareability属性がMQQA_SHAREABLE）のキューを指定して，QueueReceiverを生成するようにしてください。

次に示すメソッドを発行してキューからメッセージを取得する場合は，メッセージデータはコード変換されません。

QueueReceiverインタフェースのreceiveメソッドおよびreceiveNoWaitメソッド

QueueBrowserインタフェースのgetEnumerationメソッドによって取得したEnumerationオブジェクトのnextElementメソッド

Message-Driven Beanアプリケーションを使用した場合，アプリケーションのPropertiesのPooled InstancesでMaximumに指定した値の分だけMessage-Driven Beanキュー監視機能の監視スレッドが起動してキューを監視します。Maximumに0を指定した場合は，監視スレッド数は1となります。

Message-Driven Beanを使用する場合，リソースアダプタのトランザクションサポートのレベルをXATransactionに指定してください。

XATransaction以外を指定すると，Message-Driven Beanを含むアプリケーションのデプロイに失敗します。

uCosminexus Application ServerのDeployツール上に表示されるリソースアダプタの表示名は，「TP1/Message Queue - Access」となります。

アプリケーション使用時の注意事項（JMS）

リソースアダプタのトランザクションサポートのレベルにXATransactionを指定する場合，Cosminexus Component Containerのライトトランザクションの設定を無効にする必要があります。

ライトトランザクションの設定を無効にする場合は，"/opt/Cosminexus/CC/server

/usrconf/ejb/<サーバ名>/usrconf.properties"ファイルに次の指定をしてください。

ejbserver.distributedtx.XATransaction.enabled=true

falseを指定した場合，または指定を省略した場合は，リソースアダプタのデプロイに失敗します。

MDBキュー監視機能で監視するキューを二つ以上のスレッドで監視する場合，サーバ側で作成するキューの属性を同時に何度も入力用にオープンできるようにする必要があります。mqaqueatl（モデルキューの属性定義）の-sオプション（共用性）にshareble（キューを共用できます）を指定してください。notshareble（キューを共用できません）を指定した場合，起動する監視スレッドは一つです。

JMSインタフェースでの物理コネクションの使用数では，アプリケーションによるQueueSessionの同時使用数以外に，トランザクションリカバリ用に使用する一つの物理コネクションをCosminexus Component Containerが使用する場合があります。このため，MQCゲートウェイサーバはアプリケーションによるQueueSessionの同時使用数より多く起動しておく必要があります。Cosminexus Component Containerが使用する物理コネクションの数は，マニュアル「Cosminexus 機能解説」または「Cosminexus V9 アプリケーションサーバ機能解説基本・開発編(コンテナ共通機能)」の，トランザクションリカバリについて説明している個所の注意事項に記載されているコネクション数の説明を参照してください。

MQCリスナサーバ通信環境定義の要求受信監視タイマ値はクライアントアプリケーションがQueueSessionを生成してからクローズするまでの間，切断されることのないように設定する必要があります。

QueueSessionのクローズ前にMQCリスナサーバからコネクションが切断されるとQueueSessionおよびQueueSessionを使用して生成したオブジェクトに対して発行したメソッドが例外を返すことがあります。

Cosminexus Component Containerのコネクションプーリング機能を使用する場合，MQCリスナサーバ通信環境定義の要求受信監視タイマ値はCosminexus Component Containerのコネクションタイムアウト値より長く設定する必要があります。MQCリスナサーバ通信環境定義の要求受信監視タイマ値がCosminexus Component Containerのコネクションタイムアウト値より短いとMQCリスナサーバで要求受信監視によるタイムアウトが発生する場合があります。なお，タイムアウトとなったコネクションはコネクションプーリング機能によって再利用されるときに，再確立されます。

Cosminexus Component Containerのコネクションプーリング機能を使用するかどうかに関係なく，ユーザアプリケーションがQueueSessionをCosminexus Component Containerのユーザトランザクション中の状態でクローズをするとその物理コネクションは切断されないでトランザクション決着待ちの状態で継続されます。このため，このようなアプリケーションを作成する場合は，MQCゲートウェイサーバをコネクションの継続分を考慮して起動しておく必要があります。なお，トランザクション決着待ち状態で継続したコネクションはアプリケーションからユーザトランザクションのコミット，ロールバック，アプリケーションの停止，またはCosminexus Component Containerのトランザクションタイムアウトの検知によって切断されます。

MDBキュー監視機能の監視スレッドが異常停止すると，「Message-driven Bean:<Bean名> caught an error from TP1 Message Queue. The error message is :」のあとにKFCA31345-Wメッセージがコンソールに出力されます。MDBアプリケーションをアンデプロイする前にすべての監視スレッドが停止すると，KFCA31346-Eのメッセージが出力されます。すべての監視スレッドが停止した場合，一度MDBアプリケーションをアンデプロイし，再度MDBアプリケーションをデプロイしてください。監視スレッドの異常停止に関する対策についての詳細は，「8.2　メッセージ一覧」を参照してください。

環境変数DCMQCCLTPORTを設定して，リソースアダプタのトランザクションサポートのレベルにXATransactionを指定する場合は，MQCリスナサーバ通信環境定義のmqcenv定義コマンドの要求受信監視タイマ値（-rオプション）で「監視しない(0)」を設定してください。設定しない場合，MQCONN命令でMQRC_UNEXPECTED_ERROR（2195）のリターンコードが返され，MQCリスナサーバとの接続に失敗することがあります。

ただし，要求受信監視タイマ値（-rオプション）で「監視しない(0)」を設定した場合は，検知できない回線障害が発生したときに，MQCゲートウェイサーバが使用できなくなるため，この件も考慮したアプリケーションを設計してください。

トランザクションリカバリ用物理コネクションは，MQCリスナサーバの要求受信監視によるタイムアウトによって切断される場合があります。なお，タイムアウトとなったコネクションは，トランザクションリカバリが発生した場合に再確立されます。

BytesMessageインタフェース（JMS）

BytesMessageインタフェースは，解釈されていないバイトストリームを含むメッセージを送信するために使用します。

形式

public interface BytesMessage
extends Message
{
  public boolean readBoolean() throws JMSException;
  public byte readByte() throws JMSException;
  public int readUnsignedByte() throws JMSException;
  public short readShort() throws JMSException;
  public int readUnsignedShort() throws JMSException;
  public char readChar() throws JMSException;
  public int readInt() throws JMSException;
  public long readLong() throws JMSException;
  public float readFloat() throws JMSException;
  public double readDouble() throws JMSException;
  public java.lang.String readUTF() throws JMSException;
  public int readBytes(byte[] value) throws JMSException;
  public int readBytes(byte[] value, int length) throws JMSException;
  public void writeBoolean(boolean value) throws JMSException;
  public void writeByte(byte value) throws JMSException;
  public void writeShort(short value) throws JMSException;
  public void writeChar(char value) throws JMSException;
  public void writeInt(int value) throws JMSException;
  public void writeLong(long value) throws JMSException;
  public void writeFloat(float value) throws JMSException;
  public void writeDouble(double value) throws JMSException;
  public void writeUTF(java.lang.String value) throws JMSException;
  public void writeBytes(byte[] value) throws JMSException;
  public void writeBytes(byte[] value, int offset, int length) throws JMSException;
  public void writeObject(java.lang.Object value) throws JMSException;
  public void reset() throws JMSException;
}

メソッド

●　public boolean readBoolean() throws JMSException

バイトメッセージストリームからboolean型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：boolean型の値

●　public byte readByte() throws JMSException

バイトメッセージストリームから符号付き8ビット型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の1バイトを符号付き8ビット型と解釈した値

●　public int readUnsignedByte() throws JMSException

バイトメッセージストリームから符号なし8ビット型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の1バイトを符号なし8ビット型と解釈した値

●　public short readShort() throws JMSException

バイトメッセージストリームから符号付き16ビット型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の2バイトを符号付き16ビット型と解釈した値

●　public int readUnsignedShort() throws JMSException

バイトメッセージストリームから符号なし16ビット型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の2バイトを符号なし16ビット型と解釈した値

●　public char readChar() throws JMSException

バイトメッセージストリームからUnicode文字列を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の2バイトをUnicode文字列と解釈した値

●　public int readInt() throws JMSException

バイトメッセージストリームから符号付き32ビット型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の4バイトを符号付き32ビット型と解釈した値

●　public long readLong() throws JMSException

バイトメッセージストリームから符号付き64ビット型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の8バイトを符号付き64ビット型と解釈した値

●　public float readFloat() throws JMSException

バイトメッセージストリームからfloat型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の4バイトをfloat型と解釈した値

●　public double readDouble() throws JMSException

バイトメッセージストリームからdouble型の値を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：次の8バイトをdouble型と解釈した値

●　public java.lang.String readUTF() throws JMSException

バイトメッセージストリームから修正UTF-8フォーマットを使用してエンコードされた文字列を取得します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

MessageEOFException：メッセージの終端に達しました。

戻り値：Unicode文字列と解釈した値

●　public int readBytes(byte[] value) throws JMSException

バイトメッセージストリームからbyte型配列の値を取得します。

バイトメッセージストリームから読み込まれる残りのバイトより，配列の長さが小さい場合，配列は満たされます。この場合は，あとの呼び出しで次の増分が読み込まれます。一方，バイトメッセージストリームから読み込まれる残りのバイトより，配列の長さが大きい場合，残りのバイトデータは配列に読み込まれます。

戻り値がbyte型配列の長さより小さい場合は，バイトメッセージストリームにデータが残っていないことを示します。この場合は，次の読み込みで-1が返ります。

パラメタ

value

バイトメッセージストリームから読み込んだデータを指定します。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

戻り値：バッファから入力した総バイト数

ストリームの終端に達して，これ以上データがない場合は-1が返ります。

●　public int readBytes(byte[] value, int length) throws JMSException

バイトメッセージストリームからbyte型配列の値の一部を取得します。

バイトメッセージストリームから読み込まれる残りのバイトよりlengthが小さい場合，読み込まれたデータは配列にlengthの長さまで格納されます。この場合は，あとの呼び出しで次の増分が読み込まれます。一方，バイトメッセージストリームから読み込まれる残りのバイトよりlengthが大きい場合，残りのバイトデータは配列に読み込まれます。

戻り値がlengthより小さい場合は，バイトメッセージストリームにデータが残っていないことを示します。この場合は，次の読み込みで-1が返ります。

lengthの値が負の場合，または配列の長さより大きい場合は，例外JMSExceptionがスローされます。例外がスローされると，バイトメッセージストリームからデータは読み込まれません。

パラメタ

value

バイトメッセージストリームから読み込んだデータを指定します。

length

読み込むデータのバイト長を指定します。配列の長さと等しい，または小さい値を指定してください。

例外

JMSException：エラーが発生しました。

MessageNotReadableException：メッセージは書き込み専用です。

戻り値：バッファから入力した総バイト数

ストリームの終端に達して，これ以上データがない場合は-1が返ります。

●　public void writeBoolean(boolean value) throws JMSException

1バイトの値として，boolean型の値をバイトメッセージストリームに書き込みます。trueの場合は1の値，falseの場合は0の値を書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeByte(byte value) throws JMSException

1バイトの値として，byte型の値をバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeShort(short value) throws JMSException

2バイトの値として，short型の値をhigh byte firstでバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeChar(char value) throws JMSException

2バイトの値として，char型の値をhigh byte firstでバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeInt(int value) throws JMSException

4バイトの値として，int型の値をhigh byte firstでバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeLong(long value) throws JMSException

8バイトの値として，long型の値をhigh byte firstでバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeFloat(float value) throws JMSException

FloatクラスのfloatToIntBitsメソッドを使用して，float型の値をint型に変換します。その後，4バイトの値として，変換したint型の値をhigh byte firstでバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeDouble(double value) throws JMSException

DoubleクラスのdoubleToLongBitsメソッドを使用して，double型の値をlong型に変換します。その後，8バイトの値として，変換したlong型の値をhigh byte firstでバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeUTF(java.lang.String value) throws JMSException

修正UTF-8フォーマットを使用してエンコードされた文字列をバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeBytes(byte[] value) throws JMSException

byte型配列をバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeBytes(byte[] value, int offset, int length) throws JMSException

byte型配列の一部をバイトメッセージストリームに書き込みます。

パラメタ

value

書き込む値を指定します。

offset

byte型配列内の初期のオフセットを指定します。

length

書き込むバイト数を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

●　public void writeObject(java.lang.Object value) throws JMSException

Javaオブジェクトをバイトメッセージストリームに書き込みます。書き込みできる値の型は，プリミティブ型をラップするクラス（Byte，Integerなど），String型，およびbyte型配列です。

パラメタ

value

書き込むJavaオブジェクトの値を指定します。null値は指定できません。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：メッセージは読み込み専用です。

NullPointerException：パラメタがnull値です。

MessageFormatException：オブジェクトの型が不正です。

●　public void reset() throws JMSException

メッセージ本体を読み込み専用にして，バイトメッセージストリームを最初の位置に変更します。

例外

JMSException：エラーが発生しました。

MessageFormatException：メッセージのフォーマットが不正です。

ConnectionMetaDataインタフェース（JMS）

ConnectionMetaDataオブジェクトは，JMSの基本情報を提供します。このオブジェクトは，QueueConnection内のgetMetaDataメソッドによって生成されます。

ConnectionMetaDataの機能を次に示します。

JMSサポートバージョンの返却

JMSプロバイダ名称の返却

JMSプロバイダバージョンの返却

形式

public interface ConnectionMetaData
{
  public int getJMSMajorVersion() throws JMSException;
  public int getJMSMinorVersion() throws JMSException;
  public java.lang.String getJMSProviderName() throws JMSException;
  public java.lang.String getJMSVersion() throws JMSException;
  public java.util.Enumeration getJMSXPropertyNames() throws JMSException;
  public int getProviderMajorVersion() throws JMSException;
  public int getProviderMinorVersion() throws JMSException;
  public java.lang.String getProviderVersion() throws JMSException;
}

メソッド

●　public int getJMSMajorVersion() throws JMSException

対応するJMSインタフェースのメジャーバージョンを返します。

例外

JMSException：該当しません。

戻り値：対応するJMSインタフェースのメジャーバージョン

●　public int getJMSMinorVersion() throws JMSException

対応するJMSインタフェースのマイナーバージョンを返します。

例外

JMSException：該当しません。

戻り値：対応するJMSインタフェースのマイナーバージョン

●　public java.lang.String getJMSProviderName() throws JMSException

プロバイダ名称を返します。

例外

JMSException：該当しません。

戻り値：プロバイダ名称

●　public java.lang.String getJMSVersion() throws JMSException

対応するJMSインタフェースのバージョンを返します。

例外

JMSException：該当しません。

戻り値：対応するJMSインタフェースのバージョン

●　public java.util.Enumeration getJMSXPropertyNames() throws JMSException

JMSXプロパティ名の列挙を返します。

例外

JMSException：該当しません。

戻り値：JMSXプロパティ名の列挙

●　public int getProviderMajorVersion() throws JMSException

TP1/Message Queue AccessのJMSインタフェースに対するメジャーバージョンを返します。

例外

JMSException：該当しません。

戻り値：TP1/Message Queue AccessのJMSインタフェースに対するメジャーバージョン

●　public int getProviderMinorVersion() throws JMSException

TP1/Message Queue AccessのJMSインタフェースに対するマイナーバージョンを返します。

例外

JMSException：該当しません。

戻り値：TP1/Message Queue AccessのJMSインタフェースに対するマイナーバージョン

●　public java.lang.String getProviderVersion() throws JMSException

TP1/Message Queue AccessのJMSインタフェースに対するバージョンを返します。

例外

JMSException：該当しません。

戻り値：TP1/Message Queue AccessのJMSインタフェースに対するバージョン

DeliveryModeインタフェース（JMS）

DeliveryModeインタフェースは，JMSでサポートしているメッセージの配送モードに基づき，メッセージの配送モードを表す定数を定義するインタフェースです。この定数は，TP1/Message QueueのMQMD構造体のPersistence（メッセージの永続性）フィールドに格納される値に対応します。

形式

public interface DeliveryMode
{
  public static final int NON_PERSISTENT;
  public static final int PERSISTENT;
}

フィールド

●　public static final int NON_PERSISTENT

非永続メッセージを表す定数です。TP1/Message QueueではMQPER_NOT_PERSISTENTに相当します。

非永続メッセージ（NON_PERSISTENT）の場合，補助記憶装置に記録する必要がないためオーバヘッドが小さくなります。その代わり，送信を保証されるのは1回だけです。メッセージが失われた場合も，2回送信されることはありません。

●　public static final int PERSISTENT

永続メッセージを表す定数です。TP1/Message QueueではMQPER_PERSISTENTに相当します。

クライアントがsendメソッドを発行すると，TP1/Message Queueでは補助記憶装置にメッセージを記録します。したがって，永続メッセージ（PERSISTENT）が失われるのは，ハードウェア障害の場合だけです。

Destinationインタフェース・Queueインタフェース（JMS）

Destinationインタフェースは，送受信するメッセージの宛先のソースを指定するための，JMS管理オブジェクトです。

Queueインタフェースは，メッセージの宛先となるキューをカプセル化したものです。

形式

public interface Destination
{ }

public interface Queue
extends Destination
{
  public java.lang.String getQueueName() throws JMSException;
  public java.lang.String toString();
}

メソッド

●　public java.lang.String getQueueName() throws JMSException

キューの名称を取得します。名前に依存したクライアントにはポータビリティが保証されません。

例外

JMSException：エラーが発生しました。

戻り値：キュー名称

●　public java.lang.String toString()

出力されたキュー名称を返します。java.lang.ObjectのtoStringメソッドをオーバライドします。

戻り値：プロバイダがこのキューを特定する識別用の値

Messageインタフェース（JMS）

Messageインタフェースは，すべてのJMSメッセージのルートインタフェースです。

すべてのメッセージのために使用されるJMSヘッダを定義します。ヘッダと本体から構成される小容量のエンティティとしてメッセージを扱います。メッセージ本体は，送られるアプリケーションデータを含んでいます。

形式

public interface Message
{
  public static final int DEFAULT_DELIVERY_MODE;
  public static final int DEFAULT_PRIORITY;
  public static final long DEFAULT_TIME_TO_LIVE;
  public java.lang.String getJMSMessageID() throws JMSException;
  public void setJMSMessageID(java.lang.String id) throws JMSException;
  public long getJMSTimestamp() throws JMSException;
  public void setJMSTimestamp(long timestamp) throws JMSException;
  public byte[] getJMSCorrelationIDAsBytes() throws JMSException;
  public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException;
  public java.lang.String getJMSCorrelationID() throws JMSException;
  public void setJMSCorrelationID(java.lang.String correlationID) throws JMSException;
  public Destination getJMSReplyTo() throws JMSException;
  public void setJMSReplyTo(Destination replyTo) throws JMSException;
  public Destination getJMSDestination() throws JMSException;
  public void setJMSDestination(Destination destination) throws JMSException;
  public int getJMSDeliveryMode() throws JMSException;
  public void setJMSDeliveryMode(int deliveryMode) throws JMSException;
  public boolean getJMSRedelivered() throws JMSException;
  public void setJMSRedelivered(boolean redelivered) throws JMSException;
  public java.lang.String getJMSType() throws JMSException;
  public void setJMSType(java.lang.String type) throws JMSException;
  public long getJMSExpiration() throws JMSException;
  public void setJMSExpiration(long expiration) throws JMSException;
  public int getJMSPriority() throws JMSException;
  public void setJMSPriority(int priority) throws JMSException;
  public void clearProperties() throws JMSException;
  public boolean propertyExists(java.lang.String name) throws JMSException;
  public boolean getBooleanProperty(java.lang.String name) throws JMSException;
  public byte getByteProperty(java.lang.String name) throws JMSException;
  public short getShortProperty(java.lang.String name) throws JMSException;
  public int getIntProperty(java.lang.String name) throws JMSException;
  public long getLongProperty(java.lang.String name) throws JMSException;
  public float getFloatProperty(java.lang.String name) throws JMSException;
  public double getDoubleProperty(java.lang.String name) throws JMSException;
  public java.lang.String getStringProperty(java.lang.String name) throws JMSException;
  public java.lang.Object getObjectProperty(java.lang.String name) throws JMSException;
  public java.util.Enumeration getPropertyNames() throws JMSException;
  public void setBooleanProperty(java.lang.String name, boolean value) throws JMSException;
  public void setByteProperty(java.lang.String name, byte value) throws JMSException;
  public void setShortProperty(java.lang.String name, short value) throws JMSException;
  public void setIntProperty(java.lang.String name, int value) throws JMSException;
  public void setLongProperty(java.lang.String name, long value) throws JMSException;
  public void setFloatProperty(java.lang.String name, float value) throws JMSException;
  public void setDoubleProperty(java.lang.String name, double value) throws JMSException;
  public void setStringProperty(java.lang.String name, java.lang.String value) throws JMSException;
  public void setObjectProperty(java.lang.String name, java.lang.Object value) throws JMSException;
  public void acknowledge() throws JMSException;
  public void clearBody() throws JMSException;
}

フィールド

●　public static final int DEFAULT_DELIVERY_MODE

メッセージの永続性のデフォルトです。デフォルト値はDeliveryMode.PERSISTENT（永続）です。

●　public static final int DEFAULT_PRIORITY

メッセージの優先度のデフォルトです。デフォルト値は4です。

●　public static final long DEFAULT_TIME_TO_LIVE

メッセージの保持時間のデフォルトです。デフォルト値は0です。

メソッド

●　public java.lang.String getJMSMessageID() throws JMSException

JMSMessageIDヘッダフィールドを取得します。

例外

JMSException：エラーが発生しました。

戻り値：メッセージ識別子

●　public void setJMSMessageID(java.lang.String id) throws JMSException

JMSMessageIDヘッダフィールドを設定します。JMSMessageIDヘッダフィールドは，送信時にTP1/Message Queueによって設定されるため，ユーザが設定しても無視されます。

受信したメッセージのJMSMessageIDヘッダフィールドを変更するときにこのメソッドを使用します。

JMSMessageIDの先頭には必ず「ID:」を付けてください。

パラメタ

id

メッセージ識別子を指定します。

例外

JMSException：エラーが発生しました。

●　public long getJMSTimestamp() throws JMSException

JMSTimestampヘッダフィールドを取得します。

例外

JMSException：エラーが発生しました。

戻り値：ミリ秒で表される時刻

協定世界時の1970年1月1日午前0時から経過したミリ秒の値です。

●　public void setJMSTimestamp(long timestamp) throws JMSException

JMSTimestampヘッダフィールドを設定します。TP1/Message Queueは，送信時にPutDate，PutTimeに対して時刻を設定するため，JMSTimestampヘッダフィールドにユーザが値を設定しても無視されます。

JMSTimestampは，TP1/Message Queueに対してメッセージのキューへの格納を依頼した時点の時刻です。メッセージが実際に転送先に送られる時刻ではありません。

受信したメッセージのJMSTimestampを変更するときにこのメソッドを使用します。

パラメタ

timestamp

ミリ秒で表される時刻を指定します。

協定世界時の1970年1月1日午前0時から経過したミリ秒の値を指定してください。

例外

JMSException：エラーが発生しました。

●　public byte[] getJMSCorrelationIDAsBytes() throws JMSException

相関識別子をbyte型配列で取得します。

例外

JMSException：エラーが発生しました。

戻り値：相関識別子

●　public void setJMSCorrelationIDAsBytes(byte[] correlationID) throws JMSException

相関識別子をbyte型配列で設定します。24バイトを超える部分は切り捨てられます。

パラメタ

correlationID

相関識別子を指定します。

例外

JMSException：エラーが発生しました。

●　public java.lang.String getJMSCorrelationID() throws JMSException

相関識別子をString型で取得します。

例外

JMSException：エラーが発生しました。

戻り値：相関識別子

●　public void setJMSCorrelationID(java.lang.String correlationID) throws JMSException

相関識別子をString型で設定します。

相関識別子には次の値のどちらかを設定します。

プロバイダ固有のメッセージ識別子

先頭が「ID:」で，以降が48けたの16進数の文字列で指定します。内部で，長さ24バイトのbyte型配列（TP1/Message QueueのMQBYTE24型）に変換されます。

アプリケーション固有の文字列

先頭が「ID:」ではない文字列で指定します。内部でString型からMQBYTE24型に変換されます。このとき，24バイトを超える部分は切り捨てられます。

また，メッセージの送信を契機に，JMSCorrelationIDに格納されたアプリケーション固有の文字列は，先頭が「ID:」で以降が48けたの16進数の文字列に置き換えられます。

パラメタ

correlationID

相関識別子を指定します。

例外

JMSException：エラーが発生しました。

●　public Destination getJMSReplyTo() throws JMSException

応答キューを取得します。

例外

JMSException：エラーが発生しました。

戻り値：応答キュー

●　public void setJMSReplyTo(Destination replyTo) throws JMSException

応答キューを設定します。

パラメタ

replyTo

応答キューを指定します。

例外

JMSException：エラーが発生しました。

●　public Destination getJMSDestination() throws JMSException

宛先キューを取得します。

例外

JMSException：エラーが発生しました。

戻り値：宛先キュー

●　public void setJMSDestination(Destination destination) throws JMSException

宛先キューを設定します。ただし，JMSDestinationヘッダフィールドに値を設定しても，送信時には無視されます。送信完了後，JMSDestinationヘッダフィールドには送信メソッドによって指定される宛先オブジェクトが格納されます。受信時は，JMSDestinationヘッダフィールドには，該当するメッセージが入っていたキューが設定されます。

パラメタ

destination

宛先キューを指定します。

例外

JMSException：エラーが発生しました。

●　public int getJMSDeliveryMode() throws JMSException

メッセージの永続性を取得します。

例外

JMSException：エラーが発生しました。

戻り値

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

●　public void setJMSDeliveryMode(int deliveryMode) throws JMSException

メッセージの永続性を設定します。ただし，JMSDeliveryModeヘッダフィールドに値を設定しても，送信時には無視されます。メッセージの永続性はQueueSenderインタフェースで設定します。

パラメタ

deliveryMode

メッセージの永続性を次の値で指定します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

例外

JMSException：エラーが発生しました。

●　public boolean getJMSRedelivered() throws JMSException

このメッセージが再送されているかどうかを取得します。

例外

JMSException：エラーが発生しました。

戻り値

false：MQMD構造体のBackoutCountフィールドの値が0

true：MQMD構造体のBackoutCountフィールドの値が1以上

●　public void setJMSRedelivered(boolean redelivered) throws JMSException

再送のフラグを設定します。ただし，JMSRedeliveredヘッダフィールドに値を設定しても，送信時には無視されます。

パラメタ

redelivered

再送のフラグを指定します。

例外

JMSException：エラーが発生しました。

●　public java.lang.String getJMSType() throws JMSException

TP1/Message QueueはJMSTypeの値を送受信できないため，setJMSTypeメソッドで設定された値がそのまま返ります。

例外

JMSException：エラーが発生しました。

戻り値：JMSType文字列

●　public void setJMSType(java.lang.String type) throws JMSException

JMSTypeヘッダフィールドを設定しますが，TP1/Message Queueのキューにはこの情報は記録されません。

例外

JMSException：エラーが発生しました。

●　public long getJMSExpiration() throws JMSException

メッセージの満了時刻を取得します。

メッセージの満了時刻（JMSExpiration）は，メッセージの登録時刻にメッセージの保持時間（TimeToLive）を加算した時刻に相当します。

なお，メッセージの満了時刻（JMSExpiration）が0の場合，メッセージが満了しないことを意味します。

例外

JMSException：エラーが発生しました。

戻り値：メッセージの満了時刻

●　public void setJMSExpiration(long expiration) throws JMSException

メッセージの満了時刻を設定します。ただし，JMSExpirationヘッダフィールドに値を設定しても，送信時には無視されます。TimeToLive（メッセージの保持時間）はQueueSenderインタフェースで設定します。TimeToLiveに0を指定した場合，JMSExpirationヘッダフィールドは0に設定され，メッセージが満了しないことを示します。

パラメタ

expiration

メッセージの満了時刻（単位：ミリ秒）を指定します。0の場合，メッセージは満了しません。

例外

JMSException：エラーが発生しました。

●　public int getJMSPriority() throws JMSException

メッセージの優先度を取得します。

例外

JMSException：エラーが発生しました。

戻り値：メッセージの優先度

●　public void setJMSPriority(int priority) throws JMSException

メッセージの優先度を設定します。ただし，JMSPriorityヘッダフィールドに値を設定しても，送信時には無視されます。メッセージの優先度はQueueSenderインタフェースで設定します。

パラメタ

priority

メッセージの優先度を指定します。

例外

JMSException：エラーが発生しました。

●　public void clearProperties() throws JMSException

プロパティの値を初期化します。ヘッダや本体は削除されません。

例外

JMSException：エラーが発生しました。

●　public boolean propertyExists(java.lang.String name) throws JMSException

プロパティ（名称：name）の値が存在するかどうかを調べます。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

戻り値

true：プロパティの値が存在します。

false：プロパティの値が存在しません。

●　public boolean getBooleanProperty(java.lang.String name) throws JMSException

boolean型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public byte getByteProperty(java.lang.String name) throws JMSException

byte型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public short getShortProperty(java.lang.String name) throws JMSException

short型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public int getIntProperty(java.lang.String name) throws JMSException

int型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public long getLongProperty(java.lang.String name) throws JMSException

long型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public float getFloatProperty(java.lang.String name) throws JMSException

float型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public double getDoubleProperty(java.lang.String name) throws JMSException

double型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public java.lang.String getStringProperty(java.lang.String name) throws JMSException

String型のプロパティ（名称：name）の値を取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型変換が不正です。

戻り値：プロパティnameの値

●　public java.lang.Object getObjectProperty(java.lang.String name) throws JMSException

プロパティ（名称：name）の値をプリミティブ型をラップするクラスのオブジェクトとして取得します。

パラメタ

name

プロパティの名称を指定します。

例外

JMSException：エラーが発生しました。

戻り値：プロパティnameの値

●　public java.util.Enumeration getPropertyNames() throws JMSException

すべてのプロパティの名称を取得します。ヘッダは返されません。

例外

JMSException：エラーが発生しました。

戻り値：プロパティの一覧

●　public void setBooleanProperty(java.lang.String name, boolean value) throws JMSException

boolean型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setByteProperty(java.lang.String name, byte value) throws JMSException

byte型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setShortProperty(java.lang.String name, short value) throws JMSException

short型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setIntProperty(java.lang.String name, int value) throws JMSException

int型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setLongProperty(java.lang.String name, long value) throws JMSException

long型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setFloatProperty(java.lang.String name, float value) throws JMSException

float型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setDoubleProperty(java.lang.String name, double value) throws JMSException

double型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setStringProperty(java.lang.String name, java.lang.String value) throws JMSException

String型のプロパティ（名称：name）の値を設定します。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void setObjectProperty(java.lang.String name, java.lang.Object value) throws JMSException

プロパティ（名称：name）の値を設定します。設定できる値の型は，プリミティブ型をラップするクラス（Byte，Integerなど），およびString型です。

nameに指定するプロパティ名が，「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名ではない場合でsendメソッドの発行時には，プロパティの値はTP1/Message Queueのキューには格納されません。

パラメタ

name

プロパティの名称を指定します。

value

プロパティの値を指定します。

例外

JMSException：エラーが発生しました。

MessageFormatException：プロパティ値の型が不正です。

MessageNotWriteableException：プロパティは読み込み専用です。

●　public void acknowledge() throws JMSException

現時点から以前のすべてのメッセージを確認します。ただし，確認機能は提供しません。このメソッドを発行しても，即座にリターンします。

すべてのJMSメッセージは，クライアントが「受信側でメッセージは明示的に確認されなければならない」と指定しているときに使われる，acknowledgeメソッドをサポートしています。クライアントが自動確認機能を使用している場合，acknowledgeメソッドの呼び出しは無視されます。

このメソッドを発行した場合，受け取られたにもかかわらず確認されていないメッセージは，受信側に再送される場合があります。

例外

JMSException：エラーが発生しました。

IllegalStateException：すでにクローズされたセションでこのメソッドが発行されました。

●　public void clearBody() throws JMSException

メッセージ本体を削除します。ヘッダやプロパティは削除されません。

メッセージ本体が読み込み専用の場合，メッセージ本体は削除されるとともに書き込み専用となります。

例外

JMSException：エラーが発生しました。

MessageConsumerインタフェース・QueueReceiverインタフェース（JMS）

QueueReceiverインタフェースは，クライアントがキューからメッセージを受け取るために使用します。

形式

public interface MessageConsumer
{
  public void close() throws JMSException;
  public MessageListener getMessageListener() throws JMSException;
  public java.lang.String getMessageSelector() throws JMSException;
  public Message receive() throws JMSException;
  public Message receive(long timeout) throws JMSException;
  public Message receiveNoWait() throws JMSException;
  public void setMessageListener(MessageListener listener) throws JMSException;
}

public interface QueueReceiver
extends MessageConsumer
{
  public Queue getQueue() throws JMSException;
}

メソッド

●　public void close() throws JMSException

TP1/Message Queueが確保した資源を解放するために，資源（キュー）をクローズします。

例外

JMSException：クローズに失敗しました。

●　public MessageListener getMessageListener() throws JMSException

メッセージリスナを返します。

例外

JMSException：エラーが発生しました。

戻り値：メッセージリスナ

●　public java.lang.String getMessageSelector() throws JMSException

メッセージセレクタを返します。

例外

JMSException：エラーが発生しました。

戻り値：メッセージセレクタ

●　public Message receive() throws JMSException

該当するキューレシーバのために作られた，次メッセージを受け取ります。

メッセージが作られるまで，またはこのキューレシーバがクローズされるまで，このメソッドは無期限にブロックされて待ち状態になります。

トランザクション内でこのメソッドが実行された場合，コミットされるまでメッセージは残ります。

コネクションが受信禁止状態の場合は，nullが返され，メッセージKFCA31307-Wが出力されます。

例外

JMSException：エラーが発生しました。

戻り値：該当するキューレシーバのために作られた次メッセージ

このキューレシーバが同時にクローズされた場合，またはコネクションが受信禁止状態の場合は，nullが返ります。

●　public Message receive(long timeout) throws JMSException

指定したタイムアウト時間以内に到着した次メッセージを受け取ります。

メッセージが作られるまで，タイムアウト時間が終了するまで，またはこのキューレシーバがクローズされるまで，このメソッドはブロックされて待ち状態になります。

timeoutが0の場合は，無期限にブロックされます。

コネクションが受信禁止状態の場合は，nullが返され，メッセージKFCA31307-Wが出力されます。

パラメタ

timeout

タイムアウト時間（単位：ミリ秒）を指定します。

0以上の値を指定します。ただし，1〜999の値を指定すると，1秒間ブロックされて待ち状態になります。

0未満の値を指定した場合，例外JMSExceptionがスローされます。

例外

JMSException：エラーが発生しました。

戻り値：該当するキューレシーバのために作られた次メッセージ

タイムアウト時間が終了した場合，このキューレシーバが同時にクローズされた場合，またはコネクションが受信禁止状態の場合は，nullが返ります。

●　public Message receiveNoWait() throws JMSException

次メッセージをすぐに利用できる場合，そのメッセージを受け取ります。

コネクションが受信禁止状態の場合は，nullが返され，メッセージKFCA31307-Wが出力されます。

例外

JMSException：エラーが発生しました。

戻り値：該当するキューレシーバのために作られた次メッセージ

次メッセージが利用できない場合，またはコネクションが受信禁止状態の場合は，nullが返ります。

●　public void setMessageListener(MessageListener listener) throws JMSException

メッセージリスナを設定します。

メッセージリスナはQueueReceiverオブジェクト内で記憶されますが，実際には使用されないので，注意が必要です

パラメタ

listener

メッセージリスナを指定します。

例外

JMSException：エラーが発生しました。

●　public Queue getQueue() throws JMSException

キューレシーバに関連づけられたキューのオブジェクトを返します。

例外

JMSException：キューハンドルが取得できませんでした。

戻り値：Queueオブジェクト

MessageProducerインタフェース・QueueSenderインタフェース（JMS）

QueueSenderインタフェースは，クライアントがキューにメッセージを送るために使用します。

形式

public interface MessageProducer
{
  public void close() throws JMSException;
  public int getDeliveryMode() throws JMSException;
  public boolean getDisableMessageID() throws JMSException;
  public boolean getDisableMessageTimestamp() throws JMSException;
  public int getPriority() throws JMSException;
  public long getTimeToLive() throws JMSException;
  public void setDeliveryMode(int deliveryMode) throws JMSException;
  public void setDisableMessageID(boolean value) throws JMSException;
  public void setDisableMessageTimestamp(boolean value) throws JMSException;
  public void setPriority(int defaultPriority) throws JMSException;
  public void setTimeToLive(long timeToLive) throws JMSException;
}

public interface QueueSender
extends MessageProducer
{
  public Queue getQueue() throws JMSException;
  public void send(Message message) throws JMSException;
  public void send(Message message, int deliveryMode, int priority, long timeToLive) throws JMSException;
  public void send(Queue queue, Message message) throws JMSException;
  public void send(Queue queue, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException;
}

メソッド

●　public void close() throws JMSException

TP1/Message Queueが確保した資源を解放するために，資源（キュー）をクローズします。

例外

JMSException：クローズに失敗しました。

●　public int getDeliveryMode() throws JMSException

キュー内のメッセージに対する省略時の永続性を取得します。

例外

JMSException：エラーが発生しました。

戻り値

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

●　public boolean getDisableMessageID() throws JMSException

メッセージ識別子が使用不可であるかどうかを取得します。ただし，このメソッドで取得した値に関係なく，TP1/Message Queueでは常にメッセージ識別子は使用可能です。

例外

JMSException：エラーが発生しました。

戻り値

true：メッセージ識別子は使用不可

false：メッセージ識別子は使用可能

●　public boolean getDisableMessageTimestamp() throws JMSException

登録日時が使用不可であるかどうかを取得します。ただし，このメソッドで取得した値に関係なく，TP1/Message Queueでは常に登録日時は使用可能です。

例外

JMSException：エラーが発生しました。

戻り値

true：登録日時は使用不可

false：登録日時は使用可能

●　public int getPriority() throws JMSException

キュー内のメッセージに対する省略時の優先度を取得します。

JMSでは，0〜9の10段階の優先度を定義しています。TP1/Message Queueでは，0〜MaxPriorityの値をとります。MaxPriorityは，キューマネジャで定義されています。

例外

JMSException：エラーが発生しました。

戻り値：キュー内のメッセージに対する省略時の優先度

●　public long getTimeToLive() throws JMSException

キュー内のメッセージに対する省略時のメッセージの保持時間を取得します。

例外

JMSException：エラーが発生しました。

戻り値：キュー内のメッセージに対する省略時のメッセージの保持時間（単位：ミリ秒）

●　public void setDeliveryMode(int deliveryMode) throws JMSException

キュー内のメッセージに対する省略時の永続性を設定します。デフォルト値はDeliveryMode.PERSISTENT（永続）です。

パラメタ

deliveryMode

メッセージの永続性を次の値で指定します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

上記以外の値を指定した場合，例外JMSExceptionがスローされます。

例外

JMSException：エラーが発生しました。

●　public void setDisableMessageID(boolean value) throws JMSException

メッセージ識別子を使用不可にするかどうかを設定します。デフォルト値は使用可能です。

このメソッドで設定した値に関係なく，TP1/Message Queueでは常にメッセージ識別子は使用可能です。

パラメタ

value

メッセージ識別子を使用不可にするかどうかを次の値で指定します。

true：使用不可にします。

false：使用可能にします。

例外

JMSException：エラーが発生しました。

●　public void setDisableMessageTimestamp(boolean value) throws JMSException

登録日時を使用不可にするかどうかを設定します。デフォルト値は使用可能です。

このメソッドで設定した値に関係なく，TP1/Message Queueでは常に登録日時は使用可能です。

パラメタ

value

登録日時を使用不可にするかどうかを次の値で指定します。

true：使用不可にします。

false：使用可能にします。

例外

JMSException：エラーが発生しました。

●　public void setPriority(int defaultPriority) throws JMSException

キュー内のメッセージに対する省略時の優先度を設定します。

JMSでは，0〜9の10段階の優先度を定義しています。TP1/Message Queueでは，0〜MaxPriorityの値をとります。MaxPriorityは，キューマネジャで定義されています。デフォルト値は4です。

パラメタ

defaultPriority

キュー内のメッセージに対する省略時の優先度を指定します。0（最低）〜9（最高）の範囲の値を指定します。

上記の範囲以外の値を指定した場合，例外JMSExceptionがスローされます。

例外

JMSException：エラーが発生しました。

●　public void setTimeToLive(long timeToLive) throws JMSException

キュー内のメッセージに対する省略時のメッセージの保持時間を設定します。デフォルト値は0です。

パラメタ

timeToLive

キュー内のメッセージに対する省略時のメッセージの保持時間（単位：ミリ秒）を指定します。

0〜（2 ³¹−1）×100の範囲の値を指定します。ただし，1〜99の値を指定すると，MQMD構造体のExpiryフィールドに格納される際に，100ミリ秒に切り上げられます。

0を指定した場合，メッセージの保持時間は無制限です。TP1/Message Queueでは，MQEI_UNLIMITED（値：-1）に相当します。

0〜（2 ³¹−1）×100の範囲以外の値を指定した場合，例外JMSExceptionがスローされます。

例外

JMSException：エラーが発生しました。

●　public Queue getQueue() throws JMSException

該当するキューセンダに関連づけられたキューのオブジェクトを返します。

例外

JMSException：エラーが発生しました。

戻り値：Queueオブジェクト

●　public void send(Message message) throws JMSException

キューにメッセージを登録します。

このとき，QueueSenderの省略時のメッセージの永続性，メッセージの優先度，およびメッセージの保持時間が使用されます。

QueueSenderの生成時にキューが指定されていない場合にこのメソッドを実行すると，例外JMSExceptionがスローされます。

キューにメッセージを登録する際，Messageオブジェクトのプロパティが「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名と一致する場合，対応するMQMD構造体のフィールドに格納されます。プロパティ名が一致していてプロパティの型が不一致の場合は，表7-6に示す型に変換されたあとで，対応するMQMD構造体のフィールドに格納されます。この変換に失敗すると，例外MessageFormatExceptionがスローされます。Messageオブジェクトのプロパティが表7-6に示す名称ではない場合は，プロパティの値はMQMD構造体のフィールドに格納されません。

パラメタ

message

登録するメッセージを指定します。

例外

JMSException：メッセージの登録に失敗しました。

MessageFormatException：不正なメッセージを指定しました。

InvalidDestinationException：不正なキューに関連づけられたQueueSenderのメソッドを実行しました。

●　public void send(Message message, int deliveryMode, int priority, long timeToLive) throws JMSException

メッセージの永続性，メッセージの優先度，およびメッセージの保持時間を指定して，キューにメッセージを登録します。

QueueSenderの生成時にキューが指定されていない場合にこのメソッドを実行すると，例外JMSExceptionがスローされます。

キューにメッセージを登録する際，Messageオブジェクトのプロパティが「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名と一致する場合，対応するMQMD構造体のフィールドに格納されます。プロパティ名が一致していてプロパティの型が不一致の場合は，表7-6に示す型に変換されたあとで，対応するMQMD構造体のフィールドに格納されます。この変換に失敗すると，例外MessageFormatExceptionがスローされます。Messageオブジェクトのプロパティが表7-6に示す名称ではない場合は，プロパティの値はMQMD構造体のフィールドに格納されません。

パラメタ

message

登録するメッセージを指定します。

deliveryMode

メッセージの永続性を次の値で指定します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

上記以外の値を指定した場合，例外JMSExceptionがスローされます。

priority

メッセージの優先度を指定します。0（最低）〜9（最高）の範囲の値を指定します。

上記の範囲以外の値を指定した場合，例外JMSExceptionがスローされます。

timeToLive

メッセージの保持時間（単位：ミリ秒）を指定します。

0〜（2 ³¹−1）×100の範囲の値を指定します。ただし，1〜99の値を指定すると，MQMD構造体のExpiryフィールドに格納される際に，100ミリ秒に切り上げられます。

0を指定した場合，メッセージの保持時間は無制限です。TP1/Message Queueでは，MQEI_UNLIMITED（値：-1）に相当します。

0〜（2 ³¹−1）×100の範囲以外の値を指定した場合，例外JMSExceptionがスローされます。

例外

JMSException：メッセージの登録に失敗しました。

MessageFormatException：不正なメッセージを指定しました。

InvalidDestinationException：不正なキューに関連づけられたQueueSenderのメソッドを実行しました。

●　public void send(Queue queue, Message message) throws JMSException

指定したキューにメッセージを登録します。

このとき，QueueSenderの省略時のメッセージの永続性，メッセージの優先度，およびメッセージの保持時間が使用されます。

一般に，QueueSenderの生成時には登録先のキューが指定されますが，nullを指定して，つまりキューを指定しないでQueueSenderを生成することもできます。QueueSenderの生成時にキューが指定されていない場合は，このメソッドを実行できます。QueueSenderの生成時にキューが指定されている場合にこのメソッドを実行すると，例外JMSExceptionがスローされます。

キューにメッセージを登録する際，Messageオブジェクトのプロパティが「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名と一致する場合，対応するMQMD構造体のフィールドに格納されます。プロパティ名が一致していてプロパティの型が不一致の場合は，表7-6に示す型に変換されたあとで，対応するMQMD構造体のフィールドに格納されます。この変換に失敗すると，例外MessageFormatExceptionがスローされます。Messageオブジェクトのプロパティが表7-6に示す名称ではない場合は，プロパティの値はMQMD構造体のフィールドに格納されません。

パラメタ

queue

登録先のキューを指定します。

message

登録するメッセージを指定します。

例外

JMSException：メッセージの登録に失敗しました。

MessageFormatException：不正なメッセージを指定しました。

InvalidDestinationException：不正なキューを指定しました。

●　public void send(Queue queue, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException

キュー，メッセージの永続性，メッセージの優先度，およびメッセージの保持時間を指定して，キューにメッセージを登録します。

一般に，QueueSenderの生成時には登録先のキューが指定されますが，nullを指定して，つまりキューを指定しないでQueueSenderを生成することもできます。QueueSenderの生成時にキューが指定されていない場合は，このメソッドを実行できます。QueueSenderの生成時にキューが指定されている場合にこのメソッドを実行すると，例外JMSExceptionがスローされます。

キューにメッセージを登録する際，Messageオブジェクトのプロパティが「JMSメッセージのヘッダとプロパティ」の表7-6に示すプロパティ名と一致する場合，対応するMQMD構造体のフィールドに格納されます。プロパティ名が一致していてプロパティの型が不一致の場合は，表7-6に示す型に変換されたあとで，対応するMQMD構造体のフィールドに格納されます。この変換に失敗すると，例外MessageFormatExceptionがスローされます。Messageオブジェクトのプロパティが表7-6に示す名称ではない場合は，プロパティの値はMQMD構造体のフィールドに格納されません。

パラメタ

queue

登録先のキューを指定します。

message

登録するメッセージを指定します。

deliveryMode

メッセージの永続性を次の値で指定します。

DeliveryMode.NON_PERSISTENT：非永続

DeliveryMode.PERSISTENT：永続

上記以外の値を指定した場合，例外JMSExceptionがスローされます。

priority

メッセージの優先度を指定します。0（最低）〜9（最高）の範囲の値を指定します。

上記の範囲以外の値を指定した場合，例外JMSExceptionがスローされます。

timeToLive

メッセージの保持時間（単位：ミリ秒）を指定します。

0〜（2 ³¹−1）×100の範囲の値を指定します。ただし，1〜99の値を指定すると，MQMD構造体のExpiryフィールドに格納される際に，100ミリ秒に切り上げられます。

0を指定した場合，メッセージの保持時間は無制限です。TP1/Message Queueでは，MQEI_UNLIMITED（値：-1）に相当します。

0〜（2 ³¹−1）×100の範囲以外の値を指定した場合，例外JMSExceptionがスローされます。

例外

JMSException：メッセージの登録に失敗しました。

MessageFormatException：不正なメッセージを指定しました。

InvalidDestinationException：不正なキューを指定しました。

QueueBrowserインタフェース（JMS）

QueueBrowserインタフェースは，クライアントがキューからメッセージを取り去らないで，参照するために使用します。

形式

public interface QueueBrowser
{
  public Queue getQueue() throws JMSException;
  public java.lang.String getMessageSelector() throws JMSException;
  public java.util.Enumeration getEnumeration() throws JMSException;
  public void close() throws JMSException;
}

メソッド

●　public Queue getQueue() throws JMSException

該当するキューブラウザに関連づけられたキューのオブジェクトを取得します。

例外

JMSException：キューハンドルが取得できませんでした。

戻り値：Queueオブジェクト

●　public java.lang.String getMessageSelector() throws JMSException

メッセージセレクタを返します。

例外

JMSException：エラーが発生しました。

戻り値：メッセージセレクタ

●　public java.util.Enumeration getEnumeration() throws JMSException

現在のキューに含まれているメッセージの一覧を読み込んだ順に取得します。メッセージの参照には，このメソッドで取得したメッセージ一覧が使用されます。

例外

JMSException：エラーが発生しました。

戻り値：読み込むメッセージの一覧

●　public void close() throws JMSException

TP1/Message Queueが確保した資源を解放するために，資源（キュー）をクローズします。

例外

JMSException：クローズに失敗しました。

QueueConnectionインタフェース（JMS）

QueueConnectionインタフェースは，アプリケーションがTP1/Message Queueにアクセスするために使用するアプリケーションレベルのハンドルを提供します。

アプリケーションは，QueueConnectionFactoryオブジェクトのcreateQueueConnectionメソッドを使用してQueueConnectionオブジェクトを取得できます。

QueueConnectionの機能を次に示します。

受信禁止状態の管理

コネクションプーリングを利用したQueueSessionオブジェクトの生成または取得

形式

package:javax.jms

public interface Connection
{
  public void close() throws JMSException;
  public java.lang.String getClientID() throws JMSException;
  public ExceptionListener getExceptionListener() throws JMSException;
  public ConnectionMetaData getMetaData() throws JMSException;
  public void setClientID(java.lang.String clientID) throws JMSException;
  public void setExceptionListener(ExceptionListener listener) throws JMSException;
  public void start() throws JMSException;
  public void stop() throws JMSException;
}

public interface QueueConnection extends javax.jms.Connection
{
  public ConnectionConsumer createConnectionConsumer(Queue queue, java.lang.String messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException;
  public QueueSession createQueueSession(boolean transacted, int acknowledgeMode) throws JMSException;
}

メソッド

●　public void close() throws JMSException

QueueConnectionをクローズします。

例外

JMSException：コネクションのクローズに失敗しました。

●　public java.lang.String getClientID() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public ExceptionListener getExceptionListener() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public ConnectionMetaData getMetaData() throws JMSException

ConnectionMetaDataオブジェクトを参照します。

例外

JMSException：QueueConnectionがクローズされている状態で，このメソッドが発行されました。

戻り値：ConnectionMetaDataオブジェクト

●　public void setClientID(java.lang.String clientID) throws JMSException

このメソッドは未サポートです。

パラメタ

clientID

クライアントIDを指定します。

例外

JMSException：このメソッドは未サポートです。

InvlidClientIDException：該当しません。

IllegalStateException：該当しません。

●　public void setExceptionListener(ExceptionListener listener) throws JMSException

このメソッドは未サポートです。

パラメタ

listener

ExceptionListenerオブジェクトを指定します。

例外

JMSException：このメソッドは未サポートです。

●　public void start() throws JMSException

コネクションの受信禁止状態を解除します。

例外

JMSException：コネクションの受信禁止状態の解除に失敗しました。または，QueueConnectionがクローズされている状態で，このメソッドが発行されました。

●　public void stop() throws JMSException

コネクションを受信禁止状態にします。

コネクションが受信禁止状態になるとQueueRecieverオブジェクトは停止します。また，すでに受信待ちとなっているQueueRecieverオブジェクトのreceiveメソッドは中断されます。

例外

JMSException：コネクションの受信禁止に失敗しました。または，QueueConnectionがクローズされている状態で，このメソッドが発行されました。

●　public ConnectionConsumer createConnectionConsumer(Queue queue, java.lang.String messageSelector, ServerSessionPool sessionPool, int maxMessages) throws JMSException

このメソッドは未サポートです。

パラメタ

queue

受信監視するQueueオブジェクトを指定します。

messageSelector

メッセージセレクタを指定します。ただし，指定値はnull固定です。null以外の文字列を指定しても無視されます。

sessionPool

ServerSessionPoolオブジェクトを指定します。

maxMessages

ServerSessionオブジェクトが一度に割り当てる最大メッセージ数を指定します。

例外

JMSException：このメソッドは未サポートです。

InvalidDestinationException：該当しません。

InvalidSelectorException：該当しません。

戻り値：ConnectionConsumerオブジェクト

●　public QueueSession createQueueSession(boolean transacted, int acknowledgeMode) throws JMSException

コネクションを取得し，QueueSessionオブジェクトを生成します。ただし，acknowledgeModeは無視します。

パラメタ

transacted

OpenTP1でローカルなトランザクション管理をするかどうかを次の値で指定します。

true：ローカルトランザクション管理をします。

false：ローカルトランザクション管理をしません。

acknowledgeMode

QueueSessionオブジェクト生成時のモードを次の値で指定します。ただし，指定しても無視されます。

Session.AUTO_ACKNOWLEDGE：AUTO_ACKNOWLEDGEモード

Session.CLIENT_ACKNOWLEDGE：CLIENT_ACKNOWLEDGEモード

Session.DUPS_OK_ACKNOWLEDGE：DUPS_OK_ACKNOWLEDGEモード

例外

JMSException：QueueSessionの生成時にエラーが発生しました。または，QueueConnectionがクローズされている状態で，このメソッドが発行されました。

戻り値：QueueSessionオブジェクト

QueueConnectionFactoryインタフェース（JMS）

QueueConnectionFactoryインタフェースは，QueueConnectionを生成するためのファクトリです。すでにJNDIに登録されているQueueConnectionFactoryのJNDI登録名をアプリケーションがlookupすることによって，QueueConnectionFactoryオブジェクトを取得できます。

QueueConnectionFactoryの機能を次に示します。

QueueConnectionオブジェクトの生成

形式

package:javax.jms

public interface QueueConnectionFactory
extends ConnectionFactory, javax.resource.Referenceable
{
  public javax.jms.QueueConnection createQueueConnection() throws JMSException;
  public javax.jms.QueueConnection createQueueConnection(java.lang.String userName, java.lang.String password) throws JMSException;
}

メソッド

●　public javax.jms.QueueConnection createQueueConnection() throws JMSException

TP1/Message QueueにアクセスするためのQueueConnectionオブジェクトを生成します。

例外

JMSException：オブジェクトの生成に失敗しました。

JMSSecurityException：該当しません。

戻り値：QueueConnectionオブジェクト

●　public javax.jms.QueueConnection createQueueConnection(java.lang.String userName, java.lang.String password) throws JMSException

TP1/Message QueueにアクセスするためのQueueConnectionオブジェクトを生成します。ただし，パラメタで指定されたユーザ名およびパスワードは無視されます。

パラメタ

userName

ユーザ名を指定します。

password

パスワードを指定します。

例外

JMSException：オブジェクトの生成に失敗しました。

JMSSecurityException：該当しません。

戻り値：QueueConnectionオブジェクト

QueueSessionインタフェース（JMS）

QueueSessionインタフェースはアプリケーションからの論理的なコネクションハンドルです。

QueueConnection.createQueueSessionでtransactedパラメタにtrueが指定されると，そのQueueSessionからの操作はトランザクションモードとなります。なお，QueueConnection.createQueueSessionでのacknowledgeパラメタは無視されます。

QueueSessionの機能を次に示します。

ローカルトランザクションの開始，コミット，およびロールバック

BytesMessageオブジェクトの生成

Messageオブジェクトの生成

QueueReceiverオブジェクトの生成

QueueBrowserオブジェクトの生成

QueueSenderオブジェクトの生成

形式

public interface Session extends java.lang.Runnable
{
  public static final int AUTO_ACKNOWLEDGE;
  public static final int CLIENT_ACKNOWLEDGE;
  public static final int DUPS_OK_ACKNOWLEDGE;
  public void close() throws JMSException;
  public void commit() throws JMSException;
  public BytesMessage createBytesMessage() throws JMSException;
  public MapMessage createMapMessage() throws JMSException;
  public Message createMessage() throws JMSException;
  public ObjectMessage createObjectMessage() throws JMSException;
  public ObjectMessage createObjectMessage (java.io.Serializable object) throws JMSException;
  public StreamMessage createStreamMessage() throws JMSException;
  public TextMessage createTextMessage() throws JMSException;
  public TextMessage createTextMessage(java.lang.String text) throws JMSException;
  public MessageListener getMessageListener() throws JMSException;
  public boolean getTransacted() throws JMSException;
  public void recover() throws JMSException;
  public void rollback() throws JMSException;
  public void run();
  public void setMessageListener(MessageListener listener) throws JMSException;
}

public interface QueueSession extends Session
{
  public QueueBrowser createBrowser(Queue queue) throws JMSException;
  public QueueBrowser createBrowser(Queue queue, java.lang.String messageSelector) throws JMSException;
  public Queue createQueue(java.lang.String queueName) throws JMSException;
  public QueueReceiver createReceiver(Queue queue) throws JMSException;
  public QueueReceiver createReceiver(Queue queue, java.lang.String messageSelector) throws JMSException;
  public QueueSender createSender(Queue queue) throws JMSException;
  public TemporaryQueue createTemporaryQueue() throws JMSException;
}

フィールド

●　public static final int AUTO_ACKNOWLEDGE

このフィールドは未サポートです。

●　public static final int CLIENT_ACKNOWLEDGE

このフィールドは未サポートです。

●　public static final int DUPS_OK_ACKNOWLEDGE

このフィールドは未サポートです。

メソッド

●　public void close() throws JMSException

QueueSessionをクローズします。

例外

JMSException：QueueSessionのクローズに失敗しました。

●　public void commit() throws JMSException

ローカルトランザクションをコミットします。

例外

JMSException：コミットに失敗しました。

TransactionRolledBackException：該当しません。

IllegalStateException：メソッドがトランザクション外でコールされました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

●　public BytesMessage createBytesMessage() throws JMSException

BytesMessageオブジェクトを生成します。

例外

JMSException：BytesMessageオブジェクトの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

戻り値：BytesMessageオブジェクト

●　public MapMessage createMapMessage() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public Message createMessage() throws JMSException

Messageオブジェクトを生成します。

例外

JMSException：Messageオブジェクトの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

戻り値：Messageオブジェクト

●　public ObjectMessage createObjectMessage() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public ObjectMessage createObjectMessage(java.io.Serializable object) throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public StreamMessage createStreamMessage() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public TextMessage createTextMessage() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public TextMessage createTextMessage(java.lang.String text) throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public MessageListener getMessageListener() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public boolean getTransacted() throws JMSException

QueueSessionがトランザクションモードかどうかを取得します。

例外

JMSException：トランザクション状態の取得に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

戻り値

true：トランザクションモード

false：トランザクションモード以外

●　public void recover() throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

IllegalStateException：該当しません。

●　public void rollback() throws JMSException

ローカルトランザクションをロールバックします。

例外

JMSException：ロールバックに失敗しました。

IllegalStateException：メソッドがトランザクション外でコールされました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

●　public void run()

このメソッドは未サポートです。

●　public void setMessageListener(MessageListener listener) throws JMSException

このメソッドは未サポートです。

例外

JMSException：このメソッドは未サポートです。

●　public QueueBrowser createBrowser(Queue queue) throws JMSException

キューブラウザを生成します。

パラメタ

queue

アクセス対象のQueueオブジェクトを指定します。

TemporaryQueueオブジェクトを指定してキューブラウザを生成する場合，このメソッドと同一のQueueSessionオブジェクトのcreateTemporaryQueueメソッドによって作成されたTemporaryQueueを指定する必要があります。

例外

JMSException：キューブラウザの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

InvalidDestinationException：不正なキューを指定しました。

戻り値：QueueBrowserオブジェクト

●　public QueueBrowser createBrowser(Queue queue, java.lang.String messageSelector) throws JMSException

キューブラウザを生成します。

パラメタ

queue

アクセス対象のQueueオブジェクトを指定します。

TemporaryQueueオブジェクトを指定してキューブラウザを生成する場合，このメソッドと同一のQueueSessionオブジェクトのcreateTemporaryQueueメソッドによって作成されたTemporaryQueueを指定する必要があります。

messageSelector

メッセージセレクタを指定します。

例外

JMSException：キューブラウザの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

InvalidDestinationException：不正なキューを指定しました。

InvalidSelectorException：不正なメッセージセレクタ構文です。

戻り値：QueueBrowserオブジェクト

●　public Queue createQueue(java.lang.String queueName) throws JMSException

このメソッドは未サポートです。Queueオブジェクトは上位クラスで作成されて，JNDIにあらかじめ登録されているためです。

パラメタ

queueName

キュー名称を指定します。

例外

JMSException：このメソッドは未サポートです。

●　public QueueReceiver createReceiver(Queue queue) throws JMSException

キューレシーバを生成します。

パラメタ

queue

アクセス対象のQueueオブジェクトを指定します。

TemporaryQueueオブジェクトを指定してキューレシーバを生成する場合，このメソッドと同一のQueueSessionオブジェクトのcreateTemporaryQueueメソッドによって作成されたTemporaryQueueを指定する必要があります。

例外

JMSException：キューレシーバの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

InvalidDestinationException：不正なキューを指定しました。

戻り値：QueueReceiverオブジェクト

●　public QueueReceiver createReceiver(Queue queue, java.lang.String messageSelector) throws JMSException

キューレシーバを生成します。

パラメタ

queue

アクセス対象のQueueオブジェクトを指定します。

TemporaryQueueオブジェクトを指定してキューレシーバを生成する場合，このメソッドと同一のQueueSessionオブジェクトのcreateTemporaryQueueメソッドによって作成されたTemporaryQueueを指定する必要があります。

messageSelector

メッセージセレクタを指定します。

例外

JMSException：キューレシーバの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

InvalidDestinationException：不正なキューを指定しました。

InvalidSelectorException：不正なメッセージセレクタ構文です。

戻り値：QueueReceiverオブジェクト

●　public QueueSender createSender(Queue queue) throws JMSException

キューセンダを生成します。

パラメタ

queue

アクセス対象のQueueオブジェクトを指定します。キューが不確定な場合はnullを指定してください。

TemporaryQueueオブジェクトを指定してキューセンダを生成する場合，このメソッドと同一のQueueSessionオブジェクトのcreateTemporaryQueueメソッドによって作成されたTemporaryQueueを指定する必要があります。

例外

JMSException：キューセンダの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

InvalidDestinationException：不正なキューを指定しました。

戻り値：QueueSenderオブジェクト

●　public TemporaryQueue createTemporaryQueue() throws JMSException

動的キューを生成します。生成された動的キューは，TemporaryQueue内のdeleteメソッドが発行されると削除されます。

createTemporaryQueueメソッドによって作成される動的キューは，QueueSessionオブジェクトごとに異なります。

TemporaryQueueを使用するためには，TP1/Message Queue AccessリソースアダプタのProperties設定の環境変数ModelQueueNameに，モデルキュー名を指定します。詳細については，「2.2　MQCクライアント機能の環境設定」を参照してください。また，サーバ側のTP1/Message Queueでモデルキューを定義する必要があります。このモデルキューのDefinitionType属性によって，一時的動的キューか永続的動的キューのどちらかが作成されます。作成されるキューの種類ごとに，次に示す点に注意が必要です。

一時的動的キューの場合，Cosminexus Component Containerのアソシエーション機能が動作することによって，いったんキューが削除されて再作成されます。

キューが削除されないようにするには，モデルキュー名に永続的動的キューを指定してください。

永続的動的キューの場合，要求受信監視タイマなどの無通信時間監視でMQCサーバが待機状態になったとき，削除されないで残ったままとなります。

クライアントから永続的動的キューを直接削除する方法はないため，サーバで適宜削除してください。

createTemporaryQueueメソッドによって作成される動的キュー名は「JMS*」です（*：ユニークな文字列）。

例外

JMSException：動的キューの生成に失敗しました。または，QueueSessionがクローズされている状態で，このメソッドが発行されました。

戻り値：TemporaryQueueオブジェクト

TemporaryQueueインタフェース（JMS）

TemporaryQueueは，QueueConnectionがアクティブ状態のときに生成されるユニークなQueueオブジェクトです。

TemporaryQueueは，システムが定義するキューであり，それを生成したQueueConnectionだけが利用できます。

一般に，TemporaryQueueはサービス要求のJMSReplyto宛先として使用されます。

なお，TemporaryQueueオブジェクトに対してgetQueueNameメソッドを発行すると，モデルキュー名が返されます。

形式

public interface TemporaryQueue
extends Queue
{
  public void delete() throws JMSException;
}

メソッド

●　public void delete() throws JMSException

該当する動的キューを削除します。該当する動的キューを使用中のキューセンダやキューレシーバが残っている場合は，例外JMSExceptionがスローされます。

例外

JMSException：削除に失敗しました。

Enumerationインタフェース（J2SE）

Enumerationインタフェースは，値を列挙するために使用します。

形式

public interface Enumeration
{
  public boolean hasMoreElements();
  public Object nextElement();
}

メソッド

●　public boolean hasMoreElements()

nextElementメソッドで返却できる要素があるかどうかを判定します。

なお，QueueBrowserのgetEnumerationメソッドで返されたEnumerationオブジェクトで，このメソッドを発行してfalseが返された場合，キューからのメッセージの取得に失敗していることがあります。このとき，メッセージKFCA31309-Wが出力されます。また，コネクションが受信禁止状態の場合は，falseが返され，メッセージKFCA31307-Wが出力されます。

戻り値

true：オブジェクトに一つ以上の要素が残っています。

false：オブジェクトには要素が一つも残っていません。

●　public Object nextElement()

現在位置の要素を返却し，現在位置を次の要素に進めます。getEnumerationメソッド発行後の最初のnextElementメソッド発行では，先頭の要素を返却します。現在位置に返却できる要素がない場合，例外NoSuchElementExceptionがスローされます。

なお，QueueBrowserのgetEnumerationメソッドで返されたEnumerationオブジェクトで，このメソッドを発行して例外NoSuchElementExceptionがスローされた場合，キューからのメッセージの取得に失敗していることがあります。このとき，メッセージKFCA31310-Wが出力されます。また，コネクションが受信禁止状態の場合は，例外NoSuchElementExceptionがスローされ，メッセージKFCA31307-Wが出力されます。

例外

NoSuchElementException：要素がそれ以上ありません。

戻り値：次の要素となるオブジェクト

MQCインタフェース（JMS）

TP1/Message Queue Accessで指定できる値，およびデフォルト値の定義の一覧を示します。JMSインタフェースでは，プロパティに格納する値としてこれらの変数を使用します。

各変数の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

注意事項

MQCインタフェースを使用する際には，パッケージ名jp.co.Hitachi.soft.mqadaptorを指定するか，パッケージ名jp.co.Hitachi.soft.mqadaptor中のインタフェースMQCをimport文でインポートする必要があります。

MQCインタフェースを使用したアプリケーションをコンパイルするときは，classpathにmqcadptdef.jarを追加してください。

変数

public final static int MQ_CLUSTER_NAME_LENGTH

public final static int MQ_CORREL_ID_LENGTH

public final static int MQ_CREATION_DATE_LENGTH

public final static int MQ_CREATION_TIME_LENGTH

public final static int MQ_FORMAT_LENGTH

public final static int MQ_GROUP_ID_LENGTH

public final static int MQ_MSG_ID_LENGTH

public final static int MQ_PUT_TIME_LENGTH

public final static int MQ_PUT_APPL_NAME_LENGTH

public final static int MQ_PUT_DATE_LENGTH

public final static int MQ_Q_MGR_NAME_LENGTH

public final static int MQ_Q_NAME_LENGTH

public final static int MQ_USER_ID_LENGTH

public final static int MQAT_UNKNOWN

public final static int MQAT_NO_CONTEXT

public final static int MQAT_CICS

public final static int MQAT_MVS

public final static int MQAT_IMS

public final static int MQAT_OS2

public final static int MQAT_DOS

public final static int MQAT_AIX

public final static int MQAT_UNIX

public final static int MQAT_QMGR

public final static int MQAT_OS400

public final static int MQAT_WINDOWS

public final static int MQAT_CICS_VSE

public final static int MQAT_VMS

public final static int MQAT_GUARDIAN

public final static int MQAT_VOS

public final static int MQAT_OPEN_TP1

public final static int MQAT_XDM

public final static int MQAT_TMS_4V

public final static int MQAT_DEFAULT

public final static int MQAT_USER_FIRST

public final static int MQAT_USER_LAST

public final static int MQCCSI_EMBEDDED

public final static int MQCCSI_DEFAULT

public final static int MQCCSI_Q_MGR

public final static int MQENC_NATIVE

public final static int MQENC_INTEGER_MASK

public final static int MQENC_DECIMAL_MASK

public final static int MQENC_FLOAT_MASK

public final static int MQENC_RESERVED_MASK

public final static int MQENC_INTEGER_UNDEFINED

public final static int MQENC_INTEGER_NORMAL

public final static int MQENC_INTEGER_REVERSED

public final static int MQENC_DECIMAL_UNDEFINED

public final static int MQENC_DECIMAL_NORMAL

public final static int MQENC_DECIMAL_REVERSED

public final static int MQENC_FLOAT_UNDEFINED

public final static int MQENC_FLOAT_IEEE_NORMAL

public final static int MQENC_FLOAT_IEEE_REVERSED

public final static int MQENC_FLOAT_S390

public final static int MQFB_NONE

public final static int MQFB_SYSTEM_FIRST

public final static int MQFB_EXPIRATION

public final static int MQFB_COA

public final static int MQFB_COD

public final static int MQFB_QUIT

public final static int MQFB_APPL_CANNOT_BE_STARTED

public final static int MQFB_TM_ERROR

public final static int MQFB_APPL_TYPE_ERROR

public final static int MQFB_STOPPED_BY_MSG_EXIT

public final static int MQFB_XMIT_Q_MSG_ERROR

public final static int MQFB_SYSTEM_LAST

public final static int MQFB_APPL_FIRST

public final static int MQFB_APPL_LAST

public final static int MQFB_NOT_A_REPOSITORY_MSG

public final static int MQFB_PAN

public final static int MQFB_NAN

public final static String MQFMT_NONE

public final static String MQFMT_ADMIN

public final static String MQFMT_DEAD_LETTER_HEADER

public final static String MQFMT_EVENT

public final static String MQFMT_PCF

public final static String MQFMT_STRING

public final static String MQFMT_TRIGGER

public final static String MQFMT_XMIT_Q_HEADER

public final static String MQFMT_DIST_HEADER

public final static String MQFMT_MD_EXTENSION

public final static String MQFMT_REF_MSG_HEADER

public final static byte[] MQGI_NONE

public final static int MQMT_SYSTEM_FIRST

public final static int MQMT_REQUEST

public final static int MQMT_REPLY

public final static int MQMT_DATAGRAM

public final static int MQMT_REPORT

public final static int MQMT_SYSTEM_LAST

public final static int MQMT_APPL_FIRST

public final static int MQMT_APPL_LAST

public final static int MQRO_EXCEPTION

public final static int MQRO_EXCEPTION_WITH_DATA

public final static int MQRO_EXCEPTION_WITH_FULL_DATA

public final static int MQRO_EXPIRATION

public final static int MQRO_EXPIRATION_WITH_DATA

public final static int MQRO_EXPIRATION_WITH_FULL_DATA

public final static int MQRO_COA

public final static int MQRO_COA_WITH_DATA

public final static int MQRO_COA_WITH_FULL_DATA

public final static int MQRO_COD

public final static int MQRO_COD_WITH_DATA

public final static int MQRO_COD_WITH_FULL_DATA

public final static int MQRO_COPY_MSG_ID_TO_CORREL_ID

public final static int MQRO_PASS_CORREL_ID

public final static int MQRO_NEW_MSG_ID

public final static int MQRO_PASS_MSG_ID

public final static int MQRO_DEAD_LETTER_Q

public final static int MQRO_DISCARD_MSG

public final static int MQRO_NONE

public final static int MQRO_REJECT_UNSUP_MASK

public final static int MQRO_ACCEPT_UNSUP_MASK

public final static int MQRO_ACCEPT_UNSUP_IF_XMIT_MASK

public final static int MQRO_PAN

public final static int MQRO_NAN

JMSインタフェースのサンプルアプリケーション

JMSインタフェースのサンプルアプリケーションの処理の流れと，サンプルアプリケーションをCosminexus Component Containerで実行する手順について説明します。

JMSインタフェースのサンプルアプリケーションとして，TP1/Message Queue Accessのインストール先のexamplesディレクトリ下のjmsディレクトリにSessionBean1とSessionBean2の2種類が格納されます。

SessionBean1は，JMSインタフェースを使用してメッセージの登録と取り出しを実行します。

SessionBean2は，SessionBean1の処理に加えて，登録するメッセージのJMSプロパティにMQCインタフェースの値を設定したり，取り出したメッセージのJMSプロパティから値を取得したりします。

サンプルアプリケーションの処理の流れ

サンプルアプリケーションの処理の流れを次の図に示します。

図7‒4　処理の流れ（JMSインタフェースの場合）

Cosminexus Component Containerでの実行手順

J2EEサーバの名称は「MyServer」，J2EEアプリケーションのDisplay nameは「MQAccess」としてください。また，登録先のキューにメッセージが残っていないことを確認してください。

このサンプルアプリケーションではCosminexus Component Containerが起動するネームサーバのポート番号をデフォルト値（900）としています。変更している場合は，次のファイルに定義されている環境変数PROVIDER_URLを修正してください。

UNIXの場合：deployApp，unDeployApp，およびtestClient

UNIXの場合の実行手順

サンプルアプリケーションの格納ディレクトリ（$MQCDIR/examples/jms/SessionBean1または$MQCDIR/examples /jms/SessionBean2）まで移動します。

compileBean，compileClient，およびtestClient.batで定義されている環境変数COSMI_HOMEをCosminexusのインストール先ディレクトリに修正します。

SessionBean2の場合だけ，compileBeanで定義されている環境変数MQACS_HOMEをTP1/Message Queue Accessのインストール先ディレクトリに修正します。

compileBean → compileClientの順に実行します。

同じディレクトリにjmssample1.jarまたはjmssample2.jarというEJB-JARファイルが作成されます。

Cosminexus Component Containerで，TP1/Message Queue Accessリソースアダプタをインポートします。

TP1/Message Queue AccessリソースアダプタのプロパティConfigurationsのQueueConfigFileNameに，キュー定義ファイルQueueConfigを完全パスで指定します。また，その他の環境変数も適宜設定します。環境変数の詳細については，「2.2　MQCクライアント機能の環境設定」を参照してください。

6. で指定したキュー定義ファイルQueueConfigのQueue.1.DisplayName，Queue.1.QueueName，およびQueue.1.QueueManagerNameの記述が正しいことを確認します。

TP1/Message Queue Accessリソースアダプタを追加し，開始します。

deployAppを実行し，J2EEアプリケーションMQAccessを開始します。

testClientを実行します。

unDeployAppを実行し，J2EEアプリケーションMQAccessを停止，および削除します。

注意事項

4.で生成されるEJB-JARファイルを使って，GUIサーバで操作することもできます。この場合，testClientの前に次のコマンドを実行してRMI-IIOPスタブ（stubs.jar）を取得してください。

cjgetstubsjar MyServer

-nameserver corbaname::localhost:****

-name MQAccess -d .

-nameserverの****にはCosminexus Component Containerが起動するネームサーバのポート番号を指定してください（デフォルト値は900）。ただし，cjgetstubsjarコマンドはGUIサーバの起動中は実行できないため，GUIサーバを停止する必要があります。

JMSインタフェースのサンプルコーディング

コーディング例

// All Rights Reserved. Copyright (C) 2003, Hitachi, Ltd.
/**********************************************************
**  JMSSample1EJB.java
**
**********************************************************/
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueConnection;
import javax.jms.QueueSession;
import javax.jms.QueueSender;
import javax.jms.QueueReceiver;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.EJBException;
import javax.ejb.CreateException;
import java.rmi.RemoteException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class JMSSample1EJB implements SessionBean {

  private SessionContext sContext = null;
  private String clientName = null;
  private QueueConnection qConnection = null;
  private Queue queue = null;

  private static final String queueLookupName =
                               "java:comp/env/jms/queue";
  private static final String cfLookupName =
                               "java:comp/env/jms/qcf";

/**********************************************************
**  name = send()
**  func = initialize a queue sender and send a message
**      (1)createQueueSession(create a queue session)
**      (2)createSender(create a queue sender)
**      (3)send(send the message)
**      (4)commit(commit local transaction)
**      (5)close(close the queue sender)
**      (6)close(close the queue session)
**********************************************************/
  public void send() {

    QueueSession qSession = null;
    QueueSender qSender = null;
    BytesMessage putMessage = null;

    try {
      // create a queue session
      qSession =
        qConnection.createQueueSession(true,
                                 Session.AUTO_ACKNOWLEDGE);

      // create a queue sender
      qSender = qSession.createSender(queue);

      // create a message object
      putMessage = qSession.createBytesMessage();

      // UTF format message data
      putMessage.
             writeUTF("******** sample put data " +
                            this.clientName + " ********");

      // send the message
      qSender.send(putMessage);

      // commit local transaction
      qSession.commit();

      // close the queue sender
      qSender.close();

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in send(): " + ex.getMessage()
                   + " error code = " + ex.getErrorCode());
      ex.printStackTrace();
      throw new EJBException(ex.getMessage());
    } catch(Exception e) {
      // other exception
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new EJBException(e.getMessage());
    } finally {
      if(qSession != null) {
        try {
          // close the queue session
          qSession.close();

        } catch (JMSException ex) {
          // JMS error
          System.out.println
            ("An error occurred in send(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
          ex.printStackTrace();
          throw new EJBException(ex.getMessage());
        } catch(Exception e) {
          // other exception
          System.err.println("An exception was thrown: "
                                         + e.getMessage());
          e.printStackTrace();
          throw new EJBException(e.getMessage());
        }
      }
    }
  }

/**********************************************************
**  name = receive()
**  func = initialize a queue receiver and
**                                      receive a message
**      (1)start(start the queue connection)
**      (2)createQueueSession(create a queue session)
**      (3)createReceiver(create a queue receiver)
**      (4)receive(receive a message)
**      (5)commit(commit local transaction)
**      (6)close(close the queue receiver)
**      (7)close(close the queue session)
**********************************************************/
  public void receive() {

    QueueSession qSession = null;
    QueueReceiver qReceiver = null;
    BytesMessage getMessage = null;

    try {
      // start the queue connection
      qConnection.start();

      // create a queue session
      qSession =
        qConnection.createQueueSession(true,
                                 Session.AUTO_ACKNOWLEDGE);

      // create a queue receiver
      qReceiver = qSession.createReceiver(queue);

      // receive a message
      getMessage = (BytesMessage)qReceiver.receive(1000);

      // commit local transaction
      qSession.commit();

      if(getMessage != null) {
        // display the get message
        String msgText = getMessage.readUTF();
        System.out.println("The message is: " + msgText);
      }

      // close the queue receiver
      qReceiver.close();

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in receive(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
      ex.printStackTrace();
      throw new EJBException(ex.getMessage());
    } catch(Exception e) {
      // other exception
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new EJBException(e.getMessage());
    } finally {
      if(qSession != null) {
        try {
          // close the queue session
          qSession.close();

        } catch (JMSException ex) {
          // JMS error
          System.out.println
            ("An error occurred in receive(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
          ex.printStackTrace();
          throw new EJBException(ex.getMessage());
        } catch(Exception e) {
          // other exception
          System.err.println("An exception was thrown: "
                                         + e.getMessage());
          e.printStackTrace();
          throw new EJBException(e.getMessage());
        }
      }
    }
  }

/**********************************************************
**  name = setSessionContext()
**  func = set a session context
**********************************************************/
  public void setSessionContext(SessionContext sc) {

    this.sContext = sc;

  }

/**********************************************************
**  name = ejbCreate()
**  func =
**      (1)lookup(look up a connection factory and
**                                          a queue object)
**      (2)createQueueConnection(create a queue connection)
**********************************************************/
  public void ejbCreate(String name)
                                   throws CreateException {

    Context ic = null;
    QueueConnectionFactory qcFactory = null;
    this.clientName = name;

    try {
      // create a context
      ic = new InitialContext();

      // looking up ConnectionFactory
      qcFactory
         = (QueueConnectionFactory)ic.lookup(cfLookupName);

      // look up a queue object
      queue = (Queue)ic.lookup(queueLookupName);

      // create a queue connection
      qConnection = qcFactory.createQueueConnection();

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in ejbCreate(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
      ex.printStackTrace();
      throw new CreateException(ex.getMessage());
    } catch (NamingException nex) {
      System.err.println("A NamingException was thrown: "
                                       + nex.getMessage());
      nex.printStackTrace();
      throw new CreateException(nex.getMessage());
    } catch (Exception e) {
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new CreateException(e.getMessage());
    }

  }

/**********************************************************
**  name = ejbRemove()
**  func =
**      (1)close(close the queue connection)
**********************************************************/
  public void ejbRemove() {

    try {

      if(qConnection != null) {
        // close the queue connection
        qConnection.close();
      }

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in ejbRemove(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
      ex.printStackTrace();
      throw new EJBException(ex.getMessage());
    } catch(Exception e) {
      // other exception
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new EJBException(e.getMessage());
    }

  }

  public void ejbActivate() {}
  public void ejbPassivate() {}
}

コーディング例（MQCインタフェース使用時）

// All Rights Reserved. Copyright (C) 2003, Hitachi, Ltd.
/**********************************************************
**  JMSSample2EJB.java
**
**********************************************************/
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueConnection;
import javax.jms.QueueSession;
import javax.jms.QueueSender;
import javax.jms.QueueReceiver;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.EJBException;
import javax.ejb.CreateException;
import java.rmi.RemoteException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import jp.co.Hitachi.soft.mqadaptor.MQC;

public class JMSSample2EJB implements SessionBean {

  private SessionContext sContext = null;
  private String clientName = null;
  private QueueConnection qConnection = null;
  private Queue queue = null;

  private static final String queueLookupName =
                               "java:comp/env/jms/queue";
  private static final String cfLookupName =
                               "java:comp/env/jms/qcf";

/**********************************************************
**  name = send()
**  func = initialize a queue sender and send a message
**      (1)createQueueSession(create a queue session)
**      (2)createSender(create a queue sender)
**      (3)send(send the message)
**      (4)commit(commit local transaction)
**      (5)close(close the queue sender)
**      (6)close(close the queue session)
**********************************************************/
  public void send() {

    QueueSession qSession = null;
    QueueSender qSender = null;
    BytesMessage putMessage = null;

    try {
      // create a queue session
      qSession =
        qConnection.createQueueSession(true,
                                 Session.AUTO_ACKNOWLEDGE);

      // create a queue sender
      qSender = qSession.createSender(queue);

      // create a message object
      putMessage = qSession.createBytesMessage();

      // UTF format message data
      putMessage.
             writeUTF("******** sample put data " +
                            this.clientName + " ********");

      // set a property
      putMessage.setStringProperty(
                    "JMS_HITACHI_Format",MQC.MQFMT_STRING);

      // send the message
      qSender.send(putMessage);

      // commit local transaction
      qSession.commit();

      // close the queue sender
      qSender.close();

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in send(): " + ex.getMessage()
                   + " error code = " + ex.getErrorCode());
      ex.printStackTrace();
      throw new EJBException(ex.getMessage());
    } catch(Exception e) {
      // other exception
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new EJBException(e.getMessage());
    } finally {
      if(qSession != null) {
        try {
          // close the queue session
          qSession.close();

        } catch (JMSException ex) {
          // JMS error
          System.out.println
            ("An error occurred in send(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
          ex.printStackTrace();
          throw new EJBException(ex.getMessage());
        } catch(Exception e) {
          // other exception
          System.err.println("An exception was thrown: "
                                         + e.getMessage());
          e.printStackTrace();
          throw new EJBException(e.getMessage());
        }
      }
    }
  }

/**********************************************************
**  name = receive()
**  func = initialize a queue receiver and
**                                      receive a message
**      (1)start(start the queue connection)
**      (2)createQueueSession(create a queue session)
**      (3)createReceiver(create a queue receiver)
**      (4)receive(receive a message)
**      (5)commit(commit local transaction)
**      (6)close(close the queue receiver)
**      (7)close(close the queue session)
**********************************************************/
  public void receive() {

    QueueSession qSession = null;
    QueueReceiver qReceiver = null;
    BytesMessage getMessage = null;

    try {
      // start the queue connection
      qConnection.start();

      // create a queue session
      qSession =
        qConnection.createQueueSession(true,
                                 Session.AUTO_ACKNOWLEDGE);

      // create a queue receiver
      qReceiver = qSession.createReceiver(queue);

      // receive a message
      getMessage = (BytesMessage)qReceiver.receive(1000);

      // commit local transaction
      qSession.commit();

      if(getMessage != null) {
        // display the get message
        String msgText = getMessage.readUTF();
        String msgFormat = getMessage.
                   getStringProperty("JMS_HITACHI_Format");
        System.out.println("The message is: " + msgText);
        System.out.println(
                    "The message format is: " + msgFormat);
      }

      // close the queue receiver
      qReceiver.close();

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in receive(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
      ex.printStackTrace();
      throw new EJBException(ex.getMessage());
    } catch(Exception e) {
      // other exception
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new EJBException(e.getMessage());
    } finally {
      if(qSession != null) {
        try {
          // close the queue session
          qSession.close();

        } catch (JMSException ex) {
          // JMS error
          System.out.println
            ("An error occurred in receive(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
          ex.printStackTrace();
          throw new EJBException(ex.getMessage());
        } catch(Exception e) {
          // other exception
          System.err.println("An exception was thrown: "
                                         + e.getMessage());
          e.printStackTrace();
          throw new EJBException(e.getMessage());
        }
      }
    }
  }

/**********************************************************
**  name = setSessionContext()
**  func = set a session context
**********************************************************/
  public void setSessionContext(SessionContext sc) {

    this.sContext = sc;

  }

/**********************************************************
**  name = ejbCreate()
**  func =
**      (1)lookup(look up a connection factory and
**                                          a queue object)
**      (2)createQueueConnection(create a queue connection)
**********************************************************/
  public void ejbCreate(String name)
                                   throws CreateException {

    Context ic = null;
    QueueConnectionFactory qcFactory = null;
    this.clientName = name;

    try {
      // create a context
      ic = new InitialContext();

      // looking up ConnectionFactory
      qcFactory
         = (QueueConnectionFactory)ic.lookup(cfLookupName);

      // look up a queue object
      queue = (Queue)ic.lookup(queueLookupName);

      // create a queue connection
      qConnection = qcFactory.createQueueConnection();

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in ejbCreate(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
      ex.printStackTrace();
      throw new CreateException(ex.getMessage());
    } catch (NamingException nex) {
      System.err.println("A NamingException was thrown: "
                                       + nex.getMessage());
      nex.printStackTrace();
      throw new CreateException(nex.getMessage());
    } catch (Exception e) {
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new CreateException(e.getMessage());
    }

  }

/**********************************************************
**  name = ejbRemove()
**  func =
**      (1)close(close the queue connection)
**********************************************************/
  public void ejbRemove() {

    try {

      if(qConnection != null) {
        // close the queue connection
        qConnection.close();
      }

    } catch (JMSException ex) {
      // JMS error
      System.out.println
        ("An error occurred in ejbRemove(): "
                       + ex.getMessage() + " error code = "
                       + ex.getErrorCode());
      ex.printStackTrace();
      throw new EJBException(ex.getMessage());
    } catch(Exception e) {
      // other exception
      System.err.println("An exception was thrown: "
                                         + e.getMessage());
      e.printStackTrace();
      throw new EJBException(e.getMessage());
    }

  }

  public void ejbActivate() {}
  public void ejbPassivate() {}
}

8　メッセージの一覧

この章では，MQCクライアント機能が出力するメッセージについて説明します。MQCサーバ機能が出力するメッセージについては，マニュアル「TP1/Message Queue メッセージ」を参照してください。

8.1　メッセージの形式

8.1.1　出力形式

MQCクライアント機能で出力されるメッセージの形式を示します。

KFCAnnnnn-X    YY....YY

KFCAnnnnn-X：メッセージID（半角英数字11文字）

YY....YY：メッセージテキスト（最大222バイト）

8.1.2　記述形式

メッセージの記述形式を次に示します。

KFCAnnnnn-X

メッセージテキスト（Y）

メッセージの意味を説明します。

（Ｓ）システムがメッセージを出力したあとにする主な処理を示します。

（Ｏ）メッセージ確認時のオペレータの処置を示します。

〔対策〕メッセージ確認時のOpenTP1管理者の処置を示します。

注

メッセージ中の（O）または〔対策〕で，「保守員に連絡してください。」とは，当社社員，または当社営業担当部署に連絡することを示します。

8.1.3　メッセージIDの記号の説明

メッセージIDの記号の意味は次のとおりです。

KFCA：OpenTP1，またはTP1/Message Queue Accessのメッセージであることを示します。

nnnnn：メッセージの通し番号を示します。

X：メッセージの種類を示します。

記号の種類と意味を次の表に示します。

表8‒1　メッセージの種類

種類

意味

E

各ライブラリ，コマンド，サーバの機能が働かない障害が起きたことを示しています。

定義誤り，コマンドのオペランド指定誤りによって，動作できないことを示しています。

W

各ライブラリ，コマンド，サーバからのメモリの使用状況についての警告を示しています。

定義誤り，コマンドのオペランド指定誤りはありましたが，値を仮定して動作を実行することを示しています。

I

上記のE，Wに該当しないメッセージで，動作の報告を示しています。

R

出力メッセージに対するユーザからの応答を待っていることを示しています。

（Y）：メッセージの出力先種別を示します。

出力先種別を次の表に示します。

表8‒2　メッセージの出力先種別

種別

出力先

C

コンソール

E

標準エラー出力

S

標準出力

L

メッセージログファイル

R

エラーログファイル（syslogまたはイベントログを含む）

JMSインタフェース関連のメッセージ（KFCA31300〜KFCA31399）は，Cosminexusで指定するLogWriterに出力されます。

O

オンライン端末

TP1/Message Queue Accessでsyslogにメッセージを出力する場合は次のようにfacirity，levelを指定しています。

facirity：LOG_LOCAL1

level：LOG_ERR

8.2　メッセージ一覧

MQCクライアント機能が出力するメッセージを次に示します。MQCサーバ機能が出力するメッセージについては，マニュアル「TP1/Message Queue メッセージ」を参照してください。

KFCA30950-E

the environment variable is not set. environment variable name=aa....aa（R）

aa....aa：環境変数名

(Ｓ)API実行がエラーリターンします。

(Ｏ)環境変数が設定されているか確認して，再度実行してください。

KFCA30951-E

the value specified to the environment variable is invalid. environment variable name =aa....aa（R）

aa....aa：環境変数名

(Ｓ)API実行がエラーリターンします。

(Ｏ)環境変数に指定した値を確認して，再度実行してください。

KFCA30952-E

A format error occurred in a connection destination file. file = aa....aa (R)

接続先情報定義ファイルのフォーマットエラーを検出しました。

aa....aa：接続先情報定義ファイル名

(Ｓ)API実行がエラーリターンします。

(Ｏ)キューマネジャ構成定義が正しく設定されているかどうかを確認してください。また，設定した環境変数が正しく設定されているかどうかを確認してください。メッセージKFCA30953-W，またはメッセージKFCA30954-Wが出力されている場合，メッセージの指示に従って処置してください。

KFCA30953-W

the environment variable is not set. file = aa....aa, environment variable name = bb....bb, line = cc....cc (R)

接続先情報定義ファイルの必須の環境変数が設定されていません。

aa....aa：接続先情報定義ファイル名

bb....bb：環境変数名

cc....cc：行番号

(Ｓ)処理を続行します。

(Ｏ)キューマネジャ構成定義の先頭行がcc....ccに表示されるため，該当するキューマネジャ構成定義に，環境変数を指定しているかどうかを確認してください。

KFCA30954-W

the value specified to the environment variable is invalid. file = aa....aa, environment variable name = bb....bb, line = cc....cc (R)

接続先情報定義ファイルの環境変数で指定した値に誤りがあります。

aa....aa：接続先情報定義ファイル名

bb....bb：環境変数名

cc....cc：行番号

(Ｓ)処理を続行します。

(Ｏ)行番号で表示された，環境変数に指定した値を確認してください。

KFCA30960-E

an error occurred in the TCP/IP interface. Own(aa.....aa, bb.....bb) Partner(cc.....cc, dd.....dd) (ee.....ee, ff.....ff, gg.....gg, hhh)（R）

aa.....aa：自システムのIPアドレス

bb.....bb：自システムのポート番号

cc.....cc：相手システムのIPアドレス

dd.....dd：相手システムのポート番号

ee.....ee：自システムのプロセスID

ff.....ff：自システムのスレッドID

gg.....gg：ソケット関数名

hhh：TCP/IPの障害エラー番号

障害エラー番号がない場合は***を出力します。

(Ｓ)API実行がエラーリターンします。

(Ｏ)サーバからTCP/IPコネクションが切断された場合や回線状態が不安定な場合以外に出力されたときは，OpenTP1管理者に連絡してください。

〔対策〕OSのマニュアルから，ソケット関数名に示す関数のエラーコードを調査してください。障害エラー番号に***が出力された場合は，相手システムの状態を確認してください。ソケット関数名がconnectであった場合は，障害エラー番号に対応した次の確認をしてください。

3：非同期型connect関数の完了待ちでタイムアウトを検知しています。相手システムの状態を確認してください。

-6960：TP1/Message Queue Accessの障害対策資料を採取し，保守員に連絡してください。

KFCA30961-E

the invalid data was recieved. Own(aa.....aa, bb.....bb) Partner(cc.....cc, dd.....dd) (ee.....ee, ff.....ff, ggg)（R）

aa.....aa：自システムのIPアドレス

bb.....bb：自システムのポート番号

cc.....cc：相手システムのIPアドレス

dd.....dd：相手システムのポート番号

ee.....ee：自システムのプロセスID

ff.....ff：自システムのスレッドID

ggg：理由コード

(Ｓ)API実行がエラーリターンします。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕保守員に連絡してください。

KFCA30962-E

the protocol error occurred. IP address = aa.....aa port number= bbb maintenance information= ccc（R）

aa.....aa：相手システムのIPアドレス

bbb：相手システムのポート番号

ccc：保守情報

(Ｓ)API実行がエラーリターンします。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕保守員に連絡してください。

KFCA30963-E

a time-out occurred while waiting to recieve the next segment. Own(aa.....aa, bb.....bb) Partner(cc.....cc, dd.....dd) (ee.....ee, ff.....ff)（R）

aa.....aa：自システムのIPアドレス

bb.....bb：自システムのポート番号

cc.....cc：相手システムのIPアドレス

dd.....dd：相手システムのポート番号

ee.....ee：自システムのプロセスID

ff.....ff：自システムのスレッドID

(Ｓ)API実行がエラーリターンします。

(Ｏ)環境変数DCMQCTIMESEGのMQCリスナサーバまたはMQCゲートウェイサーバからの継続セグメント受信監視タイマ値を見直してください。

KFCA30964-E

a time-out occurred while waiting to recieve a message. Own(aa.....aa, bb.....bb) Partner(cc.....cc, dd.....dd) (ee.....ee, ff.....ff)（R）

aa.....aa：自システムのIPアドレス

bb.....bb：自システムのポート番号

cc.....cc：相手システムのIPアドレス

dd.....dd：相手システムのポート番号

ee.....ee：自システムのプロセスID

ff.....ff：自システムのスレッドID

(Ｓ)API実行がエラーリターンします。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕通信相手のシステム状態を確認し，環境変数DCMQCTIMEREQのMQCリスナサーバまたはMQCゲートウェイサーバからの結果応答受信監視タイマ値を見直してください。

KFCA30965-E

the host information is not set in aa....aa. host information = bb....bb（R）

aa....aa：情報ファイル名

bb....bb：指定ホスト名

(Ｓ)処理を終了します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕ホスト名およびホスト名ファイルの指定に誤りがないか確認してください。

KFCA30966-E

the service information is not set in aa....aa. service information = bb...bb（R）

aa....aa：情報ファイル名

bb....bb：指定サービス名

(Ｓ)処理を終了します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕サービス名およびサービス名ファイルの指定に誤りがないか確認してください。

KFCA30967-E

a local memory shortage occurred. required memory:aaa（R）

aaa：メモリサイズ（単位：バイト）

(Ｓ)処理を終了します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕十分なメモリ容量を確保してください。

KFCA30968-W

The API tracing function will now be reduced and processing will continue.（R）

(Ｓ)機能を縮退して処理を続行します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕直前に出力されたメッセージを確認してください。

KFCA30969-E

an error occurred in the MQC transaction control. information = aaa（R）

aaa：保守情報

(Ｓ)処理を終了します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕環境変数にDCMQCEXPTRN=Yを設定してください。

KFCA30970-E

メモリ不足が発生しました。（E）

(Ｓ)処理を終了します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕十分なメモリを確保し，再度実行してください。

KFCA30971-E

オプションフラグが不正です。（E）

(Ｓ)処理を終了します。

(Ｏ)指定したコマンド引数およびオプションが誤っています。正しいコマンド引数およびオプションを指定して再度実行してください。

KFCA30972-E

ファイルaa....aaが存在しません。（E）

aa....aa：ファイル名

(Ｓ)処理を終了します。

(Ｏ)指定したコマンド引数およびオプションが誤っています。ファイル名の指定またはオプションに誤りがないか確認してください。

KFCA30973-E

ファイルaa....aaにトレースデータがありません。（E）

aa....aa：ファイル名

(Ｓ)処理を終了します。

(Ｏ)ファイル名の指定に誤りがないか確認してください。

KFCA30974-W

トレースデータに不正な種別コードがあります。（E）

(Ｓ)処理を続行します。

(Ｏ)OpenTP1管理者に連絡してください。

KFCA30975-I

使用方法：mqcapiout [{ -i スレッドID | -x | -k コネクションハンドル | -s | -t }] { トレースファイル名 | -c コアファイル名 }

(Ｓ)mqcapioutコマンドの使用方法を示します。

KFCA30976-E

ファイル名が不正です。（E）

(Ｓ)処理を終了します。

(Ｏ)ファイル名の指定に誤りがないか確認してください。

KFCA30977-E

aa....aaのトレースデータが破壊されています。（E）

aa....aa：ファイル名

(Ｓ)処理を終了します。

(Ｏ)OpenTP1管理者に連絡してください。

KFCA30978-E

the same variable name aa....aa is duplicated in the environment variable definition.（R）

環境変数定義で，同一の変数名aa....aaが重複して設定されています。

aa....aa：環境変数名

(Ｓ)API実行がエラーリターンします。

〔対策〕環境変数が重複して設定されていないか確認してから再度実行してください。

KFCA30979-E

an I/O error occurred in the file aa....aa. (bb....bb, cc....cc, dd....dd, ee....ee).（R）

ファイルのアクセスで，入出力エラーが発生しました。

aa....aa：入出力エラーが発生したキューファイル名

bb....bb：エラー要因となった関数名

cc....cc：エラー要因となった関数のリターンコード

dd....dd：エラーを出力したモジュールID

ee....ee：ライン番号

(Ｓ)処理を中断します。

〔対策〕ディスク装置に異常がないか確認してください。

KFCA30980-W

the transaction was changed to rollback-only. reason = aa....aa, XID = [bb....bb][cc....cc]（R）

トランザクションはrollback-onlyに変更されました。

aa....aa：理由コード

1：サーバとの回線が切断されました。

bb....bb：XID構造体のdataフィールドのうち，先頭からgtrid_lengthフィールドで指定した長さ分の情報（最大32バイト分）

cc....cc：XID構造体のdataフィールドのうち，gtrid_lengthフィールドで指定したバイトからbqual_lengthフィールドで指定した長さ分の情報（最大32バイト分）

(Ｓ)処理を続行します。

KFCA30981-E

an error occurred by opening the file. file = aa....aa, errno = bb....bb (R)

ファイルのオープンでエラーが発生しました。

aa....aa：エラーが発生したファイル名

bb....bb：エラー番号（openシステムコールのerrno）

(Ｓ)API実行，コマンド実行がエラーリターンします。

(Ｏ)エラー番号に従ってエラー原因を取り除いてから，再度実行してください。

KFCA30982-E

ファイルaa...aaにコネクションハンドルを持つトレースデータがありません。(E)

aa....aa：ファイル名

(Ｓ)処理を終了します。

(Ｏ)mqcapioutコマンドの-s，-kオプションを使用しないで編集してください。

KFCA31300-E

a system error occurred. location = aa....aa reason = bb....bb（R）

MQシステムでエラーが発生しました。

aa....aa：エラーの発生個所

bb....bb：エラーの発生理由

(Ｓ)例外を発行して処理を中断します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕保守員に連絡してください。

KFCA31301-E

the temporary queue is in use. The object that is using the queue = aa....aa（R）

動的キューは使用中です。

aa....aa：キューを使用しているオブジェクトの名前

(Ｓ)例外を発行して処理を中断します。

〔対策〕動的キューが使われていないことを確認してから再度実行してください。

KFCA31302-E

an error occurred in MQOPEN. reason code = aa....aa（R）

MQOPEN命令でエラーが発生しました。

aa....aa：MQOPEN命令の理由コード

(Ｓ)例外を発行して処理を中断します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕cmqc.hのMQIヘッダファイルと，マニュアル「TP1/Message Queue プログラム作成リファレンス」から理由コード（MQRC*）を調査し，処置してください。

KFCA31303-E

an error occurred in MQCLOSE. reason code = aa....aa（R）

MQCLOSE命令でエラーが発生しました。

aa....aa：MQCLOSE命令の理由コード

(Ｓ)例外を発行して処理を中断します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕cmqc.hのMQIヘッダファイルと，マニュアル「TP1/Message Queue プログラム作成リファレンス」から理由コード（MQRC*）を調査し，処置してください。

KFCA31304-E

an error occurred in MQPUT. reason code = aa....aa（R）

MQPUT命令でエラーが発生しました。

aa....aa：MQPUT命令の理由コード

(Ｓ)例外を発行して処理を中断します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕cmqc.hのMQIヘッダファイルと，マニュアル「TP1/Message Queue プログラム作成リファレンス」から理由コード（MQRC*）を調査し，処置してください。

KFCA31305-E

an error occurred in MQPUT1. reason code = aa....aa（R）

MQPUT1命令でエラーが発生しました。

aa....aa：MQPUT1命令の理由コード

(Ｓ)例外を発行して処理を中断します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕cmqc.hのMQIヘッダファイルと，マニュアル「TP1/Message Queue プログラム作成リファレンス」から理由コード（MQRC*）を調査し，処置してください。

KFCA31306-E

an error occurred in MQGET. reason code = aa....aa（R）

MQGET命令でエラーが発生しました。

aa....aa：MQGET命令の理由コード

(Ｓ)例外を発行して処理を中断します。

(Ｏ)OpenTP1管理者に連絡してください。

〔対策〕cmqc.hのMQIヘッダファイルと，マニュアル「TP1/Message Queue プログラム作成リファレンス」から理由コード（MQRC*）を調査し，処置してください。

KFCA31307-W

message reception is prohibited.（R）

メッセージの受信は禁止されています。

(Ｓ)処理を続行します。

〔対策〕コネクションの受信禁止状態を解除してから受信を実行してください。

KFCA31308-W

an error occurred during the closing of QueueBrowser. contents: aa....aa（R）

QueueBrowserのクローズ処理中にエラーが発生しました。

aa....aa：エラー内容

(Ｓ)処理を続行します。

〔対策〕このメッセージの直前にメッセージKFCA31303-Eが出力された場合，メッセージKFCA31303-Eの指示に従って処置してください。

KFCA31309-W

an error occurred during the hasMoreElements() method processing of an Enumeration object acquired by the getEnumeration method of QueueBrowser.（R）

QueueBrowserのgetEnumerationメソッドで取得したEnumerationオブジェクトのhasMoreElementsメソッドの処理中にエラーが発生しました。

(Ｓ)処理を続行します。

〔対策〕このメッセージの直前にメッセージKFCA31306-Eが出力された場合，メッセージKFCA31306-Eの指示に従って処置してください。

KFCA31310-W

an error occurred during the nextElement() method processing of an Enumeration object acquired by the getEnumeration method of QueueBrowser.（R）

QueueBrowserのgetEnumerationメソッドで取得したEnumerationオブジェクトのnextElementメソッドの処理中にエラーが発生しました。

(Ｓ)処理を続行します。

〔対策〕このメッセージの直前にメッセージKFCA31306-Eが出力された場合，メッセージKFCA31306-Eの指示に従って処置してください。

KFCA31311-W

an error occurred during the deleting of TemporaryQueue. contents: aa....aa（R）

TemporaryQueueの削除処理中にエラーが発生しました。

aa....aa：エラー内容

(Ｓ)処理を続行します。

〔対策〕このメッセージの直前にメッセージKFCA31303-Eが出力された場合，メッセージKFCA31303-Eの指示に従って処置してください。

KFCA31312-W

a warning occurred in MQPUT. reason code = aa....aa（R）

MQPUT命令は部分的に完了しました。

aa....aa：MQPUT命令の理由コード

(Ｓ)処理を続行します。

〔対策〕cmqc.hのMQIヘッダファイルと，マニュアル「TP1/Message Queue プログラム作成リファレンス」から理由コード（MQRC*）を調査し，処置してください。

KFCA31313-W

a warning occurred in MQPUT1. reason code = aa....aa（R）

MQPUT1命令は部分的に完了しました。

aa....aa：MQPUT1命令の理由コード

(Ｓ)処理を続行します。

〔対策〕cmqc.hのMQIヘッダファイルと，マニュアル「TP1/Message Queue プログラム作成リファレンス」から理由コード（MQRC*）を調査し，処置してください。

KFCA31320-I

the environment variable definition was read. aa....aa=bb....bb（R）

環境変数定義を読み込みました。

aa....aa：環境変数名

bb....bb：指定値

(Ｓ)処理を続行します。

KFCA31321-W

an error occurred during environment variable definition reading. aa....aa:bb....bb（R）

環境変数定義の読み込みでエラーが発生しました。

aa....aa：環境変数名

bb....bb：理由コード

-5：パラメタが不正です。環境変数名がDCMQCCLTPORT以外の場合はデフォルト値が設定されます。環境変数名がDCMQCCLTPORTの場合は指定値を使用します。

上記以外：システムエラー

(Ｓ)処理を続行します。ただし指定した値は無効となります。

〔対策〕理由コードを参照し，必要な場合は一度アンデプロイしてパラメタを見直してから再度実行してください。理由コードがシステムエラーの場合は，OpenTP1管理者に連絡してください。

KFCA31322-E

a logical contradiction error occurred. contents:aa....aa（R）

システム内で論理矛盾によるエラーが発生しました。

aa....aa：エラー内容

(Ｓ)例外を発行して処理を中断します。

〔対策〕保守員に連絡してください。

KFCA31323-I

the connection to the MQC server succeeded. connection handle=aa....aa（R）

MQCサーバとのコネクションを確立しました。

aa....aa：コネクションハンドル

(Ｓ)処理を続行します。

KFCA31324-E

an error occurred during connection to the MQC server. reason=aa....aa（R）

MQCサーバとのコネクションの確立でエラーが発生しました。

aa....aa：MQCONN命令の理由コード

(Ｓ)例外を発行して処理を中断します。

〔対策〕マニュアル「TP1/Message Queue プログラム作成リファレンス」のMQCONN命令の説明を参照して障害要因を特定してください。障害の要因を取り除いてから再度アプリケーションを実行してください。

KFCA31325-I

disconnection from the MQC server succeeded. connection handle=aa....aa（R）

MQCサーバとのコネクションを切断しました。

aa....aa：コネクションハンドル

(Ｓ)処理を続行します。

KFCA31326-W

an error occurred during disconnection from the MQC server. handle=aa....aa reason=bb....bb（R）

MQCサーバとのコネクションの切断でエラーが発生しました。

aa....aa：コネクションハンドル

bb....bb：MQDISC命令の理由コード

(Ｓ)処理を続行します。

〔対策〕マニュアル「TP1/Message Queue プログラム作成リファレンス」のMQDISC命令の説明を参照して障害要因を取り除いてください。

MQCサーバのMQCゲートウェイサーバ監視タイマ値（mqcenv定義コマンドの-gオプションで指定）が短い場合，このメッセージが出力されることがあります。この場合はMQCゲートウェイサーバ監視タイマ値を変更して再度実行してください。

KFCA31327-W

a connection to the MQC server was found to be disconnected. connection handle=aa....aa（R）

MQCサーバとのコネクションの切断を検知しました。

aa....aa：コネクションハンドル

(Ｓ)処理を続行します。

〔対策〕MQCサーバのMQCゲートウェイサーバ監視タイマ値（mqcenv定義コマンドの-gオプションで指定）が短い場合，このメッセージが頻繁に出力されることがあります。この場合はMQCゲートウェイサーバ監視タイマ値を変更して再度実行してください。

KFCA31328-W

an error occurred during QueueManager closing. reason=aa....aa（R）

キューマネジャのクローズ処理でエラーが発生しました。

aa....aa：MQCLOSE命令の理由コード

(Ｓ)処理を続行します。

〔対策〕保守員に連絡してください。

KFCA31329-E

an error occurred during local transaction starting. reason=aa..aa（R）

ローカルトランザクションの開始処理でエラーが発生しました。

aa....aa：MQBEGIN命令の理由コード

(Ｓ)例外を発行して処理を中断します。

〔対策〕保守員に連絡してください。

KFCA31330-E

an error occurred during local transaction committing. reason=aa..aa（R）

ローカルトランザクションのコミット処理でエラーが発生しました。

aa....aa：MQCMIT命令の理由コード

(Ｓ)例外を発行して処理を中断します。

〔対策〕保守員に連絡してください。

KFCA31331-E

an error occurred during local transaction rollback. reason=aa..aa（R）

ローカルトランザクションのロールバック処理でエラーが発生しました。

aa....aa：MQBACK命令の理由コード

(Ｓ)例外を発行して処理を中断します。

〔対策〕保守員に連絡してください。

KFCA31332-E

multiple APIs were simultaneously issued within the same QueueSession.（R）

同一のQueueSession内で複数のAPIが同時に発行されました。

(Ｓ)例外を発行して処理を中断します。

〔対策〕同一のQueueSession内のオブジェクトを使用して，複数のスレッドからAPIを発行している可能性があります。アプリケーションを見直して再度実行してください。

KFCA31333-W

an error occurred during QueueSession closing. contents:aa..aa（R）

QueueSessionのクローズ処理中にエラーが発生しました。

aa....aa：エラー内容

(Ｓ)例外を発行して処理を中断します。

MQCサーバとのコネクションは切断されます。

〔対策〕保守員に連絡してください。

KFCA31334-W

queue reopening failed during the associate processing of QueueSession. object:aa....aa（R）

QueueSessionのassociateの処理中にキューの再オープンに失敗しました。

aa....aa：再オープンに失敗したオブジェクトのハッシュコード

(Ｓ)処理を続行します。

〔対策〕保守員に連絡してください。

KFCA31335-W

queue closing failed during the associate processing of QueueSession. object:aa..aa（R）

QueueSessionのassociateの処理中にキューのクローズに失敗しました。

aa....aa：クローズに失敗したオブジェクトのハッシュコード

(Ｓ)処理を続行します。

〔対策〕保守員に連絡してください。

KFCA31336-W

QueueConnection closing failed because QueueSession closing failed. object:aa..aa（R）

QueueConnectionのクローズ処理中にQueueSessionのクローズに失敗しました。

aa....aa：クローズに失敗したオブジェクトのハッシュコード

(Ｓ)処理を続行します。

〔対策〕保守員に連絡してください。

KFCA31340-W

(MDB)the queue surveillance processing of MDB has already started.（R）

Message-Driven Beanキュー監視機能は，すでに開始しています。

(Ｓ)処理を続行します。

KFCA31341-W

(MDB) an error occurred during the processing of the queue monitoring thread. MQI instruction name = aa....aa, reason code = bb....bb, maintenance code = cc....cc, thread = dd....dd（R）

キュー監視スレッドでエラーが発生しました。

aa....aa：エラーが発生したMQI命令名

bb....bb：MQI命令の理由コード

cc....cc：保守コード

dd....dd：エラーが発生したスレッド名

(Ｓ)このメッセージの直後にメッセージKFCA31345-Wが出力された場合，エラーが発生したスレッドを停止します。その他の場合は処理を続行します。

〔対策〕マニュアル「TP1/Message Queue プログラム作成リファレンス」のエラーが発生したMQI命令の説明を参照して障害要因を取り除いてください。

KFCA31342-I

(MDB) the processing of the queue monitoring thread will now start. required number of threads = aa....aa（R）

キュー監視スレッドの処理を開始します。

aa....aa：要求スレッド数

(Ｓ)処理を続行します。

KFCA31343-I

(MDB) a thread has started. thread = aa....aa（R）

キュー監視スレッドが開始しました。

aa....aa：開始したスレッド名

(Ｓ)処理を続行します。

KFCA31344-I

(MDB) a thread has stopped. thread = aa....aa（R）

キュー監視スレッドが正常に停止しました。

aa....aa：正常に停止したスレッド名

(Ｓ)処理を続行します。

KFCA31345-W

(MDB) a thread has abnormally stopped. thread = aa....aa（R）

キュー監視スレッドが異常停止しました。

aa....aa：異常停止したスレッド名

(Ｓ)処理を続行します。

〔対策〕このメッセージの直前に出力されたメッセージKFCA31341-Wに従って障害要因を取り除いてから，アンデプロイ後に再度デプロイしてください。

KFCA31346-E

(MDB) all threads have stopped.（R）

すべてのキュー監視スレッドが停止しました。

(Ｓ)Message-Driven Beanアプリケーションにメッセージが通知されません。

〔対策〕異常停止したスレッドの障害要因を取り除いてから，アンデプロイ後に再度デプロイしてください。

付録

付録A　理由コード

TP1/Message Queue Accessでは，マニュアル「TP1/Message Queue プログラム作成リファレンス」に記載されている理由コードのほかに，表A-1で示す理由コードが出力される可能性があります。理由コードの詳細については，上記のマニュアルを参照してください。

また，次の理由コードでは，マニュアル「TP1/Message Queue プログラム作成リファレンス」に記載されている以外の要因である可能性があります。

MQRC_Q_MGR_NOT_AVAILABLE

MQRC_UNEXPECTED_ERROR

MQRC_BACKED_OUT

MQRC_OUTCOME_MIXED

理由コード一覧を，次の表に示します。

表A‒1　理由コード一覧

値（10進数）

値（16進数）

説明

2003L

X'000007D3'

MQRC_BACKED_OUT

要因

トランザクションをコミットするために，MQCMIT命令またはMQDISC命令が呼び出されましたが，トランザクションがコミットされないでロールバックしました。

対処

dc_trn_unchained_commit()でエラーが発生しました。

上記関数が失敗した要因を示すメッセージをメッセージログファイルで確認し，TP1/Server Baseのマニュアルを参照して対処してください。

2026L

X'000007EA'

MQRC_MD_ERROR

要因

JavaインタフェースのMQMessageクラス.accountingTokenが次のどれかの理由で不正です。

32バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

32バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsに次に示すどちらかのオプションを指定して，MQQueue.putメソッドが発行されました。

・MQPMO_PASS_IDENTITY_CONTEXT

・MQPMO_PASS_ALL_CONTEXT

すべて0で設定された32バイト未満のbyte型配列を指定して，MQQueue.putメソッドが発行されました。

対処

MQMessageクラスのaccountingToken変数に，32バイトのbyte型配列を指定してください。

2058L

X'0000080A'

MQRC_Q_MGR_NAME_ERROR

要因

次の場合に，この理由コードを返します。

MQCONN命令でName引数に指定された値が不正か，または未知の値の場合

ただし，不正なName引数を検出できないことがあります。検出されないときの動作は保証しません。

不正な環境変数によって正しいサーバに接続できない場合

対処

影響がなければ，Name引数に空白を指定してください。または，使用中の名称が正しいか確認してください。

Name引数ポインタが正しいか確認してください。

環境変数DCMQCSRVHOSTNAME，DCMQCSRVHOSTIP，DCMQCSRVSERVNAME，DCMQCSRVPORTの接続先が正しいことを確認してください。

環境変数にDCMQCDEFCON=Yを設定し，非XAライブラリを使用しているAPでは，Name引数に空白を指定しないでください。

接続先情報定義ファイルに設定しているキューマネジャ名のどちらかを指定してください。

2059L

X'0000080B'

MQRC_Q_MGR_NOT_AVAILABLE

要因

MQCゲートウェイサーバに空きがない場合，MQCONN命令がこの理由コードを返します。

MQCサーバとMQCクライアントのバージョンが対応していない場合，MQCONN命令がこの理由コードを返す場合があります。

MQDISC命令発行時にMQCゲートウェイサーバで後処理をするため，直後に発行されたMQCONN命令がこの理由コードを返す場合があります。

対処

必要な数のMQCゲートウェイサーバが起動しているかどうか確認してください。

MQCサーバとMQCクライアントが対応バージョンであるかどうか確認してください。

MQDISC命令/MQCONN命令を繰り返し発行するUAPを使用した場合は，MQCONN命令のリトライ発行処理をしてください。

2123L

X'0000084B'

MQRC_OUTCOME_MIXED

要因

現在のトランザクションに，次のどちらかが発生しました。

トランザクションをコミットするために，MQCMIT命令またはMQDISC命令が呼び出されましたが，トランザクションがコミットされないでロールバックしました。

トランザクションをロールバックするために，MQBACK命令が呼び出されましたが，トランザクションの結果が不明です。

対処

dc_trn_unchained_commit()またはdc_trn_unchained_rollback()でエラーが発生しました。

上記関数が失敗した要因を示すメッセージをメッセージログファイルで確認し，TP1/Server Baseのマニュアルを参照して対処してください。

2195L

X'00000893'

MQRC_UNEXPECTED_ERROR

要因

次のどれかの場合，この理由コードを返すときがあります。

環境変数の設定に問題があります。

MQCサーバの環境に問題があります。

MQCONN命令で，プロセスが使用できるファイル記述子の最大数を超えています。

対処

システムログにエラーメッセージが出力されている場合，出力されたメッセージに従って障害要因を取り除いてください。

MQCサーバのログにエラーメッセージが出力されている場合，出力されたメッセージに従ってMQCサーバの障害要因を取り除いてください。

2206L

X'0000089E'

MQRC_MSG_ID_ERROR

要因

JavaインタフェースのMQMessageクラス.messageIdが次のどれかの理由で不正です。

24バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

24バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsにMQPMO_NEW_MSG_IDオプションを指定して，MQQueue.putメソッドが発行されました。

すべて0で設定された24バイト未満のbyte型配列を指定して，MQQueue.putメソッドが発行されました。

対処

MQMessageクラスのmessageId変数に，24バイトのbyte型配列を指定してください。

2207L

X'0000089F'

MQRC_CORREL_ID_ERROR

要因

JavaインタフェースのMQMessageクラス.correlationIdが次のどちらかの理由で不正です。

24バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

24バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsにMQPMO_NEW_CORREL_IDオプションを指定して，MQQueue.putメソッドが発行されました。

対処

MQMessageクラスのcorrelationId変数に，24バイトのbyte型配列を指定してください。

2258L

X'000008D2'

MQRC_GROUP_ID_ERROR

要因

JavaインタフェースのMQMessageクラス.groupIdが次のどれかの理由で不正です。

MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で，24バイト未満のbyte型配列を指定して，MQQueue.getメソッドが発行されました。

MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で，24バイト未満のbyte型配列を指定し，MQPutMessageOptions.optionsにMQPMO_LOGICAL_ORDERオプション，MQMessage.messageFlagsに次に示すどれかのオプションを指定して，MQQueue.putメソッドが発行されました。

・MQMF_SEGMENTATION_ALLOWED

・MQMF_MSG_IN_GROUP

・MQMF_LAST_MSG_IN_GROUP

・MQMF_SEGMENT

・MQMF_LAST_SEGMENT

MQMessage.setVersion(MQC.MQMD_VERSION_2)を実行した上で，すべて0で設定された24バイト未満のbyte型配列を指定し，MQMessage.messageFlagsに次に示すどれかのオプションを指定して，MQQueue.putメソッドが発行されました。

・MQMF_SEGMENTATION_ALLOWED

・MQMF_MSG_IN_GROUP

・MQMF_LAST_MSG_IN_GROUP

・MQMF_SEGMENT

・MQMF_LAST_SEGMENT

対処

MQMessageクラスのgroupId変数に，24バイトのbyte型配列を指定してください。

6100L

X'000017D4'

MQRC_REOPEN_EXCL_INPUT_ERROR

排他入力用キューのため，再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく，一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが，キューが排他的入力用にオープンになっているためにクローズできませんでした。また，クローズすると，キューが現在アクセス権のあるプロセスまたはスレッドによって再オープンされる前に，別のプロセスまたはスレッドによってアクセスされる可能性があります。

対処

暗黙の再オープンが必要でなくなるように，発生する可能性のある事態をすべて扱えるようにするため，open optionsを明示的に設定します。

6101L

X'000017D5'

MQRC_REOPEN_INQUIRE_ERROR

特性の検査が必要なため，再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく，一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが，オブジェクトの一つまたは複数の特性をクローズ前に動的に検査する必要があるため，クローズできませんでした。また，open optionsにMQOO_INQUIREが組み込まれていません。

対処

MQOO_INQUIREを組み込むよう，open optionsを明示的に設定します。

6102L

X'000017D6'

MQRC_REOPEN_SAVED_CONTEXT_ERR

状態を保存するため，再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく，一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが，キューがMQOO_SAVE_ALL_CONTEXTでオープンになっているためにクローズができませんでした。または消去されるGETが直前に実行されています。これによって，保存された状態情報がオープンキューと関連づけられるため，この情報はクローズによって破棄されます。

対処

暗黙の再オープンが必要でなくなるように，発生する可能性のある事態をすべて扱えるようにするため，open optionsを明示的に設定します。

6103L

X'000017D7'

MQRC_REOPEN_TEMPORARY_Q_ERROR

一時キューのため，再オープンできません。

要因

オープンオブジェクトに正しいImqObject open optionsがなく，一つまたは複数の追加オプションが必要です。暗黙の再オープンが必要ですが，キューが定義タイプMQQDT_TEMPORARY_DYNAMICのローカルキューであるため，クローズができませんでした。このローカルキューはクローズによって破棄されます。

対処

暗黙の再オープンが必要でなくなるように，発生する可能性のある事態をすべて扱えるようにするため，open optionsを明示的に設定します。

6104L

X'000017D8'

MQRC_ATTRIBUTE_LOCKED

属性がロックされています。

要因

あるオブジェクトがオープンになっているとき，またはImqQueueManagerオブジェクトの場合はそのオブジェクトが接続されているときに，そのオブジェクトの属性の値を変更しようとしました。このような場合，特定の属性を変更できません。属性値を変更する前に，必要に応じてオブジェクトのクローズまたは切断をしてください。

MQINQコールを実行するために，オブジェクトが予想に反して，しかも暗黙的に接続されたか，オープンされたか，またはその両方が行われた可能性があります。どのメソッド呼び出しによって，MQINQコールが発生したかどうかを判別してください。

対処

ImqObject open optionsにMQOO_INQUIREを組み込み，それらのオプションをもっと早い時期に設定します。

6105L

X'000017D9'

MQRC_CURSOR_NOT_VALID

ブラウズカーソルがありません。

要因

オープンキューのためのブラウズカーソルが暗黙の再オープンによって最後に使用されてから，無効になっています。

対処

暗黙の再オープンが必要でなくなるように，発生する可能性のある事態をすべて扱えるようにするため，ImqObject open optionsを明示的に設定します。

6106L

X'000017DA'

MQRC_ENCODING_ERROR

コード化に誤りがあります。

要因

メッセージ項目のコード化は，ペーストするためにMQENC_NATIVEでなければなりません。

6107L

X'000017DB'

MQRC_STRUC_ID_ERROR

構造体IDに誤りがあります。

要因

メッセージ項目の構造体IDは，データポインタで始まる4文字から派生したものですが，欠落しているか，その項目がペーストされるオブジェクトのクラスと矛盾しています。

6108L

X'000017DC'

MQRC_NULL_POINTER

ヌルポインタが渡されました。

要因

ヌルでないポインタが必要であるか，暗黙に指定されているのにヌルポインタが与えられました。

6109L

X'000017DD'

MQRC_NO_CONNECTION_REFERENCE

接続がありません。

要因

connection referenceはヌルです。ImqQueueManagerオブジェクトへの接続が必要です。

6110L

X'000017DE'

MQRC_NO_BUFFER

バッファがありません。

要因

使用可能なバッファがありません。ImqCacheオブジェクトの場合は，割り当てることができなく，発生するはずのないオブジェクト状態に内部矛盾があることを示しています。

6111L

X'000017DF'

MQRC_BINARY_DATA_LENGTH_ERROR

データ長が不正です。

要因

2進データの長さが，ターゲット属性の長さと矛盾しています。すべての属性にとってゼロが正しい長さです。

MQ_ACCOUNTING_TOKEN_LENGTHは，accounting tokenの正しい長さです。

MQ_CORREL_ID_LENGTHは，correlation idの正しい長さです。

MQ_GROUP_ID_LENGTHは，group idの正しい長さです。

MQ_MSG_ID_LENGTHは，message idの正しい長さです。

MQ_OBJECT_INSTANCE_ID_LENGTHは，instance idの正しい長さです。

MQ_TRAN_INSTANCE_ID_LENGTHは，transaction instance idの正しい長さです。

6112L

X'000017E0'

MQRC_BUFFER_NOT_AUTOMATIC

バッファはシステムによって管理されていません。

要因

ユーザによって定義・管理されるバッファのサイズは変更できません。ユーザ定義バッファは，置換または回収するしかありません。バッファはシステムによって管理されていないと，サイズを変更できません。

6113L

X'000017E1'

MQRC_INSUFFICIENT_BUFFER

バッファが不十分です。

要因

データポインタの後ろに，要求を受け入れるだけの使用可能なバッファスペースが十分にありません。これは，バッファのサイズが変更できないためと考えられます。

6114L

X'000017E2'

MQRC_INSUFFICIENT_DATA

データが不十分です。

要因

データポインタの後ろに，要求を受け入れるだけのデータが十分にありません。

6115L

X'000017E3'

MQRC_DATA_TRUNCATED

データが切り捨てられました。

要因

あるバッファから別のバッファにコピーするときに，データが切り捨てられました。次のどれかの要因が考えられます。

ターゲットバッファのサイズを変更できません。

どれかのバッファをアドレス指定するときに問題があります。

代替用のバッファと置き換えられてサイズが小さくなっています。

6116L

X'000017E4'

MQRC_ZERO_LENGTH

ゼロの長さが指定されました。

要因

正の長さが必要であるか，または暗黙に指定されているのにゼロの長さが与えられました。

6117L

X'000017E5'

MQRC_NEGATIVE_LENGTH

負の長さが指定されました。

要因

ゼロまたは正の長さが必要であるか，または暗黙に指定されているのに負の長さが与えられました。

6118L

X'000017E6'

MQRC_NEGATIVE_OFFSET

負のオフセットが指定されました。

要因

ゼロまたは正のオフセットが必要であるか，または暗黙に指定されているのに負のオフセットが与えられました。

6119L

X'000017E7'

MQRC_INCONSISTENT_FORMAT

フォーマットが矛盾しています。

要因

メッセージ項目の形式が，その項目がペーストされるオブジェクトのクラスと矛盾しています。

6120L

X'000017E8'

MQRC_INCONSISTENT_OBJECT_STATE

オブジェクトが矛盾しています。

要因

オープンになっているオブジェクトと，参照される，接続されていないImqQueueManagerオブジェクトとが矛盾しています。

6121L

X'000017E9'

MQRC_CONTEXT_OBJECT_NOT_VALID

オブジェクトがありません。

要因

ImqPutMessageOptions context referenceが有効なImqQueueオブジェクトを参照しません。該当するオブジェクトは，直前に破棄されました。

6122L

X'000017EA'

MQRC_CONTEXT_OPEN_ERROR

オブジェクトがオープンできません。

要因

ImqPutMessageOptions context referenceはImqQueueオブジェクトを参照しますが，このオブジェクトをオープンしてコンテキストを確立できませんでした。これは，ImqQueueオブジェクトに不適切なopen optionsがあるためと考えられます。参照されたオブジェクトのreason codeから，原因を調査してください。

6123L

X'000017EB'

MQRC_STRUC_LENGTH_ERROR

データ構造体の長さが不正です。

要因

データ構造体の長さが，その内容と矛盾しています。MQRMHの場合は，長さが固定フィールドとすべてのオフセットデータを含めるのに不十分です。

6126L

X'000017EE'

MQRC_DISTRIBUTION_LIST_EMPTY

配布リストに組み込まれているImqQueueオブジェクトがありません。

要因

配布リストに組み込まれているImqQueueオブジェクトがないため，ImqDistributionListが失敗しました。

付録B　JMS仕様とMQCクライアント機能のJMSインタフェースとの差異

Oracle Corporationが提供するJMS 1.0とMQCクライアント機能のJMSインタフェースとの機能差を示します。

インタフェース（パッケージ javax.jms）の機能差を次の表に示します。

表B‒1　インタフェースの機能差

インタフェース名

機能差

MapMessage

TP1/Message QueueではByte型配列のデータを扱うため，ほかの型のメッセージは未サポートです。

ObjectMessage

StreamMessage

TextMessage

TemporaryTopic

Pub-Sub型メッセージングは未サポートです。

Topic

TopicConnection

TopicConnectionFactory

TopicPublisher

TopicSession

TopicSubscriber

XAConnection

XA関連のインタフェースはオプションのため，未サポートです。

XAConnectionFactory

XAQueueConnection

XAQueueConnectionFactory

XAQueueSession

XASession

XATopicConnection

XATopicConnectionFactory

XATopicSession

ExceptionListener

未サポートです。

メソッド（パッケージ javax.jms）の機能差を次の表に示します。

表B‒2　メソッドの機能差

インタフェース名

メソッド名

機能差

Message

void acknowledge()

確認機能は提供しません。発行後，即座にリターンします。

void clearBody()

−

void clearProperties()

−

boolean getBooleanProperty(java.lang.String name)

String型からboolean型への変換に失敗すると，例外JMSExceptionがスローされます。

byte getByteProperty(java.lang.String name)

String型からbyte型への変換に失敗すると，例外JMSExceptionがスローされます。

double getDoubleProperty(java.lang.String name)

String型からdouble型への変換に失敗すると，例外JMSExceptionがスローされます。

float getFloatProperty(java.lang.String name)

String型からfloat型への変換に失敗すると，例外JMSExceptionがスローされます。

int getIntProperty(java.lang.String name)

String型からint型への変換に失敗すると，例外JMSExceptionがスローされます。

java.lang.String getJMSCorrelationID()

内部で，MQBYTE24型からString型へ変換されます。

byte[] getJMSCorrelationIDAsBytes()

−

int getJMSDeliveryMode()

−

Destination getJMSDestination()

受信したメッセージの場合は受信したキューが返却されます。

long getJMSExpiration()

−

java.lang.String getJMSMessageID()

−

int getJMSPriority()

−

boolean getJMSRedelivered()

MQMD構造体のBackoutCountフィールドが1以上のときはtrueを返し，0のときはfalseを返します。

Destination getJMSReplyTo()

−

long getJMSTimestamp()

キューから取得したメッセージのPutDate，PutTimeが日付・時間の形式ではない場合，JMSTimestampには0を設定します。

また，PutDateとPutTimeのどちらかが空白の場合，JMSTimestampにはクライアントの現在時刻が設定されます。

java.lang.String getJMSType()

setJMSType()で指定した値が返ります。

long getLongProperty(java.lang.String name)

String型からlong型への変換に失敗すると，例外JMSExceptionがスローされます。

java.lang.Object getObjectProperty(java.lang.String name)

−

java.util.Enumeration getPropertyNames()

−

short getShortProperty(java.lang.String name)

String型からshort型への変換に失敗すると，例外JMSExceptionがスローされます。

java.lang.String getStringProperty(java.lang.String name)

−

boolean propertyExists(java.lang.String name)

−

void setBooleanProperty(java.lang.String name, boolean value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setByteProperty(java.lang.String name, byte value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setDoubleProperty(java.lang.String name, double value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setFloatProperty(java.lang.String name, float value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setIntProperty(java.lang.String name, int value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setJMSCorrelationID(java.lang.String correlationID)

内部で，String型からMQBYTE24型へ変換されますが，このとき24バイトを超える部分は切り捨てられます。

void setJMSCorrelationIDAsBytes(byte[] correlationID)

24バイトを超える部分は切り捨てられます。

void setJMSDeliveryMode(int deliveryMode)

−

void setJMSDestination(Destination destination)

−

void setJMSExpiration(long expiration)

−

void setJMSMessageID(java.lang.String id)

−

void setJMSPriority(int priority)

−

void setJMSRedelivered(boolean redelivered)

−

void setJMSReplyTo(Destination replyTo)

−

void setJMSTimestamp(long timestamp)

−

void setJMSType(java.lang.String type)

値はTP1/Message Queueのキューに登録されません。

void setLongProperty(java.lang.String name, long value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setObjectProperty(java.lang.String name, java.lang.Object value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setShortProperty(java.lang.String name, short value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

void setStringProperty(java.lang.String name, java.lang.String value)

アプリケーション固有プロパティのキーおよび値はTP1/Message Queueのキューに登録されません。

BytesMessage（extends Message）

int readBytes(bute[] value, int length)

lengthの値が不正な場合，例外JMSExceptionがスローされます。

MessageProducer

void close()

−

int getDeliveryMode()

−

boolean getDisableMessageID()

このメソッドで取得した値に関係なく，TP1/Message Queueでは常にメッセージ識別子は使用可能です。

boolean getDisableMessageTimestamp()

このメソッドで取得した値に関係なく，TP1/Message Queueでは常に登録日時は使用可能です。

int getPriority()

−

long getTimeToLive()

−

void setDeliveryMode(int deliveryMode)

−

void setDisableMessageID(boolean value)

このメソッドで設定した値に関係なく，TP1/Message Queueでは常にメッセージ識別子は使用可能です。

void setDisableMessageTimestamp(boolean value)

このメソッドで設定した値に関係なく，TP1/Message Queueでは常に登録日時は使用可能です。

void setPriority(int defaultPriority)

−

void setTimeToLive(long timeToLive)

−

QueueSender（extends MessageProducer）

全メソッドで機能差はありません。

MessageConsumer

void close()

−

MessageListener getMessageListener()

−

java.lang.String getMessageSelector()

−

Message receive()

−

Message receive(long timeout)

−

Message receiveNoWait()

−

void setMessageListener(MessageListener listener)

メッセージリスナは使用されません。

QueueReceiver（extends MessageConsumer）

全メソッドで機能差はありません。

QueueBrowser

void close()

−

java.util.Enumeration getEnumeration()

−

java.lang.String getMessageSelector()

−

public Queue getQueue()

−

Queue（extends Destination）

全メソッドで機能差はありません。

TemporaryQueue（extends Queue）

全メソッドで機能差はありません。

ConnectionMetaData

全メソッドで機能差はありません。

Connection・QueueConnection

void close()

−

java.lang.String getClientID()

未サポートです。

ExceptionListener getExceptionListener()

未サポートです。

ConnectionMetaData getMetaData()

−

void setClientID(java.lang.String clientID)

未サポートです。

void setExceptionListener(ExceptionListener listener)

未サポートです。

void start()

−

void stop()

−

ConnectionConsumer createConnectionConsumer(Queue queue, java.lang.String messageSelector, ServerSessionPool sessionPool, int maxMessages)

未サポートです。

QueueSession createQueueSession(boolean transacted, int acknowledgeMode)

−

ConnectionFactory・QueueConnectionFactory

public QueueConnection createQueueConnection()

−

public QueueConnection createQueueConnection(java.lang.String userName,java.lang.String password)

パラメタuserName，passwordは使用されません。

Session・QueueSession

void close()

−

void commit()

−

BytesMessage createBytesMessage()

−

MapMessage createMapMessage()

未サポートです。

Message createMessage()

−

ObjectMessage createObjectMessage()

未サポートです。

ObjectMessage createObjectMessage(java.io.Serializable object)

未サポートです。

StreamMessage createStreamMessage()

未サポートです。

TextMessage createTextMessage()

未サポートです。

TextMessage createTextMessage(java.lang.String text)

未サポートです。

MessageListener getMessageListener()

−

boolean getTransacted()

−

void recover()

未サポートです。

void rollback()

−

void run()

未サポートです。

void setMessageListener(MessageListener listener)

パラメタlistenerの設定はできますが，使用されません。

QueueBrowser createBrowser(Queue queue)

−

QueueBrowser createBrowser(Queue queue, java.lang.String messageSelector)

パラメタmessageSelectorは使用できますが，制限があります。詳細については，7章の「メッセージセレクタ」を参照してください。

Queue createQueue(java.lang.String queueName)

未サポートです。

QueueReceiver createReceiver(Queue queue)

−

QueueReceiver createReceiver(Queue queue, java.lang.String messageSelector)

パラメタmessageSelectorは使用できますが，制限があります。詳細については，7章の「メッセージセレクタ」を参照してください。

QueueSender createSender(Queue queue)

−

TemporaryQueue createTemporaryQueue()

−

（凡例）

−：JMS仕様との差異はありません。

付録C　MQMessageクラスで変換できるコード化文字セット識別子の一覧

MQMessageクラスのreadStringメソッド，writeStringメソッドでの文字コード変換ができます。MQMessageクラスで変換できるコード化文字セット識別子（characterSet変数）の一覧（Javaコードセット一覧）を次の表に示します。説明の欄に国名を記載している場合，その国の言語を示しています。

表C‒1　MQMessageクラスで変換できるコード化文字セット識別子の一覧

characterSet変数の指定

Javaコードセット

説明

37

Cp037

米国，カナダ（二カ国語，フランス語），オランダ，ポルトガル，ブラジル，オーストラリア

277

Cp277

IBM デンマーク，ノルウェー

437

Cp437

MS-DOS 米国，オーストラリア，ニュージーランド，南アフリカ

500

Cp500

EBCDIC 500V1

813

ISO8859_7

ISO 8859-7，ラテン／ギリシャ文字アルファベット

819

ISO8859_1

ISO 8859-1，ラテンアルファベット No.1

850

Cp850

MS-DOS ラテン文字-1

852

Cp852

MS-DOS ラテン文字-2

866

Cp866

MS-DOS ロシア語

870

Cp870

IBM 多言語ラテン文字-2

912

ISO8859_2

ISO 8859-2，ラテンアルファベット No.2

915

ISO8859_5

ISO 8859-5，ラテン／キリル文字アルファベット

916

ISO8859_8

ISO 8859-8，ラテン／ヘブライ語アルファベット

920

ISO8859_9

ISO 8859-9，ラテンアルファベット No.5

930

Cp930

UDC 4370文字を含む日本語カタカナ漢字，5026のスーパーセット

932

MS932

Windows 日本語

939

Cp939

UDC 4370文字を含む日本語ラテン文字漢字，5035のスーパーセット

950

Big5

Big5，中国語（繁体字）

954

EUC_JP

JIS X 0201，0208，0212，EUCエンコーディング，日本語

964

EUC_TW

CNS11643（Plane 1-3），EUCエンコーディング，中国語（繁体字）

970

EUC_KR

KS C 5601，EUCエンコーディング，韓国語

1089

ISO8859_6

ISO 8859-6，ラテン／アラビア文字アルファベット

1200

Unicode

Unicode

1208

UTF8

8ビットUnicode Transformation Format

1381

Cp1381

IBM OS/2，DOS 中国（中華人民共和国）

33722

Cp33722

IBM-eucJP - 日本語（5050のスーパーセット）

注1

表C-1以外のcharacterSet変数を指定し，readStringメソッド，writeStringメソッドを発行した場合は，指定したcharacterSetの先頭に"Cp"を付加したコードセットへ文字コード変換します。

（例）

characterSet変数に"273"を指定した場合，readStringメソッド，writeStringメソッド内で，"Cp273"へ文字コード変換します。

"Cp"を付加したコードセットがJavaでサポートされていない場合，文字コード変換は失敗します。

コードセットの詳細についてはJavaのエンコーディング仕様を参照してください。

注2

characterSet変数にMQCCI_Q_MGRを指定した場合，readStringメソッド，またはwriteStringメソッドでは，characterSet変数に"819"が指定されているものとして文字コード変換します。

付録D　用語解説

（記号）

$DCCONFPATH

OpenTP1定義ファイルを格納するディレクトリを完全パス名で指定してある環境変数名です。

$DCDIR

OpenTP1ディレクトリを完全パス名で指定してある環境変数名です。

（英字）

JMS（Java Message Service）

Javaでのメッセージキューイング機能を提供するAPIです。

TP1/Message Queue AccessのJMSインタフェースは，Oracle Corporationが提供するJMS 1.0のインタフェースに基づいて実装しています。このJMSインタフェースを使用して，TP1/Message QueueとJ2EE準拠のアプリケーションサーバを連携します。なお，TP1/Message Queue Accessが連携できるJ2EE準拠のアプリケーションサーバはCosminexusだけです。

JTA（Java Transaction API）

J2EEアーキテクチャにトランザクション処理サービスを提供するAPIです。JTAには，アプリケーションサーバ（Cosminexus）とTP1/Message Queueとの通信で必要となるAPIが定義されています。

RM（Resource Manager）

リソースマネジャのことです。リソースに対するアクセスを提供します。

TM（Transaction Manager）

トランザクションマネジャのことです。トランザクションに対して識別子を割り当て，進行をモニタし，トランザクションの完了と，失敗したときのリカバリをします。

XAインタフェース

TMとRMとの間で相互に宣言されるインタフェースです。TMに対し，RMの作業をグローバルトランザクションの中に構成し，決着とリカバリを調停します。

（サ行）

サービス名ファイル

サービス名称とポート番号を対応づけたファイルです。標準的なパス名を次に示します。

UNIXの場合

/etc/services

セグメント

MQCプロトコルでは，UAPで指定されたパラメタを一定の長さに分割してヘッダを付けたあと，TCP/IPに送信します。このときの転送の単位です。

（ハ行）

ホスト名ファイル

ホスト名称とIPアドレスを対応づけたファイルです。標準的なパス名を次に示します。

UNIXの場合

/etc/hosts

索引

記号

$DCCONFPATH[1]

$DCDIR[1]

数字

2進バイトアレイをカプセル化[1]

A

APIトレース出力単位[1]

APIトレースディスク出力要否[1]

APIトレースファイル[1]

APIトレースファイル取得[1]

APIトレースファイル数[1]

APIトレース容量[1]

application.xml[1]、[2]、[3]、[4]

B

BytesMessageインタフェース[1]

C

C++インタフェース[1]

C++クラス一覧[1]

C++クラス継承図[1]

C++のサンプルアプリケーション[1]

CMQ*.cbl[1]、[2]

cmqc.h[1]、[2]

cmqcfc.h[1]、[2]

compileBean[1]、[2]、[3]、[4]

compileClient[1]、[2]、[3]、[4]

config.xml[1]、[2]、[3]、[4]

ConnectionMetaDataインタフェース[1]

D

DeliveryModeインタフェース[1]

deployApp[1]、[2]、[3]、[4]

Destinationインタフェース[1]

E

ejb-jar.xml[1]、[2]、[3]、[4]

Enumerationインタフェース[1]

I

imq*.hpp[1]、[2]

ImqBinaryクラス[1]

ImqCacheクラス[1]

ImqDeadLetterHeaderクラス[1]

ImqErrorクラス[1]

ImqGetMessageOptionsクラス[1]

ImqHeaderクラス[1]

ImqItemクラス[1]

ImqMessageTrackerクラス[1]

ImqMessageクラス[1]

ImqObjectクラス[1]

ImqProcessクラス[1]

ImqPutMessageOptionsクラス[1]

ImqQueueManagerクラス[1]

ImqQueueクラス[1]

ImqStringクラス[1]

ImqTriggerクラス[1]

imqtype.h[1]、[2]

J

JavaEnvironmentトレース[1]

JavaEnvironmentトレース情報の出力レベル[1]

JavaEnvironmentトレースファイルの出力形式[1]

Javaインタフェース[1]

Java環境の設定[1]

Javaクラス一覧[1]

Javaクラス継承図[1]

Javaコンソール[1]

Javaのサンプルコーディング[1]

Javaパッケージ[1]

JMSAPIトレース情報の出力レベル[1]、[2]

JMSAPIトレースファイル[1]

JMSAPIトレースファイルの出力形式[1]

JMSPRFトレース情報の取得レベル[1]

JMSPRFトレースファイル[1]

JMSPRFトレースファイルの取得形式[1]

JMSSample1.java[1]、[2]

JMSSample1Client.java[1]、[2]

JMSSample1EJB.java[1]、[2]

JMSSample1Home.java[1]、[2]

JMSSample2.java[1]、[2]

JMSSample2Client.java[1]、[2]

JMSSample2EJB.java[1]、[2]

JMSSample2Home.java[1]、[2]

JMSインタフェース[1]

JMSインタフェース一覧[1]

JMSインタフェース機能[1]

JMSインタフェース継承図[1]

JMSインタフェースのJavaパッケージ[1]

JMSインタフェースのサンプルアプリケーション[1]

JMSインタフェースのサンプルコーディング[1]

JMSインタフェースのメソッドとMQIの対応[1]

JMSプロパティと対応するMQMD構造体のフィールド[1]

JMSプロパティ読み込み時の型変換[1]

JMSヘッダと対応するMQMD構造体のフィールド[1]

JMSメッセージのヘッダとプロパティ[1]

JP.co.Hitachi.soft.MQ.Access[1]

JTAインタフェース接続[1]

K

KFCA30950-E[1]

KFCA30951-E[1]

KFCA30952-E[1]

KFCA30953-W[1]

KFCA30954-W[1]

KFCA30960-E[1]

KFCA30961-E[1]

KFCA30962-E[1]

KFCA30963-E[1]

KFCA30964-E[1]

KFCA30965-E[1]

KFCA30966-E[1]

KFCA30967-E[1]

KFCA30968-W[1]

KFCA30969-E[1]

KFCA30970-E[1]

KFCA30971-E[1]

KFCA30972-E[1]

KFCA30973-E[1]

KFCA30974-W[1]

KFCA30975-I[1]

KFCA30976-E[1]

KFCA30977-E[1]

KFCA30978-E[1]

KFCA30979-E[1]

KFCA30980-W[1]

KFCA30981-E[1]

KFCA30982-E[1]

KFCA31300-E[1]

KFCA31301-E[1]

KFCA31302-E[1]

KFCA31303-E[1]

KFCA31304-E[1]

KFCA31305-E[1]

KFCA31306-E[1]

KFCA31307-W[1]

KFCA31308-W[1]

KFCA31309-W[1]

KFCA31310-W[1]

KFCA31311-W[1]

KFCA31312-W[1]

KFCA31313-W[1]

KFCA31320-I[1]

KFCA31321-W[1]

KFCA31322-E[1]

KFCA31323-I[1]

KFCA31324-E[1]

KFCA31325-I[1]

KFCA31326-W[1]

KFCA31327-W[1]

KFCA31328-W[1]

KFCA31329-E[1]

KFCA31330-E[1]

KFCA31331-E[1]

KFCA31332-E[1]

KFCA31333-W[1]

KFCA31334-W[1]

KFCA31335-W[1]

KFCA31336-W[1]

KFCA31340-W[1]

KFCA31341-W[1]

KFCA31342-I[1]

KFCA31343-I[1]

KFCA31344-I[1]

KFCA31345-W[1]

KFCA31346-E[1]

L

libmqc.a[1]、[2]

libmqc.so[1]

libmqccb.a[1]、[2]

libmqccb.so[1]

libmqccpp.a[1]、[2]

libmqccpp.so[1]

libmqcj.a[1]

libmqcj.so[1]

LIBPATH[1]

M

MessageConsumerインタフェース[1]

MessageProducerインタフェース[1]

Messageインタフェース[1]

Message-Driven Beanキュー監視機能[1]

MQAccessSample.java[1]、[2]

MQBACK命令[1]

MQBEGIN命令[1]

MQBO構造体[1]

mqc.jar[1]、[2]

mqcadpt.rar[1]、[2]

mqcadptdef.jar[1]、[2]

mqcapiout[1]、[2]、[3]

MQCMIT命令[1]

mqcsample.c[1]、[2]

MQCSAMPLE.cbl[1]、[2]

mqcsample.cpp[1]、[2]

MQCインタフェース[1]

MQCインタフェース（JMS）[1]

MQCクライアント機能[1]

MQCクライアント機能の運用コマンド一覧[1]

MQCクライアント機能の環境変数のオペランド[1]

MQCクライアント機能のセットアップ[1]

MQCゲートウェイサーバ[1]

MQCコネクション[1]

MQCサーバ機能[1]

MQCプロトコル[1]

MQCリスナサーバ[1]

MQCリスナサーバまたはMQCゲートウェイサーバへの最大接続試行時間[1]

MQDistributionListItemクラス[1]

MQDistributionListクラス[1]

MQDLH構造体，およびMQRMH構造体の共通機能をカプセル化[1]

MQDLH構造体の特定の機能をカプセル化[1]

MQEnvironmentクラス[1]

MQExceptionクラス[1]

MQGetMessageOptionsクラス[1]

MQGET命令の待ち合わせ最大時間[1]

MQGMO構造体をカプセル化[1]

MQI一覧[1]

MQManagedObjectクラス[1]

MQMD構造体をカプセル化[1]

MQMessageTrackerクラス[1]

MQMessageクラス[1]

MQMessageクラスで変換できるコード化文字セット識別子の一覧[1]

MQPMO構造体をカプセル化[1]

MQProcessクラス[1]

MQPutMessageOptionsクラス[1]

MQQueue:getメソッドのオプション[1]

MQQueue:putメソッドのオプション[1]

MQQueueManagerクラス[1]

MQQueueクラス[1]

MQRC_ATTRIBUTE_LOCKED[1]

MQRC_BACKED_OUT[1]

MQRC_BINARY_DATA_LENGTH_ERROR[1]

MQRC_BUFFER_NOT_AUTOMATIC[1]

MQRC_CONTEXT_OBJECT_NOT_VALID[1]

MQRC_CONTEXT_OPEN_ERROR[1]

MQRC_CORREL_ID_ERROR[1]

MQRC_CURSOR_NOT_VALID[1]

MQRC_DATA_TRUNCATED[1]

MQRC_DISTRIBUTION_LIST_EMPTY[1]

MQRC_ENCODING_ERROR[1]

MQRC_GROUP_ID_ERROR[1]

MQRC_INCONSISTENT_FORMAT[1]

MQRC_INCONSISTENT_OBJECT_STATE[1]

MQRC_INSUFFICIENT_BUFFER[1]

MQRC_INSUFFICIENT_DATA[1]

MQRC_MD_ERROR[1]

MQRC_MSG_ID_ERROR[1]

MQRC_NEGATIVE_LENGTH[1]

MQRC_NEGATIVE_OFFSET[1]

MQRC_NO_BUFFER[1]

MQRC_NO_CONNECTION_REFERENCE[1]

MQRC_NULL_POINTER[1]

MQRC_OUTCOME_MIXED[1]

MQRC_Q_MGR_NAME_ERROR[1]

MQRC_Q_MGR_NOT_AVAILABLE[1]

MQRC_REOPEN_EXCL_INPUT_ERROR[1]

MQRC_REOPEN_INQUIRE_ERROR[1]

MQRC_REOPEN_SAVED_CONTEXT_ERR[1]

MQRC_REOPEN_TEMPORARY_Q_ERROR[1]

MQRC_STRUC_ID_ERROR[1]

MQRC_STRUC_LENGTH_ERROR[1]

MQRC_UNEXPECTED_ERROR[1]

MQRC_ZERO_LENGTH[1]

MQTM構造体をカプセル化[1]

MQのキューにアクセス[1]

MQのキューマネジャにアクセス[1]

MQのプロセス定義にアクセス[1]

MQの例外発生[1]

Q

QueueBrowserインタフェース[1]

QueueConfig[1]、[2]、[3]、[4]

QueueConnectionFactoryインタフェース[1]

QueueConnectionインタフェース[1]

QueueReceiverインタフェース[1]

QueueSenderインタフェース[1]

QueueSessionインタフェース[1]

Queueインタフェース[1]

T

TCP/IPウィンドウサイズ[1]

TemporaryQueueインタフェース[1]

TemporaryQueueオブジェクト生成時のモデルキュー定義[1]

testClient[1]、[2]、[3]、[4]

TP1/Message Queue Accessの概要[1]

TP1/Message Queue Accessの機能[1]

U

unDeployApp[1]、[2]、[3]

あ

アプリケーション作成時の注意事項（JMS）[1]

アプリケーション使用時の注意事項（JMS）[1]

い

インストール時に作成されるファイル（AIX）[1]

インストール時に作成されるファイル（Linux）[1]

う

運用コマンド[1]

え

エラーに関する情報[1]

か

環境変数[1]

環境変数のオペランド（JMSインタフェース用）[1]

環境変数のオペランド（共通）[1]

環境変数のオペランド（接続先情報定義ファイルのキューマネジャ接続用）[1]

環境変数の設定項目（JMSインタフェース使用時）[1]

環境変数の設定場所の有効性[1]

監視タイマ[1]

き

記述形式[1]

キュー定義ファイルの作成（JMSインタフェース用）[1]

キュー定義ファイル名[1]

キューマネジャおよびキューの属性をカプセル化[1]

キューマネジャ構成定義[1]

キューマネジャをカプセル化[1]

く

クライアントアプリケーションの作成[1]

クラス継承図（C++の場合）[1]

クラス継承図（Javaの場合）[1]

クラスの一覧（C++）[1]

クラスの一覧（Java）[1]

け

継続セグメント受信監視タイマ値[1]

結果応答受信監視タイマ値[1]

こ

コアファイル（.core）[1]

コネクションプーリング[1]

コマンド実行時の注意事項[1]

さ

サービス名ファイル[1]

サンプルコーディング（COBOL言語）[1]

サンプルコーディング（C言語）[1]

し

時間監視機能[1]

自システムのIPアドレス[1]

自システムのポート番号[1]

システムログファイル[1]

出力形式[1]

障害時に取得する情報[1]

障害対策[1]

使用できるMQI[1]

処理の流れ（Javaの場合）[1]

処理の流れ（JMSインタフェースの場合）[1]

せ

セグメントサイズ[1]

接続先情報定義ファイルの設定項目[1]

て

デプロイおよびアンデプロイ時の注意事項（JMSインタフェース使用時）[1]

と

トランザクション処理方式の拡張要否[1]

トランザクション連携[1]

トリガできるアプリケーションプロセスの属性をカプセル化[1]

ひ

非XAインタフェース接続[1]

非XAインタフェースパッケージ[1]

ほ

ホスト名ファイル[1]

ま

窓口となるMQCリスナサーバのIPアドレス[1]

窓口となるMQCリスナサーバのサービス名[1]

窓口となるMQCリスナサーバのポート番号[1]

窓口となるMQCリスナサーバのホスト名[1]

め

メッセージIDの記号の説明[1]

メッセージ一覧[1]

メッセージキューをカプセル化[1]

メッセージセレクタ[1]

メッセージデータを構築[1]

メッセージ内の一つの項目[1]

メッセージの形式[1]

り

リンケージオプション（C++言語）[1]

リンケージオプション（COBOL言語）[1]

リンケージオプション（C言語）[1]

れ

例外クラスの一覧（JMSインタフェース）[1]

ろ

ローカルトランザクション[1]

ローカルトランザクション開始オプション[1]

ローカルトランザクションの開始[1]

ローカルトランザクションのコミット[1]

ローカルトランザクションのロールバック[1]

ローカルトランザクションを使用する場合の処理の流れ[1]