BEA Logo BEA Tuxedo Release 8.0

  BEA ホーム  |  イベント  |  ソリューション  |  パートナ  |  製品  |  サービス  |  ダウンロード  |  ディベロッパ・センタ  |  WebSUPPORT

 

   Tuxedo ホーム   |   サンプルを使用した BEA Tuxedo アプリケーションの開発方法   |   先頭へ   |   前へ   |   次へ   |   目次

 


ステップ 2: クライアント・プログラムの検証およびコンパイル

クライアント・プログラムの検証

ATMI クライアント・プログラムのソース・コードの内容を確認します。

$ more simpcl.c

以下に出力結果を示します。

simpcl.c のソース・コード

1     #include <stdio.h>         
2 #include "atmi.h" /* TUXEDO */
3
4
5
6
7 #ifdef __STDC__
8 main(int argc, char *argv[])
9
10 #else
11
12 main(argc, argv)
13 int argc;
14 char *argv[];
15 #endif
16
17 {
18
19 char *sendbuf, *rcvbuf;
20 int sendlen, rcvlen;
21 int ret;
22
23 if(argc != 2) {
24 fprintf(stderr, "Usage:simpcl string\n");
25 exit(1);
26 }
27 /* クライアント・プロセスとして BEA TUXEDO にアタッチします。 */
28 if (tpinit((TPINIT *) NULL) == -1) {
29 fprintf(stderr, "Tpinit failed\n");
30 exit(1);
31 }
32 sendlen = strlen(argv[1]);
33 if((sendbuf = (char *)tpalloc("STRING", NULL, sendlen+1))== NULL){
34 fprintf(stderr,"Error allocating send buffer\n");
35 tpterm();
36 exit(1);
37 }
38 if((rcvbuf = (char *)tpalloc("STRING", NULL, sendlen+1))== NULL){
39 fprintf(stderr,"Error allocating receive buffer\n");
40 tpfree(sendbuf);
41 tpterm();
42 exit(1);
43 }
44 strcpy(sendbuf, argv[1]);
45 ret = tpcall("TOUPPER", sendbuf, NULL, &rcvbuf, &rcvlen, 0);
46 if(ret == -1) {
47 fprintf(stderr, "Can't send request to service TOUPPER\n");
48 fprintf(stderr, "Tperrno = %d, %s\n", tperrno,
49 tmemsgs[tperrno]);
50 tpfree(sendbuf);
51 tpfree(rcvbuf);
52 tpterm();
53 exit(1);
54 }
55 printf("Returned string is:%s\n", rcvbuf);
56
57 /* バッファを解放し、BEA TUXEDO からのアタッチを解除します。*/
58 tpfree(sendbuf);
59 tpfree(rcvbuf);
60 tpterm();
61 }

simpcl.c ソース・コードでの重要なコード行 

行数

ファイル/関数

目的

2

atmi.h

BEA Tuxedo の ATMI 関数を使用する場合に、常に必要となるヘッダ・ファイル。

28

tpinit()

クライアント・プログラムがアプリケーションに参加する際に使用される ATMI 関数。

33

tpalloc()

型付きバッファの割り当てに使用される ATMI 関数です。STRING は、BEA Tuxedo の 5 つの基本的なバッファ型のいずれかになります。NULL は、サブタイプの引数がないことを示します。最後の引数 sendlen + 1 は、バッファの長さを指定します。文字列の終わりを示す NULL 文字用に 1 が加えられています。

38

tpalloc()

応答メッセージに別のバッファを割り当てます。

45

tpcall()

最初の引数に指定された TOUPPER サービスにメッセージ・バッファを送信します。また、応答バッファのアドレスも指定します。tpcall() はメッセージが返されるまで待機します。

35、41、52、60

tpterm()

アプリケーションを終了するための ATMI 関数。tpterm() は、エラー条件の発生により終了する (36、42、53 行目) 前に、アプリケーションを終了する場合に使用します。tpterm() への最終呼び出し (60 行目) は、メッセージが出力された後に行われます。

40、50、51、58、59

tpfree()

バッファの割り当てを解放します。tpfree() は、tpalloc() とは反対の処理を行います。

55

printf()

プログラムの正常終了を示します。サーバから返されたメッセージを出力します。


 

クライアント・プログラムのコンパイル

  1. buildclient を実行して、クライアント・プログラムをコンパイルします。
        buildclient -o simpcl -f simpcl.c

    simpcl は出力ファイル、simpcl.c は入力ソース・ファイルです。

  2. 結果を確認します。
    $ ls -l
    total 97
    -rwxr-x--x 1 usrid grpid 313091 May 28 15:41 simpcl
    -rw-r----- 1 usrid grpid 1064 May 28 07:51 simpcl.c
    -rw-r----- 1 usrid grpid 275 May 28 08:57 simpserv.c
    -rw-r----- 1 usrid grpid 392 May 28 07:51 ubbsimple

    simpcl という実行可能モジュールが作成されました。simpcl ファイルのサイズは一定ではありません。

関連項目

 

先頭へ戻る 前のトピックへ 次のトピックへ