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 }