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;

(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;

(3) チャネルデータ定義ブロックdcmtcq_uoc_mqcd

チャネルデータ定義構造体はチャネルの属性を示すパラメタを持ちます。各領域の内容は特に記述のないかぎり,チャネル定義の内容と同じです(ここでは,TCP定義のmqtalccha定義コマンドの該当するオプションを〔 〕で示します)。また,名称を格納する領域は後ろに¥0を格納し,定義で指定できるサイズより大きくなるので注意してください。

また,このパラメタのすべての領域は出口へのExitReasonがDCMTCQ_MQXR_ALTの場合を除き出口の入出力領域です。ExitReasonがDCMTCQ_MQXR_ALTでない場合にUOCが更新すると,その後のチャネルの動作は保証しません。

DCMTCQ_MQXR_ALTの場合に更新できる領域については次の表を参照してください。UOCが更新した値が各領域の指定としては不正であるときは,更新された値を無視して変更前の値でチャネル処理を続行します。

表3-1 チャネルタイプと有効領域

属性senderserverreceiverrequesterclussdrclusrcvr連絡属性1自動定義のクラスタセンダの仮定値注意事項
ChannelNameあり
VersionDCMTCQ_MQCD_VERSION_7
ChannelTypeあり
ClusterNameあり
BatchSizeあり事前定義クラスタセンダチャネルの場合は,定義値よりも大きくすることはできません。
自動定義クラスタセンダチャネルの場合は,計算値※2よりも大きくすることはできません。
XmitQNameありクラスタチャネルはSYSTEM.CLUSTER.TRANSMIT.QUEUE固定です。
MaxMsgLengthありBufTypeがメッセージ方式(DCMTCQ_MQBUFT_MSG)の場合は,メッセージ送受信バッファのバッファ長よりも大きくすることはできません。
MaxSegLength8192BufTypeがセグメント方式(DCMTCQ_MQBUFT_SEG)の場合は,メッセージ送受信バッファのバッファ長よりも大きくすることはできません。
SeqNumberWrapあり
BufTypemsg
SendBufGroup1
ReceiveBufGroup
MsgEdtBufGroup
MsgEdtBufCount
StartTypeauto
LongRetryTypeあり
LongRetryCountあり
LongRetryIntervalあり
OwnIPAddrあり3両方指定された場合OwnIPAddr指定値が優先されます。
OwnHostNameあり3
OwnPortNumあり3両方指定された場合OwnPortNum指定値が優先されます。
clusrcvrではOwnServNameはポート番号で相手システムへ連絡します。
OwnServName
PartnerIPAddrあり両方指定された場合PartnerIPAddr指定値が優先されます。
事前定義クラスタセンダだけ変更できます。
PartnerHostNameあり
PartnerPortNumあり両方指定された場合PartnerPortNum指定値が優先されます。
clussdrではPartnerServNameはポート番号で相手システムへ連絡します。
事前定義クラスタセンダだけ変更できます。
PartnerServName
ConRspRecvInterval30
RspMsgRecvInterval30
NextSegRecvInterval
DiscInterval転送キュー監視方式がタイマ方式の場合に有効です。
DiscIntervalCount転送キュー監視方式がタイマ方式の場合に有効です。
DiscInterval2あり転送キュー監視方式がイベント方式の場合に有効です。
またはクラスタチャネルで有効です。
DiscInterval2Effectあり
TimeoutConRetryYES
NextMsgRecvInterval
HeartbeatIntervalあり
BatchIntervalあり
MsgEdtUserDataありバッファ方式がメッセージ方式の場合に有効です。
SendUserDataあり
ReceiveUserDataあり
TcpSendBufLength
TcpRecvBufLength
ConvCCSIDありクラスタレシーバチャネルでは,システム定義に値を指定すると相手システムがTP1/Message QueueのCCSIDに変更します。
ただし,相手システムはWebSphere MQだけです。
NonPersistentMsgSpeedあり
TranQMonTypeeventクラスタセンダチャネルの場合は,event固定です。
NetworkPriorityあり
AlterTimeあり
MsgChaProRetry
AdoptCheck
ShortRetryTypeあり
ShortRetryCountあり
ShortRetryIntervalあり
SecurityUserDataあり
SendExitあり
RcvExitあり
MsgExitあり
ScyExitあり
Descrあり
MCAUserあり
MCATypeあり
TcpRetryCount10
TcpRetryInterval1
StrucLength
SndJnlIOflush
BatchMilIntervalあり
OwnPortAltNum1OwnPortNum属性(自システムのポート番号)または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;

(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;