RECORDの例: COBOLコピーブック・ファイル
リスト8-1
COBOLコピーブック・ファイルの例
05 balance PIC S9(9) COMP-5.
cpy2record customer.cpyを使用して、バイナリ形式のRECORD記述ファイル
customer.Rを生成します。このRECORD記述ファイルは、
cpy2recordによってCOBOLコピーブック・ファイルから生成され、実行時にアプリケーション・プログラムで使用されます。
リスト8-2
RECORDクライアント・プログラムの例
/* declare needed program variables */
/* attach to System/T as a client process */
if (tpinit((TPINIT *) NULL) == -1) {
(void) fprintf(stderr, "Tpinit failed\n");
/* allocate memory to store the RECORD data buffer */
len = Frneeded("CUSTOMER");
pRec = (struct RECORD *)tpalloc("RECORD", "CUSTOMER", len);
/* set the value in the RECORD */
Rset(pRec, "name", "Michael", C_STRING, 0, 0);
tpcall("CUSTSVC", (char *)pRec, 0, (char **)&pRec, &len, (long)0);
/* get item from reply */
rtn = Rget(pRec, "balance", &bal, C_INT, NULL, 0);
userlog("Rget failed. %d %s\n",Ferror32, Fstrerror32(Ferror32));
userlog("The balance is %d\n", bal);
リスト8-3
RECORDサーバー・プログラムの例
void CUSTSVC(TPSVCINFO *rqst)
/* declare needed program variables */
/* retrieve RECORD buffer */
pRec = (struct RECORD *)rqst->data;
/* get data from RECORD buffer */
rtn = Rget(pRec, "name", name, C_STRING, &len, 0);
userlog("Rget failed. %d %s\n",Ferror32, Fstrerror32(Ferror32));
userlog("customer name: %s", name);
/* set data to RECORD buffer */
Rset(pRec, "balance", &balance, C_INT, 0, 0);
userlog("Rset failed. %d %s\n",Ferror32, Fstrerror32(Ferror32));
tpreturn(TPSUCCESS, 0, (char *)pRec, 0L, 0);