OpenTP1 Version 7

OpenTP1 メッセージキューイング機能

TP1/Message Queue 使用の手引

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

3000-3-D90-10

目　　次

前書き

変更内容

はじめに

1.　概要

1.1　TP1/Message Queueの特長

1.2　TP1/Message Queueの構成

1.3　TP1/Message Queueを使用したメッセージの送受信

1.4　MQAサービスで使用する共用メモリ

1.4.1　共用メモリの確保と解放

1.4.2　MQAサービス専用共用メモリの使用状況の表示

1.5　ソフトウェアの構成

1.5.1　TP1/Message Queueを組み込んだソフトウェア構成

1.5.2　Windowsを使用する場合の注意事項

1.5.3　TP1/Message Queueの通信層の機能範囲

1.6　関連製品

2.　機能

2.1　メッセージキューイング機能

2.1.1　メッセージキューイング機能の特長

2.1.2　メッセージキューイングの基本構成要素

2.1.3　アプリケーションからのメッセージ操作とキュー操作

2.1.4　MQI命令使用時のOpenTP1アプリケーションとの関係

2.1.5　トリガ機能

2.2　キューファイルの使用方法

2.2.1　キューファイルの構造

2.2.2　運用コマンドによるキューファイルの運用

2.3　チャネルの機能

2.3.1　コーラとレスポンダ

2.3.2　MCAのチャネルタイプ

2.3.3　チャネル状態

2.3.4　MQTサーバのトリガ起動によるチャネル開始

2.3.5　チャネルの開始

2.3.6　チャネルの確立

2.3.7　チャネル確立再試行

2.3.8　チャネル確立時のTCP/IPソケット関数発行シーケンス

2.3.9　チャネルの解放

2.4　メッセージ送受信機能

2.4.1　メッセージの送信

2.4.2　メッセージの受信

2.4.3　メッセージとセグメントの関係

2.4.4　メッセージシーケンス番号でのメッセージの管理

2.4.5　メッセージのバッチ転送

2.5　時間監視機能

2.5.1　送受信監視

2.5.2　終了処理監視

2.5.3　チャネル要求監視

2.5.4　イニシエーションキュー監視

2.5.5　転送キュー監視と切断時間間隔

2.5.6　バッチ終了待ちタイマ（バッチインターバル）

2.5.7　ハートビート機能

2.6　マルチキャスト機能

2.7　ファーストメッセージ機能

2.8　キューマネジャクラスタの機能

2.8.1　クラスタの概要

2.8.2　クラスタの使用によるシステム管理の軽減

2.8.3　クラスタのセットアップ

2.8.4　クラスタへの新しいキューマネジャの追加

2.8.5　クラスタの機能

2.8.6　ワークロード管理へのクラスタの使用

2.8.7　経路の選択

2.8.8　クラスタで使用する定義コマンド

2.8.9　クラスタ環境の通信構成

2.8.10　クラスタの管理

2.8.11　キューマネジャクラスタの準備

2.8.12　クラスタ運用時の注意事項

2.8.13　高度な作業

2.9　メッセージ編集出口UOCを使用したファイル転送

2.9.1　処理の概要

2.9.2　使用方法

2.10　MQCサーバ機能

2.10.1　MQCサーバ機能のセットアップ

2.10.2　MQCサーバ機能の環境設定

2.10.3　MQCサーバ機能の運用

3.　ユーザオウンコーディング

3.1　ユーザオウンコーディング

3.2　メッセージ編集出口UOC

3.2.1　UOCの開始条件

3.2.2　UOCに渡されるデータ形式

3.3　UOCとのインタフェース

3.3.1　UOCの呼び出し形式

3.3.2　パラメタ

3.3.3　UOCパラメタ指定についての注意事項

3.4　UOC呼び出しの流れ

3.5　UOCの組み込み

3.5.1　MQTメイン関数の作成

3.5.2　MQT実行形式プログラムの作成（UNIX）

3.5.3　MQT実行形式プログラムの作成（Windows）

3.5.4　システムサービス情報定義の作成

3.6　UOCの作成についての注意事項

3.7　UOCの作成例

4.　準備作業

TP1/Message Queueの環境作成手順

定義情報の作成手順

定義の記述形式

MQAサービス定義

set形式のMQAサービス定義

mqaquegrp（キューファイルグループの構成定義）

mqaqueatl（モデルキューの属性定義）

mqaremque（リモートキューのローカル定義）

mqaalsque（別名キューの属性定義）

mqaprcdef（プロセス定義）

mqaquemgr（キューマネジャ定義）

mqamqtnam（MQTデーモン構成定義）

MQTサービス定義

set形式のMQTサービス定義

MQT通信構成定義

mqttenv（MQT環境定義）

mqtttim（タイマ定義）

mqttbuf（バッファグループ定義）

mqttcp（TCP構成定義）

mqttcpcs（クラスタセンダTCP構成定義）

mqttcpcr（クラスタレシーバTCP構成定義）

mqtalccha（チャネル定義）

デフォルトチャネル定義

各チャネルタイプに指定できるオプション

チャネルのネゴシエーション

mqtalced（チャネル終了定義）

MQT定義オブジェクトファイルの作成手順

MQT定義オブジェクト生成ユティリティ

MQT定義結合ユティリティ

MQCサービス定義

mqcenv（MQCリスナサーバ通信環境定義）

mqcgwpnam（MQCゲートウェイサーバ名定義）

MQCゲートウェイサーバユーザサービス定義

トランザクションサービス定義

システム構成例

5.　開始と終了

5.1　TP1/Message Queueの開始

5.1.1　正常開始

5.1.2　再開始

5.2　TP1/Message Queueの終了

5.3　開始時のチャネル情報引き継ぎ

6.　システムの運用

運用コマンドの概要

TP1/Message Queueの運用コマンド

mqaadd（キューファイルの組み込み）

mqabkup（キューファイルのバックアップ）

mqachgque（キューの属性の変更）

mqaconvert（キューファイルのコンバート）

mqadel（キューファイルの削除）

mqadelmsg（メッセージの削除）

mqadelque（キュー，メッセージの削除）

mqadf（キューファイルグループの使用状況表示）

mqafilinf（キューファイル内の情報表示）

mqafills（キューファイルの情報表示）

mqafrc（キューファイルの回復）

mqagrpobs（キューファイルグループ内のキューファイル状態変更）

mqainit（キューファイルの割り当て）

mqainq（オブジェクトの属性表示）

mqalsmsg（メッセージの表示）

mqamkque（キューの作成）

mqarcvr（ファイル二重化の回復）

mqarles（キューファイルの閉塞解除）

mqarm（キューファイルの切り離し）

mqarstr（キューファイルのリストア）

mqaset（オブジェクト属性の設定）

mqccontrn（MQCトランザクション状態の変更）

mqcls（MQCゲートウェイサーバの状態表示）

mqclstrn（MQCトランザクション状態の表示）

mqcswptrc（MQCトレースの強制スワップ）

mqrls（クラスタ情報の表示）

mqrrefresh（リポジトリ情報の再作成）

mqrremove（クラスタからの脱退）

mqrswptrc（MQRトレースの強制スワップ）

mqtaltcha（チャネル属性の変更）

mqtdmped（MQT通信プロセス情報の表示）

mqted（MQTトレースファイルの編集出力）

mqtlscha（チャネルの状態表示）

mqtpngcha（チャネルのテスト接続）

mqtrlvcha（メッセージ送達未確認の解決）

mqtrstcha（メッセージシーケンス番号のリセット）

mqtstacha（チャネルの開始）

mqtstatrc（MQTトレースのディスク出力機能の開始）

mqtstpcha（チャネルの終了）

mqtstptrc（MQTトレースのディスク出力機能の終了）

mqtswptrc（MQTトレースの強制スワップ）

7.　障害対策

7.1　ファイル障害

7.1.1　キューおよびキューファイルの障害とユーザの処理

7.1.2　メッセージ送受信中の障害

7.1.3　イニシエーションキューの障害

7.1.4　キューファイルの入出力エラー

7.1.5　クラスタ環境のシステムキューの障害

7.2　通信障害

7.2.1　コネクション障害（コーラ側）

7.2.2　コネクション障害（レスポンダ側）

7.2.3　MCP障害（チャネル確立時の障害）

7.2.4　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害）

7.2.5　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害）

7.2.6　メモリ不足

7.2.7　MCP障害（メッセージ送信時の転送障害）

7.2.8　MCP障害（メッセージ受信時の転送障害）

7.2.9　MCP障害（デッドレターキュー障害）

7.2.10　イニシエーションキュー障害

7.2.11　時間監視障害

7.2.12　出口障害

7.2.13　OpenTP1システム，およびMQシステム障害

7.2.14　チャネル管理情報格納ファイル障害

7.2.15　トリガ起動処理障害

7.2.16　MCA数オーバ

7.2.17　通信障害時のメッセージ送受信の流れ

7.3　ファーストメッセージ障害

7.3.1　コネクション障害（コーラ側・ファーストメッセージ）

7.3.2　コネクション障害（レスポンダ側・ファーストメッセージ）

7.3.3　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害・ファーストメッセージ）

7.3.4　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害・ファーストメッセージ）

7.3.5　MCP障害（メッセージ送信時の転送障害・ファーストメッセージ）

7.3.6　MCP障害（メッセージ受信時の転送障害・ファーストメッセージ）

7.3.7　MCP障害（デッドレターキュー障害・ファーストメッセージ）

7.3.8　時間監視障害（ファーストメッセージ）

7.3.9　出口障害（ファーストメッセージ）

7.3.10　OpenTP1システム，およびMQシステム障害（ファーストメッセージ）

7.4　障害時に取得する情報

7.4.1　MQTトレースファイルの出力

7.4.2　MQRトレースファイルの出力

付録

付録A　共用メモリの見積もり式

付録A.1　MQAサーバ用の共用メモリの見積もり式

付録A.2　リポジトリ管理機能の共用メモリの見積もり式

付録A.3　MQCサーバ機能の共用メモリの見積もり式

付録A.4　MQTマネジャサーバの共用メモリの見積もり式

付録A.5　MQ監視機能用の共用メモリの見積もり式

付録B　ファイルの見積もり式

付録B.1　ステータスファイルのサイズの見積もり式

付録B.2　ジャーナルファイルのサイズの見積もり式

付録B.3　チェックポイントダンプファイルのサイズの見積もり式

付録B.4　キューファイルのサイズの見積もり式

付録B.5　チャネル管理情報格納ファイルのサイズの見積もり式

付録B.6　スナップダンプファイルのサイズの見積もり式（チャネルの状態表示コマンド）

付録B.7　MQCトレースファイルのサイズの見積もり式

付録B.8　MQRトレースファイルのサイズの見積もり式

付録B.9　MQTトレースファイルのサイズの見積もり式

付録B.10　ソケット用ファイル記述子のサイズの見積もり式（ユーザサーバで使用）

付録B.11　MQ管理情報ファイルのサイズの見積もり式

付録C　系切り替え機能使用時の注意

付録D　TP1/Message Queueが出力するファイル一覧

付録E　用語解説

索引

[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2006, 2011, Hitachi, Ltd.
(C) Copyright International Business Machines Corporation 1999, 2002. All rights reserved.

前書き

■ 対象製品

・適用OS：AIX 5L V5.1，AIX 5L V5.2，AIX 5L V5.3，AIX V6.1，AIX V7.1

P-1M64-C371　 uCosminexus TP1/Message Queue　 07-01※

・適用OS：AIX 5L V5.1，AIX 5L V5.2，AIX 5L V5.3，AIX V6.1

P-1M42-6511　 Message Queue - Operation - Agent　 05-00

・適用OS：AIX 5L V5.3，AIX V6.1，AIX V7.1

P-1M64-D111　 uCosminexus TP1/Message Queue（64）　 07-01※

・適用OS：HP-UX 11.0，HP-UX 11i

P-1B42-6311　 Message Queue - Operation - Center　 06-05

・適用OS：HP-UX 11i V2（IPF），HP-UX 11i V3（IPF）

P-1J64-C371　 uCosminexus TP1/Message Queue　 07-01※
P-1J42-6511　 Message Queue - Operation - Agent　 05-00
P-1J64-C571　 uCosminexus TP1/Message Queue（64）　 07-01※
P-1J42-6611　 Message Queue - Operation - Agent（64）　 05-00

・適用OS：HP-UX 11i V3（IPF）

P-1J42-6311　 Message Queue - Operation - Center　 06-05

・適用OS：Red Hat Enterprise Linux AS 4（AMD64 & Intel EM64T），Red Hat Enterprise Linux AS 4（x86），Red Hat Enterprise Linux ES 4（AMD64 & Intel EM64T），Red Hat Enterprise Linux ES 4（x86）

P-9S64-C371　 uCosminexus TP1/Message Queue　 07-01※

・適用OS：Red Hat Enterprise Linux 5（AMD/Intel 64），Red Hat Enterprise Linux 5（x86）

P-9S64-C571　 uCosminexus TP1/Message Queue　 07-01※

・適用OS：Red Hat Enterprise Linux 5（AMD/Intel 64）

P-9W64-C311　 uCosminexus TP1/Message Queue（64）　 07-01※

・適用OS：Red Hat Enterprise Linux AS 4（IPF）

P-9V64-C371　 uCosminexus TP1/Message Queue（64）　 07-01※

・適用OS：Windows NT，Windows 2000，Windows Server 2003，Windows Server 2003 R2，Windows XP

P-2442-6214　 Message Queue - Operation - Center　 06-05

・適用OS：Windows Server 2003，Windows Server 2003 x64 Editions，Windows Server 2003 R2，Windows Server 2003 R2 x64 Editions，Windows XP，Windows Vista x86，Windows Vista x64，Windows Server 2008 x86，Windows Server 2008 x64，Windows Server 2008 R2，Windows 7 x86，Windows 7 x64

P-2464-C374　 uCosminexus TP1/Message Queue　 07-01※

これらのプログラムプロダクトのほかにも，このマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。
※印の製品は，ISO9001およびTickITの認証を受けた品質マネジメントシステムで開発されました。

■ 輸出時の注意

本製品を輸出される場合には，外国為替および外国貿易法ならびに米国の輸出管理関連法規などの規制をご確認の上，必要な手続きをお取りください。
なお，ご不明な場合は，弊社担当営業にお問い合わせください。

■ 商標類

AIXは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
AIX 5Lは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
HP-UXは，Hewlett-Packard Companyのオペレーティングシステムの名称です。
Itaniumは，アメリカ合衆国およびその他の国におけるIntel Corporationの商標です。
Javaは，Oracle Corporation 及びその子会社，関連会社の米国 及びその他の国における登録商標または商標です。
Linuxは，Linus Torvalds氏の日本およびその他の国における登録商標または商標です。
Microsoftは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
MicrosoftおよびVisual Studioは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
MQSeriesは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
OpenViewは，Hewlett-Packard Companyの商標です。
Red Hatは，米国およびその他の国でRed Hat, Inc. の登録商標もしくは商標です。
Solarisは，Oracle Corporation 及びその子会社，関連会社の米国 及びその他の国における登録商標または商標です。
UNIXは，The Open Groupの米国ならびに他の国における登録商標です。
Visual C++は，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
WebSphereは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows NTは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Vistaは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。

■ 発行

2011年9月　3000-3-D90-10

■ 著作権

All Rights Reserved. Copyright (C) 2006, 2011, Hitachi, Ltd.
(C) Copyright International Business Machines Corporation 1999, 2002. All rights reserved.

変更内容

変更内容（3000-3-D90-10）TP1/Message Queue 07-01

追加・変更内容
変更個所

メッセージシーケンス番号の遷移の図を変更した。
2.4.4(1)

メッセージシーケンス番号のリセットコマンドを実行したあとのチャネルの動作について，説明を追加した。
2.4.4(2)

送信側MCAの転送キューのメッセージについて説明を追加した。
2.4.4(3)(a)

メッセージシーケンス番号不一致が発生した場合について，説明を追加した。
2.4.4(4)

時間監視機能で，時間監視の範囲が「TCP/IPコネクション確立時～開始要求受信時」と「MQTの終了処理開始～動作中チャネルのメッセージ処理完了」の場合に，指定する定義を変更した。
また，時間監視の範囲が「TCP/IPコネクション確立時～開始要求受信時」の場合に，ネゴシエーションが続いている間は，時間監視の対象外となるという説明を追加した。
2.5

mqrsup，mqrsppで設定できる値についての注意事項を変更した。
2.8.11(3)

64ビット版TP1/Message Queueの場合について，説明を追加した。
2.8.11(6)，3.3.2(1)，3.3.2(2)，3.3.2(4)，3.5.2(1)，

4.　set形式のMQAサービス定義

mqa_jnl_conf，

6.　mqted，付録B.5，付録B.6，付録B.9

MQCサーバ機能のインストール時に作成されるファイルで，Windowsの場合のコマンドのファイル名を変更した。
2.10.1

MQCゲートウェイサーバの環境設定での注意事項で，MQCゲートウェイサーバのユーザサービス定義について，説明を追加した。
2.10.2(3)(b)

MQT実行形式プログラムを作成するコマンドの説明を変更した。
3.5.2(1)，3.5.3(1)

MQTメイン関数オブジェクトファイルを作成するコマンドの説明を変更した。
3.5.3(1)

次の定義の説明を追加した。

ネームサービス定義

また，定義の規則で，次の定義の説明を変更した。

ロックサービス定義

トランザクションサービス定義

チェックポイントダンプサービス定義

4.　定義情報の作成手順

TP1/Message Queueの定義情報の作成手順で，MQT通信構成定義のオブジェクトファイルでのバージョン互換性について，注意事項を追加した。
4.　定義情報の作成手順

次のオペランド，またはオプションの説明を変更した。

set形式のMQAサービス定義

mqa_ioproc_num

mqa_expiry

mqa_maxque_expiry

mqa_maxmsg_expiry

mqtalccha（チャネル定義）

-vのvretry

-tのtcpsndbuf

-tのtcprcvbuf

-dのcnvccsid

-jnのsndjnl

mqcenv（MQCリスナサーバ通信環境定義）

-r

MQCゲートウェイサーバユーザサービス定義

atomic_update

トランザクションサービス定義

trn_crm_use

4.　set形式のMQAサービス定義

mqa_ioproc_num，

mqa_expiry，

mqa_maxque_expiry，

mqa_maxmsg_expiry，

4.　mqtalccha（チャネル定義）

vretry，

tcpsndbuf，

tcprcvbuf，

cnvccsid，

sndjnl，

4.　mqcenv（MQCリスナサーバ通信環境定義）

-r，

4.　MQCゲートウェイサーバユーザサービス定義

atomic_update，

4.　トランザクションサービス定義

trn_crm_use

mqttbuf（バッファグループ定義）で，注意事項を追加した。
4.　mqttbuf（バッファグループ定義）

MQT定義オブジェクトファイルの作成手順で，結合したMQT通信構成定義のオブジェクトファイルの登録について，説明を追加した。
4.　MQT定義オブジェクトファイルの作成手順

MQCサービス定義で，mqcgwpnam（MQCゲートウェイサーバ名定義）の指定数についての説明を変更した。
4.　MQCサービス定義

トランザクションサービス定義で，注意事項を変更した。
4.　トランザクションサービス定義

mqaaddコマンドで，出力メッセージにKFCA31050-Eを追加した。
6.　mqaadd

mqafilinfコマンドで，-qオプション，および-xオプションの説明を変更した。
6.　mqafilinf

mqarstrコマンドで，キューファイルの上書きについての注意事項を変更した。
6.　mqarstr

mqclsコマンドで，出力形式のbb....bb（RESERVE，CONNECT）に説明を追加した。
6.　mqcls

mqclstrnコマンドで，出力形式のee....eeに説明を追加した。
6.　mqclstrn

mqtedコマンドで，出力形式のb1...b1とd1...d1に説明を追加した。
6.　mqted

通信障害時のメッセージ送受信の流れについて，説明を追加した。
7.2.17

共用メモリを見積もる際の注意事項を変更した。
付録A

TP1/Message Queueのジャーナルの取得契機について，説明を追加した。
付録B.2(2)

チェックポイントダンプファイルのサイズの見積もり式について，注意事項を追加した。
付録B.3

MQTトレースファイルのサイズの見積もり式に，UOCの情報を追加した。
付録B.9

MQ管理情報ファイルのサイズの見積もり式を追加した。
付録B.11

TP1/Message Queueが出力するファイルの一覧を追加した。
付録D

適用OSからSolarisを削除した。
－

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

はじめに

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

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

＜はじめにの構成＞

対象読者

関連マニュアル

このマニュアルでの表記

図中で使用する記号

文法の記号

略語一覧

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

対象読者

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

OpenTP1 解説（3000-3-D50）

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

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

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

OpenTP1 メッセージ（3000-3-D56）

OpenTP1 使用の手引 Windows(R)編（3000-3-D64）

なお，アプリケーションの設計方法と作成方法については次のマニュアルに記載してありますので，あわせてお読みください。

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

アプリケーションのプログラミングインタフェースについては次のマニュアルに記載してありますので，あわせてお読みください。

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

TP1/Message Queueおよび関連製品が出力するメッセージについては次のマニュアルに記載してありますので，あわせてお読みください。

TP1/Message Queue メッセージ（3000-3-D91）

その他，参照するマニュアルについては，関連マニュアルの欄を参照してください。

関連マニュアル

このマニュアルでの表記

(1)　製品名

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

名称 | 略称
AIX 5L V5.1 | AIX
AIX 5L V5.2
AIX 5L V5.3
AIX V6.1
AIX V7.1
HP-UX 11.0 | HP-UX
HP-UX 11i
HP-UX 11i V2（IPF）
HP-UX 11i V3（IPF）
JavaTM | Java
Linux(R) | Linux
Red Hat Enterprise Linux AS 4（AMD64 & Intel EM64T）
Red Hat Enterprise Linux AS 4（IPF）
Red Hat Enterprise Linux AS 4（x86）
Red Hat Enterprise Linux ES 4（AMD64 & Intel EM64T）
Red Hat Enterprise Linux ES 4（x86）
Red Hat Enterprise Linux 5（AMD/Intel 64）
Red Hat Enterprise Linux 5（x86）
Message Queue - Operation - Agent | Message Queue - Operation
Message Queue - Operation - Agent（64）
Message Queue - Operation - Center
JP1/Cm2/Network Node Manager | NNM
OpenView Network Node Manager
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）
uCosminexus TP1/NET/Library | TP1/NET/Library
uCosminexus TP1/NET/Library(64)
uCosminexus TP1/Server Base | TP1/Server Base
uCosminexus TP1/Server Base（64）
UNIX(R) | UNIX
Microsoft(R) Visual C++(R) | Visual C++
Microsoft(R) Visual Studio(R) 2005 Professional Edition | Visual Studio 2005
Microsoft(R) Visual Studio(R) 2005 Standard Edition
Microsoft(R) Visual Studio(R) 2005 Team Edition for Software Architects
Microsoft(R) Visual Studio(R) 2005 Team Edition for Software Developers
Microsoft(R) Visual Studio(R) 2005 Team Edition for Software Testers
Microsoft(R) Visual Studio(R) 2005 Team Suite
Microsoft(R) Visual Studio(R) 2010 Premium | Visual Studio 2010
Microsoft(R) Visual Studio(R) 2010 Professional
Microsoft(R) Visual Studio(R) 2010 Ultimate
Microsoft(R) Windows(R) 2000 Advanced Server Operating System | Windows 2000
Microsoft(R) Windows(R) 2000 Datacenter Server Operating System
Microsoft(R) Windows(R) 2000 Professional Operating System
Microsoft(R) Windows(R) 2000 Server Operating System
Microsoft(R) Windows(R) 7, Enterprise (x86) | Windows 7 x86 | Windows 7
Microsoft(R) Windows(R) 7, Professional (x86)
Microsoft(R) Windows(R) 7, Ultimate (x86)
Microsoft(R) Windows(R) 7, Enterprise (x64) | Windows 7 x64
Microsoft(R) Windows(R) 7, Professional (x64)
Microsoft(R) Windows(R) 7, Ultimate (x64)
Microsoft(R) Windows NT(R) Server Network Operating System Version 4.0 | Windows NT
Microsoft(R) Windows NT(R) Workstation Operating System Version 4.0
Microsoft(R) Windows Server(R) 2003, Datacenter Edition | Windows Server 2003 | Windows Server 2003
Microsoft(R) Windows Server(R) 2003, Enterprise Edition
Microsoft(R) Windows Server(R) 2003, Standard Edition
Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition | Windows Server 2003 x64 Editions
Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition
Microsoft(R) Windows Server(R) 2003, Standard x64 Edition
Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition | Windows Server 2003 R2
Microsoft(R) Windows Server(R) 2003 R2, Standard Edition
Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition | Windows Server 2003 R2 x64 Editions
Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition
Microsoft(R) Windows Server(R) 2008 Datacenter (x86) | Windows Server 2008 x86 | Windows Server 2008
Microsoft(R) Windows Server(R) 2008 Enterprise (x86)
Microsoft(R) Windows Server(R) 2008 Standard (x86)
Microsoft(R) Windows Server(R) 2008 Datacenter (x64) | Windows Server 2008 x64
Microsoft(R) Windows Server(R) 2008 Enterprise (x64)
Microsoft(R) Windows Server(R) 2008 Standard (x64)
Microsoft(R) Windows Server(R) 2008 R2 Datacenter | Windows Server 2008 R2
Microsoft(R) Windows Server(R) 2008 R2 Enterprise
Microsoft(R) Windows Server(R) 2008 R2 Standard
Microsoft(R) Windows Vista(R) Business (x86) | Windows Vista x86 | Windows Vista
Microsoft(R) Windows Vista(R) Enterprise (x86)
Microsoft(R) Windows Vista(R) Ultimate (x86)
Microsoft(R) Windows Vista(R) Business (x64) | Windows Vista x64
Microsoft(R) Windows Vista(R) Enterprise (x64)
Microsoft(R) Windows Vista(R) Ultimate (x64)
Microsoft(R) Windows(R) XP Professional Operating System | Windows XP

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

Windows 2000，Windows 7，Windows NT，Windows Server 2003，Windows Server 2008，Windows Vista，およびWindows XPで機能差がない場合，Windowsと表記することがあります。

(2)　インストールディレクトリのパスの違いについて

このマニュアルでは，OpenTP1のインストールディレクトリを「/BeTRAN」と表記しています。インストールディレクトリはOSによって異なります。ご利用のOSに応じて，次の表のとおりに読み替えてください。

このマニュアルでの表記 | 適用OSごとの読み替え
AIX，またはHP-UX | Linux | Windows
/BeTRAN | /BeTRAN | /opt/OpenTP1 | OpenTP1をインストールしたディレクトリ

図中で使用する記号

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

文法の記号

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

属性表示記号

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

属性表示記号 | 意味
～ | この記号のあとにユーザ指定値の属性を示します。
《　》 | ユーザが指定を省略したときの解釈値を示します。
＜　＞ | ユーザ指定値の構文要素を示します。
((　)) | ユーザ指定値の指定範囲を示します。

構文要素記号

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

構文要素記号
意味

英字
アルファベット（A～Z，a～z）と_（アンダスコア）

英字記号
アルファベット（A～Z，a～z）と#，@，¥

英数字
英字と数字（0～9）

英数字記号
英字記号と数字（0～9）

符号なし整数
数字列（0～9）

16進数字
数字（0～9）とアルファベット（A～F，a～f）

識別子
先頭がアルファベット（A～F，a～f）の英数字列

記号名称
先頭が英字記号の英数字記号列

文字列
任意の文字の配列

パス名
記号名称，/（スラント），および．（ピリオド）
（ただし，パス名は使用するOSに依存）

OpenTP1ファイル名
アルファベット（A～Z，a～z），数字（0～9），．（ピリオド），
_（アンダスコア），および＠で構成される文字列（最大14文字）

MQ文字列
アルファベット（A～Z，a～z），数字（0～9），．（ピリオド），
/（スラント）， _（アンダスコア），および％（パーセント）で構成される文字列

文法記述記号

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

文法記述記号
意味

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

（例）

〔-s MQT通信プロセス識別子〕

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

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

（例）

{server｜receiver}

serverとreceiverのうち，どちらかを指定することを示します。

{{　}}
この記号で囲まれた複数の項目が一つの繰り返し項目の単位であることを示します。

（例）

{{ mqttbuf }}

mqttbuf

mqttbuf

と指定できることを示します。

|
（ストローク）
この記号で区切られた項目は選択できることを示します。

（例）

disk = yes｜no

yesまたはnoを指定できることを示します。

...
この記号で示す直前の項目を繰り返し指定できることを示します。

△
（白三角）
空白を示します。

（例）

コネクションID1△コネクションID2

コネクションID1とコネクションID2の間に，空白を1個入力することを示します。

略語一覧

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

英略語 | 英字での表記
API | Application Programming Interface
CCSID | Coded Character Set Identifier
FAP | Format and Protocols
FIFO | First-in-First-out
IPF | Itanium Processor Family
JMS | Java Message Service
MCA | Message Channel Agent
MCP | Message Channel Protocol
MDB | Message-driven Bean
MHP | Message Handling Program
MQA | Message Queue - Access
MQI | Message Queue Interface
MQT | Message Queue Transfer
MTU | Maximum Transmission Unit
NTP | Network Time Protocol
OS | Operating System
RPC | Remote Procedure Call
SPP | Service Providing Program
SUP | Service Using Program
TCP/IP | Transmission Control Protocol/Internet Protocol
UAP | User Application Program
UOC | User Own Coding

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

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

1.　概要

TP1/Message Queueは，OpenTP1システムに組み込まれてメッセージキューイング機能を実現するプログラムです。この章では，TP1/Message Queueの概要を説明します。

＜この章の構成＞

1.1　TP1/Message Queueの特長

1.2　TP1/Message Queueの構成

1.3　TP1/Message Queueを使用したメッセージの送受信

1.4　MQAサービスで使用する共用メモリ

1.5　ソフトウェアの構成

1.6　関連製品

1.1　TP1/Message Queueの特長

TP1/Message Queueは，OpenTP1システムに組み込まれて動作するプログラムです。TP1/Message Queueを使用すると，WebSphere MQに代表されるMQシステムのアプリケーションとメッセージの送受信ができます。MQシステムは，メッセージキューイング機能のキューマネジャがあるシステムのことです。

このマニュアルでは，TP1/Message Queueの概要，機能，および使用方法について説明します。メッセージキューイング機能の詳細およびアプリケーションの作成方法については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

次にTP1/Message Queueの特長を説明します。

＜この節の構成＞

(1)　メッセージキューイングによる非同期通信を実現

(2)　幅広いプラットフォーム間での通信を実現

(1)　メッセージキューイングによる非同期通信を実現

メッセージの送受信は，メッセージキューイング機能によって実現されます。メッセージキューイング機能とは，メッセージキューと呼ばれるキューを使用してメッセージを送受信する機能です。

メッセージを一時的に蓄積するメッセージキューを介してメッセージの送受信を行うので，非同期で通信できます。すなわち，送信する側は，通信相手の状況を意識しないで，メッセージを送信できます。また，受信する側は，メッセージを受信したい時だけアプリケーションを起動すればよいので，コンピュータの資源を有効に利用できます。

(2)　幅広いプラットフォーム間での通信を実現

TP1/Message Queueを使うと，メインフレーム，サーバ，ワークステーション，およびパーソナルコンピュータとの間で通信できます。

TP1/Message Queueによって，メインフレームを中心とした基幹業務システムと，ワークステーション・パーソナルコンピュータを中心としたオープンシステムとがメッセージベースで連携できます。

1.2　TP1/Message Queueの構成

TP1/Message Queueを組み込んだシステムをMQシステムといいます。

MQシステムの構成を，次の図に示します。

図1-1　MQシステムの構成

MQシステムは，キューを管理する部分とメッセージを送受信する部分に分けられます。メッセージを送受信する部分を通信サーバといい，一つのMQシステムに複数指定できます。また，通信サーバには，通信相手システムとの通信路を制御するメッセージチャネルエージェント（MCA）が含まれます。自システムのMCAと通信相手システムのMCAをつなぐ通信経路をチャネルといいます。

メッセージキューを管理してメッセージを送受信するプログラムをキューマネジャ※といいます。TP1/Message Queueは，OpenTP1システム上でキューマネジャの役割を持ちます。

キューマネジャの中で，特に，キューを管理する部分をMQAサーバ（MQA），通信サーバをMQTサーバ（MQT）と呼びます。MQTサーバの開始と終了を制御する部分をMQTマネジャと呼びます。

アプリケーションは，目的の業務に応じてユーザが作成するプログラムです。ユーザはアプリケーションを作成して，メッセージキューイング機能を利用します。

送受信するメッセージは，キューファイルという物理的なファイルに格納されます。

注※

マニュアル「TP1/Message Queue プログラム作成の手引」および「TP1/Message Queue プログラム作成リファレンス」で使用されているキューマネジャは，次に示す2とおりの意味で使われています。

TP1/Message Queueの全体（MQAサーバ，MQTサーバ，およびMQTマネジャ）

MCAを除くTP1/Message Queue

1.3　TP1/Message Queueを使用したメッセージの送受信

TP1/Message Queueを使用すると，OpenTP1システム内のアプリケーション同士および他システムのキューマネジャとの間でメッセージの送受信ができます。送受信ができるキューマネジャについては，「1.5.1　TP1/Message Queueを組み込んだソフトウェア構成」の通信相手システムを参照してください。これらのキューマネジャと通信する場合，TCP/IPプロトコルを使用します。

ユーザは，アプリケーションを作成して，キューにメッセージを登録したりキューからメッセージを取り出したりします。キューの間のメッセージ転送は，キューマネジャによって行われます。

TP1/Message Queueを使用したメッセージ送受信の特長を次に示します。

一度に大量のデータを送受信できます。

メッセージはいったんキューに登録されるので，メッセージの送受信中にアプリケーションが動作している必要はありません。

メッセージ送受信の概要について，次の図に示します。

図1-2　メッセージ送受信の概要

自システムのアプリケーションが，自システムのリモートキューにメッセージを登録すると，キューマネジャは転送キューヘッダ（MQXQH構造体）をメッセージに付加し転送キューに格納します。

MCAは転送キューに登録されたメッセージを，TCP/IPプロトコルを使用して相手システムのMCAに送信します。受信側のMCAは，転送キューヘッダ（MQXQH構造体）に指定されたあて先キューにメッセージを登録します。

1.4　MQAサービスで使用する共用メモリ

MQAサービスで使用する共用メモリについて説明します。

＜この節の構成＞

1.4.1　共用メモリの確保と解放

1.4.2　MQAサービス専用共用メモリの使用状況の表示

1.4.1　共用メモリの確保と解放

TP1/Message Queueでは，OpenTP1のシステム環境定義で指定する静的共用メモリと動的共用メモリの一部を使用します。さらに，システム環境定義で指定した共用メモリとは別に，MQAサービス専用共用メモリ（MQAサービス専用共用メモリの固定領域）をTP1/Message Queueの開始時に確保します。MQAサービス専用共用メモリの固定領域は，MQAサービス定義のmqaquegrp定義コマンドで指定されたキューファイルで使用する共用メモリのサイズ分を確保します。

また，TP1/Message Queueの開始時には，mqaaddコマンドでオンライン中にキューファイルを組み込む時のために，組み込むキューファイルが使用するMQAサービス専用共用メモリを，MQAサービス専用共用メモリの固定領域とは別の領域（MQAサービス専用共用メモリの拡張領域）に確保します。

確保したMQAサービス専用共用メモリは，TP1/Message Queueの終了時に解放されます。

1.4.2　MQAサービス専用共用メモリの使用状況の表示

OpenTP1の稼働中に使用しているMQAサービス専用共用メモリの状態を知りたい場合は，dcshmlsコマンド（-r オプションを指定）を実行します。dcshmlsコマンドを実行すると，現在使用しているMQAサービス専用共用メモリの合計値やMQAサービス専用共用メモリの使用率などを表示できます。dcshmlsコマンドの詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。

1.5　ソフトウェアの構成

TP1/Message Queueのソフトウェア構成を示します。

＜この節の構成＞

1.5.1　TP1/Message Queueを組み込んだソフトウェア構成

1.5.2　Windowsを使用する場合の注意事項

1.5.3　TP1/Message Queueの通信層の機能範囲

1.5.1　TP1/Message Queueを組み込んだソフトウェア構成

TP1/Message Queueは，OpenTP1システムに組み込まれて動作するプログラムです。TP1/Message Queueは，TP1/Server Base上で動作します。

自システムのアプリケーションが，相手システムのキューに関連づけられたキューにメッセージを登録すると，TP1/Message Queueは，TCP/IPプロトコルを使用して相手システムにメッセージを送信します。相手システムは指定されたキューにメッセージを登録します

TP1/Message Queueを組み込んだソフトウェア構成の例を次の図に示します。

図1-3　TP1/Message Queueを組み込んだソフトウェア構成の例

TP1/Message Queueの通信相手システムを次に示します。

WebSphere MQ

VOS3 XDM/Qを組み込んだXDM E2系のシステム

VOS3 TMS-4V/SP/Message Queue

TP1/Message Queueを組み込んだOpenTP1システム

1.5.2　Windowsを使用する場合の注意事項

WindowsのTP1/Message Queueを使用する場合，次に示す注意事項があります。

Windowsの環境変数の表記は，$DCDIRではなく%DCDIR%になります。

UNIX版ではコロン（：）が複数のパス名の区切り文字ですが，Windowsではコロンはドライブ名とディレクトリ名との区切り文字になります。Windowsではパス名の区切り文字にセミコロン（；）を使用してください。

パス名を完全パスで指定する際には，必ずドライブ名を記述してください。

COBOLのAPIを使用する場合など，OpenTP1，Windows，またはVisual C++が提供していないDLLを使用する際には，prcpathコマンド，またはプロセスサービス定義のprcsvpath定義コマンドを使用してDLLのあるディレクトリを指定してください。

OpenTP1は大文字と小文字を区別します。コマンドのオプションや，定義ファイルに記述した文字列をコマンド引数で使用するような場合は，注意してください。
例えば，-aオプションと-Aオプションでは異なるオプションを表します。

環境変数DCDIRおよび環境変数DCCONFPATHを設定する場合，そのコンピュータ内ですべて同じ文字列になるよう設定してください。また，大文字と小文字を区別してください。

ファイル名を指定するときは，ドライブ名以外にコロン（：）を含んだファイル名を指定しないでください。

OpenTP1ホームディレクトリ配下のファイル（%DCDIR%で指定したディレクトリ）を圧縮しないでください。このディレクトリを圧縮した場合，OpenTP1は正常に動作しません。

1.5.3　TP1/Message Queueの通信層の機能範囲

TP1/Message Queueは，TCP/IPプロトコル上のメッセージチャネルプロトコル（MCP）を使用しています。通信層でのTP1/Message Queueの機能の範囲について，次の図に示します。

図1-4　通信層の機能範囲

1.6　関連製品

TP1/Message QueueにはTP1/Message Queueを前提とする関連製品があります。関連製品を使用するとメッセージキューイングを使用した柔軟で拡張性のあるシステムを構成できます。

TP1/Message Queueと関連製品について，次の図に示します。

図1-5　TP1/Message Queueと関連製品

図中のプログラムについて説明します。

TP1/Message Queue - Access
クライアントアプリケーションからTP1/Message Queueのメッセージキューにメッセージを登録したり，取り出したりする機能を提供するプログラムです。TPBrokerなどのトランザクションマネジャとXA接続すると，トランザクショナルな処理を作成することもできます。クライアントアプリケーションのプログラミングインタフェースとして，C，COBOL，C++，およびJava言語を使用できます。
クライアント側にMQCクライアント機能を提供し，サーバ側にMQCサーバ機能を提供します。
MQCクライアント機能については，マニュアル「TP1/Message Queue - Access 使用の手引」を参照してください。
MQCサーバ機能はTP1/Message Queue上で動作し，次に示す要素で構成されます。

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

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

MQCサーバ機能を構成するファイルは，TP1/Message Queueに添付されています。MQCサーバ機能の定義，運用，および障害対策については，「2.10　MQCサーバ機能」を参照してください。

Message Queue - Operation
NNMおよびJP1/Cm2/Extensible SNMP Agentと連携して，TP1/Message Queueのチャネルやキューファイルの状態などを監視するプログラムです。
TP1/Message Queue側ではMessage Queue - Operation - Agentが動作し，ネットワーク監視用コンピュータ側ではMessage Queue - Operation - Centerが動作します。
詳細については，マニュアル「Message Queue - Operation 使用の手引」を参照してください。

これらの製品にはTP1/Message Queue上で動作する部分（MQCサーバ機能など）があり，OpenTP1のメッセージログファイルやsyslogなどにメッセージが出力されることがあります。これらのメッセージについては，マニュアル「TP1/Message Queue メッセージ」を参照してください。相手システム側で出力されるメッセージについては，該当する製品のマニュアルを参照してください。

2.　機能

TP1/Message Queueを使用すると，メッセージキューイング機能を実現できます。この章では，メッセージキューイング機能の概要，メッセージ送受信機能などについて説明します。

この章で使用している定義コマンドについては，「4.　準備作業」を参照してください。また，運用コマンドについては，「6.　システムの運用」を参照してください。

＜この章の構成＞

2.1　メッセージキューイング機能

2.2　キューファイルの使用方法

2.3　チャネルの機能

2.4　メッセージ送受信機能

2.5　時間監視機能

2.6　マルチキャスト機能

2.7　ファーストメッセージ機能

2.8　キューマネジャクラスタの機能

2.9　メッセージ編集出口UOCを使用したファイル転送

2.10　MQCサーバ機能

2.1　メッセージキューイング機能

メッセージキューイングとは，キューを使用してメッセージを送受信する方法です。アプリケーションがキューに登録したメッセージは，キューマネジャによって目的のキューまで送信されます。

TP1/Message Queueを使用すると，メッセージキューイングのためのアプリケーションを作成できます。メッセージキューイングの詳細およびアプリケーションの作成については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

＜この節の構成＞

2.1.1　メッセージキューイング機能の特長

2.1.2　メッセージキューイングの基本構成要素

2.1.3　アプリケーションからのメッセージ操作とキュー操作

2.1.4　MQI命令使用時のOpenTP1アプリケーションとの関係

2.1.5　トリガ機能

2.1.1　メッセージキューイング機能の特長

メッセージキューイング機能を使用したメッセージの送受信には，次に示す特長があります。

キューとキューの間の通信はキューマネジャによって行われるため，メッセージの送受信時に，アプリケーションが動作している必要はありません。

アプリケーションはキューに対する操作をするだけでよく，プログラム間の通信路を意識する必要はありません。

2.1.2　メッセージキューイングの基本構成要素

メッセージキューイングの基本構成要素はメッセージとキューです。

＜この項の構成＞

(1)　メッセージの概要

(2)　キューの概要

(3)　キューの説明

(4)　キューの属性

(1)　メッセージの概要

メッセージはアプリケーションにとって意味のあるバイト文字列です。メッセージはアプリケーション間または同じアプリケーション内の異なる部分の間で情報を転送するために使用されます。アプリケーションは同じOS上または異なるOS上で動作します。

メッセージは次に示す二つの部分で構成されます。

アプリケーションデータ
アプリケーションデータの内容と構造は，それを使用するアプリケーションによって定義されます。

メッセージ記述子
メッセージ記述子はメッセージを識別するとともに追加の制御情報を含みます。例えば，メッセージタイプや送信側アプリケーションによって割り当てられた優先度などを含みます。

メッセージ記述子の形式はWebSphere MQによって規定されます。詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

(2)　キューの概要

キューはメッセージを保存するために使用されるデータ構造体です。

各キューはキューマネジャに属します。キューマネジャは所属するキューを管理し，受信したメッセージを適切なキューへ保存します。メッセージは通常操作の一部として，アプリケーションプログラムやキューマネジャによってキューに登録されます。

キューマネジャが管理するキューの種類について，次の表に示します。

表2-1　キューの種類

キューの種類
説明
作成方法
使用方法

ローカルキュー
アプリケーションがMQCONN命令を利用して接続するキューマネジャに属しているキューです。
次に示す2とおりの作成方法があります。

mqamkqueコマンドで作成（定義済みキュー）

アプリケーションからMQOPEN命令で作成（動的キュー）

あて先キュー
イニシエーションキュー
応答キュー
デッドレターキュー
転送キュー
ベースキュー

リモートキュー
（リモートキューのローカル定義による）
アプリケーションがMQCONN命令を利用して接続するキューマネジャとは別のキューマネジャに属しているキューです。
リモートキューのローカル定義で指定します。また，特に定義はなく，アプリケーションで指定する場合もあります。
あて先キュー
応答キュー
ベースキュー

別名キュー
ローカルキューまたはリモートキューのローカル定義の別名です。
別名キューの属性定義で指定します。
別名キュー

モデルキュー
運用中に作成するキューの基になる属性を持つキューです。
モデルキューの属性定義で指定します。
モデルキュー

(3)　キューの説明

TP1/Message Queueのキューの構造について，次の図に示します。

図2-1　TP1/Message Queueのキューの構造

(a)　キューの使用方法による分類

キューの使用方法およびそのキューがローカルキューかリモートキューになるかについて，次の表に示します。表の項番は，図2-1の括弧の数字に対応します。

表2-2　キューの使用方法による分類

項番 | 使用方法 | 意味 | ローカルキュー | リモートキュー
1 | イニシエーションキュー | トリガメッセージを登録するキュー | ○ | ×
2 | 応答キュー | アプリケーションが応答メッセージを受け取るキュー | ○ | ○
3 | 転送キュー | 特定のリモートキューマネジャにメッセージを転送するキュー | ○ | ×
4 | デッドレターキュー | 障害などでキューに登録できなかったメッセージを登録するキュー | ○ | ×
5 | あて先キュー | メッセージのあて先になるキュー | ○ | ○
6 | モデルキュー | 属性が一時的動的キュー，永続的動的キューの基になるキュー | － | －
7 | ベースキュー | 別名キューの基になるキュー | ○ | ○
8 | 別名キュー | キューに付けられた別名だけのキュー | － | －

（凡例）

○：該当キューになります。

×：該当キューになりません。

－：実体のないキューのため該当しません。

(b)　ローカルキューの作成方法による分類

ローカルキューには，2とおりの作成方法があります。作成方法によって定義済みキューと動的キューに分けられます。

定義済みキュー

mqamkqueコマンドで作成します。作成方法については，「2.2.2(2)　キューの作成と削除」を参照してください。

動的キュー

アプリケーションからMQOPEN命令で作成します。定義タイプ（DefinitionType属性）によって永続的動的キューと一時的動的キューに分けられます。永続的動的キューは，キューマネジャの障害発生時に回復されます。一時的動的キューは，キューマネジャの障害発生時に回復されません。

(4)　キューの属性

キューには，属性と呼ばれる特性があります。キューの属性には，キュー名，キュータイプ，取り出し許可などがあります。属性については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

キューの属性の決定・変更方法を次に示します。

次に示すMQAサービス定義の定義コマンドで指定します。

mqaqueatl定義コマンド（モデルキューの属性定義）

mqaremque定義コマンド（リモートキューのローカル定義）

mqaalsque定義コマンド（別名キューの属性定義）

一度指定した属性をMQSET命令で変更できます。ただし，変更できる属性と変更できない属性があります。MQSET命令については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

直接設定はできませんが，キューマネジャの動作に応じて値が変動する属性もあります。例えば，キューのメッセージ登録数などです。

2.1.3　アプリケーションからのメッセージ操作とキュー操作

メッセージキューイングを実行するには，命令を使用してアプリケーションを作成します。TP1/Message Queueには，次に示す命令があります。

キューマネジャへの接続（MQCONN命令）

キューマネジャからの切り離し（MQDISC命令）

オブジェクト（メッセージキュー）のオープン（MQOPEN命令）

オブジェクト（メッセージキュー）のクローズ（MQCLOSE命令）

メッセージの登録（MQPUT命令）

メッセージの取り出し（MQGET命令）

1メッセージの登録（MQPUT1命令）

オブジェクトの属性の照会（MQINQ命令）

オブジェクトの属性の設定（MQSET命令）

ユーザは，これらの命令を組み合わせたアプリケーションを作成して，メッセージキューイング機能を実現し，メッセージの送受信をします。命令の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

2.1.4　MQI命令使用時のOpenTP1アプリケーションとの関係

TP1/Message Queueのアプリケーションは，OpenTP1のSUP（サービス利用プログラム），SPP（サービス提供プログラム），またはMHP（メッセージ処理プログラム）として作成します。アプリケーションからのメッセージの登録および取り出しは，OpenTP1のトランザクションと同期させることができます。

TP1/Message Queueのアプリケーションは，C言語またはCOBOL言語で作成します。データ操作言語では作成できません。

＜この項の構成＞

(1)　TP1/Message Queueで使用できる命令

(2)　アプリケーションとキューマネジャの接続

(3)　トランザクションとメッセージキューアクセスとの関係

(4)　アプリケーションからメッセージキューにアクセスする場合の条件

(1)　TP1/Message Queueで使用できる命令

TP1/Message Queueで使用できる命令を次の表に示します。なお，命令の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

表2-3　TP1/Message Queueで使用できる命令

命令 | SUP | SPP | MHP | オフラインの業務をするアプリケーション
トランザクション範囲でない | トランザクション範囲（ルート） | トランザクション範囲でない | トランザクション範囲
ルート | ルート以外
MQCONN | ○ | ○ | ○ | ○ | ○ | ○ | －
MQDISC | ○ | ○ | ○ | ○ | ○ | ○ | －
MQOPEN | ○ | ○ | ○ | ○ | ○ | ○ | －
MQCLOSE | ○ | ○ | ○ | ○ | ○ | ○ | －
MQPUT | ○ | ○ | ○ | ○ | ○ | ○ | －
MQGET | ○ | ○ | ○ | ○ | ○ | ○ | －
MQPUT1 | ○ | ○ | ○ | ○ | ○ | ○ | －
MQINQ | ○ | ○ | ○ | ○ | ○ | ○ | －
MQSET | ○ | ○ | ○ | ○ | ○ | ○ | －

（凡例）

○：該当する条件で呼び出せます。

－：該当する条件で呼び出せません。

(2)　アプリケーションとキューマネジャの接続

アプリケーションがメッセージキューイング機能を使用する場合，必ずMQCONN命令を呼び出してキューマネジャに接続してください。キューマネジャに接続すると，コネクションハンドルという値がアプリケーションに返されます。

また，キューなどのオブジェクトを使用する場合は，MQOPEN命令を呼び出してオブジェクトをオープンする必要があります（ただし，MQPUT1命令を使用する場合は不要です）。オブジェクトをオープンすると，オブジェクトハンドルという値がアプリケーションに返されます。

アプリケーションとキューマネジャの接続の手順およびハンドルの有効範囲について，次の図に示します。

図2-2　アプリケーションとキューマネジャの接続手順およびハンドルの有効範囲

図中に示したアプリケーションとキューマネジャの接続の手順を次に示します。図中の番号と，手順の番号は対応しています。

MQCONN命令を呼び出してキューマネジャへ接続を要求します。

キューマネジャは，コネクションハンドルをMQCONN命令に返します。

手順2.で返されたコネクションハンドルを指定してMQOPEN命令を呼び出します。

キューマネジャは，オブジェクトハンドルをMQOPEN命令に返します。

MQOPEN命令以降に呼び出す命令で，該当するオブジェクトを利用する場合には，手順4.で返されたオブジェクトハンドルを指定します。

ハンドルの有効範囲を次に示します。

コネクションハンドル

MQCONN命令を呼び出したアプリケーション（アプリケーションとキューマネジャをMQCONN命令で接続し，MQDISC命令で切り離すまで）

オブジェクトハンドル

MQOPEN命令を呼び出したアプリケーション（オブジェクトをMQOPEN命令でオープンし，MQCLOSE命令でクローズするまで）

(3)　トランザクションとメッセージキューアクセスとの関係

メッセージの登録および取り出しをOpenTP1のトランザクションと同期させることができます。OpenTP1のトランザクション内で，MQPUT命令，MQPUT1命令，またはMQGET命令を呼び出すと，その命令による登録および取り出しは，トランザクションの一部として処理されます。ただし，OpenTP1のトランザクション内であっても，同期点を取らないことを指定すると，その命令はトランザクションの一部にはなりません。

(4)　アプリケーションからメッセージキューにアクセスする場合の条件

メッセージキューのアクセスでは，グローバルトランザクションのRPCの形態をすべて同期応答型RPCにする必要があります。非同期応答型RPC，非応答型RPCからメッセージキューへアクセスした場合，動作は保証されません。

2.1.5　トリガ機能

メッセージがキューに到着した時，そのメッセージを処理するアプリケーションを起動するために，トリガイベントを使用できます。mqaqueatl定義コマンドでトリガイベントを設定したキューにメッセージが到着すると，トリガメッセージがイニシエーションキューに登録されます。ユーザはイニシエーションキューを監視することで，メッセージが到着したかどうかがわかります。トリガイベントの種類（トリガタイプ）などは，ローカルキューの属性として指定します。

メッセージがキューに登録されてからのトリガの処理の流れについて，次の図に示します。

図2-3　トリガの処理の流れ

図中に示したトリガ処理の流れを次に示します。図中の番号と，流れの番号は対応しています。

メッセージ送信元のあて先キューとなるキューにメッセージが登録されます。

あて先キューの状態が設定した条件を満たすと，トリガイベントが発生します。

トリガイベントが発生したことを意味するトリガメッセージをイニシエーションキューに登録します。

トリガモニタアプリケーションは，常にイニシエーションキューを監視しています。

トリガモニタアプリケーションは，トリガメッセージを取り出して，メッセージを受け取るアプリケーションを起動します。

流れ5.で起動されたアプリケーションは，MQGET命令を呼び出してメッセージを受け取ります。

トリガモニタアプリケーションは，イニシエーションキューを監視するユーザ作成のアプリケーションです。イニシエーションキューの状態を常に監視するように作成してください。

2.2　キューファイルの使用方法

TP1/Message Queueはメッセージキューイングの基本構成要素であるキューを，キューファイルという物理ファイル内で管理しています。この節では，キューファイルの構造および運用方法を説明します。

この節で使用している定義コマンドについては，「4.　準備作業」を参照してください。また，運用コマンドについては，「6.　システムの運用」を参照してください。

＜この節の構成＞

2.2.1　キューファイルの構造

2.2.2　運用コマンドによるキューファイルの運用

2.2.1　キューファイルの構造

キューファイルの構造について説明します。

＜この項の構成＞

(1)　キューファイル

(2)　キューファイルグループ

(3)　キューとキューファイルの関係

(1)　キューファイル

キューファイルは，キューに出力したメッセージが格納される物理的なファイルです。キューファイルは，オンライン開始前にmqainitコマンドでOpenTP1ファイルシステム上に作成しておきます。TP1/Message Queueの開始時にキューファイルをメモリ上に読み込み，キューに対する準備をします。

一つのキューファイルには，複数の論理的なファイルの情報が格納されます。

キューファイルには，次に示す2種類の物理ファイルが対応づけられます。mqainitコマンドによって，一つのキューファイルに対しそれぞれの物理ファイルが作成されます。

メッセージ情報管理ファイル

複数の論理的なキューの情報のうち，キューおよびメッセージの管理情報が格納されます。ファイル名には，後ろに「.cnt」が付けられます。

メッセージファイル

複数の論理的なキューの情報のうち，メッセージ自身が格納されます。ファイル名には，後ろに「.msg」が付けられます。

なお，MQAサービス定義のmqa_quefil_infオペランドにYを指定すると，キューファイル単位での容量監視ができます。

(2)　キューファイルグループ

複数のキューファイルを，一つの論理的なキューファイルとして扱うことができます。複数のキューファイルのまとまりをキューファイルグループといいます。MQAサービス定義のmqaquegrp定義コマンドで，キューファイルグループを構成するキューファイル名を指定します。

一つのキューファイルグループに複数のキューファイルが対応づけられている場合，どのキューファイルにメッセージが格納されるかは，TP1/Message Queueによって決定されます。

キューファイルグループの構造について，次の図に示します。

図2-4　キューファイルグループの構造

複数のキューファイルを一つのキューファイルグループにする場合の長所について，次に示します。

キューの大容量化
キューファイルの最大格納容量は2ギガバイトです。一つのキューファイルでは一つのキューに格納できる最大格納容量がキューファイルの最大格納容量になります。しかし，キューファイルグループにすることによって，最大格納容量の上限がキューファイル数×キューファイルの最大格納容量になります。

キューファイル入出力処理の負荷分散
一つのキューに複数のアプリケーションからアクセスする場合，キューファイルに対しての入出力処理が分散されます。

なお，MQAサービス定義のmqaquegrp定義コマンドの-kオプションにYを指定すると，キューファイルグループ単位での容量監視ができます。

注意

アプリケーションまたはチャネルによる複数のキュー操作が同時に一つのキューファイルグループに集中すると，キュー操作が遅くなることがあります。同時に使用するキューファイルは異なるキューファイルグループに分散してください。

(3)　キューとキューファイルの関係

ユーザは，メッセージキューイング機能を使用するために，キューとキューファイルを対応づける必要があります。

キューとキューファイルの対応は，mqamkqueコマンドで指定するキュー属性定義ファイル（UNIXテキストファイル，またはMQAサービス定義ファイル）に指定されたmqaqueatl定義コマンドで行います。mqamkqueコマンドまたはMQOPEN命令で作成したキューは，モデルキューの属性定義で関連づけられたキューファイルに対応づけられます。

2.2.2　運用コマンドによるキューファイルの運用

ユーザは，キューを使用してメッセージキューイング機能を実現します。キューの情報は，最終的には物理的なキューファイルに格納されます。ここでは，運用コマンドによるキューファイルの運用について説明します。

＜この項の構成＞

(1)　キューファイルの作成

(2)　キューの作成と削除

(3)　キューの属性の変更

(4)　キューファイルの状態

(5)　オブジェクトの属性の設定

(6)　オブジェクトの属性表示

(7)　キューファイル内の情報表示

(8)　キューファイルの組み込みと切り離し

(9)　キューファイルの論理閉塞と閉塞解除

(10)　キューファイルのバックアップとリストア

(11)　キューファイルの回復

(12)　mqafrcコマンドの使用例（キューファイル格納媒体損傷の場合）

(13)　mqafrcコマンドの使用例（キューファイル格納媒体損傷以外の場合）

(14)　キューファイルの削除

(15)　キューファイル二重化構成

(16)　キューファイルグループの使用状況表示

(17)　キューファイルの情報表示

(18)　キューファイルのコンバート

(19)　メッセージの削除

(20)　メッセージの表示

(1)　キューファイルの作成

ユーザは，キューの情報を格納するためのキューファイルを，mqainitコマンドを使用して作成します。このとき，キャラクタ型スペシャルファイルまたはUNIXファイルのアクセス権は，所有者およびグループにリード・ライト権を与えてください。また，OpenTP1ファイルシステムのアクセス権はユーザ用に設定してください。アクセス権を正しく設定していない場合，KFCA31184-Eが出力されてOpenTP1の起動に失敗します。

mqainitコマンドを使用すると，二つの物理ファイルが作成されます。一つは，メッセージの管理情報が格納されるメッセージ情報管理ファイルです。もう一つは，メッセージ自身が格納されるメッセージファイルです。メッセージ情報管理ファイルとメッセージファイルの合計の最大格納容量は2ギガバイトです。また，OpenTP1ファイルシステムでも2ギガバイト以内で使用してください。

注意

キューファイルパスおよびキューファイル名にスペースを指定しないでください。指定した場合，動作を保証できません。

(2)　キューの作成と削除

ユーザは，メッセージキューイングに使用するキューを作成する必要があります。

キューは，作成の方法によって，定義済みキューと動的キューに分けられます。

(a)　定義済みキューの作成

定義済みキューは，オンライン開始前にあらかじめmqamkqueコマンドを使用して作成しておきます。いったん作成すると，キューを削除するまでシステム内に存在します。

定義済みキューの作成方法について，次の図に示します。

図2-5　定義済みキューの作成

(b)　動的キューの作成

動的キューは，オンライン中にアプリケーションからMQOPEN命令で作成するキューです。

MQOPEN命令では，モデルキューの属性定義で指定したモデルキューの定義名を指定します。MQOPEN命令の詳細については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

動的キューには，一時的動的キューと永続的動的キューがあります。一時的か永続的かは，モデルキューの属性定義（MQAサービス定義のmqaqueatl定義コマンド）で指定します。

(c)　キューの削除

キューを削除する場合は，mqadelqueコマンドを使用します。mqadelqueコマンドで，定義済みキューと動的キューの両方を削除できます。また，動的キューは，動的キューを作成したMQOPEN命令のアプリケーションが終了すると，自動的に削除されます。

(3)　キューの属性の変更

キューの属性を変更する場合は，mqachgqueコマンドを使用します。mqachgqueコマンドで変更できるのは，ローカルキューの属性です。なお，キューの属性のうち，定義タイプは変更できません。

(4)　キューファイルの状態

キューファイルには，次に示す状態があります。

正常

正常に使用できる状態です。

論理閉塞

論理的に閉塞して，メッセージの登録および取り出しができない状態です。

障害閉塞

キューファイルに障害が発生した場合の状態です。

一時的障害閉塞

キューファイルに一時的な障害が発生した場合の状態です。次に示す状態があります。

一時的障害閉塞（C）
メッセージ情報管理ファイルに一時的な障害が発生した状態

一時的障害閉塞（CR）
メッセージ情報管理ファイルに一時的な障害が発生したあと回復済みの状態

一時的障害閉塞（M）
メッセージファイルに一時的な障害が発生した状態

一時的障害閉塞（C/M）
メッセージ情報管理ファイルおよびメッセージファイルに一時的な障害が発生した状態

一時的障害閉塞（CR/M）
メッセージ情報管理ファイルに一時的な障害が発生したあと回復済みであるが，メッセージファイルに一時的な障害が発生した状態

キューファイル障害発生時に，障害要因が一時的である可能性のある場合は，一時的障害閉塞に移行します。キューファイル格納媒体損傷の場合も，一時的障害閉塞に移行します。

一時的障害閉塞に移行すると，障害発生時点でキューファイルに未反映である更新情報はメモリ上に保持されます（障害閉塞に移行する場合，更新情報は破棄されます）。そのため，障害要因を除去した後に，未反映である更新情報をキューファイルに書き込むことによって回復することができます。mqafrcコマンドによって，ジャーナルファイルを使用してキューファイルを回復する必要はありません。

空き

キューファイルは存在していますが，キューマネジャに認識されていない状態です。オンラインで使用するためには，キューファイルを組み込む必要があります。

キューファイルの状態とコマンドによる状態遷移について，次の図に示します。

図2-6　キューファイルの状態遷移

注1

図中の矢印以外に次に示す状態遷移があります。

すべての「一時的障害閉塞」からmqarmコマンドによって「空き」に移行します。

すべての「一時的障害閉塞」からmqagrpobsコマンドによって「障害閉塞」に移行します。

「一時的障害閉塞（C）」および「一時的障害閉塞（C/M）」から計画停止および再開始によって「障害閉塞」に移行します。

注2

TP1/Message Queueが一定の間隔（チェックポイントダンプ取得間隔または3分間隔）で回復処理を実行しているため，自動的にキューファイルの状態が移行することがあります。

「正常」から「障害閉塞」に移行するのは，次に示す場合です。

開始時および終了時にキューファイル障害を検知した場合

キューファイル二重化構成の片系のキューファイル障害（片系障害）を検知した場合

これら以外でキューファイル障害を検知すると「一時的障害閉塞」に移行します。

注※1

mqarlesコマンド入力時に，メッセージ情報管理ファイルへの書き込みが成功した場合

注※2

mqarlesコマンド入力時に，メッセージ情報管理ファイルへの書き込みが失敗した場合

注意

すべての「一時的障害閉塞」からOpenTP1を正常終了した場合，そのキューファイルは「障害閉塞」として扱われるため，キューファイルの再作成が必要です。

(5)　オブジェクトの属性の設定

オブジェクトの属性を設定する場合は，mqasetコマンドを使用します。mqasetコマンドのコマンド引数によって，次に示すオブジェクトの属性を設定できます。

ローカルキュー

リモートキューのローカル定義で指定されたキュー

別名キュー

(6)　オブジェクトの属性表示

オブジェクトの属性を表示する場合は，mqainqコマンドを使用します。mqainqコマンドのオプションによって，次に示すオブジェクトの属性を表示できます。

-mオプション

キューマネジャ

-qオプション

ローカルキュー

モデルキュー

リモートキューのローカル定義で指定されたキュー

別名キュー

(7)　キューファイル内の情報表示

オフラインの状態で，指定したキューファイルの管理部の情報を表示するには，mqafilinfコマンドを使用します。mqafilinfコマンドのオプションによって，次に示す情報を表示できます。

-qオプション

ローカルキュー情報

-xオプション

キュー名一覧

(8)　キューファイルの組み込みと切り離し

キューファイルを組み込む場合は，mqaaddコマンドを使用します。キューファイルを組み込むと，オンラインで使用できる状態になります。このあと，mqarlesコマンドを使用して閉塞状態を解除すると，キューファイルはアプリケーションから使用できる状態になります。

キューファイルを切り離す場合，mqarmコマンドを使用します。キューファイルを切り離すと，キューファイルの中のキューおよびメッセージは破棄されます。

-rオプションを指定すると，キューファイルを強制的に切り離せます。

(9)　キューファイルの論理閉塞と閉塞解除

mqaaddコマンドでキューファイルを組み込んだ直後は，キューファイルは論理閉塞状態です。閉塞状態を解除するために，mqarlesコマンドを使用します。

また，一時的障害閉塞を解除するには，mqarlesコマンドの-sオプションにtを指定します。

(10)　キューファイルのバックアップとリストア

キューファイルをバックアップする場合は，mqabkupコマンドを使用します。mqabkupコマンドで指定したキューファイルがオンラインで使用中の場合，この操作はエラーになります。

バックアップしたファイルをリストアするには，mqarstrコマンドを使用します。

(11)　キューファイルの回復

キューファイルの回復をMQA FRCといいます。MQA FRCは，mqafrcコマンドで実行します。MQA FRCはキューファイルの障害要因により回復方法が異なります。

なお，mqafrcコマンドの実行を含むキューファイルの回復手順については，「7.1.4　キューファイルの入出力エラー」を参照してください。

(a)　障害要因がキューファイル格納媒体損傷の場合

キューファイル格納媒体損傷の場合，次に示す資源が必要です。

MQAサービス定義のmqa_jnl_confオペランドにYを指定して取得したアンロードジャーナルファイル

キューファイルのバックアップファイル

回復方法については，「2.2.2(12)　mqafrcコマンドの使用例（キューファイル格納媒体損傷の場合）」を参照してください。

(b)　障害要因がキューファイル格納媒体損傷以外の場合

キューファイル格納媒体損傷以外の場合，次に示す資源が必要です。

アンロードジャーナルファイル
MQAサービス定義のmqa_jnl_confオペランドの指定はYでもNでもかまいません。

回復方法については，「2.2.2(13)　mqafrcコマンドの使用例（キューファイル格納媒体損傷以外の場合）」を参照してください。

(12)　mqafrcコマンドの使用例（キューファイル格納媒体損傷の場合）

障害要因がキューファイル格納媒体損傷の場合の，mqafrcコマンドの使用例について説明します。使用例で指定する回復対象キューファイル定義ファイル（ファイル名mappingfile）は，次に示すとおり記述します。

mqafilmap /dev/rdsk/rhd031/rcvf1 /dev/rdsk/rhd032/rcvf1

この定義例では，回復対象キューファイル名は/dev/rdsk/rhd031/rcvf1，回復先キューファイル名は/dev/rdsk/rhd032/rcvf1です。回復先キューファイル名には，実際に回復させるキューファイル名を指定します。回復対象キューファイル名は，回復先キューファイルを回復するために必要なアンロードジャーナル内の情報を特定するために使用します。回復対象キューファイル名が示すファイルの情報を基に回復するわけではありません。mqafrcコマンドを実行する場合には回復先キューファイルが存在している必要があります。キューファイル/dev/rdsk/rhd032/rcvf1は，キューファイル/dev/rdsk/rhd031/rcvf1のバックアップを基にリストア済みで，mqafrcコマンドの入力によってキューファイル/dev/rdsk/rhd032/rcvf1は障害発生直前の状態に回復されます。

回復対象キューファイルのバックアップ方法
回復対象キューファイルをバックアップするには，次に示すどちらかの方法を実行します。

mqabkupコマンドでOpenTP1ファイルシステム上のキューファイルをOSのファイルにバックアップ

OpenTP1ファイルシステムをfilbkupコマンドでバックアップ

回復先キューファイルのリストア方法
バックアップを回復先キューファイルにリストアするには，次に示すどちらかの方法を実行します。

mqabkupコマンドでバックアップしたキューファイルをmqarstrコマンドでOpenTP1ファイルシステムにリストア

filbkupコマンドでバックアップしたOpenTP1ファイルシステムをfilrstrコマンドに-rオプションを指定してOpenTP1ファイルシステムにリストア

mqafrcコマンドに指定するアンロードジャーナルファイル名は次に示すとおりとします。

jnlf001，jnlf002，…，jnlf00n…（n：世代番号）

(a)　使用例1

ファイル分割されていないアンロードジャーナルファイルからキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -f mappingfile /jnlf001

jnlf001を入力として，回復先キューファイルが回復されます。

キューファイル回復の流れについて，次の図に示します。

図2-7　キューファイル回復の流れ（キューファイル格納媒体損傷の場合）

(b)　使用例2

三つのファイルに分割されているアンロードジャーナルファイルから，キューファイルを1回のコマンド入力で回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -f mappingfile /jnlf001 /jnlf002 /jnlf003

jnlf001，jnlf002，およびjnlf003を入力として，回復先キューファイルが回復されます。

複数のアンロードジャーナルファイルとキューファイル回復の流れについて，次の図に示します。

図2-8　複数のアンロードジャーナルファイルとキューファイル回復の流れ

(c)　使用例3

四つのファイルに分割されているアンロードジャーナルファイルから，キューファイルを3回のコマンド入力で回復する場合について説明します。

（1回目）

次に示すとおりコマンドを入力します。

mqafrc -s -f mappingfile /jnlf001 /jnlf002

jnlf001およびjnlf002を入力として，回復先キューファイルが回復されます。また，引き継ぎファイルとしてmqafrc001およびjnlcolc001が作成されます。

（2回目）

次に示すとおりコマンドを入力します。

mqafrc -f mappingfile /jnlf003

jnlf003，mqafrc001，およびjnlcolc001を入力として，回復先キューファイルが回復されます。そのあと，mqafrc001およびjnlcolc001の内容は更新されます。

（3回目）

次に示すとおりコマンドを入力します。

mqafrc -e -f mappingfile /jnlf004

jnlf004，mqafrc001，およびjnlcolc001を入力として，回復先キューファイルが回復されます。-eオプションを指定しているので，そのあと，mqafrc001およびjnlcolc001は削除されます。

この場合，3回目のmqafrcコマンドが完了するまで，回復対象キューファイル定義ファイルmappingfileの内容を変更しないでください。

引き継ぎファイルを使用するキューファイル回復の流れについて，次の図に示します。図中の番号は何回目のコマンド入力による動作であるかを表します。

図2-9　引き継ぎファイルを使用するキューファイル回復の流れ

(d)　使用例4

世代番号が1のアンロードジャーナルファイルは使用しないで，世代番号2以降のアンロードジャーナルファイルを使用してキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -g -f mappingfile /jnlf002 /jnlf003

jnlf002およびjnlf003を入力として，回復先キューファイルが回復されます。

アンロードジャーナルファイルの世代番号とキューファイル回復の流れについて，次の図に示します。

図2-10　アンロードジャーナルファイルの世代番号とキューファイル回復の流れ

(e)　使用例5

キーを指定してキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -k 005 -f mappingfile /jnlf001

mqafrcコマンドに-kオプションを指定すると，mqafrcコマンドが作成する引き継ぎファイルの名称の一部を指定できます。2回目以降のMQA FRCでこの引き継ぎファイルを使用する場合は，前回と同じキーを指定してください。

引き継ぎファイルのキーの指定とキューファイル回復の流れについて，次の図に示します。

図2-11　引き継ぎファイルのキーの指定とキューファイル回復の流れ

(13)　mqafrcコマンドの使用例（キューファイル格納媒体損傷以外の場合）

障害要因がキューファイル格納媒体損傷以外の場合の，mqafrcコマンドの使用例について説明します。使用例で指定する回復対象キューファイル定義ファイル（ファイル名mappingfile）は，次に示すとおり記述します。

mqafilmap /dev/rdsk/rhd031/rcvf1

この定義例では，回復対象キューファイル名および回復先キューファイル名はともに/dev/rdsk/rhd031/rcvf1です。回復先キューファイル名には，実際に回復させるキューファイル名を指定します。mqafrcコマンドを実行する場合には回復先キューファイルが存在している必要があります。キューファイル/dev/rdsk/rhd031/rcvf1は障害発生直前の状態に回復されます。

mqafrcコマンドに指定するアンロードジャーナルファイル名は次に示すとおりとします。

jnlf001，jnlf002，…，jnlf00n…（n：世代番号）

(a)　使用例

ファイル分割されていないアンロードジャーナルファイルからキューファイルを回復する場合について説明します。

次に示すとおりコマンドを入力します。

mqafrc -s -e -f mappingfile /jnlf001

jnlf001を入力として，回復先キューファイルが回復されます。

キューファイル回復の流れについて，次の図に示します。

図2-12　キューファイル回復の流れ（キューファイル格納媒体損傷以外の場合）

(14)　キューファイルの削除

キューファイルを削除する場合は，mqadelコマンドを使用します。mqadelコマンドを実行すると，指定したキューファイルに対応するメッセージ情報管理ファイルとキューファイルの二つが削除されます。

オンラインで使用中のキューファイルは削除できません。オンラインで使用中のキューファイルを指定した場合，エラーになります。

(15)　キューファイル二重化構成

MQAサービス定義のmqaquegrp定義コマンドで，指定したキューファイル名（A系ファイル名）に対するバックアップキューファイル名（B系ファイル名）を指定できます。この指定によって，A系またはB系のどちらかのキューファイルに障害が発生すると，もう一方の系統のキューファイルを使用して運用を行います。キューファイルの二重化は，ユーザアプリケーションが意識することなく行われます。また，キューファイルは，同期を取って更新しているので，A系またはB系だけに，メッセージが残ったり消えたりすることはありません。

障害が発生したファイルを回復する場合はmqarcvrコマンドを使用します。これによって，現在使用中の系統キューファイルと情報が同じになります。

ファイル障害の詳細については，「7.1.4　キューファイルの入出力エラー」を参照してください。

注意

A系またはB系の物理ファイルは複数のディスクに分散させて作成してください。一つのディスク上に同じ系統のすべての物理ファイルを作成すると，ディスクの全面障害が発生した場合，その系統は使用できません。

キューファイル二重化構成は，次に示すどちらかの手順で定義および作成します。

手順1

mqabkupコマンドでキューファイルをバックアップします。

1.でバックアップしたキューファイルをmqarstrコマンドでリストアします。これがバックアップキューファイル（B系ファイル）になります。

1.および2.で作成したキューファイルの名前をMQAサービス定義のmqaquegrp定義コマンドにA系ファイル名およびB系ファイル名として指定します。

手順2

mqainitコマンドでA系ファイルおよびB系ファイルを作成します。
同じオプション指定値でキューファイルを作成してください。

A系ファイルおよびB系ファイルについて，MQAサービス定義のmqaqueatl定義を作成します。
モデルキューの定義名およびキューファイル名以外のオプション指定値は同じにしてください。

mqamkqueコマンドで同じ名前のキューを作成します。

1.で作成したキューファイルの名前をMQAサービス定義のmqaquegrp定義コマンドにA系ファイル名およびB系ファイル名として指定します。

なお，キューファイル二重化構成は，キューファイル二重化構成しない場合に比べて性能が低下します。

(16)　キューファイルグループの使用状況表示

キューファイルグループの使用状況を表示する場合は，mqadfコマンドを使用します。表示されるキューファイルグループの使用状況の項目について，次に示します。

キューファイルグループの全キューの個数

使用中のキューの個数

未使用キューの個数

メッセージ格納領域の容量

メッセージ格納領域の使用容量

メッセージ格納領域の空き容量

(17)　キューファイルの情報表示

キューファイル名の一覧およびキューファイルの情報を表示する場合は，mqafillsコマンドを使用します。

mqafillsコマンドで-xオプションを指定すると，MQAサービスで使用中のすべてのキューファイル名が表示されます。mqafillsコマンドの-fオプションにキューファイル名を指定すると，指定したキューファイルの情報が表示されます。次に示す項目などが表示されます。

キューファイル名

キューファイルの状態

全キューの個数

使用中キューの個数

未使用キューの個数

メッセージ長

メッセージ情報管理ファイルのレコード長

メッセージ情報管理ファイルのレコード数

ファイル形態

(18)　キューファイルのコンバート

キューファイルをコンバートする場合は，mqaconvertコマンドを使用します。過去のバージョンで使用していたTP1/Message Queueのキューファイルを，現在のバージョンで使用する場合は，mqaconvertコマンドでキューファイルをコンバートする必要があります。

mqaconvertコマンドを使用すると，mqabkupコマンドでバックアップした旧バージョンのキューファイル（メッセージ情報管理ファイル（キューファイル名.cnt），およびメッセージファイル（キューファイル名.msg））を，最新バージョンのキューファイルへコンバートできます。なお，mqaconvertコマンドを使用する際は，次の点に注意してください。

古いバージョンへのコンバートはできません。

このコマンドでコンバートできるのは，TP1/Message Queue 05-00以降で作成したバックアップファイルです。

キューファイルのコンバートは，次に示す手順で行います。

過去のバージョン環境で，mqabkupコマンドで変換元となるキューファイルをバックアップします。

使用したいバージョン環境に変更します。

mqaconvertコマンドで，使用するキューファイルを変換します。

(19)　メッセージの削除

キュー名に登録されているメッセージを削除する場合は，mqadelmsgコマンドを使用します。

(20)　メッセージの表示

キュー名に登録されているメッセージ情報を表示する場合は，mqalsmsgコマンドを使用します。表示される情報の項目について，次に示します。

MQMD構造体の内容

メッセージ内容

2.3　チャネルの機能

TP1/Message Queueによるメッセージの送受信は，自システムと相手システムの間でチャネルを確立することによって開始されます。チャネルは，自システムと相手システムをつなぐ通信経路です。チャネルの両端でチャネルを管理および制御するプログラムをMCAといいます。

チャネルを確立するには相手システムに対してチャネル開始要求を送るか，または相手システムからチャネル開始要求を受ける必要があります。チャネル開始要求に対してチャネル開始応答が返され，自システムと相手システムとの間で矛盾がなければ，チャネルが確立されます。チャネルが確立されるとメッセージの送受信が可能になります。

チャネルの概念について，次の図に示します。

図2-13　チャネルの概念

一つのチャネルには，通信相手システムと転送キューが一つずつ対応づけられます。一つのキューマネジャに対して複数のチャネルを定義してもかまいません。

チャネルにはあて先キューを対応づけないため，一つの転送キューに対して複数のリモートキューのローカル定義を対応づけると，一つのチャネルで複数のあて先キューにメッセージを送信できます。

チャネルの通信プロトコルは，チャネルの機能に応じてFAPレベルが規定されています。自システムと相手システムとで，FAPレベルが異なる場合は，下位のFAPレベルの機能を使用して接続します。

なお，動作するFAPレベルと製品のバージョンとの対応を次に示します。

FAPレベル1：TP1/Message Queue 01-xx※

FAPレベル4：TP1/Message Queue 05-xx※，06-xx※，07-00，および07-01

注※

xxには，任意の符号なし整数が入ります。

その他のMQシステムが動作するFAPレベルについては，使用するMQシステムが提供するマニュアルを参照してください。

＜この節の構成＞

2.3.1　コーラとレスポンダ

2.3.2　MCAのチャネルタイプ

2.3.3　チャネル状態

2.3.4　MQTサーバのトリガ起動によるチャネル開始

2.3.5　チャネルの開始

2.3.6　チャネルの確立

2.3.7　チャネル確立再試行

2.3.8　チャネル確立時のTCP/IPソケット関数発行シーケンス

2.3.9　チャネルの解放

2.3.1　コーラとレスポンダ

チャネル開始要求を送る側をコーラ，チャネル開始要求を受ける側をレスポンダといいます。コーラ側のMCAがレスポンダ側のMCAにチャネル開始要求を送り，レスポンダ側のMCAがコーラ側のMCAにチャネル開始応答を返すことによって，チャネルが確立されます。

チャネルの開始処理の手順について，次の図に示します。

図2-14　チャネルの開始処理の手順

チャネルの開始方法については，「2.3.5　チャネルの開始」を参照してください。

2.3.2　MCAのチャネルタイプ

チャネルを制御するMCAには幾つかのチャネルタイプがあります。チャネルタイプが異なるとチャネルを制御するMCAの動作も異なります。

TP1/Message QueueがサポートするチャネルタイプとMCAの動作について，次に示します。チャネルタイプはTCP定義のmqtalccha定義コマンドで指定します。

センダ（sender）

通信相手システムのレシーバまたはリクエスタをチャネル開始要求で起動し，メッセージを転送キューから取り出してレシーバまたはリクエスタに送信します。通信相手システムのリクエスタから起動された場合は，センダから起動をし直します。

レシーバ（receiver）

通信相手システムのセンダまたはサーバからのチャネル開始要求で起動され，センダまたはサーバからのメッセージを受信します。受信後，メッセージに指定されたあて先キューへ登録します。

リクエスタ（requester）

通信相手システムのセンダまたはサーバをチャネル開始要求で起動し，センダまたはサーバのチャネル定義で指定された転送キューからのメッセージを受信します。受信後，メッセージに指定されたあて先キューへ登録します。センダまたはサーバからのチャネル開始要求によって起動することもできます。

サーバ（server）

通信相手システムのリクエスタからチャネル開始要求で起動され，メッセージを転送キューから取り出して，レシーバまたはリクエスタに送信します。通信相手システムを設定すると，レシーバまたはリクエスタをチャネル開始要求で起動できます。

クラスタセンダ（clussdr）

クラスタ機能で使用する送信側のチャネルタイプです。TCP定義のmqtalccha定義コマンドで指定する事前定義クラスタセンダと，接続相手のクラスタレシーバの属性に応じてTP1/Message Queueが自動的に作成する自動定義クラスタセンダがあります。詳細については，「2.8　キューマネジャクラスタの機能」を参照してください。

クラスタレシーバ（clusrcvr）

クラスタ機能で使用する受信側のチャネルタイプです。TCP定義のmqtalccha定義コマンドで指定する事前定義クラスタレシーバと，事前定義クラスタレシーバの属性でTP1/Message Queueが自動的に作成する自動定義クラスタレシーバ（チャネルインスタンス）があります。なお，事前定義クラスタレシーバには，実体はありません。詳細については，「2.8　キューマネジャクラスタの機能」を参照してください。

コーラ側MCAになることができるチャネルタイプは，センダ，サーバ，リクエスタ，またはクラスタセンダです。レスポンダ側MCAになることができるチャネルタイプは，センダ，サーバ，レシーバ，リクエスタ，またはクラスタレシーバです。チャネルは，コーラ側MCAとレスポンダ側MCAを1対1で組み合わせます。一つのMCAに複数のMCAを組み合わせると，メッセージが二重に送信されたり，欠落したりすることがあります。

チャネルタイプの組み合わせについて，次の表に示します。

チャネルタイプの組み合わせは，システム設計時の最も早期に決定する必要がある検討事項です。

表2-4　チャネルタイプの組み合わせ

コーラ側MCAのチャネルタイプ | メッセージの送受信方向 | レスポンダ側MCAのチャネルタイプ
センダ | → | レシーバ
センダ | → | リクエスタ
サーバ | → | リクエスタ
サーバ | → | レシーバ
リクエスタ | ← | センダ※
リクエスタ | ← | サーバ
クラスタセンダ | → | クラスタレシーバ

（凡例）

→：コーラから送信します。

←：レスポンダから送信します。

注※

センダは，リクエスタからのネットワークリクエストに対して，いったんチャネルの終了を要求して，TCP/IPコネクションを解放します。その後，センダから再度コーラとしてチャネルを確立します。

クラスタチャネルでは一つのチャネル定義に対して複数のMCAを動作させるマルチインスタンス機能を持っています。詳細については，「2.8.9　クラスタ環境の通信構成」を参照してください。

2.3.3　チャネル状態

チャネルはチャネル確立中，チャネル解放中など幾つかの異なる状態を持ちます。相手システムとの通信状態を確認するには，チャネル状態を確認してください。チャネル状態を確認するにはmqtlschaコマンドを使用します。

チャネルには次に示す状態があり，コマンドの入力や通信障害などのイベントによって遷移します。

チャネル停止

MCAが停止している状態

チャネルタイプがセンダ，レシーバ，リクエスタ，またはサーバ
mqtalccha定義コマンドの-iオプションでチャネルの自動確立をするよう指定した場合，TP1/Message Queueの開始直後に，この状態になります。

事前定義チャネル（チャネルタイプがクラスタセンダ，またはクラスタレシーバ）
mqtalccha定義コマンドで事前定義されたクラスタチャネルは，mqtalccha定義コマンドの-iオプションでチャネルの自動確立をするよう指定した場合，TP1/Message Queueの開始直後に，この状態になります。

自動定義チャネル（自動定義クラスタセンダ，またはクラスタレシーバインスタンス）
自動的にクラスタチャネルが作成される時，デフォルトチャネル定義のmqtalccha定義コマンドの-iオプションでチャネルの自動確立をするよう指定した場合，またはデフォルトチャネル定義を指定しない場合，自動作成直後およびそれ以降のTP1/Message Queueの開始直後に，この状態になります。

MCA起動中

開始を要求されたが，MCAがまだ起動していない状態

チャネル確立中

TCP/IPコネクションの確立中，およびネゴシエーション中の状態

チャネル動作中

メッセージ転送中，または転送キューへのメッセージの登録を待っている状態

チャネル解放中

チャネルの解放処理中，またはチャネルの終了要求を受け付けた状態

チャネル確立リトライ中

コネクション障害，時間監視障害，またはMCP障害が発生したため，チャネル確立時再試行間隔で確立の再試行契機を待っている状態

チャネル使用不可

mqtstpchaコマンドの入力，チャネル確立の再試行回数超過，または障害発生でチャネルを解放して使用できない状態

チャネルタイプがセンダ，レシーバ，リクエスタ，またはサーバ
mqtalccha定義コマンドの-iオプションでチャネルの自動確立をしないよう指定した場合，TP1/Message Queueの開始直後に，この状態になります。

事前定義チャネル（チャネルタイプがクラスタセンダ，またはクラスタレシーバ）
mqtalccha定義コマンドで事前定義されたクラスタチャネルは，mqtalccha定義コマンドの-iオプションでチャネルの自動確立をしないよう指定した場合，TP1/Message Queueの開始直後に，この状態になります。

自動定義チャネル（自動定義クラスタセンダ，またはクラスタレシーバインスタンス）
自動的にクラスタチャネルが作成される時，デフォルトチャネル定義のmqtalccha定義コマンドの-iオプションでチャネルの自動確立をしないよう指定した場合，自動作成直後およびそれ以降のTP1/Message Queueの開始直後に，この状態になります。

チャネル確立リクエスト中

チャネルタイプがリクエスタの場合で，MCAがリモートMCAからのチャネルの開始要求を待っている状態

チャネルタイプ別の状態遷移について，以降の図に示します。

図2-15　チャネルの状態遷移（センダ）

図2-16　チャネルの状態遷移（サーバ）

図2-17　チャネルの状態遷移（レシーバ）

図2-18　チャネルの状態遷移（リクエスタ）

図2-19　チャネルの状態遷移（クラスタセンダ）

図2-20　チャネルの状態遷移（クラスタレシーバ）

2.3.4　MQTサーバのトリガ起動によるチャネル開始

転送キューにメッセージが登録されたことをMQTサーバが検出し，チャネルを開始する機能です。

チャネルタイプがセンダまたはサーバの場合，転送キューにメッセージが登録されると，イニシエーションキューにトリガメッセージが登録されます。MQTサーバはイニシエーションキューを監視することによって，転送キューへのメッセージ登録を検出して，MCAを起動します。イニシエーションキューは一つのMQTサーバに対して一つだけ指定できます。トリガ起動を使用するチャネルは，使用するすべての転送キューを一つのイニシエーションキューに割り当ててください。一つのイニシエーションキューを複数のMQTサーバに割り当てることはできません。

チャネルタイプがクラスタセンダの場合，イニシエーションキューではなく，チャネル要求監視間隔（mqttcpcs定義コマンド-v stimオペランド指定値）でクラスタ転送キューを監視し，メッセージ登録時に決定した最適なMCAを起動します。そのため，メッセージを登録しても，-v stimオペランドで指定する次の監視時までは，チャネルが開始されないことがあります。

転送キューと対応づけられたチャネルで「チャネル停止」の状態のコーラ側MCAが起動され，チャネル開始要求を相手システムに送ってチャネルを確立します。

トリガ起動によるチャネルの開始について，次の図に示します。

図2-21　MQTサーバのトリガ起動によるチャネルの開始

イニシエーションキューの監視方法については，「2.5.4　イニシエーションキュー監視」を参照してください。

2.3.5　チャネルの開始

チャネルを開始する方法を次に示します。チャネルの開始後，チャネルの確立に成功するとメッセージの送受信が開始されます。

運用コマンド

mqtstachaコマンドを入力する場合

相手システム（TCP定義のmqtalccha定義コマンドの-oオプション指定値）が指定されているとき，チャネル開始要求を相手システムに送ってチャネルを確立します。相手システムが指定されていないとき，「チャネル使用不可」の状態を「チャネル停止」の状態に遷移させることができます。

mqtstachaコマンドに-aオプションを指定して入力する場合

「チャネル使用不可」状態になっているMCAを，トリガ起動やネットワークリクエストによってチャネル開始のできる「チャネル停止」の状態に遷移させることができます。

トリガ起動（自システムがコーラの場合）
転送キューにメッセージが登録されたことをMQTサーバが検出し，MCAがチャネル開始要求を相手システムに送ってチャネルを確立します。
詳細については，「2.3.4　MQTサーバのトリガ起動によるチャネル開始」を参照してください。

ネットワークリクエスト（自システムがレスポンダの場合）
相手システムからチャネル開始要求を受けることをネットワークリクエストといいます。
「チャネル停止」の状態のMCAは，相手システムからのチャネル開始要求を受けると，チャネル開始応答を返してチャネルを確立します。
クラスタセンダ以外のすべてのチャネルタイプがレスポンダ側MCAになることができます。

システム起動
mqtalccha定義コマンドの-iオプションにauto2を指定した場合，MQTサーバのサービスが開始された直後に，自動的にチャネルが開始されます。ただし，相手システムが指定されていない場合は開始されません。

チャネルの開始方法とチャネル定義の指定値による動作の違いについて，次の表に示します。

表2-5　チャネルの開始方法とチャネル定義の指定値による動作

チャネル開始方法
チャネルタイプ
コーラ/
レスポンダ
通信相手の指定※¹
動作

運用コマンド
（mqtstacha）
センダ
（sender）
コーラ
必ず指定

チャネルの確立（チャネル開始要求の送信）※²

メッセージ送信

サーバ
（server）
コーラ
指定あり

チャネルの確立（チャネル開始要求の送信）※²

メッセージ送信

レスポンダ
指定なし

ネットワークリクエストを待ちます。

レシーバ
（receiver）
レスポンダ
－

ネットワークリクエストを待ちます。

リクエスタ
（requester）
コーラ
指定あり

チャネルの確立（チャネル開始要求の送信）※²

メッセージ受信

レスポンダ
指定なし

ネットワークリクエストを待ちます。

クラスタセンダ（clussdr）
コーラ
必ず指定
（自動定義される）

チャネルの確立（チャネル開始要求の送信）※²

メッセージ送信

クラスタレシーバ（clusrcvr）
レスポンダ
－

ネットワークリクエストを待ちます。

トリガ起動
センダ
（sender）
コーラ
必ず指定

チャネルの確立（チャネル開始要求の送信）

メッセージ送信

サーバ
（server）
コーラ
指定あり

チャネルの確立（チャネル開始要求の送信）

メッセージ送信

指定なし
－
（コネクションを持たないため起動されません）

レシーバ
（receiver）
－
－
－
（転送キューを持たないため対象外）

リクエスタ
（requester）
－
－
－
（転送キューを持たないため対象外）

クラスタセンダ（clussdr）
コーラ
必ず指定
（自動定義される）

チャネルの確立（チャネル開始要求の送信）

メッセージ送信

クラスタレシーバ（clusrcvr）
－
－
－
（転送キューを持たないため対象外）

ネットワーク
リクエスト
センダ
（sender）
レスポンダ
必ず指定

チャネルの確立（チャネル開始応答の送信）後解放※³

コーラ

チャネルの確立（チャネル開始要求の送信）

メッセージ送信

サーバ
（server）
レスポンダ
－

チャネルの確立（チャネル開始応答の送信）

メッセージ送信

レシーバ
（receiver）
レスポンダ
－

チャネルの確立（チャネル開始応答の送信）

メッセージ受信

リクエスタ
（requester）
レスポンダ
－

チャネルの確立（チャネル開始応答の送信）

メッセージ受信

クラスタセンダ（clussdr）
－
－
－
（クラスタセンダは必ずコーラ側になるため対象外）

クラスタレシーバ（clusrcvr）
レスポンダ
－

チャネルの確立（チャネル開始応答の送信）

メッセージ受信

システム起動
センダ
（sender）
コーラ
必ず指定

チャネルの確立（チャネル開始要求の送信）

メッセージ送信

サーバ
（server）
コーラ
指定あり

チャネルの確立（チャネル開始要求の送信）

メッセージ送信

レスポンダ
指定なし
－
（システム起動しないため対象外）

レシーバ
（receiver）
－
－
－
（システム起動しないため対象外）

リクエスタ
（requester）
コーラ
指定あり

チャネルの確立（チャネル開始要求の送信）

メッセージ受信

レスポンダ
指定なし
－
（システム起動しないため対象外）

クラスタセンダ（clussdr）
コーラ
必ず指定

チャネルの確立（チャネル開始要求の送信）

メッセージ送信

クラスタレシーバ（clusrcvr）
－
－
－
（システム起動しないため対象外）

（凡例）

－：該当しません。

注※1

TCP定義のmqtalccha定義コマンドの-oオプションの指定です。

注※2

チャネル状態が「チャネル使用不可」の場合にmqtstachaコマンドに-aオプションを入力して実行すると，チャネルの確立とメッセージ送受信の処理はしないで，チャネル状態は「チャネル停止」になります。

注※3

チャネルタイプがセンダのMCAがネットワークリクエストによって起動されると，ネットワークリクエストを受信したコネクションをいったん解放して，再度センダMCAのチャネル開始要求によって，センダMCAのチャネル定義に指定された通信相手とチャネルを確立します。

2.3.6　チャネルの確立

コーラ側MCAからレスポンダ側MCAにチャネル開始要求が送られたあと，両方のMCAの間でチャネルの構成がチェックされます。チェックの結果，矛盾がなければ，レスポンダ側MCAからコーラ側MCAにチャネル開始応答が返されチャネルが確立されます。

チャネル確立時に，相手システムとチャネルの構成をチェックして合わせることをネゴシエーションといいます。自システムのチャネルの構成は，TCP定義のmqtalccha定義コマンドで指定した属性です。ネゴシエーションの結果，定義で指定した値が変更されることがあります。ネゴシエーションを行うチャネル属性については，4章の「チャネルのネゴシエーション」を参照してください。

コーラの場合
コーラは，コーラのチャネルの構成をレスポンダに提案して了解させます。提案したチャネルの構成が，レスポンダのMCAから受け入れを拒否された場合，コーラ側でレスポンダに合わせることができれば修正し，再度確立を要求します。変更できない属性について受け入れを拒否された場合，またはレスポンダ側で確立不可能と判断されてチャネル確立拒否応答が返された場合，KFCA16341-EまたはKFCA16342-Eが出力され，チャネルの確立を中止します。

レスポンダの場合
レスポンダは，コーラからのチャネルの構成とレスポンダ側のチャネルの構成を比較します。比較の結果，矛盾がなければチャネルを確立します。矛盾がある場合，チャネルの確立要求を受け入れないで，受け入れられる値をコーラに連絡します。また，チャネル確立不可能と判断した場合，チャネル確立拒否応答を送信し，コーラにチャネルの確立を中止させます。

mqtpngchaコマンドを使用すると，チャネルの確立ができるかどうかを確認できます。送信するデータ（Pingデータ）の長さを指定して通信相手システムに送信すると，指定したPingデータの長さを1セグメントとして転送できるかどうかを確認できます。

チャネルのテスト接続は次に示す場合に使用できます。

チャネルタイプがセンダ，サーバ，またはクラスタセンダ

チャネル状態が「チャネル停止」，「チャネル使用不可」，または「チャネル確立リトライ中」

2.3.7　チャネル確立再試行

チャネル確立再試行は，チャネルに通信障害が発生した時にチャネルを自動的に再確立する機能です。再試行には短期確立再試行と長期確立再試行があります。短期確立再試行および長期確立再試行の機能は，お互いに独立した機能です。それぞれを，単独で指定したり同時に指定したりできます。なお，同時に指定した場合は，短期確立再試行が終わってから長期確立再試行を実行します。

短期確立再試行の機能を使用する場合，TCP定義のmqtalccha定義コマンドの-bオプションに次に示す指定をしてください。

短期確立再試行の要否（bretry=yes）

短期確立再試行回数（bretrycnt=任意の値）

短期確立再試行間隔（bretryint=任意の値）

長期確立再試行の機能を使用する場合，TCP定義のmqtalccha定義コマンドの-bオプションに次に示す指定をしてください。

長期確立再試行の要否（bretrylg=yes）

長期確立再試行回数（bretrylgcnt=任意の値）

長期確立再試行間隔（bretrylgint=任意の値）

ただし，確立再試行回数×確立再試行間隔（秒）の時間は，実際に確立再試行を実行する時間と必ずしも一致しません。これは，実際に確立再試行を実行する時間にチャネルの確立処理時間を含むためです。特に，クラスタセンダチャネルでは，実際に確立再試行を実行する時間はさらに長くなります。チャネル確立再試行を実行する前に，メッセージ送信経路の再設定処理が完了するのをmqttcpcs定義コマンド-v stimオペランドに指定した間隔で確認するためです。また，確立再試行間隔はMQT共通定義のmqtttim定義コマンドの-t btimオペランドおよびbmtimオペランドで指定する基本タイマ値の影響を受けるため，動作間隔に誤差が発生することがあります。

チャネル確立の再試行が動作するのは，次に示す通信障害が発生した場合です。

コネクション障害
チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル確立リトライ中」，または「チャネル確立リクエスト中」の場合に，TCP/IPソケット関数が軽度障害でエラーリターンしたときです。軽度障害とは，エラーナンバENOBUFS（Windowsの場合は，WSAENOBUFS）以外のエラーのことです。なお，重度障害とは，ENOBUFS（Windowsの場合は，WSAENOBUFS）エラーのことであり，メモリ不足によって発生します。

時間監視障害
チャネル状態が「チャネル確立中」，「チャネル動作中」，または「チャネル確立リクエスト中」の場合に，各種メッセージ受信監視タイマ（TCP定義のmqtalccha定義コマンドの-vオプション指定値）がタイムアウトしたときです。TCP定義のmqtalccha定義コマンドの-vオプションにvretry=yesを指定している場合，確立再試行が実行されます。vretry=noを指定している場合，チャネルは終了します。

MCP障害
チャネル状態が「チャネル確立中」，「チャネル動作中」，または「チャネル確立リクエスト中」の場合に，MCP障害が発生したときです。TCP定義のmqtalccha定義コマンドの-bオプションにbretrymcp=yesを指定している場合，確立再試行が実行されます。bretrymcp=noを指定している場合，チャネルは終了します。

＜この項の構成＞

(1)　確立再試行の詳細

(2)　MCP障害による再試行（bretrymcp=yes）の効果

(1)　確立再試行の詳細

通信障害が発生すると，KFCA16318-I（コネクション確立再試行開始）が出力されて確立再試行を実行します。

mqtalccha定義コマンドの-bオプションにbretrymcp=noを指定した場合，次に示す処理のどれかが発生した時点で確立再試行処理は完了します。

TCP/IPコネクションが確立した

指定回数分繰り返してもTCP/IPコネクションを確立できなかった

メモリ不足が発生した

mqtstpchaコマンドまたはdcstopコマンドが実行された

mqtalccha定義コマンドの-bオプションにbretrymcp=yesを指定した場合，次に示す処理のどれかが発生した時点で確立再試行処理は完了します。

チャネルが確立した

指定回数分繰り返してもチャネルを確立できなかった

メモリ不足が発生した

mqtstpchaコマンドまたはdcstopコマンドが実行された

チャネルを確立するまでに発生する通信障害，出力されるログメッセージ，および再試行処理内容を次の表に示します。

表2-6　再試行処理（チャネル確立前）

通信障害の内容
出力するログメッセージ
mqtalccha定義コマンドの-bオプションまたは-vオプション

bretry=yes
または
bretrylg=yes
vretry=yes
bretrymcp=yes
bretry=yes
または
bretrylg=yes
vretry=no
bretrymcp=yes
bretry=yes
または
bretrylg=yes
vretry=yes
bretrymcp=no
bretry=yes
または
bretrylg=yes
vretry=no
bretrymcp=no

コネクション障害
（TCP/IPエラー）
KFCA16331-E
（TCP/IPインタフェースエラー）
◎
◎
○
○

時間監視障害
（開始応答受信監視タイムアウト）
KFCA16329-E
（受信監視タイムアウト）
監視対象=init
◎
×
○
×

MCP障害
（チャネル属性不一致）
KFCA16341-E
（開始要求応答受け入れ不可）
理由コード=00，または理由コード15
◎
◎
×
×

MCP障害
（該当するチャネルがない）
KFCA16341-E
（開始要求応答受け入れ不可）
理由コード=01
◎
◎
×
×

MCP障害
（チャネルタイプの組み合わせが不正）
KFCA16341-E
（開始要求応答受け入れ不可）
理由コード=02
◎
◎
×
×

MCP障害
（相手キューマネジャが動作していない）
KFCA16341-E
（開始要求応答受け入れ不可）
理由コード=03
◎
◎
×
×

MCP障害
（相手キューマネジャが終了中）
KFCA16341-E
（開始要求応答受け入れ不可）
理由コード=05
◎
◎
×
×

MCP障害
（相手チャネルの状態が「チャネル停止」でない）
KFCA16341-E
（開始要求応答受け入れ不可）
理由コード=16
◎
◎
×
×

MCP障害
（上記以外のエラー応答受信）
KFCA16341-E
（開始要求応答受け入れ不可）
上記以外の理由コード
◎
◎
×
×

（凡例）

◎：チャネルが確立するまで再試行を実行します。

○：TCP/IPコネクション確立まで再試行を実行します。

×：再試行を実行しません。

チャネルの確立後に発生する通信障害と，出力されるログメッセージ，および再試行処理内容を次の表に示します。

表2-7　再試行処理（チャネル確立後）

通信障害の内容
出力するログメッセージ
mqtalccha定義コマンドの-bオプションまたは-vオプション

bretry=yes
または
bretrylg=yes
vretry=yes
bretrymcp=yes
bretry=yes
または
bretrylg=yes
vretry=no
bretrymcp=yes
bretry=yes
または
bretrylg=yes
vretry=yes
bretrymcp=no
bretry=yes
または
bretrylg=yes
vretry=no
bretrymcp=no

コネクション障害
（TCP/IPエラー）
KFCA16331-E
（TCP/IPインタフェースエラー）
◎
◎
○
○

時間監視障害
（確認メッセージ受信監視タイムアウト）
KFCA16329-E
（受信監視タイムアウト）
監視対象=resp
◎
×
○
×

時間監視障害
（接続セグメント受信監視タイムアウトまたは継続メッセージ受信監視タイムアウト）
KFCA16329-E
（受信監視タイムアウト）
監視対象=next
◎
×
○
×

時間監視障害
（ハートビート間隔監視タイムアウト）
KFCA16329-E
（受信監視タイムアウト）
監視対象=htbt
◎
×
○
×

MCP障害
（受信メッセージをあて先キューまたはデッドレターキューに登録失敗）
KFCA16345-E
（エラーデータ受信）
理由コード=06
◎
◎
×
×

MCP障害
（メッセージシーケンス番号不一致）
KFCA16343-E
（メッセージシーケンス番号不一致）
◎
◎
×
×

MCP障害
（キューファイル障害）
KFCA16333-E
（キューファイル障害）
または
KFCA16315-E
（キューが他サーバで使用中）
◎
◎
×
×

MCP障害
（上記以外のMCP障害）
KFCA16345-E
（エラーデータ受信）
◎
◎
×
×

（凡例）

◎：チャネルが確立するまで再試行を実行します。

○：TCP/IPコネクション確立まで再試行を実行します。

×：再試行を実行しません。

チャネルの確立後に発生した通信障害によって確立再試行を実行する場合，再試行回数の残数は元に戻ります。このため，通信障害が解決されない場合，次に示す順番で処理が繰り返し実行されます。

チャネル（TCP/IP）確立（確立再試行回数の残数＝チャネル定義の値）

通信障害発生

チャネル解放

確立再試行処理（確立再試行回数の残数＝現在の残数－1）

チャネル（TCP/IP）確立（確立再試行回数の残数＝チャネル定義の値）

通信障害発生

確立再試行回数の残数は0にならないため，無限回の確立再試行を実行することがありますので，注意してください。

確立再試行処理の全体の流れを以降の図に示します。

図2-22　短期および長期確立再試行処理の概要（TCP/IPコネクション確立までの再試行）

図中の1～10について説明します。

コネクション障害または時間監視障害が発生

障害ログメッセージの出力（表2-6および表2-7を参照）

短期確立再試行を実行する場合（mqtalccha定義コマンドの-bオプションにbretry=yesを指定），または長期確立再試行を実行する場合（mqtalccha定義コマンドの-bオプションにbretrylg=yesを指定）は，再試行開始ログメッセージ（KFCA16318-I種別=shortまたはKFCA16318-I種別=long）の出力

再試行間隔（短期確立再試行または長期確立再試行）のタイマの設定

指定した再試行間隔（短期確立再試行または長期確立再試行）の経過を待つ

コネクション障害の発生の確認

コネクション障害が発生した場合，再試行回数の残数を更新して次の確立再試行を実行します。

コネクション障害が発生していない場合，確立再試行は完了します（再試行回数の残数はチャネル定義の値に戻ります）。

確立再試行回数の残数が0になっていないかの確認

短期再試行中の場合，回数オーバーログメッセージ（KFCA16340-I種別=short）の出力。長期再試行中の場合，回数オーバーログメッセージ（KFCA16340-I種別=long）の出力。

長期確立再試行を実行する場合，確立再試行回数の残数を設定して長期再試行処理開始ログメッセージ（KFCA16318-I種別=long）の出力

前回の障害と同じ障害かどうか確認し，同じ障害でなければ該当障害のログメッセージの出力（表2-6および表2-7を参照）

図2-23　短期および長期確立再試行処理の概要（チャネル確立までの再試行）

図中の1～11について説明します。

MCP障害が発生

障害ログメッセージの出力（表2-6および表2-7を参照）

短期確立再試行を実行する場合（mqtalccha定義コマンドの-bオプションにbretry=yesを指定），または長期確立再試行を実行する場合（mqtalccha定義コマンドの-bオプションにbretrylg=yesを指定），再試行開始ログメッセージ（KFCA16318-I種別=shortまたはKFCA16318-I種別=long）の出力
ただし，MCP障害の確立再試行が設定されている（mqtalccha定義コマンドの-bオプションにbretrymcp=yesを指定）場合に限ります。

再試行間隔（短期確立再試行または長期確立再試行）のタイマの設定

指定した再試行間隔（短期確立再試行または長期確立再試行）の経過を待つ

コネクション障害の発生の確認

コネクション障害が発生した場合，確立再試行回数の残数を更新して次の確立再試行を実行します。

コネクション障害が発生していない場合，チャネル開始要求を送信します。

コネクション障害，時間監視障害，またはMCP障害のうちどれかについて発生の確認

コネクション障害，時間監視障害，またはMCP障害のどれかが発生した場合，確立再試行回数の残数を更新して確立再試行を実行します。

コネクション障害，時間監視障害，またはMCP障害のどれにも発生していない場合，確立再試行は完了します（再試行回数の残数は，チャネル定義の値に戻ります）。

確立再試行回数の残数（0になっていないか）の確認

短期再試行中の場合，回数オーバーログメッセージ（KFCA16340-I種別=short）の出力。また，長期再試行中の場合，回数オーバーログメッセージ（KFCA16340-I種別=long）の出力

長期確立再試行を実行する場合，確立再試行回数の残数を設定して長期再試行処理開始ログメッセージ（KFCA16318-I種別=long）の出力

前回の障害と同じ障害かどうか確認し，同じ障害でなければ該当障害のログメッセージの出力（表2-6および表2-7を参照）

(2)　MCP障害による再試行（bretrymcp=yes）の効果

TCP定義のmqtalccha定義コマンドの-bオプションにbretrymcp=yesを指定している場合，mcp障害時に確立再試行が実行されます。bretrymcp=noを指定している場合，mcp障害時にチャネルは終了します。チャネル確立前，およびチャネル確立後の通信障害の種類とTCP定義のmqtalccha定義コマンドの-b bretrymcpオペランドの指定値（yesまたはno）との関係については表2-6および表2-7を参照してください。

チャネル確立再試行は，従来のTCP/IPレベルの再試行だけでなく，MQプロトコルレベルでの再試行が実行できるため，特に次に示す場合に効果があります。

KFCA16341-E（開始要求の応答受け入れ不可）出力時の再試行

チャネル確立時に，次に示す状況でKFCA16341-E（開始要求の応答受け入れ不可）が出力され，MCAが確立処理を中断することがあります。このような場合，コーラチャネルに対して再度チャネル開始コマンドを入力して，チャネルを開始する必要がありました。

チャネル確立再試行を使用すると，これらのエラーに対して自動的にチャネル確立再試行を実行し，相手システムの回復を待って，再確立を実行できます。

KFCA16341-E出力時の状況

回線障害によるチャネル状態の不一致

チャネルが使用しているTCP/IPプロトコルでは，回線に障害が発生しても一定時間障害を検出できないことがあります。このため，コーラチャネルが先に障害を検出してレスポンダチャネルの障害検出が遅れた場合に，コーラチャネルからのチャネル確立処理によってチャネル状態不一致が発生したとき，レスポンダにはKFCA16317-E（状態不一致）が出力され，コーラにはKFCA16341-E（開始要求の応答受け入れ不可。理由コード=16）が出力されます。なお，理由コード=16は，チャネルは使用できない状態であることを意味します。

WebSphere MQでのリスナとキューマネジャの開始状態の不一致

WebSphere MQでは，リスナとキューマネジャの開始状態が一致しない場合があります。このため，WebSphere MQのキューマネジャの終了中に，TP1/Message Queueのコーラチャネルが確立要求するとKFCA16341-E（開始要求の応答受け入れ不可。理由コード=03または05）が出力されます。理由コード=03は，WebSphere MQのキューマネジャが動作していないことを表します。なお，理由コード=05は，WebSphere MQのキューマネジャが終了処理中であることを表します。

チャネル状態の不一致（相手チャネルの状態が「チャネル停止」でない）

チャネルの終了直後に，MCAを再起動しようとすると，相手システムのMCAが終了中で，チャネルが確立できないため，KFCA16341-E（開始要求の応答受け入れ不可。理由コード=16）が出力され，チャネルが確立できないことがあります。bretrymcp=yesを指定していない場合は，相手システムの状態を確認したあと，もう一度mqtstachaコマンドでチャネルを開始してください。ただし，トリガ機能を使用している場合は，自動的にトリガメッセージが再作成され再度MCAが起動されます。

2.3.8　チャネル確立時のTCP/IPソケット関数発行シーケンス

チャネル確立時のTCP/IPソケット関数発行シーケンスを，コーラ側およびレスポンダ側から説明します。

＜この項の構成＞

(1)　コーラ側チャネル確立時のTCP/IPソケット関数発行シーケンス

(2)　レスポンダ側チャネル確立時のTCP/IPソケット関数発行シーケンス

(3)　注意事項

(1)　コーラ側チャネル確立時のTCP/IPソケット関数発行シーケンス

コーラ側チャネル確立時のTCP/IPソケット関数発行シーケンスを次の図に示します。

図2-24　コーラ側チャネル確立時のTCP/IPソケット関数発行シーケンス

図中に示す関数（socket～setsockopt～〔bind〕～ioctl）でエラーになった場合，KFCA16331-E（TCP/IPインタフェースエラー）が出力されます。この時，確立再試行が指定されている場合は，確立再試行が実行されます（チャネル状態は「チャネル確立リトライ中」になります）。確立再試行が指定されていない場合は，チャネル確立に失敗します（チャネル状態は「チャネル使用不可」になります）。

なお，自システムのポート番号が指定されている場合は，（mqtalccha定義コマンドの-r servnameオペランド指定値の名称から変換したポート番号，または-r portnoオペランド指定値のポート番号）～（該当ポート番号＋-r portnumオペランド指定値－1）の範囲内でbind処理します。bind処理するポート番号が65535を超える場合は65535で処理を中止します。すべてのポート番号が使用中の場合はKFCA16331-E（TCP/IPインタフェースエラー）が出力されます。

1回目のTCP/IPコネクション確立要求（connect）で接続を確認できない場合，mqtalccha定義コマンドの-tオプションで指定された回数または間隔（tretrycnt，tretryint）でTCP/IPコネクションの状態が確認されます。指定された回数・間隔内に接続を確認できない場合は，KFCA16331-E（TCP/IPインタフェースエラー）が出力されて，確立再試行が実行されます（確立再試行の指定がある場合）。

TCP/IPコネクション確立後，〔setsockopt〕関数でエラーになった場合も，KFCA16331-E（TCP/IPインタフェースエラー）が出力されて，確立再試行が実行されます（確立再試行の指定がある場合）。

(2)　レスポンダ側チャネル確立時のTCP/IPソケット関数発行シーケンス

レスポンダ側チャネル確立時のTCP/IPソケット関数発行シーケンスを次の図に示します。

図2-25　レスポンダ側チャネル確立時のTCP/IPソケット関数発行シーケンス

図中に示す関数（socket～setsockopt～bind～ioctl～listen）でエラーになった場合，KFCA16331-E（TCP/IPインタフェースエラー）が出力されて，ネットワークリクエストによるチャネルの起動機能は縮退します（TP1/Message Queueを再度開始するまで縮退します）。

関数（accept～〔setsockopt〕）でエラーになった場合は，KFCA16332-W（TCP/IPインタフェースエラー。処理続行）が出力されて，TCP/IPコネクションが解放されます。ただし，新たな接続要求は，受け付け処理できます。

(3)　注意事項

MCAはTCP/IPソケットの回線監視（keepalive）機能を使用して回線障害を検出することがあります。keepaliveによる障害検出まで一定時間が必要なため，通信相手のMCAとの間でチャネルの状態が不一致になります。このため，コーラ側チャネルで先に回線障害を検出し，チャネルの確立再試行によってチャネルを再確立すると，相手システムのチャネルとの状態不一致が発生（障害を検出していないMCAでKFCA16317-Eメッセージを出力）します。

この場合，keepaliveによる障害検出を待つか，障害検出できていないMCAのチャネルを，mqtstpchaコマンドで一度チャネルを終了し，mqtstachaコマンドで再度チャネルを開始してください。また，mqtalccha定義コマンドの-fオプションのadoptchkオペランドでoff以外の値を指定すると，チャネルの開始要求に対して動作中のMCAを強制停止して新たにチャネルを開始できます。

2.3.9　チャネルの解放

チャネルを終了すると，チャネルが解放されMCAは停止します。

次に示す場合に，チャネルは終了します。

転送キューのメッセージの送信完了
転送キューに登録されているメッセージがすべて送信された場合
転送キュー監視機能を使用している場合は，監視処理完了後に終了します。転送キュー監視については，「2.5.5　転送キュー監視と切断時間間隔」を参照してください。

運用コマンド

ユーザがmqtstpchaまたはdcstopコマンドを入力した場合
受信側でチャネルを終了する場合は，コマンドの入力後にメッセージを受信しないと，チャネルは終了しません。正常終了させるにはメッセージの送信側から，アプリケーションが登録したメッセージを転送するか，ハートビートメッセージを転送してください。

ユーザがmqtstpchaコマンドに-fオプションを指定して入力した場合
処理を中断して即座に終了します。相手システムのMCAは通信障害になります。
次回にチャネルを開始するには，mqtstachaコマンドを使用してください。

チャネル確立の再試行回数超過
TCP定義のmqtalccha定義コマンドの-b bretrycntまたはbretrylgcntオペランドで指定したチャネルの確立再試行回数を超えた場合
次回にチャネルを開始するには，mqtstachaコマンドを使用してください。

障害発生
TCP/IPコネクションでコネクションの重度障害またはキュー障害が発生し，チャネルを使用できなくなった場合

メッセージ送受信中に運用コマンドまたは障害発生によってチャネルが解放された場合のMQTの処理について，次の表に示します。

表2-8　メッセージ送受信中にチャネルが解放された場合のMQTの処理

解放の方法
種別
MQTの処理

mqtstpchaコマンド
正常解放
送受信途中のメッセージ送受信完了後，TCP/IPコネクションを解放します。

強制解放
メッセージ送信を中断し，TCP/IPコネクションを解放します。
送信途中のメッセージは転送キューに保留されます。受信途中のメッセージは破棄されます。

dcstopコマンド
正常終了
送受信途中のメッセージ送受信を完了し，TCP/IPコネクションを解放します。

計画停止A

計画停止B

強制終了
メッセージ送受信を中断し，TCP/IPコネクションを解放します。
送信途中のメッセージは転送キューに保留されます。受信途中のメッセージは破棄されます。

障害発生
－
メッセージ送受信を中断し，TCP/IPコネクションを解放します。
送信途中のメッセージは転送キューに保留されます。受信途中のメッセージは破棄されます。

（凡例）

－：該当しません。

2.4　メッセージ送受信機能

TP1/Message Queueが送受信時のメッセージをどのように処理するか説明します。

＜この節の構成＞

2.4.1　メッセージの送信

2.4.2　メッセージの受信

2.4.3　メッセージとセグメントの関係

2.4.4　メッセージシーケンス番号でのメッセージの管理

2.4.5　メッセージのバッチ転送

2.4.1　メッセージの送信

TP1/Message Queueは，TCP/IPプロトコルを使用してほかのシステムへメッセージを送信します。この項では，メッセージ送信の処理の流れについて説明します。また，メッセージがセグメント分割された場合のメッセージ送信についても説明します。

＜この項の構成＞

(1)　メッセージ送信の流れ

(2)　送信バッファ方式

(1)　メッセージ送信の流れ

自システムの送信側MCAは，チャネル確立後，TCP定義のmqtalccha定義コマンドの-qオプションで指定した転送キューに登録されたメッセージを相手システムの受信側MCAに送信します。メッセージ送信の流れについて，次の図に示します。

図2-26　メッセージ送信の流れ

メッセージが転送キューに登録されていれば，送信側MCAは，転送キューに登録されているすべてのメッセージの取り出しをMQAサーバに要求し，受信側MCAに送信します。取り出したメッセージがチャネルの最大メッセージ長より大きい場合，メッセージはデッドレターキューへ登録されます。メッセージが登録されていなければ，チャネルを解放します。

(2)　送信バッファ方式

MQTサーバが送信するメッセージの分割単位をセグメントといいます。

バッファ方式がセグメント方式のチャネルの場合，送信側MCAは，転送キューに登録されているメッセージをセグメントごとに分割して取り出し送信します。セグメントサイズよりも大きいサイズの送信バッファが必要になります。

最大セグメントサイズを大きくすると，転送処理を削減でき，性能が向上します。また，受信側MCAが分割受信機能を持たない場合，一つのセグメントに入りきらないメッセージはデッドレターキューに登録されます。

バッファ方式がメッセージ方式のチャネルの場合，送信側MCAは，転送キューに登録されているメッセージを一度に取り出しセグメントごとに送信します。メッセージサイズよりも大きいサイズの送信バッファが必要になります。

送信バッファ方式の概要について，次の図に示します。図中の括弧付き数字は，処理の順序を表します。

図2-27　送信バッファ方式の概要

2.4.2　メッセージの受信

TP1/Message Queueは，TCP/IPプロトコルを使用してほかのシステムからメッセージを受信します。この項では，メッセージ受信の処理の流れについて説明します。また，メッセージがセグメントに分割されて送信された場合のメッセージ受信についても説明します。

＜この項の構成＞

(1)　メッセージ受信の流れ

(2)　受信バッファ方式

(1)　メッセージ受信の流れ

受信側MCAは，チャネル確立後，相手システムから受信したメッセージをあて先キューに登録します。メッセージ受信の流れについて，次の図に示します。

図2-28　メッセージ受信の流れ

(2)　受信バッファ方式

MQTサーバが受信するメッセージの分割単位をセグメントといいます。

バッファ方式がセグメント方式のチャネルの場合，受信側MCAは送信側MCAから送られてきたセグメントを受信し，セグメントごとにあて先キューに登録します。セグメントサイズよりも大きいサイズの受信バッファが必要になります。

バッファ方式がメッセージ方式のチャネルの場合，受信側MCAは送信側MCAから送られてきたセグメントをすべて受信し一度にあて先キューへ登録します。メッセージサイズよりも大きいサイズの受信バッファが必要になります。

受信バッファ方式の概要について，次の図に示します。図中の括弧付き数字は，処理の順序を表します。

図2-29　受信バッファ方式の概要

2.4.3　メッセージとセグメントの関係

MQTサーバが送受信するメッセージの分割単位をセグメントといいます。

送信側MCAが分割するセグメントのサイズ，およびMQTサーバが受信するセグメントのサイズは，TCP定義のmqtalccha定義コマンドの-m maxsegオペランドで指定した最大セグメントサイズを基に，チャネル確立時に相手システムとの間で決定された値です。

メッセージとセグメントの関係について，次の図に示します。

図2-30　メッセージとセグメントの関係

2.4.4　メッセージシーケンス番号でのメッセージの管理

MCAは，メッセージの二重送信を抑止するため，メッセージにメッセージシーケンス番号を付けます。各チャネルの送信側MCAは，メッセージにメッセージシーケンス番号を付けて送信します。

＜この項の構成＞

(1)　メッセージシーケンス番号の遷移

(2)　リセットコマンド実行後のチャネルの動作

(3)　送信側MCAと受信側MCAのメッセージシーケンス番号の扱い

(4)　メッセージシーケンス番号不一致の原因と対処方法

(5)　メッセージの送達未確認状態

(6)　正常開始する場合の準備

(7)　二重受信メッセージの破棄

(1)　メッセージシーケンス番号の遷移

メッセージシーケンス番号は，送信側MCAがメッセージに1から一つずつ昇順に付けるチャネル単位のメッセージ転送番号です。TCP定義のmqtalccha定義コマンドの-wオプションで指定したメッセージシーケンス番号の最大値を超えると，1に戻ります。この最大値は，相手チャネルと同じ値を定義する必要があります。チャネル確立直後に送受信する1番目のメッセージに与えられるメッセージシーケンス番号の決定の順序を次の図に示します。

図2-31　メッセージシーケンス番号の遷移

チャネル確立直後に送受信する2番目のメッセージからチャネル解放までのメッセージのメッセージシーケンス番号は，直前のメッセージのメッセージシーケンス番号から一つずつ昇順に付けられます。

(2)　リセットコマンド実行後のチャネルの動作

送信側MCAと受信側MCAで，メッセージシーケンス番号のリセットコマンド（TP1/Message Queueの場合はmqtrstchaコマンド）を実行して，メッセージシーケンス番号をリセットしたあとのチャネルの動作を次の図に示します。

図2-32　リセットコマンド実行後のチャネルの動作

なお，図中の送信側MCAは，センダ，サーバ，またはクラスタセンダです。また，受信側MCAは，レシーバ，リクエスタ，またはクラスタレシーバです。

この図中のAの場合，およびBの場合の送信側MCAと受信側MCAの動作を次の表に示します。

表2-9　リセットコマンド実行後のチャネルの動作（図中のAの場合）

リセット実行の有無※1
チャネル確立後の送受信メッセージの種別
図中のAの場合

送信側MCA
受信側MCA
送信側MCAの動作
受信側MCAの動作

○
×
すべてファーストメッセージ※2

リセットの扱い
実行されたリセット値でリセット

開始するシーケンス番号
実行されたリセット値

開始するシーケンス番号
送信側で実行されたリセット値

ファーストメッセージ以外を含む※3

○
○
すべてファーストメッセージ※2

リセットの扱い
実行されたリセット値でリセット

開始するシーケンス番号
実行されたリセット値

リセットの扱い
送信側で実行されたリセット値でリセット

開始するシーケンス番号
送信側で実行されたリセット値

ファーストメッセージ以外を含む※3

×
×
すべてファーストメッセージ※2

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

ファーストメッセージ以外を含む※3

×
○
すべてファーストメッセージ※2

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

リセットの扱い
実行されたリセット値でリセット

開始するシーケンス番号
実行されたリセット値

ファーストメッセージ以外を含む※3

（凡例）

○：リセットを実行している。

×：リセットを実行していない。

注※1

リセットコマンドは，チャネル確立前（図中のAの前）に実行します。

注※2

チャネルがファーストメッセージ機能を使用し，かつすべてファーストメッセージである場合に該当します。

注※3

次のどちらかの場合に該当します。

・チャネルがファーストメッセージ機能を使用していない場合。

・チャネルがファーストメッセージ機能を使用し，かつ一つ以上の通常メッセージが含まれている場合。

注※4

チャネルがファーストメッセージ機能を使用している場合，通常メッセージだけが該当します。

表2-10　リセットコマンド実行後のチャネルの動作（図中のBの場合）

リセット実行の有無※1
チャネル確立後の送受信メッセージの種別
図中のBの場合

送信側MCA
受信側MCA
送信側MCAの動作
受信側MCAの動作

○
×
すべてファーストメッセージ※2

リセットの扱い
実行されたリセット値でリセット

開始するシーケンス番号
実行されたリセット値

開始するシーケンス番号
送信側で実行されたリセット値

ファーストメッセージ以外を含む※3

リセットの扱い
リセットしない

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

○
○
すべてファーストメッセージ※2

リセットの扱い
実行されたリセット値でリセット

開始するシーケンス番号
実行されたリセット値

リセットの扱い
リセットしない

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

ファーストメッセージ以外を含む※3

リセットの扱い
リセットしない

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

×
×
すべてファーストメッセージ※2

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

ファーストメッセージ以外を含む※3

×
○
すべてファーストメッセージ※2

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

リセットの扱い
実行されたリセット値でリセット

開始するシーケンス番号
実行されたリセット値

ファーストメッセージ以外を含む※3

リセットの扱い
リセットしない

開始するシーケンス番号
送受信が完了したメッセージ※4を含むバッチの最終シーケンス番号+1

（凡例）

○：リセットを実行している。

×：リセットを実行していない。

注※1

リセットコマンドは，チャネル確立前（図中のAの前）に実行します。

注※2

チャネルがファーストメッセージ機能を使用し，かつすべてファーストメッセージである場合に該当します。

注※3

次のどちらかの場合に該当します。

・チャネルがファーストメッセージ機能を使用していない場合。

・チャネルがファーストメッセージ機能を使用し，かつ一つ以上の通常メッセージが含まれている場合。

注※4

チャネルがファーストメッセージ機能を使用している場合，通常メッセージだけが該当します。

(3)　送信側MCAと受信側MCAのメッセージシーケンス番号の扱い

メッセージシーケンス番号の扱いについて，送信側MCAと受信側MCAに分けて説明します。

(a)　送信側MCAの場合

転送キューのメッセージ

コネクション障害またはオンラインシステムの停止などでメッセージの送信が中断された場合，転送キュー内のメッセージは次のように処理されます。

障害回復後の状態が「メッセージ送達未確認=YES」の場合
LUWIDとメッセージシーケンス番号を基に，転送キュー内のメッセージを再送します。ただし，受信側のシステムでメッセージが受信済みになっているときは，送信側で転送キュー内のメッセージを削除します。

障害回復後の状態が「メッセージ送達未確認=NO」の場合
転送キュー内のメッセージを再送します。

メッセージ送達未確認については，mqtlschaコマンドを実行して出力されるチャネルの状態の「メッセージ送達未確認=iii」で確認できます。

(b)　受信側MCAの場合

直前のメッセージと同じメッセージシーケンス番号のメッセージが発生した場合

あとから発生したメッセージを破棄し，処理を続けます。

メッセージシーケンス番号が不正の場合（番号が飛ばされた場合など）

メッセージシーケンス番号不一致として，チャネルを解放します。

(4)　メッセージシーケンス番号不一致の原因と対処方法

メッセージシーケンス番号不一致が発生した場合，KFCA16343-Eメッセージが出力されます。この原因と対処方法について次の表に示します。

表2-11　メッセージシーケンス番号不一致の原因と対処方法

メッセージシーケンス番号不一致の発生個所
原因
対処方法

送信側MCA

メッセージ※1を送信したあと，自システムでOpenTP1の正常停止や正常開始を行った場合，自システムの正常開始時にチャネル情報が引き継がれませんでした。詳細については，「5.3　開始時のチャネル情報引き継ぎ」を参照してください。

メッセージ※1を送信したあと，相手システム（受信側）の開始時にチャネル情報が引き継がれませんでした。

送信側のメッセージシーケンス番号と一致しないリセット値で，受信側メッセージシーケンス番号がリセットされました。

mqtrstchaコマンドでリセットしてください。受信側も同じリセット値でリセットされます。

受信側MCA

メッセージ※1を受信したあと，自システムでOpenTP1の正常停止や正常開始を行った場合，自システムの正常開始時にチャネル情報が引き継がれませんでした。※2詳細については，「5.3　開始時のチャネル情報引き継ぎ」を参照してください。

メッセージ※1を受信したあと，相手システム（送信側）の開始時にチャネル情報が引き継がれませんでした。※2

送信側のメッセージシーケンス番号と一致しないリセット値で，受信側メッセージシーケンス番号がリセットされました。

送信側のシーケンス番号に合わせて，mqtrstchaコマンドでリセットしてください。
ただし，送信側でもリセットされていた場合，送信側のリセット値が受信側でも有効になります。

注※1

チャネルがファーストメッセージ機能を使用している場合，通常メッセージだけが該当します。

注※2

送信側の開始後，チャネル確立前にメッセージシーケンス番号のリセットが行われている場合は除きます。詳細については，「(2)　リセットコマンド実行後のチャネルの動作」を参照してください。

(5)　メッセージの送達未確認状態

メッセージの送受信中に通信障害，チャネル停止，またはTP1/Message Queueが異常終了すると，処理中のメッセージが送信先に届いたかどうかが確認できなくなります。そういう状態を，メッセージの送達未確認状態といいます。

メッセージの送達未確認状態には，次に示す場合があります。

あて先キューへ登録済み

転送中だったメッセージが送信側の転送キューと受信側のあて先キューの両方に登録されている状態

あて先キューへ未登録

転送中だったメッセージが送信側の転送キューに残り，あて先キューには登録されていない状態

チャネルの再開始を要求すると，メッセージの送達未確認状態は解決され，処理を続行できます。ただし，正常開始後にチャネルの再開始を要求する場合は，「(6)　正常開始する場合の準備」を参照してください。

(6)　正常開始する場合の準備

OpenTP1システムを正常開始する場合で，チャネル管理情報格納ファイルを使用しないとき，メッセージの送達未確認状態およびメッセージシーケンス番号の以前の状態は引き継がれません。そこで，メッセージシーケンス番号を管理するために，正常開始を要求する前に次に示す手順で準備をしてください。

(a)　メッセージの送達未確認状態の解決

チャネル情報引き継ぎ機能を使用しない場合，チャネル情報を引き継がない条件※に該当する場合，または送信側MCAが送達未確認状態の場合，メッセージを二重送信することがあります。次に示す手順をオンライン中に実行して，この問題点を解決してください。メッセージの送達未確認状態での問題点を解決できます。

mqtlschaコマンドを使用して，送信側MCAでメッセージが送達未確認状態であるかどうかを確認します。送達未確認状態の場合，2.以下の処理を続けてください。

mqtlschaコマンドを使用して，送信側MCAの送信仕掛かりメッセージシーケンス番号を確認します。

mqtlschaコマンドを使用して，受信完了したメッセージシーケンス番号を確認します。

mqtrlvchaコマンドを使用して，メッセージ送達未確認状態の問題点を解決します。

＜2.と3.のシーケンス番号が一致していた場合＞

mqtrlvchaコマンドの-aオプションにcommitを指定してください。仕掛かり中のメッセージをコミットして有効にします。

＜2.と3.のシーケンス番号が不一致だった場合＞

mqtrlvchaコマンドの-aオプションにbackoutを指定してください。仕掛かり中のメッセージをロールバックして無効にします。

注※

チャネル情報を引き継がない条件については，「5.3(2)　チャネル情報を引き継がない条件」を参照してください。

(b)　メッセージシーケンス番号のリセット

OpenTP1システムを正常開始すると，メッセージシーケンス番号は1に戻されます。自システムと相手システムの両方を正常開始する場合，問題ありません。自システムだけ正常開始する場合は，相手システムのメッセージシーケンス番号をリセットしてください。

(7)　二重受信メッセージの破棄

TP1/Message Queueでは，受信側でメッセージの二重受信を検出して，メッセージを破棄する機能を持っています。

次に示す四つの条件を同時に満たす場合，KFCA16348-Wのメッセージを出力して，受信したメッセージを破棄します。

受信側チャネルで覚えている前回受信したメッセージのシーケンス番号と受信メッセージのシーケンス番号が一致する。

自システムまたは相手システムのどちらかのバッチサイズが1である。

メッセージシーケンス番号がリセットされていない。

自システムまたは相手システムのどちらかが，FAPレベル1で動作している。

なお，動作するFAPレベルと製品のバージョンとの対応を次に示します。

FAPレベル1：TP1/Message Queue 01-xx※

FAPレベル4：TP1/Message Queue 05-xx※，06-xx※，07-00，および07-01

注※

xxには，任意の符号なし整数が入ります。

その他のMQシステムが動作するFAPレベルについては，使用するMQシステムが提供するマニュアルを参照してください。

2.4.5　メッセージのバッチ転送

転送キューに格納された幾つかのメッセージをバッチといいます。バッチ単位でメッセージの送達確認をすることをバッチ転送といいます。バッチ転送をすると，メッセージ単位で送達確認をするよりも確認待ちの回数が少なくなります。このため，連続してメッセージを送信する時に効率が向上します。

一つのバッチで送信するメッセージの数をバッチサイズといいます。バッチサイズは，TCP定義のmqtalccha定義コマンドの-jオプションで指定したバッチサイズを基に，チャネル確立時に通信相手システムとの間で決定された値です。

送信側MCAは，バッチサイズの個数のメッセージを送信するか，転送キューにメッセージがなくなるまで，送達確認しないで送信をします。バッチの送信の最後に，バッチの各メッセージが受信側のキューに格納されたかどうか，確認を要求します。受信側MCAは，バッチのメッセージをすべて登録できたかどうかで，送信側MCAに応答します。

すべてのメッセージの登録に成功した場合，受信側でメッセージの登録を完了し，送信側でメッセージを削除します。

一つでもメッセージの登録に失敗すると，受信側でメッセージの登録を取り消し，送信側でメッセージを転送キューに戻します。

2.5　時間監視機能

TP1/Message Queueは，チャネルに関連する動作を各種タイマによって時間監視します。時間監視をするには，あらかじめ定義で監視タイマ値を指定しておく必要があります。TP1/Message Queueの時間監視の種類，およびそれを指定する定義について，次の表に示します。

すべてのタイマはタイマ定義に指定した基本タイマ（MQT共通定義のmqtttim定義コマンドの-t btimおよびbmtimオペランド指定値）によって，タイマ精度に影響を受けます。例えば，基本タイマが5秒の場合，指定したタイマが最大5秒単位で繰り上げられることがありますので注意してください。

NTPなどで各マシンのシステム時刻を合わせている場合，時刻の補正によって自システムや相手システムで監視時間タイムアウト（KFCA16329-Eメッセージ）になる場合がありますので注意してください。

表2-12　時間監視の種類

時間監視の種類
時間監視の範囲
タイムアウト時の処理
適用範囲
指定する定義

送受信監視
チャネル確立完了監視
TCP/IPコネクション確立時
～開始要求受信時※¹
TCP/IPコネクション解放
レスポンダ側MCA
mqttcp -v rtim
mqttcpcr -v rtim

要求応答受信監視
開始要求送信時
～開始応答受信時
チャネル終了※²
コーラ側MCA
mqtalccha -v tim1

バッチ内最終セグメント送信時
～送達確認応答受信時

転送キューへのメッセージの戻し

チャネル終了※²

送信側MCA
mqtalccha -v tim2

ハートビートメッセージ要求送信時
～ハートビートメッセージ応答受信時

チャネル終了※²

Ping要求送信時～Ping応答受信時

チャネル終了

送達確認要求送信時～送達確認応答受信時

転送キューへのメッセージの戻し

チャネル終了※²

継続セグメント受信監視
セグメント受信時
～継続セグメント受信時

受信済みセグメント破棄

チャネル終了※²

受信側MCA
mqtalccha -v tim3

継続メッセージ受信監視
メッセージの最終セグメント受信時
～継続メッセージ受信時

受信済みメッセージ破棄

チャネル終了※²

受信側MCA
mqtalccha -v mtim

終了処理監視
MQTの終了処理開始
～動作中チャネルのメッセージ処理完了

メッセージ送受信中断

チャネル終了

全チャネル
mqttcp -v etim
mqttcpcs -v etim
mqttcpcr -v etim

チャネル要求監視
MQT開始
～MQT終了で繰り返し
MQRからのクラスタチャネルの開始または削除連絡確認
クラスタプロセス
mqttcpcs -v stim
mqttcpcr -v stim

イニシエーションキュー監視
MQT開始
～MQT終了で繰り返し
イニシエーションキューへのトリガメッセージ登録を確認し該当するチャネルを開始
タイマ方式のイニシエーションキュー監視
mqttcp -v itim

転送キュー監視
メッセージ未登録検出時
～メッセージ登録の有無確認時
転送キュー監視回数分メッセージ登録を確認しチャネル終了
タイマ方式の転送キュー監視をする送信側MCA
mqtalccha -v tim4

切断時間間隔
バッチ終了時
～次バッチ送信監視時
チャネル終了
イベント方式の転送キュー監視をする送信側MCA
mqtalccha -v dtim

バッチ終了待ちタイマ
（バッチインターバル）
バッチサイズ内でメッセージ未登録検出時
～メッセージ登録
バッチ終了
イベント方式の転送キュー監視をする送信側MCA
mqtalccha -v btim
mqtalccha -v bmtim

ハートビート機能
バッチ終了時またはハートビートメッセージ要求送信時
～次バッチ要求送信時

受信側MCAはhtim×2の時間経過後チャネル終了※²

送信側MCAはハートビートメッセージ要求送信

全チャネル
mqtalccha -v htim

注※1

1回目の開始要求受信時にタイマ監視を終了します。そのため，ネゴシエーションが続いている間は，時間監視の対象外です。

注※2

タイムアウトしたチャネルがコーラ側MCAの場合，タイムアウト時のチャネル確立再試行を指定（TCP定義のmqtalccha定義コマンドの-v vretryオペランドにyesを指定）すると，チャネル確立再試行の指定（TCP定義のmqtalccha定義コマンドの-bオプション）に従ってチャネルを再確立できます。

＜この節の構成＞

2.5.1　送受信監視

2.5.2　終了処理監視

2.5.3　チャネル要求監視

2.5.4　イニシエーションキュー監視

2.5.5　転送キュー監視と切断時間間隔

2.5.6　バッチ終了待ちタイマ（バッチインターバル）

2.5.7　ハートビート機能

2.5.1　送受信監視

MCAは，メッセージ送受信中に相手システムが無応答になるのを防ぐため，時間監視をします。

送受信監視とハートビート間隔による，MCAの送受信監視の例について，次の図に示します。

図2-33　送受信監視の例

2.5.2　終了処理監視

MQTサーバが正常終了，計画停止AまたはBをする場合，終了処理監視タイマ値で時間監視をします。終了処理監視タイマ値が経過してもチャネル状態が「チャネル停止」または「チャネル使用不可」ではない場合，該当のチャネルはコネクションを強制解放して終了します。

2.5.3　チャネル要求監視

MQRからクラスタプロセスへの要求（チャネル定義要求，チャネル開始要求，メッセージの送信経路再設定完了連絡，およびチャネル削除要求）の有無をこのタイマの間隔で確認します。

2.5.4　イニシエーションキュー監視

イニシエーションキューの監視方法には，次に示す方式があります。

＜タイマ方式＞

一定間隔でイニシエーションキューへのトリガメッセージの登録を確認し，チャネルを開始する方式です。

センダとサーバに，この方式を使用するにはTCP定義のmqttcp定義コマンドで次に示す項目を指定します。

イニシエーションキュー名（-iオプション）

イニシエーションキュー監視方式（-zオプションにtimeを指定）

イニシエーションキュー監視間隔（-vオプションitimオペランド）

タイマ方式は，TP1/Message Queue　05-10より前のバージョンとの互換のためにあります。新規にMQシステムを構築する場合は，イベント方式を使用することをお勧めします。

＜イベント方式＞

イニシエーションキューへのトリガメッセージの登録をイベント連絡によって検出し，チャネルを開始する方式です。

センダとサーバに，この方式を使用するにはTCP定義のmqttcp定義コマンドで次に示す項目を指定します。

イニシエーションキュー名（-iオプション）

イニシエーションキュー監視方式（-zオプションにeventを指定）

2.5.5　転送キュー監視と切断時間間隔

MQTサーバは，送信が終了して転送キューの中のメッセージがなくなってからも，指定された間隔で転送キューを監視します。転送キュー監視中に次のメッセージが転送キューに登録されなければチャネルは終了します。

転送キューは，TCP定義のmqtalccha定義コマンドの-qオプションで各送信側MCAに一つ指定できます。一つの転送キューを複数のチャネルには割り当てられないので注意してください。

転送キューの監視方法には，次に示す方式があります。

＜タイマ方式＞

一定間隔で転送キューへのメッセージの登録を確認する方式です。この方式を使用するにはTCP定義のmqtalccha定義コマンドで次に示す項目を指定します。

転送キュー監視方式（-zオプションにtimeを指定）

転送キュー監視間隔（-vオプションtim4オペランド）

転送キュー監視回数（-vオプションtim4cntオペランド）

タイマ方式は，TP1/Message Queue　05-10より前のバージョンとの互換のためにあります。新規にMQシステムを構築する場合は，イベント方式を使用することをお勧めします。

＜イベント方式＞

転送キューへのメッセージの登録をイベント連絡によって検出する方式です。

この方式を使用するにはTCP定義のmqtalccha定義コマンドで次に示す項目を指定します。

転送キュー監視方式（-zオプションにeventを指定）

切断時間間隔での監視の要否（-vオプションdtimefctオペランド）

切断時間間隔（-vオプションdtimオペランド）

イベント方式による転送キュー監視について，次の図に示します。

図2-34　イベント方式による転送キュー監視

注※

登録連絡待ちはTCP定義のmqtalccha定義コマンドの-v dtimオペランドに指定した切断時間間隔の間，実行します。切断時間間隔が経過するとチャネルを終了します。

2.5.6　バッチ終了待ちタイマ（バッチインターバル）

バッチインターバル機能を使用すると，送信側MCAがバッチサイズの個数に満たないメッセージを送信したところで転送キューの中のメッセージがなくなっても，送達確認の送信によってバッチを終了しないで転送キューへのメッセージ登録を待ちます。監視時間が経過するまでに転送キューにメッセージが登録されなければ，送達確認が送信されます。

この機能を使用するとバッチ内でアプリケーションからのメッセージ登録を待つことができるため，バッチ数を削減できます。また，ファーストチャネルが非永続メッセージを送信する時に使用すると，不要な送達確認シーケンスによる待ち時間を削減できます。

この機能は転送キューの監視方式がイベント方式の場合にだけ使用できます。また，バッチインターバル中にはハートビートメッセージは送信されません。

2.5.7　ハートビート機能

ハートビート機能とは，送信側MCAの転送キューにメッセージがない場合，受信側MCAに対して一定間隔でハートビートメッセージを送信し，受信側MCAの応答の有無によってお互いが正常に動作していることを確認する機能です。

特に受信側MCAはこのハートビートメッセージによって受信側の運用コマンドによるチャネル終了契機を送信側MCAに連絡できます。

ハートビート機能は，TP1/Message Queue 05-00以降でサポートされる機能です。相手システムでもハートビート機能がサポートされていることを確認してご利用ください。サポートの有無については該当製品のマニュアルを参照してください。

＜この項の構成＞

(1)　ハートビートメッセージ送信の契機

(2)　ハートビート機能の指定

(3)　注意事項

(1)　ハートビートメッセージ送信の契機

ハートビートメッセージ送信の契機とMCAの動作について，次の図に示します。

図2-35　ハートビートメッセージ送信の契機とMCAの動作

送信側MCAは，転送キューにメッセージがないか確認します。転送キューにメッセージがある場合は，メッセージ送信を開始します。

転送キューにメッセージがなく，次に示す条件が満たされている場合，送信側MCAはハートビートメッセージを送信します。
前回のバッチまたはハートビート送信完了からの経過時間 ≧ ハートビート間隔

受信側MCAは，ハートビートメッセージを受信すると，ハートビートメッセージへの応答を送信側MCAに返信します。
この時，受信側MCAがmqtstpchaコマンド（またはdcstopコマンド）によるチャネルの正常終了処理中だった場合，受信側MCAはハートビートメッセージへの応答に加えてチャネルの終了要求を返信し，終了します。

送信側MCAは，次に示すどれかの条件を満たした場合，チャネルを終了します。

チャネル終了を要求するコマンドを受け付けた場合

タイマ方式の転送キュー監視で転送キュー監視回数を超えた場合

イベント方式の転送キュー監視で切断時間間隔を超えた場合

受信側MCAからハートビートメッセージに対する応答と一緒にチャネルの終了を要求された場合

条件を満たさなかった場合，1.に戻ります。

(2)　ハートビート機能の指定

ハートビート機能を使用する場合，ハートビートメッセージを送信する間隔をTCP定義のmqtalccha定義コマンドの-v htimオペランドで指定します。指定できる値の範囲は0～999999（単位：秒）です。ハートビート間隔は，すべてのチャネルタイプに指定できます。

ハートビート間隔は，チャネル確立時にコーラとレスポンダ間のネゴシエーションでチェックされ，使用するかどうかが決定されます。また，コーラ，レスポンダ双方でハートビート間隔を指定した場合，大きい方の値が有効になります。

(3)　注意事項

ハートビート機能を最も有効にするには，ハートビート間隔を送信側MCAに指定した切断間隔（転送キュー監視がタイマ方式の場合は転送キュー監視間隔×転送キュー監視回数，イベント方式の場合は切断時間間隔）よりも小さくしてください。

ハートビート機能を使用すると，メッセージのない場合でも一定間隔でデータが送信されます。このため，ネットワーク上に不要なデータ転送が発生します。

転送キュー監視がタイマ方式の場合，送信側MCAに指定した転送キュー監視回数（TCP定義のmqtalccha定義コマンドの-v tim4cntオペランド指定値）が1のとき，ハートビートメッセージは送信されません。

受信側MCAでは一定時間（ハートビート間隔×2），ハートビートメッセージ，メッセージ転送，またはその他プロトコルメッセージの受信を待ちます。この時間を超えると通信状態が異常であると判断し，TCP/IPコネクションを解放します。特に，転送キュー監視がタイマ方式の場合，送信側MCAに指定する転送キュー監視間隔（TCP定義のmqtalccha定義コマンドの-v tim4オペランド指定値）に，相手MCAとチャネル開始時にネゴシエーションした結果（双方に指定されたハートビートタイマの大きい方の値）のハートビート間隔の2倍以上の値を設定すると，送信側がハートビートメッセージを送信する前に，受信側MCAが通信状態に異常があると判断してコネクションを解放します。このため，送信側MCAはTCP/IPコネクションにエラーを検出します。

2.6　マルチキャスト機能

マルチキャスト機能とは，配布リストを使用することによって，アプリケーションからの1回のMQPUTまたはMQPUT1命令で複数のあて先にメッセージを送信する機能です。

マルチキャスト機能は，チャネル定義のバッファ方式にメッセージ方式を指定（TCP定義のmqtalccha定義コマンドの-g buftypeオペランドにmsgを指定）した場合だけ有効です。バッファ方式がセグメント方式になっているチャネルの転送キューに配布リスト付きのメッセージを登録した場合，TP1/Message Queueは，そのメッセージをデッドレターキューに登録します。

マルチキャスト機能の処理概要について，次の図に示します。

図2-36　マルチキャスト機能の処理概要

マルチキャスト機能の処理の流れについて，次に示します。

チャネル確立時のネゴシエーションで，相手先システムが配布リストに対応しているかどうかを確認します。

送信側のMCAは，配布リスト付きのメッセージを転送キューから取り出した場合，次に示すとおり処理します。

相手先システムが配布リストに対応しているときは，受信側MCAに配布リスト付きのメッセージを送信します。

相手先システムが配布リストに対応していないときは，配布リスト付きのメッセージをデッドレターキューに登録します。

受信側のMCAは，配布リスト付きのメッセージを受信すると，配布リストに従ってあて先キューにメッセージを登録し，すべてのメッセージが登録されたことを確認します。
どこかのあて先で登録に失敗したメッセージがあった場合，受信側MCAはそのメッセージを配布リストなしでデッドレターキューに登録します。
デッドレターキューにも登録できない場合は，チャネルを終了します。この場合，メッセージは転送キューに残ります。

2.7　ファーストメッセージ機能

ファーストメッセージ機能は，MCAが非永続メッセージを高速に転送する機能です。この機能を持つチャネルをファーストチャネルといいます。また，このチャネルが転送する非永続メッセージをファーストメッセージ，永続メッセージを通常メッセージといいます。この機能を使用する場合，TCP定義のmqtalccha定義コマンドの-s npmspeedオペランドにfastを指定します。

この機能を使用すると，送信側MCAが非永続メッセージ（MQMD構造体にMQPER_NOT_PERSISTENTを指定）を転送キューから取り出すと，転送中のバッチとは関係なく送信します。受信側MCAでは受信したメッセージを，バッチの同期点外で登録します。ファーストメッセージはほかのメッセージと同様にバッチサイズとしてカウントされて相手システムに送信されますが，バッチには含まれず，バッチがコミットされなくても再送されることはありません。

この機能の利点は，受信側MCAが非永続性メッセージを登録するとすぐに，そのメッセージは受信アプリケーションによって取り出し可能になることです。このため，バッチの残りが送信されコミットされるのを待つ必要がありません。

しかし，送信中に通信障害やあて先キューへの登録に失敗しても再送されることはないため，メッセージの送達を保証する必要がある重要なメッセージの送信には使用できません。

また，受信側キューマネジャは，メッセージをセグメント分割してあて先キューに登録する機能を持っていますが，ファーストメッセージの場合はセグメント分割して登録できません。そのため，送信側のアプリケーションによってMQMD構造体のMsgFlagsフィールドにMQMF_SEGMENTATION_ALLOWEDが指定されたメッセージが登録された場合，受信側ではセグメント分割して登録できません。このときメッセージは消滅します。メッセージのセグメント分割については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。あわせて，MQMD構造体のMsgFlagsフィールドについて，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

ファーストメッセージの転送シーケンスの例について，次の図に示します。

図2-37　ファーストメッセージの転送シーケンスの例

非永続メッセージを含む5メッセージを転送キューに登録します。

非永続メッセージを取り出すと転送キューから削除され，相手システムに送信されます。

受信したメッセージをあて先キューに登録すると，すぐに有効化され取り出し可能になります。

残りのメッセージを受信してバッチを有効化します。

残りのメッセージが有効化によってコミット（削除）されます。

ファーストメッセージの障害処理については，「7.3　ファーストメッセージ障害」を参照してください。

2.8　キューマネジャクラスタの機能

TP1/Message QueueはWebSphere MQのキューマネジャクラスタにパーシャルリポジトリとして参加できます。

この節では，WebSphere MQで規定されるクラスタの概念と機能について説明します。

＜この節の構成＞

2.8.1　クラスタの概要

2.8.2　クラスタの使用によるシステム管理の軽減

2.8.3　クラスタのセットアップ

2.8.4　クラスタへの新しいキューマネジャの追加

2.8.5　クラスタの機能

2.8.6　ワークロード管理へのクラスタの使用

2.8.7　経路の選択

2.8.8　クラスタで使用する定義コマンド

2.8.9　クラスタ環境の通信構成

2.8.10　クラスタの管理

2.8.11　キューマネジャクラスタの準備

2.8.12　クラスタ運用時の注意事項

2.8.13　高度な作業

2.8.1　クラスタの概要

キューマネジャクラスタの概念について説明します。概念を説明するために，クラスタを使用する場合と分散キューイングの場合とを比較します。分散キューイングはクラスタを使用しない従来の手法です。

＜この項の構成＞

(1)　分散キューイングの概念

(2)　クラスタの概念

(3)　クラスタの長所

(4)　クラスタの考慮事項

(5)　まとめ

(1)　分散キューイングの概念

クラスタを使用しない場合，キューマネジャは相互に独立し，分散キューイングを使用して通信します。あるキューマネジャがほかのキューマネジャにメッセージを送信する場合，送信側キューマネジャには，次に示す定義が必要です。

転送キュー

リモートキューマネジャへのチャネル

メッセージを送信したい各キューのリモートキューのローカル定義

分散キューイングのシステム構成について，次の図に示します。

図2-38　分散キューイングのシステム構成

(2)　クラスタの概念

キューマネジャをクラスタにまとめた場合，キューマネジャは，自分が保持しているキューを，クラスタ内のすべての他キューマネジャに利用させることができます。すべてのキューマネジャは，明示的なチャネル定義，リモートキューのローカル定義，および各あて先の転送キューがなくても，同じクラスタのほかのキューマネジャにメッセージを送信できます。クラスタ内のすべてのキューマネジャは，クラスタのほかのキューマネジャにメッセージを転送できる一つのクラスタ転送キューを持っています。クラスタの各キューマネジャは，次について定義します。

メッセージを受信するための一つのクラスタレシーバチャネル

自分をクラスタに紹介し，情報を取得するための一つのクラスタセンダチャネル

クラスタ環境のシステムキュー

CLUSTERというクラスタのシステム構成について，次の図に示します。

図2-39　クラスタのシステム構成

このクラスタにはQM1，QM2，およびQM3という三つのキューマネジャがあります。

QM1とQM2は，クラスタ内のキューマネジャ情報のリポジトリを保持し，管理しています。これらは，フルリポジトリキューマネジャといいます（TP1/Message Queueはフルリポジトリキューマネジャとしての動作をサポートしていません）。
QM3は自キューマネジャ情報のほかにQM1とQM2から得た，他キューマネジャ情報を保持しています。QM3をパーシャルリポジトリキューマネジャといいます。

QM2とQM3は，クラスタに参加しているほかのキューマネジャがアクセスできる幾つかのキューを保持しています。これらをクラスタキューといいます。

分散キューイングの場合と同様に，アプリケーションはMQPUT命令を使用して，メッセージを任意のキューマネジャのクラスタキューに登録します。アプリケーションは，MQGET命令を使用して，ローカルキューマネジャのクラスタキューからメッセージを取り出します。

各キューマネジャには，メッセージを受信するためのTO.QMx（x：1～3）というチャネルの受信端の定義があります。これは，クラスタレシーバチャネルです。クラスタレシーバチャネルは，分散キューイングで使用されるレシーバチャネルのようなものですが，メッセージを転送する以外に，クラスタについての情報を通信することもできます。

また，各キューマネジャには，一つのフルリポジトリキューマネジャのクラスタレシーバチャネルに接続する，チャネルの送信端の定義もあります。これは，クラスタセンダチャネルです。QM1とQM3は，TO.QM2に接続しているクラスタセンダチャネルを持っています。QM2は，TO.QM1に接続しているクラスタセンダチャネルを持っています。クラスタセンダチャネルとは，分散キューイングで使用されるセンダチャネルのようなものですが，このチャネルは，メッセージを転送するほかに，クラスタについての情報を通信することもできます。
チャネルのクラスタレシーバ端とクラスタセンダ端の両方が定義されれば，チャネルは自動的に開始されます。

(3)　クラスタの長所

クラスタを使用すると，次に示す利点が得られます。

(a)　システム管理の軽減

クラスタを構築すると，システム管理が簡単になります。クラスタでキューマネジャのネットワークを構築すると，分散キューイングを使用してネットワークを構築する場合よりも，定義が少なくなります。定義が少なくなるので，ネットワークを迅速かつ簡単に設定および変更でき，定義で間違いをする危険も少なくなります。

(b)　可用性の向上と負荷分散

簡単なクラスタを構築するとシステム管理が容易になります。複雑なクラスタを構築する場合には，定義できるキューの数が増えて可用性が向上します。複数のキューマネジャで同じ名前のキューを定義できるので，負荷をクラスタ内のキューマネジャに分散できます。

(4)　クラスタの考慮事項

クラスタを最大限に活用するためには，ネットワークのすべてのキューマネジャが，クラスタをサポートしているプラットフォーム上にある必要があります。すべてのシステムが，クラスタをサポートしているプラットフォームに移植されるまで，クラスタの外のキューマネジャは，手作業で追加を定義してクラスタキューにアクセスすることがあります。

同じ名前の二つのクラスタがマージされた場合，それらを再度二つに分けることはできません。したがって，すべてのクラスタをユニークな名前にすることをお勧めします。

クラスタに参加するキューマネジャ名は，参加する各クラスタ内でユニークな名前にする必要があります。

キューマネジャにメッセージが到着したときに，そのキューマネジャにメッセージを受信するキューがない場合，分散キューイングと同様に，デッドレターキューに登録されます。デッドレターキューがない場合，送信処理は失敗し，mqtalccha定義コマンドの-b bretrymcpオペランドがyesのときチャネル確立再試行が発生します。

永続的メッセージの一貫性は保持されます。クラスタを使用した結果，メッセージが重複したり，喪失したりすることはありません。

クラスタを使用すれば，システム管理が軽減されます。クラスタは，分散キューイングを使用するよりも，多くのキューマネジャと大きなネットワークの接続を容易にします。しかし，分散キューイングの場合と同様に，クラスタのすべてのキューマネジャ間での通信を有効にしようとした場合，ネットワークリソースが過度に消費されることがあります。

配布リストは，一回のMQPUT命令で同じメッセージを複数のあて先に送信することを目的とします。配布リストはクラスタ環境でも使用できます。システム管理者にとっては，配布リストを使用する場合，複数のチャネルや転送キューを手作業で定義する必要がないという利点があります。しかし，リモートのクラスタキューへメッセージを登録する目的で配布リストを使用する場合は，あて先ごとにメッセージが処理されます。ネットワークトラフィックの観点では，分散キューイング環境と比べて，利点があまりありません。

負荷分散のためにクラスタを使用する場合，自分のアプリケーションを調査して，メッセージが特定のキューマネジャまたは特定のシーケンスで処理されることがアプリケーションで必要でないか調べる必要があります。そのようなアプリケーションは，メッセージ類似性を持つといいます。複雑なクラスタで使用する前に，アプリケーションの修正が必要になることもあります。

メッセージが特定のあて先に送信されるようにMQOPEN命令でMQOO_BIND_ON_OPENオプションを使用した場合，あて先のキューマネジャが利用できないとき，そのメッセージは転送されません。複製の危険があるので，ほかのキューマネジャに向けてメッセージの送信経路が設定されることはありません。

クラスタに参加するキューマネジャのクラスタセンダチャネルではmqtalccha定義コマンドの-oオプションに，フルリポジトリキューマネジャのホスト名またはIPアドレスを指定します。しかし，DHCPを使用する場合は，IPアドレスが変更される可能性があります。システムの再開始時にDHCPが新しいIPアドレスを割り当てることがあるからです。そのため，この場合はクラスタセンダチャネルのmqtalccha定義コマンドの-oオプションにIPアドレスを指定しないでください。すべてのクラスタセンダチャネルでIPアドレスではなくホスト名を指定しても十分な信頼性はありません。DHCPはホストのDNSディレクトリエントリを新しいアドレスで更新するとは限らないからです。

注

DNSディレクトリが最新状態に更新されるよう保証するソフトウェアをインストールしていない場合は，DHCPを使用するシステム上のキューマネジャをフルリポジトリに割り当てないでください。

メッセージの取り出しはローカルのクラスタキューだけから可能ですが，メッセージの登録はクラスタ内のすべてのキューへ可能です。MQGET命令を使用するためにキューをオープンする場合は，キューマネジャはローカルキューだけを使用します。

クラスタに新規に参加する場合，または再参加する場合，アプリケーションで使用するクラスタキューの情報がないことがあります。この状態で，クラスタキューへアクセスするアプリケーションを開始すると，MQOPEN命令でエラーが発生することがあります。そのため，自システムで使用するクラスタキューに対してMQOPEN命令を発行するだけのアプリケーションを作成し，事前にクラスタキューの情報を収集することをお勧めします。

(5)　まとめ

TP1/Message QueueはWebSphere MQのクラスタにパーシャルリポジトリとして参加できます。クラスタに参加する場合，システム管理者は，対応する送信チャネルとキューマネジャ上のリモートキューのローカル定義を作成する必要がなくなります。これらはキューマネジャによって自動的に作成されます。

クラスタに参加するすべてのキューマネジャは，自身および保持するキューについての情報をフルリポジトリキューマネジャに送信し，クラスタ内のほかのキューマネジャについての情報を受信します。

各キューマネジャにあるクラスタ転送キューは，情報をシステムメッセージとして送受信するときに使用されます。また，ユーザメッセージを送受信するときにも使用されます。

情報は，各キューマネジャのリポジトリに格納されます。また，クラスタ内のフルリポジトリキューマネジャでは，すべてのキューマネジャとキューについての情報をフルリポジトリとして管理します。

クラスタレシーバチャネルは，レシーバチャネルに似ています。クラスタレシーバチャネルの定義の実行時には，キューマネジャ上にオブジェクトが作成されるだけではなく，保持するチャネルとキューマネジャについての情報もリポジトリに格納されます。クラスタレシーバチャネルの定義は，クラスタに対するキューマネジャの初期通知動作です。いったん定義すると，ほかのキューマネジャは対応するクラスタセンダ端の定義を自動的に作成できます。

クラスタセンダチャネルはセンダチャネルに似ています。クラスタセンダチャネルはほかのクラスタキューマネジャと通信するときに，対応するクラスタレシーバチャネルの定義を参照して，自動的に作成されます。しかし，各キューマネジャには最初にクラスタに接続するための事前定義クラスタセンダチャネルが一つ必要です。

クラスタをサポートするキューマネジャが，クラスタの一部になる必要はありません。クラスタを使用する代わりに，分散キューイングの手法を使い続けることができます。

2.8.2　クラスタの使用によるシステム管理の軽減

クラスタを使用して自分の環境でのシステム管理を軽減する方法を説明します。ここでは，簡単なクラスタを設定する方法と利点について説明します。

＜この項の構成＞

(1)　クラスタの使用方法

(2)　システム管理上の利点

(3)　アプリケーションの見直し

(4)　クラスタの設定方法

(1)　クラスタの使用方法

クラスタにはキューマネジャがあり，通常，それらは論理的に関係を持ってデータやアプリケーションを共用します。例えば，自分の会社の各部門に一つのキューマネジャがあり，その部門に固有のデータやアプリケーションを管理していることがあります。すべてのキューマネジャが給与支払アプリケーションを使用できるように，これらのキューマネジャをすべて一つのクラスタにまとめることができます。または，チェーンストアの各支店に一つのキューマネジャを配置し，その支店の在庫などを管理できます。これらのキューマネジャをクラスタにまとめた場合，本社のキューマネジャに集中されているように販売アプリケーションや購買アプリケーションにアクセスできます。

クラスタが設定されれば，そのクラスタ内のキューマネジャは，チャネル定義やリモートキューのローカル定義なしで，相互に通信できます。

キューマネジャの既存のネットワークはクラスタに変換できます。また，新しいネットワークを構築しようとしている場合には，迅速にクラスタを構築できます。

(2)　システム管理上の利点

クラスタを使用すると，ネットワークの管理が簡単になります。次の図は，それぞれ二つのキューを持っている四つのキューマネジャです。はじめに，分散キューイングでこれらのキューマネジャを接続するのに定義が幾つ必要か検討します。そのあと，同じネットワークをクラスタとして設定するのに定義が幾つ必要か検討します。

図2-40　二つのキューを持っている四つのキューマネジャ

(a)　分散キューイングでネットワークを設定する定義

分散キューイングを使用してネットワークを設定するために必要な定義を次の表に示します。

表2-13　分散キューイングでの定義

説明 | キューマネジャ単位での定義数 | 定義総数
ほかのキューマネジャにメッセージを送信するチャネルのセンダチャネル定義 | 3 | 12
ほかのキューマネジャからメッセージを受信するチャネルのレシーバチャネル定義 | 3 | 12
ほかのキューマネジャへの転送キューの定義 | 3 | 12
各ローカルキューの定義 | 2 | 8
キューマネジャがメッセージを登録するためのリモートキューのローカル定義 | 6 | 24

(b)　クラスタでネットワークを設定する定義

クラスタを使用する場合，次に示すとおり定義します。

各キューマネジャに一つのクラスタセンダチャネル定義とクラスタレシーバチャネル定義

別個に定義される転送キューはなし

リモートキューのローカル定義はなし

したがって，クラスタを使用してネットワークを設定するためには，次の表に示す定義が必要です。

表2-14　クラスタでの定義

説明 | キューマネジャ単位での定義数 | 定義総数
フルリポジトリキューマネジャにメッセージを送信するチャネルのクラスタセンダチャネル定義 | 1 | 4
クラスタ内のほかのキューマネジャからメッセージを受信するチャネルのクラスタレシーバチャネル定義 | 1 | 4
各ローカルキューの定義 | 2 | 8
クラスタ環境のシステムキューの定義※ | 3 | 12

注※

詳細については，「2.8.11(6)　クラスタ環境のシステムキュー」を参照してください。

二つのフルリポジトリを持ったキューマネジャでこのクラスタを設定するためには，各キューマネジャで七つの定義（合計で28の定義）をユーザが定義する必要があります。また，クラスタのリポジトリキューマネジャにするために，WebSphere MQの二つのキューマネジャでキューマネジャ定義の変更が必要です。

クラスタセンダチャネル定義とクラスタレシーバチャネル定義は一つだけ作成します。クラスタがそろったら，ほかのキューマネジャを妨げることなく，（フルリポジトリキューマネジャ以外の）キューマネジャを追加したり，取り除いたりできます。

これによって，多数のキューマネジャによるネットワークの設定に必要な定義の数が少なくなります。定義が少なくなるので，次に示すとおりエラーのリスクも減少します。

オブジェクト名（例えば，センダとレシーバのペアでのチャネル名）の不一致がありません。

チャネル定義で指定されている転送キュー名が転送キューの定義と一致しているかどうか，リモートキューのローカル定義で指定されている転送キュー名と一致しているかどうか，考慮する必要はありません。

リモートキューのローカル定義（MQAサービス定義のmqaremque定義コマンドの-rオプション）がリモートキューマネジャの間違ったキューを指すことはありません。

さらに，クラスタが設定されれば，ほかのキューマネジャでシステム管理作業をしなくても，クラスタ内でクラスタキューをあるキューマネジャから別のキューマネジャに移動できます。チャネル定義，リモートキューのローカル定義，または転送キューの定義の削除や修正漏れはありません。既存のネットワークに影響を与えないで，新しいキューマネジャをクラスタに追加できます。

(3)　アプリケーションの見直し

簡単なクラスタを設定する場合には，自分のアプリケーションを修正する必要はありません。アプリケーションでは，通常どおりにMQOPEN命令でターゲットキューを指定し，キューマネジャの位置を意識する必要はありません。

しかし，クラスタ内に同じ名称のクラスタキューが複数存在する場合には，自分のアプリケーションを見直し，必要に応じて修正してください。

詳細については，「2.8.6　ワークロード管理へのクラスタの使用」を参照してください。

(4)　クラスタの設定方法

複数のキューマネジャから成るクラスタを構築すると決定したら，どのキューマネジャにクラスタのフルリポジトリを持たせるかを検討する必要があります。そこで，任意の数のキューマネジャを選択できますが，二つに設定することをお勧めします。

小さなクラスタの場合，キューマネジャは二つしかありません。しかし，TP1/Message Queueはフルリポジトリをサポートしていないため，フルリポジトリをサポートしたWebSphere MQが必要になります。

二つのキューマネジャがあるクラスタについて，次の図に示します。

図2-41　二つのキューマネジャがある小さなクラスタ

このようなクラスタの設定方法については，「2.8.3　クラスタのセットアップ」を参照してください。

2.8.3　クラスタのセットアップ

ここでは，具体的な作業例を挙げてクラスタ構築およびクラスタの使用方法について説明します。

TP1/Message Queueの環境を構築する手順については，4章の「TP1/Message Queueの環境作成手順」を参照してください。また，フルリポジトリを設定する場合は，WebSphere MQのマニュアルを参照してください。

例では，キューマネジャにLONDONやNEWYORKなどの名前を付けます。

＜この項の構成＞

(1)　クラスタのセットアップ例の説明

(2)　作業を完了させるために必要な手順

(3)　作業で構築されるクラスタ

(4)　作業で構築したクラスタを使用する

(5)　既存のネットワークのクラスタへの変更

(1)　クラスタのセットアップ例の説明

作業で前提になる例について説明します。

チェーン店用の新しいネットワークをセットアップします。この店には，二つの支店（ロンドンとニューヨークに1店ずつ）があることとします。

各店のデータとアプリケーションは，別々のキューマネジャが動作するシステムが保持します。この二つのキューマネジャをそれぞれ，LONDONとNEWYORKとします。次に示す製品で構築します。
キューマネジャ（LONDON）：WebSphere MQで構築
キューマネジャ（NEWYORK）：TP1/Message Queueで構築

キューマネジャ（NEWYORK）に接続されたニューヨークのシステム上では，在庫管理アプリケーションを実行します。このアプリケーションは，INVENTQキュー（NEWYORKが保持する）上の着信メッセージによって動作します。

二つのキューマネジャ（LONDONとNEWYORK）は，INVENTORYというクラスタにリンクされるため，両者ともメッセージをINVENTQキューに登録できます。

(2)　作業を完了させるために必要な手順

このクラスタのセットアップは，次に示す手順に従って作業します。

キューマネジャ（LONDON）をWebSphere MQで構築します。

キューマネジャ（NEWYORK）をTP1/Message Queueで構築します。
TP1/Message Queueの環境を構築する手順については，4章の「TP1/Message Queueの環境作成手順」を参照してください。

クラスタの編成およびその名前を定義します。
二つのキューマネジャ（LONDONとNEWYORK）へのリンクをクラスタ内に定義します。二つしかキューマネジャがリンクされていないクラスタでは，分散キューイングを使用するネットワークよりもそれほど有利ではありませんが，拡張の余地を残しておく点では，良い方法です。新しい支店を開店する場合には，クラスタに新しいキューマネジャを簡単に，かつ既存のネットワークに影響を与えないで追加できます。
この場合，実行中のアプリケーションは在庫管理アプリケーションになり，クラスタ名はINVENTORYになります。

フルリポジトリを保持するキューマネジャ（フルリポジトリキューマネジャ）を決定します。
どのクラスタでも，フルリポジトリを保持する最低一つ（望ましいのは二つ）のキューマネジャを指定します。
TP1/Message Queueはフルリポジトリをサポートしていないため，フルリポジトリをサポートしたWebSphere MQが必要です。この例では，キューマネジャ（LONDON）がフルリポジトリキューマネジャになります。

ポイント

以降の手順は，どの順序で実行してもかまいません。

クラスタレシーバチャネルを定義します。
クラスタ内の各キューマネジャ上で，参加するクラスタごとに，キューマネジャがメッセージを受信するためのクラスタレシーバチャネルを定義します。この定義によって，キューマネジャのネットワークアドレスが定義され，クラスタ内のほかのキューマネジャからメッセージを受信できることを通知する効果があります。
この定義は，クラスタ内のほかのキューマネジャに通知されます。コンピュータのネットワークアドレスは，ほかのキューマネジャが参照できるリポジトリ内に格納されます。
キューマネジャ（LONDON）での定義を次に示します。

DEFINE CHANNEL(TO.LONDON) CHLTYPE(CLUSRCVR) TRPTYPE(TCP)
CONNAME(192.168.0.1) CLUSTER(INVENTORY)

キューマネジャ（NEWYORK）での定義を次に示します。

mqtalccha -c TO.NEWYORK -y"type=clusrcvr" ¥
         -r ipaddr=192.168.0.2           ¥
         -a "cluster = INVENTORY"

詳細については，「2.8.9　クラスタ環境の通信構成」を参照してください。

クラスタセンダチャネルを定義します。
クラスタ内の各キューマネジャ上で，参加するクラスタごとに，クラスタセンダチャネルを一つ定義します。このクラスタセンダチャネルで，フルリポジトリキューマネジャの一つにメッセージを送信できます。この場合，フルリポジトリキューマネジャはLONDONです。パーシャルリポジトリキューマネジャはNEWYORKです。キューマネジャ（NEWYORK）には，キューマネジャ（LONDON）で定義されたクラスタレシーバチャネルを接続先とする事前定義クラスタセンダチャネル定義が必要です。事前定義クラスタセンダチャネル定義に指定するチャネル名は，対応するクラスタレシーバチャネル定義に指定された名前と一致していなければいけないので，注意が必要です。
キューマネジャに，同じクラスタ内のクラスタレシーバチャネルとクラスタセンダチャネルの両方の定義が設定されると，クラスタセンダチャネルが開始します。
キューマネジャ（NEWYORK）での定義を次に示します。

mqtalccha -c TO.LONDON -y"type=clussdr" ¥
         -o oipaddr=192.168.0.1        ¥
            oservname=listenerport     ¥
         -a "cluster = INVENTORY"

詳細については，「2.8.9　クラスタ環境の通信構成」を参照してください。

クラスタキューINVENTQを定義します。
INVENTQキューをキューマネジャ（NEWYORK）で定義します。このキュー定義はクラスタのほかのキューマネジャに通知されます。
キューマネジャ（NEWYORK）でのコマンド入力を次に示します。

mqamkque -c INVENTORY INVENTQ モデルキューの定義名 キュー属性定義ファイル名

MQAサービス定義に定義コマンドを追加します。
次に示す項目をMQAサービス定義に追加します。

クラスタセンダプロセスおよびクラスタレシーバプロセスに対応するmqamqtnam定義コマンド

システムキューに対応するmqaquegrp定義コマンド

これで，すべての定義が完了します。TP1/Message Queueを開始してください。

(3)　作業で構築されるクラスタ

この作業で構築されるクラスタについて，次の図に示します。

図2-42　二つのキューマネジャがあるINVENTORYクラスタ

これは，とても小さなクラスタです。しかし，将来に向けての拡張性があります。

(4)　作業で構築したクラスタを使用する

INVENTQキューはクラスタに通知されているため，リモートキューのローカル定義は不要です。NEWYORK上で動作するアプリケーションとLONDON上で動作するアプリケーションは，メッセージをINVENTQキューに登録できます。また，これらのアプリケーションは，キューにメッセージを登録する時に，応答キューを提供し，その名前を指定することによって，メッセージに対する応答を受信することもできます。

次に示す例では，LONDONがINVENTQにメッセージを登録し，キューLONDON_replyに応答を受信します。

LONDON上で次に示すとおり動作します。

LONDON_replyという名前のローカルキューを定義する。

MQOPEN命令のオプションにMQOO_OUTPUTを設定する。

MQOPEN命令を発行し，キューINVENTQを開く。

メッセージ記述子のReplyToQにLONDON_replyを指定する。

MQPUT命令を発行し，メッセージを登録する。

NEWYORK上で次に示すとおり動作します。

MQOPEN命令のオプションにMQOO_BROWSEを設定する。

MQOPEN命令を発行し，キューINVENTQを開く。

MQGET命令を発行し，INVENTQからメッセージを取り出す。

メッセージ記述子からReplyToQ名を取得する。

オブジェクト記述子のObjectNameにReplyToQ名を指定する。

オブジェクト記述子のObjectQMgrNameにキューマネジャ（LONDON）を指定する。

MQOPEN命令のオプションにMQOO_OUTPUTを設定する。

MQOPEN命令を発行し，キューマネジャ（LONDON）にあるLONDON_replyを開く。

MQPUT命令を発行し，メッセージをLONDON_replyに登録する。

LONDON上で次に示すとおり動作します。

MQOPEN命令のオプションにMQOO_BROWSEを設定する。

MQOPEN命令を発行し，キューLONDON_replyを開く。

MQGET命令を発行し，LONDON_replyからメッセージを取り出す。

注意

ローカルキューLONDON_replyの定義には，ClusterName属性は不要です。

(5)　既存のネットワークのクラスタへの変更

既存の分散キューイング環境を，このようなクラスタに変更した場合，「2.8.3(2)　作業を完了させるために必要な手順」の手順7では，既存のキューの定義を変更してください。また，LONDONで，INVENTQキューに対するリモートキューのローカル定義を必ず削除してください。

2.8.4　クラスタへの新しいキューマネジャの追加

ここでは，次に示す作業を実行する方法について説明します。

フルリポジトリを設定する場合は，WebSphere MQのマニュアルを参照してください。

＜この項の構成＞

(1)　クラスタへの新しいキューマネジャの追加例の説明

(2)　作業を完了させるために必要な手順

(3)　作業で構築されるクラスタ

(1)　クラスタへの新しいキューマネジャの追加例の説明

作業で前提になる例について説明します。

INVENTORYクラスタには二つのキューマネジャ，LONDONとNEWYORKが組み込まれていて，LONDONがフルリポジトリを保持しています。

チェーン店の新しい支店をパリに設定します。このクラスタに，PARISというキューマネジャを追加するとします。

キューマネジャ（PARIS）は，INVENTQキューにメッセージを登録することによって，在庫表の更新情報をニューヨークのシステムで動作するアプリケーションに送信します。

三つのシステムは互いに接続できます。

ネットワークプロトコルはTCPです。

(2)　作業を完了させるために必要な手順

次に示す手順に従って作業します。

キューマネジャ（PARIS）を準備します。
キューマネジャの準備については，「2.8.3(2)　作業を完了させるために必要な手順」を参照してください。

PARISが参照するフルリポジトリを決定します。
クラスタ内のすべてのキューマネジャは，クラスタについての情報を収集し，独自のパーシャルリポジトリを構築するために，フルリポジトリを参照する必要があります（クラスタ内に二つ以上のフルリポジトリがある場合は，どちらか一方のフルリポジトリを参照する必要があります）。
自キューマネジャで変更した情報は，直接フルリポジトリに送信されます（クラスタ内に二つ以上のフルリポジトリがある場合は，直接二つのフルリポジトリに送信されます）。
この例では，フルリポジトリはLONDONだけです。キューマネジャ（PARIS）からLONDONへの接続定義を作成します。

ポイント

以降の手順は，どの順序で実行してもかまいません。

キューマネジャ（PARIS）上で，クラスタレシーバチャネルを定義します。
クラスタ内の各キューマネジャ上で，参加するクラスタごとに，キューマネジャがメッセージを受信するためのクラスタレシーバチャネルを定義します。
キューマネジャ（PARIS）での定義を次に示します。

mqtalccha -c TO.PARIS -y"type=clusrcvr" ¥
         -r ipaddr=192.168.0.3         ¥
         -a "cluster = INVENTORY"

これによって，クラスタINVENTORY内のほかのキューマネジャからメッセージを受信できるという，キューマネジャの可用性が通知されます。
クラスタレシーバチャネルTO.PARISの受信端に送信するために，ほかのキューマネジャを定義する必要はありません。その定義は，必要に応じて自動的に実行されます。

キューマネジャ（PARIS）上で，クラスタセンダチャネルを定義します。
クラスタ内のすべてのキューマネジャでは，参加するクラスタごとに，事前定義クラスタセンダチャネルを一つ以上定義する必要があります。事前定義クラスタセンダチャネルを定義することによって，クラスタ制御用のシステムメッセージをフルリポジトリキューマネジャに送信できます。
PARISでは，TO.LONDONというチャネルの定義を，キューマネジャ（LONDON）に対し作成します。
キューマネジャ（PARIS）での定義を次に示します。

mqtalccha -c TO.LONDON -y"type=clussdr" ¥
         -o oipaddr=192.168.0.1        ¥
            oservname=listenerport     ¥
         -a "cluster = INVENTORY"

(3)　作業で構築されるクラスタ

この作業で構築されるクラスタについて，次の図に示します。

図2-43　三つのキューマネジャがあるINVENTORYクラスタ

二つの定義（クラスタレシーバチャネル定義およびクラスタセンダチャネル定義）を作成するだけで，キューマネジャ（PARIS）をクラスタに追加できました。

キューマネジャ（PARIS）は，LONDONにあるリポジトリから，クラスタキュー（INVENTQ）がキューマネジャ（NEWYORK）に存在することを知ります。PARISにあるアプリケーションがINVENTQにメッセージを登録するとき，PARISは自動的にクラスタセンダチャネルを作成し，クラスタレシーバチャネルTO.NEWYORKに接続します。キューマネジャ名がターゲットキューマネジャとして指定される場合，および応答キューが提供される場合は，アプリケーションは応答を受信できます。

2.8.5　クラスタの機能

クラスタについての詳細とその機能について説明します。内容は次に示すとおりです。

クラスタの構成要素

クラスタリングの動作

クラスタに関連する別名の使用とリモートキューのローカル定義

＜この項の構成＞

(1)　クラスタの構成要素

(2)　クラスタリングの動作

(3)　クラスタに関連する別名の使用とリモートキューのローカル定義

(1)　クラスタの構成要素

クラスタの構成要素がどのように連携して機能を果たすのか，クラスタの構成要素と機能について説明します。

クラスタの構成要素について，次の図に示します。

図2-44　クラスタの構成要素

(a)　キューマネジャとリポジトリ

すべてのクラスタには最低一つのフルリポジトリキューマネジャがあります。フルリポジトリキューマネジャはクラスタ内のキューマネジャ，キュー，およびチャネルについての全情報（フルリポジトリ）を保持しています。また，クラスタ内のほかのキューマネジャから情報更新の要求があった場合も，その要求はフルリポジトリキューマネジャが保持します。

フルリポジトリキューマネジャ以外のキューマネジャ（パーシャルリポジトリキューマネジャ）はそれぞれの部分情報（パーシャルリポジトリ）を保持します。パーシャルリポジトリにはキューおよび通信する必要のあるキューマネジャの部分集合についての情報があります。キューマネジャは別のキューまたはキューマネジャにアクセスする必要が発生すると，フルリポジトリキューマネジャに問い合わせてパーシャルリポジトリを構築し，それ以降そのキューまたはキューマネジャについて新しい情報を通知するよう要求します。

各キューマネジャはSYSTEM.CLUSTER.REPOSITORY.QUEUEというキューにあるメッセージにリポジトリ情報を格納します。キューマネジャはSYSTEM.CLUSTER.COMMAND.QUEUEというキューにあるメッセージでリポジトリ情報を交換します。

クラスタのメンバである各キューマネジャは，一つのフルリポジトリキューマネジャにあるクラスタレシーバチャネルに対応した，クラスタセンダチャネルを定義します。これで，キューマネジャは，クラスタ内のどのキューマネジャがフルリポジトリを保持するかを知ることになります。以降，キューマネジャは，どのリポジトリにでも情報を要求できます。キューマネジャが自分自身についての情報を送信する場合（例えば，新しいクラスタキューを作成した場合），この情報は事前定義クラスタセンダチャネルが接続するフルリポジトリキューマネジャのほかにもう一つのフルリポジトリキューマネジャがあれば，そこにも送信されます。

フルリポジトリキューマネジャが，リンクされているキューマネジャの一つから情報を受信すると，フルリポジトリは更新されます。新しい情報は，フルリポジトリキューマネジャがリポジトリを更新できない場合のリスクを減らすため，別のフルリポジトリキューマネジャにも送信されます。すべての情報が2回送信されます。情報の各項目には，複製を識別するためのシーケンス番号が付いています。同じシーケンス番号である場合，フルリポジトリキューマネジャは2回目に受信した情報を破棄します。同様に，二つのフルリポジトリキューマネジャがある場合にパーシャルリポジトリキューマネジャに同じ情報が通知されたとき，シーケンス番号が同じであればパーシャルリポジトリは情報を破棄します。このように，すべてのリポジトリはメッセージを交換することによって内容を整合させます。

(b)　クラスタキュー

クラスタキューを保持するキューマネジャは，自分のキューをクラスタに通知します。キューの作成時にmqamkqueコマンドの-cオプションに指定したクラスタに対しリポジトリ管理サーバの開始時に通知します。

キューがいったん通知されると，クラスタ内のどのキューマネジャもそのクラスタキューにメッセージを登録できます。メッセージをクラスタキューに登録するには，キューマネジャは該当するクラスタキューを保持するキューマネジャをフルリポジトリから見つける必要があります。それからメッセージに送信経路情報を付けて，クラスタ転送キューにそのメッセージを登録します。

(c)　クラスタ転送キュー

各クラスタキューマネジャはSYSTEM.CLUSTER.TRANSMIT.QUEUEというクラスタ転送キューを持っています。

クラスタの一部であるキューマネジャは，クラスタ転送キュー上のメッセージを同一クラスタ内のどのキューマネジャにも送信できます。

注意

アプリケーションでメッセージをクラスタ転送キューに直接登録しないでください。アプリケーションが名前の付いたキューにメッセージを登録すると，クラスタ転送キューに解決されます。

同様に，リモートキューのローカル定義に指定する転送キュー名に，クラスタ転送キューを指定しないでください。キューマネジャ定義に指定するデフォルトの転送キュー名に，クラスタ転送キューを指定しないでください。

キューマネジャは，クラスタの一部でない別のキューマネジャと通信することもできます。そのためにキューマネジャは，分散キューイング環境の場合と同様に，相手キューマネジャに対して転送キューとチャネルを定義する必要があります。

名称解決の間，クラスタ転送キューはデフォルトの転送キューに対して優先権を持ちます。クラスタの一部でないキューマネジャがリモートキューにメッセージを登録する場合，あて先キューマネジャに対応する転送キューがなければ，デフォルトアクションとしてデフォルトの転送キューが使用されます。クラスタの一部である送信側キューマネジャの場合，あて先キューマネジャと同名の転送キューがなければ，デフォルトアクションとしてSYSTEM.CLUSTER.TRANSMIT.QUEUEが使用されます（ただし，あて先キューがクラスタ内にない場合を除きます）。つまり，通常の名称解決では，キュー名がフルリポジトリを使って解決される場合にSYSTEM.CLUSTER.TRANSMIT.QUEUEが使用されます。

注意

クラスタ転送キューには，ユーザメッセージとともにシステム制御用のシステムメッセージが登録されます。ユーザメッセージを削除する場合は，システム制御用のシステムメッセージを削除しないように注意してください。

(d)　クラスタチャネル

クラスタ内では，クラスタレシーバチャネル定義とクラスタセンダチャネル定義という特殊なチャネルを使用して，キューマネジャ間でメッセージの送受信が行われます。

クラスタレシーバチャネル定義では，自キューマネジャがメッセージを受信できるチャネルを定義します。クラスタへの参加によって定義情報がフルリポジトリキューマネジャに保持されます。保持される主な内容は，連絡属性が「あり」の属性です。詳細については，「3.3.2(3)　チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）」を参照してください。これによって，ほかのキューマネジャは対応するクラスタセンダチャネル定義をそのキューマネジャに対して自動定義できます。ただし，最初は各キューマネジャでフルリポジトリキューマネジャ向けの事前定義クラスタセンダチャネルを手作業で定義する必要があります。この定義によってキューマネジャは，参加するクラスタに自システムの情報を送信できます。

(e)　リモートキューのローカル定義

クラスタでは，同じクラスタ内のリモートキューに対応する，リモートキューのローカル定義が自動的にキューマネジャに作成されます。そのため，リモートキューのローカル定義を手作業で作成する必要はありません。クラスタキューマネジャはフルリポジトリキューマネジャからリモートキューの格納場所についての情報を取得します。格納場所が分かったら，送信経路情報をメッセージに追加して，クラスタ転送キューにメッセージを登録します。

(f)　チャネルの自動定義

分散キューイングを使用する場合，キューマネジャがリモートのあて先へメッセージを送信するときに，センダチャネルの定義が必要です。

しかし，キューマネジャがクラスタセンダチャネル定義とクラスタレシーバチャネル定義を作成してクラスタに参加することによって，クラスタ内のほかのキューマネジャに対応するチャネル定義を作成する必要がなくなります。

クラスタセンダチャネル定義は必要に応じて自動的に作成されます。自動定義されたクラスタセンダチャネルは，受信側キューマネジャの持つクラスタレシーバチャネル定義に指定された属性を引き継ぎます。手作業で定義されたクラスタセンダチャネル（事前定義クラスタセンダチャネル）の場合もクラスタレシーバチャネル定義に指定された属性を引き継ぎ，対応するクラスタレシーバチャネル定義との一致が保たれます。また，メッセージ編集出口UOCを使用すると，クラスタセンダチャネルまたはクラスタレシーバチャネルの属性を変更できます。

注意

TP1/Message Queue独自の属性は引き継がれません。詳細については，「2.8.13(4)　クラスタチャネルの属性を変更」を参照してください。

クラスタ転送キューにメッセージが登録され，そのメッセージを送信するクラスタセンダチャネルが存在しない場合は，クラスタセンダチャネルが自動定義され開始されます。自動定義されたチャネルは，設定された値の切断条件になるまで「チャネル動作中」状態が保持されます。

クラスタチャネルの状態はmqtlschaコマンドによって確認できます。

(2)　クラスタリングの動作

クラスタセンダチャネルの定義には，キューマネジャをフルリポジトリキューマネジャに紹介する効果があります。フルリポジトリキューマネジャはそれによってフルリポジトリ内の情報を更新します。フルリポジトリキューマネジャはそのキューマネジャに対してクラスタセンダチャネルを作成し，クラスタについてのキューマネジャ情報を送信します。こうして，キューマネジャはクラスタについての情報が得られ，クラスタはキューマネジャについての情報が得られます。

クラスタのシステム構成については，「2.8.11(1)　リポジトリ管理の構成」を参照してください。キューマネジャQM1はQM2にあるキューへメッセージを送信するとします。QM2がQM1に対してクラスタセンダチャネルを定義し，自分自身を紹介しているので，QM1はQM2でどのようなキューが利用できるかがわかっています。QM1はQM2に対してクラスタセンダチャネルを定義しているので，そのチャネルを使用してメッセージを送信できます。

QM3は自分自身をQM2に紹介します。QM1もフルリポジトリを保持しているので，QM2はQM3についてのすべての情報をQM1に渡しています。したがって，QM1はQM3ではどのキューが利用できるか，およびQM3が定義したクラスタレシーバチャネルがどれであるかを認識します。QM1がQM3にあるキューへメッセージを送信したい場合には，QM3のクラスタレシーバチャネルと接続するクラスタセンダチャネルを自動的に作成します。

同一のクラスタおよび自動的に作成された二つのクラスタセンダチャネルについて，次の図に示します。これらは，クラスタレシーバチャネルTO.QM3へと合流する2本の破線によって表されています。また，QM1がメッセージ送信のために使用するクラスタ転送キューSYSTEM.CLUSTER.TRANSMIT.QUEUEもあります。クラスタ内のすべてのキューマネジャはクラスタ転送キューを持っていて，クラスタ転送キューから同一クラスタ内のどのキューマネジャに対してもメッセージを送信できます。

図2-45　自動定義のチャネルのあるキューマネジャのクラスタ

クラスタセンダチャネルの自動定義は，必要な時に自動的に定義されるので，クラスタの機能および効率にとってとても重要です。しかし，クラスタを機能させるために何を定義する必要があるかを示すため，この図では手作業で定義の対象になるチャネル（またはチャネルの受信側）だけを示します。

(3)　クラスタに関連する別名の使用とリモートキューのローカル定義

別名にはキューマネジャの別名，応答キューの別名，および別名キューがあります。これらは分散キューイング環境だけでなくクラスタ環境にも適用されます。ここでは別名がクラスタとの関連でどのように使用されるかを説明します。

(a)　キューマネジャの別名

キューマネジャの別名は，MQAサービス定義のmqaremque定義コマンドの-rオプションの指定値を省略する場合に，コマンド引数であるリモートキューのローカル定義で指定され，次に示す用途があります。

●メッセージ送信時のキューマネジャの再マッピング

MQOPEN命令で指定したキューマネジャ名を別のキューマネジャに再マッピングするようキューマネジャの別名を使用できます。これは，クラスタキューマネジャでも可能です。例えば，キューマネジャは次に示すキューマネジャの別名を指定できます。

mqaremque -m CLUSQM YORK

これによってCLUSQMというキューマネジャに対する別名として使用できるキューマネジャ名としてYORKが定義されます。この定義をしたキューマネジャ上のアプリケーションがキューマネジャYORKに対してメッセージを送信すると，ローカルキューマネジャはそれをCLUSQMという名称に解決します。ローカルキューマネジャがCLUSQMという名称でない場合には，メッセージをクラスタ転送キューに登録し（そのあとCLUSQMへ転送される），転送ヘッダをYORKではなくCLUSQMに変更します。

注意

クラスタ内のすべてのキューマネジャがYORKという名前をCLUSQMに解決するのではありません。定義が適用されるのはその定義をしたキューマネジャ上だけです。別名をクラスタ全体に通知するには，リモートキューのローカル定義の-cオプションでClusterName属性を指定してください。YORKへ向かうはずだったほかのメッセージキューからのメッセージは，別名の定義を持つキューマネジャへ送信され，別名が解決されます。

●メッセージ送信時の転送キューの変更または指定

この別名を使用してクラスタを非クラスタシステムと結合できます。例えば，クラスタITALY内のキューマネジャがPALERMOというキューマネジャ（クラスタの外部にある）と通信できるようにするには，クラスタ内のキューマネジャのうちの一つがゲートウェイとして機能する必要があります。このキューマネジャで次に示すとおり定義します。

mqaremque -c ITALY -m PALERMO -x X ROME

これはキューマネジャの別名の定義であり，ROMEをキューマネジャとして定義し通知します。クラスタITALY内のどのキューマネジャからのメッセージもROMEの名前でPALERMOのあて先に到着します。オープンハンドルにキューマネジャ名としてROMEを設定してオープンされたキューに登録されたメッセージは，別名の定義元であるゲートウェイのキューマネジャに送信されます。メッセージがそこに届くと，転送キューXに登録され，通常の非クラスタチャネルによってキューマネジャPALERMOへ転送されます。

この例ではROMEという名前を選択していますが，これには特に意味がありません。リモートキューのローカル定義名と-mオプションの指定値は同じでもかまいません。

●メッセージ受信時のあて先の決定

メッセージを受信すると，キューマネジャは転送ヘッダを参照し，あて先のキューとキューマネジャの名前を調べます。参照したキューマネジャと同じ名前のキューマネジャの別名の定義を持つ場合には，転送ヘッダ内のキューマネジャ名を対応するリモートキューマネジャ名で置き換えます。

キューマネジャ別名をこのように使用するには次に示す二つの理由があります。

メッセージを別のキューマネジャへ向けて送信するため

キューマネジャ名をローカルキューマネジャと同じ名前に変えるため

●クラスタへのゲートウェイとしてのキューマネジャの使用

クラスタ外から送信されたメッセージに対する処理を負荷分散できます。

キューEDINBURGHがクラスタ内の一つ以上のキューマネジャにあるとします。クラスタ外のキューマネジャには，転送キュー，およびクラスタ内のキューマネジャに対するセンダチャネルが必要です。このクラスタ内のキューマネジャをゲートウェイキューマネジャといいます。キューEDINBURGHをゲートウェイキューマネジャ以外に配置することによって，クラスタの負荷分散機能が有効になります。

詳細については，「(d)　クラスタ内での別名の使用例」の「●クラスタ外のキューマネジャによるキューへのメッセージ登録（別名使用）」を参照してください。

(b)　応答キューの別名

応答キューの別名の定義は，応答情報に代替名を指定する場合に使用します。応答キューの別名の定義は分散キューイング環境と同様にクラスタでも使用できます。例えば，次に示すような用途があります。

キューマネジャVENICEは，MQPUT命令を使用して，メッセージ記述子に次に示すとおり指定して，メッセージをキューマネジャPISAへ送信します。

ReplyToQ="QUEUE"
ReplyToQMgr=""

QUEUEに送信された応答がPISAにあるOTHERQで実際に受信されるようにVENICE上で応答キューの別名定義を作成します。

mqaremque -r OTHERQ -m PISA QUEUE

この定義によって応答キューの別名が作成されます。この別名は作成されたシステム上だけで有効です。

-mオプションの指定値がクラスタキューマネジャである場合でも，-mオプションとリモートキューのローカル定義名に同じ名前を指定してもかまいません。

(c)　別名キュー

別名キューの属性定義は，キューを識別する別名を作成するために使用します。例えば，アプリケーションを変更しないで別のキューを使用したい場合に使用します。または，メッセージが登録されるキューの本当の名前を何らかの理由でアプリケーションに知らせたくない場合や，キューの定義に使用されるものと異なる命名規則がある場合にも使用します。

キューマネジャ上の別名キューの属性定義を作成します。例えば，次に示す定義コマンドによって，PUBLICというキューがクラスタC内のキューマネジャに対して通知されます。

mqaalsque -c C PUBLIC LOCAL

PUBLICは実際はLOCALという名前のキューとして解決される別名です。PUBLICへ送信されたメッセージはLOCALという名前のキューへ送信されます。

別名キューの属性定義を使用してクラスタキューとしてキュー名を解決することもできます。例えば，次に示す定義コマンドを使用すると，PUBLICという名前でクラスタ内の別のところで通知されているキューに対して，キューマネジャがPRIVATEという名前を使用してアクセスできます。

mqaalsque PRIVATE PUBLIC

この定義にはClusterName属性は含まれないので，作成したキューマネジャでだけ適用されます。

(d)　クラスタ内での別名の使用例

DEMOというクラスタの外にあるQM3というキューマネジャについて，次の図に示します。QM3はクラスタをサポートしないキューマネジャでもかまいません。QM3はQ3というキューを保持しています。

クラスタ内にはQM1とQM2という二つのキューマネジャがあります。QM2はQ2というクラスタキューを保持しています。

クラスタ外のキューマネジャと通信するにはクラスタ内の一つ以上のキューマネジャがゲートウェイとして機能する必要があります。この例ではゲートウェイはQM1です。

図2-46　クラスタ外のキューマネジャからの登録

●クラスタ外のキューマネジャによるキューへのメッセージ登録

クラスタ外のキューマネジャがクラスタ内のQM2にあるキューQ2にどのようにメッセージを登録するかを説明します。

クラスタ外のキューマネジャ（QM3）は，メッセージを登録したいクラスタ内の各キューに対してリモートキューのローカル定義を持つ必要があります。例えば，次に示すとおり定義します。

mqaremque -r Q2 -m QM2 -x QM1 Q2

この図のQM3上にこのリモートキューQ2が示されています。

QM3はクラスタの一部ではないので，分散キューイングの方法で通信する必要があります。そのため，QM3はQM1に対応するセンダチャネルと転送キューを持つことになります。QM1には対応するレシーバチャネルが必要です。ただし，この図ではチャネルと転送キューは明示的には示していません。

QM3にあるアプリケーションがメッセージをQ2に登録するためにMQPUT命令を発行する場合，リモートキューのローカル定義によってメッセージはゲートウェイキューマネジャQM1を通って送信されます。

●クラスタ外のキューマネジャへの応答

応答用の通信路を形成するため，ゲートウェイ（QM1）はクラスタ外のキューマネジャに対してキューマネジャの別名を通知します。QM1はクラスタ属性をキューマネジャの別名の定義に付けることによって，この別名をクラスタ全体に対して通知します（-rオプションが省略されていることに注意してください）。例えば，次に示すとおり定義します。

mqaremque -c DEMO -m QM3 -x X QM3

QM3はクラスタの一部ではないので，分散キューイングの方法で通信する必要があります。したがって，QM1はQM3に対してセンダチャネルと転送キューXを持つ必要があります。QM3には対応するレシーバチャネルが必要です。この図ではチャネルと転送キューは明示的には示していません。

QM2にあるアプリケーション（app2）がQM3にあるQ3へ応答を送信するためにMQPUT命令を発行すると，その応答はゲートウェイへ送信されます。ゲートウェイではキューマネジャの別名を使用して，あて先キューとキューマネジャの名前を決定します。

注意

クラスタ外のルートを二つ以上定義できます。

●クラスタ外のキューマネジャによるキューへのメッセージ登録（別名使用）

クラスタ外のキューマネジャからメッセージをキューに登録する別の方法があります。ゲートウェイキューマネジャ上で，例えば，ANY.CLUSTERというキューマネジャの別名を定義します。

mqaremque ANY.CLUSTER

これによって，キューマネジャANY.CLUSTERに対するどのような応答でも"null"とマッピングされます。つまり，クラスタ外のキューマネジャ内のリモートキューのローカル定義がキューマネジャ名ANY.CLUSTERを使用できるので，正確なキューマネジャ名を使用する必要がなくなります。したがって，クラスタ外のキューマネジャ上では，次に示す定義ができます。

mqaremque -r Q2 -m ANY.CLUSTER -x QM1 Q2

この定義によってメッセージは最初にQM1へ送信され，そこからクラスタキューQ2を保持するクラスタ内のキューマネジャへ転送されます。

●クラスタ外のキューマネジャへのメッセージ登録

クラスタ外へのメッセージの登録について次の図に示します。

図2-47　クラスタ外のキューマネジャへの登録

ここでQM2（クラスタ内）からメッセージをQM3にあるキューQ3（クラスタ外）に登録する方法について検討します。

ゲートウェイ（この例ではQM1）はリモートキューのローカル定義を持ち，リモートキュー（Q3）をクラスタに対して次に示すとおり通知します。

mqaremque -r Q3 -c DEMO -m QM3 Q3

QM1のゲートウェイは，クラスタ外にあるキューマネジャに対するセンダチャネルと転送キューも持っています。QM3には対応するレシーバチャネルがありますが，この図ではこれらを示していません。

メッセージをキューに登録するため，QM2にあるアプリケーションは対象キュー名（Q3）を指定し，さらに応答のあて先になるキューの名前（Q2）を指定してMQPUT命令を発行します。メッセージはQM1に送信され，QM1はリモートキューのローカル定義を使用してQM3にあるQ3にキューの名称を解決します。

注意

クラスタ外のルートを二つ以上定義できます。

●クラスタ外のキューマネジャからの応答

QM3がクラスタ内部のキューマネジャに応答を送信するためには，通信したいクラスタ内の各キューマネジャに対してキューマネジャの別名を持つ必要があります。このキューマネジャの別名はメッセージが経由するゲートウェイの名前，つまりゲートウェイキューマネジャへの転送キューの名前を指定する必要があります。この例では，QM3はQM2に対して次に示すようなキューマネジャの別名の定義が必要です。

mqaremque -m QM2 -x QM1 QM2

QM3もQM1に対するセンダチャネルと転送キューが必要であり，QM1には対応するレシーバチャネルが必要です。

QM3にあるアプリケーション（app3）はMQPUT命令を発行し，キュー名（Q2）とキューマネジャ名（QM2）を指定して応答をQM2に送信できます。

●クラスタからクラスタへのメッセージ登録

すべてのキューマネジャを一つの大きなグループにまとめる代わりに，複数の小さなクラスタを構築できます。各クラスタでは一つ以上のキューマネジャを橋渡し役として動作させます。この方法では，利用できるキューおよびキューマネジャをクラスタ間で制限できます。この構成をマルチクラスタといいます。

別名を使用してキューおよびキューマネジャの名称を変えることによって，名称の衝突を回避したり，ローカルの命名規則に合わせることができます。

クラスタ間の橋渡しとなるキューマネジャについて次の図に示します。

図2-48　クラスタ間の橋渡し

QM1から，別クラスタ（WINDSOR）に参加しているキューマネジャ（QM3）のクラスタキュー（Q3）へメッセージを登録する例を次に示します。

QM3ではQ3を次に示すとおり作成します。

mqamkque -c WINDSOR Q3 モデルキューの定義名

QM2は両方のクラスタに参加しており，両者の橋渡し役でもあります。QM2を介して認識させる必要があるキューごとに，QM2に別名キューの属性定義（mqaalsque定義コマンド）が必要です。この図の例では，QM2で次に示す定義が必要です。Q3の別名キュー名として，MYQ3を指定します。

mqaalsque -w not_fixed -c CORNISH MYQ3 Q3

この定義によってクラスタ（CORNISH）内のキューマネジャ（例えばQM1）で動作するアプリケーションは，MYQ3という名前で参照するキューにメッセージを登録できます。このメッセージはクラスタ（WINDSOR）内のキューマネジャ（QM3）のQ3に送信されます。

キューをオープンするときには，バインディングオプションにMQOO_BIND_NOT_FIXEDまたはMQOO_BIND_AS_Q_DEFを指定する必要があります。MQOO_BIND_ON_OPENを指定した場合，キューマネジャは別名キューの属性定義を橋渡し役のキューマネジャ（QM2）に解決し，QM2はメッセージを転送しないからです。

この図は，橋渡し役として動作するキューマネジャが一つある二つのクラスタです。二つ以上のキューマネジャを橋渡し役として設定することもできます。

QM2が動作するコンピュータでは，次に示すとおり定義します。

MQTサーバ名1の定義
mqttcpcs定義と複数の事前定義クラスタセンダチャネルを定義します。

mqttcpcs -p tcp …
mqtalccha -c チャネル名1 -y "type=clussdr" -a"cluster=CORNISH" …
mqtalced
mqtalccha -c チャネル名2 -y "type=clussdr" -a"cluster=WINDSOR" …
mqtalced

MQTサーバ名2の定義
mqttcpcr定義と一つの事前定義クラスタレシーバチャネルを定義します。

mqttcpcr -p tcp …
mqtalccha -c チャネル名3 -y "type=clusrcvr" -a"cluster=CORNISH" …
mqtalced

MQTサーバ名3の定義
mqttcpcr定義と一つの事前定義クラスタレシーバチャネルを定義します。

mqttcpcr -p tcp …
mqtalccha -c チャネル名4 -y "type=clusrcvr" -a"cluster=WINDSOR" …
mqtalced

MQAサービス定義
MQTサーバ名1，MQTサーバ名2，およびMQTサーバ名3を定義します。

mqamqtnam MQTサーバ名1 mqttcpcs 255
mqamqtnam MQTサーバ名2 mqttcpcr 100
mqamqtnam MQTサーバ名3 mqttcpcr 100

2.8.6　ワークロード管理へのクラスタの使用

複数の同名のクラスタキューをクラスタ内に設定することによって，システムの可用性を向上させ，メッセージの処理を負荷分散できます。ここでは，ワークロード管理を取り上げ，このようにクラスタを使用する意味を説明します。

＜この項の構成＞

(1)　複数キューマネジャにある同名クラスタキュー

(2)　負荷分散

(3)　プログラミングの検討事項

(4)　MQIとクラスタ

(5)　クラスタ機能のリターンコード

(1)　複数キューマネジャにある同名クラスタキュー

複数のキューマネジャが，それぞれ同じ名前のキューを保持するクラスタを構築できます。これによって，キューマネジャが相互にクローンであるようにクラスタを構成できます。つまり，キューマネジャは，同じアプリケーションを実行でき，同じ名前のキューを持つということです。

このようにクラスタを使用する場合の利点は，次に示すとおりです。

キューとアプリケーションの可用性の向上

メッセージのスループットの高速化

ネットワークへの負荷分散の均等化

特定のキューあてのメッセージは，その名前のキューを保持するキューマネジャのどれかによって処理されます。つまり，アプリケーションは，メッセージを送信する時にキューマネジャを明示的に指定する必要はありません。ワークロード管理アルゴリズムが，メッセージを処理するキューマネジャを決めます。

次の図は同名のキューQ3が複数あるクラスタを示しています。QM1のアプリケーションがQ3にメッセージを登録する場合，アプリケーションは，どのキューマネジャにあるQ3にメッセージが登録されるのか意識しません。しかし，QM2のアプリケーションまたはQM4のアプリケーションがメッセージをQ3に登録する場合には，ローカルキューが使用されることに注意してください。

MQOO_BIND_NOT_FIXEDオプションでクラスタ内のローカルキューがオープンされた場合，メッセージ転送中にキューが使用できなくなると，メッセージはほかのキューに転送されます。利用できるキューがない場合，メッセージはデッドレターキューに登録されます。クラスタ内のリモートキューや別名キューがメッセージの転送中に使用できなくなった場合，メッセージはデッドレターキューに登録されます。

図2-49　複数の同名キューがあるクラスタ

クラスタ転送キューにメッセージがあるが，送信経路の通信障害などによってあて先キューマネジャに送信できない場合，システムはメッセージの送信経路を再設定します。しかし，メッセージを喪失する危険を冒したり，複製を作成したりすることによってメッセージの一貫性に影響を与えることはありません。キューマネジャが失敗し，メッセージが不確定なままになっている場合，そのメッセージに対して送信経路が再設定されることはありません。

メッセージの送信経路が再設定される状態については，「2.8.7　経路の選択」を参照してください。

注意

複数の同名キューがあるクラスタを設定する前に，自分のメッセージが相互依存性を持っていないこと，例えば，特定の順番で処理される必要があるとか，同じキューマネジャによって処理される必要があるとかいう条件について確認することが重要です。

同じ名前のキューについては，モデルキューの属性定義を同一にしておくことをお勧めします。そうしないと，異なるMQINQ命令から異なる結果を得ることになります。

(2)　負荷分散

クラスタ内に複数の同名のクラスタキューがある場合，ワークロード管理アルゴリズムを使用して，メッセージのあて先になる最良のキューマネジャが決定されます。ワークロード管理アルゴリズムは，可能な場合，あて先としてローカルキューマネジャを選択します。ローカルキューマネジャに該当する名前のキューがない場合にアルゴリズムは，チャネルに割り振った優先度を含むチャネルの状態，およびキューマネジャやキューの利用可能性を基にして，どのあて先が適当か決定します。アルゴリズムはラウンドロビン方式で，最終的に適切なキューマネジャを選択します。

ローカルキューマネジャとリモートキューマネジャの両方，または一方に同名のクラスタキューがあり，そのクラスタキューに対してメッセージの登録を実行した時に解決されるキューについて，次の表に示します。

表2-15　メッセージ登録時に解決されるキュー

クラスタキューの有無 | メッセージ登録の有無
ローカルキューマネジャ | リモートキューマネジャ | ローカルキューマネジャ | リモートキューマネジャ
○ | × | ○ | ×
○ | ○ | ○ | ×
○※1 | ○ | × | ○
○ | ○※1 | ○ | ×
○※2 | ○ | 書き込みエラー※3
○※4 | ○ | 書き込みエラー※3
○※5 | ○ | × | ○
○※5 | ○※5 | 書き込みエラー，またはMQOPEN命令時にエラー※3，※6
○※7 | ○ | × | ○
○ | ○※7 | ○ | ×
× | ○ | × | ○
× | ○※2 | 書き込みエラー※3
× | ○※4 | 書き込みエラー※3
× | ○※5 | MQOPEN命令時にエラー※3

（凡例）

○：該当します。

×：該当しません。

注※1

MQOPEN命令発行後に作成されたキューです。

注※2

MQOPEN命令発行後に書き込み禁止になったキューです。

注※3

ローカルキューマネジャでMQIがエラーになります。リモートキューマネジャにメッセージは送信されません。

注※4

MQOPEN命令発行後に障害になったキューです。

注※5

MQOPEN命令発行前に書き込み禁止になったキューです。

注※6

MQOO_BIND_ON_OPEN指定時は書き込みエラーです。

MQOO_BIND_NOT_FIXED指定時はMQOPEN命令でエラーです。

注※7

MQOPEN命令発行前に書き込み禁止，MQOPEN命令発行後に書き込み可能になったキューです。

(3)　プログラミングの検討事項

アプリケーションは，MQOPEN命令を使用してクラスタキューをオープンし，MQPUT命令を使用してクラスタキューにメッセージを登録します。または，MQPUT1命令を使用して，まだオープンしていないクラスタキューに一つのメッセージを登録できます。

複数の同名のクラスタキューがないクラスタを設定する場合には，特にアプリケーションプログラミング上の検討事項はありません。しかし，クラスタのワークロード管理という利点を活用するには，アプリケーションの修正が必要なことがあります。同じ名前のキューが複数あるネットワークを構築する場合は，メッセージ類似性についてアプリケーションの見直しが必要です。

また，次に示す項目について注意してください。

メッセージを取り出したり，属性を設定する目的でアプリケーションからキューをオープンする場合は，MQOPEN命令はローカルキューだけに有効です。

メッセージを登録する目的でアプリケーションからキューをオープンする場合は，MQOPEN命令はすべての利用できるクラスタキューから対象を選択します。ローカルキューが優先的に選択されます。そのためアプリケーションがクラスタの機能を十分に利用できないことがあります。

(a)　メッセージ類似性についてのアプリケーションの見直し

同じキューの複数の定義を持ったクラスタを使用する前に，メッセージ類似性を持っていないか，つまり関連メッセージの交換要求がないか，自分のアプリケーションを調査する必要があります。クラスタでは，メッセージは，該当するキューを保持しているキューマネジャに転送されます。したがって，メッセージ類似性を持っているアプリケーションのロジックは無効になることがあります。

例えば，質疑応答の形での連続するメッセージフローに依存している二つのアプリケーションがあるとします。すべての質問を同じキューマネジャに送信し，すべての回答をほかのキューマネジャに送り返すことが重要です。また，ワークロード管理機能が，該当するキューを保持しているだけのキューマネジャにメッセージを送信しないことも重要です。

同様に，順番どおり取り出されるべきメッセージのバッチを送信するファイル転送アプリケーションやデータベース複製アプリケーションのように，メッセージが順番に処理されなければいけないアプリケーションがある場合もあります。

注意

セグメント化されたメッセージを使用しても，類似性の問題が発生することがあります。

(b)　メッセージ類似性の処置

メッセージ類似性を持っているアプリケーションがある場合，できるだけクラスタを使用する前に，その類似性を取り除く必要があります。

メッセージ類似性を取り除くと，アプリケーションの可用性が改善されます。メッセージ類似性を持っているアプリケーションがメッセージのバッチをキューマネジャに送信し，バッチの一部を受け取ったあとでそのキューマネジャが失敗した場合，送信元のキューマネジャは，さらにメッセージを送信する前に送信先のキューマネジャの回復を待たなければいけません。

また，メッセージ類似性を取り除くと，アプリケーションのスケーラビリティが改善されます。類似性を持っているメッセージのバッチによって，以後のメッセージを待っている間に，あて先のキューマネジャのリソースがロックすることがあります。このリソースが長期間ロックしたままであると，ほかのアプリケーションの業務を妨害することがあります。

さらに，メッセージ類似性によって，クラスタのワークロード管理機能は最良のキューマネジャを選択できなくなります。

類似性を取り除くには，次について検討します。

メッセージ内に状態情報（シーケンス番号，または先頭と最終を表すデータフラグなど）を設定すること

状態情報をどのキューマネジャも利用できる不揮発性のストレージ（データベースなど）で保守すること

メッセージ類似性を取り除くために自分のアプリケーションを修正するのが適当でない場合，ほかにも多数の解決策があります。例えば，次に示すことを実行できます。

MQOPEN命令で特定のあて先を指定する

各MQOPEN命令でリモートキューの名前とキューマネジャの名前を指定するのも，一つの解決策です。その場合，オブジェクトハンドルを使用してすべてのメッセージが同じキューマネジャに行くようにします。それが，ローカルキューマネジャのこともあります。

この方法には，次に示すような不都合があります。

ワークロード管理が実行されません。これによって，ワークロード管理の利点を活用できなくなります。

ターゲットキューマネジャがリモートであり，そこへの複数のチャネルがある場合，メッセージは別のルートを通ることがあり，メッセージの連続性が保たれません。

自分のキューマネジャがあて先キューマネジャと同じ名前を持った転送キューの定義を持っている場合，メッセージはクラスタ転送キューではなくその転送キューに登録されます。

ReplyToQMgrフィールドにキューマネジャ名を返す

最初の解決策の変形として，最初のメッセージをバッチで受信するキューマネジャが応答でその名前を返すようにするという方法もあります。メッセージ記述子のReplyToQMgrフィールドを使用して，これを実現します。送信側のキューマネジャは，このキューマネジャ名を取り出し，それを以後のすべてのメッセージで指定します。

前の方法と比べると，この方法は最初のメッセージを転送するために負荷分散が実行されるという利点があります。

しかし，この方法では，最初のキューマネジャは最初のメッセージに対する応答を待たなければいけなくて，以後のメッセージを送信する前にReplyToQMgrの情報を見つけて使用しなければいけないというデメリットがあります。前の方法と同様に，キューマネジャへのルートが複数ある場合，メッセージの連続性が保たれないことがあります。

MQOPEN命令でMQOO_BIND_ON_OPENオプションを使用する

自分のすべてのメッセージを同じあて先に登録するというのも解決策として考えられます。そのためには，MQOPEN命令でMQOO_BIND_ON_OPENを使用します。キューをオープンし，MQOO_BIND_ON_OPENを指定することによって，すべてのメッセージをこの同じキューに登録するようにします。MQOO_BIND_ON_OPENは，すべてのメッセージを同じキューマネジャに，または同じルートにバインドします。したがって，例えば，同じあて先に複数のルートがある場合，キューがオープンされるときにどれかのルートが選択されると，取得したオブジェクトハンドルを使用して同じキューに登録されたすべてのメッセージは同じルートを選択します。

MQOO_BIND_ON_OPENを指定することによって，すべてのメッセージが同じあて先に転送されるようにします。したがって，メッセージ類似性を持っているアプリケーションが壊されることはありません。あて先が利用できない場合，メッセージは，あて先が再度利用可能になるまで転送キューに残ります。

キューをオープンする時にキューマネジャ名がオブジェクト記述子で指定されている場合にも，MQOO_BIND_ON_OPENが適用されます。名前付きキューマネジャへのルートが複数存在することがあります（例えば，複数のネットワークパスがある，またはほかのキューマネジャが別名を定義している）。MQOO_BIND_ON_OPENを指定する場合，キューがオープンされる時にルートが選択されます。

注意

この方法をお勧めします。しかし，キューマネジャがクラスタキューの別名を通知しメッセージを中継する環境では使用できません。また，アプリケーションがメッセージグループごとに，同じキューマネジャの異なるキューを使用する場合にも使用できません。

MQOPEN命令でMQOO_BIND_ON_OPENを指定する代わりに，キューの定義を変更することによっても同じ効果を得られます。mqaqueatl定義コマンドで-wオプションにfixedを指定してMQOPEN命令でのMQOO_BINDオプションがMQOO_BIND_AS_Q_DEFにデフォルト設定されるようにします。

(4)　MQIとクラスタ

クラスタに関係する命令は次に示すとおりです。

MQOPEN命令

MQPUT命令とMQPUT1命令

MQINQ命令

MQSET命令

各命令のクラスタに関連するオプションについて説明します。あわせて，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

ここでは，一般的なプログラミングインタフェース情報を含んでいます。

(a)　MQOPEN命令

MQOPEN命令のオプションであるMQOO_BIND_ON_OPENオプションによって，クラスタ内に複数の同名のキューがある場合に，ターゲットキューマネジャを固定するよう指定できます。つまり，MQOPEN命令から返されるオブジェクトハンドルを指定するキューに登録されるすべてのメッセージは，同じキューマネジャに向けられることになります。

類似性を持ったメッセージがある場合に，このオプションを使用できます。例えば，メッセージのバッチをすべて同じキューマネジャによって処理する必要がある場合，キューをオープンする時にMQOO_BIND_ON_OPENを指定します。これによって，キューマネジャを固定し，そのキューに登録されたすべてのメッセージがそのルートを採用するようになります。

必ずしもすべてのメッセージを同じあて先に登録したくない場合，MQOPEN命令でMQOO_BIND_NOT_FIXEDを指定します。これによって，MQPUT命令発行時にあて先が選択されます。つまり，あて先はメッセージごとに選択されます。

注意

MQOO_BIND_NOT_FIXEDとMQMF_SEGMENTATION_ALLOWEDを同時に指定しないでください。指定した場合，メッセージのセグメントが異なるキューマネジャに転送されることがあります。

MQOO_BIND_ON_OPENもMQOO_BIND_NOT_FIXEDも指定しない場合，デフォルトオプションはMQOO_BIND_AS_Q_DEFです。MQOO_BIND_AS_Q_DEFを使用すると，キューハンドルに使用するバインドは，DefBind属性から取得されます。

MQOPEN命令のオブジェクト記述子で名前を指定することによっても，あて先キューマネジャを選択できます。このようにすれば，ローカルキューマネジャを含め，どのようなキューマネジャでも選択できます。

MQOPEN命令でMQOO_BROWSE，MQOO_INPUT_*，またはMQOO_SETの一つ以上を指定した場合，オープンが成功するためには，ローカルのクラスタキューである必要があります。MQOPEN命令でMQOO_OUTPUT，MQOO_BIND_*，またはMQOO_INQUIREの一つ以上を指定し，MQOO_BROWSE，MQOO_INPUT_*，またはMQOO_SET（常にローカルのクラスタキューが選択されるようにする）のどれも指定しなかった場合，オープンされるクラスタキューは次に示すどちらかです。

存在する場合，ローカルキューマネジャにあるクラスタキュー

ローカルキューマネジャにない場合，クラスタのどこかにあるクラスタキュー

●解決されたキューマネジャ名

キューマネジャ名がMQOPEN命令発行時に解決される場合，その解決された名前がアプリケーションに返されます。

(b)　MQPUT命令とMQPUT1命令

MQOO_BIND_NOT_FIXEDがMQOPEN命令で指定されている場合，以後のMQPUT命令は，ワークロード管理機能を起動して，メッセージを送信するキューマネジャを決定します。したがって，そこで指定されるあて先とルートはメッセージごとに選択されます。ネットワークの条件が変わった場合，メッセージが登録されたあとに，あて先とルートが変わることがあります。MQPUT1命令は，常にMQOO_BIND_NOT_FIXEDが有効であるかのように動作します。つまり，常にワークロード管理機能を起動します。

ワークロード管理機能がキューマネジャを選択した場合に，ローカルキューマネジャの登録オペレーションは完了します。ターゲットキューマネジャがローカルキューマネジャと同じクラスタのメンバである場合，ローカルキューマネジャは，メッセージをクラスタ転送キューに登録します。ターゲットキューマネジャがクラスタの外にあり，ローカルキューマネジャがターゲットキューマネジャと同じ名前の転送キューを持っている場合，メッセージはその転送キューに登録されます。

MQOO_BIND_ON_OPENがMQOPEN命令で指定されている場合，あて先とルートはすでに選択されているので，MQPUT命令は，ワークロード管理機能を起動する必要がありません。

(c)　MQINQ命令

キューを照会する前に，MQOPEN命令を使用して，MQOO_INQUIREを指定してキューをオープンする必要があります。

複数の同名のクラスタキューがあるクラスタを持っている場合，照会できる属性はクラスタキューがローカルにあるかどうか，キューがどのようにオープンされたのかによって異なります。

MQOPEN命令でMQOO_INQUIREを指定しているほかに，MQOO_BROWSE，MQOO_INPUT_*，またはMQOO_SETオプションのどれかも指定している場合に，オープンが成功するには，ローカルのクラスタキューが必要です。この場合，ローカルキューに有効なすべての属性を照会できます。

MQOPEN命令で，MQOO_INQUIREだけ，またはMQOO_INQUIREとMQOO_OUTPUTを指定している場合（しかし，常にローカルのクラスタキューが選択されるようにするMQOO_BROWSE，MQOO_INPUT_*，またはMQOO_SETのどれも指定していない），オープンされるクラスタキューは，次に示すどちらかです。

存在する場合には，ローカルキューマネジャにあるクラスタキュー

ローカルキューマネジャにない場合，クラスタのどこかにあるクラスタキュー

オープンされたキューがローカルキューでない場合，次に示す属性だけを照会できます。この場合，QType属性はMQQT_CLUSTERの値を持っています。

DefBind

DefPersistence

DefPriority

InhibitPut

QDesc

QName

QType

クラスタキューのDefBind属性を照会するには，MQIA_DEF_BINDセレクタのMQINQ命令を使用します。返される値は，MQBND_BIND_ON_OPENまたはMQBND_BIND_NOT_FIXEDのどちらかです。ローカルキューのClusterName属性を照会するには，MQCA_CLUSTER_NAMEでMQINQ命令を使用します。

注意

固定バインドにしないで（つまりMQOPEN命令でMQOO_BIND_NOT_FIXEDを指定する，またはキューのDefBind属性がMQBND_BIND_NOT_FIXEDの場合にMQOO_BIND_AS_Q_DEFを指定する），クラスタキューをオープンした場合，以後のMQINQ命令は，他キューマネジャのクラスタキューを照会することがあります。

(d)　MQSET命令

属性を設定するためにクラスタキューをオープンする場合（MQOO_SETオプションを指定），オープンが成功するためにはローカルのクラスタキューが必要です。したがって，MQSET命令を使用してはクラスタのどこかほかにあるキューの属性を設定できません。しかし，クラスタ属性で定義されている別名キューまたはリモートキューをオープンする場合には，ターゲットキューまたはリモートキューが解決されてクラスタキューになっても，MQSET命令を使用して別名キューまたはリモートキューの属性を設定できます。

(5)　クラスタ機能のリターンコード

クラスタを使用する場合に固有のリターンコードがあります。

MQRC_CLUSTER_PUT_INHIBITED（2268，X'000008DC'）

MQOO_OUTPUTおよびMQOO_BIND_ON_OPENオプションの有効なMQOPEN命令がクラスタキューに発行されたが，クラスタ内のキューが現在すべて登録禁止状態（InhibitPut属性がMQQA_PUT_INHIBITED）である場合に発生します。メッセージを受信するために利用できるキューがないために，MQOPEN命令は失敗します。

この理由コードは次に示す条件を満たす場合だけ発生します。

ローカルキューがありません（ローカルキューがある場合，ローカルキューが登録禁止であってもMQOPEN命令は成功します）。

MQOO_BIND_NOT_FIXEDオプションがMQOPEN命令に指定される場合，クラスタ内のすべてのキューが登録禁止であっても成功することがあります。しかし，以降のMQPUT命令は，発行時にすべてのキューが登録禁止のままであると失敗します。

MQRC_CLUSTER_RESOLUTION_ERROR（2189，X'0000088D'）

MQOPEN命令，MQPUT命令，またはMQPUT1命令が，クラスタキューへのオープンまたはメッセージ登録のために発行されたが，フルリポジトリキューマネジャからの応答がないためにキュー定義を正しく解決できない場合に発生します。

MQRC_CLUSTER_RESOURCE_ERROR（2269，X'000008DD'）

MQOPEN命令，MQPUT命令，またはMQPUT1命令が，クラスタキューに発行されたが，クラスタに必要なリソースを使用するのに失敗した場合に発生します。

MQRC_NO_DESTINATIONS_AVAILABLE（2270，X'000008DE'）

MQPUT命令，またはMQPUT1命令が，クラスタキューにメッセージを登録するために発行されたが，その時点でクラスタ内にキューがなくなっていると発生します。命令は失敗し，メッセージは送信されません。

この状況はキューをオープンするMQOPEN命令にMQOO_BIND_NOT_FIXEDオプションが指定される場合，またはメッセージを登録するのにMQPUT1命令が使用される場合に発生します。

2.8.7　経路の選択

クラスタ内の複数のキューマネジャに同じ名前のクラスタキューがある場合に，メッセージを登録すると，ワークロード管理がチャネルの状態などを考慮して，最適な経路を選択します。

名称解決によって，キューマネジャにメッセージが転送されたあと，次に示す状態が発生した場合は，該当するチャネルに割り当てられたメッセージの送信経路が再設定され，最適なチャネルでメッセージが送信されます。ただし，送達未確認状態のメッセージは経路選択の対象外になります。

クラスタセンダチャネルのチャネル状態が「チャネル確立リトライ中」または「チャネル使用不可」になった場合

自動定義クラスタセンダチャネルがクラスタレシーバの削除などによって削除された場合
自動定義クラスタセンダチャネルが削除される条件を次に示します。

対象のクラスタレシーバチャネルの情報の期限が切れた場合
対象のクラスタレシーバチャネルを持つキューマネジャが最後にフルリポジトリキューマネジャにチャネル情報を送信してから，チャネル情報が保管される期限を超えた場合です。

対象のクラスタレシーバチャネルが削除された場合

対象のチャネルを持つキューマネジャ名を指定したRESET CLUSTERコマンドが実行された場合

mqrremove -sコマンド，mqrrefresh -fコマンドまたはmqrrefresh -mコマンドを実行した場合
コマンド実行時に自動定義クラスタセンダチャネルが削除され，再度作成されます。

これらの状態ではチャネルに対する一部のコマンドの入力が抑止されることがあります。各コマンドの注意事項については，「6.　システムの運用」を参照してください。

クラスタセンダデーモンが使用できるMCA数（チャネル数）を超えたチャネルを使用しようとした場合（クラスタセンダデーモンのMQTデーモン構成定義（mqamqtnam定義コマンド）で指定するMCA数が，同一クラスタ内にある自システム以外のクラスタレシーバチャネルの総数よりも少ない場合）

チャネル状態が「チャネル使用不可」になった場合，および自動定義クラスタセンダチャネルが削除された場合はKFCA16350-IおよびKFCA16351-Iを出力し，その開始および終了の契機をログメッセージに出力します。しかし，チャネル状態が「チャネル確立リトライ中」になった場合は，リトライ処理が複数回実行され再設定処理も複数回実行されることからログメッセージを圧迫する可能性があり，ログメッセージを出力しません。また，クラスタセンダデーモンが使用できるMCA数（チャネル数）を超えたチャネルを使用しようとした場合もログメッセージを出力しないので注意してください。

2.8.8　クラスタで使用する定義コマンド

多くのコマンドには，クラスタの操作に特に関係する属性があります。これらの属性について，コマンドの種類に応じて次に示すグループに分けて説明します。

チャネル定義コマンド

キュー定義コマンド

コマンドでは，クラスタ名はClusterName属性を使用し，長さ48文字以下で指定します。参加できるクラスタは一つです。同一のキューマネジャ内で指定するクラスタ名は，すべて同じにする必要があります。

＜この項の構成＞

(1)　チャネル定義コマンド

(2)　キュー定義コマンド

(1)　チャネル定義コマンド

TCP定義のmqtalccha定義コマンドには，クラスタに適用できるパラメタと属性があります。クラスタに特別なチャネルタイプとしてclusrcvrとclussdrがあります。クラスタレシーバチャネルを定義するには，mqtalccha定義コマンドの-y typeオペランドにclusrcvrを指定します。クラスタレシーバチャネル定義に必要なそのほかの属性の多くは，レシーバチャネルまたはセンダチャネルの定義に適用されるものと同じです。クラスタセンダチャネルを定義するには，mqtalccha定義コマンドの-y typeオペランドにclussdrを指定し，さらに，センダチャネルの定義に使用するものと同じ各種の属性を指定します。

TCP定義のmqtalccha定義コマンドおよびmqttcpcr定義コマンドに指定する，クラスタに関連する属性は次に示すとおりです。

ClusterName（mqtalccha -a clusterオペランド指定値）

NetworkPriority（mqtalccha -p netprtyオペランド指定値）

OwnIPAddrまたはOwnHostName（mqtalccha -rオプション指定値）

OwnPortNumまたはOwnServName（mqttcpcr -rオプション指定値）

ClusterName属性は，クラスタセンダチャネルまたはクラスタレシーバチャネルを指定する場合だけ適用できます。NetworkPriority属性は，クラスタレシーバチャネルだけに適用できます。ClusterName属性は，チャネルに関連づけるクラスタの名前を指定するために使用します。NetworkPriority属性は，チャネルの優先順位を指定するために使用します。これは，ワークロード管理機能を補助するためのものです。あて先に達するのに複数のルートを選択できる場合，ワークロード管理機能は，優先順位が最も高いルートを選択します。

クラスタレシーバチャネルに指定するOwnIPAddr属性またはOwnHostName属性は，キューマネジャのネットワークアドレスを識別するためにクラスタ全体で使用されます。これらの値は，対応するクラスタセンダチャネルのPartnerIPAddr属性またはPartnerHostName属性に使用されるため，注意して指定してください。

クラスタレシーバプロセスに指定するOwnPortNum属性またはOwnServName属性は，キューマネジャのポート番号を識別するためにクラスタ全体で使用されます。これらの値は，対応するクラスタセンダチャネルのPartnerPortNum属性またはPartnerServName属性に使用されるため，注意して指定してください。

注意

OwnIPAddr属性またはOwnHostName属性，およびOwnPortNum属性またはOwnServName属性は，クラスタセンダチャネル側から認識できる値にしてください。不正な値が指定された場合，TCP/IP障害が発生し，チャネルを確立できません。

WebSphere MQではクラスタレシーバチャネル定義（DEFINE CHANNEL）のCONNAMEパラメタに指定するポート番号を省略できます。しかし，TP1/Message Queue側が対応できませんので，必ずCONNAMEパラメタにポート番号を指定してください。

これらの属性は，mqtdmpedコマンドで確認できます。

クラスタセンダチャネルまたはクラスタレシーバチャネルの状態を表示するためにmqtlschaコマンドを使用できます。このコマンドでは，手作業で作成された事前定義チャネルだけでなく，MQTサーバが認識するすべてのチャネルの状態を表示し，自動定義チャネルの状態も表示できます。しかし，リポジトリで管理するすべてのチャネルの状況が取得できるものではありません。

(2)　キュー定義コマンド

モデルキューの属性定義（MQAサービス定義のmqaqueatl定義コマンド），リモートキューのローカル定義（MQAサービス定義のmqaremque定義コマンド），および別名キューの属性定義（MQAサービス定義のmqaalsque定義コマンド）の各定義コマンドには，クラスタに関連する属性があります。

注意

MQAサービス定義のmqaqueatl定義コマンドの-uオプションで，transmissionを指定した場合，キューは転送用に使用されるので，クラスタに参加するキューは作成できません。

ClusterName属性は，キューが所属するクラスタの名前を指定するために使用します。

DefBind属性は，アプリケーションで，MQOPEN命令にMQOO_BIND_AS_Q_DEFが指定されている場合に，バインディングを使用することを指定するために使用します。この属性のデフォルトはfixedです。これは，キューをオープンする時にキューハンドルを同名のクラスタキューのうち，特定のキューにバインドすることを指定します。これの代わりに，not_fixedを使用して，キューハンドルを特定のキューにバインドしないよう指定することもできます。MQAサービス定義のmqaqueatl定義コマンドの-wオプションにfixedまたはnot_fixedを指定すると，キューはMQBND_BIND_ON_OPENまたはMQBND_BIND_NOT_FIXEDの属性で定義されます。クラスタ内のすべての同名クラスタキューについて，DefBind属性を同じ値に設定することをお勧めします。

これらの属性は，mqainqコマンドの出力にも適用されます。mqainqコマンドにはキューマネジャ名を指定できます。

2.8.9　クラスタ環境の通信構成

クラスタ機能を使用する場合，ユーザはMQTプロセス構成に応じてシステム定義を作成します。

クラスタ環境でのMQTプロセス構成について，次の図に示します。

図2-50　クラスタ環境でのMQTプロセス構成

クラスタセンダプロセス
クラスタセンダチャネルが動作するプロセスです。TP1/Message Queueシステム内に一つ必要です。
TCP定義のmqttcpcs定義コマンドで定義します。

注意

mqttcpcsuで始まるシステムサービス定義名またはmqttcpcsをプロトコル名称に指定する，mqamqtnam定義コマンドはMQAサービス定義に一つだけ指定してください。複数指定した場合，OpenTP1は開始できません。

クラスタセンダチャネル
フルリポジトリキューマネジャにクラスタのメンバである自システムの情報を送信します。また，他キューマネジャへ送信するメッセージの通信路になるチャネルです。
事前定義クラスタセンダチャネルは，ユーザが事前に定義します。参加するクラスタごとに一つ以上をチャネル定義に指定（TCP定義のmqtalccha定義コマンドの-y typeオペランドにclussdrを指定）します。この場合，-oオプションにはフルリポジトリキューマネジャについて設定してください。フルリポジトリがない場合，リポジトリ情報を取得できないため，クラスタに参加できません。参加するクラスタ内に複数のフルリポジトリキューマネジャがある場合は，最低一つの事前定義クラスタセンダチャネル定義があれば十分です（必要に応じて自動定義クラスタセンダチャネルをシステムが自動的に作成します）。どのフルリポジトリキューマネジャに接続してもかまいません。
事前定義クラスタセンダチャネルのチャネル属性は，通常は，接続先キューマネジャのクラスタレシーバで指定されたチャネル属性で変更されます。ただし，TP1/Message Queueのクラスタセンダチャネルに固有の情報は，クラスタレシーバチャネルから入手できないため，TCP定義のmqtalccha定義コマンドの指定値を使用します。リポジトリ情報としてTP1/Message Queueが保持している期間は，変更されたチャネル属性が有効です。
このほかに，自動定義クラスタセンダチャネルがあります。詳細については，「2.8.9(1)　クラスタセンダチャネルの自動定義」を参照してください。

クラスタレシーバプロセス
クラスタレシーバチャネルが動作するプロセスです。TP1/Message Queueシステム内に一つ以上定義できます。
mqttcpcr定義コマンドで定義します。

クラスタレシーバチャネル
フルリポジトリキューマネジャからクラスタにあるメンバの状態を受信します。また，他キューマネジャから受信するメッセージの通信路になるチャネルです。
クラスタレシーバは，クラスタレシーバプロセスごとに一つだけ事前に定義できます。
チャネル定義に指定（TCP定義のmqtalccha定義コマンドの-y typeオプションにclusrcvrを指定）します。
クラスタレシーバプロセスを複数動作させることによってクラスタレシーバチャネルを複数定義することもできます。クラスタレシーバチャネルはチャネルインスタンスという接続情報（メッセージシーケンス番号やチャネル状態）を複数保持できるため，一つのチャネル定義で複数のクラスタセンダチャネルからの確立要求を受け入れることができます。

クラスタセンダプロセスおよびクラスタレシーバプロセスは，開始時にリポジトリ管理サーバの開始を待ち合わせます。このため，リポジトリ管理サーバを開始しないかぎり，チャネルは動作できません。また，MQTのコマンドの多くは使用できません。該当するコマンドについては，6章の「TP1/Message Queueの運用コマンド」を参照してください。

オンライン中にリポジトリ管理サーバが終了すると，終了中には新しいクラスタセンダチャネルの開始はできません。リポジトリ管理サーバが再開始されると，クラスタセンダを開始します。

クラスタセンダプロセスが開始処理を完了したあとにリポジトリ管理サーバが終了した場合にも，チャネルの開始ができなくなったり，送信経路の再設定処理が完了しないことがあります。クラスタ構成でチャネルを動作させる場合は，リポジトリ管理サーバを必ず動作させてください。

＜この項の構成＞

(1)　クラスタセンダチャネルの自動定義

(2)　クラスタレシーバチャネルのマルチインスタンス

(3)　クラスタチャネルの属性変更

(4)　クラスタチャネルの削除

(1)　クラスタセンダチャネルの自動定義

一つのクラスタセンダプロセスで自動定義クラスタセンダチャネルは，MQAサービス定義のmqamqtnam定義コマンドでMCA数に指定した数まで自動的に定義されます。自動定義クラスタセンダチャネルのチャネル属性は，通常は接続先キューマネジャのクラスタレシーバチャネルで指定されたチャネル属性で動作します。ただし，TP1/Message Queueのクラスタセンダチャネルに固有の属性は，リポジトリ情報として管理されないため，次に示す属性値を使用します。

デフォルトチャネル定義（mqtalccha定義コマンド）で指定があればその値

指定がなければTP1/Message Queue独自の属性のデフォルト値

接続先キューマネジャのクラスタレシーバチャネルで指定されたチャネル属性で動作する属性，およびTP1/Message Queue独自の属性のデフォルト値については「3.3.2(3)　チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）」，および4章の「mqtalccha（チャネル定義）」を参照してください。

この値はメッセージ編集出口UOCによって変更できます。変更方法については，「2.8.9(3)　クラスタチャネルの属性変更」を参照してください。

クラスタセンダチャネルの自動定義の概要について，次の図に示します。

図2-51　クラスタセンダチャネルの自動定義の概要

アプリケーションがあて先キュー名を指定して，メッセージを登録します。

MQTサーバはメッセージの登録連絡を受けてチャネルを開始します。

接続するチャネルがメッセージの転送元キューマネジャにない場合，MQTサーバは転送先キューマネジャのクラスタレシーバチャネルのチャネル属性を問い合わせ，それを基に，クラスタセンダチャネルを自動作成して開始します。

メッセージ編集出口UOCが登録されている場合，MCAはチャネルを確立する前にUOCを呼び出します。メッセージ編集出口UOCは，自動作成されたクラスタセンダチャネルのチャネル属性を変更できます。

自動作成されたクラスタセンダチャネルは，クラスタ転送キューからメッセージを取り出します。

クラスタセンダチャネルはメッセージを転送します。

クラスタレシーバチャネルは，受信したメッセージをあて先キューに登録します。

(2)　クラスタレシーバチャネルのマルチインスタンス

同じクラスタ内のすべてのクラスタセンダチャネルからのメッセージ受信をクラスタレシーバチャネルが実行します。クラスタレシーバチャネルは，相手キューマネジャごとにチャネル接続情報を保持できます。この機能をクラスタレシーバチャネルのマルチインスタンス機能といいます。マルチインスタンス機能では，一つのクラスタレシーバチャネルのチャネル定義について，複数の接続情報（チャネルインスタンス）を保持します。

クラスタレシーバチャネルのチャネルインスタンスは，MQAサービス定義のmqamqtnam定義コマンドでMCA数に指定した数まで作成できます。

クラスタレシーバチャネルのチャネル属性はリポジトリ情報として相手キューマネジャに連絡され，相手キューマネジャのクラスタセンダチャネルのチャネル属性として使用されます。また，クラスタレシーバチャネルの属性値をチャネル開始時にメッセージ編集出口UOCによってチャネルインスタンス単位にユーザの任意の値に変更できます。

クラスタレシーバチャネルの属性変更方法については，「2.8.9(3)　クラスタチャネルの属性変更」を参照してください。

クラスタレシーバチャネルのマルチインスタンスの概要について，次の図に示します。

図2-52　クラスタレシーバチャネルのマルチインスタンスの概要

クラスタセンダチャネルが，クラスタレシーバプロセスのポート（mqttcpcr定義コマンド-rオプション指定値）へチャネルの開始要求を送信します。

チャネル接続情報を登録します。
相手キューマネジャ名に該当するインスタンスを検索し，すでに登録されている場合は該当するインスタンスのMCAを起動します。
インスタンス情報がない場合，新規にエントリを確保してMCAを起動します。

メッセージ編集出口UOCが登録されている場合，MCAはUOCを呼び出します。
メッセージ編集出口UOCは，クラスタレシーバチャネルの属性値を必要に応じて変更できます。
MCAはUOCによって更新されたチャネル属性でチャネルを確立します。

MCAは相手システムのクラスタセンダチャネルからメッセージを受信します。

MCAは，クラスタセンダチャネルから受信したメッセージを，あて先キューに登録します。

(3)　クラスタチャネルの属性変更

クラスタチャネルの属性値は，メッセージ編集出口UOCを使用することでユーザの任意の値に変更できます。メッセージ編集出口UOCで変更した属性値は，チャネルが確立している間で有効です。再接続する時に，値はリセットされUOCが変更する前の状態になります。このため，UOCで再度値を変更してください。

メッセージ編集出口UOCとその使用法については，「3.　ユーザオウンコーディング」を参照してください。

クラスタ環境では，相手クラスタレシーバに指定したチャネル属性をクラスタセンダチャネルが使用して動作します。このためTP1/Message Queue以外のMQシステムで設定したチャネル属性をTP1/Message Queueのクラスタセンダチャネルが使用し，チャネル属性のサポート範囲の違いによって不正な動作をすることがあります。

TP1/Message Queue以外のMQシステムで，クラスタレシーバチャネルのチャネル属性を設定する場合の注意事項について，次に示します。

クラスタレシーバチャネルのためのリスナ用ポート番号には1024～65535の値を使用してください。

MQシステムが動作するコンピュータのホスト名は英字で始まる英数字を使用してください。

他MQシステムのクラスタレシーバでサポートするチャネル属性の上限値や下限値がTP1/Message Queueのサポート範囲と一致しない場合，TP1/Message Queueで動作ができる限界値を使用して動作します。

(4)　クラスタチャネルの削除

特定のチャネルを使用するメッセージ送信が長期間にわたって発生しないで，キューマネジャ内でリポジトリ情報の要求が保持される期間を超えた場合，次に示すチャネルはTP1/Message Queueによって自動的に削除されます。

自動定義クラスタセンダチャネル

対応するクラスタレシーバチャネルのチャネルインスタンス

これらのチャネルの有無については，mqtlscha -n "*"コマンドを入力して確認できます。定義種別としてAUTOINSTまたはMULTINSTが出力されます。また相手システムのキューマネジャ名が出力されます。

例えば，あて先キューの名前を間違って指定したために不要なチャネルが作成された場合は，期間を超えてメッセージを送信しないことでチャネルを削除できます。リポジトリ情報の要求が保持される期間については，「2.8.10(2)(g)　リポジトリ情報の保持期間」を参照してください。

事前定義定義クラスタセンダチャネルを削除する場合は，クラスタからキューマネジャを削除する必要があります。詳細については，「2.8.13(2)　クラスタからキューマネジャを削除および再参加」を参照してください。

2.8.10　クラスタの管理

ここでは次に示すシステム管理者のための情報を提供します。

クラスタ設計の検討事項

クラスタ管理の検討事項

＜この項の構成＞

(1)　クラスタ設計の検討事項

(2)　クラスタ管理の検討事項

(1)　クラスタ設計の検討事項

新しいクラスタをどのように設計するか説明します。

(a)　フルリポジトリを保持するキューマネジャの選択

各クラスタで，フルリポジトリを保持するためには，少なくとも一つ，できれば二つ以上のフルリポジトリキューマネジャを選択する必要があります。クラスタは一つのフルリポジトリキューマネジャでも問題なく動作しますが，二つ使用すると可用性が向上します。その場合，フルリポジトリキューマネジャ間のクラスタセンダチャネルを定義することによって，相互接続します。

図2-53　一般的な2フルリポジトリキューマネジャのトポロジ

これは，一般的な2フルリポジトリキューマネジャのトポロジを表しています。モデルになるクラスタのシステム構成については，「2.8.1(2)　クラスタの概念」を参照してください。

最も重要な検討事項は，選択したフルリポジトリキューマネジャは信頼性が高くよく管理されていなければいけないということです。

また，キューマネジャのロケーションを検討し，中央の位置，またはクラスタのほかの多数のキューマネジャと同じシステムに位置するものを選択します。

さらに，キューマネジャがすでにほかのクラスタのためのフルリポジトリを持っているかどうか検討します。一度決定し，あるキューマネジャをクラスタのフルリポジトリとして設定するのに必要な定義を作成したら，同じキューマネジャを使い続けて，メンバであるほかのクラスタのフルリポジトリを保持することをお勧めします。

キューマネジャが自分自身についての情報を送信したり，ほかのキューマネジャについての情報を要求したりすると，その情報や要求は二つのフルリポジトリキューマネジャに送信されます。クラスタセンダチャネル定義上で指定されているフルリポジトリキューマネジャが，可能な場合要求を処理しますが，選択されたフルリポジトリキューマネジャが利用できない場合，ほかのフルリポジトリキューマネジャが使用されます。最初のフルリポジトリキューマネジャが再度利用可能になると，そのフルリポジトリキューマネジャは最新の変更された情報を収集し，遅れを取り戻します。

とても巨大なクラスタでは千単位のキューマネジャがあり，二つより多くのフルリポジトリキューマネジャが必要になります。その場合，例えば，次に示すようなトポロジにできます。

図2-54　フルリポジトリキューマネジャをハブアンドスポーク構成にした配置

図2-55　複雑なフルリポジトリキューマネジャのトポロジ

すべてのフルリポジトリキューマネジャが同時に使用不能になる場合，自キューマネジャはパーシャルリポジトリにある情報を使用して処理を続行します。新しい情報と更新要求は処理されません。フルリポジトリキューマネジャがネットワークに再接続するとき，すべてのリポジトリ（フルおよびパーシャル）を最新にするようメッセージが交換されることになります。

(b)　クラスタを構成

フルリポジトリを保持するための幾つかのキューマネジャを選択したら，どのキューマネジャをどのフルリポジトリとリンクするか決める必要があります。クラスタセンダチャネル定義は，クラスタのほかのフルリポジトリが見つかるフルリポジトリキューマネジャにリンクします。そのあと，キューマネジャは，メッセージを二つのフルリポジトリキューマネジャに送信します。この時，必ず最初にクラスタセンダチャネル定義を持っているフルリポジトリキューマネジャに送信します。どのフルリポジトリキューマネジャを選んだかは問題になりません。しかし，自分の構成のトポロジを検討する必要があります。また，キューマネジャの物理的，地理的位置も検討する必要があります。すべてのクラスタ情報は二つのフルリポジトリキューマネジャに送信されるので，2番目のクラスタセンダチャネル定義を作成したいような場合があります。多数のフルリポジトリが広範囲に広がるクラスタで，自分の情報がどのフルリポジトリキューマネジャに送信されるかコントロールするために定義します。

(c)　命名規則

新しいクラスタを設定する場合に，キューマネジャの命名規則を検討します。すべてのキューマネジャは，異なる名前を持つ必要があります。なお，似たような名前を付ければ，どのキューマネジャがグループになっているか覚えやすくなります。

また，すべてのクラスタレシーバチャネルは，ユニークな名前を持つように設定してください。この場合，キューマネジャ名の前にTOを付けるのも，一つの方法です（例えば，TO.QM1，TO.QM2など）。同じキューマネジャへの複数のチャネルを持っており，それぞれの優先度が異なり，異なるプロトコルを使用している場合にはTO.QM1.A1，TO.QM1.N3，およびTO.QM1.T4などの名前を使用して命名規則を拡張できます。

すべてのクラスタセンダチャネルは，対応のクラスタレシーバチャネルと同じ名前を持つことを覚えておいてください。

(d)　マルチクラスタ

複数のクラスタをまとめてマルチクラスタを構成できます。次に示す場合にマルチクラスタの作成を検討してください。

異なる組織が独自の管理を行えるようにする場合

独立したアプリケーションを別々に管理する場合

サービス階層を設定する場合

テスト用と設計用の環境を作成する場合

キューマネジャが複数のクラスタのメンバである場合，定義の数を減らすためにネームリストを利用できます。ただし，TP1/Message Queue 07-01ではネームリストをサポートしていません。そのため次に示す項目に注意してください。

クラスタセンダチャネル
各クラスタを管理するフルリポジトリキューマネジャに接続するために，フルリポジトリキューマネジャごとに事前定義クラスタセンダチャネル（mqtalccha定義コマンド）が必要です。

クラスタレシーバチャネル
各クラスタを管理するフルリポジトリキューマネジャに接続するために，フルリポジトリキューマネジャごとにクラスタレシーバプロセスとクラスタレシーバチャネルが必要です。

クラスタキュー
mqamkque -cオプションに指定したクラスタに参加していないキューマネジャからは，アクセスできません。

複数のクラスタがネットワークにある場合，それぞれに異なる名称を付ける必要があります。同じ名称の二つのクラスタをいったん合併した場合は，分離できません。クラスタ，およびチャネルに異なる名称を付け，mqrlsコマンドの出力を参照する時に容易に区別できるようにすることをお勧めします。正常動作をするためには，キューマネジャ名はクラスタ内でユニークである必要があります。

サービス階層の設定
ある大学で各スタッフと各学生にキューマネジャがあるとします。スタッフ間のメッセージは優先度が高く，広帯域のチャネルで転送されます。学生間のメッセージは狭くて遅いチャネルで転送されます。通常の分散キューイングでこのネットワークを設定することができます。TP1/Message Queueはあて先キュー名とキューマネジャ名を参照し，どのチャネルを使用するか検知します。
スタッフと学生を明確に分離するためには，次の図に示すとおりキューマネジャを二つのクラスタに分けることができます。TP1/Message QueueはStaffクラスタで定義されたチャネルだけを使用して，Staffクラスタのmeetingsキューへメッセージを転送します。StudentsクラスタのgossipキューへのメッセージはStudentsクラスタで定義されたチャネルを使用して転送します。こうして適切なサービス階層が設定されます。

図2-56　サービス階層

(e)　オブジェクト

クラスタを使用するには次に示すオブジェクトが必要です。

SYSTEM.CLUSTER.REPOSITORY.QUEUE

各キューマネジャは，SYSTEM.CLUSTER.REPOSITORY.QUEUEというローカルキューを持っています。このキューは，すべてのリポジトリ情報を保存するのに使用されます。

このキューのメッセージは削除しないでください。削除した場合，OpenTP1が異常終了することがあります。また，削除したことによって，以前のクラスタ参加情報が失われるため，再度クラスタに参加する必要があります。

SYSTEM.CLUSTER.COMMAND.QUEUE

クラスタの各キューマネジャは，SYSTEM.CLUSTER.COMMAND.QUEUEというローカルキューを持っています。このキューは，メッセージをフルリポジトリに転送するのに使用されます。キューマネジャはこのキューをあて先として使用して，自分についての新しい情報または変更された情報をフルリポジトリキューマネジャに送信したり，ほかのキューマネジャについての情報の要求を送信します。

また，要求した情報の応答，および取得済みの情報の変更された情報を受信するキューとして使用します。

SYSTEM.CLUSTER.TRANSMIT.QUEUE

各キューマネジャは，SYSTEM.CLUSTER.TRANSMIT.QUEUEというローカルキューを持っています。これは，クラスタ内のすべてのキューやキューマネジャへのすべてのメッセージに使用されるクラスタ転送キューです。

注意

SYSTEM.CLUSTER.TRANSMIT.QUEUEには，ユーザメッセージとともにシステム制御用のシステムメッセージが登録されます。ユーザメッセージを削除する必要がある際には，システムメッセージを削除しないように注意してください。

(2)　クラスタ管理の検討事項

システム管理者に関係する検討事項を説明します。

(a)　キューマネジャのリフレッシュ

キューマネジャが保持するクラスタについての情報をリフレッシュできます。ただし，通常の運用ではほとんど実行する必要がありません。リフレッシュするにはmqrrefreshコマンドを入力します。自システム以外のキューマネジャに関連するすべてのクラスタキューマネジャオブジェクトとすべてのクラスタキューオブジェクトを，パーシャルリポジトリから削除できます。また，このコマンドはクラスタ転送キューにメッセージがなく，フルリポジトリキューマネジャに接続されていない自動定義クラスタチャネルを削除します。

注意

通常，mqrrefreshコマンドを入力する必要はありません。mqrrefreshコマンドを入力するのは，フルリポジトリキューマネジャが保持するリポジトリ情報とTP1/Message Queueがパーシャルリポジトリで保持するリポジトリ情報とに不整合が発生した場合です。次に示す場合にコマンドを入力します。

リポジトリ情報の破棄
フルリポジトリキューマネジャと通信するリポジトリ情報が破棄された場合です。例えば，運用やアプリケーションの誤りによってSYSTEM.CLUSTER.COMMAND.QUEUEのメッセージを削除した場合や，SYSTEM.CLUSTER.COMMAND.QUEUEに登録すべき自キューマネジャあてのメッセージが，他キューマネジャのSYSTEM.CLUSTER.TRANSMIT.QUEUEから削除された場合です。

米国IBM社からの指示
米国IBM社によってREFRESH CLUSTERコマンドを入力することが指示された場合です。

クラスタレシーバチャネル名の重複解消
クラスタ内の複数のキューマネジャに，同じ名前のクラスタレシーバチャネルがある場合，意図しないキューマネジャにメッセージが転送されることがあります。この場合，クラスタレシーバチャネルの名前を重複しないように変更したあと，重複したクラスタレシーバチャネルを使用している他キューマネジャからmqrrefreshコマンドまたはREFRESH CLUSTERコマンドを入力する必要があります。

RESET CLUSTERコマンドの誤入力
誤ってRESET CLUSTER ACTION(FORCEREMOVE)コマンドを入力した場合です。

復元後のキューマネジャ再開始
キューファイルのバックアップを復元するなどして，キューマネジャを最後に終了した時点よりも前の状態で再度開始した場合です。

(b)　キューマネジャの脱退

キューマネジャをクラスタから脱退できます。ただし，通常の運用ではほとんど実行する必要がありません。

脱退するにはmqrremoveコマンドを入力します。自システムのクラスタレシーバチャネルについてフルリポジトリに削除依頼を送信します。

注意

通常，mqrremoveコマンドを入力する必要はありません。mqrremoveコマンドを入力するのは，使用されなくなるTP1/Message Queue環境を削除する場合や，フルリポジトリキューマネジャが保持するリポジトリ情報とTP1/Message Queueがパーシャルリポジトリで保持するリポジトリ情報に不整合が発生した場合です。次に示す場合にコマンドを入力します。

復元後のキューマネジャ再開始
キューファイルのバックアップを復元するなどして，キューマネジャを最後に終了した時点よりも前の状態で再度開始した場合です。

クラスタセンダチャネルの情報の消滅
システム時刻を戻したことなどによってクラスタセンダチャネルの情報が消滅し，リポジトリ情報をフルリポジトリに送信できない場合です。

SYSTEM.CLUSTER.TRANSMIT.QUEUEに障害が発生した場合

SYSTEM.CLUSTER.REPOSITORY.QUEUEに障害が発生した場合

SYSTEM.CLUSTER.COMMAND.QUEUEに障害が発生した場合

(c)　クラスタ転送キューの保守

クラスタ転送キューの可用性とパフォーマンスは，クラスタのパフォーマンスにとって重要です。満杯にならないようにする必要があります。また，mqasetコマンドを間違って発行して取り出し不可や登録不可にしないように注意してください。なお，クラスタ転送キューが格納されるキューファイルは，満杯にならないように注意してください。

(d)　キューマネジャ失敗時の処理

メッセージがバッチ転送によって特定のキューマネジャに送信されたがそのキューマネジャが利用不可になった場合，次に示すような対策ができます。

ファーストチャネルのファーストメッセージ（喪失されることがある）を除き，未転送のメッセージバッチは，送信したキューマネジャのクラスタ転送キューに戻されます。

戻されたメッセージバッチに問題がなく，メッセージが特定のキューマネジャとバインドされていない場合，メッセージ送信経路の再設定が行われ，適切な代替キューマネジャを選択し，メッセージを送信します。

すでにキューマネジャに転送されたり（送達未確認状態），問題があったり，適切な代替のキューマネジャが見つからないメッセージは，元のキューマネジャが再度利用可能になるまで待つ必要があります。

(e)　リポジトリへの登録失敗時の処理

クラスタ情報は，SYSTEM.CLUSTER.COMMAND.QUEUEというローカルキューを介してパーシャルリポジトリに反映されます。このキューが満杯の状態である場合，リポジトリ管理サーバは動作を停止しているので，クラスタ情報メッセージはデッドレターキューに転送されます。ログメッセージから発生がわかったら，デッドレターキューからメッセージを回復し，それを正しいあて先へと転送し直すアプリケーションを実行する必要があります。

リポジトリ情報はSYSTEM.CLUSTER.REPOSITORY.QUEUEというローカルキューに格納されています。このキューが満杯の状態である場合，クラスタ情報の追加と更新ができないでエラーログが出力されます。その場合，キューマネジャを停止し，キューの容量を拡大したあと，開始してください。

キューを再作成した場合は，以前のクラスタ参加情報は失われ，再度クラスタ参加を実行します。この場合，mqrsupとmqrsppの起動をする前に，フルリポジトリキューマネジャからRESET CLUSTERコマンドを実行して，自キューマネジャをクラスタから削除してください。

キューマネジャのリポジトリの共用メモリ不足が発生した場合（とてもまれな場合），共用メモリ確保エラーがログ出力されます。この場合，キューマネジャを停止し，使用共用メモリを拡大したあと，開始します。

(f)　クラスタキュー登録不可時の処理

クラスタキューが登録不可になると，この状況は，そのキューに関係している各キューマネジャのフルリポジトリに反映されます。ワークロード管理機能は，可能な場合メッセージを登録できるあて先に送信しようとします。登録できるあて先がなく，ローカルキューもない場合，MQOO_BIND_ON_OPENを指定したMQOPEN命令はリターンコードMQRC_CLUSTER_PUT_INHIBITEDをアプリケーションに返します。MQOO_BIND_NOT_FIXEDが指定されている場合，またはローカルキューがある場合，MQOPEN命令は成功しますが，以後のMQPUT命令はリターンコードMQRC_PUT_INHIBITEDで失敗します。

(g)　リポジトリ情報の保持期間

キューマネジャが，例えば，新しいキューの作成を通知するためフルリポジトリキューマネジャに，自分についての情報を送信すると，フルリポジトリキューマネジャおよびパーシャルリポジトリキューマネジャはその情報を30日間保管します。リポジトリの情報の期限が切れないように，キューマネジャは，27日後に自動的に自分についてのすべての情報を再送します。30日の有効期間の途中でパーシャルリポジトリから新しい情報を要求する場合，パーシャルリポジトリは有効期間の残数を確認します。有効期間が過ぎても，情報はリポジトリから即座には削除されません。60日の猶予期間で保管されます。猶予期間中に更新情報を受け取らなかった場合，情報は削除されます。有効期日にキューマネジャが一時的に使用不能になる可能性を考慮して猶予期間があります。キューマネジャが90日を超えてクラスタから切断された場合，キューマネジャはクラスタの一部ではなくなります。

リポジトリ情報の保持期間について次の図に示します。

図2-57　リポジトリ情報の保持期間

注※

90日以上経過したことでリポジトリ情報が削除され，パーシャルリポジトリキューマネジャはクラスタから除去されます。

OpenTP1開始時に，パーシャルリポジトリキューマネジャは参加した情報を保持しているため，開始時に参加メッセージを送信しないで，自マネジャ情報だけを送信します。そのため，mqrremoveコマンドによって脱退しないとクラスタに参加できません。

リポジトリ情報の有効期間が切れないように，キューマネジャは27日を経過したことを検出したときに，自動的に自分についてのすべての情報を，フルリポジトリに対応するクラスタセンダチャネルを使用して再送します。クラスタセンダチャネルで送信中は，チャネル状態は「チャネル動作中」になります。

なお，事前定義クラスタセンダチャネルやデフォルトチャネル定義のチャネルの確立方法（mqtalccha定義コマンド-iオプション指定値）にmanualを指定している場合，フルリポジトリに対するクラスタセンダチャネルが動作中でないとき自動的にはリポジトリ情報は再送されません。このためユーザがチャネルを動作させる必要があります。

最後のリポジトリ情報の送信から90日以上チャネルを確立しない場合（OpenTP1未開始など），リポジトリ情報は失われます。

TP1/Message Queueは次に示す契機に有効期間の確認を行い，有効期間が過ぎている場合は更新情報を送信します。

リポジトリ管理サーバ開始時

リポジトリ管理サーバ開始後の一定間隔

リポジトリ管理サーバ終了時

(h)　クラスタチャネル

クラスタを使用すればチャネルを定義する必要がなくなりますが，分散キューイングで使われているのと同じチャネル技術が，クラスタのキューマネジャ間の通信に使用されています。次に示すことを理解しておいてください。

チャネルの動作方法
「2.8.9　クラスタ環境の通信構成」を参照してください。

チャネルのステータスの見つけ方
6章の「mqtlscha（チャネルの状態表示）」を参照してください。

メッセージ編集出口の使い方
「3.　ユーザオウンコーディング」を参照してください。

(i)　WebSphere MQでSUSPEND QMGRコマンドを実行した場合

WebSphere MQのキューマネジャにSUSPEND QMGRコマンドを実行した場合，ワークロード管理機能は，該当するキューマネジャに対して，そこで処理する必要のあるメッセージだけを送信するようになります。その後，RESUME QMGRコマンドを実行すると，ワークロード管理機能は通常の動作に戻ります。

2.8.11　キューマネジャクラスタの準備

TP1/Message Queueでクラスタを使用する場合に必要な環境設定について説明します。

＜この項の構成＞

(1)　リポジトリ管理の構成

(2)　リポジトリ管理サーバの動作

(3)　リポジトリ管理サーバの作成

(4)　リポジトリ管理サーバの環境変数

(5)　リポジトリ管理サーバの開始方法

(6)　クラスタ環境のシステムキュー

(1)　リポジトリ管理の構成

リポジトリの管理をする部分をリポジトリ管理サーバ（MQR）といいます。リポジトリ管理サーバは，クラスタに参加するためのリポジトリ情報を管理します。

(2)　リポジトリ管理サーバの動作

パーシャルリポジトリを持つTP1/Message Queueのリポジトリ管理サーバは，クラスタキューマネジャおよびクラスタキューの場所についてのリポジトリ情報を，フルリポジトリキューマネジャの持つフルリポジトリとMQTサーバを介して交換します。

リポジトリ情報の交換について，次の図に示します。

図2-58　リポジトリ情報の交換

(3)　リポジトリ管理サーバの作成

リポジトリ管理サーバは，OpenTP1システムのユーザサーバです。

mqrmakeコマンドを実行して，実行形式プログラム（mqrsupおよびmqrspp）とリポジトリ管理サーバユーザサービス定義ファイル（mqrsupおよびmqrspp）を作成してください。ただし，同一名称のユーザサービス定義ファイルがある場合，mqrmakeコマンドはリポジトリ管理サーバユーザサービス定義ファイルを作成しません。

mqrmakeコマンド実行時には，次に示す定義ファイルが必要です。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

$DCCONFPATH/betranrc

作成したmqrsupおよびmqrsppは，次に示すディレクトリに配置されます。

$DCDIR/aplib：実行形式プログラム

$DCCONFPATH：リポジトリ管理サーバユーザサービス定義ファイル

また，MQAサービス定義のmqa_mqr_confオペランドにYを指定してください。

注意

mqrsup，mqrsppで設定できる値を次に示します。

mqrmakeコマンドで出力された定義ファイルのオペランド
この値は変更しないでください。

このマニュアルに記載されたオペランド
このマニュアルに従った値で設定してください。

1.および2.以外のオペランド
OpenTP1のユーザサービスデフォルト定義のデフォルト値で動作するように設定してください。

mqrsup，mqrsppのユーザサービス定義，またはユーザサービスデフォルト定義にtrnrmid定義コマンドを指定しないでください。指定した場合，mqrsup，mqrsppは起動時にKFCA00906-Eメッセージを出力して異常終了します。

(4)　リポジトリ管理サーバの環境変数

リポジトリ管理機能が使用する環境変数は，リポジトリ管理サーバユーザサービス定義ファイル（$DCCONFPATH/mqrsup）に定義してください。形式について，次に示します。

(a)　形式

〔putenv CLUSTSSTARTWAIT　リポジトリ管理サーバ起動待ち合わせ時間〕
〔putenv CHAINFWAIT　クラスタチャネル情報待ち時間〕
〔putenv DCMQA_TRACE_STATUS　Y｜N〕
〔putenv DCMQA_TRACE_PATH　MQRトレースファイルのパス〕
〔putenv DCMQA_TRACE_FILE_NUM　MQRトレースファイルの最大数〕
〔putenv DCMQA_TRACE_MAX_LEN　MQRトレースファイルの最大長〕
〔putenv SPPGRPNAME　mqrsppのサービスグループ名〕

(b)　オペランド

CLUSTSSTARTWAIT　リポジトリ管理サーバ起動待ち合わせ時間
　～＜符号なし整数＞((1～999999999))《180》（単位：秒）
mqrsup起動時にmqrspp起動待ち合わせをする時間を指定します。指定時間を過ぎてもmqrsppが起動されない場合，mqrsupはエラーになり起動できません。
KFCA31501-Eエラーメッセージが出力された場合はこの値を見直してください。

CHAINFWAIT　クラスタチャネル情報待ち時間
　～＜符号なし整数＞((1～999999999))《180000》（単位：ミリ秒）
mqrsup起動時にチャネル情報を取得するまでの待ち時間を指定します。指定時間を過ぎてもチャネル情報が取得できない場合，mqrsupはエラーになり起動できません。
KFCA31501-Eエラーメッセージが出力された場合はこの値を見直してください。この値はチャネル定義の監視間隔よりも大きい値を指定してください。

DCMQA_TRACE_STATUS　Y｜N
　～《Y》
リポジトリ管理サーバのMQRトレース情報を出力するかどうかを指定します。

DCMQA_TRACE_PATH　MQRトレースファイルのパス
　～＜パス名＞《$DCDIR/spool/》
MQRトレース情報を出力するMQRトレースファイルのパス名を指定します。

DCMQA_TRACE_FILE_NUM　MQRトレースファイルの最大数
　～＜符号なし整数＞((1～99))《3》
MQRトレースファイルの最大数を指定します。

DCMQA_TRACE_MAX_LEN　MQRトレースファイルの最大長
　～＜符号なし整数＞((10000～1000000))《1000000》（単位：バイト）
MQRトレースファイルの容量を指定します。

SPPGRPNAME　mqrsppのサービスグループ名
　～＜1～31文字の識別子＞《mqrspp》
mqrsppのサービスグループ名を指定します。この値を変更した場合は，リポジトリ管理サーバユーザサービス定義（$DCCONFPATH/mqrspp）のservice_groupオペランドに指定するサービスグループ名も同じ値に変更してください。

(c)　mqrsppのサービス定義に関する注意事項

message_buflenを次に示す計算式で算出し，ユーザサービスデフォルト定義（$DCCONFPATH/usrrc）の指定値，または省略値（4096）と比較して，message_buflenの値の方が大きい場合は，mqrsppサービス定義にmessage_buflenの値を指定してください。

512+96+（クラスタセンダチャネル※の最大バッチ数×8）　（単位：バイト）

注※

事前定義クラスタセンダチャネルおよび自動定義クラスタセンダチャネル。

message_store_buflenを次に示す計算式で算出し，ユーザサービスデフォルト定義（$DCCONFPATH/usrrc）での指定値，または省略値（4096）と比較して，message_store_buflenの値の方が大きい場合は，mqrsppサービス定義にmessage_store_buflenの値を指定してください。

512+96+（クラスタセンダチャネル※の最大バッチ数×8）×クラスタセンダチャネル※数　（単位：バイト）

注※

事前定義クラスタセンダチャネルおよび自動定義クラスタセンダチャネル。

(d)　mqrsppにparallel_countオペランドを指定する場合の注意事項

parallel_countオペランドで指定する値，およびこのオペランドについての注意事項を次に示します。

parallel_count　常駐プロセス数〔，最大プロセス数〕
　～〈符号なし整数〉((0～128))
このサービスグループ内のサービスを並行処理するプロセス数を指定します。mqrsppサービス定義のparallel_countオペランドの常駐プロセス数に0を指定しないでください。0を指定した場合は，mqrsup起動時にKFCA31501-Eのメッセージを出力してmqrsupが異常終了します。

(5)　リポジトリ管理サーバの開始方法

リポジトリ管理サーバは，OpenTP1システムのユーザサーバです。

ユーザサーバの開始方法については，マニュアル「OpenTP1 運用と操作」を参照してください。

(6)　クラスタ環境のシステムキュー

クラスタ環境でシステムが使用するメッセージキューには，ユーザが定義するものがあります。また，システムキューにはユーザが登録したメッセージ以外にキューマネジャが登録するメッセージも格納される場合があります。

クラスタ環境のシステムキューについて，次の表に示します。

表2-16　クラスタ環境のシステムキュー

システムキュー名 | 用途 | キュータイプ | 定義の作成者 | キューの最大メッセージ長 | キューの最大メッセージ数 | キュー共用性
SYSTEM.CLUSTER.TRANSMIT.QUEUE | メッセージの転送用 | ローカルキュー（クラスタ転送キュー） | ユーザ | 4088バイト※¹ | 最大※² | 共用
SYSTEM.CLUSTER.COMMAND.QUEUE | リポジトリ管理の受信用 | ローカルキュー | ユーザ | 4088バイト※³ | 最大※² | 共用
SYSTEM.CLUSTER.REPOSITORY.QUEUE | リポジトリ管理情報格納用 | ローカルキュー | ユーザ | 4088バイト以上 | 最大※² | 共用
SYSTEM.CLUSTER.REMOTE.QUEUE | クラスタ転送メッセージの登録用 | リモートキュー | キューマネジャ | － | － | －

（凡例）

－：該当しません。

注※1

ユーザの最大メッセージ長（転送メッセージなので転送ヘッダ長を考慮してください）と比較して，大きい方の値を指定してください。

注※2

MQAサービス定義のmqaqueatl定義コマンドの-dオプションで指定する最大メッセージ登録数を最大にしても，リソース（メモリおよびディスク）が増加することはないため最大を指定してください。

注※3

次に示す計算式の値と比較して，大きい方の値を指定してください。

32ビット版の場合：（A×8）＋44

64ビット版の場合：（A×16）＋56

A：事前定義クラスタセンダチャネルと自動定義クラスタセンダチャネル（リモートのクラスタレシーバチャネル）の最大バッチサイズ

システムキューで使用するリソースはメッセージを格納するキューファイルに依存するため，キューファイル作成時のmqainitコマンドのオプションには，次に示す値を指定することをお勧めします。

クラスタ環境のキューファイル作成時のオプションについて，次の表に示します。

表2-17　クラスタ環境のキューファイル作成時のオプション

キューファイル内のシステムキュー名
mqainitコマンドのオプション
-q キュー数
-m メッセージ数
-s メッセージ長
備考

SYSTEM.CLUSTER.TRANSMIT.QUEUE
-q 1
1キューファイルグループの1キューファイルが1キューを含む場合

-m 1024以上
次に示すどちらか大きい方の値を-mに設定してください。

同時に相手に送信するメッセージ総数

リフレッシュ実行時のメッセージ総数＝
（1＋自システムのクラスタレシーバ総数）×2
＋自システムのクラスタキュー総数×4
＋自システムを除くクラスタ全体のクラスタキュー総数×2
＋自システムを除くクラスタ全体のキューマネジャ数×2

-s 4088以上
ユーザメッセージの平均メッセージ長に合わせてください。
1レコードに入らない場合を考慮してMQAサービス定義のmqa_max_msg_recnumオペランドに1メッセージの最大レコード数を指定してください。

SYSTEM.CLUSTER.COMMAND.QUEUE
-q 1
1キューファイルグループの1キューファイルが1キューを含む場合

-m 500※
クラスタ内のキューマネジャ数，クラスタチャネル数，およびクラスタキューの数に比例して増やしてください。

-s 4088以上
－

SYSTEM.CLUSTER.REPOSITORY.QUEUE
-q 1
1キューファイルグループの1キューファイルが1キューを含む場合

-m 500※
クラスタ内のキューマネジャ数，クラスタチャネル数，およびクラスタキューの数に比例して増やしてください。

-s 4088以上
－

（凡例）

－：ありません。

注※

2＋A＋B＋C＋E＋（G×2）＋I＋J＋（3×I－2）×（D×2＋K＋F）＋3×I×H＋L

A：ローカルのクラスタチャネル数（90日以内に削除されたチャネル数を含みます）

B：ローカルのクラスタキュー数（90日以内に削除されたキュー数を含みます）

C：リモートのクラスタレシーバチャネル数（90日以内に削除されたチャネル数を含みます）

キューマネジャを再作成（リポジトリキューを再作成）した場合，再作成前のチャネル，キューマネジャ，およびキュー情報は再作成後の情報とは別に数えてください。

D：リモートのキューマネジャ数

E：リモートのクラスタキュー数（90日以内に削除されたキュー数を含みます）

F：クラスタキュー名の数（ローカルおよびリモートの両方にあるキューのうち，重複する名前は数えません）

G：参加するフルリポジトリ数（クラスタ内のフルリポジトリ数が1の場合は1，クラスタ内のフルリポジトリが2以上の場合は2）。複数のクラスタに参加する場合はクラスタごとに算出した総和。

H：SYSTEM.CLUSTER.REPOSITORY.QUEUEに登録されるエラーメッセージの数。次に示す場合に登録されます。

アプリケーションで，クラスタ内にないキューマネジャ名を指定して，MQOPEN命令を発行した場合

アプリケーションで，クラスタ内にないキュー名を，キューマネジャ名を指定しないでMQOPEN命令で指定した場合

事前定義クラスタセンダチャネルの接続先でクラスタ名称が異なる場合

I：参加するクラスタ数

J：クラスタ内のフルリポジトリ数（複数のクラスタに参加する場合は，クラスタごとに算出した総和になります）

K：90日以内に削除されたリモートキューマネジャの数

キューマネジャを再作成（リポジトリキューを再作成）した場合，再作成前のチャネル，キューマネジャ，およびキュー情報は再作成後の情報とは別に数えてください。

L：クラスタごとに計算式（A＋B＋1＋J＋D×2＋K＋F＋3×H）を算出し，そのうちの最大値

システムキューの運用時の注意事項について，次に示します。

システムキューはキューマネジャが使用して管理するキューであるため，ユーザまたはアプリケーションから障害回復以外の目的で使用しないでください。システムキューに対して運用コマンドやMQIで，オブジェクトの属性の設定，メッセージの登録，またはメッセージの取り出しなどを実行した場合，動作の保証はできません。

システムキューに障害が発生した場合，デッドレターキューをユーザが定義および作成しているときに限り，メッセージがデッドレターキューに登録されることがあります。障害の原因に対策したあと，デッドレターキューに登録されたメッセージをあて先キューに再登録してください。

2.8.12　クラスタ運用時の注意事項

クラスタを運用する上で注意する点を次に示します。

次に示す条件でリモートキューマネジャに存在するクラスタキューにMQOPENまたはMQPUT1命令を発行した場合，MQRC_CLUSTER_RESOLUTION_ERRORが返却されます。

mqrsupが1回も開始されていないとき

クラスタに参加できていないとき

mqrsupまたはmqrsppが開始されていないとき（ローカルキューマネジャにリモートキューマネジャの情報が存在しないとき）

次に示す条件でリモートキューマネジャに存在するクラスタキューにMQPUT命令を発行した場合，MQRC_NO_DESTINATIONS_AVAILABLEが返却されます。

MQOO_BIND_ON_OPEN指定のMQOPEN命令を発行後，MQPUT命令発行時にクラスタセンダチャネルが削除されているとき

MQOO_BIND_ON_OPEN指定のMQOPEN命令を発行後，MQPUT命令発行時にクラスタセンダチャネルの情報の期限が切れているとき

MQINQ命令でリモートキューマネジャに存在するクラスタキューを指定した場合，次にメッセージが登録されるクラスタキューの属性が照会されます。
ただし，クラスタキューが書き込み禁止になった場合は，次に示すMQOPEN命令のオプションによって動作が異なります。

MQOO_BIND_ON_OPEN
常にMQOPEN命令発行時に決定したクラスタキューの属性を照会します。

MQOO_BIND_NOT_FIXED
すべてのクラスタキューが書き込み禁止であった場合には，すべてのクラスタキューを書き込み許可にしたときに，次にメッセージが登録されるクラスタキューの属性を照会します。

クラスタ機能を使用するUAPの実行中にmqrsupを再度開始しないでください。
再度開始した場合，UAPのMQIがエラーリターンする場合があります。

OpenTP1開始後に1回でもリポジトリ管理サーバ（mqrsupおよびmqrspp）を開始させればクラスタチャネルの動作は可能となります。しかし，オンライン中にリポジトリ管理サーバを終了させた場合，クラスタ固有のメッセージの受信やメッセージ送信経路の再設定ができなくなります。オンライン中にリポジトリ管理サーバを終了しないでください。

mqrsppサービス定義のparallel_countの常駐プロセス数に0を指定しないでください。
0を指定した場合は，mqrsup開始時にKFCA31501-Eのメッセージを出力してmqrsupが異常終了します。

事前定義クラスタセンダチャネルの接続先がパーシャルリポジトリであり，接続後にフルリポジトリに変更する場合は，mqrsupを再度開始してください。

クラスタ参加後，キューマネジャ名を変更しないでください。
変更した場合，以前のクラスタ参加情報は失われ，再度クラスタ参加を実行します。

キューマネジャがクラスタに参加すると，「KFCA31509-I クラスタに参加しました」というメッセージが出力されます。このメッセージが出力されたあとに，mqtalccha定義コマンドの-aオプションでクラスタ名を変更する場合は，クラスタからの脱退および再参加が必要になります。クラスタからの脱退および再参加については，「2.8.13(2)　クラスタからキューマネジャを削除および再参加」を参照してください。

クラスタ環境のシステムキューのメッセージを削除しないでください。削除した場合，OpenTP1が異常終了することがあります。

次に示す条件でリモートキューマネジャに存在するクラスタキューにMQOPEN命令またはMQPUT1命令を発行する場合，MQI命令の内部でdc_rpc_call関数を使用します。

未知のクラスタキュー名を指定

未知のクラスタキューマネジャ名を指定

上記の条件に一致する場合は，mqrsppが開始済みであり，dc_rpc_call関数が発行できる環境である必要があります。

クラスタセンダチャネルをフルリポジトリに接続し，クラスタレシーバチャネルがフルリポジトリから接続されている場合にあて先不正などのエラーによってクラスタに参加できないときは，mqrsupを終了したあと再び開始することによって，再度クラスタへの参加を試みることができます。

システム時刻を変更した場合，自システムを再構築してください。また，参加していたクラスタの全フルリポジトリからRESET CLUSTERコマンドに自システムのキューマネジャ名を指定して実行してください。

2.8.13　高度な作業

クラスタについての高度な作業として次の内容について説明します。

キューマネジャからクラスタキューを削除

クラスタからキューマネジャを削除および再参加

クラスタキューの属性を変更

クラスタチャネルの属性を変更

＜この項の構成＞

(1)　キューマネジャからクラスタキューを削除

(2)　クラスタからキューマネジャを削除および再参加

(3)　クラスタキューの属性を変更

(4)　クラスタチャネルの属性を変更

(5)　クラスタ使用時の障害対策

(1)　キューマネジャからクラスタキューを削除

キューマネジャからクラスタキューを削除する方法を次に示します。

キューが空になるまでキューをモニタします。
mqainqコマンドを使用し，入力オープン数，出力オープン数，およびメッセージ登録数の三つの属性を監視します。
入力オープン数，出力オープン数，およびメッセージ登録数がすべてゼロの時，キューが空であることを確認できます。

チャネル状態を確認して，送達未確認メッセージがないことを確認します。
チャネルの送達未確認メッセージがないことを確認するには，mqtlschaコマンドで，クラスタセンダチャネルの状態を確認します。
それぞれのキューマネジャから，mqtlschaコマンドを実行します。

mqtlscha -n クラスタセンダチャネル名

送達未確認メッセージがある場合は，必ずそれを解決してから作業を進めてください。

クラスタキューを削除します。
削除するクラスタキューが存在するOpenTP1を正常終了して，mqadelqueコマンドでクラスタキューを削除します。

mqadelque 削除するクラスタキュー名 キューファイル名

(2)　クラスタからキューマネジャを削除および再参加

クラスタからキューマネジャを削除し，再参加する方法を次に示します。WebSphere MQからRESET CLUSTERコマンドを実行できる場合とできない場合に分けて説明します。

キューマネジャの削除および再参加の手順一覧を次の表に示します。必要な参照先を確認してください。

表2-18　キューマネジャの削除および再参加の手順一覧

手順
RESET CLUSTERコマンドを実行できる場合
RESET CLUSTERコマンドを実行できない場合

クラスタからの削除
（a）　RESET CLUSTERコマンドを実行できる場合の削除
（c）　RESET CLUSTERコマンドを実行できない場合の削除

クラスタへの再参加
（キューファイルを再作成するとき）
（b）　RESET CLUSTERコマンドを実行できる場合の再参加

キューファイルを再作成するとき

（d）　RESET CLUSTERコマンドを実行できない場合の再参加（オンライン）

キューファイルを再作成するとき

（e）　RESET CLUSTERコマンドを実行できない場合の再参加（オフライン）

キューファイルを再作成するとき

クラスタへの再参加
（キューファイルを再作成しないとき）
（b）　RESET CLUSTERコマンドを実行できる場合の再参加

キューファイルを再作成しないとき

（d）　RESET CLUSTERコマンドを実行できない場合の再参加（オンライン）

キューファイルを再作成しないとき

（e）　RESET CLUSTERコマンドを実行できない場合の再参加（オフライン）

キューファイルを再作成しないとき

(a)　RESET CLUSTERコマンドを実行できる場合の削除

WebSphere MQからRESET CLUSTERコマンドを実行できる場合に，クラスタからキューマネジャを削除する方法を次に示します。

クラスタを管理しているフルリポジトリからRESET CLUSTERコマンドに自システムのキューマネジャ名を指定して実行します。

クラスタから削除するOpenTP1を正常終了します。
手順1.，2.の順序は逆でもかまいません。

MQAサービス定義からクラスタに関係する定義を削除します。

マルチクラスタでない場合，またはマルチクラスタですべてのクラスタから削除する場合
mqa_mqr_confオペランド
クラスタに関係するmqamqtnam定義コマンド

マルチクラスタで一部のクラスタから削除する場合
該当するクラスタに属するクラスタレシーバチャネルが定義されたmqamqtnam定義コマンド
該当するクラスタに属するクラスタセンダチャネル定義

OpenTP1を正常開始します。
マルチクラスタで一部のクラスタから削除する場合に，クラスタセンダチャネル定義を削除しなかったときは，削除後の最初のリポジトリ管理サーバ開始時に削除情報がフルリポジトリに送信されます。
送信を確認するには，OpenTP1の開始後にクラスタセンダチャネルを終了させ，SYSTEM.CLUSTER.TRANSMIT.QUEUEに登録されたメッセージの情報をmqalsmsgコマンドで表示します。クラスタセンダチャネルの名前が相関識別子に設定されているメッセージがないことを確認してください。
該当するメッセージがある場合はクラスタセンダチャネルを開始し，SYSTEM.CLUSTER.TRANSMIT.QUEUEに存在しないようにしてください。

(b)　RESET CLUSTERコマンドを実行できる場合の再参加

WebSphere MQからRESET CLUSTERコマンドを実行した場合に，クラスタへキューマネジャを再参加させる方法を次に示します。

キューファイルを再作成するとき

OpenTP1を正常終了します。

MQAサービス定義からクラスタに関係する定義を設定します。

mqa_mqr_confオペランド

クラスタに関係するmqamqtnam定義コマンド

システムキュー（SYSTEM.CLUSTER.XXXX.QUEUE）が登録されているキューファイルを再作成後※，再度クラスタキューを作成します。
XXXX：英字

OpenTP1を正常開始します。

注※

システムキューの登録されているキューファイルがmqaquegrp定義コマンドによって，複数のキューファイルで定義されている場合，mqaquegrp定義コマンドで定義されているすべてのキューファイルを再作成してください

キューファイルを再作成しないとき

RESET CLUSTERコマンド実行後10秒以上経過してから，mqrrefreshコマンドを実行します。

(c)　RESET CLUSTERコマンドを実行できない場合の削除

WebSphere MQからRESET CLUSTERコマンドを実行できない場合に，クラスタからキューマネジャを削除する方法を次に示します。

アプリケーションを終了します。

mqtstpchaコマンドでクラスタレシーバチャネルを終了します。
キューマネジャを削除する，クラスタに関係するすべてのクラスタレシーバチャネルを終了します。

mqrremoveコマンドを実行します。
KFCA31526-IおよびKFCA31527-Iが出力されることを確認してください。KFCA31526-Iが出力されない場合，コマンドが異常終了しているおそれがあります。原因を取り除き，再度mqrremoveコマンドを実行してください。
KFCA31527-Iが出力されない場合，リポジトリ管理サーバが開始していることを確認してください。

SYSTEM.CLUSTER.TRANSMIT.QUEUEにメッセージが滞留していないことを確認します。

mqtstpchaコマンドでクラスタセンダチャネルを終了します。
KFCA16350-I，KFCA16351-IまたはKFCA16352-Wが出力されることを確認してください。
クラスタセンダチャネルは，mqtstpchaコマンドを入力すると，該当チャネルに割り当てられたメッセージを別のチャネルで送信するため，メッセージ送信経路の再設定処理を行います。再設定処理では，クラスタ転送キューに登録されているメッセージを再登録します。
KFCA16350-I，KFCA16351-IまたはKFCA16352-Wが出力されない場合は，mqtstpcha -fコマンドを入力してチャネルを強制解放してください。

チャネル状態を確認して，送達未確認メッセージがないことを確認します。
チャネルの送達未確認メッセージがないことを確認するには，mqtlschaコマンドで，クラスタセンダチャネルの状態を確認します。

mqtlscha -n クラスタセンダチャネル名

送達未確認メッセージがある場合は，必ずそれを解決してから作業を進めてください。

OpenTP1を正常終了します。

MQAサービス定義からクラスタに関係する定義を削除します。

マルチクラスタでない場合，またはマルチクラスタですべてのクラスタから削除する場合
mqa_mqr_confオペランド
クラスタに関係するmqamqtnam定義コマンド

マルチクラスタで一部のクラスタから削除する場合
該当するクラスタに属するクラスタレシーバチャネルが定義されたmqamqtnam定義コマンド
該当するクラスタに属するクラスタセンダチャネル定義

OpenTP1を正常開始します。
マルチクラスタで一部のクラスタから削除する場合に，クラスタセンダチャネル定義を削除しなかったときは，削除後の最初のリポジトリ管理サーバ開始時に削除情報がフルリポジトリに送信されます。
送信を確認するには，OpenTP1の開始後にクラスタセンダチャネルを終了させ，SYSTEM.CLUSTER.TRANSMIT.QUEUEに登録されたメッセージの情報をmqalsmsgコマンドで表示します。クラスタセンダチャネルの名前が相関識別子に設定されているメッセージがないことを確認してください。
該当するメッセージがある場合はクラスタセンダチャネルを開始し，SYSTEM.CLUSTER.TRANSMIT.QUEUEに存在しないようにしてください。

(d)　RESET CLUSTERコマンドを実行できない場合の再参加（オンライン）

クラスタへキューマネジャをオンラインで再参加させる方法を次に示します。「(c)　RESET CLUSTERコマンドを実行できない場合の削除」の手順6から再参加します。

キューファイルを再作成するとき

リポジトリ管理サーバ（mqrsup，mqrspp）を終了します。

システムキュー（SYSTEM.CLUSTER.XXXX.QUEUE）が登録されているキューファイルを切り離します。
XXXX：英字

システムキューを再作成※します。

キューファイルをオンラインに組み込みます。

キューファイルの閉塞を解除します。

リポジトリ管理サーバを開始します。

クラスタチャネルを開始します（mqtstachaコマンドを実行します）。

注※

システムキューの登録されているキューファイルがmqaquegrp定義コマンドによって，複数のキューファイルで定義されている場合，mqaquegrp定義コマンドで定義されているすべてのキューファイルを再作成してください。

キューファイルを再作成しないとき

mqrremoveコマンドに-sオプションを指定して実行します。
KFCA31526-IおよびKFCA31527-Iが出力されることを確認してください。
KFCA31526-Iが出力されない場合，コマンドが異常終了しているおそれがあります。原因を取り除き，再度mqrremoveコマンドを実行してください。
KFCA31527-Iが出力されない場合，リポジトリ管理サーバが開始されていることを確認してください。

クラスタチャネルを開始します（mqtstachaコマンドを実行します）。

注

「(c)　RESET CLUSTERコマンドを実行できない場合の削除」の手順8または手順9まで実行したあと再参加する場合は，MQAサービス定義にクラスタに関係する定義を追加し，OpenTP1の開始後-fオプションを指定したmqrrefreshコマンドを実行してください。

(e)　RESET CLUSTERコマンドを実行できない場合の再参加（オフライン）

クラスタへキューマネジャをオフラインで再参加させる方法を次に示します。

キューファイルを再作成するとき

OpenTP1を正常終了します。

MQAサービス定義からクラスタに関係する定義を設定します。

mqa_mqr_confオペランド

クラスタに関係するmqamqtnam定義コマンド

システムキュー（SYSTEM.CLUSTER.XXXX.QUEUE）が登録されているキューファイルを再作成後※，再度クラスタキューを作成します。
XXXX：英字

OpenTP1を正常開始します。

注※

システムキューの登録されているキューファイルがmqaquegrp定義コマンドによって，複数のキューファイルで定義されている場合，mqaquegrp定義コマンドで定義されているすべてのキューファイルを再作成してください。

キューファイルを再作成しないとき

OpenTP1を正常終了します。

MQAサービス定義からクラスタに関係する定義を設定します。

mqa_mqr_confオペランド

クラスタに関係するmqamqtnam定義コマンド

MQT定義結合ユティリティでMQT定義オブジェクトを再作成します。

OpenTP1を正常開始します。

(3)　クラスタキューの属性を変更

クラスタキューの属性を変更する方法を次に示します。

OpenTP1を正常終了します。

クラスタキューの属性を変更します。

OpenTP1を正常開始します。

この作業で次に示す点に注意してください。

必ず正常終了でOpenTP1を終了してください。

システムクラスタキューの属性は変更しないでください。

(4)　クラスタチャネルの属性を変更

クラスタチャネルの属性を変更する方法を次に示します。

(a)　クラスタセンダチャネルの属性の変更

クラスタセンダチャネルの属性を変更する場合，クラスタに参加済みであるかどうかによって変更できる属性が異なります。

クラスタに参加するまでの手順を次の図に示します。

図2-59　クラスタに参加するまでの手順

クラスタ参加前の属性変更

クラスタに参加して「KFCA31509-I　クラスタに参加しました」が出力される前に行った，事前定義クラスタセンダチャネルの全属性の変更は次回のOpenTP1開始時に反映されます。

OpenTP1を正常終了します。

事前定義クラスタセンダチャネルの属性を変更後，MQT定義オブジェクトファイルを再作成します。

OpenTP1を正常開始します。
事前定義クラスタセンダチャネルの属性がこの時点で反映されます。

クラスタ参加後の属性変更

クラスタ参加後の事前定義クラスタセンダチャネルおよび自動定義クラスタセンダチャネルは，接続先クラスタレシーバチャネルの属性で動作します。そのため，属性を変更する場合は接続先クラスタレシーバチャネルの属性を変更してください。ただし，TP1/Message Queue独自の属性については，事前定義クラスタセンダチャネルのクラスタセンダチャネル定義またはデフォルトチャネル定義を変更することで，次回のOpenTP1開始時に反映されます。

クラスタ参加後に変更可能な属性について次の表に示します。

表2-19　クラスタ参加後に変更が可能な属性

定義コマンド
オプション
オペランド
定義内容
備考

mqtalccha
（チャネル定義）
-j
なし
バッチサイズ
事前定義クラスタセンダチャネルの場合はmqtalccha定義コマンドの-jオプションで変更します。
自動定義クラスタセンダチャネルの場合はmqamqtnam定義コマンドで変更します。※1※2

-m
maxmsg
最大メッセージ長
事前定義クラスタセンダチャネルの場合はmqtalccha定義コマンドの-m maxmsgオペランドで変更します。
自動定義クラスタセンダチャネルの場合はバッファ方式がメッセージ方式のときだけmqttbuf定義コマンドの-g lengthオペランドで変更します。※2

maxseg
最大セグメントサイズ※2
TP1/Message Queue独自の属性です。
事前定義クラスタセンダチャネルの場合はmqtalccha定義コマンドの-m maxsegオペランドで変更します。
自動定義クラスタセンダチャネルの場合はバッファ方式がセグメント方式のときだけmqttbuf定義コマンドの-g lengthオペランドで変更します。※2

-g
sndbuf
送信バッファグループ番号
TP1/Message Queue独自の属性です。

buftype
バッファ方式
TP1/Message Queue独自の属性です。

-e
medbuf
メッセージ編集出口編集用バッファグループ番号
TP1/Message Queue独自の属性です。

medcnt
メッセージ編集出口編集用バッファ数
TP1/Message Queue独自の属性です。

-i
なし
チャネルの確立方法
TP1/Message Queue独自の属性です。

-b
bretrymcp
MQプロトコル障害再試行の要否
TP1/Message Queue独自の属性です。

-r
ipaddr
自システムのIPアドレス
TP1/Message Queue独自の属性です。

hostname
自システムのホスト名
TP1/Message Queue独自の属性です。

portno
自システムのポート番号
TP1/Message Queue独自の属性です。

servname
自システムのサービス名
TP1/Message Queue独自の属性です。

portnum
自システムのポート番号使用数
TP1/Message Queue独自の属性です。

-v
tim1
チャネル確立応答受信監視タイマ値
TP1/Message Queue独自の属性です。

tim2
確認メッセージ受信監視タイマ値
TP1/Message Queue独自の属性です。

vretry
タイムアウト時のチャネル確立再試行の要否
TP1/Message Queue独自の属性です。

-t
tcpsndbuf
TCP/IP出力用バッファサイズ
TP1/Message Queue独自の属性です。

tcprcvbuf
TCP/IP入力用バッファサイズ
TP1/Message Queue独自の属性です。

tretrycnt
TCP/IP確立確認回数
TP1/Message Queue独自の属性です。

tretryint
TCP/IP確立確認間隔
TP1/Message Queue独自の属性です。

-d
cnvccsid
変換CCSID
TP1/Message Queue独自の属性です。

-jn
sndjnl
送信チャネルジャーナル出力条件
TP1/Message Queue独自の属性です。

注※1

ネゴシエーション時の自動定義クラスタセンダチャネルのバッチサイズはmqamqtnam定義コマンド-bオプション指定値および事前定義クラスタセンダチャネルに指定したバッチサイズに依存します。詳細については，4章の「チャネルのネゴシエーション」を参照してください。

事前定義クラスタセンダチャネルのバッチサイズを変更すると，自動定義クラスタセンダチャネルのバッチサイズが小さくなることがあります。自動定義クラスタセンダチャネルのバッチサイズが0になった場合，MQTサーバ開始時に「KFCA16306-E　通信構成定義に誤りがあります。理由コード=01010004」が出力され，MQTサーバは異常終了します。この場合は変更したバッチサイズを再度修正するか，mqamqtnam定義コマンドの-bオプションの指定値を大きくしてください。

注※2

チャネル確立時にクラスタセンダチャネルは接続先クラスタレシーバチャネルとネゴシエーションします。その結果，「チャネル動作中」の状態では，チャネル属性値は定義コマンドの指定値より小さくなることがあります。

クラスタ参加後にTP1/Message Queue独自の属性を変更する方法を次に示します。

OpenTP1を正常終了します。

事前定義クラスタセンダチャネルまたはデフォルトチャネル定義の属性を変更後，MQT定義オブジェクトファイルを再作成します。

OpenTP1を正常開始します。
事前定義クラスタセンダチャネルまたは自動定義クラスタセンダチャネルの属性がこの時点で反映されます。

(b)　クラスタレシーバチャネルの属性の変更

クラスタレシーバチャネルの属性を変更する場合，すべての属性の変更は次回のOpenTP1開始時に反映されます。クラスタレシーバチャネルの属性を変更する方法を次に示します。

OpenTP1を正常終了します。

クラスタレシーバチャネルの属性を変更後，MQT定義オブジェクトファイルを再作成します。

OpenTP1を正常開始します。
変更した属性がこの時点で反映されます。

リポジトリ管理サーバ（mqrsup，mqrspp）を開始します。

フルリポジトリに接続する事前定義クラスタセンダチャネルが開始していない場合は，mqtstachaコマンドで開始します。
フルリポジトリにクラスタレシーバチャネルの属性が連絡され，クラスタに参加している他キューマネジャのクラスタセンダチャネル属性に反映されます。

(5)　クラスタ使用時の障害対策

クラスタ使用時の障害について現象と原因を示します。

(a)　MQRC_UNKNOWN_OBJECT_NAMEのリターン

現象：

アプリケーションがクラスタキューをオープンする際にMQRC_UNKNOWN_OBJECT_NAME（2085L）がリターンされます。

原因：

オブジェクトのあるキューマネジャ，またはアプリケーションの動作するキューマネジャがクラスタに正常に参加できていません。これらのキューマネジャがクラスタ内のすべてのフルリポジトリを表示できることを確認してください。また，フルリポジトリに対応する手動定義クラスタセンダチャネルが再試行中でないことを確認してください。該当するキューがクラスタ内にあることを確認してください。

クラスタ内にキューがある場合は，適切なオープンオプションが指定されていることを確認してください。リモートのクラスタキューからはメッセージを取り出せないので，登録用のオープンオプションだけを指定できます。

(b)　MQRC_CLUSTER_RESOLUTION_ERRORのリターン

現象：

アプリケーションがクラスタキューをオープンする際にMQRC_CLUSTER_RESOLUTION_ERROR（2189L）がリターンされます。

原因：

キューのオープンが初回であり，キューマネジャがフルリポジトリと通信できません。フルリポジトリに対応する手動定義クラスタセンダチャネルが再試行中でないことを確認してください。該当するキューがクラスタ内にあることを確認してください。

クラスタ内にキューがある場合は，適切なオープンオプションが指定されていることを確認してください。リモートのクラスタキューからはメッセージを取り出せないので，登録用オプションだけを指定できます。

(c)　メッセージ不到達

現象：

メッセージがあて先キューにありません。

原因：

メッセージが登録元キューマネジャに滞留しています。SYSTEM.CLUSTER.TRANSMIT.QUEUEが空であり，あて先キューマネジャへのチャネルが動作していることを確認してください。

(d)　別名キューへのメッセージがデッドレターキューに登録される

現象：

アプリケーションが別名キューにメッセージを登録すると，別名キューのベースキューではなくデッドレターキューに登録されます。

原因：

別名キューがMQOO_BIND_NOT_FIXEDではなくMQOO_BIND_ON_OPENでオープンされています。MQOO_BIND_ON_OPENが指定された場合，メッセージの転送キューヘッダには，空白ではなくあて先キューマネジャ名が設定されます。

別名が定義されたキューマネジャにメッセージが到着するときに，そのキューマネジャ名が使用され，あて先キューを発見できません。そしてメッセージはデッドレターキューに登録されます。すべての別名キューの属性定義で，DefBind属性にMQOO_BIND_NOT_FIXEDを指定するよう変更するか，キューをオープンする際にMQOO_BIND_NOT_FIXEDを使用してください。

(e)　キューマネジャの情報が古い

現象：

クラスタ内のキューおよびチャネルについての最新情報がキューマネジャにありません。コマンドを入力すると古いオブジェクトが表示されます。

原因：

オブジェクトのあるキューマネジャ，およびコマンドを入力したキューマネジャについて，クラスタに接続されていることを確認してください。これらのキューマネジャがクラスタ内のすべてのフルリポジトリを表示できることを確認してください。また，フルリポジトリに対応する手動定義クラスタセンダチャネルが再試行中でないことを確認してください。

次に，フルリポジトリを相互接続するのに十分な数のクラスタセンダチャネルがあることを確認してください。クラスタの更新は手動定義クラスタセンダチャネルを使ってフルリポジトリ間だけで通信されます。クラスタが作成されたあとで，これらはWebSphere上でDEFTYPE(CLUSSDRB)チャネルとして表示されます。手動と自動の両方のチャネルがあるためです。すべてのフルリポジトリ間を接続するのに十分な数のチャネルが必要です。

2.9　メッセージ編集出口UOCを使用したファイル転送

メッセージ編集出口UOCを使用することで，データをTP1/Message Queueのキューに登録しないでユーザファイルから直接，転送できます。この方法は，大量のデータがMQシステムのメッセージ以外の形式で存在する場合に便利です。

＜この節の構成＞

2.9.1　処理の概要

2.9.2　使用方法

2.9.1　処理の概要

メッセージ編集出口UOCを使用したファイル転送処理の概要について，次の図に示します。

図2-60　メッセージ編集出口UOCを使用したファイル転送処理の概要

送信側システムでの処理の流れ

UAPは，MQRMH（Message reference header）構造体をメッセージとして登録します。
MQRMH構造体については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

MCAは，メッセージ編集出口UOCを呼び出し，メッセージを渡します。

メッセージ編集出口UOCは，MQRMH構造体の情報を基に，転送するデータを読み出してMCAの送信／編集バッファに登録します。

MCAは，MQRMH構造体，および送信／編集バッファのデータを相手システムに送信します。

受信側システムでの処理の流れ

MCAは，メッセージ編集出口UOCを呼び出し，受信したメッセージを渡します。

メッセージ編集出口UOCは，メッセージ中のMQRMH構造体の情報を基に，転送されたデータを格納します。

UAPは，MQRMH構造体を受信し，ファイル転送の完了を確認します。

2.9.2　使用方法

メッセージ編集出口UOCを使用したファイル転送を使用するには，送信側システム，受信側システムの両方でメッセージ編集出口UOCを指定する必要があります。メッセージ編集出口UOCの使用方法については，「3.　ユーザオウンコーディング」を参照してください。

メッセージ編集出口UOCは，チャネル定義のバッファ方式指定にメッセージ方式を指定（TCP定義のmqtalccha定義コマンドの-g buftypeオペランドにmsgを指定）した場合だけ有効です。バッファ方式にセグメント方式を指定（TCP定義のmqtalccha定義コマンドの-g buftypeオペランドにsegを指定）した場合，UOCが呼び出されません。

＜この項の構成＞

(1)　注意事項

(1)　注意事項

送信側メッセージ編集出口UOCが参照メッセージに付けられるオブジェクトデータの長さは，次に示す計算式を満たす必要があります。

　チャネルの最大メッセージ長 ≧ MQXQH構造体を除く転送メッセージ長

MCA，およびメッセージ編集出口UOCは，OpenTP1管理者のユーザIDおよびグループIDの下で実行されます。そのため，メッセージ編集出口UOCを使用してファイルを転送する場合は，OpenTP1管理者のユーザIDおよびグループIDの権限を，転送するファイルおよびディレクトリに設定してください。

受信側のメッセージ編集出口UOCが受信したファイルを作成する作業は，MCAの作業単位と同期しません。このため，バッチがバックアウトされた場合，MQRMH構造体が到着していないのにファイルが受信側に存在している状態になることがあります。この場合，ファイル転送は完了していません。

参照メッセージを配布リストとして書き込む場合，結果として得られる配布リスト，またはそのノードのあて先ごとにオブジェクトが取り出せるようにする必要があります。このため，ファイルの使用回数を考慮する必要があります。
また，あるあて先に対しては中間ノードであり，別のあて先に対しては最終ノードであるようなノードも存在します。このようなノードについてもファイルの使用回数を考慮して使用してください。

転送するファイルデータは，送信側でのデータ変換が実行されません。
ただし，参照メッセージが中間ノードを経由する場合，中間ノードの転送キューに登録されたファイルデータが送信されるときに，データ変換を実行できます。

2.10　MQCサーバ機能

この節では，関連製品であるTP1/Message Queue - Accessの使用時に必要な，MQCサーバ機能の定義，運用，および障害対策について説明します。

＜この節の構成＞

2.10.1　MQCサーバ機能のセットアップ

2.10.2　MQCサーバ機能の環境設定

2.10.3　MQCサーバ機能の運用

2.10.1　MQCサーバ機能のセットアップ

MQCサーバ機能を構成するファイルは，TP1/Message Queueに添付されています。MQCサーバ機能のセットアップは，TP1/Message Queueのセットアップ手順に従ってください。

MQCサーバ機能のインストール時に作成されるファイルを次の表に示します。

表2-20　MQCサーバ機能のインストール時に作成されるファイル

名称
ディレクトリ
ファイル名
（AIXの場合）
ファイル名
（HP-UX 11.0，11iの場合）
ファイル名
（HP-UX 11i V2（IPF）以降の場合）
ファイル名
（Linuxの場合）
ファイル名
（Windowsの場合）

MQCリスナサーバ
$DCDIR/lib/servers
mqcdtcp
mqcdtcp
mqcdtcp
mqcdtcp
mqcdtcp.exe

コマンド
$DCDIR/bin
mqcmkgwp
mqcmkgwp
mqcmkgwp
mqcmkgwp
mqcmkgwp.bat

定義解析用ファイル
$DCDIR/lib/sysconf
mqctcp
mqctcp
mqctcp
mqctcp
mqctcp

$DCDIR/lib/sysdef
mqc.def
mqc.def
mqc.def
mqc.def
mqc.def

ライブラリ
$DCDIR/lib
libmqcs.a
libmqcs.sl
libmqcs.a
libmqcs.so
libmqcs.a
libmqcs.so
libmqcs.a
libmqcs.lib

$DCDIR/bin
－
－
－
－
libmqcs.dll

MQCゲートウェイサーバ
$DCDIR/lib
mqcgwp.o
libmqcgwp.a
mqcgwp.o
libmqcgwp.sl
libmqcgwp.a
mqcgwp.o
libmqcgwp.so
libmqcgwp.a
mqcgwp.o
libmqcgwp.so
libmqcgwp.a
mqcgwp.obj
libmqcgwp.lib

（凡例）

－：該当しません。

2.10.2　MQCサーバ機能の環境設定

MQCサーバ機能の環境設定について説明します。

＜この項の構成＞

(1)　MQCサーバ機能の定義

(2)　MQCゲートウェイサーバの作成

(3)　MQCゲートウェイサーバの環境設定での注意事項

(1)　MQCサーバ機能の定義

ユーザは，MQCサーバ機能の定義について，OSのテキストエディタを使用して作成および更新する必要があります。MQCサーバ機能の定義および定義ファイル名を次に示します。詳細については，「4.　準備作業」を参照してください。

MQCサービス定義
$DCCONFPATH/mqc

MQCゲートウェイサーバユーザサービス定義
$DCCONFPATH/MQCゲートウェイサーバ名

MQAサービス定義
$DCCONFPATH/mqa

トランザクションサービス定義
$DCCONFPATH/trn

(2)　MQCゲートウェイサーバの作成

MQCゲートウェイサーバは，OpenTP1システムのユーザサーバです。

mqcmkgwpコマンドを実行して，実行形式プログラムmqcgwpとMQCゲートウェイサーバユーザサービス定義ファイルmqcgwpを作成してください。

mqcmkgwpコマンド実行時には，次の定義ファイルが必要です。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

$DCCONFPATH/betranrc

$DCCONFPATH/trn

なお，作成したmqcgwpは，次に示すディレクトリに配置されます。

$DCDIR/aplib：実行形式プログラム

$DCDIR/conf ：MQCゲートウェイサーバユーザサービス定義ファイル

mqcmkgwpコマンドの延長でOpenTP1にRM登録をしています。したがって，dcsetupコマンドを実行し直した場合は，再度mqcmkgwpコマンドも実行する必要があります。

(3)　MQCゲートウェイサーバの環境設定での注意事項

MQCゲートウェイサーバの環境を設定する上での注意事項について説明します。

(a)　MQCサーバ機能が動作するOpenTP1のトランザクションサービス定義

$DCCONFPATH/trnに次の設定が行われている場合，MQCゲートウェイサーバが異常終了（アボートコード：Mqcgw03）します。

トランザクションサービス定義

set trn_rm_open_close_scope=transaction

このため，MQCゲートウェイサービス定義に次の定義を追加してください。

MQCゲートウェイサービス定義

set trn_rm_open_close_scope=process

(b)　MQCゲートウェイサーバのユーザサービス定義

MQCゲートウェイサーバのユーザサービス定義は，OpenTP1のユーザサービスデフォルト定義のデフォルト値で動作するように設定してください。

2.10.3　MQCサーバ機能の運用

MQCサーバ機能は，MQCリスナサーバとMQCゲートウェイサーバから構成されます。ここでは，各サーバの開始と終了について説明します。

なお，MQCサーバ機能の運用コマンドについては，「6.　システムの運用」を参照してください。

＜この項の構成＞

(1)　MQCリスナサーバの開始と終了

(2)　MQCゲートウェイサーバの開始と終了

(1)　MQCリスナサーバの開始と終了

MQCリスナサーバの開始と終了について説明します。

(a)　MQCリスナサーバの開始

MQCリスナサーバは，MQAサーバと同時に開始します。

MQAサーバと同時に開始させるためには，MQAサービス定義のmqa_mqc_confオペランドにYを指定しておく必要があります。ここでYを指定するとMQCリスナサーバがMQAサーバと同時に開始されます。

●正常開始

MQCリスナサーバは，OpenTP1システムの正常開始の延長で開始します。

●再開始

OpenTP1システムに障害が発生した場合，MQCリスナサーバはOpenTP1システムの再開始の延長で再開始します。再開始すると前回の終了時点の状態に回復されます。

メッセージ登録中および削除中などのキューアクセス中に強制停止した場合は，キューファイルの内容が矛盾することがあるため，必ず再開始してください。

また，MQCリスナサーバではクライアント機能とMQCサーバ機能のトランザクションを管理するために，トランザクションIDなどの情報をジャーナルに取得し再開始時に回復しています。このため，強制停止やシステムダウンのあとに正常開始したときは，ジャーナルによって回復されないので，TP1/Message Queueとの間に矛盾が発生する可能性があります。

(b)　MQCリスナサーバの終了

MQCリスナサーバの終了モードを次に示します。

正常終了

計画停止A

計画停止B

強制停止

終了モードの詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。

正常終了，計画停止A，または計画停止Bの場合，MQCクライアント機能の切断を時間監視できます。

終了処理監視タイマ値は，MQCサービス定義のmqcenv定義コマンドで指定します。終了処理監視でタイムアウトが発生した場合，送受信中の処理を中断し，MQCクライアント機能との接続は強制解放されます。

(2)　MQCゲートウェイサーバの開始と終了

MQCゲートウェイサーバの開始と終了について説明します。

(a)　MQCゲートウェイサーバの開始

MQCクライアント機能のクライアントアプリケーションは，OpenTP1システムに登録されていないUAPです。MQIを使用するためには，MQCサーバ機能があるOpenTP1システムで，MQCゲートウェイサーバをユーザサーバとして開始する必要があります。

ユーザサーバの開始については，マニュアル「OpenTP1 運用と操作」を参照してください。

なお，MQCゲートウェイサーバを開始しない場合は，MQCクライアント機能が提供するライブラリ関数を使用できません。

(b)　MQCゲートウェイサーバの終了

MQCゲートウェイサーバは，OpenTP1のユーザサーバです。

3.　ユーザオウンコーディング

この章では，ユーザオウンコーディングの使用方法や作成例について説明します。

＜この章の構成＞

3.1　ユーザオウンコーディング

3.2　メッセージ編集出口UOC

3.3　UOCとのインタフェース

3.4　UOC呼び出しの流れ

3.5　UOCの組み込み

3.6　UOCの作成についての注意事項

3.7　UOCの作成例

3.1　ユーザオウンコーディング

TP1/Message Queueの機能を，より多様な業務に対応させるために補助するプログラムを，ユーザオウンコーディング（UOC）といいます。TP1/Message Queueで使用できるUOCを次に示します。

メッセージ編集出口UOC
メッセージのデータ変換や，参照メッセージを処理するUOCです。

3.2　メッセージ編集出口UOC

メッセージ編集出口UOCは，メッセージのデータ変換や参照メッセージを処理するUOCです。また，クラスタセンダチャネルとクラスタレシーバチャネルでは，チャネルの開始時にチャネル属性を変更できます。

ここでは，メッセージ編集出口UOCの開始条件，および渡されるデータ形式について説明します。

＜この節の構成＞

3.2.1　UOCの開始条件

3.2.2　UOCに渡されるデータ形式

3.2.1　UOCの開始条件

送信側メッセージ編集出口UOCは，送信側MCAによって転送キューからメッセージが取り出された直後に，呼び出されます。

受信側メッセージ編集出口UOCは，受信側MCAによってメッセージがあて先キューに登録される直前に，呼び出されます。

なお，メッセージ編集出口UOCは，該当するチャネルのバッファ方式にメッセージ方式を指定（TCP定義のmqtalccha定義コマンドの-g buftypeオペランドにmsgを指定）した場合だけ，呼び出されます。チャネルのバッファ方式にセグメント方式を指定した場合，メッセージ編集出口UOCは呼び出されません。

3.2.2　UOCに渡されるデータ形式

MCAはUOCの起動時に，メッセージが格納されている送信バッファ，受信バッファ，およびTCP定義のmqtalccha定義コマンドの-e medbufオペランドで指定した編集バッファを渡します。UOCでは，これらのバッファを使用してメッセージの編集ができます。

メッセージ編集出口UOCに渡されるデータの形式について，次の図に示します。

図3-1　メッセージ編集出口UOCに渡されるデータの形式

MCAは，メッセージ編集出口UOCの呼び出し時，転送キューに格納されているメッセージを送受信バッファに格納します。メッセージ編集出口UOCでは，送受信バッファの使用バッファ長から，該当セグメントの長さを知ることができます。

メッセージ編集出口UOCでデータ変換や参照メッセージ処理を実施した場合，送受信バッファの使用バッファ長を変更できます。ただし，使用バッファ長が，相手システムとの間で最適な値として決定された最大メッセージ長を超えないようにしてください。最大メッセージ長は，チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）の最大メッセージ長（MaxMsgLength）で確認してください。

また，メッセージ記述子（MQMD構造体）を格納している転送キューヘッダ（MQXQH構造体）については，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

3.3　UOCとのインタフェース

UOCとのインタフェースについて説明します。

＜この節の構成＞

3.3.1　UOCの呼び出し形式

3.3.2　パラメタ

3.3.3　UOCパラメタ指定についての注意事項

3.3.1　UOCの呼び出し形式

UOCの呼び出し形式について，次に示します。

＜メッセージ編集出口UOC＞

ANSI C，C++言語の場合

#include <cmqc.h>
#include <dcmtcquo.h>
long    med_uoc01(dcmtcq_uoc_parmlist *parm)

K&R版C言語の場合

#include <cmqc.h>
#include <dcmtcquo.h>
long    med_uoc01(parm)

dcmtcq_uoc_parmlist *parm;

3.3.2　パラメタ

MCAは，次の図に示すパラメタをパラメタリストアドレス（parm）に設定し，UOCの呼び出し時に渡します。

図3-2　UOCに渡されるパラメタの形式

各パラメタの内容について説明します。

各領域の後ろの括弧は，その領域のデータタイプです。データタイプについては，マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。

データタイプの次に，その領域の「向き」を示します。つまり，その領域を何が使用し，何が設定するかです。

input

MQTからUOCへ，値が入力される領域です。ユーザは値を変更しないでください。

output

UOCからMQTへ，値を出力するための領域です。

＜この項の構成＞

(1)　UOCパラメタリスト（dcmtcq_uoc_parmlist）

(2)　チャネル出口パラメタブロック（dcmtcq_uoc_mqcxp）

(3)　チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）

(4)　バッファリスト（dcmtcq_uoc_bufflist）

(1)　UOCパラメタリスト（dcmtcq_uoc_parmlist）

UOCパラメタリストは，UOCに渡されるパラメタを管理しています。

dcmtcq_uoc_parmlistの宣言形式

typedef struct {
 MQCHAR4             StructId;            /* 構造体識別子 */
 MQLONG              Version;         /* 構造体バージョン番号 */
 dcmtcq_uoc_mqcxp    *mqcxp_adr;
                  /* チャネル出口パラメタブロックアドレス */
 dcmtcq_uoc_mqcd     *mqcd_adr;
                    /* チャネルデータ定義ブロックアドレス */
 dcmtcq_uoc_bufflist *tbuflist_adr;
                          /* 送受信バッファリストアドレス */
 dcmtcq_uoc_bufflist *ebuflist_adr;
                            /* 編集バッファリストアドレス */
 MQCHAR               Reserve1[8];                /* 予備 */
} dcmtcq_uoc_parmlist;

注

64ビット版の場合は，次の形式になります。

         ：
 MQCHAR               Reserve1[24];                /* 予備 */
} dcmtcq_uoc_parmlist;

StructId（MQCHAR4型）　－input
構造体識別子（DCMTCQ_MQCXPL_STRUC_ID）
UOCパラメタリストのための識別子が格納されます。
定数DCMTCQ_MQCXPL_STRUC_ID_ARRAYは，DCMTCQ_MQCXPL_STRUC_IDと同じ値です。ただし，前者は文字配列，後者は文字列です。

Version（MQLONG型）　－input
構造体バージョン番号（32ビット版の場合：DCMTCQ_MQCXPL_VERSION_1，64ビット版の場合：DCMTCQ_MQCXPL_VERSION_2）
UOCパラメタリストのためのバージョン番号が格納されます。

mqcxp_adr（dcmtcq_uoc_mqcxpポインタ型）　－input
チャネル出口パラメタブロックのアドレス
チャネル出口パラメタブロックについては，「3.3.2（2）　チャネル出口パラメタブロック（dcmtcq_uoc_mqcxp）」を参照してください。

mqcd_adr（dcmtcq_uoc_mqcdポインタ型）　－input
チャネルデータ定義ブロックのアドレス
チャネルデータ定義ブロックについては，「3.3.2（3）　チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）」を参照してください。

tbuflist_adr（dcmtcq_uoc_bufflistポインタ型）　－input
送受信バッファリストのアドレス
送受信バッファリストについては，「3.3.2（4）　バッファリスト（dcmtcq_uoc_bufflist）」を参照してください。
出口へのExitReasonがDCMTCQ_MQXR_ALTの場合，このアドレスは設定されません。

ebuflist_adr（dcmtcq_uoc_bufflistポインタ型）　－input
編集用バッファリストのアドレス
編集用バッファリストについては，「3.3.2（4）　バッファリスト（dcmtcq_uoc_bufflist）」を参照してください。
出口へのExitReasonがDCMTCQ_MQXR_ALTの場合，このアドレスは設定されません。

(2)　チャネル出口パラメタブロック（dcmtcq_uoc_mqcxp）

チャネル出口パラメタブロックは，UOCの処理を決定したり，UOCがMCAの動作を制御したりするために使用されます。

チャネル出口パラメタブロックには，UOCへの入力領域とUOCからの出力領域が両方とも存在するので注意してください。

dcmtcq_uoc_mqcxpの宣言形式

typedef struct {
 MQCHAR4   StructId;         /* 構造体識別子                   */
 MQLONG    Version;          /* 構造体バージョン番号           */
 MQLONG    ExitId;           /* 出口のタイプ                   */
 MQLONG    ExitReason;       /* 出口を呼び出すための理由       */
 MQLONG    ExitReason2;      /* 出口を呼び出すための二次理由   */
 MQLONG    ExitResponse;     /* 出口からの応答                 */
 MQLONG    ExitResponse2;    /* 出口からの二次応答             */
 MQLONG    Feedback;         /* フィードバックコード           */
 MQLONG    MaxSegmentLength; /* セグメント最大長               */
 MQCHAR    Reserve1[4];      /* 予約領域                       */
 MQBYTE16  ExitUserArea;     /* 出口ユーザ領域                 */
 MQCHAR32  ExitData;         /* 出口データ                     */
 MQCHAR    PartnerName[52];  /* 相手システムのキューマネジャ名 */
 MQLONG    FAPLevel;         /* プロトコルレベル               */
 MQLONG    CapabilityFlags;  /* 機能フラグ                     */
} dcmtcq_uoc_mqcxp;

注

64ビット版の場合は，次の形式になります。

         ：
 MQLONG    CapabilityFlags;  /* 機能フラグ                  */
 MQCHAR    Reserve1[8];      /* 予備                        */
} dcmtcq_uoc_mqcxp;

StructId（MQCHAR4型）　－input
構造体識別子（DCMTCQ_MQCXP_STRUC_ID）
チャネル出口パラメタブロックのための識別子が格納されます。
定数DCMTCQ_MQCXPL_STRUC_ID_ARRAYは，DCMTCQ_MQCXPL_STRUC_IDと同じ値です。ただし，前者は文字配列，後者は文字列です。

Version（MQLONG型）　－input
構造体バージョン番号（32ビット版の場合：DCMTCQ_MQCXPL_VERSION_2，64ビット版の場合：DCMTCQ_MQCXPL_VERSION_3）
チャネル出口パラメタブロックのためのバージョン番号（バージョン2）が格納されます。バージョン2の構造体だけに存在する領域については，各領域の説明で示します。
なお，新しいバージョンの構造体では，旧バージョンの領域名，および属性は変わりません。したがって，Versionの値がUOCに必要な領域を含む最低バージョンの番号以上かどうか，UOC側で検査する必要があります。

ExitId（MQLONG型）　－input
出口のタイプ
呼び出されるUOCのタイプが格納されます。

DCMTCQ_MQXT_CHANNEL_MSGEDT_EXIT
メッセージ編集出口UOCを示します。

ExitReason（MQLONG型）　－input
出口を呼び出すための理由
UOCが呼び出された理由が格納されます。
なお，各理由でUOCが呼び出されるタイミングについては，「3.4　UOC呼び出しの流れ」を参照してください。

DCMTCQ_MQXR_ALT
属性変更
開始するチャネルが使用するチャネル属性を変更する必要がある場合に，変更するための契機を出口に与えるために呼び出されます。
この呼び出しはクラスタチャネル（クラスタセンダおよびクラスタレシーバ）にだけ実行されます。

DCMTCQ_MQXR_INIT
初期化
UOCが使用する作業領域の確保，およびイニシャライズを実行するために呼び出されたことを示します。

DCMTCQ_MQXR_TERM
終了
UOCが使用した作業領域の解放のために呼び出されたことを示します。

DCMTCQ_MQXR_MSG
メッセージ処理
メッセージ処理のために呼び出されたことを示します。

ExitReason2（MQLONG型）　－input
出口を呼び出すための二次理由
UOCがメッセージ処理のために呼び出された場合（ExitReason=DCMTCQ_MQXR_MSG），呼び出された理由の詳細が格納されます。メッセージ編集出口UOCでは，この値は意味を持ちません。

ExitResponse（MQLONG型）　－output
出口からの応答
UOCが，MCAへの応答を格納する領域です。

DCMTCQ_MQXCC_OK
正常に続行することをMCAに依頼します。
UOCがメッセージ処理のために呼び出された場合（ExitReason=DCMTCQ_MQXR_MSG）は，ExitResponse2領域に追加情報を設定してください。

DCMTCQ_MQXCC_SUPPRESS_FUNCTION
メッセージをデッドレターキューに登録することをMCAに依頼します。
この値は，UOCがメッセージ処理のために呼び出された場合（ExitReason=DCMTCQ_MQXR_MSG）に有効です。
デッドレターキューに登録できない場合，送信側の処理中メッセージは転送キューに格納され，受信側の処理中メッセージは破棄され，チャネルが終了されます。
また，メッセージをデッドレターキューに登録する場合は，次に示す二つの領域を設定してください。
・Feedback領域
・ExitResponse2領域

DCMTCQ_MQXCC_SUPPRESS_EXIT
UOCの呼び出しを抑止することをMCAに依頼します。
MCAは，チャネル終了時（ExitReason=DCMTCQ_MQXR_TERM）まで，UOCの呼び出しを抑止します。ただし，属性変更時（ExitReason=DCMTCQ_MQXR_ALT）にこの応答が返された場合，チャネル終了時（ExitReason=DCMTCQ_MQXR_TERM）にも，UOCを呼び出しません。
UOCがメッセージ処理のために呼び出された場合（ExitReason=DCMTCQ_MQXR_MSG）は，ExitResponse2領域に追加情報を設定してください。

DCMTCQ_MQXCC_CLOSE_CHANNEL
チャネルの終了をMCAに依頼します。
送信側の処理中メッセージは転送キューに格納され，受信側の処理中メッセージは破棄され，チャネルが終了されます。

ExitResponse2（MQLONG型）　－output
出口からの二次応答
UOCがメッセージ処理のために呼び出された場合（ExitReason=DCMTCQ_MQXR_MSG），UOCからMCAへのメッセージの返却領域を指定する情報を格納します。

DCMTCQ_MQXR2_USE_TRAN_BUFFER
返却するメッセージが送受信バッファに格納されていることを示します。

DCMTCQ_MQXR2_USE_EDIT_BUFFER
返却するメッセージが編集用バッファに格納されていることを示します。

DCMTCQ_MQXR2_USE_TRAN_BUFFERとDCMTCQ_MQXR2_USE_EDIT_BUFFERは，どちらか一方を指定できます。

Feedback（MQLONG型）　－output
フィードバックコード
UOCがメッセージ処理のために呼び出された場合（ExitReason=DCMTCQ_MQXR_MSG），メッセージがデッドレターキューに登録される理由を識別するためのフィードバックコードを格納します。

MQFB_STOPPED_BY_MSG_EXIT
メッセージがUOCによって止められたことを示します。

MaxSegmentLength（MQLONG型）　－input
セグメント最大長
単一伝送で送信できる最大バイト長が格納されます。
セグメント最大長は，通信構成定義で指定されたセグメント長を基に，チャネル確立時にMCA間のネゴシエーションによって決定された値です。
ExitReasonがDCMTCQ_MQXR_INITまたはDCMTCQ_MQXR_ALTの場合，この値は意味を持ちません。

ExitUserArea（MQBYTE16型）　－intput/output
出口ユーザ領域
UOCが自由に利用できる領域です。
出口ユーザ領域は，UOCが最初に呼び出された時（ExitReason=DCMTCQ_MQXR_ALTまたはDCMTCQ_MQXR_INIT），2進数の0で初期化されています。UOC内で出口ユーザ領域を更新すると，その値は次の呼び出しまで保持されます。ただし，再度チャネルが開始され，UOCを属性更新指示または初期化指示（ExitReason=DCMTCQ_MQXR_ALTまたはDCMTCQ_MQXR_INIT）で呼び出す時，出口ユーザ領域は初期化されます。

ExitData（MQCHAR*32型）　－input
出口データ
mqtalccha定義コマンドの-x metexdataオペランドで指定された，メッセージ編集出口ユーザデータが格納されます。
ただし，チャネルタイプがクラスタセンダの場合でリポジトリ情報を取得している時は，接続相手のクラスタレシーバの定義で指定されているユーザデータ（データ変換なし）が格納されます。
この領域の長さは，DCMTCQ_MQ_EXIT_DATA_LENGTHから取得できます。ユーザデータの長さが領域の長さよりも短かった場合，ユーザデータの後ろにスペースが補われます。また，指定を省略した場合，領域はスペースで埋められます。

PartnerName（MQCHAR*52型）　－input
相手システムのキューマネジャ名
チャネルの接続先になる相手システムのキューマネジャ名です。
コーラ側でExitReasonがDCMTCQ_MQXR_ALTまたはDCMTCQ_MQXR_INIT である場合は，このフィールドの値は意味を持ちません。これは，チャネルの接続が完了するまで相手システムのキューマネジャ名を特定できないからです。
領域は名称の後ろに¥0が付けられ，定義で指定できるキューマネジャ名の最大サイズより4バイト大きくなっているので注意が必要です。
この領域は，バージョン番号2（Version=DCMTCQ_MQCXP_VERSION_2）以降の構造体で使用できます。

FAPLevel（MQLONG型）　－input
プロトコルレベル
接続先とのネゴシエーションで決定された，このチャネルで使用する通信プロトコル（FAP）のレベルです。
DCMTCQ_MQFL_FPL：プロトコルレベル1
DCMTCQ_MQFL_FPL4：プロトコルレベル4
コーラ側でExitReasonがDCMTCQ_MQXR_ALTまたはDCMTCQ_MQXR_INITである場合は，このフィールドの値は意味を持ちません。これは，チャネルの確立が完了するまで相手システムとの間で使用するFAPレベルが決定しないからです。
この領域は，バージョン番号2（Version=DCMTCQ_MQCXP_VERSION_2）以降の構造体で使用できます。

CapabilityFlags（MQLONG型）　－input
機能フラグ
相手システムとの間で使用する機能によって，次に示す値が定義されます。

DCMTCQ_MQCF_NONE
フラグなし

DCMTCQ_MQCF_DIST_LIST
マルチキャスト機能を使用することを示します。

コーラ側でExitReasonがDCMTCQ_MQXR_ALTまたはDCMTCQ_MQXR_INITである場合は，このフィールドの値は意味を持ちません。これは，チャネルの確立が完了するまで相手システムとの間で使用する機能が決定しないからです。
この領域は，バージョン番号2（Version=DCMTCQ_MQCXP_VERSION_2）以降の構造体で使用できます。

(3)　チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）

チャネルデータ定義構造体はチャネルの属性を示すパラメタを持ちます。各領域の内容は特に記述のないかぎり，チャネル定義の内容と同じです（ここでは，TCP定義のmqtalccha定義コマンドの該当するオプションを〔　〕で示します）。また，名称を格納する領域は後ろに¥0を格納し，定義で指定できるサイズより大きくなるので注意してください。

また，このパラメタのすべての領域は出口へのExitReasonがDCMTCQ_MQXR_ALTの場合を除き出口の入出力領域です。ExitReasonがDCMTCQ_MQXR_ALTでない場合にUOCが更新すると，その後のチャネルの動作は保証しません。

DCMTCQ_MQXR_ALTの場合に更新できる領域については次の表を参照してください。UOCが更新した値が各領域の指定としては不正であるときは，更新された値を無視して変更前の値でチャネル処理を続行します。

表3-1　チャネルタイプと有効領域

属性
sender
server
receiver
requester
clussdr
clusrcvr
連絡属性※¹
自動定義のクラスタセンダの仮定値
注意事項

ChannelName
●
●
●
●
●
●
あり
－
－

Version
●
●
●
●
●
●
－
DCMTCQ_MQCD_VERSION_7
－

ChannelType
●
●
●
●
●
●
あり
－
－

ClusterName
－
－
－
－
●
●
あり
－
－

BatchSize
●
●
●
●
○
○
あり
－
事前定義クラスタセンダチャネルの場合は，定義値よりも大きくすることはできません。
自動定義クラスタセンダチャネルの場合は，計算値※2よりも大きくすることはできません。

XmitQName
●
●
－
－
●
●
あり
－
クラスタチャネルはSYSTEM.CLUSTER.TRANSMIT.QUEUE固定です。

MaxMsgLength
●
●
●
●
○
○
あり
－
BufTypeがメッセージ方式（DCMTCQ_MQBUFT_MSG）の場合は，メッセージ送受信バッファのバッファ長よりも大きくすることはできません。

MaxSegLength
●
●
●
●
○
○
－
8192
BufTypeがセグメント方式（DCMTCQ_MQBUFT_SEG）の場合は，メッセージ送受信バッファのバッファ長よりも大きくすることはできません。

SeqNumberWrap
●
●
●
●
○
○
あり
－
－

BufType
●
●
●
●
●
●
－
msg
－

SendBufGroup
●
●
－
－
○
－
－
1
－

ReceiveBufGroup
－
－
●
●
－
○
－
－
－

MsgEdtBufGroup
●
●
●
●
○
○
－
－
－

MsgEdtBufCount
●
●
●
●
○
○
－
－
－

StartType
●
●
●
●
●
●
－
auto
－

LongRetryType
●
●
－
●
○
●
あり
－
－

LongRetryCount
●
●
－
●
○
●
あり
－
－

LongRetryInterval
●
●
－
●
○
●
あり
－
－

OwnIPAddr
●
●
－
●
○
●
あり※³
－
両方指定された場合OwnIPAddr指定値が優先されます。

OwnHostName
●
●
－
●
○
●
あり※³
－

OwnPortNum
●
●
－
●
○
●
あり※³
－
両方指定された場合OwnPortNum指定値が優先されます。
clusrcvrではOwnServNameはポート番号で相手システムへ連絡します。

OwnServName
●
●
－
●
○
●
－
－

PartnerIPAddr
●
●
－
●
○
－
あり
－
両方指定された場合PartnerIPAddr指定値が優先されます。
事前定義クラスタセンダだけ変更できます。

PartnerHostName
●
●
－
●
○
－
あり
－

PartnerPortNum
●
●
－
●
○
－
あり
－
両方指定された場合PartnerPortNum指定値が優先されます。
clussdrではPartnerServNameはポート番号で相手システムへ連絡します。
事前定義クラスタセンダだけ変更できます。

PartnerServName
●
●
－
●
○
－
－
－

ConRspRecvInterval
●
●
－
●
○
－
－
30
－

RspMsgRecvInterval
●
●
－
－
○
－
－
30
－

NextSegRecvInterval
－
－
●
●
－
○
－
－
－

DiscInterval
●
●
－
－
－
－
－
－
転送キュー監視方式がタイマ方式の場合に有効です。

DiscIntervalCount
●
●
－
－
－
－
－
－
転送キュー監視方式がタイマ方式の場合に有効です。

DiscInterval2
●
●
－
－
○
●
あり
－
転送キュー監視方式がイベント方式の場合に有効です。
またはクラスタチャネルで有効です。

DiscInterval2Effect
●
●
－
－
●
●
あり
－

TimeoutConRetry
●
●
－
●
○
－
－
YES
－

NextMsgRecvInterval
－
－
●
●
－
○
－
－
－

HeartbeatInterval
●
●
●
●
○
○
あり
－
－

BatchInterval
●
●
－
－
○
●
あり
－
－

MsgEdtUserData
●
●
●
●
○
○
あり
－
バッファ方式がメッセージ方式の場合に有効です。

SendUserData
－
－
－
－
－
●
あり
－
－

ReceiveUserData
－
－
－
－
－
●
あり
－
－

TcpSendBufLength
●
●
●
●
○
○
－
－
－

TcpRecvBufLength
●
●
●
●
○
○
－
－
－

ConvCCSID
●
●
－
－
○
●
あり
－
クラスタレシーバチャネルでは，システム定義に値を指定すると相手システムがTP1/Message QueueのCCSIDに変更します。
ただし，相手システムはWebSphere MQだけです。

NonPersistentMsgSpeed
●
●
●
●
○
○
あり
－
－

TranQMonType
●
●
－
－
●
－
－
event
クラスタセンダチャネルの場合は，event固定です。

NetworkPriority
－
－
－
－
－
●
あり
－
－

AlterTime
●
●
●
●
●
●
あり
－
－

MsgChaProRetry
●
●
－
●
○
●
－
－
－

AdoptCheck
●
●
●
●
－
●
－
－
－

ShortRetryType
●
●
－
●
○
●
あり
－
－

ShortRetryCount
●
●
－
●
○
●
あり
－
－

ShortRetryInterval
●
●
－
●
○
●
あり
－
－

SecurityUserData
－
－
－
－
－
●
あり
－
－

SendExit
－
－
－
－
－
●
あり
－
－

RcvExit
－
－
－
－
－
●
あり
－
－

MsgExit
－
－
－
－
－
●
あり
－
－

ScyExit
－
－
－
－
－
●
あり
－
－

Descr
●
●
●
●
○
○
あり
－
－

MCAUser
－
－
－
－
－
●
あり
－
－

MCAType
－
－
－
－
－
●
あり
－
－

TcpRetryCount
●
●
－
●
○
－
－
10
－

TcpRetryInterval
●
●
－
●
○
－
－
1
－

StrucLength
△
△
△
△
△
△
－
－
－

SndJnlIO
●
●
－
－
○
－
－
flush
－

BatchMilInterval
●
●
－
－
○
●
あり
－
－

OwnPortAltNum
●
●
－
●
○
－
－
1
OwnPortNum属性（自システムのポート番号）またはOwnServName属性（自システムのサービス名）の指定がある場合に有効です。

（凡例）

●：有効なチャネル属性です。UOCでの変更はできません。

○：有効なチャネル属性です。UOCでの変更はできます。

△：参照だけできます。

－：ありません。

注※1

相手クラスタレシーバチャネルの属性によって値が設定されます。また，自クラスタレシーバチャネルの値が相手に連絡されます。

UOCで変更した属性は，次にチャネルを開始するまで有効です。

注※2

計算値については，「4.　準備作業」の「チャネルのネゴシエーション」を参照してください。

注※3

この属性はclussdrでは相手クラスタレシーバチャネルから連絡されません。

dcmtcq_uoc_mqcdの宣言形式

typedef struct {
 MQCHAR  ChannelName[24];       /* チャネル名 */
 MQLONG  Version;               /* 構造体バージョン番号 */
 MQLONG  ChannelType;           /* チャネルタイプ */
 MQCHAR  ClusterName[52];       /* クラスタ名 */
 MQLONG  BatchSize;             /* バッチサイズ */
 MQCHAR  XmitQName[52];         /* 転送キュー名 */
 MQLONG  MaxMsgLength;          /* 最大メッセージ長 */
 MQLONG  MaxSegLength;          /* 最大セグメントサイズ */
 MQLONG  SeqNumberWrap;         /* メッセージシーケンス番号の
                                                     最大値 */
 MQLONG  BufType;               /* バッファ方式 */
 MQLONG  SendBufGroup;          /* 送信バッファグループ番号 */
 MQLONG  ReceiveBufGroup;       /* 受信バッファグループ番号 */
 MQLONG  MsgEdtBufGroup;        /* メッセージ編集出口バッファ
                                                   グループ番号 */
 MQLONG  MsgEdtBufCount;        /* メッセージ編集出口バッファ数 */
 MQLONG  StartType;             /* チャネル確立方式 */
 MQLONG  LongRetryType;         /* 長期確立再試行の要否 */
 MQLONG  LongRetryCount;        /* 長期確立再試行の回数 */
 MQLONG  LongRetryInterval;     /* 長期確立再試行の間隔 */
 MQCHAR  OwnIPAddr[16];         /* 自ホストのIPアドレス */
 MQCHAR  OwnHostName[256];      /* 自ホストのホスト名 */
 MQCHAR  OwnPortNum[8];         /* 自ホストのポート番号 */
 MQCHAR  OwnServName[36];       /* 自ホストのサービス名 */
 MQCHAR  PartnerIPAddr[16];     /* 相手ホストのIPアドレス */
 MQCHAR  PartnerHostName[256];  /* 相手ホストのホスト名 */
 MQCHAR  PartnerPortNum[8];     /* 相手ホストのポート番号 */
 MQCHAR  PartnerServName[36];   /* 相手ホストのサービス名 */
 MQLONG  ConRspRecvInterval;    /* 開始要求応答受信監視
                                                   タイマ値 */
 MQLONG  RspMsgRecvInterval;    /* 確認メッセージ受信監視
                                                   タイマ値 */
 MQLONG  NextSegRecvInterval;   /* 継続セグメント受信監視
                                                   タイマ値 */
 MQLONG  DiscInterval;          /* 転送キュー監視間隔 */
 MQLONG  DiscIntervalCount;     /* 転送キュー監視回数 */
 MQLONG  DiscInterval2;         /* 切断時間間隔 */
 MQLONG  DiscInterval2Effect;   /* 切断時間間隔使用の有無 */
 MQLONG  TimeoutConRetry;       /* タイムアウト時チャネル確立
                                                   再試行の要否 */
 MQLONG  NextMsgRecvInterval;   /* 継続メッセージ受信監視
                                                     タイマ値 */
 MQLONG  HeartbeatInterval;     /* ハートビート間隔 */
 MQLONG  BatchInterval;         /* バッチ終了待ちタイマ値 */
 MQCHAR  MsgEdtUserData[32];    /* メッセージ編集出口
                                                 ユーザデータ */
 MQCHAR  SendUserData[32];      /* 送信出口ユーザデータ */
 MQCHAR  ReceiveUserData[32];   /* 受信出口ユーザデータ */
 MQLONG  TcpSendBufLength;      /* TCP/IP出力用バッファサイズ */
 MQLONG  TcpRecvBufLength;      /* TCP/IP入力用バッファサイズ */
 MQLONG  ConvCCSID;             /* 変換後CCSID */
 MQLONG  NonPersistentMsgSpeed; /* 非永続メッセージ転送速度 */
 MQLONG  TranQMonType;          /* 転送キュー監視方式 */
 MQLONG  NetworkPriority;       /* ネットワーク接続優先順位 */
 MQCHAR  AlterTime[12];         /* チャネル定義の更新時刻 */
 MQLONG  MsgChaProRetry;        /* MQプロトコルエラー時の
                                      チャネル確立再試行の有無 */
 MQLONG  AdoptCheck;            /* チャネル状態の不一致時の
                                                強制再接続条件 */
 MQLONG  ShortRetryType;        /* 短期確立再試行の要否 */
 MQLONG  ShortRetryCount;       /* 短期確立再試行の回数 */
 MQLONG  ShortRetryInterval;    /* 短期確立再試行の間隔 */
 MQCHAR  SecurityUserData[32];  /* セキュリティ出口ユーザデータ */
 MQCHAR  SendExit[128];         /* チャネル送信出口名 */
 MQCHAR  RcvExit[128];          /* チャネル受信出口名 */
 MQCHAR  MsgExit[128];          /* メッセージ出口名 */
 MQCHAR  ScyExit[128];          /* セキュリティ出口名 */
 MQCHAR  Descr[64];             /* 注釈 */
 MQCHAR  MCAUser[64];           /* MCAユーザID */
 MQLONG  MCAType;               /* MCAタイプ */
 MQLONG  TcpRetryCount;         /* TCP/IP確立確認の回数 */
 MQLONG  TcpRetryInterval;      /* TCP/IP確立確認の間隔 */
 MQLONG  StrucLength;           /* チャネルデータ定義ブロック
                                       (dcmtcq_uoc_mqcd)の長さ */
 MQLONG  SndJnlIO;              /* 送信チャネルジャーナル出力条件 */
 MQLONG  BatchMilInterval;      /* バッチ終了待ちタイマ(ミリ秒) */
 MQLONG  FastSndMsg;            /* 予約領域 */
 MQLONG  OwnPortAltNum;         /* 自システムのポート番号使用数 */
 MQCHAR  Reserve[288];          /*予約領域 */
} dcmtcq_uoc_mqcd;

ChannelName（MQCHAR*24型）
チャネル名〔-c〕
領域の長さはDCMTCQ_MQ_CHANNEL_NAME_LENGTHによって与えられます。

Version（MQLONG型）
構造体バージョン番号（DCMTCQ_MQCD_VERSION_7）
構造体のバージョンは7です。バージョン2以降の構造体だけに存在するフィールドについては，後述のフィールドの説明で示します。新しいバージョンの構造体では旧バージョンの予備領域以外のフィールド名および属性は変わりません。したがって，出口ではバージョン番号が，出口に必要なフィールドを含む最低バージョンの番号以上であるかどうかを検査する必要があります。
予約領域については予告なく変更することがあります。

ChannelType（MQLONG型）
チャネルタイプ〔-y type〕
次に示すどれかの値が設定されます。

DCMTCQ_MQCHT_SENDER：センダ

DCMTCQ_MQCHT_SERVER：サーバ

DCMTCQ_MQCHT_RECEIVER：レシーバ

DCMTCQ_MQCHT_REQUESTER：リクエスタ

DCMTCQ_MQCHT_CLUSSDR：クラスタセンダ

DCMTCQ_MQCHT_CLUSRCVR：クラスタレシーバ

ClusterName（MQCHAR*52型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
クラスタ名〔-a cluster〕
この領域の長さはDCMTCQ_MQ_CLUSTER_NAME_LENGTHによって与えられます。
領域は名称の後ろに¥0を格納し，定義で指定できるクラスタ名の最大サイズよりも大きくなるので注意してください。

BatchSize（MQLONG型）
バッチサイズ〔-j〕
チャネル開始時のネゴシエーション前に出口が呼び出された場合，チャネル定義のバッチサイズが設定されます。ネゴシエーション後に呼び出された場合は，ネゴシエーションの結果が設定されます。

XmitQName（MQCHAR*52型）
転送キュー名〔-q〕
TCP定義のmqtalccha定義コマンドの-qオプションで定義した値が格納されます。
この領域の長さはDCMTCQ_MQ_Q_NAME_LENGTHによって与えられます。

MaxMsgLength（MQLONG型）
最大メッセージ長〔-m maxmsg〕
チャネル開始時のネゴシエーション前に出口が呼び出された場合，チャネル定義の最大メッセージ長が設定されます。ネゴシエーション後に呼び出された場合は，ネゴシエーションの結果が設定されます。

MaxSegLength（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
最大セグメントサイズ〔-m maxseg〕
チャネル開始時のネゴシエーション前に出口が呼び出された場合，チャネル定義最大セグメントサイズが設定されます。ネゴシエーション後に呼び出された場合は，ネゴシエーションの結果が設定されます。

SeqNumberWrap（MQLONG型）
メッセージシーケンス番号の最大値〔-w〕

BufType（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
バッファ方式〔-g buftype〕
次に示すどちらかの値が設定されます。

DCMTCQ_MQBUFT_SEG：セグメント方式

DCMTCQ_MQBUFT_MSG：メッセージ方式

SendBufGroup（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
送信バッファグループ番号〔-g sndbuf〕

ReceiveBufGroup（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
受信バッファグループ番号〔-g rcvbuf〕

MsgEdtBufGroup（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
メッセージ編集出口バッファグループ番号〔-e medbuf〕

MsgEdtBufCount（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
メッセージ編集出口バッファ数〔-e medcnt〕

StartType（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
チャネル確立方式〔-i〕
次に示すどれかの値が設定されます。

DCMTCQ_MQSTART_AUTO：トリガ起動またはネットワークリクエストによってチャネルを自動確立します。

DCMTCQ_MQSTART_AUTO2：MQTサーバのサービス開始直後にチャネルを自動確立します。

DCMTCQ_MQSTRAT_MANUAL：チャネルをmqtstachaコマンド入力によって確立します。

LongRetryType（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
長期確立再試行の要否〔-b bretrylg〕
次に示すどちらかの値が設定されます。

DCMTCQ_MQLRTY_YES：長期確立再試行を実行します。

DCMTCQ_MQLRTY_NO：長期確立再試行を実行しません。

LongRetryCount（MQLONG型）
長期確立再試行の回数〔-b bretrylgcnt〕

LongRetryInterval（MQLONG型）
長期確立再試行の間隔〔-b bretrylgint〕

OwnIPAddr（MQCHAR*16型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
自ホストのIPアドレス〔-r ipaddr〕
領域の長さはDCMTCQ_MQ_IP_ADDR_LENGTHによって与えられます。
形式は"nnn.nnn.nnn.nnn"の文字型です。nnnには0～255の文字が設定されます。nnnの値として先頭に0を指定した場合は，8進数値として扱われます。
また，データを格納する領域のあとに¥0を付けます。

OwnHostName（MQCHAR*256型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
自ホストのホスト名〔-r hostname〕
領域の長さはDCMTCQ_MQ_HOST_NAME_LENGTHによって与えられます。
また，データを格納する領域のあとに¥0を付けます。

OwnPortNum（MQCHAR*8型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
自ホストのポート番号〔-r portno〕
領域の長さはDCMTCQ_MQ_PORT_NUM_LENGTHによって与えられます。

OwnServName（MQCHAR*36型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
自ホストのサービス名〔-r servname〕
領域の長さはDCMTCQ_MQ_SERV_NAME_LENGTHによって与えられます。
また，データを格納する領域のあとに¥0を付けます。

PartnerIPAddr（MQCHAR*16型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
相手ホストのIPアドレス〔-o oipaddr〕
領域の長さはDCMTCQ_MQ_IP_ADDR_LENGTHによって与えられます。
形式は"nnn.nnn.nnn.nnn"の文字型です。nnnには0～255の文字が設定されます。nnnの値として先頭に0を指定した場合は，8進数値として扱われます。
また，データを格納する領域のあとに¥0を付けます。

PartnerHostName（MQCHAR*256型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
相手ホストのホスト名〔-o ohostname〕
領域の長さはDCMTCQ_MQ_HOST_NAME_LENGTHによって与えられます。
また，データを格納する領域のあとに¥0を付けます。

PartnerPortNum（MQCHAR*8型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
相手ホストのポート番号〔-o oportno〕
領域の長さはDCMTCQ_MQ_PORT_NUM_LENGTHによって与えられます。

PartnerServName（MQCHAR*36型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
相手ホストのサービス名〔-o oservname〕
領域の長さはDCMTCQ_MQ_SERV_NAME_LENGTHによって与えられます。
また，データを格納する領域のあとに¥0を付けます。

ConRspRecvInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
開始要求応答受信監視タイマ値〔-v tim1〕

RspMsgRecvInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
確認メッセージ受信監視タイマ値〔-v tim2〕

NextSegRecvInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
継続セグメント受信監視タイマ値〔-v tim3〕

DiscInterval（MQLONG型）
転送キュー監視間隔〔-v tim4〕

DiscIntervalCount（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
転送キュー監視回数〔-v tim4cnt〕

DiscInterval2（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_3で追加）
切断時間間隔（秒数）〔-v dtim〕

DiscInterval2Effect（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_3で追加）
切断時間間隔使用の有無〔-v dtimefct〕
次に示すどちらかの値が設定されます。

DCMTCQ_DINT2EFC_YES：切断時間間隔（DiscInterval2）による監視をします。

DCMTCQ_DINT2EFC_NO：切断時間間隔（DiscInterval2）による監視をしません。

TimeoutConRetry（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
タイムアウト時チャネル確立再試行の要否〔-v vretry〕
次に示すどちらかの値が設定されます。

DCMTCQ_MQTIMO_YES：チャネル確立再試行を実行します。

DCMTCQ_MQTIMO_NO：チャネル確立再試行を実行しません。

NextMsgRecvInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
継続メッセージ受信監視タイマ値〔-v mtim〕

HeartbeatInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_2で追加）
ハートビート間隔（秒数）〔-v htim〕
チャネル開始時のネゴシエーション前に出口が呼び出された場合，チャネル定義のハートビート間隔が設定されます。ネゴシエーション後に呼び出された場合は，ネゴシエーションの結果が設定されます。

BatchInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_3で追加）
バッチ終了待ちタイマ値（秒数）〔-v btim〕

MsgEdtUserData（MQCHAR*32型）（Version=DCMTCQ_MQCD_VERSION_2で追加）
メッセージ編集出口ユーザデータ〔-x metexdata〕
これは，dcmtcq_uoc_mqcxpパラメタのExitData領域に設定されて出口に渡されます。
メッセージ編集出口ユーザデータは，32バイト固定です。32バイトに満たない
場合は，スペースで補われます。
この領域の長さはDCMTCQ_MQ_EXIT_DATA_LENGTHによって与えられます。

SendUserData（MQCHAR*32型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
送信出口ユーザデータ〔-x sndexdata〕
これは，dcmtcq_uoc_mqcxpパラメタのExitData領域に設定されて出口に渡されます。
送信出口ユーザデータは，32バイト固定です。32バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_EXIT_DATA_LENGTHによって与えられます。

ReceiveUserData（MQCHAR*32型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
受信出口ユーザデータ〔-x rcvexdata〕
これは，dcmtcq_uoc_mqcxpパラメタのExitData領域に設定されて出口に渡されます。
受信出口ユーザデータは，32バイト固定です。32バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_EXIT_DATA_LENGTHによって与えられます。

TcpSendBufLength（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
TCP/IP出力用バッファサイズ〔-t tcpsndbuf〕

TcpRecvBufLength（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
TCP/IP入力用バッファサイズ〔-t tcprcvbuf〕

ConvCCSID（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
変換後CCSID〔-d cnvccsid〕

NonPersistentMsgSpeed（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_2で追加）
非永続メッセージ転送速度〔-s npmspeed〕
チャネル開始時のネゴシエーション前に出口が呼び出された場合，チャネル定義の非永続メッセージの送信速度が設定されます。ネゴシエーション後に呼び出された場合は，ネゴシエーションの結果が設定されます。
次に示すどちらかの値が設定されます。

DCMTCQ_MQNPMS_NORMAL：標準速度

DCMTCQ_MQNPMS_FAST：高速度

TranQMonType（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
転送キュー監視方式〔-z〕
次に示すどちらかの値が設定されます。

DCMTCQ_MQTRNQS_TIMER：タイマ方式

DCMTCQ_MQTRNQS_EVENT：イベント方式

これは，ChannelTypeがDCMTCQ_MQCHT_SENDER，またはDCMTCQ_MQCHT_SERVERの場合に有効です。

NetworkPriority（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
ネットワーク接続優先順位〔-p netprty〕

AlterTime（MQCHAR*12型）（Version=DCMTCQ_MQCD_VERSION_4で追加）
チャネル定義の更新時刻
チャネル定義の作成および更新の日付／時刻が，通算の秒数で設定されます。

MsgChaProRetry（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
MQプロトコルエラー時のチャネル確立再試行の有無〔-b bretrymcp〕
次に示すどちらかの値が設定されます。

DCMTCQ_MQMCP_NO：チャネル確立再試行をしません。

DCMTCQ_MQMCP_YES：チャネル確立再試行をします。

AdoptCheck（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
チャネル状態の不一致時の強制再接続条件〔-f adoptchk〕
次に示すどれかの値が設定されます。

DCMTCQ_MQADPCK_OFF：強制再接続はできません。

DCMTCQ_MQADPCK_NAME：強制再接続を受け付けます。

DCMTCQ_MQADPCK_QMGR：同じキューマネジャ名の要求で強制再接続を受け付けます。

DCMTCQ_MQADPCK_IPADDR：同じIPアドレスの要求で強制再接続を受け付けます。

DCMTCQ_MQADPCK_ALL：同じキューマネジャ名とIPアドレスの要求で強制再接続を受け付けます。

ShortRetryType（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
短期確立再試行の要否〔-b bretry〕
次に示すどちらかの値が設定されます。

DCMTCQ_MQSRTY_YES：短期確立再試行を実行します。

DCMTCQ_MQSRTY_NO：短期確立再試行を実行しません。

ShortRetryCount（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
短期確立再試行の回数〔-b bretrycnt〕

ShortRetryInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
短期確立再試行の間隔〔-b bretryint〕

SecurityUserData（MQCHAR*32型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
セキュリティ出口ユーザデータ〔-x scyexdata〕
これは，dcmtcq_uoc_mqcxpパラメタのExitData領域に設定されて出口に渡されます。
セキュリティ出口ユーザデータは，32バイト固定です。32バイトに満たない場合は，スペースで補われます。この領域の長さは，DCMTCQ_MQ_EXIT_DATA_LENGTHによって与えられます。

SendExit（MQCHAR*128型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
チャネル送信出口名〔-x sendexit〕
チャネル送信出口名は，128バイト固定です。128バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_EXIT_NAME_LENGTHによって与えられます。

RcvExit（MQCHAR*128型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
チャネル受信出口名〔-x rcvexit〕
チャネル受信出口名は，128バイト固定です。128バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_EXIT_NAME_LENGTHによって与えられます。

MsgExit（MQCHAR*128型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
メッセージ出口名〔-x msgexit〕
メッセージ出口名は，128バイト固定です。128バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_EXIT_NAME_LENGTHによって与えられます。

ScyExit（MQCHAR*128型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
セキュリティ出口名〔-x scyexit〕
セキュリティ出口名は，128バイト固定です。128バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_EXIT_NAME_LENGTHによって与えられます。

Descr（MQCHAR*64型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
注釈〔-h〕
注釈は，64バイト固定です。64バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_DESCR_LENGTHによって与えられます。

MCAUser（MQCHAR*64型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
MCAユーザID〔-mc mcauser〕
MCAユーザIDは，64バイト固定です。64バイトに満たない場合は，スペースで補われます。
この領域の長さは，DCMTCQ_MQ_MCAUSER_LENGTHによって与えられます。

MCAType（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
MCAタイプ〔-mc mcatype〕
次に示すどちらかの値が設定されます。

DCMTCQ_MQMCATYPE_PROCESS：MCAは独立のプロセスとして動作します。

DCMTCQ_MQMCATYPE_THREAD：MCAは独立のスレッドとして動作します。

TcpRetryCount（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
TCP/IP確立確認の回数〔-t tretrycnt〕

TcpRetryInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
TCP/IP確立確認の間隔（秒数）〔-t tretryint〕

StrucLength（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_5で追加）
チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）の長さ（バイト）

SndJnlIO（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_6で追加）
送信チャネルジャーナル出力条件〔-jn sndjnl〕
次に示すどちらかの値が設定されます。

DCMTCQ_SNDJNL_FLUSH：即時フラッシュ（ディスク出力）します。

DCMTCQ_SNDJNL_NOFLUSH：即時フラッシュ（ディスク出力）しません。

BatchMilInterval（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_6で追加）
バッチ終了待ちタイマ値（ミリ秒）〔-v bmtim〕

FastSndMsg（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_7で追加）
システムで使用するための予約領域です。

OwnPortAltNum（MQLONG型）（Version=DCMTCQ_MQCD_VERSION_7で追加）
自システムのポート番号使用数〔-r portnum〕

(4)　バッファリスト（dcmtcq_uoc_bufflist）

バッファリストは，メッセージを格納した送受信バッファや，それを編集する場合に使用する編集バッファをやり取りするために使用されます。

dcmtcq_uoc_bufflistの宣言形式

typedef struct {
 MQLONG             Buff_num;     /* バッファ数 */
 MQLONG             Data_buff_num;
                  /* データを格納する編集用バッファエントリ番号 */
 dcmtcq_uoc_buffinf Buffinf_array[DCMTCQ_UOC_BUFF_MAX];
                                  /* バッファ情報領域 */
} dcmtcq_uoc_bufflist;

typedef struct {
 MQLONG  Buff_length;             /* バッファ長 */
 MQLONG  Used_buff_length;        /* 使用バッファ長 */
 MQCHAR  *Buffer_addr;            /* バッファアドレス */
 MQCHAR  Reserve1[4];             /* 予約領域 */
} dcmtcq_uoc_buffinf;

注

64ビット版の場合は，次の形式になります。

         ：
 MQCHAR  *Buffer_addr;            /* バッファアドレス */
} dcmtcq_uoc_buffinf;

Buff_num（MQLONG型）　－input
バッファ数
バッファ情報の数が格納されます。
送受信バッファの場合，必ず1が格納されます。
編集用バッファの場合，MQT通信構成定義に編集用バッファを指定しないときは，0が格納されます。

Data_buff_num（MQLONG型）　－output
データを格納する編集用バッファエントリ番号
UOCからメッセージを編集用バッファに格納した（ExitResponse2=DCMTCQ_MQXR2_USE_EDIT_BUFFER）場合，データを格納したバッファのエントリ番号を格納します。
指定が省略された場合（Data_buff_num=0）は，編集用バッファの第1エントリがメッセージとして扱われます。また，複数の編集バッファに分割して格納できません。

Buffinf_array（dcmtcq_uoc_buffinf型）　－intput/output
バッファ情報領域
UOCとの間でやり取りされるメッセージが格納される領域です。
次に示す領域から構成されます。

Buff_length（MQLONG型）　－input
チャネル出口パラメタブロックのExitReasonに，DCMTCQ_MQXR_MSGが指定された場合にだけ有効な領域です。
UOC内でバッファとして使用できる長さが格納されます。
送受信バッファリストの場合，MQXQH構造体の長さを含みます。

Used_buff_length（MQLONG型）　－intput/output
チャネル出口パラメタブロックのExitReasonに，DCMTCQ_MQXR_MSGが指定された場合にだけ有効な領域です。
Buff_lengthで指定された長さのうち，使用している有効な領域長（先頭からの長さ）が格納されます。UOC処理後に有効な領域長が変化した場合は，UOCのリターン前に更新してください。更新する値には，MQXQH構造体の長さを含めてください。
Buff_lengthの値よりも大きい値を格納した場合は，UOCが異常終了します。

Buffer_addr（MQCHARポインタ型）　－input
バッファアドレス
データが格納されている領域のアドレスが格納されます。格納されているデータは，UOCから作成，および更新できます。データ形式については，「3.2.2　UOCに渡されるデータ形式」を参照してください。

3.3.3　UOCパラメタ指定についての注意事項

UOCで設定したパラメタに不正があった場合，エラーログメッセージ（KFCA16347-E）が出力され，チャネル状態は「チャネル使用不可」にして終了します。

ただし，ExitReasonがDCMTCQ_MQXR_ALTの場合，UOCが設定したチャネルデータ定義（dcmtcq_uoc_mqcd）に不正な値が設定されても，チャネルは設定された値を無視して処理を続行します。

3.4　UOC呼び出しの流れ

メッセージ編集出口UOCが呼び出されるタイミングについて，次の図に示します。

図3-3　メッセージ編集出口UOCが呼び出されるタイミング

3.5　UOCの組み込み

TP1/Message QueueにUOCを組み込むには，次に示す手順でMQT実行形式プログラムを作成する必要があります。

UOCを作成する

MQTメイン関数を作成し，メイン関数でUOCの関数アドレスを指定する

UOC，およびMQTメイン関数をコンパイルし，OpenTP1およびTP1/Message Queueが提供する各種のライブラリと結合する
MQT実行形式プログラムが作成されます。

MQTのシステムサービス情報定義を作成する
3.で作成した実行形式プログラムをTP1/Message Queueから起動できるようになります。

＜この節の構成＞

3.5.1　MQTメイン関数の作成

3.5.2　MQT実行形式プログラムの作成（UNIX）

3.5.3　MQT実行形式プログラムの作成（Windows）

3.5.4　システムサービス情報定義の作成

3.5.1　MQTメイン関数の作成

MQTメイン関数は，UOC関数アドレスを指定し，MQT通信プロセスメイン関数を呼び出すプログラムです。MQTメイン関数とUOCは，同じ言語（ANSI C，C++，またはK&R版C言語）で作成する必要があります。

MQTメイン関数のコーディングについて，次に示します。

ANSI C，C++言語の場合

#include <dcmtcquo.h>     /* TP1/MQ用ヘッダファイル    */ …1.

extern long med_uoc01(dcmtcq_uoc_parmlist *);
                        /* メッセージ編集出口UOC関数 */ …2.

dcmtcq_uoc_def_t dcmtcq_uoctbl =
                              {NULL, NULL, NULL, NULL}; …3.

int main(void)
{
 dcmtcq_uoctbl.med_uoc = (dcmqt_uocfunc)med_uoc01;
               /* メッセージ編集出口UOC関数アドレス設定 */ …4.
 dc_mtcq_main();    /* MQT通信プロセスメイン関数コール  */ …5.
 return(0);                  /* MQTメイン関数リターン  */ …6.
}

プロトコル提供ヘッダを取り込みます。

使用するUOC関数のプロトタイプ宣言をします。UOCのリターン値はlong型にしてください。

UOCテーブルを確保して，初期化します。必ずこのとおりコーディングしてください。

UOC関数のアドレスを，UOCテーブルに設定します。
dcmtcq_uoctbl.med_uoc：メッセージ編集出口UOC関数のアドレス

MQT通信プロセスメイン関数を呼び出します。必ずこのとおりコーディングしてください。

MQTメイン関数をリターンします。

K&R版C言語の場合

#include <dcmtcquo.h>      /* TP1/MQ用ヘッダファイル    */ …1.

extern long med_uoc01();   /* メッセージ編集出口UOC関数 */ …2.

dcmtcq_uoc_def_t dcmtcq_uoctbl;                            …3.

main()
{
 dcmtcq_uoctbl.med_uoc = (dcmtcq_uocfunc)med_uoc01;
              /* メッセージ編集出口UOC関数アドレス設定 */ …4.
 dc_mtcq_main();   /* MQT通信プロセスメイン関数コール  */ …5.
}

プロトコル提供ヘッダを取り込みます。

使用するUOC関数のextern宣言をします。UOCのリターン値はlong型にしてください。

UOCテーブルを確保します。必ずこのとおりコーディングしてください。

UOC関数のアドレスを，UOCテーブルに設定します。
dcmtcq_uoctbl.med_uoc：メッセージ編集出口UOC関数のアドレス

MQT通信プロセスメイン関数を呼び出します。必ずこのとおりコーディングしてください。

3.5.2　MQT実行形式プログラムの作成（UNIX）

MQTメイン関数とUOCをコンパイルし，OpenTP1およびTP1/Message Queueで提供する各種ライブラリを結合して，UOCを含むMQT実行形式プログラムを作成します。UNIXを使用する場合のMQT実行形式ファイルの作成方法，および作成時の注意事項について，次に示します。

なお，ここでは，C言語で作成したUOCオブジェクトファイルおよびMQTメイン関数オブジェクトファイルからMQT実行形式ファイルを作成する方法を示します。C言語の形式（ANSI形式，K&R形式），C++言語で作成する場合，コンパイラの種類によってはコマンドオプションが異なりますので，詳細はコンパイラのマニュアルを参照してください。

＜この項の構成＞

(1)　C言語で作成する例

(2)　MQT実行形式プログラム作成時の注意事項

(1)　C言語で作成する例

MQTメイン関数オブジェクトファイルを作成するコマンド

cc -c※¹ -I$DCDIR※²/include MQTメイン関数ソースファイル名

UOCオブジェクトファイルを作成するコマンド

cc -c※¹ -I$DCDIR※²/include UOCソースファイル名

MQT実行形式プログラムを作成するコマンド

mqtpltcp -A -o 実行形式プログラム名※³
    -m MQTメイン関数オブジェクトファイル名
  〔-i UOCオブジェクトファイル名1 -i UOCオブジェクトファイル名2 …〕
  〔-l ユーザ固有ライブラリ〕 〔-P〕※⁴ 〔-Q〕※⁴

注※1

AIXで64ビット版TP1/Message Queueを使用する場合は，オプション「-q64」を追加してください。

HP-UX（IPF）で64ビット版TP1/Message Queueを使用する場合は，オプション「+DD64」を追加してください。

次に示す64ビット版Linuxで32ビット版TP1/Message Queueを使用する場合には，オプション「-m32」を追加してください。

Red Hat Enterprise Linux AS 4 (AMD64 & Intel EM64T)

Red Hat Enterprise Linux ES 4 (AMD64 & Intel EM64T)

Red Hat Enterprise Linux 5 (AMD/Intel 64)

注※2

$DCDIRは，OpenTP1の格納ディレクトリです。

注※3

MQT実行形式プログラム名は，先頭がmqtuで始まる8文字以内の名称です。

注※4

-Pオプションと-Qオプションを指定することで，実行するリンケージコマンドが決まります。使用する環境に合わせて，オプションを指定してください。

言語仕様と想定するリンケージコマンドを次に示します。

OS | 言語仕様と想定するリンケージコマンド
C言語の場合 | C++言語の場合
AIX | xlc | xlC
HP-UX | cc | CC，aCC
Linux | gcc | gcc

-Pオプションと-Qオプション指定時に実行するリンケージコマンドを次に示します。

OS | オプション指定時に実行するリンケージコマンド
-P指定の場合 | -Q指定の場合 | -P，-Q指定の場合
AIX | xlC | xlc | xlc
HP-UX | CC | aCC | cc
Linux | gcc | gcc | gcc

なお，-Pオプションと-Qオプションを同時に指定した場合，あとに指定したオプションが有効になりますので注意してください。

(2)　MQT実行形式プログラム作成時の注意事項

OpenTP1，およびユーザ固有ライブラリは，次に示す順序で検索されます。

$DCDIR

ライブラリパス環境変数の指定ディレクトリ

ユーザ固有ライブラリを$DCDIR以外の場所に格納している場合，ライブラリパス環境変数にユーザ固有ライブラリの格納ディレクトリを指定したあと，mqtpltcpコマンドを実行してください。なお，ライブラリパス環境変数の詳細は，ldコマンドの仕様を参照してください。

mqtpltcpコマンドの実行結果は，次に示すログメッセージで表示されます。

正常終了の場合
Completed to make the uCosminexus TP1/Message Queue(MQT) executable file 実行形式プログラム名

異常終了の場合
Failed to make the uCosminexus TP1/Message Queue(MQT) executable file 実行形式プログラム名

3.5.3　MQT実行形式プログラムの作成（Windows）

MQTメイン関数とUOCをコンパイルし，OpenTP1およびTP1/Message Queueで提供する各種ライブラリを結合して，UOCを含むMQT実行形式プログラムを作成します。Windowsを使用する場合のMQT実行形式ファイルの作成方法，および作成時の注意事項について，次に示します。

＜この項の構成＞

(1)　ANSI CまたはC++で作成する場合

(1)　ANSI CまたはC++で作成する場合

MQTメイン関数オブジェクトファイルを作成するコマンド

cl /c /MD MQTメイン関数ソースファイル名 /I %DCDIR%¥include

注

%DCDIR%は，OpenTP1の格納ディレクトリです。

環境によって，コンパイル時にwarning C4996が出力される場合があります。この場合は，コンパイルオプションに-D_CRT_SECURE_NO_DEPRECATEを追加してください。

UOCオブジェクトファイルを作成するコマンド

cl /c /MD UOCソースファイル名 /I %DCDIR%¥include

MQT実行形式プログラムを作成するコマンド

link /NODEFAULTLIB
    /stack:4194304
    MQTメイン関数オブジェクトファイル名
    UOCオブジェクトファイル名1
    〔UOCオブジェクトファイル名2…〕
    %DCDIR%¥lib¥mtcqerp_sstb.obj
    〔ユーザ固有ライブラリ〕
    %DCDIR%¥lib¥libbetran.lib
    %DCDIR%¥lib¥libtactk.lib
    %DCDIR%¥lib¥libmtcq.lib
    %DCDIR%¥lib¥libmqa.lib
    kernel32.lib※1
    msvcrt.lib※1
    oldnames.lib※1
    mswsock.lib※1
    version.lib※1
    ws2_32.lib※1
    -out:実行形式プログラム名※2

マニフェストファイルを埋め込む場合※3
 mt -manifest 実行形式プログラム名.manifest
    -outputresource:実行形式プログラム名※2

注※1

これらのライブラリの格納ディレクトリを，環境変数LIBに適切に設定してください。

注※2

MQT実行形式プログラム名は，先頭がmqtuで始まる8文字以内の名称です。

注※3

Visual Studio 2005以降で作成したUOCを次のOS上で動作させる場合，マニフェストファイルが必要です。

Windows 7

Windows Server 2003

Windows Server 2008

Windows Vista

Windows XP

マニフェストファイルを埋め込まない場合，プログラムを実行するフォルダ（%DCDIR%¥lib¥servers）にマニフェストファイルをコピーする必要があります。マニフェストファイルの詳細については，コンパイラのドキュメントを参照してください。

なお，Visual Studio 2010を使用してプログラムを作成している場合，マニフェストファイルが作成されないことがあります。この場合，マニフェストファイルは必須ではありません。

3.5.4　システムサービス情報定義の作成

MQTのシステムサービス情報定義を作成して，UOCを組み込んだMQT実行形式プログラムをTP1/Message Queueから起動できるようにします。

システムサービス情報定義の作成方法について，次に示します。

標準で提供されているシステムサービス情報定義を，同一ディレクトリ内に別の名称でコピーする
ファイル名は次に示すとおりに変更してください。また，このファイル名を，MQAサービス定義のmqamqtnam定義コマンドに指定するプロトコル名称として指定してください。

標準デーモンの場合
$DCDIR/lib/sysconf/mqttcpが標準で提供されます。ファイル名をmqtuで始まる14文字以内の識別子に変更してください。

クラスタセンダデーモンの場合
$DCDIR/lib/sysconf/mqttcpcsが標準で提供されます。ファイル名をmqttcpcsuで始まる14文字以内の識別子に変更してください。

クラスタレシーバデーモンの場合
$DCDIR/lib/sysconf/mqttcpcrが標準で提供されます。ファイル名をmqttcpcruで始まる14文字以内の識別子に変更してください。

システムのテキストエディタで，システムサービス情報定義中の実行形式プログラム名を修正する

実行形式プログラム名は，次に示すとおり指定されています。
……：
set module = "mqtdtcp"
……：

「mqtdtcp」の部分を，作成したMQT実行形式プログラムの名称に変更してください。なお，MQT実行形式プログラム名は，mqtuで始まる8文字以内の名称にしてください。

3.6　UOCの作成についての注意事項

UOCの作成についての注意事項について説明します。

＜この節の構成＞

(1)　UOCの異常処理

(2)　UOCが動作するプロセス

(3)　UOCのスタック領域

(4)　使用ライブラリの制限

(5)　バージョンアップ時の注意

(6)　UOCで使用できる関数

(1)　UOCの異常処理

UOCで異常を検知した場合，MQTで定められたリターンコードを使用して，MQTに異常の発生を通知するようにコーディングしてください。UOCでプロセス終了のシグナル，またはabort関数が発行された場合，TP1/Message Queueは異常終了します。

(2)　UOCが動作するプロセス

UOCは，メッセージを送受信しているMQTサーバのプロセス内で動作します。このため，UOCが実行する処理は，同一プロセス内で動作しているすべてのチャネルの動作に影響します。

(3)　UOCのスタック領域

UOCがスタック領域として使用できる領域は，1キロバイトです。

1キロバイトを超えるスタック領域を確保した場合，MQTサーバのメモリが破壊され，不正に動作することがあります。

(4)　使用ライブラリの制限

MQTのUOC機能を使用する場合，UOCから次に示すアプリケーションインタフェースをコールできません。

OpenTP1システムの各プログラムプロダクトが提供するアプリケーションインタフェース

TP1/NET/Libraryが提供するアプリケーションインタフェース

(5)　バージョンアップ時の注意

TP1/Message Queueをバージョンアップした場合，および修正版を組み込んだ場合，UOCを組み込んだMQTデーモンを再度メイクしてください。

UOCおよびUOCメイン関数の再コンパイルおよび再リンケージを実行してください。

(6)　UOCで使用できる関数

UOCを作成する場合，UOCでは次に示す関数を使用できます。ほかの関数を使用した場合の動作は保証できません。

メモリを操作する関数

データ領域管理（例：malloc，free）

共有メモリ管理（例：shmctl，shmget，shmop）

メモリ操作（例：memcpy，memset）

文字列操作（例：strcpy，strcmp）

時間を取得する関数（例：time）

ファイルを操作する関数（例：fopen，fseek，fread，fwrite，fclose）

3.7　UOCの作成例

UOCのサンプルとして，ファイル転送を実現するメッセージ編集UOCのコーディング例について，次に示します。

＜この節の構成＞

(1)　サンプルUOCの機能

(2)　サンプルUOCの所在

(3)　サンプルUOCのコーディング例

(1)　サンプルUOCの機能

MQRMH構造体に指定されたファイルを，送信時にメッセージ内に取り込み，受信時に取り出して格納するUOCです。

(2)　サンプルUOCの所在

ファイル転送を実現するメッセージ編集UOCのソースファイルは，次に示す場所に格納されています。

$DCDIR/examples/mq/exit/c/mqmsgedt.c

(3)　サンプルUOCのコーディング例

0010 /*******************************************************/
0020 /*                                                     */
0030 /* Program name: MsgEdit                               */
0040 /*                                                     */
0050 /* Description:  Sample program of the user exit       */
0060 /*                        routine for message editing  */
0070 /*                                                     */
0080 /*******************************************************/
0090 /*                                                     */
0100 /* Function:                                           */
0110 /*                                                     */
0120 /* This sample program processes messages whose        */
0130 /* reference header (MQRMH) has the object type        */
0140 /* matching with the message editing exit user data of */
0150 /* the channel definition.                             */
0160 /* When the channel type is sender, server or clussdr, */
0170 /* the program takes the data of the file with the     */
0180 /* send object name described in the message reference */
0190 /* header, and copies the whole data length from the   */
0200 /* offset to the application data area of the          */
0210 /* transmission buffer.                                */
0220 /* If the program cannot copy all the messages in the  */
0230 /* file to the available area in the                   */
0240 /* transmission buffer, an error will be returned.     */
0250 /* An error will also be returned when an error occurs */
0260 /* while accessing the file.                           */
0270 /* A successful return will set the following          */
0280 /* information: Channel exit parameter block           */
0290 /*                        (dcmtcq_uoc_mqxcp structure) */
0300 /*     ExitResponse   = DCMTCQ_MQXCC_OK                */
0310 /*     ExitResponse2  = DCMTCQ_MQXR2_USE_TRAN_BUFFER   */
0320 /* Transmission buffer list                            */
0330 /*                      (dcmtcq_uoc_buffinf structure) */
0340 /*       Used_buff_length += Data_length               */
0350 /* An error return will set the following information: */
0360 /* Channel exit parameter block                        */
0370 /*                        (dcmtcq_uoc_mqxcp structure) */
0380 /*     ExitResponse   = DCMTCQ_MQXCC_SUPPRESS_FUNCTION */
0390 /*     Feedback       = MQFB_STOPPED_BY_MSG_EXIT       */
0400 /*                                                     */
0410 /* When the channel type is requester, receiver or     */
0420 /* clusrcvr, the program takes the messages in the     */
0430 /* application data area of the transmission buffer,   */
0440 /* and outputs the whole data length from the offset   */
0450 /* to the file with the destination object name        */
0460 /* specified in the message reference header.          */
0470 /* If the offset value is 0, the program creates a     */
0480 /* new file. Otherwise, the messages are added to the  */
0490 /* end of the file.                                    */
0500 /* If the message being added encounters the condition */
0510 /* that the offset value is so small that the file's   */
0520 /* trailing end is not reached, the program discards   */
0530 /* the message.                                        */
0540 /* If the offset value is greater, the program returns */
0550 /* an error.                                           */
0560 /* The user exit routine will return an error when     */
0570 /* accessing the file encounters an abnormality.       */
0580 /* A successful return will set the following          */
0590 /* information:                                        */
0600 /* Channel exit parameter block                        */
0610 /*                        (dcmtcq_uoc_mqxcp structure) */
0620 /*     ExitResponse   = DCMTCQ_MQXCC_OK                */
0630 /*     ExitResponse2  = DCMTCQ_MQXR2_USE_TRAN_BUFFER   */
0640 /* Transmission buffer list                            */
0650 /*                     (dcmtcq_uoc_buffinf structure)  */
0660 /*     Used_buff_length  = Transmission header (MQXQH) */
0670 /*         length + Message_reference_header_length    */
0680 /* An error return will set the following information: */
0690 /* Channel exit parameter block                        */
0700 /*                        (dcmtcq_uoc_mqxcp structure) */
0710 /*     ExitResponse   = DCMTCQ_MQXCC_SUPPRESS_FUNCTION */
0720 /*     Feedback       = MQFB_STOPPED_BY_MSG_EXIT       */
0730 /*                                                     */
0740 /*******************************************************/
0750 /*                                                     */
0760 /* The program does not convert the application data   */
0770 /* containing the message reference header.  In order  */
0780 /* to use this program for transmission between        */
0790 /* different machines requiring data conversion, add   */
0800 /* a data conversion process.                          */
0810 /*                                                     */
0820 /*******************************************************/
0830
0840 #include <errno.h>
0850 #include <stdio.h>
0860 #include <stdlib.h>
0870 #include <stddef.h>
0880 #include <string.h>
0890 #include <ctype.h>
0900
0910 #include <cmqc.h>
0920 #include <dcmtcquo.h>
0930
0940 long MsgEdit(dcmtcq_uoc_parmlist *ParmList);
0950
0960 /*******************************************************/
0970 /* Constants                                           */
0980 /*******************************************************/
0990 #define MAX_FILENAME_LENGTH 256
1000 #define LOGICAL_OFFSET_VAL  1000000000L
1010
1020
1030 long MsgEdit(dcmtcq_uoc_parmlist *ParmList)
1040 {
1050   PMQXQH    pMQXQH;
1060   PMQRMH    pMQRMH;
1070   MQLONG    FileDataOffset;
1080                          /* offset of data within file */
1090   MQLONG    FeedbackCode = 0;         /* feedback code */
1100   char      *pMsgData;   /* pointer to data
1110                                   within reference msg */
1120   char      DestFileName[MAX_FILENAME_LENGTH+1];
1130                       /* Name of file at receiving end */
1140   char      SrcFileName[MAX_FILENAME_LENGTH+1];
1150                         /* Name of file at sending end */
1160   FILE      *fd = NULL;             /* file descriptor */
1170   char      mode[4];                 /* file open mode */
1180   long      position;         /* position within file. */
1190   int       rc;                         /* return code */
1200   size_t    itemswritten;        /* returned by fwrite */
1210   size_t    bytesread;            /* returned by fread */
1220   char      dummy;                        /* work area */
1230   MQLONG    MsgSpace;
1240                     /* Space remaining in input buffer */
1250   MQLONG    ReadLength;      /* Number of bytes to read
1260                                              from file */
1270   MQLONG    WriteLength;     /* Number of bytes to write
1280                                                to file */
1290   int       WriteData = 1;     /* Do we write the data */
1300   MQLONG    InputDataLength;   /* Length requested
1310                                       in reference msg */
1320
1330   ParmList->mqcxp_adr->ExitResponse  = DCMTCQ_MQXCC_OK;
1340   ParmList->mqcxp_adr->ExitResponse2 =
1350                             DCMTCQ_MQXR2_USE_TRAN_BUFFER;
1360
1370   switch(ParmList->mqcxp_adr->ExitId)
1380   {
1390     case DCMTCQ_MQXT_CHANNEL_MSGEDT_EXIT:
1400       break;
1410     default:
1420       FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
1430       goto UOC_EXIT;
1440   }
1450
1460   switch(ParmList->mqcxp_adr->ExitReason)
1470   {
1480     case DCMTCQ_MQXR_INIT:
1490       goto UOC_EXIT;
1500     case DCMTCQ_MQXR_TERM:
1510       goto UOC_EXIT;
1520     case DCMTCQ_MQXR_MSG:
1530       break;
1540     case DCMTCQ_MQXR_ALT:
1550       goto UOC_EXIT;
1560     default:
1570       FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
1580       goto UOC_EXIT;
1590   }
1600
1610   /*****************************************************/
1620   /* Get addresses of transmission header and message  */
1630   /* itself. The message should start with a reference */
1640   /* message header.                                   */
1650   /*****************************************************/
1660
1670   pMQXQH = (PMQXQH)
1680     (ParmList->tbuflist_adr->Buffinf_array[0].Buffer_addr);
1690   pMQRMH = (PMQRMH)
1700     (ParmList->tbuflist_adr->Buffinf_array[0]
1710      .Buffer_addr + sizeof(MQXQH));
1720
1730   /*****************************************************/
1740   /* If the message format does not indicate a         */
1750   /* reference message then ignore the message.        */
1760   /*****************************************************/
1770   if (memcmp(pMQXQH->MsgDesc.Format,
1780              MQFMT_REF_MSG_HEADER,
1790              MQ_FORMAT_LENGTH))
1800   {
1810     goto UOC_EXIT;
1820   }
1830
1840   /*****************************************************/
1850   /* If the object type does not match the type        */
1860   /* specified in the channel definition then ignore   */
1870   /* the message.                                      */
1880   /*****************************************************/
1890   if (memcmp(pMQRMH->ObjectType,
1900              ParmList->mqcxp_adr->ExitData,
1910              sizeof(pMQRMH->ObjectType)))
1920   {
1930     goto UOC_EXIT;
1940   }
1950
1960   /*****************************************************/
1970   /* Check that the SrcEnv field lies within the       */
1980   /* structure                                         */
1990   /*****************************************************/
2000   if (pMQRMH->SrcEnvLength < 0 ||
2010       (pMQRMH->SrcEnvLength > 0 &&
2020        (pMQRMH->SrcEnvLength + pMQRMH->SrcEnvOffset) >
2030        pMQRMH->StrucLength))
2040   {
2050     FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
2060     goto UOC_EXIT;
2070   }
2080
2090   /*****************************************************/
2100   /* Check that the SrcName field lies within the      */
2110   /* structure                                         */
2120   /*****************************************************/
2130   if (pMQRMH->SrcNameLength < 0 ||
2140       (pMQRMH->SrcNameLength > 0 &&
2150        (pMQRMH->SrcNameLength + pMQRMH->SrcNameOffset) >
2160        pMQRMH->StrucLength))
2170   {
2180     FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
2190     goto UOC_EXIT;
2200   }
2210
2220   /*****************************************************/
2230   /* Check that the DestEnv field lies within the      */
2240   /* structure                                         */
2250   /*****************************************************/
2260   if (pMQRMH->DestEnvLength < 0 ||
2270       (pMQRMH->DestEnvLength > 0 &&
2280        (pMQRMH->DestEnvLength + pMQRMH->DestEnvOffset) >
2290        pMQRMH->StrucLength))
2300   {
2310     FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
2320     goto UOC_EXIT;
2330   }
2340
2350   /*****************************************************/
2360   /* Check that the DestName field lies within the     */
2370   /* structure                                         */
2380   /*****************************************************/
2390   if (pMQRMH->DestNameLength < 0 ||
2400       (pMQRMH->DestNameLength > 0 &&
2410        (pMQRMH->DestNameLength + pMQRMH->DestNameOffset) >
2420        pMQRMH->StrucLength))
2430   {
2440     FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
2450     goto UOC_EXIT;
2460   }
2470
2480   /*****************************************************/
2490   /* Check that the message contains a complete MQRMH  */
2500   /* structure                                         */
2510   /*****************************************************/
2520   if (pMQRMH->StrucLength >
2530       (MQLONG)(ParmList->tbuflist_adr->
2540       Buffinf_array[0].Used_buff_length - sizeof(MQXQH)))
2550   {
2560     FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
2570     goto UOC_EXIT;
2580   }
2590
2600   /*****************************************************/
2610   /* Extract the following values from the reference   */
2620   /* message.                                          */
2630   /*  Offset of data within the file.                  */
2640   /*  Length of data to be read or written             */
2650   /*  Name of file on destination system.              */
2660   /*  Name of file on source system.                   */
2670   /*****************************************************/
2680   FileDataOffset  = pMQRMH->DataLogicalOffset2 *
2690                                      LOGICAL_OFFSET_VAL +
2700                     pMQRMH->DataLogicalOffset;
2710   InputDataLength = pMQRMH->DataLogicalLength;
2720   memset(DestFileName, 0, sizeof(DestFileName));
2730   memset(SrcFileName,  0, sizeof(SrcFileName));
2740   memcpy(DestFileName,
2750          (char *)pMQRMH + pMQRMH->DestNameOffset,
2760          (size_t)pMQRMH->DestNameLength);
2770   memcpy(SrcFileName,
2780          (char *)pMQRMH + pMQRMH->SrcNameOffset,
2790          (size_t)pMQRMH->SrcNameLength);
2800
2810   /*****************************************************/
2820   /* Move the data to or from the file.                */
2830   /*****************************************************/
2840   switch (ParmList->mqcd_adr->ChannelType)
2850   {
2860     /***************************************************/
2870     /* For server and sender channels append data from */
2880     /* the file to the reference message and return it */
2890     /* to the caller.                                  */
2900     /***************************************************/
2910     case DCMTCQ_MQCHT_SENDER:
2920     case DCMTCQ_MQCHT_SERVER:
2930     case DCMTCQ_MQCHT_CLUSSDR:
2940
2950       /*************************************************/
2960       /* Calculate space remaining at end of input     */
2970       /* buffer and pointer to start of the space.     */
2980       /* If the length of the agent buffer is greater  */
2990       /* than the MaxMsglength for the channel plus    */
3000       /* the transmission header size, then use the    */
3010       /* MaxMsgLength in the calculation.              */
3020       /* If InputDataLength > 0 this means that only   */
3030       /* that length is required. In this case, if the */
3040       /* length specified is less than the space in    */
3050       /* the buffer then read just this length.        */
3060       /*************************************************/
3070       MsgSpace   = ((ParmList->tbuflist_adr->
3080                      Buffinf_array[0].Buff_length >
3090                     (MQLONG)(ParmList->mqcd_adr->MaxMsgLength
3100                                             + sizeof(MQXQH)))
3110                      ? (ParmList->mqcd_adr->MaxMsgLength)
3120                      : (MQLONG)(ParmList->tbuflist_adr->
3130                          Buffinf_array[0].Buff_length -
3140                          sizeof(MQXQH)))
3150                    - pMQRMH->StrucLength;
3160       pMsgData   = (PMQCHAR)pMQRMH + pMQRMH->StrucLength;
3170       ReadLength = (InputDataLength > 0 &&
3180                     InputDataLength < MsgSpace)
3190                    ? InputDataLength
3200                    : MsgSpace;
3210
3220       /*************************************************/
3230       /* Open the file for reading                     */
3240       /*************************************************/
3250       fd = fopen(SrcFileName, "rb");
3260
3270       if (fd == NULL)
3280       {
3290         FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
3300         goto UOC_EXIT;
3310       }
3320
3330       /*************************************************/
3340       /* Position the file to the specified offset.    */
3350       /*************************************************/
3360       rc = fseek(fd, FileDataOffset, SEEK_SET);
3370
3380       if (rc)
3390       {
3400         FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
3410         goto UOC_EXIT;
3420       }
3430
3440       /*************************************************/
3450       /* Read the data from the specified offset into  */
3460       /* the buffer                                    */
3470       /*************************************************/
3480       bytesread = fread(pMsgData, 1, (size_t)ReadLength, fd);
3490
3500       if (ferror(fd))
3510       {
3520         FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
3530         goto UOC_EXIT;
3540       }
3550       else
3560       if (feof(fd) ||
3570           (InputDataLength > 0  &&
3580            InputDataLength == (MQLONG)bytesread))
3590       {
3600         /***********************************************/
3610         /* End of file reached or all the requested    */
3620         /* data has been read.                         */
3630         /* Set MQRMHF_LAST flag.                       */
3640         /***********************************************/
3650         pMQRMH->Flags |= MQRMHF_LAST;
3660       }
3670       else
3680       {
3690         /***********************************************/
3700         /* May have read last byte of the file (EOF is */
3710         /* only set when attempting to read beyond the */
3720         /* last byte).                                 */
3730         /* Try reading one more byte.                  */
3740         /***********************************************/
3750
3760         fread(&dummy, 1, 1, fd);
3770
3780         if (ferror(fd))
3790         {
3800           FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
3810           goto UOC_EXIT;
3820         }
3830         else
3840         if (feof(fd))
3850         {
3860           /*********************************************/
3870           /* End of file reached before buffer was     */
3880           /* filled. Set MQRMHF_LAST flag.             */
3890           /*********************************************/
3900           pMQRMH->Flags |= MQRMHF_LAST;
3910         }
3920         else
3930         {
3940           /*********************************************/
3950           /* End of file not reached.                  */
3960           /*********************************************/
3970           FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
3980           goto UOC_EXIT;
3990         }
4000       }
4010
4020       /*************************************************/
4030       /* Set the MQRMH.DataLogicalLength field to the  */
4040       /* number of bytes read.                         */
4050       /* Set DataLength to the increased size of the   */
4060       /* message.                                      */
4070       /* The size of the message has increased by the  */
4080       /* number of bytes read from the file plus the   */
4090       /* difference in the sizes of the input and      */
4100       /* converted reference messages.                 */
4110       /*************************************************/
4120       pMQRMH->DataLogicalLength = bytesread;
4130       ParmList->tbuflist_adr->
4140           Buffinf_array[0].Used_buff_length += bytesread;
4150       break;
4160
4170     /***************************************************/
4180     /* For requester and receiver channels, copy data  */
4190     /* from the reference message into the file.       */
4200     /* If this is the first part of the file then      */
4210     /* (re)create the file first.                      */
4220     /* If this is the last part of the file then       */
4230     /* return the reference message to the caller,     */
4240     /* otherwise discard it.                           */
4250     /***************************************************/
4260     case DCMTCQ_MQCHT_REQUESTER:
4270     case DCMTCQ_MQCHT_RECEIVER:
4280     case DCMTCQ_MQCHT_CLUSRCVR:
4290
4300       /*************************************************/
4310       /* Calculate address of data appended to MQRMH   */
4320       /* header.                                       */
4330       /* Calculate length of data to be written to the */
4340       /* file.                                         */
4350       /*************************************************/
4360       pMsgData = (PMQCHAR)(pMQXQH + 1) + pMQRMH->StrucLength;
4370       WriteLength = ParmList->tbuflist_adr->
4380                     Buffinf_array[0].Used_buff_length -
4390                     sizeof(MQXQH) - pMQRMH->StrucLength;
4400
4410       /*************************************************/
4420       /* If the data offset within the file is zero    */
4430       /* then the file is created for writing. If it   */
4440       /* already exists, its contents are destroyed.   */
4450       /* Otherwise it is opened for appending.         */
4460       /*************************************************/
4470       strcpy(mode,
4480              (FileDataOffset == 0) ? "wb" : "ab");
4490
4500       fd = fopen(DestFileName, mode);
4510
4520       if (fd == NULL)
4530       {
4540         FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
4550         goto UOC_EXIT;
4560       }
4570
4580       /*************************************************/
4590       /* If the data offset within the file is not     */
4600       /* zero, check the current size of the file.     */
4610       /* If it matches the data offset, then write the */
4620       /* data to the file.                             */
4630       /* Otherwise ignore the message.                 */
4640       /* If the data offset is zero then write the     */
4650       /* data to the file.                             */
4660       /*************************************************/
4670       if (FileDataOffset != 0)
4680       {
4690
4700         rc = fseek(fd, 0, SEEK_END);
4710
4720         if (rc)
4730         {
4740           FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
4750           goto UOC_EXIT;
4760         }
4770
4780         position = ftell(fd);
4790
4800         if (position < 0)
4810         {
4820           FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
4830           goto UOC_EXIT;
4840         }
4850
4860         if (position > FileDataOffset)
4870         {
4880           /*********************************************/
4890           /* File is bigger than the offset of this    */
4900           /* segment.                                  */
4910           /* This can happen during recovery when a    */
4920           /* channel terminates half way through a     */
4930           /* file transfer.                            */
4940           /* Our only response is to not write the     */
4950           /* data                                      */
4960           /*********************************************/
4970           WriteData = 0;
4980         }
4990
5000         if (position < FileDataOffset)
5010         {
5020           /*********************************************/
5030           /* File is smaller than the offset of this   */
5040           /* segment. We must have lost a segment,     */
5050           /* alert the user to the error               */
5060           /*********************************************/
5070           FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
5080           goto UOC_EXIT;
5090         }
5100       }
5110
5120       /*************************************************/
5130       /* Write the data to the specified offset in the */
5140       /* file.                                         */
5150       /* The amount of data to be written is the       */
5160       /* length of the message minus the transmission  */
5170       /* and reference message headers                 */
5180       /*************************************************/
5190       if (WriteData && (WriteLength > 0))
5200       {
5210         itemswritten = fwrite(pMsgData, (size_t)WriteLength, 1, fd);
5220
5230         if (!itemswritten)
5240         {
5250           FeedbackCode = MQFB_STOPPED_BY_MSG_EXIT;
5260           goto UOC_EXIT;
5270         }
5280       }
5290
5300       /*************************************************/
5310       /* ExitResponse is left at DCMTCQ_MQXCC_OK which */
5320       /* means that the reference message (minus the   */
5330       /* appended data) will be put to the target      */
5340       /* queue.                                        */
5350       /*************************************************/
5360       ParmList->tbuflist_adr->
5370       Buffinf_array[0].Used_buff_length =
5380                          sizeof(MQXQH) + pMQRMH->StrucLength;
5390       break;
5400
5410     /***************************************************/
5420     /* For other channel types, ignore the message.    */
5430     /***************************************************/
5440     default:
5450       goto UOC_EXIT;
5460   }
5470
5480   UOC_EXIT:
5490
5500   /*****************************************************/
5510   /* Close the file if necessary.                      */
5520   /*****************************************************/
5530   if (fd)
5540   {
5550     fclose(fd);
5560   }
5570
5580   /*****************************************************/
5590   /* If an error has occurred, tell the caller to DLQ  */
5600   /* the message.                                      */
5610   /* Set the feedback code to be returned in an        */
5620   /* exception report (if requested).                  */
5630   /*****************************************************/
5640   if (FeedbackCode)
5650   {
5660     ParmList->mqcxp_adr->ExitResponse =
5670                           DCMTCQ_MQXCC_SUPPRESS_FUNCTION;
5680     ParmList->mqcxp_adr->Feedback     = FeedbackCode;
5690   }
5700
5710   return(0) ;
5720 }

4.　準備作業

TP1/Message Queueを使用するには，あらかじめ環境を定義しておく必要があります。TP1/Message Queueの定義には，MQA，MQT，およびMQCの三つがあります。この章では，定義の作成方法，定義の詳細，および定義例について説明します。

＜この章の構成＞

TP1/Message Queueの環境作成手順

定義情報の作成手順

定義の記述形式

MQAサービス定義

set形式のMQAサービス定義

mqaquegrp（キューファイルグループの構成定義）

mqaqueatl（モデルキューの属性定義）

mqaremque（リモートキューのローカル定義）

mqaalsque（別名キューの属性定義）

mqaprcdef（プロセス定義）

mqaquemgr（キューマネジャ定義）

mqamqtnam（MQTデーモン構成定義）

MQTサービス定義

set形式のMQTサービス定義

MQT通信構成定義

mqttenv（MQT環境定義）

mqtttim（タイマ定義）

mqttbuf（バッファグループ定義）

mqttcp（TCP構成定義）

mqttcpcs（クラスタセンダTCP構成定義）

mqttcpcr（クラスタレシーバTCP構成定義）

mqtalccha（チャネル定義）

デフォルトチャネル定義

各チャネルタイプに指定できるオプション

チャネルのネゴシエーション

mqtalced（チャネル終了定義）

MQT定義オブジェクトファイルの作成手順

MQT定義オブジェクト生成ユティリティ

MQT定義結合ユティリティ

MQCサービス定義

mqcenv（MQCリスナサーバ通信環境定義）

mqcgwpnam（MQCゲートウェイサーバ名定義）

MQCゲートウェイサーバユーザサービス定義

トランザクションサービス定義

システム構成例

TP1/Message Queueの環境作成手順

TP1/Message Queueを使用するための環境作成手順について，次の図に示します。

図4-1　TP1/Message Queueの環境作成手順

OpenTP1をインストールし，OpenTP1管理者を設定します。
詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。
キューマネジャクラスタを構成する場合は，あわせてWebSphere MQでフルリポジトリを構築します。詳細については，WebSphere MQのマニュアルを参照してください。

TP1/Message Queueで使用するメッセージキューの構成，メッセージ容量，および転送先チャネル構成などを考慮し，TP1/Message Queueの定義ファイルを作成してください。
詳細については，この章の「定義情報の作成手順」を参照してください。
キューマネジャクラスタを構成する場合は，あわせてクラスタセンダプロセスおよびクラスタレシーバプロセスについて定義ファイルを作成してください。詳細については，「2.8.9　クラスタ環境の通信構成」を参照してください。

TP1/Server Baseの各定義をTP1/Message Queue起動用に追加および変更してください。
詳細については，マニュアル「OpenTP1 システム定義」を参照してください。
キューマネジャクラスタを構成する場合は，あわせてリポジトリ管理サーバユーザサービス定義を定義し，リポジトリ管理サーバを作成してください。詳細については，「2.8.11(3)　リポジトリ管理サーバの作成」および「2.8.11(4)　リポジトリ管理サーバの環境変数」を参照してください。

TP1/Server Baseの提供するコマンドでOpenTP1ファイルシステムをディスク上に作成してください。
詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。

OpenTP1ファイルシステム上にTP1/Message Queueで使用するキューファイルを作成してください。
詳細については，6章の「mqainit（キューファイルの割り当て）」を参照してください。

キューファイル上にTP1/Message Queueで使用するキューを作成してください。
詳細については，6章の「mqamkque（キューの作成）」を参照してください。
キューマネジャクラスタを構成する場合は，あわせてクラスタ環境のシステムキューを作成してください。詳細については，「2.8.11(6)　クラスタ環境のシステムキュー」を参照してください。

転送先のチャネル構成に合わせて作成したMQT通信構成定義からMQT定義オブジェクトファイルを作成してください。
詳細については，この章の「MQT定義オブジェクトファイルの作成手順」を参照してください。

TP1/Server Baseを開始してください。
詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。
キューマネジャクラスタを構成する場合は，あわせてリポジトリ管理サーバを開始します。詳細については，「2.8.11(5)　リポジトリ管理サーバの開始方法」を参照してください。

定義情報の作成手順

TP1/Message Queueの定義は，MQAサービス定義，MQTサービス定義およびMQT通信構成定義に分けられます。

MQAサービス定義およびMQTサービス定義は，OpenTP1システム定義の中の，システムサービス定義の一部に当たります。

MQT通信構成定義は，OpenTP1システム定義の中の，メッセージキュー定義に当たります。

また，TP1/Message Queueを使用するために，OpenTP1のシステムサービス定義のシステムサービス構成定義，ロックサービス定義，ネームサービス定義，ジャーナルサービス定義，およびチェックポイントダンプサービス定義を使用します。

TP1/Message Queueの定義の体系について，次の図に示します。

図4-2　TP1/Message Queueの定義の体系

注※

関連製品であるTP1/Message Queue - Accessの使用時に作成する定義です。OpenTP1システム定義の中の，システムサービス定義の一部に当たります。TP1/Message Queue - Accessを使用しない場合は，作成不要です。

TP1/Message Queueの定義情報の作成手順

MQAサービス定義を作成する場合は，テキストエディタを使用して，定義ファイルを作成します。

MQT通信構成定義を作成する場合は，オンライン開始前にオブジェクトファイルを作成しておく必要があります。オブジェクトファイルは，テキストエディタによって作成したソースファイルを，ユティリティで変換して作成します。MQT通信構成定義の中のMQT共通定義およびTCP定義は，それぞれ個別のソースファイルに作成し，個別のオブジェクトファイルを作成します。

注意

OpenTP1ファイル（ジャーナルファイル，チェックポイントダンプファイル，ステータスファイル，キューファイル）および共用メモリの見積もりを行い，その結果に応じて定義情報を作成してください。見積もり値よりも定義で指定した値のほうが少ない場合，各種資源が不足し，オンライン中にエラーが発生したりOpenTP1が強制停止したりします。

MQT通信構成定義は，オブジェクトファイルでのバージョン互換性を保証しません。そのため，バージョン，またはOSが異なる環境で作成したMQT定義オブジェクトファイルを使用した場合の動作は保証できません。

定義の規則

定義を指定する場合の規則を説明します。

MQAサービス定義

MQAサービス定義には，set形式およびコマンド形式があります。どちらの定義形式も同一定義ファイルに格納します。

同一定義内では，set形式を定義してからコマンド形式を定義してください。

set形式ではOpenTP1システム開始時に値が決定されます。

コマンド形式ではOpenTP1システム開始時に値が決定されても，オンライン中に運用コマンドを入力すると，OpenTP1システム開始時に決定された値を変更できます。

MQTサービス定義

MQTサービス定義には，set形式があります。

set形式ではOpenTP1システム開始時に値が決定されます。

MQCサービス定義

関連製品であるTP1/Message Queue - Accessの使用時に作成する定義です。

MQCサービス定義には，コマンド形式があります。

コマンド形式ではOpenTP1システム開始時に値が決定されても，オンライン中に運用コマンドを入力すると，OpenTP1システム開始時に決定された値を変更できます。

MQCゲートウェイサーバユーザサービス定義

関連製品であるTP1/Message Queue - Accessの使用時に作成する定義です。

MQCゲートウェイサーバユーザサービス定義には，set形式があります。

set形式ではOpenTP1システム開始時に値が決定されます。

システムサービス構成定義

TP1/Message Queueを使用するためには，mqa_confオペランドにYを指定してください。

ロックサービス定義

TP1/Message Queueを使用するためには，lck_limit_formqaオペランドに，MQAサーバの最大同時排他要求数を指定してください。ここで指定する値は，同一ノード上にあるMQAサーバから発生する排他要求数の最大値です。

次の計算式で最大同時排他要求数を見積もってください。

A+S+T+1+R※

A：MQOO_INPUT_AS_Q_DEF，MQOO_INPUT_SHAREDまたはMQOO_INPUT_EXCLUSIVEを指定したMQOPEN発行数（MQCLOSE未発行）（mqcgwpクライアントアプリケーションを含みます）

S：同時に確立する送信側のチャネル数（自動定義クラスタセンダチャネルmqttcpcsを含みます）

T：MQAサービス定義のプロトコル名称がmqttcpのmqamqtnamコマンド定義数

注※

クラスタ機能を使用する場合，次の計算式の結果をRの値として加えてください。

R=5+（4×mqrsppプロセス数）

なお，MQAサーバでの排他には，lck_wait_timeoutオペランドを使用しません。このため，lck_wait_timeoutオペランドの指定値によるエラーリターンは発生しません。

ネームサービス定義

TP1/Message Queueを使用するためには，name_total_sizeオペランドにMQAサーバ分として，次の式で見積もった値を加算してください。

（4＋MQAサービス定義のmqa_ioproc_numオペランドの指定値
＋mqamqtnam定義コマンドの定義数）×528

クラスタ機能を使用する場合は，OpenTP1のname_total_sizeオペランドの指定値の見積もり式に含まれる「SPP数」に1を加算してください。見積もり式については，マニュアル「OpenTP1 システム定義」のTP1/Server Base用の共用メモリの見積もり式の，ネームサーバの説明を参照してください。

トランザクションサービス定義

関連製品であるTP1/Message Queue - Accessの使用時に作成する定義です。

MQCサーバ機能で，TP1/Message Queue - Accessからグローバルトランザクションを使用するかどうかを指定します。

TP1/Message Queue - Accessからグローバルトランザクションを使用する場合は，trn_crm_useオペランドにYを指定してください。Yを指定しないでTP1/Message Queue - Accessからグローバルトランザクションを使用した場合の処理の流れを次に示します。

TP1/Message Queue - Accessからグローバルトランザクションを開始します。

MQPMO_MQSYNCPOINT，またはMQGMO_SYNCPOINTを指定して，MQPUT命令，MQPUT1命令，およびMQGET命令を発行します。

理由コードMQRC_UNEXPECTED_ERRORがTP1/Message Queue - Accessへ返却されます。また，MQCサーバ側にKFCA00910-Eメッセージが出力されます。

ジャーナルサービス定義

MQAサービス定義にmqamqtnam定義コマンドで，MQTデーモンの構成を定義した場合，MQAサーバはチェックポイントダンプを取得します。MQAサーバ用のチェックポイントダンプサービス定義のファイル名をjnldfsv定義コマンドで指定してください。

チェックポイントダンプサービス定義

MQAサービス定義にmqamqtnam定義コマンドで，MQTデーモンの構成を定義した場合，MQAサーバはチェックポイントダンプを取得します。MQAサーバ用のチェックポイントダンプサービス定義を作成してください。jnl_objservernameオペランドには，対象となるシステムサービス名として_mqaを指定してください。

mqamqtnam定義コマンドを指定しないでMQAサーバ用のチェックポイントダンプサービス定義を作成した場合，OpenTP1起動時に，「KFCA01125-E 理由コード=908-0」が出力されて起動に失敗します。

MQT通信構成定義

MQT通信構成定義では，各定義内での記述順序が決まっています。

MQT通信構成定義には，コマンド形式だけがあります。

旧製品のMQAサービス定義を使用する場合の注意事項

TP1/Message Queue 05-15以降および05-14以降では，MQAサービス定義の指定を省略した場合の解釈値を変更しました。TP1/Message Queue 05-14以前または05-13以前の定義を使用する場合，動作が異なることがありますので注意してください。変更内容をそれぞれ表4-1および表4-2に示します。

表4-1　TP1/Message Queue 05-15以降で変更したMQAサービス定義の省略時の解釈値

定義コマンド名およびオプション名 | TP1/Message Queue 05-14以前で省略した場合の解釈値 | TP1/Message Queue 05-15以降で省略した場合の解釈値
mqaquemgr -t | 150 | 999999999

トリガ起動によるチャネル確立を行う環境で次に示す状態の場合，運用に合ったトリガ間隔を指定するか，または05-14以前でトリガ間隔を省略した場合の解釈値（150ミリ秒）を指定してください。

送信チャネルが何らかの理由で転送キューにメッセージを滞留した状態で「チャネル使用不可」になる。

mqtstachaコマンドの-aオプションで送信チャネルの状態を「チャネル停止」に変更する。
トリガ間隔を指定していない場合は，チャネルの確立が前回のトリガメッセージの発生時間から999999999ミリ秒後になります。

表4-2　TP1/Message Queue 05-14以降で変更したMQAサービス定義の省略時の解釈値

定義コマンド名およびオプション名 | TP1/Message Queue 05-13以前で省略した場合の解釈値 | TP1/Message Queue 05-14以降で省略した場合の解釈値
mqaquegrp -m | 100 | 0

定義の記述形式

定義の記述形式について説明します。

set形式

set形式ではオペランドに値を指定します。

形式

set  オペランド = 値

コマンド形式

コマンド形式では，次に示す形式に従ってオプションおよび引数を指定します。

形式

コマンド名　オプション　"オペランド"　コマンド引数

用語の定義

●　コマンド名

実行できるコマンドが登録されているファイル名です。

●　オプション

マイナス記号（-）で始まる文字列です。

引数を取らない形式1と引数を必要とする形式2の二つがあります。

形式1
-オプションフラグ

形式2
-オプションフラグ　フラグ引数

オプションフラグは，マイナス記号（-）に続く1文字の英数字です。英大文字と英小文字とは区別します。フラグ引数は，オプションフラグに対する引数です。

●　オペランド

オプションの次の，「=値」が付くものをオペランドといいます。

一つのオプションの中に複数のオペランドがある場合があります。一つのオプションの中のオペランドは，最初と最後を引用符（"）で囲みます。

●　コマンド引数

マイナス記号（-）以外で始まる引数でコマンドの操作対象です。

コメント

コメントを記入する場合は，コメントの先頭に「#」を記述してください。行の先頭に「#」を記述すると1行全体がコメント扱いになります。

形式1  定義の記述   #コメント・・・・・・
形式2  #コメント・・・・・・

制限事項

OpenTP1のシステムサービス定義の場合
MQAサービス定義など，OpenTP1のシステムサービス定義に属する定義を記述する場合，1行の長さなどの記述形式はOpenTP1システムの規定に従います。記述形式の制限事項については，マニュアル「OpenTP1 システム定義」を参照してください。

MQT通信構成定義の場合
MQT通信構成定義の1行の長さは最大512文字です。512文字を超える指定の場合または定義を読みやすくするために必要な場合は，複数行に分けて記述してください。この場合，行の末尾に継続符号「¥」を記述します。継続符号「¥」のあとには何も記述しないでください。なお，アポストロフィ（'）で囲まれた文字列は，複数行に分けて記述できません。
コメントを記述した行に継続行を続ける場合は，コメントを「#」で囲んだあと，その行の末尾に継続符号「¥」を記述してください。

MQAサービス定義

TP1/Message Queueの定義のうち，MQAサービス定義について説明します。

概要

MQAサービス定義は，OpenTP1のシステムサービス定義の一つです。

MQAサービス定義の定義ファイルは，OSのテキストエディタを使用して，テキストファイルとして作成します。MQAサービス定義の定義ファイル名（完全パス名）を次に示します。

$DCCONFPATH/mqa

機能

キューを管理するための実行環境を定義します。

種類

MQAサービス定義の種類について，次の表に示します。

表4-3　MQAサービス定義の種類

形式
オプション
定義内容
指定値

set watch_time
なし
最大応答待ち時間
＜符号なし整数＞
((0～65535))（単位：秒）

set mqa_channel_inf_file_name_a
なし
MQTサーバ用チャネル管理情報格納A系ファイルパス名
＜1～80バイトの文字列＞または＜1～63バイトの文字列＞

set mqa_channel_inf_file_name_b
なし
MQTサーバ用チャネル管理情報格納B系ファイルパス名
＜1～80バイトの文字列＞または＜1～63バイトの文字列＞

set mqa_channel_inf_file
なし
MQTサーバ用チャネル管理情報格納ファイル入出力形式
《normal》｜tp1file

set mqa_max_quenum
なし
オンライン中に使用するキューの最大数
＜符号なし整数＞
((2～20480))
《4096》

set mqa_max_grpnum
なし
オンライン中に使用するキューファイルグループの最大数
＜符号なし整数＞
((1～4095))
《16》

set mqa_max_msg_recnum
なし
1メッセージの最大レコード数
＜符号なし整数＞
((1～65535))
《32》

set mqa_max_filnum
なし
オンライン中に使用するキューファイルの最大数
＜符号なし整数＞
((1～4095))《16》

set mqa_ioproc_num
なし
入出力プロセス起動数
＜符号なし整数＞
((1～64))《1》

set mqa_expiry
なし
メッセージ保持時間機能を使用するかどうか
Y｜《N》

set mqa_maxque_expiry
なし
メッセージ保持時間対象サーチキュー数
＜符号なし整数＞
((1～20480))《3》

set mqa_maxmsg_expiry
なし
メッセージ保持時間対象削除メッセージ数
＜符号なし整数＞
((1～65535))《3》

set mqa_quefil_inf
なし
キュー／キューファイルのしきい値，および回復値に達した場合に，メッセージを出力するかどうか
Y｜《N》

set mqa_mqr_conf
なし
クラスタ機能使用の要否
Y｜《N》

set mqa_local_ccsid
なし
キューマネジャの文字セット識別子
＜符号なし整数＞
((1～65535))《850》

set mqa_jnl_conf
なし
ジャーナルへのメッセージデータ取得の要否
Y｜《N》

set mqa_mqc_conf
なし
MQCサーバ機能の要否
Y｜《N》

set mqa_mqc_clientnum
なし
オンライン中に同時に処理できるクライアントの最大数
＜符号なし整数＞
((1～256))《16》

set mqa_mqc_trnnum
なし
オンライン中に同時に処理できるトランザクションの最大数
＜符号なし整数＞
((0～256))《0》

set mqa_mqo_conf
なし
Message Queue - Operation - Agentの要否
Y｜《N》

set mqa_mqo_queuefile_alarm_level
なし
キューファイル登録メッセージサイズしきい値
＜符号なし整数＞
((10～100))《80》
（単位：％）

set mqa_mqo_queuefile_recover_level
なし
キューファイル登録メッセージサイズ回復値
＜符号なし整数＞
((10～100))《70》
（単位：％）

set mqa_mqo_queue_alarm_level
なし
キュー登録メッセージ数しきい値
＜符号なし整数＞
((10～100))《80》
（単位：％）

set mqa_mqo_queue_recover_level
なし
キュー登録メッセージ数回復値
＜符号なし整数＞
((10～100))《70》
（単位：％）

set mqa_msg_stay_time
なし
メッセージ滞留時間
＜符号なし整数＞
((0～2147483647))《0》
（単位：秒）

set max_socket_descriptors
なし
ソケット用ファイル記述子の最大数
＜符号なし整数＞
Linux以外の場合((32～2032))《514》
Linuxの場合((32～1008))《64》

set mqa_pool_attri
なし
MQAサービス専用共用メモリをメモリプールに固定するかどうか
《free》｜fixed

set mqa_extend_rmshm_size
なし
MQAサービス専用共用メモリの拡張領域サイズ
＜符号なし整数＞
((0～2000000000))《0》
（単位：バイト）

set mqa_getwait_timeout
なし
MQGMO_WAIT指定時のMQGET命令の待ち合わせ最大時間精度
《low》｜high

set mqa_filerr_continue
なし
入出力エラーが発生した場合にオンラインを継続させるかどうか
《Y》｜N

set mqa_prf_trace_level
なし
性能検証用トレース情報取得レベル
＜16進数字＞
((00000000～00000001))《00000000》

mqaquegrp
（キューファイルグループの構成定義）
指定数：1以上※
-g
キューファイルグループ名
＜1～31文字の識別子＞

-b
バックアップキューファイル名
＜1～59文字の文字列＞

-n
入出力バッファ数
＜符号なし整数＞
((0～1048560))《640》

-m
メッセージエントリ確保率
＜符号なし整数＞
((0～100))《0》

-k
キューファイルグループ監視の要否
Y｜《N》

-u
キューファイルグループ登録メッセージサイズしきい値
＜符号なし整数＞
((10～100))《80》
（単位：％）

-l
キューファイルグループ登録メッセージサイズ回復値
＜符号なし整数＞
((10～100))《70》
（単位：％）

-s
MQAサービス専用共用メモリ確保要求者識別子
＜16進数字＞
((00～ff))

なし
キューファイル名
＜1～59文字の文字列＞

mqaqueatl
（モデルキューの属性定義）
指定数：0以上※
-q
キュー記述子
＜1～64文字の文字列＞

-g
取り出し許可
《allowed》｜inhibited

-p
登録許可
《allowed》｜inhibited

-y
省略時のメッセージ優先度
＜符号なし整数＞
((0～9))《0》

-e
省略時のメッセージ永続性
《persistent》｜
notpersistent

-a
プロセス名
＜1～48文字のMQ文字列＞

-d
最大メッセージ登録数
＜符号なし整数＞
((0～2147483647))《128》

-l
最大メッセージ長
＜符号なし整数＞
((0～128000000))《4096000》

-s
共用性
shareble｜《notshareble》

-o
省略時の取り出しオプション
《exclusive》｜shared

-m
メッセージ配布順序
priority｜《fifo》

-r
キュー保持時間
＜符号なし整数＞
((0～65535))《8》
（単位：時間）

-k
定義タイプ
《permanent》｜temporary

-u
使用種別
《normal》｜transmission

-i
イニシエーションキュー名
＜1～48文字のMQ文字列＞

-c
トリガ制御
off｜《on》

-t
トリガタイプ
《every》｜first｜
depth｜none

-b
トリガのためのメッセージ優先度の下限値
＜符号なし整数＞
((0～9))《0》

-n
トリガのためのメッセージ登録数の下限値
＜符号なし整数＞
((1～65535))《1》

-f
トリガデータ
＜1～64文字の文字列＞

-j
配布リストのサポート
support｜《nosupport》

-w
デフォルトのバインディング
《fixed》｜not_fixed

-v
メッセージ滞留時間監視の要否
《off》｜on

なし
モデルキューの定義名
＜1～48文字のMQ文字列＞

なし
キューファイル名
＜1～59文字の文字列＞

mqaremque
（リモートキューのローカル定義）
指定数：0以上※
-q
キュー記述子
＜1～64文字の文字列＞

-p
登録許可
《allowed》｜inhibited

-y
省略時のメッセージ優先度
＜符号なし整数＞
((0～9))《0》

-e
省略時のメッセージ永続性
《persistent》｜notpersistent

-r
リモートキュー名
＜1～48文字のMQ文字列＞

-w
デフォルトのバインディング
《fixed》｜not_fixed

-c
クラスタ内共用クラスタ名称
＜1～48文字のMQ文字列＞

-m
リモートキューマネジャ名
＜1～48文字のMQ文字列＞

-x
転送キュー名
＜1～48文字のMQ文字列＞

なし
リモートキューのローカル定義名
＜1～48文字のMQ文字列＞

mqaalsque
（別名キューの属性定義）
指定数：0以上※
-q
キュー記述子
＜1～64文字の文字列＞

-g
取り出し許可
《allowed》｜inhibited

-p
登録許可
《allowed》｜inhibited

-y
省略時のメッセージ優先度
＜符号なし整数＞
((0～9))《0》

-e
省略時のメッセージ永続性
《persistent》｜notpersistent

-w
デフォルトのバインディング
《fixed》｜not_fixed

-c
クラスタ内共用クラスタ名称
＜1～48文字のMQ文字列＞

なし
別名キュー名
＜1～48文字のMQ文字列＞

なし
ベースキュー名
＜1～48文字のMQ文字列＞

mqaprcdef
（プロセス定義）
指定数：0以上
-p
プロセス記述子
＜1～64文字の文字列＞

-t
アプリケーションタイプ
＜符号なし整数＞
((15，または65536～999999999))《15》

-i
アプリケーション記述子
＜1～256文字の文字列＞

-e
環境データ
＜1～128文字の文字列＞

-u
ユーザデータ
＜1～128文字の文字列＞

なし
プロセス名
＜1～48文字のMQ文字列＞

mqaquemgr
（キューマネジャ定義）
指定数：1
-n
キューマネジャ名
＜1～48文字のMQ文字列＞

-q
キューマネジャ記述子
＜1～64文字の文字列＞

-t
トリガ間隔
＜符号なし整数＞
((0～999999999))《999999999》
（単位：ミリ秒）

-d
デッドレターキュー名
＜1～48文字のMQ文字列＞

-p
最大メッセージ優先度
＜符号なし整数＞
((0～9))《9》

-x
省略時の転送キュー名
＜1～48文字のMQ文字列＞

-h
最大ハンドル数
＜符号なし整数＞
((1～65535))《10》

-l
最大メッセージ長
＜符号なし整数＞
((1～128000000))《4096000》

-s
トランザクション有効性
《sync》｜nosync

-j
配布リストのサポート
support｜《nosupport》

mqamqtnam
（MQTデーモン構成定義）
指定数：0以上
-b
総バッチメッセージ数
＜符号なし整数＞
((1～2549745))《255》

なし
MQTサーバ名またはMQCリスナサーバ名
＜_（アンダスコア）で始まる2～8文字の識別子＞

なし
プロトコル名称
＜1～14文字の識別子＞

なし
MCA数
＜符号なし整数＞((1～255))

注※

これらの定義コマンドの指定数（mqaquegrp定義コマンドの場合，キューグループ内のキューの数）の合計は，TP1/Message Queueの動的キューの数と合わせて，20480以内にしてください。

注意

各定義コマンドの指定数は，MQAサーバを開始するために必要な値を表します。

MQAサービス定義に指定できるMQCリスナサーバの構成定義（mqamqtnam定義コマンド）の数は一つだけです。複数を指定した場合は，MQAサービス開始時にKFCA31183-Eメッセージを出力して異常終了します。

set形式のMQAサービス定義

set形式のMQAサービス定義について説明します。

形式

〔set watch_time = 最大応答待ち時間〕
〔set mqa_channel_inf_file_name_a = MQTサーバ用チャネル
                                      管理情報格納A系ファイルパス名〕
〔set mqa_channel_inf_file_name_b = MQTサーバ用チャネル
                                      管理情報格納B系ファイルパス名〕
〔set mqa_channel_inf_file = normal｜tp1file〕
〔set mqa_max_quenum = オンライン中に使用するキューの最大数〕
〔set mqa_max_grpnum = オンライン中に使用する
                          キューファイルグループの最大数〕
〔set mqa_max_msg_recnum = 1メッセージの最大レコード数〕
〔set mqa_max_filnum = オンライン中に使用するキューファイルの最大数〕
〔set mqa_ioproc_num = 入出力プロセス起動数〕
〔set mqa_expiry = Y｜N〕
〔set mqa_maxque_expiry = メッセージ保持時間対象サーチキュー数〕
〔set mqa_maxmsg_expiry = メッセージ保持時間対象削除メッセージ数〕
〔set mqa_quefil_inf = Y｜N〕
〔set mqa_mqr_conf = Y｜N〕
〔set mqa_local_ccsid = キューマネジャの文字セット識別子〕
〔set mqa_jnl_conf = Y｜N〕
〔set mqa_mqc_conf = Y｜N〕
〔set mqa_mqc_clientnum = オンライン中に同時に処理できる
                                クライアントの最大数〕
〔set mqa_mqc_trnnum = オンライン中に同時に実行できる
                                トランザクションの最大数〕
〔set mqa_mqo_conf = Y｜N〕
〔set mqa_mqo_queuefile_alarm_level = キューファイル登録メッセージ
                                                    サイズしきい値〕
〔set mqa_mqo_queuefile_recover_level = キューファイル登録メッセージ
                                                    サイズ回復値〕
〔set mqa_mqo_queue_alarm_level = キュー登録メッセージ数しきい値〕
〔set mqa_mqo_queue_recover_level = キュー登録メッセージ数回復値〕
〔set mqa_msg_stay_time = メッセージ滞留時間〕
〔set max_socket_descriptors = ソケット用ファイル記述子の最大数〕
〔set mqa_pool_attri = free｜fixed〕
〔set mqa_extend_rmshm_size = MQAサービス専用共用メモリの拡張領域サイズ〕
〔set mqa_getwait_timeout = low｜high〕
〔set mqa_filerr_continue = Y｜N〕
〔set mqa_prf_trace_level = 性能検証用トレース情報取得レベル〕

オペランド

●　watch_time=最大応答待ち時間

　～＜符号なし整数＞((0～65535))（単位：秒）

RPCによってプロセス間で通信する場合に，サービス要求を送ってからサービスの応答が返るまでの待ち時間の最大値を指定します。

指定時間を過ぎても応答がない場合は，RPCは送信タイムアウトと判断してエラーにします。

0を指定した場合は，応答を受信するまで無限に待ち続けます。

省略した場合は，OpenTP1のシステム共通定義のwatch_timeオペランドの値が設定されます。

●　mqa_channel_inf_file_name_a=MQTサーバ用チャネル管理情報格納A系ファイルパス名

　～＜1～80バイトの文字列＞または～＜1～63バイトの文字列＞

ユーザ情報を格納するA系ファイルパス名を指定します。

MQTサーバのチャネルについての情報を格納するファイルです。このファイルは，MQTサーバサービス開始時とMQTサーバサービス終了時に作成，更新される情報で，次回のオンラインに引き継ぎます。

MQTサーバ用チャネル管理情報格納ファイルを通常ファイルに作成する場合は，ファイルパス名は80バイト以内にしてください。OpenTP1ファイルシステム上のファイルに作成する場合は，ファイルパス名は63バイト以内，ファイル名はOpenTP1ファイル名にしてください。

ファイルパス名およびファイル名にスペースを指定しないでください。また，すべてのファイルパス名の"/"個所に"/"を追加したファイルのパス名を指定しないでください。指定した場合，動作は保証されません。

注意

MQTサーバ用チャネル管理情報格納ファイルを使用しない場合はチャネルの運用に注意が必要です。

チャネルを引き継がない場合の属性値および注意点について，「5.3　開始時のチャネル情報引き継ぎ」を参照してください。

●　mqa_channel_inf_file_name_b=MQTサーバ用チャネル管理情報格納B系ファイルパス名

　～＜1～80バイトの文字列＞または～＜1～63バイトの文字列＞

ユーザ情報を格納するB系ファイルパス名を指定します。

MQTサーバのチャネルについての情報を格納するファイルです。このファイルは，MQTサーバサービス開始時とMQTサーバサービス終了時に作成，更新される情報で，次回のオンラインに引き継ぎます。

MQTサーバ用チャネル管理情報格納ファイルを通常ファイルに作成する場合は，ファイルパス名は80バイト以内にしてください。OpenTP1ファイルシステム上のファイルに作成する場合は，ファイルパス名は63バイト以内，ファイル名はOpenTP1ファイル名にしてください。

ファイルパス名およびファイル名にスペースを指定しないでください。また，すべてのファイルパス名の"/"個所に"/"を追加したファイルのパス名を指定しないでください。指定した場合，動作は保証されません。

注意

MQTサーバ用チャネル管理情報格納ファイルを使用しない場合はチャネルの運用に注意が必要です。

チャネルを引き継がない場合の属性値および注意点について，「5.3　開始時のチャネル情報引き継ぎ」を参照してください。

●　mqa_channel_inf_file=normal｜tp1file

　～《normal》

A系およびB系のMQTサーバ用チャネル管理情報格納ファイルの入出力形式を指定します。mqa_channel_inf_file_name_aオペランドまたはmqa_channel_inf_file_name_bオペランドが指定されている場合だけ有効です。

normal
指定されたMQTサーバ用チャネル管理情報格納ファイルを通常ファイルとして処理します。

tp1file
指定されたMQTサーバ用チャネル管理情報格納ファイルをOpenTP1ファイルシステム上のファイルとして処理します。

MQTサーバ開始前に，A系およびB系のMQTサーバ用チャネル管理情報格納ファイルを格納するためのOpenTP1ファイルシステムを初期設定してください。オンライン中に作成した場合は，チャネル引き継ぎ情報を維持できなくなることがありますので注意してください。

normalを指定して作成したMQTサーバ用チャネル管理情報格納ファイルとtp1fileを指定して作成したMQTサーバ用チャネル管理情報格納ファイルの互換性はありません。

tp1fileを指定して作成したMQTサーバ用チャネル管理情報格納ファイルがあるOpenTP1ファイルシステムの属性（セクタ長，容量，および最大ファイル数）を変更し，かつチャネル引き継ぎ情報を維持したい場合には次に示す手順を実行してください。

OpenTP1ファイルシステムのバックアップファイルを作成します。

バックアップ元のOpenTP1ファイルシステムを初期設定します。

2.で初期設定したファイルに，1.のバックアップファイルの内容をリストアします。

●　mqa_max_quenum=オンライン中に使用するキューの最大数

　～＜符号なし整数＞((2～20480))《4096》

オンライン中に使用するキューの最大数を指定します。

オンライン中に使用するキューには，定義済みキューおよび永続的動的キュー（キューファイルに登録するキュー），一時的動的キュー（メモリキュー），リモートキューのローカル定義で指定したキュー，および別名キューが含まれます。

このオペランドには，次に示す数の合計以上の値を指定してください。

各キューファイルの作成で指定したmqainitコマンドの-qオプションの値の合計

mqaqueatl定義コマンド（モデルキューの属性定義）の数

mqaremque定義コマンド（リモートキューのローカル定義）の数

mqaalsque定義コマンド（別名キューの属性定義）の数

オンライン中に動的に作成するキュー（動的キュー）の数

クラスタ機能を使用する場合，システムで四つのキューを作成することを考慮した値を指定してください。

●　mqa_max_grpnum=オンライン中に使用するキューファイルグループの最大数

　～＜符号なし整数＞((1～4095))《16》

オンライン中に使用するキューファイルグループの最大数を指定します。

mqaquegrp定義コマンドで指定するキューファイルグループの合計以上の値を指定してください。

●　mqa_max_msg_recnum=1メッセージの最大レコード数

　～＜符号なし整数＞((1～65535))《32》

1メッセージを登録する場合の最大レコード数を指定します。

最大レコード数は，次に示す計算式の最大値を指定してください。

キューファイルのレコード長は，mqainitコマンドの-sオプション（メッセージ長）と，キューファイルのセクタ長で算出した値です。レコード長の計算については，6章の「mqainit（キューファイルの割り当て）」を参照してください。

TP1/Message Queueは，開始時にこの値からジャーナルに取得するレコードデータの最大長を計算し，OpenTP1のシステムジャーナルサービス定義（jnl_max_datasizeオペランド）で指定された値以下かどうかをチェックします。エラーになった場合，OpenTP1のシステムジャーナルサービス定義（jnl_max_datasizeオペランド）の最大レコードデータ長の指定値を見直してください。

●　mqa_max_filnum=オンライン中に使用するキューファイルの最大数

　～＜符号なし整数＞((1～4095))《16》

オンライン中に使用するキューファイルの最大数を指定します。

mqaquegrp定義コマンドで指定するキューファイルグループおよびmqaaddコマンドで追加するキューファイル（バックアップキューファイルを含む）の合計以上の値を指定してください。

●　mqa_ioproc_num=入出力プロセス起動数

　～＜符号なし整数＞((1～64))《1》

MQPUT命令およびMQPUT1命令で登録したメッセージやMQGET命令で削除したメッセージの属性情報をキューファイルに出力する，入出力プロセスの最大起動数を指定します。

mqaquegrp定義コマンドに指定したキューファイルの数が，このオペランドの指定値よりも小さい場合は，キューファイルの数分の入出力プロセスが起動されます。ただし，二重化構成のキューファイルの場合，バックアップキューファイル（B系ファイル）の数は含まれません。

●　mqa_expiry=Y｜N

　～《N》

メッセージ保持時間機能を使用するかどうかを指定します。

Y
メッセージ保持時間機能を使用します。監視サーバプロセスが起動します。
なお，監視サーバプロセスは，メッセージ保持時間終了の対象となったメッセージの削除だけを行います。メッセージの削除前に，メッセージ保持時間の終了は確認しません。
メッセージ保持時間は，MQMD構造体のExpiryフィールドに指定します。メッセージ保持時間の対象となる契機については，マニュアル「TP1/Message Queue プログラム作成リファレンス」のMQMD構造体のExpiryフィールドについての記載を参照してください。

N
メッセージ保持時間機能を使用しません。

●　mqa_maxque_expiry=メッセージ保持時間対象サーチキュー数

　～＜符号なし整数＞((1～20480))《3》

メッセージ保持時間が終了したメッセージが存在するキューから，1回の監視でメッセージ削除の対象とするキュー数を指定します。

TP1/Message Queueは一定間隔（10秒）でキューを監視して，メッセージ保持時間が終了したメッセージをキューから削除します。

例えば，mqa_maxque_expiryオペランドに10，mqa_maxmsg_expiryオペランドに5が指定されている環境で，メッセージ保持時間が終了したメッセージが存在するキューが100個ある場合，1回の監視で10個のキューが対象となり，1キュー当たり最大で5個のメッセージが削除されます。

●　mqa_maxmsg_expiry=メッセージ保持時間対象削除メッセージ数

　～＜符号なし整数＞((1～65535))《3》

mqa_maxque_expiryオペランドで対象となったキューから，メッセージ保持時間が終了したメッセージを削除するメッセージ数を指定します。

メッセージ保持時間が終了したメッセージ数が，mqa_maxmsg_expiryオペランドで指定したメッセージ数を超えた場合は，超えた分のメッセージは，次回の対象になるまで削除されません。

●　mqa_quefil_inf=Y｜N

　～《N》

キュー／キューファイルのしきい値，および回復値に達した場合，メッセージを出力するかどうかを指定します。

Y
メッセージを出力します。

N
メッセージを出力しません。

●　mqa_mqr_conf=Y｜N

　～《N》

このノードでクラスタ機能を使用するかどうかを指定します。

Y
このノードでクラスタ機能を使用します。

N
このノードでクラスタ機能を使用しません。

●　mqa_local_ccsid=キューマネジャの文字セット識別子

　～＜符号なし整数＞((1～65535))《850》

キューマネジャの文字セット識別子（CodedCharSetId属性）を指定します。

指定する文字セット識別子が表す文字セットには，SBCS（1バイト文字セット）の場合もDBCS（2バイト文字セット）の場合も，必ずASCII文字列が含まれている必要があります。

省略値（850）を変更してチャネルを接続する場合，相手キューマネジャと同じ文字セット識別子，または相手キューマネジャが変換可能な文字セット識別子を指定してください。

指定した値は次に示す個所で使用されます。

アプリケーションがMQMD構造体のCodedCharSetIdフィールドにMQCCSI_Q_MGRを指定した場合のMQMD構造体のCodedCharSetIdフィールド

相手キューマネジャとのチャネル接続

相手キューマネジャとのチャネル接続に使用される文字セットは，MQMD構造体のCodedCharSetIdフィールドで指定する文字セット識別子と関係ありません。アプリケーションがMQMD構造体のCodedCharSetIdフィールドにMQCCSI_Q_MGR以外の値を指定してアプリケーションデータを作成してもチャネル接続には影響しません。

●　mqa_jnl_conf=Y｜N

　～《N》

メッセージ登録時にメッセージデータの内容をジャーナルに取得するかどうかを指定します。

Y
メッセージデータの内容をジャーナルに取得します。
メッセージデータの内容をジャーナルに取得することによって，キューファイルがキューファイル格納媒体損傷の要因で障害となった場合に，mqafrcコマンドでキューファイルの回復ができます。

N
メッセージデータの内容をジャーナルに取得しません。

メッセージデータの内容をジャーナルに取得する場合は，次に示す制限事項に従ってシステムを構築してください。

キューファイルの二重化構成はできません。

mqaquemgr定義コマンドの-lオプションに指定する最大メッセージ長は次に示す計算式以下の値を設定してください。

32ビット版の場合
 jnl_max_datasizeオペランドの指定値 － 704
 － 4×（mqa_max_msg_recnumオペランドの指定値－1）

64ビット版の場合
 jnl_max_datasizeオペランドの指定値 － 720
 － 4×（mqa_max_msg_recnumオペランドの指定値－1）

jnl_max_datasizeオペランドはシステムジャーナルサービス定義のオペランドです。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

mqtalccha定義コマンドのバッファ方式にはメッセージ方式を指定してください。セグメント方式を指定した場合はMQTが異常を検出し，TP1/Message Queueは正常開始できません。

●　mqa_mqc_conf=Y｜N

　～《N》

このノードでMQCサーバ機能を使用するかどうかを指定します。MQCサーバ機能を使用する場合，必ずYを指定してください。

Y
このノードでMQCサーバ機能を使用します。

N
このノードでMQCサーバ機能を使用しません。

関連製品であるTP1/Message Queue - Accessを使用する場合に指定するオペランドです。

●　mqa_mqc_clientnum = オンライン中に同時に処理できるクライアントの最大数

　～＜符号なし整数＞((1～256))《16》

オンライン中に同時に処理できるクライアントの最大数を指定します。

mqcgwpnam定義コマンドの合計以上の値を指定してください。

指定値がmqcgwpnam定義コマンドの合計よりも小さい場合，MQCサービス開始時にKFCA30823-Eメッセージを出力して異常終了します。

関連製品であるTP1/Message Queue - Accessを使用する場合に指定するオペランドです。

●　mqa_mqc_trnnum = オンライン中に同時に実行できるトランザクションの最大数

　～＜符号なし整数＞((0～256))《0》

クライアントがXA接続した場合，オンライン中に同時に実行できるトランザクションの最大数を指定します。

指定値以上のトランザクションを開始しようとした場合，KFCA30855-Eメッセージを出力してトランザクションの開始を中断します。

この値を変更するときは，ジャーナルファイル容量の見積もりを見直してください。

関連製品であるTP1/Message Queue - Accessを使用する場合に指定するオペランドです。

●　mqa_mqo_conf=Y｜N

　～《N》

このノードでMessage Queue - Operation - Agentを使用するかどうかを指定します。Message Queue - Operation - Agentについては，マニュアル「Message Queue - Operation 使用の手引」を参照してください。

Y
Message Queue - Operation - Agentを使用します。

N
Message Queue - Operation - Agentを使用しません。

●　mqa_mqo_queuefile_alarm_level=キューファイル登録メッセージサイズしきい値

　～＜符号なし整数＞((10～100))《80》（単位：％）

各キューファイルのメッセージ格納域全容量に対する，メッセージ格納域登録率のしきい値を指定します。

キューファイルの登録率がこのオペランドで指定したしきい値を上回った場合，mqa_quefil_infオペランドにYが指定されていれば，KFCA31055-Iメッセージが出力されます。

また，mqa_mqo_confオペランドにYが指定されていれば，Message Queue - Operation - Centerに状態が通知されます。

●　mqa_mqo_queuefile_recover_level=キューファイル登録メッセージサイズ回復値

　～＜符号なし整数＞((10～100))《70》（単位：％）

各キューファイルのメッセージ格納域全容量に対する，メッセージ格納域登録率の回復値を指定します。

キューファイルの登録率がこのオペランドで指定した回復値を下回った場合，mqa_quefil_infオペランドにYが指定されていれば，KFCA31056-Iメッセージが出力されます。

また，mqa_mqo_confオペランドにYが指定されていれば，Message Queue - Operation - Centerに状態が通知されます。

●　mqa_mqo_queue_alarm_level=キュー登録メッセージ数しきい値

　～＜符号なし整数＞((10～100))《80》（単位：％）

各キューに登録できる最大メッセージ数に対する，メッセージ登録率のしきい値を指定します。

キューのメッセージ登録率がこのオペランドで指定したしきい値を上回った場合，mqa_quefil_infオペランドにYが指定されていれば，KFCA31053-Iメッセージが出力されます。

また，mqa_mqo_confオペランドにYが指定されていれば，Message Queue - Operation - Centerに状態が通知されます。

●　mqa_mqo_queue_recover_level=キュー登録メッセージ数回復値

　～＜符号なし整数＞((10～100))《70》（単位：％）

各キューに登録できる最大メッセージ数に対する，メッセージ登録率の回復値を指定します。

キューのメッセージ登録率がこのオペランドで指定した回復値を下回った場合，mqa_quefil_infオペランドにYが指定されていれば，KFCA31054-Iメッセージが出力されます。

また，mqa_mqo_confオペランドにYが指定されていれば，Message Queue - Operation - Centerに状態が通知されます。

●　mqa_msg_stay_time=メッセージ滞留時間

　～＜符号なし整数＞((0～2147483647))《0》（単位：秒）

メッセージが滞留したと判断する時間を指定します。この指定した時間以上メッセージがキューにある場合に，キューに対応するKFCA31065-Iメッセージが出力されます。メッセージ登録時から，メッセージの削除が有効になるまでが監視対象になります。0を指定した場合，滞留状態はチェックされません。このオペランドに0以外を指定した場合に，監視サーバプロセスが起動します。滞留状態の検知は遅れる場合があります。KFCA31065-Iメッセージが出力されたあとに，キューからすべてのメッセージが取り出されるとKFCA31066-Iメッセージが出力されます。

このオペランドを指定する場合は，監視対象にするキューについて，mqaqueatl定義コマンドの-vオプションにonを指定してください。

また，mqa_mqo_confオペランドにYが指定されていれば，Message Queue - Operation - Centerに状態が通知されます。

●　max_socket_descriptors=ソケット用ファイル記述子の最大数

　～＜符号なし整数＞((Linux以外の場合：32～2032，Linuxの場合：32～1008))

Linux以外の場合《514》

Linuxの場合《64》

OpenTP1の制御下のプロセスで，ソケット用に使用するファイル記述子の最大数を指定します。次に示す計算式で求めた値を指定してください。

↑（mqa_ioproc_numの指定値×2＋7）／0.8↑

（凡例）

↑↑：小数点以下を切り上げます。

●　mqa_pool_attri=free｜fixed

　～《free》

MQAサービス専用共用メモリをメモリプールに固定するかどうかを指定します。

このオペランドでfixedを指定する場合は，MQAサービス専用共用メモリがメモリプールに固定されるため，実装するメモリの容量や，全使用容量に対する共用メモリの割合などを考慮してください。

free
MQAサービス専用共用メモリをメモリプールに固定しません。
この値を指定した場合は，共用メモリのページングが発生して処理速度が低下することがあります。

fixed
MQAサービス専用共用メモリをメモリプールに固定します。
共用メモリのページングによって処理速度が低下することはありません。
ただし，実装するメモリの容量が少ない場合，共用メモリ以外のテキストやデータセグメントなどのページングが発生することがあります。

●　mqa_extend_rmshm_size=MQAサービス専用共用メモリの拡張領域サイズ

　～＜符号なし整数＞((0～2000000000))《0》（単位：バイト）

オンライン中に組み込むキューファイルで使用する共用メモリのサイズを指定します。TP1/Message Queueの開始時に指定したサイズでMQAサービス専用共用メモリの拡張領域を確保します。省略した場合，TP1/Message Queueの開始時にMQAサービス専用共用メモリの拡張領域は確保されないため，オンライン中に新しくキューファイルを組み込めません。

MQAサービス定義のmqaquegrp定義コマンドで指定したキューファイル以外の新規キューファイルをオンライン中に組み込むと，組み込むキューファイルで使用するサイズ分のMQAサービス専用共用メモリの拡張領域を使用します。一度，新規キューファイルを組み込むと，mqarmコマンドでキューファイルを切り離してもMQAサービス専用共用メモリの拡張領域は予約された状態のままとなります。したがって，同一のキューファイルを組み込む場合だけMQAサービス専用共用メモリの拡張領域の予約された部分を使用できます。

●　mqa_getwait_timeout=low｜high

　～《low》

MQGMO_WAITを指定したMQGET命令でメッセージが到着しなかった場合に，タイムアウトする時間の精度を指定します。

low
MQGMO構造体のWaitIntervalフィールドに指定した待ち合わせ最大時間を秒単位に補正します。

high
MQGMO構造体のWaitIntervalフィールドに指定した待ち合わせ最大時間の補正は行いません。
メッセージがキューに登録されてからMQGET命令の待ち合わせが解除されるまでに，数10ミリ秒の遅延が発生することがあります。

メッセージが到着してからMQGET命令の待ち合わせが解除されるまでの遅延を小さくしたい場合は，lowを指定してください。highは，複数メッセージを取り出してから一括処理するような場合でキューが空になってから次のメッセージ到着までを秒以下の精度で待ち合わせたいときに使用できます。

●　mqa_filerr_continue=Y｜N

　～《Y》

キューファイルに入出力エラーが発生した場合，オンラインを継続させるかどうかを指定します。

このオペランドを省略した場合または"Y"を指定した場合，キューファイルに入出力エラーが発生すると，キューファイルの状態を一時的障害閉塞としてオンラインを継続させます。

このオペランドに"N"を指定する場合，キューファイル入出力エラー発生時にKFCA31191-Eメッセージを出力してオンラインを異常終了させることができます。異常終了時は再開始前に障害要因を取り除くことによって，再開始時にキューファイルがジャーナルによって回復されます。そのため，障害閉塞しないでキューファイルの整合性が保たれます。

Y
オンラインを継続させます。

N
オンラインを継続させず，OpenTP1を異常終了させます。

注

このオペランドに"N"を指定する場合，次に示す点に注意してください。

キューファイル二重化構成の場合，両系が障害となった時点でOpenTP1が異常終了します。

OpenTP1が異常終了したあと，このオペランドにNを指定したまま障害要因を取り除かないでOpenTP1を再開始した場合，再び入出力エラーでOpenTP1が異常終了するおそれがあります。

OpenTP1が異常終了したあと，このオペランドを"Y"に変更してOpenTP1を再開始したときに再び入出力エラーが発生すると，キューファイルは障害閉塞になります。

●　mqa_prf_trace_level=性能検証用トレース情報取得レベル

　～＜16進数字＞((00000000～00000001))《00000000》

性能検証用トレース情報を取得するレベルを指定します。取得する場合はシステム共通定義のprf_traceオペランドにYを指定してください。Nを指定した場合，mqa_prf_trace_levelオペランドに00000001を指定しても性能検証用トレース情報は取得されません。

00000000
性能検証用トレース情報は取得されません。

00000001
イベントIDが0xd000～0xd003の性能検証用トレース情報が取得されます。

性能検証用トレース情報の詳細を見るためのトレース情報ファイルの取得（prfgetコマンド）およびトレース情報ファイルの編集出力（prfedコマンド）など，性能検証用トレースに関する運用については，マニュアル「OpenTP1 運用と操作」を参照してください。OpenTP1の開始モードに関係なく，OpenTP1開始時にMQAサービス定義に指定されている値が有効となります。

イベントID別の取得内容を次に示します。

表4-4　イベントID別の取得内容

イベントID | キュー名称（48） | メッセージトークン（内部登録時間）（8） | リターンコード（4） | メッセージ識別子（32） | 相関識別子（32）※ | ユーザデータ（32）※ | メッセージ滞留時間（16）※
0xd000 | ○ | ○ | ○ | ○ | ○ | ○ | －
0xd001 | ○ | ○ | ○ | ○ | ○ | ○ | ○
0xd002 | ○ | ○ | ○ | ○ | ○ | ○ | －
0xd003 | ○ | ○ | ○ | ○ | ○ | ○ | ○

（凡例）

○：情報を取得します。

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

括弧内：取得バイト数

注※

prfedコマンドに-dオプションを指定した場合に出力される，詳細情報と出力順序を示しています。

mqaquegrp（キューファイルグループの構成定義）

形式

{{ mqaquegrp    -g キューファイルグループ名
             〔-b バックアップキューファイル名
                    〔〔，バックアップキューファイル名〕…〕〕
             〔-n 入出力バッファ数〕
             〔-m メッセージエントリ確保率〕
             〔-k キューファイルグループ監視の要否〕
             〔-u キューファイルグループ登録メッセージサイズしきい値〕
             〔-l キューファイルグループ登録メッセージサイズ回復値〕
             〔-s MQAサービス専用共用メモリ確保要求者識別子〕
               キューファイル名〔〔，キューファイル名〕…〕  }}

機能

オンライン中にアクセスしたメッセージを格納するキューファイル名とキューファイルの属性を合わせて，キューファイルグループ名として定義します。

TP1/Message Queue全体で登録できるキューの最大数は20,480個です。

オプション

●　-g キューファイルグループ名

　～＜1～31文字の識別子＞

キューファイル名とキューファイルの属性を定義するキューファイルグループの名称を指定します。

アプリケーション，またはチャネルによって，複数のキュー操作が同時に一つのキューファイルグループに集中すると，キュー操作が遅くなる場合があります。同時に使用するキューファイルは，別々のキューファイルグループに分割して定義することを推奨します。

●　-b バックアップキューファイル名

　～＜1～59文字の文字列＞

キューファイル二重化構成を行う場合，指定したキューファイル名（A系ファイル名）に対するバックアップキューファイル名（B系ファイル名）を指定します。キューファイル（A系ファイル）とバックアップキューファイル（B系ファイル）は，大きさ（mqainitコマンドのオプション），キュー作成の有無（mqamkqueコマンドのコマンド引数），指定の順序，OpenTP1ファイルシステムのセクタ長を同じにしてください。

指定例を次に示します。

mqaquegrp -g GR1 -b /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6
                   /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3

バックアップファイルとの対応

/dev/rdsk/MQA1のバックアップキューファイルは，/dev/rdsk/MQA4
/dev/rdsk/MQA2のバックアップキューファイルは，/dev/rdsk/MQA5
/dev/rdsk/MQA3のバックアップキューファイルは，/dev/rdsk/MQA6

キューファイル二重化構成でアクセスをしたキューファイル名（A系ファイル名）とバックアップキューファイル名（B系ファイル名）との定義をオンライン終了後に入れ替えて定義しないでください。

1回目のオンライン定義

mqaquegrp -g GR1
         -b /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6
            /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3

2回目のオンライン定義

mqaquegrp -g GR1
         -b /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3
            /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6

上記の指定をした場合，処理は保証できません。

●　-n 入出力バッファ数

　～＜符号なし整数＞((0～1048560))《640》

メッセージ本体を格納するキューファイルに対するキャッシュ用の入出力バッファの個数を指定します。キャッシュ用の入出力バッファにはMQAサービス専用の共用メモリ（拡張領域も含みます）が使用されます。

メッセージの読み込み（取り出し，参照および送信）時，対象のメッセージが入出力バッファにある場合，メッセージ本体のディスク入出力が発生しなくなります。

メッセージをキューファイルに蓄積しても，入出力バッファの数に空きがあるまでは，メッセージ読み込み時にメッセージ本体のディスク入出力は発生しません。

1メッセージが入出力バッファに存在するために必要な入出力バッファ数の計算式を次に示します。

↑（メッセージ長＋512）／（キューファイルのレコード長※－8）↑

（凡例）

↑↑：小数点以下を切り上げます。

注※

キューファイルのレコード長については，mqainitコマンドの-sオプションの説明を参照してください。

一つのキューファイルグループに複数のキューファイルを指定した場合，それぞれのキューファイルにここで指定した数のバッファが割り当てられます。

入出力バッファ数には次に示す計算式以上の値を指定することをお勧めします。

（凡例）

Ai

1トランザクションの登録メッセージ数です。メッセージの読み込みだけを行う場合は1になります。トリガメッセージおよび報告メッセージを生成してキューに登録するメッセージ数もこの値に加算してください。

Bi

受信チャネルのバッチサイズのうちでいちばん大きい値です。トリガメッセージおよび報告メッセージを生成してキューに登録するメッセージ数もこの値に加算してください。ただし，送信チャネルの場合は1になります。

Li

次に示す計算式の算出結果です。ただし，メッセージの読み込みだけを行う場合は1になります。

↑（メッセージ長＋512）／（キューファイルのレコード長－8）↑

↑↑は小数点以下を切り上げることを示します。

Mi

次に示す計算式の算出結果です。ただし，送信チャネルだけの場合は1になります。

↑（メッセージ長＋512）／（キューファイルのレコード長－8）↑

↑↑は小数点以下を切り上げることを示します。

j

同じキューファイルに割り当てられているキューに同時にアクセスし，かつトランザクションを使用するアプリケーション数です。

トリガメッセージおよび報告メッセージを生成してキューに登録するアプリケーション数およびMQTサーバのプロセス数も計算に含めます。

また，MQCサーバ機能を使用する場合，TP1/Message Queue - Accessを使用するアプリケーション数も計算に含めます（MQCサービス定義のmqcgwpnam定義コマンドの指定値が最大値になります）。

k

同じキューファイルに割り当てられているキューに同時にアクセスし，かつトランザクションを使用しないアプリケーション数です。

トリガメッセージおよび報告メッセージを生成してキューに登録するアプリケーション数およびMQTサーバのプロセス数も計算に含めます。

また，MQCサーバ機能を使用する場合，TP1/Message Queue - Accessを使用するアプリケーション数も計算に含めます（MQCサービス定義のmqcgwpnam定義コマンドの指定値が最大値になります）。

m

同じキューファイルに割り当てられているキューに同時にアクセスするMQTサーバプロセス数です。

トリガメッセージおよび報告メッセージを生成してキューに登録するアプリケーション数およびMQTサーバのプロセス数も計算に含めます。

入出力バッファ数を上記の計算式より小さく設定した場合，次に示す状況が発生することがあります。

次に示す処理を実行するとき，1秒間の空きバッファ待ちをしたあと，プロセス域にキューファイルのレコード長で入出力バッファを確保

MQPUT，MQPUT1またはMQGET命令発行時

チャネル経由のメッセージの送信または受信

バッファ面数に0を指定した場合は，次の処理を実行するとき空きバッファ待ちをしないで，プロセス域にキューファイルのレコード長で入出力バッファを確保

MQPUT，MQPUT1またはMQGET命令発行時

チャネル経由のメッセージの送信または受信

どちらの場合もチャネル経由のメッセージ送受信時，またはAPIリターン時に領域は解放されます。

●　-m メッセージエントリ確保率

　～＜符号なし整数＞((0～100))《0》

キューファイルに格納できるメッセージ管理情報（MQMD構造体など）の数に対して，何パーセント分のキャッシュエリアが確保されるかを指定します。メッセージエントリ確保率が高いほど，メッセージに対するMQGET命令発行時のディスクに対する入出力回数が少なくなります。メッセージエントリ確保率が低いほど，使用するメモリ量が少なくなります。

一つのキューファイルグループに複数のキューファイルを指定した場合，それぞれのキューファイルにここで指定した数のメッセージエントリが割り当てられます。メッセージエントリ確保率には，キューファイルに格納できるメッセージ数に対する最大保留メッセージ数（メッセージがキューファイルにある数）の割合を％で指定してください。

メッセージエントリ確保率に0を指定した場合，メッセージエントリ（292バイト）×メッセージ数＋20バイト分のメモリが，メッセージエントリ確保率に100を指定した時に比べて削減できます。ただし，バッファ長に0バイトを指定して，MQGET命令を発行した場合もキューファイルの入出力が発生します。

●　-k キューファイルグループ監視の要否

　～《N》

キューファイルグループ監視を使用するかどうかを指定します。

Y：キューファイルグループ監視を使用します。
キューファイルグループ監視を使用する場合，-uオプションおよび-lオプションの指定が有効になります。監視サーバプロセスが起動します。

N：キューファイルグループ監視を使用しません。

省略する場合，キューファイルグループ監視を使用しません。

キューファイルグループ監視機能を使用する場合，監視されるキューファイルは正常状態のキューファイルだけです。mqarmコマンドを使用して切り離したキューファイル，およびmqaaddコマンドを使用して組み込まれたキューファイルは監視の対象外です。mqarlesコマンドを使用して正常状態になった時点でキューファイルは監視の対象になります。

●　-u キューファイルグループ登録メッセージサイズしきい値

　～＜符号なし整数＞((10～100))《80》（単位：％）

キューファイルグループのメッセージ格納域全容量に対するメッセージ格納域登録率のしきい値を指定します。

キューファイルグループの登録率がこのオペランドで指定したしきい値を上回った場合，-kオプションにYが指定されていれば，KFCA31107-Iメッセージが出力されます。

●　-l キューファイルグループ登録メッセージサイズ回復値

　～＜符号なし整数＞((10～100))《70》（単位：％）

キューファイルグループのメッセージ格納域全容量に対するメッセージ格納域登録率の回復値を指定します。

キューファイルグループの登録率がこのオペランドで指定した回復値を下回った場合，-kオプションにYが指定されていれば，KFCA31108-Iメッセージが出力されます。

●　-s MQAサービス専用共用メモリ確保要求者識別子

　～＜16進数字＞((00～ff))

MQAサービス専用共用メモリ確保要求者識別子を指定します。指定値の先頭に'm'を付加した識別子が，実際にMQAサービス専用共用メモリを確保するときに使用される識別子となります。また，dcshmls -rコマンドで表示される共用メモリプールの確保要求者種別は，指定値の先頭に'm'を付加した値になります。dcshmlsコマンドの詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。識別子を指定したキューファイルグループに属するキューファイルは，MQAサービス専用共用メモリセグメントを識別子単位で確保します。

MQAサービス専用共用メモリへのアタッチは，MQAサービス専用共用メモリ確保要求者識別子単位で行われます。このオプションを指定することによって，MQAサービスで指定されるキューファイルの一部だけをアクセスするUAPが使用する共用メモリのアタッチサイズを減らすことができます。

ほかのmqaquegrp定義コマンドと同一の識別子を指定した場合，同一の識別子を持つキューファイルグループはすべて同一のMQAサービス専用共用メモリセグメントを確保します。

省略した場合，指定を省略した他のmqaquegrp定義コマンドと同一のMQAサービス専用共用メモリセグメントを確保します。この場合のMQAサービス専用共用メモリ確保要求者識別子は，mqaquegrp定義コマンドで指定されている値と重複しない00～ffの範囲で自動的に付与されます。

この識別子を指定したキューファイルグループのMQAサービス専用共用メモリセグメントの確保で共用メモリのメモリ不足が発生した場合，KFCA31186-Wのメッセージが出力され，共用メモリが分割して確保されます。指定した識別子または自動付与された識別子は，mqafillsコマンドの-fオプションを実行した時に表示される内容で確認することができます。

コマンド引数

●　キューファイル名

　～＜1～59文字の文字列＞

メッセージを格納するファイルの名称を指定します。

一つのキューファイルに，複数のキューが格納されます。

キューファイルを複数指定した場合，一つのキューに登録されるメッセージは，複数のキューファイルに分散して格納されます。そのためキューファイルを複数指定する場合は，それぞれのキューファイルを物理的に別ディスクにしてください。一つのキューに複数アプリケーションからの操作が重なった場合，性能が良くなります。

キューファイルパス名およびキューファイル名にスペースを指定しないでください。また，ファイルパス名の"/"個所に"/"を追加したキューファイルパス名を指定しないでください。指定した場合，動作は保証されません。

mqaqueatl（モデルキューの属性定義）

形式

{{ mqaqueatl 〔-q  キュー記述子〕　〔-g  取り出し許可〕
            〔-p  登録許可〕
            〔-y  省略時のメッセージ優先度〕
            〔-e  省略時のメッセージ永続性〕　　〔-a  プロセス名〕
            〔-d  最大メッセージ登録数〕　　〔-l  最大メッセージ長〕
            〔-s  共用性〕　　〔-o  省略時の取り出しオプション〕
            〔-m  メッセージ配布順序〕　　〔-r  キュー保持時間〕
            〔-k  定義タイプ〕　　〔-u  使用種別〕
            〔-i  イニシエーションキュー名〕
            〔-c  トリガ制御〕　　〔-t  トリガタイプ〕
            〔-b  トリガのためのメッセージ優先度の下限値〕
            〔-n  トリガのためのメッセージ登録数の下限値〕
            〔-f  トリガデータ〕
            〔-j  配布リストのサポート〕
            〔-w  デフォルトのバインディング〕
            〔-v  メッセージ滞留時間監視の要否〕
            モデルキューの定義名　キューファイル名  }}

機能

オンライン中に動的に作成されるキュー（動的キュー）のモデルになる属性を指定します。

MQOPEN命令でモデルキューの定義名がオブジェクト名として指定された場合，作成される動的キューの属性は，モデルキューの属性定義の値になります。

この定義コマンドは複数指定できますが，モデルキューの定義名は重複して指定できません。重複して指定した場合，MQAサーバ開始処理でエラーになります。また，リモートキューのローカル定義名，および別名キュー名と重複した名称をモデルキューの定義名に指定した場合も，MQAサーバ開始処理でエラーになります。

TP1/Message Queue全体で登録できるキューの最大数は20,480個です。

オプション

●　-q キュー記述子

　～＜1～64文字の文字列＞

キューについてのユーザに任意の情報（QDesc属性）を指定します。キューマネジャはこの指定値を，一切チェックしません。省略した場合，キュー記述子は空白になります。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-q "svrg01,svr01"

●　-g 取り出し許可

　～《allowed》

作成される動的キューに対する取り出し操作を許可するかどうか（InhibitGet属性）を指定します。

allowed
取り出し操作は許可されます（属性値：MQQA_GET_ALLOWED）。

inhibited
取り出し操作は禁止されます（属性値：MQQA_GET_INHIBITED）。

●　-p 登録許可

　～《allowed》

作成されるキューに対する登録操作を許可するかどうか（InhibitPut属性）を指定します。

allowed
登録操作は許可されます（属性値：MQQA_PUT_ALLOWED）。

inhibited
登録操作は禁止されます（属性値：MQQA_PUT_INHIBITED）。

●　-y 省略時のメッセージ優先度

　～＜符号なし整数＞((0～9))《0》

キューに登録されるメッセージの省略時の優先度（DefPriority属性）を指定します。優先度は，指定した値が小さいほど低く，大きいほど高くなります。

メッセージ記述子（MQMD構造体）にMQPRI_PRIORITY_AS_Q_DEFが指定され，メッセージがキューに登録される場合に，この指定値は使用されます。

●　-e 省略時のメッセージ永続性

　～《persistent》

キューに登録されるメッセージの省略時の永続性（DefPersistence属性）を指定します。

persistent
メッセージを永続にします（属性値：MQPER_PERSISTENT）。

notpersistent
メッセージを永続にしません（属性値：MQPER_NOT_PERSISTENT）。

●　-a プロセス名

　～＜1～48文字のMQ文字列＞

プロセスオブジェクトの名称（ProcessName属性）を指定します。

ローカルキューマネジャのmqaprcdef定義コマンドで指定したプロセス名と同じ名称を指定してください。

プロセスオブジェクトは，トリガモニタアプリケーションを決定するために使用されます。トリガを使用する場合は，必ず指定してください。トリガが使用される場合に省略したとき，イニシエーションキュー障害になります。トリガが使用されない場合に省略したとき，プロセス名は空白になります。

●　-d 最大メッセージ登録数

　～＜符号なし整数＞((0～2147483647))《128》

キューに登録できるメッセージの最大値（MaxQDepth属性）を指定します。

ここで指定した数のメッセージがすでに格納されているキューに対してさらにメッセージを登録しようとすると，理由コードMQRC_Q_FULLでエラーになります。

●　-l 最大メッセージ長

　～＜符号なし整数＞((0～128000000))《4096000》

キューに登録されるメッセージの中に，入れることができるアプリケーションデータの最大値（MaxMsgLength属性）を指定します。キューに対してこの指定値を超える長さのメッセージを登録すると，理由コードMQRC_MSG_TOO_BIG_FOR_Qでエラーになります。

この指定値は，mqaquemgr定義コマンドの-lオプション（最大メッセージ長）の指定値以下にする必要があります。

転送キューの場合は，構造体データタイプを含んだ最大メッセージ長を設定してください。

●　-s 共用性

　～《notshareble》

キューが同時に何度も入力用にオープンできるかどうか（Shareability属性）を指定します。

shareble
キューを共用できます（属性値：MQQA_SHAREABLE）。
MQOO_INPUT_SHAREDオプション指定の多重オープンができます。

notshareble
キューを共用できません（属性値：MQQA_NOT_SHAREABLE）。
MQOO_INPUT_SHAREDオプション指定のMQOPEN命令は，MQOO_INPUT_EXCLUSIVEと同様に処理されます。

●　-o 省略時の取り出しオプション

　～《exclusive》

キューを入力用にオープンする場合の省略時解釈値（DefInputOpenOption属性）を指定します。

キューオープン時のMQOPEN命令で，MQOO_INPUT_AS_Q_DEFオプションが指定された場合に，この値が使用されます。

exclusive
排他アクセスのメッセージ取り出し用にオープンします（属性値：MQOO_INPUT_EXCLUSIVE）。
MQOPEN命令呼び出し元アプリケーション自身またはほかのアプリケーションによって，キューがすでに入力用にオープンされていると，そのタイプがどのようなものであっても（MQOO_INPUT_SHAREDやMQOO_INPUT_EXCLUSIVE）理由コードMQRC_OBJECT_IN_USEでエラーになります。

shared
共用アクセスのメッセージ取り出し用にオープンします（属性値：MQOO_INPUT_SHARED）。
MQOPEN命令呼び出し元アプリケーション自身またはほかのアプリケーションによって，キューがMQOO_INPUT_SHAREDですでにオープンされている場合，命令は成功します。しかし，MQOO_INPUT_EXCLUSIVEでオープンされている場合は，理由コードMQRC_OBJECT_IN_USEでエラーになります。

●　-m メッセージ配布順序

　～《fifo》

メッセージがMQGET命令でアプリケーションに返される順序（MsgDeliverySequence属性）を指定します。

priority
優先度の順序でメッセージが返されます（属性値：MQMDS_PRIORITY）。
MQGET命令は，指定される選択基準を満足する最も優先度の高いメッセージを返します。各優先度のレベル内では，FIFO（先入れ先出し）の順序で返します。

fifo
FIFO（先入れ先出し）の順序でメッセージが返されます（属性値：MQMDS_FIFO）。
MQGET命令は，優先度を無視して，指定される選択基準を満足する先頭のメッセージを返します。

●　-r キュー保持時間

　～＜符号なし整数＞((0～65535))《8》（単位：時間）

キューを保持する時間（RetentionInterval属性）を指定します。キューを作成してからここで指定した時間が経過すると，キューは破棄対象になります。ただし，キューマネジャがこの指定値に基づいてキューを削除したり，保持時間が終了していないキューの削除を制限したりはしません。

MQINQ命令でこの指定値とキューの作成時間が返却されるため，必要な操作は，アプリケーションの責任でしてください。

●　-k 定義タイプ

　～《permanent》

作成するキューが永続的か一時的か（DefinitionType属性）を指定します。

permanent
永続的動的キュー（属性値：MQQDT_PERMANENT_DYNAMIC）

temporary
一時的動的キュー（属性値：MQQDT_TEMPORARY_DYNAMIC）
一時的動的キューとは，MQAサーバの再開始または正常開始時に引き継がれないキューのことです。

●　-u 使用種別

　～《normal》

キューが何のために使用されるか（Usage属性）を指定します。

normal
通常に使用（通常キュー）（属性値：MQUS_NORMAL）
通常のアプリケーションが，メッセージの登録または取り出しをする場合に指定します。

transmission
転送キューとして使用（属性値：MQUS_TRANSMISSION）
リモートキューマネジャあてのメッセージを保持する場合に指定します。

●　-i イニシエーションキュー名

　～＜1～48文字のMQ文字列＞

トリガメッセージを書き込むイニシエーションキューの名称（InitiationQName属性）を指定します。省略した場合，イニシエーションキュー名は空白になります。

イニシエーションキューは，ローカルキューマネジャで定義されるローカルキューとして定義されます。

イニシエーションキュー名を定義したキューにメッセージが到着し，アプリケーションの起動が要求されると，キューマネジャはここで指定したイニシエーションキューにトリガメッセージを送信します。イニシエーションキューは，トリガメッセージの受信後に適切なアプリケーションを起動するトリガモニタアプリケーションによって監視される必要があります。

●　-c トリガ制御

　～《on》

キューを処理するアプリケーションを起動させるために，トリガメッセージをイニシエーションキューに書き込むかどうか（TriggerControl属性）を指定します。

この指定値は，MQSET命令で変更できます。

off
トリガメッセージをキューに書き込みません（属性値：MQTC_OFF）。
-tオプション（トリガタイプ）を指定してもトリガメッセージはキューに書き込まれません。

on
トリガメッセージをキューに書き込みます（属性値：MQTC_ON）。

●　-t トリガタイプ

　～《every》

メッセージがキューに到着した場合，トリガメッセージをイニシエーションキューに書き込む条件（TriggerType属性）を指定します。

every
メッセージごとに通知されます（属性値：MQTT_EVERY）。
1個のメッセージがキューに到着するごとに，トリガメッセージが書き込まれます。

first
キューが空でないときに通知されます（属性値：MQTT_FIRST）。
キューが空（メッセージが1個もない）の状態から空でない（1個以上のメッセージがある）状態へ移行した場合に，トリガメッセージが書き込まれます。
このモデルキューを基に転送キューを作成する場合は，firstを指定してください。

depth
一定の格納数（下限値）を超えたときに通知されます（属性値：MQTT_DEPTH）。
キューに一定数（トリガのためのメッセージ登録数の下限値）のメッセージがある場合にトリガメッセージが書き込まれます。トリガメッセージが書き込まれたあとに，それ以上のトリガメッセージが書き込まれないようにするために，再度明示的にトリガ処理を再開する（MQSET命令によるトリガ制御の変更）までトリガ制御属性にMQTC_OFFが設定されます。

none
トリガメッセージは通知されません（属性値：MQTT_NONE）。
キューにメッセージが到着しても，トリガメッセージは書き込まれません。この指定は，-cオプション（トリガ制御）でoffを指定した場合と同様の効果を持ちます。

●　-b トリガのためのメッセージ優先度の下限値

　～＜符号なし整数＞((0～9))《0》

トリガタイプがdepthの場合の，トリガメッセージを書き込む下限値（TriggerMsgPriority属性）をメッセージ優先度で指定します。

キューに到着したメッセージの優先度が，ここで指定した優先度より低い場合は，トリガメッセージを書き込むほかの条件を満たしていても，トリガメッセージは書き込まれません。トリガメッセージを書き込む条件については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

●　-n トリガのためのメッセージ登録数の下限値

　～＜符号なし整数＞((1～65535))《1》

トリガタイプがdepthの場合の，トリガメッセージが書き込まれる前にキューになければならないメッセージの個数（TriggerDepth属性）を指定します。

この指定値には，-bオプションで指定した優先度より低い優先度のメッセージは含まれません。

●　-f トリガデータ

　～＜1～64文字の文字列＞

キューにメッセージが到着すると，イニシエーションキューにトリガメッセージが書き込まれます。この時，キューマネジャによってトリガメッセージに挿入される，ユーザに任意のデータ（TriggerData属性）を指定します。省略した場合，トリガデータは空白になります。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-f "svrg01,svr01"

●　-j 配布リストのサポート

　～《nosupport》

MQPUT命令，およびMQPUT1命令で，配布リスト付きのメッセージをキューに書き込めるかどうかを指定します。

support
配布リストに対応します。

nosupport
配布リストに対応しません。

●　-w デフォルトのバインディング

　～《fixed》

あて先クラスタキューのバインディング（DefBind属性）を制御します。オープンするキューがクラスタキューの場合に適用されます。

fixed
キューがオープンされたハンドルにあて先を固定します。

not_fixed
キューにメッセージが登録されるとき，メッセージ単位にあて先を決定します。

●　-v メッセージ滞留時間監視の要否

　～《off》

メッセージの滞留時間を監視するかどうかを指定します。

このオプションにonを指定する場合は，set形式のmqa_msg_stay_timeオペランドにメッセージ滞留時間を指定してください。

off
メッセージ滞留時間監視を実行しません。

on
メッセージ滞留時間監視を実行します。

コマンド引数

●　モデルキューの定義名

　～＜1～48文字のMQ文字列＞

モデルキューの定義名を指定します。

MQOPEN命令で動的キューを作成する場合は，この引数で指定した名称をオブジェクト名として指定してください。

●　キューファイル名

　～＜1～59文字の文字列＞

動的キューを格納するキューファイル名を指定します。mqaquegrp定義コマンドで設定したキューファイル名を指定してください。

この引数は，-kオプション（定義タイプ）でtemporaryを指定した場合も指定してください。一時的動的キューの情報は，基本的にはメモリ上だけで管理されますが，一時的動的キューの情報を管理するバッファの都合で，ファイルに出力される場合があります。その場合，どのキューファイルに出力すればよいかをキューマネジャは知る必要があるため，この引数は一時的動的キューに対しても有効です。

メッセージをキューに登録する場合は，指定されたキューファイルが属するキューファイルグループのどれかのキューファイルに登録します。

キューファイルグループに複数のキューファイルが対応づけられている場合，どのキューファイルにメッセージを登録するかは，キューアクセス競合時の負荷分散を考慮して，MQAサービスが決定します。

キューファイルパス名およびキューファイル名にスペースを指定しないでください。また，ファイルパス名の"/"個所に"/"を追加したキューファイルパス名を指定しないでください。指定した場合，動作は保証されません。

mqaremque（リモートキューのローカル定義）

形式

{{ mqaremque  〔-q キュー記述子〕  〔-p 登録許可〕
             〔-y 省略時のメッセージ優先度〕
             〔-e 省略時のメッセージ永続性〕
             〔-r リモートキュー名〕
             〔-w デフォルトのバインディング〕
             〔-c クラスタ内共用クラスタ名称〕
             〔-m リモートキューマネジャ名〕
             〔-x 転送キュー名〕
              リモートキューのローカル定義名 }}

機能

リモートキューのローカル定義を指定します。

この定義コマンドは，MQAサービス定義に複数指定できますが，リモートキューのローカル定義名は重複して指定できません。重複して指定した場合は，MQAサーバ開始処理でエラーになります。また，モデルキューの定義名，別名キュー名，および存在するキュー名と重複した名称をリモートキューのローカル定義名に指定した場合も，MQAサーバ開始処理でエラーになります。

TP1/Message Queue全体で登録できるキューの最大数は20,480個です。

オプション

●　-q キュー記述子

　～＜1～64文字の文字列＞

キューについてのユーザに任意の情報（QDesc属性）を指定します。キューマネジャはこの内容を一切チェックしません。省略した場合，キュー記述子は空白になります。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-q "svrg01,svr01"

●　-p 登録許可

　～《allowed》

作成されるキューに対する登録操作を許可するかどうか（InhibitPut属性）を指定します。

allowed
登録操作は許可されます（属性値：MQQA_PUT_ALLOWED）。

inhibited
登録操作は禁止されます（属性値：MQQA_PUT_INHIBITED）。

●　-y 省略時のメッセージ優先度

　～＜符号なし整数＞((0～9))《0》

キューに登録されるメッセージの省略時の優先度（DefPriority属性）を指定します。優先度は，指定した値が小さいほど低く，大きいほど高くなります。

メッセージ記述子（MQMD構造体）にMQPRI_PRIORITY_AS_Q_DEFが指定され，メッセージがキューに登録される場合に，この指定値は使用されます。

●　-e 省略時のメッセージ永続性

　～《persistent》

キューに登録されるメッセージの省略時の永続性（DefPersistence属性）を指定します。

persistent
メッセージを永続にします（属性値：MQPER_PERSISTENT）。

notpersistent
メッセージを永続にしません（属性値：MQPER_NOT_PERSISTENT）。

●　-r リモートキュー名

　～＜1～48文字のMQ文字列＞

リモートキュー名（RemoteQName属性）を指定します。-mオプション（リモートキューマネジャ名）のキューマネジャが認識できるキュー名を指定してください。

アプリケーションがリモートキューのローカル定義をオープンする場合，この指定値は省略できません。一方，この定義をキューマネジャの別名定義として使用する場合は，必ず省略してください。また，この定義を応答キューの別名として使用する場合，この指定値は，応答キューの名称にする必要があります。

●　-w デフォルトのバインディング

　～《fixed》

あて先クラスタキューのバインディング（DefBind属性）を制御します。オープンするキューがクラスタキューの場合に適用されます。

fixed
キューがオープンされたハンドルにあて先を固定します。

not_fixed
キューにメッセージが登録されるとき，メッセージ単位にあて先を決定します。

●　-c クラスタ内共用クラスタ名称

　～＜1～48文字のMQ文字列＞

キューが属するクラスタの名称を指定します。

省略した場合，キューはクラスタに属しません。

●　-m リモートキューマネジャ名

　～＜1～48文字のMQ文字列＞

-rオプション（リモートキュー名）のリモートキューを定義しているキューマネジャの名称（RemoteQMgrName属性）を指定します。

アプリケーションがリモートキューのローカル定義をオープンする場合，この指定値を省略したり，ローカルキューマネジャ名を指定したりできません。しかし，この定義をキューマネジャの別名定義として使用する場合は，この指定値を省略したり，ローカルキューマネジャ名を指定したりできます。

-xオプション（転送キュー名）を省略した場合は，ここで指定した名称と同じ名称のローカルキューが必要です。このローカルキューは，転送キューとして使用されます。このローカルキューがMQAサーバ開始時に存在しなくても，MQAサーバは正常に立ち上がります。アプリケーションがリモートキューのローカル定義をオープンしたときに，リモートキューマネジャ名と同じローカルキューが転送キューとして定義されているかがチェックされます。

●　-x 転送キュー名

　～＜1～48文字のMQ文字列＞

リモートキューのローカル定義をオープンした場合，メッセージの転送に使用されるローカル転送キューの名称（XmitQName属性）を指定します。省略した場合，-mオプション（リモートキューマネジャ名）で指定したリモートキューマネジャ名と同じ名称のキューが転送キューとして使用されます。

リモートキューのローカル定義がキューマネジャの別名として使用され，-mオプション（リモートキューマネジャ名）の指定値を省略したり，ローカルキューマネジャの名称を指定した場合，この指定値は無視されます。

コマンド引数

●　リモートキューのローカル定義名

　～＜1～48文字のMQ文字列＞

リモートキューのローカル定義名を指定します。

MQOPEN命令では，この引数で指定した名称をオブジェクト名として指定してください。

mqaalsque（別名キューの属性定義）

形式

{{ mqaalsque  〔-q キュー記述子〕  〔-g 取り出し許可〕
             〔-p 登録許可〕
             〔-y 省略時のメッセージ優先度〕
             〔-e 省略時のメッセージ永続性〕
             〔-w デフォルトのバインディング〕
             〔-c クラスタ内共用クラスタ名称〕
              別名キュー名  ベースキュー名 }}

機能

別名キューの属性を指定します。

この定義コマンドで指定した別名キュー名を，MQOPEN命令のオブジェクト名に指定すると，ベースキューに異なる名称を指定できます。

この定義コマンドは，MQAサービス定義に複数指定できますが，別名キュー名は重複して指定できません。重複して指定した場合は，MQAサーバ開始処理でエラーになります。また，モデルキューの定義名，およびリモートキューのローカル定義名と重複した名称を別名キュー名に指定した場合も，MQAサーバ開始処理でエラーになります。

TP1/Message Queue全体で登録できるキューの最大数は20,480個です。

オプション

●　-q キュー記述子

　～＜1～64文字の文字列＞

キューについてのユーザに任意の情報（QDesc属性）を指定します。キューマネジャはこの内容を一切チェックしません。省略した場合，キュー記述子は空白になります。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-q "svrg01,svr01"

●　-g 取り出し許可

　～《allowed》

作成される動的キューに対する取り出し操作を許可するかどうか（InhibitGet属性）を指定します。

allowed
取り出し操作は許可されます（属性値：MQQA_GET_ALLOWED）。

inhibited
取り出し操作は禁止されます（属性値：MQQA_GET_INHIBITED）。

●　-p 登録許可

　～《allowed》

作成されるキューに対する登録操作を許可するかどうか（InhibitPut属性）を指定します。

allowed
登録操作は許可されます（属性値：MQQA_PUT_ALLOWED）。

inhibited
登録操作は禁止されます（属性値：MQQA_PUT_INHIBITED）。

●　-y 省略時のメッセージ優先度

　～＜符号なし整数＞((0～9))《0》

キューに登録するメッセージの省略時の優先度（DefPriority属性）を指定します。優先度は，指定した値が小さいほど低く，大きいほど高くなります。

メッセージ記述子（MQMD構造体）にMQPRI_PRIORITY_AS_Q_DEFが指定され，メッセージがキューに登録される場合に，この指定値は使用されます。

●　-e 省略時のメッセージ永続性

　～《persistent》

キューに登録するメッセージの省略時の永続性（DefPersistence属性）を指定します。

persistent
メッセージを永続にします（属性値：MQPER_PERSISTENT）。

notpersistent
メッセージを永続にしません（属性値：MQPER_NOT_PERSISTENT）。

●　-w デフォルトのバインディング

　～《fixed》

あて先クラスタキューのバインディング（DefBind属性）を制御します。オープンするキューがクラスタキューの場合に適用されます。

fixed
キューがオープンされたハンドルにあて先を固定します。

not_fixed
キューにメッセージが登録されるとき，メッセージ単位にあて先を決定します。

●　-c クラスタ内共用クラスタ名称

　～＜1～48文字のMQ文字列＞

キューが属するクラスタの名称を指定します。

省略した場合，キューはクラスタに属しません。

コマンド引数

●　別名キュー名

　～＜1～48文字のMQ文字列＞

別名キューの名称を指定します。

●　ベースキュー名

　～＜1～48文字のMQ文字列＞

別名を付けるベースキューの名称（BaseQName属性）を指定します。

mqaprcdef（プロセス定義）

形式

{{ mqaprcdef  〔-p プロセス記述子〕
             〔-t アプリケーションタイプ〕
             〔-i アプリケーション記述子〕  〔-e 環境データ〕
             〔-u ユーザデータ〕   プロセス名 }}

機能

ユーザが使用するプロセスの属性を指定します。

この定義コマンドは，MQAサービス定義に複数指定できますが，プロセス名は重複して指定できません。重複して指定した場合，MQAサーバ開始処理でエラーになります。

オプション

●　-p プロセス記述子

　～＜1～64文字の文字列＞

トリガモニタアプリケーションに対する，ユーザに任意の情報（ProcessDesc属性）を指定します。キューマネジャはこの指定値を一切チェックしません。省略した場合，プロセス記述子は空白になります。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-p "svrg01,svr01"

●　-t アプリケーションタイプ

　～＜符号なし整数＞((15，または65536～999999999))《15》

トリガモニタアプリケーションのタイプ（ApplType属性）を指定します。この指定値は，トリガメッセージの一部としてイニシエーションキューに書き込まれます。

不正な値を指定した場合は，MQAサーバ開始処理でエラーになります。

15
OpenTP1アプリケーション（属性値：MQAT_OPEN_TP1）

65536～999999999
ユーザが使用できる値（属性値：なし）

●　-i アプリケーション記述子

　～＜1～256文字の文字列＞

トリガモニタアプリケーションを識別するための文字列（ApplId属性）を指定します。この文字列は，トリガメッセージの一部としてイニシエーションキューに書き込まれます。

キューマネジャはこの指定値を一切チェックしません。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-i "svrg01,svr01"

●　-e 環境データ

　～＜1～128文字の文字列＞

トリガモニタアプリケーションについての，環境に関連した情報を含む文字列（EnvData属性）を指定します。この文字列は，トリガメッセージの一部としてイニシエーションキューに書き込まれます。

キューマネジャはこの指定値を一切チェックしません。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-e "svrg01,svr01"

●　-u ユーザデータ

　～＜1～128文字の文字列＞

トリガモニタアプリケーションについての，ユーザ情報を含む文字列（UserData属性）を指定します。この文字列は，トリガメッセージの一部としてイニシエーションキューに書き込まれます。

キューマネジャはこの指定値を一切チェックしません。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-u "svrg01,svr01"

コマンド引数

●　プロセス名

　～＜1～48文字のMQ文字列＞

トリガモニタアプリケーションのプロセス名を指定します。

mqaqueatl定義コマンドの-aオプション（プロセス名）で指定するプロセス名と同じ名称を指定してください。

キューマネジャはこの名称をチェックしません。

mqaquemgr（キューマネジャ定義）

形式

mqaquemgr     -n キューマネジャ名  〔-q キューマネジャ記述子〕
           〔-t トリガ間隔〕      〔-d デッドレターキュー名〕
           〔-p 最大メッセージ優先度〕
           〔-x 省略時の転送キュー名〕  〔-h 最大ハンドル数〕
           〔-l 最大メッセージ長〕  〔-s トランザクション有効性〕
           〔-j 配布リストのサポート〕

機能

キューマネジャの属性を指定します。

この定義コマンドは，MQAサービス定義に一つだけ指定できます。複数指定した場合は，MQAサーバ開始処理でエラーになります。

オプション

●　-n キューマネジャ名

　～＜1～48文字のMQ文字列＞

キューマネジャ名（QMgrName属性）を指定します。アプリケーションをローカルキューマネジャに接続する場合に使用される名称です。

名称の先頭12文字は，ユニークなメッセージ識別子が生成される場合に使用されます。キューマネジャのネットワークでメッセージ識別子がユニークであるために，通信するキューマネジャ同士では，名称の先頭12文字が異なっていなければなりません。

●　-q キューマネジャ記述子

　～＜1～64文字の文字列＞

キューマネジャに対するユーザに任意の情報（QMgrDesc属性）を指定します。キューマネジャはこの指定値を一切チェックしません。省略した場合，キューマネジャ記述子は空白になります。

指定値に,（コンマ）を含む場合は文字列全体を"（引用符）で囲んでください。

指定例を次に示します。

-q "svrg01,svr01"

●　-t トリガ間隔

　～＜符号なし整数＞((0～999999999))《999999999》（単位：ミリ秒）

mqaqueatl定義コマンドの-tオプション（トリガタイプ）でfirstを指定した場合の，トリガメッセージ数を制御するために使用される時間間隔（TriggerInterval属性）を指定します。

トリガタイプがfirstの場合，通常，キューが空の状態のときにメッセージが到着すると，トリガメッセージが生成されます。しかし特定の状況の下では，キューが空でなくても，追加のトリガメッセージが生成されることがあります。この追加のトリガメッセージの生成頻度を制御します。

チャネルトリガを起動する場合，通信相手システムの起動状態によってイニシエーションキューが満杯になることがあります。そこで余分なトリガメッセージを発生させないために，次に示す計算式に従って定義を指定してください。

トリガ間隔（mqaquemgr定義コマンドの-tオプション指定値）
   ≧ トリガ起動チャネル数 × 10
   ＋ イニシエーションキュー監視タイマ値
      （mqttcp定義コマンドの-v itimオペランド指定値）
   ＋ 基本タイマ値
     （mqtttim定義コマンドの-t btimオペランド指定値＋
       bmtimオペランド指定値）

チャネル確立再試行間隔
（mqtalccha定義コマンドの-b bretryintオペランド指定値）
   ≧トリガ起動チャネル数 × 10

なお，上記の計算式に従って定義を指定した場合でも，トリガ起動チャネル数の3倍のメッセージが一時的に発生することがありますので，注意してください。

●　-d デッドレターキュー名

　～＜1～48文字のMQ文字列＞

ローカルキューマネジャで定義されているキューに登録できない場合に，そのメッセージを転送するキュー（デッドレターキュー）の名称（DeadLetterQName属性）を指定します。省略した場合，デッドレターキュー名は空白になります。デッドレターキューにメッセージを登録する条件については，マニュアル「TP1/Message Queue プログラム作成の手引」を参照してください。

●　-p 最大メッセージ優先度

　～＜符号なし整数＞((0～9))《9》

キューマネジャでサポートするメッセージ優先度の最大値（MaxPriority属性）を指定します。

●　-x 省略時の転送キュー名

　～＜1～48文字のMQ文字列＞

省略時の転送キューの名称（DefXmitQName属性）を指定します。

このキューは，使用する転送キューの指示がほかにない場合，リモートキューマネジャへのメッセージ転送用に使用されます。

●　-h 最大ハンドル数

　～＜符号なし整数＞((1～65535))《10》

プロセスから同時に使用できるオープン状態のオブジェクトハンドルの最大数（MaxHandles属性）を指定します。

最大ハンドル数は，次に示すハンドル数のうちで最大のハンドル数以上になるように指定してください。

一つのアプリケーションが同時に使用するハンドル数

クラスタ機能を使用する場合，リポジトリ管理サーバの最大ハンドル数（最大ハンドル数：6）
クラスタ機能を使用する場合，最大ハンドル数に5以下の値を指定すると，OpenTP1の開始時にKFCA31204-Eメッセージを出力し，OpenTP1が異常終了します。

MQCサーバ機能を使用する場合，クライアントアプリケーションから接続されたコネクションで同時に使用するオブジェクトハンドル数

C言語またはCOBOL言語で作成したアプリケーションの場合
MQCONN命令で取得したコネクションハンドルで実行する同時MQOPEN命令の数

C++言語で作成したアプリケーションの場合
一つのImqQueueManagerクラスを使用して同時にオープンするオブジェクトの数

Java言語で作成したアプリケーションの場合
一つのMQQueueManagerクラスから生成するオブジェクトの数

JMSインタフェースで作成したアプリケーションの場合
一つの論理コネクション（QueueSession）から生成するオブジェクトの数

●　-l 最大メッセージ長

　～＜符号なし整数＞((1～128000000))《4096000》

キューマネジャによって処理されるメッセージの最大長（MaxMsgLength属性）を指定します。

キューマネジャで作成されるすべてのキューに対して，この指定値がメッセージ長の最大値です。mqaqueatl定義コマンドの-lオプション（最大メッセージ長）はこの指定値の大きさを超えて指定できません。

●　-s トランザクション有効性

　～《sync》

接続するキューマネジャが，MQGET命令，MQPUT命令，およびMQPUT1命令で同期点処理をサポートするかどうか（SyncPoint属性）を指定します。

sync
トランザクションの同期点処理を利用できます（属性値：MQSP_AVAILABLE）。

nosync
トランザクションの同期点処理を利用できません（属性値：MQSP_NOT_AVAILABLE）。

●　-j 配布リストのサポート

　～《nosupport》

MQPUT命令，およびMQPUT1命令で，配布リスト付きのメッセージをキューに書き込めるかどうかを指定します。

support
配布リストに対応します。

nosupport
配布リストに対応しません。

mqamqtnam（MQTデーモン構成定義）

形式

{{ mqamqtnam  〔-b 総バッチメッセージ数〕
              MQTサーバ名またはMQCリスナサーバ名
              プロトコル名称 MCA数 }}

機能

メッセージの送受信をするためのMQTデーモン（MQTサーバ）の構成を定義します。MQAサーバは，指定されたMQTデーモンを開始処理で起動します。

関連製品であるTP1/Message Queue - Accessを使用する場合はMQCリスナサーバの構成を定義します。MQAサーバは，指定されたMQCリスナサーバを開始処理で起動します。

この定義を指定すると，MQAサーバはチェックポイントダンプを取得するため，MQAサーバ用のチェックポイントダンプの定義を指定する必要があります。MQAサーバ用のチェックポイントダンプの定義については，マニュアル「OpenTP1 システム定義」を参照してください。

オプション

●　-b 総バッチメッセージ数

　～＜符号なし整数＞((1～2549745))《255》

一つのTCP定義に対するバッチメッセージの総数を指定します。

コマンド引数

●　MQTサーバ名またはMQCリスナサーバ名

　～＜_（アンダスコア）で始まる2～8文字の識別子＞

MQTサーバ名またはMQCリスナサーバ名を指定します。

MQTサーバ名は，MQT通信構成定義のファイル名です。先頭のアンダスコアを含めて8文字までの英数字で指定してください。

関連製品であるTP1/Message Queue - Accessを使用する場合はMQCリスナサーバ名を指定します。MQAサービス定義に指定できるMQCリスナサーバは一つだけです。複数を指定した場合，MQCサービス開始時にKFCA31183-Eが出力されます。

●　プロトコル名称

　～＜1～14文字の識別子＞

プロトコル名称を指定します。

関連製品であるTP1/Message Queue - Accessを使用する場合はmqctcpを指定します。

●　MCA数

　～＜符号なし整数＞((1～255))

一つのMQTサーバ当たりのMCAの数を指定します。

関連製品であるTP1/Message Queue - Accessを使用する場合は1を指定します。

起動するMQTデーモン種別とmqamqtnam定義コマンドの指定値について，次の表に示します。

表4-5　起動するMQTデーモン種別とmqamqtnam定義コマンドの指定値

起動するMQTデーモン種別
総バッチメッセージ数※¹
MQTサーバ名
プロトコル名称
MCA数

標準デーモン
チャネル定義でsenderまたはserverに指定されたバッチサイズの合計。受信チャネルだけの場合は"1"を指定します。
MQT通信構成定義のファイル名
mqttcp
MQT通信構成定義で指定するチャネル定義の数（デフォルトチャネル定義は含みません）

標準デーモン
（UOC組み込み）
mqtuで始まるシステムサービス定義名※²

クラスタセンダデーモン
次に示す計算式で求めた値
（事前定義チャネルに指定したバッチサイズの合計）
＋（該当するMQTに接続されるクラスタレシーバ内で最大のバッチサイズ）×（MCA数－事前定義チャネル数）
MQT通信構成定義のファイル名
mqttcpcs
事前定義チャネル数＋自動定義チャネル数（デフォルトチャネル定義は含みません）
（算出の目安：同一クラスタ内の自システム以外のクラスタレシーバチャネル数が最大になります）

クラスタセンダデーモン
（UOC組み込み）
mqttcpcsuで始まるシステムサービス定義名※²

クラスタレシーバデーモン
1
MQT通信構成定義のファイル名
mqttcpcr
事前定義したクラスタレシーバで動作するインスタンス数
（算出の目安：同一クラスタ内の自システム以外のMQシステム数）

クラスタレシーバデーモン
（UOC組み込み）
mqttcpcruで始まるシステムサービス定義名※²

注※1

ネゴシエーション時の自動定義クラスタセンダチャネルのバッチサイズはmqamqtnam定義コマンド-bオプション指定値および事前定義クラスタセンダチャネルに指定したバッチサイズに依存します。詳細については，この章の「チャネルのネゴシエーション」を参照してください。

この値が不足していると，相手システムのクラスタレシーバで指定したバッチサイズより小さいバッチサイズでチャネルが確立されることがあります。

注※2

詳細については，「3.5.4　システムサービス情報定義の作成」を参照してください。

MQTサービス定義

TP1/Message Queueの定義のうち，MQTサービス定義について説明します。

概要

MQTサービス定義は，OpenTP1のシステムサービス定義の一つです。

MQTサービス定義の定義ファイルは，OSのテキストエディタを使用して，テキストファイルとして作成します。MQTサービス定義の定義ファイル名（完全パス名）を次に示します。

$DCCONFPATH/mqt

機能

通信するための実行環境を定義します。

種類

MQTサービス定義の種類について，次の表に示します。

表4-6　MQTサービス定義の種類

形式
オプション
定義内容
指定値

set max_socket_descriptors
なし
ソケット用ファイル記述子の最大数
＜符号なし整数＞
Linux以外の場合((64～1998))
Linuxの場合((64～974))
UNIXの場合《304》
Windowsの場合《64》

set mqt_trace_file_path
なし
MQTトレースファイル格納ディレクトリパス名
＜1～80バイトの文字列＞
UNIXの場合《$DCDIR/spool》
Windowsの場合《%DCDIR%¥spool》

set形式のMQTサービス定義

set形式のMQTサービス定義について説明します。

形式

〔set max_socket_descriptors = ソケット用ファイル記述子の最大数〕
〔set mqt_trace_file_path= MQTトレースファイル格納ディレクトリパス名〕

オペランド

●　max_socket_descriptors=ソケット用ファイル記述子の最大数

　～＜符号なし整数＞((Linux以外の場合：64～1998，Linuxの場合：64～974))

UNIXの場合《304》

Windowsの場合《64》

MQTサーバでソケット用に使用するファイル記述子の最大数を指定します。

この定義で指定した属性は，すべてのMQTサーバで共通の属性となります。

MQTサーバのMCAはソケットを使用したTCP/IP通信を行います。また，MQAサーバとの間でもソケットを使用したTCP/IP通信でプロセス間の情報交換をしています。そのため，MCAの定義内容によっては，ソケット用のファイル記述子の最大数を変更する必要があります。

MQTサーバが使用するソケット用ファイル記述子の最大数の計算式を，次に示します。計算式の最大値が64より大きい場合は，その値を指定し，64以下の場合は，64を指定します。MQTサーバを複数定義する場合は，計算式が最大となるMQTサーバの値を指定してください。

注※

センダチャネルまたはサーバチャネルだけ該当します。

MQTサーバが使用中のソケット用ファイル記述子数が，MQTサービス定義のmax_socket_descriptorsオペランドに指定したソケット用ファイル記述子の最大数よりも多くなった場合，次に示すどれかのメッセージを出力して，OpenTP1が異常終了することがあります。

出力メッセージID | 内容 | 出力先
KFCA00107-E | "open(モジュール名)" failed errno=24 : Too many open files | 標準エラー出力
KFCA00307-E | ソケット不足が発生したためRPCができません。 | 標準エラー出力
KFCA16331-E | TCP/IPインタフェースエラー（エラーコード=24） | メッセージログファイル
KFCA18376-E | トレース出力失敗（理由コード=-1） | メッセージログファイル

●　mqt_trace_file_path=MQTトレースファイル格納ディレクトリパス名

　～＜1～80バイトの文字列＞

UNIXの場合《$DCDIR/spool》

Windowsの場合《%DCDIR%¥spool》

MQTトレースファイルを格納するディレクトリの絶対パス名（UNIX版の場合は通常ファイルを作成できるディレクトリの絶対パス名）を指定します。パス名は80バイト以内にしてください。

MQT通信構成定義

TP1/Message Queueの定義のうち，MQT通信構成定義について説明します。

概要

MQT通信構成定義は，OpenTP1のネットワークコミュニケーション定義の一つです。MQT通信構成定義は，MQT共通定義とTCP定義に分けられます。

MQT通信構成定義の定義ファイルは，OSのテキストエディタを使用して，定義ソースファイルを作成します。定義ソースファイルは，MQT共通定義とTCP定義にそれぞれに一つずつ作成します。定義ファイルの作成方法については，この章の「MQT定義オブジェクトファイルの作成手順」を参照してください。

種類

MQT通信構成定義の種類について，次の表に示します。

表4-7　MQT通信構成定義の種類

定義名
定義コマンド
オプション
オペランド
定義内容
指定値

MQT
共通
定義
mqttenv
（MQT環境定義）
指定数：1
-s
なし
MQT通信プロセス識別子
＜16進数字＞
((01～ff))

-p
なし
ポート番号
＜符号なし整数＞
((1024～65535))

mqtttim
（タイマ定義）
指定数：0～1
-t
btim
基本タイマ値
＜符号なし整数＞
((0～60))《1》
（単位：秒）

bmtim
基本タイマ値
（ミリ秒）
＜符号なし整数＞
((0～999))《0》
（単位：ミリ秒）

mqttbuf
（バッファグループ定義）
指定数：1～512
-g
groupno
バッファグループ番号
＜符号なし整数＞
((1～512))

length
バッファ長
＜符号なし整数＞
((1024～1073741824))
（単位：バイト）

count
バッファ数
＜符号なし整数＞
((1～65535))

extend
拡張バッファ数
＜符号なし整数＞
((0～65535))《0》

TCP
定義
mqttcp
（TCP構成定義）
指定数：1
-i
なし
イニシエーションキュー名
＜1～48文字のMQ文字列＞

-p
なし
プロトコル種別
tcp

-g
rcvbuf
受信バッファグループ番号
＜符号なし整数＞
((1～512))

-r
portno
自システムのポート番号
＜符号なし整数＞
((1024～65535))

servname
自システムのサービス名
＜1～32文字の識別子（ハイフン（-）を含む）＞

-v
itim
イニシエーションキュー監視タイマ値
＜符号なし整数＞
((0～65535))《60》
（単位：秒）

etim
終了処理監視タイマ値
＜符号なし整数＞
((0，10～65535))《360》
（単位：秒）

rtim
チャネル確立完了監視タイマ値
＜符号なし整数＞
((0～65535))《60》
（単位：秒）

-t
disk
MQTトレースのディスク出力要否
yes｜《no》

bufcnt
バッファ格納個数
＜符号なし整数＞
((10～2147483647))《100》

trccnt
トレースファイル個数
＜符号なし整数＞
((3～99))《3》

bufsize
トレースバッファサイズ
＜符号なし整数＞
((20480～128000000))《20480》
（単位：バイト）

-z
なし
イニシエーションキュー監視方式
《time》｜event

mqttcpcs
（クラスタセンダTCP構成定義）
指定数：1
-p
なし
プロトコル種別
tcp

-v
stim
チャネル要求監視間隔
＜符号なし整数＞
((1～65535))《5》
（単位：秒）

etim
終了処理監視タイマ値
＜符号なし整数＞
((0，10～65535))《360》
（単位：秒）

-t
disk
MQTトレースのディスク出力要否
yes｜《no》

bufcnt
バッファ格納個数
＜符号なし整数＞
((10～2147483647))《100》

trccnt
トレースファイル個数
＜符号なし整数＞
((3～99))《3》

bufsize
トレースバッファサイズ
＜符号なし整数＞
((20480～128000000))《20480》
（単位：バイト）

mqttcpcr
（クラスタレシーバTCP構成定義）
指定数：1
-p
なし
プロトコル種別
tcp

-g
rcvbuf
受信バッファグループ番号
＜符号なし整数＞
((1～512))

-r
portno
自システムのポート番号
＜符号なし整数＞
((1024～65535))

servname
自システムのサービス名
＜1～32文字の識別子
（ハイフン（-）を含む）＞

-v
stim
チャネル要求監視間隔
＜符号なし整数＞
((1～65535))《5》
（単位：秒）

etim
終了処理監視タイマ値
＜符号なし整数＞
((0，10～65535))《360》
（単位：秒）

rtim
開始要求受信監視タイマ値
＜符号なし整数＞
((0～65535))《60》
（単位：秒）

-t
disk
MQTトレースのディスク出力要否
yes｜《no》

bufcnt
バッファ格納個数
＜符号なし整数＞
((10～2147483647))《100》

trccnt
トレースファイル個数
＜符号なし整数＞
((3～99))《3》

bufsize
トレースバッファサイズ
＜符号なし整数＞
((20480～128000000))《20480》
（単位：バイト）

mqtalccha
（チャネル定義）
指定数：1～255※
-c
なし
チャネル名
＜1～20文字のMQ文字列＞

-y
type
チャネルタイプ
sender｜server｜
receiver｜requester｜
clussdr｜clusrcvr｜
defsnd｜defsrv｜defrcv｜
defreq｜defcsn

-j
なし
バッチサイズ
＜符号なし整数＞
((1～9999))
チャネルタイプがsender，server，receiver，またはrequesterの場合《1》
チャネルタイプがclussdrまたはclusrcvrの場合《50》

-q
なし
転送キュー名
＜1～48文字のMQ文字列＞

-m
maxmsg
最大メッセージ長
＜符号なし整数＞
((1024～127996000))
（単位：バイト）

maxseg
最大セグメントサイズ
＜符号なし整数＞
((1024～1073741824))
（単位：バイト）

-w
なし
メッセージシーケンス番号の最大値
＜符号なし整数＞
((100～999999999))
《999999999》

-g
sndbuf
送信バッファグループ番号
＜符号なし整数＞
((1～512))

rcvbuf
受信バッファグループ番号
＜符号なし整数＞
((1～512))

buftype
バッファ方式
seg｜《msg》

-e
medbuf
メッセージ編集出口編集用バッファグループ番号
＜符号なし整数＞
((1～512))

medcnt
メッセージ編集出口編集用バッファ数
＜符号なし整数＞
((1～65535))

-i
なし
チャネルの確立方法
auto｜manual｜auto2
チャネルタイプがsender，server，receiver，またはrequesterの場合《manual》
チャネルタイプがclussdr，またはclusrcvrの場合《auto》

-b
bretry
短期確立再試行の要否
《yes》｜no

bretrycnt
短期確立再試行の回数
＜符号なし整数＞
((1～999999999))《10》（単位：回）

bretryint
短期確立再試行の間隔
＜符号なし整数＞
((0～999999999))《60》（単位：秒）

bretrylg
長期確立再試行の要否
《yes》｜no

bretrylgcnt
長期確立再試行の回数
＜符号なし整数＞
((1～999999999))《999999999》（単位：回）

bretrylgint
長期確立再試行の間隔
＜符号なし整数＞
((0～999999999))《1200》（単位：秒）

bretrymcp
MQプロトコル障害再試行の要否
《yes》｜no

-r
ipaddr
自システムのIPアドレス
＜符号なし整数＞
((0～255))
（形式：nnn.nnn.nnn.nnn）

hostname
自システムのホスト名
＜1～255バイトの文字列＞

portno
自システムのポート番号
＜符号なし整数＞
((1024～65535))

servname
自システムのサービス名
＜1～32文字の識別子
（ハイフン(-)を含む）＞

portnum
自システムのポート番号使用数
＜符号なし整数＞
((1～64512))《1》

-o
oipaddr
相手システムのホストのIPアドレス
＜符号なし整数＞
((0～255))
（形式：nnn.nnn.nnn.nnn）

ohostname
相手システムのホスト名
＜1～255バイトの文字列＞

oportno
相手システムのホストのポート番号
＜符号なし整数＞
((1024～65535))

oservname
相手システムのホストのサービス名
＜1～32文字の識別子
（ハイフン（-）を含む）＞

-v
tim1
チャネル確立応答受信監視タイマ値
＜符号なし整数＞
((0～8191))《30》
（単位：秒）

tim2
確認メッセージ受信監視タイマ値
＜符号なし整数＞
((0～8191))
チャネルタイプがsender，またはserverの場合《10》
チャネルタイプがclussdrの場合《30》
（単位：秒）

tim3
継続セグメント受信監視タイマ値
＜符号なし整数＞
((0～8191))
チャネルタイプがreceiver，またはrequesterの場合《10》
チャネルタイプがclusrcvrの場合《30》
（単位：秒）

tim4
転送キュー監視間隔
＜符号なし整数＞
((0～8191))《60》
（単位：秒）

tim4cnt
転送キュー監視回数
＜符号なし整数＞
((0～2147483647))《1》
（単位：回）

dtimefct
切断時間間隔での監視の要否
《yes》｜no

dtim
切断時間間隔
＜符号なし整数＞
((0～999999))
チャネルタイプがsender，またはserverの場合《60》
チャネルタイプがclussdr，またはclusrcvrの場合《6000》
（単位：秒）

vretry
タイムアウト時のチャネル確立再試行の要否
yes｜no
《yes》

htim
ハートビート間隔
＜符号なし整数＞
((0～999999))《300》
（単位：秒）

btim
バッチ終了待ちタイマ値
＜符号なし整数＞
((0～999999))《0》
（単位：秒）

bmtim
バッチ終了待ちタイマ値（ミリ秒）
＜符号なし整数＞
((0～999))《0》
（単位：ミリ秒）

mtim
継続メッセージ受信監視タイマ値
＜符号なし整数＞
((0～999999))
《tim3オペランドの指定値》
（単位：秒）

-x
sndexdata
送信出口ユーザデータ
＜1～32バイトの文字列＞
《32バイトのスペース文字》

rcvexdata
受信出口ユーザデータ
＜1～32バイトの文字列＞
《32バイトのスペース文字》

metexdata
メッセージ編集出口ユーザデータ
＜1～32バイトの文字列＞
《32バイトのスペース文字》

scyexdata
セキュリティ出口ユーザデータ
＜1～32バイトの文字列＞
《32バイトのスペース文字》

sendexit
送信出口名
＜1～128バイトの文字列＞
《128バイトのスペース文字》

rcvexit
受信出口名
＜1～128バイトの文字列＞
《128バイトのスペース文字》

msgexit
メッセージ出口名
＜1～128バイトの文字列＞
《128バイトのスペース文字》

scyexit
セキュリティ出口名
＜1～128バイトの文字列＞
《128バイトのスペース文字》

-t
tcpsndbuf
TCP/IP出力用バッファサイズ
＜符号なし整数＞
((1024～262144))
（単位：バイト）

tcprcvbuf
TCP/IP入力用バッファサイズ
＜符号なし整数＞
((1024～262144))
（単位：バイト）

tretrycnt
TCP/IP確立確認回数
＜符号なし整数＞
((1～65535))《10》
（単位：回）

tretryint
TCP/IP確立確認間隔
＜符号なし整数＞
((1～65535))《1》
（単位：秒）

-d
cnvccsid
変換CCSID
＜符号なし整数＞
((1～65535))

-s
npmspeed
非永続メッセージ転送速度
normal｜《fast》

-z
なし
転送キュー監視方式
time｜《event》

-a
cluster
クラスタ名
＜1～48文字のMQ文字列＞

-p
netprty
ネットワーク接続優先順位
＜符号なし整数＞
((0～9))《0》

-f
adoptchk
強制確立確認条件
off｜name｜《qmgr》｜
ipaddr｜all

-h
なし
注釈
＜1～64バイトの文字列＞
《64バイトのスペース文字》

-mc
mcauser
MCAユーザID
＜1～64バイトの文字列＞
《64バイトのスペース文字》

mcatype
MCAタイプ
《process》｜thread

-jn
sndjnl
送信チャネルジャーナル出力条件
《flush》｜noflush

mqtalced
（チャネル終了定義）
指定数：mqtalcchaと同数
なし
なし
なし
なし

注※

TCP定義にmqttcp定義コマンドを指定する場合，チャネルタイプがsender，server，receiver，またはrequesterのどれかを指定したとき，mqtalccha定義コマンドは最大255個指定できます（デフォルトチャネル定義は含みません）。

TCP定義にmqttcpcs定義コマンドを指定する場合，チャネルタイプがclussdrのmqtalcchaコマンドを最大10個指定できます（デフォルトチャネル定義は含みません）。

TCP定義にmqttcpcr定義コマンドを指定する場合，チャネルタイプがclusrcvrのmqtalccha定義コマンドを1個指定できます。

MQT共通定義の指定順序

MQT通信構成定義のうち，MQT共通定義のコマンドの詳細を説明します。

MQT共通定義のコマンドの指定順序を次に示します。

TCP定義の指定順序

MQT通信構成定義のうち，TP1/Message Queueの次のTCP定義コマンドを指定する順序を説明します。

TCP定義コマンドの指定順序

TCP定義コマンド（デフォルトチャネル定義）の指定順序

クラスタセンダTCP定義コマンドの指定順序

クラスタセンダTCP定義コマンド（デフォルトチャネル定義）の指定順序

クラスタレシーバTCP定義コマンドの指定順序

TCP定義コマンドの指定順序

TCP定義コマンドの指定順序について，次に示します。

TCP定義コマンド（デフォルトチャネル定義）の指定順序

TCP定義コマンド（デフォルトチャネル定義）の指定順序について，次に示します。

クラスタセンダTCP定義コマンドの指定順序

クラスタセンダTCP定義コマンドの指定順序について，次に示します。

クラスタセンダTCP定義コマンド（デフォルトチャネル定義）の指定順序

クラスタセンダTCP定義コマンド（デフォルトチャネル定義）の指定順序について，次に示します。

クラスタレシーバTCP定義コマンドの指定順序

クラスタレシーバTCP定義コマンドの指定順序について，次に示します。

mqttenv（MQT環境定義）

形式

mqttenv   -s MQT通信プロセス識別子
       〔-p ポート番号〕

機能

MQTについての環境を定義します。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。この指定値は，ほかのMQT環境定義で指定するMQT通信プロセス識別子と重複して指定できません。

●　-p ポート番号

　～＜符号なし整数＞((1024～65535))

このオプションは，使用しているTP1/Message Queueのバージョンでは必要ありません。ただし，指定してもエラーにはなりません。このオプションは過去のバージョンで作成された定義との互換性のためだけに指定できるようになっています。

mqtttim（タイマ定義）

形式

〔mqtttim  〔-t "〔btim = 基本タイマ値〕
                〔bmtim = 基本タイマ値（ミリ秒）〕"〕

機能

MQTで使用されるタイマ値を定義します。

オプション

●　-t

（オペランド）

btim=基本タイマ値
　～＜符号なし整数＞((0～60))《1》（単位：秒）
MQTで使用される基本タイマ値（秒）を指定します。
btimオペランド指定値とbmtimオペランド指定値の和の時間がMQTのタイマ制御の精度となります。

bmtim=基本タイマ値（ミリ秒）
　～＜符号なし整数＞((0～999))《0》（単位：ミリ秒）
MQTで使用される基本タイマ値（ミリ秒）を指定します。
btimオペランド指定値とbmtimオペランド指定値の和の時間がMQTのタイマ制御の精度となります。
btimオペランドとbmtimオペランドには同時に0を指定できません。btimオペランドに0を指定した場合，bmtimオペランドには15以上の値を指定してください。btimオペランド指定値とbmtimオペランド指定値の和が15ms未満になる場合，すべての動作を保証できません。
btimオペランド指定値とbmtimオペランド指定値の和は，次のオペランドで指定する各種タイマ値以下かつ15ms以上の値にしてください。

mqttcp -vオプションのitim，etim，rtimオペランド

mqttcpcs -vオプションのstim，etimオペランド

mqttcpcr -vオプションのstim，etim，rtimオペランド

mqtalccha -bオプションのbretryint，bretrylgintオペランド

mqtalccha -vオプションのtim1，tim2，tim3，tim4，dtim，htim，btim，bmtim，mtimオペランド

mqtalccha -tオプションのtretryintオペランド

正しく設定しなかった場合，自システムまたは相手システムで各種タイムアウトが発生したり，タイマ値に指定した時間どおりに動作しなかったりします。

mqttbuf（バッファグループ定義）

形式

{{ mqttbuf -g  "groupno = バッファグループ番号
               length = バッファ長
               count = バッファ数
             〔extend = 拡張バッファ数〕" }}

機能

メッセージ送受信用のバッファについての環境を定義します。

オプション

●　-g

（オペランド）

groupno=バッファグループ番号
　～＜符号なし整数＞((1～512))
メッセージ送受信用のバッファグループ番号を指定します。ほかのmqttbuf定義コマンドのバッファグループ番号と重複して指定できません。
自動定義クラスタセンダチャネルは，送信用バッファグループ番号にデフォルトで1を仮定します。クラスタセンダプロセスではバッファグループ番号に1を指定してください。この値以外を指定するには，デフォルトクラスタセンダチャネル定義またはUOCを使用してバッファグループ番号を変更してください。
クラスタセンダプロセスで，このオペランドに1を指定した定義が存在しない，かつMQT定義オブジェクト生成ユティリティのmqttcpcsコマンドの-dオプションにデフォルトチャネル定義を指定しない場合は，KFCA18021-Eのメッセージが出力されます。

length=バッファ長
　～＜符号なし整数＞((1024～1073741824))（単位：バイト）
メッセージ送受信に使用するバッファの長さを指定します。
groupnoオペランドで指定されたバッファグループ番号によって，該当する値を指定してください。

バッファグループ
用途
指定するバッファ長

定義コマンド
オプション
オペランド

mqttcp
-g
rcvbuf
開始要求受信用
1024バイト

mqttcpcr

mqtalccha

バッファ方式がセグメント方式の場合
（-g buftype=seg）

-g
sndbuf
メッセージ送信用
送信最大セグメントサイズ

rcvbuf
メッセージ受信用
受信最大セグメントサイズ

mqtalccha

バッファ方式がメッセージ方式の場合
（-g buftype=msg）

-g
sndbuf
メッセージ送信用
送信最大メッセージ長

rcvbuf
メッセージ受信用
受信最大メッセージ長

-e
medbuf
メッセージ編集出口編集用
ユーザ任意

自動定義されるクラスタセンダチャネルでは，送信用バッファグループ番号にデフォルトで1を仮定します。この値を変更するにはUOCを作成して属性を変更してください。
mqtalccha定義コマンドの-y typeオペランドで，receiverまたはrequesterを指定しない場合は，mqttcp定義コマンドの-gオプションを省略できます。したがって，開始要求を受信するためのmqttbuf定義コマンドも省略できます。

count=バッファ数
　～＜符号なし整数＞((1～65535))
メッセージ送受信バッファの個数を指定します。
groupnoオペランドで指定されたバッファグループ番号によって，該当する値を指定してください。

バッファグループ
用途
指定するバッファ数

定義コマンド
オプション
オペランド

mqttcp
-g
rcvbuf
開始要求受信用
バッファ数：1

mqttcpcr

mqtalccha

バッファ方式がセグメント方式の場合
（-g buftype=seg）

-g
sndbuf
メッセージ送信用
バッファ数：送信側MCA数

rcvbuf
メッセージ受信用
バッファ数：受信側MCA数

mqtalccha

バッファ方式がメッセージ方式の場合
（-g buftype=msg）

-g
sndbuf
メッセージ送信用
バッファ数：送信側MCA数

rcvbuf
メッセージ受信用
バッファ数：受信側MCA数

-e
medbuf
メッセージ編集出口編集用
バッファ数：総medcnt値

自動定義されるクラスタセンダチャネルでは，送信用バッファグループ番号にデフォルトで1を仮定します。この値を変更するにはUOCを作成して属性を変更してください。
mqtalccha定義コマンドの-y typeオペランドで，receiverまたはrequesterを指定しない場合は，mqttcp定義コマンドの-gオプションを省略できます。したがって，開始要求を受信するためのmqttbuf定義コマンドも省略できます。

extend=拡張バッファ数
　～＜符号なし整数＞((0～65535))《0》
countオペランドで指定したバッファが満杯になった場合に拡張するバッファの数を指定します。

注意事項

チャネル開始時に，バッファグループ番号（mqtalccha定義コマンドの-gオプションで指定）のバッファ（mqttbuf定義コマンドの-gオプションのcountオペランドおよびextendオペランドで指定）に空きがない場合，KFCA16330-Eメッセージを出力し，チャネルを開始しません。

mqttcp（TCP構成定義）

形式

mqttcp  〔-i イニシエーションキュー名〕
         -p tcp
         -g " rcvbuf = 受信バッファグループ番号"
       〔-r "{portno = 自システムのポート番号
            ｜servname = 自システムのサービス名 }"〕
       〔-v "〔itim = イニシエーションキュー監視タイマ値〕
             〔etim = 終了処理監視タイマ値〕
             〔rtim = チャネル確立完了監視タイマ値〕"〕
       〔-t "〔disk = yes｜no〕
             〔bufcnt = バッファ格納個数〕
             〔trccnt = トレースファイル個数〕
             〔bufsize = トレースバッファサイズ〕"〕
       〔-z time｜event〕

機能

MQTサーバのTCP/IPプロトコルについての構成を定義します。

オプション

●　-i イニシエーションキュー名

　～＜1～48文字のMQ文字列＞

イニシエーションキュー名を指定します。この文字列の先頭または途中に空白を指定できません。また，ほかのmqttcp定義コマンドで指定するイニシエーションキュー名と重複して指定できません。

イニシエーションキューの詳細については，「2.3.4　MQTサーバのトリガ起動によるチャネル開始」を参照してください。

●　-p tcp

プロトコル種別を指定します。

tcp：TCP/IPプロトコル

●　-g

（オペランド）

rcvbuf=受信バッファグループ番号
　～＜符号なし整数＞((1～512))
チャネル確立属性がレスポンダの場合に開始要求を受信する，受信バッファグループ番号を指定します。
mqttbuf定義コマンドの-g groupnoオペランドで指定したバッファグループ番号を指定してください。
mqtalccha定義コマンドの-y typeオペランドで，receiverまたはrequesterを指定しない場合は，-gオプションを省略できます。また，開始要求を受信するためのmqttbuf定義コマンドも省略できます。

●　-r

（オペランド）

portno=自システムのポート番号
　～＜符号なし整数＞((1024～65535))
開始要求を受信する自システムのポート番号を指定します。この指定値は，相手システムからのネットワークリクエストを受けるために使用されます。
このオプションのservnameオペランドを指定した場合，この指定値は省略できます。省略した場合，あらかじめサービス名ファイルにサービス名が登録されている必要があります。
portnoオペランドとservnameオペランドを両方とも指定した場合は，portnoオペランドの指定値が優先されます。

servname=自システムのサービス名
　～＜1～32文字の識別子（ハイフン（-）を含む）＞
自システムのサービス名を指定します。この指定値は，相手システムからのネットワークリクエストを受けるために使用されます。
このオプションのportnoオペランドに指定がある場合，この指定値は省略できます。
サービス名は，サービス名ファイルに次に示す形式で登録します。

portnoオペランドとservnameオペランドを両方とも指定した場合は，portnoオペランドの指定値が優先されます。

注意

mqtalccha定義コマンドの-y typeオペランドで，receiverまたはrequesterを指定しない場合は，-rオプションは省略できます。

portnoオペランドにはMQTサーバが動作するシステム内で使用しないポート番号（OSが自動割り当てするポート番号の範囲外で，かつほかのプログラムが使用しない番号）を指定してください。

servnameオペランドにはMQTサーバが動作するシステム内で使用しないサービス名（サービス名に関連づけられたポート番号を考慮）を指定してください。

-rオプションで指定したポート番号またはサービス名に関連づけられたポート番号が，ほかの通信プログラムで使われている状態でMQTサーバを起動すると，通信障害（TCP/IPエラー，不正データ受信）になることがあります。なお，ポート番号には，OSが自動割り当てする番号があります。OSが自動割り当てするポート番号は，OSの種別やOSのバージョンなどによって異なります。詳細は，OSのマニュアルを参照してください。

●　-v

（オペランド）

itim=イニシエーションキュー監視タイマ値
　～＜符号なし整数＞((0～65535))《60》（単位：秒）
イニシエーションキュー監視タイマ値を指定します。
mqttcp定義コマンドの-zオプションにtimeを指定した場合にこのオペランドに0を指定するとき，イニシエーションキュー監視は実行しません。mqttcp定義コマンドの-zオプションにeventを指定した場合でも，このオペランドの指定値によって，イニシエーションキューの監視を実行します。イベント方式では，通常この機能は必要ありません。これは何らかの予期しない障害によって，イベント連絡に失敗した場合にチャネル起動がされなくなるのを防ぐ機能です。

etim=終了処理監視タイマ値
　～＜符号なし整数＞((0，10～65535))《360》（単位：秒）
終了処理監視タイマ値を指定します。0を指定した場合，終了処理は監視されません。

注意

etimオペランドを指定する場合は，次に示す条件を考慮してください。

すべてのMQTサーバのTCP定義（mqttcp定義コマンド，mqttcpcs定義コマンド，mqttcpcr定義コマンド）で指定するetimオペランドの指定値の合計が，OpenTP1のシステム環境定義のsystem_terminate_watch_timeオペランドの指定値よりも小さくなるように0以外の値を指定してください。この条件を満たさない場合，dcstopコマンドを入力したあとに，OpenTP1が強制停止することがあります。

「チャネル動作中」でバッチ処理を行っている場合にdcstopコマンドを入力するときは，バッチ処理時間よりも大きい値をetimオペランドに指定してください。バッチ処理時間よりも小さい値をetimオペランドに指定した場合，送達未確認状態や転送メッセージの消滅（ファーストメッセージの場合）が発生することがあります。バッチサイズ，転送メッセージ長，およびバッチインターバルを考慮してください。

「チャネル動作中」でバッチ処理を行っていない場合にdcstopコマンドを入力するときは，ハートビート間隔よりも大きい値をetimオペランドに指定してください。ハートビート間隔よりも小さい値をetimオペランドに指定した場合は，相手システムが異常（TCP/IPエラーやタイムアウト）を検出することがあります。

「チャネル動作中」のチャネルが存在しない場合にdcstopコマンドを入力するときは，MQTサーバの終了を監視する時間をetimオペランドに指定してください。

rtim=チャネル確立完了監視タイマ値
　～＜符号なし整数＞((0～65535))《60》（単位：秒）
チャネル確立完了監視タイマ値を指定します。0を指定した場合，チャネル確立完了は監視されません。

●　-t

（オペランド）

disk=yes｜no
　～《no》
MQTトレースのディスク出力機能を使用するかどうかを指定します。
yes：ディスク出力機能を使用します（メモリおよびディスクに出力）。
no：ディスク出力機能を使用しません（メモリだけに出力）。
noを指定，または省略した場合，トレースファイルは作成されないでメモリ上の二つのバッファが交互に使用されます。また，このオプションのbufcntおよびtrccntオペランドの指定値は無効になります。
yesを指定した場合，MQTトレースは，MQTサーバが提供する次に示すファイルに格納されます。

MQTサービス定義のmqt_trace_file_pathオペランドを指定している場合
ファイル名：mqt_trace_file_pathオペランドの指定値/mqttrcXXYY

MQTサービス定義のmqt_trace_file_pathオペランドを指定していない場合
ファイル名：$DCDIR/spool/mqttrcXXYY

（凡例）

XX：MQT通信プロセス識別子

YY：トレーススワップファイル識別子

なお，MQTサーバで障害が発生し，保守員に調査を依頼する場合，このトレースが必要になります。そのため，常にトレースをディスクに出力して運用することをお勧めします。

bufcnt=バッファ格納個数
　～＜符号なし整数＞((10～2147483647))《100》
MQTトレースファイルのサイズを指定します。バッファを何面分格納できる容量にするかを個数単位で指定します。トレースファイルのサイズの算出式を次に示します。
トレースファイルサイズ ＝ バッファ格納個数×
　　　　　　　　　　トレースバッファサイズ（-t bufsizeオペランド指定値）

trccnt=トレースファイル個数
　～＜符号なし整数＞((3～99))《3》
MQTトレースファイルの個数を指定します。トレースファイルは，必要に応じて作成されますが，この指定値を超えると，最も古いトレースファイルが上書きされます。

bufsize=トレースバッファサイズ
　～＜符号なし整数＞((20480～128000000))《20480》（単位：バイト）
MQTトレースを格納するバッファの大きさを指定します。4の倍数でない値を指定した場合は，4の倍数に切り上げられます。

注意

MQTトレースのディスク出力はトレースバッファサイズ単位に行われ，ディスク出力が完了するまではチャネルの動作が一時的に停止します。そのため，バッファサイズを設定するときは次に示す点を配慮してください。

値が大きい場合：
ディスク出力回数は少なくなりますが，ディスク出力時間（チャネルの停止時間）は長くなります。

値が小さい場合：
ディスク出力時間（チャネルの停止時間）は短くなりますが，ディスク出力回数は多くなります。

●　-z time｜event

　～《time》

MCAをトリガ起動する場合に使用するイニシエーションキューの監視方式を指定します。

time：タイマ方式
-v itimオペランドで指定したタイマの間隔でトリガメッセージを取り出します。

event：イベント方式
イニシエーションキューにトリガメッセージが登録されると同時にイベントによってトリガメッセージを取り出します。

mqttcpcs（クラスタセンダTCP構成定義）

形式

mqttcpcs  -p tcp
       〔-v "〔stim = チャネル要求監視間隔〕
             〔etim = 終了処理監視タイマ値〕"〕
       〔-t "〔disk = yes｜no〕
             〔bufcnt = バッファ格納個数〕
             〔trccnt = トレースファイル個数〕
             〔bufsize = トレースバッファサイズ〕"〕

機能

クラスタセンダプロセスのTCP/IPプロトコルについての構成を定義します。

オプション

●　-p tcp

プロトコル種別を指定します。

tcp：TCP/IPプロトコル

●　-v

（オペランド）

stim=チャネル要求監視間隔
　～＜符号なし整数＞((1～65535))《5》（単位：秒）
チャネル要求監視間隔を指定します。チャネル要求監視の詳細については，「2.5.3　チャネル要求監視」を参照してください。

注意

stimオペランドは，次の動作に影響を与えます。このためstimオペランドの値を大きくした場合，クラスタセンダチャネルに対する処理が遅れることがあります。

「チャネル停止」でメッセージを登録した場合，stimオペランドの指定値の間，チャネルが開始されないことがあります。

チャネル確立再試行間隔が，mqtalccha定義コマンドの-b bretryintおよびbretrylgintオペランドの指定値より大きくなることがあります。

メッセージの送信経路再設定処理が，stimオペランドの指定値の間，完了しないことがあります。

次に示す場合，リポジトリ管理サーバが，stimオペランドの指定値の間，一時的に動作できないことがあります。
・リポジトリ管理サーバを再開始した場合
・リポジトリ情報を再作成した場合

etim=終了処理監視タイマ値
　～＜符号なし整数＞((0，10～65535))《360》（単位：秒）
終了処理監視タイマ値を指定します。0を指定した場合，終了処理は監視されません。

注意

etimオペランドを指定する場合は，次に示す条件を考慮してください。

すべてのMQTサーバのTCP定義（mqttcp定義コマンド，mqttcpcs定義コマンド，mqttcpcr定義コマンド）で指定するetimオペランドの指定値の合計が，OpenTP1のシステム環境定義のsystem_terminate_watch_timeオペランドの指定値よりも小さくなるように0以外の値を指定してください。この条件を満たさない場合，dcstopコマンドを入力したあとに，OpenTP1が強制停止することがあります。

「チャネル動作中」でバッチ処理を行っている場合にdcstopコマンドを入力するときは，バッチ処理時間よりも大きい値をetimオペランドに指定してください。バッチ処理時間よりも小さい値をetimオペランドに指定した場合，送達未確認状態や転送メッセージの消滅（ファーストメッセージの場合）が発生することがあります。バッチサイズ，転送メッセージ長，およびバッチインターバルを考慮してください。

「チャネル動作中」でバッチ処理を行っていない場合にdcstopコマンドを入力するときは，ハートビート間隔よりも大きい値をetimオペランドに指定してください。ハートビート間隔よりも小さい値をetimオペランドに指定した場合は，相手システムが異常（TCP/IPエラーやタイムアウト）を検出することがあります。

「チャネル動作中」のチャネルが存在しない場合にdcstopコマンドを入力するときは，MQTサーバの終了を監視する時間をetimオペランドに指定してください。

●　-t

（オペランド）

disk=yes｜no
　～《no》
MQTトレースのディスク出力機能を使用するかどうかを指定します。
yes：ディスク出力機能を使用します（メモリおよびディスクに出力）。
no：ディスク出力機能を使用しません（メモリだけに出力）。
noを指定，または省略した場合，トレースファイルは作成されないでメモリ上の二つのバッファが交互に使用されます。また，このオプションのbufcntおよびtrccntオペランドの指定値は無効になります。
yesを指定した場合，MQTトレースは，MQTサーバが提供する次に示すファイルに格納されます。

MQTサービス定義のmqt_trace_file_pathオペランドを指定している場合
ファイル名：mqt_trace_file_pathオペランドの指定値/mqttrcXXYY

MQTサービス定義のmqt_trace_file_pathオペランドを指定していない場合
ファイル名：$DCDIR/spool/mqttrcXXYY

（凡例）

XX：MQT通信プロセス識別子

YY：トレーススワップファイル識別子

なお，MQTサーバで障害が発生し，保守員に調査を依頼する場合，このトレースが必要になります。そのため，常にトレースをディスクに出力して運用することをお勧めします。

bufcnt=バッファ格納個数
　～＜符号なし整数＞((10～2147483647))《100》
MQTトレースファイルのサイズを指定します。バッファを何面分格納できる容量にするかを個数単位で指定します。トレースファイルのサイズの算出式を次に示します。
トレースファイルサイズ ＝ バッファ格納個数×
　　　　　　　　　　トレースバッファサイズ（-t bufsizeオペランド指定値）

trccnt=トレースファイル個数
　～＜符号なし整数＞((3～99))《3》
MQTトレースファイルの個数を指定します。トレースファイルは，必要に応じて作成されますが，この指定値を超えると，最も古いトレースファイルが上書きされます。

bufsize=トレースバッファサイズ
　～＜符号なし整数＞((20480～128000000))《20480》（単位：バイト）
MQTトレースを格納するバッファの大きさを指定します。4の倍数でない値を指定した場合は，4の倍数に切り上げられます。

注意

MQTトレースのディスク出力はトレースバッファサイズ単位に行われ，ディスク出力が完了するまではチャネルの動作が一時的に停止します。そのため，バッファサイズを設定するときは次に示す点を配慮してください。

値が大きい場合：
ディスク出力回数は少なくなりますが，ディスク出力時間（チャネルの停止時間）は長くなります。

値が小さい場合：
ディスク出力時間（チャネルの停止時間）は短くなりますが，ディスク出力回数は多くなります。

mqttcpcr（クラスタレシーバTCP構成定義）

形式

mqttcpcr  -p tcp
         -g "rcvbuf = 受信バッファグループ番号"
         -r "〔portno = 自システムのポート番号〕
             〔servname = 自システムのサービス名〕"
       〔-v "〔stim = チャネル要求監視間隔〕
             〔etim = 終了処理監視タイマ値〕
             〔rtim = 開始要求受信監視タイマ値〕"〕
       〔-t "〔disk = yes｜no〕
             〔bufcnt = バッファ格納個数〕
             〔trccnt = トレースファイル個数〕
             〔bufsize = トレースバッファサイズ〕"〕

機能

クラスタレシーバプロセスのTCP/IPプロトコルについての構成を定義します。

オプション

●　-p tcp

プロトコル種別を指定します。

tcp：TCP/IPプロトコル

●　-g

（オペランド）

rcvbuf=受信バッファグループ番号
　～＜符号なし整数＞((1～512))
チャネル確立属性がレスポンダの場合に開始要求を受信する，受信バッファグループ番号を指定します。
mqttbuf定義コマンドの-g groupnoオペランドで指定したバッファグループ番号を指定してください。

●　-r

（オペランド）

portno=自システムのポート番号
　～＜符号なし整数＞((1024～65535))
開始要求を受信する自システムのポート番号を指定します。この指定値は，相手システムからのネットワークリクエストを受けるために使用されます。
このオプションのservnameオペランドを指定した場合，この指定値は省略できます。省略した場合，あらかじめサービス名ファイルにサービス名が登録されている必要があります。
portnoオペランドとservnameオペランドを両方とも指定した場合は，portnoオペランドの指定値が優先されます。

servname=自システムのサービス名
　～＜1～32文字の識別子（ハイフン（-）を含む）＞
自システムのサービス名を指定します。この指定値は，相手システムからのネットワークリクエストを受けるために使用されます。
このオプションのportnoオペランドに指定がある場合，この指定値は省略できます。
サービス名は，サービス名ファイルに次に示す形式で登録します。

portnoオペランドとservnameオペランドを両方とも指定した場合は，portnoオペランドの指定値が優先されます。

注意

portnoオペランドにはMQTサーバが動作するシステム内で使用しないポート番号（OSが自動割り当てするポート番号の範囲外で，かつほかのプログラムが使用しない番号）を指定してください。

servnameオペランドにはMQTサーバが動作するシステム内で使用しないサービス名（サービス名に関連づけられたポート番号を考慮）を指定してください。

-rオプションで指定したポート番号またはサービス名に関連づけられたポート番号が，ほかの通信プログラムで使われている状態でMQTサーバを起動すると，通信障害（TCP/IPエラー，不正データ受信）になることがあります。なお，ポート番号には，OSが自動割り当てする番号があります。OSが自動割り当てするポート番号は，OSの種別やOSのバージョンなどによって異なります。詳細は，OSのマニュアルを参照してください。

●　-v

（オペランド）

stim=チャネル要求監視間隔
　～＜符号なし整数＞((1～65535))《5》（単位：秒）
チャネル要求監視間隔を指定します。チャネル要求監視の詳細については，「2.5.3　チャネル要求監視」を参照してください。

注意

stimオペランドは，次の動作に影響を与えます。このためstimオペランドの値を大きくした場合，クラスタレシーバチャネルに対する処理が遅れるときがあります。

次に示す場合，リポジトリ管理サーバが，stimオペランドの指定値の間，一時的に動作できないことがあります。
・リポジトリ管理サーバを再起動した場合
・リポジトリ情報を再作成した場合

etim=終了処理監視タイマ値
　～＜符号なし整数＞((0，10～65535))《360》（単位：秒）
終了処理監視タイマ値を指定します。0を指定した場合，終了処理は監視されません。

注意

etimオペランドを指定する場合は，次に示す条件を考慮してください。

すべてのMQTサーバのTCP定義（mqttcp定義コマンド，mqttcpcs定義コマンド，mqttcpcr定義コマンド）で指定するetimオペランドの指定値の合計が，OpenTP1のシステム環境定義のsystem_terminate_watch_timeオペランドの指定値よりも小さくなるように0以外の値を指定してください。この条件を満たさない場合，dcstopコマンドを入力したあとに，OpenTP1が強制停止することがあります。

「チャネル動作中」でバッチ処理を行っている場合にdcstopコマンドを入力するときは，バッチ処理時間よりも大きい値をetimオペランドに指定してください。バッチ処理時間よりも小さい値をetimオペランドに指定した場合，送達未確認状態や転送メッセージの消滅（ファーストメッセージの場合）が発生することがあります。バッチサイズ，転送メッセージ長，およびバッチインターバルを考慮してください。

「チャネル動作中」でバッチ処理を行っていない場合にdcstopコマンドを入力するときは，ハートビート間隔よりも大きい値をetimオペランドに指定してください。ハートビート間隔よりも小さい値をetimオペランドに指定した場合は，相手システムが異常（TCP/IPエラーやタイムアウト）を検出することがあります。

「チャネル動作中」のチャネルが存在しない場合にdcstopコマンドを入力するときは，MQTサーバの終了を監視する時間をetimオペランドに指定してください。

rtim=開始要求受信監視タイマ値
　～＜符号なし整数＞((0～65535))《60》（単位：秒）
開始要求受信監視タイマ値を指定します。このオペランドに0を指定した場合，開始要求受信監視はしません。

●　-t

（オペランド）

disk=yes｜no
　～《no》
MQTトレースのディスク出力機能を使用するかどうかを指定します。
yes：ディスク出力機能を使用します（メモリおよびディスクに出力）。
no：ディスク出力機能を使用しません（メモリだけに出力）。
noを指定，または省略した場合，トレースファイルは作成されないでメモリ上の二つのバッファが交互に使用されます。また，このオプションのbufcntおよびtrccntオペランドの指定値は無効になります。
yesを指定した場合，MQTトレースは，MQTサーバが提供する次に示すファイルに格納されます。

MQTサービス定義のmqt_trace_file_pathオペランドを指定している場合
ファイル名：mqt_trace_file_pathオペランドの指定値/mqttrcXXYY

MQTサービス定義のmqt_trace_file_pathオペランドを指定していない場合
ファイル名：$DCDIR/spool/mqttrcXXYY

（凡例）

XX：MQT通信プロセス識別子

YY：トレーススワップファイル識別子

なお，MQTサーバで障害が発生し，保守員に調査を依頼する場合，このトレースが必要になります。そのため，常にトレースをディスクに出力して運用することをお勧めします。

bufcnt=バッファ格納個数
　～＜符号なし整数＞((10～2147483647))《100》
MQTトレースファイルのサイズを指定します。バッファを何面分格納できる容量にするかを個数単位で指定します。トレースファイルのサイズの算出式を次に示します。
トレースファイルサイズ ＝ バッファ格納個数×
　　　　　　　　　　トレースバッファサイズ（-t bufsizeオペランド指定値）

trccnt=トレースファイル個数
　～＜符号なし整数＞((3～99))《3》
MQTトレースファイルの個数を指定します。トレースファイルは，必要に応じて作成されますが，この指定値を超えると，最も古いトレースファイルが上書きされます。

bufsize=トレースバッファサイズ
　～＜符号なし整数＞((20480～128000000))《20480》（単位：バイト）
MQTトレースを格納するバッファの大きさを指定します。4の倍数でない値を指定した場合は，4の倍数に切り上げられます。

注意

MQTトレースのディスク出力はトレースバッファサイズ単位に行われ，ディスク出力が完了するまではチャネルの動作が一時的に停止します。そのため，バッファサイズを設定するときは次に示す点を配慮してください。

値が大きい場合：
ディスク出力回数は少なくなりますが，ディスク出力時間（チャネルの停止時間）は長くなります。

値が小さい場合：
ディスク出力時間（チャネルの停止時間）は短くなりますが，ディスク出力回数は多くなります。

mqtalccha（チャネル定義）

形式

mqtalccha -c チャネル名
         -y "type = sender｜server｜receiver｜requester｜
                    clussdr｜clusrcvr｜defsnd｜defsrv｜
                    defrcv｜defreq｜defcsn"
       〔-j バッチサイズ〕
       〔-q 転送キュー名〕
       〔-m "〔maxmsg = 最大メッセージ長〕
             〔maxseg = 最大セグメントサイズ〕"〕
       〔-w メッセージシーケンス番号の最大値〕
         -g "〔sndbuf = 送信バッファグループ番号〕
             〔rcvbuf = 受信バッファグループ番号〕
             〔buftype = seg｜msg〕"
       〔-e "〔medbuf = メッセージ編集出口編集用バッファグループ番号〕
             〔medcnt = メッセージ編集出口編集用バッファ数〕"〕
       〔-i auto｜manual｜auto2〕
       〔-b "〔bretry = yes｜no〕
             〔bretrycnt = 短期確立再試行の回数〕
             〔bretryint = 短期確立再試行の間隔〕
             〔bretrylg = yes｜no〕
             〔bretrylgcnt = 長期確立再試行の回数〕
             〔bretrylgint = 長期確立再試行の間隔〕
             〔bretrymcp = yes｜no〕"〕
       〔-r "〔{ ipaddr = 自システムのIPアドレス
               ｜ hostname = 自システムのホスト名 }〕
             〔{ portno = 自システムのポート番号
               ｜ servname = 自システムのサービス名 }〕
             〔portnum = 自システムのポート番号使用数〕"〕
       〔-o "{ oipaddr = 相手システムのホストのIPアドレス
             ｜ ohostname = 相手システムのホスト名 }
             { oportno = 相手システムのホストのポート番号
             ｜ oservname = 相手システムのホストのサービス名 }"〕
       〔-v "〔tim1 = チャネル確立応答受信監視タイマ値〕
             〔tim2 = 確認メッセージ受信監視タイマ値〕
             〔tim3 = 継続セグメント受信監視タイマ値〕
             〔tim4 = 転送キュー監視間隔〕
             〔tim4cnt = 転送キュー監視回数〕
             〔dtimefct = yes｜no〕
             〔dtim = 切断時間間隔〕
             〔vretry = yes｜no〕
             〔htim = ハートビート間隔〕
             〔btim = バッチ終了待ちタイマ値〕
             〔bmtim = バッチ終了待ちタイマ値（ミリ秒）〕
             〔mtim = 継続メッセージ受信監視タイマ値〕"〕
       〔-x "〔sndexdata = '送信出口ユーザデータ'〕
             〔rcvexdata = '受信出口ユーザデータ'〕
             〔metexdata = 'メッセージ編集出口ユーザデータ'〕
             〔scyexdata = 'セキュリティ出口ユーザデータ'〕
             〔sendexit = '送信出口名'〕
             〔rcvexit = '受信出口名'〕
             〔msgexit = 'メッセージ出口名'〕
             〔scyexit = 'セキュリティ出口名'〕"〕
       〔-t "〔tcpsndbuf = TCP/IP出力用バッファサイズ〕
             〔tcprcvbuf = TCP/IP入力用バッファサイズ〕
             〔tretrycnt = TCP/IP確立確認の回数〕
             〔tretryint = TCP/IP確立確認の間隔〕"〕
       〔-d "〔cnvccsid = 変換後CCSID〕"〕
       〔-s "〔npmspeed = normal｜fast〕"〕
       〔-z time｜event〕
       〔-a "〔cluster = クラスタ名〕"〕
       〔-p "〔netprty = ネットワーク接続優先順位〕"〕
       〔-f "adoptchk = off｜name｜qmgr｜ipaddr｜all"〕
       〔-h '注釈'〕
       〔-mc "〔mcauser = 'MCAユーザID'〕
              〔mcatype = process｜thread〕"〕
       〔-jn "〔sndjnl = flush｜noflush〕"〕

機能

MQTサーバのチャネルについての情報を定義します。

オプション

●　-c チャネル名

　～＜1～20文字のMQ文字列＞

チャネル名を指定します。

ほかのmqtalccha定義コマンドの-cオプションで指定するチャネル名と重複して指定できません。また，相手システムの対応するチャネル定義に指定されたチャネル名と同じ名称を指定してください。ほかのMQTプロセスのmqtalccha定義コマンドの-cオプションで指定したチャネル名と重複した場合には，動作を保証しません。

●　-y

（オペランド）

type=sender｜server｜receiver｜requester｜clussdr｜clusrcvr｜defsnd｜defsrv｜defrcv｜defreq｜defcsn
チャネルタイプを指定します。
sender：センダ
server：サーバ
receiver：レシーバ
requester：リクエスタ
clussdr：クラスタセンダ
clusrcvr：クラスタレシーバ
defsnd：デフォルトセンダ
defsrv：デフォルトサーバ
defrcv：デフォルトレシーバ
defreq：デフォルトリクエスタ
defcsn：デフォルトクラスタセンダ
TCP定義でmqttcp定義コマンドを指定している場合は，sender，server，receiver，requester，defsnd，defsrv，defrcv，およびdefreqを指定できます。TCP定義でmqttcpcs定義コマンドを指定している場合は，clussdrおよびdefcsnを指定できます。TCP定義でmqttcpcr定義コマンドを指定している場合は，clusrcvrを指定できます。

●　-j バッチサイズ

　～＜符号なし整数＞((1～9999))

チャネルタイプがsender，server，receiver，またはrequesterの場合《1》

チャネルタイプがclussdrまたはclusrcvrの場合《50》

バッチサイズを指定します。バッチサイズとして扱うユーザアプリケーションメッセージの個数を指定します。チャネル確立時の相手システムのMCAとのネゴシエーションによって，この指定値より小さくなることがあります。

注意

ネゴシエーション時の自動定義クラスタセンダチャネルのバッチサイズはmqamqtnam定義コマンド-bオプション指定値および事前定義クラスタセンダチャネルに指定したバッチサイズに依存します。詳細については，この章の「チャネルのネゴシエーション」を参照してください。

接続先のクラスタレシーバチャネルのバッチサイズが50よりも大きく，かつ自システムの自動定義クラスタセンダチャネルのバッチサイズを50よりも大きな値で動作させる場合は，クラスタセンダチャネルのデフォルトチャネル定義でバッチサイズを指定してください。デフォルトチャネル定義を使用しない場合は，自動定義クラスタセンダチャネルのバッチサイズの上限は50です。

●　-q 転送キュー名

　～＜1～48文字のMQ文字列＞

転送キュー名を指定します。mqaremque定義コマンドの-xオプション（転送キュー名）で指定した転送キューを指定してください。この名称の先頭または途中に空白を指定できません。また，ほかのmqtalccha定義コマンドで指定する転送キュー名と重複して指定できません。

-y typeオペランドがsenderまたはserverの場合，この指定値は省略できません。また，ほかのmqtalccha定義コマンドの-qオプション（転送キュー名）で指定した名称と重複して指定できません。

-y typeオペランドがclussdrまたはclusrcvrの場合，このオプションは指定できません。転送キュー名としてSYSTEM.CLUSTER.TRANSMIT.QUEUEを使用して動作します。

●　-m

（オペランド）

maxmsg=最大メッセージ長
　～＜符号なし整数＞((1024～127996000))（単位：バイト）
最大メッセージ長を指定します。
これは，ユーザアプリケーションメッセージの最大値です。チャネル確立時の相手システムのMCAとのネゴシエーションによって，この指定値より小さくなることがあります。
省略した場合，次に示す値が設定されます。

-y type=sender，server，またはclussdrの場合
-g sndbufオペランドで指定したバッファグループのバッファサイズ（ただし，-g buftypeオペランドがsegの場合は，127996000）

-y type=receiver，requester，またはclusrcvrの場合
-g rcvbufオペランドで指定したバッファグループのバッファサイズ（ただし，-g buftypeオペランドがsegの場合は，127996000）

maxseg=最大セグメントサイズ
　～＜符号なし整数＞((1024～1073741824))（単位：バイト）
最大セグメントサイズを指定します。
mqttbuf定義コマンドの-g lengthオペランドで指定したバッファ長以下の値を指定してください。
省略した場合，次に示す値が設定されます。

-y type=sender，またはserverの場合
-g sndbufオペランドで指定したバッファグループのバッファサイズ

-y type=clussdrの場合
8192（ただし，-g sndbufオペランドで指定したバッファグループのバッファサイズが8192よりも小さい場合は，バッファグループのバッファサイズが設定されます）

-y type=receiver，またはrequesterの場合
-g rcvbufオペランドで指定したバッファグループのバッファサイズ

-y type=clusrcvrの場合
8192（ただし，-g rcvbufオペランドで指定したバッファグループのバッファサイズが8192よりも小さい場合は，バッファグループのバッファサイズが設定されます）

-g buftypeオペランドで，msgを指定した場合は，このオペランドに指定した値のローカルメモリを必要とします。

●　-w メッセージシーケンス番号の最大値

　～＜符号なし整数＞((100～999999999))《999999999》

メッセージシーケンス番号の最大値を指定します。

メッセージシーケンス番号は，この指定値を超えると，1に戻ります。

メッセージシーケンス番号の最大値は，相手システムと同じ値を指定してください。

●　-g

（オペランド）

sndbuf=送信バッファグループ番号
　～＜符号なし整数＞((1～512))
メッセージ送信用のバッファグループ番号を指定します。
mqttbuf定義コマンドの-g groupnoオペランドで指定したバッファグループ番号を指定します。

rcvbuf=受信バッファグループ番号
　～＜符号なし整数＞((1～512))
メッセージ受信用のバッファグループ番号を指定します。
mqttbuf定義コマンドの-g groupnoオペランドで指定したバッファグループ番号を指定します。
-y typeオペランドでclusrcvrを指定した場合，mqttbuf定義コマンドにclussdrと接続するチャネル数分のバッファ数を用意してください。

buftype=seg｜msg
　～《msg》
バッファ方式を指定します。
seg：セグメント方式
msg：メッセージ方式
セグメント方式を指定した場合，転送セグメント単位でメッセージが格納され，取り出し／送信，受信／登録が実行されます。この方式では，MCAで使用するメモリ量を抑えられるのが利点です。しかし，マルチキャスト機能，およびメッセージ編集出口UOCによるファイル転送機能を使用できません。また，sndbuf，rcvbufオペランドに指定するバッファグループのバッファ長は，-m maxsegオペランドに指定する値以上にする必要があります。
メッセージ方式を指定した場合，メッセージ全体で取り出し／送信，受信／登録が実行されます。この方式を選んだ場合，マルチキャスト機能，およびメッセージ編集出口UOCによるファイル転送機能を使用できます。しかし，MCAで使用するメモリ量がセグメント方式より大きくなります。また，sndbuf，rcvbufオペランドに指定するバッファグループのバッファ長は，-m maxmsgオペランドに指定する値以上にする必要があります。

●　-e

（オペランド）

medbuf=メッセージ編集出口編集用バッファグループ番号
　～＜符号なし整数＞((1～512))
メッセージ編集出口UOCで使用する編集用バッファグループ番号を指定します。
このオペランドには，mqttbuf定義コマンドの-g groupnoオペランドに指定したバッファグループ番号を指定してください。

medcnt=メッセージ編集出口編集用バッファ数
　～＜符号なし整数＞((1～65535))
メッセージ編集出口UOCに引き渡すバッファ数を指定します。
このオペランドには，mqttbuf定義コマンドの-g countオペランドに指定したバッファ数以下の値を指定してください。
また，複数のチャネルが同時に同一バッファグループを使用する場合，mqttbuf定義コマンドで，同時に動作するチャネル数分のバッファ数を用意する必要があります。

●　-i auto｜manual｜auto2

チャネルタイプがsender，server，receiver，またはrequesterの場合《manual》

チャネルタイプがclussdr，またはclusrcvrの場合《auto》

MQTサーバの開始時，再開始時，またはクラスタ環境で自動的にチャネルを作成する場合，チャネルを自動的に確立するかどうかを指定します。

auto
チャネル状態は「チャネル停止」から始まります。トリガ起動またはネットワークリクエストによって，チャネルを自動的に開始します。

manual
チャネル状態は「チャネル使用不可」から始まります。トリガ起動またはネットワークリクエストによるチャネルの自動開始は行いません。チャネルを開始するにはmqtstachaコマンドを入力する必要があります。
システムの運用上，チャネルを自動的に開始してはいけない場合，必ずmanualを指定してください。

auto2
MQTサーバのサービス開始直後に，自動的にチャネル確立処理が行われます。この値は，センダ，サーバ，リクエスタおよびクラスタセンダに指定できます。

注意

自動定義クラスタセンダチャネルの場合は，次に示す値が設定されます。

デフォルトチャネル定義を使用しない場合
すべての自動定義クラスタセンダチャネルにautoが設定されます。

デフォルトチャネル定義を使用する場合
すべての自動定義クラスタセンダチャネルに，事前定義クラスタセンダチャネルのデフォルトチャネル定義の-iオプションに指定した値が設定されます。

●　-b

（オペランド）

bretry=yes｜no
　～《yes》
チャネルに通信障害が発生した場合に短期確立再試行を実行するかどうかを指定します。
yes：短期確立再試行を実行します。
no：短期確立再試行を実行しません。
ただし，-oオプションを省略した場合，このオペランドの指定は無効になります。

bretrycnt=短期確立再試行の回数
　～＜符号なし整数＞((1～999999999))《10》（単位：回）
短期確立再試行を実行する回数を指定します。
なお，このオプションのbretryオペランドにnoを指定した場合，このオペランドの指定は無効になります。

bretryint=短期確立再試行の間隔
　～＜符号なし整数＞((0～999999999))《60》（単位：秒）
短期確立再試行の時間間隔を指定します。0を指定した場合，障害が発生したつどに短期確立再試行を実行します。
なお，このオプションのbretryオペランドにnoを指定した場合，このオペランドの指定は無効になります。
チャネルトリガを起動する場合，通信相手システムの起動状態によってイニシエーションキューが満杯になることがあります。そこで余分なトリガメッセージを発生させないために，次に示す計算式に従って時間間隔を指定してください。

チャネル確立再試行間隔
（mqtalccha定義コマンドの-b bretryintオペランド指定値）
   ≧トリガ起動チャネル数 × 10

bretrylg=yes｜no
　～《yes》
チャネルに通信障害が発生した場合に長期確立再試行を実行するかどうかを指定します。
yes：長期確立再試行を実行します。
no：長期確立再試行を実行しません。
ただし，-oオプションを省略した場合，このオペランドの指定は無効になります。

bretrylgcnt=長期確立再試行の回数
　～＜符号なし整数＞((1～999999999))《999999999》（単位：回）
長期確立再試行を実行する回数を指定します。
なお，このオプションのbretrylgオペランドにnoを指定した場合，このオペランドの指定は無効になります。

bretrylgint=長期確立再試行の間隔
　～＜符号なし整数＞((0～999999999))《1200》（単位：秒）
長期確立再試行の時間間隔を指定します。0を指定した場合，障害が発生したつどに長期確立再試行を実行します。
なお，このオプションのbretrylgオペランドにnoを指定した場合，このオペランドの指定は無効になります。
チャネルトリガを起動する場合，通信相手システムの起動状態によってイニシエーションキューが満杯になることがあります。そこで余分なトリガメッセージを発生させないために，次に示す計算式に従って時間間隔を指定してください。

チャネル確立再試行間隔
（mqtalccha定義コマンドの-b bretryintオペランド指定値）
   ≧トリガ起動チャネル数 × 10

bretrymcp=yes｜no
　～《yes》
MQプロトコルで検出したエラーに対して，確立再試行を実行するかどうかを指定します。この指定は，-yオプションにsender，server，requester，またはclussdrを指定し，-bオプションのbretryオペランドまたはbretrylgオペランドにyesを指定した場合に有効です。指定値がyesの場合，およびnoの場合の詳細について次に説明します。

yes
MQプロトコルで検出した障害に対して，確立再試行を実行します。

no
MQプロトコルで検出した障害に対して，確立再試行を実行しません。

注意

-bオプションにbretrymcp = yesを指定し，次に示す条件が重なった場合，相手チャネルがコネクションを切断して再接続します（自チャネルは「リトライ中」になります）。このため，チャネルの状態の不一致が発生してチャネルを確立できません。この現象を回避するには，-fオプションのadoptchkオペランドにoff以外を指定し，相手チャネルからの再接続要求を受け入れるようにしてください。

条件1：-yオプションのtypeオペランドにrequesterが指定された

条件2：接続相手チャネルがsenderである

条件3：自チャネル（requester）がコーラになる

●　-r

（オペランド）

ipaddr=自システムのIPアドレス
　～（nnn.nnn.nnn.nnn）＜符号なし整数＞((0～255))
複数のIPアドレスを持つシステムで，IPアドレスを特定する場合に自システムのIPアドレスを指定します。指定形式は，nnn.nnn.nnn.nnnです。nnnの値は，0～255まで指定できます。nnnの値として先頭に0を指定した場合は，8進数値として扱われます。IPアドレスの形式を次に示します。

このオペランドを省略して，かつIPアドレスを特定する場合は，hostnameオペランドを指定してください。また，ホスト名ファイル，またはネームサーバにホスト名を登録してください。

hostname=自システムのホスト名
　～＜1～255バイトの文字列＞
複数のIPアドレスを持つシステムで，IPアドレスを特定する場合に自システムのホスト名を指定します。自ホストのホスト名は，ホスト名ファイル，またはネームサーバなどに登録してください。
ipaddrオペランドを指定する場合，またはIPアドレスを特定する必要がない場合は省略できます。

注意

ipaddrオペランドとhostnameオペランドの両方を指定する場合は，ipaddrオペランドの指定値が優先されます。

次に示す場合，どちらかのオペランドを指定してください。

-y typeオペランドにrequester，sender，server，またはclussdrを指定し，かつ相手ホストに対してIPアドレスを固定に持つ場合

-y typeオペランドがclusrcvrの場合

ipaddrオペランドとhostnameオペランドの指定の有無には関係なく，ipaddrオペランドまたはhostnameオペランドのどちらかを指定できます。

portno=自システムのポート番号
　～＜符号なし整数＞((1024～65535))
自システムのポート番号を指定します。
servnameオペランドを指定した場合，この指定値は省略できます。

servname=自システムのサービス名
　～＜1～32文字の識別子（ハイフン（-）含む）＞
自システムのサービス名を指定します。このサービス名は，サービス名ファイルで登録されている必要があります。
サービス名は，次に示す形式で指定します。

portnoオペランドを指定した場合，この指定値は省略できます。

portnum=自システムのポート番号使用数
　～＜符号なし整数＞((1～64512))《1》
自システムのポート番号使用数を指定します。
自ポートの割り当てが行われる範囲を指定する場合に，ポート番号の使用数を指定します。

注意

portnoオペランドとservnameオペランドの両方を指定する場合は，portnoオペランドの指定値が優先されます。

-y typeオペランドにrequester，sender，server，またはclussdrを指定し，かつ相手ホストに対してIPアドレスを固定に持つ場合，どちらかのオペランドを指定してください。

-y typeオペランドにclusrcvrを指定する場合，mqttcpcr定義コマンドの-rオプションに指定したサービス名またはポート番号を使用するため指定する必要はありません。

portnoオペランドとservnameオペランドの指定の有無には関係なく，ipaddrオペランドまたはhostnameオペランドのどちらかを指定できます。

portnoオペランドにはMQTサーバが動作するシステム内で使用しないポート番号（OSが自動割り当てするポート番号の範囲外で，かつほかのプログラムが使用しない番号）を指定してください。
servnameオペランドにはMQTサーバが動作するシステム内で使用しないサービス名（サービス名に関連づけられたポート番号を考慮）を指定してください。
-rオプションで指定したポート番号またはサービス名に関連づけられたポート番号が，ほかの通信プログラムで使われている状態でMQTサーバを起動すると，通信障害（TCP/IPエラー，不正データ受信）になることがあります。なお，ポート番号には，OSが自動割り当てする番号があります。OSが自動割り当てするポート番号は，OSの種別やOSのバージョンなどによって異なります。詳細は，OSのマニュアルを参照してください。

割り当てを試行するポート番号の範囲を指定する場合は，servnameオペランドまたはportnoオペランドのどちらか一方とともにportnumオペランドを指定してください。servnameオペランド指定値から変換したポート番号またはportnoオペランド指定値のポート番号から自ポートの割り当てが開始され，成功するまで最大portnumオペランド指定値分の処理が試行されます。割り当てを試行するポート番号が65535を超える場合は，65535で試行は中止されます。

コーラ側チャネルの自システムのポート番号をportnoオペランドに指定（またはservnameオペランドを指定）すると，チャネル解放時に一定時間，TCP/IPの資源が解放されないことがあります（TCP/IPの仕様）。このためチャネル解放直後にチャネルを確立すると，TCP/IPとのインタフェースで障害を検出します。この場合は，チャネルの確立再試行によってチャネルを再確立するか，portnumオペランドを設定してください。

●　-o

（オペランド）

このオペランドの指定値は，チャネル属性の変更コマンド（mqtaltchaコマンドの-l tempオペランド指定）を使用するとTP1/Message Queueの終了まで変更属性を保持します。チャネル属性の変更コマンド（mqtaltchaコマンドの-l permオペランド指定）を使用するとチャネル属性の変更コマンド（mqtaltchaコマンドの-l tempオペランド指定）を実行するまで，変更属性を保持します。なお，チャネル管理情報ファイルを使用しない場合は，TP1/Message Queueの終了まで変更属性を保持します。

注意

事前定義クラスタセンダチャネルの場合，参加するクラスタのフルリポジトリキューマネジャに接続するように-oオプションを指定してください。参加するクラスタ内に複数のフルリポジトリキューマネジャがある場合は，最低一つの事前定義クラスタセンダチャネル定義があれば十分です（必要に応じて自動定義クラスタセンダチャネルをシステムが自動的に作成します）。どのフルリポジトリキューマネジャに接続してもかまいません。

oipaddr=相手システムのホストのIPアドレス
　～（nnn.nnn.nnn.nnn）＜符号なし整数＞((0～255))
相手システムのIPアドレスを指定します。nnnの値は，0～255まで指定できます。nnnの値として先頭に0を指定した場合は，8進数値として扱われます。
ホスト名ファイルに相手システムのホスト名を登録し，ohostnameオペランドを指定した場合，このオペランドは省略できます。

ohostname=相手システムのホスト名
　～＜1～255バイトの文字列＞
相手システムのホスト名を指定します。このホスト名は，ホスト名ファイル，ネームサーバなどに登録されている必要があります。
oipaddrオペランドを指定する場合，このオペランドは省略できます。

注意

oipaddrオペランドとohostnameオペランドの両方を指定する場合は，oipaddrオペランドの指定値が優先されます。次に示す場合，どちらかのオペランドを指定してください。

-y typeオペランドがsenderまたはclussdrの場合

-y typeオペランドがserverまたはrequesterの場合で，かつ，チャネル確立属性がコーラの場合

-y typeオペランドにclussdrを指定する場合，このオプションで指定する接続先のキューマネジャはリポジトリキューマネジャである必要があります。

oportno=相手システムのホストのポート番号
　～＜符号なし整数＞((1024～65535))
相手システムのホストのポート番号を指定します。
oservnameオペランドを指定した場合，この指定値は省略できます。

oservname=相手システムのホストのサービス名
　～＜1～32文字の識別子（ハイフン（-）含む）＞
相手システムのホストのサービス名を指定します。このサービス名は，サービス名ファイルで登録されている必要があります。
oportnoオペランドを指定した場合，この指定値は省略できます。

注意

oportnoオペランドとoservnameオペランドの両方を指定する場合は，oportnoオペランドの指定値が優先されます。次に示す場合，どちらかのオペランドを指定してください。

-y typeオペランドがsenderまたはclussdrの場合

-y typeオペランドがserverまたはrequesterの場合で，かつ，チャネル確立属性がコーラの場合

-y typeオペランドにclussdrを指定する場合，このオプションで指定する接続先のキューマネジャはリポジトリキューマネジャにする必要があります。

●　-v

（オペランド）

tim1=チャネル確立応答受信監視タイマ値
　～＜符号なし整数＞((0～8191))《30》（単位：秒）
開始要求応答受信監視タイマ値を指定します。0を指定した場合，監視されません。

tim2=確認メッセージ受信監視タイマ値
　～＜符号なし整数＞((0～8191))
チャネルタイプがsenderまたはserverの場合《10》
チャネルタイプがclussdrの場合《30》（単位：秒）
確認メッセージ受信監視タイマ値を指定します。0を指定した場合，監視されません。

tim3=継続セグメント受信監視タイマ値
　～＜符号なし整数＞((0～8191))
チャネルタイプがreceiverまたはrequesterの場合《10》
チャネルタイプがclusrcvrの場合《30》（単位：秒）
継続セグメント受信監視タイマ値を指定します。0を指定した場合，監視されません。

tim4=転送キュー監視間隔
　～＜符号なし整数＞((0～8191))《60》（単位：秒）
転送キュー監視間隔を指定します。0を指定した場合，転送キューは監視されません。

tim4cnt=転送キュー監視回数
　～＜符号なし整数＞((0～2147483647))《1》（単位：回）
転送キューを監視する回数を指定します。
このオペランドに0を指定した場合，チャネルを確立したまま，転送キューは無限に監視されます。
tim4オペランドで0が指定された場合，転送キューは監視されないですぐに終了します。

dtimefct=yes｜no
　～《yes》
切断時間間隔（dtimオペランド指定値）の間，イベント方式による転送キュー監視をするかどうかを指定します。このオペランドを省略した場合は転送キュー監視をします。noを指定した場合，転送キューにメッセージがないことを検知するとチャネルを終了します。この指定値は送信側MCAがイベント方式（mqtalccha定義コマンドの-zオプションにeventを指定）による転送キュー監視をする場合に有効です。
-y typeオペランドがclussdrまたはclusrcvrの場合，このオペランドは指定できません。切断時間間隔の間，イベント方式による転送キュー監視を使用して動作します。

dtim=切断時間間隔
　～＜符号なし整数＞((0～999999))
チャネルタイプがsender，またはserverの場合《60》
チャネルタイプがclussdr，またはclusrcvrの場合《6000》（単位：秒）
切断時間間隔を指定します。バッチで送達確認を送信したあと，この時間の間，転送キューへのメッセージ登録を待ちます。タイムアウトするとチャネルを終了します。このオペランドに0を指定した場合，転送キューにメッセージが登録されるまで無限に待ちます。この指定値は送信側MCAがイベント方式（mqtalccha定義コマンドの-zオプションにeventを指定）による転送キュー監視をする場合に，切断時間監視の有無指定（dtimefctオペランド）がyesのとき有効です。

vretry=yes｜no
　～《yes》
コーラ側MCAで時間監視障害が発生した場合に，チャネル確立の再試行を実行するかどうかを指定します。
　yes：時間監視障害時にチャネル確立の再試行を実行します。
　no：時間監視障害時にチャネル確立の再試行を実行しません。
チャネル確立の再試行は，-bオプションの指定値に従います。-bオプションのbretryオペランドまたはbretrylgオペランドにyesを指定した場合に有効です。
時間監視障害については，「2.3.7　チャネル確立再試行」を参照してください。

htim=ハートビート間隔
　～＜符号なし整数＞((0～999999))《300》（単位：秒）
送信側MCAの切断時間間隔中のハートビートメッセージによる確認動作を実行する場合のハートビート間隔を指定します。
このオペランドに0を指定した場合，送信側チャネルの切断時間間隔（MQTでは，tim4×tim4cntまたはdtim）中のハートビートメッセージによる確認動作は実行されません。

btim=バッチ終了待ちタイマ値
　～＜符号なし整数＞((0～999999))《0》（単位：秒）
バッチ終了待ちタイマ（バッチインターバル）の秒以上の値を指定します。
btimオペランド指定値とbmtimオペランド指定値の和の時間がバッチ終了待ちタイマとなります。
この指定値は，送信側MCAがイベント方式（-zオプションにeventを指定）による転送キュー監視をする場合に有効です。

bmtim=バッチ終了待ちタイマ値（ミリ秒）
　～＜符号なし整数＞((0～999))《0》（単位：ミリ秒）
バッチ終了待ちタイマ（バッチインターバル）のミリ秒の値を指定します。btimオペランド指定値とbmtimオペランド指定値の和の時間がバッチ終了待ちタイマとなります。
この指定値は，送信側MCAがイベント方式（-zオプションにeventを指定）による転送キュー監視をする場合に有効です。
送信中のバッチがバッチサイズに満たない場合，btimオペランド指定値とbmtimオペランド指定値の和の時間まで転送キューへのメッセージ登録を待ちます。
btimオペランドとbmtimオペランドに同時に0を指定した場合，または省略した場合，バッチサイズに満たないバッチを即座に終了します。
15ms未満の値を指定する場合は，一つのMQTサーバに一つのチャネルを定義することをお勧めします。複数のチャネルを定義したとき，定義した値で動作できないことがあります。

mtim=継続メッセージ受信監視タイマ値
　～＜符号なし整数＞((0～999999))《tim3オペランドの指定値》（単位：秒）
継続メッセージ受信監視タイマを指定します。受信中のバッチ内のメッセージ受信後，次のメッセージを受信するまでを監視します。このオペランドを省略した場合，tim3オペランドの指定値を使用します。送信側MCAのバッチ終了待ちタイマ（バッチインターバル）より大きな値を指定してください。なお，このオペランドに0を指定した場合，継続メッセージの受信監視はされません。

●　-x

（オペランド）

sndexdata='送信出口ユーザデータ'
　～＜1～32バイトの文字列＞《32バイトのスペース文字》
送信出口に渡すユーザデータを指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時に送信出口ユーザデータ（SENDDATA）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を使用しません。

rcvexdata='受信出口ユーザデータ'
　～＜1～32バイトの文字列＞《32バイトのスペース文字》
受信出口に渡すユーザデータを指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時に受信出口ユーザデータ（RCVDATA）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を使用しません。

metexdata='メッセージ編集出口ユーザデータ'
　～＜1～32バイトの文字列＞《32バイトのスペース文字》
メッセージ編集出口UOCに渡すユーザデータを指定します。
すべてのチャネルタイプで指定できます。クラスタレシーバで，この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時にメッセージ出口ユーザデータ（MSGDATA）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，クラスタセンダチャネル動作時にメッセージ編集出口ユーザデータ（metexdata）として扱われます。自システムでは，チャネル動作時にメッセージ編集出口ユーザデータ（metexdata）として扱われます。

scyexdata='セキュリティ出口ユーザデータ'
　～＜1～32バイトの文字列＞《32バイトのスペース文字》
セキュリティ出口に渡すユーザデータを指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時にセキュリティ出口ユーザデータ（SCYDATA）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を使用しません。

sendexit='送信出口名'
　～＜1～128バイトの文字列＞《128バイトのスペース文字》
チャネル送信出口名を指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時に送信出口名（SENDEXIT）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を使用しません。

rcvexit='受信出口名'
　～＜1～128バイトの文字列＞《128バイトのスペース文字》
チャネル受信出口名を指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時に受信出口名（RCVEXIT）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を使用しません。

msgexit='メッセージ出口名'
　～＜1～128バイトの文字列＞《128バイトのスペース文字》
チャネルメッセージ出口名を指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時にメッセージ出口名（MSGEXIT）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムでは，この定義を使用しません。

scyexit='セキュリティ出口名'
　～＜1～128バイトの文字列＞《128バイトのスペース文字》
チャネルセキュリティ出口名を指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時にセキュリティ出口名（SCYEXIT）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を使用しません。

これらのオペランドの指定値は，アポストロフィ（'）で囲んで指定します。アポストロフィ（'）で囲まれた文字列にアポストロフィ（'）を指定する場合は，必ず2文字ペアで指定してください。

設定例：metexdata=''abc'defg'

出口ユーザデータには'abc'defgを渡します。

アポストロフィ（'）で囲まれた文字列にアポストロフィ（'）を指定する場合，出口ユーザデータ内に次に示す文字は指定できません。

タブ（x'09'），スペース（x'20'），引用符（x'22'），コンマ（x'2c'），およびイコール（x'3d'）

●　-t

（オペランド）

tcpsndbuf=TCP/IP出力用バッファサイズ
　～＜符号なし整数＞((1024～262144))（単位：バイト）
TCP/IP出力用バッファのサイズを指定します。このオペランドが指定されている場合，このオペランドの指定値で，SO_SNDBUFを設定したTCP/IPのsetsockopt関数を発行します。
省略時にはシステムの既定値を使用します。

注意

通常はこの定義は省略してください。

システムの既定値未満の値を設定した場合，MTUの2倍以下の値は設定しないでください。MTUの2倍以下の値を設定した場合，転送効率に影響が出るおそれがあります。

高速な通信媒体やMTUの大きな通信媒体を使用している場合，この値を大きくすると，通信処理に掛かる時間が改善される可能性があります。

システムによっては，TCP/IPのsetsockopt関数が指定バッファサイズをサポートしていない場合があります。この場合，チャネル開始時にMQTがエラーを検出し，チャネルの開始を中断します。システムの指定可能範囲を調査し，指定を変更してください。

TCP/IPのバッファやMTUの詳細については，TCP/IPの文献やOSのマニュアルを参照してください。

tcprcvbuf=TCP/IP入力用バッファサイズ
　～＜符号なし整数＞((1024～262144))（単位：バイト）
TCP/IP入力用バッファのサイズを指定します。このオペランドが指定されている場合，このオペランドの指定値で，SO_RCVBUFを設定したTCP/IPのsetsockopt関数を発行します。
省略時にはシステムの既定値を使用します。

注意

通常はこの定義は省略してください。

システムの既定値未満の値を設定した場合，MTUの2倍以下の値は設定しないでください。MTUの2倍以下の値を設定した場合，転送効率に影響が出るおそれがあります。

高速な通信媒体やMTUの大きな通信媒体を使用している場合，この値を大きくすると，通信処理に掛かる時間が改善される可能性があります。

システムによっては，TCP/IPのsetsockopt関数が指定バッファサイズをサポートしていない場合があります。この場合，チャネル開始時にMQTがエラーを検出し，チャネルの開始を中断します。システムの指定可能範囲を調査し，指定を変更してください。

TCP/IPのバッファやMTUの詳細については，TCP/IPの文献やOSのマニュアルを参照してください。

tretrycnt＝TCP/IP確立確認回数
　～＜符号なし整数＞((1～65535))《10》（単位：回）
TCP/IPコネクションが確立したかどうかを確認する最大回数を指定します。この回数以内にTCP/IPコネクションが確立したと判断できた場合は，チャネルの確立処理を実行します。判断できなかった場合は，TCP/IPインタフェースエラーになりチャネル確立処理は失敗します。

tretryint＝TCP/IP確立確認間隔
　～＜符号なし整数＞((1～65535))《1》（単位：秒）
TCP/IPコネクションが確立したかどうかを確認する間隔を指定します。タイマ値の誤差が大きくなり，指定間隔とおりに動作できないことがあるため，基本タイマ値（mqtttim定義コマンドの-t btimオペランド指定値とbmtimオペランド指定値の和）より小さい値を指定しないでください。

●　-d

（オペランド）

cnvccsid=変換後CCSID
　～＜符号なし整数＞((1～65535))
アプリケーションから登録されたメッセージを文字コード変換する場合，変換後のCCSIDを指定します。この指定値は，-y typeオペランドがsender，server，clussdr，およびclusrcvrの場合に有効です。

注意

-dオプションでの文字コード変換が失敗した場合は，メッセージ送信時にKFCA16334-Eメッセージを出力してチャネルを強制解放します。ただし，デッドレターキューが定義されている場合，メッセージは送信側のデッドレターキューに登録され，以降のメッセージ転送は続行されます。
-dオプションでの文字コード変換が失敗する場合，KFCA16334-Eメッセージの理由コードを参照してください。なお，次の理由コードについては，注意事項があります。
＜MQRC_CONVERTED_MSG_TOO_BIG＞の注意事項
アプリケーションから登録するメッセージの長さは，変換前・変換後共に，次に示す計算式を満たす必要があります。
・バッファ方式がメッセージ（-g buftype=msg）の場合
　　アプリケーションメッセージ長 ≦ 最大メッセージ長
　　－MQXQH構造体長
・バッファ方式がセグメント（-g buftype=seg）の場合
　　アプリケーションメッセージ長 ≦ 最大セグメント長
　　－MQXQH構造体長－プロトコルヘッダ長（48バイト）
最大メッセージ長は，-mオプションのmaxmsgオペランドに指定した値と，相手システムのメッセージ長の，小さい方の値です。メッセージ長は，MQシステムによって呼称が異なりますので注意してください。
最大セグメント長は，-mオプションのmaxsegオペランドに指定した値と，相手システムのセグメント長で，どちらか小さい方の値です。セグメント長（送信データの最大長）は，MQシステムによって呼称が異なりますので注意してください。ただし，-gオプションのbuftypeオペランドにmsgを指定した場合は，この注意事項は該当しません。
＜MQRC_TARGET_CCSID_ERROR＞の注意事項
変換後のCCSIDには，コード変換対象となっている文字セット識別子を指定する必要があります。コード変換対象となっている文字セット識別子については，マニュアル「TP1/Message Queue プログラム作成リファレンス」のコード変換対象の文字セット識別子一覧についての記載を参照してください。

cnvccsidオペランドの指定方法が誤っている場合，-yオプションの指定値に関係なくエラーメッセージが出力されます。

クラスタレシーバにcnvccsidオペランドを指定する場合，相手システムがWebSphere MQのときクラスタセンダのCONVERT属性はYESになります。相手システムがTP1/Message Queueのときクラスタセンダの属性は変わりません。

PCF（プログラマブルコマンドフォーマット）データの転送時は，コード変換（mqtalccha定義コマンドの-dオプションのcnvccsidオペランドに変換後の文字セット識別子を指定）は有効になりません。

●　-s

（オペランド）

npmspeed=normal｜fast
　～《fast》
非永続メッセージ転送速度を指定します。
normal：非永続メッセージを永続メッセージと同様に転送します。
fast：非永続メッセージを高速で転送します。

注意

次に示す条件をすべて満たす場合は，受信側でキューマネジャによるセグメント分割ができません。KFCA16333-E（キューファイル障害発生。命令名＝MQPUT，理由コード＝2030）が出力されます。

リクエスタ，レシーバまたはクラスタレシーバにnpmspeed=fastを指定しています。また，接続先の送信側チャネルもnpmspeed=fast相当のチャネル属性を持ちます。

MQMDE構造体のMsgFlagsフィールドにMQMF_SEGMENTATION_ALLOWEDが指定された非永続メッセージを受信しました。

●　-z time｜event

　～《event》

転送キュー監視方式を指定します。

time：タイマ方式
-v tim4およびtim4cntオペランドによってメッセージの有無を確認して取り出します。システム構築する場合に旧バージョンとの互換性を持たせたいとき，この方式を採用することをお勧めします。

event：イベント方式
転送キューにメッセージが登録されイベント連絡されるのをdtimオペランドで指定した時間だけ待ちます。また，バッチ終了待ちタイマ（バッチインターバル）の機能を使用できます。なお，新たにシステム構築する場合，この方式を採用することをお勧めします。

●　-a

（オペランド）

cluster=クラスタ名
　～＜1～48文字のMQ文字列＞
チャネルが所属するクラスタ名を指定します。

●　-p

（オペランド）

netprty=ネットワーク接続優先順位
　～＜符号なし整数＞((0～9))《0》
ネットワーク接続優先順位を指定します。複数の経路が選択できる場合は，優先順位の最高の経路が選択されます。優先順は0が最低，9が最高です。
この指定値は，-yオプションのtypeオペランドがclusrcvrの場合だけ有効です。

●　-f

（オペランド）

adoptchk=off｜name｜qmgr｜ipaddr｜all
　～《qmgr》
強制確立確認条件を指定します。
offを指定した場合は，チャネル開始要求を受信したレスポンダチャネルでチャネル状態不一致が発生したときに，開始要求を受け付けません。off以外の値を指定すると，チャネル開始要求を受信したレスポンダチャネルでチャネル状態不一致が発生した場合に，動作しているチャネルを強制終了して開始要求を受け付けます。off以外の値を指定した場合でチャネル開始要求を受信したチャネルがチャネル動作中（RUNNING）またはチャネル解放中（STOPPING）のときは，次のように動作します。

name
チャネルを強制終了して開始要求を受け付けます。

qmgr
チャネルが現在，確立中の相手と同じキューマネジャからのチャネル開始要求を受けた場合にチャネルを強制終了して開始要求を受け付けます。この指定は，相手システムがMQプロトコルレベル4（FAP4）以降をサポートしている場合に有効です。FAP3以下ではチェックしません。

ipaddr
チャネルが現在，確立中の相手と同じIPアドレスからのチャネル開始要求を受けた場合にチャネルを強制終了して開始要求を受け付けます。

all
チャネルが現在，確立中の相手と同じキューマネジャおよびIPアドレスからのチャネル開始要求を受けた場合にチャネルを強制終了して開始要求を受け付けます。この指定は，相手システムがMQプロトコルレベル4（FAP4）以降をサポートしている場合にキューマネジャとIPアドレスの両方をチェックします。FAP3以下ではIPアドレスだけをチェックします。

クラスタレシーバでは，マルチインスタンスをサポートしていて，該当インスタンスを特定するためにキューマネジャ名を必ずチェックする必要があります。このため，確立中での各指定は次の意味を持ちます。

nameまたはqmgrを指定した場合

キューマネジャ名チェックを実行します。

ipaddrまたはallを指定した場合

キューマネジャ名チェック，およびIPアドレスチェックを実行します。

チャネル開始要求の受け付け条件について次に示します。

チェック内容 | FAPレベル3以下 | FAP4レベル以降（クラスタレシーバ以外） | クラスタレシーバ
name，qmgr | ipaddr，all | name | qmgr | ipaddr | all | name，qmgr | ipaddr，all
チャネル名 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○
キューマネジャ名 | － | － | － | ○ | － | ○ | ○ | ○
IPアドレス | － | ○ | － | － | ○ | ○ | － | ○

（凡例）

○：チェックします。すべて一致した場合だけ，開始要求を受け付けます。

－：チェックしません。

●　-h '注釈'

　～＜1～64バイトの文字列＞《64バイトのスペース文字》

チャネルの注釈を指定します。

このオプションの指定値は，アポストロフィ（'）で囲んで指定します。ただし，アポストロフィ（'）で囲まれた文字列にアポストロフィ（'）は指定できません。

●　-mc

（オペランド）

mcauser='MCAユーザID'
　～＜1～64バイトの文字列＞《64バイトのスペース文字》
WebSphere MQの資源へのアクセスに使用するユーザIDを指定します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時にメッセージチャネルエージェントユーザID（MCAUSER）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を無視します。詳細についてはWebSphere MQのマニュアルを参照してください。
このオペランドの指定値は，アポストロフィ（'）で囲んで指定します。ただし，アポストロフィ（'）で囲まれた文字列にアポストロフィ（'）は指定できません。

mcatype=process｜thread
　～《process》
WebSphere MQのMCAプログラムを，スレッドとプロセスのどちらで実行するかを指定します。
process：MCAは，独立のプロセスとして動作します。
thread：MCAは，独立のスレッドとして動作します。
クラスタレシーバだけ指定できます。この指定で接続する相手がWebSphere MQの場合は，クラスタセンダチャネル動作時にメッセージチャネルエージェントタイプ（MCATYPE）として扱われます。接続する相手がTP1/Message Queue（クラスタセンダ）の場合，および自システムのクラスタレシーバでは，この定義を無視します。詳細についてはWebSphere MQのマニュアルを参照してください。

●　-jn

（オペランド）

sndjnl=flush｜noflush
　～《flush》
送信チャネルジャーナル出力条件を指定します。
送信チャネルはバッチ転送完了時（送達確認受信時）にジャーナルを取得します。このジャーナルを即時フラッシュ（ディスク出力）するかどうかを指定します。
flush：即時フラッシュ（ディスク出力）します。
noflush：即時フラッシュ（ディスク出力）しません。
このオペランドは，センダ，サーバ，およびクラスタセンダに指定できます。
noflushを指定した場合，ジャーナルをジャーナルバッファにだけ書き込み，ディスク出力は行いません。この場合，ディスク出力はTP1/Server Baseの制御下で実行されます。
ファーストメッセージ機能を使用しない場合，または通常メッセージを送信する場合は，noflushを指定することでディスク出力回数が少なくなり，チャネルの送信時間を短縮できます。

注意

noflushを指定した場合，受信側チャネルで受信完了している状態で送達未確認状態のチャネルにmqtrlvcha -a backoutコマンドを実行すると，不正なメッセージが送信されることがあります。チャネルを再度開始するか，または受信側チャネルの状態を確認してからmqtrlvchaコマンドを使用することで送達未確認状態を解決してください。

デフォルトチャネル定義

デフォルトチャネル定義を使用すると，mqtalccha定義コマンドのチャネル定義が複数あって，それぞれの定義に同一オプションの指定が複数ある場合に，定義項目の指定数を削減できます。デフォルトチャネル定義では，mqtalccha定義コマンドのオプションが省略された場合の解釈値を任意の値に変更できます。ただし，デフォルトチャネル定義の構文要素や指定範囲は，mqtalccha定義コマンドの各オプションで決められた形式に従って指定する必要があります。

チャネルの属性として採用する値を次の表に示します。

表4-8　チャネル属性として採用する値

デフォルトチャネル定義 | mqtalccha定義
あり | なし
あり | mqtalccha定義の値 | デフォルトチャネル定義の値
なし | mqtalccha定義の値 | システムで定義されている値

なお，mqtalccha定義コマンドのオプションに値を定義していない場合で，デフォルト定義に該当オプションの定義があるときはその値を採用します。しかし，デフォルト定義にないときは，システムで定義されている値を採用します。

mqtalccha定義コマンドのオプションで値を定義している場合は，その値を採用します。ただし，mqtalccha定義コマンドの次に示すオプションには，オペランドの優先順位があります。優先順位の高いオペランドをデフォルトチャネルで定義すると，デフォルトチャネルの値が採用されますので注意してください。

-rオプションのipaddrオペランドおよびhostnameオペランド（ipaddr優先）

-rオプションのportnoオペランドおよびservnameオペランド（portno優先）

-oオプションのoipaddrオペランドおよびohostnameオペランド（oipaddr優先）

-oオプションのoportnoオペランドおよびoservnameオペランド（oportno優先）

次にデフォルトチャネル定義の使用例を示します。なお，デフォルトチャネル定義は，別ファイルで定義します。

各チャネルタイプに指定できるオプション

mqtalccha定義コマンドの各オプションは，チャネルタイプごとに指定できるものとできないものがあります。各チャネルタイプに指定できるオプションについて説明します。

通常チャネルおよびクラスタチャネルに指定できるオプション

通常チャネルおよびクラスタチャネルに指定できるオプションについて次の表に示します。

表4-9　通常チャネルおよびクラスタチャネルに指定できるオプション

オプション
オペランド
sender
server
receiver
requester
clussdr
clusrcvr

-c
－
●
●
●
●
●
●

-y
type
●
●
●
●
●
●

-a
cluster
－
－
－
－
◎
●

-j
－
○
○
○
○
○
○

-q
－
◎
◎
－
－
－
－

-m
maxmsg
○
○
○
○
○
○

maxseg
○
○
○
○
○
○

-w
－
○
○
○
○
○
○

-g
sndbuf
◎
◎
－
－
◎
－

rcvbuf
－
－
◎
◎
－
●

buftype
○
○
○
○
○
○

-e
medbuf
○
○
○
○
○
○

medcnt
○
○
○
○
○
○

-i
－
○
○
○
（auto2指定は－）
○
○
○
（auto2指定は－）

-b
bretry
○
△
－
△
○
○

bretrycnt
○
△
－
△
○
○

bretryint
○
△
－
△
○
○

bretrylg
○
△
－
△
○
○

bretrylgcnt
○
△
－
△
○
○

bretrylgint
○
△
－
△
○
○

bretrymcp
○
△
－
△
○
－

-r
ipaddr
○
○
－
○
○
●

hostname
－

portno
○
○
－
○
○
－

servname
－
－

portnum
○
○
－
○
○
－

-o
oipaddr
◎
△
－
△
◎
－

ohostname
－
－

oportno
◎
△
－
△
◎
－

oservname
－
－

-v
tim1
○
△
－
△
○
－

tim2
○
○
－
－
○
－

tim3
－
－
○
○
－
○

tim4
○
○
－
－
－
－

tim4cnt
○
○
－
－
－
－

dtimefct
○
○
－
－
－
－

dtim
○
○
－
－
○
○

vretry
○
△
－
△
○
－

htim
○
○
○
○
○
○

btim
○
○
－
－
○
○

bmtim
○
○
－
－
○
○

mtim
－
－
○
○
－
○

-x
sndexdata
－
－
－
－
－
□

rcvexdata
－
－
－
－
－
□

metexdata
○
○
○
○
○
○

scyexdata
－
－
－
－
－
□

sendexit
－
－
－
－
－
□

rcvexit
－
－
－
－
－
□

msgexit
－
－
－
－
－
□

scyexit
－
－
－
－
－
□

-t
tcpsndbuf
○
○
○
○
○
○

tcprcvbuf
○
○
○
○
○
○

tretrycnt
○
△
－
△
○
－

tretryint
○
△
－
△
○
－

-d
cnvccsid
○
○
－
－
○
○

-s
npmspeed
○
○
○
○
○
○

-z
－
○
○
－
－
－
－

-p
netprty
－
－
－
－
－
○

-f
adoptchk
○
○
○
○
－
○

-h
－
○
○
○
○
○
○

-mc
mcauser
－
－
－
－
－
□

mcatype
－
－
－
－
－
□

-jn
sndjnl
○
○
－
－
○
－

（凡例）

●：指定が必要です。

◎：指定が必要です。ただし，デフォルトチャネル定義で定義している場合は，省略できます。

○：省略できます。

△：コーラだけ指定できます。

□：TP1/Message Queueでは使用しません。

－：該当しません。

デフォルトチャネルに指定できるオプション

デフォルトチャネルに指定できるオプションについて次の表に示します。

表4-10　デフォルトチャネルに指定できるオプション

オプション
オペランド
defsnd
defsrv
defrcv
defreq
defcsn

-c
－
－
－
－
－
－

-y
type
●
●
●
●
●

-a
cluster
－
－
－
－
△

-j
－
○
○
○
○
△

-q
－
○
○
－
－
－

-m
maxmsg
○
○
○
○
△

maxseg
○
○
○
○
△

-w
－
○
○
○
○
△

-g
sndbuf
○
○
－
－
○

rcvbuf
－
－
○
○
－

buftype
○
○
○
○
○

-e
medbuf
○
○
○
○
○

medcnt
○
○
○
○
○

-i
－
○
○
○
（auto2指定は－）
○
○

-b
bretry
○
○
－
○
△

bretrycnt
○
○
－
○
△

bretryint
○
○
－
○
△

bretrylg
○
○
－
○
△

bretrylgcnt
○
○
－
○
△

bretrylgint
○
○
－
○
△

bretrymcp
○
○
－
○
○

-r
ipaddr
○
○
－
○
○

hostname
－

portno
○
○
－
○
○

servname
－

portnum
○
○
－
○
○

-o
oipaddr
○
○
－
○
△

ohostname
－

oportno
○
○
－
○
△

oservname
－

-v
tim1
○
○
－
○
○

tim2
○
○
－
－
○

tim3
－
－
○
○
－

tim4
○
○
－
－
－

tim4cnt
○
○
－
－
－

dtimefct
○
○
－
－
－

dtim
○
○
－
－
△

vretry
○
○
－
○
○

htim
○
○
○
○
△

btim
○
○
－
－
△

bmtim
○
○
－
－
△

mtim
－
－
○
○
－

-x
sndexdata
－
－
－
－
－

rcvexdata
－
－
－
－
－

metexdata
○
○
○
○
△

scyexdata
－
－
－
－
－

sendexit
－
－
－
－
－

rcvexit
－
－
－
－
－

msgexit
－
－
－
－
－

scyexit
－
－
－
－
－

-t
tcpsndbuf
○
○
○
○
○

tcprcvbuf
○
○
○
○
○

tretrycnt
○
○
－
○
○

tretryint
○
○
－
○
○

-d
cnvccsid
○
○
－
－
○

-s
npmspeed
○
○
○
○
△

-z
－
○
○
－
－
－

-p
netprty
－
－
－
－
－

-f
adoptchk
○
○
○
○
－

-h
－
○
○
○
○
△

-mc
mcauser
－
－
－
－
－

mcatype
－
－
－
－
－

-jn
sndjnl
○
○
－
－
○

（凡例）

●：指定が必要です。

○：省略できます。

△：クラスタに参加するまでの事前定義クラスタセンダチャネルだけ指定できます。

－：該当しません。

チャネルのネゴシエーション

mqtalccha定義コマンドで指定するチャネル属性には，チャネル確立時に自システムのチャネルと相手システムのチャネルとの間で，適切な値に調整したり同じ値かどうかをチェックしたりする属性があります。この処理をネゴシエーションといいます。

ネゴシエーションを行うチャネル属性と，ネゴシエーションの結果について次の表に示します。

表4-11　ネゴシエーションを行うチャネル属性と，ネゴシエーションの結果

チャネル属性
TP1/Message Queueの設定
ネゴシエーションの結果

メッセージチャネルのプロトコルレベル（FAPレベル）
4
相手システムがFAPレベル4をサポートしている場合は，FAPレベルは4になります。
相手システムがFAPレベル4をサポートしていない場合は，FAPレベルは1になります。
FAPレベルが1の場合，マルチキャスト機能，ファーストメッセージ機能，およびハートビート機能は使用できません。

メッセージシーケンス番号の使用
使用
相手システムが，メッセージシーケンス番号を使用していない場合は，チャネル接続できません。

メッセージ転送時のセグメント分割の使用
使用
相手システムに合わせます。ただし，次に示す二つの条件が同時に成立する場合は，チャネル接続できません。

相手システムがセグメント分割を使用しないとき

次の計算式を満たすとき
ネゴシエーション後の最大セグメント長 < ネゴシエーション後の最大メッセージ長 + 476

セキュリティ要求
機能なし
そのまま正常扱いで処理されます。

mqtalccha定義コマンドのオプションおよびオペランドで，ネゴシエーションを行うチャネル属性について次の表に示します。

表4-12　ネゴシエーションを行うチャネル属性（mqtalccha定義コマンドのオプションおよびオペランド）

オプション
オペランド
ネゴシエーション方法
備考

-c
－
●
－

-y
type
□
適切なチャネルタイプを組み合わせてください。チャネルタイプの組み合わせについては，「2.3.2　MCAのチャネルタイプ」を参照してください。

-j
－
○※
－

-m
maxmsg
○
－

-m
maxseg
○
－

-w
－
□
相手システムと同じメッセージシーケンス番号の最大値を指定してください。異なる場合，チャネル接続できません。

-g
buftype
□
自システムのチャネル属性がセグメント方式の場合は，次に示す制限があります。

配布リストの送受信ができません。

MQMDE.MsgFlagsにMQMF_SEGMENTATION_ALLOWEDが指定されたメッセージを受信してもキューマネジャによるセグメント分割ができません。

メッセージ編集出口UOCが使用できません（UOCデーモンを作成してもUOCは呼び出されません）。

-v
htim
△
－

□
自システムのチャネルの属性，または相手システムのチャネルの属性が0（ハートビート機能なし）の場合は0となります。

-s
npmspeed
□
自システムのチャネルの属性，または相手システムのチャネルの属性がnormalの場合はnormalになります。
ネゴシエーションの結果，fastになった場合は，MQMDE.MsgFlagsにMQMF_SEGMENTATION_ALLOWEDが指定された非永続メッセージを受信しても，キューマネジャでは，セグメント分割できません。

（凡例）

●：自システムのチャネルの属性と相手システムのチャネルの属性が，同じ値かどうかチェックします。

○：自システムのチャネルの属性と相手システムのチャネルの属性を比較して，小さい方の値を採用します。

△：自システムのチャネルの属性と相手システムのチャネルの属性を比較して，大きい方の値を採用します。

□：備考欄を参照してください。

－：該当しません。

注※

自動定義クラスタセンダチャネルのバッチサイズは，次に示す計算式の値です。

mqtalced（チャネル終了定義）

形式

mqtalced

機能

チャネル定義の終了を示します。

オプション

なし

MQT定義オブジェクトファイルの作成手順

MQT定義オブジェクトファイルの作成手順および旧製品の定義を使用する場合の注意事項について説明します。

MQT定義オブジェクトファイルの作成手順

MQT定義オブジェクトファイルは次に示す手順で作成します。

定義オブジェクトファイルは，開始から再開始の間に変更しないでください。変更した場合，再開始の動作は保証されません。

オペレーティングシステムのテキストエディタを使用して，MQTの定義ファイルから，次に示す定義ソースファイルを作成します。

MQT通信構成定義のMQT共通定義ソースファイル

MQT通信構成定義のTCP定義ソースファイル

MQT通信構成定義のTCP定義ソースファイル（デフォルトチャネル定義）。デフォルトチャネル定義は，省略できます。

MQT定義オブジェクト生成ユティリティを使用して，定義ソースファイルから，次に示すオブジェクトファイルを作成します。

MQT通信構成定義のMQT共通定義オブジェクトファイル

MQT通信構成定義のTCP定義オブジェクトファイル

MQT定義結合ユティリティを使用して，MQT通信構成定義の，MQT共通定義とTCP定義のオブジェクトファイルを結合します。

結合したMQT通信構成定義のオブジェクトファイルを，UNIXの場合は$DCCONFPATH，Windowsの場合は%DCCONFPATH%に登録します。

MQT定義オブジェクトファイルの作成方法の概要について，次の図に示します。

図4-3　MQT定義オブジェクトファイルの作成方法の概要

MQT通信構成定義でホスト名ファイル，およびサービス名ファイルを更新する場合，次に示す点に注意してください。

相手システムのホスト名（mqtalccha定義コマンドの-o ohostnameオペランド）を指定した場合，ホスト名ファイル，またはネームサーバに相手システムのホスト名を登録しなければなりません。

また，相手システムのホストのサービス名（mqtalccha定義コマンドの-o oservnameオペランド）および自システムのサービス名（mqtalccha定義コマンドの-r servnameオペランド）を指定して，特定のポート番号を使用する場合，サービス名ファイルにサービス名を登録しなければなりません。

旧製品のMQT定義を使用する場合の注意事項

TP1/Message Queue 05-16以降および05-13以降では，MQT定義の指定を省略した場合の解釈値を変更しました。TP1/Message Queue 05-14以前または05-12以前の定義を使用する場合，動作が異なることがありますので注意してください。変更内容をそれぞれ表4-13および表4-14に示します。

表4-13　TP1/Message Queue 05-16以降で変更したMQT定義の省略時の解釈値

定義コマンド名，オプション名，およびオペランド名 | TP1/Message Queue 05-14以前で省略した場合の解釈値 | TP1/Message Queue 05-16以降で省略した場合の解釈値 | チャネルタイプ
mqttcp -v etim | 0 | 360 | センダ，サーバ，リクエスタ，レシーバ
mqttcpcs -v etim | 0 | 360 | クラスタセンダ
mqttcpcr -v etim | 0 | 360 | クラスタレシーバ

表4-14　TP1/Message Queue 05-13以降で変更したMQT定義の省略時の解釈値

定義コマンド名，オプション名，およびオペランド名 | TP1/Message Queue 05-12で省略した場合の解釈値 | TP1/Message Queue 05-13以降で省略した場合の解釈値 | チャネルタイプ
mqtttim -t btim | 5 | 1 | すべてのチャネル
mqtalccha -m maxmsg | 127996000 | バッファサイズ | センダ，サーバ，リクエスタ，レシーバ
mqtalccha -g buftype | seg | msg | センダ，サーバ，リクエスタ，レシーバ
mqtalccha -b bretrycnt | 0 | 10 | センダ，サーバ，リクエスタ
65535 | 10 | クラスタセンダ，クラスタレシーバ
mqtalccha -b bretrymcp | no | yes | センダ，サーバ，リクエスタ
mqtalccha -v vretry | no | yes | センダ，サーバ，リクエスタ
mqtalccha -v htim | 0 | 300 | センダ，サーバ，リクエスタ，レシーバ
mqtalccha -s npmspeed | normal | fast | センダ，サーバ，リクエスタ，レシーバ
mqtalccha -z | time | event | センダ，サーバ
mqtalccha -f adoptchk | off | qmgr | センダ，サーバ，リクエスタ，レシーバ

注意

TP1/Message Queue 05-12以前の動作を継続する場合の注意事項を次に示します。

mqtttim定義コマンドの-t btimオペランドは，デフォルトチャネル定義で指定できないため，TP1/Message Queue 05-12以前の動作を継続したい場合は，定義値を指定する必要があります。

mqtalccha定義コマンドの-b bretrycntオペランドは，0（無限回）を指定できなくなり，指定値の範囲を，"0～65535"から"1～999999999"に変更しました。

mqtalccha定義コマンドの-b bretryintオペランドの指定値の範囲を，"0～2550"から"0～999999999"に変更しました。

サンプルデフォルト定義

既存の定義で，表4-13，および表4-14に示されている項目にある定義のどれかを省略していて，今後も今までの動作を継続したい場合，定義値を指定するか，システム提供のサンプルデフォルト定義を使用してください。サンプルデフォルト定義は，通常チャネル用とクラスタセンダチャネル用に分かれています。次に通常チャネル用とクラスタセンダチャネル用のサンプルデフォルト定義の格納先を示します。

通常チャネル用のサンプルデフォルト定義の格納場所

examples/mq/conf/def_cha

クラスタセンダチャネル用のサンプルデフォルト定義の格納場所

examples/mq/conf/def_chac

指定方法は，この章の「MQT定義オブジェクト生成ユティリティ」を参照してください。

MQT定義オブジェクト生成ユティリティ

概要

MQT定義オブジェクト生成ユティリティは，MQTの定義ファイルの構文のチェックと，MQT定義オブジェクトファイルへの変換をします。

MQT定義オブジェクト生成ユティリティの詳細を説明します。

形式

mqt××××  -i  〔パス名〕入力ファイル名
          〔-d  〔パス名〕入力ファイル名2〕
            -o  〔パス名〕出力オブジェクトファイル名

機能

MQTの定義ファイルの構文のチェック，およびMQT定義オブジェクトファイルの作成をします。

ただし，開始から再開始の間はMQT定義オブジェクトファイルを変更できません。変更した場合，再開始の動作は保証されません。

オプション

●　mqt××××

ユティリティを起動するコマンドを指定します。

mqtcomn
MQT共通定義のユティリティを起動します。

mqttcpip
TCP定義のユティリティを起動します。

mqttcpcs
クラスタセンダプロセス用TCP定義のユティリティを起動します。

mqttcpcr
クラスタレシーバプロセス用TCP定義のユティリティを起動します。

●　-i 〔パス名〕入力ファイル名

　～＜パス名＞＜1～8文字の識別子＞

定義ソースが格納されているファイル名を指定します。

●　-d 〔パス名〕入力ファイル名2

　～＜パス名＞＜1～8文字の識別子＞

デフォルトチャネル定義ソースが格納されているファイル名を指定します。

mqttcpipコマンド，およびmqttcpcsコマンドで指定できます。

●　-o 〔パス名〕出力オブジェクトファイル名

　～＜パス名＞＜1～8文字の英数字＞

定義オブジェクトを格納するファイル名を指定します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA18000-E | 定義コマンドの指定順序に誤りがあります。 | 標準エラー出力
KFCA18001-E | 定義コマンドは省略できません。 | 標準エラー出力
KFCA18002-E | 定義コマンドの数が上限値を超えています。 | 標準エラー出力
KFCA18003-E | 不当な文字列があります。 | 標準エラー出力
KFCA18004-E | 二重引用符で囲まれた文字数が，1024けたを超えています。 | 標準エラー出力
KFCA18005-E | 定義コマンドのオプションは省略できません。 | 標準エラー出力
KFCA18006-E | 定義コマンドのオプションの指定に誤りがあります。 | 標準エラー出力
KFCA18007-E | 定義コマンドに不当な文字列があります。 | 標準エラー出力
KFCA18010-E | 定義コマンドのオプションの指定値が，他の定義コマンドのオプションの指定値と重複しています。 | 標準エラー出力
KFCA18015-E | 定義コマンドのオペランドは省略できません。 | 標準エラー出力
KFCA18016-E | 定義コマンドのオペランドの指定に誤りがあります。 | 標準エラー出力
KFCA18017-E | 定義コマンドのオプションに不当な文字列があります。 | 標準エラー出力
KFCA18018-E | 定義コマンドのオペランドは省略できません。 | 標準エラー出力
KFCA18020-E | 他の定義コマンドのオペランドの指定値と重複しています。 | 標準エラー出力
KFCA18029-E | 定義コマンドに対応する定義コマンドが指定されていません。 | 標準エラー出力
KFCA18030-E | 指定ファイルのオープン処理に失敗しました。 | 標準エラー出力
KFCA18031-E | メモリの確保に失敗しました。 | 標準エラー出力
KFCA18032-E | 指定された定義オブジェクトファイル名は既に存在しています。 | 標準エラー出力
KFCA18033-E | 指定ファイルの入出力処理に失敗しました。 | 標準エラー出力
KFCA18046-I | 定義オブジェクト生成ユティリティ処理が異常終了しました。 | 標準出力
KFCA18047-I | 定義オブジェクト生成ユティリティ処理で定義エラーを検知して終了しました。 | 標準出力
KFCA18048-I | 定義オブジェクト生成ユティリティ処理を開始しました。 | 標準出力
KFCA18049-I | 定義オブジェクト生成ユティリティ処理が正常終了しました。 | 標準出力
KFCA18107-E | 定義コマンドのオプションは指定できません。 | 標準エラー出力
KFCA18108-E | 定義コマンドのオペランドは指定できません。 | 標準エラー出力
KFCA18113-E | 定義コマンドのオペランドには指定できません。 | 標準エラー出力
KFCA18114-E | 定義コマンドのオプションは省略できません。 | 標準エラー出力
KFCA18119-E | 定義コマンドのオペランドは省略できません。 | 標準エラー出力
KFCA18121-E | 定義コマンドのオペランドは省略できません。 | 標準エラー出力
KFCA18122-E | 定義コマンドのオプションのオペランド数が，システム上指定できる上限値を超えています。 | 標準エラー出力
KFCA18143-E | 定義コマンドのオペランドは同時に省略できません。 | 標準エラー出力

MQT定義結合ユティリティ

概要

MQT定義結合ユティリティでは，MQT定義ファイル（MQT共通定義オブジェクトファイル，およびTCP定義オブジェクトファイル）のコマンド間の関連をチェックし，二つのオブジェクトファイルを結合します。コマンド間の関連が整合しない場合，MQT定義オブジェクトファイルは生成されないで，TP1/Message Queueは処理を終了します。

MQT定義結合ユティリティの詳細を説明します。

形式

mqtlink  -i 〔パス名〕MQT共通定義オブジェクトファイル名
           〔パス名〕TCP定義オブジェクトファイル名
        -o 〔パス名〕出力オブジェクトファイル名

機能

MQTの定義ファイルのコマンド間の整合性のチェック，およびMQT定義オブジェクトファイルの結合をします。

オプション

●　-i 〔パス名〕MQT共通定義オブジェクトファイル名 〔パス名〕TCP定義オブジェクトファイル名

　～＜1～8文字の英数字＞

MQT共通定義オブジェクト，およびTCP定義オブジェクトのファイル名を指定します。ファイル名は，どちらを先に指定してもかまいません。

●　-o 〔パス名〕出力オブジェクトファイル名

　～＜_（アンダスコア）で始まる2～8文字の英数字＞

MQT定義オブジェクトを格納するファイル名を指定します。ファイル名は，先頭のアンダスコアを含めて8文字までの英数字で指定してください。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA18005-E | 定義コマンドのオプションは省略できません。 | 標準エラー出力
KFCA18006-E | 定義コマンドのオプションの指定に誤りがあります。 | 標準エラー出力
KFCA18007-E | 定義コマンドに不当な文字列があります。 | 標準エラー出力
KFCA18021-E | 定義コマンドのオペランドに定義されていません。 | 標準エラー出力
KFCA18030-E | 指定ファイルのオープン処理に失敗しました。 | 標準エラー出力
KFCA18031-E | メモリの確保に失敗しました。 | 標準エラー出力
KFCA18032-E | 指定された定義オブジェクトファイル名は既に存在しています。 | 標準エラー出力
KFCA18033-E | 指定ファイルの入出力処理に失敗しました。 | 標準エラー出力
KFCA18034-E | 定義コマンドのオプションのオペランドの指定値が，対応する定義コマンドのバッファ数の合計値を超えています。 | 標準エラー出力
KFCA18100-E | 定義コマンドのオプションで指定されたファイルは結合できません。 | 標準エラー出力
KFCA18101-I | 定義オブジェクト結合ユティリティ処理を開始しました。 | 標準出力
KFCA18102-I | 定義オブジェクト結合ユティリティ処理で定義エラーを検知して終了しました。 | 標準出力
KFCA18104-I | 定義オブジェクト結合ユティリティ処理が正常終了しました。 | 標準出力
KFCA18159-E | 定義コマンドのオプションのオペランドの指定値が，対応する定義コマンドのオプションのオペランドの指定値を超えています。 | 標準エラー出力

MQCサービス定義

MQCサーバ機能の定義のうち，MQCサービス定義について説明します。

関連製品であるTP1/Message Queue - Accessを使用する場合に作成します。

概要

MQCサービス定義は，OpenTP1のシステムサービス定義の一つです。

MQCサービス定義は，OSのテキストエディタを使用して，テキストファイルとして作成します。MQCサービス定義の定義ファイル名（完全パス名）を次に示します。

$DCCONFPATH/mqc

機能

MQCサーバ機能の動作を定義します。

種類

MQCサービス定義の種類について，次の表に示します。

表4-15　MQCサービス定義の種類

形式
オプション
定義内容
指定値

mqcenv
（MQCリスナサーバ通信環境定義）
指定数：1
-p
自システムのポート番号
～＜符号なし整数＞
((5001～65535))

-s
自システムのサービス名
～＜1～32文字の識別子（ハイフン（-）を含む）＞

-e
終了処理監視タイマ値
～＜符号なし整数＞
((10～65535))《180》
（単位：秒）

-r
要求受信監視タイマ値
～＜符号なし整数＞
((0，10～8191))《180》
（単位：秒）

-n
継続セグメント受信監視タイマ値
～＜符号なし整数＞
((10～8191))《30》
（単位：秒）

-g
MQCゲートウェイサーバ監視タイマ値
～＜符号なし整数＞
((10～8191))《30》
（単位：秒）

-c
MQCコネクション確立完了監視タイマ値
～＜符号なし整数＞
((10～8191))《30》
（単位：秒）

-k
回線監視
yes｜no
～《no》

-i
トランザクションブランチ終了監視タイマ値
～＜符号なし整数＞
((0～65535))《180》
（単位：秒）

mqcgwpnam
（MQCゲートウェイサーバ名定義）
指定数：1～256※
-n
MQCゲートウェイサーバ名
～＜1～8文字の識別子＞

-p
自システムのポート番号
～＜符号なし整数＞
((5001～65535))

-s
自システムのサービス名
～＜1～32文字の識別子（ハイフン（-）を含む）＞

注※

次に示す値の合計数を指定してください。

MQCクライアント機能が動作するマシンの環境変数にDCMQCEXPTRN=Nを設定しているか，または非XAインタフェースの場合，キューマネジャに同時接続するクライアントアプリケーション数

MQCクライアント機能が動作するマシンの環境変数にDCMQCEXPTRN=Yを設定している場合，トランザクションオブジェクトを結合したアプリケーションの数とトランザクションマネジャの数の合計数

MQCクライアントがTP1/Server Baseと連携してXAインタフェース接続を行っている場合，MQCクライアントが連携しているTP1/Server Baseのトランザクションサービス定義のtrn_recovery_process_countオペランドの指定値に1を加算した値

MQCクライアントがJMSインタフェース機能を使用している場合，次の条件で該当するものの合計値

条件 | 値
コネクションプーリング機能を使用する | リソースアダプタのプロパティ定義に指定した［property-name］の［MaxPoolSize］の値＋1
コネクションプーリング機能を使用しない | 全アプリケーション数＋1
MDBキュー監視機能を使用する | 各MDBアプリケーションのプロパティ定義に指定した［pooled-instance］の［maximum］の値の総和

mqcenv（MQCリスナサーバ通信環境定義）

形式

mqcenv    ｛-p 自システムのポート番号 ｜ -s 自システムのサービス名｝
         〔-e 終了処理監視タイマ値〕
         〔-r 要求受信監視タイマ値〕
         〔-n 継続セグメント受信監視タイマ値〕
         〔-g MQCゲートウェイサーバ監視タイマ値〕
         〔-c MQCコネクション確立完了監視タイマ値〕
         〔-k 回線監視〕
         〔-i トランザクションブランチ終了監視タイマ値〕

機能

MQCクライアント機能とMQCリスナサーバ間の通信に関する環境を定義します。

mqcenv定義コマンドは，MQCサービス定義に一つだけ指定してください。省略した場合は，MQCサーバ機能を使用できません。重複して指定した場合は，MQCリスナサーバの開始処理でエラーになります。

オプション

●　-p 自システムのポート番号

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

リスナ要求を受信する自システムのポート番号を指定します。この指定値は，MQCクライアント機能とのコネクション確立のために使用されます。ポート番号は，OSが自動割り当てするポート番号を含めて，自ノード内で重複して指定できません。自システムのポート番号が，ほかの通信プログラムで使用されているポート番号と重複した場合，KFCA30831-Eメッセージを出力してMQCリスナサーバが異常終了することがあります。OSが自動割り当てするポート番号については，OSのマニュアルを参照してください。

-sオプションを指定した場合，この指定値は省略できます。ただし，省略する場合は，あらかじめサービス名ファイルにサービス名を登録しておく必要があります。

●　-s 自システムのサービス名

　～＜1～32文字の識別子（ハイフン(-)を含む）＞

自システムのサービス名を指定します。この指定値は，MQCクライアント機能とのコネクション確立のために使用されます。サービス名は自ノード内で重複して指定できません。サービス名は，サービス名ファイルに次の形式で登録します。

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

また，-pオプションの指定がある場合，この指定値は省略できます。

●　-e 終了処理監視タイマ値

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

正常終了，計画停止A，または計画停止Bの場合，MQCクライアント機能の切断を時間監視します。タイムアウトが発生した場合，送受信中の処理を中断し，MQCクライアント機能との接続は強制解放され，MQCリスナサーバがKFCA30830-Eメッセージを出力して終了するか，またはMQCゲートウェイサーバがKFCA30840-Eメッセージを出力して終了します。

●　-r 要求受信監視タイマ値

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

次の範囲について時間監視を行います。

MQCコネクション確立応答送信から，API実行要求受信まで

API結果応答（またはトランザクション決着結果応答）から，API実行要求（またはトランザクション決着要求）まで

0を指定した場合は，時間監視をしません。

タイムアウトが発生した場合，MQCリスナサーバがKFCA30835-Eメッセージを出力して待機状態になるか，またはMQCゲートウェイサーバがKFCA30845-Eメッセージを出力して待機状態になります。

●　-n 継続セグメント受信監視タイマ値

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

MQCクライアント機能からのAPI実行要求がセグメント分割される場合に，継続セグメントを受信する時間を監視します。

タイムアウトが発生した場合，MQCリスナサーバがKFCA30834-Eメッセージを出力して待機状態になるか，またはMQCゲートウェイサーバがKFCA30844-Eメッセージを出力して待機状態になります。

●　-g MQCゲートウェイサーバ監視タイマ値

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

クライアントアプリケーションがMQCONN命令で呼び出してから，MQCゲートウェイサーバに接続するまでの時間を監視します。

タイムアウトが発生した場合，MQCゲートウェイサーバがKFCA30852-Eメッセージを出力して待機状態になります。

●　-c MQCコネクション確立完了監視タイマ値

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

TCP/IPコネクションの確立から，MQCコネクションを確立するまでの時間を監視します。

タイムアウトが発生した場合，MQCリスナサーバがKFCA30836-Eメッセージを出力して待機状態になるか，またはMQCゲートウェイサーバがKFCA30853-Eメッセージを出力して待機状態になります。

●　-k 回線監視

　～｛yes｜no｝《no》

TCP/IPソケットの回線監視（keepalive）機能を使用するかどうかを指定します。

yes
TCP/IPソケットの回線監視（keepalive）機能を使用します。

no
TCP/IPソケットの回線監視（keepalive）機能を使用しません。

回線監視（keepalive）機能とは，接続しているTCP/IPコネクションに一定間隔メッセージの転送が発生しない場合にTCP/IPがMQCとの接続を確認するデータを自動で転送する機能のことです。この機能を使用するとMQCとの回線障害を検出しやすくなります。ただし，TCP/IPレベルで回線状態確認のためのデータが転送されるため，回線の使用量が増加します。

●　-i トランザクションブランチ終了監視タイマ値

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

開始中のトランザクションに対してxa_end処理が完了してからxa_prepare，xa_commitまたはxa_rollbackが要求されるまでの時間を指定します。指定した時間を過ぎてもxa_prepare，xa_commitまたはxa_rollbackが要求されない場合は，同期点処理へ移行状態（xa_end済み状態）のトランザクションを強制的にロールバックします。0を指定した場合はトランザクションブランチの終了時間監視をしません。

mqcgwpnam（MQCゲートウェイサーバ名定義）

形式

mqcgwpnam  -n MQCゲートウェイサーバ名
        ｛-p 自システムのポート番号｜-s 自システムのサービス名｝

機能

MQCゲートウェイサーバ名に対応するAPI実行要求受信用のポート番号を定義します。mqcgwpnam定義コマンドは，MQCサービス定義に必ず1個以上指定してください。

コマンド引数

●　-n MQCゲートウェイサーバ名

　～＜1～8文字の識別子＞

MQCゲートウェイサーバ名を指定します。

●　-p 自システムのポート番号

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

MQCゲートウェイサーバ名に対応するAPI実行要求受信用の自システムのポート番号を指定します。ポート番号は，OSが自動割り当てするポート番号を含めて，自ノード内で重複して指定できません。自システムのポート番号が，ほかの通信プログラムで使用されているポート番号と重複した場合，KFCA30841-Eメッセージを出力してMQCゲートウェイサーバが異常終了することがあります。OSが自動割り当てするポート番号については，OSのマニュアルを参照してください。

-sオプションを指定した場合，この指定値は省略できます。ただし，省略する場合は，あらかじめサービス名ファイルにサービス名を登録しておく必要があります。

●　-s 自システムのサービス名

　～＜1～32文字の識別子（ハイフン(-)を含む）＞

MQCゲートウェイサーバ名に対応するAPI実行要求受信用の自システムのサービス名を指定します。サービス名は自ノード内で重複して指定できません。サービス名は，サービス名ファイルに次の形式で登録します。

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

-pオプションを指定した場合，この指定値は省略できます。

注意事項

mqcgwpnam定義コマンドの数を変更した場合は，必ずMQAサービス定義のmqa_mqc_clientnumの値を見直してください。

MQCゲートウェイサーバユーザサービス定義

MQCサーバ機能の定義のうち，MQCゲートウェイサーバユーザサービス定義について説明します。

関連製品であるTP1/Message Queue - Accessを使用する場合に作成します。

概要

mqcgwpをOpenTP1のユーザサーバとして開始するため，開始するMQCゲートウェイサーバごとにMQCゲートウェイサーバユーザサービス定義が必要です。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

MQCゲートウェイサーバユーザサービス定義は，OSのテキストエディタを使用して，テキストファイルとして作成します。MQCゲートウェイサーバユーザサービス定義の定義ファイル名を次に示します。

$DCCONFPATH/MQCゲートウェイサーバ名

MQCゲートウェイサーバ名には，mqcgwpnam定義コマンドの-nオプションの指定値を指定します。

形式

 set  module = "実行形式プログラム名"
 set  atomic_update = Y｜N
 set  receive_from = none
 set  auto_restart = Y
 set  critical = N
〔set  trn_rm_open_close_scope = process〕
〔set  nice = プロセスの優先順位〕

機能

MQCゲートウェイサーバをユーザサーバとして開始するための情報を定義します。

オプション

●　module = "実行形式プログラム名"

　～＜1～14文字の識別子＞

実行形式プログラム名にはmqcgwpを指定してください。

●　atomic_update=Y｜N

MQCゲートウェイサーバプロセスをトランザクションの範囲に入れるかどうかを指定します。

このオペランドの指定値は，次に示すように，OSや製品のバージョンによって異なります。

OS | 製品の形名 | 製品のバージョン | atomic_updateオペランドの指定値
AIX | P-1M64-C371 | 07-01-05以前 | Y
07-01-06以降 | N
P-1M64-D111 | 07-01以降 | N
HP-UX | P-1J64-C371 | 07-01 | Y
07-01-01以降 | N
P-1J64-C571 | 07-01以降 | N
Linux | P-9V64-C371 | 07-01 | Y
P-9S64-C371 | 07-01以降 | N
P-9S64-C571 | 07-01以降 | N
P-9W64-C311 | 07-01以降 | N
Windows | P-2464-C374 | 07-01-01以前 | Y
07-01-02以降 | N

この表に示した値を指定すると，MQCゲートウェイサーバプロセスはトランザクションの範囲に入れます。トランザクションとして動作することを考慮し，トランザクションサービス定義のtrn_tran_process_countオペランドなどの関連する定義を見積もってください。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

なお，この表とは異なる値を指定すると，トランザクションの範囲に入れません。このため，MQCゲートウェイサーバの起動時にアボートコードMqcgw03を出力し，MQCゲートウェイサーバが異常終了します。

●　receive_from = none

none
スケジュールサービスのスケジュールキュー，UNIXドメイン，およびインターネットドメインのどれも使用しません。

●　auto_restart = Y

Y
UAPが異常終了した場合，プロセスを再起動します。

●　critical = N

N
UAPが異常終了した場合，OpenTP1システムを続行します。

●　trn_rm_open_close_scope = process

$DCCONFPATH/trn（トランザクションサービス定義）に次のように設定されている場合，指定してください。

set trn_rm_open_close_scope = transaction

●　nice = プロセスの優先順位

　～＜符号なし整数＞((0～39))

サービスグループプロセスの優先順位を指定します。この値が大きくなるとCPUの優先順位は低くなります。

注意事項

MQCゲートウェイサーバユーザサービス定義はSUPの形式で設定してください。

トランザクションサービス定義

MQCサーバ機能の定義のうち，トランザクションサービス定義について説明します。

トランザクションサービス定義については，マニュアル「OpenTP1 システム定義」を参照してください。

概要

MQCサーバ機能で，TP1/Message Queue - Accessからグローバルトランザクションを使用するには，トランザクションサービス定義にMQCサーバ機能の定義を追加する必要があります。トランザクションサービス定義の定義ファイル名を次に示します。

$DCCONFPATH/trn

形式

〔set  trn_crm_use = Y｜N〕

機能

MQCサーバ機能を開始するための情報を定義します。

オペランド

●　trn_crm_use=Y｜N

　～《N》

このノードのMQCサーバ機能で，TP1/Message Queue - Accessからグローバルトランザクションを使用するかどうかを指定します。TP1/Message Queue - Accessからグローバルトランザクションを使用する場合，必ずYを指定してください。

Y
TP1/Message Queue - Accessからグローバルトランザクションを使用します。

N
TP1/Message Queue - Accessからグローバルトランザクションを使用しません。

注意事項

trn_crm_useオペランドにYを指定しないでTP1/Message Queue - Accessからグローバルトランザクションを使用した場合の処理の流れを次に示します。

TP1/Message Queue - Accessからグローバルトランザクションを開始します。

MQPMO_MQSYNCPOINT，またはMQGMO_SYNCPOINTを指定して，MQPUT命令，MQPUT1命令，およびMQGET命令を発行します。

理由コードMQRC_UNEXPECTED_ERRORがTP1/Message Queue - Accessへ返却されます。また，MQCサーバ側にKFCA00910-Eメッセージが出力されます。

システム構成例

製品が提供するサンプルコードを使用したシステム構成例について説明します。

サンプルコードのシステム構成

製品が提供するサンプルコードは，ホスト1とホスト2，およびホスト1とホスト3とでメッセージを送受信するシステム構成です。

サンプルコードのシステム構成について，次の図に示します。

図4-4　サンプルコードのシステム構成

このシステム構成でのホスト1，ホスト2，およびホスト3の定義コーディング例を次に示します。

MQAサービス定義のコーディング例

#
# Message Queue Access service definition(mqa)
#

set mqa_max_quenum = 20
set mqa_max_grpnum = 10
set mqa_max_filnum = 10
set mqa_max_msg_recnum = 5
set mqa_ioproc_num = 3

# queue file group definition
mqaquegrp -g sendgroup1 -n 256                  ¥
         /BeTRAN/examples/mq/mqfile1/sendqf1
mqaquegrp -g sendgroup2 -n 256                  ¥
         /BeTRAN/examples/mq/mqfile1/sendqf2
mqaquegrp -g recvgroup1 -n 256                  ¥
         /BeTRAN/examples/mq/mqfile2/recvqf1
mqaquegrp -g recvgroup2 -n 256                  ¥
         /BeTRAN/examples/mq/mqfile2/recvqf2
mqaquegrp -g initgroup1 -n 128                  ¥
         /BeTRAN/examples/mq/mqfile3/initqf1

# local definition of remote queue
mqaremque -r dynq1 -m qmgr2 -x trnq1 rmtq1
mqaremque -r dynq1 -m qmgr3 -x trnq2 rmtq2

# process definition
mqaprcdef -p PRC1 -t 15 -e ENV1 -u USER1 prc1

# queue manager definition
mqaquemgr -n qmgr1 -q QMGR1 -t 0 -p 9           ¥
         -h 128 -l 5000000 -s sync

#mqt definition
mqamqtnam _mqtd1 mqttcp 2
mqamqtnam _mqtd2 mqttcp 2

ホスト1（_mqtd1）のMQT通信構成定義のコーディング例

#
# MQT communication configuration definition, tcp definition
#

# tcp configuration definition
mqttcp -i iniq1                                 ¥
      -p tcp                                   ¥
      -g "rcvbuf = 3"                          ¥
      -r "servname = mqhost1_sv1"              ¥
      -v "itim = 60                            ¥
          etim = 40                            ¥
          rtim = 60"                           ¥
      -t "disk = yes                           ¥
          bufcnt = 100                         ¥
          trccnt = 3"                          ¥
      -z event

# sender channel definition
mqtalccha -c CHA01                              ¥
      -y "type = sender"                       ¥
      -j 50                                    ¥
      -q trnq1                                 ¥
      -m "maxmsg = 8192                        ¥
          maxseg = 4096"                       ¥
      -w   999999999                           ¥
      -g "sndbuf = 1                           ¥
          buftype=msg"                         ¥
      -i auto                                  ¥
      -b "bretry = yes                         ¥
          bretrycnt = 10                       ¥
          bretryint = 60                       ¥
          bretrylg = yes                       ¥
          bretrylgcnt = 999999999              ¥
          bretrylgint = 1200                   ¥
          bretrymcp = yes"                     ¥
      -r "servname = mqhost1_sv3"              ¥
      -o "ohostname = mqhost2                  ¥
          oservname = mqhost2_sv1"             ¥
      -v "tim1 = 30                            ¥
          tim2 = 30                            ¥
          dtimefct = yes                       ¥
          dtim = 60                            ¥
          vretry = yes                         ¥
          htim = 15                            ¥
          btim = 0"                            ¥
      -t "tretrycnt = 10                       ¥
          tretryint = 1"                       ¥
      -s "npmspeed = fast"                     ¥
      -z event                                 ¥
      -h 'to mqhost2'
mqtalced

# receiver channel definition
mqtalccha -c CHA02                              ¥
         -y "type = receiver"                  ¥
         -j 50                                 ¥
         -m "maxmsg = 8192                     ¥
             maxseg = 4096"                    ¥
         -w 999999999                          ¥
         -g "rcvbuf = 2                        ¥
             buftype = msg"                    ¥
         -i auto                               ¥
         -v "tim3 = 10                         ¥
             htim = 15                         ¥
             mtim = 10"                        ¥
         -s "npmspeed = fast"                  ¥
         -f "adoptchk = qmgr"                  ¥
         -h 'from mqhost2'
mqtalced

ホスト1（_mqtd2）のMQT通信構成定義のコーディング例

#
# MQT communication configuration definition, tcp definition
#

# tcp configuration definition
mqttcp -p tcp                                   ¥
      -g "rcvbuf = 3"                          ¥
      -r "servname = mqhost1_sv2"              ¥
      -v "etim = 40                            ¥
          rtim = 60"                           ¥
      -t "disk = yes                           ¥
          bufcnt = 100                         ¥
          trccnt = 3"

# server channel definition
mqtalccha -c CHA03                              ¥
         -y "type = server"                    ¥
         -j 50                                 ¥
         -q trnq2                              ¥
         -m "maxmsg = 8192                     ¥
             maxseg = 4096"                    ¥
         -w   999999999                        ¥
         -g "sndbuf = 1                        ¥
             buftype=msg"                      ¥
         -i auto                               ¥
         -v "tim2 = 30                         ¥
             dtimefct = yes                    ¥
             dtim = 60                         ¥
             htim = 15                         ¥
             btim = 0"                         ¥
         -s "npmspeed = fast"                  ¥
         -z event                              ¥
         -f "adoptchk = qmgr"                  ¥
         -h 'from mqhost3'
mqtalced

# requester channel definition
mqtalccha -c CHA04                              ¥
         -y "type = requester"                 ¥
         -j 50                                 ¥
         -m "maxmsg = 8192                     ¥
             maxseg = 4096"                    ¥
         -w 999999999                          ¥
         -g "rcvbuf = 2                        ¥
             buftype = msg"                    ¥
         -i auto                               ¥
         -b "bretry = yes                      ¥
             bretrycnt = 10                    ¥
             bretryint = 60                    ¥
             bretrylg = yes                    ¥
             bretrylgcnt = 999999999           ¥
             bretrylgint = 1200                ¥
             bretrymcp = yes"                  ¥
         -o "ohostname = mqhost3               ¥
             oservname = mqhost3_sv1"          ¥
         -v "tim1 = 30                         ¥
             tim3 = 10                         ¥
             vretry = yes                      ¥
             htim = 15                         ¥
             mtim = 10"                        ¥
         -t "tretrycnt = 10                    ¥
             tretryint = 1"                    ¥
         -s "npmspeed = fast"                  ¥
         -h 'to mqhost3'
mqtalced

ホスト2のMQT通信構成定義のコーディング例

#
# MQT communication configuration definition, tcp definition
#

# tcp configuration definition
mqttcp -i iniq1                                 ¥
      -p tcp                                   ¥
      -g "rcvbuf = 3"                          ¥
      -r "servname = mqhost2_sv1"              ¥
      -v "itim = 60                            ¥
          etim = 40                            ¥
          rtim = 60"                           ¥
      -t "disk = yes                           ¥
          bufcnt = 100                         ¥
          trccnt = 3"                          ¥
      -z event

# receiver channel definition
mqtalccha -c CHA01                              ¥
         -y "type = receiver"                  ¥
         -j 50                                 ¥
         -m "maxmsg = 8192                     ¥
             maxseg = 4096"                    ¥
         -w 999999999                          ¥
         -g "rcvbuf = 2                        ¥
             buftype = msg"                    ¥
         -i auto                               ¥
         -v "tim3 = 10                         ¥
             htim = 15                         ¥
             mtim = 10"                        ¥
         -s "npmspeed = fast"                  ¥
         -f "adoptchk = qmgr"                  ¥
         -h 'from mqhost1'
mqtalced

# sender channel definition
mqtalccha -c CHA02                              ¥
         -y "type = sender"                    ¥
         -j 50                                 ¥
         -q trnq1                              ¥
         -m "maxmsg = 8192                     ¥
             maxseg = 4096"                    ¥
         -w   999999999                        ¥
         -g "sndbuf = 1                        ¥
             buftype=msg"                      ¥
         -i auto                               ¥
         -b "bretry = yes                      ¥
             bretrycnt = 10                    ¥
             bretryint = 60                    ¥
             bretrylg = yes                    ¥
             bretrylgcnt = 999999999           ¥
             bretrylgint = 1200                ¥
             bretrymcp = yes"                  ¥
         -o "ohostname = mqhost1               ¥
             oservname = mqhost1_sv1"          ¥
         -v "tim1 = 30                         ¥
             tim2 = 30                         ¥
             dtimefct = yes                    ¥
             dtim = 60                         ¥
             vretry = yes                      ¥
             htim = 15                         ¥
             btim = 0"                         ¥
         -t "tretrycnt = 10                    ¥
             tretryint = 1"                    ¥
         -s "npmspeed = fast"                  ¥
         -z event                              ¥
         -h 'to mqhost1'
mqtalced

ホスト3のMQT通信構成定義のコーディング例

#
# MQT communication configuration definition, tcp definition
#

# tcp configuration definition

mqttcp -p tcp                                   ¥
      -g "rcvbuf = 3"                          ¥
      -r "servname = mqhost3_sv1"              ¥
      -v "etim = 40                            ¥
          rtim = 60"                           ¥
      -t "disk = yes                           ¥
          bufcnt = 100                         ¥
          trccnt = 3"

# requester channel definition
mqtalccha -c CHA03                              ¥
         -y "type = requester"                 ¥
         -j 50                                 ¥
         -m "maxmsg = 8192                     ¥
           maxseg = 4096"                      ¥
         -w 999999999¥
         -g "rcvbuf = 2                        ¥
             buftype = msg"                    ¥
         -i auto                               ¥
         -b "bretry = yes                      ¥
             bretrycnt = 10                    ¥
             bretryint = 60                    ¥
             bretrylg = yes                    ¥
             bretrylgcnt = 999999999           ¥
             bretrylgint = 1200                ¥
             bretrymcp = yes"                  ¥
         -r "servname = mqhost3_sv2"           ¥
         -o "ohostname = mqhost1               ¥
             oservname = mqhost1_sv2"          ¥
         -v "tim1 = 30                         ¥
             tim3 = 10                         ¥
             vretry = yes                      ¥
             htim = 15                         ¥
             mtim = 10"                        ¥
         -t "tretrycnt = 10                    ¥
             tretryint = 1"                    ¥
         -s "npmspeed = fast"                  ¥
         -h 'to mqhost1'
mqtalced

# server channel definition
mqtalccha -c CHA04                              ¥
         -y "type = server"                    ¥
         -j 50                                 ¥
         -q trnq1                              ¥
         -m "maxmsg = 8192                     ¥
             maxseg = 4096"                    ¥
         -w   999999999                        ¥
         -g "sndbuf = 1                        ¥
             buftype=msg"                      ¥
         -i auto                               ¥
         -v "tim2 = 30                         ¥
             dtimefct = yes                    ¥
             dtim = 60                         ¥
             htim = 15                         ¥
             btim = 0"                         ¥
         -s "npmspeed = fast"                  ¥
         -z event                              ¥
         -f "adoptchk = qmgr"                  ¥
         -h 'from mqhost1'
mqtalced

メッセージを登録するアプリケーションの例

ホスト1上で動作するアプリケーションmqputは，転送キューtrnq1およびtrnq2にメッセージを登録します。転送キューtrnq1に登録されたメッセージはチャネルCHA01を経由してホスト2に送信されます。転送キューtrnq2に登録されたメッセージはチャネルCHA03を経由してホスト3に送信されます。

メッセージを登録するアプリケーションの例について，次の図に示します。

図4-5　メッセージを登録するアプリケーションの例

アプリケーションmqputのコーディング例（C言語）を次に示します。

0010 /********************************************************
0020 **  mqput_c.c
0030 **  specification
0040 **  functions = main()
0050 ********************************************************/
0060
0070 /********************************************************
0080 **  name = main()
0090 **  func = main function of UAP
0100 **  (1)start UAP(output start message)
0110 **  (2)MQCONN(Connect queue manager)
0120 **  (3)MQOPEN(Open queue)
0130 **  (4)MQPUT(Put message)
0140 **  (5)MQCLOSE(Close queue)
0150 **  (6)MQDISC(Disconnect queue manager)
0160 **  (7)finish UAP(output end message)
0170 **  arg = nothing
0180 **  return = void
0190 **  note =
0200 ********************************************************/
0210 #ifdef TP1MQ_NT
0220 #include <windows.h>
0230 #endif
0240 #include <stdio.h>
0250 #include <string.h>
0260 #include <stdlib.h>
0270 #include <cmqc.h>
0280 #include <dcrpc.h>
0290 #include <dcadm.h>
0300 #include <dctrn.h>
0310
0320 static char *Mid = "%Z% %M%(%E% %U%)-%I% " ;
0330
0340 #define PUT_DATA "******** sample put data0 ********"
0350
0360 void main()
0370 {
0380   MQCHAR48  QueueManager=" ";    /* queue manager name */
0390   MQCHAR    message_data[100];         /* message data */
0400   MQHCONN   qm_handle;            /* connection handle */
0410   MQHOBJ   que_handle[2];             /* object handle */
0420   MQLONG   comp_code;               /* completion code */
0430   MQLONG   reason;                      /* reason code */
0440   MQLONG   buffer_length;             /* buffer length */
0450   MQLONG   rcd;                         /* return code */
0460   MQOD     obj_desc0 = { MQOD_DEFAULT };
0470                                  /* message discriptor */
0480   MQOD     obj_desc1 = { MQOD_DEFAULT };
0490                                  /* message discriptor */
0500   MQMD     msg_desc = { MQMD_DEFAULT };
0510                                   /* object discriptor */
0520   MQPMO    put_options = { MQPMO_DEFAULT };
0530                                 /* put message options */
0540   int      flags = 0;
0550   int      loop_cnt;
0560   char     que_name[][49] =
0570                        {"rmtq1", "rmtq2"}; /* que name */
0580
0590   /* Start of UAP */
0600   rcd = dc_rpc_open(DCNOFLAGS);
0610   if (rcd != DC_OK) {
0620     printf(
0630       "mqput_c : Failed at dc_rpc_open. CODE = %d ¥n",
0640        rcd);
0650     goto PROG_END;
0660   }
0670
0680   /* post the completion of user process start
0690                                             processing */
0700   rcd = dc_adm_complete(DCNOFLAGS);
0710   if (rcd != DC_OK) {
0720     printf(
0730       "mqput_c : Failed at dc_adm_complete. CODE = %d ¥n",
0740       rcd);
0750     goto PROG_END;
0760   }
0770
0780   /* Connect queue manager */
0790   MQCONN(QueueManager, &qm_handle, &comp_code, &reason);
0800   if (comp_code != MQCC_OK) {
0810     printf("mqput_c : Failed at MQCONN. CODE = %ld ¥n",
0820            reason);
0830     rcd = reason;
0840     goto PROG_END;
0850   }
0860
0870   /* Open object */
0880   strcpy(obj_desc0.ObjectName, que_name[0]);
0890   MQOPEN(qm_handle, &obj_desc0, MQOO_OUTPUT,
0900          &que_handle[0], &comp_code, &reason);
0910   if (comp_code != MQCC_OK) {
0920     printf("mqput_c : Failed at MQOPEN. CODE = %ld¥n",
0930            reason);
0940     rcd = reason;
0950     goto MQ_END1;
0960   }
0970
0980   strcpy(obj_desc1.ObjectName, que_name[1]);
0990   MQOPEN(qm_handle, &obj_desc1, MQOO_OUTPUT,
1000          &que_handle[1], &comp_code, &reason);
1010   if (comp_code != MQCC_OK) {
1020     printf("mqput_c : Failed at MQOPEN. CODE = %ld¥n",
1030            reason);
1040     rcd = reason;
1050     flags = 1;
1060   }
1070
1080   loop_cnt = 0;
1090   do {
1100     /* begin transaction */
1110     rcd = dc_trn_begin();
1120     if(rcd != DC_OK) {
1130       printf(
1140        "mqput_c : Failed at dc_trn_begin. CODE = %d ¥n",
1150         rcd);
1160       goto MQ_END2;
1170     }
1180
1190     /* Put message */
1200     put_options.Options = MQPMO_SYNCPOINT;
1210     msg_desc.Persistence = MQPER_PERSISTENT;
1220     strcpy(message_data, PUT_DATA);
1230     buffer_length = strlen(message_data);
1240     MQPUT(qm_handle, que_handle[loop_cnt], &msg_desc,
1250           &put_options, buffer_length,
1260           (PMQBYTE)message_data, &comp_code, &reason);
1270     if (comp_code == MQCC_FAILED) {
1280       printf("mqput_c : Failed at MQPUT. CODE = %ld¥n",
1290              reason);
1300       rcd = dc_trn_unchained_rollback();
1310       if (rcd != DC_OK) {
1320         printf("mqput_c : Failed at dc_trn_unchained_rollback.
1330                CODE = %d ¥n",rcd);
1340       }
1350       goto MQ_END2;
1360     }
1370
1380     /* commit transaction */
1390     rcd = dc_trn_unchained_commit();
1400     if (rcd != DC_OK) {
1410       printf(
1420 mqput_c : Failed at dc_trn_unchained_commit. CODE = %d ¥n,
1430         rcd);
1440     }
1450     loop_cnt++;
1460   } while(flags == 0 && loop_cnt < 2);
1470
1480 MQ_END2:
1490   /* Close object */
1500   loop_cnt = 0;
1510   do {
1520     MQCLOSE(qm_handle, &que_handle[loop_cnt], MQCO_NONE,
1530             &comp_code, &reason);
1540     if (comp_code != MQCC_OK) {
1550       printf("mqput_c : Failed at MQCLOSE. CODE = %ld¥n",
1560              reason);
1570     }
1580     loop_cnt++;
1590   } while (flags == 0 && loop_cnt < 2);
1600
1610 MQ_END1:
1620   /* Disconnect queue manager */
1630   MQDISC(&qm_handle, &comp_code, &reason);
1640   if (comp_code != MQCC_OK) {
1650     printf("mqput_c : Failed at MQDISC. CODE = %ld ¥n",
1660            reason);
1670   }
1680   /* Termination of UAP */
1690   dc_rpc_close(DCNOFLAGS);
1700
1710 PROG_END:
1720   return;
1730 }

アプリケーションmqputのコーディング例（COBOL言語）を次に示します。

0010  *
0020  ********************************************************
0030  *        mqput_cb                                      *
0040  ********************************************************
0050  **  name = main()
0060  **  func = main function of UAP
0070  **    (1)start UAP(output start message)
0080  **    (2)MQCONN(Connect queue manager)
0090  **    (3)MQOPEN(Open queue)
0100  **    (4)MQPUT(Put message)
0110  **    (5)MQCLOSE(Close queue)
0120  **    (6)MQDISC(Disconnect queue manager)
0130  **    (7)finish UAP(output end message)
0140  ********************************************************
0150  *
0160   IDENTIFICATION DIVISION.
0170  *
0180   PROGRAM-ID. MAIN.
0190  *
0200  ********************************************************
0210  *        set data area                                 *
0220  ********************************************************
0230  *
0240   DATA DIVISION.
0250   WORKING-STORAGE SECTION.
0260   01 RPC-OP-ARG.
0270    02 REQUEST      PIC     X(8) VALUE 'OPEN    '.
0280    02 RET-VALUE    PIC     X(5) VALUE SPACE.
0290    02 FILLER       PIC     X(3).
0300    02 FLAGS        PIC     S9(9) COMP VALUE ZERO.
0310  *
0320   01 RPC-CL-ARG.
0330    02 REQUEST      PIC     X(8) VALUE 'CLOSE   '.
0340    02 RET-VALUE    PIC     X(5) VALUE SPACE.
0350    02 FILLER       PIC     X(3).
0360  *
0370   01 ADM-COMP.
0380    02 REQUEST      PIC     X(8) VALUE 'COMPLETE'.
0390    02 RET-VALUE    PIC     X(5).
0400    02 FILLER       PIC     X(3).
0410    02 DTZRADM     PIC     S9(9) COMP VALUE ZERO.
0420  *
0430   01 TRN-BG-ARG.
0440    02 REQUEST     PIC     X(8) VALUE 'BEGIN   '.
0450    02 RET-VALUE   PIC     X(5) VALUE SPACE.
0460   01 TRN-CL-ARG.
0470    02 REQUEST     PIC     X(8) VALUE 'U-COMMIT'.
0480    02 RET-VALUE   PIC     X(5) VALUE SPACE.
0490   01 TRN-RB-ARG.
0500    02 REQUEST     PIC     X(8) VALUE 'U-ROLL  '.
0510    02 RET-VALUE   PIC     X(5) VALUE SPACE.
0520 *
0530   01 MQ-OBJECT          PIC X(48) VALUE SPACE.
0540   01 MQ-MGRNAME         PIC X(48) VALUE SPACE.
0550   01 MQ-HCONN           PIC S9(9) BINARY.
0560   01 MQ-COMPCODE        PIC S9(9) BINARY.
0570   01 MQ-REASON          PIC S9(9) BINARY.
0580   01 MQ-HOBJ1           PIC S9(9) BINARY.
0590   01 MQ-HOBJ2           PIC S9(9) BINARY.
0600   01 MQ-OPTIONS         PIC S9(9) BINARY.
0610   01 MQ-BUFFLEN         PIC S9(9) BINARY.
0620   01 MQ-DATALEN         PIC S9(9) BINARY.
0630   01 MQ-PUT-BUFFER      PIC X(200) VALUE SPACE.
0640   01 MQ-FLAGS           PIC S9(5) BINARY VALUE 0.
0650  *
0660   01 PUT-DATA           PIC X(33) VALUE
0670     '******** sample put data ********'.
0680  *
0690   01 MQ-OBJECT-DESC.
0700    COPY CMQODV.
0710  *
0720   01 MQ-MESSAGE-DESCRIPTOR.
0730    COPY CMQMDV.
0740  *
0750   01 MQ-PUT-MESSAGE-OPTIONS.
0760    COPY CMQPMOV.
0770  *
0780   01 MQ-CONSTANTS.
0790    COPY CMQV SUPPRESS.
0800  *
0810   PROCEDURE DIVISION.
0820  *
0830  ********************************************************
0840  *        RPC-OPEN(Start of UAP)                        *
0850  ********************************************************
0860  *
0870  ********************************************************
0880  *        RPC-OPEN(Start of UAP)                        *
0890  ********************************************************
0900  *
0910   CALL 'CBLDCRPC' USING RPC-OP-ARG.
0920   IF RET-VALUE OF RPC-OP-ARG NOT = '00000' THEN
0930    DISPLAY 'MQPUT_CB : RPC-OPEN FAILED. CODE =  '
0940   RET-VALUE OF RPC-OP-ARG
0950    GO TO PROG-END
0960   END-IF.
0970  *
0980  ********************************************************
0990  *        ADM-COMPLETE(Report of termination of start   *
1000  *                     Processing of user server)       *
1010  ********************************************************
1020  *
1030   CALL 'CBLDCADM' USING ADM-COMP
1040   IF RET-VALUE OF ADM-COMP NOT = '00000' THEN
1050    DISPLAY 'MQPUT_CB : ADM-COMPLETE FAILED.CODE = '
1060   RET-VALUE OF ADM-COMP
1070    GO TO PROG-END
1080   END-IF.
1090  *
1100  ********************************************************
1110  *        Connect queue manager                         *
1120  ********************************************************
1130  *
1140   CALL 'MQCONN' USING MQ-MGRNAME
1150   MQ-HCONN
1160   MQ-COMPCODE
1170   MQ-REASON
1180   IF MQ-COMPCODE NOT = MQCC-OK THEN
1190    DISPLAY 'MQPUT_CB : MQCONN FAILED. REASON CODE = '
1200   MQ-REASON
1210    GO TO PROG-END
1220   END-IF.
1230  *
1240  ********************************************************
1250  *        Opening of object                             *
1260  ********************************************************
1270  *
1280   MOVE 'rmtq1'   TO MQ-OBJECT
1290   MOVE MQ-OBJECT TO MQOD-OBJECTNAME
1300  *
1310   MOVE MQOO-OUTPUT TO MQ-OPTIONS
1320  *
1330   CALL 'MQOPEN' USING MQ-HCONN
1340   MQOD
1350   MQ-OPTIONS
1360   MQ-HOBJ1
1370   MQ-COMPCODE
1380   MQ-REASON
1390   IF MQ-COMPCODE NOT = MQCC-OK THEN
1400    DISPLAY 'MQPUT_CB : MQOPEN FAILED. REASON CODE = '
1410   MQ-REASON
1420    GO TO MQ-END1
1430   END-IF
1440  *
1450   MOVE 'rmtq2'   TO MQ-OBJECT.
1460   MOVE MQ-OBJECT TO MQOD-OBJECTNAME
1470  *
1480   MOVE MQOO-OUTPUT TO MQ-OPTIONS
1490  *
1500   CALL 'MQOPEN' USING MQ-HCONN
1510   MQOD
1520   MQ-OPTIONS
1530   MQ-HOBJ2
1540   MQ-COMPCODE
1550   MQ-REASON
1560   IF MQ-COMPCODE NOT = MQCC-OK THEN
1570    DISPLAY 'MQPUT_CB : MQOPEN FAILED. REASON CODE = '
1580   MQ-REASON
1590    MOVE 1 TO MQ-FLAGS
1600   END-IF.
1610  *
1620  ********************************************************
1630  *        begin transaction                             *
1640  ********************************************************
1650  *
1660   CALL 'CBLDCTRN' USING TRN-BG-ARG
1670   IF RET-VALUE OF TRN-BG-ARG NOT = '00000' THEN
1680    DISPLAY 'MQPUT_CB : TRN-BEGIN FAILED. CODE = '
1690   RET-VALUE OF TRN-BG-ARG
1700    GO TO MQ-END2
1710   END-IF.
1720  *
1730  ********************************************************
1740  *        Definition of putting of message              *
1750  ********************************************************
1760  *
1770   MOVE MQPMO-SYNCPOINT  TO MQPMO-OPTIONS
1780   MOVE MQPER-PERSISTENT TO MQMD-PERSISTENCE
1790   MOVE 33               TO MQ-BUFFLEN
1800   MOVE PUT-DATA         TO MQ-PUT-BUFFER
1810  *
1820  ********************************************************
1830  *        Putting of message                            *
1840  ********************************************************
1850  *
1860   CALL 'MQPUT' USING MQ-HCONN
1870   MQ-HOBJ1
1880   MQMD
1890   MQPMO
1900   MQ-BUFFLEN
1910   MQ-PUT-BUFFER
1920   MQ-COMPCODE
1930   MQ-REASON
1940   IF MQ-COMPCODE NOT = MQCC-OK THEN
1950    DISPLAY 'MQPUT_CB : MQPUT FAILED. REASON CODE = '
1960   MQ-REASON
1970   CALL 'CBLDCTRN' USING TRN-RB-ARG
1980   IF RET-VALUE OF TRN-RB-ARG NOT = '00000'
1990   DISPLAY 'MQPUT_CB : TRN-ROLLBK FAILED. CODE = '
2000   RET-VALUE OF TRN-RB-ARG
2010   END-IF
2020    GO TO MQ-END2
2030   END-IF
2040   IF MQ-FLAGS = 0 THEN
2050    CALL 'MQPUT' USING MQ-HCONN
2060   MQ-HOBJ2
2070   MQMD
2080   MQPMO
2090   MQ-BUFFLEN
2100   MQ-PUT-BUFFER
2110   MQ-COMPCODE
2120   MQ-REASON
2130    IF MQ-COMPCODE NOT = MQCC-OK THEN
2140   DISPLAY 'MQPUT_CB : MQPUT FAILED. REASON CODE = '
2150    MQ-REASON
2160   CALL 'CBLDCTRN' USING TRN-RB-ARG
2170   IF RET-VALUE OF TRN-RB-ARG NOT = '00000'
2180   DISPLAY 'MQPUT_CB : TRN-ROLLBK FAILED. CODE = '
2190   RET-VALUE OF TRN-RB-ARG
2200   END-IF
2210   GO TO MQ-END2
2220    END-IF
2230   END-IF.
2240  *
2250  ********************************************************
2260  *        commit transaction                            *
2270  ********************************************************
2280  *
2290   CALL 'CBLDCTRN' USING TRN-CL-ARG
2300   IF RET-VALUE OF TRN-CL-ARG NOT = '00000' THEN
2310    DISPLAY 'MQPUT_CB : TRN-COMMIT FAILED.CODE = '
2320   RET-VALUE OF TRN-CL-ARG
2330   END-IF.
2340  *
2350  ********************************************************
2360  *        Closing of object                             *
2370  ********************************************************
2380  *
2390   MQ-END2.
2400  *
2410   MOVE MQCO-NONE TO MQ-OPTIONS
2420  *
2430   CALL 'MQCLOSE' USING MQ-HCONN
2440   MQ-HOBJ1
2450   MQ-OPTIONS
2460   MQ-COMPCODE
2470   MQ-REASON
2480   IF MQ-COMPCODE NOT = MQCC-OK THEN
2490    DISPLAY 'MQPUT_CB : MQCLOSE FAILED. REASON CODE = '
2500   MQ-REASON
2510   END-IF
2520  *
2530   IF MQ-FLAGS = 0 THEN
2540    MOVE MQCO-NONE TO MQ-OPTIONS
2550    CALL 'MQCLOSE' USING MQ-HCONN
2560     MQ-HOBJ2
2570     MQ-OPTIONS
2580     MQ-COMPCODE
2590     MQ-REASON
2600    IF MQ-COMPCODE NOT = MQCC-OK THEN
2610   DISPLAY 'MQPUT_CB : MQCLOSE FAILED. REASON CODE = '
2620    MQ-REASON
2630    END-IF
2640   END-IF.
2650  *
2660  ********************************************************
2670  *        Disconnect queue manager                      *
2680  ********************************************************
2690  *
2700   MQ-END1.
2710  *
2720   CALL 'MQDISC' USING MQ-HCONN
2730   MQ-COMPCODE
2740   MQ-REASON
2750   IF MQ-COMPCODE NOT = MQCC-OK THEN
2760    DISPLAY 'MQPUT_CB : MQDISC FAILED. REASON CODE = '
2770   MQ-REASON
2780   END-IF.
2790  *
2800   PROG-END.
2810  *
2820  ********************************************************
2830  *        RPC-CLOSE(Termination of UAP)                 *
2840  ********************************************************
2850   CALL 'CBLDCRPC' USING RPC-CL-ARG.
2860  *
2870   STOP RUN.
2880   END PROGRAM MAIN.

メッセージを取り出すアプリケーションの例

ホスト1上で動作するアプリケーションmqgetは，ローカルキューdynq1からメッセージを取り出します。ローカルキューdynq1に登録されているメッセージはチャネルCHA02を経由してホスト2から送信されたものです。

メッセージを取り出すアプリケーションの例について，次の図に示します。

図4-6　メッセージを取り出すアプリケーションの例

アプリケーションmqgetのコーディング例（C言語）を次に示します。

0010 /********************************************************
0020 **  mqget_c.c
0030 **  specification
0040 **  functions = main()
0050 ********************************************************/
0060
0070 /********************************************************
0080 **  name = main()
0090 **  func = main function of UAP
0100 **    (1)start UAP(output start message)
0110 **    (2)MQCONN(Connect queue manager)
0120 **    (3)MQOPEN(Open queue)
0130 **    (4)MQGET(Get message)
0140 **    (5)MQCLOSE(Close queue)
0150 **    (6)MQDISC(Disconnect queue manager)
0160 **    (7)finish UAP(output end message)
0170 **      arg  = nothing
0180 **      return = void
0190 **      note =
0200 ********************************************************/
0210 #ifdef TP1MQ_NT
0220 #include <windows.h>
0230 #endif
0240 #include <stdio.h>
0250 #include <string.h>
0260 #include <stdlib.h>
0270 #include <cmqc.h>
0280 #include <dcrpc.h>
0290 #include <dcadm.h>
0300 #include <dctrn.h>
0310
0320 static char *Mid = "%Z% %M%(%E% %U%)-%I% " ;
0330
0340 void main()
0350 {
0360   MQCHAR48    QueueManager=" ";  /* queue manager name */
0370   MQCHAR      message_data[100];       /* message data */
0380   MQHCONN     qm_handle;          /* connection handle */
0390   MQHOBJ      que_handle;             /* object handle */
0400   MQLONG      comp_code;            /* completion code */
0410   MQLONG      reason;                   /* reason code */
0420   MQLONG      buffer_length;          /* buffer length */
0430   MQLONG      rcd;                      /* return code */
0440   MQOD        obj_desc = { MQOD_DEFAULT };
0450                                  /* message discriptor */
0460   MQMD        msg_desc = { MQMD_DEFAULT };
0470                                   /* object discriptor */
0480   MQGMO      get_options = { MQGMO_DEFAULT };
0490                                 /* put message options */
0500
0510   /* Start of UAP */
0520   rcd = dc_rpc_open(DCNOFLAGS);
0530   if (rcd != DC_OK) {
0540     printf(
0550       "mqget_c : Failed at dc_rpc_open. CODE = %d ¥n",
0560       rcd);
0570     goto PROG_END;
0580   }
0590
0600   /* post the completion of user process start
0610      processing */
0620   rcd = dc_adm_complete(DCNOFLAGS);
0630   if (rcd != DC_OK) {
0640     printf(
0650       "mqget_c : Failed at dc_adm_complete. CODE = %d ¥n",
0660       rcd);
0670     goto PROG_END;
0680   }
0690
0700   /* Connect queue manager */
0710   MQCONN(QueueManager, &qm_handle, &comp_code, &reason);
0720   if (comp_code != MQCC_OK) {
0730     printf("mqget_c : Failed at MQCONN. CODE = %ld ¥n",
0740            reason);
0750     rcd = reason;
0760     goto PROG_END;
0770   }
0780
0790   /* Open object */
0800   strcpy(obj_desc.ObjectName, "dynq1");
0810   MQOPEN(qm_handle, &obj_desc,
0820          MQOO_BROWSE | MQOO_INPUT_SHARED, &que_handle,
0830          &comp_code, &reason);
0840   if (comp_code != MQCC_OK) {
0850     printf("mqget_c : Failed at MQOPEN. CODE = %ld¥n",
0860            reason);
0870     rcd = reason;
0880     goto MQ_END1;
0890   }
0900
0910   /* Get Message */
0920   BROWSE_LOOP:
0930   get_options.Options =
0940     MQGMO_NO_SYNCPOINT | MQGMO_BROWSE_FIRST |
0950     MQGMO_ACCEPT_TRUNCATED_MSG | MQGMO_WAIT;
0960   get_options.WaitInterval = 5000;
0970   memcpy(msg_desc.MsgId, MQMI_NONE,
0980          sizeof(msg_desc.MsgId));
0990   memcpy(msg_desc.CorrelId, MQCI_NONE,
1000          sizeof(msg_desc.CorrelId));
1010   MQGET(qm_handle, que_handle, &msg_desc, &get_options,
1020         0, (PMQBYTE)message_data, &buffer_length,
1030         &comp_code, &reason);
1040   if (comp_code == MQCC_WARNING ||
1050       comp_code == MQCC_FAILED) {
1060     if (reason == MQRC_NO_MSG_AVAILABLE) {
1070       printf("mqget_c : No message.¥n");
1080       goto BROWSE_LOOP;
1090     }
1100     else if (reason == MQRC_TRUNCATED_MSG_ACCEPTED){
1110       while (1) {
1120         /* begin transaction */
1130         rcd = dc_trn_begin();
1140         if(rcd != DC_OK) {
1150           printf(
1160            "mqget_c : Failed at dc_trn_begin. CODE = %d ¥n",
1170            rcd);
1180           goto MQ_END2;
1190         }
1200
1210         /* Get message */
1220         memcpy(msg_desc.MsgId, MQMI_NONE,
1230                sizeof(msg_desc.MsgId));
1240         memcpy(msg_desc.CorrelId, MQCI_NONE,
1250                sizeof(msg_desc.CorrelId));
1260         get_options.Options = MQGMO_SYNCPOINT;
1270         MQGET(qm_handle, que_handle, &msg_desc,
1280               &get_options, buffer_length,
1290               (PMQBYTE)message_data, &buffer_length,
1300               &comp_code, &reason);
1310         if (comp_code != MQCC_OK) {
1320           printf("mqget_c : Failed at MQGET. CODE = %ld¥n",
1330                  reason);
1340           rcd = dc_trn_unchained_rollback();
1350           if (rcd != DC_OK) {
1360             printf("mqget_c : Failed at dc_trn_unchained_rollback.
1370                    CODE = %d ¥n",rcd);
1380           }
1390           goto MQ_END2;
1400         }
1410         printf("==> %-75.75s¥n", message_data);
1420
1430         /* commit transaction */
1440         rcd = dc_trn_unchained_commit();
1450         if (rcd != DC_OK) {
1460           printf(
1470 mqget_c : Failed at dc_trn_unchained_commit. CODE = %d ¥n,
1480            rcd);
1490           goto MQ_END2;
1500         }
1510       }
1520     }
1530     printf(
1540       "mqget_c : Failed at MQGET. CODE = %ld REASON = %ld¥n",
1550       comp_code, reason);
1560   }
1570
1580 MQ_END2:
1590   /* Close object */
1600   MQCLOSE(qm_handle, &que_handle, MQCO_NONE, &comp_code,
1610           &reason);
1620   if (comp_code != MQCC_OK) {
1630     printf("mqget_c : Failed at MQCLOSE. CODE = %ld¥n",
1640            reason);
1650   }
1660
1670 MQ_END1:
1680   /* Disconnect queue manager */
1690   MQDISC(&qm_handle, &comp_code, &reason);
1700   if (comp_code != MQCC_OK) {
1710     printf("mqget_c : Failed at MQDISC. CODE = %ld ¥n",
1720            reason);
1730   }
1740
1750   /* Termination of UAP */
1760   dc_rpc_close(DCNOFLAGS);
1770
1780 PROG_END:
1790   return;
1800 }

アプリケーションmqgetのコーディング例（COBOL言語）を次に示します。

0010  *
0020  *********************************************************
0030  *        mqget_cb                                       *
0040  *********************************************************
0050  **    name = main()
0060  **    func = main function of UAP
0070  **        (1)start UAP(output start message)
0080  **        (2)MQCONN(Connect queue manager)
0090  **        (3)MQOPEN(Open queue)
0100  **        (4)MQGET(Get message)
0110  **        (5)MQCLOSE(Close queue)
0120  **        (6)MQDISC(Disconnect queue manager)
0130  **        (7)finish UAP(output end message)
0140  *********************************************************
0150  *
0160   IDENTIFICATION DIVISION.
0170  *
0180   PROGRAM-ID. MAIN.
0190  *
0200  *********************************************************
0210  *        set data area                                  *
0220  *********************************************************
0230  *
0240   DATA DIVISION.
0250   WORKING-STORAGE SECTION.
0260   01 RPC-OP-ARG.
0270   02 REQUEST      PIC     X(8) VALUE 'OPEN    '.
0280   02 RET-VALUE    PIC     X(5) VALUE SPACE.
0290   02 FILLER       PIC     X(3).
0300   02 FLAGS        PIC     S9(9) COMP VALUE ZERO.
0310  *
0320   01 RPC-CL-ARG.
0330   02 REQUEST      PIC     X(8) VALUE 'CLOSE   '.
0340   02 RET-VALUE    PIC     X(5) VALUE SPACE.
0350   02 FILLER       PIC     X(3).
0360   02 DTZRRPC      PIC     S9(9) COMP VALUE ZERO.
0370  *
0380   01 ADM-COMP.
0390   02 REQUEST      PIC     X(8) VALUE 'COMPLETE'.
0400   02 RET-VALUE    PIC     X(5).
0410   02 FILLER       PIC     X(3).
0420   02 DTZRADM     PIC     S9(9) COMP VALUE ZERO.
0430  *
0440   01 TRN-BG-ARG.
0450   02 REQUEST     PIC     X(8) VALUE 'BEGIN   '.
0460   02 RET-VALUE   PIC     X(5) VALUE SPACE.
0470  *
0480   01 TRN-CL-ARG.
0490   02 REQUEST     PIC     X(8) VALUE 'U-COMMIT'.
0500   02 RET-VALUE   PIC     X(5) VALUE SPACE.
0510   01 TRN-RB-ARG.
0520   02 REQUEST     PIC     X(8) VALUE 'U-ROLL '.
0530   02 RET-VALUE   PIC     X(5) VALUE SPACE.
0540  *
0550   01 MQ-OBJECT          PIC X(48) VALUE SPACE.
0560   01 MQ-MGRNAME         PIC X(48) VALUE SPACE.
0570   01 MQ-HCONN           PIC S9(9) BINARY.
0580   01 MQ-COMPCODE        PIC S9(9) BINARY.
0590   01 MQ-REASON          PIC S9(9) BINARY.
0600   01 MQ-HOBJ            PIC S9(9) BINARY.
0610   01 MQ-OPTIONS         PIC S9(9) BINARY.
0620   01 MQ-BUFFLEN         PIC S9(9) BINARY.
0630   01 MQ-DATALEN         PIC S9(9) BINARY.
0640   01  MQ-GET-BUFFER     PIC X(128).
0650  *
0660   01 MQ-OBJECT-DESC.
0670      COPY CMQODV.
0680  *
0690   01 MQ-MESSAGE-DESCRIPTOR.
0700      COPY CMQMDV.
0710  *
0720   01 MQ-GET-MESSAGE-OPTIONS.
0730      COPY CMQGMOV.
0740  *
0750   01 MQ-CONSTANTS.
0760      COPY CMQV SUPPRESS.
0770  *
0780   PROCEDURE DIVISION.
0790  *  
0800  *********************************************************
0810  *        RPC-OPEN(Start of UAP)                         *
0820  *********************************************************
0830  *
0840   CALL 'CBLDCRPC' USING RPC-OP-ARG.
0850       IF RET-VALUE OF RPC-OP-ARG NOT = '00000'
0860     DISPLAY 'MQGET_CB : RPC-OPEN FAILED. CODE =  '
0870       RET-VALUE OF RPC-OP-ARG
0880     GO TO PROG-END
0890       END-IF.
0900  *
0910  *********************************************************
0920  *        ADM-COMPLETE(post the completion of            *
0930  *                        user process start processing) *
0940  *********************************************************
0950  *
0960   CALL 'CBLDCADM' USING ADM-COMP.
0970       IF RET-VALUE OF ADM-COMP NOT = '00000'
0980     DISPLAY 'MQGET_CB : ADM-COMPLETE FAILED.CODE = '
0990       RET-VALUE OF ADM-COMP
1000     GO TO PROG-END
1010       END-IF.
1020  *
1030  *********************************************************
1040  *        Connect queue manager                          *
1050  *********************************************************
1060  *
1070   CALL 'MQCONN' USING MQ-MGRNAME
1080      MQ-HCONN
1090     MQ-COMPCODE
1100     MQ-REASON.
1110     IF MQ-COMPCODE NOT = MQCC-OK
1120   DISPLAY 'MQGET_CB : MQCONN FAILED. REASON CODE = '
1130     MQ-REASON
1140   GO TO PROG-END
1150     END-IF.
1160  *
1170  *********************************************************
1180  *        Opening of object                              *
1190  *********************************************************
1200  *
1210   MOVE 'dynq1'          TO MQ-OBJECT.
1220   MOVE MQ-OBJECT        TO MQOD-OBJECTNAME.
1230  *
1240   COMPUTE MQ-OPTIONS = MQOO-INPUT-SHARED +
1250      MQOO-BROWSE.
1260  *
1270   CALL 'MQOPEN' USING MQ-HCONN
1280     MQOD
1290     MQ-OPTIONS
1300     MQ-HOBJ
1310     MQ-COMPCODE
1320     MQ-REASON.
1330     IF MQ-COMPCODE NOT = MQCC-OK
1340   DISPLAY 'MQGET_CB : MQOPEN FAILED. REASON CODE = '
1350     MQ-REASON
1360   GO TO MQ-END1
1370     END-IF.
1380  *
1390  *********************************************************
1400  *        Getting of browse message                      *
1410  *********************************************************
1420  *
1430   BROWSE-LOOP.
1440   COMPUTE MQGMO-OPTIONS = MQGMO-NO-SYNCPOINT +
1450   MQGMO-BROWSE-FIRST +
1460   MQGMO-ACCEPT-TRUNCATED-MSG +
1470   MQGMO-WAIT.
1480   MOVE MQMI-NONE TO MQMD-MSGID.
1490   MOVE MQCI-NONE TO MQMD-CORRELID.
1500   MOVE 5000 TO MQGMO-WAITINTERVAL.
1510   MOVE 0    TO MQ-BUFFLEN.
1520   CALL 'MQGET' USING MQ-HCONN
1530    MQ-HOBJ
1540    MQMD
1550    MQGMO
1560    MQ-BUFFLEN
1570    MQ-GET-BUFFER
1580    MQ-DATALEN
1590    MQ-COMPCODE
1600    MQ-REASON
1610     IF (MQ-COMPCODE = MQCC-WARNING) OR
1620        (MQ-COMPCODE = MQCC-FAILED)
1630       IF MQ-REASON = MQRC-NO-MSG-AVAILABLE
1640   DISPLAY 'MQGET_CB : NO MESSAGE'
1650   GO TO BROWSE-LOOP
1660       ELSE
1670       IF MQ-REASON = MQRC-TRUNCATED-MSG-ACCEPTED
1680   PERFORM GET-MSG-PROC
1690       END-IF
1700     ELSE
1710       DISPLAY 'MQGET_CB : MQGET FAILED. CODE = ' MQ-COMPCODE
1720       DISPLAY '                         REASON CODE = '
1730               MQ-REASON
1740     END-IF.
1750  *
1760  *********************************************************
1770  *        Closing of object                              *
1780  *********************************************************
1790  *
1800   MQ-END2.
1810  *
1820   MOVE MQCO-NONE TO MQ-OPTIONS
1830  *
1840   CALL 'MQCLOSE' USING MQ-HCONN
1850      MQ-HOBJ
1860      MQ-OPTIONS
1870      MQ-COMPCODE
1880      MQ-REASON
1890     IF MQ-COMPCODE NOT = MQCC-OK THEN
1900       DISPLAY 'MQGET_CB : MQCLOSE FAILED. REASON CODE = '
1910   MQ-REASON
1920     END-IF.
1930  *
1940  *********************************************************
1950  *        Disconnect queue manager                       *
1960  *********************************************************
1970  *
1980   MQ-END1.
1990  *
2000   CALL 'MQDISC' USING MQ-HCONN
2010     MQ-COMPCODE
2020     MQ-REASON
2030     IF MQ-COMPCODE NOT = MQCC-OK
2040       DISPLAY 'MQGET_CB : MQDISC FAILED. REASON CODE = '
2050   MQ-REASON
2060     END-IF.
2070  *
2080   PROG-END.
2090  *
2100  *********************************************************
2110  *        RPC-CLOSE(Termination of UAP)                  *
2120  *********************************************************
2130   CALL 'CBLDCRPC' USING RPC-CL-ARG.
2140  *
2150  *
2160   STOP RUN.
2170   GET-MSG-PROC.
2180  *
2190  *********************************************************
2200  *        begin transaction                              *
2210  *********************************************************
2220  *
2230   CALL 'CBLDCTRN' USING TRN-BG-ARG
2240     IF RET-VALUE OF TRN-BG-ARG NOT = '00000'
2250       DISPLAY 'MQGET_CB : TRN-BEGIN FAILED. CODE = '
2260   RET-VALUE OF TRN-BG-ARG
2270       GO TO MQ-END2
2280     END-IF
2290     MOVE 0 TO MQGMO-OPTIONS
2300     MOVE MQMI-NONE                   TO MQMD-MSGID.
2310     MOVE MQCI-NONE                   TO MQMD-CORRELID.
2320     COMPUTE MQGMO-OPTIONS = MQGMO-SYNCPOINT
2330     COMPUTE MQ-BUFFLEN = MQ-DATALEN
2340     CALL 'MQGET' USING MQ-HCONN
2350      MQ-HOBJ
2360      MQMD
2370      MQGMO
2380      MQ-BUFFLEN
2390      MQ-GET-BUFFER
2400      MQ-DATALEN
2410      MQ-COMPCODE
2420      MQ-REASON
2430       IF MQ-COMPCODE NOT = MQCC-OK
2440    DISPLAY 'MQGET_CB : MQGET FAILED. CODE = '
2450      MQ-COMPCODE
2460    DISPLAY '                         REASON CODE = '
2470      MQ-REASON
2480     CALL 'CBLDCTRN' USING TRN-RB-ARG
2490     IF RET-VALUE OF TRN-RB-ARG NOT = '00000'
2500       DISPLAY 'MQGET_CB : TRN-ROLLBK FAILED. CODE = '
2510     RET-VALUE OF TRN-RB-ARG
2520     END-IF
2530    GO TO MQ-END2
2540       END-IF
2550       DISPLAY 'MQGET_CB MESSAGE : ' MQ-GET-BUFFER
2560  *
2570  *********************************************************
2580  *        commit transaction                             *
2590  *********************************************************
2600  *
2610       CALL 'CBLDCTRN' USING TRN-CL-ARG
2620   IF RET-VALUE OF TRN-CL-ARG NOT = '00000'
2630     DISPLAY 'MQGET_CB : TRN-COMMIT FAILED. CODE = '
2640       RET-VALUE OF TRN-CL-ARG
2650     GO TO MQ-END2
2660   END-IF
2670     GO TO GET-MSG-PROC.
2680  
2690   END PROGRAM MAIN.

5.　開始と終了

TP1/Message Queueの開始と終了は，OpenTP1システムの開始と終了のモードに合わせたモードになります。この章では，TP1/Message Queueの開始と終了，およびチャネル情報の引き継ぎについて説明します。

＜この章の構成＞

5.1　TP1/Message Queueの開始

5.2　TP1/Message Queueの終了

5.3　開始時のチャネル情報引き継ぎ

5.1　TP1/Message Queueの開始

OpenTP1システムが開始するのと同時に，TP1/Message QueueのMQAサーバが開始します。MQAサーバと同時にMQTサーバを開始させるためには，MQAサービス定義のmqamqtnam定義コマンドにMQTサーバ名を指定しておく必要があります。ここで指定したMQTサーバは，MQAサーバと同時に開始されます。

開始モードには，OpenTP1の開始モードに従って，正常開始および再開始があります。

＜この節の構成＞

5.1.1　正常開始

5.1.2　再開始

5.1.1　正常開始

TP1/Message Queueは，OpenTP1システムの正常開始の延長で開始します。

注意

OpenTP1がオンライン状態になるまでは，オンラインコマンドを実行したり，相手システムからのチャネルの確立要求を受け付けたりできません。

MQAサービス定義でチャネル管理情報格納ファイルが指定されている場合は，チャネル情報を引き継ぎ，その情報を基にサービスを開始します。チャネル情報の引き継ぎについては，「5.3　開始時のチャネル情報引き継ぎ」を参照してください。

前回のオンラインでキューファイル二重化構成の片系障害が発生した場合は，障害キューファイルを回復してからTP1/Message Queueを正常開始してください。障害キューファイルを回復しないでTP1/Message Queueを正常開始した場合，キューファイルの内容は保証されません。
障害キューファイルの回復については，「7.1.4　キューファイルの入出力エラー」を参照してください。

5.1.2　再開始

OpenTP1システムに障害が発生した場合，TP1/Message QueueはOpenTP1システムの再開始の延長で再開始し，障害発生直前の状態に回復されます。

OpenTP1システムが前回のオンラインの終了を引き継いで開始すると同時に開始します。メッセージ転送中またはアプリケーションがキューアクセス中に強制停止をしたあとは，キューファイルの内容が矛盾するおそれがあるため，必ず再開始してください。

開始モードによって，メッセージシーケンス番号の取り扱いが異なります。メッセージシーケンス番号については，「2.4.4　メッセージシーケンス番号でのメッセージの管理」を参照してください。

OpenTP1の強制正常開始をする場合，必ず，すべてのキューファイルを再作成してから強制正常開始してください。キューファイルの再作成をしないで，強制正常開始をした場合，不正なメッセージが残る問題が発生することがあります。

5.2　TP1/Message Queueの終了

TP1/Message Queueの終了モードには，次に示す四つがあります。

正常終了
OpenTP1システムが正常終了した場合の終了モードです。

計画停止A
OpenTP1システムが計画停止Aで終了した場合の終了モードです。

計画停止B
OpenTP1システムが計画停止Bで終了した場合の終了モードです。

強制停止
OpenTP1システムが強制停止した場合の終了モードです。

正常終了，計画停止A，および計画停止Bの場合，メッセージ転送の終了時間の監視ができます。終了処理監視は，TCP定義のmqttcp，mqttcpcs，およびmqttcpcr定義コマンドで指定します。終了処理監視でタイムアウトが発生した場合，メッセージの送受信は中断されます。このタイマを指定しない場合，受信側MCAが動作しているシステムでは，送信側MCAからアプリケーションが登録したメッセージまたはハートビートメッセージを受信するか，送信側MCAを終了しないかぎり，チャネルを終了しませんので注意してください。ハートビートメッセージについては，「2.5.7　ハートビート機能」を参照してください。

終了モード別のメッセージの取り扱いについて，次の表に示します。

表5-1　終了モード別のメッセージの取り扱い

終了モード
メッセージの取り扱い

送信時
受信時

正常終了
計画停止A
計画停止B
送信中のメッセージは送信を完了します。
転送キューのメッセージはキューに残ります。
受信中のメッセージは受信を完了します。
完了したメッセージに対するトリガメッセージは発生しません。

強制停止
メッセージの送信処理を中断します。送信中のメッセージはキューに残り，次回のチャネル開始要求で，再度メッセージの先頭から送信します。
メッセージの受信処理を中断します。受信中のメッセージは相手システムに残り，次回のチャネル開始要求で，再度メッセージの先頭から受信します。

また，開始と終了のモードによって，キューの属性およびメッセージの内容を引き継ぐかどうかが異なります。開始モード，終了モード別のキューおよびメッセージの取り扱いについて，次の表に示します。なお，メッセージ転送中またはアプリケーションがキューアクセス中に強制停止をしたあとは，キューファイルの内容が矛盾するおそれがあるため，必ず再開始してください。

表5-2　開始モード，終了モード別のキューおよびメッセージの取り扱い

前回のオン
ラインモード
開始
モード
一時的動的
キュー
永続的動的
キュー
キューの
属性※¹
永続性
メッセージ
非永続性
メッセージ

正常終了
正常開始
×
○
○
○
×

計画停止A
計画停止B
再開始
×
○
○
○
×

強制停止
システム障害による全面停止
再開始
×
○
○
○※²
×

（凡例）

○：状態を引き継ぎます。

×：状態を引き継ぎません。

注※1

MQSET命令で変更された属性値です。

注※2

メッセージの登録および取り出しをOpenTP1のトランザクションの一部として操作していた場合，トランザクション回復処理でそのトランザクションがコミットするか，ロールバックするかによってメッセージ操作が有効になるかどうかが決まります。

5.3　開始時のチャネル情報引き継ぎ

TP1/Message Queueは，正常開始時にチャネル情報を引き継ぐために，正常開始時のチャネル情報引き継ぎ機能を提供します。

正常開始時のチャネル情報引き継ぎ機能によって，TP1/Message Queueは，OpenTP1正常開始時にメッセージシーケンス番号，および最終メッセージの送達確認状態などを引き継ぐことができます。正常開始時のチャネル情報引き継ぎ機能を使用すると再開始時と同様のチャネルの運用が可能になります。引き継ぐことができるチャネルの情報を，次の表に示します。

表5-3　正常開始時に引き継ぐことができるチャネルの情報

情報
引き継ぐ内容
該当するチャネル

メッセージシーケンス番号
仕掛かりシーケンス番号，完了シーケンス番号

すべてのチャネル

送達確認情報
最終バッチの送達確認状態

センダチャネル

サーバチャネル

クラスタセンダチャネル

メッセージシーケンス番号リセット値
mqtrstchaコマンドで指定したリセット値

すべてのチャネル

リセットデータで受信したリセット値

レシーバチャネル

リクエスタチャネル

クラスタレシーバチャネル

相手システム情報
mqtaltchaコマンドに-l permオペランドを指定して変更した情報

センダチャネル

リクエスタチャネル（コーラチャネルだけ）

サーバチャネル（コーラチャネルだけ）

自動定義チャネル情報
自動定義クラスタセンダおよびクラスタレシーバインスタンス

クラスタセンダチャネル

クラスタレシーバチャネル

＜この節の構成＞

(1)　チャネル管理情報格納ファイル

(2)　チャネル情報を引き継がない条件

(3)　注意事項

(1)　チャネル管理情報格納ファイル

正常開始時のチャネル情報引き継ぎ機能を使用する場合，チャネル管理情報格納ファイルを使用します。

チャネル管理情報格納ファイルは二重化できます。A，およびB系の二つのファイルに同様の内容を格納します。情報を回復する際にはファイル破壊の有無をチェックし，有効なファイルからチャネル情報を回復します。

チャネル管理情報格納ファイルのファイル名は，MQAサービス定義のmqa_channel_inf_file_name_aオペランドおよびmqa_channel_inf_file_name_bオペランドで指定します。省略した場合は，正常開始時にチャネル情報を引き継ぎません。

チャネル管理情報格納ファイルは，通常ファイル上，またはOpenTP1ファイルシステム上に作成できます。

(2)　チャネル情報を引き継がない条件

正常開始をしても，チャネル情報を引き継がない場合があります。どのチャネル情報を引き継がないかは，条件によって異なります。

次に示す条件で正常開始した場合は，どのMQTサーバのチャネル情報も引き継ぎません。

前回のオンラインが強制停止，またはOpenTP1が異常終了し，強制正常開始したとき

チャネル管理情報格納ファイルのA，およびB両系がない，または破壊されているとき

自システムのキューマネジャ名（mqaquemgr定義コマンドの-nオプション）を変更したとき

次に示す条件で正常開始した場合は，該当するMQTサーバのチャネル情報を引き継ぎません。

MQT通信プロセス識別子（mqttenv定義コマンドの-sオプション）を変更したとき

次に示す条件で正常開始した場合は，該当するチャネルのチャネル情報を引き継ぎません。

TCP定義のmqtalccha定義コマンドに指定したチャネルタイプ（-yオプション）を変更したとき
このとき，該当するチャネル以外はチャネル情報を引き継ぎます。

正常開始時にMQT通信構成定義からチャネルを削除したとき

チャネルが所属するクラスタ名（mqtalccha定義コマンドの-aオプション）を変更したとき

SYSTEM.CLUSTER.REPOSITORY.QUEUEのメッセージを削除したとき（クラスタ自動定義チャネル情報）

次に示す条件の送信側チャネルがある場合は，正常開始時にKFCA31909-Eメッセージが出力されます。バッチサイズを変更するまでMQTサーバを開始できません。

センダチャネル，サーバチャネルまたは事前定義クラスタセンダチャネルについて，TCP定義のmqtalccha定義コマンドに指定したバッチサイズ（-jオプション）が前回のオンラインの値よりも小さく，かつメッセージ送達確認状態＝未確認のとき

自動定義クラスタセンダチャネルについて，バッチサイズが前回のオンラインの値よりも小さく，かつメッセージ送達確認状態＝未確認のとき。自動定義クラスタセンダチャネルのバッチサイズの計算式については，4章の「チャネルのネゴシエーション」を参照してください。

チャネル情報を引き継がない場合，次の表に示す属性値になります。

表5-4　チャネルを引き継がない場合の属性値および注意点

情報 | 属性値 | 注意点
メッセージシーケンス番号 | 仕掛かりシーケンス番号=0，完了シーケンス番号=0（すべてのチャネル） | 相手システムとの間でメッセージシーケンス番号が不一致になるので，メッセージシーケンス番号をリセットする必要があります。
送達確認情報 | メッセージ送達確認状態（送信側チャネル） | 送信チャネルのメッセージ送達確認状態＝未確認，かつ受信チャネル側でメッセージの受信処理が完了している場合，転送メッセージの二重送信が最大バッチサイズ分発生します。
メッセージシーケンス番号リセット値 | リセットしたメッセージシーケンス番号 | 前回のオンライン時にリセットしたメッセージシーケンス番号でメッセージ送受信をする場合は，再度リセット処理をする必要があります。
相手システム情報 | TCP定義のmqtalccha定義コマンド-oオプションで指定する属性 | 前回のオンライン時にmqtaltcha -l permコマンドによって変更した相手システム情報がある場合は，再度mqtaltchaコマンドを入力する必要があります。
自動定義チャネル情報 | 自動定義クラスタセンダおよびクラスタレシーバインスタンスなし | －

（凡例）

－：該当しません。

TCP定義に追加したチャネルはTCP定義を基に初期状態のチャネル情報で開始します。

(3)　注意事項

次に示すオンライン開始時には，ログメッセージが出力されます。

正常開始時のチャネル状態引き継ぎ機能を使用する最初のオンライン

チャネル管理情報格納ファイルを変更したあとのオンライン

チャネル管理情報格納ファイルを意図的に削除したあとのオンライン

出力されるログメッセージを次に示します。

KFCA31905-W 指定したチャネル管理情報格納ファイルは存在しません。
KFCA31903-W 前回のオンライン中のチャネル管理情報を引き継ぐ事ができません。

ログメッセージが出力されるのは，チャネル情報を引き継ぐために必要な管理状態が存在しないためです。ログメッセージを無視して，オンラインを続行してください。

MQAサービス定義に指定したチャネル管理情報格納ファイルからの情報読み込みで，ファイル内容に異常が検出された場合，ファイル内容が破壊されていると判断され，その後の書き込み処理が続行されます。このため，MQAサービス定義に誤ったファイル名を指定すると，既存のデータが失われますので注意してください。

チャネル情報引き継ぎ機能を使用しない場合，またはチャネル情報を引き継がない条件に該当する場合は，メッセージの二重受信と判断し，受信したメッセージを破棄したり，メッセージシーケンス番号不一致になったりすることがあります。正常開始後，チャネルを開始する前に，メッセージシーケンス番号のリセットを必ず行ってください。二重受信メッセージが破棄される条件については，「2.4.4(7)　二重受信メッセージの破棄」を参照してください。
チャネル情報引き継ぎ機能を使用しない場合，またはチャネル情報を引き継がない条件に該当する場合は，メッセージの二重送信が発生することがあります。その場合は，メッセージ送達未確認状態の解決を行ってからTP1/Message Queueを終了してください。メッセージ送達未確認状態の解決については，「2.4.4(6)(a)　メッセージの送達未確認状態の解決」を参照してください。

6.　システムの運用

TP1/Message Queueは，運用コマンドを入力してシステムを運用できます。この章では，TP1/Message Queueの運用コマンドの内容について説明します。

＜この章の構成＞

運用コマンドの概要

TP1/Message Queueの運用コマンド

mqaadd（キューファイルの組み込み）

mqabkup（キューファイルのバックアップ）

mqachgque（キューの属性の変更）

mqaconvert（キューファイルのコンバート）

mqadel（キューファイルの削除）

mqadelmsg（メッセージの削除）

mqadelque（キュー，メッセージの削除）

mqadf（キューファイルグループの使用状況表示）

mqafilinf（キューファイル内の情報表示）

mqafills（キューファイルの情報表示）

mqafrc（キューファイルの回復）

mqagrpobs（キューファイルグループ内のキューファイル状態変更）

mqainit（キューファイルの割り当て）

mqainq（オブジェクトの属性表示）

mqalsmsg（メッセージの表示）

mqamkque（キューの作成）

mqarcvr（ファイル二重化の回復）

mqarles（キューファイルの閉塞解除）

mqarm（キューファイルの切り離し）

mqarstr（キューファイルのリストア）

mqaset（オブジェクト属性の設定）

mqccontrn（MQCトランザクション状態の変更）

mqcls（MQCゲートウェイサーバの状態表示）

mqclstrn（MQCトランザクション状態の表示）

mqcswptrc（MQCトレースの強制スワップ）

mqrls（クラスタ情報の表示）

mqrrefresh（リポジトリ情報の再作成）

mqrremove（クラスタからの脱退）

mqrswptrc（MQRトレースの強制スワップ）

mqtaltcha（チャネル属性の変更）

mqtdmped（MQT通信プロセス情報の表示）

mqted（MQTトレースファイルの編集出力）

mqtlscha（チャネルの状態表示）

mqtpngcha（チャネルのテスト接続）

mqtrlvcha（メッセージ送達未確認の解決）

mqtrstcha（メッセージシーケンス番号のリセット）

mqtstacha（チャネルの開始）

mqtstatrc（MQTトレースのディスク出力機能の開始）

mqtstpcha（チャネルの終了）

mqtstptrc（MQTトレースのディスク出力機能の終了）

mqtswptrc（MQTトレースの強制スワップ）

運用コマンドの概要

運用コマンドの入力方法および記述形式について説明します。

入力方法

TP1/Message Queueの運用コマンドの入力方法には，シェルから入力する方法と，アプリケーションの中に組み込んで実行する方法があります。

TP1/Message Queueの運用コマンドは，すべてアプリケーションから実行できます。アプリケーションから実行するには，OpenTP1の提供するdc_adm_call_command関数を使用して実行します。したがって，コマンドがあるディレクトリを，OpenTP1のユーザサービス定義のputenv PATHであらかじめ定義しておいてください。コマンドの実行結果は，アプリケーションに返されます。返される内容は，標準出力または標準エラー出力に出力される値です。

記述形式

運用コマンドの記述形式を次に示します。

コマンド名　オプション　コマンド引数

コマンド名

コマンド名は，実行するコマンドのファイル名称です。

OpenTP1の運用コマンドは$DCDIR/bin/にありますので，PATHに$DCDIR/binを加えてください。

オプション

次に示す説明中に使用する「$」はシェルのプロンプト，「cmd」はコマンド名称です。

オプションはマイナス記号（-）で始まる文字列で，フラグ引数を取らないか，または1個のフラグ引数を取ります。
オプションの記述形式を次に示します。

-オプションフラグ
または
-オプションフラグ　フラグ引数

オプションフラグは，1文字の英数字（英大文字と英小文字は区別されます）です。
フラグ引数は，オプションフラグに対する引数です。

フラグ引数を取らないオプションフラグは，一つのマイナス記号（-）の後ろにまとめて指定できます。
（例）次に示す二つは同じ意味です。

$ cmd -a -b -c
$ cmd -abc

フラグ引数を必要とするオプションフラグのフラグ引数は，省略できません。

フラグ引数中に空白を含める場合で，シェルから入力するときには，前後を引用符（"）で囲まなければなりません。
（例）1 2を引数に持つオプションfは，次に示すとおり記述します。

$ cmd -f "1 2"

同じオプションフラグを2回以上指定すると，最後に指定したものが有効になります。
（例）

$ cmd -a 1 -a 2
     無効 有効

オプションは，コマンド引数より前に指定しなければなりません。
（例）
オプションフラグaが，フラグ引数を取らない場合，次に示すとおり入力すると，fileと-bは，コマンド引数とみなされます。

$ cmd -a file -b

二つのマイナス記号（-）は，オプションの終わりを示します。
（例）
次に示すとおり入力すると，-bはコマンド引数とみなされます。

$ cmd -a -- -b

マイナス記号（-）だけのオプションは入力できません。
（例）
次に示すとおり入力すると，-はコマンド引数とみなされます。

$ cmd -

コマンド引数

コマンド引数は，コマンド操作の対象になるものを指定します。

TP1/Message Queueの運用コマンド

TP1/Message Queueの運用コマンドについて説明します。

TP1/Message Queueの運用コマンドについて，次の表に示します。各コマンドの詳細については，アルファベット順に掲載します。

表6-1　TP1/Message Queueの運用コマンド

MQA/MQT | 機能 | コマンド名称 | 定義中組み込み | オフライン中に実行 | オンライン中に実行 | アプリケーションから実行 | アクセス権限
MQA | キューファイルの組み込み | mqaadd | × | × | ○ | ○ | －
キューファイルのバックアップ | mqabkup | × | ○ | × | ○ | －
キューの属性の変更 | mqachgque | × | ○ | × | ○ | －
キューファイルのコンバート | mqaconvert | × | ○ | × | ○ | －
キューファイルの削除 | mqadel | × | ○ | × | ○ | －
メッセージの削除 | mqadelmsg | × | × | ○ | ○ | －
キュー，メッセージの削除 | mqadelque | × | ○ | × | ○ | －
キューファイルグループの使用状況表示 | mqadf | × | × | ○ | ○ | －
キューファイル内の情報表示 | mqafilinf | × | ○ | × | ○ | －
キューファイルの情報表示 | mqafills | × | × | ○ | ○ | －
キューファイルの回復 | mqafrc | × | ○ | × | ○ | －
キューファイルグループ内のキューファイル状態変更 | mqagrpobs | × | × | ○ | ○ | －
キューファイルの割り当て | mqainit | × | ○ | × | ○ | －
オブジェクトの属性表示 | mqainq | × | × | ○ | ○ | －
メッセージの表示 | mqalsmsg | × | × | ○ | ○ | －
キューの作成 | mqamkque | × | ○ | × | ○ | －
ファイル二重化の回復 | mqarcvr | × | × | ○ | ○ | －
キューファイルの閉塞解除 | mqarles | × | × | ○ | ○ | －
キューファイルの切り離し | mqarm | × | × | ○ | ○ | －
キューファイルのリストア | mqarstr | × | ○ | × | ○ | －
オブジェクト属性の設定 | mqaset | × | × | ○ | ○ | －
MQC※¹ | MQCトランザクション状態の変更 | mqccontrn | × | × | ○ | ○ | －
MQCゲートウェイサーバの状態表示 | mqcls | × | × | ○ | ○ | －
MQCトランザクション状態の表示 | mqclstrn | × | × | ○ | ○ | －
MQCトレースの強制スワップ | mqcswptrc | × | × | ○ | ○ | －
MQR | クラスタ情報の表示 | mqrls | × | × | ○ | ○ | －
リポジトリ情報の再作成 | mqrrefresh | × | × | ○ | ○ | －
クラスタからの脱退 | mqrremove | × | × | ○ | ○ | －
MQRトレースの強制スワップ | mqrswptrc | × | × | ○ | ○ | －
MQT※² | チャネル属性の変更 | mqtaltcha | × | × | ○ | ○ | －
MQT通信プロセス情報の表示 | mqtdmped | × | ○ | ○ | ○ | －
MQTトレースファイルの編集出力 | mqted | × | ○ | ○ | ○ | －
チャネルの状態表示 | mqtlscha | × | × | ○ | ○ | －
チャネルのテスト接続 | mqtpngcha | × | × | ○ | ○ | －
メッセージ送達未確認の解決 | mqtrlvcha | × | × | ○ | ○ | －
メッセージシーケンス番号のリセット | mqtrstcha | × | × | ○ | ○ | －
チャネルの開始 | mqtstacha | × | × | ○ | ○ | －
MQTトレースのディスク出力機能の開始 | mqtstatrc | × | × | ○ | ○ | －
チャネルの終了 | mqtstpcha | × | × | ○ | ○ | －
MQTトレースのディスク出力機能の終了 | mqtstptrc | × | × | ○ | ○ | －
MQTトレースの強制スワップ | mqtswptrc | × | × | ○ | ○ | －

（凡例）

○：組み込み，または実行ができます。

×：組み込み，または実行ができません。

－：任意のユーザが実行できます。

注※1

関連製品であるTP1/Message Queue - Accessの使用時に実行するコマンドです。

注※2

MQTのコマンドは，MQT通信プロセスと同一ノードの場合だけ実行できます。

MQTのコマンドのうち，オフライン中に実行できないコマンドは，「KFCA16302-I MQTサービスを開始しました」が出力されてから「KFCA16310-I MQT通信プロセスの終了要求を受け付けました」が出力されるまでの間で実行できます。ただし，クラスタ環境ではリポジトリ管理サーバが開始されるまで「KFCA16302-I MQTサービスを開始しました」は出力されません。

mqaadd（キューファイルの組み込み）

形式

mqaadd  -g キューファイルグループ名
     〔-b バックアップキューファイル名
                       〔〔  ，バックアップキューファイル名〕…〕〕
       キューファイル名〔〔  キューファイル名〕…〕

機能

指定したキューファイルを組み込み，オンラインで使用できるようにします。

指定したキューファイルグループが登録済みの場合は，登録済みのキューファイルグループに指定したキューファイルだけを組み込みます。

このコマンドで組み込んだキューファイルの状態およびキューファイルグループに登録されているキューファイルの状態は，共に論理閉塞状態になります。

メッセージを操作する場合は，組み込んだキューファイルに対し，mqarlesコマンドを入力してください。バックアップキューファイルに対するmqarlesコマンドの入力は不要です。

オプション

●　-g キューファイルグループ名

　～＜1～31文字の識別子＞

オンラインに組み込むキューファイルグループ名を指定します。

●　-b バックアップキューファイル名

　～＜1～59文字の文字列＞

キューファイル二重化構成を行う場合，コマンド引数で指定したキューファイル名（A系ファイル名）に対するバックアップキューファイル名（B系ファイル名）を指定します。

キューファイル（A系ファイル），バックアップキューファイル（B系ファイル）は，大きさ（mqainitコマンドのオプション），キュー作成の有無（mqamkqueコマンドのコマンド引数），指定の順序，およびOpenTP1ファイルシステムのセクタ長を同一にしてください。

コマンド引数

●　キューファイル名

　～＜1～59文字の文字列＞

キューに登録したメッセージを格納するためのファイル（キューファイル）の名称を指定します。

一つのキューファイルには，複数のキューを格納できます。

キューファイルを複数指定すると，一つのキューに登録するメッセージは，複数のキューファイルに分散して格納されます。そのためそれぞれのキューファイルを物理的に別ディスクにすると，キューに複数のアプリケーションからの操作が重なった場合に，性能が良くなります。

注意事項

キューファイルを組み込む場合，次に示すどれかの数を超えるとエラーになります。

MQAサービス定義で指定するキューの最大数

キューファイルグループの最大数

キューファイルの最大数

キューファイルを複数指定した場合，複数ファイルのうち，あるキューファイルでエラーが発生すると，それまでに組み込みが完了したキューファイルは組み込み状態のままになります。

このコマンドで組み込んだキューファイルは，次に正常開始をする時に無効（組み込まれていない状態）になります。組み込んだキューファイルを次の正常開始で有効にするには，MQAサービス定義のmqaquegrp定義コマンドに追加する必要があります。ただし，再開始時には，このコマンドで組み込んだキューファイルは有効になります。

キューファイル二重化構成を行っているキューファイルグループに組み込む場合は，-bオプションを指定してください。指定しない場合はエラーになります。

キューファイル二重化構成でアクセスをしたキューファイル名（A系ファイル名）とバックアップキューファイル名（B系ファイル名）との定義をオンライン終了後に入れ替えて組み込まないでください。

1回目のオンライン定義
mqaquegrp -g GR1
         -b /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6
            /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3
2回目のオンライン定義
mqaquegrp -g GR1
         -b /dev/rdsk/MQA1,/dev/rdsk/MQA2,/dev/rdsk/MQA3
            /dev/rdsk/MQA4,/dev/rdsk/MQA5,/dev/rdsk/MQA6

上記の指定をした場合，処理は保証できません。

mqaaddコマンドで，オンライン中にキューファイルを組み込む場合，組み込むキューファイルで使用するサイズの共用メモリをMQAサービス専用共用メモリの拡張領域の空き領域から使用します。

MQAサービス定義のmqaquegrp定義コマンドで指定したキューファイル以外の新規キューファイルをオンライン中に組み込むと，組み込むキューファイルで使用するサイズ分のMQAサービス専用共用メモリの拡張領域を使用します。一度，新規キューファイルを組み込むと，mqarmコマンドでキューファイルを切り離してもMQAサービス専用共用メモリの拡張領域は予約された状態のままとなります。したがって，同一のキューファイルを組み込む場合だけMQAサービス専用共用メモリの拡張領域の予約された部分を使用できます。

mqaaddコマンドを実行した場合，mqaaddコマンドで指定したキューファイルグループに登録されているキューに対する次の動作は待ち状態となります。mqaaddコマンドの処理が終了した時点で待ち状態は解除されます。

MQPUT命令，MQPUT1命令，MQGET命令またはMQSET命令の発行

トランザクションのコミット・ロールバック

メッセージの送受信

メッセージの滞留時間の監視

mqadelmsgコマンドまたはmqalsmsgコマンドの実行

また，上記の動作中にmqaaddコマンドを実行した場合，mqaaddコマンドの処理は待ち状態になります。上記の動作が終了した時点でmqaaddコマンドの待ち状態は解除されます。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04200-E | I/Oエラーが発生しました。 | 標準エラー出力
KFCA04203-E | キューファイルグループ名が誤っています。 | 標準エラー出力
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04211-E | キューファイル名の文字数が59文字を超えています。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04217-E | 指定したキューファイルでファイルシステム作成時のシステムのバージョンが異なっています。 | 標準エラー出力
KFCA04221-E | キューファイルとキューファイルで重複したキュー名が存在します。 | 標準エラー出力
KFCA04222-E | キューファイルとキューファイルで重複したメッセージが指定されています。 | 標準エラー出力
KFCA04223-E | 動的共用メモリが足りないため，入出力バッファが確保できません。 | 標準エラー出力
KFCA04253-E | 定義ファイルとキューファイルで重複したキュー名が指定されています。 | 標準エラー出力
KFCA04294-E | 転送キュー名はローカルキュー名ではありません。 | メッセージログファイル
KFCA04295-E | イニシエーションキュー名はローカルキュー名ではありません。 | メッセージログファイル
KFCA04296-E | 転送キュー名として指定されたキューのキュー使用方法が誤っています。 | メッセージログファイル
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04313-E | キューファイルに対するアクセス権がありません。 | 標準エラー出力
KFCA04314-E | 指定したキューファイルは他のプロセスで使用中です。 | 標準エラー出力
KFCA04315-E | キューファイルのV/Rが誤っています。 | 標準エラー出力
KFCA04316-E | スペシャルファイルに対するアクセス権がありません。 | 標準エラー出力
KFCA04317-E | 指定したキューファイルはスペシャルファイル名ではありません。 | 標準エラー出力
KFCA04318-E | キューファイルを割り当てるディスクパーティションはOpenTP1ファイルシステムとして初期化されていません。 | 標準エラー出力
KFCA04319-E | キャラクタ型スペシャルファイルのオープンでシステムから上限値オーバのエラーが報告されました。 | 標準エラー出力
KFCA04321-E | 入出力用バッファ数の指定が誤っています。 | 標準エラー出力
KFCA04322-E | キューファイルグループ名の文字数が31文字を超えています。 | 標準エラー出力
KFCA04351-E | 指定したキューファイルは最大数を超えたため組み込めません。 | 標準エラー出力
KFCA04352-I | ヘルプメッセージ | 標準出力
KFCA04360-E | キュー数をオーバしました。 | 標準エラー出力
KFCA04364-I | キューファイルの組み込みが完了しました。 | メッセージログファイル
KFCA04367-E | 指定したキューファイルはキューファイルグループに組み込めません。 | 標準エラー出力
KFCA04368-E | 指定したキューファイルは存在しません。 | 標準エラー出力
KFCA04375-E | 指定されたキューファイル名はすでに存在します。 | 標準エラー出力
KFCA04387-E | 指定したファイルはキューファイルではありません。 | 標準エラー出力
KFCA26158-E | キューファイルに登録されているメッセージのキュー名が違うキューファイルに存在します。 | 標準エラー出力
KFCA26164-E | キューファイルに格納されているメッセージのキュー名がキューファイルに存在しません。 | 標準エラー出力
KFCA26169-E | 最大メッセージ長がキューマネジャ定義で指定したメッセージ長の最大値を超えています。 | 標準エラー出力
KFCA26170-E | トリガのためのメッセージ優先度の下限値がキューマネジャ定義で指定した優先度の最大値を超えています。 | 標準エラー出力
KFCA26171-E | 省略時のメッセージ優先度がキューマネジャ定義で指定した優先度の最大値を超えています。 | 標準エラー出力
KFCA26174-E | キューファイル名が重複して指定されています。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA26190-E | 動的共用メモリが足らないため，入出力バッファが確保できません。要求メモリ量=オーバフローのため表示できません。 | 標準エラー出力
KFCA31023-E | キューファイルとバックアップキューファイルの指定数が異なっています。 | 標準エラー出力
KFCA31024-E | キューファイルとバックアップキューファイルの内容が不一致です。 | 標準エラー出力
KFCA31035-E | 指定したキューファイルグループは，キューファイル二重化構成のため-bオプションを指定してください。 | 標準エラー出力
KFCA31038-I | キューファイル，およびバックアップキューファイルの組み込みが完了しました。 | メッセージログファイル
KFCA31040-E | 指定したキューファイルとバックアップキューファイルのキューファイル二重化構成が正しくありません。 | 標準エラー出力
KFCA31041-E | 指定したバックアップキューファイルはキューファイルに対するバックアップキューファイルではありません。 | 標準エラー出力
KFCA31042-E | 指定したキューファイルグループは，キューファイル二重化構成ではないため-bオプションは指定できません。 | 標準エラー出力
KFCA31050-E | モデルキューの定義に指定したキューファイル名がバックアップキューファイルのため指定できません。 | 標準エラー出力
KFCA31067-E | キューマネジャが配布リストをサポートしていないため指定したキューファイル内のキューに対して配布リストを指定できません。 | 標準エラー出力
KFCA31068-E | キューマネジャが配布リストをサポートしていないため指定したキューファイルとバックアップキューファイル内のキューに対して配布リストを指定できません。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力
KFCA31176-E | 不正なメッセージがキューファイルに存在します。 | 標準エラー出力
KFCA31177-E | MQAサービス専用共用メモリの領域が確保できません。 | メッセージログファイル
KFCA31179-E | MQAサービス専用共用メモリの拡張領域が不足したため，指定したキューファイルは組み込めません。 | メッセージログファイル
KFCA31180-E | MQAサービス専用共用メモリが参照できません。 | メッセージログファイル

mqabkup（キューファイルのバックアップ）

形式

mqabkup  キューファイル名  ファイル名

機能

指定したキューファイル（メッセージ情報管理ファイル（キューファイル名.cnt），およびメッセージファイル（キューファイル名.msg））の内容を，指定したファイル（メッセージ情報管理ファイル（ファイル名.cnt），およびメッセージファイル（ファイル名.msg））にバックアップします。

バックアップしたキューファイルの内容は，mqarstrコマンドでリストアできます。

指定したキューファイルが，オンラインで使用中の場合，mqabkupコマンドはエラーになります。

コマンド引数

●　キューファイル名

　～＜1～59文字の文字列＞

バックアップ元のキューファイルの名称を完全パス名で指定します。

●　ファイル名

　～＜パス名＞

バックアップ先のファイルの名称を指定します。

注意事項

指定したファイルがすでに存在する場合，指定したファイルのメッセージ情報管理ファイル（ファイル名.cnt），およびメッセージファイル（ファイル名.msg）に書き込み権があれば上書きします。メッセージ情報管理ファイル（ファイル名.cnt)，およびメッセージファイル（ファイル名.msg）のうち，どちらか一つでもファイルに書き込み権がない場合，mqabkupコマンドはエラーになります。

また，キューファイルをバックアップ後，キューファイルを拡張して作成しリストアしても，キューファイルは拡張されません。

mqachgque（キューの属性の変更）

形式

mqachgque  〔-e〕 〔-c クラスタ内共用クラスタ名称〕  ローカルキュー名
          モデルキューの定義名  キュー属性定義ファイル名

機能

キュー属性定義ファイルに格納されているモデルキューの属性指定定義を基にローカルキューの属性を変更します。

モデルキューの定義の形式は，mqaqueatl定義コマンドと同様の形式で指定します。詳細については，4章の「mqaqueatl（モデルキューの属性定義）」を参照してください。

キュー属性定義ファイルには，複数のモデルキューの属性指定定義を格納できます。その場合は，モデルキューの属性指定定義に指定するモデルキューの定義名をすべて異なる名称にしてください。

このコマンドでキューの属性を変更する場合，mqaqueatl定義コマンドに記載してあるオプションのうち，モデルキューの定義名と変更する属性，およびキューファイル名だけを指定してください。そのほかの属性は省略してください。なお，定義タイプは，このコマンドでは変更できません。

また，-eオプション指定時にだけ変更できる属性があります。-eオプションを指定しないで該当する属性を変更したい場合には，キューを再作成してください。

オプション

●　-e

変更不可キュー属性の変更許可を指定します。

次に示す情報を変更する場合に指定してください。

最大メッセージ登録数（-dオプション）

最大メッセージ長（-lオプション）

キューの使用方法（-uオプション）

ただし，最大メッセージ登録数（-dオプション）および最大メッセージ長（-lオプション）は元の値より小さい値に変更できません。

現在の最大メッセージ登録数（-dオプション）は，次に示すどちらかで表示される値で確認してください。

mqainqコマンドの出力の"最大メッセージ登録数"

KFCA31105-Eメッセージの"元の最大メッセージ登録数"

現在の最大メッセージ長（-lオプション）は，KFCA31106-Eメッセージの"元の最大メッセージ長"で確認してください。

●　-c クラスタ内共用クラスタ名称

　～＜1～48文字のMQ文字列＞

キューが属するクラスタの名称を指定します。

省略された場合は，キューはクラスタには属しません。

コマンド引数

●　ローカルキュー名

　～＜1～48文字のMQ文字列＞

属性を変更するキューの名称を指定します。

●　モデルキューの定義名

　～＜1～48文字のMQ文字列＞

定義ファイル内に定義されたモデルキューの定義名を指定します。

●　キュー属性定義ファイル名

　～＜パス名＞

キュー属性定義（モデルキューの属性指定定義）が格納されているファイルのパス名を指定します。

注意事項

このコマンドは，次に示すどちらかの場合にエラーになります。

指定されたキューファイルがオンラインで使用されている場合

指定されたキュー名がキューファイル上に存在しない場合

このコマンドで変更できるキューは，ローカルキューだけです。

-eオプションを指定してキューの使用方法（-uオプション）を変更したキューについて，次に示す定義を見直してください。

リモートキューのローカル定義
転送キュー名に指定したキューの使用方法はtransmission（転送キュー）にしてください。

モデルキューの属性定義
イニシエーションキュー名に指定したキューの使用方法はnormal（通常キュー）にしてください。

-cオプションを指定したキューの使用方法はnormal（通常キュー）にしてください。

mqaconvert（キューファイルのコンバート）

形式

mqaconvert 〔-b バッファサイズ〕
    コンバート元ファイル名  コンバート先ファイル名

機能

旧バージョンのmqabkupコマンドでバックアップしたキューファイル（メッセージ情報管理ファイル（キューファイル名.cnt），およびメッセージファイル（キューファイル名.msg））を，OpenTP1ファイルシステム上の最新バージョンのキューファイルへコンバートします。

このコマンドでコンバートできるのは，TP1/Message Queue 05-00以降で作成したバックアップファイルです。

オプション

●　-b バッファサイズ

　～((2048～200000000))《65536》（単位：バイト）

キューファイルのコンバート時に使用するバッファサイズ（プロセス領域サイズ）を指定します。

なお，バッファサイズがキューファイルのレコード長の2倍未満である場合，KFCA31112-Eメッセージを出力して終了します。そのためバッファサイズを指定する場合は，KFCA31112-Eメッセージのレコード長の2倍以上の値を指定してください。

コマンド引数

●　コンバート元ファイル名

　～＜パス名＞

旧バージョンのmqabkupコマンドでバックアップしたキューファイルの名称を完全パス名で指定します。

●　コンバート先ファイル名

　～＜1～59文字の文字列＞

コンバート先のファイル名称を完全パス名で指定します。ファイルは，OpenTP1ファイルシステム上のファイルを指定してください。同一ファイル名のファイルがある場合はエラーになります。事前に削除してください。

注意事項

TP1/Message Queue 05-13以前のキューファイルから，TP1/Message Queue 05-14以降のキューファイルへコンバートすると，次の場合に，キューファイルのサイズが大きくなることがあります。

コンバート元のキューファイルのメッセージ数が1で，メッセージ長が次に示す計算式よりも大きいとき

レコード長－520（単位：バイト）

コンバート先のキューファイルシステムのセクタ長が，コンバート元のキューファイルシステムのセクタ長よりも大きいとき

コンバート元のキューファイルに長さが0バイトのメッセージが多数格納されているとき

TP1/Message Queue 05-13以前のキューファイルから，TP1/Message Queue 05-14以降のキューファイルへコンバートすると，次の場合に，コンバート先のキューファイルのメッセージ数（mqainitコマンドの-mオプションに相当するキューファイルに登録できるメッセージの最大数）が多くなることがあります。

コンバート元のキューファイルに長さが0バイトのメッセージが多数格納されているとき

コンバート元のキューファイルのメッセージ長（mqainitコマンドの-sオプションに相当するキューファイルに登録できるメッセージの平均メッセージ長）がレコード長－520バイト以下で指定されていて，次に示す範囲に該当するメッセージ長のメッセージが多数格納されているとき

（レコード長－8）×N※ ～ （レコード長－8）×N※－512+1（単位：バイト）

注※

N：正の整数

なお，コンバート先のキューファイルのメッセージ数を確認するには，OpenTP1のfillsコマンドで「コンバート先のキューファイル名.msg」のファイルのレコード数を参照してください。

TP1/Message Queue 05-13以前のキューファイルから，TP1/Message Queue 05-14以降のキューファイルへコンバートすると，次の場合に，メッセージが使用するレコード数が一つ多くなります。

コンバート元のキューファイルのメッセージ長（mqainitコマンドの-sオプションに相当するキューファイルに登録できるメッセージの平均メッセージ長）がレコード長－520バイト以下で指定されていて，次に示す範囲に該当するメッセージ長のメッセージが格納されているとき

（レコード長－8）×N※ ～ （レコード長－8）×N※－512+1（単位：バイト）

注※

N：正の整数

必要に応じてMQAサービス定義のmqa_max_msg_recnumオペランドの値を変更してください。

TP1/Message Queue 06-00以前のキューファイルから，06-01以降のキューファイルへコンバートすると，メッセージ情報管理ファイルに1レコード追加されます。

mqadel（キューファイルの削除）

形式

mqadel  キューファイル名

機能

mqainitコマンドで，割り当てたキューファイル（メッセージ情報管理ファイル（キューファイル名.cnt）と，メッセージファイル（キューファイル名.msg））を削除します。

指定したメッセージファイルがオンラインで使用中の場合は，削除できません。この場合，エラーメッセージが出力されます。

コマンド引数

●　キューファイル名

　～＜1～59文字の文字列＞

削除するキューファイルの名称を完全パス名で指定します。

mqadelmsg（メッセージの削除）

形式

mqadelmsg  〔｛-a｜-n メッセージ番号｝〕  キュー名

機能

指定したキュー名に登録されているメッセージを削除します。

オプション

●　-a

指定したキュー名に登録されているすべてのメッセージを削除します。

●　-n メッセージ番号

　～＜1～2147483647＞

指定したキュー名に登録されている，指定したメッセージ番号のメッセージを削除します。

指定したキュー名に登録されているメッセージの先頭からの番号を指定します。

コマンド引数

●　キュー名

　～＜1～48文字のMQ文字列＞

削除するメッセージが登録されているキュー名を指定します。

なお，次に示す種類のキューは指定できません。

リモートキュー

モデルキュー

注意事項

-aと-nオプションが指定されていない場合，キューに登録されている先頭のメッセージを削除します。

mqalsmsgコマンドで参照した内容と同期を取ってメッセージの削除をする場合は，mqalsmsgコマンド実行後にアプリケーションからのメッセージ登録／取り出し，および転送をするとメッセージの順序が異なってしまうため，アプリケーションでのメッセージ登録／取り出し，および転送をしない状態で実行してください。

このコマンドはMQOPEN命令およびMQGET命令を使用してメッセージの削除を実行しているため，指定したキューの属性によってはコマンドが異常になるか，アプリケーションまたはチャネルが発行するMQOPEN命令およびMQGET命令が異常になる可能性があります。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA04310-E | コマンドに指定されたパラメタの値が誤っています。 | 標準エラー出力
KFCA04323-I | 登録されているメッセージを削除しました。 | メッセージログファイル
KFCA04331-E | キュー名の文字数が48文字を超えています。 | 標準エラー出力
KFCA04337-E | 指定したキュー名は存在しません。 | 標準エラー出力
KFCA04369-E | キュー名に指定できない文字を指定しています。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA26192-I | ヘルプメッセージ | 標準出力
KFCA31030-E | コマンド実行中に異常を検知しました。 | 標準エラー出力
KFCA31044-E | 指定したキュー名は指定できない種類のキューです。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqadelque（キュー，メッセージの削除）

形式

mqadelque  〔-m〕  ローカルキュー名
          キューファイル名  〔〔キューファイル名〕…〕

機能

指定したキューファイルから指定したキューを削除します。

-mオプションを指定した場合は，ローカルキュー名で指定したキューに登録されているメッセージも削除します。指定したキューファイルにキューがない場合，ローカルキュー名で指定したキューに登録されているメッセージだけを削除します。

このコマンドで削除できるキューは，定義済みキュー（mqamkqueコマンドで作成したキュー），および永続的動的キュー（MQOPEN命令でモデルキューの定義を指定し作成した永続的キュー）の2種類です。

オプション

●　-m

指定したローカルキューに登録されているメッセージを削除します。

コマンド引数

●　ローカルキュー名

　～＜1～48文字のMQ文字列＞

削除するローカルキューの名称を指定します。

●　キューファイル名

　～＜1～59文字の文字列＞

削除するキューまたはメッセージが格納されているキューファイルの名称を完全パス名で指定します。

一度オンラインで使用したキューファイルを指定する場合，同一キューファイルグループのすべてのキューファイル名を指定してください。

注意事項

このコマンドは，次に示すどれかの場合にエラーになります。

指定したキューにメッセージが登録されている場合に-mオプションを指定しないとき

指定したキューファイルがオンラインで使用されている場合

指定したキューが一時的動的キューの場合

一度オンラインで使用したキューファイルを指定する場合，同一キューファイルグループのすべてのキューファイルを指定する必要があります。指定しないキューファイルがあった場合，指定しないキューファイルに格納されているメッセージが削除されない状態になります。この状態でMQAサーバを開始すると，登録するキューがないメッセージが存在するため，開始処理は失敗します。開始処理が失敗した場合，メッセージが格納されているキューファイルを指定して，このコマンドを入力してください。登録するキューがないメッセージを削除します。

mqadf（キューファイルグループの使用状況表示）

形式

mqadf  キューファイルグループ名

機能

指定したキューファイルグループの使用状況を表示します。

使用状況を表示できるのは，キュー／メッセージの全容量，使用容量，および空き容量です。キューファイルグループの全容量とは，キューファイルグループに属するすべてのキューファイルの容量の合計です。

キューファイル二重化構成を行っているキューファイルグループを指定した場合，キューファイルグループが次に示す図の状態のときA/B'/Cファイルが対象になります。

図6-1　ファイルを切り替えた場合

コマンド引数

●　キューファイルグループ名

　～＜1～31文字の識別子＞

使用状況を表示するキューファイルグループ名を指定します。

出力形式

全キューの個数　＝　aa....aa
使用中キューの個数　＝　bb....bb
未使用キューの個数　＝　cc....cc
グループ形態　＝　dd....dd
メッセージ格納域全容量　＝　ee....eeGB + ff....ffB
メッセージ格納域使用容量　＝　gg....ggGB + hh....hhB
メッセージ格納域空き容量　＝　ii....iiGB + jj....jjB

aa....aa

キューファイルグループ内の全キューの個数

bb....bb

キューファイルグループ内の使用中キューの個数

cc....cc

キューファイルグループ内の未使用キューの個数

dd....dd

キューグループ形態

single：一重化キューファイルグループ

dual：二重化キューファイルグループ

ee....ee，ff....ff

キューファイルグループ内のメッセージ格納域全容量（単位：GB=ギガバイト，B=バイト）

gg....gg，hh....hh

キューファイルグループ内のメッセージ格納域使用容量（単位：GB=ギガバイト，B=バイト）

ii....ii，jj....jj

キューファイルグループ内のメッセージ格納域空き容量（単位：GB=ギガバイト，B=バイト）

注意事項

このコマンドは，障害閉塞状態または論理閉塞状態になったキューファイルを含むキューファイルグループでも指定できます。ただし，障害または論理閉塞になったキューファイルの容量は，このコマンドで表示する値には含まれません。

このコマンドで出力するキューファイルグループ内のメッセージ格納容量は，一つのメッセージで1レコードずつ使用する場合の容量です。MQAサービス定義のmqa_max_msg_recnumオペランドに2以上を指定し，キューファイルのレコード長※よりも大きいメッセージを格納する場合は，メッセージのレコード分割が行われるため，このコマンドで表示されたメッセージ格納域空き容量よりも実際は大きな領域が使用できます。一つのメッセージを複数レコードに分割して格納する場合，2レコード目からは，空き容量に512バイトずつ加算した領域が使用されます。

注※

レコード長は，mqainitコマンドの-sオプション（メッセージ長）と，キューファイルのセクタ長で算出した値です。レコード長の計算については，6章の「mqainit（キューファイルの割り当て）」を参照してください。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04322-E | キューファイルグループ名の文字数が31文字を超えています。 | 標準エラー出力
KFCA26100-I | ヘルプメッセージ | 標準出力
KFCA26151-E | 指定したキューファイルグループ名はありません。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqafilinf（キューファイル内の情報表示）

形式

mqafilinf  〔-q キュー名｜-x〕  キューファイル名

機能

オフラインの状態で，指定したキューファイルの管理部の情報を表示します。

指定したキューファイルがオンラインで使用中の場合，mqafilinfコマンドはエラーになります。

オプション

●　-q キュー名

　～＜1～48文字のMQ文字列＞

ローカルキュー情報を出力するキューの名称を指定します。

ローカルキュー情報には，キューの状態に関係なく，キューファイルの管理部がそのまま表示されます。このため，削除したキュー名を指定した場合でも，情報が表示されることがあります。

指定したキュー名が見つからない場合は，次に示すメッセージが出力されます。

「KFCA31172-E 指定した情報は存在しません。」

●　-x

キューファイルについてキュー名一覧を表示する場合に指定します。

削除したキューは，キュー名一覧に表示されません。表示するキュー名がない場合は，次に示すメッセージが出力されます。

「KFCA31172-E 指定した情報は存在しません。」

コマンド引数

●　キューファイル名

　～＜1～59文字の文字列＞

キューファイル情報を出力するキューファイル名を完全パス名で指定します。

出力形式

●　管理部の情報

キューファイル名　＝　aa....aa
全キューの個数　＝　bb....bb
使用中キューの個数　＝　cc....cc
未使用キューの個数　＝　dd....dd
最大メッセージ登録数　＝　ee....ee
使用中メッセージ数　＝　ff....ff
残登録可能メッセージ数　＝　gg....gg
メッセージ長　＝　hh....hh
メッセージ情報管理ファイルのレコード長　＝　ii....ii
メッセージ情報管理ファイルのレコード数　＝　jj....jj
メッセージファイルのレコード長　＝　kk....kk
メッセージファイルのレコード数　＝　ll....ll

aa....aa

指定したキューファイルの名称（1～59文字の文字列）

bb....bb

全キューの個数（10進数）

cc....cc

使用中キューの個数（10進数）

dd....dd

未使用キューの個数（10進数）

ee....ee

mqainitコマンドで指定したメッセージ数（10進数）

使用中メッセージ数と残登録可能メッセージ数を足した値ではありません。

ff....ff

使用中メッセージ数（10進数）

gg....gg

残登録可能メッセージ数（10進数）

登録されているメッセージのメッセージ長が，mqainitコマンドの-sオプションで指定した値より大きい場合，一つのメッセージで複数のレコードが使用されます。そのため，実際に登録できるメッセージ数は残登録可能メッセージ数と異なることがあります。

hh....hh

mqainitコマンドで指定したメッセージ長（10進数）

ii....ii

メッセージ情報管理ファイルのレコード長（10進数）

jj....jj

メッセージ情報管理ファイルのレコード数（10進数）

kk....kk

メッセージファイルのレコード長（10進数）

ll....ll

メッセージファイルのレコード数（10進数）

●　キュー名一覧の情報

キュー名　＝　aa....aa

aa....aa

キュー名（1～48文字のMQ文字列）

●　ローカルキュー情報

キュー名　＝　aa....aa
キュー記述子　＝　bb....bb
取り出し許可　＝　cc....cc
登録許可　＝　dd....dd
省略時のメッセージ優先度　＝　ee....ee
省略時のメッセージ永続性　＝　ff....ff
キューの有効範囲　＝　gg....gg
プロセス名　＝　hh....hh
最大メッセージ登録数　＝　ii....ii
最大メッセージ長　＝　jj....jj
共用性　＝　kk....kk
省略時の取り出しオプション　＝　ll....ll
ロールバック回数記録方法　＝　mm....mm
メッセージ配布順序　＝　nn....nn
キュー保持時間　＝　oo....oo
定義タイプ　＝　pp....pp
使用種別　＝　qq....qq
メッセージ登録数　＝　rr....rr
作成日付　＝　YYYY-MM-DD
作成時刻　＝　HH.MM.SS
イニシエーションキュー名　＝　ss....ss
トリガ制御　＝　tt....tt
トリガタイプ　＝　uu....uu
トリガのためのメッセージ優先度の下限値　＝　vv....vv
トリガのためのメッセージ登録数の下限値　＝　ww....ww
トリガデータ　＝　xx....xx
配布リスト　＝　yy....yy
デフォルトのバインディング　＝　zz....zz
クラスタ内共用クラスタ名称　＝　a1....a1

aa....aa

キュー名（1～48文字のMQ文字列）

bb....bb

キュー記述子（1～64文字の文字列）

cc....cc

取り出し許可（次に示すどちらかを表示）

INHIBITED：取り出しを禁止します。

ALLOWED：取り出しを許可します。

dd....dd

登録許可（次に示すどちらかを表示）

INHIBITED：登録を禁止します。

ALLOWED：登録を許可します。

ee....ee

省略時のメッセージ優先度（10進数）

ff....ff

省略時のメッセージ永続性（次に示すどちらかを表示）

PERSISTENT：永続メッセージにします。

NOT PERSISTENT：永続メッセージにしません。

gg....gg

キューの有効範囲（次に示す値を表示）

QUE MGR：キュー定義はキューマネジャスコープを持ちます。

hh....hh

プロセス名（1～48文字のMQ文字列）

ii....ii

最大メッセージ登録数（10進数）

jj....jj

最大メッセージ長（10進数，単位：バイト）

kk....kk

共用性（次に示すどちらかを表示）

SHAREABLE：キューを共用できます。

NOT SHAREABLE：キューを共用できません。

ll....ll

省略時の取り出しオプション（次に示すどちらかを表示）

INPUT EXCLUSIVE：排他アクセスのメッセージ取り出し用にオープンします。

INPUT SHARED：共有アクセスのメッセージ取り出し用にオープンします。

mm....mm

ロールバック回数記録方法（次に示す値を表示）

NOT HARDENED：ロールバック回数を記録しません。

nn....nn

メッセージ配布順序（次に示すどちらかを表示）

PRIORITY：優先度の順序でメッセージが返されます。

FIFO：FIFO（先入れ先出し）の順序でメッセージが返されます。

oo....oo

キュー保持時間（10進数，単位：時間）

pp....pp

定義タイプ（次に示すどれかを表示）

PREDEFINED：定義済みキュー

PERMANENT DYNAMIC：永続的動的キュー

TEMPORARY DYNAMIC：一時的動的キュー

qq....qq

使用種別（次に示すどちらかを表示）

NORMAL：通常キュー。通常のアプリケーションがメッセージを登録，または取り出しをする場合に使用します。

TRANSMISSION：転送キュー。リモートキューマネジャあてのメッセージを保持するために使用します。

rr....rr

メッセージ登録数（10進数）

YYYY-MM-DD

作成日付（年-月-日）

作成日付はシステムの設定時刻で表示されます。

HH.MM.SS

作成時刻（時.分.秒）

作成時刻はシステムの設定時刻で表示されます。

ss....ss

イニシエーションキュー名（1～48文字のMQ文字列）

tt....tt

トリガ制御（次に示すどちらかを表示）

OFF：トリガメッセージを要求しません。

ON：トリガメッセージを要求します。

uu....uu

トリガタイプ（次に示すどれかを表示）

NONE：トリガメッセージは通知されません。

FIRST：空でない場合に通知されます。

EVERY：メッセージごとに通知されます。

DEPTH：一定の格納数を超えた場合に通知されます。

vv....vv

トリガのためのメッセージ優先度の下限値（10進数）

ww....ww

トリガのためのメッセージ登録数の下限値（10進数）

xx....xx

トリガデータ（1～64文字の文字列）

yy....yy

配布リスト（次に示すどちらかを表示）

SUPPORTED：配布リストに対応しています。

NOT SUPPORTED：配布リストに対応していません。

zz....zz

デフォルトのバインディング（次に示すどちらかを表示）

FIXED：キューがオープンされたハンドルにあて先を固定します。

NOT FIXED：キューにメッセージが登録される場合，メッセージ単位にあて先を決定します。

a1....a1

クラスタ内共用クラスタ名称（1～48文字のMQ文字列）

注意事項

オンラインで使用したキューファイルにこのコマンドを実行した場合，オンラインの終了状態によっては，終了直前のメッセージ数とコマンド実行結果のメッセージ数は異なることがあります。

存在しないキューファイル名を指定した場合は，次に示すメッセージが出力されます。

「KFCA04339-E 指定されたキューファイル名は存在しません。」

mqafills（キューファイルの情報表示）

形式

mqafills  ｛-x｜-f  キューファイル名｝

機能

キューファイル名の一覧または指定したキューファイルの情報を表示します。

オプション

●　-x

MQAサービスが使用中の，すべてのキューファイル名を一覧で出力する場合に指定します。

●　-f キューファイル名

　～＜1～59文字の文字列＞

情報を表示するキューファイルの名称を完全パス名で指定します。

出力形式

●　キューファイル名の一覧

キューファイル名　＝　aa....aa
　　　　　　：

aa....aa

キューファイルの名称（1～59文字の文字列）

使用中のすべてのキューファイル名が出力されます。

●　キューファイルの情報

キューファイル名　＝　aa....aa
キューファイル状態　＝　bb....bb
キューファイルグループ名　＝　cc....cc
全キューの個数　＝　dd....dd
使用中キューの個数　＝　ee....ee
未使用キューの個数　＝　ff....ff
メッセージ長　＝　gg....gg
メッセージ情報管理ファイルのレコード長　＝　hh....hh
メッセージ情報管理ファイルのレコード数　＝　ii....ii
ファイル形態　＝　jj....jj
MQAサービス専用共用メモリ確保要求者識別子　＝　kk....kk

aa....aa

指定したキューファイルの名称（1～59文字の文字列）

bb....bb

キューファイルの状態

normal：正常状態

logical shutdown：論理閉塞状態

failure shutdown：障害閉塞状態

temporary failure shutdown (C)：一時的障害閉塞（C）状態

temporary failure shutdown (CR)：一時的障害閉塞（CR）状態

temporary failure shutdown (M)：一時的障害閉塞（M）状態

temporary failure shutdown (C/M)：一時的障害閉塞（C/M）状態

temporary failure shutdown (CR/M)：一時的障害閉塞（CR/M）状態

cc....cc

指定したキューファイルが組み込まれているキューファイルグループの名称（1～31文字の識別子）

dd....dd

全キューの個数（10進数）

ee....ee

使用中キューの個数（10進数）

ff....ff

未使用キューの個数（10進数）

gg....gg

mqainitコマンドで指定したメッセージ長（10進数）

hh....hh

メッセージ情報管理ファイルのレコード長（10進数）

ii....ii

メッセージ情報管理ファイルのレコード数（10進数）

jj....jj

ファイル形態

snormal：一重化キューファイル

dnormal：二重化キューファイル（A系キューファイル）

dbackup：二重化バックアップキューファイル（B系キューファイル）

kk....kk

MQAサービス専用共用メモリ確保要求者識別子（00からffの16進数）

dcshmls -rコマンドで表示される共用メモリプールの確保要求者種別は，MQAサービス専用共用メモリ確保要求者識別子の先頭に'm'を付加した値になります。dcshmlsコマンドの詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。

注意事項

-fオプション指定時に出力されたキューファイルの状態が論理閉塞状態または一時的障害閉塞状態の場合だけ，mqarlesコマンドが入力できます。

また，キューファイルの状態が論理閉塞状態，障害閉塞状態，または一時的障害閉塞状態の場合だけmqarmコマンドが実行可能です。

障害閉塞状態（failure shutdown）のキューファイルに対してこのコマンドを実行した場合，「全キューの個数」などの情報を正しく表示できないことがあります。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04211-E | キューファイル名の文字数が59文字を超えています。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA04339-E | 指定したキューファイル名は存在しません。 | 標準エラー出力
KFCA04357-I | ヘルプメッセージ | 標準出力
KFCA04368-E | 指定されたキューファイルは存在しません。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqafrc（キューファイルの回復）

形式

mqafrc 〔-s〕 〔-e〕 〔-g〕 〔-k キー〕 〔-m〕
        -f 回復対象キューファイル定義ファイル名
        ジャーナルファイル名〔〔  ジャーナルファイル名〕...〕

機能

指定したジャーナルファイルを入力として，キューファイルを回復します。

詳細については，「2.2.2（11）　キューファイルの回復」を参照してください。

オプション

●　-s

前回のMQA FRCを引き継ぎません。

このオプションを省略すると，前回のMQA FRCが引き継がれます。

このオプションは，jnlcolcコマンドの-fオプションに対応します。

●　-e

MQA FRC終了時に引き継ぎファイルを削除します。

このオプションを指定してMQA FRCを実行した場合，次回のMQA FRC実行時には，必ず-sオプションを指定してください。

このオプションを省略すると，引き継ぎファイルは削除されません。

このオプションは，jnlcolcコマンドの-lオプションに対応します。

●　-g

-sオプションの指定があり，かつジャーナル世代番号が1であるアンロードジャーナルファイルの指定がない場合でも，MQA FRCを実行します。その場合，-gオプションを省略すると，処理は中断されます。

-sオプションを省略した場合，このオプションを指定しても無視されます。

●　-k キー

　～＜3けたの符号なし整数＞((001～999))《001》

引き継ぎファイルの名称の一部を指定します。

OpenTP1は，このオプションの指定値に応じてカレントディレクトリに引き継ぎファイルを作成します。引き継ぎファイルの名称は"jnlcolc***"および"mqafrc***"です。"***"にはこのオプションの指定値が設定されます。

複数のMQA FRCを同時に実行する場合は，それぞれ別のキーになるように指定してください。また，damfrcコマンドまたはtamfrcコマンドをこのコマンドと同時または連続して実行する場合にもそれぞれ別のキーになるように指定してください。前回のMQA FRCを引き継ぐ場合は，前回指定したキーを指定してください。

このオプションは，jnlcolcコマンドの-cオプションに対応します。

●　-m

キューファイルの回復に必要なジャーナルレコードをファイル上に集積します。

このオプションを省略すると，メモリ上に確保されたバッファにジャーナルレコードが集積されます。

このオプションは，jnlcolcコマンドの-mオプションに対応します。

●　-f 回復対象キューファイル定義ファイル名

　～＜パス名>

回復するキューファイルを定義したファイルの名称を指定します。

回復対象キューファイル定義ファイルは次に示す形式で，テキストエディタなどで作成します。

{{ mqafilmap  回復対象キューファイル名 〔回復先キューファイル名〕}}

回復対象キューファイル名
　～＜1～59文字の文字列>
回復するキューファイルの名称を完全パス名で指定します。

回復先キューファイル名
　～＜1～59文字の文字列>
回復先キューファイル名を指定する場合は完全パス名で指定します。
このオプションを省略すると，回復対象キューファイル名に指定したファイルが回復先になります。

コマンド引数

●　ジャーナルファイル名

　～＜パス名＞

MQA FRC実行時に使用するアンロードジャーナルファイルの名称を指定します。複数世代のジャーナルを処理する場合は，複数のジャーナルファイルを指定します。

注意事項

mqafrcコマンドの指定が誤っている場合，メッセージIDが付いていないメッセージ，およびmqafrcコマンドの使用方法が出力されることがあります。

mqafrcコマンドは，jnlcolcコマンドを内部で使用しています。そのため，jnlcolcコマンドについてのエラーメッセージが出力されることがあります。対策については，マニュアル「OpenTP1 メッセージ」を参照してください。

mqafrcコマンドはカレントディレクトリにテンポラリファイルを作成することがあります。そのため，カレントディレクトリには書き込み権を設定してください。テンポラリファイルのディスク容量の計算式を次に示します。

最大  4096＋aa....aa　（単位：バイト）

aa....aa：mqafrcコマンド実行時に指定したアンロードジャーナルファイルの総ディスク容量

なお，アンロードジャーナルファイルの総ディスク容量は，UNIXのlsコマンドなどで参照できます。コマンド引数に複数のアンロードジャーナルファイルを指定した場合は，その合計になります。

-sオプションを指定しないでMQA FRCを実行する場合，つまり2回目以降にmqafrcコマンドを実行する場合の回復対象キューファイル定義は，前回にMQA FRCを実行した時の内容と同じにする必要があります。2回目以降のmqafrcコマンドを実行する時に，回復対象キューファイル定義ファイルを変更した場合の結果は保証できません。

複数キューファイルで構成されたキューファイルグループを使用する場合は，必ずすべてのキューファイルの回復を実行してください。

キューファイルの障害要因を調査し，キューファイル格納媒体損傷の場合は，MQAサービス定義のmqa_jnl_confオペランドにYを指定して取得したアンロードジャーナルファイルを使用してMQA FRCを実行してください。mqa_jnl_confオペランドにNを指定して取得したアンロードジャーナルファイルを使用してMQA FRCを実行すると，キューファイルの情報が不正になります。

キューファイルの障害要因を調査し，キューファイル格納媒体損傷以外の場合は，MQAサービス定義のmqa_jnl_confオペランドにYまたはNを指定して取得したアンロードジャーナルファイルを使用してMQA FRCを実行できます。

mqafrcコマンドで指定するアンロードジャーナルファイルのバージョンと，mqafrcコマンドを実行するTP1/Message Queueのバージョンは同じである必要があります。

キューファイルグループが複数のキューファイルで構成されている場合，mqarmコマンドで切り離す前に，mqagrpobsコマンドを実行する必要があります。

mqafrcコマンドで指定するアンロードジャーナルファイルは，永続的動的キューにアクセスしたことによって取得されたジャーナルレコードを含んだものを使用しないでください。永続的動的キューにアクセスしたことによって取得されたジャーナルレコードを含んだアンロードジャーナルファイルを使用した場合，mqafrcコマンドによって回復されたキューファイルがオンラインで使用できなくなる場合があります。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA31095-E | コマンド引数が不正です。 | 標準出力
KFCA31096-E | 回復処理中に内部不一致が発生しました。 | 標準出力
KFCA31097-I | ヘルプメッセージ | 標準出力

mqagrpobs（キューファイルグループ内のキューファイル状態変更）

形式

mqagrpobs 〔-r〕
         ｛-g キューファイルグループ名 ｜ -f キューファイル名｝

機能

キューファイルグループ内のすべてのキューファイルを障害閉塞状態に変更するために，キューファイルグループ名，または障害閉塞状態のキューファイル名を指定します。

キューファイル二重化構成を行っている，キューファイルグループ名または障害閉塞状態のキューファイル名を指定する場合は，組み込んだキューファイル（A系ファイル）およびバックアップキューファイル（B系ファイル）の両方のキューファイルを障害閉塞状態にする必要があります。

また，すでに障害閉塞状態のキューファイルがグループ内にある場合は，そのキューファイルについては状態を変更しません。

オプション

●　-r

キューファイルの状態をチェックしないで，強制的にキューファイルグループ内のすべてのキューファイルを障害閉塞状態に変更します。

●　-g キューファイルグループ名

　～＜1～31文字の識別子＞

キューファイルグループ名を指定します。キューファイルグループ内のすべてのキューファイルが障害閉塞状態になります。ただし，キューファイルグループ内には障害閉塞状態のキューファイルがなければいけません。障害閉塞状態のキューファイルがない場合，コマンドはエラーになります。

●　-f キューファイル名

　～＜1～59文字の文字列＞

障害閉塞状態のキューファイル名を指定します。同じキューファイルグループ内のすべてのキューファイルが障害閉塞状態になります。指定したキューファイルが障害閉塞状態でない場合，コマンドはエラーになります。

注意事項

指定したキューファイルグループ名，または指定したキューファイル名が属するキューファイルグループ内のキューファイルに対するアクセスを停止してからこのコマンドを入力してください。キューファイルグループ内のキューファイルに対してアクセス中にこのコマンドを実行すると，キューファイル障害が発生した状態と同じ状態になり，アクセス中のアプリケーションはエラーになります。

キューファイルグループ内に論理閉塞状態のキューファイルがある場合，そのキューファイルの状態を障害閉塞状態に変更します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04211-E | キューファイル名の文字数が59文字を超えています。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA04322-E | キューファイルグループ名の文字数が31文字を超えています。 | 標準エラー出力
KFCA04325-E | 指定したキューファイルは，二重化構成のため両系閉塞時以外は実行できません。 | 標準エラー出力
KFCA04339-E | 指定されたキューファイル名は存在しません。 | 標準エラー出力
KFCA26151-E | 指定したキューファイルグループ名はありません。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31113-I | ヘルプメッセージ | 標準出力
KFCA31114-I | キューファイルグループ内のキューファイルを障害閉塞しました。 | メッセージログファイル
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31116-E | 指定したキューファイルは障害閉塞ではありません。 | 標準エラー出力
KFCA31117-E | 指定したキューファイルグループ名に障害閉塞のキューファイルがありません。 | 標準エラー出力
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31121-E | 指定したキューファイルグループは，二重化構成のため両系障害閉塞時以外は実行できません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqainit（キューファイルの割り当て）

形式

mqainit  〔-r〕  〔-q キュー数〕〔-m メッセージ数〕
        〔-s メッセージ長〕  キューファイル名

機能

キューに登録したメッセージを格納するためのファイル（キューファイル）を割り当てます。

このコマンドで割り当てるキューファイルは，メッセージの管理情報を格納するメッセージ情報管理ファイルとメッセージ本体を格納するメッセージファイルの二つで構成されます。それぞれキューファイル名.cntとキューファイル名.msgの名前が付けられ，一つのOpenTP1ファイルシステム上に作成されます。

作成されるキューファイルのファイルの構造について，次の図に示します。

図6-2　キューファイルの構造

オプション

●　-r

指定したファイルがすでにあり，再びキューファイルを割り当てる場合に指定します。このオプションの指定を省略すると，指定したファイルがすでにあった場合にエラーになります。

また，このオプションを指定する場合，既存のキューファイルは削除されません。そのため，新しいキューファイルを作成するだけの空き容量が確保されていることを確認してください。空き容量がない場合，KFCA04384-Eメッセージが出力されます。

●　-q キュー数

　～((1～20480))《32》

指定したキューファイルに登録するキューの最大数を指定します。

キュー数に20480を指定した場合，メッセージ数とメッセージ長は，それぞれ最大値を指定できません。指定値は，-sオプションの説明で示されている計算式で算出してください。

キュー数には，一時的および永続的なキューを合わせた数を指定してください。

●　-m メッセージ数

　～((1～1048560))《4096》

指定したキューファイルに登録するメッセージの最大数を指定します。

メッセージ数には，非永続性および永続性のメッセージを合わせた数を指定してください。

登録するメッセージのメッセージ長が-sオプションで指定した値より大きい場合，実際に登録できるメッセージ数は，このオプションで指定した値より少なくなります。

●　-s メッセージ長

　～((1～128000000))《100000》（単位：バイト）

指定したキューファイルに登録するメッセージの平均メッセージ長を指定します。この場合，指定した値を基にキューファイルのレコード長が決定されます。

レコード長の計算式を次に示します。

このオプションで指定した値より長いメッセージの登録もできます。ただし，その場合一つのメッセージで複数のレコードを使用するため，-mオプションで指定したメッセージ数より，実際に登録できるメッセージ数は少なくなります。最大で幾つのレコードを使用するかは，MQAサービス定義のmqa_max_msg_recnumオペランドで指定できます。

MQAサービスでは，1レコードに複数のメッセージは格納しないため，メッセージ長が極端に異なるメッセージを一つのキューに格納すると媒体効率が低下します。このような場合，メッセージを登録するキューを分け，キューを格納するキューファイルグループも分けると媒体効率が向上します。

また，転送キューを作成するキューファイルを割り当てるときには，付加情報（MQXQH構造体）の長さを考慮した値を指定してください。

コマンド引数

●　キューファイル名

　～＜1～59文字の文字列＞

キューファイルとして割り当てるファイル名を完全パス名で指定します。

キューファイル名に指定している最後の"/"以降の文字列長を10文字以内としてください。

キューファイルパス名およびキューファイル名にスペースを指定しないでください。また，ファイルパス名の"/"個所に"/"を追加したキューファイルパス名を指定しないでください。指定した場合，動作は保証されません。

注意事項

mqainitコマンドを入力する前にOpenTP1ファイルシステムの初期設定をしていない場合は，初期設定をしてください。

オンライン中に複数のキューファイルを一つのキューファイルグループに対応づける場合，キューファイル名で指定するOpenTP1ファイルシステムを物理的に別ディスクにすることをお勧めします。別ディスクにすると，一つのキューに複数のアプリケーションからの操作が重なった場合に，性能が良くなります。

キューファイル名.cntまたはキューファイル名.msgの片方だけを削除した場合は，処理を保証しません。

-m，-sオプションで指定した値を基に，TP1/Message Queueに必要な共用メモリを，MQAサービス専用共用メモリに確保します。したがって，-m，-sオプションでは，MQAサービス専用の共用メモリの算出式を基に値を指定してください。

mqainitコマンドを入力する前に，キャラクタ型スペシャルファイルまたはUNIXファイルのアクセス権は，所有者およびグループにリード・ライト権を付与してください。また，OpenTP1ファイルシステムのアクセス権はユーザ用に設定してください。アクセス権を正しく設定していない場合，KFCA31184-Eメッセージが出力されてOpenTP1の起動に失敗します。

キューファイルの最大格納容量は，メッセージ情報管理ファイルとメッセージファイルの合計で，2ギガバイト以内です。また，OpenTP1ファイルシステムでも2ギガバイト以内で使用してください。最大格納容量を超えてキューファイルを作成した場合，動作は保証しません。

mqainq（オブジェクトの属性表示）

形式

mqainq  ｛｛-m｜-x｝  キューマネジャ名  ｜
         ｛-q｜-p｝  キューマネジャ名  オブジェクト名  ｝

機能

キューマネジャの情報，ローカルキューの情報，モデルキューの情報，リモートキューのローカル定義の情報，別名キューの情報，キュー名の一覧，およびプロセス定義の情報を表示します。

オプション

●　-m

キューマネジャの情報を出力する場合に指定します。

●　-x

キューの名称を一覧で出力する場合に指定します。

●　-q

ローカルキューの情報，モデルキューの情報，リモートキューのローカル定義の情報，または別名キューの情報を出力する場合に指定します。

●　-p

プロセス定義の情報を出力する場合に指定します。

コマンド引数

●　キューマネジャ名

　～＜1～48文字のMQ文字列＞

出力する情報のキューマネジャの名称を指定します。

●　オブジェクト名

　～＜1～48文字のMQ文字列＞

出力する情報のオブジェクトのローカル名を指定します。

-qまたは-pオプションを指定した場合に指定します。

出力形式

●　キューマネジャの属性

キューマネジャ名　＝　aa....aa
キューマネジャ記述子　＝　bb....bb
プラットフォーム　＝　cc....cc
トリガ間隔　＝　dd....dd
デッドレターキュー名　＝　ee....ee
最大メッセージ優先度　＝　ff....ff
省略時の転送キュー名　＝　gg....gg
文字セット識別子　＝　hh....hh
最大ハンドル数　＝　ii....ii
トランザクション完了待ち最大メッセージ数　＝　jj....jj
最大メッセージ長　＝　kk....kk
トランザクション有効性　＝　ll....ll
配布リスト　＝　mm....mm

aa....aa

キューマネジャ名（1～48文字のMQ文字列）

bb....bb

キューマネジャ記述子（1～64文字の文字列）

cc....cc

プラットフォーム（10進数）"OpenTP1"を表示

dd....dd

トリガ間隔（0～999999999の10進数）

ee....ee

デッドレターキュー名（1～48文字のMQ文字列）

ff....ff

最大メッセージ優先度（10進数）

gg....gg

省略時の転送キュー名（1～48文字のMQ文字列）

hh....hh

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

ii....ii

最大ハンドル数（10進数）

jj....jj

TP1/Message Queueでは，この属性は使用されません。

0が表示されます。

kk....kk

最大メッセージ長（10進数，単位：バイト）

ll....ll

トランザクション有効性（次に示すどちらかを表示）

AVAILABLE：トランザクションの同期点処理を利用できます。

NOT AVAILABLE：トランザクションの同期点処理を利用できません。

mm....mm

配布リスト（次に示すどちらかを表示）

SUPPORTED：配布リストに対応しています。

NOT SUPPORTED：配布リストに対応していません。

●　ローカルキューおよびモデルキューの属性

キュー名　＝　aa....aa
キュータイプ　＝　bb....bb
キュー記述子　＝　cc....cc
取り出し許可　＝　dd....dd
登録許可　＝　ee....ee
省略時のメッセージ優先度　＝　ff....ff
省略時のメッセージ永続性　＝　gg....gg
キューの有効範囲　＝　hh....hh
プロセス名　＝　ii....ii
最大メッセージ登録数　＝　jj....jj
最大メッセージ長　＝　kk....kk
共用性　＝　ll....ll
省略時の取り出しオプション　＝　mm....mm
ロールバック回数記録方法　＝　nn....nn
メッセージ配布順序　＝　oo....oo
キュー保持時間　＝　pp....pp
定義タイプ　＝　qq....qq
使用種別　＝　rr....rr
入力オープン数　＝　ss....ss
出力オープン数　＝　tt....tt
メッセージ登録数　＝　uu....uu
作成日付　＝　YYYY-MM-DD
作成時刻　＝　HH.MM.SS
イニシエーションキュー名　＝　vv....vv
トリガ制御　＝　ww....ww
トリガタイプ　＝　xx....xx
トリガのためのメッセージ優先度の下限値　＝　yy....yy
トリガのためのメッセージ登録数の下限値　＝　zz....zz
トリガデータ　＝　a1....a1
キューファイルグループ名　＝　b1....b1
キューファイル名　＝　c1....c1
配布リスト　＝　d1....d1
デフォルトのバインディング　＝　e1....e1
クラスタ内共用クラスタ名称　＝　f1....f1

aa....aa

キュー名（1～48文字のMQ文字列）

bb....bb

キュータイプ（次に示すどちらかを表示）

LOCAL QUE：ローカルキュー

MODEL QUE：モデルキュー定義

cc....cc

キュー記述子（1～64文字の文字列）

dd....dd

取り出し許可（次に示すどちらかを表示）

INHIBITED：取り出しを禁止します。

ALLOWED：取り出しを許可します。

ee....ee

登録許可（次に示すどちらかを表示）

INHIBITED：登録を禁止します。

ALLOWED：登録を許可します。

ff....ff

省略時のメッセージ優先度（10進数）

gg....gg

省略時のメッセージ永続性（次に示すどちらかを表示）

PERSISTENT：永続メッセージにします。

NOT PERSISTENT：永続メッセージにしません。

hh....hh

キューの有効範囲（次に示す値を表示）

QUE MGR：キュー定義はキューマネジャスコープを持ちます。

ii....ii

プロセス名（1～48文字のMQ文字列）

jj....jj

最大メッセージ登録数（10進数）

kk....kk

最大メッセージ長（10進数，単位：バイト）

ll....ll

共用性（次に示すどちらかを表示）

SHAREABLE：キューを共用できます。

NOT SHAREABLE：キューを共用できません。

mm....mm

省略時の取り出しオプション（次に示すどちらかを表示）

INPUT EXCLUSIVE：排他アクセスのメッセージ取り出し用にオープンします。

INPUT SHARED：共有アクセスのメッセージ取り出し用にオープンします。

nn....nn

ロールバック回数記録方法（次に示す値を表示）

NOT HARDENED：ロールバック回数を記録しません。

oo....oo

メッセージ配布順序（次に示すどちらかを表示）

PRIORITY：優先度の順序でメッセージが返されます。

FIFO：FIFO（先入れ先出し）の順序でメッセージが返されます。

pp....pp

キュー保持時間（10進数）

qq....qq

定義タイプ（次に示すどれかを表示）

PREDEFINED：定義済みキュー

PERMANENT DYNAMIC：永続的動的キュー

TEMPORARY DYNAMIC：一時的動的キュー

rr....rr

使用種別（次に示すどちらかを表示）

NORMAL：通常キュー。通常のアプリケーションがメッセージを登録，または取り出しをする場合に使用します。

TRANSMISSION：転送キュー。リモートキューマネジャあてのメッセージを保持するために使用します。

ss....ss

入力オープン数（10進数）

tt....tt

出力オープン数（10進数）

uu....uu

メッセージ登録数（10進数）

YYYY-MM-DD

作成日付（年-月-日）

作成日付はシステムの設定時刻で表示されます。

HH.MM.SS

作成時刻（時.分.秒）

作成時刻はシステムの設定時刻で表示されます。

vv....vv

イニシエーションキュー名（1～48文字のMQ文字列）

ww....ww

トリガ制御（次に示すどちらかを表示）

OFF：トリガメッセージを要求しません。

ON：トリガメッセージを要求します。

xx....xx

トリガタイプ（次に示すどれかを表示）

NONE：トリガメッセージは通知されません。

FIRST：空でない場合に通知されます。

EVERY：メッセージごとに通知されます。

DEPTH：一定の格納数を超えた場合に通知されます。

yy....yy

トリガのためのメッセージ優先度の下限値（10進数）

zz....zz

トリガのためのメッセージ登録数の下限値（10進数）

a1....a1

トリガデータ（1～64文字の文字列）

b1....b1

キューファイルグループ名（1～31文字の識別子）

c1....c1

キューファイル名（1～59文字の文字列）

d1....d1

配布リスト（次に示すどちらかを表示）

SUPPORTED：配布リストに対応しています。

NOT SUPPORTED：配布リストに対応していません。

e1....e1

デフォルトのバインディング（次に示すどちらかを表示）

FIXED：キューがオープンされたハンドルにあて先を固定します。

NOT FIXED：キューにメッセージが登録される場合，メッセージ単位にあて先を決定します。

f1....f1

クラスタ内共用クラスタ名称（1～48文字のMQ文字列）

●　リモートキューのローカル定義の属性

キュー名　＝　aa....aa
キュータイプ　＝　bb....bb
キュー記述子　＝　cc....cc
登録許可　＝　dd....dd
省略時のメッセージ優先度　＝　ee....ee
省略時のメッセージ永続性　＝　ff....ff
リモートキュー名　＝　gg....gg
リモートキューマネジャ名　＝　hh....hh
転送キュー名　＝　ii....ii
デフォルトのバインディング　＝　jj....jj
クラスタ内共用クラスタ名称　＝　kk....kk

aa....aa

キュー名（1～48文字のMQ文字列）

bb....bb

キュータイプ

REMOTE QUE：リモートキューのローカル定義

cc....cc

注釈記述用のフィールド（1～64文字の文字列）

dd....dd

キューに対する登録許可（次に示すどちらかを表示）

INHIBITED：登録を禁止します。

ALLOWED：登録を許可します。

ee....ee

省略時のメッセージ優先度（10進数）

ff....ff

省略時のメッセージ永続性（次に示すどちらかを表示）

PERSISTENT：永続メッセージにします。

NOT PERSISTENT：永続メッセージにしません。

gg....gg

リモートキュー名（1～48文字のMQ文字列）

hh....hh

リモートキューマネジャ名（1～48文字のMQ文字列）

ii....ii

転送キュー名（1～48文字のMQ文字列）

jj....jj

デフォルトのバインディング（次に示すどちらかを表示）

FIXED：キューがオープンされたハンドルにあて先を固定します。

NOT FIXED：キューにメッセージが登録される場合，メッセージ単位にあて先を決定します。

kk....kk

クラスタ内共用クラスタ名称（1～48文字のMQ文字列）

●　別名キューの属性

キュー名　＝　aa....aa
キュータイプ　＝　bb....bb
キュー記述子　＝　cc....cc
取り出し許可　＝　dd....dd
登録許可　＝　ee....ee
省略時のメッセージ優先度　＝　ff....ff
省略時のメッセージ永続性　＝　gg....gg
ベースキュー名　＝　hh....hh
デフォルトのバインディング　＝　ii....ii
クラスタ内共用クラスタ名称　＝　jj....jj

aa....aa

キュー名（1～48文字のMQ文字列）

bb....bb

キュータイプ

ALIAS QUE：別名キュー定義

cc....cc

注釈記述用のフィールド（1～64文字の文字列）

dd....dd

キューに対する取り出し許可（次に示すどちらかを表示）

INHIBITED：取り出しを禁止します。

ALLOWED：取り出しを許可します。

ee....ee

キューに対する登録許可（次に示すどちらかを表示）

INHIBITED：登録を禁止します。

ALLOWED：登録を許可します。

ff....ff

省略時のメッセージ優先度（10進数）

gg....gg

省略時のメッセージ永続性（次に示すどちらかを表示）

PERSISTENT：永続メッセージにします。

NOT PERSISTENT：永続メッセージにしません。

hh....hh

ベースキュー名（1～48文字のMQ文字列）

ii....ii

デフォルトのバインディング（次に示すどちらかを表示）

FIXED：キューがオープンされたハンドルにあて先を固定します。

NOT FIXED：キューにメッセージが登録される場合，メッセージ単位にあて先を決定します。

jj....jj

クラスタ内共用クラスタ名称（1～48文字のMQ文字列）

●　キュー名一覧の情報

キュー名　＝　aa....aa

aa....aa

キュー名（1～48文字のMQ文字列）

●　プロセス定義の属性

プロセス名　＝　aa....aa
プロセス記述子　＝　bb....bb
アプリケーションタイプ　＝　cc....cc
アプリケーション記述子　＝　dd....dd
環境データ　＝　ee....ee
ユーザデータ　＝　ff....ff

aa....aa

プロセス名（1～48文字のMQ文字列）

bb....bb

プロセス記述子（1～64文字の文字列）

cc....cc

アプリケーションタイプ

OpenTP1：OpenTP1アプリケーション

ユーザ定義のアプリケーションタイプ最低値～ユーザ定義のアプリケーションタイプ最高値

dd....dd

アプリケーション記述子（1～256文字の文字列）

ee....ee

環境データ（1～128文字の文字列）

ff....ff

ユーザデータ（1～128文字の文字列）

注意事項

-qオプションで指定したオブジェクトが次に示すどれかの場合にエラーになります。

ローカルキューを指定した際に，格納されているキューファイルが閉塞状態の場合

モデルキューを指定した際に，MQAサービス定義のmqaqueatl定義コマンドで指定したキューファイルにキューを作成できない場合

リモートキューのローカル定義を指定した際に，指定されたオブジェクト名がキューマネジャの別名として使用されている場合

-xオプションを指定した場合，次に示すキュー名は出力されません。

MQAサービス定義にモデルキューが定義されていないキュー名

MQAサービス定義のmqaqueatl定義コマンドで指定されたキューファイルに作成できるキュー数が0件のキュー名

ローカルキューを格納しているキューファイルが閉塞状態のローカルキュー名

MQAサービス定義のmqaqueatl定義コマンドで指定されたキューファイルにキューを作成できないモデルキュー名

キューマネジャの別名定義として使用されているリモートキューのローカル定義名

MQAサービス定義のmqaqueatl定義コマンドで指定されたキューファイル名がないモデルキュー名

MQAサービス定義のmqaqueatl定義コマンドで指定されたキューファイル名がオンライン中のキューファイルグループにないモデルキュー名

MQAサービス定義のmqaalsque定義コマンドで指定されたBaseQName属性が，ローカルに定義されたキューの名前でない別名キュー名

MQAサービス定義のmqaremque定義コマンドで指定されたXmitQName属性が空白ではなく，MQUS_TRANSMISSIONのUsage属性を持っていないキューが指定されているリモートキューのローカル定義名

MQAサービス定義のmqaremque定義コマンドで指定されたXmitQName属性が空白で，RemoteQMgrName属性に，MQUS_TRANSMISSIONのUsage属性を持っていないキューが指定されているリモートキューのローカル定義名

MQAサービス定義のmqaremque定義コマンドで指定されたXmitQName属性が空白ではなく，ローカルに定義されたキューの名前でもないリモートキューのローカル定義名

MQAサービス定義のmqaremque定義コマンドで指定されたXmitQName属性が空白で，あて先キューマネジャと同じ名前で定義されている転送キューがない場合に，キューマネジャ定義のDefXmitQName属性によって指定されているキューが，MQUS_TRANSMISSIONのUsage属性を持っていないリモートキューのローカル定義名

MQAサービス定義のmqaremque定義コマンドで指定されたXmitQName属性が空白で，あて先キューマネジャと同じ名前で定義されている転送キューがない場合に，キューマネジャ定義のDefXmitQName属性によって指定されている名称が，ローカルに定義されたキューの名前でないリモートキューのローカル定義名

MQAサービス定義のmqaremque定義コマンドで指定されたXmitQName属性が空白で，あて先キューマネジャと同じ名前で定義されている転送キューがない場合に，キューマネジャ定義のDefXmitQName属性が空白になっているリモートキューのローカル定義名

-qオプションの指定で，コマンド引数のオブジェクト名にモデルキューを指定した場合，指定されたモデルキューの属性で一時的動的キューが作成されます。属性を取得したあと，一時的動的キューは削除されます。

-qオプションの指定で，コマンド引数のオブジェクト名にモデルキューを指定した場合，キューの作成日付およびキューの作成時刻は，このコマンドで一時的動的キューを作成した日付と時刻が出力されます。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA04356-I | ヘルプメッセージ | 標準出力
KFCA26162-E | 指定したオブジェクト名が誤っています。 | 標準エラー出力
KFCA26163-E | 指定したキューマネジャ名が誤っています。 | 標準エラー出力
KFCA26172-E | 指定したオブジェクト名は有効ではありません。 | 標準エラー出力
KFCA26176-E | 指定したキューをキューファイルに割り当てられません。 | 標準エラー出力
KFCA26179-E | キュー名の取得に失敗しました。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqalsmsg（メッセージの表示）

形式

mqalsmsg 〔-s  メッセージ開始番号〕〔-e  出力メッセージ数〕
        〔-o  メッセージ内容出力バイト数〕  〔-v〕  キュー名

機能

指定したキュー名に登録されているメッセージ情報を表示します。

オプション

●　-s メッセージ開始番号

　～＜1～2147483647＞

指定したキュー名に登録されているメッセージの先頭からの開始番号を指定します。

省略した場合，指定したキュー名に登録されているメッセージの先頭が指定されたものと見なします。

●　-e 出力メッセージ数

　～＜1～100＞

-sオプションで指定されたメッセージ開始番号から，メッセージ情報を表示するメッセージ数を指定します。

省略した場合，1メッセージの情報を表示します。

●　-o メッセージ内容出力バイト数

　～＜1～1000＞（単位：バイト）

指定したキュー名に登録されているメッセージ内容の先頭からのバイト数を指定します。

省略した場合，メッセージ内容は出力されません。

●　-v

MQMD構造体のすべての情報（構造体バージョン2の情報）を表示します。

省略した場合，構造体バージョン1の情報だけを表示します。

コマンド引数

●　キュー名

　～＜1～48文字のMQ文字列＞

出力するメッセージが登録されているキュー名を指定します。

なお，次に示す種類のキューは指定できません。

リモートキュー

モデルキュー

出力形式

●　キューマネジャの属性

注※

バージョン2の構造体の情報です。

AA

メッセージ開始番号

BB

メッセージ終了番号

CC

メッセージ番号

DD....DD

構造体識別子（文字列）

EE....EE

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

FF....FF

報告オプション（16進数）

GG....GG

メッセージタイプ（16進数）

HH....HH

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

II....II

報告メッセージ返答コード（16進数）

JJ....JJ

マシンコード形式（16進数）

KK....KK

文字セット識別子（16進数）

LL....LL

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

MM....MM

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

NN....NN

メッセージ永続性（MQPER_PERSISTENT，またはMQPER_NOT_PERSISTENT）

OO....OO

メッセージ識別子（文字列）

PP....PP

メッセージ識別子（16進数）

QQ....QQ

相関識別子（文字列）

RR....RR

相関識別子（16進数）

SS....SS

ロールバック回数（10進数）

TT....TT

応答キュー名（文字列）

UU....UU

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

VV....VV

ユーザ識別子（文字列）

WW....WW

ユーザ識別子（16進数）

XX....XX

課金トークン（文字列）

YY....YY

課金トークン（16進数）

ZZ....ZZ

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

aa....aa

アプリケーション識別データ（16進数）

bb....bb

登録アプリケーションタイプ（16進数）

cc....cc

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

dd....dd

登録日付（文字列）

ee....ee

登録時刻（文字列）

ff....ff

登録元データ（文字列）

gg....gg

グループID（文字列）

hh....hh

グループID（16進数）

ii....ii

論理メッセージの順序番号（10進数）

jj....jj

データのオフセット（10進数）

kk....kk

メッセージフラグ（16進数）

ll....ll

元のメッセージの長さ（10進数）

mm....mm

メッセージ長（10進数）

nn....nn

メッセージ内容（16進数）

oo....oo

メッセージ内容（文字列）

文字列の中にMQ文字列，および空白以外の文字がある場合は，その文字を.（ピリオド）に変換し出力します。

注意事項

アプリケーションからのメッセージ登録／取り出し中，および転送中のメッセージは表示できない場合があります。

このコマンドはMQOPEN命令およびMQGET命令を使用してメッセージを検索して表示するため，指定したキューの取り出しが禁止されている場合，コマンドが失敗します。

メッセージ滞留時間を監視する場合，満了時間に達したメッセージはmqalsmsgコマンドの表示対象になりませんが，mqainqコマンドで表示されるメッセージ登録数に含まれます。

別名キュー（ベースキューがリモートにあるクラスタ共用キュー）を指定してこのコマンドを実行すると，次に示すエラーメッセージが出力されます。

「KFCA31030-E コマンド実行中に異常を検知しました。関数名=MQOPEN  理由コード=2082」

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04310-E | コマンドに指定されたパラメタの値が誤っています。 | 標準エラー出力
KFCA04331-E | キュー名の文字数が48文字を超えています。 | 標準エラー出力
KFCA04337-E | 指定したキュー名は存在しません。 | 標準エラー出力
KFCA04369-E | キュー名に指定できない文字を指定しています。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA26189-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA26193-I | ヘルプメッセージ | 標準出力
KFCA31025-E | 指定したメッセージ開始番号からは，メッセージが存在しません。 | 標準エラー出力
KFCA31030-E | コマンド実行中に異常を検知しました。 | 標準エラー出力
KFCA31044-E | 指定したキュー名は指定できない種類のキューです。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqamkque（キューの作成）

形式

mqamkque  〔-c クラスタ内共用クラスタ名称〕  ローカルキュー名
         モデルキューの定義名  キュー属性定義ファイル名

機能

キュー属性定義ファイルに格納されているモデルキューの属性定義を基にローカルキューをキューファイル上に作成します。

モデルキューの定義の形式は，MQAサービス定義のmqaqueatl定義コマンドと同様の形式で指定します。詳細については，4章の「mqaqueatl（モデルキューの属性定義）」を参照してください。ただし，このコマンドで作成するキューは定義済みキューだけであるため，mqaqueatl定義コマンドの-kオプションで指定する定義タイプは無視します。

キュー属性定義ファイルには，複数のモデルキューの属性定義を格納できます。その場合は，モデルキューの属性定義に指定するモデルキューの定義名を別にしてください。

オプション

●　-c クラスタ内共用クラスタ名称

　～＜1～48文字のMQ文字列＞

キューが属するクラスタの名称を指定します。

省略された場合は，キューはクラスタには属しません。

MQAサービス定義のmqaqueatl定義コマンドの-uオプションで，transmissionを指定したキューは，指定できません。

コマンド引数

●　ローカルキュー名

　～＜1～48文字のMQ文字列＞

作成するキューの名称を指定します。

●　モデルキューの定義名

　～＜1～48文字のMQ文字列＞

定義ファイル内に定義されたモデルキューの定義名を指定します。

●　キュー属性定義ファイル名

　～＜パス名＞

キュー属性定義（モデルキューの属性定義）が格納されているファイルのパス名を指定します。

注意事項

このコマンドは，次に示すどちらかの場合にエラーになります。

指定されたキューファイルがオンラインで使用されている場合

指定されたキュー名がすでにキューファイル上に存在する場合

このコマンドで作成するキューは，すべてローカルキューです。

このコマンドで作成されたキューにメッセージを登録する場合，メッセージが格納されるキューファイルは，キューが格納されているキューファイルとは異なる場合があります。一つのキューファイルグループに複数のキューファイルが対応づけられている場合，MQAサーバでは，メッセージに対するアクセスの負荷分散を考慮して，キューとメッセージが同一キューファイルグループ上の別々のファイルに格納される場合があります。

キューとメッセージを同じキューファイルに格納したい場合，キューファイルグループに対応するキューファイルを一つにしてください。

mqarcvr（ファイル二重化の回復）

形式

mqarcvr  -f  キューファイル名

機能

キューファイル二重化構成をしたキューファイルに片系障害が発生した場合，障害ファイルを回復し，再度二重化構成に戻します。指定するキューファイルは，障害が発生しているファイルを指定してください。

オプション

●　-f キューファイル名

　～＜1～59文字の文字列＞

キューファイル二重化構成をしたキューファイルで片系障害が発生している障害ファイルを指定します。

注意事項

コマンド実行中は，指定したキューファイルに対する正常に動作しているキューファイルのアプリケーションからのメッセージ登録／取り出し，および転送を抑止します。そのためコマンドが終了するまでアプリケーションからのメッセージ登録／取り出し，および転送は実行できません。

キューファイル二重化構成を行っていないキューファイルは，指定できません。

コマンド実行中にエラーが発生した場合，障害ファイルが削除されている場合があります。その場合，エラー要因を取り除き，再度コマンドを入力してください。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04200-E | I/Oエラーが発生しました。 | 標準エラー出力
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04211-E | キューファイル名の文字数が59文字を超えています。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04310-E | コマンドに指定されたパラメタの値が誤っています。 | 標準エラー出力
KFCA04311-E | ファイルシステム作成時のシステムとコマンド実行時のシステムのバージョンが異なっています。 | 標準エラー出力
KFCA04313-E | キューファイルに対するアクセス権がありません。 | 標準エラー出力
KFCA04314-E | 指定したキューファイルは他のプロセスで使用中です。 | 標準エラー出力
KFCA04315-E | キューファイルのV/Rが誤っています。 | 標準エラー出力
KFCA04316-E | スペシャルファイルに対するアクセス権がありません。 | 標準エラー出力
KFCA04317-E | 指定したキューファイルはスペシャルファイル名ではありません。 | 標準エラー出力
KFCA04318-E | キューファイルを割り当てるディスクパーティションはOpenTP1ファイルシステムとして初期化されていません。 | 標準エラー出力
KFCA04319-E | キャラクタ型スペシャルファイルのオープンでシステムから上限値オーバのエラーが報告されました。 | 標準エラー出力
KFCA04339-E | 指定したキューファイル名は存在しません。 | 標準エラー出力
KFCA04345-E | 指定したキューファイルは障害閉塞されています。 | 標準エラー出力
KFCA04378-E | OpenTP1ファイルシステム初期化時に指定したファイル数の上限値を超えたためキューファイルを作成できません。 | 標準エラー出力
KFCA04384-E | 指定したキューファイルを割り当てるだけの空き容量がありません。 | 標準エラー出力
KFCA04387-E | 指定したファイルはキューファイルではありません。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA26189-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA26194-I | ヘルプメッセージ | 標準出力
KFCA31032-W | プロセス実行中のため，キューファイルの回復処理を再試行します。 | 標準エラー出力
KFCA31033-E | 指定したキューファイルは，二重化構成を行っていないため指定できません。 | 標準エラー出力
KFCA31034-E | 指定したキューファイルは，両系論理閉塞のため回復する必要がありません。 | 標準エラー出力
KFCA31037-E | キューファイル二重化構成において，両系障害閉塞のため回復できません。 | 標準エラー出力
KFCA31039-I | 指定したキューファイルを回復しました。 | メッセージログファイル
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqarles（キューファイルの閉塞解除）

形式

mqarles 〔-s {l｜t}〕 -f  キューファイル名

機能

指定したキューファイルの閉塞状態を解除します。

MQAサービスがキューファイルを閉塞状態にする契機は，mqaaddコマンドが入力された時（論理閉塞）と，キューファイルの障害を検知した時（障害閉塞または一時的障害閉塞）です。このコマンドは，論理閉塞状態および一時的障害閉塞状態だけを解除できます。障害閉塞状態のキューファイルに対してこのコマンドを入力すると，エラーになります。

論理閉塞状態の場合
メッセージを操作する場合は，組み込んだキューファイル（A系ファイル）に対し，mqarlesコマンドを入力してください。バックアップキューファイルに対するmqarlesコマンドの入力は不要です。

一時的障害閉塞状態の場合
一時的障害閉塞が発生しているキューファイルを指定してください。一時的障害閉塞でないキューファイルを指定した場合，コマンドはエラーになります。

オプション

●　-s l｜t

解除する閉塞状態を指定します。次に示すどちらかを指定します。

l：論理閉塞を解除します。

t：一時的障害閉塞を解除します。

省略した場合は，論理閉塞が解除されます。

●　-f キューファイル名

　～＜1～59文字の文字列＞

閉塞状態を解除するキューファイルの名称を指定します。

注意事項

論理閉塞状態の場合，mqaaddコマンドでキューファイル二重化構成にキューファイルを組み込んだとき，キューファイル（A系ファイル）に対して入力するとバックアップキューファイル（B系ファイル）の閉塞解除も行います。バックアップキューファイル（B系ファイル）を指定するとエラーになります。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04211-E | キューファイル名の文字数が59文字を超えています。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04329-E | 指定したキューファイルは閉塞されていません。 | 標準エラー出力
KFCA04332-I | ヘルプメッセージ | 標準出力
KFCA04334-E | 指定したキューファイルは閉塞処理中です。 | 標準エラー出力
KFCA04338-E | 指定したキューファイルは障害閉塞状態です。 | 標準エラー出力
KFCA04339-E | 指定したキューファイル名は存在しません。 | 標準エラー出力
KFCA04343-I | キューファイル，およびバックアップキューファイルの閉塞解除を完了しました。 | メッセージログファイル
KFCA04344-I | キューファイルの閉塞解除を完了しました。 | メッセージログファイル
KFCA04346-E | 指定したキューファイルは，バックアップキューファイルのため指定できません。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力
KFCA31180-E | MQAサービス専用共用メモリが参照できません。 | メッセージログファイル
KFCA31188-I | キューファイルを正常状態に変更しました。 | メッセージログファイル
KFCA31189-E | キューファイルを正常状態に変更できませんでした。 | メッセージログファイル
KFCA31190-E | 指定したキューファイルは一時的障害閉塞ではありません。 | 標準エラー出力

mqarm（キューファイルの切り離し）

形式

mqarm  〔-r〕 -f  キューファイル名

機能

指定したキューファイルをオンラインから切り離します。-rオプションを指定すると強制的にオンラインから切り離します。

オプション

●　-r

オンライン中にディスク障害が発生し，障害ディスクボリュームを切り離す場合に指定してください。

●　-f キューファイル名

　～＜1～59文字の文字列＞

オンラインから切り離すキューファイルの名称を指定します。

注意事項

キューファイルを切り離す場合，切り離すキューファイルに格納されているキューおよびメッセージは，メモリ上のものだけ削除します。キューファイル上のキューおよびメッセージは削除しません。
切り離したキューファイルを再度，そのまま組み込んだ場合，KFCA04323-Iメッセージが出力され，削除されたメッセージが再び登録される現象が発生します。したがって，切り離したキューファイルを組み込む場合は，キューファイルの回復または初期化をしてください。

キューファイルを切り離す場合，切り離すキューファイルにキューが登録されているときは，このコマンドでキューが削除されます。削除対象のキューにメッセージが登録されている場合は，メッセージも同時に削除します。また，メッセージを削除する場合，切り離すキューファイルとは別のキューファイルに登録されている場合でも，メッセージを削除します。

切り離すキューファイルにメッセージだけが登録されている場合（メッセージを登録したキューが別のキューファイルにある場合），切り離すキューファイルに登録されているメッセージだけが削除されます。この場合，キューは別ファイルにあるため，キューに対するメッセージの登録および取り出しはできます。メッセージが削除されると，削除されたメッセージのメッセージ識別子はKFCA04323-Iメッセージとともに表示されます。メッセージ識別子は，MQAサーバではコードを意識しないで16進数で出力されます。

このコマンドでエラーが発生した場合でも，KFCA04323-IまたはKFCA04324-Iのメッセージが出力されているときは，キューおよびメッセージは削除されています。エラー発生後にキューファイルをオンラインから切り離すには，エラーの要因を取り除き，再度mqarmコマンドを入力してください。

-rオプションは，障害が発生したディスクボリューム上のキューファイルをオンラインから切り離す場合にだけ使用してください。-rオプションを指定してコマンドを入力すると，キューファイル障害が発生した状態と同じ状態になり，アクセス中のアプリケーションはエラーになります。

正常状態のキューファイルを-rオプションで強制的に切り離す場合に，コマンドがメモリ不足でエラーリターンしたときは，キューファイルは障害閉塞状態になります。

正常状態のキューファイルを-rオプションで強制的に切り離す場合，コマンドの再試行中にdcstop -aまたはdcstop -bコマンドでOpenTP1を終了して再開始するとキューファイルは障害閉塞状態になります。

キューファイル二重化構成で片系障害が発生したキューファイルに対して入力できません。入力した場合エラーになります。ただし，-rオプションを指定した場合は入力できますがメッセージの削除はしません。

両系障害が発生したキューファイルに対して入力すると，キューファイル，バックアップキューファイルの両方をオンラインから切り離しメッセージも削除します。

両系障害が発生していないファイルに対して-rオプションを指定した場合，指定したファイルは障害閉塞状態になりメッセージの削除はしません。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04211-E | キューファイル名の文字数が59文字を超えています。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04306-W | プロセス実行中のため，キューファイルの切り離し処理を再試行します。 | 標準エラー出力
KFCA04323-I | キュー名：×××に登録されているメッセージを削除しました。 | メッセージログファイル
KFCA04324-I | キュー名：×××を削除しました。 | メッセージログファイル
KFCA04325-E | 指定したキューファイルは二重化構成のため両系障害閉塞時以外は実行できません。 | 標準エラー出力
KFCA04329-E | 指定したキューファイルは閉塞されていません。 | 標準エラー出力
KFCA04339-E | 指定したキューファイル名は存在しません。 | 標準エラー出力
KFCA04354-I | ヘルプメッセージ | 標準出力
KFCA04355-E | キューファイル，およびバックアップキューファイルの切り離しが完了しました。 | 標準エラー出力
KFCA04358-I | キューファイルの切り離しが完了しました。 | メッセージログファイル
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31092-E | プロセス固有領域のメモリ不足でクラスタキュー情報をクラスタに通知できません。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31118-E | コマンドが異常を検知しました。 | メッセージログファイル
KFCA31119-E | キューファイルの切り離し処理で異常を検知しました。 | 標準エラー出力
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力
KFCA31180-E | MQAサービス専用共用メモリが参照できません。 | メッセージログファイル

mqarstr（キューファイルのリストア）

形式

mqarstr  ファイル名  キューファイル名

機能

mqabkupコマンドでバックアップしたキューファイル（メッセージ情報管理ファイル（ファイル名.cnt）とメッセージファイル（ファイル名.msg））を，OpenTP1ファイルシステム上のキューファイル（メッセージ情報管理ファイル（キューファイル名.cnt）と，メッセージファイル（キューファイル名.msg））にリストアします。

コマンド引数

●　ファイル名

　～＜パス名＞

リストア元のファイルの名称を指定します。

●　キューファイル名

　～＜1～59文字の文字列＞

リストア先のキューファイルの名称を完全パス名で指定します。

注意事項

このコマンドは，次に示すどちらかの場合にエラーになります。

指定したキューファイルが，オンラインで使用中の場合

ファイルのうち，どちらか一つでもキューファイルのレコード数を超えた場合

次に示す場合，すでに存在するキューファイルにファイルの内容を上書きします。

同一キューファイル名がOpenTP1ファイルシステム上にすでに存在する場合

ファイルのレコード数がすでに存在するキューファイルと同じか，または小さい場合

上書きしたキューファイルがOpenTP1ファイルシステム上で使用する領域容量は，上書き前と変わりません。このため，上書きするキューファイルをmqadelコマンドで削除後，リストアを実行することをお奨めします。

このコマンドは，リストア元のファイルのレコード長と同じレコード長のリストア先キューファイルをOpenTP1ファイルシステム上に作成します。したがって，リストアを正常に行うには次に示す条件を満たす必要があります。

リストア元のファイルのレコード長は，リストア先のキューファイルを作成するOpenTP1ファイルシステムのセクタ長の倍数でなければなりません。

上記の条件を満たさない場合，このコマンドは，KFCA31182-Eのメッセージを出力して異常終了します。この場合は，リストア先のキューファイルを作成するOpenTP1ファイルシステムのセクタ長を見直して再度実行してください。

mqaset（オブジェクト属性の設定）

形式

mqaset {{-p {disabled｜enabled}｜
        -g {disabled｜enabled}}｜
       {-p {disabled｜enabled}
        -g {disabled｜enabled}}} オブジェクト名

機能

ローカルキュー，リモートキューのローカルキュー定義，または別名キューに登録許可および取り出し許可を設定します。

オプション

●　-p disabled｜enabled

オブジェクトに対するメッセージの登録操作の禁止または許可を指定します。

次に示すどちらかを指定します。

disabled：登録操作を禁止します。

enabled：登録操作を許可します。

●　-g disabled｜enabled

オブジェクトに対するメッセージの取り出し操作の禁止または許可を指定します。

次に示すどちらかを指定します。

disabled：取り出し操作を禁止します。

enabled：取り出し操作を許可します。

コマンド引数

●　オブジェクト名

　～＜1～48文字のMQ文字列＞

オブジェクト属性の設定をするオブジェクトのローカル名称を指定します。

注意事項

リモートキューのローカルキュー定義に対しては，-gオプションで取り出し許可を指定できません。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04200-E | I/Oエラーが発生しました。 | 標準エラー出力
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04215-E | タイムアウトとなりました。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA26162-E | 指定したオブジェクト名が誤っています。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31078-I | ヘルプメッセージ | 標準出力
KFCA31090-E | リモートキューのローカルキュー定義に対して-gオプションで取り出し許可を指定できません。 | 標準エラー出力
KFCA31091-E | モデルキューに対して，属性を変更できません。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqccontrn（MQCトランザクション状態の変更）

形式

mqccontrn｛-c｜-r｜-f｝
        ｛-n MQCゲートウェイサーバ名｜
          -t OpenTP1トランザクションID｜
          -u クライアントトランザクションID｜-m MQCID｝

機能

指定したMQCゲートウェイサーバ名，トランザクションID，またはMQCIDに対応するトランザクションの状態をコミットまたはロールバックに決着したり，無効にしたりします。

オプション

●　-c

MQCサーバ機能で管理しているトランザクションの状態をコミットに決着します。ただし，ローカルトランザクション中の場合はトランザクション状態を変更しません。

●　-r

MQCサーバ機能で管理しているトランザクションの状態をロールバックに決着します。ただし，ローカルトランザクション中の場合はトランザクション状態を変更しません。

●　-f

MQCサーバ機能で管理しているトランザクションの状態を無効にします。

●　-n MQCゲートウェイサーバ名

　～＜1～8文字の識別子＞

状態を変更するMQCゲートウェイサーバ名を指定してください。MQCゲートウェイサーバ名は，MQCサービス定義のmqcgwpnam定義コマンドで指定した名称を指定します。

●　-t OpenTP1トランザクションID

　～＜2～254文字の16進数＞

状態を変更するOpenTP1トランザクションIDを指定してください。OpenTP1トランザクションIDはmqclstrnコマンドの-aオプションまたは-nオプションで出力されたIDを指定します。

●　-u クライアントトランザクションID

　～＜2～254文字の16進数＞

状態を変更するクライアントトランザクションIDを指定してください。クライアントトランザクションIDはmqclstrnコマンドの-aオプションまたは-nオプションで出力されたIDを指定します。ただし，ローカルトランザクション中の場合は指定できません。

●　-m MQCID

　～＜8文字の識別子＞

状態を変更するMQCサーバ機能で管理しているトランザクションごとのIDを指定してください。MQCIDはmqclstrnコマンドの-aオプションまたは-nオプションで出力されたIDを指定します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA30861-E | MQCサービスが異常を検知しました。 | メッセージログファイル
KFCA30866-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA30872-I | ヘルプメッセージ | 標準出力
KFCA30873-E | 指定したMQCゲートウェイサーバ名は存在しません。 | 標準エラー出力
KFCA30874-E | 指定したトランザクションIDは存在しません。 | 標準エラー出力
KFCA30875-E | 指定したMQCIDは存在しません。 | 標準エラー出力
KFCA30876-I | 該当するトランザクションIDのトランザクションをコミットしました。 | メッセージログファイル
KFCA30877-I | 該当するトランザクションIDのトランザクションをロールバックしました。 | メッセージログファイル
KFCA30880-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA30881-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA30882-E | MQCサービスが終了処理中です。 | 標準エラー出力
KFCA30883-E | PRCにおいてネットワーク障害が発生しました。 | 標準エラー出力
KFCA30884-E | MQCサービスが起動されていません。 | 標準エラー出力
KFCA30885-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA30887-E | サービスとクライアント間のバージョンが一致しません。 | 標準エラー出力
KFCA30900-E | タイムアウトとなりました。 | 標準エラー出力
KFCA30901-E | 通信障害が発生しました。 | 標準エラー出力
KFCA30902-I | 該当するトランザクションIDのトランザクションを無効にしました。 | メッセージログファイル
KFCA30903-I | MQCゲートウェイサーバのトランザクションをコミットしました。 | メッセージログファイル
KFCA30904-I | MQCゲートウェイサーバのトランザクションをロールバックしました。 | メッセージログファイル
KFCA30905-I | MQCゲートウェイサーバのトランザクションを無効にしました。 | メッセージログファイル
KFCA30906-E | 指定したMQCゲートウェイサーバ名のトランザクション状態は変更できません。 | 標準エラー出力
KFCA30907-E | 指定したトランザクションIDのトランザクション状態は変更できません。 | 標準エラー出力
KFCA30908-I | 該当するMQCIDのトランザクションをコミットしました。 | メッセージログファイル
KFCA30909-I | 該当するMQCIDのトランザクションをロールバックしました。 | メッセージログファイル
KFCA30910-I | 該当するMQCIDのトランザクションを無効にしました。 | メッセージログファイル
KFCA30911-E | 指定したMQCIDのトランザクション状態は変更できません。 | 標準エラー出力
KFCA30912-E | 指定したMQCゲートウェイサーバ名の文字数に誤りがあります。 | 標準エラー出力
KFCA30913-E | MQCゲートウェイサーバ名に指定できない文字を指定しています。 | 標準エラー出力
KFCA30914-E | トランザクションIDの文字数に誤りがあります。 | 標準エラー出力
KFCA30915-E | トランザクションIDに指定できない文字を指定しています。 | 標準エラー出力
KFCA30916-E | MQCIDに誤りがあります。 | 標準エラー出力
KFCA30918-E | トランザクションは存在しません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqcls（MQCゲートウェイサーバの状態表示）

形式

mqcls

機能

MQCゲートウェイサーバの状態を標準出力に出力します。

出力形式

mqclsコマンドを実行した結果，出力される情報を次に示します。MQCサービス定義のmqcgwpnam定義コマンドの定義数分（1～256）表示されます。

ＭＱＣゲートウェイサーバ名＝ aa....aa
ＭＱＣゲートウェイサーバステータス ＝ bb....bb
クライアントＩＰアドレス ＝ cc....cc
クライアントポート番号 ＝ dd....dd
クライアントプロセスＩＤ ＝ ee....ee
クライアントスレッドＩＤ ＝ ff....ff
接続開始時刻 ＝ hhh iii jj kk:ll:mm nnnn [oooooo]

aa....aa

MQCゲートウェイサーバ名（8文字以内の識別子）

bb....bb

MQCゲートウェイサーバのステータス（7文字以内の文字列）

MQCゲートウェイサーバには次の四つの状態があります。

なお，ステータスがINITまたはSTANDBYの場合，cc....cc以降に表示される情報は無効です。

INIT

MQCサービス定義のmqcgwpnam定義コマンドでMQCゲートウェイサーバは定義されていますが，MQCゲートウェイサーバが起動していない状態です。

STANDBY

MQCゲートウェイサーバがクライアントアプリケーションと接続していない状態です。次に示すときにこの状態になります。

MQCゲートウェイサーバの起動後，クライアントアプリケーションから，MQCONN命令※1が発行されるまでの間

クライアントアプリケーションがMQDISC命令※2を発行してから，次のMQCONN命令を発行するまでの間

MQCゲートウェイサーバがRESERVEまたはCONNECTの状態で，タイムアウト（要求受信監視タイマ，MQCゲートウェイサーバ監視タイマ），クライアントアプリケーションとの通信エラー，またはMQA，トランザクションマネジャとの処理中でエラーが発生したとき

RESERVE

クライアントアプリケーションがMQCONN命令※1を発行してから，MQCONN命令が完了するまでの状態※3です。

CONNECT

クライアントアプリケーションからのMQCONN命令※1が完了してから，MQDISC命令※2を発行するまでの状態※3です。

注※1

次の条件に該当する用語に読み替えてください。

環境変数にDCMQCEXPTRN=Nを設定しているか，または非XAインタフェースライブラリを使用している場合，MQCONN命令を発行。

環境変数にDCMQCEXPTRN=Yを設定し，かつXAインタフェースライブラリを使用している場合，xa_openを発行。

TP1/Message Queue - Accessの05-00未満のバージョンと接続する場合，MQCONN命令を発行。

注※2

次の条件に該当する用語に読み替えてください。

環境変数にDCMQCEXPTRN=Nを設定しているか，または非XAインタフェースライブラリを使用している場合，MQDISC命令を発行。

環境変数にDCMQCEXPTRN=Yを設定し，かつXAインタフェースライブラリを使用している場合，xa_closeを発行。

TP1/Message Queue - Accessの05-00未満のバージョンと接続する場合，MQDISC命令を発行。

注※3

トランザクションのコミット，またはロールバック前にMQDISC命令を発行した場合は，コミット，またはロールバック時に再度クライアントアプリケーションと接続するため，一時的にRESERVE，またはCONNECTの状態になります。

cc....cc

クライアントのIPアドレス（15文字以内の符号なし整数）

dd....dd

クライアントのポート番号（10進数）

ee....ee

クライアントのプロセスID（10進数）

ff....ff

クライアントのスレッドID（10進数）

hhh iii jj kk:ll:mm nnnn [oooooo]

曜日 月 日 時:分:秒 年（西暦） [マイクロ秒]

接続開始時刻が表示されます。

出力メッセージ

出力メッセージID
内容
出力先

KFCA04202-E
通信障害が発生しました。
標準エラー出力

KFCA04207-E
MQAが異常を検知しました。
メッセージログファイル

KFCA04208-E
MQAサーバのV/Rが誤っています。
標準エラー出力

KFCA04215-E
タイムアウトとなりました。
標準エラー出力

KFCA04302-E
MQAサービスが終了処理中です。
標準エラー出力

KFCA04303-E
RPCでネットワーク障害が発生しました。
標準エラー出力

KFCA04304-E
MQAサービスが起動されていません。
標準エラー出力

KFCA30861-E
MQCサービスが異常を検知しました。
メッセージログファイル

KFCA30865-E
ローカルメモリ不足が発生しました。
標準エラー出力

KFCA30866-E
メモリ不足が発生しました。
標準エラー出力

KFCA30879-I
ヘルプメッセージ
標準出力

KFCA30880-E
コマンドで指定した引数の数が正しくありません。
標準エラー出力

KFCA30881-E
定義解析中にエラーが発生しました。
標準エラー出力

KFCA30884-E
MQCサービスが起動されていません。
標準エラー出力
メッセージログファイル

KFCA30887-E
サービスとクライアント間のバージョンが一致しません。
標準エラー出力

KFCA31173-E
OpenTP1がオンライン状態ではないため，コマンドを実行できません。
標準エラー出力

mqclstrn（MQCトランザクション状態の表示）

形式

mqclstrn  ｛-a｜-n MQCゲートウェイサーバ名｝

機能

MQCゲートウェイサーバ名に対応するトランザクションの状態を表示します。

オプション

●　-a

MQCサーバ機能で管理しているすべてのトランザクション情報を表示します。

●　-n MQCゲートウェイサーバ名

　～＜1～8文字の識別子＞

表示するMQCゲートウェイサーバ名を指定してください。MQCゲートウェイサーバ名は，MQCサービス定義のmqcgwpnam定義コマンドで指定した名称を指定します。

出力形式

MQCゲートウェイサーバ名　＝　aa....aa
MQCID　＝　bb....bb
トランザクション開始時間　＝　cc....cc
トランザクション状態　＝　dd....dd
OpenTP1トランザクションID　＝　ee....ee
クライアントトランザクションID　＝　ff....ff

aa....aa

MQCゲートウェイサーバ名（8文字以内の識別子）です。

bb....bb

MQCID（8文字の識別子）です。

cc....cc

トランザクション開始時間をYYYY/MM/DD　hh:mm:ssの形式で表示します。YYYY/MM/DDは年（西暦）月日，hh:mm:ssは時分秒を示します。

dd....dd

トランザクション状態を次の値で表示します。

T：トランザクション中

P：プリペア中

R：決着待ち

HC：ヒューリスティック－コミット

HR：ヒューリスティック－ロールバック

HH：ヒューリスティック－不明

LT：ローカルトランザクション中

ee....ee

OpenTP1トランザクションID（254文字以内の16進数）です。

OpenTP1トランザクションIDの形式

AAAAAAAAAAAAAAAABBBBBBBBCCCCCCCCCCCCCCCCDDDDDDDDEEEEEEEE

AAAAAAAAAAAAAAAA：
OpenTP1のシステムノードID（16けたの16進数）です。16進数を文字列（すべて英数字）に変換することで，OpenTP1のtrnlsコマンドで表示される「TRNGID：OpenTP1のシステムノードID（8文字）」に対応づけることができます。

BBBBBBBB：
グローバルトランザクション番号（8けたの16進数）です。OpenTP1のtrnlsコマンドで表示される「グローバルトランザクション番号（8けた）」に対応づけることができます。

CCCCCCCCCCCCCCCC：
OpenTP1のシステムノードID（16けたの16進数）です。16進数を文字列（すべて英数字）に変換することで，OpenTP1のtrnlsコマンドで表示される「TRNBID：OpenTP1のシステムノードID（8文字）」に対応づけることができます。

DDDDDDDD：
トランザクションブランチ番号（8けたの16進数）です。OpenTP1のtrnlsコマンドで表示される「トランザクションブランチ番号（8けた）」に対応づけることができます。

EEEEEEEE：
付加情報（8けたの16進数）です。

ff....ff

クライアントトランザクションID（254文字以内の16進数）です。

ローカルトランザクションの場合は***と表示します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA30861-E | MQCサービスが異常を検知しました。 | メッセージログファイル
KFCA30865-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA30866-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA30870-I | ヘルプメッセージ | 標準出力
KFCA30873-E | 指定したMQCゲートウェイサーバ名は存在しません。 | 標準エラー出力
KFCA30880-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA30881-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA30882-E | MQCサービスが終了処理中です。 | 標準エラー出力
KFCA30883-E | RPCにおいてネットワーク障害が発生しました。 | 標準エラー出力
KFCA30884-E | MQCサービスが起動されていません。 | 標準エラー出力
KFCA30885-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA30887-E | サービスとクライアント間のバージョンが一致しません。 | 標準エラー出力
KFCA30900-E | タイムアウトとなりました。 | 標準エラー出力
KFCA30901-E | 通信障害が発生しました。 | 標準エラー出力
KFCA30912-E | 指定したMQCゲートウェイサーバ名の文字数に誤りがあります。 | 標準エラー出力
KFCA30913-E | MQCゲートウェイサーバ名に指定できない文字を指定しています。 | 標準エラー出力
KFCA30918-E | トランザクションは存在しません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqcswptrc（MQCトレースの強制スワップ）

形式

mqcswptrc

機能

MQCサーバのMQCトレース情報を強制的にMQCトレースファイルにスワップします。

このコマンドを入力するとメモリ中のMQCトレースがMQCトレースファイルに出力されます。MQCトレースファイルの取得情報については，「7.4　障害時に取得する情報」を参照してください。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA30861-E | MQCサービスが異常を検知しました。 | メッセージログファイル
KFCA30866-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA30878-I | ヘルプメッセージ | 標準出力
KFCA30880-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA30881-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA30882-E | MQCサービスが終了処理中です。 | 標準エラー出力
KFCA30883-E | RPCにおいてネットワーク障害が発生しました。 | 標準エラー出力
KFCA30884-E | MQCサービスが起動されていません。 | 標準エラー出力
KFCA30887-E | サービスとクライアント間のバージョンが一致しません。 | 標準エラー出力
KFCA30888-I | 運用コマンドが終了しました。 | 標準出力
KFCA30900-E | タイムアウトとなりました。 | 標準エラー出力
KFCA30901-E | 通信障害が発生しました。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqrls（クラスタ情報の表示）

形式

mqrls  〔-x〕
      ｛ -c ｜ -m ｜ -q ｜ -t ｝
      〔-s クラスタ情報開始番号〕
      〔-e 出力メッセージ数〕
      〔オブジェクト名〕

機能

指定したクラスタ情報を表示します。

オプション

●　-x

一覧で出力する場合に指定します。

●　-c

出力するクラスタ名称を指定します。

●　-m

出力するクラスタキューマネジャ名称を指定します。

●　-q

出力するクラスタキュー名称を指定します。

●　-t

出力する問い合わせ名を指定します。

●　-s クラスタ情報開始番号

　～＜1～2147483647＞

指定したクラスタ情報の先頭からの開始番号を指定します。

このオプションを省略すると，指定したクラスタ情報の先頭が指定されたものと見なします。

●　-e 出力メッセージ数

　～＜1～800＞

-sオプションで指定されたクラスタ情報開始番号から，クラスタ情報を表示する数を指定します。

このオプションを省略すると，最大値が指定されたものと見なします。

コマンド引数

●　オブジェクト名

　～＜1～48文字の文字列＞

出力する情報のオブジェクト名称を指定します。

出力形式

●　クラスタ情報

（a）　一覧表示（mqrls -x -c）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc
クラスタ名 ＝ dd....dd

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

（b）　詳細表示（mqrls -c クラスタ名称）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc
クラスタ名 ＝ dd....dd
UUID ＝ ee....ee
参加状態 ＝ ff....ff
参加時使用チャネル名1 ＝ gg....gg
参加時使用チャネル名2 ＝ hh....hh

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

ee....ee

キューマネジャ識別子（1～48文字の文字列）

参加状態がFALSEの場合は，表示されないことがあります。

ff....ff

参加状態。

BINDING：クラスタ参加中です。

FALSE：クラスタ参加失敗です。

INIT：クラスタ未参加です。

JOIN：クラスタ参加済みです。

REMOVING：脱退依頼中です。

REMOVE：脱退済みです。

REFRESHING：リポジトリ情報再作成依頼中です。

REFRESH：リポジトリ情報再作成処理中です。

gg....gg

参加時に使用したチャネル名1（1～20文字のMQ文字列）

参加時に使用したチャネル名1が設定されていない場合，****を表示します。

hh....hh

参加時に使用したチャネル名2（1～20文字のMQ文字列）

参加時に使用したチャネル名2が設定されていない場合，****を表示します。

●　クラスタキューマネジャ情報

（a）　一覧表示（mqrls -x -m）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc
クラスタ名 ＝ dd....dd
キューマネジャ名 ＝ ee....ee
チャネル名 ＝ ff....ff

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

ee....ee

キューマネジャ名（1～48文字のMQ文字列）

ff....ff

チャネル名（1～20文字のMQ文字列）

（b）　詳細表示（mqrls -m クラスタキューマネジャ名称）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc
クラスタ名 ＝ dd....dd
キューマネジャ名 ＝ ee....ee
チャネル名 ＝ ff....ff
UUID ＝ gg....gg
定義種別 ＝ hh....hh
キューマネジャタイプ ＝ ii....ii
サスペンド状態 ＝ jj....jj
クラスタ情報更新日付 ＝ YYYY-MM-DD
クラスタ情報更新時刻 ＝ HH.MM.SS
接続名 ＝ kk....kk
注釈 ＝ ll....ll
チャネル更新日付 ＝ YYYY-MM-DD
チャネル更新時刻 ＝ HH.MM.SS
転送タイプ ＝ mm....mm
チャネルタイプ ＝ nn....nn
バッチサイズ ＝ oo....oo
切断時間間隔 ＝ pp....pp
短期確立再試行回数 ＝ qq....qq
短期確立再試行間隔 ＝ rr....rr
長期確立再試行回数 ＝ ss....ss
長期確立再試行間隔 ＝ tt....tt
セキュリティ出口名 ＝ uu....uu
セキュリティ出口ユーザデータ ＝ vv....vv
メッセージシーケンス番号ラップ値 ＝ ww....ww
最大メッセージ長 ＝ xx....xx
MCAユーザID ＝ yy....yy
ハートビートフロー間の時間 ＝ zz....zz
バッチ終了待ちタイマ値 ＝ a1....a1
非永続メッセージが送信される速度 ＝ b1....b1
ネットワーク接続優先順位 ＝ c1....c1
チャネル状態 ＝ d1....d1
送信出口名 ＝ e1....e1
送信出口ユーザデータ ＝ f1....f1
メッセージ出口名 ＝ g1....g1
メッセージ出口ユーザデータ ＝ h1....h1
受信出口名 ＝ i1....i1
受信出口ユーザデータ ＝ j1....j1

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

ee....ee

キューマネジャ名（1～48文字のMQ文字列）

ff....ff

チャネル名（1～20文字のMQ文字列）

gg....gg

キューマネジャ識別子（1～48文字の文字列）

hh....hh

定義種別

AUTOINST

自動的に作成されたクラスタセンダチャネルです。

MANLINST

事前定義クラスタセンダチャネルまたはクラスタレシーバチャネルです。

ii....ii

キューマネジャタイプ

FULL：フルリポジトリです。

PARTIAL：パーシャルリポジトリです。

jj....jj

サスペンド状態

YES：サスペンド状態です。

NO：サスペンド状態ではありません。

YYYY-MM-DD

日付（年-月-日）

チャネル更新日付およびクラスタ情報更新日付は，システムの設定日付で表示されます。日付が設定されていない場合，****を表示します。

HH.MM.SS

時刻（時.分.秒）

チャネル更新時刻およびクラスタ情報更新時刻は，システムの設定時刻で表示されます。時刻が設定されていない場合，****を表示します。

kk....kk

接続名（文字列）

ll....ll

注釈記述用のフィールド（1～64文字の文字列）

mm....mm

転送タイプ（文字列）

nn....nn

チャネルタイプ

crc：クラスタレシーバチャネルです。

csn：クラスタセンダチャネルです。

oo....oo

バッチサイズ

pp....pp

切断時間間隔

qq....qq

短期確立再試行回数

rr....rr

短期確立再試行間隔

ss....ss

長期確立再試行回数

tt....tt

長期確立再試行間隔

uu....uu

セキュリティ出口名

vv....vv

セキュリティ出口ユーザデータ

ww....ww

メッセージシーケンス番号ラップ値

xx....xx

最大メッセージ長

yy....yy

MCAユーザID

zz....zz

ハートビートフロー間の時間

a1....a1

バッチ終了待ちタイマ値

b1....b1

非永続メッセージが送信される速度

FAST：非永続メッセージを高速に転送します。

NORMAL：非永続メッセージを永続メッセージと同様に転送します。

c1....c1

ネットワーク接続優先順位

d1....d1

チャネル状態

ACTIVE：動作可能です。

BINDING：接続中です。

DISABLE：動作不可能です。

RETRY：リトライ中です。

e1....e1

送信出口名

f1....f1

送信出口ユーザデータ

g1....g1

メッセージ出口名

h1....h1

メッセージ出口ユーザデータ

i1....i1

受信出口名

j1....j1

受信出口ユーザデータ

●　クラスタキュー情報

（a）　一覧表示（mqrls -x -q）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc....cc
クラスタ名 ＝ dd....dd
キューマネジャ名 ＝ ee....ee
キュー名 ＝ ff....ff

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

ee....ee

キューマネジャ名（1～48文字のMQ文字列）

ff....ff

キュー名（1～48文字のMQ文字列）

（b）詳細表示（mqrls -q クラスタキュー名称）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc
クラスタ名 ＝ dd....dd
キューマネジャ名 ＝ ee....ee
キュー名 ＝ ff....ff
UUID ＝ gg....gg
クラスタキュータイプ ＝ hh....hh
定義種別 ＝ ii....ii
キュー記述子 ＝ jj....jj
登録許可 ＝ kk....kk
省略時のメッセージ優先度 ＝ ll....ll
省略時のメッセージ永続性 ＝ mm....mm
作成日付 ＝ YYYY-MM-DD
作成時刻 ＝ HH.MM.SS
クラスタ情報更新日付 ＝ YYYY-MM-DD
クラスタ情報更新時刻 ＝ HH.MM.SS
デフォルトのバインディング ＝ nn....nn

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

ee....ee

キューマネジャ名（1～48文字のMQ文字列）

ff....ff

キュー名（1～48文字のMQ文字列）

gg....gg

キューマネジャ識別子（1～48文字の文字列）

hh....hh

クラスタキュータイプ

ALIAS QUE：別名キュー定義です。

ALIAS QUE MGR：別名キューマネジャです。

LOCAL QUE：ローカルキューです。

REMOTE QUE：リモートキューのローカル定義です。

ii....ii

定義種別

LOCAL：ローカルに存在します。

REMOTE：リモートに存在します。

jj....jj

キュー記述子（1～64文字の文字列）

kk....kk

キューに対する登録許可

ALLOWED：取り出し許可は許可されています。

INHIBITED：登録操作は禁止されます。

ll....ll

省略時のメッセージ優先度（10進文字）

mm....mm

省略時のメッセージ永続性

NOT PERSISTENT：非永続性です。

PERSISTENT：永続性です。

YYYY-MM-DD

日付（年-月-日）

作成日付およびクラスタ情報更新日付は，システムの設定日付で表示されます。日付が設定されていない場合，****を表示します。

HH.MM.SS

時刻（時.分.秒）

作成時刻およびクラスタ情報更新時刻は，システムの設定時刻で表示されます。時刻が設定されていない場合，****を表示します。

nn....nn

デフォルトのバインディング

FIXED

キューがオープンされたハンドルにあて先を固定します。

NOT FIXED

キューにメッセージが登録される時，メッセージ単位にあて先を決定します。

●　問い合わせ情報

（a）　一覧表示（mqrls -x -t）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc
クラスタ名 ＝ dd....dd
問い合わせ名 ＝ ee....ee
問い合わせ種別 ＝ ff....ff

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

ee....ee

問い合わせ名（1～48文字の文字列）

ff....ff

問い合わせ種別

MGR：キューマネジャです。

UUID：キューマネジャ識別子です。

QUE：キューです。

（b）詳細表示（mqrls -t 問い合わせ名）

エントリ表示番号 ＝ aa - bb
エントリ番号 ＝ cc
クラスタ名 ＝ dd....dd
問い合わせ名 ＝ ee....ee
問い合わせ種別 ＝ ff....ff
作成日付 ＝ YYYY-MM-DD
作成時刻 ＝ HH.MM.SS
問い合わせチャネル名1 ＝ gg....gg
問い合わせチャネル名2 ＝ hh....hh
返却結果 ＝ ii....ii

aa

エントリ開始番号

bb

エントリ終了番号

cc

エントリ番号

dd....dd

クラスタ名（1～48文字のMQ文字列）

ee....ee

問い合わせ名（1～48文字の文字列）

ff....ff

問い合わせ種別

MGR：キューマネジャです。

UUID：キューマネジャ識別子です。

QUE：キューです。

YYYY-MM-DD

作成日付（年-月-日）

作成日付は，システムの設定日付で表示されます。

HH.MM.SS

作成時刻（時.分.秒）

作成時刻は，システムの設定時刻で表示されます。

gg....gg

問い合わせを実行したチャネル名1（1～20文字のMQ文字列）

問い合わせを実行したチャネル名1が設定されていない場合，****を表示します。

hh....hh

問い合わせを実行したチャネル名2（1～20文字のMQ文字列）

問い合わせを実行したチャネル名2が設定されていない場合，****を表示します。

ii....ii

返却結果

YES：返却結果があります。

NO：返却結果がありません。

WAIT：問い合わせ中です。

注意事項

リポジトリ管理サーバが開始していない場合はエラーになります。また，指定した情報が存在しない場合もエラーになります。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA26162-E | 指定したオブジェクト名が誤っています。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31030-E | コマンド実行中に異常を検知しました。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31123-I | ヘルプメッセージ | 標準出力
KFCA31124-E | リポジトリ管理サーバが起動されていません。 | 標準エラー出力
KFCA31172-E | 指定した情報は存在しません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力
KFCA31205-I | 継続情報が存在します。 | 標準出力

mqrrefresh（リポジトリ情報の再作成）

形式

mqrrefresh  〔｛-f｜〔-m〕〔-t〕｝〕｛-c クラスタ名｜-a｝

機能

リポジトリ情報を削除し，再作成します。

オプションの指定と削除するリポジトリ情報について，次の表に示します。

表6-2　オプションの指定と削除するリポジトリ情報

リポジトリ情報
すべて省略
-f
-m
-t
-m -t

フルリポジトリキューマネジャ情報
（フルリポジトリのクラスタレシーバチャネル情報）
×
○
×
×
×

パーシャルリポジトリキューマネジャ情報
（パーシャルリポジトリのクラスタレシーバチャネル情報）
×
○
○
×
○

リモートに存在するクラスタキュー情報
○
○
○
○
○

マネジャ問い合わせ情報
×
○
○
×
○

キュー問い合わせ情報
○
○
○
×
×

（凡例）

○：削除します。

×：削除しないで残します。

コマンドを入力する状況と指定するオプションについて，次の表に示します。

表6-3　コマンドを入力する状況と指定するオプション

コマンドを入力する状況
指定するオプション

相手システムのクラスタキューを使用できない場合
すべて省略

次に示す条件を同時に満たす場合

相手システムのクラスタキューを使用できません。

相手システム（フルリポジトリキューマネジャ）のクラスタレシーバチャネルを認識できません。

-f

次に示す条件を同時に満たす場合

相手システムのクラスタキューを使用できません。

相手システム（パーシャルリポジトリキューマネジャ）のクラスタレシーバチャネルを認識できません。

-m

次に示す条件を同時に満たす場合

相手システムのクラスタキューを使用できません。

以前のアクセス時にフルリポジトリキューマネジャに場所を問い合わせたオブジェクトを，あらかじめmqrrefreshコマンド入力時に問い合わせておきます。

-t

次に示す条件を同時に満たす場合

相手システムのクラスタキューを使用できません。

相手システム（パーシャルリポジトリキューマネジャ）のクラスタレシーバチャネルを認識できません。

以前のアクセス時にフルリポジトリキューマネジャに場所を問い合わせたオブジェクトを，あらかじめmqrrefreshコマンド入力時に問い合わせておきます。

-m -t

オプション

●　-f

フルリポジトリキューマネジャ情報を再作成します。

このオプションを省略すると，フルリポジトリキューマネジャについての情報は再作成されません。

●　-m

リモートのパーシャルリポジトリキューマネジャ情報を削除します。

●　-t

過去に問い合わせた情報を削除しないで残します。

アクセスするチャネル情報やキュー情報を保持していない場合，リポジトリ管理サーバはこれらの情報をフルリポジトリに問い合わせます。このオプションを指定すると，リポジトリ情報の再作成時に情報を削除しないで残します。

●　-c クラスタ名

　～＜1～48文字のMQ文字列＞

リポジトリ情報を再作成するクラスタ名を指定します。

●　-a

リポジトリ管理サーバが参加しているすべてのクラスタに対し，リポジトリ情報の再作成処理を行います。

実行手順

クラスタキューにアクセスするすべてアプリケーションを終了します。

mqtstpchaコマンドでクラスタレシーバチャネルを終了します。

SYSTEM.CLUSTER.TRANSMIT.QUEUEにメッセージが滞留していないことを確認します。
KFCA16350-I，KFCA16351-IまたはKFCA16352-Wが出力されることを確認してください。
クラスタセンダチャネルは，mqtstpchaコマンドを入力すると，該当チャネルに割り当てられたメッセージを別のチャネルで送信するため，メッセージ送信経路の再設定処理を行います。再設定処理では，転送キューに登録されているメッセージを再登録します。
KFCA16350-I，KFCA16351-IまたはKFCA16352-Wが出力されない場合は，mqtstpcha -fコマンドを入力してチャネルを強制解放してください。

チャネル状態を確認して，送達未確認メッセージがないことを確認します。
チャネルの送達未確認メッセージがないことを確認するには，mqtlschaコマンドで，クラスタセンダチャネルの状態を確認します。

mqtlscha -n クラスタセンダチャネル名

送達未確認メッセージがある場合は，必ずそれを解決してから作業を進めてください。
解決しないでmqrrefreshコマンドを実行するとメッセージが二重に送信されるおそれがあります。

mqrrefreshコマンドを実行します。
KFCA31526-IおよびKFCA31527-Iが出力されることを確認してください。
KFCA31526-Iが出力されない場合，コマンドが異常終了しているおそれがあります。原因を取り除き，再度mqrrefreshコマンドを実行してください。KFCA31527-Iが出力されない場合，リポジトリ管理サーバが開始していることを確認してください。

クラスタレシーバチャネルを開始します（mqtstachaコマンドを実行します）。

クラスタセンダチャネルを開始します（mqtstachaコマンドを実行します）。
KFCA31529-Iが出力されることを確認してください。

注意事項

リポジトリ管理サーバが開始していない場合はエラーとなります。また，指定したクラスタに参加していない場合もエラーとなります。

リポジトリ情報の再作成処理中にMQSET命令を発行したり，mqasetコマンドを入力したりした場合，フルリポジトリに情報が反映されるのは再作成処理終了メッセージが出力されたあとになります。

フルリポジトリでキューマネジャをクラスタから強制的に除去したあとにmqrrefreshコマンドを実行する場合は，10秒以上経過してから実行してください。強制的な除去はフルリポジトリ側だけの処理となりパーシャルリポジトリに通知は来ないため，メッセージを表示できません。このためフルリポジトリ側の処理完了をパーシャルリポジトリ側の運用者が待つ必要があります。
10秒経過していない場合，mqrrefreshコマンドは無視され，再作成処理完了メッセージは出力されません。この状態になったときは，TP1/Message Queueで，再度mqrrefresh -fコマンドを実行してください。

再作成処理中にmqrsupまたはOpenTP1が異常終了した場合，再作成処理は中断されます。その後，mqrsup開始時に再作成処理は再開されますが，その際再びKFCA31527-Iメッセージが出力されます。

KFCA31526-Iメッセージ出力後KFCA31529-Iメッセージ出力までの間は，クラスタに未参加となるため，リモートのクラスタキューに対するMQOPEN，MQPUT，およびMQPUT1命令がエラーとなる場合があります。リフレッシュ処理完了後，再度MQOPEN，MQPUT，およびMQPUT1命令を発行してください。

SYSTEM.CLUSTER.TRANSMIT.QUEUEにメッセージが滞留している状態で-mオプションを指定しmqrrefreshコマンドを実行した場合，メッセージがあて先キューに送信されないで，クラスタ転送キューに滞留した状態となります。必ずメッセージが滞留していないことを確認してください。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31030-E | コマンド実行中に異常を検知しました。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31124-E | リポジトリ管理サーバが起動されていません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力
KFCA31502-E | MQIでエラーが発生しました | メッセージログファイル
KFCA31526-I | リポジトリ管理サーバに処理を依頼しました。 | メッセージログファイル
KFCA31528-I | ヘルプメッセージ | 標準出力
KFCA31530-E | リポジトリ管理サーバは指定したクラスタに参加していません。 | 標準エラー出力
KFCA31531-E | クラスタは再作成処理中です。 | 標準エラー出力
KFCA31536-E | リポジトリ管理サーバへの処理依頼に失敗しました。 | メッセージログファイル
KFCA31538-E | 指定したクラスタ名が誤っています。 | 標準エラー出力

mqrremove（クラスタからの脱退）

形式

mqrremove  〔｛-s｜-q｝〕｛-c クラスタ名｜-a｝

機能

リポジトリ管理サーバにクラスタからの脱退または脱退解除を依頼します。

リポジトリ管理サーバは参加済みのクラスタに所属するクラスタレシーバチャネルについてフルリポジトリキューマネジャに削除依頼を送信します。または脱退済みのクラスタに所属するクラスタレシーバチャネルについてフルリポジトリキューマネジャに追加依頼を送信します。

mqrremoveコマンドの使用手順については，「2.8.13　高度な作業」を参照してください。

オプション

●　-s

クラスタからの脱退を解除します。

●　-q

フルリポジトリキューマネジャのリポジトリから不要なキュー情報を削除する場合に指定します。ローカルのクラスタキュー情報の削除をフルリポジトリに通知します。

●　-c クラスタ名

　～＜1～48文字のMQ文字列＞

脱退または脱退解除するクラスタ名を指定します。

●　-a

リポジトリ管理サーバが参加しているすべてのクラスタから脱退します。または，脱退しているすべてのクラスタから脱退解除します。

注意事項

リポジトリ管理サーバが開始していない場合はエラーとなります。また，指定したクラスタ名が存在しない場合またはクラスタの参加状態がオプションと異なる場合もエラーとなります。

脱退が完了するのは，クラスタメッセージがフルリポジトリに送信された時です。OpenTP1を終了する前に，SYSTEM.CLUSTER.TRANSMIT.QUEUEの中にメッセージが滞留していないことを確認してください。メッセージが滞留している状態で，OpenTP1を終了しキューファイルの再作成を行った場合は，脱退処理が完了していません。脱退する場合はクラスタを管理しているフルリポジトリからRESET CLUSTERコマンドに自システムのキューマネジャ名を指定して実行してください。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA04307-E | 指定したオプションの数が誤っています。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31030-E | コマンド実行中に異常を検知しました。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31124-E | リポジトリ管理サーバが起動されていません。 | 標準エラー出力
KFCA31172-E | 指定した情報は存在しません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力
KFCA31526-I | リポジトリ管理サーバに処理を依頼しました。 | メッセージログファイル
KFCA31530-E | リポジトリ管理サーバは指定したクラスタに参加していません。 | 標準エラー出力
KFCA31532-I | ヘルプメッセージ | 標準出力
KFCA31536-E | リポジトリ管理サーバへの処理依頼に失敗しました。 | メッセージログファイル
KFCA31537-E | リポジトリ管理サーバは指定したクラスタから脱退していません。 | 標準エラー出力
KFCA31538-E | 指定したクラスタ名が誤っています。 | 標準エラー出力

mqrswptrc（MQRトレースの強制スワップ）

形式

mqrswptrc

機能

MQRトレースを強制的にMQRトレースファイルにスワップします。

このコマンドはリポジトリ管理サーバユーザサービス定義ファイル（$DCCONFPATH/mqrsup）で，MQRトレース情報を出力することを指定（DCMQA_TRACE_STATUSにYを指定）した場合に有効になります。このコマンドを実行するとメモリ中のMQRトレースがMQRトレースファイルに出力されます。

リポジトリ管理サーバユーザサービス定義ファイル（$DCCONFPATH/mqrsup）で，MQRトレース情報を出力しないことを指定（DCMQA_TRACE_STATUSにNを指定）した場合は，このコマンドを入力してもMQRトレースはMQRトレースファイルに出力されません。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA04208-E | MQAサーバのV/Rが誤っています。 | 標準エラー出力
KFCA04209-E | メモリ不足で処理を続行できません。 | 標準エラー出力
KFCA04300-E | コマンドで指定した引数の数が正しくありません。 | 標準エラー出力
KFCA04301-E | 定義解析中にエラーが発生しました。 | 標準エラー出力
KFCA04302-E | MQAサービスが終了処理中です。 | 標準エラー出力
KFCA04303-E | RPCでネットワーク障害が発生しました。 | 標準エラー出力
KFCA04304-E | MQAサービスが起動されていません。 | 標準エラー出力
KFCA26184-E | プロセス固有領域のメモリ不足で処理を続行できません。 | 標準エラー出力
KFCA31115-E | コマンドに対して処理結果を送信できません。 | メッセージログファイル
KFCA31120-E | RPCインタフェースで異常を検知しました。 | 標準エラー出力
KFCA31124-E | リポジトリ管理サーバが起動されていません。 | 標準エラー出力
KFCA31173-E | OpenTP1がオンライン状態ではないため，コマンドを実行できません。 | 標準エラー出力

mqtaltcha（チャネル属性の変更）

形式

mqtaltcha 〔-s  MQT通信プロセス識別子〕  -n  チャネル名
         〔-l perm｜temp〕
           -o " 〔｛ohostname=相手システムのホスト名
                   ｜oipaddr=相手システムのIPアドレス｝〕
                〔｛oservname=相手システムのサービス名
                   ｜oportno=相手システムのポート番号｝〕"

機能

チャネル定義（TCP定義のmqtalccha定義コマンド）に指定されたチャネルの属性（通信相手システム）を変更します。

このコマンドは，チャネル状態が「チャネル使用不可」または「チャネル停止」の場合に使用できます。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtaltchaコマンドを実行します。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

属性を変更するチャネルの名称を指定します。ただし，クラスタセンダチャネルの名称は指定できません。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，アスタリスク（*）を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルの属性を変更します。

　先行文字列*：先行文字列で始まるチャネルの属性を変更します。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-l perm｜temp

　～《temp》

このコマンドで変更したチャネル属性をいつまで有効にするか指定します。

perm
次回以降のOpenTP1開始時もこのコマンドで変更後のチャネル属性を有効にします。ただし，チャネル情報を引き継がない状態でOpenTP1を正常開始すると無効になり，TCP定義のmqtalccha定義コマンドで指定した値に戻ります。
チャネル状態を引き継がないようにする条件については，「5.3(2)　チャネル情報を引き継がない条件」を参照してください。

temp
このコマンドで変更後のチャネル属性を，動作中のOpenTP1を終了するまで有効にします。次回以降のOpenTP1開始時は，このコマンドで変更後のチャネル属性は無効になり，TCP定義のmqtalccha定義コマンドで指定した値に戻ります。
また，permを指定して属性を変更したあと，tempを指定して属性を設定すると，次回以降のOpenTP1開始時にはTCP定義のmqtalccha定義コマンドに指定した値に戻ります。

このオプションを省略すると，tempが設定されます。

●　-o

（オペランド）

チャネルを確立する相手システムを変更する場合に指定します。また，LANを二重化した構成では，ネットワークを変更できます。

変更するチャネルがコーラ側の場合だけこのオプションは有効です。また，チャネルタイプがレシーバ，クラスタセンダ，またはクラスタレシーバの場合は指定できません。

チャネルタイプがサーバで，リクエスタの相手システムの情報を無効にする場合は""だけを指定してください。

ohostname=相手システムのホスト名
　～＜1～255バイトの文字列＞
ホスト名ファイルに登録した相手システムのホスト名を指定します。

oipaddr=相手システムのIPアドレス
　～＜符号なし整数＞((0～255))
相手システムのIPアドレスを指定します。指定形式はnnn.nnn.nnn.nnnです。nnnの値は0～255まで指定できます。nnnの値として先頭に0を指定した場合は，8進数値として扱われます。

oservname=相手システムのサービス名
　～＜1～32文字の識別子(ハイフン（-）含む＞
相手システムのサービス名を指定します。

oportno=相手システムのポート番号
　～＜符号なし整数＞((1024～65535))
相手システムのポート番号を指定します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | コマンドを正常に受け付けました。 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16386-I | mqtalcchaコマンドの入力形式の表示 | 標準出力
KFCA16387-I | チャネル属性を変更しました。 | 標準出力
KFCA16388-I | 変更したチャネル属性の表示 | 標準出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力

mqtdmped（MQT通信プロセス情報の表示）

形式

mqtdmped  -i  スナップダンプファイル名
       〔-n  チャネル名〕
       〔-q  相手キューマネジャ名〕
       〔-k  出力情報種別〕

機能

mqtlschaコマンドで取得したスナップダンプの情報を編集して，標準出力に出力します。

オプション

●　-i スナップダンプファイル名

　～＜1～32文字の英数字＞

mqtlschaコマンドで取得したスナップダンプファイル名を指定します。

スナップダンプファイルのパス名には，コマンドを実行した環境のカレントパスが設定されます。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

状態を表示するチャネルの名称を指定します。

-kオプションにmqcdが指定されている場合に有効です。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，アスタリスク（*）を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルを編集の対象にします。

　先行文字列*：先行文字列で始まるチャネルを編集の対象にします。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-q 相手キューマネジャ名

　～＜1～48文字のMQ文字列＞

状態を表示するチャネルの相手キューマネジャ名を指定します。

-kオプションにmqcdが指定されている場合に有効です。

複数の相手キューマネジャ名を指定する場合は，引用符（"）で囲んで，相手キューマネジャ名と相手キューマネジャ名との間を空白で区切ります（コマンド入力可能な，けた数を指定できます）。同一相手キューマネジャ名は，重複して指定できません。

また，相手キューマネジャ名は，*を使って一括指定ができます。一括指定は，一つだけ指定できます。一括指定と一括指定以外の相手キューマネジャ名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルを編集の対象にします。

　先行文字列*：先行文字列で始まる相手キューマネジャ名が一致するチャネルの情報を標準出力に出力します。

＜複数指定の例＞

相手キューマネジャ名1，相手キューマネジャ名2，および相手キューマネジャ名3を指定する場合

-q "相手キューマネジャ名1△相手キューマネジャ名2△相手キューマネジャ名3"

＜一括指定の例＞

QM1，QM2，およびQM3を一括して指定する場合

-q "QM*"

-nオプションと-qオプションを同時に省略すると，すべてのチャネルを編集の対象にします。

●　-k 出力情報種別

　～＜文字列＞《mqcd》

スナップダンプファイルから編集する情報の種別を指定します。次に示す種別を一つ以上指定できます。

mqcd
チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）を編集の対象にします。

process
MQT通信プロセスの共通情報を編集の対象にします。

複数の種別を指定する場合は，引用符（"）で囲んで，種別と種別との間を空白で区切ります。

出力形式

KFCA16361-I PROCESS状態表示を開始します。
*************************************************************************
* Snap dumping information edit display  Date：yyyy-mm-dd  Time：hh.mm.ss *
* Snap dumping information extraction    Date：yyyy-mm-dd  Time：hh.mm.ss *
*************************************************************************

********************
***    PROCESS   ***
********************
btim(基本タイマ値)
bmtim(基本タイマ値(ミリ秒))
InitQName(イニシエーションキュー名)
InitQMonType(a1....a1イニシエーションキュー監視方式)
PortNum(開始要求受信ポートのポート番号)
ServName(開始要求受信ポートのサービス名)
itim(イニシエーションキュー監視タイマ値)
stim(チャネル要求監視間隔)
etim(終了処理監視タイマ値)
rtim(チャネル確立完了監視タイマ値)
TraceDisk(b1....b1MQTトレースのディスク出力要否)
TraceBufCnt(MQTトレースのバッファ格納個数)
TraceFilCnt(MQTトレースのファイル個数)
TraceBufSize(c1....c1MQTトレースのバッファサイズ)
TraceFilePath(MQTトレースのディスク出力先パス名)

*****************
***    MQCD   ***
*****************
ChannelName(チャネル名)
PartnerQMName(接続先キューマネジャ名)
DefineType(aa....aa)
＜Common＞
Version(MQCDのバージョン)
ChannelType(bb....bb)
ClusterName(クラスタ名)
BatchSize(バッチサイズ)
XmitQName(転送キュー名)
MaxMsgLength(最大メッセージ長)
MaxSegLength(最大セグメントサイズ)
SeqNumberWrap(メッセージシーケンス番号ラップ値)
BufType(cc....cc)
SendBufGroup(送信バッファグループ番号)
ReceiveBufGroup(受信バッファグループ番号)
MsgEdtBufGroup(メッセージ編集出口編集用バッファグループ番号)
MsgEdtBufCount(メッセージ編集出口編集用バッファ数)
StartType(dd....dd)

＜Separate＞
LongRetryType(ee....ee)
LongRetryCount(長期確立時再試行の回数)
LongRetryInterval(長期確立時再試行の間隔)
OwnIPAddr(自ホストIPアドレス)
OwnHostName(自ホストのホスト名)
OwnPortNum(自ホストのポート番号)
OwnServName(自ホストのサービス名)
PartnerIPAddr(相手ホストのIPアドレス)
PartnerHostName(相手ホストのホスト名)
PartnerPortNum(相手ホストのポート番号)
PartnerServName(相手ホストのサービス名)
ConRspRecvInterval(チャネル確立応答受信監視タイマ値)
RspMsgRecvInterval(確認メッセージ受信監視タイマ値)
NextSegRecvInterval(継続セグメント受信監視タイマ値)
DiscInterval(転送キュー監視間隔)
DiscIntervalCount(転送キュー監視回数)
DiscInterval2(切断時間間隔)
DiscInterval2Effect(ff....ff)
TimeoutConRetry(gg....gg)
NextMsgRecvInterval(継続メッセージ受信監視タイマ値)
HeartbeatInterval(ハートビートフロー間の時間)
BatchInterval(バッチ終了待ちタイマ値)
MsgEdtUserData(hh....hh)
TcpSendBufLength(ii....ii)
TcpRecvBufLength(jj....jj)
ConvCCSID(変換後CCSID)
NonPersistentMsgSpeed(kk....kk)
TranQMonType(ll....ll)
NetworkPriority(ネットワーク接続優先順位)
AlterTime(mm....mm)
MsgChaProRetry(nn....nnMQプロトコル障害確立再試行要否)
Adoptchk(oo....oo強制再接続条件)
ShortRetryType(pp....pp短期確立再試行の要否)
ShortRetryCount(短期確立再試行の回数)
ShortRetryInterval(短期確立再試行の間隔)
SendUserData(qq....qq送信出口ユーザデータ)
ReceiveUserData(rr....rr受信出口ユーザデータ)
SecurityUserData(ss....ssセキュリティ出口ユーザデータ)
SendExit(tt....tt送信出口名)
RcvExit(uu....uu受信出口名)
MsgExit(vv....vvメッセージ出口名)
ScyExit(ww....wwセキュリティ出口名)
Descr(xx....xx注釈)
MCAUser(yy....yyMCAユーザID)
MCAType(zz....zzMCAタイプ)
TcpRetryCount(TCP/IP確立確認の回数)
TcpRetryInterval(TCP/IP確立確認の間隔)
SndJnlIO(AA....AA送信チャネルジャーナル出力条件)
BatchMilInterval(バッチ終了待ちタイマ値(ミリ秒))
OwnPortAltNum(自システムのポート番号使用数)

詳細説明（process）

MQT通信プロセスの共通情報が数値（10進数）または文字で表示されます。

ただし，次に示す項目は独自の形式で表示されます。

a1....a1

イニシエーションキュー監視方式

TIME：タイマ方式

EVENT：イベント方式

b1....b1

MQTトレースのディスク出力要否

NO：MQTトレースのディスク出力抑止中

YES：MQTトレースのディスク出力中

c1....c1

MQTトレースのバッファサイズ

4の倍数に切り上げて補正した値が表示されます。

詳細説明（mqcd）

チャネルデータ定義ブロックに設定されている値が数値（10進数）または文字で表示されます。

ただし，次に示す項目は独自の形式で表示されます。

aa....aa

定義種別

MANLINST：

MQT通信構成定義で指定されたクラスタレシーバ以外のチャネルです。

AUTOINST：

リポジトリ情報によって，自動的に作成されたクラスタセンダチャネルです。

INSTMODL：

MQT通信構成定義で指定されたクラスタレシーバチャネルの属性です。

MULTINST：

INSTMODLによって作成されたクラスタレシーバチャネルのインスタンスです。

bb....bb

チャネルタイプ

DCMTCQ_MQCHT_SENDER：センダ

DCMTCQ_MQCHT_SERVER：サーバ

DCMTCQ_MQCHT_RECEIVER：レシーバ

DCMTCQ_MQCHT_REQUESTER：リクエスタ

DCMTCQ_MQCHT_CLUSSDR：クラスタセンダ

DCMTCQ_MQCHT_CLUSRCVR：クラスタレシーバ

cc....cc

バッファ方式

DCMTCQ_MQBUFT_SEG：セグメント方式

DCMTCQ_MQBUFT_MSG：メッセージ方式

dd....dd

チャネル確立方式

DCMTCQ_MQSTART_AUTO：

トリガ起動またはネットワークリクエストによって，チャネルを自動確立します。

DCMTCQ_MQSTART_AUTO2：

MQTサーバのサービス開始直後にチャネルを自動確立します。

DCMTCQ_MQSTRAT_MANUAL：

チャネルをmqtstachaコマンド入力によって確立します。

ee....ee

長期確立時再試行の要否

DCMTCQ_MQLRTY_YES：長期確立再試行を実行します。

DCMTCQ_MQLRTY_NO：長期確立再試行を実行しません。

ff....ff

切断時間間隔使用の要否

DCMTCQ_DINT2EFC_YES：

切断時間間隔（DiscInterval2）による監視をします。

DCMTCQ_DINT2EFC_NO：

切断時間間隔（DiscInterval2）による監視をしません。

gg....gg

タイムアウト時チャネル確立再試行の要否

DCMTCQ_MQTIMO_YES：チャネル確立再試行を実行します。

DCMTCQ_MQTIMO_NO：チャネル確立再試行を実行しません。

hh....hh

メッセージ編集出口ユーザデータ

32バイトのユーザデータを16進数および文字で表示します。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

ii....ii

TCP/IP出力用バッファ長

0：システムのデフォルトバッファ長を使用

0以外：TCP/IP出力用バッファ長

jj....jj

TCP/IP入力用バッファ長

0：システムのデフォルトバッファ長を使用

0以外：TCP/IP入力用バッファ長

kk....kk

非永続メッセージが送信される速度

DCMTCQ_MQNPMS_NORMAL：標準速度

DCMTCQ_MQNPMS_FAST：高速度

ll....ll

転送キュー監視方式

DCMTCQ_MQTRNQS_TIMER：タイマ方式

DCMTCQ_MQTRNQS_EVENT：イベント方式

mm....mm

チャネル定義の更新日時

yyyy-mm-dd hh.mm.ss

年-月-日 時.分.秒

特定できない場合は"****-**-** **.**.**"が表示されます。

nn....nn

MQプロトコル障害確立再試行要否

DCMTCQ_MQMCP_YES：確立再試行を実行します。

DCMTCQ_MQMCP_NO：確立再試行を実行しません。

oo....oo

強制再接続条件

DCMTCQ_MQADPCK_OFF

強制再接続を実行しません。

DCMTCQ_MQADPCK_NAME

チャネル名が一致した時，強制再接続を実行します。

DCMTCQ_MQADPCK_QMGR

チャネル名と相手キューマネジャ名が一致した時，強制再接続を実行します。

DCMTCQ_MQADPCK_IPADDR

チャネル名と相手IPアドレスが一致した時，強制再接続を実行します。

DCMTCQ_MQADPCK_ALL

チャネル名，相手キューマネジャ名，および相手IPアドレスが一致した時，強制再接続を実行します。

pp....pp

短期確立再試行の要否

DCMTCQ_MQSRTY_YES：短期確立再試行を実行します。

DCMTCQ_MQSRTY_NO：短期確立再試行を実行しません。

qq....qq

送信出口ユーザデータ

32バイトのユーザデータが16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

rr....rr

受信出口ユーザデータ

32バイトのユーザデータが16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

ss....ss

セキュリティ出口ユーザデータ

32バイトのユーザデータが16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

tt....tt

送信出口名

128バイトの送信出口名が16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

uu....uu

受信出口名

128バイトの受信出口名が16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

vv....vv

メッセージ出口名

128バイトのメッセージ出口名が16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

ww....ww

セキュリティ出口名

128バイトのセキュリティ出口名が16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

xx....xx

注釈

64バイトの注釈が16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

yy....yy

MCAユーザID

64バイトのMCAユーザIDが16進数，および文字で表示されます。

XX…XX CC…CC

XX…XX：16進数

CC…CC：文字（表示可能なASCII文字以外は，'.'を出力します）

zz....zz

MCAタイプ

DCMTCQ_MQMCATYPE_PROCESS：プロセス

DCMTCQ_MQMCATYPE_THREAD：スレッド

AA....AA

送信チャネルジャーナル出力条件

DCMTCQ_SNDJNL_FLUSH：即時フラッシュ（ディスク出力）を行います。

DCMTCQ_SNDJNL_NOFLUSH：即時フラッシュ（ディスク出力）を行いません。

注意事項

チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）の出力形式は，すべてのチャネルタイプで共通です。そのため，チャネルタイプによっては有効でない属性の値も表示されます。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16361-I | 状態表示を開始します。 | 標準出力
KFCA16362-I | 状態表示を終了します。 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA31920-I | mqtdmpedコマンドの入力形式の表示 | 標準出力
KFCA31921-E | ファイルの編集中に入出力障害が発生しました。 | 標準エラー出力
KFCA31922-E | ファイルに対するアクセス権がありません。 | 標準エラー出力
KFCA31923-E | 指定したファイルは存在しません。 | 標準エラー出力
KFCA31924-E | ファイルに異常が発生しました。 | 標準エラー出力

mqted（MQTトレースファイルの編集出力）

形式

mqted -i  MQTトレースファイル名
      〔{-k 出力情報種別〔,出力情報種別〕…｜-p}〕
      〔-t 開始日時〔,終了日時〕〕
      〔-n チャネル名〔,チャネル名〕…〕
      〔-q 相手キューマネジャ名〔,相手キューマネジャ名〕…〕
      〔-c クラスタ名〔,クラスタ名〕…〕

機能

MQTトレースファイルを入力にして，編集結果を標準出力に出力します。

オプション

●　-i MQTトレースファイル名

　～＜1～64バイトのパス名＞

MQTトレースファイルのパス名を指定します。ファイル名だけを指定した場合，カレントディレクトリのMQTトレースファイルが編集されます。絶対パス名で指定した場合，指定したディレクトリのMQTトレースファイルが編集されます。

●　-k 出力情報種別

　～＜文字列＞

出力情報の種別を指定します。次に示す種別を一つ以上指定できます。

mgr：接続先のキューマネジャ名を出力します。

ip：接続先のIPアドレスを出力します。

port：接続先のポート番号を出力します。

clus：接続先のクラスタ名を出力します。

msg：転送メッセージ情報を出力します。転送メッセージが先頭セグメントまたは単一セグメントの場合に出力します。

複数指定する場合は，種別と種別との間をコンマ（,）で区切ります。複数を指定する場合の指定順序はありませんが，同一種別は重複して指定できません。

なお，mgr，ip，portおよびclusを同時に指定した場合は，キューマネジャ名，IPアドレス，ポート番号およびクラスタ名の順序で出力されます。

●　-p

トレース取得日時情報の出力を指定します。

-kオプションと同時には指定できません。-t，-n，-qまたは-cオプションと同時に指定した場合，条件に一致するMQTトレース情報のトレース取得日時情報が出力されます。

条件に一致するMQTトレース情報がない場合は，****/**/** **:**:**(******)が出力されます。

●　-t 開始日時〔,終了日時〕

　～＜文字列＞《00000001011970,23595912319999》

出力対象の日時を指定します。開始日時および終了日時は次に示す形式で指定します。

hhmmss〔MMDD〔YYYY〕〕

hh：時（00～23）

mm：分（00～59）

ss：秒（00～59）

MM：月（01～12）

DD：日（01～31）

YYYY：年（西暦1970～9999）

開始日時と終了日時を指定する場合は，開始日時≦終了日時である必要があります。このオプションを省略した場合，または終了日時を省略した場合は，次に示すとおりに設定されます。

開始日時の省略値：00000001011970（00時00分00秒01月01日1970年）

終了日時の省略値：23595912319999（23時59分59秒12月31日9999年）

●　-n チャネル名

　～＜1～20文字のMQ文字列＞《すべてのチャネル名》

出力対象となる，チャネルの名称を指定します。

チャネル名を指定しない場合は，すべてのチャネル名の情報を出力対象とします。

複数指定する場合は，チャネル名とチャネル名との間をコンマ（,）で区切ります。また，複数指定する場合の文字列は256文字以内（コンマを含む）で指定してください。

●　-q 相手キューマネジャ名

　～＜1～48文字のMQ文字列＞《すべての相手キューマネジャ名》

出力対象となる，チャネルの相手キューマネジャ名を指定します。

相手キューマネジャ名を指定しない場合は，すべての相手キューマネジャ名の情報を出力対象とします。

複数指定する場合は，相手キューマネジャ名と相手キューマネジャ名との間をコンマ（,）で区切ります。また，複数指定する場合の文字列は256文字以内（コンマを含む）で指定してください。

●　-c クラスタ名

　～＜1～48文字のMQ文字列＞《すべてのクラスタ名》

出力対象となる，チャネルのクラスタ名を指定します。

クラスタ名を指定しない場合は，すべてのクラスタ名の情報を出力対象とします。

複数指定する場合は，クラスタ名とクラスタ名との間をコンマ（,）で区切ります。また，複数指定する場合の文字列は256文字以内（コンマを含む）で指定してください。

クラスタプロセスではないMQTプロセスが出力したMQTトレースファイルにこのオプションを指定した場合は共通情報だけが出力されます。

出力形式

共通情報

個別情報（-kオプションを省略した場合）

個別情報（-kにmgrを指定した場合）

個別情報（-kにipを指定した場合）

個別情報（-kにportを指定した場合）

個別情報（-kにclusを指定した場合）

個別情報（-kにmgr,ipを指定した場合）

個別情報（-kにmsgを指定した場合）

個別情報（-pを指定した場合）

YYYY/MM/DD HH:MM:SS

編集出力の実行時刻（年/月/日 時:分:秒）

NNNNNN

トレース通番（6けたの10進数）

999999の次は000000に戻ります。

yyyy/mm/dd

トレースを取得した日付（年月日）

hh:mm:ss(mmmmmm)

トレースを取得した時刻（時:分:秒(マイクロ秒)）

Windowsの場合はマイクロ秒ではなくミリ秒で出力されます。

aa...aa:bbb

チャネル名（1～20文字の文字列）:チャネルタイプ

snd：センダ

rcv：レシーバ

srv：サーバ

req：リクエスタ

csn：クラスタセンダ

crc：クラスタレシーバ

cc...cc

イベント情報（1～17文字の文字列）

出力されるイベント情報と意味について，次の表に示します。

表6-4　出力されるイベント情報と意味

イベント | 意味
種類 | 情報
チャネルの確立・解放 | Connect | チャネル確立
DisConnect | チャネル解放
バッチ処理 | Commit | バッチ処理成功
Rollback | バッチ処理失敗
送信チャネル | Recv(ERR) | 送達確認（失敗）受信
Recv(OK) | 送達確認（成功）受信
Send(C) | 送達確認要求送信
Send(F) | 先頭セグメント送信
Send(F+L) | 単一セグメント送信
Send(F+L+C) | 単一セグメント＋送達確認要求送信
Send(L) | 最終セグメント送信
Send(L+C) | 最終セグメント＋送達確認要求送信
Send(M) | 中間セグメント送信
受信チャネル | Recv(C) | 送達確認要求受信
Recv(F) | 先頭セグメント受信
Recv(F+L) | 単一セグメント受信
Recv(F+L+C) | 単一セグメント＋送達確認要求受信
Recv(L) | 最終セグメント受信
Recv(L+C) | 最終セグメント＋送達確認要求受信
Recv(M) | 中間セグメント受信
Send(ERR) | 送達確認（失敗）送信
Send(OK) | 送達確認（成功）送信

dd...dd

相手キューマネジャ名（1～48文字のMQ文字列）

表示する情報がない場合はピリオド（.）が48文字出力されます。

ee...ee

相手システムのIPアドレス（1～15文字の文字列）

ff...ff

相手システムのポート番号（1～5けたの10進数）

gg...gg

クラスタ名（1～48文字のMQ文字列）

表示する情報がない場合はピリオド（.）が48文字出力されます。

a1...a1

メッセージシーケンス番号（1～9けたの16進数）

b1...b1

メッセージ総サイズ（1～8けたの10進数）

プロトコルヘッダ，および転送キューヘッダ（MQXQH構造体）の長さは含まれません。

c1...c1

セグメント番号（1～9けたの16進数）

d1...d1

セグメントサイズ（1～8けたの10進数）

プロトコルヘッダの長さは含まれません。転送キューヘッダ（MQXQH構造体）の長さは含まれます。

e1...e1

リモートキュー名（1～48文字の文字列）

配布リストメッセージを送受信する場合は，何も出力しません。

f1...f1

リモートキューマネジャ名（1～48文字の文字列）

配布リストメッセージを送受信する場合は，何も出力しません。

g1...g1

構造体識別子（文字列）

h1...h1

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

i1...i1

報告オプション（16進数）

j1...j1

メッセージタイプ（16進数）

k1...k1

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

l1...l1

報告メッセージ返答コード（16進数）

m1...m1

マシンコード形式（16進数）

n1...n1

文字セット識別子（16進数）

o1...o1

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

p1...p1

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

q1...q1

メッセージ永続性

MQPER_PERSISTENT：永続メッセージ

MQPER_NOT_PERSISTENT：非永続メッセージ

r1...r1

メッセージ識別子（文字列）

s1...s1

メッセージ識別子（16進数）

t1...t1

相関識別子（文字列）

u1...u1

相関識別子（16進数）

v1...v1

ロールバック回数（10進数）

w1...w1

応答キュー名（文字列）

x1...x1

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

y1...y1

ユーザ識別子（文字列）

z1...z1

ユーザ識別子（16進数）

a2...a2

課金トークン（文字列）

b2...b2

課金トークン（16進数）

c2...c2

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

d2...d2

アプリケーション識別データ（16進数）

e2...e2

登録アプリケーションタイプ（16進数）

f2...f2

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

g2...g2

登録日付（文字列）

h2...h2

登録時刻（文字列）

i2...i2

登録元データ（文字列）

j2...j2

最初に取得したMQTトレースのトレース取得日時情報

yyyy/mm/dd hh:mm:ss(mmmmmm)の形式で出力されます。

k2...k2

最後に取得したMQTトレースのトレース取得日時情報

yyyy/mm/dd hh:mm:ss(mmmmmm)の形式で出力されます。

出力例
センダチャネルの確立後に一つのメッセージが送信され，1分後にセンダチャネルを解放した場合の出力例（-k mgrを指定した場合）を次に示します。
これは製品が提供するサンプルコードにあるホスト1のCHA01チャネルの動作に相当します。サンプルコードのシステム構成については，4章の「システム構成例」を参照してください。

注意事項

バージョンおよびOSが異なるTP1/Message Queueによって出力されたMQTトレースファイルを指定した場合の動作は保証されません。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA18383-E | MQTトレース編集に必要なローカルメモリが確保できません。 | 標準エラー出力
KFCA18393-E | MQTトレースファイルの入出力中に障害が発生しました。 | 標準エラー出力
KFCA31949-I | mqtedコマンドの入力形式の表示 | 標準出力

mqtlscha（チャネルの状態表示）

形式

mqtlscha  〔-s  MQT通信プロセス識別子〕
         ｛-n  チャネル名｜-q 相手キューマネジャ名
                        ｜-n チャネル名 -q 相手キューマネジャ名｜-D ｝

機能

チャネルの状態を標準出力に出力します。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対してmqtlschaコマンドが実行されます。このとき，MQTサーバが開始された順序で情報が表示されます。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

状態を表示するチャネルの名称を指定します。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルの状態を標準出力に出力します。

　先行文字列*：先行文字列で始まるチャネルの状態を標準出力に出力します。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-q 相手キューマネジャ名

　～＜1～48文字のMQ文字列＞

状態を表示するチャネルの相手キューマネジャ名を指定します。

複数の相手キューマネジャ名を指定する場合は，引用符（"）で囲んで，相手キューマネジャ名と相手キューマネジャ名との間を空白で区切ります（コマンド入力可能な，けた数を指定できます）。同一相手キューマネジャ名は，重複して指定できません。

また，相手キューマネジャ名は，*を使って一括指定ができます。一括指定は，一つだけ指定できます。一括指定と一括指定以外の相手キューマネジャ名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルの状態を標準出力に出力します。

　先行文字列*：先行文字列で始まる相手キューマネジャ名が一致するチャネルを開始します。

＜複数指定の例＞

相手キューマネジャ名1，相手キューマネジャ名2，および相手キューマネジャ名3を指定する場合

-q "相手キューマネジャ名1△相手キューマネジャ名2△相手キューマネジャ名3"

＜一括指定の例＞

QM1，QM2，およびQM3を一括して指定する場合

-q "QM*"

●　-D

MQT通信プロセスのスナップダンプファイルを取得します。

このオプションは，mqtdmpedコマンドの入力情報およびMQT通信プロセスの保守情報を採取する場合に使用します。

スナップダンプファイル名：$DCDIR/spool/mqtdmpXX

（XX：MQT通信プロセス識別子）

このオプションは，通信プロセスで動作しているMCAの動作を一時的に中断します。そのため，MCAが送受信中の場合には相手システムが通信の監視タイマにタイムアウトを検出することがありますので注意してください。

出力形式

mqtlschaコマンドを実行した結果，出力される情報を次に示します。

KFCA16361-I CHAの状態表示を開始します。
KFCA16379-I mmm aa....aa:ttt チャネル状態=cc....cc
           転送キュー名=qq....qq
KFCA31931-I 定義種別=dd....dd
KFCA16380-I シーケンス番号最大値=rr....rr
           最大メッセージ長=ss....ss
           バッチサイズ=bb....bb
KFCA16383-I 仕掛かりシーケンス番号=tt....tt
           完了シーケンス番号=nn....nn LUWID=ll....ll
           メッセージ送達未確認=iii
KFCA16389-I プロトコルレベル=u メッセージ編集出口=vvv
           配布リスト=www 非永続メッセージ転送速度=xx....xx
           ハートビート=yyy(zz....zz)
KFCA31930-I 相手キューマネジャ名=mm....mm
KFCA16388-I 相手システム=(oo....oo，pp....pp)
KFCA31936-I 自システム=(OO....OO，PP....PP)
KFCA31932-I 経路再設定中＝eee
KFCA16381-I 開始時刻　YYYY/MM/DD-hh:mm:ss 転送メッセージ数=ee....ee
KFCA31935-I ZZZZ/NN/EE-ii:nn:tt以降の転送メッセージ総数=TT....TT
KFCA31933-I 短期確立再試行回数の残数=SS....SS
           長期確立再試行回数の残数=LL....LL
KFCA31934-I クラスタ名=CC....CC
KFCA16362-I CHAの状態表示を終了します。

mmm

MQT識別子

aa....aa

チャネル名

ttt

チャネルタイプ

snd：センダ

rcv：レシーバ

srv：サーバ

req：リクエスタ

csn：クラスタセンダ

crc：クラスタレシーバ

cc....cc

チャネル状態

STOPPED:チャネル停止です。

STARTING：MCA起動中です。

BINDING：チャネル確立中です。

RUNNING：チャネル動作中です。

STOPPING：チャネル解放中です。

RETRYING：チャネル確立リトライ中です。

DISABLED：チャネル使用不可です。

REQUESTING：チャネル確立リクエスト中です。

qq....qq

転送キュー名

チャネルタイプがsnd，srv，またはcsnの場合は転送キュー名

チャネルタイプがrcv，req，またはcrcの場合は"****"

dd....dd

定義種別

MANLINST：

MQT通信構成定義で指定されたクラスタレシーバ以外のチャネルです。

AUTOINST：

リポジトリ情報によって，自動的に作成されたクラスタセンダチャネルです。

INSTMODL：

MQT通信構成定義で指定されたクラスタレシーバチャネルの属性です。

MULTINST：

INSTMODLによって作成されたクラスタレシーバチャネルのインスタンスです。

rr....rr

メッセージシーケンス番号の最大値（チャネル定義の値）

ss....ss

最大メッセージ長

アプリケーションのメッセージの最大長です。MQXQH構造体の長さは含みません。

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル確立リトライ中」または「チャネル使用不可」の場合
チャネル定義の値が表示されます。

チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，または「チャネル確立リクエスト中」の場合
相手チャネルとネゴシエーションした値が表示されます。

bb....bb

バッチサイズ

バッチサイズは，MCPで規定された1回のメッセージ転送単位で転送するメッセージの個数です。

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル確立リトライ中」または「チャネル使用不可」の場合
チャネル定義の値が表示されます。

チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，または「チャネル確立リクエスト中」の場合
相手チャネルとネゴシエーションした値が表示されます。

tt....tt

最終仕掛かりメッセージのメッセージシーケンス番号

処理中メッセージのメッセージシーケンス番号が表示されます。

チャネル情報を引き継がないで開始し，バッチ処理を始めるまでの間は，"0"が表示されます。バッチ転送中は1ずつ増加します。mqtrstchaコマンドを実行すると，リセットした値が表示されます（ただし，バッチ転送中の場合，およびメッセージの送達が未確認の場合は，リセットした値は表示されません）。

チャネルタイプがsnd，srv，またはcsnの場合
バッチ処理中に障害が発生すると，メッセージ送達未確認が"NO"のときはバッチ処理開始前の値に戻ります。メッセージ送達未確認が"YES"のときは戻りません。

チャネルタイプがrcv，req，またはcrcの場合
バッチ処理中に障害が発生すると，バッチ処理開始前の値に戻ります。

nn....nn

最終完了メッセージのメッセージシーケンス番号

処理が完了したメッセージのメッセージシーケンス番号が表示されます。

チャネル情報を引き継がないで開始し，バッチ処理を始めるまでの間は，"0"が表示されます。バッチ処理中は，1ずつ増加します。

チャネルタイプがsnd，srv，またはcsnの場合
バッチ処理中に障害が発生すると，メッセージ送達未確認が"NO"のときはバッチ処理開始前の値に戻ります。メッセージ送達未確認が"YES"のときは戻りません。

チャネルタイプがrcv，req，またはcrcの場合
バッチ処理中に障害が発生すると，バッチ処理開始前の値に戻ります。

ll....ll

LUWID（16進数）

LUWIDは，MCPで規定された1回のメッセージ転送単位を管理するためのIDです。

チャネル情報を引き継がないで開始し，バッチ処理を始めるまでの間は，"00…00"が表示されます。

チャネルタイプがsnd，srv，またはcsnの場合
メッセージ送達未確認が"YES"のときは，最終仕掛かりバッチのLUWIDが表示されます。また，メッセージ送達未確認が"NO"のときは，最終完了バッチのLUWIDが表示されます。

チャネルタイプがrcv，req，またはcrcの場合
最終完了バッチのLUWIDが表示されます。

iii

メッセージの送達未確認

YES：未確認です。

NO：確認済みです。

チャネルタイプがrcv，reqの場合は常に"NO"が表示されます。

u

プロトコルレベル

チャネルで使用するプロトコルレベル

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル確立リトライ中」または「チャネル使用不可」の場合
"4"が表示されます。

チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，または「チャネル確立リクエスト中」の場合
相手チャネルとネゴシエーションした値が表示されます。

vvv

メッセージ編集出口呼び出しの有無

メッセージ編集出口UOCを組み込んでMQTサーバを作成し，該当チャネル定義のバッファ方式にメッセージ方式（msg）を指定した場合，またはチャネルタイプがcsnまたはcrcの場合"ON"が表示されます。バッファ方式にセグメント方式（seg）を指定した場合"OFF"が表示されます。

ON：出口呼び出しがあります。

OFF：出口呼び出しがありません。

www

配布リスト付きメッセージ転送機能の有無

ON：配布リスト転送があります。

OFF：配布リスト転送がありません。

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル確立リトライ中」または「チャネル使用不可」の場合
チャネル定義のバッファ方式にメッセージ方式（msg）を指定した場合は"ON"になります。セグメント方式（seg）を指定した場合は"OFF"になります。

チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，または「チャネル確立リクエスト中」の場合
相手チャネルとネゴシエーションした結果が表示されます。プロトコルレベルが1の場合は，"OFF"になります。

xx....xx

非永続メッセージ転送速度

NORMAL：標準速度

FAST：高速度

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル確立リトライ中」または「チャネル使用不可」の場合
チャネル定義の値が表示されます。

チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，または「チャネル確立リクエスト中」の場合
相手チャネルとネゴシエーションした結果が表示されます。プロトコルレベルが1の場合は，"NORMAL"になります。

yyy

ハートビートメッセージ転送機能の有無

ON：ハートビート転送があります。

OFF：ハートビート転送がありません。

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル確立リトライ中」または「チャネル使用不可」の場合
チャネル定義のハートビート間隔が0の場合は"OFF"，以外の場合は"ON"になります。

チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，または「チャネル確立リクエスト中」の場合
相手チャネルとネゴシエーションした結果の値が表示されます。プロトコルレベルが1の場合は，"OFF"になります。

zz....zz

ハートビート間隔

ハートビート転送機能が"OFF"の場合，"0"が表示されます。

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル確立リトライ中」または「チャネル使用不可」の場合
チャネル定義の値が表示されます。

チャネル状態が「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，または「チャネル確立リクエスト中」の場合
相手チャネルとネゴシエーションした結果の値が表示されます。プロトコルレベルが1の場合は，"0"になります。

mm....mm

相手システムのキューマネジャ名

不明な場合，またはプロトコルレベル1で接続中の場合は"****"が表示されます。

oo....oo

相手システムのホスト名，またはIPアドレス

ホスト名は32バイトまで表示されます。ホスト名が33バイト以上の場合は，"ホスト名..."の形式で表示されます。

pp....pp

相手システムのサービス名，またはポート番号

KFCA16388-Iメッセージは，相手システムが定義されていない場合，出力されません。KFCA16388-Iの出力条件については，次の表を参照してください。

表6-5　KFCA16388-Iの出力条件

チャネルタイプ | チャネル状態
チャネル停止 | MCA起動中 | チャネル確立中 | チャネル動作中 | チャネル解放中 | チャネル確立リトライ中 | チャネル使用不可 | チャネル確立リクエスト中
センダ | △ | △ | ○ | ○ | ○ | △ | △ | －
レシーバ | × | × | ○ | ○ | ○ | × | × | －
サーバ | △ | △ | ○ | ○ | ○ | △ | △ | －
リクエスタ | △ | △ | ○ | ○ | ○ | △ | △ | ○
クラスタセンダ | △ | △ | ○ | ○ | ○ | △ | △ | －
クラスタレシーバ | × | × | ○ | ○ | ○ | × | × | －

（凡例）

○：接続した相手システムのIPアドレスとポート番号をログ出力します。

△：システム定義またはmqtaltchaコマンドで変更した，相手システムのホスト名またはIPアドレスと，サービス名またはポート番号をログ出力します。サーバまたはリクエスタで値がない場合（定義の指定がないまたはmqtaltchaコマンドで値が設定されていない）は，ログ出力しません。

×：ログ出力しません。

－：あり得ない状態なのでログ出力しません。

OO....OO

自システムのIPアドレス

PP....PP

自システムのポート番号

KFCA31936-Iメッセージは，チャネルがコーラ側として動作し，かつチャネル状態が「チャネル動作中」「チャネル解放中」の場合に出力されます。

eee

経路再設定状態

YES：メッセージ送信経路の再設定処理を実行しています。

NO：メッセージ送信経路の再設定処理は実行していません。

KFCA31932-Iメッセージは，チャネルタイプがcsnの場合だけ出力されます。

YYYY/MM/DD-hh:mm:ss

年（西暦）/月/日-時:分:秒（MCA開始時刻）

MCA開始時刻が出力されます。MCAは運用コマンド，トリガ起動，ネットワークリクエスト，またはシステム起動によって開始されます。

MCAの開始についての詳細は，「2.3.5　チャネルの開始」を参照してください。なお，確立再試行はMCAの開始に含まれません。そのため，確立再試行によってチャネルが確立してもMCA開始時刻は更新されません。

チャネル状態が「チャネル停止」，または「チャネル使用不可」の場合
表示されません。

チャネル状態が「MCA起動中」，「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，「チャネル確立リトライ中」，または「チャネル確立リクエスト中」の場合
表示されます。

ee....ee

転送完了したメッセージ数

チャネル状態が「チャネル停止」，または「チャネル使用不可」の場合
表示されません。

チャネル状態が「MCA起動中」，「チャネル確立中」，「チャネル動作中」，「チャネル解放中」，「チャネル確立リトライ中」，または「チャネル確立リクエスト中」の場合
チャネル確立後，転送が完了したメッセージ数が出力されます。チャネルを解放すると，0に戻ります。

ZZZZ/NN/EE-ii:nn:tt

年（西暦）/月/日-時:分:秒（1回目のMCA開始時刻）

MQTサービス開始後の1回目のMCA開始時刻が出力されます。

MCAを開始していない場合は，MQTサービス開始時刻が出力されます。

TT....TT

転送メッセージ総数

2147483647を超えた場合は1に戻ります。

MQTサービス開始後にバッチ転送が完了したメッセージ数が出力されます。次に示す状態の場合，あて先キューのメッセージ数と転送メッセージ総数は一致しません。

転送メッセージがファーストメッセージの場合で，あて先キューへの登録を失敗した場合

あて先数が2以上の配布リストメッセージを送受信する場合

SS....SS

短期確立再試行回数の残数

チャネル状態が「チャネル確立中」，「チャネル確立リトライ中」，または「チャネル確立リクエスト中」の場合
短期確立再試行回数の残数を表示します。

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル動作中」，「チャネル解放中」，または「チャネル使用不可」の場合
チャネル定義の値を表示します。

mqtalccha定義コマンドの-b bretryオペランドにnoを指定している場合は，常に0が表示されます。

LL....LL

長期確立再試行回数の残数

チャネル状態が「チャネル確立中」，「チャネル確立リトライ中」，または「チャネル確立リクエスト中」の場合
長期確立再試行回数の残数を表示します。

チャネル状態が「チャネル停止」，「MCA起動中」，「チャネル動作中」，「チャネル解放中」，または「チャネル使用不可」の場合
チャネル定義の値を表示します。

mqtalccha定義コマンドの-b bretryオペランドにnoを指定している場合は，常に0が表示されます。

KFCA31933-Iメッセージは，チャネルタイプがsnd，srv，req，csnの場合だけ出力されます。

CC....CC

クラスタ名

KFCA31934-Iメッセージは，チャネルタイプがcsnまたはcrcの場合だけ出力されます。

接続先のキューマネジャで，ネームリスト中にクラスタ名を定義している場合は，そのネームリストで定義したクラスタ名のどれか一つが表示されます。参加しているクラスタ名を表示するには，mqrlsコマンドを使用してください。

注意事項

クラスタレシーバプロセスに，チャネルインスタンスがない状態では，MQT通信構成定義に指定した属性だけを表示します。

クラスタレシーバプロセスに，複数のチャネルインスタンスがある場合，-nオプションを指定するとすべてのインスタンスに対して有効になります。チャネルインスタンスを特定する場合，-qオプションを指定してください。

クラスタレシーバチャネル以外のチャネルは，-qオプションには，"*"だけ指定できます。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16358-I | mqtlschaコマンドの入力形式の表示 | 標準出力
KFCA16361-I | 状態表示を開始します。 | 標準出力
KFCA16362-I | 状態表示を終了します。 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16379-I | チャネル状態の表示 | 標準出力
KFCA16380-I | チャネル状態の表示 | 標準出力
KFCA16381-I | チャネル状態の表示 | 標準出力
KFCA16383-I | チャネル状態の表示 | 標準出力
KFCA16388-I | チャネル状態の表示 | 標準出力
KFCA16389-I | チャネル状態の表示 | 標準出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力
KFCA31930-I | チャネル状態の表示 | 標準出力
KFCA31931-I | チャネル状態の表示 | 標準出力
KFCA31932-I | チャネル状態の表示 | 標準出力
KFCA31933-I | チャネル状態の表示 | 標準出力
KFCA31934-I | チャネル状態の表示 | 標準出力
KFCA31935-I | チャネル状態の表示 | 標準出力
KFCA31936-I | チャネル状態の表示 | 標準出力

mqtpngcha（チャネルのテスト接続）

形式

mqtpngcha  〔-s  MQT通信プロセス識別子〕 -n  チャネル名
          〔-d  データ長〕

機能

チャネルを開始し，最大セグメントサイズ以内のデータ送受信ができるかどうかを確認します。

このコマンドはチャネルタイプがセンダ，サーバ（コーラの場合），またはクラスタセンダの場合だけ有効です。

また，このコマンドはチャネル状態が「チャネル停止」，「チャネル使用不可」，または「チャネル確立リトライ中」であれば受け付けられますが，それ以外の場合は受け付けられません。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtpngchaコマンドを実行します。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

開始できるかどうかを確認したいチャネルの名称を指定します。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルが開始できるかを確認します。

　先行文字列*：先行文字列で始まるチャネルが開始できるかを確認します。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-d データ長

　～＜符号なし整数＞((16～32768))《16》（単位：バイト）

送信データ（Pingデータ）長を指定します。

送信データ長は複数指定できません。

送信データ長は，「ネゴシエーション後の最大セグメントサイズ－28」以下の値を指定してください。「ネゴシエーション後の最大セグメントサイズ－28」よりも大きい値が指定された場合は，「ネゴシエーション後の最大セグメントサイズ－28」が指定されたと仮定して処理します。

注意事項

クラスタセンダチャネルは，該当するチャネルに割り当てられたメッセージを現状の最適なチャネルへ割り当て直す機能（メッセージ送信経路の再設定）を持っています。機能が動作している間は，このコマンドを入力できません。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | コマンドを正常に受け付けました。 | 標準出力
KFCA16360-I | mqtpngchaコマンドの入力形式の表示 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力

mqtrlvcha（メッセージ送達未確認の解決）

形式

mqtrlvcha  〔-s  MQT通信プロセス識別子〕 -n  チャネル名
            -a  ｛commit｜backout｝

機能

送信側MCAがメッセージの送達を確認できないで終了した場合，メッセージ送達未確認状態が発生します。この状態で何らかの理由によってチャネルの再開始ができない場合に未確認状態を解決し，チャネルを確立できるようにします。

このコマンドはチャネルタイプがセンダ，サーバ，またはクラスタセンダの場合だけ有効です。また，チャネル状態が「チャネル停止」または「チャネル使用不可」で，メッセージの送達が未確認の場合に受け付けられます。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtrlvchaコマンドを実行します。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

メッセージの未確認状態を解決するチャネルのチャネル名を指定します。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルが開始できるかを確認します。

　先行文字列*：先行文字列で始まるチャネルが開始できるかを確認します。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-a commit｜backout

メッセージの送達未確認状態の解決方法を指定します。

commit：メッセージをコミット（転送キューから削除）します。

backout：メッセージをロールバック（転送キューに戻す）します。

このオプションの指定がチャネル再確立時のチャネルの解決方法と異なる場合，メッセージを二重送信したり，失ったりすることがあります。

注意事項

クラスタセンダチャネルは，該当するチャネルに割り当てられたメッセージを現状の最適なチャネルへ割り当て直す機能（メッセージ送信経路の再設定）を持っています。機能が動作している間は，このコマンドを入力できません。

送信チャネルジャーナル出力条件（mqtalccha定義コマンド-jn sndjnlオペランド）にnoflushを指定した場合，メッセージ送達未確認状態のメッセージが受信側チャネルで受信を完了している状態で-aオプションにbackoutを指定すると不正なメッセージが送信されることがあります。必ず受信側チャネルの状態を確認してからこのコマンドを使用してください。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | コマンドを正常に受け付けました。 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16384-I | mqtrlvchaコマンドの入力形式の表示 | 標準出力
KFCA16385-E | コミットを失敗しました。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力

mqtrstcha（メッセージシーケンス番号のリセット）

形式

mqtrstcha  〔-s  MQT通信プロセス識別子〕
          ｛-n チャネル名 ｜ -q 相手キューマネジャ名
                         ｜ -n チャネル名 -q 相手キューマネジャ名 ｝
          〔-m  メッセージシーケンス番号〕

機能

メッセージシーケンス番号をリセットします。

センダ，サーバ，またはクラスタセンダにmqtrstchaコマンドが入力された場合は，コマンドを入力した側のMCAが持つメッセージシーケンス番号をリセットし，さらに，通信相手側のレシーバ，リクエスタ，およびクラスタレシーバのメッセージシーケンス番号も同じ値にリセットします。

レシーバ，リクエスタ，またはクラスタレシーバにmqtrstchaコマンドが入力された場合は，コマンドを入力した側のMCAが持つメッセージシーケンス番号だけをリセットします。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtrstchaコマンドを実行します。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

メッセージシーケンス番号をリセットしたいチャネルの名称を指定します。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルのメッセージシーケンス番号をリセットします。

　先行文字列*：先行文字列で始まるチャネルのメッセージシーケンス番号をリセットします。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-q 相手キューマネジャ名

　～<1～48文字のMQ文字列>

メッセージシーケンス番号をリセットするチャネルの相手キューマネジャ名を指定します。

複数の相手キューマネジャ名を指定する場合は，引用符（"）で囲んで，相手キューマネジャ名と相手キューマネジャ名との間を空白で区切ります（コマンド入力可能な，けた数を指定できます）。同一相手キューマネジャ名は，重複して指定できません。

また，相手キューマネジャ名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の相手キューマネジャ名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルのメッセージシーケンス番号をリセットします。

　先行文字列*：先行文字列で始まる相手キューマネジャ名が一致するチャネルのメッセージシーケンス番号をリセットします。

＜複数指定の例＞

相手キューマネジャ名1，相手キューマネジャ名2，および相手キューマネジャ名3を指定する場合

-q "相手キューマネジャ名1△相手キューマネジャ名2△相手キューマネジャ名3"

＜一括指定の例＞

QM1，QM2，およびQM3を一括して指定する場合

-q "QM*"

●　-m メッセージシーケンス番号

　～＜符号なし整数＞((1～999999999))《1》

リセットしたい値を指定します。

メッセージシーケンス番号は複数指定できません。

この値は，TCP定義のmqtalccha定義コマンドの-wオプションで指定したメッセージシーケンス番号の最大値より小さい値を指定してください。

1を指定，または省略した場合，メッセージシーケンス番号は1にリセットされます。

注意事項

クラスタレシーバプロセスに，チャネルインスタンスがない状態では，このコマンドは使用できません。

クラスタレシーバプロセスに複数のチャネルインスタンスが存在する場合，-nオプションを指定するとすべてのインスタンスに対して有効になります。チャネルインスタンスを特定する場合は，-qオプションを使用してください。

クラスタレシーバチャネル以外のチャネルは，-qオプションに"*"だけ指定できます。

リセットしたシーケンス番号は，チャネル確立後初めて行うメッセージ送受信で使用します。そのため，チャネル確立後メッセージ送受信を行ったあとでリセットしたシーケンス番号は，一度チャネルを解放し，再度チャネルを確立したあとのメッセージ送受信で使用します。
シーケンス番号をリセットして，チャネルを確立するまでの間は，mqtlschaコマンドの仕掛かりシーケンス番号にはリセットしたシーケンス番号が表示されます。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | コマンドを正常に受け付けました。 | 標準出力
KFCA16359-I | mqtrstchaコマンドの入力形式の表示 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16382-I | メッセージシーケンス番号が不当です。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力

mqtstacha（チャネルの開始）

形式

mqtstacha 〔-s  MQT通信プロセス識別子〕
         ｛-n チャネル名 ｜ -q 相手キューマネジャ名
                         ｜ -n チャネル名 -q 相手キューマネジャ名 ｝
         〔-a〕

機能

チャネルを開始します。

レシーバチャネル，またはクラスタレシーバチャネルに対して入力された場合，チャネルは開始しませんが，メッセージチャネルエージェントは起動可能になります。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtstachaコマンドを実行します。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

開始するチャネルのチャネル名を指定します。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルを開始します。

　先行文字列*：先行文字列で始まるチャネルを開始します。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-q 相手キューマネジャ名

　～<1～48文字のMQ文字列>

開始するチャネルの相手キューマネジャ名を指定します。

複数の相手キューマネジャ名を指定する場合は，引用符（"）で囲んで，相手キューマネジャ名と相手キューマネジャ名との間を空白で区切ります（コマンド入力可能な，けた数を指定できます）。同一相手キューマネジャ名は，重複して指定できません。

また，相手キューマネジャ名は，*を使って一括指定ができます。一括指定は，一つだけ指定できます。一括指定と一括指定以外の相手キューマネジャ名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルを開始します。

　先行文字列*：先行文字列で始まる相手キューマネジャ名が一致するチャネルを開始します。

＜複数指定の例＞

相手キューマネジャ名1，相手キューマネジャ名2，および相手キューマネジャ名3を指定する場合

-q "相手キューマネジャ名1△相手キューマネジャ名2△相手キューマネジャ名3"

＜一括指定の例＞

QM1，QM2，およびQM3を一括して指定する場合

-q "QM*"

●　-a

チャネル開始要求を送信しないで，状態だけを「チャネル使用不可」から「チャネル停止」にします。相手システムが指定されたチャネル（TCP定義のmqtalccha定義コマンドの-oオプションの指定あり）の場合，チャネル開始要求を送信しません。省略した場合はチャネルを開始（チャネル開始要求の送信）します。

相手システムを指定していない場合は，このオプションの指定は意味を持ちません。このオプションはチャネル状態が「チャネル使用不可」の場合だけ指定できます。

注意事項

クラスタレシーバプロセスに，チャネルインスタンスがない状態では，このコマンドは使用できません。

クラスタレシーバプロセスに複数のチャネルインスタンスが存在する場合，-nオプションを指定するとすべてのインスタンスに対して有効になります。チャネルインスタンスを特定する場合は，-qオプションを使用してください。

クラスタレシーバチャネル以外のチャネルは，-qオプションに"*"だけ指定できます。

クラスタセンダチャネルは，該当するチャネルに割り当てられたメッセージを現状の最適なチャネルへ割り当て直す機能（メッセージ送信経路の再設定）を持っています。機能が動作している間は，このコマンドを入力できません。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | 運用コマンドを正常に受け付けました。 | 標準出力
KFCA16356-I | mqtstachaコマンドの入力形式の表示 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力

mqtstatrc（MQTトレースのディスク出力機能の開始）

形式

mqtstatrc  〔-s  MQT通信プロセス識別子〕

機能

オンライン中にMQTトレースのディスク出力機能を開始します。MQTトレースについては，「7.4.1　MQTトレースファイルの出力」を参照してください。

このコマンドは，mqttcp，mqttcpcsまたはmqttcpcr定義コマンドの-t diskオペランドにnoを指定している場合，mqtstptrcコマンド入力後のMQTトレースファイルのディスク出力を開始できます。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtstatrcコマンドを実行します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | コマンドを正常に受け付けました。 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力
KFCA31947-I | mqtstatrcコマンドの入力形式の表示 | 標準出力

mqtstpcha（チャネルの終了）

形式

mqtstpcha  〔-s  MQT通信プロセス識別子〕
          ｛-n チャネル名 ｜ -q 相手キューマネジャ名
                         ｜ -n チャネル名 -q 相手キューマネジャ名 ｝
          〔-f〕

機能

チャネルを終了します。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtstpchaコマンドを実行します。

●　-n チャネル名

　～＜1～20文字のMQ文字列＞

終了するチャネルの名称を指定します。

複数のチャネル名を指定する場合は，引用符（"）で囲んで，チャネル名とチャネル名との間を空白で区切ります。同一チャネル名は，重複して指定できません。

また，チャネル名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のチャネル名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルを終了します。

　先行文字列*：先行文字列で始まるチャネルを終了します。

＜複数指定の例＞

cha1，cha2，およびcha3を指定する場合

-n "cha1 cha2 cha3"

＜一括指定の例＞

chaで始まるすべてのチャネルを指定する場合

-n "cha*"

●　-q 相手キューマネジャ名

　～<1～48文字のMQ文字列>

終了するチャネルの相手キューマネジャ名を指定します。

複数の相手キューマネジャ名を指定する場合は，引用符（"）で囲んで，相手キューマネジャ名と相手キューマネジャ名との間を空白で区切ります（コマンド入力可能な，けた数を指定できます)。同一相手キューマネジャ名は，重複して指定できません。

また，相手キューマネジャ名は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の相手キューマネジャ名を混在して指定できません。一括名は引用符（"）で囲んで指定します。

　*：すべてのチャネルを終了します。

　先行文字列*：先行文字列で始まる相手キューマネジャ名が一致するチャネルを終了します。

＜複数指定の例＞

相手キューマネジャ名1，相手キューマネジャ名2，および相手キューマネジャ名3を指定する場合

-q "相手キューマネジャ名1△相手キューマネジャ名2△相手キューマネジャ名3"

＜一括指定の例＞

QM1，QM2，およびQM3を一括して指定する場合

-q "QM*"

●　-f

該当するチャネルを強制的に終了します。省略した場合は，処理中のメッセージの処理が完了後，終了します。

注意事項

クラスタレシーバプロセスに，チャネルインスタンスがない状態では，このコマンドは使用できません。

クラスタレシーバプロセスに複数のチャネルインスタンスが存在する場合，-nオプションを指定するとすべてのインスタンスに対して有効になります。チャネルインスタンスを特定する場合は，-qオプションを使用してください。

クラスタレシーバチャネル以外のチャネルは，-qオプションに"*"だけ指定できます。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | 運用コマンドを正常に受け付けました。 | 標準出力
KFCA16357-I | mqtstpchaコマンドの入力形式の表示 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16366-E | 該当するチャネルがありません。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力

mqtstptrc（MQTトレースのディスク出力機能の終了）

形式

mqtstptrc  〔-s  MQT通信プロセス識別子〕

機能

オンライン中にMQTトレースのディスク出力機能を終了します。

このコマンドは，mqttcp，mqttcpcsまたはmqttcpcr定義コマンドの-t diskオペランドにyesを指定している場合，およびmqtstatrcコマンド入力後のMQTトレースファイルのディスク出力を終了できます。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtstptrcコマンドを実行します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16355-I | 運用コマンドを正常に受け付けました。 | 標準出力
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16365-E | 運用コマンドを無視しました。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力
KFCA31948-I | mqtstptrcコマンドの入力形式の表示 | 標準出力

mqtswptrc（MQTトレースの強制スワップ）

形式

mqtswptrc 〔-s  MQT通信プロセス識別子〕

機能

MQTトレースを強制的にMQTトレースファイルにスワップします。

TCP定義でトレースファイルのディスク出力機能を使用することを指定（TCP定義のmqttcp定義コマンド，mqttcpcs定義コマンド，またはmqttcpcr定義コマンドの-t diskオペランドにyesを指定）した場合，このコマンドを入力すると，メモリ中のMQTトレースをMQTトレースファイルに出力します。ディスク出力機能を使用しないことを指定（TCP定義のmqttcp定義コマンド，mqttcpcs定義コマンド，またはmqttcpcr定義コマンドの-t diskオペランドにnoを指定）していても，このコマンドを入力するとメモリ中のMQTトレースをMQTトレースファイルに出力します。

オプション

●　-s MQT通信プロセス識別子

　～＜16進数字＞((01～ff))

MQT通信プロセス識別子を指定します。

MQT通信プロセス識別子は複数指定できません。

このオプションを省略すると，すべてのMQTサーバに対して，mqtswptrcコマンドを実行します。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA16363-W | 入力形式に誤りがあります。 | 標準エラー出力
KFCA16364-W | 引数の指定に誤りがあります。 | 標準エラー出力
KFCA16367-E | MQT開始処理中です。 | 標準エラー出力
KFCA16368-E | MQT終了処理中です。 | 標準エラー出力
KFCA16369-E | コマンド処理中に障害が発生しました。 | 標準エラー出力
KFCA16370-I | 運用コマンドが終了しました。 | 標準出力
KFCA16371-E | MQT通信プロセスは起動されていません。 | 標準エラー出力
KFCA16372-E | コマンド応答の連絡の受信に失敗しました。 | 標準エラー出力
KFCA16373-E | コマンド応答の連絡に失敗しました。 | 標準エラー出力
KFCA16374-E | プロセスの検索に失敗しました。 | 標準エラー出力
KFCA16375-E | RPC障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16376-E | RPC障害が発生しました（通信）。 | 標準エラー出力
KFCA16377-E | ネットワーク障害が発生しました（通信）。 | 標準エラー出力
KFCA16378-E | ネットワーク障害が発生しました（コマンド）。 | 標準エラー出力
KFCA16390-E | ローカルメモリ不足が発生しました。 | 標準エラー出力
KFCA16391-E | メモリ不足が発生しました。 | 標準エラー出力
KFCA16392-E | 論理矛盾が発生しました。 | 標準エラー出力
KFCA16393-E | 障害が発生しました。 | 標準エラー出力
KFCA16394-E | 障害が発生しました。処理を続行します。 | 標準エラー出力
KFCA16395-E | 共用メモリ不足が発生しました。 | 標準エラー出力
KFCA18370-I | MQTトレースファイルへの出力を開始しました。 | メッセージログファイル
KFCA18371-I | MQTトレースファイルへの出力を終了しました。 | メッセージログファイル
KFCA31946-I | mqtswptrcコマンドの入力形式の表示 | 標準出力

7.　障害対策

この章では，TP1/Message Queueの運用中に，ファイル障害または通信障害が発生した場合の，TP1/Message Queueの対応処理およびユーザの対応処理，障害時に取得する情報について説明します。

＜この章の構成＞

7.1　ファイル障害

7.2　通信障害

7.3　ファーストメッセージ障害

7.4　障害時に取得する情報

7.1　ファイル障害

ファイルについての障害が発生した場合の対策について説明します。

＜この節の構成＞

7.1.1　キューおよびキューファイルの障害とユーザの処理

7.1.2　メッセージ送受信中の障害

7.1.3　イニシエーションキューの障害

7.1.4　キューファイルの入出力エラー

7.1.5　クラスタ環境のシステムキューの障害

7.1.1　キューおよびキューファイルの障害とユーザの処理

キューおよびキューファイルの障害に対するユーザの処理について説明します。

MQPUT命令で相手システムがメッセージを送信する場合を例にして，キューおよびキューファイルの障害発生個所について，次の図に示します。また，キューおよびキューファイルの障害とユーザの処理について，図のあとの表に示します。図中の障害の発生個所を示す番号は，表の発生個所と対応づけてあります。

図7-1　メッセージ送信中の障害発生個所

表7-1　キューおよびキューファイルの障害とユーザの処理

発生個所
障害の種類
障害内容・原因
MQAの
障害処理
ユーザの処理

1
転送キュー障害
転送キューの属性不正（登録禁止）
MQPUTまたはMQPUT1エラーリターン
MQSET命令またはmqasetコマンドで登録許可に変更後，アプリケーションを再実行してください。

転送キューの属性不正（使用方法が転送キュー（MQUS_TRANSMISSION）でない）
転送キューを再作成後，アプリケーションを再起動してください。
転送キューの再作成方法

TP1/Message Queueを終了してください。mqaqueatl定義コマンドを使用して転送キューを再作成したあと，またはmqachgqueコマンドで該当するキューの使用方法を転送キュー（MQUS_TRANSMISSION）に変更したあと，TP1/Message Queueを正常開始してください。

動的キューの場合，キューを削除（MQCLOSE命令）してください。
TP1/Message Queueを終了し，モデルキューの定義を修正後，動的キューを作成（MQOPEN命令）してください。

入力用バッファ不足（メモリ不足）

＜26188-E＞「入出力バッファが満杯」

MQAサービス定義で該当キューファイルグループの入出力バッファ数を大きくして，TP1/Message Queueを正常開始してください。

2
転送キュー障害
転送ヘッダなし，転送ヘッダ不正（転送キューに対しMQPUT命令を呼び出し）

＜16334-E＞「メッセージ異常検出」

送信側のデッドレターキューに登録，ログへメッセージ出力
リモートキューのローカル定義をオープンしMQPUT命令を呼び出すようアプリケーションを修正し，再実行してください。

2～5
キューファイル障害
入出力エラー

送信側：＜04200-E＞「I/Oエラー」

受信側：＜04200-E＞「I/Oエラー」

キューファイルを障害閉塞状態とし，アプリケーションからのアクセスはエラー
受信側にデッドレターキューあり

デッドレターキューに登録

受信側にデッドレターキューなし

非永続メッセージは損失

永続メッセージは，送信側の転送キューに戻る

「7.1.4　キューファイルの入出力エラー」を参照してください。

3
転送キュー障害
転送キューオーバフロー
MQPUTエラーリターン，通信路を回復すると，メッセージを自動送信
回線またはチャネル状態を確認して回復してください。アプリケーションを再実行してください。

4
受信キュー障害
受信キューの属性不正（登録禁止）

送信側：＜16335-W＞「デッドレターキューに登録」

受信側：＜16333-E＞「キューファイル障害発生」

チャネル停止後送信側のデッドレターキューに登録，ログへメッセージ出力
MQSET命令またはmqasetコマンドで登録許可に変更後，アプリケーションを再実行してください。

入力用バッファ不足（メモリ不足）

受信側：＜26188-E＞「入出力バッファが満杯」

受信側のデッドレターキューに登録，ログへメッセージ出力
MQAサービス定義で該当キューファイルグループの入出力バッファ数を大きくして，TP1/Message Queueを正常開始してください。

受信キュー満杯

キューの深さの最大値が小さい

キューファイル作成時（mqainitコマンド）のメッセージ数が小さい

受信側：＜16333-E＞「キューファイル障害発生」

受信側のデッドレターキューに登録，ログへメッセージ出力
受信キューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。

受信キューなし

受信キュー未作成

送信側の受信キュー指定

＜16333-E＞「キューファイル障害発生」

受信キューを再作成後，アプリケーションを再起動してください。

5
イニシエーションキュー障害
イニシエーションキューの属性不正（使用方法が正常（MQUS_NORMAL）でない）

受信側：＜04229-E＞「イニシエーションキューの使用種別」

トリガメッセージを生成しないでログへメッセージ出力
イニシエーションキューを再作成後，アプリケーションを再起動してください。
イニシエーションキューの再作成方法

TP1/Message Queueを終了してください。MQAサービス定義のmqaqueatl定義コマンドを使用してイニシエーションキューを再作成したあと，またはmqachgqueコマンドで該当するキューの使用方法をローカルキュー（MQQT_LOCAL）に変更したあと，TP1/Message Queueを正常開始してください。

動的キューの場合，キューを削除（MQCLOSE命令）してください。
TP1/Message Queueを終了し，モデルキューの定義を修正後，動的キューを作成（MQOPEN命令）してください。

イニシエーションキューの属性不正（キュータイプがローカルキュー（MQQT_LOCAL）でない）

イニシエーションキューの属性不正（登録禁止）
トリガメッセージを生成しない
MQSET命令またはmqasetコマンドで登録許可に変更後，アプリケーションを再実行してください。

イニシエーションキューを指しているローカルキューの属性不正（プロセス名の指定なし）

受信側：＜04228-E＞「プロセス定義がない」

トリガメッセージを生成しないでログへメッセージ出力
イニシエーションキュー，ローカルキュー，プロセス定義のどれかを再作成後，アプリケーションを再起動してください。
イニシエーションキューおよびローカルキューの再作成方法
「イニシエーションキューの再作成方法」を参照してください。
プロセス定義の再作成方法
TP1/Message Queueを終了し，MQAサービス定義を修正後，TP1/Message Queueを正常開始してください。

イニシエーションキューを指しているローカルキューの属性不正（プロセス名の指定はあるがプロセス定義なし）

受信側：＜04228-E＞「プロセス定義がない」

イニシエーションキュー満杯

キューの深さの最大値が小さい

キューファイル作成時（mqainitコマンド）のメッセージ数が小さい

受信側：＜04241-E＞「トリガメッセージの登録に失敗」

イニシエーションキューが存在するキューマネジャに定義されているデッドレターキューにトリガメッセージを登録し，ログへメッセージ出力
イニシエーションキューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。

イニシエーションキューなし

イニシエーションキュー未作成

送信側のイニシエーションキュー名誤り

送信側：＜04227-E＞「イニシエーションキューがない」

トリガメッセージを生成しないでログへメッセージ出力
イニシエーションキューを作成後，アプリケーションを再起動してください。またはTP1/Message Queueを終了してイニシエーションキュー名を修正（mqachgqueコマンド，モデルキュー定義修正）後，TP1/Message Queueを正常開始してください。

6
デッドレターキュー障害
デッドレターキュー満杯

キューの深さの最大値が小さい

キューファイル作成時（mqainitコマンド）のメッセージ数が小さい

送信側：＜16345-E＞「エラーデータ受信」

受信側：＜16333-E＞「キューファイル障害発生」

ログへメッセージ出力
デッドレターキューの最大メッセージ数を増やしてください。またはmqainitコマンドのメッセージ数を増やしてください。

デッドレターキューなし

デッドレターキュー未作成
受信側：＜16333-E＞「キューファイル障害発生」

送信側のデッドレターキュー名誤り
送信側：＜16333-E＞「キューファイル障害発生」

デッドレターキューを作成後，アプリケーションを再起動してください。またはTP1/Message Queueを終了し，デッドレターキュー名を修正（キューマネジャ定義修正）後，TP1/Message Queueを正常開始してください。

デッドレターキューの属性不正（登録禁止）

送信側：＜16345-E＞「エラーデータ受信」

受信側：＜16333-E＞「キューファイル障害発生」

MQSET命令またはmqasetコマンドで登録許可に変更後，アプリケーションを再実行してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

7.1.2　メッセージ送受信中の障害

＜この項の構成＞

(1)　メッセージ送信中の障害

(2)　メッセージ受信中の障害

(1)　メッセージ送信中の障害

メッセージが送信できなくなる事象が発生した場合，MQTサーバは，該当するメッセージを送信側のデッドレターキューに格納します。また，MQPUT命令で指定した応答キューに，発生した事象の内容を報告メッセージとして登録します。

(2)　メッセージ受信中の障害

MQTサーバがメッセージを受信し，送信側が指定したあて先キューへの登録が失敗した場合，該当するメッセージを受信側のデッドレターキューに格納します。また，送信側で指定した応答キューに発生した事象の内容を報告メッセージとして登録します。

7.1.3　イニシエーションキューの障害

イニシエーションキューへのトリガメッセージ登録に失敗した場合，デッドレターキューが定義されているときは，トリガメッセージはデッドレターキューに登録されます。デッドレターキューが定義されていないときは，トリガメッセージは生成されません。次に示す場合はエラーメッセージが出力されます。

イニシエーションキューがない。

受信したキューにプロセス名が定義されていない，または該当するプロセス名のプロセス定義がない。

イニシエーションキューの使用種別（Usage属性）がMQUS_NORMALでない。

イニシエーションキューを登録するキューファイルで入出力エラーが発生した。

メッセージ登録の延長でトリガメッセージの生成が失敗しても，アプリケーションはメッセージの登録に成功します。また，MCAはチャネルを解放しないで処理を続行します。

7.1.4　キューファイルの入出力エラー

キューファイルに入出力エラーが発生した場合（入出力エラーのメッセージが出力された場合，またはMQPUT命令もしくはMQGET命令の理由コードがMQRC_OBJECT_DAMAGEDの場合），障害要因を調査してキューファイル格納媒体損傷による障害かそれ以外による障害か判断し，それぞれに応じて対処します。

＜この項の構成＞

(1)　キューファイル格納媒体損傷による障害の場合

(2)　キューファイル格納媒体損傷以外による障害の場合

(1)　キューファイル格納媒体損傷による障害の場合

キューファイル格納媒体損傷による障害の場合の対処について説明します。

(a)　キューファイルの入出力エラーの対処

キューファイルに入出力エラーが発生した場合の対処について，次の図に示します。

図7-2　キューファイルの入出力エラーの対処

(b)　二重化構成しているキューファイルの入出力エラーの対処

二重化構成しているキューファイルで片系のキューファイルに入出力エラーが発生した場合の対処について，次の図に示します。

図7-3　二重化構成しているキューファイルの入出力エラーの対処

OpenTP1を正常開始する場合，前回のオンラインで二重化構成しているキューファイルの入出力エラーが発生したときは，該当するキューファイルの回復を必ず実行してください。キューファイルの回復を実行しないでOpenTP1を正常開始した場合，キューファイルの内容は保証されません。

(c)　キューファイル内のキューおよびメッセージの扱い

障害が発生したキューファイルに，キューおよびメッセージが登録されている場合があります。ファイルグループの構成例とその場合の対処について，次の図に示します。

図7-4　キューファイル内のキューおよびメッセージの扱い

(d)　キューファイルの入出力エラーの対処（MQA FRC使用時）

MQA FRC使用時のキューファイルに入出力エラーが発生した場合の対処について，次の図に示します。キューファイルのバックアップ方法，リストア方法，およびmqafrcコマンドの実行方法については，「2.2.2(12)　mqafrcコマンドの使用例（キューファイル格納媒体損傷の場合）」を参照してください。

図7-5　キューファイルの入出力エラーの対処（MQA FRC使用時）

(2)　キューファイル格納媒体損傷以外による障害の場合

キューファイル格納媒体損傷以外による障害の場合の対処について説明します。

(a)　キューファイルの入出力エラーの対処

キューファイルに入出力エラーが発生した場合の対処について，次の図に示します。

図7-6　キューファイルの入出力エラーの対処

(b)　二重化構成しているキューファイルの入出力エラーの対処

二重化構成しているキューファイルの場合，両系が正常のときにファイル入出力エラーが発生すると，エラーが発生した系のキューファイルは障害閉塞になります。

また，片系障害の状態でもう一方の系のキューファイルにファイル入出力エラーが発生すると，その系のキューファイルは一時的障害閉塞になります。

二重化構成しているキューファイルの入出力エラーについて，次の表に示します。

表7-2　二重化構成しているキューファイルの入出力エラー

障害内容 | A系ファイルの状態 | B系ファイルの状態
A系ファイルで障害発生 | 障害閉塞 | 正常
B系ファイルで障害発生 | 正常 | 障害閉塞
A系ファイル障害状態でB系ファイルで障害発生 | 障害閉塞 | 一時的障害閉塞
B系ファイル障害状態でA系ファイルで障害発生 | 一時的障害閉塞 | 障害閉塞

二重化構成しているキューファイルでA系ファイルが障害閉塞状態になったあと，B系ファイルに入出力エラーが発生した場合の対処について，次の図に示します。

なお，二重化構成しているキューファイルでA系ファイルに入出力エラーが発生した場合の対処については，「(1)(b)　二重化構成しているキューファイルの入出力エラーの対処」を参照してください。

図7-7　二重化構成しているキューファイルの入出力エラーの対処

(c)　キューファイルの入出力エラーの対処（MQA FRC使用時）

KFCA31187-Eメッセージに"物理ファイル＝cnt"が出力されたあと，mqarles -s tコマンドによって一時的障害閉塞状態を解除する前にオンラインが終了（計画停止，強制停止，または異常終了）した場合の対処について，次の図に示します。

mqafrcコマンドの実行方法については，「2.2.2(13)　mqafrcコマンドの使用例（キューファイル格納媒体損傷以外の場合）」を参照してください。

なお，次に示す場合は，OpenTP1を再開始したあとで「(a)　キューファイルの入出力エラーの対処」または「(b)　二重化構成しているキューファイルの入出力エラーの対処」の手順を実行してください。

KFCA31193-IメッセージまたはKFCA31195-Iメッセージが出力された場合

KFCA31187-Eメッセージに"物理ファイル＝msg"が出力されたあと，mqarles -s tコマンドで一時的障害閉塞状態を解除する前にオンラインが終了した場合

図7-8　キューファイルの入出力エラーの対処（MQA FRC使用時）

7.1.5　クラスタ環境のシステムキューの障害

クラスタ環境で次のシステムキューに障害が発生した場合の対処について説明します。

SYSTEM.CLUSTER.TRANSMIT.QUEUE

SYSTEM.CLUSTER.COMMAND.QUEUE

SYSTEM.CLUSTER.REPOSITORY.QUEUE

障害要因を調査してキューファイル格納媒体損傷による障害かそれ以外による障害か判断し，それぞれに応じて対処します。

＜この項の構成＞

(1)　キューファイル格納媒体損傷による障害の場合

(2)　キューファイル格納媒体損傷以外による障害の場合

(1)　キューファイル格納媒体損傷による障害の場合

キューファイル格納媒体損傷による障害の場合の対処について説明します。

(a)　キューファイルの入出力エラーの対処

クラスタ環境のシステムキューファイルに入出力エラーが発生した場合の対処について，次の図に示します。

図7-9　キューファイルの入出力エラーの対処

(b)　二重化構成しているキューファイルの入出力エラーの対処

二重化構成しているキューファイルで片系のキューファイルに入出力エラーが発生した場合の対処について，次の図に示します。

図7-10　二重化構成しているキューファイルの入出力エラーの対処

OpenTP1を正常開始する場合，前回のオンラインで二重化構成しているキューファイルの入出力エラーが発生したときは，該当するキューファイルの回復を必ず実行してください。キューファイルの回復を実行しないでOpenTP1を正常開始した場合，キューファイルの内容は保証されません。

(c)　キューファイル内のキューおよびメッセージの扱い

障害が発生したキューファイルに，キューおよびメッセージが登録されている場合があります。障害が発生したキューファイルと同一のキューファイルグループに複数ファイル指定してある場合は，障害が発生したキューファイルを含むすべてのキューファイルの状態を障害閉塞に変更後（mqagrpobsコマンド入力），障害回復を実行してください。

(d)　キューファイルの入出力エラーの対処（MQA FRC使用時）

MQA FRC使用時のキューファイルに入出力エラーが発生した場合の対処について，次の図に示します。キューファイルのバックアップ方法，リストア方法，およびmqafrcコマンドの実行方法については，「2.2.2(11)　キューファイルの回復」を参照してください。

図7-11　キューファイルの入出力エラーの対処（MQA FRC使用時）

(2)　キューファイル格納媒体損傷以外による障害の場合

キューファイル格納媒体損傷以外による障害の場合の対処について説明します。

(a)　キューファイルの入出力エラーの対処

クラスタ環境のシステムキューファイルに入出力エラーが発生した場合の対処について，次の図に示します。

図7-12　キューファイルの入出力エラーの対処

(b)　二重化構成しているキューファイルの入出力エラーの対処

二重化構成しているキューファイルの場合，両系が正常のときにファイル入出力エラーが発生すると，エラーが発生した系のキューファイルは障害閉塞になります。

また，片系障害の状態でもう一方の系のキューファイルにファイル入出力エラーが発生すると，その系のキューファイルは一時的障害閉塞になります。

二重化構成しているキューファイルの入出力エラーについて，次の表に示します。

表7-3　二重化構成しているキューファイルの入出力エラー

障害内容 | A系ファイルの状態 | B系ファイルの状態
A系ファイルで障害発生 | 障害閉塞 | 正常
B系ファイルで障害発生 | 正常 | 障害閉塞
A系ファイル障害状態でB系ファイルで障害発生 | 障害閉塞 | 一時的障害閉塞
B系ファイル障害状態でA系ファイルで障害発生 | 一時的障害閉塞 | 障害閉塞

二重化構成しているキューファイルでA系ファイルが障害閉塞状態になったあと，B系ファイルに入出力エラーが発生した場合の対処について，次の図に示します。

なお，二重化構成しているキューファイルでA系ファイルに入出力エラーが発生した場合の対処については，「(1)(b)　二重化構成しているキューファイルの入出力エラーの対処」を参照してください。

図7-13　二重化構成しているキューファイルの入出力エラーの対処

(c)　キューファイルの入出力エラーの対処（MQA FRC使用時）

KFCA31187-Eメッセージに"物理ファイル＝cnt"が出力されたあと，mqarles -s tコマンドによって一時的障害閉塞状態を解除する前にオンラインが終了（計画停止，強制停止，または異常終了）した場合の対処について，次の図に示します。

mqafrcコマンドの実行方法については，「2.2.2(13)　mqafrcコマンドの使用例（キューファイル格納媒体損傷以外の場合）」を参照してください。

なお，次に示す場合は，OpenTP1を再開始したあとで「(a)　キューファイルの入出力エラーの対処」または「(b)　二重化構成しているキューファイルの入出力エラーの対処」の手順を実行してください。

KFCA31193-IメッセージまたはKFCA31195-Iメッセージが出力された場合

KFCA31187-Eメッセージに"物理ファイル＝msg"が出力されたあと，mqarles -s tコマンドで一時的障害閉塞状態を解除する前にオンラインが終了した場合

図7-14　キューファイルの入出力エラーの対処（MQA FRC使用時）

7.2　通信障害

TP1/Message Queueのメッセージの送受信についての障害と，障害に対する処理について障害の種類ごとに説明します。

＜この節の構成＞

7.2.1　コネクション障害（コーラ側）

7.2.2　コネクション障害（レスポンダ側）

7.2.3　MCP障害（チャネル確立時の障害）

7.2.4　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害）

7.2.5　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害）

7.2.6　メモリ不足

7.2.7　MCP障害（メッセージ送信時の転送障害）

7.2.8　MCP障害（メッセージ受信時の転送障害）

7.2.9　MCP障害（デッドレターキュー障害）

7.2.10　イニシエーションキュー障害

7.2.11　時間監視障害

7.2.12　出口障害

7.2.13　OpenTP1システム，およびMQシステム障害

7.2.14　チャネル管理情報格納ファイル障害

7.2.15　トリガ起動処理障害

7.2.16　MCA数オーバ

7.2.17　通信障害時のメッセージ送受信の流れ

7.2.1　コネクション障害（コーラ側）

コネクション障害（コーラ側）の障害処理について，次の表に示します。

表7-4　コネクション障害（コーラ側）の障害処理

障害内容
MQTの障害処理
ユーザの処理

コネクション確立時の障害（重度）※1

＜16331-E＞「TCPインタフェースエラー」または＜16322-E＞「確立に失敗」

チャネルを終了します（チャネル使用不可状態）。

障害要因を取り除いたあとmqtstachaコマンドを入力してください。

コネクション確立時の障害（軽度）※2

＜16331-E＞「TCPインタフェースエラー」または＜16322-E＞「確立に失敗」

チャネル定義の確立再試行の指定によって，チャネル確立を再試行します。

再試行しない場合※³，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

障害要因を取り除いてください。3.の場合は，障害要因を取り除いたあとmqtstachaコマンドを入力してください。

メッセージ転送時の障害

＜16331-E＞「TCPインタフェースエラー」

メッセージの転送を中断します。

送信中のメッセージ※⁴は転送キューに戻し，受信中のメッセージ※⁴は破棄されます。

チャネル定義の確立再試行の指定によって，チャネル確立を再試行します。

再試行しない場合※³または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

障害要因を取り除いてください。5.の場合は，障害要因を取り除いたあとmqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

コネクション確立時の障害（重度）とは，エラーナンバENOBUFS（Windowsの場合は，WSAENOBUFS）エラーのことであり，メモリ不足によって発生します。

注※2

コネクション確立時の障害（軽度）とは，エラーナンバENOBUFS（Windowsの場合は，WSAENOBUFS）以外のエラーのことです。

注※3

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

注※4

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

7.2.2　コネクション障害（レスポンダ側）

コネクション障害（レスポンダ側）の障害処理について，次の表に示します。

表7-5　コネクション障害（レスポンダ側）の障害処理

障害内容
MQTの障害処理
ユーザの処理

コネクション確立障害

＜16331-E＞「TCPインタフェースエラー」または＜16332-W＞「TCPインタフェースエラー処理続行」

TCP/IPバッファ不足の場合だけ，ネットワークリクエスト機能を縮退します。

相手システムからの新しいチャネル開始要求を中止してください。
ネットワークリクエスト機能を使用する場合は，障害要因を取り除き，MQTサーバを再起動してください。

メッセージ転送時の障害

＜16331-E＞「TCPインタフェースエラー」

メッセージの転送を中断します。

送信中のメッセージ※は転送キューに戻し，受信中のメッセージ※は破棄されます。

チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

障害要因を取り除いてください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

7.2.3　MCP障害（チャネル確立時の障害）

MCP障害（チャネル確立時の障害）の障害処理について，次の表に示します。

表7-6　MCP障害（チャネル確立時の障害）の障害処理

障害内容
MQTの障害処理
ユーザの処理

チャネルタイプ対応不可

最大メッセージシーケンス番号不一致

同一チャネル名未定義

ネゴシエーション不可能

その他

＜16341-E＞「開始要求拒否」（コーラ側だけで出力）

チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。

再試行しない場合※，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

3.の場合は，チャネル定義を見直して，相手システムの属性と一致させたあと，mqtstachaコマンドを入力してください。

相手キューマネジャ終了中/未起動

相手システムでチャネル使用不可状態

その他

＜16341-E＞「開始要求拒否」（コーラ側だけで出力）

チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。

再試行しない場合はチャネルを終了します（チャネル停止状態）。

再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

3.または4.の場合は，相手システムでチャネル状態を確認しmqtstachaコマンドを入力してください。

チャネル状態不一致（相手からの開始要求を受信したが，チャネルは動作している）

＜16317-E＞「チャネル状態不一致発生」または＜16354-W＞「チャネル状態不一致発生開始要求受入」（レスポンダ側だけで出力）

チャネル定義の強制確立確認条件の指定によって，強制接続します。

強制接続しない場合または強制接続条件を満たさない場合は，動作中のチャネルは処理を続行し，チャネル開始要求は拒否します。

なし。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.2.4　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害）

MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害）の障害処理について，次の表に示します。

表7-7　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害）の障害処理

障害内容
MQTの障害処理
ユーザの処理

メッセージ長不正

バッチサイズ不正

セグメント番号不正

その他

＜16323-E＞「不正データ受信」または＜16324-E＞「プロトコルエラー発生」

メッセージの転送を中断します。

送信中のメッセージ※は転送キューに戻し，受信中のメッセージ※は破棄されます。

コネクションを強制解放します。

チャネルを終了します（チャネル使用不可状態）。

保守情報を取得し，mqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

7.2.5　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害）

MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害）の障害処理について，次の表に示します。

表7-8　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害）の障害処理

障害内容
MQTの障害処理
ユーザの処理

リモートキューマネジャ状態不正

セキュリティ不正

チャネル状態不正

＜16345-E＞「エラーデータ受信」

メッセージの転送を中断します。

送信中のメッセージ※は転送キューに戻し，受信中のメッセージ※は破棄されます。

コネクションを強制解放します。

コーラ側はチャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。

再試行しない場合またはレスポンダ側ではチャネルを終了します（チャネル停止状態）。

再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

相手システムの状態を確認し，mqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

7.2.6　メモリ不足

メモリ不足の障害処理について，次の表に示します。

表7-9　メモリ不足の障害処理

障害内容
MQTの障害処理
ユーザの処理

開始時のメモリ不足

受信バッファ不足（TCP定義のmqttcp定義コマンドの-gオペランド）

＜16390-E＞「ローカルメモリ不足」，＜16391-E＞「メモリ不足」，または＜16395-E＞「共用メモリ不足」

OpenTP1を終了します。

メモリサイズを見直し，再度OpenTP1システムを開始してください。

メッセージ転送時のメモリ不足

送受信バッファ不足（TCP定義のmqtalccha定義コマンドの-gオペランド）

＜16390-E＞「ローカルメモリ不足」，＜16391-E＞「メモリ不足」，または＜16330-E＞「バッファグループ番号不正」

チャネルを終了します（チャネル停止状態）。

メモリサイズを見直し，再度チャネル開始要求を出してください。
＜16330-E＞の場合はバッファグループ番号に該当するバッファ数（MQT共通定義のmqttbuf定義コマンドの-g countオペランド指定値）を大きくしてください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

7.2.7　MCP障害（メッセージ送信時の転送障害）

MCP障害（メッセージ送信時の転送障害）の障害処理について，次の表に示します。

表7-10　MCP障害（メッセージ送信時の転送障害）の障害処理

障害内容
MQTの障害処理
ユーザの処理

転送キューのメッセージ不正（チャネルの転送サイズオーバ含む）

＜16334-E＞「メッセージ異常検出」

デッドレターキューがある場合：送信中のメッセージを登録し，送信処理を続行します。

デッドレターキューがない場合（コーラ側）：
（a）送信中のメッセージ※1を転送キューに戻し，コネクションを強制解放してチャネルを終了します。
（b）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（c）再試行しないとき※2，または再試行回数を超えたときはチャネルを終了します（チャネル使用不可状態）。

デッドレターキューがない場合（レスポンダ側）：送信中のメッセージ※2を転送キューに戻し，コネクションを強制解放してチャネルを終了します（チャネル使用不可状態）。

2.の場合は，メッセージを登録したアプリケーションを起動してください。
3.の（c）または4.の場合は，転送キューから該当するメッセージを取り除き，メッセージを登録したアプリケーションを起動したあと，mqtstachaコマンドを入力してください。

メッセージ取り出し障害

＜16333-E＞「キューファイル障害発生」

メッセージ※¹の送信を中断します。

コネクションを強制解放します。

コーラ側：
（a）チャネル定義のMCP障害再試行の指定によって，再試行します。
（b）再試行しない場合※2，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

レスポンダ側：チャネルを終了します（チャネル使用不可状態）。

障害要因を取り除いたあと，4.の（b）の場合は，mqtstachaコマンドを入力してください。

メッセージシーケンス番号不一致

＜16343-E＞「シーケンス番号不一致」

メッセージの送信を中断します。

送信中のメッセージ※¹は転送キューに戻されます。

コーラ側：
（a）チャネルを終了します。
（b）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（c）再試行しない場合※2，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

mqtrstchaコマンドを入力し，番号を一致させてください。4.の（c）の場合は，mqtstachaコマンドを入力してください。

相手デッドレターキューにメッセージが登録された

＜16335-W＞「デッドレターキューに登録された」

メッセージの送信を続行します。

相手システムのデッドレターキューのメッセージを取り出し，原因を調査してください。

転送キュー重複使用

＜16315-E＞「キューが他サーバで使用中」

メッセージ※¹の送信を中断します。

コネクションを強制解放します。

コーラ側：
（a）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（b）再試行しない場合※2，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

レスポンダ側：チャネルを終了します（チャネル使用不可状態）。

自システム内のシステムサーバで該当キューが重複使用されていないか確認し，構成を変更してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

注※2

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.2.8　MCP障害（メッセージ受信時の転送障害）

MCP障害（メッセージ受信時の転送障害）の障害処理について，次の表に示します。

表7-11　MCP障害（メッセージ受信時の転送障害）の障害処理

障害内容
MQTの障害処理
ユーザの処理

メッセージ登録障害（あて先キューがない場合を含む）

＜16333-E＞「キューファイル障害発生」

デッドレターキューがある場合：受信中のメッセージを登録し，受信処理を続行します。

デッドレターキューがない場合（コーラ側）：
（a）受信中のメッセージ※1を破棄し，チャネルを終了します。
（b）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（c）再試行しないとき※2，または再試行回数を超えたときはチャネルを終了します（チャネル使用不可状態）。

デッドレターキューがない場合（レスポンダ側）：受信中のメッセージ※1を破棄し，チャネルを終了します（チャネル使用不可状態）。

2.の場合，障害要因を取り除いてください。
3.の（c）または4.の場合，障害要因を取り除いたあと，mqtstachaコマンドを入力してください。

メッセージシーケンス番号不一致

＜16343-E＞「シーケンス番号不一致」

メッセージの受信を中断します。

受信中のメッセージ※¹を破棄します。

コーラ側：
（a）チャネルを終了します。
（b）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（c）再試行しない場合※2，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

mqtrstchaコマンドを入力して番号を一致させてください。
4.コーラ側の（c）の場合はmqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

注※2

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.2.9　MCP障害（デッドレターキュー障害）

MCP障害（デッドレターキュー障害）の障害処理について，次の表に示します。

表7-12　MCP障害（デッドレターキュー障害）の障害処理

障害内容
MQTの障害処理
ユーザの処理

デッドレターキュー登録障害

<16333-E>「キューファイル障害発生」

送信中のメッセージ※1は転送キューに戻し，コネクションを強制解放します。

受信中のメッセージ※1を破棄します。

コーラ側およびレスポンダ側の送受信側：
コーラ側の送信側
（a）チャネルを終了します。
（b）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（c）再試行しない場合※2，または再試行回数を超えた場合は，チャネルを終了します（チャネル使用不可状態）。
レスポンダ側の送信側
（a）チャネルを終了します。
コーラ側の受信側，およびレスポンダ側の受信側
（a）送信側にエラー応答します。

送信側および受信側：
送信側
（a）チャネルを終了します（チャネル使用不可の状態※2）。
受信側
（a）送信側からの要求に従って，チャネルを終了します（チャネル停止）。

障害要因を取り除いたあとmqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

注※2

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.2.10　イニシエーションキュー障害

イニシエーションキュー障害の障害処理について，次の表に示します。

表7-13　イニシエーションキュー障害の障害処理

障害内容
MQTの障害処理
ユーザの処理

トリガメッセージ取り出し障害

＜16307-E＞「キューファイル障害発生」

トリガ起動機能を縮退します。

イニシエーションキューにトリガメッセージが残ります。

トリガメッセージの発生する転送キューへのメッセージの登録を中止してください。
トリガ起動機能を使用する場合は，障害要因を取り除きMQTサーバを再度起動してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

7.2.11　時間監視障害

時間監視障害の障害処理について，次の表に示します。

表7-14　時間監視障害の障害処理

障害内容
MQTの障害処理
ユーザの処理

チャネル確立完了監視タイムアウト

＜16329-E＞「タイムアウト発生」

コネクションを強制解放します。

相手システムの状態と自システムのTCP構成定義の-v rtimを見直してください。

開始要求応答監視タイムアウト

＜16329-E＞「タイムアウト発生」

コネクションを強制解放します。

チャネルを終了します※¹（チャネル使用不可状態※²）。

相手システムの状態と自システムのチャネルの定義の-v tim1を見直し，mqtstachaコマンドを入力してください。

確認メッセージ受信監視タイムアウト

＜16329-E＞「タイムアウト発生」

メッセージの送信を中断します。

送信中のメッセージ※³は転送キューに戻します。

コネクションを強制解放します。

コーラ側：チャネルを終了します※¹（チャネル使用不可状態※²）。
レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

相手システムの状態と自システムのチャネル定義の-v tim2を見直し，処置してください。
5.のコーラ側の場合は，mqtstachaコマンドを入力してください。

継続セグメント受信監視タイムアウト

＜16329-E＞「タイムアウト発生」

メッセージの受信を中断します。

受信中のメッセージ※³を破棄します。

コネクションを強制解放します。

コーラ側：チャネルを終了します※¹（チャネル使用不可状態）。
レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

相手システムの状態と自システムのチャネル定義の-v tim3を見直し，処置してください。
5.のコーラ側の場合は，mqtstachaコマンドを入力してください。

継続メッセージ受信監視タイムアウト

＜16329-E＞「タイムアウト発生」

メッセージの受信を中断します。

受信中のメッセージ※³を破棄します。

コネクションを強制解放します。

コーラ側：チャネルを終了します※¹（チャネル使用不可状態）。
レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

相手システムの状態と自システムのチャネル定義の-v mtimを見直し，処置してください。
5.のコーラ側の場合は，mqtstachaコマンドを入力してください。

終了処理監視タイムアウト

＜16312-E＞「タイムアウト発生」

メッセージの送受信を中断します。

送信中のメッセージ※³は転送キューに戻し，受信中のメッセージ※³は破棄します。

コネクションを強制解放します。

全チャネルを終了します。

MQTを強制停止します。

TCP構成定義の-v etimを見直し，修正してください。

ハートビートメッセージ受信監視タイムアウト

＜16329-E＞「タイムアウト発生」

コネクションを強制解放します。

コーラ側：チャネルを終了します※1（チャネル使用不可状態）。
レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

相手システムの状態と自システムのチャネル定義の-v htimを見直し，処置してください。
3.のコーラ側の場合は，mqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

チャネル定義のタイムアウト時のチャネル確立再試行の有無指定（TCP定義のmqtalccha定義コマンドの-v vretryオペランド指定）にyesを指定した場合は，チャネル確立再試行の指定（-bオプション）に従ってチャネル確立再試行を実行します。

注※2

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

注※3

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

7.2.12　出口障害

出口障害の障害処理について，次の表に示します。

表7-15　出口障害の障害処理

障害内容
MQTの障害処理
ユーザの処理

出口エラー

＜16346-E＞「UOCインタフェースエラー発生」

ログメッセージの出口応答に従って処理します。

出口の処理に問題がないか確認してください。

応答パラメタ不正

＜16347-E＞「UOC応答パラメタ不正」

メッセージの送受信を中断します。

送信中のメッセージ※は転送キューに戻し，受信中のメッセージ※は破棄します。

コネクションを強制解放します。

チャネルを終了します（チャネル使用不可状態）。

理由コードから出口処理を見直し，出口を修正してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって複数のメッセージを転送していた場合，そのバッチのすべてのメッセージが該当します。

ファーストチャネルが転送する非永続メッセージが，転送キューから取り出されて相手システムに登録される前に，該当するバッチに障害が発生した場合，非永続メッセージは破棄されることがあります。

7.2.13　OpenTP1システム，およびMQシステム障害

OpenTP1システム，およびMQシステム障害の障害処理について，次の表に示します。

表7-16　OpenTP1システム，およびMQシステム障害の障害処理

障害内容
MQTの障害処理
ユーザの処理

OpenTP1異常終了

OSによるコアダンプを出力します。

メッセージ送受信を中断します。

障害要因を取り除いたあとOpenTP1システムを再開始※してください。

注※

MQTサーバを正常開始する場合，送信側MCAでチャネル開始要求を送る前に，送達未確認（mqtlschaコマンドで確認）をmqtrlvchaコマンドで解決してください。

7.2.14　チャネル管理情報格納ファイル障害

チャネル管理情報格納ファイル障害の障害処理について，次の表に示します。

表7-17　チャネル管理情報格納ファイル障害の障害処理

障害内容
MQTの障害処理
ユーザの処理

ファイル名称不正

＜31902-E＞「ファイル名文字数オーバ」または＜31906-E＞「ファイル名不正」

MQTが異常終了します。

MQAサービス定義に指定したチャネル管理情報格納ファイル名を見直し，再度OpenTP1システムを正常開始してください。

ファイル入出力形式不正

＜31941-E＞「入出力形式の指定誤り」

MQTが異常終了します。

MQAサービス定義に指定したチャネル管理情報格納ファイルの入出力形式を見直し，再度OpenTP1を正常開始してください。

開始時のファイル読み込み障害（重度障害）

＜31901-E＞「ファイル異常」，＜31904-E＞「アクセス権不正」，＜31908-E＞「データ入出力エラー」，＜31906-E＞「ファイル名不正」，または＜31943-E＞「OpenTP1ファイルのアクセス失敗」

処理を続行します。ただし，指定したチャネル管理情報格納ファイルのすべてに読み込み重度障害が発生した場合は異常終了します。

障害要因を取り除きます。異常終了している場合，再度OpenTP1システムを正常開始してください。

チャネル管理情報格納ファイルのバージョン不正

＜31942-E＞「バージョンが異なる」

処理を続行します。ただし，指定したチャネル管理情報格納ファイルのすべてに読み込み重度障害が発生した場合は異常終了します。

該当するファイルを削除するか別のファイル名を指定します。異常終了している場合，再度OpenTP1を正常開始してください。

開始時のファイル読み込み障害（軽度障害）

＜31900-W＞「終了時の書き込みなし」または＜31905-W＞「指定ファイルなし」

処理を続行します。ただし，指定したチャネル管理情報格納ファイルのすべてに読み込み障害が発生した場合は，次のメッセージを出力します。
＜31903-W＞「チャネル情報引き継ぎ不可」

なし。

開始時のファイル書き込み障害

＜31901-E＞「ファイル異常」，＜31904-E＞「アクセス権不正」，＜31906-E＞「ファイル名不正」，＜31907-E＞「ファイル容量不足」，＜31908-E＞「データ入出力エラー」，または＜31943-E＞「OpenTP1ファイルのアクセス失敗」

処理を続行します。ただし，指定したチャネル管理情報格納ファイルのすべてに書き込み障害が発生した場合は異常終了します。

障害要因を取り除きます。異常終了している場合，再度OpenTP1システムを正常開始してください。

終了時のファイル書き込み障害

＜31901-E＞「ファイル異常」，＜31904-E＞「アクセス権不正」，＜31906-E＞「ファイル名不正」，＜31907-E＞「ファイル容量不足」，＜31908-E＞「データ入出力エラー」，または＜31943-E＞「OpenTP1ファイルのアクセス失敗」

処理を続行します。ただし，指定したチャネル管理情報格納ファイルのすべてに書き込み障害が発生した場合は異常終了します。

障害要因を取り除いてください。
異常終了している場合で，正常開始するときは，いったんOpenTP1システムを再開して，正常終了（または計画停止）したあと，正常開始してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

7.2.15　トリガ起動処理障害

トリガ起動処理障害の障害処理について，次の表に示します。

表7-18　トリガ起動処理障害の障害処理

障害内容
MQTの障害処理
ユーザの処理

転送キュー重複使用

イニシエーションキューファイル障害

トリガメッセージ不正

＜16315-E＞「キューが他サーバで使用中」，＜16307-E＞「キューファイル障害発生」，＜16308-E＞「トリガメッセージ不正」，または＜16309-E＞「トリガ起動処理障害」

トリガ起動処理を縮退します。

トリガ起動処理以外は処理を続行します。

各メッセージに従って障害要因を取り除き，OpenTP1を再度，開始してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

7.2.16　MCA数オーバ

MCA数オーバの障害処理について，次の表に示します。

表7-19　MCA数オーバの障害処理

障害内容
MQTの障害処理
ユーザの処理

クラスタレシーバインスタンス追加障害

クラスタセンダ自動定義障害

＜16349-W＞「MCA数超過」

インスタンスまたは自動定義チャネルの追加を中止します。

MQAサービス定義のMQTデーモン構成定義に指定したMCA数を確認してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

7.2.17　通信障害時のメッセージ送受信の流れ

ここでは，次の場合のメッセージの送受信で通信障害が発生したときの流れを説明します。

チャネルがファーストメッセージ機能を使用していない。

チャネルがファーストメッセージ機能を使用し，かつ一つ以上の通常メッセージが含まれている。

メッセージの送受信時の通信障害について次の図に示します。

図7-15　メッセージの送受信時の通信障害

図中の1.～4.の通信障害について次に説明します。

チャネル開始要求時に通信障害が発生した場合
この場合，チャネルの確立に失敗します。メッセージはそのまま送信側に残ります。

チャネル開始応答時に通信障害が発生した場合
この場合，チャネルの確立に失敗します。メッセージはそのまま送信側に残ります。

送達確認要求ありのメッセージ送信時に通信障害が発生した場合
この場合の送信側MCA，受信側MCAの処理を次に示します。

分類
処理内容

送信側MCA
障害回復後は，LUWID※とメッセージシーケンス番号を基に，送達確認要求を送信してから，転送キュー内のメッセージを再送します。

受信側MCA
送信側と受信側のLUWID※とメッセージシーケンス番号が一致しないため，バッチ内で受信したメッセージは無効化（削除）されます。
また，受信側のLUWIDとメッセージシーケンス番号は，前回バッチ転送完了時の状態に戻され，送信側からメッセージが再送されます。
なお，メッセージシーケンス番号を一致させる運用は必要ありません。

注※

LUWIDは，MCPで規定された1回のメッセージ転送単位（バッチ単位）を管理するためのIDです。

なお，コネクション障害，またはオンラインシステムの停止などでメッセージの送信が中断された場合の，転送キュー内のメッセージの処理については，「2.4.4(3)(a)　送信側MCAの場合」を参照してください。

送達確認応答時に通信障害が発生した場合
この場合の送信側MCA，受信側MCAの処理を次に示します。

分類
処理内容

送信側MCA
障害回復後は，LUWIDとメッセージシーケンス番号を基に，送達確認要求を送信します。

受信側MCA
送信側と受信側のLUWIDとメッセージシーケンス番号が一致するため，送信側では送信済みのメッセージが削除されます。
送信側から送信される次のメッセージを受信します。
なお，メッセージは有効化されているので，更新した受信側のメッセージシーケンス番号は戻しません。

7.3　ファーストメッセージ障害

チャネルがファーストメッセージを転送する場合，転送キューから取り出したあと，相手システムのあて先キューへ登録するまでの間に，障害を検出して転送に失敗するとメッセージは破棄されます。

TP1/Message Queueのファーストメッセージの送受信の障害と，障害に対する処理について障害の種類ごとに説明します。

＜この節の構成＞

7.3.1　コネクション障害（コーラ側・ファーストメッセージ）

7.3.2　コネクション障害（レスポンダ側・ファーストメッセージ）

7.3.3　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害・ファーストメッセージ）

7.3.4　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害・ファーストメッセージ）

7.3.5　MCP障害（メッセージ送信時の転送障害・ファーストメッセージ）

7.3.6　MCP障害（メッセージ受信時の転送障害・ファーストメッセージ）

7.3.7　MCP障害（デッドレターキュー障害・ファーストメッセージ）

7.3.8　時間監視障害（ファーストメッセージ）

7.3.9　出口障害（ファーストメッセージ）

7.3.10　OpenTP1システム，およびMQシステム障害（ファーストメッセージ）

7.3.1　コネクション障害（コーラ側・ファーストメッセージ）

コネクション障害（コーラ側・ファーストメッセージ）の障害処理について，次の表に示します。

表7-20　コネクション障害（コーラ側・ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

メッセージ転送時の障害

＜16331-E＞「TCPインタフェースエラー」

メッセージの転送を中断します。

送信中のメッセージ※¹は破棄し，受信中のメッセージ※¹も破棄します。

チャネル定義の確立再試行の指定によって，チャネル確立を再試行します。

再試行しない場合※²または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

障害要因を取り除いてください。

メッセージを再登録してください。

5.の場合はmqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

バッチ転送によって通常メッセージを同時に転送していた場合，送信中のメッセージは転送キューに戻り，受信中のメッセージは破棄されます。

バッチ転送によって送信済みのファーストメッセージは，ロールバックされません。

注※2

非永続メッセージはすべて破棄されます。

7.3.2　コネクション障害（レスポンダ側・ファーストメッセージ）

コネクション障害（レスポンダ側・ファーストメッセージ）の障害処理について，次の表に示します。

表7-21　コネクション障害（レスポンダ側・ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

メッセージ転送時の障害

＜16331-E＞「TCPインタフェースエラー」

メッセージの転送を中断します。

送信中のメッセージ※は破棄し，受信中のメッセージ※も破棄します。

チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

障害要因を取り除いてください。

メッセージを再登録してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって通常メッセージを同時に転送していた場合，送信中のメッセージは転送キューに戻り，受信中のメッセージは破棄されます。

バッチ転送によって送信済みのファーストメッセージは，ロールバックされません。

7.3.3　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害・ファーストメッセージ）

MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害・ファーストメッセージ）の障害処理について，次の表に示します。

表7-22　MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害・ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

メッセージ長不正

バッチサイズ不正

セグメント番号不正

その他

＜16323-E＞「不正データ受信」または＜16324-E＞「プロトコルエラー発生」

メッセージの転送を中断します。

送信中のメッセージ※は破棄し，受信中のメッセージ※も破棄します。

コネクションを強制解放します。

チャネルを終了します（チャネル使用不可状態）。

保守情報を取得してください。

メッセージを再登録してください。

mqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって通常メッセージを同時に転送していた場合，送信中のメッセージは転送キューに戻り，受信中のメッセージは破棄されます。

バッチ転送によって送信済みのファーストメッセージは，ロールバックされません。

7.3.4　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害・ファーストメッセージ）

MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害・ファーストメッセージ）の障害処理について，次の表に示します。

表7-23　MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害・ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

リモートキューマネジャ状態不正

セキュリティ不正

チャネル状態不正

＜16345-E＞「エラーデータ受信」

メッセージの転送を中断します。

送信中のメッセージ※は破棄し，受信中のメッセージ※も破棄します。

コネクションを強制解放します。

コーラ側はチャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。

再試行しない場合またはレスポンダ側ではチャネルを終了します（チャネル停止状態）。

再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

ログメッセージの詳細と相手システムの状態を確認して対策してください。

メッセージを再登録してください。

mqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって通常メッセージを同時に転送していた場合，送信中のメッセージは転送キューに戻り，受信中のメッセージは破棄されます。

バッチ転送によって送信済みのファーストメッセージは，ロールバックされません。

7.3.5　MCP障害（メッセージ送信時の転送障害・ファーストメッセージ）

MCP障害（メッセージ送信時の転送障害・ファーストメッセージ）の障害処理について，次の表に示します。

表7-24　MCP障害（メッセージ送信時の転送障害・ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

転送キューのメッセージ不正（チャネルの転送サイズオーバ含む）

＜16334-E＞「メッセージ異常検出」

デッドレターキューがある場合：送信中のメッセージを登録し，送信処理を続行します。

デッドレターキューがない場合：送信中のメッセージを破棄し，送信処理を続行します。

原因を調査して対策したあと，メッセージを再登録してください。

メッセージシーケンス番号不一致

＜16343-E＞「シーケンス番号不一致」

メッセージの送信を中断します。

送信中のメッセージを破棄します。

コーラ側：
（a）チャネルを終了します。
（b）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（c）再試行しない場合※，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

mqtrstchaコマンドを入力し，シーケンス番号を一致させてください。

4.のコーラ側MCAの場合はmqtstachaコマンドを入力してください。

相手デッドレターキューにメッセージが登録された

＜16335-W＞「デッドレターキューに登録された」

メッセージの送信を続行します。

相手システムのデッドレターキューからメッセージを取り出し，原因を調査してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.3.6　MCP障害（メッセージ受信時の転送障害・ファーストメッセージ）

MCP障害（メッセージ受信時の転送障害・ファーストメッセージ）の障害処理について，次の表に示します。

表7-25　MCP障害（メッセージ受信時の転送障害・ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

メッセージ登録障害（あて先キューがない場合を含む）

＜16333-E＞「キューファイル障害発生」

デッドレターキューがある場合：受信中のメッセージを登録し，受信処理を続行します※1。

デッドレターキューがない場合：受信中のメッセージを破棄し，受信処理を続行します※1。

障害要因を取り除いてください。

メッセージを再登録してください。

メッセージシーケンス番号不一致

＜16343-E＞「シーケンス番号不一致」

受信中のメッセージ※²を登録します。

コーラ側：
（a）チャネルを終了します。
（b）チャネル定義のMCP障害再試行の指定によって，チャネル確立を再試行します。
（c）再試行しない場合※3，または再試行回数を超えた場合はチャネルを終了します（チャネル使用不可状態）。

レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

mqtrstchaコマンドを入力してシーケンス番号を一致させてください。

3.のコーラ側の場合はmqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

チャネルのバッファ方式がセグメント方式で，メッセージの中間セグメントおよび最終セグメントの登録で障害が発生した場合，コネクションを強制解放することがあります。

注※2

バッチ転送によって通常メッセージを同時に転送していた場合，送信中のメッセージは転送キューに戻り，受信中のメッセージは破棄されます。

バッチ転送によって送信済みのファーストメッセージは，ロールバックされません。

注※3

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.3.7　MCP障害（デッドレターキュー障害・ファーストメッセージ）

MCP障害（デッドレターキュー障害・ファーストメッセージ）の障害処理について，次の表に示します。

表7-26　MCP障害（デッドレターキュー障害・ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

デッドレターキュー登録障害

＜16333-E＞「キューファイル障害発生」

送信中のメッセージを破棄し，送信処理続行します※。

受信中のメッセージを破棄し，受信処理続行します※。

原因を調査して対策したあと，メッセージを再登録してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

チャネルのバッファ方式がセグメント方式で，メッセージの中間セグメントおよび最終セグメントの登録で障害が発生した場合，コネクションを強制解放することがあります。

7.3.8　時間監視障害（ファーストメッセージ）

時間監視障害（ファーストメッセージ）の障害処理について，次の表に示します。

表7-27　時間監視障害（ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

確認メッセージ受信監視タイムアウト

＜16329-E＞「タイムアウト発生」

メッセージの送信を中断します。

送信中のメッセージ※¹は破棄します。

コネクションを強制解放します。

コーラ側：チャネルを終了します※²（チャネル使用不可状態※³）。
レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

相手システムの状態と自システムのチャネル定義の-v tim2を見直してください。

メッセージを再登録してください。

5.のコーラ側の場合は，mqtstachaコマンドを入力してください。

継続メッセージ（セグメント）受信監視タイムアウト

＜16329-E＞「タイムアウト発生」

メッセージの受信を中断します。

受信中のメッセージ※¹を破棄します。

コネクションを強制解放します。

コーラ側：チャネルを終了します※²（チャネル使用不可状態）。
レスポンダ側：チャネルを終了し，再度相手システムからのコネクション確立要求を待ちます（チャネル停止状態）。

相手システムの状態と自システムのチャネル定義の-v tim3，mtimを見直してください。

メッセージを再登録してください。

5.のコーラ側の場合は，mqtstachaコマンドを入力してください。

終了処理監視タイムアウト

＜16312-E＞「タイムアウト発生」

メッセージの送受信を中断します。

送信中のメッセージ※¹は破棄し，受信中のメッセージ※¹は破棄します。

コネクションを強制解放します。

全チャネルを終了します。

MQTを強制停止します。

TCP構成定義の-v etimを見直してください。

メッセージを再登録してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※1

バッチ転送によって通常メッセージを同時に転送していた場合，送信中のメッセージは転送キューに戻り，受信中のメッセージは破棄されます。

バッチ転送によって送信済みのファーストメッセージは，ロールバックされません。

注※2

チャネル定義のタイムアウト時のチャネル確立再試行の要否指定（TCP定義のmqtalccha定義コマンドの-v vretryオペランド指定）にyesを指定した場合は，チャネル確立再試行の指定（-bオプション）に従ってチャネル確立再試行を実行します。

注※3

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.3.9　出口障害（ファーストメッセージ）

出口障害（ファーストメッセージ）の障害処理について，次の表に示します。

表7-28　出口障害（ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

応答パラメタ不正

＜16347-E＞「UOC応答パラメタ不正」

メッセージの送受信を中断します。

送信中のメッセージ※は破棄し，受信中のメッセージ※は破棄します。

コネクションを強制解放します。

チャネルを終了します（チャネル使用不可状態）。

出口の処理を見直してください。

メッセージを再登録してください。

5.の場合は，mqtstachaコマンドを入力してください。

（凡例）

＜　＞：出力されるメッセージログIDです。メッセージログIDには，先頭にKFCAが付きます。

「　」：メッセージログの内容です。

注※

バッチ転送によって通常メッセージを同時に転送していた場合，送信中のメッセージは転送キューに戻り，受信中のメッセージは破棄されます。

バッチ転送によって送信済みのファーストメッセージは，ロールバックされません。

7.3.10　OpenTP1システム，およびMQシステム障害（ファーストメッセージ）

OpenTP1システム，およびMQシステム障害（ファーストメッセージ）の障害処理について，次の表に示します。

表7-29　OpenTP1システム，およびMQシステム障害（ファーストメッセージ）の障害処理

障害内容
MQTの障害処理
ユーザの処理

OpenTP1異常終了

OSによるコアダンプを出力します。

メッセージ送受信を中断します。

転送中のファーストメッセージは破棄します※。

障害要因を取り除いたあとOpenTP1システムを再開始してください。

注※

クラスタチャネルの場合は，チャネル状態は「チャネル停止」になります。

7.4　障害時に取得する情報

TP1/Message Queueが障害時に取得する情報について，次の表に示します。

表7-30　障害時に取得する情報

取得情報
出力情報
参照方法
注意事項

メッセージログファイル
（$DCDIR/spool/dclog1，dclog2）
OpenTP1，またはUAPが出力するメッセージ
logcatコマンドを実行してください。
古いメッセージログファイルを残しておきたい場合は，メッセージログファイルの交替で内容が失われる前にコピーしてください。

コンソールメッセージ
OpenTP1が出力するシステム情報
コンソールを見てください。
プリンタ出力，集中コンソールへの出力はOSの機能です。

コマンド実行時の標準出力，標準エラー出力
OpenTP1の運用コマンドの出力情報，およびエラーメッセージ
運用コマンドを入力した画面で見てください。
ファイルに残したい場合は，必要に応じてリダイレクトしてください。

コアファイル（./core）
OpenTP1の関連プロセスのデータ，スタック
－
OpenTP1が起動するプロセスのコアファイルは，
$DCDIR/spool/saveディレクトリ下に
サーバ名n※¹という名称で退避されます。
一つのサーバについて3個までしか退避されないので，残しておきたいコアファイルは必要に応じてコピーしてください。

UAPトレース
uatdumpコマンドを実行してください。

MQCリスナサーバの内部情報のプロセスなど
－

共用メモリダンプファイル
（$DCDIR/spool/shmdump）
OpenTP1が共用メモリに保持するデータ
－
古いダンプファイルを残しておきたい場合は，必要に応じてコピーしてください。

MQAサービス専用共用メモリダンプファイル
（$DCDIR/spool/shmdump.mXX※2）
MQAサービスが共用メモリに保持するデータ
－
古いダンプファイルを残しておきたい場合は，必要に応じてコピーしてください。

MQTサービスローカルメモリダンプファイル
$DCDIR/spool/mqtdmpXX※2_YY....YY※3
MQTスナップダンプファイル
－
出力したダンプファイルは削除されません。
不要なファイルはOSの削除コマンドを使用して削除してください

MQTトレースファイル
MQTトレース
－
古いMQTトレースファイルを残しておきたい場合は，必要に応じてコピーしてください。

チャネル管理情報格納ファイル
チャネル管理情報
－
古いチャネル管理情報格納ファイルを残しておきたい場合は，必要に応じてコピーしてください。

MQRトレースファイル
MQRトレース
－
古いMQRトレースファイルを残しておきたい場合は，必要に応じてコピーしてください。

キューファイル
ユーザデータ
－
－

ジャーナルファイル
ジャーナルデータ
－
－

MQCトレースファイル
（$DCDIR/spool/mqcXXXYYYZZZZZ※4）
MQCトレース情報など
－
残しておきたい場合は，必要に応じてコピーしてください。

（凡例）

－：該当しません。

注※1

n：退避コアファイルの通番（1～3）です。

ただし，OpenTP1が強制停止時（dcsvstop -fコマンドを実行した時，または実時間監視タイムアウトになった時）に出力されるコアファイルには，通番は付きません。なお，プロセスサービスのコアファイルが"core"という名称でこのディレクトリに取得されることがあります。また，ユーザ環境設定コマンドが異常終了した場合，そのコアファイルは"_usrcmd"に通番（1～3）が付いた名称で退避されます。

注※2

XX：MQT通信プロセス識別子

注※3

YY....YY：MQT通信プロセス開始からの通算秒（10進数）

注※4

XXXYYYZZZZZの意味を次に示します。

　XXX：サーバ種別

　　lsn：MQCリスナサーバ

　　gwp：MQCゲートウェイサーバ

　YYY：MQCゲートウェイサーバ識別子（000～255の10進数）

　ZZZZZ：00001～00003

＜この節の構成＞

7.4.1　MQTトレースファイルの出力

7.4.2　MQRトレースファイルの出力

7.4.1　MQTトレースファイルの出力

MQTサーバはプロセスの動作状態をMQTトレース情報として取得しています。

MQTトレース情報をMQTトレースファイルへ出力する方法について説明します。

＜この項の構成＞

(1)　トレース方式の概要

(2)　ファイル名とその作成順序

(3)　取得するトレースの内容

(1)　トレース方式の概要

MQTトレース情報はMQTサーバの各通信プロセスのローカルメモリ上でトレースバッファに一定量が取得され，満杯になった時にMQTトレースファイルとしてディスクに出力されます。この情報はMQTサーバに障害が発生した場合に，障害情報として必要になります。出力先ディレクトリのディスク容量に余裕がない場合を除いて，常にMQTトレースファイルに出力しておくことをお勧めします。MQTトレースファイルに出力する場合は，mqttcp定義コマンド，mqttcpcs定義コマンド，またはmqttcpcr定義コマンドの-t diskオペランドにyesを指定してください。または，オンライン中にmqtstatrcコマンドを入力してMQTトレースのディスク出力機能を開始します。

特に，オンライン中にMQTトレースファイルを出力する場合はトレースバッファ上に蓄えているMQTトレース情報を，MQTトレースファイルに強制スワップできます。mqtswptrcコマンドを使用して強制スワップしてください。mqtswptrcコマンドを使用すると定義コマンドの-t diskオペランドにyesを指定していない場合でも，メモリ上のMQTトレース情報をMQTトレースファイルに出力できます。ただし，この場合は取得できる情報が少ないため，障害情報として不十分になることがあります。mqtswptrcコマンドについては，6章の「mqtswptrc（MQTトレースの強制スワップ）」を参照してください。

MQTトレースファイルの出力について，次の図に示します。

図7-16　MQTトレースファイルの出力

(2)　ファイル名とその作成順序

MQTトレースファイルは，MQTサービス定義のmqt_trace_file_pathオペランドで指定されたディレクトリに作成されます。トレースファイル名は，"mqttrcXXYY"（XX：MQT通信プロセス識別子，YY：トレーススワップファイル識別子）です。トレーススワップファイル識別子はその最大値を，TCP定義のmqttcp，mqttcpcs，またはmqttcpcr定義コマンドの-t trccntオペランドに指定します。MQTサーバを開始して最大値までファイルを作成すると，ラウンドロビン方式で再度1番から上書きしていきます。

(a)　オンライン開始後の最初の出力

オンライン開始後，最初に書き込まれるトレースファイルは，mqt_trace_file_pathオペランドで指定されたディレクトリにあるトレースファイルのうち，最終更新時刻が最も新しいファイル通番の次の通番のファイルになります。ただし，ファイル通番に抜けが存在する場合は，抜けている通番のファイルがオンライン開始後，最初に書き込まれるトレースファイルになります。

トレースファイルを書き込む際，mqt_trace_file_pathオペランドで指定されたディレクトリにあるトレースファイルの更新日付の確認でエラーが発生した場合，オンライン開始後，最初に書き込まれるトレースファイルのファイル通番は1になります。このエラーが発生した場合は，KFCA31185-Wがメッセージログファイルに出力され，トレースファイルの出力が継続されます。

(b)　オンライン開始後の2回目以降の出力

オンライン開始後，2回目以降に出力されるトレースファイルは，ファイル通番に1が加算されたファイルに書き込まれます。最大通番（TCP定義のmqttcp，mqttcpcs，またはmqttcpcr定義コマンドの-t trccntオペランドの指定値）まで達した場合は，ラウンドロビン方式で再度1番から上書きしていきます。

(3)　取得するトレースの内容

mqtedコマンドを入力すると，MQTトレースファイルの内容が標準出力に出力されます。

なお，MQTサーバで障害が発生し保守員に調査を依頼する場合，MQTトレースファイルが必要になります。障害発生時のMQTトレースファイルを保存することをお勧めします。

7.4.2　MQRトレースファイルの出力

リポジトリ管理サーバは，パーシャルリポジトリとフルリポジトリ間で発生するクラスタについてのメッセージ送受信をMQRトレース情報として取得しています。

MQRトレース情報をMQRトレースファイルへ出力する方法について説明します。

＜この項の構成＞

(1)　トレース方式の概要

(2)　ファイル名とその作成順序

(3)　取得するトレースの内容

(4)　出力失敗時の動作

(1)　トレース方式の概要

MQRトレース情報は，パーシャルリポジトリとフルリポジトリ間でクラスタについてのメッセージ送受信が発生するたびに，共用メモリ上に一定量が取得され，満杯になった時，またはmqrsupの正常終了時にMQRトレースファイルに出力されます。この情報はパーシャルリポジトリとフルリポジトリ間の連携に障害が発生した場合に，障害情報として必要になります。

また，mqrsup動作中にMQRトレースファイルを出力する場合はメモリ上に蓄えているMQRトレース情報をMQRトレースファイルに強制スワップできます。mqrswptrcコマンドを使用して強制スワップしてください。

MQRトレースファイルを出力しない場合は，リポジトリ管理サーバユーザサービス定義ファイルのDCMQA_TRACE_STATUSオペランドにNを指定してください。

リポジトリ管理サーバユーザサービス定義ファイルの詳細については，「2.8.11(4)　リポジトリ管理サーバの環境変数」を参照してください。

(2)　ファイル名とその作成順序

MQRトレースファイルは，DCMQA_TRACE_PATHオペランドで指定されたディレクトリに作成されます。トレースファイル名は，"mqrtrcX"（X：1～DCMQA_TRACE_FILE_NUMオペランドの指定値）です。リポジトリ管理サーバを開始して最大値までファイルを作成すると，ラウンドロビン方式で再度1番から上書きしていきます。

(a)　オンライン開始後の最初の出力

オンライン開始後，最初に書き込まれるトレースファイルは，DCMQA_TRACE_PATHオペランドで指定されたディレクトリにあるトレースファイルのうち，最終更新時刻が最も新しいファイル通番の次の通番のファイルになります。ただし，ファイル通番に抜けが存在する場合は，抜けている通番のファイルがオンライン開始後，最初に書き込まれるトレースファイルになります。

トレースファイルに書き込む際，DCMQA_TRACE_PATHオペランドで指定されたディレクトリに存在するトレースファイルの更新日付の確認でエラーが発生した場合，オンライン開始後，最初に書き込まれるトレースファイルのファイル通番は1になります。このエラーが発生した場合は，KFCA31185-Wがメッセージログファイルに出力され，トレースファイルの出力が継続されます。

(b)　オンライン開始後の2回目以降の出力

オンライン開始後，2回目以降に出力されるトレースファイルは，ファイル通番に1が加算されたファイルに書き込まれます。最大通番（DCMQA_TRACE_FILE_NUMオペランドの指定値）まで達した場合は，ラウンドロビン方式で再度1番から上書きしていきます。

(3)　取得するトレースの内容

取得するトレースの内容は公開しません。障害発生時にMQRトレースファイルを取得したら，保守員に連絡してください。

(4)　出力失敗時の動作

MQRトレースファイルへMQRトレース情報を出力する時に，満杯以外のエラーが発生した場合は，機能を停止します。再び使用する場合はリポジトリ管理サーバを再起動してください。

付録

＜この付録の構成＞

付録A　共用メモリの見積もり式

付録B　ファイルの見積もり式

付録C　系切り替え機能使用時の注意

付録D　TP1/Message Queueが出力するファイル一覧

付録E　用語解説

付録A　共用メモリの見積もり式

ここでは共用メモリの見積もり式について説明します。

共用メモリを見積もる際のΣの計算例，および見積もる際の注意事項について次に示します。

Σの計算例

MQAサーバ用の静的共用メモリの見積もり式の一部を使用して，Σの計算例を次に示します。

（Σbi=1 ci）＋1

システムに存在するMQTデーモン構成定義に指定したMCA数を計算することを示します。

（Σbi=1 ji）×8

システムに存在するMQTデーモン構成定義に設定した総バッチメッセージ数を計算することを示します。

（凡例）

b：mqamqtnam定義コマンドの定義数（MQTデーモン数）

c：該当MQTプロセスのMQTデーモン構成定義（MQAサービス定義）に指定したMCA数

j：mqamqtnam定義コマンドの-bオプション（総バッチメッセージ数）の指定値

共用メモリを見積もる際の注意事項

共用メモリを見積もる際は，次の点に注意してください。

メモリ所要量とは仮想メモリの値を示します。

MQAサービス専用共用メモリの固定領域で確保できる最大サイズは，2147483647バイトです。

MQAサービス専用共用メモリ拡張領域で確保できる最大サイズは，2000000000バイトです。

MQAサーバ用のOpenTP1共用メモリ（静的共用メモリおよび動的共用メモリ）とMQAサービス専用共用メモリの合計値は，OSの共用メモリセグメントサイズの上限を超えないようにしてください。
なお，SUPなどのアプリケーションで共用メモリセグメントを確保する場合も，この制限が適用されます。
OSの共用メモリセグメントサイズの上限については，OSのマニュアルを参照してください。

32ビット版のHP-UXを使用する場合は，次の点に注意してください。

MQAサービス専用共用メモリについて

MQAサービス専用共用メモリの固定領域：
最大サイズの2147483647バイトを1063256064バイトに読み替えてください。

MQAサービス専用共用メモリの拡張領域：
最大サイズの2000000000バイトを1063256064バイトに読み替えてください。

32ビット版のHP-UXでは，共用メモリセグメントサイズの上限値は1ギガバイトです。

OpenTP1は，指定したサイズに，内部的に必要とするサイズ（最大10メガバイト）を加算して共用メモリの確保要求を行います。このため，1063256064バイトを超えた値を指定した場合，確保要求を行うサイズが1ギガバイトを超えてしまい，OpenTP1システムの起動に失敗することがあります。

システム全体で使用できる共用メモリについて

システム全体で使用できる共用メモリのサイズは，次のとおりです。

HP-UX（IPF）の場合：2ギガバイト

マルチOpenTP1での運用や，共用メモリを確保する他のプログラムを同一マシン上で実行する場合は，共用メモリの合計サイズに注意してください。

＜この節の構成＞

付録A.1　MQAサーバ用の共用メモリの見積もり式

付録A.2　リポジトリ管理機能の共用メモリの見積もり式

付録A.3　MQCサーバ機能の共用メモリの見積もり式

付録A.4　MQTマネジャサーバの共用メモリの見積もり式

付録A.5　MQ監視機能用の共用メモリの見積もり式

付録A.1　MQAサーバ用の共用メモリの見積もり式

MQAサーバ用の共用メモリの見積もりを次の表に示します。

表A-1　MQAサーバ用の共用メモリの見積もり

領域
メモリ所要量
（単位：バイト）

静的共用メモリ

7500＋640×a＋64×b
＋（（（（Σbi=1 ci）＋1）×568＋24）×2）
＋［（（Σbi=1 ji）×8）×2］※1
＋1216×d＋512×f＋224×g

動的共用メモリ

15360×q＋512×↑q／5↑＋1536×↑h／5↑
＋1536×↑v／5↑＋512×W
＋80384×（Σpi=1↑wi／64↑
＋Σbii=1↑（Σkiii=1（oi＋1）＋lii＋2）／64↑）
＋↑（64＋（164×↑Z／5↑））／512↑×512

MQAサービス専用の共用メモリの固定領域

↑（2048＋Σqi=1（（↑（16＋160×ni）／32↑
＋[↑（20＋292×↑（ni×ri／100）↑）／32↑]※2
＋↑（32＋4×ni）／32↑
＋↑（16×si＋20×ni＋172＋mi×si）／32↑）×32））
／1024↑×1024

MQAサービス専用の共用メモリの拡張領域

↑（2048＋ΣZi=1（（↑（16＋160×ni）／32↑
＋[↑（20＋292×↑（ni×ri／100）↑）／32↑]※2
＋↑（32＋4×ni）／32↑
＋↑（16×si＋20×ni＋172＋mi×si）／32↑）×32））
／1024↑×1024

（説明）

静的共用メモリ

OpenTP1のシステムサーバとそのシステムサーバが使用する静的共用メモリのサイズにMQAサーバ用の静的共用メモリのサイズを加算し，その合計値をシステム環境定義のstatic_shmpool_sizeオペランドに指定してください。

動的共用メモリ

OpenTP1のシステムサーバとそのシステムサーバが使用する動的共用メモリのサイズにMQAサーバ用の動的共用メモリのサイズを加算し，その合計値をシステム環境定義のdynamic_shmpool_sizeオペランドに指定してください。

MQAサービス専用の共用メモリの固定領域

MQAサービス専用の共用メモリの固定領域を指定するオペランドはありません。この領域はTP1/Message Queueの起動時に確保されます。

この計算式では，qの値を次に示すように設定してください。

mqaquegrp定義コマンドの-sオプションに指定したキューファイルグループで使用する領域を計算する場合（異なるMQAサービス専用共用メモリ確保要求者識別子を指定したmqaquegrp定義コマンドが複数存在する場合は，それぞれ異なるMQAサービス専用共用メモリ確保要求者識別子分の計算を行う必要があります）
q：同一のMQAサービス専用共用メモリ確保要求者識別子を指定したmqaquegrp定義コマンドのうち，指定したキューファイルの数（二重化構成では，バックアップキューファイルを除くキューファイル数）

mqaquegrp定義コマンドの-sオプションに指定しないキューファイルグループ全体で使用する領域を計算する場合
q：MQAサービス専用共用メモリ確保要求者識別子を指定しないmqaquegrp定義コマンドのうち，指定したキューファイルの数（二重化構成では，バックアップキューファイルを除くキューファイル数）

上記の1.および2.で計算した値の合計がMQAサービス専用の共用メモリ固定領域全体の所要量です。

MQAサービス専用の共用メモリの拡張領域

計算式で見積もったサイズをMQAサービス定義のmqa_extend_rmshm_sizeオペランドに指定してください。

（凡例）

↑↑：小数点以下を切り上げます。

a：プロセス定義数（MQAサービス定義のmqaprcdef定義コマンドの定義数）

b：mqamqtnam定義コマンドの定義数（MQTデーモン数）

c：該当MQTプロセスのMQTデーモン構成定義（MQAサービス定義）に指定したMCA数

d：mqa_max_quenumオペランドの指定値

f：mqa_max_filnumオペランドの指定値

g：mqa_max_grpnumオペランドの指定値

h：同時走行トランザクション数。同時に走行しているUAPで発生されるトランザクション数です。具体的には，トランザクション内でTP1/Message Queueを使用しているUAPが同時に走行する最大値を指定してください。

j：mqamqtnam定義コマンドの-bオプション（総バッチメッセージ数）の指定値

k：レシーバ，クラスタレシーバ，またはリクエスタのチャネル数

l：センダ，クラスタセンダ，またはサーバのチャネル数

m：キューファイルのレコード長

n：mqainitコマンドの-mオプションの指定値（メッセージ数）

o：mqtalccha定義コマンドの-jオプションの指定値（バッチサイズ）

p：同時走行プロセス数。TP1/Message Queueを使用するUAPの同時走行数です。具体的には，トランザクションの内外に関係なくTP1/Message Queueを使用しているUAPが同時に走行する最大値を指定してください。

q：キューファイル数（二重化構成では，バックアップキューファイルを除くキューファイル数）

r：mqaquegrp定義コマンドの-mオプションの指定値（メッセージエントリ確保率）

s：mqaquegrp定義コマンドの-nオプションの指定値（入出力バッファ数）

v：同時走行トランザクションブランチ数。同時に走行しているUAPで発生されるトランザクション数とトランザクション内でRPCコールされたUAPの数です。大小関係で表すと次のようになります。

「同時走行トランザクション数」＜＝「同時走行トランザクションブランチ数」＜＝「同時走行プロセス数」

w：一つのプロセスで使用するオブジェクトハンドル数

W：システム全体で同時に使用するUAPプロセスのオブジェクトハンドル数

Z：mqaaddコマンドでオンライン中に組み込むキューファイル数（二重化構成では，バックアップキューファイルを除くキューファイル数）

注※1

mqamqtnam定義コマンド（MQTデーモン数）を定義しない場合は，［　］内は0バイトとなります。

注※2

mqaquegrp定義コマンドの-mオプションの指定値（メッセージエントリ確保率）が0の場合は，［　］内は0バイトとして計算します。

付録A.2　リポジトリ管理機能の共用メモリの見積もり式

リポジトリ管理機能の共用メモリの見積もりを次の表に示します。MQAサービス定義のmqa_mqr_confオペランドにYを設定した場合は，表A-1で計算した値に，次の表で計算した値を加えてください。

表A-2　リポジトリ管理機能の共用メモリの見積もり

領域
メモリ所要量
（単位：バイト）

静的共用メモリ

804

動的共用メモリ

（（↑（27264×↑（D＋E）／10↑）／512↑）
＋（↑（27264×↑A／10↑）／512↑）
＋（↑（7424×↑F／10↑）／512↑）
＋（↑（7424×↑G／10↑）／512↑）
＋（↑（6144×↑（H＋ΣSi=1M）／10↑）／512↑）
＋ΣSi=1（↑（6144×↑（K×2＋T）／10↑）／512↑）
＋ΣSi=1（↑（6144×↑J／10↑）／512↑）
＋（↑（1664×↑K／10↑）／512↑）
＋（↑（1664×↑J／10↑）／512↑）
＋ΣSi=1（↑（1664×↑M／10↑）／512↑）※1
＋（↑（384×↑L／5↑）／512↑）
＋（↑（96＋N）／512↑）
＋（↑（64＋64×O）／512↑）
＋（↑P／512↑）＋（5＋4×U））×512
＋1024×S＋80384×（1＋U）

（説明）

静的共用メモリ

OpenTP1のシステムサーバとそのシステムサーバが使用する静的共用メモリのサイズに加算して，その合計値をシステム環境定義のstatic_shmpool_sizeオペランドに指定してください。

動的共用メモリ

OpenTP1のシステムサーバとそのシステムサーバが使用する動的共用メモリの最大使用時のサイズに加算して，その合計値をシステム環境定義のdynamic_shmpool_sizeオペランドに指定してください。

（凡例）

↑↑：小数点以下を切り上げます。↑↑で計算した結果が0になる場合は，1として計算してください。

A：クラスタ内にあるリモートのクラスタレシーバチャネル数（90日以内に削除されたチャネル数を含みます）※2

D：事前定義クラスタセンダチャネル数（90日以内に削除されたチャネル数を含みます）

E：事前定義クラスタレシーバチャネル数（90日以内に削除されたチャネル数を含みます）

F：クラスタ内にあるリモートのクラスタキュー数（90日以内に削除されたキュー数を含みます）※2

G：ローカルのクラスタキュー数（90日以内に削除されたキュー数を含みます）

H：参加するフルリポジトリマネジャ数（フルリポジトリ数が1の場合は1，フルリポジトリ数が2以上の場合は2）複数のクラスタに参加する場合はクラスタごとに算出した総和。

J：クラスタキュー名の数（ローカルおよびリモートを合わせてクラスタ内で重複する名前は数えません）。アプリケーションで，クラスタ内にないキュー名を，キューマネジャ名を指定しないでMQOPEN命令で指定した場合のキュー名の数も加えてください。

K：リモートのキューマネジャ名の数

L：同時走行クラスタアクセスプロセス数

M：クラスタ内にあるフルリポジトリマネジャ数

N：トレースファイルの最大長（リポジトリ管理サーバのユーザサービス定義ファイルのDCMQA_TRACE_MAX_LENオペランドの指定値）

O：クラスセンダプロセスのmqamqtnam定義コマンドのMCA数

P：O＞＝Aの場合，P＝0

　O＜Aの場合，P＝384×↑（O－A）／5↑

S：参加するクラスタ数

T：30日以内に削除されたリモートのキューマネジャ数※1

U：mqrsppサービス定義のparallel_countオペランドの最大プロセス数

注※1

複数のクラスタに参加する場合はクラスタごとに算出した総和を示します。

注※2

キューマネジャを再作成（リポジトリキューを再作成）した場合，再作成前のチャネル，キューマネジャ，キュー情報は再作成後の情報とは別にカウントしてください。

付録A.3　MQCサーバ機能の共用メモリの見積もり式

MQCサーバ機能の共用メモリの見積もりを次の表に示します。MQAサービス定義でmqa_mqc_confオペランドにYを設定した場合は，表A-1で計算した値に，次の表で計算した値を加えてください。

表A-3　MQCサーバ機能の共用メモリの見積もり

領域
メモリ所要量
（単位：バイト）

静的共用メモリ（MQAサーバ）

352×g×2

静的共用メモリ（MQCサーバ）

236＋352×n

（説明）

静的共用メモリ

OpenTP1のシステムサーバとそのシステムサーバが使用する静的共用メモリのサイズに加算して，その合計値をシステム環境定義のstatic_shmpool_sizeオペランドに指定してください。

（凡例）

g：オンライン中に同時に処理できるクライアントの最大数（MQAサービス定義のmqa_mqc_clientnumオペランドの値）

n：MQCゲートウェイサーバ数（MQCサービス定義に指定したmqcgwpnam定義コマンド数）

付録A.4　MQTマネジャサーバの共用メモリの見積もり式

MQTマネジャサーバの共用メモリの見積もりを次の表に示します。

表A-4　MQTマネジャサーバの共用メモリの見積もり

領域
メモリ所要量
（単位：バイト）

静的共用メモリ

（↑（364＋↑（32×b）／1024↑×1024＋u）／32↑+1）×32＋864※

（凡例）

b：mqamqtnam定義コマンドの定義数（MQTデーモン数）

u：

使用するチャネル管理情報ファイルが通常ファイルの場合

↑（32×前回オンライン時のmqamqtnam定義コマンドの定義数）／1024↑×1024

使用するチャネル管理情報ファイルがOpenTP1ファイルの場合

↑（↑（32×前回オンライン時のmqamqtnam定義コマンドの定義数）／1024↑×1024）
／OpenTP1ファイルシステムのセクタ長↑×OpenTP1ファイルシステムのセクタ長

注※

MQAサービス定義のset mqa_channel_inf_file_name_aオペランドとset mqa_channel_inf_file_name_bオペランドの指定を同時に省略した場合は，864バイトになります。

付録A.5　MQ監視機能用の共用メモリの見積もり式

MQAサービス定義のmqa_mqo_confオペランドにYを指定すると，MQAサーバの開始の延長でOpenTP1が管理しない共用メモリ（OSのシステムコールを直接発行して取得する共用メモリ）を確保します。MQ監視機能用の共用メモリの見積もりを次の表に示します。

表A-5　MQ監視機能用の共用メモリの見積もり

領域
メモリ所要量
（単位：バイト）

共用メモリ

856＋192×（16×↑A／16↑＋64×↑B／64↑＋ΣDi=1C）
＋132×（16×↑E／16↑）

（凡例）

A：MQAサービス定義のmqa_max_filnumオペランドの値

B：MQAサービス定義のmqa_max_quenumオペランドの値

C：MQAサービス定義のMCA数（MQTサーバを指定したmqamqtnam定義コマンドの値）

D：MQAサービス定義のmqamqtnamコマンド定義数（MQTサーバを指定したmqamqtnam定義コマンドの数）

E：MQAサービス定義のmqa_max_grpnumオペランドの値

付録B　ファイルの見積もり式

OpenTP1ファイルの見積もり式について説明します。

＜この節の構成＞

付録B.1　ステータスファイルのサイズの見積もり式

付録B.2　ジャーナルファイルのサイズの見積もり式

付録B.3　チェックポイントダンプファイルのサイズの見積もり式

付録B.4　キューファイルのサイズの見積もり式

付録B.5　チャネル管理情報格納ファイルのサイズの見積もり式

付録B.6　スナップダンプファイルのサイズの見積もり式（チャネルの状態表示コマンド）

付録B.7　MQCトレースファイルのサイズの見積もり式

付録B.8　MQRトレースファイルのサイズの見積もり式

付録B.9　MQTトレースファイルのサイズの見積もり式

付録B.10　ソケット用ファイル記述子のサイズの見積もり式（ユーザサーバで使用）

付録B.11　MQ管理情報ファイルのサイズの見積もり式

付録B.1　ステータスファイルのサイズの見積もり式

TP1/Message Queueでは，TP1/Server Baseのステータスファイルを使用します。

ステータスファイルのサイズの見積もり式を次に示します。

表B-1　ステータスファイルの使用容量とキー数（MQAサーバ）

サービス
1キー当たりのステータスファイルの使用容量
（単位：バイト）
キー数

TP1/Message Queue
MQAサーバ
276
1

48×a
1

256
1

628×b
1

64×c
1

156×d
1

416×e
1

236×f
1

328×g
1

8×h
1

（凡例）

a：MQAサービス定義のMQTデーモン構成定義の指定数（mqamqtnam定義コマンドで指定）

b：MQAサービス定義のプロセス定義数（mqaprcdef定義コマンドで指定）

c：MQAサービス定義のオンライン中に使用するキューファイルグループの最大数（mqa_max_grpnumオペランドで指定）

d：MQAサービス定義のオンライン中に使用するキューファイルの最大数（mqa_max_filnumオペランドで指定）

e：MQAサービス定義のモデルキューの属性定義数（mqaqueatl定義コマンドで指定）

f：MQAサービス定義の別名キューの属性定義数（mqaalsque定義コマンドで指定）

g：MQAサービス定義のリモートキューのローカル定義数（mqaremque定義コマンドで指定）

h：MQAサービス定義のオンライン中に使用するキューファイルの数（ただし，二重化構成時のバックアップキューファイルは除く）

MQCサーバ機能を使用する場合（MQAサービス定義のmqa_mqc_confオペランドにYを指定する場合），上記のMQAサーバの見積もり式にTP1/Message Queue - Accessが使用するステータスファイルのサイズを加算してください。

TP1/Message Queue - Accessのサーバ機能はTP1/Server Baseのステータスファイルを使用します。ステータスファイルのサイズの見積もり式を次に示します。

表B-2　ステータスファイルの使用容量とキー数（MQCリスナサーバ）

サービス
1キー当たりのステータスファイルの使用容量
（単位：バイト）
キー数

TP1/Message Queue - Access
MQCリスナサーバ
72
1

48×a
1

（凡例）

a：MQCサービス定義のMQCゲートウェイサーバ名の定義数（mqcgwpnamオペランドで指定）

付録B.2　ジャーナルファイルのサイズの見積もり式

TP1/Message Queueでは，TP1/Server Baseのジャーナルを取得します。

ジャーナルファイルのサイズの見積もり方法については，マニュアル「OpenTP1 運用と操作」を参照してください。なお，次の表の項番6～項番10は，マニュアル「OpenTP1 運用と操作」に記載している内容を次のように読み替えて見積もりをしてください。

「1トランザクション」を「同一バッチ内で送受信するメッセージ数」に読み替えてください。

「オンライン開始～終了までの総トランザクション数」を「オンライン開始～終了までの同一バッチによるメッセージ送受信回数」に読み替えてください。
1バッチ単位で送受信されるメッセージの送受信数は，使用されるシステムによって異なるため安全値として「オンライン開始～終了までの送受信されるメッセージ数の総和」にすることをお勧めします。

＜この項の構成＞

(1)　ジャーナルレコード長

(2)　ジャーナルの取得契機

(1)　ジャーナルレコード長

TP1/Message Queueが使用するジャーナルレコード長を次に示します。

表B-3　ジャーナルレコード長（TP1/Message Queue）

項番
条件
ジャーナルレコード長
（単位：バイト）
条件に一致したときに取得されるジャーナルレコード種別

メッセージジャーナルの取得回復機能を使用する場合
メッセージジャーナルの取得回復機能を使用しない場合

1
トランザクション内で永続メッセージを登録または削除する場合，そのトランザクションごと
160＋ΣP＋ΣG
160＋ΣP＋ΣG
cj

2
トランザクション内で永続メッセージを登録する場合，MQPUT命令またはMQPUT1命令の発行ごと
160＋Q
－
cj

3
トランザクション外で永続メッセージを登録する場合，MQPUT命令またはMQPUT1命令の発行ごと
320＋P＋Q
160＋P
cj

4
トランザクション外で永続メッセージを削除する場合，MQGET命令ごと
160＋G
160＋G
cj

5
永続メッセージの受信時，メッセージの受信ごと
160＋Q
－
cj

6
永続メッセージの送信時，同一バッチ内の最終メッセージの送信ごと※1
160＋ΣG
160＋ΣG
cj

7
永続メッセージの受信時，同一バッチ内の最終メッセージの受信ごと※2
160＋ΣP
160＋ΣP
cj

8
メッセージの送信時，同一バッチ内の最終メッセージの送信ごと※1，※3
752＋8×m
752＋8×m
cj

9
メッセージの送信時，同一バッチ内の最終メッセージの送信ごと※1，※3
752
752
cj

10
メッセージの受信時，同一バッチ内の最終メッセージの受信ごと※2，※4
752
752
cj

11
自動クラスタセンダチャネルの作成および削除ごと
752
752
cj

（凡例）

－：該当しません。

P：メッセージ登録ジャーナルデータ

P=644＋p（1メッセージの最大レコード数）

p=4×↑（L＋512）／（（（↑（520＋M）／S↑）×S）－8）↑

Q：メッセージ登録メッセージジャーナルデータ

Q=516＋↑（2＋f）／4↑×4＋↑（2＋g）／4↑×4＋↑（L＋512）／（（（↑（520＋M）／S↑）×S）－8）↑×4＋↑L／4↑×4

G：メッセージ削除ジャーナルデータ

G=88＋↑（2＋f）／4↑×4＋↑（2＋g）／4↑×4

Σ：項番1については，トランザクション内での総和を示します。項番6および項番7については，1回のバッチで送受信するメッセージ数の総和を示します。なお,「オンライン開始～終了までの送受信されるメッセージ数の総和」で計算する場合，項番6および項番7は1メッセージ単位の計算になります。

上記の計算式の変数の意味は次のとおりです。

↑↑：小数点以下を切り上げます。

L：メッセージ長

M：mqainitコマンドの-sオプション（メッセージ長）の指定値

S：OpenTP1ファイルシステムのセクタ長

f：該当キューが所属するキューファイルグループで定義されている中で最も長いキューファイル名長

g：該当キューを作成した際に使用したモデルキューの属性定義のキューファイル名長

m：同一バッチ内のメッセージ数

「オンライン開始～終了までの送受信されるメッセージ数の総和」で計算する場合，mの値は1になります。

注※1

項番6，項番8および項番9は別のジャーナルレコードとして取得されます。

注※2

項番7および項番10は別のジャーナルレコードとして取得されます。

注※3

ファーストメッセージだけ送信する場合は取得されません。

注※4

ファーストメッセージだけ受信する場合は取得されません。

MQCサーバ機能を使用する場合（MQAサービス定義のmqa_mqc_confオペランドにYを指定する場合），上記のMQAサーバの見積もり式にTP1/Message Queue - Accessが使用するジャーナルレコード長のサイズを加算してください。

TP1/Message Queue - Accessのサーバ機能はTP1/Server Baseのジャーナルを取得します。ジャーナルレコード長の見積もり式を次に示します。

表B-4　ジャーナルレコード長（TP1/Message Queue - Access）

条件
ジャーナルレコード長
（単位：バイト）
条件に一致したときに取得されるジャーナルレコード種別

XA連携で次の指示が通知されるごと

コミット

ロールバック

トランザクション終了

プリペア

288
cj

(2)　ジャーナルの取得契機

TP1/Message Queueのジャーナルの取得契機を次に示します。

(a)　同期点でメッセージを登録，または削除する場合

同期点でメッセージを登録，または削除する場合のジャーナルの取得契機を次に示します。

（凡例）

CJ1：回復用ジャーナルの取得（バッファリング）を示します。

注※1

メッセージジャーナルの取得回復機能を使用する場合に取得されます。表B-3の項番2に該当します。

注※2

表B-3の項番1に該当します。

図中の各命令での構造体の情報を次に示します。

MQPUT命令，またはMQPUT1命令

MQPMO構造体：OptionsフィールドにMQPMO_SYNCPOINTを設定

登録するメッセージのMQMD構造体：PersistenceフィールドにMQPER_PERSISTENTを設定

MQGET命令

MQGMO構造体：OptionsフィールドにMQGMO_SYNCPOINTを設定，MQGMO_BROWSE_XXXは未設定

削除対象となるメッセージのMQMD構造体：PersistenceフィールドにMQPER_PERSISTENTを設定

(b)　同期点なしでメッセージを登録，または削除する場合

同期点なしでメッセージを登録，または削除する場合のジャーナルの取得契機を次に示します。

（凡例）

CJ2：回復用ジャーナルの取得（即書き）を示します。

注※1

表B-3の項番3に該当します。

注※2

表B-3の項番4に該当します。

図中の各命令での構造体の情報を次に示します。

MQPUT命令，またはMQPUT1命令

MQPMO構造体：OptionsフィールドにMQPMO_NO_SYNCPOINTを設定

登録するメッセージのMQMD構造体：PersistenceフィールドにMQPER_PERSISTENTを設定

MQGET命令

MQGMO構造体：OptionsフィールドにMQGMO_NO_SYNCPOINTを設定，MQGMO_BROWSE_XXXは未設定

削除対象となるメッセージのMQMD構造体：PersistenceフィールドにMQPER_PERSISTENTを設定

(c)　チャネル経由でメッセージを受信する場合

チャネル経由でメッセージを受信する場合のジャーナルの取得契機を次に示します。

（凡例）

CJ1：回復用ジャーナルの取得（バッファリング）を示します。

CJ2：回復用ジャーナルの取得（即書き）を示します。

注※1

メッセージジャーナルの取得回復機能を使用する場合に取得されます。表B-3の項番5に該当します。

注※2

ファーストメッセージだけを受信する場合，または非永続メッセージだけを受信する場合は取得されません。表B-3の項番7に該当します。

注※3

ファーストメッセージだけを受信する場合は取得されません。表B-3の項番10に該当します。

(d)　チャネル経由でメッセージを送信する場合

チャネル経由でメッセージを送信する場合のジャーナルの取得契機を次に示します。

（凡例）

CJ1：回復用ジャーナルの取得（バッファリング）を示します。

CJ2：回復用ジャーナルの取得（即書き）を示します。

CJ3：mqtalccha定義コマンドの-jnオプションのsndjnlオペランドにnoflushを指定した場合，回復用ジャーナルの取得（バッファリング）を示します。

注※1

ファーストメッセージだけを送信する場合は取得されません。表B-3の項番8に該当します。

注※2

ファーストメッセージだけを送信する場合，または非永続メッセージだけを送信する場合は取得されません。表B-3の項番6に該当します。

注※3

ファーストメッセージだけを送信する場合は取得されません。表B-3の項番9に該当します。

付録B.3　チェックポイントダンプファイルのサイズの見積もり式

TP1/Message QueueはTP1/Server Baseのチェックポイントダンプを取得します。チェックポイントダンプファイルの使用容量を次の表に示します。

表B-5　チェックポイントダンプファイルの使用容量（TP1/Message Queue）

取得元
チェックポイントダンプファイルの使用容量
（単位：バイト）

TP1/Message Queue
（総MCA数（各mqamqtnam定義コマンドで指定した合計値）＋1）×568＋総バッチメッセージ数（各mqamqtnam定義コマンドの-bオプションの合計値）×8＋24

MQAサービス定義のmqamqtnam定義コマンドが指定されていない場合，チェックポイントダンプファイルの容量は0になります。

MQCサーバ機能を使用する場合（MQAサービス定義のmqa_mqc_confオペランドにYを指定する場合），上記の見積もり式にTP1/Message Queue - Accessが使用するチェックポイントダンプファイルのサイズを加算してください。

TP1/Message Queue - Accessのサーバ機能はTP1/Server Baseのチェックポイントダンプを取得します。MQCチェックポイントダンプファイルのサイズの見積もり式を次に示します。

表B-6　MQCチェックポイントダンプファイルの使用容量（TP1/Message Queue - Access）

取得元
MQCチェックポイントダンプファイルの使用容量
（単位：バイト）

TP1/Message Queue - Access
総トランザクション数（mqa_mqc_trnnumオペランド）×352

MQAサービス定義のmqa_mqc_confオペランドにYが指定されていない場合，MQCチェックポイントダンプファイルの容量は0になります。

注意

これらの計算式は，チェックポイントダンプファイル内でTP1/Message Queue，またはTP1/Message Queue - Accessが使用する容量サイズの見積もりを示しています。jnlinitコマンドを実行して実際に作成されるチェックポイントダンプファイルのサイズについては，次の計算式で見積もってください。

（↑（A＋B）／4096↑＋3）×4096

（凡例）

↑↑：小数点以下を切り上げます。

A：TP1/Message Queueのチェックポイントダンプファイル使用容量

B：TP1/Message Queue - AccessのMQCチェックポイントダンプファイル使用容量

付録B.4　キューファイルのサイズの見積もり式

キューファイルのサイズの見積もり式を次に示します。

表B-7　キューファイルの使用容量

項目
ディスク占有量
（単位：バイト）

メッセージ情報管理ファイル
（2＋↑516×Q／S↑＋↑256×N／S↑＋↑4×N／S↑）×S

メッセージファイル
（（↑（520＋M）／S↑）×S）×N

（凡例）

↑↑：小数点以下を切り上げます。

Q：mqainitコマンドのキュー数

M：mqainitコマンドのメッセージ長

N：mqainitコマンドのメッセージ数

S：OpenTP1ファイルシステムのセクタ長（1024未満の場合は1024）

付録B.5　チャネル管理情報格納ファイルのサイズの見積もり式

TP1/Message Queueの正常開始時のチャネル状態引き継ぎ機能を使用した場合，チャネル管理情報格納ファイルが必要です。チャネル管理情報格納ファイルのサイズの見積もり式を次に示します。

表B-8　チャネル管理情報格納ファイルの使用容量

項目
ファイル使用容量
（単位：バイト）

チャネル管理情報格納ファイル（MQAサービス定義のmqa_channel_inf_fileオペランドにnormalを指定した場合）

32ビット版の場合：

（（ΣAx=1 Bx）＋1）×568＋（ΣAx=1 Cx）×8＋↑（A×32／1024）↑×1024＋96

64ビット版の場合：

（（ΣAx=1 Bx）＋1）×576＋（ΣAx=1 Cx）×16＋↑（A×32／1024）↑×1024＋136

チャネル管理情報格納ファイル（MQAサービス定義のmqa_channel_inf_fileオペランドにtp1fileを指定した場合）

32ビット版の場合：

（↑64／D↑＋↑（（（ΣAx=1 Bx）＋1）×568＋（ΣAx=1 Cx）×8）／D↑＋↑（↑A×32／1024↑×1024）／D↑＋↑32／D↑）×D

64ビット版の場合：

（↑88／D↑＋↑（（（ΣAx=1 Bx）＋1）×576＋（ΣAx=1 Cx）×16）／D↑＋↑（↑A×32／1024↑×1024）／D↑＋↑48／D↑）×D

（凡例）

↑↑：小数点以下を切り上げます。

A：mqamqtnam定義コマンドの定義数（MQTデーモン数）

B：MCA数（mqamqtnam定義コマンドの指定値）

C：総バッチメッセージ数（mqamqtnam定義コマンドの-bオプションの指定値）

D：OpenTP1ファイルシステムのセクタ長

付録B.6　スナップダンプファイルのサイズの見積もり式（チャネルの状態表示コマンド）

TP1/Message Queueのチャネルの状態表示コマンドのスナップダンプ機能（mqtlschaコマンドの-Dオプション）で出力される，スナップダンプファイルのサイズの見積もり式を次の表に示します。ただし，チャネルの状態や属性によってこの計算式より少なくなることがあります。

表B-9　スナップダンプファイルの使用容量（mqtlschaコマンドの-Dオプション）

項目
1プロセス当たりのファイル使用容量
（単位：バイト）

MQTスナップダンプファイル（通常プロセス）

32ビット版の場合：

4300＋A×7368＋ΣAx=1 （Bx×8）＋ΣCx=1 （Dx×568＋Ex×8）

64ビット版の場合：

4800＋A×8040＋ΣAx=1 （Bx×16）＋ΣCx=1 （Dx×576＋Ex×16）

MQTスナップダンプファイル（クラスタセンダプロセス）

MQTスナップダンプファイル（クラスタレシーバプロセス）

32ビット版の場合：

7700＋A×7240＋ΣCx=1 （Dx×568＋Ex×8）

64ビット版の場合：

8600＋A×7904＋ΣCx=1 （Dx×576＋Ex×16）

（凡例）

A：事前定義または自動定義によって定義されたチャネル数

B：送信側チャネルのバッチサイズ

C：mqamqtnam定義コマンドの定義数（MQTデーモン数）

D：MCA数（mqamqtnam定義コマンドの指定値）

E：総バッチメッセージ数（mqamqtnam定義コマンドの-bオプションの指定値）

付録B.7　MQCトレースファイルのサイズの見積もり式

MQCサーバ機能を使用する場合，$DCDIR/spoolディレクトリ下にMQCトレースファイルが作成されます。MQCトレースファイルのサイズの見積もり式を次に示します。

491712＋起動済みのMQCゲートウェイサーバ数×491712（単位：バイト）

付録B.8　MQRトレースファイルのサイズの見積もり式

キューマネジャクラスタ機能を使用する場合，$DCDIR/spoolディレクトリ下にMQRトレースファイルが作成されます。

MQRトレースファイルのサイズの見積もり式を次に示します。

DCMQA_TRACE_MAX_LENオペランドの指定値×DCMQA_TRACE_FILE_NUMオペランドの指定値（単位：バイト）

付録B.9　MQTトレースファイルのサイズの見積もり式

MQTトレースファイルのサイズの見積もり式を次の表に示します。

表B-10　MQTトレースファイルの使用容量

分類
条件
MQTトレースファイルの使用容量
（単位：バイト）
変数の説明

サービス開始
MQTサービスを開始するごと

32ビット版の場合：

2200＋Σ（40）

64ビット版の場合：

2500＋Σ（70）

Σ：mqtalccha定義コマンドの定義数の総数を意味します。

（例）

mqtalccha定義コマンドの定義数=5の場合，MQTサービス開始時のトレース容量は，次のようになります。

32ビット版の場合：

　2200＋40×5＝2400バイト

64ビット版の場合：

　2500＋70×5＝2850バイト

MQクラスタのMQTサービスを開始するごと

32ビット版の場合：

4200

64ビット版の場合：

6000

－

運用コマンド
MQT運用コマンドを実行するごと
Σ（1000）
Σ：チャネル名または相手キューマネジャ名を指定するMQT運用コマンドはその条件に一致するチャネル数の総数を意味します。チャネル名または相手キューマネジャ名を指定しないMQT運用コマンドは，チャネル名=1とします。

（例）

mqtalccha定義コマンドの定義数=16でmqtstacha -n "*"の場合，チャネル数の総数=16となります。

MQクラスタ（クラスタセンダ）
チャネル要求監視間隔（mqttcpcs -v stim）ごと
450
－

MQクラスタ（クラスタレシーバ）
チャネル要求監視間隔（mqttcpcr -v stim）ごと
330
－

イニシエーションキュー監視
タイマ方式によるイニシエーションキュー監視（mqttcp -z time）ごと

32ビット版の場合：

300

64ビット版の場合：

350

（例）

1秒間隔（mqttcp -v itim=1）の監視を行う場合，1分間のMQTトレース容量は，次のようになります。

32ビット版の場合：300×60＝18000バイト

64ビット版の場合：350×60＝21000バイト

イベント方式によるイニシエーションキュー監視（mqttcp -z event）を行う場合

32ビット版の場合：

Σ（60）

64ビット版の場合：

Σ（70）

Σ：イニシエーションキュー監視を行っている時間（単位：秒）の総数を意味します。

（例）

1分間のMQTトレース容量は，次のようになります。

32ビット版の場合：60×60＝3600バイト

64ビット版の場合：70×60＝4200バイト

チャネル開始（コーラ側）
コーラ側チャネルを開始するごと（チャネルの確立を再試行する場合は，その再試行処理ごと）

32ビット版の場合：

Σ（500×tretrycnt）※1

64ビット版の場合：

Σ（520×tretrycnt）※1

tretrycnt：mqtalccha -v tretrycntの値
Σ：開始するコーラ側チャネル数の総数を意味します。

チャネル開始（レスポンダ側）
レスポンダ側チャネルを開始するごと

32ビット版の場合：

Σ（3000）

64ビット版の場合：

Σ（3500）

Σ：開始するレスポンダ側チャネル数の総数を意味します。

チャネル終了（コーラ側）
コーラ側チャネルを終了するごと

32ビット版の場合：

Σ（1500）

64ビット版の場合：

Σ（1800）

Σ：終了するコーラ側チャネル数の総数を意味します。

チャネル終了（レスポンダ側）
レスポンダ側チャネルを終了するごと

32ビット版の場合：

Σ（1000）

64ビット版の場合：

Σ（1400）

Σ：終了するレスポンダ側チャネル数の総数を意味します。

メッセージ送受信
メッセージ送受信ごと
Σ（2000＋XQH）
XQH：第1セグメントの場合は500，第2セグメント以降の場合は0となります。
（転送するメッセージ長＋428）／最大セグメントサイズ≦1の場合は，第1セグメントだけとなります。
（転送するメッセージ長＋428）／最大セグメントサイズ＞1の場合は，その値がセグメント数となります。
Σ：メッセージ送受信を行うチャネル数の総数を意味します。

ハートビート
チャネルが「チャネル動作中」にハートビート電文を送受信するごと

32ビット版の場合：

Σ（1200）

64ビット版の場合：

Σ（1500）

Σ：ハートビート電文を送受信するチャネル数の総数を意味します。「チャネル動作中」以外の状態のチャネル数はカウントしません。

転送キュー監視
タイマ方式による転送キュー監視（mqtalccha -z time）を行う場合，転送キュー監視間隔（mqtalccha -v tim4）ごと

32ビット版の場合：

Σ（400）

64ビット版の場合：

Σ（750）

Σ：タイマ方式による転送キュー監視を行うチャネル数の総数を意味します。「チャネル動作中」以外の状態のチャネル数はカウントしません。

イベント方式による転送キュー監視（mqtalccha -z event）を行う場合

32ビット版の場合：

Σ1Σ2（80）

64ビット版の場合：

Σ1Σ2（150）

Σ1：イベント方式による転送キュー監視を行うチャネル数の総数を意味します。「チャネル動作中」以外の状態のチャネル数はカウントしません。
Σ2：イベント方式による転送キュー監視を行っている時間（単位：秒）の総数を意味します。

（例）

二つのチャネルが1分間イベント方式による転送キュー監視を行う場合，次のようになります。

32ビット版の場合：

　2×60×80＝9600バイト

64ビット版の場合：

　2×60×150＝18000バイト

サービス終了
MQTサービスを終了するごと

32ビット版の場合：

1300

64ビット版の場合：

2000

－

UOC※2
チャネルを開始するごと
200
－

クラスタレシーバチャネルが確立するごと
260
－

メッセージ送受信ごと
260
－

チャネルを終了するごと
260
－

（凡例）

－：該当しません。

注※1

TCP/IPコネクションの状況によっては，計算式よりも少なくなる場合があります。

注※2

64ビット版の場合にだけ該当します。

付録B.10　ソケット用ファイル記述子のサイズの見積もり式（ユーザサーバで使用）

ユーザサーバで使用するソケット用ファイル記述子（max_socket_descriptorsオペランド）の最大数の見積もり式を次に示します。

↑メッセージを登録するキュー数×2／0.8↑

（凡例）

↑↑：小数点以下を切り上げます。

付録B.11　MQ管理情報ファイルのサイズの見積もり式

Message Queue - OperationによるMQ監視機能を使用した場合，TP1/Message QueueはMQ管理情報ファイルを作成します。MQ管理情報ファイルのサイズの見積もり式を次の表に示します。

表B-11　MQ管理情報ファイルの使用容量

項目 | ファイル使用容量（単位：バイト）
MQ管理情報ファイル | 856＋192×（16×↑A／16↑＋64×↑B／64↑＋ΣCi=1 D）＋132×（16×↑E／16↑）

（凡例）

A：MQAサービス定義のmqa_max_filnumオペランドの値

B：MQAサービス定義のmqa_max_quenumオペランドの値

C：MQAサービス定義のmqamqtnam定義コマンドの数（MQTサーバを指定したmqamqtnam定義コマンドの数）

D：MQAサービス定義のMCA数（MQTサーバを指定したmqamqtnam定義コマンドの値）

E：MQAサービス定義のmqa_max_grpnumオペランドの値

付録C　系切り替え機能使用時の注意

系切り替え機能を使用する場合の注意を次に示します。

系切り替え構成を構築する場合，各マシンのシステム時刻を合わせてください。
タイマ値が異なると，系切り替え発生時に時間が戻ることになるため，メッセージの登録順序が入れ代わることがあります。

系切り替え構成を構築し，TP1/Message Queue以外のシステムとチャネルを接続する場合，系切り替えによって引き継ぐIPアドレスを，MQT通信構成定義のチャネル定義（mqtalccha定義コマンド）に自システムのIPアドレスとして指定（-rオプションのipaddrオペランドまたはhostnameオペランドに指定）してください。IPアドレスを指定しないと，シーケンス番号の不一致が発生することがあります。

付録D　TP1/Message Queueが出力するファイル一覧

TP1/Message Queue（UNIX版・Windows版共通）が出力するファイルの一覧を次の表に示します。各ファイルの詳細な説明については，表D-2を参照してください。

表D-1　TP1/Message Queue（UNIX版・Windows版共通）が出力するファイル一覧

項番
名称
ファイル名またはディレクトリ名
バージョン
タイプ
ファイル形式
取得タイミング
削除可否

1
MQTトレースファイル
UNIX版：
$DCDIR/spool/mqttrcXXYY※1
Windows版：
%DCDIR%¥spool¥mqttrcXXYY※1
（XX：MQT通信プロセス識別子，YY：トレーススワップファイル識別子）
初期
A
バイナリ
MQTトレースのディスク出力機能を使用している場合は，次のタイミングで取得します。

mqtswptrcコマンド実行時

メモリ上に蓄積されたMQTトレース情報のバッファが満杯になったとき

OpenTP1停止時（MQT通信プロセス終了時）

mqtstptrcコマンド実行時

MQTトレースのディスク出力機能を使用していない場合は，次のタイミングで取得します。

mqtswptrcコマンド実行時

△

2
MQTサービスローカルメモリダンプファイル
＜mqtlscha -Dコマンド実行時＞
UNIX版：
$DCDIR/spool/mqtdmpXX
Windows版：
%DCDIR%¥spool¥mqtdmpXX
＜MQT通信プロセス異常終了時＞
UNIX版：
$DCDIR/spool/mqtdmpXX_YY....YY
Windows版：
%DCDIR%¥spool¥mqtdmpXX_YY....YY
（XX：MQT通信プロセス識別子，YY....YY：MQT通信プロセス開始からの通算秒（10進数））
05-10
B，D
バイナリ

mqtlscha -Dコマンド実行時

障害や論理矛盾を検知してMQT通信プロセスが異常終了したとき

△

3
MQRトレースファイル
UNIX版：
$DCDIR/spool/mqrtrcXX※2
Windows版：
%DCDIR%¥spool¥mqrtrcXX※2
（XX：1～99）
05-10
A
バイナリ

メモリ上に蓄積されたMQRトレース情報のバッファが満杯になったとき

リポジトリ管理サーバ（mqrsup）停止時

mqrswptrcコマンド実行時

△

4
MQCトレースファイル
UNIX版：
$DCDIR/spool/mqcXXXYYYZZZZZ
Windows版：
%DCDIR%¥spool¥mqcXXXYYYZZZZZ
（XXX：サーバ種別（lsn：MQCリスナサーバ，gwp：MQCゲートウェイサーバ），YYY：MQCゲートウェイサーバ識別子（000～255の10進数），ZZZZZ：00001～00003）
05-00
A
バイナリ

メモリ上に蓄積されたMQCトレース情報のバッファが満杯になったとき

MQCゲートウェイサーバ停止時

OpenTP1停止時

mqcswptrcコマンド実行時

△

5
チャネル管理情報格納ファイル
MQAサービス定義のmqa_channel_inf_file_name_aオペランド，およびmqa_channel_inf_file_name_bオペランドの指定値
01-03
B
バイナリ

MQTサーバサービス開始時

MQTサーバサービス終了時

▲

6
mqafrcコマンド用引き継ぎファイル
UNIX版：
mqafrcコマンド実行のカレントディレクトリ/mqafrc***
Windows版：
mqafrcコマンド実行のカレントディレクトリ¥mqafrc***
（***：mqafrc -kで指定した値）
05-12
B
バイナリ
mqafrc -kコマンド実行時
□
（mqafrc -e）

7
mqafrcコマンド用引き継ぎファイルのバックアップファイル
UNIX版：
mqafrcコマンド実行のカレントディレクトリ/mqafrc***.bak
Windows版：
mqafrcコマンド実行のカレントディレクトリ¥mqafrc***.bak
（***：mqafrc -kで指定した値）
05-12
C
バイナリ
mqafrc -kコマンド実行時に，同名の引き継ぎファイルがあるとき
□
（mqafrc -e）

（凡例）

A：ラウンドロビン（一定量に達した直後の出力で，新しいファイルに切り替わるタイプ）

B：制御ファイル，一時ファイル

C：バックアップファイル

D：コマンド実行などで1回ごとに出力し，最大容量が決まっているファイル

△：削除してはいけません。ただし，障害調査が不要であれば，ユーザ判断で削除できます。

▲：削除してはいけません。ただし，チャネル管理情報格納ファイルを使ったチャネル情報引き継ぎ機能を使用しない場合は，ユーザ判断で削除できます。

□：コマンド終了時に削除します。（　）内は該当するコマンド名です。

注※1

MQTサービス定義のmqt_trace_file_pathオペランドで，ファイルの出力先を変更できます。

注※2

リポジトリ管理サーバユーザサービス定義ファイル（$DCCONFPATH/mqrsup）のDCMQA_TRACE_PATHオペランドで，ファイルの出力先を変更できます。

TP1/Message Queue（UNIX版・Windows版共通）が出力するファイルの説明を次の表に示します。

表D-2　TP1/Message Queue（UNIX版・Windows版共通）が出力するファイルの説明

項番
名称
関連する定義
サイズ
最大ファイル数
説明

1
MQTトレースファイル
＜TCP構成定義＞
＜クラスタセンダTCP構成定義＞
＜クラスタレシーバTCP構成定義＞

-t diskオペランド
MQTトレースのディスク出力機能を使用するかどうかを指定

-t bufcntオペランド
MQTトレースファイルのサイズ

-t trccntオペランド
MQTトレースファイルの個数

-t bufsizeオペランド
MQTトレースを格納するバッファの大きさ

「付録B.9　MQTトレースファイルのサイズの見積もり式」を参照
1プロセス当たりn世代
（n：mqttcp，mqttcpcsまたはmqttcpcr定義コマンドの-t trccntオペランドの値）
MQTサーバはプロセスの動作状態をMQTトレース情報として取得します。
＜初期化方法＞
OpenTP1開始時（MQT通信プロセス開始時）はMQTトレースファイル名のYYに，前回の値の次の値を設定し，ラウンドロビン方式で出力します。同名のファイルがある場合は上書きします。

2
MQTサービスローカルメモリダンプファイル
なし
「付録B.6　スナップダンプファイルのサイズの見積もり式（チャネルの状態表示コマンド）」を参照
1プロセス当たり1ファイル
MQT通信プロセスの保守情報をスナップダンプファイルとして取得します。
mqtdmpedコマンドで編集・表示ができます。
＜初期化方法＞
同名のファイルがあれば上書きします。

3
MQRトレースファイル
＜$DCCONFPATH/mqrsupのオペランド＞

DCMQA_TRACE_STATUS
MQRトレース情報を出力するかどうかを指定

DCMQA_TRACE_PATH
MQRトレースファイルのパス名

DCMQA_TRACE_FILE_NUM
MQRトレースファイルの最大数

DCMQA_TRACE_MAX_LEN
MQRトレースファイルの容量

「付録B.8　MQRトレースファイルのサイズの見積もり式」を参照
n世代
（n：$DCCONFPATH/mqrsupに定義した環境変数DCMQA_TRACE_FILE_NUMの指定値）
クラスタ機能についてのシステムメッセージ送受信の情報をMQRトレース情報として取得します。
＜初期化方法＞
リポジトリ管理サーバ起動時の通番（MQRトレースファイル名のXX）は，前回の値の次の値を設定し，ラウンドロビン方式で出力します。同名のファイルがある場合は上書きします。

4
MQCトレースファイル
なし
「付録B.7　MQCトレースファイルのサイズの見積もり式」を参照
1プロセス当たり3世代
MQCサーバの回線トレース情報です。
＜初期化方法＞
MQCサーバ起動時の通番（MQCトレースファイル名のZZZZZ）は，前回の値の次の値を設定し，ラウンドロビン方式で出力します。同名のファイルがある場合は上書きします。

5
チャネル管理情報格納ファイル
＜MQAサービス定義＞

mqa_channel_inf_file_name_aオペランド
チャネル管理情報格納A系ファイル

mqa_channel_inf_file_name_bオペランド
チャネル管理情報格納B系ファイル

mqa_channel_inf_fileオプション
チャネル管理情報格納ファイルの入出力形式

「付録B.5　チャネル管理情報格納ファイルのサイズの見積もり式」を参照
2ファイル
MQTサーバのチャネルについての情報を格納するファイルです。
＜初期化方法＞
同名のファイルがあれば上書きします。

6
mqafrcコマンド用引き継ぎファイル
なし
最大で4096＋Xバイト
X：mqafrcコマンド実行時に指定したアンロードジャーナルファイルの総ディスク容量※
1ファイル
mqafrcコマンドでキューファイルを回復する際にコマンド内部で使用する引き継ぎファイルです。
＜初期化方法＞
同名の引き継ぎファイルがあるときは，既存の引き継ぎファイルの名称を「mqafrc***.bak」に変更して退避します。

7
mqafrcコマンド用引き継ぎファイルのバックアップファイル
なし
最大で4096＋Xバイト
X：mqafrcコマンド実行時に指定したアンロードジャーナルファイルの総ディスク容量※
1ファイル
mqafrcコマンド用引き継ぎファイルのバックアップファイルです。

注※

アンロードジャーナルファイルの総ディスク容量は，UNIXのlsコマンドなどで参照できます。コマンド引数に複数のアンロードジャーナルファイルを指定した場合は，その合計になります。

付録E　用語解説

英字｜ア行｜カ行｜サ行｜タ行｜ハ行｜マ行｜ラ行

TP1/Message Queueで使用する用語について説明します。

英字

FAP

フォーマットとプロトコル（FAP）のことです。このマニュアルでは，特にMCPのフォーマットとプロトコルのことです。

MCP

TCP/IPプロトコル上で動作するメッセージチャネルプロトコル（MCP）のことです。メッセージを送受信するためのチャネルの機能を提供します。

MQシステム

メッセージキューイング機能のキューマネジャがあるシステムのことです。

WebSphere MQ

米国IBM社が開発した，メッセージ蓄積型の通信を実現する製品群のことです。OpenTP1では，TP1/Message Queueを使ってメッセージ蓄積型の通信を実現できます。

ア行

アプリケーション

目的の業務に応じてユーザが作成するプログラムのことです。TP1/Message Queueの機能を利用するアプリケーションは，OpenTP1のUAPとして作成します。

オブジェクト

アプリケーションがメッセージキューイング機能の命令で利用する対象のことです。キュー，キューマネジャなどがあります。

カ行

キューファイル

メッセージキューを格納するファイルのことです。一つのキューファイルに，複数のキューが格納されます。

キューマネジャ

メッセージキューイング機能を管理するソフトウェア製品のことです。メッセージキューイング機能を使って通信するシステムには，キューマネジャが必要になります。OpenTP1の場合は，TP1/Message Queueがキューマネジャの役割をします。

クラスタ

クラスタは，何らかの方法によって論理的に関連づけられたキューマネジャのネットワークです。クラスタに属しているキューマネジャは，それぞれが物理的にリモートであることもあります。世界的なチェーンストアをクラスタに例えて，キューマネジャをチェーンストアの支店に例えると，それぞれの支店同士は，物理的に別々の国にあることもあります。一つの企業内の各クラスタは，ユニークな名前を持っていなければなりません。

クラスタキュー

クラスタキューは，クラスタキューマネジャが保持し，クラスタのほかのキューマネジャが利用できるキューです。クラスタキューマネジャでは，ローカルなキューを作成し，キューを使用できるクラスタの名前を指定します。この指定は，クラスタのほかのキューマネジャにキューの存在を通知する効果を持ちます。

クラスタのほかのキューマネジャは，対応するリモートキューのローカル定義なしで，クラスタキューにメッセージを登録できます。クラスタキューは，複数のクラスタに通知されることもあります。

クラスタキューマネジャ

クラスタキューマネジャは，クラスタのメンバであるキューマネジャです。キューマネジャは，複数のクラスタのマネジャになることもできます。各クラスタキューマネジャは，自分がメンバであるすべてのクラスタでユニークな名前を持っていなければなりません。

クラスタキューマネジャは，クラスタのほかのキューマネジャに通知するキューを保持できます。クラスタキューマネジャは，すべてのキューを保持したり，通知する必要はありません。メッセージをクラスタに提供し，通知されるキューにではなく，明示的にそのクラスタに向けられた応答だけを受信します。

クラスタキューマネジャは自律的です。自分が定義しているキューやチャネルを全面的にコントロールします。その定義をほかのキューマネジャは変更できません。キューマネジャでの定義を作成または変更する場合には，フルリポジトリキューマネジャに情報を送信し，それに従ってクラスタのリポジトリが更新されます。

クラスタセンダチャネル

クラスタセンダ（CLUSSDR）チャネル定義は，クラスタキューマネジャがフルリポジトリの一つにクラスタ情報を送信できるチャネルの送信端を定義しています。クラスタセンダチャネルを使用して，キューマネジャの状態の変更（例えば，キューの追加や削除）をリポジトリに通知します。また，メッセージを転送するのにも使用されます。

フルリポジトリキューマネジャ自身は，相互にポイントしているクラスタセンダチャネルを持っています。これを使用して，クラスタ状態の変更を相互に伝達します。

キューマネジャのクラスタセンダチャネル定義がどのフルリポジトリをポイントしているかは，ほとんど問題になりません。最初のコンタクトが実行されれば，クラスタセンダチャネルが自動的に定義されるので，キューマネジャはどのフルリポジトリへもクラスタ情報を送信でき，どのキューマネジャへもメッセージを送信できます。

クラスタ転送キュー

各クラスタキューマネジャは，SYSTEM.CLUSTER.TRANSMIT.QUEUEというクラスタ転送キューを持っています。クラスタ転送キューは，キューマネジャからのすべてのメッセージを，同じクラスタにあるほかのキューマネジャに送信します。

クラスタレシーバチャネル

クラスタレシーバ（CLUSRCVR）チャネル定義は，クラスタキューマネジャがクラスタのほかのキューマネジャからメッセージを受信できるチャネルの受信端を定義しています。また，クラスタレシーバチャネルは，クラスタについての情報（リポジトリに向けられた情報）を通信することもできます。クラスタレシーバチャネルの定義は，キューマネジャがメッセージを受信できることを，クラスタのほかのキューマネジャに通知する効果を持ちます。各クラスタキューマネジャに少なくとも一つのクラスタレシーバチャネルが必要です。

サ行

サービス名ファイル

サービス名称とポート番号とを対応づけたファイルです。標準的なパス名を次に示します。

UNIXの場合
/etc/services

Windowsの場合
C:¥WINDOWS¥system32¥drivers¥etc¥services

属性

オブジェクトに対応づけられた名称，タイプなど，オブジェクトの特性を示すものです。オブジェクトの種類によって，対応づけられる属性は異なります。

タ行

チャネル

自システムと特定のMQシステムとの間に対応づけた論理的な通信路のことです。メッセージチャネルエージェントによって管理されます。

トリガ

メッセージキューにメッセージが到着したことを自システムのアプリケーションに知らせる機能のことです。トリガイベントを監視するアプリケーションをトリガモニタアプリケーションといいます。

ハ行

ハートビートメッセージ

送信側MCAの転送キューにメッセージがない場合，送信側MCAが受信側MCAに対して一定間隔で送受信するメッセージです。

バインディング

複数のキューマネジャが，同じクラスタキューの1インスタンスを保持するクラスタを作成できます。その場合には，連続するメッセージがすべてキューの同じインスタンスに送信されるようにしてください。MQOPEN命令でMQOO_BIND_ON_OPENオプションを使用して，特定のキューに連続するメッセージをバインドできます。

フルリポジトリキューマネジャ

フルリポジトリキューマネジャとは，フルリポジトリを保持しているクラスタキューマネジャです。可用性を確保するために，各クラスタで二つ以上のキューマネジャを選択してフルリポジトリを確保するようお勧めします。フルリポジトリキューマネジャは，クラスタのほかのキューマネジャが送信した情報を受信し，それに従ってフルリポジトリを更新します。フルリポジトリキューマネジャは，クラスタについての情報を最新状態に保つために，相互にメッセージを送信します。

フルリポジトリとパーシャルリポジトリ

フルリポジトリキューマネジャは，クラスタのすべてのキューマネジャについての完全な情報を保持します。この情報をクラスタのフルリポジトリといいます。

クラスタのほかのキューマネジャは，フルリポジトリに情報を照会し，パーシャルリポジトリにその情報のサブセットを構築します。キューマネジャのパーシャルリポジトリは，相互にメッセージを交換する必要があるキューマネジャについての情報だけを含んでいます。キューマネジャは自分が必要とする情報についての更新を要求し，その情報が変更されている場合，フルリポジトリキューマネジャは，新しい情報を送信します。ほとんどの場合，あるキューマネジャのパーシャルリポジトリは，クラスタ内で実行するために必要なすべての情報を持っています。追加情報が必要になると，キューマネジャはフルリポジトリに問い合わせて，自分のパーシャルリポジトリを更新します。キューマネジャは，リポジトリに対して更新を要求したり，更新を受信したりするために，SYSTEM.CLUSTER.COMMAND.QUEUEというキューを使用します。

ホスト名ファイル

ホスト名称とIPアドレスとを対応づけたファイルです。標準的なパス名を次に示します。

UNIXの場合
/etc/hosts

Windowsの場合
C:¥WINDOWS¥system32¥drivers¥etc¥hosts

マ行

命令

アプリケーションからメッセージキューイング機能を利用するためのインタフェースのことです。C言語では関数，COBOL言語ではCALL文で呼び出すプログラムに相当します。

メッセージキュー

メッセージキューイング機能を使った通信をする場合に，メッセージを格納するために使用するキューのことです。メッセージキューに登録したメッセージは，キューマネジャによって通信相手に送信されます。

メッセージキューイング機能

米国IBM社が開発した，メッセージ蓄積型の通信手順のことです。メッセージキューイング機能を使った通信では，アプリケーションが登録したメッセージをキューマネジャが送受信するため，システム間の通信手順や通信障害時の処理をアプリケーションで意識しなくて済みます。また，通信相手のアプリケーションが稼働している必要がないため，アプリケーションの構造を簡単にできます。アプリケーションからキューへのアクセスには，WebSphere MQ標準のAPIを使用します。

メッセージチャネルエージェント

キューからキューへメッセージを送信するプログラムのことです。送信側と受信側にそれぞれあり，対で動作します。メッセージチャネルエージェントには，送信側か受信側か，呼び出し側かそれを受ける側かなどによって，四つのチャネルタイプがあります。

ラ行

リポジトリ

リポジトリは，クラスタのメンバであるキューマネジャについての情報の集まりです。この情報には，キューマネジャの名前，その位置，チャネル，および保持するキューなどが含まれます。情報はSYSTEM.CLUSTER.REPOSITORY.QUEUE（TP1/Message Queueの場合，ユーザが作成するキュー）というキューにメッセージの形で保存されます。通常，一つクラスタ内で二つのキューマネジャがフルリポジトリを保持し，ほかのキューマネジャは，パーシャルリポジトリを保持します。

TP1/Message Queueがサポートするのは，パーシャルリポジトリだけです。WebSphere MQのキューマネジャがフルリポジトリを保持するクラスタに参加することになります。

索引

[Ａ][Ｂ][Ｃ][Ｄ][Ｅ][Ｆ][Ｇ][Ｈ][Ｉ][Ｌ][Ｍ][Ｎ][Ｏ][Ｐ][Ｒ][Ｓ][Ｔ][Ｕ][Ｖ][Ｗ]
[ア行][カ行][サ行][タ行][ナ行][ハ行][マ行][ヤ行][ラ行][ワ行]

(英字)

(Ａ)

adoptchk〔mqtalccha（MQT通信構成定義）〕

atomic_update〔MQCゲートウェイサーバユーザサービス定義〕

auto_restart〔MQCゲートウェイサーバユーザサービス定義〕

(Ｂ)

bmtim〔mqtalccha（MQT通信構成定義）〕

bmtim〔mqtttim（MQT通信構成定義）〕

bretry〔mqtalccha（MQT通信構成定義）〕

bretrycnt〔mqtalccha（MQT通信構成定義）〕

bretryint〔mqtalccha（MQT通信構成定義）〕

bretrylg〔mqtalccha（MQT通信構成定義）〕

bretrylgcnt〔mqtalccha（MQT通信構成定義）〕

bretrylgint〔mqtalccha（MQT通信構成定義）〕

bretrymcp〔mqtalccha（MQT通信構成定義）〕

btim〔mqtalccha（MQT通信構成定義）〕

btim〔mqtttim（MQT通信構成定義）〕

bufcnt〔mqttcp（MQT通信構成定義）〕

bufcnt〔mqttcpcr（MQT通信構成定義）〕

bufcnt〔mqttcpcs（MQT通信構成定義）〕

bufsize〔mqttcp（MQT通信構成定義）〕

bufsize〔mqttcpcr（MQT通信構成定義）〕

bufsize〔mqttcpcs（MQT通信構成定義）〕

buftype〔mqtalccha（MQT通信構成定義）〕

(Ｃ)

clusrcvr

clussdr

cluster〔mqtalccha（MQT通信構成定義）〕

cnvccsid〔mqtalccha（MQT通信構成定義）〕

CONNAMEパラメタ

count〔mqttbuf（MQT通信構成定義）〕

critical〔MQCゲートウェイサーバユーザサービス定義〕

(Ｄ)

dcmtcq_uoc_bufflist

dcmtcq_uoc_mqcd

dcmtcq_uoc_mqcxp

dcmtcq_uoc_parmlist

DEFINE CHANNEL

disk〔mqttcp（MQT通信構成定義）〕

disk〔mqttcpcr（MQT通信構成定義）〕

disk〔mqttcpcs（MQT通信構成定義）〕

dtim〔mqtalccha（MQT通信構成定義）〕

dtimefct〔mqtalccha（MQT通信構成定義）〕

(Ｅ)

etim〔mqttcp（MQT通信構成定義）〕

etim〔mqttcpcr（MQT通信構成定義）〕

etim〔mqttcpcs（MQT通信構成定義）〕

extend〔mqttbuf（MQT通信構成定義）〕

(Ｆ)

FAP

FAP〔用語解説〕

(Ｇ)

groupno〔mqttbuf（MQT通信構成定義）〕

(Ｈ)

hostname〔mqtalccha（MQT通信構成定義）〕

htim〔mqtalccha（MQT通信構成定義）〕

(Ｉ)

ipaddr〔mqtalccha（MQT通信構成定義）〕

itim〔mqttcp（MQT通信構成定義）〕

(Ｌ)

length〔mqttbuf（MQT通信構成定義）〕

libmqcgwp.a

libmqcgwp.lib

libmqcgwp.sl

libmqcgwp.so

libmqcs.a

libmqcs.lib

libmqcs.sl

libmqcs.so

(Ｍ)

max_socket_descriptors〔MQAサービス定義〕

max_socket_descriptors〔MQTサービス定義〕

maxmsg〔mqtalccha（MQT通信構成定義）〕

maxseg〔mqtalccha（MQT通信構成定義）〕

MCA

mcatype〔mqtalccha（MQT通信構成定義）〕

mcauser〔mqtalccha（MQT通信構成定義）〕

MCA起動中

MCA数〔mqamqtnam（MQAサービス定義）〕

MCA数オーバ

MCAタイプ〔dcmtcq_uoc_mqcd〕

MCAのチャネルタイプ

MCAユーザID〔dcmtcq_uoc_mqcd〕

MCP〔用語解説〕

MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害・ファーストメッセージ）

MCP障害（チャネル確立後，相手システムで検出したMQプロトコル障害）

MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害・ファーストメッセージ）

MCP障害（チャネル確立後，自システムで検出したMQプロトコル障害）

MCP障害（チャネル確立時の障害）

MCP障害（デッドレターキュー障害・ファーストメッセージ）

MCP障害（デッドレターキュー障害）

MCP障害（メッセージ受信時の転送障害・ファーストメッセージ）

MCP障害（メッセージ受信時の転送障害）

MCP障害（メッセージ送信時の転送障害・ファーストメッセージ）

MCP障害（メッセージ送信時の転送障害）

medbuf〔mqtalccha（MQT通信構成定義）〕

medcnt〔mqtalccha（MQT通信構成定義）〕

Message Queue - Operation

metexdata〔mqtalccha（MQT通信構成定義）〕

MHP

module〔MQCゲートウェイサーバユーザサービス定義〕

mqa_channel_inf_file〔MQAサービス定義〕

mqa_channel_inf_file_name_a〔MQAサービス定義〕

mqa_channel_inf_file_name_b〔MQAサービス定義〕

mqa_expiry〔MQAサービス定義〕

mqa_extend_rmshm_size〔MQAサービス定義〕

mqa_filerr_continue〔MQAサービス定義〕

mqa_getwait_timeout〔MQAサービス定義〕

mqa_ioproc_num〔MQAサービス定義〕

mqa_jnl_conf〔MQAサービス定義〕

mqa_local_ccsid〔MQAサービス定義〕

mqa_max_filnum〔MQAサービス定義〕

mqa_max_grpnum〔MQAサービス定義〕

mqa_max_msg_recnum〔MQAサービス定義〕

mqa_max_quenum〔MQAサービス定義〕

mqa_maxmsg_expiry〔MQAサービス定義〕

mqa_maxque_expiry〔MQAサービス定義〕

mqa_mqc_clientnum〔MQAサービス定義〕

mqa_mqc_conf〔MQAサービス定義〕

mqa_mqc_trnnum〔MQAサービス定義〕

mqa_mqo_conf〔MQAサービス定義〕

mqa_mqo_queue_alarm_level〔MQAサービス定義〕

mqa_mqo_queue_recover_level〔MQAサービス定義〕

mqa_mqo_queuefile_alarm_level〔MQAサービス定義〕

mqa_mqo_queuefile_recover_level〔MQAサービス定義〕

mqa_mqr_conf〔MQAサービス定義〕

mqa_msg_stay_time〔MQAサービス定義〕

mqa_pool_attri〔MQAサービス定義〕

mqa_prf_trace_level〔MQAサービス定義〕

mqa_quefil_inf〔MQAサービス定義〕

mqaadd

mqaalsque

mqabkup

mqachgque

mqaconvert

mqadel

mqadelmsg

mqadelque

mqadf

mqafilinf

mqafills

MQA FRC

mqafrc

mqagrpobs

mqainit

mqainq

mqalsmsg

mqamkque

mqamqtnam

mqaprcdef

mqaqueatl

mqaquegrp

mqaquemgr

mqarcvr

mqaremque

mqarles

mqarm

mqarstr

mqaset

MQAサーバ

MQAサービス専用共用メモリ

MQAサービス専用共用メモリ確保要求者識別子〔mqaquegrp（MQAサービス定義）〕

MQAサービス定義

MQAサービス定義〔set形式〕

mqc.def

mqccontrn

mqcdtcp

mqcdtcp.exe

mqcenv

mqcgwp.o

mqcgwp.obj

mqcgwpnam

mqcls

mqclstrn

mqcmkgwp

mqcmkgwp.bat

mqcmkgwpコマンド

mqcswptrc

mqctcp

MQCクライアント機能

MQCゲートウェイサーバ

MQCゲートウェイサーバ監視タイマ値〔mqcenv（MQCサービス定義）〕

MQCゲートウェイサーバの開始と終了

MQCゲートウェイサーバの環境設定での注意事項

MQCゲートウェイサーバの作成

MQCゲートウェイサーバの状態表示〔コマンド〕

MQCゲートウェイサーバ名〔mqcgwpnam（MQCサービス定義）〕

MQCゲートウェイサーバ名定義

MQCゲートウェイサーバユーザサービス定義

MQCコネクション確立完了監視タイマ値〔mqcenv（MQCサービス定義）〕

MQCサーバ機能

MQCサーバ機能のインストール時に作成されるファイル

MQCサーバ機能のセットアップ

MQCサーバ機能の定義

MQCサービス定義

MQCトランザクション状態の表示〔コマンド〕

MQCトランザクション状態の変更〔コマンド〕

MQCトレースの強制スワップ〔コマンド〕

MQCリスナサーバ

MQCリスナサーバ通信環境定義

MQCリスナサーバの開始と終了

MQCリスナサーバの終了モード

MQIとクラスタ

MQI命令使用時のOpenTP1アプリケーションとの関係

MQR

mqrls

MQRMH構造体

mqrrefresh

mqrremove

mqrspp

mqrsppのサービス定義に関する注意事項

mqrsup

mqrswptrc

MQRトレースの強制スワップ〔コマンド〕

MQRトレースファイルの出力

mqt_trace_file_path〔MQTサービス定義〕

mqtalccha

mqtalced

mqtaltcha

mqtdmped

mqted

mqtlscha

mqtpngcha

mqtrlvcha

mqtrstcha

mqtstacha

mqtstatrc

mqtstpcha

mqtstptrc

mqtswptrc

mqttbuf

mqttcp

mqttcpcr

mqttcpcs

mqttenv

mqtttim

MQT環境定義

MQTサーバ

MQTサーバのトリガ起動によるチャネル開始

MQTサーバ名またはMQCリスナサーバ名〔mqamqtnam（MQAサービス定義）〕

MQTサービス定義

MQTサービス定義〔set形式〕

MQT実行形式プログラムの作成（UNIX）

MQT実行形式プログラムの作成（Windows）

MQT通信構成定義

MQT通信プロセス識別子〔mqttenv（MQT通信構成定義）〕

MQT通信プロセス情報の表示〔コマンド〕

MQT定義オブジェクト生成ユティリティ

MQT定義オブジェクトファイルの作成手順

MQT定義結合ユティリティ

MQTデーモン構成定義

MQTトレースの強制スワップ〔コマンド〕

MQTトレースのディスク出力機能の開始〔コマンド〕

MQTトレースのディスク出力機能の終了〔コマンド〕

MQTトレースファイルの出力

MQTトレースファイルの編集出力〔コマンド〕

MQTマネジャ

MQTメイン関数の作成

MQシステム〔用語解説〕

MQプロトコルエラー時のチャネル確立再試行の有無〔dcmtcq_uoc_mqcd〕

msgexit〔mqtalccha（MQT通信構成定義）〕

mtim〔mqtalccha（MQT通信構成定義）〕

(Ｎ)

netprty〔mqtalccha（MQT通信構成定義）〕

nice〔MQCゲートウェイサーバユーザサービス定義〕

npmspeed〔mqtalccha（MQT通信構成定義）〕

(Ｏ)

ohostname〔mqtalccha（MQT通信構成定義）〕

oipaddr〔mqtalccha（MQT通信構成定義）〕

OpenTP1システム，およびMQシステム障害

OpenTP1システム，およびMQシステム障害（ファーストメッセージ）

oportno〔mqtalccha（MQT通信構成定義）〕

oservname〔mqtalccha（MQT通信構成定義）〕

(Ｐ)

portno〔mqtalccha（MQT通信構成定義）〕

portno〔mqttcp（MQT通信構成定義）〕

portno〔mqttcpcr（MQT通信構成定義）〕

portnum〔mqtalccha（MQT通信構成定義）〕

(Ｒ)

rcvbuf〔mqtalccha（MQT通信構成定義）〕

rcvbuf〔mqttcp（MQT通信構成定義）〕

rcvbuf〔mqttcpcr（MQT通信構成定義）〕

rcvexdata〔mqtalccha（MQT通信構成定義）〕

rcvexit〔mqtalccha（MQT通信構成定義）〕

receive_from〔MQCゲートウェイサーバユーザサービス定義〕

receiver

requester

RESET CLUSTERコマンドを実行できない場合の再参加（オフライン）

RESET CLUSTERコマンドを実行できない場合の再参加（オンライン）

RESET CLUSTERコマンドを実行できない場合の削除

RESET CLUSTERコマンドを実行できる場合の再参加

RESET CLUSTERコマンドを実行できる場合の削除

RESUME QMGRコマンド

RPC

rtim〔mqttcp（MQT通信構成定義）〕

rtim〔mqttcpcr（MQT通信構成定義）〕

(Ｓ)

scyexdata〔mqtalccha（MQT通信構成定義）〕

scyexit〔mqtalccha（MQT通信構成定義）〕

sender

sendexit〔mqtalccha（MQT通信構成定義）〕

server

servname〔mqtalccha（MQT通信構成定義）〕

servname〔mqttcp（MQT通信構成定義）〕

servname〔mqttcpcr（MQT通信構成定義）〕

sndbuf〔mqtalccha（MQT通信構成定義）〕

sndexdata〔mqtalccha（MQT通信構成定義）〕

sndjnl〔mqtalccha（MQT通信構成定義）〕

SPP

stim〔mqttcpcr（MQT通信構成定義）〕

stim〔mqttcpcs（MQT通信構成定義）〕

SUP

SUSPEND QMGRコマンド

SYSTEM.CLUSTER.COMMAND.QUEUE

SYSTEM.CLUSTER.REMOTE.QUEUE

SYSTEM.CLUSTER.REPOSITORY.QUEUE

SYSTEM.CLUSTER.TRANSMIT.QUEUE

(Ｔ)

TCP/IP確立確認の回数〔dcmtcq_uoc_mqcd〕

TCP/IP確立確認の間隔（秒数）〔dcmtcq_uoc_mqcd〕

TCP/IP出力用バッファサイズ〔dcmtcq_uoc_mqcd〕

TCP/IP入力用バッファサイズ〔dcmtcq_uoc_mqcd〕

tcprcvbuf〔mqtalccha（MQT通信構成定義）〕

tcpsndbuf〔mqtalccha（MQT通信構成定義）〕

TCP構成定義

tim1〔mqtalccha（MQT通信構成定義）〕

tim2〔mqtalccha（MQT通信構成定義）〕

tim3〔mqtalccha（MQT通信構成定義）〕

tim4〔mqtalccha（MQT通信構成定義）〕

tim4cnt〔mqtalccha（MQT通信構成定義）〕

TP1/Message Queue - Access

TP1/Message Queueで使用できる命令

TP1/Message Queueの運用コマンド

TP1/Message Queueの環境作成手順

TP1/Message Queueのジャーナルの取得契機

trccnt〔mqttcp（MQT通信構成定義）〕

trccnt〔mqttcpcr（MQT通信構成定義）〕

trccnt〔mqttcpcs（MQT通信構成定義）〕

tretrycnt〔mqtalccha（MQT通信構成定義）〕

tretryint〔mqtalccha（MQT通信構成定義）〕

trn_crm_use〔トランザクションサービス定義〕

trn_rm_open_close_scope〔MQCゲートウェイサーバユーザサービス定義〕

type〔mqtalccha（MQT通信構成定義）〕

(Ｕ)

UOCが動作するプロセス

UOCで使用できる関数

UOCとのインタフェース

UOCに渡されるデータ形式

UOCの異常処理

UOCの開始条件

UOCの組み込み

UOCの作成についての注意事項

UOCのスタック領域

UOCの呼び出し形式

UOCパラメタリスト

UOC呼び出しの流れ

(Ｖ)

vretry〔mqtalccha（MQT通信構成定義）〕

(Ｗ)

watch_time〔MQAサービス定義〕

WebSphere MQ〔用語解説〕

(ア行)

(あ)

相手システムのキューマネジャ名〔dcmtcq_uoc_mqcxp〕

相手ホストのIPアドレス〔dcmtcq_uoc_mqcd〕

相手ホストのサービス名〔dcmtcq_uoc_mqcd〕

相手ホストのポート番号〔dcmtcq_uoc_mqcd〕

相手ホストのホスト名〔dcmtcq_uoc_mqcd〕

空き

アプリケーション

アプリケーション〔用語解説〕

アプリケーションからのメッセージ操作とキュー操作

アプリケーションからメッセージキューにアクセスする場合の条件

アプリケーション記述子〔mqaprcdef（MQAサービス定義）〕

アプリケーションタイプ〔mqaprcdef（MQAサービス定義）〕

アプリケーションとキューマネジャの接続

アプリケーションの見直し

(い)

一時的障害閉塞

一時的動的キュー

イニシエーションキュー監視

イニシエーションキュー障害

イニシエーションキューの障害

イニシエーションキュー名〔mqaqueatl（MQAサービス定義）〕

イニシエーションキュー名〔mqttcp（MQT通信構成定義）〕

(う)

運用コマンドの概要

(え)

永続的動的キュー

(お)

応答キューの別名

オブジェクト〔用語解説〕

オブジェクト属性の設定〔コマンド〕

オブジェクトの属性の設定

オブジェクトの属性表示

オブジェクトの属性表示〔コマンド〕

オブジェクトハンドル

(カ行)

(か)

開始要求応答受信監視タイマ値〔dcmtcq_uoc_mqcd〕

回線監視〔mqcenv（MQCサービス定義）〕

各チャネルタイプに指定できるオプション

確認メッセージ受信監視タイマ値〔dcmtcq_uoc_mqcd〕

環境データ〔mqaprcdef（MQAサービス定義）〕

関連製品

(き)

機能フラグ〔dcmtcq_uoc_mqcxp〕

キュー，メッセージの削除〔コマンド〕

キューおよびキューファイルの障害とユーザの処理

キュー記述子〔mqaalsque（MQAサービス定義）〕

キュー記述子〔mqaqueatl（MQAサービス定義）〕

キュー記述子〔mqaremque（MQAサービス定義）〕

キューとキューファイルの関係

キューの削除

キューの作成〔コマンド〕

キューの作成と削除

キューの使用方法による分類

キューの説明

キューの属性

キューの属性の変更

キューの属性の変更〔コマンド〕

キューファイル

キューファイル〔用語解説〕

キューファイルグループ

キューファイルグループ監視の要否〔mqaquegrp（MQAサービス定義）〕

キューファイルグループ登録メッセージサイズ回復値〔mqaquegrp（MQAサービス定義）〕

キューファイルグループ登録メッセージサイズしきい値〔mqaquegrp（MQAサービス定義）〕

キューファイルグループ内のキューファイル状態変更〔コマンド〕

キューファイルグループの構成定義

キューファイルグループの使用状況表示

キューファイルグループの使用状況表示〔コマンド〕

キューファイルグループ名〔mqaquegrp（MQAサービス定義）〕

キューファイル内の情報表示

キューファイル内の情報表示〔コマンド〕

キューファイル二重化構成

キューファイルの回復

キューファイルの回復〔コマンド〕

キューファイルの切り離し〔コマンド〕

キューファイルの組み込み〔コマンド〕

キューファイルの組み込みと切り離し

キューファイルのコンバート〔コマンド〕

キューファイルの削除

キューファイルの削除〔コマンド〕

キューファイルの作成

キューファイルの状態

キューファイルの情報表示

キューファイルの情報表示〔コマンド〕

キューファイルの入出力エラー

キューファイルのバックアップ〔コマンド〕

キューファイルのバックアップとリストア

キューファイルの閉塞解除〔コマンド〕

キューファイルのリストア〔コマンド〕

キューファイルの論理閉塞と閉塞解除

キューファイルの割り当て〔コマンド〕

キューファイル名〔mqaqueatl（MQAサービス定義）〕

キューファイル名〔mqaquegrp（MQAサービス定義）〕

キュー保持時間〔mqaqueatl（MQAサービス定義）〕

キューマネジャ

キューマネジャ〔用語解説〕

キューマネジャからクラスタキューを削除

キューマネジャ記述子〔mqaquemgr（MQAサービス定義）〕

キューマネジャ定義

キューマネジャの脱退

キューマネジャの別名

キューマネジャのリフレッシュ

キューマネジャ名〔mqaquemgr（MQAサービス定義）〕

強制停止

共用性〔mqaqueatl（MQAサービス定義）〕

共用メモリの見積もり式

(く)

クラスタ〔用語解説〕

クラスタ運用時での注意事項

クラスタ外のキューマネジャからの応答

クラスタ外のキューマネジャによるキューへのメッセージ登録

クラスタ外のキューマネジャによるキューへのメッセージ登録（別名使用）

クラスタ外のキューマネジャへの応答

クラスタ外のキューマネジャへのメッセージ登録

クラスタからキューマネジャを削除および再参加

クラスタからクラスタへのメッセージ登録

クラスタからの脱退〔コマンド〕

クラスタ環境のシステムキュー

クラスタ環境の通信構成

クラスタ管理の検討事項

クラスタ機能のリターンコード

クラスタキュー

クラスタキュー〔用語解説〕

クラスタキュー登録不可時の処理

クラスタキューの属性を変更

クラスタキューマネジャ〔用語解説〕

クラスタ使用時の障害対策

クラスタ情報の表示〔コマンド〕

クラスタ設計の検討事項

クラスタセンダTCP構成定義

クラスタセンダチャネル

クラスタセンダチャネル〔用語解説〕

クラスタセンダチャネルの自動定義

クラスタセンダプロセス

クラスタチャネル情報待ち時間

クラスタチャネルの削除

クラスタチャネルの属性変更

クラスタチャネルの属性を変更

クラスタで使用する定義コマンド

クラスタでネットワークを設定する定義

クラスタ転送キュー

クラスタ転送キュー〔用語解説〕

クラスタ転送キューの保守

クラスタ内共用クラスタ名称〔mqaalsque（MQAサービス定義）〕

クラスタ内共用クラスタ名称〔mqaremque（MQAサービス定義）〕

クラスタ内での別名の使用例

クラスタに関連する別名の使用とリモートキューのローカル定義

クラスタの概要

クラスタの管理

クラスタの機能

クラスタの構成要素

クラスタの使用によるシステム管理の軽減

クラスタの使用方法

クラスタの設定方法

クラスタのセットアップ

クラスタの長所

クラスタへの新しいキューマネジャの追加

クラスタへのゲートウェイとしてのキューマネジャの使用

クラスタ名〔dcmtcq_uoc_mqcd〕

クラスタリングの動作

クラスタレシーバTCP構成定義

クラスタレシーバチャネル

クラスタレシーバチャネル〔用語解説〕

クラスタレシーバチャネルのマルチインスタンス

クラスタレシーバプロセス

(け)

計画停止A

計画停止B

継続セグメント受信監視タイマ値〔dcmtcq_uoc_mqcd〕

継続セグメント受信監視タイマ値〔mqcenv（MQCサービス定義）〕

継続メッセージ受信監視タイマ値〔dcmtcq_uoc_mqcd〕

経路の選択

ゲートウェイキューマネジャ

(こ)

構造体識別子〔dcmtcq_uoc_mqcxp〕

構造体識別子〔dcmtcq_uoc_parmlist〕

構造体バージョン番号〔dcmtcq_uoc_mqcd〕

構造体バージョン番号〔dcmtcq_uoc_mqcxp〕

構造体バージョン番号〔dcmtcq_uoc_parmlist〕

コーラ

コーラとレスポンダ

コネクション障害（コーラ側・ファーストメッセージ）

コネクション障害（コーラ側）

コネクション障害（レスポンダ側・ファーストメッセージ）

コネクション障害（レスポンダ側）

コネクションハンドル

(サ行)

(さ)

サーバ

サービス名ファイル〔用語解説〕

最大セグメントサイズ〔dcmtcq_uoc_mqcd〕

最大ハンドル数〔mqaquemgr（MQAサービス定義）〕

最大メッセージ長〔dcmtcq_uoc_mqcd〕

最大メッセージ長〔mqaqueatl（MQAサービス定義）〕

最大メッセージ長〔mqaquemgr（MQAサービス定義）〕

最大メッセージ登録数〔mqaqueatl（MQAサービス定義）〕

最大メッセージ優先度〔mqaquemgr（MQAサービス定義）〕

(し)

時間監視機能

時間監視障害

時間監視障害（ファーストメッセージ）

自システムのサービス名〔mqcenv（MQCサービス定義）〕

自システムのサービス名〔mqcgwpnam（MQCサービス定義）〕

自システムのポート番号〔mqcenv（MQCサービス定義）〕

自システムのポート番号〔mqcgwpnam（MQCサービス定義）〕

自システムのポート番号使用数〔dcmtcq_uoc_mqcd〕

システム起動

システム構成例

システムサービス情報定義の作成

自ホストのIPアドレス〔dcmtcq_uoc_mqcd〕

自ホストのサービス名〔dcmtcq_uoc_mqcd〕

自ホストのポート番号〔dcmtcq_uoc_mqcd〕

自ホストのホスト名〔dcmtcq_uoc_mqcd〕

終了処理監視

終了処理監視タイマ値〔mqcenv（MQCサービス定義）〕

受信出口ユーザデータ〔dcmtcq_uoc_mqcd〕

受信バッファグループ番号〔dcmtcq_uoc_mqcd〕

受信バッファ方式

障害時に取得する情報

障害閉塞

使用種別〔mqaqueatl（MQAサービス定義）〕

使用ライブラリの制限

省略時の転送キュー名〔mqaquemgr（MQAサービス定義）〕

省略時の取り出しオプション〔mqaqueatl（MQAサービス定義）〕

省略時のメッセージ永続性〔mqaalsque（MQAサービス定義）〕

省略時のメッセージ永続性〔mqaqueatl（MQAサービス定義）〕

省略時のメッセージ永続性〔mqaremque（MQAサービス定義）〕

省略時のメッセージ優先度〔mqaalsque（MQAサービス定義）〕

省略時のメッセージ優先度〔mqaqueatl（MQAサービス定義）〕

省略時のメッセージ優先度〔mqaremque（MQAサービス定義）〕

(せ)

正常

正常開始する場合の準備

正常終了

セキュリティ出口名〔dcmtcq_uoc_mqcd〕

セキュリティ出口ユーザデータ〔dcmtcq_uoc_mqcd〕

セグメント

セグメント最大長〔dcmtcq_uoc_mqcxp〕

切断時間間隔

切断時間間隔〔dcmtcq_uoc_mqcd〕

切断時間間隔使用の有無〔dcmtcq_uoc_mqcd〕

センダ

(そ)

送受信監視

送受信バッファリストのアドレス〔dcmtcq_uoc_parmlist〕

送信チャネルジャーナル出力条件〔dcmtcq_uoc_mqcd〕

送信出口ユーザデータ〔dcmtcq_uoc_mqcd〕

送信バッファグループ番号〔dcmtcq_uoc_mqcd〕

送信バッファ方式

総バッチメッセージ数〔mqamqtnam（MQAサービス定義）〕

属性〔用語解説〕

(タ行)

(た)

タイマ定義

タイムアウト時チャネル確立再試行の要否〔dcmtcq_uoc_mqcd〕

短期確立再試行の回数〔dcmtcq_uoc_mqcd〕

短期確立再試行の間隔〔dcmtcq_uoc_mqcd〕

短期確立再試行の要否〔dcmtcq_uoc_mqcd〕

(ち)

チャネル

チャネル〔用語解説〕

チャネル解放中

チャネル確立拒否応答

チャネル確立再試行

チャネル確立中

チャネル確立方式〔dcmtcq_uoc_mqcd〕

チャネル確立リクエスト中

チャネル確立リトライ中

チャネル管理情報格納ファイル障害

チャネル終了定義

チャネル受信出口名〔dcmtcq_uoc_mqcd〕

チャネル状態

チャネル状態の不一致時の強制再接続条件〔dcmtcq_uoc_mqcd〕

チャネル使用不可

チャネル送信出口名〔dcmtcq_uoc_mqcd〕

チャネル属性の変更〔コマンド〕

チャネルタイプ

チャネルタイプ〔dcmtcq_uoc_mqcd〕

チャネル定義

チャネル定義の更新時刻〔dcmtcq_uoc_mqcd〕

チャネル停止

チャネルデータ定義ブロック

チャネルデータ定義ブロック（dcmtcq_uoc_mqcd）の長さ〔dcmtcq_uoc_mqcd〕

チャネルデータ定義ブロックのアドレス〔dcmtcq_uoc_parmlist〕

チャネル出口パラメタブロック

チャネル出口パラメタブロックのアドレス〔dcmtcq_uoc_parmlist〕

チャネル動作中

チャネルの開始

チャネルの開始〔コマンド〕

チャネルの解放

チャネルの確立

チャネルの機能

チャネルの終了〔コマンド〕

チャネルの状態表示〔コマンド〕

チャネルのテスト接続〔コマンド〕

チャネルのネゴシエーション

チャネル名〔dcmtcq_uoc_mqcd〕

チャネル名〔mqtalccha（MQT通信構成定義）〕

チャネル要求監視

注釈〔dcmtcq_uoc_mqcd〕

長期確立再試行の回数〔dcmtcq_uoc_mqcd〕

長期確立再試行の間隔〔dcmtcq_uoc_mqcd〕

長期確立再試行の要否〔dcmtcq_uoc_mqcd〕

(つ)

通常メッセージ

通信障害

(て)

定義情報の作成手順

定義済みキュー

定義済みキューの作成

定義タイプ〔mqaqueatl（MQAサービス定義）〕

定義の記述形式

出口からの応答〔dcmtcq_uoc_mqcxp〕

出口からの二次応答〔dcmtcq_uoc_mqcxp〕

出口障害

出口障害（ファーストメッセージ）

出口データ〔dcmtcq_uoc_mqcxp〕

出口のタイプ〔dcmtcq_uoc_mqcxp〕

出口ユーザ領域〔dcmtcq_uoc_mqcxp〕

出口を呼び出すための二次理由〔dcmtcq_uoc_mqcxp〕

出口を呼び出すための理由〔dcmtcq_uoc_mqcxp〕

デッドレターキュー名〔mqaquemgr（MQAサービス定義）〕

デフォルトチャネル定義

デフォルトのバインディング〔mqaalsque（MQAサービス定義）〕

デフォルトのバインディング〔mqaqueatl（MQAサービス定義）〕

デフォルトのバインディング〔mqaremque（MQAサービス定義）〕

転送キュー監視

転送キュー監視回数〔dcmtcq_uoc_mqcd〕

転送キュー監視間隔〔dcmtcq_uoc_mqcd〕

転送キュー監視方式〔dcmtcq_uoc_mqcd〕

転送キュー名〔dcmtcq_uoc_mqcd〕

転送キュー名〔mqaremque（MQAサービス定義）〕

転送キュー名〔mqtalccha（MQT通信構成定義）〕

(と)

動的キュー

動的キューの作成

同名クラスタキュー

登録許可〔mqaalsque（MQAサービス定義）〕

登録許可〔mqaqueatl（MQAサービス定義）〕

登録許可〔mqaremque（MQAサービス定義）〕

トランザクションサービス定義

トランザクションとメッセージキューアクセスとの関係

トランザクションブランチ終了監視タイマ値〔mqcenv（MQCサービス定義）〕

トランザクション有効性〔mqaquemgr（MQAサービス定義）〕

トリガ〔用語解説〕

トリガイベント

トリガ間隔〔mqaquemgr（MQAサービス定義）〕

トリガ起動処理障害

トリガ機能

トリガ制御〔mqaqueatl（MQAサービス定義）〕

トリガタイプ〔mqaqueatl（MQAサービス定義）〕

トリガデータ〔mqaqueatl（MQAサービス定義）〕

トリガのためのメッセージ登録数の下限値〔mqaqueatl（MQAサービス定義）〕

トリガのためのメッセージ優先度の下限値〔mqaqueatl（MQAサービス定義）〕

トリガメッセージ

トリガモニタアプリケーション

取り出し許可〔mqaalsque（MQAサービス定義）〕

取り出し許可〔mqaqueatl（MQAサービス定義）〕

(ナ行)

(に)

二重受信メッセージの破棄

入出力バッファ数〔mqaquegrp（MQAサービス定義）〕

(ね)

ネゴシエーション

ネットワーク接続優先順位〔dcmtcq_uoc_mqcd〕

ネットワークリクエスト

(ハ行)

(は)

バージョンアップ時の注意

ハートビート間隔

ハートビート間隔〔dcmtcq_uoc_mqcd〕

ハートビート機能

ハートビートメッセージ

ハートビートメッセージ〔用語解説〕

配布リスト

配布リストのサポート〔mqaqueatl（MQAサービス定義）〕

配布リストのサポート〔mqaquemgr（MQAサービス定義）〕

バインディング〔用語解説〕

バックアップキューファイル名〔mqaquegrp（MQAサービス定義）〕

バッチ

バッチサイズ

バッチサイズ〔dcmtcq_uoc_mqcd〕

バッチサイズ〔mqtalccha（MQT通信構成定義）〕

バッチ終了待ちタイマ（バッチインターバル）

バッチ終了待ちタイマ値〔dcmtcq_uoc_mqcd〕

バッチ終了待ちタイマ値（ミリ秒）〔dcmtcq_uoc_mqcd〕

バッチ転送

バッファアドレス〔dcmtcq_uoc_bufflist〕

バッファグループ定義

バッファ情報領域〔dcmtcq_uoc_bufflist〕

バッファ数〔dcmtcq_uoc_bufflist〕

バッファ方式〔dcmtcq_uoc_mqcd〕

バッファリスト

(ひ)

非永続メッセージ転送速度〔dcmtcq_uoc_mqcd〕

(ふ)

ファーストチャネル

ファーストメッセージ

ファーストメッセージ機能

ファーストメッセージ障害

ファイル障害

ファイル二重化の回復〔コマンド〕

フィードバックコード〔dcmtcq_uoc_mqcxp〕

負荷分散

フルリポジトリキューマネジャ〔用語解説〕

フルリポジトリとパーシャルリポジトリ〔用語解説〕

フルリポジトリを保持するキューマネジャの選択

プロセス記述子〔mqaprcdef（MQAサービス定義）〕

プロセス定義

プロセス名〔mqaprcdef（MQAサービス定義）〕

プロセス名〔mqaqueatl（MQAサービス定義）〕

プロトコル名称〔mqamqtnam（MQAサービス定義）〕

プロトコルレベル〔dcmtcq_uoc_mqcxp〕

分散キューイング

分散キューイングでネットワークを設定する定義

(へ)

ベースキュー名〔mqaalsque（MQAサービス定義）〕

別名キュー

別名キューの属性定義

別名キュー名〔mqaalsque（MQAサービス定義）〕

変換後CCSID〔dcmtcq_uoc_mqcd〕

編集用バッファエントリ番号〔dcmtcq_uoc_bufflist〕

編集用バッファリストのアドレス〔dcmtcq_uoc_parmlist〕

(ほ)

ポート番号〔mqttenv（MQT通信構成定義）〕

ホスト名ファイル〔用語解説〕

(マ行)

(ま)

マルチキャスト機能

マルチクラスタ

(め)

命令

命令〔用語解説〕

メッセージエントリ確保率〔mqaquegrp（MQAサービス定義）〕

メッセージキュー〔用語解説〕

メッセージキューイング

メッセージキューイング機能

メッセージキューイング機能〔用語解説〕

メッセージキューイング機能の特長

メッセージキューイングの基本構成要素

メッセージシーケンス番号

メッセージシーケンス番号でのメッセージの管理

メッセージシーケンス番号の最大値〔dcmtcq_uoc_mqcd〕

メッセージシーケンス番号の最大値〔mqtalccha（MQT通信構成定義）〕

メッセージシーケンス番号のリセット

メッセージシーケンス番号のリセット〔コマンド〕

メッセージ受信時のあて先の決定

メッセージ受信中の障害

メッセージ受信の流れ

メッセージ情報管理ファイル

メッセージ送受信機能

メッセージ送受信中の障害

メッセージ送信時のキューマネジャの再マッピング

メッセージ送信時の転送キューの変更または指定

メッセージ送信中の障害

メッセージ送信の流れ

メッセージ送達未確認の解決〔コマンド〕

メッセージ滞留時間監視の要否〔mqaqueatl（MQAサービス定義）〕

メッセージチャネルエージェント

メッセージチャネルエージェント〔用語解説〕

メッセージチャネルプロトコル

メッセージ出口名〔dcmtcq_uoc_mqcd〕

メッセージとセグメントの関係

メッセージの削除

メッセージの削除〔コマンド〕

メッセージの受信

メッセージの送信

メッセージの送達未確認状態

メッセージの送達未確認状態の解決

メッセージの表示

メッセージの表示〔コマンド〕

メッセージ配布順序〔mqaqueatl（MQAサービス定義）〕

メッセージファイル

メッセージ編集出口UOC

メッセージ編集出口UOCを使用したファイル転送

メッセージ編集出口バッファグループ番号〔dcmtcq_uoc_mqcd〕

メッセージ編集出口バッファ数〔dcmtcq_uoc_mqcd〕

メッセージ編集出口ユーザデータ〔dcmtcq_uoc_mqcd〕

メッセージ類似性

メッセージ類似性の処置

メモリ不足

(も)

モデルキューの属性定義

モデルキューの定義名〔mqaqueatl（MQAサービス定義）〕

(ヤ行)

(ゆ)

ユーザオウンコーディング

ユーザデータ〔mqaprcdef（MQAサービス定義）〕

(よ)

要求受信監視タイマ値〔mqcenv（MQCサービス定義）〕

(ラ行)

(り)

リクエスタ

リポジトリ〔用語解説〕

リポジトリ管理サーバ

リポジトリ管理サーバ起動待ち合わせ時間

リポジトリ管理サーバの開始方法

リポジトリ管理サーバの環境変数

リポジトリ管理サーバの作成

リポジトリ管理サーバの動作

リポジトリ管理サーバユーザサービス定義ファイル

リポジトリ管理の構成

リポジトリ情報の再作成〔コマンド〕

リポジトリ情報の保持期間

リポジトリへの登録失敗時の処理

リモートキューのローカル定義

リモートキューのローカル定義名〔mqaremque（MQAサービス定義）〕

リモートキューマネジャ名〔mqaremque（MQAサービス定義）〕

リモートキュー名〔mqaremque（MQAサービス定義）〕

(れ)

レシーバ

レスポンダ

(ろ)

ローカルキューの作成方法による分類

論理閉塞

(ワ行)

(わ)

ワークロード管理へのクラスタの使用

■ 商標類

AIXは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
AIX 5Lは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
HP-UXは，Hewlett-Packard Companyのオペレーティングシステムの名称です。
Itaniumは，アメリカ合衆国およびその他の国におけるIntel Corporationの商標です。
Javaは，Oracle Corporation 及びその子会社，関連会社の米国 及びその他の国における登録商標または商標です。
Linuxは，Linus Torvalds氏の日本およびその他の国における登録商標または商標です。
Microsoftは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
MicrosoftおよびVisual Studioは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
MQSeriesは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
OpenViewは，Hewlett-Packard Companyの商標です。
Red Hatは，米国およびその他の国でRed Hat, Inc. の登録商標もしくは商標です。
Solarisは，Oracle Corporation 及びその子会社，関連会社の米国 及びその他の国における登録商標または商標です。
UNIXは，The Open Groupの米国ならびに他の国における登録商標です。
Visual C++は，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
WebSphereは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows NTは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Vistaは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。