2.3 データのバッファへの格納
バッファを割り当てると、そこにデータを格納できるようになります。
次のリストでは、3つのメンバー(フィールド)を持つVIEW型バッファaudを作成しています。3つのメンバーは、コマンド行がある場合は、そこから取得される支店識別子のb_id、照会された残高を戻すbalance、およびユーザーのステータス行にメッセージを戻すermsgです。auditを使用して特定の支店の残高が照会されると、b_idメンバーの値には照会の送信先の支店識別子、balanceメンバーにはゼロ、ermsgメンバーにはNULL文字列がそれぞれ設定されます。
メッセージ・バッファへのデータの格納 - 例1のリスト
...
audv = (struct aud *)tpalloc("VIEW", "aud", sizeof(struct aud));
/* Prepare aud structure */
audv->b_id = q_branchid;
audv->balance = 0.0;
(void)strcpy(audv->ermsg, "");
...auditを使用して銀行全体の残高が照会されると、BALサーバーが呼び出されてサイトごとの残高合計が取得されます。個々のサイトで照会を行うには、代表支店識別子を指定します。代表支店IDは、配列sitelist[]に格納されます。したがって、aud構造体は、次のリストのように設定されます。
メッセージ・バッファへのデータの格納 - 例2のリスト
...
/* Prepare aud structure */
audv->b_id = sitelist[i];/* routing done on this field */
audv->balance = 0.0;
(void)strcpy(audv->ermsg, "");
...STRINGバッファにデータを格納するプロセスについては、「バッファのサイズ変更」のリストを参照してください。
関連項目
- 型付きバッファの割当て
- 型付きバッファのサイズの変更
-
『Oracle Tuxedo ATMI C関数リファレンス』の
tpalloc(3c)に関する項
親トピック: 型付きバッファの管理