プログラミング・ガイド

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

Oracle Tuxedo Message Queue PAMSプログラミング・ガイド

この章には次のトピックが含まれます:

 


PAMSアプリケーション・プログラミング・インタフェース

Oracle MessageQ APIの説明の形式

Oracle MessageQ APIのデータ型

Oracle MessageQアプリケーション・プログラミング・インタフェース(API)はポータブルであるため、APIはすべてのサポート対象プラットフォーム向けに1つに文書化されています。この章では、すべてのOracle MessageQ呼出し可能サービスを、標準の説明書式を使用してアルファベット順に説明します。

注意: pamsで開始するAPIのかわりにtpで開始するAPIを使用することを強くお薦めします。
注意: Oracle Tuxedo Message QueueはPAMS APIをサポートし、Oracle Messageq (OMQ)との互換性を実現しています。OMQアプリケーションをOTMQに移行するには、「OMQからOTMQ 12cへの移行」を参照してください。

Oracle MessageQ APIの説明の形式

各説明の先頭には、エントリ・ポイント名および実行される機能に関する簡単な説明が含まれています。表2-1に、各呼出し可能サービスの説明の項を示します。

表2-1 呼出し可能サービスの説明の形式
項のタイトル
説明内容
構文
エントリ・ポイント名および引数リストによる、呼出し可能サービスを使用するための構文。大カッコ([ ])は、サービスのオプション引数を示します。呼出し可能を使用するための構文
引数
各引数に対するデータ型、受渡しメカニズム、C言語プロトタイプおよびアクセス。
引数の定義
呼出し可能サービスの使用方法に関する詳細情報。
説明
呼出し可能サービスの使用方法に関する詳細情報。
戻り値
戻りコードおよびこれらがサポートされるプラットフォーム。
関連項目
関連する呼出し可能サービスのリスト。これらのサービスの詳細は、この「Oracle MessageQ APIのデータ型」の項を参照してください。
呼出し可能サービスの使用方法を示すサンプル・プログラム。これらのサンプル・プログラムは、Oracle MessageQメディア・キットのexamplesディレクトリにあります。

Oracle MessageQ APIのデータ型

Oracle MessageQ API引数では、Cプログラミング言語によって定義されたデータ型と、Oracle MessageQソフトウェアによって定義されたいくつかのデータ型を使用します。short、-unsigned shortおよびcharは、Cプログラミング言語により定義されているデータ型です。q_addressなどのOracle MessageQデータ型、およびPSB構造体とshow_buffer構造体は、p_entry.hインクルード・ファイル内で定義されています。

Oracle MessageQでは、符号付きおよび-符号なしロングワードのデータ型定義がサポートされます。Oracle MessageQにより定義されたint32データ型は、32ビット符号付き整数です。整数データ型のlongのかわりにint32データ型を使用し、そのサイズはオペレーティング・システムにより異なります。int32データ型定義は、すべてのプラットフォームにわたる一貫した定義を保証し、Compact Alpha AXPシステムなどの次世代の64ビット・アーキテクチャに対応するように追加されています。uint32データ型は32ビット符号なし整数を指定し、unsigned longの使用と置き換わります。

注意: int32およびuint32データ型定義は、Oracle MessageQバージョン2.0プラットフォームでは使用できません。Oracle MessageQバージョン2.0ソフトウェアでは、Cプログラム言語で定義された標準の符号付きロングワードおよび符号なしロングワードのデータ型が使用されます。

 


pams_attach_q

アプリケーション・プログラムをメッセージ・キューにアタッチすることにより、Oracle MessageQのメッセージ・キューイング・バスに接続します。アプリケーションがメッセージを送受信するには、この関数を正常に実行する必要があります。アプリケーションは、この関数を使用してキューにアタッチすると、キューのオーナーとなります。1つのアプリケーション・プログラムのみが、プライマリ・キューにアタッチしてメッセージを読み取ることができます。セカンダリ・キューのアタッチメントが定義された永続プライマリ・キューにアプリケーションがアタッチすると、セカンダリ・キューもこの関数によってアタッチされます。

構文

int32 pams_attach_q ( attach_mode, q_attached, [q_type], [q_name], [q_name_len], [name_space_list], [name_space_list_len], [timeout], [nullarg_2], [nullarg_3] )

引数

表2-2 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
attach_mode
int32
 
int32 *
渡される
q_attached
q_address
 
q_address *
戻される
[q_type]
int32
参照
int32 *
渡される
[q_name]
char
参照
char *
戻される
[q_name_len]
int32
参照
int32 *
渡される
[name_space_list]
int32 array
参照
int32 array *
渡される
[name_space_list_len]
int32
参照
int32 *
渡される
[timeout]
int32
参照
int32 *
渡される
[nullarg_2]
char
参照
char *
渡される
[nullarg_3]
char
参照
char *
渡される

引数の定義

attach_mode

アプリケーションをメッセージ・キューにアタッチするためのモードを指定します。この引数には次の3つの事前定義済の定数があります。
attach_modeがPSYM_ATTACH_BY_NAMEである場合、アプリケーションは指定されたキュー名またはエイリアス名により特定されるキューにアタッチします。Oracle MessageQは、指定されたq_nameに対して暗黙的にpams_locate_q呼出しを実行することで、キューを特定します。Oracle MessageQが使用する手順は、name_space_list引数によって決定されます。

q_attached

アプリケーションが正常にメッセージ・キューにアタッチすると、Oracle MessageQからキュー・アドレスを受け取ります。

q_type

アタッチメントのキュー・タイプを指定します。この引数には次の2個の事前定義済の定数があります。

q_name

attach_mode引数でキュー名またはキューの番号によるアタッチメントが指定された場合に、アプリケーションにアタッチする永続キューの名前を指定します。キュー名は、途中に空白を含まない英数字の文字列で、特殊文字としてアンダースコア(_)、ハイフン(-)およびドル記号($)も使用できます。
キュー名への参照は、大文字/小文字が区別され、グループ初期化ファイルに入力されているキュー名と一致する必要があります。キュー名の例としては、QUEUE_1、high-priority、My$Queueなどがあります。 q_name引数は、attach_mode引数と次の依存関係があります。

q_name_len

q_name引数の文字数を指定します。UNIX、Windows NTでは、文字列の最大の長さは127文字です。

name_space_list

attach_mode引数PSYM_ATTACH_BY_NAMEが指定された場合に検索対象となるネーム表のリストを指定します。
name_space_listを指定する場合は、name_space_list_len引数も指定する必要があります。この引数を指定しない場合は、PSEL_TBL_GRPがデフォルトとなります。 name_space_list引数に指定できる値は次のとおりです。

表2-3 name_space_list引数の値
表している場所
シンボリック値
プロセス・キャッシュ
プロセス・キャッシュ
プロセス・キャッシュ
プロセス・キャッシュ
PSEL_TBL_PROC
PSEL_TBL_PROC
グループ/グループ・キャッシュ
グループ/グループ・キャッシュ
PSEL_TBL_GRP
PSEL_TBL_GRP
グローバル・ネームスペース
PSEL_TBL_BUS
(またはPSEL_TBL_BUS_MEDIUM
PSEL_TBL_BUS_LOW)

name_space_list引数は、次のように名前の範囲を識別します。
name_space_list引数は、次のようにキャッシュ・アクセスも制御します。
キュー・アドレスの動的バインディングの詳細は、「ネーミングの使用」のトピックを参照してください。

name_space_list_len

name_space_list引数のエントリの数を指定します。name_space_list_len引数がゼロの場合、デフォルトとして、Oracle MessageQはname_space_list引数でPSEL_TBL_GRPを使用します。

timeout

アタッチの完了に許容するPAMSの時間単位数(1/10秒間隔)です。ゼロが指定された場合、グループのATTACH_TMOプロパティが使用されます。ATTACH_TMOプロパティもゼロである場合は、600が使用されます。

nullarg_2

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

nullarg_3

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

説明

アプリケーションがpams_attach_q関数を使用するには、Oracle MessageQメッセージ・キューイング・バスが構成されている必要があります。Oracle MessageQメッセージ・キューイング・バスは、1つ以上のOracle MessageQメッセージ・キューイング・グループのコレクションです。メッセージ・キューイング・グループは、1つのシステム上に配置され、グローバル・メモリー・セクションとファイルを共有するメッセージ・キューのコレクションで、同じサーバー・プロセスによって処理されます。Oracle MessageQのメッセージ・キューは、メッセージが格納および取得されるメモリーまたはディスクの領域です。Oracle MessageQ環境の構成方法については、使用するプラットフォーム用のインストレーションおよび構成ガイドを参照してください。

Oracle MessageQメッセージを受信するには、アプリケーションが少なくとも1つのメッセージ・キューにアタッチする必要があります。アプリケーションは、pams_attach_q関数により、次の手順でアタッチできます。

アプリケーションでは、プライマリまたはセカンダリのアタッチメントを指定できます。すべてのアプリケーションにはプライマリ・キューがあります。それに加え、1つ以上のセカンダリ・キューにアタッチできます。プライマリ・キューは、グループ定義でセカンダリ・キューの所有者として構成できます。セカンダリ・キューの所有者であるプライマリ・キューにアタッチすると、プライマリ・キューにアタッチされるのと同時に、そのアプリケーションは自動的にセカンダリ・キューにもアタッチされます。

それに加え、マルチリーダー・キューにアタッチできます。マルチリーダー・キューは、複数のアプリケーションによる読取りが可能で、グループ定義の一部として構成されます。

戻り値

表2-4 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
この関数に渡された呼出し引数の数が正しくありません。
PAMS__BADDECLARE
すべて
キューは、すでにこのアプリケーションにアタッチされています。
PAMS__BADNAME
すべて
無効な名前文字列が指定されました。
PAMS__BADPARAM
すべて
引数リストに無効な引数があります。
PAMS__BADPROCNUM
すべて
範囲外のキュー番号です。
PAMS__BADQTYPE
すべて
無効なキュー・タイプです。
PAMS__BADTMPPROC
OpenVMS
無効な一時キュー番号です。
PAMS__DECLARED
すべて
そのキュー番号はすでに別のアプリケーションまたはプロセスにアタッチされています。
PAMS__DUPLQNAME
OpenVMS
キュー名が重複しています。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOACCESS
すべて
リソースにアクセスできません。指定された名前のアドレスが0であるか、別のグループに存在します。
PAMS__NOACL
すべて
キュー・アクセス制御ファイルが見つかりません。
PAMS__NOOBJECT
すべて
このようなキュー名はありません。グローバル・キュー参照の場合、このエラーはグループ構成ファイル内の不正なデフォルト・パス名が原因である可能性があります。
PAMS__NOQUOTA
OpenVMS
アタッチする受信メッセージ割当てまたはバイト割当てが不十分です。
PAMS__NOTBOUND
すべて
キュー名がアドレスにバインドされていません。
PAMS__NOTMRQ
OpenVMS
マルチリーダー・キューにアタッチしようとしていますがキュー・タイプがMRQではありません。
PAMS__NOTPRIMARYQ
すべて
キューの名前または番号がプライマリ・キューではありません。
PAMS__NOTSECONDARYQ
すべて
キューの名前または番号がセカンダリ・キューではありません。
PAMS__PAMSDOWN
すべて
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの以前の呼出しが完了していません。
PAMS__PNUMNOEXIST
OpenVMS
ターゲット・キューの名前または番号が存在しません。
PAMS__RESRCFAIL
すべて
リソースの割当てに失敗しました。
PAMS__SUCCESS
すべて
アクションは正常に完了しました。
PAMS__TIMEOUT
すべて
指定されたタイムアウト期間を超過しました。
PAMS__NOQUOTA
OpenVMS
アタッチする受信メッセージ割当てまたはバイト割当てが不十分です。
PAMS__NOTBOUND
すべて
キュー名がアドレスにバインドされていません。
PAMS__NOTMRQ
OpenVMS
マルチリーダー・キューにアタッチしようとしていますがキュー・タイプがMRQではありません。
PAMS__NOTPRIMARYQ
すべて
キューの名前または番号がプライマリ・キューではありません。
PAMS__NOTSECONDARYQ
すべて
キューの名前または番号がセカンダリ・キューではありません。
PAMS__PAMSDOWN
すべて
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの以前の呼出しが完了していません。
PAMS__PNUMNOEXIST
OpenVMS
ターゲット・キューの名前または番号が存在しません。
PAMS__RESRCFAIL
すべて
リソースの割当てに失敗しました。
PAMS__SUCCESS
すべて
アクションは正常に完了しました。
PAMS__TIMEOUT
すべて
指定されたタイムアウト期間を超過しました。

関連項目

名前によるアタッチ

この例は、名前によってキューにアタッチする方法を示しています。名前「example_q_1」が、グループ構成情報でプライマリ・キューとして、またはローカルのキュー・エイリアスまたはプライマリ・キューとして定義されている必要があります。完全なコードの例x_attnam.cは、examplesディレクトリ内にあります。

番号によるアタッチ

この例は、番号によってキューにアタッチする方法を示しています。番号1のキューが、グループ構成情報でプライマリ・キューとして定義されている必要があります。完全なコードの例x_attnum.cは、examplesディレクトリ内にあります。

一時としてアタッチ

この例は、一時キューとしてアタッチする方法を示しています。完全なコードの例x_atttmp.cは、examplesディレクトリ内にあります。

 


pams_bind_q

実行時に、キュー・アドレスをキューの参照に動的に関連付けます。これにより、サーバー・アプリケーションで実行時に動的にキューのエイリアスをサービスに登録できます。これによりエンド・ユーザーは、通常のホスト・コンピュータが停止しても、サービスが別のホスト・コンピュータで提供されていることを意識せずにサービスにアクセスできます。

構文

int32 pams_bind_q (q_addr, q_alias, q_alias_len, [name_space_list], [name_space_list_len], [timeout], [nullarg_1]);

引数

表2-5 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
q_addr
q_address
参照
q_address *
渡される
q_alias
char
参照
char *
渡される
q_alias_len
int32
参照
int32 *
渡される
[name_space_list]
int32 array
参照
int32 array *
渡される
[name_space_list_len]
int32
参照
int32 *
渡される
[timeout]
int32
参照
int32 *
渡される
[nullarg_1]
char
参照
char *
渡される

引数の定義

q_addr

この引数で指定される値は、キュー名をバインドするか、アンバインドするかを制御します。

q_alias

グローバル・キュー参照またはローカル・キュー参照を識別します。Oracle MessageQがこのエイリアスを見つけるために使用する手順は、次に説明するname_space_list引数によって制御されます。

q_alias_len

q_aliasの文字数を指定します。

name_space_list

指定した場合、PSEL_TBL_BUSまたはPSEL_TBL_GRPが含まれる1エントリ・リストが識別されます。
ローカル・キュー参照を識別するには、アプリケーションがネームスペース・リストPSEL_TBL_GRPを持ち、その名前をq_alias引数に渡す必要があります。グローバル・キュー参照を識別するには、アプリケーションはネームスペース・リストPSEL_TBL_BUSを持ち、そのパス名を明示的または暗黙的に指定する必要があります。
キュー・アドレスの動的バインディングの詳細は、「ネーミングの使用」のトピックを参照してください。

name_space_list_len

name_space_list引数のエントリの数を指定します。エントリの数は0または1のいずれかです。エントリの数が0の場合(name_space_listが省略されていることを示す)、PSEL_TBL_GRPが想定されます。

timeout

バインドの完了に許容するPAMSの時間単位数(1/10秒間隔)を指定します。0が指定された場合、グループのATTACH_TMOプロパティが使用されます。ATTACH_TMOプロパティも0である場合は、600が使用されます。

nullarg_1

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

説明

アプリケーションがpams_bind_qを呼び出すには、それが指定されたキュー・アドレスにアタッチされている必要があります。リスト2-1は、バインド呼出し前のアタッチを示し、このように2つの関数をともに使用することが一般的です。

リスト2-1 pams_bind_qの使用例
int32 mode = PSYM_ATTACH_BY_NUMBER;
	 	int32 q_type = PSYM_ATTACH_PQ; 
		int32 len=1;
		int32 status; 
		q_address qid;
status = pams_attach_q(&mode,&qid,&q_type,"2",&len,0,0,0,0,0); 
	if (status == pams__SUCCESS {
		int32 ns=PSEL_TBL_BUS; 
		int32 ns_len=1;
		len = strlen("Q2");
status = pams_bind_q(&qid,"Q2",&len,&ns,&ns_len,0,0);
		

戻り値

表2-6 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
すべて
呼出し引数の数が無効です。
PAMS__BADNAME
すべて
すべて
名前に不正な文字が含まれています。
名前に不正な文字が含まれています。
PAMS__BADPARAM
すべて
ネームスペース・リストが無効です。
PAMS__BOUND
すべて
q_addrの0以外の値が渡され、指定されたq_aliasがすでにキュー・アドレスに割り当てられている場合に戻されます。
PAMS__DUPLQNAME
すべて
キュー名が重複しています。
PAMS__FAIL
すべて
操作に失敗しました。
PAMS__NOACCESS
すべて
リソースにアクセスできません。指定された名前のアドレスが0であるか、別のグループに存在します。
PAMS__NOOBJECT
すべて
グローバル参照の場合、このエラーはグループ構成ファイル内の不正なデフォルト・パス名が原因である可能性があります。
PAMS__NOTBOUND
すべて
キュー名がアドレスにバインドされていません。
PAMS__NOTDCL
すべて
Oracle MessageQにアタッチされていません。
PAMS__PAMSDOWN
すべて
指定されたOracle MessageQグループは実行していません。
PAMS__SUCCESS
すべて
正常完了を示します。
PAMS__TIMEOUT
すべて
指定されたタイムアウト期間を超過しました。この状況では、Oracle MessageQは指定されたキュー・エイリアスを内部的にアンバインドします。同じ名前への後続のPAMS_bind_q呼出しは、内部アンバインドが成功するまでPAMS__UNBINDINGエラーを戻します。
PAMS__NOACCESS
すべて
リソースにアクセスできません。指定された名前のアドレスが0であるか、別のグループに存在します。
PAMS__NOOBJECT
すべて
グローバル参照の場合、このエラーはグループ構成ファイル内の不正なデフォルト・パス名が原因である可能性があります。
PAMS__NOTBOUND
すべて
キュー名がアドレスにバインドされていません。
PAMS__NOTDCL
すべて
Oracle MessageQにアタッチされていません。
PAMS__PAMSDOWN
すべて
指定されたOracle MessageQグループは実行していません。
PAMS__SUCCESS
すべて
正常完了を示します。
PAMS__TIMEOUT
すべて
指定されたタイムアウト期間を超過しました。この状況では、Oracle MessageQは指定されたキュー・エイリアスを内部的にアンバインドします。同じ名前への後続のPAMS_bind_q呼出しは、内部アンバインドが成功するまでPAMS__UNBINDINGエラーを戻します。
PAMS__UNBINDING
すべて
Oracle MessageQが処理中であるか、古いバインドをアンバインド中であったため、バインドを実行できません。

関連項目

pams_bind_q の例は、実行時にキュー参照をキュー・アドレスにバインドする方法を示しています。完全なコードの例x_bind.cは、examplesディレクトリ内にあります。

 


pams_cancel_get

sel_filter引数で指定された値に一致するすべての保留中pams_get_msgaリクエストを取り消します。保留中のpams_get_msgaリクエストが取り消されるとき、PAMSステータス・ブロック(PSB)の配信ステータスがpams_CANCELに設定され、指定したアクションのルーチンがキューイングされます。pams_cancel_get関数とpams_get_msga関数のリクエストの間で適切に同期できるように、pams_cancel_get関数は完了するまで待機します。未処理のpams_get_msga関数のリクエストはすべて、pams_exit関数またはイメージの終了により取り消されます。

構文

int32 pams_cancel_get ( sel_filter )

引数

表2-7 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
sel_filter
int32
参照
int32 *
渡される

引数の定義

sel_filter

基準を指定し、この基準によりアプリケーションで未処理のpams_get_msgaリクエストを選択的に取り消すことができます。sel_filter引数の詳細は、pams_get_msg関数の項を参照してください。複合的な選択フィルタの作成方法については、pams_set_select関数を参照してください。

戻り値

表2-8 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
引数リストが無効です。
PAMS__SUCCESS
OpenVMS
正常完了を示します。
SS$_EXQUOTA
OpenVMS
プロセスは、その非同期システム・トラップ(AST)割当てを超過しました。

関連項目

 


pams_cancel_select

以前に生成された選択マスクに関連付けられている選択配列およびインデックス・ハンドルを解放します。index_handleおよび関連付けられた選択マスクはpams_set_select関数を使用して作成されます。OpenVMS環境で選択マスクが非同期読取りリクエストで使用されるとき、この関数はまた、参照されたindex_handleを使用している保留中のpams_get_msgaリクエストを取り消します。

構文

int32 pams_cancel_select ( index_handle )

引数

表2-9 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
index_handle
int32
参照
int32 *
渡される

引数の定義

index_handle

取り消す選択マスクのインデックス・ハンドルを指定します。index_handleは、pams_set_select関数によって戻されます。

戻り値

表2-10 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
呼出し引数の数が無効です。
PAMS__BADPARAM
UNIX
Windows NT
選択インデックスの値がnullです。
PAMS__BADSELIDX
すべて
選択的受信インデックスが無効または未定義です。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

 


pams_cancel_timer

この関数に渡されるtimer_id引数により定義されるOracle MessageQタイマーを削除します。メッセージ・キュー内で待機している、選択された識別コードを持つ期限切れのすべてのタイマーが削除され、配信されません。

構文

int32 pams_cancel_timer (timer_id)

引数

表2-11 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
timer_id
int32
参照
int32 *
渡される

引数の定義

timer_id

取り消すタイマーのタイマーIDを指定します。timer_idは、pams_set_timer関数によって戻されます。

戻り値

表2-12 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
引数の数が無効です。
PAMS__BADPARAM
すべて
timer_id引数は、nullとして指定されました。
PAMS__INVALIDNUM
すべて
アプリケーションにtimer_idの無効な値が提供されました。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOTDCL
すべて
アプリケーションはキューにアタッチしていません。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__RESRCFAIL
すべて
操作を完了するためのリソースが不足しています。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

 


pams_close_jrn

jrn_handle引数に関連付けられているMRSジャーナル・ファイルを閉じます。使用不能のレター・ジャーナル(DLJ)と事後確認ジャーナル(PCJ)の2つのタイプのジャーナル・ファイルがあります。Oracle MessageQメッセージ・リカバリ・システムの使用方法の詳細は、「リカバリ可能メッセージングの使用」を参照してください。

構文

int32 pams_close_jrn ( jrn_handle )

引数

表2-13 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
jrn_handle
int32
参照
int32 *
渡される

引数の定義

Jrn_handle

閉じる対象のメッセージ・リカバリ・ジャーナル・ファイルのジャーナル・ハンドルを指定します。jrn_handleは、pams_open_jrn関数によって戻されます。

戻り値

表2-14 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
引数の数が無効です。
PAMS__INVJH
OpenVMS
アプリケーションが無効なジャーナル・ハンドルを提供しました。
PAMS__SUCCESS
OpenVMS
正常完了を示します。

関連項目

 


pams_confirm_msg

明示的な確認を必要とするメッセージの受信を確認します。これは、明示的な確認用に構成されているキューに送信されたリカバリ可能メッセージか、または明示的な受信確認が必要なACK配信モードを使用して送信されたメッセージの場合です。アプリケーションでは、受信した各メッセージのPSBのステータス・フィールドを調べ、そのメッセージが明示的な確認を必要としているかどうかを判断する必要があります。

リカバリ可能メッセージを受信した場合、アプリケーションでは、メッセージ・リカバリ・ジャーナルのディスク記憶域からそれを削除するため、pams_confirm_msg関数を呼び出す必要があります。リカバリ可能メッセージの受信が確認されない場合、そのメッセージはリカバリ・システムによって保持されたままになり、アプリケーションでそのキューからデタッチし、再びアタッチしたときに再配信されます。

Oracle MessageQでは、リカバリ・ジャーナル内の次に続くメッセージが配信されるときに、リカバリ可能メッセージの受信を自動的に確認できます。この機能は、暗黙的な確認と呼ばれます。

すべてのキューは、暗黙的な確認または明示的な確認のどちらかで構成されます。メッセージ・キューの構成方法の詳細は、使用するシステムのインストレーションおよび構成ガイドを参照してください。

正常に配信されたリカバリ可能メッセージは、事後確認ジャーナル(PCJ)に記録できます。pams_confirm_msg関数では、システムが現在、メッセージを格納するように構成されていない場合、force_j引数を使用してPCJファイルにメッセージを書き込みます。正常に配信されたリカバリ可能メッセージは、pams_confirm_msg関数を使用して明示的に確認しないかぎり、PCJファイルには書き込むことができないことに注意してください。

構文

int32 pams_confirm_msg ( msg_seq_num, confirmation_status, force_j )

引数

表2-15 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
msg_seq_num
uint32 array
参照
uint32 array *
渡される
confirmation_status
int32
参照
int32 *
渡される
force_j
char
参照
char *
渡される

引数の定義

msg_seq_num

確認するリカバリ可能メッセージのメッセージ順序番号を指定します。メッセージ順序番号は、各リカバリ可能メッセージ用にOracle MessageQのメッセージ・リカバリ・システムによって生成されます。この値は、受信側プログラムが各リカバリ可能メッセージを読み取ったときに、pams_get_msg関数のPSBで渡されます。

confirmation_status

事後確認ジャーナル(PCJ)ファイル内でメッセージとともに格納される確認ステータス値を指定します。この値は、呼出し元アプリケーションにより設定されます。PCJファイルの使用の詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。

force_j

このメッセージのジャーナル・アクションを指定します。この引数には次の事前定義済の定数があります。

表2-16 force_j
記号
説明
PDEL_DEFAULT_JRN
グループ初期化ファイルでジャーナリングが構成されている場合に、メッセージのPCJファイルへの書込みを可能にします。
PDEL_FORCE_JRN
ジャーナリングが構成されている場合にかぎり、PCJへの書込みを可能にします。グループ構成情報でPCJのパスが定義されていない場合、UNIXおよびWindows NT上のPCJにメッセージを書き込むことはできません。
PDEL_NO_JRN
ジャーナルが構成されているかどうかにかかわらず、ジャーナルを無効にします。

説明

リカバリ可能メッセージの配信と関連付けられているPSBステータス・コードは、PAMS__CONFIRMREQとPAMS__POSSDUPLです。PAMS__CONFIRMREQ PSBステータス・コードは、アプリケーションがリカバリ可能メッセージを初めて受信したことを示します。PAMS_POSSDUPLステータス・コードは、メッセージがリカバリ・ジャーナルから取得され、以前に送信されている可能性があることを示します。このステータス・コードにより、アプリケーションは必要に応じて重複したメッセージを処理するための追加の措置を講ずることができます。

PSBには、メッセージを一意に識別する順序番号も含まれています。pams_confirm_msg関数では、この順序番号は必須です。これらのいずれかのステータス・コードが存在し、pams_confirm_msg関数が呼び出されない場合、メッセージはメッセージ・リカバリ・システムにより引き続き格納され、アプリケーションが終了し再びアタッチしたときに再配信されます。

戻り値

表2-17 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
引数の数が無効です。
PAMS__BADPARAM
すべて
引数値が正しくありません。
PAMS__BADSEQ
すべて
ジャーナル順序番号が、メッセージ・リカバリ・サービス(MRS)により認識されません。
PAMS__DQF_DEVICE_FAIL
OpenVMS
ターゲット・キューの宛先キュー・ファイルへの書込み時のI/Oエラー。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOMRS
すべて
MRSは使用できません。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__NOTJRN
すべて
メッセージは、PCJファイルに書き込まれていません。
PAMS__NOTSUPPORTED
OpenVMS
配信不能キューにアタッチされました。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__RESRCFAIL
OpenVMS
Oracle MessageQリソースが不足しています。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

リカバリ可能メッセージの受信を確認する

この例は、リカバリ可能メッセージの使用を示しています。queue_1にアタッチし、いくつかのリカバリ可能メッセージをqueue_2に入れ、終了し、queue_2にアタッチして、メッセージを取得し、それらを出力して終了します。

「queue_1」および「queue_2」という名前のキューは、初期化ファイルで定義されています。OpenVMSシステムでは、queue_2に対してDQFを設定する必要があります。完全なコードの例x_recovr.cは、examplesディレクトリ内にあります。

 


pams_detach_q

選択したメッセージ・キューまたはそのアプリケーションのすべてのメッセージ・キューを、メッセージ・キューイング・バスからデタッチします。アプリケーションがそのプライマリ・キューからデタッチすると、この関数によって、自動的にそのプライマリ・キューに定義されているすべてのセカンダリ・キューへのアタッチがデタッチされます。最後のメッセージ・キューがデタッチされると、アプリケーションは、自動的にOracle MessageQメッセージ・キューイング・バスからデタッチされます。

構文

int32 pams_detach_q ( q, detach_opt_list, detach_opt_len,msgs_flushed )

引数

表2-18 引数
引数
データ型
メカニズム
プロトタイプ
 
アクセス
q
q_address
参照
q_address
*
渡される
detach_opt_list
int32 array
参照
int32 *
渡される
detach_opt_len
int32
参照
int32 *
渡される
msg_flushed
int32
参照
int32 *
戻される

引数の定義

q

デタッチするキューのキュー・アドレスを指定します。この関数を使用して、プライマリ、セカンダリおよびマルチリーダーのキューをデタッチできます。

detach_opt_list

どのようにキューをデタッチするかの制御に使用するint32値の配列を指定します。この引数には次のような事前定義済の定数があります。

detach_opt_len

detach_opt_list配列内のint32値の数を指定します。int32ロングワードの最大数は32,767です。

msgs_flushed

キューからフラッシュされたメッセージの数を受け取ります。メッセージ数の統計は、デフォルトですべてのシステムで有効になっているため、この値を正確に通知するために、UNIXおよびWindows NTシステムで統計を有効にする必要はありません。

説明

リカバリ可能メッセージングに暗黙的な確認を使用している場合、次に示す処理に先だって、最後のメッセージが確認済であることを保証する必要があります。

デタッチや終了の前に、確実に最後のメッセージを確認済にしないと、そのキューが再度アタッチされたときにメッセージが再配信されます。確実に確認を行う最も簡単な方法は、最後に受信したメッセージのPSBの配信ステータスを保存しておき、要求された確認ステータスをチェックして、そのメッセージが確認済になった後で終了することです。

戻り値

表2-19 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
Invalid number of arguments.
PAMS__BADPARAM
All
Invalid detach_opt_list.
PAMS__DETACHED
All
Process has detached from Oracle MessageQ.
PAMS__NETERROR
Clients
Network error resulted in a communications link abort.
PAMS__NOTDCL
All
Not attached to Oracle MessageQ.
PAMS__PREVCALLBUSY
Clients
Previous call to CLS has not been completed.
PAMS__PNUMNOEXIST
All
Invalid queue address or queue not owned by process.
PAMS__SUCCESS
All
Queue successfully detached.

関連項目

 


pams_exit

アプリケーションとOracle MessageQメッセージ・キューイング・バスの間のすべてのアタッチメントを終了します。一時キュー、および永続的にアクティブなマルチリーダー・キューではない永続キュー内の、すべての保留中メッセージが破棄されます。永続的にアクティブであるマルチリーダー・キュー内の保留中メッセージのみが保持されます。永続的にアクティブなキュー内のメッセージを残しておくには、pams_exitを呼び出す前にPSYM_NOFLUSH_Qオプションを指定してpams_detach_qを呼び出します。

構文

int32 pams_exit (void)

引数

ありません。

説明

リカバリ可能メッセージングに暗黙的な確認を使用している場合、次に示す処理に先だって、最後のメッセージが確認済であることを保証する必要があります。

デタッチや終了の前に、確実に最後のメッセージを確認済にしないと、そのキューが再度アタッチされたときにメッセージが再配信されます。確実に確認を行う最も簡単な方法は、最後に受信したメッセージのPSBの配信ステータスを保存しておき、要求された確認ステータスをチェックして、そのメッセージが確認済になった後で終了することです。

戻り値

表2-20 戻りコード
戻りコード
プラットフォーム
説明
PAMS__NETERROR
OpenVMSクライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOTDCL
OpenVMS
Oracle MessageQにアタッチされていません。
PAMS__PREVCALLBUSY
OpenVMSクライアント
CLSへの前の呼出しが完了していません。
PAMS__PNUMNOEXIST
OpenVMS
キュー・アドレスが無効であるか、キューがプロセスにより所有されていません。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

メッセージ・キューイング・バスを終了する

この例は、pams_exit関数の使用方法を示しています。完全なコードの例x_exit.cは、examplesディレクトリ内にあります。

 


pams_get_msg

選択されたキューから次に使用可能なメッセージを取得し、それをmsg_area引数で指定された場所に移動します。選択フィルタが指定されていない場合、この関数は、メッセージの優先度に基づき先入れ/先出し(FIFO)の順序で、msg_area引数で指定されたバッファに次に使用可能なメッセージを戻します。優先度の範囲は、0(低優先度)-99(高優先度)です。たとえば、優先度1のメッセージは、常に優先度0のメッセージの前に置かれます。メッセージは、メッセージの優先度に基づき、先入れ/先出しの順序で配置されます。選択フィルタが指定されている場合、選択基準に一致するメッセージのみが取得されます。メッセージがない、または選択基準に一致するメッセージがない場合、戻りステータスはpams__NOMOREMSGになります。

アプリケーションでは、各メッセージのPSBのステータス・フィールドをチェックし、そのメッセージがリカバリ可能配信モードで送信されているかどうかを判断する必要があります。リカバリ可能メッセージを受信した場合、pams_confirm_msg関数を呼び出し、メッセージ・リカバリ・ジャーナルのディスク記憶域からそのメッセージを削除します。リカバリ可能メッセージの受信が確認されない場合、そのメッセージはリカバリ・システムによって保持されたままになり、アプリケーションでそのキューからデタッチし、再びアタッチしたときに再配信されます。

受信側プログラムは、msg_area_len引数を読み取ることにより、各メッセージがFML32バッファであるか、またはラージ・メッセージであるかを判断します。FML32バッファおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。

構文

int32 pams_get_msg ( msg_area, priority, source, class, type, msg_area_len, len_data, [sel_filter], [psb], [show_buffer], [show_buffer_len], [large_area_len], [large_size], [nullarg_3] )

引数

表2-21 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
msg_area
char
参照
char *
戻される
priority
char
参照
char *
渡される
source
q_address
参照
q_address *
戻される
class
short
参照
short *
戻される
type
short
参照
short *
戻される
msg_area_len
short
参照
short *
渡される
len_data
short
参照
short*
戻される
[sel_filter]
int32
参照
int32 *
渡される
[psb]
struct psb
参照
struct psb *
戻される
[show_buffer]
struct show_buffer
参照
struct show_buffer *
戻される
[show_buffer_len]
int32
参照
int32 *
渡される
[large_area_len]
int32
参照
int32 *
渡される/戻される
[large_size]
int32
参照
int32 *
戻される
[nullarg_3]
char
参照
char*
渡される

引数の定義

msg_area

静的バッファ方式のメッセージングの場合は、取得されるメッセージの内容がOracle MessageQによって書き込まれるメモリー・リージョンのアドレスを受け取ります。FML方式のメッセージングの場合、または二重ポインタを使用する場合、取得されるメッセージのアドレスへのポインタを受け取ります。

priority

選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。priorityが0に設定されると、pams__get_msqw関数はすべての優先度のメッセージを取得します。priorityが1から99のいずれかの値に設定されると、pams__get_msqw関数は該当する優先度のメッセージのみを取得します。

source

送信側プログラムのプライマリ・キューのグループIDとキュー番号を含むデータ構造体を、次の形式で受け取ります。
図2-1



class

取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数に指定されます。Oracle MessageQでは、class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。UNIXおよびNTシステムでは、p_typecl.hインクルード・ファイルは編集できません。アプリケーションで使用するタイプおよびクラスのシンボルを定義するインクルード・ファイルを作成する必要があります。 Oracle MessageQで予約されているクラス・シンボルは次のとおりです。

表2-22 クラス・シンボル
予約済クラス
シンボル値
MSG_CLAS_MRS
28
MSG_CLAS_PAMS
29
MSG_CLAS_ETHERNET
100
MSG_CLAS_UCB
102
MSG_CLAS_TUXEDO
31001
MSG_CLAS_TUXEDO_TPSUCCESS
31002
MSG_CLAS_TUXEDO_TPFAIL
31003
MSG_CLAS_XXX
30000から32767 (31001-31003を除く)

type

取得されたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数に指定されます。Oracle MessageQでは、type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。

msg_area_len

len_data

最大32767バイトのメッセージを扱う静的バッファ方式のメッセージングの場合、この引数はメッセージ・キューから取得され、msg_area引数により指定された領域に格納されたバイト数を受け取ります。このフィールドは、二重バッファおよびFML方式メッセージのPSYM_MSG_BUFFER_PTRシンボルおよび32767バイトより大きいバッファ方式メッセージのPSYM_MSG_LARGEも受け取ります。

sel_filter

アプリケーションが選択的にメッセージを取得できる基準を指定します。この引数には、次のいずれかの選択基準が含まれます。
sel_filter引数は、次のように2つのワードで構成されています。
図2-2



デフォルトの選択

アプリケーションでは、メッセージが到着した順序に基づいてキューからメッセージを読み取ることができます。デフォルトの選択、
PSEL_DEFAULTでは、メッセージ・キューから次の保留中のメッセージを読み取ります。メッセージは、優先度別に格納され、次に、FIFOの順序で格納されます。このことを明示的に指定するには、sel_filter引数内の両方のワードを0に設定する必要があります。

メッセージ・キューによる選択

アプリケーションがキュー・タイプまたはキュー・タイプの組合せに基づいてメッセージを取得できるようにします。この選択基準は、最初に処理するキュー上で基準に一致する最初の保留中メッセージを取得するために使用されます。FIFOの順序は、各キュー内で維持されます。この引数には次のような事前定義済の定数があります。

表2-23 メッセージ・キューによる選択
選択モード
選択変数
モードの説明
PSEL_PQ
0
アプリケーションは、プライマリ・キュー(PQ)からのみ読み取ることができます。選択変数は0である必要があります。
PSEL_AQ
代替キュー番号
アプリケーションは、代替キュー(AQ)からのみ読み取ることができます。キュー・タイプがセカンダリ・キュー(SQ)でも読取り可能です。
PSEL_PQ_AQ
代替キュー番号
初めにプライマリ・キューから、次に代替キューから選択的な取得を試行します。
PSEL_AQ_PQ
代替キュー番号
初めに代替キューから、次にプライマリ・キューから選択的な取得を試行します。
PSEL_TQ_PQ
代替キュー番号
初めにタイマー・キュー(TQ)から、次にプライマリ・キューからメッセージの選択的な取得を試行します。
PSEL_TQ_PQ_AQ
代替キュー番号
初めにタイマー・キュー(TQ)から、次にプライマリ・キューから、最後に代替キューからメッセージの選択的な取得を試行します。
PSEL_UCB
0
ユーザー・コールバック・キュー(UCB)からのみ、メッセージを取得します。

メッセージの属性による選択

アプリケーションが、メッセージ・タイプ、クラスまたは優先度に基づいてメッセージを選択できるようにします。この引数には次のような事前定義済の定数があります。

表2-24 メッセージの属性による選択
選択モード
選択変数
モードの説明
PSEL_PQ_TYPE
タイプ
プライマリ・キューから、選択変数ワード内のタイプ値と一致する最初の保留中メッセージを選択します。
PSEL_PQ_CLASS
クラス
プライマリ・キューから、選択変数ワード内のクラス値と一致する最初の保留中メッセージを選択します。
PSEL_PQ_PRI
PSEL_PRI_ANY
PSEL_PRI_P0
PSEL_PRI_P1
0から99の整数値
プライマリ・キューから、両端の数を含めて0から99の整数値と等しい優先度を持つ(または選択変数の値と等しい)最初の保留中メッセージを選択します。直接的な整数値の指定は、優先度によるメッセージの選択の際によく使われる方法です。
PSEL_PRI_ANYを使用すると、すべての優先度の保留中メッセージを読み取ることができます。PSEL_PRI_P0を設定すると、優先度0の保留中メッセージのみを取得できます。PSEL_PRI_P1を設定すると、厳密に優先度1の保留中メッセージを取得できます。

メッセージ・ソースによる選択

ソース・グループID、キュー番号またはその両方による、プライマリおよびセカンダリ・キューからの保留中メッセージの選択を可能にします。ソースによる選択の形式は次のとおりです。
図2-3



指定可能なsel_filter引数とその処理のいくつかの例を次に示します。

表2-25 sel_filter引数
sel_filter引数
処理
ゼロまたは未指定
すべてのメッセージに対してフィルタが適用されません。すべてのメッセージを取得できます。
ソースのq_address
q_addressが一致するメッセージのみが取得されます。
次の関数により作成された選択マスク
pams_set_select
指定された選択マスクに正確に一致するメッセージのみが取得されます。

複合選択

アプリケーションで、メッセージ・キューが検索される順序の複合ルールの編成を可能にします。pams_set_select関数を使用すると、sel_filter引数の下位のワードで使用できるカスタム選択マスクをアプリケーションで作成できます。複合選択の形式は次のとおりです。
図2-4



psb

最終的な完了ステータスが含まれるPAMSステータス・ブロックを受け取ります。psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。PSBの構造は、次のとおりです。

表2-26 PSB構造体
下位バイト
上位バイト
内容
説明
0
1
タイプ
PSBタイプ
2
3
呼出しの依存性
現在使用されていません。
4
7
PSB
配信ステータス
関数の完了ステータス。リカバリ可能メッセージの場合、このフィールドにはPAMS__CONFIRMREQまたはPAMS__POSSDUPLが含まれます。リカバリ可能メッセージ以外のメッセージの場合、値PAMS__SUCCESSも含まれている可能性があります。
8
15
メッセージ順序番号
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するためのpams_confirm_msgに対する入力です。
16
19
PSB UMA
ステータス
このフィールドは、pams_get_msg関数では使用されません。
20
23
関数の戻りステータス
このフィールドは、pams_get_msg関数では使用されません。
24
31
未使用
未使用

show_buffer

Oracle MessageQがメッセージ・ヘッダーから抽出する追加情報を受け取ります。show_buffer引数の構造は次のとおりです。

表2-27 show_buffer引数
ロングワード
内容
説明
0
バージョン
show_buffer構造体のバージョン。有効な値は次のとおりです。
10 = バージョン1.0
20 = バージョン2.0
50 = バージョン5.0
1
転送ステータス
アプリケーションのバッファへのshow_buffer情報の転送に関連するステータス・コード。有効なシンボルは次のとおりです。
PAMS__SUCCESS
使用可能なすべての情報が転送されました。
PAMS__BUFFEROVF
受信側バッファのオーバーフローにより情報が失われました。0-戻されたメッセージはありません。転送する情報はありません。
2
転送サイズ
アプリケーション・バッファに転送されたバイト数。
3
Flags
show_bufferの各フィールドのステータスを示すビット配列。設定されたビットは有効なフィールドを示し、クリアされたビットは不確定データまたは割り当てられたshow_bufferメモリーの終わりを示します。flagsフィールドのシンボルは次のとおりです。
PSYM_SHOW_VERSION
PSYM_SHOW_STATUS
PSYM_SHOW_SIZE
PSYM_SHOW_FLAGS
PSYM_SHOW_TARGET
PSYM_SHOW_ORIGINAL_TARGET
PSYM_SHOW_SOURCE
PSYM_SHOW_ORIGINAL_SOURCE
PSYM_SHOW_DELIVERY D
PSYM_SHOW_PRIORITY
PSYM_SHOW_ENDIAN
PSYM_SHOW_CORRELATION_I
   
   
4
未使用
制御セクションをその最大の24バイトまで満たします。
5
未使用
制御セクションをその最大の24バイトまで満たします。
6
未使用
制御セクションをその最大の24バイトまで満たします。
7
未使用
制御セクションをその最大の24バイトまで満たします。
8
未使用
制御セクションをその最大の24バイトまで満たします。
9
未使用
制御セクションをその最大の24バイトまで満たします。
10
ターゲット
最新のメッセージ・ターゲットのq_address
11
元のターゲット
元のメッセージ・ターゲットのq_address
12
ソース
最新のメッセージ・ソースのq_address
13
元のソース
元のメッセージのq_address
14
配信モード
メッセージをキューイングするために使用された配信モード。これは、必ずしもメッセージの生成に使用された配信モードではありません。
15
Priority
メッセージをキューイングするために使用された優先度。
16
エンディアン
2バイトおよび4バイト整数のバイト順序またはコード体系。可能な設定は次のとおりです。
PSYM_UNKNOWN
PSYM_VAX_BYTE_ORDERまたはPSYM_LITTLE_ENDIAN PSYM_NETWORK_BYTE_ORDERまたはPSYM_BIG_ENDIAN PSYM_FML
17
相関I
メッセージに関連付けられた32バイトの相関識別子。

show_buffer_len

show_buffer引数で定義されたバッファの長さ(バイト単位)を指定します。最小の長さは40バイトです。バッファのサイズが小さすぎてすべての情報が入らない場合は、戻りコードPAMS__BUFFEROVFがshow_buffer転送ステータスに含まれます。

large_area_len

32Kより大きいメッセージを受信するためのメッセージ領域のサイズを指定します。二重バッファ(PSYM_MSG_BUFFER_POINTERで示す)を使用する場合は、メッセージ・バッファの長さも指定します。この引数には、再割当て後の二重バッファおよびFML32バッファの長さも格納されます。

large_size

メッセージ・バッファに書き込まれたラージ・メッセージ、二重バッファ・メッセージまたはFML32メッセージの実際のサイズを戻します。

nullarg_3

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

戻り値

表2-28 戻りコード
戻りコード
プラットフォーム
説明
PAMS__AREATOSMALL
すべて
受信したメッセージがユーザーのメッセージ領域より大きくなっています。
PAMS__BADARGLIST
すべて
呼出し引数の不正な数が、この関数に渡されました。
PAMS__BADHANDLE
すべて
無効なメッセージ・ハンドルです。
PAMS__BADPARAM
すべて
引数値が正しくありません。
PAMS__BADPRIORITY
すべて
受信に使用された無効な優先度の値です。
PAMS__BADSELIDX
すべて
選択的受信インデックスが無効または未定義です。
PAMS__BUFFEROVF
UNIX
Windows NT
指定されたshow_bufferのサイズが小さすぎます。
PAMS__EXHAUSTBLKS
OpenVMS
使用可能なメッセージ・ブロックがこれ以上ありません。
PAMS__FMLERROR
すべて
FMLメッセージの内部フォーマットで問題が検出されました。処理のエラーまたはデータ破壊の可能性があります。
PAMS__INSQUEFAIL
すべて
メッセージ・バッファを正しくキューイングできませんでした。
PAMS__MSGTOSMALL
すべて
msg_area_len引数は、正またはゼロにする必要があります。
PAMS__MSGUNDEL
すべて
戻されたメッセージを配信できません。
PAMS__NEED_BUFFER_PTR
UNIX
Windows NT
FML32バッファを受信しましたが、msg_area_len引数が
PSYM_MSG_BUFFER_PTRに設定されていません。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOACCESS
すべて
リソースにアクセスできません。
PAMS__NOACL
すべて
キュー・アクセス制御ファイルが見つかりませんでした。
PAMS__NOMEMORY
OpenVMS
バッファ・ポインタを再度割り当てるためのメモリー・リソースが不足しています。
PAMS__NOMRQRESRC
すべて
アクセスを許可するためのマルチリーダー・キュー・リソースが不足しています。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__NOTSUPPORTED
UNIX
Windows NT
指定された配信モードはサポートされません。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__QUECORRUPT
OpenVMS
メッセージ・バッファ・キューが破損しています。
PAMS__REMQUEFAIL
すべて
メッセージ・バッファから正しく読み取ることができませんでした。
PAMS__STALE
すべて
リソースは無効になっており、ユーザーが解放する必要があります。
PAMS__STOPPED
すべて
リクエストされたキューが停止されました。
PAMS__SUCCESS
すべて
正常完了を示します。

PBS配信ステータス

表2-29 PBS配信ステータス
PSB配信ステータス
プラットフォーム
説明
PAMS__CONFIRMREQ
すべて
このメッセージの確認を要求。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__POSSDUPL
すべて
メッセージは重複可能。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

メッセージを読み取る

この例はpams_get_msg関数を使用して、現在キューに存在するすべてのメッセージを取得し、出力関数に送信します。完全なコードの例x_get.cは、examplesディレクトリ内にあります。

 


pams_get_msga

pams_get_msga関数は、OpenVMSシステム上でのみ使用可能です。

メッセージ受信の非同期通知をリクエストします。pams_get_msga関数は、メッセージがキューに届くと非同期システム・トラップ(AST)ルーチンをトリガーします。ASTをトリガーするか、イベント・フラグを設定するかまたはその両方により、アプリケーションへの通知が行われます。

選択フィルタが指定されていない場合、この関数は、メッセージの優先度に基づき先入れ/先出し(FIFO)の順序で、ユーザーが指定したmsg_area引数に次に使用可能なメッセージを戻します。優先度の範囲は、0(低優先度)-99(高優先度)です。たとえば、優先度1のメッセージは、常に優先度0のメッセージの前に置かれます。メッセージは、メッセージの優先度に基づき、先入れ/先出しの順序で配置されます。選択フィルタが指定されている場合、選択基準に一致するメッセージのみが取得され、一致するメッセージが届いた場合のみASTまたはイベント・フラグがトリガーされます。

キューにリカバリ可能メッセージが送信されたとき、受信側プログラムでは、pams_confirm_msg関数を使用してメッセージの受信を確認できます。pams_confirm_msg関数により、正常に配信されたメッセージをメッセージ・リカバリ・システムから削除できます。Oracle MessageQリカバリ・システムの詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。

FML32バッファおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。

構文

int32 pams_get_msga ( msg_area, priority, source, class, type, msg_area_len, len_data, [sel_filter], [psb], [show_buffer], [show_buffer_len], [large_area_len], [large_size], [actrtn], [actparm], [flag_id], [nullarg_3] )

引数

表2-30 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
msg_area
char
参照
char *
戻される
優先度
char
参照
char *
渡される
source
q_address
参照
q_address *
戻される
class
short
参照
short *
戻される
type
short
参照
short *
戻される
msg_area_len
short
参照
short *
渡される
len_data
short
参照
short *
戻される
[sel_filter]
int32
参照
int32 *
渡される
[psb]
struct psb
参照
struct psb *
戻される
[show_buffer]
struct show_buffer
参照
struct show_buffer *
戻される
[show_buffer_len]
int32
参照
int32 *
渡される
[large_area_len]
int32
参照
int32 *
渡される/戻される
[large_size]
int32
参照
int32 *
戻される
[actrtn]
int32
int32 *
渡される
[actparm]
int32
参照
int32 *
渡される
[flag_id]
int32
参照
int32 *
渡される
[nullarg_3]
char
参照
char *
渡される

引数の定義

msg_area

静的バッファ方式のメッセージングの場合は、取得されるメッセージの内容がOracle MessageQによって書き込まれるメモリー・リージョンのアドレスを受け取ります。FML方式のメッセージングの場合、または二重ポインタを使用する場合、取得されるメッセージのアドレスへのポインタを受け取ります。pams_get_msgaで二重バッファ・ポインタを使用する場合、新しいバッファ・サイズがlarge_sizeで戻されます。(このことは、新しいバッファ・サイズがlarge_area_lenに戻されるpams_get_msg[w}とは異なります。)

priority

選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0 (低優先度)から99 (高優先度)です。

source

送信側プログラムのプライマリ・キューのグループIDとキュー番号を含むデータ構造体を、次の形式で受け取ります。
図2-5 グループIDのデータ構造


グループIDのデータ構造

class

取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数に指定されます。Oracle MessageQでは、class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
Oracle MessageQで予約されているクラス・シンボルは次のとおりです。

表2-31 クラス・シンボル
予約済クラス
シンボル値
MSG_CLAS_MRS
28
MSG_CLAS_PAMS
29
MSG_CLAS_ETHERNET
100
MSG_CLAS_UCB
102
MSG_CLAS_TUXEDO
31001
MSG_CLAS_TUXEDO_TPSUCCESS
31002
MSG_CLAS_TUXEDO_TPFAIL
31003
MSG_CLAS_XXX
30000から32767 (31001-31003を除く)

type

取得されたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数に指定されます。Oracle MessageQでは、type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。

msg_area_len

len_data

最大32767バイトのメッセージを扱う静的バッファ方式のメッセージングの場合、この引数はメッセージ・キューから取得され、msg_area引数により指定された領域に格納されたバイト数を受け取ります。このフィールドは、FML方式メッセージのPSYM_MSG_BUFFER_PTRシンボルおよび32767バイトより大きいバッファ方式メッセージのPSYM_MSG_LARGEも受け取ります。

sel_filter

アプリケーションが選択的にメッセージを取得できる基準を指定します。この引数には、次のいずれかの選択基準が含まれます。
sel_filter引数は、次のように2つのワードで構成されています。
図2-6 sel_filter引数


sel_filter引数

デフォルトの選択

アプリケーションでは、メッセージが到着した順序に基づいてキューからメッセージを読み取ることができます。デフォルトの選択であるPSEL_DEFAULTでは、メッセージ・キューから次の保留中のメッセージを読み取ります。メッセージは、優先度別に格納され、次に、FIFOの順序で格納されます。このことを明示的に指定するには、sel_filter引数内の両方のワードを0に設定する必要があります。

メッセージ・キューによる選択

アプリケーションがキュー・タイプまたはキュー・タイプの組合せに基づいてメッセージを取得できるようにします。この選択基準は、最初に処理するキュー上で基準に一致する最初の保留中メッセージを取得するために使用されます。FIFOの順序は、各キュー内で維持されます。
この引数には次のような事前定義済の定数があります。

表2-32 sel_filter引数
選択モード
選択変数
モードの説明
PSEL_PQ
0
アプリケーションは、プライマリ・キュー(PQ)からのみ読み取ることができます。選択変数は0である必要があります。
PSEL_AQ
代替キュー番号
アプリケーションは、代替キュー(AQ)からのみ読み取ることができます。キュー・タイプがセカンダリ・キュー(SQ)でも読取り可能です。
PSEL_PQ_AQ
代替キュー番号
初めにプライマリ・キューから、次に代替キューから選択的な取得を試行します。
PSEL_AQ_PQ
代替キュー番号
初めに代替キューから、次にプライマリ・キューから選択的な取得を試行します。
PSEL_TQ_PQ
代替キュー番号
初めにタイマー・キュー(TQ)から、次にプライマリ・キューからメッセージの選択的な取得を試行します。
PSEL_TQ_PQ_AQ
代替キュー番号
初めにタイマー・キュー(TQ)から、次にプライマリ・キューから、最後に代替キューからメッセージの選択的な取得を試行します。
PSEL_UCB
0
ユーザー・コールバック・キュー(UCB)からのみ、メッセージを取得します。

メッセージの属性による選択

アプリケーションが、メッセージ・タイプ、クラスまたは優先度に基づいてメッセージを選択できるようにします。この引数には次のような事前定義済の定数があります。

表2-33 メッセージ属性引数
選択モード
選択変数
モードの説明
PSEL_PQ_TYPE
タイプ
プライマリ・キューから、選択変数ワード内のタイプ値と一致する最初の保留中メッセージを選択します。
PSEL_PQ_CLASS
クラス
プライマリ・キューから、選択変数ワード内のクラス値と一致する最初の保留中メッセージを選択します。
PSEL_PQ_PRI
PSEL_PRI_ANY PSEL_PRI_P0 PSEL_PRI_P1
0から99の整数値
プライマリ・キューから、両端の数を含めて0から99の整数値と等しい優先度を持つ(または選択変数の値と等しい)最初の保留中メッセージを選択します。直接的な整数値の指定は、優先度によるメッセージの選択の際によく使われる方法です。
PSEL_PRI_ANYを使用すると、すべての優先度の保留中メッセージを読み取ることができます。PSEL_PRI_P0を設定すると、優先度0の保留中メッセージのみを取得できます。PSEL_PRI_P1を設定すると、厳密に優先度1の保留中メッセージを取得できます。

メッセージ・ソースによる選択

ソース・グループID、キュー番号またはその両方による、プライマリおよびセカンダリ・キューからの保留中メッセージの選択を可能にします。ソースによる選択の形式は次のとおりです。
図2-7 メッセージ・ソースによる選択


メッセージ・ソースによる選択

指定可能なsel_filter引数とその処理のいくつかの例を次に示します。

表2-34 sel_filter引数
sel_filter引数
処理
ゼロまたは未指定
すべてのメッセージに対してフィルタが適用されません。すべてのメッセージを取得できます。
ソースのq_address
q_addressが一致するメッセージのみが取得されます。
次の関数により作成された選択マスク
pams_set_select
指定された選択マスクに正確に一致するメッセージのみが取得されます。

複合選択

アプリケーションで、メッセージ・キューが検索される順序の複合ルールの編成を可能にします。pams_set_select関数を使用すると、sel_filter引数の下位のワードで使用できるカスタム選択マスクをアプリケーションで作成できます。複合選択の形式は次のとおりです。
図2-8 複合選択


複合選択

psb

最終的な完了ステータスが含まれるPAMSステータス・ブロックを受け取ります。psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。PSBの構造は、次のとおりです。

表2-35 psb構造体
下位バイト
上位バイト
内容
説明
0
1
タイプ
PSBタイプ
2
3
呼出しの依存性
現在使用されていません。
4
7
PSB
配信ステータス
関数の完了ステータス。リカバリ可能メッセージの場合、このフィールドにはPAMS__CONFIRMREQまたはPAMS__POSSDUPLが含まれます。リカバリ可能メッセージ以外のメッセージの場合、値PAMS__SUCCESSも含まれている可能性があります。
8
15
メッセージ順序番号
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するためのpams_confirm_msgに対する入力です。
16
19
PSB UMA
ステータス
このフィールドは、pams_get_msga関数では使用されません。
20
23
関数の戻りステータス
このフィールドは、pams_get_msga関数では使用されません。
24
31
未使用
未使用

注意: この関数はOpenVMSのASTサービスを使用するため、PSBで戻されたステータス情報をアプリケーションでチェックする必要があります。

show_buffer

Oracle MessageQがメッセージ・ヘッダーから抽出する追加情報を受け取ります。show_buffer引数の構造は次のとおりです。

表2-36 show_buffer引数
ロングワード
内容
説明
0
バージョン
show_buffer構造体のバージョン。有効な値は次のとおりです。
10 = バージョン1.0
20 = バージョン2.0
50 = バージョン5.0
1
転送ステータス
アプリケーションのバッファへのshow_buffer情報の転送に関連するステータス・コード。有効なシンボルは次のとおりです。
PAMS__SUCCESS-使用可能なすべての情報が転送されました。
PAMS__BUFFEROVF-受信側バッファのオーバーフローにより情報が失われました。0-戻されたメッセージはありません。転送する情報はありません。
2
転送サイズ
アプリケーション・バッファに転送されたバイト数。
3
Flags
show_bufferの各フィールドのステータスを示すビット配列。設定されたビットは有効なフィールドを示し、クリアされたビットは不確定データまたは割り当てられたshow_bufferメモリーの終わりを示します。flagsフィールドのシンボルは次のとおりです。
PSYM_SHOW_VERSION PSYM_SHOW_STATUS PSYM_SHOW_SIZE PSYM_SHOW_FLAGS PSYM_SHOW_TARGET PSYM_SHOW_ORIGINAL_TARGET PSYM_SHOW_SOURCE PSYM_SHOW_ORIGINAL_SOURCE PSYM_SHOW_DELIVERY PSYM_SHOW_PRIORITY PSYM_SHOW_ENDIAN PSYM_SHOW_CORRELATION_ID
4
未使用
制御セクションをその最大の40バイトまで満たします。
5
未使用
制御セクションをその最大の40バイトまで満たします。
6
未使用
制御セクションをその最大の40バイトまで満たします。
7
未使用
制御セクションをその最大の40バイトまで満たします。
8
未使用
制御セクションをその最大の40バイトまで満たします。
9
未使用
制御セクションをその最大の40バイトまで満たします。
10
ターゲット
最新のメッセージ・ターゲットのq_address
11
元のターゲット
元のメッセージ・ターゲットのq_address
12
ソース
最新のメッセージ・ソースのq_address
13
元のソース
元のメッセージのq_address
14
配信モード
メッセージをキューイングするために使用された配信モード。これは、必ずしもメッセージの生成に使用された配信モードではありません。
15
Priority
メッセージをキューイングするために使用された優先度。
16
エンディアン
2バイトおよび4バイト整数のバイト順序またはコード体系。可能な設定は次のとおりです。
PSYM_UNKNOWN
PSYM_VAX_BYTE_ORDERまたはPSYM_LITTLE_ENDIAN PSYM_NETWORK_BYTE_ORDERまたはPSYM_BIG_ENDIAN PSYM_FML
17
相関識別子
メッセージに関連付けられた32バイトの相関識別子。

show_buff_len

show_buffer引数で定義されたバッファの長さ(バイト単位)を指定します。最小の長さは40バイトです。バッファのサイズが小さすぎてすべての情報が入らない場合は、戻りコードPAMS__BUFFEROVFがshow_buffer転送ステータスに含まれます。

large_area_len

32Kより大きいメッセージを受信するためのメッセージ領域のサイズを指定します。二重バッファ(PSYM_MSG_BUFFER_POINTERで示す)を使用する場合は、メッセージ・バッファの長さも指定します。

large_size

メッセージ・バッファに書き込まれたラージ・メッセージ、二重バッファ・メッセージまたはFML32メッセージの実際のサイズを戻します。pams_get_msgaで二重バッファ・ポインタを使用する場合、新しいバッファ・サイズがlarge_sizeで戻されます。(このことは、新しいバッファ・サイズがlarge_area_lenに戻されるpams_get_msg[w}とは異なります。)

actrtn

アクション・ルーチンのエントリ・ポイントであるint32値のアドレスを指定します。このアクション・ルーチンは、pams_get_msga関数が完了すると実行されます。

actparm

actrtn引数で指定されたアクション・ルーチンが呼び出されたときに渡すint32値を指定します。

flag_id

pams_get_msga関数が完了したときに設定するフラグ番号のint32値を指定します。pams_get_msga関数が実行されるとき、このフラグはクリアされます。この引数の値が指定されない場合、フラグは使用されません。

nullarg_3

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

説明

pams_get_msga関数は非同期で実行されるため、いくつかの引数値はメッセージが到着した後にのみ取得されます。これらの引数値は、メッセージ・バッファ、ソース、クラス、メッセージのタイプ、配信ステータスが含まれるPAMSステータス・ブロック(PSB)ステータス・コード、UMAステータスおよびメッセージの順序番号です。これらの値は、メッセージの到着によりASTルーチンがトリガーされるか、またはイベント・フラグが設定されるまで設定されません。

pams_get_msga関数は、パラメータが呼び出されたときに値によってASTルーチンに渡されるASTパラメータを指定します。このパラメータは、メッセージに含まれる情報のコンテキストを提供するために使用され、メッセージに対して必要な特定のプロセスを識別するために使用できます。次に、ASTを使用したプログラミングの推奨事項とルールを示します。

戻り値

表2-37戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
呼出し引数の不正な数が、この関数に渡されました。
PAMS__BADPARAM
OpenVMS
引数値が正しくありません。
PAMS__BADPRIORITY
OpenVMS
受信に使用された無効な優先度の値です。
PAMS__BADSELIDX
OpenVMS
選択的受信インデックスが無効または未定義です。
PAMS__BADHANDLE
OpenVMS
無効なメッセージ・ハンドルです。
PAMS__MSGTOSMALL
OpenVMS
msg_area_len引数は、正またはゼロにする必要があります。
PAMS__NOACCESS
OpenVMS
キューにアクセスできません。
PAMS__NOACL
OpenVMS
リソースにアクセスできません。ACLチェックに失敗しました。
PAMS__NOMEMORY
OpenVMS
バッファ・ポインタを再度割り当てるためのメモリー・リソースが不足しています。
PAMS__NOTDCL
OpenVMS
アプリケーションは、Oracle MessageQにアタッチされていません。
PAMS__NOTSUPPORTED
OpenVMS
機能がサポートされていないか使用できません。
PAMS__RESRCFAIL
OpenVMS
リソースの割当てに失敗しました。
PAMS__STALE
OpenVMS
リソースは無効になっており、ユーザーが解放する必要があります。
PAMS__STOPPED
OpenVMS
リクエストされたキューが停止されました。
PAMS SUCCESS
OpenVMS
正常完了を示します。

PSB配信ステータス

表2-38 PSB配信ステータス
PSB配信ステータス
プラットフォーム
説明
PAMS__CONFIRMREQ
OpenVMS
このメッセージの確認を要求。
PAMS__POSSDUPL
OpenVMS
メッセージは重複可能。
PAMS__SUCCESS
OpenVMS
正常完了を示します。

関連項目

 


pams_get_msgw

指定されたキューから次に使用可能なメッセージを取得し、それをmsg_areaで指定された場所に移動します。

引数この関数は、メッセージがキューに届くまで、またはユーザー指定のタイムアウト期間が経過するまで待機します。

選択フィルタが指定されていない場合、この関数は、メッセージの優先度に基づき先入れ/先出し(FIFO)の順序で、ユーザーが指定したmsg_area引数に次に使用可能なメッセージを戻します。優先度の範囲は、0(低優先度)-99(高優先度)です。priorityが0に設定されると、pams_get_msqw関数はすべての優先度のメッセージを取得します。priorityが1から99のいずれかの値に設定されると、pams_get_msqw関数は該当する優先度のメッセージのみを取得します。メッセージは、メッセージの優先度に基づき、先入れ/先出しの順序で配置されます。選択フィルタが指定されている場合、選択基準に一致するメッセージのみが取得されます。timeout期間が経過する前にメッセージが届かない場合、または選択条件に適合するメッセージが存在しない場合、戻りステータスはPAMS_TIMEOUTとなります。

キューにリカバリ可能メッセージが送信されたとき、受信側プログラムでは、pams_confirm_msg関数を使用してメッセージの受信を確認できます。pams_confirm_msg関数により、正常に配信されたメッセージをメッセージ・リカバリ・システムから削除できます。Oracle MessageQリカバリ・システムの詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。

FML32バッファおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。

構文

int32 pams_get_msgw ( msg_area, priority, source, class, type, msg_area_len, len_data, timeout, [sel_filter], [psb], [show_buffer], [show_buffer_len], [large_area_len], [large_size],[nullarg_3] )

引数

表2-39 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
msg_area
char
参照
char *
戻される
優先度
char
参照
char *
渡される
source
q_address
参照
q_address *
戻される
class
short
参照
short *
戻される
type
short
参照
short *
戻される
msg_area_len
short
参照
short *
渡される
len_data
short
参照
short *
戻される
timeout
int32
参照
int32 *
渡される
[sel_filter]
int32
参照
int32 *
渡される
[psb]
struct psb
参照
struct psb *
戻される
[show_buffer]
struct show_buffer
参照
struct show_buffer *
戻される
[show_buffer_len]
int32
参照
int32 *
渡される
[large_area_len]
int32
参照
int32 *
渡される/戻される
[large_size]
int32
参照
int32 *
戻される
[nullarg_3]
char
参照
char *
渡される

引数の定義

msg_area

バッファ方式のメッセージングの場合は、取得されるメッセージの内容がOracle MessageQによって書き込まれるメモリー・リージョンのアドレスを受け取ります。FML方式のメッセージングの場合、または二重ポインタを使用する場合、取得されるメッセージのアドレスへのポインタを受け取ります。

priority

選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。priorityが0に設定されると、pams__get_msqw関数はすべての優先度のメッセージを取得します。priorityが1から99のいずれかの値に設定されると、pams__get_msqw関数は該当する優先度のメッセージのみを取得します。

source

送信側プログラムのプライマリ・キューのグループIDとキュー番号を識別する構造体を、次の形式で受け取ります。
図2-9 グループIDおよびキュー番号


グループIDおよびキュー番号

class

取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。UNIXおよびNTシステムでは、p_typecl.hインクルード・ファイルは編集できません。アプリケーションで使用するタイプおよびクラスのシンボルを定義するインクルード・ファイルを作成する必要があります。
Oracle MessageQで予約されているクラス・シンボルは次のとおりです。

表2-40 クラス・シンボル
予約済クラス
シンボル値
MSG_CLAS_MRS
28
MSG_CLAS_PAMS
29
MSG_CLAS_ETHERNET
100
MSG_CLAS_UCB
102
MSG_CLAS_TUXEDO
31001
MSG_CLAS_TUXEDO_TPSUCCESS
31002
MSG_CLAS_TUXEDO_TPFAIL
31003
MSG_CLAS_XXX
30000から32767 (31001-31003を除く)

type

取得されたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。

msg_area_len

len_data

最大32767バイトのメッセージを扱う静的バッファ方式のメッセージングの場合、この引数はメッセージ・キューから取得され、msg_area引数により指定された領域に格納されたバイト数を受け取ります。このフィールドは、二重バッファおよびFML方式メッセージのPSYM_MSG_BUFFER_PTRシンボルおよび32767バイトより大きいバッファ方式メッセージのPSYM_MSG_LARGEも受け取ります。

timeout

アプリケーションに制御を戻す前にpams_get_msg関数がメッセージの到着を待機する時間の最大値を指定します。タイムアウト値は、1/10 (0.1)秒単位で入力します。値100は、10秒のタイムアウトを示します。メッセージが届く前にタイムアウトが発生した場合、ステータス・コードPAMS__TIMEOUTが戻されます。
無期限のタイムアウト期間が必要な場合は、この引数を0に設定します。UNIXおよびWindows NTシステムでは、この引数の値がゼロの場合はこの関数が無期限またはメッセージを受信するまでブロックします。OpenVMSシステムでは、この関数は約5日間またはメッセージを受信するまで待機します。

sel_filter

アプリケーションが選択的にメッセージを取得する基準を指定します。この引数には、次のいずれかの選択基準が含まれます。

sel_filter引数は、次のように2つのワードで構成されています。

図2-10 sel_filter引数

sel_filter引数

デフォルトの選択

アプリケーションでは、メッセージが到着した順序に基づいてキューからメッセージを読み取ることができます。デフォルトの選択であるPSEL_DEFAULTでは、メッセージ・キューから次の保留中のメッセージを読み取ります。メッセージは、優先度別に格納され、次に、FIFOの順序で格納されます。このことを明示的に指定するには、sel_filter引数内の両方のワードを0に設定する必要があります。

メッセージ・キューによる選択

アプリケーションがキュー・タイプまたはキュー・タイプの組合せに基づいてメッセージを取得できるようにします。この選択基準は、最初に処理するキュー上で基準に一致する最初の保留中メッセージを取得するために使用されます。FIFOの順序は、各キュー内で維持されます。この引数には次のような事前定義済の定数があります。

表2-41 メッセージ・キューによる選択
選択モード
選択変数
モードの説明
PSEL_PQ
0
アプリケーションは、プライマリ・キュー(PQ)からのみ読み取ることができます。選択変数は0である必要があります。
PSEL_AQ
代替キュー番号
アプリケーションは、代替キュー(AQ)からのみ読み取ることができます。キュー・タイプがセカンダリ・キュー(SQ)でも読取り可能です。
PSEL_PQ_AQ
代替キュー番号
初めにプライマリ・キューから、次に代替キューから選択的な取得を試行します。
PSEL_AQ_PQ
代替キュー番号
初めに代替キューから、次にプライマリ・キューから選択的な取得を試行します。
PSEL_TQ_PQ
代替キュー番号
初めにタイマー・キュー(TQ)から、次にプライマリ・キューからメッセージの選択的な取得を試行します。
PSEL_TQ_PQ_AQ
代替キュー番号
初めにタイマー・キュー(TQ)から、次にプライマリ・キューから、最後に代替キューからメッセージの選択的な取得を試行します。
PSEL_UCB
0
ユーザー・コールバック・キュー(UCB)からのみ、メッセージを取得します。

メッセージの属性による選択

アプリケーションが、メッセージ・タイプ、クラスまたは優先度に基づいてメッセージを選択できるようにします。この引数には次のような事前定義済の定数があります。

表2-42 メッセージの属性による選択
選択モード
選択変数
モードの説明
PSEL_PQ_TYPE
タイプ
プライマリ・キューから、選択変数ワード内のタイプ値と一致する最初の保留中メッセージを選択します。
PSEL_PQ_CLASS
クラス
プライマリ・キューから、選択変数ワード内のクラス値と一致する最初の保留中メッセージを選択します。
PSEL_PQ_PRI
PSEL_PRI_ANY PSEL_PRI_P0 PSEL_PRI_P1
0から
99の
整数値
プライマリ・キューから、両端の数を含めて0から99の整数値と等しい優先度を持つ(または選択変数の値と等しい)最初の保留中メッセージを選択します。直接的な整数値の指定は、優先度によるメッセージの選択の際によく使われる方法です。
PSEL_PRI_ANYを使用すると、すべての優先度の保留中メッセージを読み取ることができます。PSEL_PRI_P0を設定すると、優先度0の保留中メッセージのみを取得できます。PSEL_PRI_P1を設定すると、厳密に優先度1の保留中メッセージを取得できます。

メッセージ・ソースによる選択

ソース・グループID、キュー番号またはその両方による、プライマリおよびセカンダリ・キューからの保留中メッセージの選択を可能にします。ソースによる選択の形式は次のとおりです。
図2-11 メッセージ・ソースによる選択


メッセージ・ソースによる選択

指定可能なsel_filter引数とその処理のいくつかの例を次に示します。

表2-43 sel_filter引数
sel_filter引数
処理
ゼロまたは未指定
すべてのメッセージに対してフィルタが適用されません。すべてのメッセージを取得できます。
ソースのq_address
q_addressが一致するメッセージのみが取得されます。
次の関数により作成された選択マスク
pams_set_select
指定された選択マスクに正確に一致するメッセージのみが取得されます。

複合選択

アプリケーションで、メッセージ・キューが検索される順序の複合ルールの編成を可能にします。pams_set_select関数を使用すると、sel_filter引数の下位のワードで使用できるカスタム選択マスクをアプリケーションで作成できます。複合選択の形式は次のとおりです。
図2-12 複合選択


複合選択

psb

最終的な完了ステータスが含まれるPAMSステータス・ブロックを受け取ります。psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。PSBの構造は、次のとおりです。

表2-44 PSB構造体
下位バイト
上位バイト
内容
説明
0
1
タイプ
PSBタイプ
2
3
呼出しの依存性
現在使用されていません。
4
7
PSB
配信ステータス
関数の完了ステータス。これには、MRSからのステータスが含まれます。また、メッセージがリカバリ可能な状態で送信されなかった場合には、値PAMS__SUCCESSが含まれる可能性があります。
8
15
メッセージ順序番号
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するためのpams_confirm_msg関数に対する入力です。
16
19
PSB UMA
ステータス
配信不可メッセージ・アクション(UMA)の完了ステータス。PSB UMAステータスは、UMAが実行されなかったか、または適用されたかを示します。
20
23
関数の戻りステータス
Oracle MessageQ関数の実行が完了した後に、Oracle MessageQソフトウェアによってこのフィールドに戻り値が書き込まれます。
24
31
未使用
未使用

show_buffer

Oracle MessageQがメッセージ・ヘッダーから抽出する追加情報を受け取ります。show_buffer引数の構造は次のとおりです。

表2-45 show_buffer引数
ロングワード
内容
説明
0
バージョン
show_buffer構造体のバージョン。有効なシンボルは次のとおりです。10 = Version 1.0
20 = バージョン2.0
1
転送ステータス
アプリケーションのバッファへのshow_buffer情報の転送に関連するステータス・コード。有効なシンボルは次のとおりです。
PAMS__SUCCESS-使用可能なすべての情報が転送されました。
PAMS__BUFFEROVF-受信側バッファのオーバーフローにより情報が失われました。0-戻されたメッセージはありません。転送する情報はありません。
2
転送サイズ
アプリケーション・バッファに転送されたバイト数。
3
Flags
show_bufferの各フィールドのステータスを示すビット配列。設定されたビットは有効なフィールドを示し、クリアされたビットは不確定データまたは割り当てられたshow_bufferメモリーの終わりを示します。flagsフィールドのシンボルは次のとおりです。
PSYM_SHOW_VERSION PSYM_SHOW_STATUS PSYM_SHOW_SIZE PSYM_SHOW_FLAGS PSYM_SHOW_TARGET PSYM_SHOW_ORIGINAL_TARGET PSYM_SHOW_SOURCE PSYM_SHOW_ORIGINAL_SOURCE PSYM_SHOW_DELIVERY PSYM_SHOW_PRIORITY PSYM_SHOW_ENDIAN PSYM_SHOW_CORRELATION_ID
4
未使用
制御セクションをその最大の24バイトまで満たします。
5
未使用
制御セクションをその最大の24バイトまで満たします。
6
未使用
制御セクションをその最大の24バイトまで満たします。
7
未使用
制御セクションをその最大の24バイトまで満たします。
8
未使用
制御セクションをその最大の24バイトまで満たします。
9
未使用
制御セクションをその最大の24バイトまで満たします。
10
ターゲット
最新のメッセージ・ターゲットのq_address。
11
元のターゲット
元のメッセージ・ターゲットのq_address。
12
ソース
最新のメッセージ・ソースのq_address。
13
元のソース
元のメッセージのq_address。
14
配信モード
メッセージをキューイングするために使用された配信モード。
15
Priority
メッセージをキューイングするために使用された優先度。
16
エンディアン
PSYM_VAX_BYTE_ORDERまたはPSYM_LITTLE_ENDIAN PSYM_NETWORK_BYTE_ORDERまたはPSYM_BIG_ENDIAN PSYM_FML
17
相関識別子
メッセージに関連付けられた32バイトの相関識別子。

show_buff_len

show_buffer引数で定義されたバッファの長さ(バイト単位)を指定します。最小の長さは40バイトです。バッファのサイズが小さすぎてすべての情報が入らない場合は、戻りコードPAMS__BUFFEROVFがshow_buffer転送ステータスに含められます。

large_area_len

32Kより大きいメッセージを受信するためのメッセージ領域のサイズを指定します。二重バッファ(PSYM_MSG_BUFFER_POINTERで示す)を使用する場合は、メッセージ・バッファの長さも指定します。この引数には、再割当て後の二重バッファおよびFML32バッファの長さも格納されます。

large_size

メッセージ・バッファに書き込まれたラージ・メッセージ、二重バッファ・メッセージまたはFMLメッセージの実際のサイズを戻します。

nullarg_3

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

戻りコード

表2-46 戻りコード
戻りコード
プラットフォーム
説明
PAMS__AREATOSMALL
すべて
受信したメッセージがアプリケーションのメッセージ領域より大きくなっています。
PAMS__BADARGLIST
すべて
呼出し引数の不正な数が、この関数に渡されました。
PAMS__BADHANDLE
すべて
無効なメッセージ・ハンドルです。
PAMS__BADPARAM
すべて
引数値が正しくありません。
PAMS__BADPRIORITY
すべて
受信に使用された無効な優先度の値です。
PAMS__BADSELIDX
すべて
選択的受信インデックスが無効または未定義です。
PAMS__BADTIME
OpenVMS
無効な時間が指定されました。
PAMS__BUFFEROVF
UNIX
Windows NT
show_buffer引数用に指定されたサイズが小さすぎます。
PAMS__EXHAUSTBLKS
OpenVMS
使用可能なメッセージ・ブロックがこれ以上ありません。
PAMS__FMLERROR
すべて
FMLメッセージの内部フォーマットで問題が検出されました。処理のエラーまたはデータ破壊の可能性があります。
PAMS__INSQUEFAIL
すべて
メッセージ・バッファを正しくキューイングできませんでした。
PAMS__MSGTOSMALL
すべて
msg_area_len引数は、正またはゼロにする必要があります。
PAMS__MSGUNDEL
すべて
戻されたメッセージを配信できません。
PAMS__NEED_BUFFER_PTR
UNIX
Windows NT
FML32バッファを受信しましたが、msg_area_len引数がPSYM_MSG_BUFFER_PTRに設定されていません。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOACCESS
すべて
リソースにアクセスできません。ACLチェックに失敗しました。
PAMS__NOACL
すべて
キュー・アクセス制御ファイルが見つかりません。
PAMS__NOMEMORY
OpenVMS
バッファ・ポインタを再度割り当てるためのメモリー・リソースが不足しています。
PAMS__NOMRQRESRC
すべて
アクセスを許可するためのマルチリーダー・キュー・リソースが不足しています。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__NOTSUPPORTED
UNIX
Windows NT
指定された配信モードはサポートされません。
PAMS__PAMSDOWN
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__QUECORRUPT
OpenVMS
メッセージ・バッファ・キューが破損しています。
PAMS__REMQUEFAIL
すべて
メッセージ・バッファを正しく読み取ることができませんでした。
PAMS__STALE
すべて
リソースは無効になっており、ユーザーが解放する必要があります。
PAMS__STOPPED
すべて
リクエストされたキューが停止されました。
PAMS__SUCCESS
すべて
正常終了。
PAMS__TIMEOUT
すべて
タイムアウト期間を超過しました。
PAMS__CONFIRMREQ
すべて
このメッセージの確認を要求。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__POSSDUPL
すべて
メッセージは重複可能。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

メッセージが読み取られるまでブロック

この例は、pams_get_msgw関数の使用方法を示しています。これは、メッセージを5秒ごとにそれ自体に送信するためのアラームを設定します。そのための待機にpams_get_msgwを使用します。queue_1という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があります。完全なコードの例x_getw.cは、examplesディレクトリ内にあります。

 


pams_locate_q

指定されたキュー名またはキューのエイリアスに対応するキュー・アドレスを探します。デフォルトでは、この関数はキュー・アドレスが戻されるまで待機します。

構文

int32 pams_locate_q ( q_name, q_name_len, q_address, [wait_mode], [req_id], [resp_q], [name_space_list], [name_space_list_len], [timeout] )

引数

表2-47 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
q_name
char
参照
char *
渡される
q_name_len
int32
参照
int32 *
渡される
q_address
q_address
参照
q_address *
戻される
[wait_mode]
int32
参照
int32 *
渡される
[req_id]
int32
参照
int32 *
渡される
[resp_q]
int32
参照
int32 *
渡される
[name_space_list]
int32 array
参照
int32 array *
渡される
[name_space_list_len]
int32
参照
int32 *
渡される
[timeout]
int32
参照
int32 *
渡される

引数の定義

q_name

キュー・アドレスをリクエストするキュー名またはキュー・エイリアスを指定します。Oracle MessageQがこの名前を見つけるために使用する手順は、次に説明するname_space_list引数によって制御されます。

q_name_len

q_name引数の文字数を指定します。UNIX、Windows NTおよびOpenVMS上での文字列の最大の長さは255文字です。その他のすべてのOracle MessageQ環境では、文字列の最大の長さは31です。

q_address

アプリケーションが正常にキュー名を見つけたとき、Oracle MessageQによって割り当てられたキュー・アドレスを受け取ります。

wait_mode

pams_locate_q関数の検索モードを指定します。このモードは、アプリケーションで検索の完了を待機するか、確認応答メッセージのレスポンスを受信するかを指定します。この引数には次の2つの事前定義済の定数があります。
PSYM_WF_RESP (デフォルトの設定)-アプリケーションでは、pams_locate_qのリクエストを発行し、キュー・アドレスが戻されるまで待機します。
PSYM_AK_RESP-アプリケーションではpams_locate_q addressを発行し、処理を続行します。検索が完了すると、アプリケーションのプライマリ・キューのLOCATE_Q_REPメッセージでキュー・アドレスがアプリケーションのプライマリ・キューに戻されます。レスポンス・メッセージは、resp_q引数を使用して別のキュー・アドレスにリダイレクトできます。

req_id

アプリケーション固有のトランザクションIDを指定し、pams_locate_q関数と関連付けます。

resp_q

q_addressの確認応答メッセージの受信に使用する別のキューを指定します。レスポンス・キューが指定されない場合、確認応答メッセージは送信元プログラムのプライマリ・キューに送信されます。resp_q引数の形式は次のとおりです。
図2-13 resp_q引数


resp_q引数

送信元プログラムではそのグループ外のレスポンス・キューを指定できないため、グループIDフィールドは常にゼロとなることに注意してください。

name_space_list

name_space_list引数を指定する場合は、name_space_list_len引数も指定する必要があります。この引数を指定しない場合は、PSEL_TBL_GRPがデフォルトとなります。
name_space_list引数に指定できる値は次のとおりです。

表2-48 name_space_list引数
表している場所
シンボリック値
プロセス・キャッシュ
PSEL_TBL_PROC
グループ/グループ・キャッシュ
PSEL_TBL_GRP
グローバル・ネームスペース
PSEL_TBL_BUS (またはPSEL_TBL_BUS_MEDIUMまたはPSEL_TBL_BUS_LOW)

name_space_list引数は、次のように名前の範囲を識別します。
name_space_list引数も、次のようにキャッシュ・アクセスを制御します。
マスター・データベースを検索する前に、グローバル・ネームスペース内のすべてのキャッシュをルックアップするには、PSEL_TBL_BUSのかわりにPSEL_TBL_BUS_LOWを指定する点に注意してください。 マスター・データベースを検索する前に、速度は遅くても最新のグローバル・ネームスペース内のキャッシュをルックアップするときにのみ、PSEL_TBL_BUSのかわりにPSEL_TBL_BUS_MEDIUMを指定します。 キュー・アドレスの動的バインディングの詳細は、「ネーミングの使用」のトピックを参照してください。

name_space_list_len

name_space_list引数のエントリの数を指定します。name_space_list_len引数がゼロの場合、デフォルトとして、Oracle MessageQはname_space_list引数でPSEL_TBL_GRPを使用します。

timeout

検索の完了に許容するPAMSの時間単位数(1/10秒間隔)を指定します。timeoutが0である場合、グループのATTACH_TMOプロパティが使用されます。ATTACH_TMOもゼロである場合は、600が使用されます。

戻り値

表2-49 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
呼出し引数の数が正しくありません。
PAMS__BADNAME
UNIX
Windows NT
キュー名に無効な文字が含まれています。
PAMS__BADPARAM
すべて
引数リストに無効な引数があります。
PAMS__BADRESPQ
すべて
無効なレスポンス・キューが指定されました。
PAMS__BOUND
すべて
キュー名は使用されています。
PAMS__BUSNOTSET
UNIX
Windows NT
DMQ_BUS_ID環境変数が設定されていません。
PAMS__GROUPNOTSET
UNIX
Windows NT
DMQ_GROUP_ID環境変数が設定されていません。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOACCESS
すべて
指定された名前のアドレスが0であるか、別のグループに存在します。
PAMS__NOOBJECT
すべて
キュー名が見つかりませんでした。
PAMS__PAMSDOWN
すべて
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__RESRCFAIL
すべて
リソースの割当てに失敗しました。
PAMS__SUCCESS
すべて
アクションは正常に完了しました。
PAMS__TIMEOUT
すべて
指定されたタイムアウト期間を超過しました。
PAMS__UNBINDING
すべて
リクエストされたキューは、PAMS_bind_q requestからのアンバインドの処理中です。

関連項目

キュー・アドレスを探す

この例は、queue_1をアタッチしてメッセージが送信されるqueue_3を探すことで、pams_locate_q関数の使用方法を示しています。queue_1およびqueue_3という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があり、queue_1がプライマリ・キューである必要があります。完全なコードの例x_locate.cは、examplesディレクトリ内にあります。

 


pams_open_jrn

選択されたメッセージ・リカバリ・ジャーナルを開きます。Oracle MessageQの使用不能のレター・ジャーナル(DLJ)には、リカバリ・システムにより配信できなかったリカバリ可能と指定されたメッセージが格納されます。Oracle MessageQ事後確認ジャーナル(PCJ)には、正常に配信されたリカバリ可能メッセージが格納されます。Oracle MessageQメッセージ・リカバリ・サービスの詳細は、「リカバリ可能メッセージングの使用」のトピックを参照してください。

構文

int32 pams_open_jrn ( jrn_filespec, jrn_filename_len, jrn_handle )

引数

表2-50 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
jrn_filespec
char
参照
char *
渡される
jrn_filename_len
short
参照
short *
渡される
jrn_handle
int32
参照
int32 *
戻される

引数の定義

jrn_filespec

格納されたメッセージをアプリケーションが読み取る、メッセージ・リカバリ・ジャーナルの名前を指定します。
注意: jrn_filespecは、<group name><queue name>.< SAF/DQF/ACK/DLQ/PCJ>という形式を使用する必要があります。グループ名の長さは4で、キュー名の長さは8です。

jrn_filename_len

指定されたjrn_filespec引数(ファイル名配列)に入力されるファイル指定の長さをバイト数で指定します。

jrn_handle

この関数が正常に完了した場合に、選択されたメッセージ・リカバリ・ファイルのジャーナル・ハンドルを受け取ります。
注意: jrn_filespecは、<group name><queue name>.< SAF/DQF/ACK/DLQ/PCJ>という形式を使用します。グループ名の長さは4で、キュー名の長さは8です。

ジャーナル・キューは、ある時点でジャーナル・キューを開く、または読み取る1つのアプリケーションのみによってロックされます。アプリケーションがジャーナル・キューを開こうとするときに、これは最初に一時キューをセカンダリ・キューとしてアタッチしようと試みます。キュー・プールに十分な数の一時キューが残っていない場合、ジャーナル・キューは開かれません。一時キューの数はキュー・スペースの作成時に定義でき、デフォルト値は200です。

戻り値

表2-51 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
呼出し引数の数が無効です。
PAMS__NOMEMORY
OpenVMS
仮想メモリーが不足しています。
PAMS__NOSUCHPCJ
OpenVMS
指定されたジャーナル・キューを開こうとしたときにエラーが発生しました。
PAMS__SUCCESS
OpenVMS
正常完了を示します。

関連項目

 


pams_put_msg

標準のOracle MessageQ配信モードを使用して、メッセージをターゲット・キューに送信します。アプリケーションでは、msg_size引数を使用して、バッファ方式またはFML方式のメッセージングを指定します。最大32Kのメッセージ・バッファを使用するバッファ方式メッセージングの場合、この引数はユーザーのmsg_areaバッファ内のメッセージの長さをバイト単位で指定します。さらに、msg_size引数を使用して次のいずれかのシンボルを指定できます。

pams_put_msg関数のdelivery引数は、システム、プロセスまたはネットワーク障害時のメッセージ配信の保証に使用できます。リカバリ可能メッセージは、受信側プログラムのターゲット・キューに配信できるまで、メッセージ・リカバリ・システムによってディスクに格納されています。リカバリ可能メッセージを送信するときは、メッセージ・リカバリがメッセージを格納できない場合のuma引数を指定する必要があります。また、操作の戻りステータスを受信するため、psb引数も指定する必要があります。

オプションのtimeout引数により、関数がタイムアウトするまでの、送信操作完了のための最大時間を設定できます。オプションのresp_q引数により、レスポンスを送信側プログラムのプライマリ・キューに送るかわりに、レスポンス・メッセージを受信するための代替キューを指定できます。

メッセージの送信時にFML32バッファへのポインタを使用するために、送信側プログラムではシンボルPSYM_MSG_FMLをpams_put_msg関数に対するmsg_size引数として指定します。

構文

int32 pams_put_msg ( msg_area, priority, target, class, type, delivery, msg_size, [timeout], [psb], [uma], [resp_q], [large_size], [correlation_id],[nullarg_3] )

引数

表2-52 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
msg_area
char
参照
char *
渡される
優先度
char
参照
char *
渡される
target
q_address
参照
q_address *
渡される
class
short
参照
short *
渡される
type
short
参照
short *
渡される
delivery
char
参照
char *
渡される
msg_size
short
参照
short *
渡される
[timeout]
int32
参照
int32 *
渡される
[psb]
struct psb
参照
struct psb *
戻される
[uma]
char
参照
char *
渡される
[resp_q]
q_address
参照
q_address *
渡される
large_size
int32
参照
int32 *
渡される
[correlation_id]
char
参照
char *
渡される
[nullarg_3]
char
参照
char *
渡される

引数の定義

msg_area

バッファ方式メッセージングの場合、受信側プログラムのターゲット・キューに配信されるメッセージが含まれるメモリー・リージョンのアドレスまたはメッセージ・ポインタを指定します。FML方式メッセージングの場合、メッセージが含まれるFML32バッファをポイントするメッセージ・ポインタを指定します。

priority

選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。

target

受信側プログラムのキュー・アドレスのキュー番号およびグループIDを次の形式で指定します。
図2-14 target


target

class

送信されるメッセージのクラス・コードを指定します。Oracle MessageQでは、class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。UNIXおよびNTシステムでは、p_typecl.hインクルード・ファイルは編集できません。アプリケーションで使用するタイプおよびクラスのシンボルを定義するインクルード・ファイルを作成する必要があります。
Oracle MessageQで予約されているクラス・シンボルは次のとおりです。

表2-53 クラス・シンボル
予約済クラス
シンボル値
MSG_CLAS_MRS
28
MSG_CLAS_PAMS
29
MSG_CLAS_ETHERNET
100
MSG_CLAS_UCB
102
MSG_CLAS_TUXEDO
31001
MSG_CLAS_TUXEDO_TPSUCCESS
31002
MSG_CLAS_TUXEDO_TPFAIL
31003
MSG_CLAS_XXX
30000から32767 (31001-31003を除く)

type

送信されるメッセージのタイプ・コードを指定します。Oracle MessageQでは、type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。
シンボルの値の範囲の-1から-5000はOracle MessageQで予約されています。この引数の値がゼロの場合は、メッセージ・タイプによる処理は行われません。

delivery

次の形式を使用してメッセージの配信モードを指定します。
dipは、次に示す配信インタレスト・ポイント定数のうちの1つです。

msg_size

最大32Kのメッセージ・バッファを使用するバッファ方式メッセージングの場合、この引数はユーザーのmsg_areaバッファ内のメッセージの長さをバイト単位で指定します。さらに、次のいずれかのシンボルを指定できます。

timeout

アプリケーションに制御を戻す前にpams_put_msg関数がメッセージの到着を待機する時間の最大値を指定します。タイムアウト値は、1/10 (0.1)秒単位で入力します。値100は、10秒のタイムアウトを示します。メッセージが届く前にタイムアウトが発生した場合、ステータス・コードPAMS__TIMEOUTが戻されます。timeoutの値に0を指定すると、タイムアウトはデフォルト値の30秒に設定されます。

psb

最終的な完了ステータスを示すPAMSのステータス・ブロックの値を受け取ります。psb引数は、リカバリ可能メッセージの送受信時に使用されます。PSB構造体には、メッセージ・リカバリ・システムからのステータス情報が格納され、メッセージの送受信の後にチェックできます。
PSBの構造は、次のとおりです。

表2-54 PSB構造体
下位バイト
上位バイト
内容
説明
1
0
タイプ
PSBタイプ。
3
2
呼出しの依存性
現在使用されていません。
7
4
PSB
配信ステータス
関数の完了ステータス。これには、MRSからのステータスが含まれます。また、メッセージがリカバリ可能な状態で送信されなかった場合には、値PAMS__SUCCESSが含まれる可能性があります。
15
8
メッセージ順序番号
メッセージが送信されるときにそのメッセージに割り当てられ、宛先PSBへのメッセージの末尾に付けられる一意の番号。この番号は、リカバリ可能メッセージを解放するためのpams_confirm_msg関数に対する入力です。
19
16
PSB UMA
ステータス
配信不可メッセージ・アクション(UMA)の完了ステータス。PSB UMAステータスは、UMAが実行されなかったか、または適用されたかを示します。
23
20
関数の戻りステータス
Oracle MessageQ関数の実行が完了した後に、Oracle MessageQソフトウェアによってこのフィールドに戻り値が書き込まれます。
31
24
未使用
未使用

uma

指定した配信インタレスト・ポイントでメッセージが格納できなかった場合に実行されるアクションを指定します。この引数の形式はPDEL_UMA_XXXで、このXXXは次に示すシンボルのうちの1つです。

表2-55 UMAシンボル
記号
説明
DISC
メッセージの破棄
DISCL
メッセージのログ記録後に破棄
DLJ
使用不能のレター・ジャーナル
DLQ
配信不能キュー
RTS
送信者に返却
SAF
ストア・アンド・フォワード

resp_q

受信側プログラムからのレスポンス・メッセージを受信するための代替キューに使用するq_addressを指定します。送信側プログラムでは、レスポンス・メッセージを受信するため、resp_q引数に指定したキューにアタッチする必要があります。resp_q引数の形式は次のとおりです。
図2-15 resp_q引数


resp_q引数

送信元プログラムではそのグループ外のレスポンス・キューを指定できないため、グループIDフィールドは常にゼロとして指定されます。

large_size

メッセージ・バッファに書き込まれたラージ・メッセージの実際のサイズを指定します。

correlation_id

相関識別子(32バイトの値として格納されるユーザー定義の識別子)を指定します。

nullarg_3

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

戻り値

表2-56 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
すべて
呼出し引数の不正な数が、この関数に渡されました。
PAMS__BADDELIVERY
すべて
無効な配信モードです。
PAMS__BADHANDLE
すべて
無効なメッセージ・ハンドルです。
PAMS__BADPARAM
UNIX
Windows NT
OpenVMS
グループ間通信が無効化されている場合に、グループ間接続の使用を試みます。OpenVMSシステムでは、無効なNULL呼出し引数です。
PAMS__BADPRIORITY
すべて
送信操作の無効な優先度の値です。
PAMS__BADPROCNUM
UNIX
Windows NT
無効なターゲット・キュー・アドレスが指定されました。
PAMS__BADRESPQ
すべて
レスポンス・キューがプロセスの所有ではありません。
PAMS__BADTIME
OpenVMS
無効な時間が指定されました。
PAMS__BADUMA
すべて
配信不可メッセージ・アクション(UMA)が無効です。
PAMS__EXCEEDQUOTA
すべて
ターゲットのプロセス割当てが超過しました。メッセージは送信されませんでした。
PAMS__EXHAUSTBLKS
OpenVMS
使用可能なメッセージ・ブロックがこれ以上ありません。
PAMS__FMLERROR
すべて
FMLメッセージの内部フォーマットで問題が検出されました。処理のエラーまたはデータ破壊の可能性があります。
PAMS__LINK_UP
OpenVMS
MRSに再確立されたリンクがあります。
PAMS__MSGTOBIG
すべて
メッセージは、リンク・リスト・セクション(LLS)の最大サイズを超過しました。
PAMS__MSGTOSMALL
OpenVMS
引数リストで指定された無効な(負の) msg_sizeです。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOMRS
OpenVMS
MRSは使用できません。
PAMS__NOTACTIVE
すべて
ターゲット・プロセスが現在アクティブではありません。メッセージは送信されません。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__NOTFLD
すべて
指定されたバッファはFML32バッファではありません。
PAMS__NOTSUPPORTED
すべて
選択された配信モードとumaの組合せがサポートされていません。
PAMS__PNUMNOEXIST
OpenVMS
ターゲット・キューの番号が存在しません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__REMQUEFAIL
すべて
メッセージ・バッファを正しくデキューできませんでした。
PAMS__STOPPED
すべて
リクエストされたキューが停止されました。
PAMS__SUCCESS
すべて
正常終了。
PAMS__TIMEOUT
すべて
タイムアウト期間を超過しました。
PAMS__UNATTACHEDQ
すべて
アタッチされていないキューにメッセージが正常に送信されました。
PAMS__WAKEFAIL
OpenVMS
ターゲット・プロセスのウェイクアップに失敗しました。

表2-57 UMAステータス
UMAステータス
プラットフォーム
説明
PAMS__DISC_FAILED
すべて
メッセージを宛先キュー・ファイル(DQF)内でリカバリできません。配信不可メッセージ・アクション(UMA)はPDEL_UMA_DISCでした。メッセージを破棄できませんでした。
PAMS__DISC_SUCCESS
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。メッセージが破棄されました。
PAMS__DISCL_FAILED
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害をログに記録できなかったか、メッセージを破棄できませんでした。
PAMS__DISCL_SUCCESS
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害がログに記録された後にメッセージが破棄されました。
PAMS__DLJ_FAILED
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。使用不能のレター・ジャーナル(DLJ)の書込み操作が失敗しました。
PAMS__DLJ_SUCCESS
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。メッセージがDLJに書き込まれました。
PAMS__DLQ_FAILED
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージをDLQにキューイングできませんでした。
PAMS__DLQ_SUCCESS
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージはDLQにキューイングされました。
PAMS__NO_UMA
すべて
メッセージはリカバリ可能です。UMAは実行されませんでした。
PAMS__RTS_FAILED
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージを送信元に戻すことができませんでした。
PAMS__RTS_SUCCESS
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージが戻されました。
PAMS__SAF_FAILED
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_SAFでした。ストア・アンド・フォワード(SAF)の書込み操作が失敗しました。
PAMS__SAF_SUCCESS
すべて
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_SAFでした。メッセージはSAFファイルからリカバリ可能です。
PAMS__UMA_NA
すべて
UMAは適用されません。

関連項目

メッセージの送信

この例では、多数のメッセージをキューに送信します。完全なコードの例x_putslf.cは、examplesディレクトリ内にあります。

 


pams_read_jrn

Oracle MessageQジャーナル・ファイルからメッセージを読み取ります。pams_open_jrn関数を使用して、メッセージ・キューイング・グループの使用不能のレター・ジャーナルまたは事後確認ジャーナルを開きます。pams_close_jrn関数を使用して、選択したメッセージを読み取った後にジャーナル・ファイルを閉じます。UNIXおよびWindows NTシステムでは、これらの関数はJournal Replayユーティリティを実行することによって実行されることに注意してください。

受信側プログラムは、len_data引数を読み取ることにより、各メッセージがFMLバッファであるか、またはラージ・メッセージであるかを判断します。メッセージ・ハンドルおよびラージ・メッセージの操作の詳細は、「Oracle MessageQメッセージの送受信」のトピックを参照してください。

構文

int32 pams_read_jrn ( jrn_handle, msg_area, priority, source, class, type, msg_area_len, len_data, target, write_time, conf_val, msg_seq_num, mrs_status, [large_area_len], [large_size], [nullarg_3] )

引数

表2-58 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
jrn_handle
int32
参照
int32 *
渡される
msg_area
char
参照
char *
戻される
優先度
char
参照
char *
戻される
source
q_address
参照
q_address *
戻される
class
short
参照
short *
戻される
type
short
参照
short *
戻される
msg_area_len
short
参照
short *
戻される
len_data
short
参照
short *
戻される
target
q_address
参照
q_address *
戻される
write_time
unsigned int32
参照
unsigned int32 *
戻される
conf_val
int32
参照
int32 *
戻される
msg_seq_num
unsigned int32
参照
unsigned int32 *
戻される
mrs_status
int32
参照
int32 *
戻される
[large_area_len]
int32
参照
int32 *
戻される
[large_size]
int32
参照
int32 *
戻される
[nullarg_3]
char
参照
char *
戻される

引数の定義

jrn_handle

アプリケーションがジャーナル・エントリを読み取ることを選択したメッセージ・リカバリ・ジャーナルのジャーナル・ハンドルを指定します。ジャーナル・ハンドルは、pams_open_jrn関数によりアプリケーションに戻されます。

msg_area

選択したメッセージ・リカバリ・ジャーナルから取得したメッセージのコンテンツを受け取ります。この引数には、Oracle MessageQの書込み先のメモリー・リージョンのアドレスまたはメッセージ・ハンドルのいずれかが含められます。

priority

選択的なメッセージ受信のための優先度のレベルを指定します。優先度の範囲は、0(低優先度)-99(高優先度)です。

source

送信側プログラムのプライマリ・キューのキュー番号とグループIDを識別する構造体を、次の形式で受け取ります。
図2-16 キュー番号およびグループID


キュー番号およびグループID

class

取得されたメッセージのクラス・コードを受け取ります。クラスは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、class引数の値にシンボリック名が使用できます。シンボリックなクラス名はMSG_CLAS_で始まります。クラス・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。Oracle MessageQで予約されているクラス・シンボルは次のとおりです。

表2-59 クラス・シンボル
予約済クラス
シンボル値
MSG_CLAS_MRS
28
MSG_CLAS_PAMS
29
MSG_CLAS_ETHERNET
100
MSG_CLAS_UCB
102
MSG_CLAS_TUXEDO
31001
MSG_CLAS_TUXEDO_TPSUCCESS
31002
MSG_CLAS_TUXEDO_TPFAIL
31003
MSG_CLAS_XXX
30000から32767 (31001-31003を除く)

type

ジャーナリングされたメッセージのタイプ・コードを受け取ります。タイプは、pams_put_msg関数の引数に指定されます。Oracle MessageQでは、type引数の値にシンボリック名が使用できます。シンボリックなタイプ名はMSG_TYPE_で始まります。タイプ・シンボルの定義の詳細は、p_typecl.hインクルード・ファイルを参照してください。OpenVMSシンボル値の範囲は、-1から-5000です。type引数を使用することで、選択的なメッセージの受信が容易になります。ただし、受信側アプリケーションでその処理に特定の値を必要としない場合は、値0を使用します。

msg_area_len

最大32Kバイトのバッファ方式メッセージのバッファ・サイズを指定します(バイト単位)。msg_areaバッファは、取得されたメッセージの格納に使用されます。

len_data

target

受信側のキュー・アドレスのキュー番号およびグループIDを次の形式で受け取ります。
図2-17 target


target

write_time

リカバリ可能メッセージが確認された日時を指定するクアッドワード(2つのint32値の配列)のアドレスを受け取ります。このパラメータは、標準のOpenVMSシステム時間を使用します。

conf_val

メッセージ確認値を受け取ります。

msg_seq_num

Oracle MessageQにより生成されたメッセージ順序番号を、受信されたメッセージのPSBで受け取ります。この引数は、PSB内の値に設定する必要があります。

mrs_status

メッセージのメッセージ・リカバリ・サービス(MRS)ステータスを受け取ります。

large_area_len

32Kより大きいメッセージを受信するためのメッセージ・バッファのサイズを指定します。

large_size

メッセージ・バッファに書き込まれたラージ・メッセージの実際のサイズを戻します。

nullarg_3

プレースホルダ引数としてOracle MessageQ内部で使用するために予約されています。この引数は、NULLポインタとして指定する必要があります。

戻り値

表2-60 戻りコード
戻りコード
プラットフォーム
説明
PAMS__AREASTOSMALL
OpenVMS
受信したメッセージがユーザーのメッセージ領域より大きくなっています。
PAMS__BADARGLIST
OpenVMS
指定された引数の数が無効です。
PAMS__BADHANDLE
OpenVMS
無効なメッセージ・ハンドルです。
PAMS__INVJH
OpenVMS
無効なジャーナル・ハンドルです。
PAMS__MSGTOBIG
OpenVMS
ジャーナル・ファイル内のメッセージが、GROUP_MAX_MESSAGE_SIZEより大きくなっています。
PAMS__NOMEMORY
OpenVMS
仮想メモリーが不足しています。
PAMS__NOMOREMSG
OpenVMS
ジャーナルにこれ以上メッセージがありません。
PAMS__SUCCESS
OpenVMS
正常完了を示します。
PAMS NOSUCHPCJ
すべて
指定されたジャーナルを開くときのすべてのエラー。
PAMS NOACCESS
すべて
すべての無効なrmidパラメータ。
PAMS NOTACTIVE
すべて
qspaceが使用不可であるため、すべてqspaceにアクセスできません。
PAMS TIMEOUT
すべて
このエラー・コードは、いずれかのタイムアウトが発生したことを示します。
PAMS STALE
すべて
無効または削除されたキューの名前が指定されています。

関連項目

 


pams_set_select

アプリケーションの開発者が、メッセージを受け取るための複雑な選択基準を定義できます。選択配列により、キューに対して、メッセージ受信の優先度、範囲チェックのための2つの比較キー、およびメッセージがキューから選択される順序を決定する順序キーによる検索を指定します。

pams_set_select関数は、メッセージ読取り用のOracle MessageQ関数のsel_filter引数として使用されるインデックス・ハンドルを作成します。選択インデックス・ハンドルがpams_get_msg、pams_get_msgaまたはpams_get_msgwに渡されると、受信された各メッセージは比較key_1に対して比較され、次に、比較key_2に対して比較されます。メッセージが両方のキーと一致する場合(論理的なAND操作)、そのメッセージは一致メッセージのセットに追加されます。選択されたメッセージが配信される順序は、順序キーによって決定されます。

構文

int32 pams_set_select ( selection_array, num_masks, index_handle )

引数

表2-61 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
selection_array
selection_array_ component
参照
selection_array_ component *
渡される
num_masks
short
参照
short *
渡される
index_handle
int32
参照
int32 *
戻される

引数の定義

selection_array

各キューの選択ルールを格納した選択レコードの配列を指定します。この選択配列用に、C言語のデータ構造体がtypedefで型定義されています。この構造体は、次のようにp_entry.hで定義されています。
	typedef struct _selection_array_component { 
		int32 queue;
		int32 priority; 
		int32 key_1_offset; 
		int32 key_1_size; 
		int32 key_1_value; 
		int32 key_1_oper; 
		int32 key_2_offset; 
		int32 key 2 size;
		int32 key_2_value; 
		int32 key_2_oper; 
		int32 order_offset; 
		int32 order_size; 
		int32 order_order; union {
			pams__correlation_id	correlation_id; 
			pams__sequence_number sequence number
	} extended_key
} selection_array_component;
selection_array_componentデータ構造体には次のようなコンポーネントがあります。

表2-62 selection_array_componentデータ構造体
コンポーネント
説明
キューおよび優先度
アプリケーションで、キュー番号と優先度を指定できます。
比較キー1
メッセージの有効範囲のチェックに使用する、1番目の比較キーのコンポーネントを定義します。
比較キー2
メッセージの有効範囲のチェックに使用する、2番目の比較キーのコンポーネントを定義します。
順序キー
FIFO、最小値または最大値によるメッセージの選択を可能にするために必要な情報を格納します。

次の表では、selection_array_componentデータ構造体の各コンポーネントの内容を定義しています。

キューおよび優先度

次の表に、Select_Queue構造体のこの部分の引数に適用できる有効な値を示します。

表2-63 Select_Queue構造体
フィールド
説明
Queue
キュー番号
検索するキュー番号を指定します。キュー番号は、アプリケーションが読取りアクセスを持つ任意のメッセージ・キューにできます。キュー番号は、pams_attach_q関数のq_attached引数、またはpams_locate_q関数のq_addressから取得できます。この引数の値0は、アプリケーションのプライマリ・キューを指定します。
Priority
 
両端の数を含めて0から99の整数値、または変数のいずれかで優先度を指定します。(直接的な整数値の使用は、優先度を指定する際によく使われる方法です。)アプリケーションでは、この引数に、次に示す事前定義済の定数を設定することもできます。
 
PSEL_PRI_ANY
優先度0のメッセージの前に、優先度1のメッセージを読み取ります。
 
PSEL_PRI_P0
優先度0のメッセージのみを読み取ります。
 
PSEL_PRI_P1
優先度1のメッセージのみを読み取ります。

比較キー

次の表に、Selection_Array_Components構造体のこの部分に適用できる引数および有効な値を示します。

表2-64 Selection_Array_Components構造体
フィールド
説明
Offset
 
メッセージ内のどこから比較を開始するかを指定する値を格納します。次に示す事前定義済の定数が使用できます。
 
n
ユーザー・メッセージのバイト数(0からの相対)。
 
PSEL_SOURCE
メッセージのソース・アドレス。
 
PSEL_CLASS
メッセージのクラス。
 
PSEL_TYPE
メッセージのタイプ。
 
PSEL_CORRELATION_ID
メッセージの相関識別子。key_1_offsetまたはkey_2_offsetに使用できますが、両方には指定できません。このシンボルが指定された場合、SizeフィールドをPSEL_CORRELATION_ID_SIZE (または32バイト)に設定する必要があります。
 
PSEL_SEQUENCE_NUMBER
PAMSステータス・バッファから取得したメッセージの順序番号。このシンボルが指定された場合、SizeフィールドをPSEL_SEQUENCE_NUMBER_SIZE (または8バイト)に設定する必要があります。
Size
 
比較されるキーのデータ型を指定します。
 
0
キーの使用を無効化。
 
1
Byte (8ビット)。
 
2
Word (16ビット)。
 
4
int32 (32ビット)。
 
PSEL_SEQUENCE_NUMBER_SIZE
8バイト。
 
PSEL_CORRELATION_ID_SIZE
32バイト。
Value
n
32ビットの整数値の形式で、メッセージ・フィールドの比較フィールドの値を格納します。
oper
 
比較用の関係演算子。
 
PSEL_OPER_EQ
メッセージ・フィールド = 値。
 
PSEL_OPER_NEQ
メッセージ・フィールド <> 値。
 
PSEL_OPER_GTR
メッセージ・フィールド > 値。
 
PSEL_OPER_LT
メッセージ・フィールド < 値。
 
PSEL_OPER_GTRE
メッセージ・フィールド > または = 値。
 
PSEL_OPER_LTE
メッセージ・フィールド < または = 値。

順序キー

Order Keyの部分には、次の表に示す変数を格納します。

表2-65 順序キー
フィールド
説明
Offset
 
メッセージ・フィールドのバイト・オフセット。このオフセット変数には、メッセージ内のどこから比較を開始するかを指定する値を格納します。
 
n
ユーザー・メッセージのバイト数(0からの相対)。
 
PSEL_SOURCE
メッセージのソース・アドレス。
 
PSEL_CLASS
メッセージのクラス。
 
PSEL_TYPE
メッセージのタイプ。
 
PSEL_CORRELATION_ID
メッセージの相関識別子。このシンボルが指定された場合、SizeフィールドをPSEL_CORRELATION_ID_SIZE (または32バイト)に設定する必要があります。
 
PSEL_SEQUENCE_NUMBER
PAMSステータス・バッファから取得したメッセージの順序番号。このシンボルが指定された場合、SizeフィールドをPSEL_SEQUENCE_NUMBER_SIZE (または8バイト)に設定する必要があります。
Size
 
比較するサイズ。サイズの変数は、比較されるキーのデータ型を指定します。
 
0
キーの使用を無効化。
 
1
Byte。
 
2
Word。
 
4
int32 (32ビット)。
 
PSEL_SEQUENCE_NUMBER_SIZE
8バイト。
 
PSEL_CORRELATION_ID_SIZE
32バイト。
Order
 
順序の演算子。この順序の変数は、選択処理が実行される順序を指定します。
 
PSEL_ORDER_FIFO
保留中の最初
 
PSEL_ORDER_MIN
すべての保留中の最小値
 
PSEL_ORDER_MAX
すべての保留中の最大値

相関識別子

相関識別子は、メッセージに関連付けられた32バイトのユーザー定義の識別子です。key_1_offsetまたはkey_2_offsetフィールドのいずれかの値としてPSEL_CORRELATION_IDが指定された場合、指定された相関識別子の値がメッセージとの一致のチェックに使用されます。相関識別子は各メッセージに1つであるため、PSEL_CORRELATION_IDは比較キーの1つのみに指定できます。両方のキーに相関識別子を指定すると、PAMS__BADPARAMエラーが発生します。
PSEL_CORRELATION_IDがorder_offsetフィールドの値として指定されると、その相関識別子を持つメッセージは、order_orderフィールドで指定された順序で戻されます。

順序番号

メッセージの順序番号は各メッセージごとに一意の値です。順序番号はPAMSステータス・バッファ(PSB)に格納されています。アプリケーションでは、メッセージの順序番号をPSBから取得する必要があり、それに対するどのような変更も許されません。
注意: アプリケーションでは、相関識別子または順序番号による選択のため、2つのキーのうちの1つのみを指定できます。

num_masks

選択配列のレコード数を指定します。この引数では、選択配列の最小1レコードから最大256レコードまでが指定できます。

index_handle

次に示すように、選択マスクのためのインデックス・ハンドルが格納されている変数を受け取ります。
index_handleは、sel_filter引数としてpams_get_msg、pams_get_msgaまたはpams_get_msgw、およびpams_cancel_select関数に渡されます。OpenVMSでは、最大500個のインデックス・ハンドルが許可されます。その他のOracle MessageQ実装では、16Kから32Kのインデックス・ハンドルが提供されます。

戻り値

表2-66 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
指定された引数の数が無効です。
PAMS__BADPARAM
すべて
正しくない引数が関数の呼出しに渡されました。
PAMS__IDXTBLFULL
すべて
選択的受信インデックス表が一杯です。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

複合的な選択フィルタを使用したメッセージの選択

この例では、複合的なメッセージ選択フィルタを構築するためにpams_set_selectを使用したメッセージの選択的な受信を示しています。queue_1という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があります。完全なコードの例x_select.cは、examplesディレクトリ内にあります。

 


pams_set_timer

時間間隔が超過した場合やある時刻に達した場合にメッセージをアプリケーションのプライマリ・キューに送信するタイマーを作成します。メッセージは、ソースがPAMS__TIMER_QUEUE、クラス・コードがPAMS、タイプ・コードがTIMER_EXPIREDで、優先度1メッセージとして送信されます。この関数により、TIMER_EXPIREDメッセージの先頭のint32値としてtimer_idが戻されます。

注意: Oracle MessageQバージョン5.0より前では、有効な優先度値は0および1です。バージョン5.0では、有効な範囲は0から99です(0が最下位の優先度、99が最上位の優先度)。タイマーの優先度は常に1であるため、拡張された優先度範囲を利用するために既存のプログラムを変更する場合は、このことを考慮してください。タイマーに関連付けられたメッセージは優先度が1となり、優先度が2から99のすべてのメッセージが読み取られるまで送信されません。

タイマー・メッセージに対応するために、アプリケーションはpams_get_msgw関数を使用してそのプライマリ・キューを読み取り、タイマー期限切れメッセージが届くまでブロックして、それに対応します。Oracle MessageQタイマーを取り消すには、取り消すタイマーの識別コードとともにpams_cancel_timer関数を使用します。

構文

int32 pams_set_timer ( timer_id, timer_format, p_timeout,
s_timeout )

引数

表2-67 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
timer_id
int32
参照
int32 *
渡される
timer_format
char
参照
char *
渡される
p_timeout
int32
参照
int32 *
渡される
s_timeout
unsigned quadword
参照
unsigned quadword *
渡される

引数の定義

timer_id

アプリケーションにより作成される一意のタイマー識別子値を指定します。0 (ゼロ)より大きくなるようにしてください。

timer_format

使用される時間形式を指定します。この引数には次の2つの事前定義済の定数があります。
P-p_timeout引数に指定されたPAMSタイマー・フォーマットで、時間間隔を選択します。PAMSタイマー・フォーマットでは、時間を1/10秒単位で表現します。PAMSタイマー・フォーマットを使用することにより、オペレーティング・システム非依存の時間間隔の表現が可能になります。
S-s_timeout引数に指定されたシステム依存時間形式を選択します。システム依存時間形式を使用することで、アプリケーションの特定のオペレーティング・システム環境への移植性が制限されます。

p_timeout

タイマー期限切れメッセージを戻すまでの、現在時刻からの遅延(差分)時間を指定します。timer_format引数がPに設定されている場合、この引数には0より大きい値を入力する必要があります。この引数は、時間を1/10秒単位で表現するPAMSタイマー・フォーマットを使用します。

s_timeout

OpenVMSシステムでは、この引数を使用して、64ビットOpenVMS時間形式を設定するために使用される2つのint32値の配列へのポインタを指定します。s_timeout引数は、OpenVMS時間形式ルールに合致する絶対時間または差分時間として指定できます。呼出し側がASTLMまたはTQELMプロセス割当てを超過すると、プロセスがRWAST状態に入る場合があることに注意してください。
UNIXおよびWindows NTシステムでは、この引数を使用して、int32値の2要素配列を指定します。この値は、タイマーが期限切れになる絶対時間(秒およびマイクロ秒でのUTC時間)を表します。s_timeout引数を使用する場合、開発者は、struct timeval theTime; nStatus = pams_set_timer(&timer_id, "S", NULL, (int32 *) &theTime);のようにstruct timevalへのポインタを指定します。

戻り値

表2-68 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
指定された引数の数が無効です。
PAMS__BADPARAM
すべて
引数値が正しくありません。
PAMS__INVALIDNUM
すべて
無効なタイマー番号がPAMS_set_timerに渡されました。
PAMS__INVFORMAT
すべて
呼出し内で無効なタイマー・フォーマットが指定されました。PまたはSである必要があります。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__NOTSUPPORTED
UNIX
Windows NT
S timer_formatは、UNIXおよびWindows NTシステム向けOracle MessageQではサポートされません。
PAMS__PAMSDOWN
UNIX
Windows NT
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__RESRCFAIL
すべて
操作を完了するためのリソースが不足しています。
PAMS__SUCCESS
すべて
正常完了を示します。

関連項目

タイマーの設定

この例は、タイマーが5秒ごとに期限切れになるように設定することにより、Oracle MessageQタイマー関数の使用方法を示しています。タイマーは期限切れになると、それ自身にメッセージを送信します。タイマー・イベントを処理していない間は、他の受信メッセージを待機します。中断されると、すべての未処理のタイマーが取り消されます。queue_1という名前のキューが、初期化ファイルでプライマリ・キューとして定義されている必要があります。完全なコードの例x_timer.cは、examplesディレクトリ内にあります。

 


pams_status_text

ユーザー指定のPAMS API戻りコードの重大度レベルおよびテキスト説明を受け取り、この情報をユーザー指定の記憶領域に移動します。エラー・コードが不明である場合、エラーが戻され、呼出しパラメータには入力されません。

構文

int32 pams_status_text ( code, severity, buffer, buflen, retlen)

引数

表2-69 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
code
int32
参照
int32 *
渡される
severity
int32
参照
int32 *
戻される
buffer
char
参照
char *
戻される
buflen
int32
参照
int32 *
渡される
retlen
int32
参照
int32 *
戻される

引数の定義

code

テキスト説明と重大度レベルが戻される対象の戻り値を指定します。

severity

メッセージの重大度レベルを示すコードを受け取ります。重大度レベルは、成功とエラーの両方のメッセージに適用されます。これらは、戻されるメッセージに関する追加情報を提供することを意図しています。この引数に戻される有効なコードは次のとおりです。
0 = 警告
1 = 成功
2 = エラー
3 = 情報
4 = 致命的なエラー

buffer

指定された戻りステータスのテキスト説明を受け取ります。

buflen

戻されるテキスト説明を格納するバッファの長さを指定します。すべての戻りステータス・コードのテキスト説明を格納するには、256バイトのバッファ長さが適しています。指定されたユーザー・バッファが十分大きい場合、文字列はゼロで終了します。バッファ長は、正の整数で入力する必要があります。この引数に負の整数値を指定すると、関数はステータスPAMS__BADPARAMを戻します。この引数をゼロに指定した場合、テキストはバッファに戻されず、関数はステータスPAMS__TRUNCATEDを戻します。

retlen

戻されたテキスト説明が入力されたユーザー指定バッファ領域のサイズを受け取ります。

説明

アプリケーション開発者は、pams_status_text関数を使用して各API戻り値のテキスト説明と重大度レベルを取得します。テキスト説明には、シンボリック名(インクルード・ファイルで定義され、このドキュメントで説明)と、これに続くカンマ、スペース、戻り値の説明が、次の形式で含まれます。

PAMS__SUCCESS, normal successful completion

テキスト説明に加え、この関数は成功およびエラーの両方のメッセージの重大度レベルを示すコードを戻します。

たとえば、pams_detach_qに対して可能性のある成功戻りコードには、PAMS-- SUCCESSとPAMS__DETACHEDの2つがあります。PAMS SUCCESS戻りコードは、指定されたキューが正常にデタッチされたことを示すために使用されます。

PAMS__DETACHEDは、呼出しが成功し、最後のキューがデタッチされ、pams_exit関数と同じ方法で事実上アプリケーションがメッセージ・キューイング・バスからデタッチされたことを示す、情報戻りコードです。

戻り値

表2-70 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
OpenVMS
指定された呼出しパラメータの数が無効です。
PAMS__BADPARAM
すべて
無効な呼出しパラメータが指定されました。
PAMS__FAILED
すべて
指定された戻りコードに対する変換がありません。
PAMS__SUCCESS
すべて
正常に完了しました。
PAMS__TRUNCATED
すべて
説明が戻されましたが切り捨てられています。

 


putil_show_pending

選択されたキューのリストの保留中メッセージの数をリクエストします。putil_show_pending関数を使用するには、保留中のメッセージ数を取得するメッセージ・キューの番号、および保留中のメッセージ数を取得したいキュー・アドレスのリストを指定します。この関数の戻り値は、各メモリー・キューのメッセージの合計数です。OpenVMSシステムでは、この関数は選択されたキューへの配信に対してターゲット指定されたローカル・リカバリ・ジャーナル内の保留中メッセージの数も返します。

構文

int32 putil_show_pending ( count, in_q_list, out_pend_list )

引数

表2-71 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
count
int32
参照
int32
*
渡される
in_q_list
short array
参照
short
array*
渡される
out_pend_list
int32 array
参照
int32
array *
戻される

引数の定義

count

in_q_list引数内のキューのエントリ数を指定します(配列内のインデックスの数)。指定できる最大値は32,000です。

in_q_list

保留中のメッセージ数をリクエストするキュー番号を格納したint32値の配列を指定します。

out_pend_list

戻り値

表2-72 戻りコード
戻りコード
プラットフォーム
説明
PAMS__BADARGLIST
UNIX
Windows NT
無効な引数がこの関数に指定されました。
PAMS__BADPARAM
OpenVMS
無効な引数がこの関数に指定されました。
PAMS__NETERROR
クライアント
ネットワーク・エラーにより通信リンクが中断しました。
PAMS__NOTDCL
すべて
プロセスは、Oracle MessageQにアタッチされていません。
PAMS__RESRCFAIL
すべて
操作を完了するためのリソースが不足しています。
PAMS__PAMSDOWN
すべて
指定されたOracle MessageQグループは実行していません。
PAMS__PREVCALLBUSY
クライアント
CLSへの前の呼出しが完了していません。
PAMS__SUCCESS
すべて
正常終了。

保留中メッセージの数を表示する

この例は、現在キュー内に存在する保留中メッセージの数を表示するためのputil_show_pendingの使用方法を示します。queue_1という名前のキューが、グループの構成時に定義されている必要があります。完全なコードの例x_shopnd.cは、examplesディレクトリ内にあります。

 


メッセージベース・サービスの使用

Oracle MessageQアプリケーションは、メッセージを送信する前に、キューの状態の確認やグループ間接続のステータスの確認などの標準タスクを定期的に実行します。これらのタスクを容易にするために、Oracle MessageQでは、アプリケーションとOracle MessageQサーバー・プロセスの間で交換される事前定義済リクエスト、通知およびレスポンス・メッセージのセットであるメッセージベースのサービスが提供されます。

表2-73に、メッセージベースのサービスを使用して実行される機能の説明と、使用可能なサーバーの一覧を示します。

表2-73 メッセージベース・サービスの概要
実行できる機能
特定のキューのステータスを取得する
リンク・ステータスを監視および制御する
すべてのキューの現在のステータスを取得する
ブロードキャスト・メッセージを登録する
メッセージ・リカバリ・ファイルを管理する(OpenVMSシステムのみ)
メッセージをあるDQFファイルから別のDQFファイルに転送する(OpenVMSシステムのみ)

Oracle MessageQでは、メッセージベース・サービスを使用して、キュー・ステータスの取得などのルーチン・タスクを実行します。メッセージベース・サービスでは、2つのリクエスト-レスポンスの枠組みが使用されます。一部の種類のサービスでは、送信側プログラムは特定のメッセージを使用してリクエストをOracle MessageQサーバーに送信します。Oracle MessageQサーバーは、特定のメッセージのタイプおよび形式を使用して、メッセージでレスポンスを戻します。情報がリクエストされると、それはレスポンス・メッセージのメッセージ領域に戻されます。

また、送信側プログラムは、情報の更新を継続的に受信するように登録する場合があります。この場合、送信側プログラムは登録リクエストを送信し、登録リクエストが成功した場合にレスポンスを受信します。さらに、送信側プログラムは、リクエストしたとおりに最新の情報を提供するイベントドリブン・メッセージを受信します。イベントドリブン・メッセージの受信を停止するには、送信側プログラムは登録解除リクエストをOracle MessageQサーバーに送信する必要があります。

サービス・リクエストは、選択されたサービスを提供するように指定されたOracle MessageQサーバーのプライマリ・キューに送られます。Oracle MessageQのメッセージベース・サービス・リクエストは、Oracle MessageQアプリケーション・プログラミング・インタフェース(API)またはOracle MessageQスクリプトを使用してOracle MessageQサーバーに配信されます。同様に、アプリケーションは、レスポンスおよび通知のメッセージをそのプライマリ・キューまたはレスポンス・キューから読み取って、これらのメッセージを取得します。

Oracle MessageQのメッセージベース・サービスは、リクエスタとして機能するアプリケーション・プログラムと、リクエストを実行するOracle MessageQサーバー・プロセスの間で送信されます。メッセージがシステム間で正しく認識されるようにするには、リクエスタとサーバーの両方によって認識されるエンディアン形式でメッセージ・データが送受信される必要があります。

大部分のOracle MessageQメッセージベース・サービスでは、2つのシステムのエンディアン形式が異なる場合にはこの変換が自動的に実行されます。ただし、一部のメッセージベース・サービスでは、この変換が実行されません。この場合、ユーザー・アプリケーションがメッセージをサーバー・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。

Oracle MessageQが変換を実行するか、またはアプリケーションでハードウェア・データ・フォーマットの相違をチェックする必要があるかは、各メッセージの説明を参照してください。アプリケーションによってデータが適切にフォーマットされ、異なるベンダーのコンピュータ・システム間で標準メッセージを送信する場合に必要な変換が実行されるようにする方法の詳細は、「アプリケーションのビルドとテスト」のトピックを参照してください。

サービス・リクエスト・メッセージは、pams_put_msg関数を使用して送信できます。リクエスト・メッセージは、type引数を使用してメッセージの目的を識別します。各リクエスト・メッセージには、事前定義済のデータ構造があります。

標準リクエスト・メッセージを送信するには、次を指定します。

「メッセージ・リファレンス」のトピックの各メッセージの詳細では、データ構造の各フィールドについて説明し、サンプルのCメッセージ構造を提供します。

レスポンスの受信

各Oracle MessageQサーバーは、サービス・リクエストに応答するためにレスポンスまたは通知のメッセージを戻します。大部分のリクエスト・メッセージには、レスポンス・メッセージがあります。さらに、一部のサービス・リクエストに対しては、Oracle MessageQサーバーは情報が使用可能になった場合にそれを送信元プログラムに提供する通知メッセージで応答します。

アプリケーションがpams_put_msg関数を使用して情報をリクエストすると、それはOracle MessageQサーバーにレスポンスの送信先となるグループIDとキュー番号を提供します。次に、送信側プログラムはpams_get_msgpams_get_msgwまたはpams_get_msga関数を使用してこのキューを読み取り、レスポンス情報を取得します。

Oracle MessageQサーバーのレスポンスおよび通知メッセージには、次のことが示されます。

表2-74 Oracle MessageQサーバーのレスポンス
ソース
リクエストを実行するOracle MessageQサーバーのシンボリック名。
クラス
レスポンスのクラス・コードは常にPAMSであり、これがOracle MessageQのメッセージベース・サービスであることを示しています。
タイプ
受信したメッセージのタイプ・コード。たとえば、AVAIL_REG_REPLY。
メッセージ・データ
リクエストされた情報をレスポンスまたは通知メッセージで提供するために使用される事前定義済データ構造。Oracle MessageQのすべてのメッセージベース・サービス・メッセージの定義は、現在p_msg.hインクルード・ファイルで提供されています。

「メッセージ・リファレンス」のトピックの各メッセージの詳細では、データ構造の各フィールドについて説明し、サンプルのCメッセージ構造を提供します。

キューのステータスの取得

Oracle MessageQのメッセージベース・サービスにより、アプリケーションは特定のキューがメッセージの受信に使用可能であるかどうかのチェックが可能になります。この一連のメッセージは、ローカルまたはリモート・グループのすべてのアクティブなキューのステータスに関する情報を戻します。

特定のキューのステータスに関する情報を取得するために、アプリケーションは次のメッセージをAvailサーバーと交換します。

アプリケーション・プログラムは、ローカルのAvailサーバー・プロセスにAVAIL_REGタイプのメッセージを送信して、可用性メッセージの受信を登録します。Availサーバーは、AVAIL_REG_REPLYタイプのメッセージで応答し、通知リクエストに対して確認応答を行います。

登録後に、リクエスタはすぐにターゲット・キューの現在の可用性を示すAVAILまたはUNAVAILメッセージを受信します。キューの可用性メッセージは、特定のキューがアタッチされたりデタッチされた場合、およびリンクが接続されたり失われた場合の通知を継続的に提供します。プロセスがアタッチされてキューがアクティブになると、AvailサーバーはAVAILタイプのメッセージを送信します。非アクティブになると、サーバーはUNAVAILタイプのメッセージを送信します。

アプリケーションは、AVAIL_DEREGタイプのメッセージを送信して、可用性通知を取り消す必要があります。アプリケーションは、操作のステータスを示すAVAIL_REG_REPLYメッセージを受信します。AVAIL登録の配信キューが使用不可になると、Oracle MessageQにより登録が自動的に削除されることに注意することが重要です。その後のこの配信キューのAVAILサービスの登録解除の試行では、登録が存在しないことを示すエラー・メッセージが発生します。

リンク・ステータスのモニターと制御

この項では、アプリケーションがConnectサーバー・プロセスでOracle MessageQメッセージベース・サービスを使用して、接続、キュー・エントリ、グループ、グループ間接続およびリンク・ステータスに関する情報を取得する方法について説明します。

グループ間接続、エントリおよびグループの一覧表示

アプリケーションは、現在のグループ間接続または構成済のすべてのグループ間エントリの一覧をConnectサーバーにリクエストできます。このリクエストにより、アプリケーションは現在のOracle MessageQグループ間構成およびアクティブなグループ間接続を取得できます。さらに、Connectサーバーはグループ内で認識されているキューのリストおよびメッセージ・キューイング・バスで定義されているすべてのグループのリストを提供できます。

メッセージ・キューイング・バス上で定義されているすべてのグループのリストを取得するには、LIST_ALL_GROUPSメッセージをConnectサーバーに送信します。メッセージ・バスのすべてのグループ間接続のリスト、またはすべてのグループ間エントリのリストを取得するには、LIST_ALL_CONNECTIONSメッセージをConnectサーバーに送信します。グループ内のキューのリストを取得するには、LIST_ALL_ENTRIESメッセージを送信します。

これらのリクエストに対する応答は、リクエストと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るために、アプリケーションでは、pams_get_msg関数によって戻されるメッセージ・サイズ・パラメータを使用し、リクエストされたデータ・オブジェクトのバイト・サイズでそれを除算して、戻されたデータ・エントリの数を判別します。これらのエントリのバイト・サイズは、各メッセージのリファレンス情報で示されています。

確立されたおよび失われたグループ間リンクの通知の取得

アプリケーションでは、Connectサーバー・メッセージを使用して、それ自体のグループ内でグループ間リンクの接続と切断の通知を受信することもできます。グループ間リンクのステータスの情報を取得するには、次のメッセージベース・サービスを使用します。

アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信して、新しい接続が作成されたときまたは接続が失われたときに継続的に通知を受信します。登録済アプリケーションは、グループ間接続が新しく作成されたときにLINK_COMPLETE通知メッセージを受信します。アプリケーションは、グループ間接続が失われたときにLINK_LOST通知メッセージを受信します。これ以上通知メッセージを受信しないように登録を解除するために、アプリケーションはDISABLE_NOTIFYメッセージをConnectサーバーに送信します。

注意: 注意: キューのアタッチメントの通知を継続的に受信するには、ENABLE_Q_NOTIFY_REQなどのキュー・サーバー・メッセージを使用することをお薦めします。今後、キュー・アタッチメント情報の取得にENABLE_NOTIFYメッセージを使用しないでください。

グループ間リンクの制御

グループ間リンクに関する情報の取得に加え、Connectサーバー・メッセージはリンク管理と呼ばれる機能を使用してグループ間接続の制御に使用できます。アプリケーションでは、リンク管理メッセージを使用して、グループ間リンクの作成および削除を明示的に制御します。アプリケーションが特定のノードとのネットワーク通信を制限したりネットワーク・トラフィックを削減するには、リモート・リンクを介した明示的な制御が必要な場合があります。

LINKMGT_REQリクエスト・メッセージにより、次の制御機能が有効になります。

LINKMGT_RESPレスポンス・メッセージは、リクエスト元アプリケーションにリクエストが成功したかどうかを通知し、グループ間接続に関する情報を提供します。リンク管理機能は、OpenVMSシステム向けOracle MessageQのシステム管理者ユーティリティを介して使用することもできます。図5-4は、LINKMGT_REQおよびLINKMGT_RESPにより実現された機能的な関係を図示したものです。

図2-21 リンク管理の使用

図2-21 リンク管理の使用

リンク管理は、イベント・ドリブンとすることも可能です。たとえば、アプリケーション・イベントで別のグループへのリンクをトリガーでき、これにより、メッセージの交換が可能になります。

注意: リンク管理を使用する場合、Oracle MessageQグループ初期化ファイルの%XGROUPセクションでgenerate connectのオプションD (無効化)を使用して、グループ間接続の自動作成を無効にし、すべてのグループ間リンクを完全に制御する必要があります。詳細は、各プラットフォーム向けのOracle MessageQインストレーションおよび構成ガイドのグループ間セクションに関する項のネットワーク接続の有効化に関するトピックを参照してください。
リンク管理制御機能

リンク管理リクエスト・メッセージにより、次の制御機能を使用できるようになります。

Inquire関数

リンク管理リクエスト・メッセージの照会機能を使用すると、単一のグループのリンク状態を問い合せることができます。照会機能を使用するには、リンクの状態を確認するローカルまたはリモートのグループのグループ番号を指定します。この機能では、グループ番号以外のいかなる選択パラメータも指定できません。リンク状態を同時に照会できるグループは1つのみであるため、group_numberフィールドにPSYM_LINKMGT_ALL_GROUPSシンボルを指定できません。

照会機能は、異なるバイト順序を使用しているシステム上で実行しているConnectサーバーにリクエストが送信されるときにエンディアン変換を実行します。リクエストおよびレスポンスの両方のメッセージは、リクエスト元のエンディアンでエンコードされます。

照会機能のリクエスト・メッセージ形式

表2-75に、照会機能のリクエスト・メッセージ形式を示します。

表2-75 照会機能のリクエスト・メッセージ形式
フィールド
必須/オプション
設定
version
必須
10
user_tag
必須
リクエストを識別するユーザー指定のコード。
function_code
必須
PSYM_LINKMGT_CMD_INQUIRY
group_number
必須
アクションを受信するグループ番号。有効な値は1から32000です。
connect_type
オプション
PSYM_LINKMGT_ALL_TRANSPORTS
reconnect_timer
オプション
PSYM_LINKMGT_USE_PREVIOUS
window_size
オプション
PSYM_LINKMGT_USE_PREVIOUS
window_delay
オプション
PSYM_LINKMGT_USE_PREVIOUS

transport_addr_len

オプション

0

node_name_len

オプション

0

照会リクエストのステータスの特定

LINKMGT_RESPメッセージのstatusフィールドには、照会リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-76を参照してください。

表2-76 照会機能で戻されるステータスとユーザー・アクション
PSYM_LINKMGT
戻りコード
説明
結果
説明/ユーザー・アクション
MSGCONTENT
リクエスト・メッセージに無効な値がある
エラー
照会リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
MSGFMT
リクエスト・バージョンまたは機能コードが不明
エラー
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_INQUIRYが含まれている必要があります。
NOGROUP
選択されたグループにはグループ間エントリがない
エラー
グループ間表内で定義されていないグループのリンク状態をリクエストしました。このグループにはグループ間リンクがありません。
OPERATIONFAIL
コマンドが正常に完了できなかった
エラー
システム・リソースの問題で照会機能が失敗しました。
  • ターゲット・グループへのネットワーク接続をチェックして、ネットワーク・リンクが稼働しているか確認します。
  • Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
  • ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
SUCCESS
操作は正常に完了した
成功
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。

成功した照会リクエストのレスポンス・メッセージの形式

照会機能が成功した場合、受信と送信の両方のグループ間リンクのステータスが、レスポンス・メッセージのin_link_stateおよびout_link_stateフィールドに戻されます。これらのフィールドでは、リンクのステータスが次のシンボルを使用して示されます。

グループのリンク・ステータスがPSYM_LINKMGT_CONNECTEDである場合、レスポンス・メッセージには次の情報が含まれます。

表2-77 レスポンス・メッセージの情報
フィールド
説明
version
10
user_tag
リクエスト・メッセージのユーザー指定コード。
Status
PSYM_LINKMGT_SUCCESS
group_number
アクションを受信するグループ番号。
in_link_state
PSYM_LINKMGT_CONNECTED
out_link_state
PSYM_LINKMGT_CONNECTED
connect_type
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
platform_id
接続されたプラットフォームのID (PSYM_PLATFORM_xxxx)。
reconnect_time
このグループの再接続タイマー値。

window_size

このグループ用にネゴシエーションされたウィンドウ・サイズ値。

window_delay

このグループ用にネゴシエーションされたウィンドウ遅延値。

transport_addr_len

transport_addr文字列の長さ。

transport_addr

TCP/IPポート番号のASCII表現。

node_name_len

node_name文字列の長さ。

node_name

このリンクの接続先ノードの名前。

有効化機能

リンク管理リクエスト・メッセージの有効化機能では、リンク・アドレス・エントリが無効化されている場合に再有効化します。リクエスト・メッセージ内で指定された選択条件(グループ番号、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ間接続表内のすべてのアドレスが有効化されます。選択されたグループ(複数可)のその他のアドレス・エントリはすべて無効化されます。リンクが接続済でも、有効化機能は完了します。既存のリンクが失われるまで、効果を確認できません。

有効化機能では、1つのリンクは、1つのグループの選択されたアドレスに対してのみ発生が許可されます。グループに再接続タイマーが存在する場合は、接続がすぐには試行されず、指定された時間が経過した後に試行されるように、タイマーが設定されます。その後、受信接続が可能になります。

有効化機能には、次の選択オプションがあります。

注意: シンボルPSYM_LINKMGT_ALL_TRANSPORTSは、Oracle MessageQバージョン4.0のLINK_MGTメッセージAPIに対しては新規です。OpenVMSシステムでは、有効化機能は、リクエスト元プロセスがOPERまたはDMQ$OPERATOR権限識別子を持つことを必要とします。
有効化機能のリクエスト・メッセージ形式

表2-78に、有効化機能のメッセージ形式を示します。

表2-78 有効化機能のメッセージ形式
フィールド
必須/オプション
設定
version
必須
10
user_tag
必須
リクエストを識別するユーザー指定のコード。
function_code
必須
PSYM_LINKMGT_CMD_ENABLE
group_number
必須
アクションを受信するグループ番号。有効な値は1から32000です。または、PSYM_LINKMGT_ALL_GROUPSシンボルを使用して、connect_typeがリクエストされたグループのすべての既知のリンクを有効化します。
connect_type
必須
次のトランスポート・タイプを選択します: PSYM_LINKMGT_TCPIP
reconnect_timer
オプション
COMサーバーまたはグループ制御プロセス(GCP)が通信リンクへの再接続に要する時間。秒数または次の値を入力します。
PSYM_LINKMGT_NO_TIMER PSYM_LINKMGT_USE_PREVIOUS
window_size
オプション
送信ウィンドウのサイズ(グループ間プロトコル・バージョン3.0以降)。
window_delay
オプション
送信ウィンドウ遅延秒数(グループ間プロトコル・バージョン3.0以降)。
transport_addr
オプション
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
transport_addr_len

オプション

トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定の使用を指定します。

node_name

オプション

ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。

node_name_len

オプション

ノード名文字列の長さ。ゼロは、以前の既知の値の使用を指定します。

有効化リクエストのステータスの特定

LINKMGT_RESPメッセージのステータス・フィールドには、有効化リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-79を参照してください。

表2-79 有効化機能で戻されるステータスとユーザー・アクション
PSYM_LINKMGT
戻りコード
説明
結果
説明/ユーザー・アクション
ALREADYUP
リンクはすでにアクティブ
警告
リンク・エントリはすでに使用可能ですが、有効化機能が完了しました。
MSGCONTENT
リクエスト・メッセージに無効な値がある
エラー
有効化リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
MSGFMT
リクエスト・バージョンまたは機能コードが不明
エラー
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_ENABLEが含まれている必要があります。
NOGROUP
選択されたグループにはグループ間エントリがない
エラー
グループ間表内で定義されていないグループに対して有効化機能をリクエストしたため、グループ間エントリを有効化できませんでした。
NOTRANSPORT
選択されたグループには指定されたトランスポートのグループ間エントリがない
エラー
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して有効化機能をリクエストしたため、グループ間エントリを有効化できませんでした。
OPERATIONFAIL
コマンドが正常に完了できなかった
エラー
システム・リソースの問題で有効化機能が失敗しました。
Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
SUCCESS
操作は正常に完了した
成功
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。

成功した有効化リクエストのレスポンス・メッセージの形式

有効化機能が成功した場合、次の表に示す情報がレスポンス・メッセージで返されます。

表2-80 有効化機能

フィールド

説明

version
10
user_tag
リクエスト・メッセージのユーザー指定コード。
status
PAMS__SUCCESS
group_number
アクションを受信するグループ番号(複数可)。
in_link_state
PSYM_LINKMGT_ENABLED
out_link_state
PSYM_LINKMGT_ENABLED
connect_type
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
platform_id
接続されたプラットフォームのID (PSYM_PLATFORM_xxxx)。
reconnect_time
このグループの再接続タイマー値。
window_size
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
window_delay
このグループ用にネゴシエーションされたウィンドウ遅延値。
transport_addr_len
transport_addr文字列の長さ。
transport_addr
いずれかのTCP/IPポート番号のASCII表現。
node_name_len
node_name文字列の長さ。
node_name
このリンクの接続先ノードの名前。

無効化機能

リンク管理リクエスト・メッセージの無効化機能は、リンク・アドレス・エントリが有効化されている場合にそれらを無効化します。これにより、グループの選択されたアドレスとのリンクの発生が防止されます。選択されたアドレスへの、またはアドレスからの接続の試行が不可能になります。

メッセージの選択条件(グループID、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ・アドレス表内のすべてのアドレスが無効化されます。選択されたグループのその他のすべてのアドレス・エントリには影響がありません。group_numberフィールドに一致するエントリが存在しない場合は、PSYM_LINKMGT_NOGROUPが戻されます。

無効化機能は、接続処理の検索リストから、一致するグループ間エントリを除外します。

無効化機能のリクエスト・メッセージ形式

表2-81に、無効化機能のメッセージ形式を示します。

表2-81 無効化機能のメッセージ形式
フィールド
必須/オプション
設定
version
必須
10
user_tag
必須
リクエストを識別するユーザー指定のコード。
function_code
必須
PSYM_LINKMGT_CMD_DISABLE
group_number
必須
アクションを受信するグループ番号。有効な値は1から32000です。 
PSYM_LINKMGT_ALL_GROUPSシンボルは、このグループに対するすべての既知のリンクを示します。
connect_type
必須
次のトランスポート・タイプを選択します: PSYM_LINKMGT_TCPIP
reconnect_timer
オプション
PSYM_LINKMGT_USE_PREVIOUS
window_size
オプション
PSYM_LINKMGT_USE_PREVIOUS
window_delay
オプション
PSYM_LINKMGT_USE_PREVIOUS
transport_addr
オプション
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
transport_addr_len
オプション
トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定を使用することを示します。
node_name
オプション
ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。
node_name_le
オプション
ノード名文字列の長さ。ゼロは、以前の既知の値を使用することを示します。

無効化リクエストのステータスの特定

LINKMGT_RESPメッセージのステータス・フィールドには、無効化リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-82を参照してください。

表2-82 無効化機能で戻されるステータスとユーザー・アクション
PSYM_LINKMGT
戻りコード
説明
結果
説明/ユーザー・アクション
MSGCONTENT
リクエスト・メッセージに無効な値がある
エラー
無効化リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
MSGFMT
リクエスト・バージョンまたは機能コードが不明
エラー
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_DISABLEが含まれている必要があります。
NOGROUP
選択されたグループにはグループ間エントリがない
エラー
グループ間表内で定義されていないグループに対して無効化機能をリクエストしたため、グループ間エントリを無効化できませんでした。
NOTRANSPORT
選択されたグループには指定されたトランスポートのグループ間エントリがない
エラー
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して無効化機能をリクエストしたため、グループ間エントリを無効化できませんでした。
OPERATIONFAIL
コマンドが正常に完了できなかった
エラー
システム・リソースの問題で無効化機能が失敗しました。
  • Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
  • ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
SUCCESS
操作は正常に完了した
成功
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。

成功した無効化リクエストのレスポンス・メッセージの形式

無効化機能が正常に完了した場合、レスポンス・メッセージには次の情報が含まれます。

表2-83 成功した無効化リクエストのレスポンス・メッセージの形式
フィールド
説明
version
10
user_tag
リクエスト・メッセージのユーザー指定コード。
status
PSYM_LINKMGT_SUCCESS
group_number
アクションを受信するグループ番号。
in_link_state
PSYM_LINKMGT_DISABLED
out_link_state
PSYM_LINKMGT_DISABLED
connect_type
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
platform_id
接続されたプラットフォームのID (PSYM_PLATFORM_xxxx)。
reconnect_time
このグループの再接続タイマー値。
window_size
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
window_delay
このグループ用にネゴシエーションされたウィンドウ遅延値。
transport_addr_len
transport_addr文字列の長さ。
transport_addr
いずれかのTCP/IPポート番号のASCII表現。
node_name_len
node_name文字列の長さ。
node_name
このリンクの接続先ノードの名前。

接続機能

リンク管理リクエスト・メッセージの接続機能は、リンク・アドレス・エントリが無効化されている場合にそれらを再有効化し、接続されていない場合には選択されたグループとの接続試行をすぐに行います。

その後、受信接続が可能になります。リンクが接続済である場合も、この機能は完了できます。既存のリンクが失われるまで、この機能の効果は確認できません。

メッセージの選択条件(グループID、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ・アドレス表内のすべてのアドレスが有効化され、選択されたグループのその他のすべてのアドレス・エントリは無効化されます。一致するエントリが見つからない場合、エントリが作成され、存在するグループが提供されます。ウィンドウまたは再接続タイマーの情報が指定された場合、これらの値により選択されたエントリの既存の情報が上書きされます。

group_numberフィールドがPSYM_LINKMGT_ALL_GROUPSに設定されている場合、ノード名およびトランスポート・アドレスは指定できません。特定のグループ番号が指定され、PSYM_LINKMGT_ALL_TRANSPORTSが指定されている場合、ノード名およびトランスポート・アドレスは指定できません。

OpenVMSシステムでは、接続機能は、リクエスト元プロセスがOPERまたはDMQ$OPERATOR権限識別子を持つことを必要とします。

接続機能のリクエスト・メッセージ形式

表2-84に、接続リクエスト機能のメッセージ形式を示します。

表2-84 接続リクエスト機能のメッセージ形式
フィールド
必須/オプション
設定
version
必須
10
user_tag
必須
リクエストを識別するユーザー指定のコード(指定された場合)。
function_code
必須
PSYM_LINKMGT_CMD_CONNECT
group_number
必須
アクションを受信するグループ番号。有効な値は1から32000です。 
PSYM_LINKMGT_ALL_GROUPSシンボルは、このグループに対するすべての既知のリンクを示します。
connect_type
必須
次のトランスポート・タイプを選択します:
PSYM_LINKMGT_TCPIP
reconnect_timer
オプション
COMサーバーが通信リンクへの再接続に要する時間。秒数または次の値を入力します。
PSYM_LINKMGT_NO_TIMER PSYM_LINKMGT_USE_PREVIOUS
window_size
オプション
送信ウィンドウのサイズ(グループ間プロトコル・バージョン3.0以降)。
window_delay
オプション
送信ウィンドウ遅延秒数(グループ間プロトコル・バージョン3.0以降)。
transport_addr
オプション
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
transport_addr_ len
オプション
トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定の使用を指定します。
node_name
オプション
ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。
node_name_len
オプション
ノード名文字列の長さ。ゼロは、以前の既知の値の使用を指定します。

接続リクエストのステータスの特定

LINKMGT_RESPメッセージのステータス・フィールドには、接続リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-85を参照してください。

表2-85 接続機能で戻されるステータスとユーザー・アクション
PSYM_LINKMGT
戻りコード
説明
結果
説明/ユーザー・アクション
ALREADYUP
リンクはすでにアクティブ
警告
リンク・エントリはすでに使用可能ですが、接続機能が完了しました。
MSGCONTENT
リクエスト・メッセージに無効な値がある
エラー
接続リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
MSGFMT
リクエスト・バージョンまたは機能コードが不明
エラー
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_CONNECTが含まれている必要があります。
NOGROUP
選択されたグループにはグループ間エントリがない
エラー
グループ間表内で定義されていないグループに対して接続機能をリクエストしたため、グループ間エントリを接続できませんでした。
NOTRANSPORT
選択されたグループには指定されたトランスポートのグループ間エントリがない
エラー
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して接続機能をリクエストしたため、グループ間リンクを接続できませんでした。
OPERATIONFAIL
コマンドが正常に完了できなかった
エラー
システム・リソースの問題で接続機能が失敗しました。
Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
SUCCESS
操作は正常に完了した
成功
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。

成功した接続リクエストのレスポンス・メッセージの形式

接続リクエストが成功した場合、レスポンス・メッセージには次の情報が含まれます。

表2-86 成功した接続リクエストのレスポンス・メッセージの形式
フィールド
説明
version
10
user_tag
リクエスト・メッセージのユーザー指定コード。
status
PSYM_LINKMGT_SUCCESS
group_number
アクションを受信するグループ番号。
in_link_state
PSYM_LINKMGT_CONNECTED
out_link_state
PSYM_LINKMGT_CONNECTED
connect_type
メッセージが接続されているトランスポート:
PSYM_LINKMGT_TCPIP.
platform_id
接続されたプラットフォームのID (PSYM_PLATFORM_xxxx)。
reconnect_time
このグループの再接続タイマー値。
window_size
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
window_delay
このグループ用にネゴシエーションされたウィンドウ遅延値。
transport_addr_len
transport_addr文字列の長さ。
transport_addr
いずれかのTCP/IPポート番号のASCII表現。
node_name_len
node_name文字列の長さ。
node_name
このリンクの接続先ノードの名前。

切断機能

リンク管理リクエスト・メッセージの切断機能は、リンクの暗黙的な無効化をリクエストし、リクエストされたグループへのリンクをすべて切断します。メッセージの選択条件(グループID、接続タイプ、ノード名、トランスポート・アドレスなど)に一致する、グループ・アドレス表内のすべてのアドレスが切断されます。選択されたグループのその他のすべてのアドレス・エントリには影響がありません。group_numberフィールドに一致するエントリが存在しない場合は、PSYM_LINKMGT_NOGROUPが戻されます。OpenVMSシステムでは、切断機能は、リクエスト元プロセスがOPERまたはDMQ$OPERATOR権限識別子を持つことを必要とします。

切断機能のリクエスト・メッセージ形式

表2-87に、切断機能のメッセージ形式を示します。

表2-87 切断機能のメッセージ形式
フィールド
必須/オプション
設定

user_tag

必須

10

function_code

必須

リクエストを識別するユーザー指定のコード。

group_number

必須

PSYM_LINKMGT_CMD_DISCONNECT

connect_type

必須

アクションを受信するグループ番号。有効な値は1から32000です。PSYM_LINKMGT_ALL_GROUPSシンボルは、このグループのすべての既知のリンクを切断することを意味します。

reconnect_timer

必須

次のトランスポート・タイプを選択します:

PSYM_LINKMGT_TCPIP

window_size

オプション

PSYM_LINKMGT_USE_PREVIOUS

window_delay

オプション

PSYM_LINKMGT_USE_PREVIOUS

transport_addr

オプション

PSYM_LINKMGT_USE_PREVIOUS

transport_addr_ len

オプション

長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID

node_name

オプション

トランスポート・アドレスの長さ。有効な値は、0から16バイトです。ゼロは、以前の設定の使用を指定します。

node_name_len

オプション

ノード名のASCIIテキスト。長さはnode_name_lenで決定され、最大255文字です。

切断リクエストのステータスの特定

LINKMGT_RESPメッセージのステータス・フィールドには、切断リクエストの結果を示す戻りコードが含まれます。戻されるステータスと対応するユーザー・アクションの詳細は、表2-88を参照してください。

表2-88 切断機能で戻されるステータスとユーザー・アクション
PSYM_LINKMGT
戻りコード
説明
結果
説明/ユーザー・アクション
MSGCONTENT
リクエスト・メッセージに無効な値がある
エラー
切断リクエスト・メッセージ内のいずれかのフィールド値が無効です。リクエスト・メッセージの構文を、有効な値のリストに照らしてチェックして、正しいリクエスト・メッセージを再発行します。
MSGFMT
リクエスト・バージョンまたは機能コードが不明
エラー
リクエスト・メッセージの構文を修正します。バージョンのフィールドには、数値10が含まれている必要があります。機能コードのフィールドには、シンボルPSYM_LINKMGT_CMD_DISCONNECTが含まれている必要があります。
NOGROUP
選択されたグループにはグループ間エントリがない
エラー
グループ間表内で定義されていないグループに対して切断機能をリクエストしたため、グループ間接続を切断できませんでした。
NOGROUP
選択されたグループにはグループ間エントリがない
エラー
グループ間表内で定義されていないグループに対して接続機能をリクエストしたため、グループ間エントリを接続できませんでした。
NOTRANSPORT
選択されたグループには指定されたトランスポートのグループ間エントリがない
エラー
指定されたトランスポートを使用しているグループ間接続エントリを持たないグループ(複数の場合もあり)に対して接続機能をリクエストしたため、グループ間リンクを接続できませんでした。
OPERATIONFAIL
コマンドが正常に完了できなかった
エラー
システム・リソースの問題で接続機能が失敗しました。
  • Connectサーバーをチェックして、仮想メモリーが不足している状態で実行していないかどうか確認します。
  • ログ・ファイルをチェックして、エラーの原因が記録されているかどうか確認します。
SUCCESS
操作は正常に完了した
成功
戻されるデータの詳細は、下のリンク管理レスポンス・メッセージの説明を参照してください。

成功した切断機能のレスポンス・メッセージの形式

切断機能が成功した場合、レスポンス・メッセージは次の情報を戻します。

表2-89 成功した切断機能のレスポンス・メッセージの形式
フィールド
説明
version
10
user_tag
リクエスト・メッセージのユーザー指定コード。
status
PSYM_LINKMGT_SUCCESS
group_number
アクションを受信するグループ番号。
in_link_state
PSYM_LINKMGT_DISABLED
out_link_state
PSYM_LINKMGT_DISABLED
connect_type
メッセージが接続されているトランスポート: PSYM_LINKMGT_TCPIP。
platform_id
接続されたプラットフォームのID (PSYM_PLATFORM_xxxx)。
reconnect_time
このグループの再接続タイマー値。
window_size
このグループ用にネゴシエーションされたウィンドウ・サイズ値。
window_delay
このグループ用にネゴシエーションされたウィンドウ遅延値。
transport_addr_len
transport_addr文字列の長さ。
transport_addr
いずれかのTCP/IPポート番号のASCII表現。
node_name_len
node_name文字列の長さ。
node_name
このリンクの接続先ノードの名前。

リンク管理の設計の考慮事項

表2-90に、リンク管理を使用しているアプリケーションについて、設計時の重要な考慮事項を示します。

表2-90 リンク管理の設計の考慮事項
機能
説明

フェイルオーバー・ノード表の無効化

アプリケーションがLINKMGT_REQリクエストを発行するときに、Connectサーバーはグループ初期化ファイルで定義されたフェイルオーバー・ノード表を無効化します。フェイルオーバー・ノード表を無効化すると、アプリケーションでリンク・リクエストを完全に制御できます。

追加のグループ接続の無効化

アプリケーションがLINKMGT_REQリクエストを発行してリンクを切断すると、Connectサーバーは該当グループへの以降の接続を無効化します。接続を無効化することにより、アプリケーションが別のLINKMGT_REQリクエストを発行するまで、該当グループへの追加のリンクが発生しなくなります。

接続リクエストの検証

単一のグループに対して接続リクエストが行われた場合、XGROUP_VERIFY表はメッセージ内に指定された情報を使用して、接続のリクエストを受諾するか拒否するかを決定します。グループ間検証は、受信リクエストでのみ動作します。グループ間検証のデータ構造は、リンク管理の接続または切断メッセージ内の情報で上書きされます。

接続および切断リクエストの確認応答

すでにリンクが正常に接続された後にConnectサーバーが接続メッセージを受信すると、Connectサーバーは2番目の接続メッセージを拒否します。すでにリンクが正常に切断された後にConnectサーバーが切断メッセージを受信すると、Connectサーバーは2番目の切断メッセージに対して正常終了メッセージを使用して確認応答を行います。

ローカルおよびリモートのリクエストの制限

Connectサーバーは、ローカル・アプリケーションからのリンク制御リクエストのみを受け入れます。ただし、Connectサーバーは、リモートからのリンク・ステータスの照会を、ローカル・アプリケーションからの場合と同様に受け入れます。

必要な権限

OpenVMSシステム上のアプリケーションのリンク制御リクエストでは、アプリケーションがVMS

OPER権限を持っているか、DMQ$OPERATOR権限識別子を付与されている必要があります。

キューの現在のステータスの把握

この項では、アプリケーションがキュー・サーバーのメッセージベース・サービスを使用して、特定のグループのすべてのアクティブなキューのステータス情報を取得する方法、またはキューのステータス変更の通知を取得する方法を説明します。アクティブなキューのリストには、アタッチされたすべての永続キューおよび一時キューが表示されます。

グループ内でアタッチされているキューの一覧表示

キュー・サーバー・プロセスでは、選択されたグループのアタッチされたすべてのキューのリストをアプリケーションに提供できます。この情報は、ローカルおよびリモートのグループに対して提供され、永続キューと一時キューの両方がリストに含まれます。このリストをリクエストするために、アプリケーション・プログラムはLIST_ALL_Q_REQタイプのメッセージをキュー・サーバー・プロセスに送信します。

選択されたグループ内のすべてのキューの情報を把握するために、アプリケーションは次のメッセージをキュー・サーバーと交換します。

アプリケーションは、アタッチされているすべてのキューのリストを提供するLIST_ALL_Q_RESPタイプのレスポンス・メッセージをキュー・サーバーから受信します。LIST_ALL_Q_RESPメッセージにはキュー名の長いリストが含まれている可能性があるため、アプリケーションは戻された情報を格納できる十分なバッファ・サイズを割り当てる必要があります。

アタッチメント通知の受信

キュー・サーバー・プロセスは、アタッチされているすべてのキューと、その後の、それ自体のグループのキューのアタッチおよびデタッチをアプリケーションに通知できます。アプリケーションは、ENABLE_Q_NOTIFY_REQタイプのメッセージをグループのキュー・サーバー・プロセスに送信することで、このサービスを登録します。キュー・サーバーはENABLE_Q_NOTIFY_RESPタイプのメッセージで応答し、登録リクエストのステータスを示します。

選択されたグループ内のすべてのキューの情報を把握して、新しいキューのアタッチとデタッチの通知を継続的に受信するために、アプリケーションは次のメッセージをキュー・サーバーと交換します。

登録リクエストは、送信側のレスポンス・キュー番号を新規アタッチおよびデタッチの通知を受信するアプリケーションのリストに加えます。通知は、Q_UPDATEタイプのメッセージを使用して送信されます。アプリケーションは、DISABLE_Q_NOTIFY_REQタイプのメッセージを送信して通知登録を取り消すことができます。キュー・サーバーはDISABLE_Q_NOTIFY_RESPタイプのリプライで応答し、登録取消しリクエストのステータスを示します。

メッセージ・リカバリ・ファイルの管理

Oracle MessageQメッセージベース・サービスは、MRSサーバーとともに使用して、リカバリ可能メッセージング用ファイルを維持し、MRSジャーナリング機能のオンとオフを切り替えます。これらの機能を実行するためのメッセージベース・サービスは、OpenVMSシステム上でのみ使用可能です。これらの機能は、OpenVMSシステム上のOracle MessageQ Managerユーティリティからも使用可能です。Oracle MessageQメッセージ・リカバリ・システムの使用方法の詳細は、「リカバリ可能メッセージの送信」のトピックを参照してください。

Oracle MessageQでは、次の4つのOracle MessageQファイルがMRSメッセージベース・サービスで使用されます。

表2-91 MRSメッセージベース・サービス用Oracle MessageQファイル
ストア・アンド・フォワード・ファイル(SAF)
送信側システム上でのリカバリ用に指定されたメッセージ。
宛先キュー・ファイル(DQF)
受信側システム上でのリカバリ用に指定されたメッセージ。
使用不能のレター・ジャーナル(DLJ)
Oracle MessageQによりリカバリ用に指定されていない、配信不可メッセージ。これらのメッセージは、アプリケーション・プログラムによって後でDLJから配信できます。
事後確認ジャーナル(PCJ)
正常に配信されたリカバリ可能メッセージで、メッセージ・イベントの監査証跡を形成します。

PCJファイルへのジャーナリングの制御

表2-79のメッセージを使用して、PCJファイルを置き換えたときにジャーナリングを無効化し、その後ジャーナリングを再有効化できます。

PCJを閉じて新しいPCJを開く必要がある場合は、MRS_JRN_DISABLEメッセージを使用して、PCJファイルへのジャーナリングを無効化します。MRS_JRN_DISABLE_REPメッセージは、操作のステータスを戻します。MRS_JRN_ENABLEメッセージを使用して、新しいPCJファイルを開いた後にジャーナリングを有効化します。MRS_JRN_ENABLE_REPメッセージは、操作のステータスを戻します。

 


メッセージ・リファレンス

この章では、すべてのOracle MessageQメッセージベース・サービスについて、メッセージ・タイプによるアルファベット順で詳細に説明します。それぞれの説明では、メッセージ・タイプ・コード名、サービスを実行するOracle MessageQサーバー名、およびメッセージ領域の詳細な定義と、Oracle MessageQ APIまたはスクリプトを使用したメッセージの送信またはレスポンスや通知メッセージの読取りに必要な引数を示します。Oracle MessageQのすべてのメッセージベース・サービス・メッセージの定義は、現在p_msg.hインクルード・ファイルで提供されています。

Oracle MessageQのメッセージベース・サービスは、リクエスタとして機能するアプリケーション・プログラムと、リクエストを実行するOracle MessageQサーバー・プロセスの間で送信されます。メッセージがシステム間で正しく認識されるようにするには、リクエスタとサーバーの両方によって認識されるエンディアン形式でメッセージ・データが送受信される必要があります。大部分のOracle MessageQメッセージベース・サービスでは、2つのシステムのエンディアン形式が異なる場合にはこの変換が自動的に実行されます。ただし、一部のメッセージベース・サービスではこの変換が行われないため、ユーザー・アプリケーションがメッセージをサーバー・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。各メッセージベース・サービスの説明では、データ構造がRISCアラインされているかどうか、およびサーバーがエンディアン変換を自動的に実行するかどうかについて記述しています。環境変数VIEWFILESおよびVIEWDIRは、メッセージベース・サービスを使用する前に正しく設定されている必要があることに注意してください。たとえば、VIEWDIR=$TUXDIR/udataobjおよびVIEWFILES=otmq_mbs.Vをエクスポートします。

表2-92 すべてのOracle MessageQメッセージベース・サービス(メッセージ・タイプによるアルファベット順)

 
 
 
 
 
  • SBS_SEQUENCE_GAP
 
 
 
 

注意: 各サービスの「関連項目」という項に、関連するOracle MessageQメッセージベース・サービスのリストがあります。これらのサービスの詳細は、「メッセージ・リファレンス」の項を参照してください。

 


AVAIL

アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録できます。選択されたグループのキューがアクティブになると、AVAIL通知メッセージが登録済アプリケーションに送信されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。

アプリケーションは、AVAIL_DEREGタイプのメッセージを送信して、可用性通知を取り消す必要があります。アプリケーションは、操作のステータスを示すAVAIL_REG_REPLYメッセージを受信します。AVAIL登録の配信キューが使用不可になると、Oracle MessageQにより登録が自動的に削除されることに注意することが重要です。その後のこの配信キューのAVAILサービスの登録解除の試行では、登録が存在しないことを示すエラー・メッセージが発生します。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _AVAIL 
{ q_address target_q;
} AVAIL;

メッセージ・データ・フィールド

表2-93 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
target_q
q_address
DL
現在使用可能なキューのアドレス

引数

表2-94 引数
引数
データ型
メカニズム
プロトタイプ
アクセス
ターゲット
AVAIL_REGにより指定
AVAIL_REGにより指定
ターゲット
AVAIL_REGにより指定
ソース
AVAIL_SERVER
PAMS__AVAIL_SERVER
ソース
AVAIL_SERVER
クラス
PAMS
MSG_CLAS_ PAMS
クラス
PAMS
タイプ
AVAIL
MSG_TYPE_ AVAIL
タイプ
AVAIL

関連項目

AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。

 


AVAIL_DEREG

アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録できます。通知メッセージが不要になった場合、アプリケーションはAVAIL_DEREGメッセージをAvailサーバーに送信して、登録を取り消します。AVAIL登録の配信キューが使用不可になると、Oracle MessageQにより登録が自動的に削除されることに注意することが重要です。その後のこの配信キューのAVAILサービスの登録解除の試行では、登録が存在しないことを示すエラー・メッセージが発生します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _AVAIL_DEREG { int16 version;
int16 filler; q_address target_q;
q_address distribution_q; char req_ack;
} AVAIL_DEREG;

メッセージ・データ・フィールド

表2-95 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
word
DW
フォーマット・バージョン番号。20である必要があります。
filler
word
DW
RISCアライメント用のスペーシング。
target_q
q_address
DL
可用性モニター対象のキュー。
distribution_q
q_address
DL
可用性の通知先キュー。
req_ack
ブール
DB
レスポンスが必要な場合は1、それ以外は0。

引数

表2-96 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
AVAIL_SERVER
PAMS__AVAIL_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
PAMS
MSG_CLAS_PAMS
タイプ
AVAIL_DEREG
MSG_TYPE_AVAIL_DEREG

関連項目

AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。

 


AVAIL_REG

アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録できます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。アプリケーションが配信キューからデタッチすると、AVAIL登録は自動的に削除されます。アプリケーションは、AVAIL_DEREGタイプのメッセージを送信して、キューのタイプによらず通知を取り消す必要があります。アプリケーションは、操作のステータスを示すAVAIL_REG_REPLYメッセージを受信します。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _AVAIL_REG { int16 version;
int16 filler; q_address target_q;
q_address distribution_q; int32 timeout;
} AVAIL_REG;

メッセージ・データ・フィールド

表2-97 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
word
DW
フォーマット・バージョン番号。31である必要があります。
filler
word
DW
RISCアライメント用のスペーシング。
target_q
q_address
DL
可用性がモニターされるキュー。
distribution_q
q_address
DL
可用性メッセージを受信するキュー。
timeout
int32
DL
この関数がタイムアウトするまでの間隔(秒単位で指定)。

引数

表2-98 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
AVAIL_SERVER
PAMS__AVAIL_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
PAMS
MSG_CLAS_PAMS
タイプ
AVAIL_REG
MSG_TYPE_AVAIL_REG

関連項目

AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。

 


AVAIL_REG_REPLY

アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録します。AVAIL_REG_REPLYメッセージは、アプリケーションが通知メッセージの受信を正常に登録または登録解除したかどうかを示します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _AVAIL_REG_REPLY { int16 status;
uint16 reg_id; int16 number_reg;
} AVAIL_REG_REPLY;

メッセージ・データ・フィールド

表2-99 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
status
word
DW
ステータス・コード: 1 = 成功。
0 = 失敗。
reg_id
unsigned word
DW
戻されたサブスクリプションID。
number_reg
word
DW
Availリストに残っている登録元の数。

引数

表2-100 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
AVAIL_REG/DEREGの送信元
AVAIL_REG/DEREGの送信元
ソース
AVAIL_SERVER
PAMS__AVAIL_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
AVAIL_REG_REPLY
MSG_TYPE_AVAIL_REG_REPLY

関連項目

AVAILサービスの例は、availサービス、avail登録、avail登録解除およびavailメッセージの取得を示しています。完全なコードの例x_avail.cは、examplesディレクトリ内にあります。

 


DISABLE_NOTIFY

アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。アプリケーションで通知メッセージを受信する必要がなくなったときに、DISABLE_NOTIFYメッセージをConnectサーバーに送信して登録を解除します。DISABLE_NOTIFYメッセージにより、グループ間リンクの変更の通知を中止できます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _ENABLE_NOTIFY { char reserved; char connection_flag;} ENABLE_NOTIFY;

メッセージ・データ・フィールド

表2-101 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
予約済
unsigned char
DB
Oracle MessageQにより予約済。
connection_flag
unsigned char
DB
ブール・フラグ、グループ間接続通知を取り消す場合は1、それ以外は0。

引数

表2-102 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
CONNECT_SERVER
PAMS__CONNECT_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
PAMS
MSG_CLAS_PAMS
タイプ
DISABLE_NOTIFY
MSG_TYPE_DISABLE_NOTIFY

関連項目

 


DISABLE_Q_NOTIFY_REQ

アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。DISABLE_Q_NOTIFY_REQは、アプリケーションで通知メッセージを受信する必要がなくなったときに、キュー・サーバーに送信されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _Q_NOTIFY_REQ { int32 version;
int32 user_tag;
} Q_NOTIFY_REQ;

メッセージ・データ・フィールド

表2-103 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
リクエストのバージョン
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。

引数

表2-104 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
QUEUE_SERVER
PAMS__QUEUE_SERVER
ソース
リクエスト元プログラム
リクエスト元プログラム
クラス
PAMS
MSG_CLAS_PAMS
タイプ
DISABLE_Q_NOTIFY_REQ
MSG_TYPE_DISABLE_Q_ NOTIFY_REQ

関連項目

 


DISABLE_Q_NOTIFY_RESP

アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。DISABLE_Q_NOTIFY_REQメッセージは、アプリケーションで通知メッセージする必要がなくなったときに、キュー・サーバーに送信されます。DISABLE_Q_NOTIFY_RESPメッセージは、アプリケーションが通知メッセージの受信を正常に登録解除したかどうかを示します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

#define MAX_NUMBER_Q_RECS 50 typedef struct _Q_NOTIFY_RESP {int32 version; int32 user_tag; int32 status_code; int32 last_block_flag; int32 number_q_recs; struct	{
q_address q_num; q_address q_owner; int32	q_type;int32	q_active_flag; int32	q_attached_flag; int32	q_owner_pid;} q_rec [50];} Q_NOTIFY_RESP;

メッセージ・データ・フィールド

表2-105 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
レスポンスのバージョン。
user_tag
int32
DL
リクエストのユーザー指定コード。
status_code
int32
DL
0=エラー 1=成功
-2=拒否
last_block_flag
int32
DL
最終ブロック・ブール・フラグ。
number_q_recs
int32
DL
このメッセージ内のレコード数。
q_num
q_address
DL
キュー番号。
q_owner
q_address
DL
キュー所有者(セカンダリ・キュー(SQ)のみ)。
q_type
int32
DL
キュー・タイプ(数値エンコードされたP、S、M)。
q_active_flag
int32
DL
キューがアクティブであることを示すブール・フラグ。
q_attached_flag
int32
DL
キューがアタッチされていることを示すブール・フラグ。
q_owner_pid
int32
DL
キュー所有者のプロセスID (PID)。

引数

表2-106 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
QUEUE_SERVER
PAMS__QUEUE_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
DISABLE_Q_NOTIFY_RESP
MSG_TYPE_DISABLE_Q_ NOTIFY_RESP

関連項目

 


ENABLE_NOTIFY

アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _ENABLE_NOTIFY { char reserved;
char connection_flag;
} ENABLE_NOTIFY;

メッセージ・データ・フィールド

表2-107 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
予約済
unsigned char
DB
Oracle MessageQにより予約済。
connection_flag
unsigned char
DB
ブール・フラグ、グループ間接続通知の対象とする場合は1、それ以外は0。

引数

表2-108 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
CONNECT_SERVER
PAMS__CONNECT_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
PAMS
MSG_CLAS_PAMS
タイプ
ENABLE_NOTIFY
MSG_TYPE_ENABLE_NOTIFY

関連項目

DISABLE_NOTIFY
LINK_COMPLETE
LINK_LOST

 


ENABLE_Q_NOTIFY_REQ

アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。このメッセージは、すべてのアクティブなキューのリストをリクエストして、キューがアタッチまたはデタッチされた場合、およびアクティブまたは非アクティブになった場合の後続の通知をリクエストします。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _Q_NOTIFY_REQ { int32 version;
int32 user_tag;
} Q_NOTIFY_REQ;

メッセージ・データ・フィールド

表2-109 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
リクエストのバージョン
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。

引数

表2-110 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
QUEUE_SERVER
PAMS__QUEUE_SERVER
ソース
リクエスト元プログラム
リクエスト元プログラム
クラス
PAMS
MSG_CLAS_PAMS
タイプ
ENABLE_Q_NOTIFY_REQ
MSG_TYPE_ENABLE_Q_NOTIFY_REQ

関連項目

 


ENABLE_Q_NOTIFY_RESP

アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。ENABLE_Q_NOTIFY_RESPメッセージは、すべてのアクティブなキューのリストを配信し、その後にQ_UPDATEメッセージを使用してアタッチ、デタッチ、またアクティブおよび非アクティブへのステータス変更をアプリケーションに通知します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

#define MAX_NUMBER_Q_RECS 50 typedef struct _Q_NOTIFY_RESP {int32 version; int32 user_tag; int32 status_code;int32 last_block_flag; int32 number_q_recs; struct	{
q_address q_num; q_address q_owner; int32	q_type;int32	q_active_flag; int32	q_attached_flag; int32	q_owner_pid;} q_rec [50];} Q_NOTIFY_RESP;

メッセージ・データ・フィールド

表2-111 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
レスポンスのバージョン。
user_tag
int32
DL
リクエストのユーザー指定コード。
status_code
int32
DL
0=エラー 1=成功
-2=拒否
last_block_flag
int32
DL
最終ブロック・ブール・フラグ。
number_q_recs
int32
DL
このメッセージ内のレコード数。
q_num
q_address
DL
キュー番号。
q_owner
q_address
DL
キュー所有者(セカンダリ・キュー(SQ)のみ)。
q_type
int32
DL
キュー・タイプ(数値エンコードされたP、S、M)。
q_active_flag
int32
DL
キューがアクティブであることを示すブール・フラグ。
q_attached_flag
int32
DL
キューがアタッチされていることを示すブール・フラグ。
q_owner_pid
int32
DL
キュー所有者のプロセスID (PID)。

引数

表2-112 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
QUEUE_SERVER
PAMS__QUEUE_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
ENABLE_NOTIFY_RESP
MSG_TYPE_ENABLE_NOTIFY_RESP

関連項目

 


LINKMGT_REQ

アプリケーションは、リンク管理メッセージを使用して、グループ間の接続を明示的に制御できます。LINKMGT_REQメッセージを使用して、リモート・グループへの接続、リモート・グループからの切断またはリモートOracle MessageQグループに関する情報の取得をリクエストします。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間リンクの制御」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _TADDRESS { int32 len;char str [16];} TADDRESS;
typedef struct _NODENAME { int32 len;char str [255];} NODENAME;
typedef struct _LINKMGT_REQ { int32 version;int32 user_tag; int32 function_code; int32 group_number; int32 connect_type;int32 reconnect_timer; int32 window_size; int32 window_delay;int32 reserved_space [10];TADDRESS transport_addr; NODENAME node_name;} LINKMGT_REQ;

メッセージ・データ・フィールド

表2-113 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのバージョン。
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。
function_code
int32
DL
PSYM_LINKMGT_CMDを使用するメッセージの機能:
_ENABLE
_DISABLE
_INQUIRY
_CONNECT
_DISCONNECT

注意: _INQUIRY_CONNECTおよび_DISCONNECT: このリリースのOracle Tuxedo MP環境ではサポートされません。

group_number
int32
DL
アクションを受信するグループ番号。有効な値は1から32,000。PSYM_LINKMGT_ALL_GROUPSはすべての既知のリンクを示します。
connect_type
int32
DL
次のような使用するトランスポートのタイプ。
PSYM_LINKMGT_TCPIP
reconnect_timer
int32
DL
COMサーバーが通信リンクへの再接続に要する時間。秒数または次の値を入力します。
PSYM_LINKMGT_NO_TIMER PSYM_LINKMGT_USE_PREVIOUS
window_size
int32
DL
送信ウィンドウのサイズ(グループ間プロトコル・バージョン3.0以降)。メッセージの数または次の値を入力します。
PSYM_LINKMGT_USE_PREVIOUS
window_delay
int32
DL
送信ウィンドウ遅延秒数(グループ間プロトコル・バージョン
3.0以降)。秒数または次の値を入力します。
PSYM_LINKMGT_USE_PREVIOUS
reserved_space
10-int32 array
DL(10)
Oracle MessageQで使用するために予約されています。
transport_addr_len
int32
DL
トランスポート・アドレスの長さ。0から16バイトの値、0 = 以前の設定を使用。
transport_addr
char char
str *
A
長さ16バイトのトランスポート・アドレス文字列、TCP/IPポートID
node_name_len
int32
DL
ノード名文字列の長さ。0 = 以前の既知の値を使用。
node_name
char
A
ノード名のASCIIテキスト。長さはnode_name_lenによって決定され、最大255文字です。

引数

表2-114 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
CONNECT_SERVER
PAMS__CONNECT_SERVER
ソース
リクエスト元プログラム
リクエスト元プログラム
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LINKMGT_REQ
MSG_TYPE_LINKMGT_REQ

関連項目

 


LINKMGT_RESP

アプリケーションは、リンク管理メッセージを使用して、グループ間の接続を明示的に制御できます。LINKMGT_REQメッセージを使用して、リモート・グループへの接続、リモート・グループからの切断またはリモートOracle MessageQグループに関する情報の取得をリクエストします。LINKMGT_RESPメッセージは、リクエスト元アプリケーションに接続または切断リクエストが成功したかどうかを通知し、グループ間接続に関する情報を提供します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間リンクの制御」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _TADDRESS { int32 len;char str [16];
} TADDRESS;typedef struct _NODENAME { int32 len;
char str [255];} NODENAME;
typedef struct _LINKMGT_RESP { int32 version;int32 user_tag; int32 status;
int32 group_number; int32 in_link_state; int32 out_link_state; int32 connect_type; int32 platform_id; int32 reconnect_timer; int32 window_size; int32 window_delay;int32 reserved_space [10]; TADDRESS transport_addr; NODENAME node_name;} LINKMGT_RESP;

メッセージ・データ・フィールド

表2-115 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのバージョン。
user_tag
int32
DL
リクエストのユーザー指定コード。
status
int32
DL
完了ステータス
group_number
int32
DL
アクションを受信するグループ番号。有効な値は1から32,000です。
PSYM_LINKMGT_ALL_GROUPSは、すべての既知のリンクを示します。
in_link_state
int32
DL
リクエスト時点の受信リンクの状態。値は次のとおりです。
PSYM_LINKMGT_UNKNOWN PSYM_LINKMGT_NOCNT PSYM_LINKMGT_CONNECTED PSYM_LINKMGT_DISABLED
out_link_state
int32
DL
リクエスト時点の送信リンクの状態。
in_link_stateと同じ値です。
connect_type
int32
DL
次のような使用するトランスポートのタイプ。
platform_id
int32
DL
Platform type preceded by the prefix PSYM_PLATFORM. Valid values are:
VAX_VMS VAX_ULTRIX RISC_ULTRIX HP9000_HPUX MOTOROLA_VR32 SPARC_SUNOS IBM_RS6000_AIX OS2
MSDOS PDP11_RSX VAXELN MACINTOSH SCO_UNIX M68K VMS_AXP UNIX WINDOWSNT OSF1_AXP DYNIX_X86 UNKNOWN
reconnect_timer
int32
DL
Time it takes for the COM Server to reconnect to a communications link. Enter the number of seconds or the following values:
PSYM_LINKMGT_NO_TIMER PSYM_LINKMGT_USE_PREVIOUS
window_size
int32
DL
Size of transmission window (cross-group protocol Version 3.0 and higher).
window_delay
int32
DL
Transmission window delay in seconds (cross-group protocol Version 3.0 and higher).
reserved_space
10-
int32 array
DL(10)
Reserved for Oracle MessageQ use.
transport_addr_ len
int32
DL
Length of transport address. Values 0 to 16 bytes; 0 = use previous setting.
transport_addr
char
A
Transport address string 16 bytes in length, the TCP/IP port ID.
node_name_len
int32
DL
Length of node name string. 0 = use previous known value.
node_name
char
A
ASCII text of node name; length determined by node_name_len up to 255 characters.

ステータス・コード

表2-116 ステータス・コード
ステータス・コード
説明
PSYM_LINKMGT_ALREADYUP
リンクは接続済です。
PSYM_LINKMGT_MSGCONTENT
メッセージが不完全であるか、内容とダイアログの整合が取れていません。
PSYM_LINKMGT_MSGFMT
ダイアログ内の形式エラー。
PSYM_LINKMGT_NOGROUP
グループが不明です。
PSYM_LINKMGT_NOPRIV
試行した操作に対する権限がありません。
PSYM_LINKMGT_NOTRANSPORT
リクエストしたトランスポートは使用できません。
PSYM_LINKMGT_NOTSUPPORTED
サポートされていない機能です。
PSYM_LINKMGT_OPERATIONFAIL
リクエストした操作は失敗しました。
PSYM_LINKMGT_SUCCESS
正常終了しました。

引数

表2-117 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
CONNECT_SERVER
PAMS__CONNECT_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LINKMGT_RESP
MSG_TYPE_LINKMGT_RESP

関連項目

LINKMGT_REQ

 


LINK_COMPLETE

アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。登録済アプリケーションは、グループ間接続が発生したときに毎回LINK_COMPLETEメッセージを受信します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _LINK_NOTIFICATION { int16 group_number;
int16 filler1; char os_type; char  filler2;
} LINK_NOTIFICATION;

メッセージ・データ・フィールド

表2-118 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
group_number
word
DW
リンクと関連付けられたグループのアドレス。
filler1
word
DW
Oracle MessageQ用に予約されています。
os_type
byte
A(1)
リモート・ノードのオペレーティング・システムを示すコード。
filler2
byte
XB
Oracle MessageQ用に予約されています。

引数

表2-119 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
CONNECT_SERVER
PAMS__CONNECT_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LINK_COMPLETE
MSG_TYPE_LINK_COMPLETE

関連項目

 


LINK_LOST

アプリケーションは、ENABLE_NOTIFYメッセージをConnectサーバーに送信することで、グループ間リンクが確立されたときや失われたときの通知の受信を登録できます。登録済アプリケーションは、グループ間接続が失われたときに毎回LINK_LOSTメッセージを受信します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「確立されたおよび失われたグループ間リンクの通知の取得」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _LINK_NOTIFICATION { int16 group_number;int16 filler1; char os_type; char  filler2;} LINK_NOTIFICATION;

メッセージ・データ・フィールド

表2-120 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
group_number
word
DW
リンクと関連付けられたグループのアドレス。
filler1
word
DW
Oracle MessageQ用に予約されています。
os_type
byte
A(1)
リモート・ノードのオペレーティング・システムを示すコード。
filler2
byte
XB
Oracle MessageQ用に予約されています。

引数

表2-121 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
CONNECT_SERVER
PAMS__CONNECT_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LINK_LOST
MSG_TYPE_LINK_LOST

関連項目

 


LIST_ALL_CONNECTIONS (リクエスト)

アプリケーションはLIST_ALL_CONNECTIONSメッセージをConnectサーバーに送信して、アクティブおよび構成済のすべてのグループ間接続の一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、同じタイプおよびクラスの可変長メッセージとなり、グループ間接続情報が含まれます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。

注意: このメッセージはRISCアラインされています。

C メッセージ構造

ありません。

メッセージ・データ・フィールド

ありません。

引数

表2-122 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
CONNECT_SERVER
PAMS__CONNECT_SERVER
ソース
リクエスト元プログラム
リクエスト元プログラム
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_CONNECTIONS
MSG_TYPE_LIST_ALL_ -CONNECTIONS

関連項目

 


LIST_ALL_CONNECTIONS (レスポンス)

アプリケーションはLIST_ALL_CONNECTIONSメッセージをConnectサーバーに送信して、アクティブおよび構成済のすべてのグループ間接続の一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、グループ間接続情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るには、アプリケーションは応答の合計バイト数を計算し、20バイトのグループ間エントリの長さで除算し、戻されたレコードの数を判別する必要があります。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。

このメッセージは、リング接続が存在しないグループに関する情報は戻しません。LIST_ALL_CONNECTIONSのstateフィールドは、常に3 (リンク済)である必要があります。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _GROUP_RECORD { int16 group_number;char group_name[4]; char uic[3];char os_type; char node[6]; char state;char reserved[3];} GROUP_RECORD;

メッセージ・データ・フィールド

表2-123 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
group_number
word
DW
グループ・アドレス番号
group_name
4-char配列
A(4)
4文字に切り捨てられた名前。
uic
3-char配列
A(3)
8進のグループ・ユーザー識別コード(UIC)。
os_type
char
A(1)
グループのオペレーティング・システム・タイプ(OpenVMSのみ)。
node
6-char配列
A(6)
ネットワーク・ノード名。
state
char
A(1)
1=リンクなし 2=保留中 3=リンク済
予約済
3-char
ZB 3
Oracle MessageQ用に予約されています。

注意: 変数stateはint型として扱います。

引数

表2-124 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
Oracle MessageQにより指定
Oracle MessageQにより指定
ソース
CONNECT_SERVER
PAMS__CONNECT_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_CONNECTIONS
MSG_TYPE_LIST_ALL_ -CONNECTIONS

関連項目

 


LIST_ALL_ENTRIES (リクエスト)

アプリケーションはLIST_ALL_ENTRIESメッセージをConnectサーバーに送信して、グループ内のアタッチ済および構成済のすべてのキューの一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、キューの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。

注意: このメッセージはRISCアラインされています。

C メッセージ構造

ありません。

メッセージ・データ・フィールド

ありません。

引数

表2-125 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
CONNECT_SERVER
PAMS__CONNECT_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_ENTRIES
MSG_TYPE_LIST_ALL_ ENTRIES

関連項目

 


LIST_ALL_ENTRIES (レスポンス)

アプリケーションはLIST_ALL_ENTRIESメッセージをConnectサーバーに送信して、グループ内のアタッチ済および構成済のすべてのキューの一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、キューの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るには、アプリケーションは応答の合計バイト数を計算し、24バイトのキュー・エントリの長さで除算し、戻されたレコードの数を判別する必要があります。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _QLIST_RECORD { char q_name [20]; int16 q_number; char attach_flag; char reserved;} QLIST_RECORD;

メッセージ・データ・フィールド

表2-126 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
q_name
20-char配列
A(20)
文字数制限内に収まるように切り捨てられたキュー名。
q_number
word
DW
ローカル・キュー・アドレス番号。
attach_flag
Char
DB
1=アタッチ済
0=未アタッチ
予約済
byte
ZB
Oracle MessageQ用に予約されています。

注意: 変数attach_flagはint型として扱います。

引数

表2-127 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
CONNECT_SERVER
PAMS__CONNECT_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_ENTRIES
MSG_TYPE_LIST_ALL_ENTRIES

関連項目

 


LIST_ALL_GROUPS (リクエスト)

アプリケーションは、LIST_ALL_GROUPSメッセージをConnectサーバーに送信することによって、メッセージ・キューイング・バス上のすべてのグループの一覧をリクエストできます。このリクエストに対する応答は、グループの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。

注意: このメッセージはRISCアラインされています。

C メッセージ構造

ありません。

メッセージ・データ・フィールド

ありません。

引数

表2-128 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
CONNECT_SERVER
PAMS__CONNECT_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_GROUPS
MSG_TYPE_LIST_ALL_GROUPS

関連項目

 


LIST_ALL_GROUPS (レスポンス)

アプリケーションはLIST_ALL_GROUPSメッセージをConnectサーバーに送信して、メッセージ・キューイング・バス上の接続済および未接続のすべてのグループの一覧をConnectサーバーにリクエストできます。このリクエストに対する応答は、グループの情報が含まれるメッセージと同じタイプおよびクラスの可変長メッセージです。戻された情報を読み取るには、アプリケーションは応答の合計バイト数を計算し、18バイトのグループ・エントリの長さで除算し、戻されたレコードの数を判別する必要があります。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ間接続、エントリおよびグループの一覧表示」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Connectサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _LIST_ALL_RESP { int16 group_number;
char	group_name [4];
char	uic_number [3]; char	operating_system; char	decnet_node [6]; char	connection_state; char reserved[3];
} LIST_ALL_RESP;

メッセージ・データ・フィールド

表2-129 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
group_number
word
DW
グループ・アドレス番号
group_name
4-char配列
A(4)
4文字に切り捨てられた名前。
uic_number
3-char配列
A(3)
8進のグループ・ユーザー識別コード(UIC)。
operating_system
char
A(1)
グループのオペレーティング・システム・タイプ。
decnet_node
6-char配列
A(6)
現在のDECnetノード名。これは、TCP/IPノード名とすることも可能です。6文字を超えるTCP/IPノード名は切り捨てられます。
connection_state
char
A(1)
1=リンクなし 2=保留中 3=リンク済
予約済
3-char (VMS)
1-char (UNIX)
ZB
Oracle MessageQ用に予約されています。

引数

表2-130 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
CONNECT_SERVER
PAMS__CONNECT_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_GROUPS
MSG_TYPE_LIST_ALL_GROUPS

関連項目

 


LIST_ALL_Q_REQ

LIST_ALL_Q_REQメッセージはキュー・サーバーに送信され、ローカルおよびリモート・グループの、アタッチされたすべての永続キューおよび一時キューのリストをリクエストします。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「グループ内でアタッチされているキューの一覧表示」のトピックを参照してください。

注意: 注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _Q_NOTIFY_REQ { int32 version;
int32 user_tag;
} Q_NOTIFY_REQ;

メッセージ・データ・フィールド

表2-131 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
リクエストのバージョン
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。

引数

表2-132 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
QUEUE_SERVER
PAMS__QUEUE_SERVER
ソース
リクエスト元プログラム
リクエスト元プログラム
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_Q_REQ
MSG_TYPE_LIST_ALL_Q_REQ

関連項目

LIST_ALL_Q_RESP

 


LIST_ALL_Q_RESP

LIST_ALL_Q_RESPメッセージはキュー・サーバーに送信され、ローカルおよびリモート・グループの、すべての永続キューおよびアタッチされたすべての一時キューのリストを提供します。この情報は、LIST_ALL_Q_REQメッセージをキュー・サーバーに送信してリクエストされたものです。このレスポンス・メッセージにはキュー名の長いリストが含まれている可能性があるため、アプリケーションは戻された情報を格納できる十分なバッファ・サイズを割り当てる必要があります。このメッセージの使用方法の説明は、第5章「メッセージベース・サービスの使用」「グループ内でアタッチされているキューの一覧表示」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

#define MAX_NUMBER_Q_RECS 50 typedef struct _Q_NOTIFY_RESP {
int32 version; int32 user_tag; int32 status_code;
int32 last_block_flag; int32 number_q_recs; struct	{
q_address q_num; q_address q_owner; int32	q_type;
int32	q_active_flag; int32	q_attached_flag; int32	q_owner_pid;
} q_rec [50];
} Q_NOTIFY_RESP;

メッセージ・データ・フィールド

表2-133 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
レスポンスのバージョン。
user_tag
int32
DL
リクエストのユーザー指定コード。
status_code
int32
DL
0=エラー 1=成功
-2=拒否
last_block_flag
int32
DL
最終ブロック・ブール・フラグ。
number_q_recs
int32
DL
このメッセージ内のレコード数。
q_num
q_address
DL
キュー番号。
q_owner
q_address
DL
キュー所有者(セカンダリ・キュー(SQ)のみ)。
q_type
int32
DL
キュー・タイプ(数値エンコードされたP、S、M)。
q_active_flag
int32
DL
キューがアクティブであることを示すブール・フラグ。
q_attached_flag
int32
DL
キューがアタッチされていることを示すブール・フラグ。
q_owner_pid
int32
DL
キュー所有者のプロセスID (PID)。Windows NTシステムでは、スレッド識別子が戻されます。

引数

表2-134 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
QUEUE_SERVER
PAMS__QUEUE_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LIST_ALL_Q_RESP
MSG_TYPE_LIST_ALL_Q_RESP

関連項目

LIST_ALL_Q_REQ

 


LOCATE_Q_REP

pams_locate_q関数は、キュー名のキュー・アドレスをリクエストします。この関数が非同期で実行されると、結果はLOCATE_Q_REPメッセージ内に戻されます。このメッセージには、検索リスト内の名前が見つかった場所、操作のステータス、ユーザーが設定できるタグ、および名前に関連付けられているキュー・アドレスが示されます。

注意: このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _LOCATE_Q_REP { int32 version;
int32 search_loc; q_address object_handle; int32 status;
int32 trans_id; char q_name [256];
} LOCATE_Q_REP;

メッセージ・データ・フィールド

表2-135 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
フォーマット・バージョン番号。
search_loc
int32
DL
名前が見つかった場所。
object_handle
q_address
DL
名前と関連付けられたキュー・アドレス。
status
int32
DL
pams_locate_qからの戻りコード。
trans_id
int32
DL
ユーザー指定のタグ。
q_name
256文字配列
A(256)
場所の名前。

引数

表2-136 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
Oracle MessageQにより指定
Oracle MessageQにより指定
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
PAMS
MSG_CLAS_PAMS
タイプ
LOCATE_Q_REP
MSG_TYPE_LOCATE_Q_REP

 


MRS_ACK

MRS_ACKメッセージは、非ブロック・リクエストが発行された場合に、配信インタレスト・ポイントでリカバリ可能メッセージの配信を確認します。配信モードがPDEL_MODE_AK_DQF、PDEL_MODE_AK_SAFまたはPDEL_MODE_AK_CONFに指定されている場合、pams_put_msgリクエストに応答します。送信操作のステータス・コードは、PAMSステータス・ブロック(PSB)と、リカバリ可能メッセージが読み取られたときにpams_get_msg、pams_get_msgaおよびpams_get_msgw関数に戻される引数値から抽出されます。psbおよびuma引数のステータス・コードは、この説明のステータス・コードの項で示されています。

注意: このメッセージはRISCアラインされています。

C メッセージ構造

ありません。

メッセージ・データ・フィールド

ありません。

引数

表2-137 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
送信側プログラム
送信側プログラム
ソース
MRS_SERVER
PAMS__MRS_SERVER
クラス
MRS
MSG_CLAS_MRS
タイプ
MRS_ACK
MSG_TYPE_MRS_ACK

ステータス・コード

表2-138 ステータス・コード
メッセージ
PSBステータス
PAMS__DQF_DEVICE_FAIL
メッセージをリカバリできません。宛先キュー・ファイル(DQF) I/Oが失敗しました。
PAMS__ENQUEUED
メッセージはリカバリ可能です。
PAMS__MRS_RES_EXH
メッセージをリカバリできません。MRSリソースが不足しています。
PAMS__NO_DQF
メッセージをリカバリできません。ターゲット・キューのDQFがありません。
PAMS__NO_SAF
メッセージをリカバリできません。ターゲット・キューのSAFファイルがありません。
PAMS__SAF_DEVICE_FAIL
メッセージをリカバリできません。SAF I/Oが失敗しました。
PAMS__SAF_FORCED
先入れ/先出し(FIFO)の順序を維持するために、メッセージはSAFファイルに書き込まれています。
PAMS__SENDER_TMOEXPIRED
MRSアクションが完了する前に送信タイムアウトの期限が切れました。
PAMS__STORED
メッセージはストア・アンド・フォワード(SAF)ファイル内でリカバリ可能です。(配信モードは、
PDEL_MODE_AK_SAFでした。)

UMAステータス

表2-139 UMAステータス
メッセージ
UMAステータス
PAMS__DISC_SUCCESS
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。メッセージが破棄されました。
PAMS__DISC_FAILED
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。メッセージを破棄できませんでした。
PAMS__DISCL_SUCCESS
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害がログに記録された後にメッセージが破棄されました。
PAMS__DISCL_FAILED
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DISCでした。リカバリ能力の障害をログに記録できなかったか、メッセージを破棄できませんでした。
PAMS__DLJ_SUCCESS
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。メッセージが使用不要のレター・ジャーナル(DLJ)に書き込まれました。
PAMS__DLJ_FAILED
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLJでした。使用不能のレター・ジャーナルの書込みが失敗しました。
PAMS__DLQ_SUCCESS
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージが配信不能キューにキューイングされました。
PAMS__DLQ_FAILED
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_DLQでした。メッセージが配信不能キューにキューイングできませんでした。
PAMS__NO_UMA
メッセージはリカバリ可能です。配信不可メッセージ・アクション(UMA)は実行されませんでした。
PAMS__RTS_SUCCESS
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージが送信元に戻されました。
PAMS__RTS_FAILED
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_RTSでした。メッセージを送信元に戻すことができませんでした。
PAMS__SAF_SUCCESS
メッセージをDQF内でリカバリできません。UMAはPDEL_UMA_SAFでした。メッセージはSAFファイルからリカバリ可能です。
PAMS__SAF_FAILED
メッセージをDQF内でリカバリできません。UMA was PDEL_UMA_SAFでした。SAFの書込みが失敗しました。

 


MRS_JRN_DISABLE

実行中のメッセージ・キューイング・グループのジャーナリングを無効化します。このサービスは、補助ジャーナルにフェイルオーバーする前にジャーナリングを無効化するために使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

/******************************************/
/* STATUS VALUES FOR JRN_ENABLE message	*/
/******************************************/
#define JRN_SET_ERROR 0
#define JRN_SET_SUCCESS 1
#define JRN_SET_REFUSED 2
#define JRN_SET_ALREADY_DISABLED 3
#define JRN_SET_ALREADY_ENABLED 4
#define JRN_SET_SERVER_NOTUP 5
typedef struct _MRS_JRN_SET_ALL { int32 version;
int32 dqf_status; int32 saf_status; int32 pcj_status; int32 dlj_status;
} MRS_JRN_SET_ALL;

メッセージ・データ・フィールド

表2-140 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
フォーマット・バージョン番号。0である必要があります。
dqf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
saf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
pcj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
5 =サーバー使用不可
dlj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
5 =サーバー使用不可

引数

表2-141 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
MRS_SERVER
PAMS__MRS_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
MRS
MSG_CLAS_MRS
タイプ
MRS_JRN_DISABLE
MSG_TYPE_MRS_JRN_DISABLE

関連項目

 


MRS_JRN_DISABLE_REP

アプリケーションでは、MRSサーバーにMRS_JRN_DISABLEメッセージを送信することによって、実行中のメッセージ・キューイング・グループのジャーナリングの無効化をリクエストできます。MRS_JRN_DISABLE_REPメッセージは、リクエストのステータスを戻します。このサービスは、補助ジャーナルにフェイルオーバーする前に使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

/******************************************/
/* STATUS VALUES FOR JRN_ENABLE message	*/
/******************************************/
#define JRN_SET_ERROR 0
#define JRN_SET_SUCCESS 1
#define JRN_SET_REFUSED 2
#define JRN_SET_ALREADY_DISABLED 3
#define JRN_SET_ALREADY_ENABLED 4
#define JRN_SET_SERVER_NOTUP 5
typedef struct _MRS_JRN_SET_ALL { int32 version;
int32 dqf_status; int32 saf_status; int32 pcj_status; int32 dlj_status;
} MRS_JRN_SET_ALL;

メッセージ・データ・フィールド

表2-142 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
フォーマット・バージョン番号。0である必要があります。
dqf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
saf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
pcj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
5 =サーバー使用不可
dlj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
3 =無効化済
5 =サーバー使用不可

引数

表2-143 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
MRS_SERVER
PAMS__MRS_SERVER
クラス
MRS
MSG_CLAS_MRS
タイプ
MRS_JRN_DISABLE_REP
MSG_TYPE_MRS_JRN_ DISABLE_REP

関連項目

 


MRS_JRN_ENABLE

実行中のメッセージ・キューイング・グループのジャーナリングが無効化された後に、MRS_JRN_DISABLEを使用してこれを有効化します。このサービスは、補助ジャーナルにフェイルオーバーする前に使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

/******************************************/
/* STATUS VALUES FOR JRN_ENABLE message	*/
/******************************************/
#define JRN_SET_ERROR 0
#define JRN_SET_SUCCESS 1
#define JRN_SET_REFUSED 2
#define JRN_SET_ALREADY_DISABLED 3
#define JRN_SET_ALREADY_ENABLED 4
#define JRN_SET_SERVER_NOTUP 5
typedef struct _MRS_JRN_SET_ALL { int32 version;
int32 dqf_status; int32 saf_status; int32 pcj_status; int32 dlj_status;
} MRS_JRN_SET_ALL;

メッセージ・データ・フィールド

表2-144 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
フォーマット・バージョン番号。0である必要があります。
dqf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
saf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
pcj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
5 =サーバー使用不可
dlj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
5 =サーバー使用不可

引数

表2-145 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
MRS_SERVER
PAMS__MRS_SERVER
ソース
Oracle MessageQにより指定
Oracle MessageQにより指定
クラス
MRS
MSG_CLAS_MRS
タイプ
MRS_JRN_ENABLE
MSG_TYPE_MRS_JRN_ENABLE

関連項目

 


MRS_JRN_ENABLE_REP

アプリケーションでは、実行中のメッセージ・キューイング・グループのジャーナリングが無効化された後、MRSサーバーにMRS_JRN_ENABLEを送信することによって、再有効化をリクエストできます。MRS_JRN_ENABLE_REPメッセージは、リクエストのステータスを戻します。このサービスは、補助ジャーナルにフェイルオーバーする前にMRSとともに使用されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「PCJファイルへのジャーナリングの制御」のトピックを参照してください。このサービスは、OpenVMSシステムでのみ使用可能です。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、MRSサーバーではエンディアン変換を実行しません。送信元プログラムがメッセージをターゲット・システムのエンディアン形式に変換して、メッセージ・データが正しく解釈されるようにする必要があります。このメッセージはRISCアラインされています。

C メッセージ構造

/******************************************/
/* STATUS VALUES FOR JRN_ENABLE message	*/
/******************************************/
#define JRN_SET_ERROR 0
#define JRN_SET_SUCCESS 1
#define JRN_SET_REFUSED 2
#define JRN_SET_ALREADY_DISABLED 3
#define JRN_SET_ALREADY_ENABLED 4
#define JRN_SET_SERVER_NOTUP 5
typedef struct _MRS_JRN_SET_ALL { int32 version;
int32 dqf_status; int32 saf_status; int32 pcj_status; int32 dlj_status;
};
typedef struct MRS_JRN_SET_ALL;

メッセージ・データ・フィールド

表2-146 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
フォーマット・バージョン番号。0である必要があります。
dqf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
saf_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
pcj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
5 =サーバー使用不可
dlj_status
int32
DL
0 = エラー
1 = 成功
2 =拒否
4 = 有効化済
5 =サーバー使用不可

引数

表2-147 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
MRS_SERVER
PAMS__MRS_SERVER
クラス
MRS
MSG_CLAS_MRS
タイプ
MRS_JRN_ENABLE_REP
MSG_TYPE_MRS_JRN_ENABLE_REP

関連項目

 


Q_UPDATE

アプリケーションは、ENABLE_Q_NOTIFY_REQメッセージを送信することで、ローカルおよびリモートのグループのキューのステータスが変化したときの通知を受信するように登録できます。ENABLE_Q_NOTIFY_RESPメッセージは、すべてのアクティブなキューのリストを配信し、その後にQ_UPDATEメッセージを使用してアタッチ、デタッチ、またアクティブおよび非アクティブへのステータス変更をアプリケーションに通知します。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「アタッチメント通知の受信」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、キュー・サーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

#define MAX_NUMBER_Q_RECS 50 typedef struct _Q_NOTIFY_RESP {
int32 version; int32 user_tag; int32 status_code;
int32 last_block_flag; int32 number_q_recs; struct	{
q_address q_num; q_address q_owner; int32	q_type;
int32	q_active_flag; int32	q_attached_flag; int32	q_owner_pid;
} q_rec [50];
} Q_NOTIFY_RESP;

メッセージ・データ・フィールド

表2-148 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
レスポンスのバージョン。
user_tag
int32
DL
リクエストのユーザー指定コード。
status_code
int32
DL
0=エラー 1=成功 2=拒否
last_block_flag
int32
DL
最終ブロック・ブール・フラグ。
number_q_recs
int32
DL
このメッセージ内のレコード数。
q_num
q_address
DL
キュー番号。
q_owner
q_address
DL
キュー所有者(セカンダリ・キュー(SQ)のみ)。
q_type
int32
DL
キュー・タイプ(数値エンコードされたP、S、M)。
q_active_flag
int32
DL
キューがアクティブであることを示すブール・フラグ。
q_attached_flag
int32
DL
キューがアタッチされていることを示すブール・フラグ。
q_owner_pid
int32
DL
キュー所有者のプロセスID (PID)。

引数

表2-149 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
QUEUE_SERVER
PAMS__QUEUE_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
Q_UPDATE
MSG_TYPE_Q_UPDATE

関連項目

 


SBS_DEREGISTER_REQ

MOTおよび配信キューの完全一致によって、または登録IDによって、SBS登録解除をリクエストします。このサービスは、SBS_DEREGサービスのかわりに使用されます。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _SBS_DEREGISTER_REQ { int32 version;
int32 user_tag; int32 mot;
q_address distribution_q; int32 reg_id;
int32 req_ack;
} SBS_DEREGISTER_REQ;

メッセージ・データ・フィールド

表2-150 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのフォーマット・バージョン番号。40である必要があります。
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。
mot
int32
DL
プログラムが登録を解除するMOTブロードキャスト・ストリーム。未使用の場合は0。
distribution_q
q_address
DW、DW
登録の配信キューのOracle MessageQアドレス。キュー・アドレスのグループ番号部分のゼロは、自動的に送信元のグループ番号と置き換えられます。
reg_id
int32
DL
登録解除する登録リクエストのID。未使用の場合は0。
req_ack
int32
DL
登録確認応答メッセージが必要な場合は1、それ以外は0。

引数

表2-151 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
SBS_SERVER
PAMS__SBS_SERVER
ソース
リクエスタのソース・キュー・アドレス。
リクエスタのソース・キュー・アドレス。
クラス
PAMS
MSG_CLAS_PAMS
タイプ
SBS_DEREGISTER_REQ
MSG_TYPE_SBS_ DEREGISTER_REQ

関連項目

 


SBS_DEREGISTER_RESP

このレスポンス・メッセージは、指定されたMOTキューおよび配信キューに一致するすべてのエントリのSBSサーバー登録解除を確認します。

このサービスは、SBS_DEREG_ACKサービスのかわりに使用されます。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _SBS_DEREGISTER_RESP { int32 version;
int32 status; int32 user_tag; int32 number_reg;
} SBS_DEREGISTER_RESP;

メッセージ・データ・フィールド

表2-152 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのフォーマット・バージョン番号。40である必要があります。
status
int32
DL
戻されるステータス・コード。有効なコード: PSYM_SBS_SUCCESS = 成功 PSYM_SBS_BADPARAM = 不正なパラメータ PSYM_SBS_NOMATCH = 一致なし
user_tag
int32
DL
リクエスト・メッセージのユーザー指定コード。
number_reg
int32
DL
このMOTまたはターゲットに残っている登録元の数。

引数

表2-153 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラム
リクエスト元プログラム
ソース
SBS_SERVER
PAMS__SBS_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
SBS_DEREGISTER_RESP
MSG_TYPE_SBS_ DEREGISTER_RESP

関連項目

 


SBS_REGISTER_REQ

このリクエスト・メッセージは、ブロードキャスト・メッセージの受信の登録をリクエストします。これは、配信キューに配信されるメッセージが満たす必要がある、0から255個の配信ルールを指定できます。

このサービスは、SBS_REGおよびSBS_REG_EZサービスのかわりに使用されます。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _SBS_REGISTER_HEAD { int32 version;
int32 user_tag; int32 mot;
q_address distribution_q; int32 req_ack;
int32 seq_gap_notify; int32 auto_dereg; int32 rule_count; int32 rule_conjunct;
} SBS_REGISTER_HEAD;
typedef struct _SBS_REGISTER_RULE { int32 offset;
int32 data_operator; int32 length;
int32 operand;
} SBS_REGISTER_RULE;
#define MAX_SEL_RULES 256
typedef struct _SBS_REGISTER_REQ { SBS_REGISTER_HEAD head; SBS_REGISTER_RULE rule [256];
} SBS_REGISTER_REQ;

メッセージ・データ・フィールド

表2-154 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのフォーマット・バージョン番号。40である必要があります。
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。
mot
int32
DL
プログラムが登録を試行するMOTブロードキャスト・ストリーム。
distribution_q
q_address
DW、DW
ブロードキャスト・ストリームから選択されたすべてのメッセージを受信するOracle MessageQアドレス。
キュー・アドレスのグループ番号部分のゼロは、自動的に送信元のグループ番号と置き換えられます。
req_ack
int32
DL
登録確認応答メッセージが必要な場合は1、それ以外は0。
seq_gap_notify
int32
DL
ブロードキャスト・ストリームのシーケンス欠陥通知が必要な場合は1、それ以外は0。
auto_dereg
int32
DL
配信キューをデタッチするときに登録リクエストをパージする必要がある場合は1、それ以外は0。
rule_count
int32
DL
リクエスト内の配信ルールの数(0から255)。
rule_conjunct
int32
DL
有効値は次のとおりです。
PSEL_ALL_RULES 配信を正常に実行するにはすべてのルールが真である必要がある場合。
PSEL_ANY_RULE いずれかのルールが真であれば配信がトリガーされる場合。
*次の項目は、rule_count回繰り返されます*
data_offset
int32
DL
有効値: PSEL_TYPE PSEL_CLAS
SDMタグID
0からMAX_MSG_SIZEの範囲の整数で、データ内のオフセットを指定
rule_count
int32
DL
リクエスト内の配信ルールの数(0から255)。

引数

表2-155 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
SBS_SERVER
PAMS__SBS_SERVER
ソース
リクエスト元プログラム
リクエスト元プログラム
クラス
PAMS
MSG_CLAS_PAMS
タイプ
SBS_REGISTER_REQ
MSG_TYPE_SBS_REGISTER_REQ

関連項目

 


SBS_REGISTER_RESP

このメッセージには、SBS_REGISTER_REQサブスクライバ登録に対するレスポンスが示されます。このレスポンスには、ステータス・フィールドが含まれます(成功時は1)。このメッセージには、リクエスト・メッセージで指定されたユーザー・タグ、登録IDおよびMOTアドレスの登録済エントリ数も含まれます。

このサービスは、SBS_REG_REPLYおよびSBS_REG_EZ_REPLYサービスのかわりに使用されます。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _SBS_REGISTER_RESP { int32 version;
int32 user_tag; int32 status; int32 reg_id; int32 number_reg;
} SBS_REGISTER_RESP;

メッセージ・データ・フィールド

表2-156 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのフォーマット・バージョン番号。40である必要があります。
user_tag
int32
DL
リクエスト・メッセージのユーザー指定コード。
status
int32
DL
戻されるステータス・コード。有効なコード: PSYM_SBS_SUCCESS = 成功 PSYM_SBS_BADPARAM = 不正なパラメータ PSYM_SBS_RESRCFAIL = リソースの割当てに失敗
reg_id
int32
DL
戻された登録ID。
number_reg
int32
DL
このMOTまたはターゲットに現在登録されているエントリの数。

引数

表2-157 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
登録元のソース
登録元のソース
ソース
SBS_SERVER
PAMS__SBS_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
SBS_SEQUENCE_RESP
MSG_TYPE_SBS_SEQUENCE_ RESP

関連項目

 


SBS_STATUS_REQ

SBSサーバーは、メッセージベースのステータス・リクエストをサポートします。このリクエストは、サーバーで使用されている各MOTの現在の状態の詳細を取得でき、同様にSBSサーバーを実行している他のOracle MessageQグループとのアクティビティも取得できます。

このリクエスト・メッセージは、メッセージ・クラスPAMSおよびメッセージ・タイプSBS_STATUS_REQで、SBS_SERVERをターゲットにします。メッセージを受信すると、SBSサーバーはリクエストを検証します。リクエストが正しくない場合、レスポンス・メッセージにはエラー・ステータスが含まれます。SBSサーバーは、SBS_STATUS_RESPタイプの応答メッセージで応答します。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが送信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _SBS_STATUS_REQ { int32 version;
int32 user_tag; int32 start_mot; int32 end_mot; int32 reset;
} SBS_STATUS_REQ;

メッセージ・データ・フィールド

表2-158 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのフォーマット・バージョン番号。40である必要があります。
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。
start_mot
int32
DL
統計を必要とする最も低いMOT。
end_mot
int32
DL
統計を必要とする最も高いMOT。
reset
int32
DL
0: 応答メッセージの構成後にリモート・サーバー・データのカウンタをリセットしません。
1: 応答メッセージの構成後にリモート・サーバー・データのカウンタをリセットします。

引数

表2-159 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
SBS_SERVER
PAMS__SBS_SERVER
ソース
リクエスト元プログラムのプライマリ・キューまたは応答キュー
リクエスト元プログラムのプライマリ・キューまたは応答キュー
クラス
PAMS
MSG_CLAS_PAMS
タイプ
SBS_STATUS_REQ
MSG_TYPE_SBS_STATUS_REQ

関連項目

 


SBS_STATUS_RESP

このメッセージは、SBS_STATUS_REQリクエスト・メッセージの処理が成功した後に戻されます。可変形式メッセージであり、固定長部分の任意の数で構成されます。メッセージを解析するために、各可変長セクションにはカウントがあります。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、SBSサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _SBS_STATUS_RESP { int32 version;
int32 user_tag; int32 status; int32 num_rec; int32 last_block; char data [31980];
} SBS_STATUS_RESP;
typedef struct _SBS_STATUS_RESP_MOT { int32 mot;
union	{ struct	{
union	{ struct	{
char s_b1; char s_b2; char s_b3; char s_b4;
} S_un_b; struct	{
uint16 s_w1; uint16 s_w2;
} S_un_w; uint32 S_addr;
} inet_addr; uint16 inet_port;
} udp; struct	{
char mca_addr [12];
char protocol [4];
} eth; struct {
char unused [20];
} dmq;
int32 filler [5];
} transport;
int32 heartbeat_timer; int32 xmit_silo;
int32 rcv_silo; int32 rcv_silo_max; int32 num_reg;
int32 complete_rcvd; int32 complete_bytes; int32 seq_gaps;
int32 whole_msg_gaps; int32 whole_silo_gap; struct  {
char device_name [16]; struct	{
uint32 tv_sec; uint32 tv_usec;
} fail_tod; int32 msgs_sent; int32 bytes_sent; int32 pkts_sent; int32 pkts_rcvd;
int32 dupl_pkts_disc;
} rail [2];
} SBS_STATUS_RESP_MOT;
typedef struct _SBS_STATUS_REP_REG_Q { q_address reg_q;
} SBS STATUS REP REG Q;
typedef struct _SBS_STATUS_REP_NUM_GROUPS { int32 num_groups;
} SBS_STATUS_REP_NUM_GROUPS;
typedef struct _SBS_STATUS_RESP_GROUP { int32 group;
int32 rexmit_reqs_to_remote; int32 rexmit_sat_by_remote; int32 late_rexmit;
int32 rexmit_reqs_from_remote; int32 rexmit_sat_by_local;
} SBS_STATUS_RESP_GROUP;

メッセージ・データ・フィールド

表2-160 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
version
int32
DL
メッセージのフォーマット・バージョン番号。40である必要があります。
user_tag
int32
DL
リクエストを識別するユーザー指定のコード。
ステータス
int32
DL
戻されるステータス・コード。有効なコードは次のとおりです。
PSYM_SBS_SUCCESS = 成功 PSYM_SBS_BADPARAM = 不正なパラメータ PSYM_SBS_NOMATCH = 一致なし
num_rec
int32
DL
このメッセージでレポートされるMOTの番号。
last_block
int32
DL
これが最後のメッセージである場合は1、それ以外は0。
*以降のメッセージは、ローカルSBSサーバー・データごとにnum_rec回(最大50レコード)繰り返されます。
mot
int32
DL
統計がレポートされているMOT。
transport
 
A(20)
MOTに関連付けられたトランスポート固有アドレス情報。形式は、参照するトランスポートのタイプによって異なります。
heartbeat_timer
int32
DL
ハートビート・タイマー設定。
xmit_silo
int32
DL
送信サイロのサイズ(MAB)。
rcv_silo
int32
DL
受信サイロのサイズ(MAB)。
rcv_silo_max
int32
DL
受信サイロの最大占有量(MAB)。
num_reg
int32
DL
このMOTの登録元の数。
complete_rcvd
int32
DL
受信した完了メッセージ数。
complete_bytes
int32
DL
complete_rcvdメッセージに含まれているバイト数。
seq_gaps
int32
DL
このMOTでレポートされたシーケンス欠陥の総数。
whole_msg_gaps
int32
DL
初期に喪失し、検出された完了メッセージ数。
whole_silo_gap
int32
DL
サイロ全体のフラッシュの原因となったシーケンス欠陥の回数。
*トランスポート・レール情報は2回繰り返されます*
device_name
char
A(16)
最適化されたデバイス・アドレス。
fail_tod
 
DL(2)
シャットダウン・タイムスタンプ(秒単位)。
msgs_sent
int32
DL
このレールで送信されたメッセージ数。
bytes_sent
int32
DL
このレールで送信されたバイト数。
pkts_sent
int32
DL
このレールで送信されたパケット数。
pkts_rcvd
int32
DL
このレールで受信されたパケット数。
dupl_pkts_disc
int32
DL
このレールから破棄された重複パケット数。
*登録元データ: num_reg回繰り返されます*
reg_q
q_address
DW、DW
登録元のキュー・アドレス。
*登録元データの終わり*
num_groups
int32
DL
ローカルSBSサーバーと通信しているリモートSBSサーバーの数。
*リモートSBSサーバー・データ: 次のフィールドはnum_groups回繰り返されます*
group
int32
DL
リモートSBSサーバーのグループ番号。
rexmit_reqs_to_ remote
int32
DL
ローカルSBSサーバーからリモートSBSサーバーへの再送信リクエスト数。
rexmit_sat_by_ remote
int32
DL
リモートSBSサーバーが処理した再送信リクエスト数。
late_rexmit
int32
DL
受信が遅かったためにシーケンス欠陥を防ぐことができなかった再送信リクエスト数。
rexmit_reqs_ from_remote
int32
DL
リモートSBSサーバーからの再送信リクエスト数。
rexmit_sat_by
_local
int32
DL
ローカルSBSサーバーがリモートSBSサーバーに対して処理した再送信リクエスト数。
*リモート・サーバー・データの終わり*

引数

表2-161 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
リクエスト元プログラムのプライマリ・キューまたは応答キュー
リクエスト元プログラムのプライマリ・キューまたは応答キュー
ソース
SBS_SERVER
PAMS__SBS_SERVER
タイプ
SBS_STATUS_RESP
MSG_TYPE_SBS_STATUS_RESP

関連項目

 


TIMER_EXPIRED

TIMER_EXPIREDは、pams_set_timer関数に対するレスポンス・メッセージです。このメッセージは、プログラムのプライマリ・キューに関連付けられているタイマー・キューに送信されます。pams_set_timer関数の呼出しごとに、タイマーが期限切れになるとき、TIMER_EXPIREDタイプのメッセージが1つ生成されます。

注意: このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _TIMER_EXPIRED { int32 timer_id;
char reserved [20];
} TIMER_EXPIRED;

メッセージ・データ・フィールド

表2-162 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
timer_id
int32
DL
pams_set_timer呼出しで指定されたタイマーID。
予約済
20バイト配列
A(20)
Oracle MessageQ用に予約されています。

引数

表2-163 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
プライマリ・キュー
プライマリ・キュー
ソース
TIMER_QUEUE
PAMS__TIMER_QUEUE
クラス
PAMS
MSG_CLAS_PAMS
タイプ
TIMER_EXPIRED
MSG_TYPE_TIMER_EXPIRED

 


UNAVAIL

アプリケーションは、AVAIL_REGメッセージをAvailサーバーに送信することで、ローカルおよびリモートのグループのキューがアクティブまたは非アクティブになったときに通知を受信するように登録します。選択されたグループのキューが非アクティブになると、UNAVAIL通知メッセージが登録済アプリケーションに送信されます。このメッセージの使用方法の説明は、「メッセージベース・サービスの使用」の項の「キューのステータスの取得」のトピックを参照してください。

注意: 異なるハードウェア・データ・フォーマットを使用するシステム上で実行されているプロセス間で、このメッセージが受信された場合に、Availサーバーではエンディアン変換を実行します。また、このメッセージはRISCアラインされています。

C メッセージ構造

typedef struct _UNAVAIL { q_address target_q;
} UNAVAIL;

メッセージ・データ・フィールド

表2-164 メッセージ・データ・フィールド
フィールド
データ型
スクリプト書式
説明
target_q
q_address
DL
使用不可能なキューのアドレス。

引数

表2-165 引数
引数
スクリプト書式
pams_get_msg形式
ターゲット
AVAIL_REGにより指定
AVAIL_REGにより指定
ソース
AVAIL_SERVER
AVAIL_SERVER
クラス
PAMS
MSG_CLAS_PAMS
タイプ
UNAVAIL
MSG_TYPE_UNAVAIL

関連項目


  先頭に戻る       前  次