MCAは,次の図に示すパラメタをパラメタリストアドレス(parm)に設定し,UOCの呼び出し時に渡します。
図3-2 UOCに渡されるパラメタの形式
各パラメタの内容について説明します。
各領域の後ろの括弧は,その領域のデータタイプです。データタイプについては,マニュアル「TP1/Message Queue プログラム作成リファレンス」を参照してください。
データタイプの次に,その領域の「向き」を示します。つまり,その領域を何が使用し,何が設定するかです。
UOCパラメタリストは,UOCに渡されるパラメタを管理しています。
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;
:
MQCHAR Reserve1[24]; /* 予備 */
} dcmtcq_uoc_parmlist;
チャネル出口パラメタブロックは,UOCの処理を決定したり,UOCがMCAの動作を制御したりするために使用されます。
チャネル出口パラメタブロックには,UOCへの入力領域とUOCからの出力領域が両方とも存在するので注意してください。
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;
:
MQLONG CapabilityFlags; /* 機能フラグ */
MQCHAR Reserve1[8]; /* 予備 */
} dcmtcq_uoc_mqcxp;
チャネルデータ定義構造体はチャネルの属性を示すパラメタを持ちます。各領域の内容は特に記述のないかぎり,チャネル定義の内容と同じです(ここでは,TCP定義のmqtalccha定義コマンドの該当するオプションを〔 〕で示します)。また,名称を格納する領域は後ろに¥0を格納し,定義で指定できるサイズより大きくなるので注意してください。
また,このパラメタのすべての領域は出口へのExitReasonがDCMTCQ_MQXR_ALTの場合を除き出口の入出力領域です。ExitReasonがDCMTCQ_MQXR_ALTでない場合にUOCが更新すると,その後のチャネルの動作は保証しません。
DCMTCQ_MQXR_ALTの場合に更新できる領域については次の表を参照してください。UOCが更新した値が各領域の指定としては不正であるときは,更新された値を無視して変更前の値でチャネル処理を続行します。
表3-1 チャネルタイプと有効領域
属性 | sender | server | receiver | requester | clussdr | clusrcvr | 連絡属性※1 | 自動定義のクラスタセンダの仮定値 | 注意事項 |
---|---|---|---|---|---|---|---|---|---|
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 | ● | ● | - | ● | ○ | ● | あり※3 | - | 両方指定された場合OwnIPAddr指定値が優先されます。 |
OwnHostName | ● | ● | - | ● | ○ | ● | あり※3 | - | |
OwnPortNum | ● | ● | - | ● | ○ | ● | あり※3 | - | 両方指定された場合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属性(自システムのサービス名)の指定がある場合に有効です。 |
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;
バッファリストは,メッセージを格納した送受信バッファや,それを編集する場合に使用する編集バッファをやり取りするために使用されます。
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;
:
MQCHAR *Buffer_addr; /* バッファアドレス */
} dcmtcq_uoc_buffinf;