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バッファにデータを格納するプロセスについては、「バッファのサイズ変更」のリストを参照してください。

関連項目