7.1.1 SUPの例
SUPのコーディング例を次に示します。
10 /* 20 * SUP01 30 */ 40 #include <stdio.h> 50 #include <string.h> 60 #include <dcrpc.h> 70 #include <dctrn.h> 80 90 main() 100 { 110 /* 120 *変数の定義 130 */ 140 static char in_buf[1024]; 150 static DCLONG in_buf_len; 160 static char out_buf[1024]; 170 static DCLONG out_buf_len; 180 int rc; 190 /* 200 *RPC-OPEN(UAPの開始) 210 */ 220 rc = dc_rpc_open(DCNOFLAGS); 230 /*OpenTP1の各種関数を使う準備をする(各機能の初期化)*/ 240 if(rc != DC_OK) { 250 printf("SUP01:dc_rpc_openに失敗しました。CODE = %d \n",rc); 260 goto PROG_END; 270 } 280 /* 290 *ADM-COMPLETE(ユーザサーバの開始処理完了の報告) 300 */ 310 rc = dc_adm_complete(DCNOFLAGS); 320 if(rc != DC_OK){ 330 printf("SUP01:dc_adm_completeに失敗しました。CODE = %d \n",rc); 340 goto PROG_END; 350 } 360 /* 370 *TRN_BEGIN(トランザクションの開始) 380 */ 390 rc = dc_trn_begin(); 400 if(rc != DC_OK) { 410 printf("SUP01:dc_trn_beginに失敗しました。CODE = %d \n",rc); 420 goto TRAN_END; 430 } 440 /* 450 *RPC-CALL(遠隔サービスの要求) 460 */ 470 strcpy(in_buf,"SUP01:DATA OpenTP1!!"); 480 in_buf_len = strlen(in_buf) + 1; 490 out_buf_len = 1024; 500 rc = dc_rpc_call("spp01grp","svr01",in_buf,&in_buf_len, 510 out_buf,&out_buf_len,DCNOFLAGS); 520 if(rc != DC_OK) { 530 printf("SUP01:サービス要求に失敗しました。CODE = %d \n",rc); 540 goto TRAN_END; 550 } 560 printf("SUP01:SERVICE FUNCTION RETURN = %s\n",out_buf); 570 /* 580 *TRN-UNCHAINED-COMMIT(非連鎖モードのコミット) 590 */ 600 TRAN_END: 610 rc = dc_trn_unchained_commit(); 620 if(rc != DC_OK) { 630 printf("SUP01:dc_trn_unchained_commitに失敗しました。CODE = %d \n",rc); 640 } 650 /* 660 *RPC-CLOSE(UAPの終了) 670 */ 680 PROG_END: 690 dc_rpc_close(DCNOFLAGS); 700 printf("SUP01:処理を終了しました。\n"); 710 exit(0); 720 }