|
|
|
|
|
クライアント・プロセスの例
次の疑似コードは、通常のクライアント・プロセスがアプリケーションに参加してから分離するまでの処理を示しています。
クライアント・プロセスのパラダイム
main()
{
セキュリティ・レベルをチェック
tpsetunsol() を呼び出して TPU_DIP 用にハンドラを命名
usrname, cltname を取得
アプリケーション・パスワードの入力を要求
TPINIT バッファを割り当て
TPINIT バッファ構造体メンバに値を格納
if (tpinit((TPINIT *) tpinfo) == -1){
エラー・ルーチン;
}
ユーザ入力が存在する間に
メッセージ・バッファを割り当て {
ユーザ入力をバッファに格納
サービス呼び出しを行う
応答を受信
任意通知型メッセージを確認
}
バッファを開放
. . .
if (tpterm() == -1) {
エラー・ルーチン;
}
}
エラーが発生すると -1 が返され、アプリケーションが外部グローバル変数 tperrno にエラーの原因を示す値を設定します。tperrno は、atmi.h ヘッダ・ファイルに定義されています。詳細については、『ファイル形式、データ記述方法、MIB、およびシステム・プロセスのリファレンス』の tperrno(5) を参照してください。通常、プログラマが発生したエラーの種類を示すエラー コードをこのグローバル変数に設定します。tperrno の値については 「システム・エラー」 を参照してください。各 ATMI 呼び出しで返される全エラー・コードのリストについては、『BEA Tuxedo C リファレンス』 の 「C 言語アプリケーション・トランザクション・モニタ・インターフェイスについて」を参照してください。
次の例は、tpinit() と tpterm() 関数の使用方法を示しています。このコード例は、BEA Tuxedo ソフトウェアに提供されている銀行業務のサンプル・アプリケーション bankapp から引用したものです。
アプリケーションへの参加と分離
#include <stdio.h> /* UNIX */
#include <string.h> /* UNIX */
#include <fml.h> /* BEA Tuxedo システム */
#include <atmi.h> /* BEA Tuxedo システム */
#include <Uunix.h> /* BEA Tuxedo システム */
#include <userlog.h> /* BEA Tuxedo システム */
#include "bank.h" /* 銀行業務アプリケーションのマクロ定義 */
#include "aud.h" /* 銀行業務アプリケーションの VIEW 定義 */
...
main(argc, argv)
int argc;
char *argv[];
{
...
if (strrchr(argv[0],'/') != NULL)
proc_name = strrchr(argv[0],'/')+1;
else
proc_name = argv[0];
...
/* アプリケーションへの参加 */
if (tpinit((TPINIT *) NULL) == -1) {
(void)userlog("%s:failed to join application\n", proc_name);
exit(1);
}
...
/* アプリケーションからの分離 */
if (tpterm() == -1) {
(void)userlog("%s:failed to leave application\n", proc_name);
exit(1);
}
}
この例は、tpinit() を呼び出すことによって、アプリケーションに参加しているクライアント・プロセスを示しています。エラー (戻り値が -1) が発生すると、このプロセスは C プログラム文の printf() と似た引数を取る userlog() を呼び出して、中央イベント・ログにメッセージを書き込みます。詳細については、『BEA Tuxedo C リファレンス』 の userlog(3c) を参照してください。
同様に、tpterm() を呼び出し、エラーが発生すると、このプロセスは中央イベント・ログにメッセージを書き込みます。
|
|
|
|
|
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|