付録B.4 MHPサービス関数のコーディング例
ユーザアプリケーションプログラムの作成例の変更一覧を示します。下線部分が変更個所です。
10 /* 20 * MHP サービス関数 30 */ 40 #include <stdio.h> 50 #include <sys/types.h> 60 #include <dcmcf.h> 70 #include <dcrpc.h> 80 90 void svrA() 100 { 110 DCLONG action ; 120 DCLONG commform ; 130 DCLONG opcd ; 140 DCLONG active ; 150 char recvdata [1024] ; 160 DCLONG rdataleng ; 170 DCLONG time ; 180 DCLONG inbufleng ; 190 int rtn_cod ; 200 DCLONG cdataleng ; 210 char termnam [10] ; 220 static char execdata [32] = " SVRA EXECAP DATA" ; 230 static char senddata [32] = " SVRA REPLY DATA1" ; 240 static char resv01 [9] = "\0" ; 250 static char resv02 [9] = "\0" ; 260 static char resv03 [9] = "\0" ; 270 static char apnam [9] = "aprepB" ; 280 290 printf("***** UAP START *****\n") ; 300 310 printf("***** MCF RECEIVE *****\n") ; 320 /* 330 * MCF- RECEIVE (メッセージの受信) 340 */ 350 action = DCMCFFRST ; 360 commform = DCNOFLAGS ; 370 inbufleng = sizeof(recvdata) ; 380 rtn_cod = dc_mcf_receive(action, commform, termnam, resv01, 390 recvdata, &rdataleng, inbufleng, &time) ; 400 if(rtn_cod != DCMCFRTN_00000) { 410 /* 420 * MCF- ROLLBACK (エラー処理) 430 */ 440 printf("dc_mcf_receive 失敗 !! CODE = %d \n", rtn_cod) ; 450 rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; 460 } 470 480 printf("***** MCF EXECAP *****\n") ; 490 /* 500 * MCF-EXECAP (アプリケーションプログラム起動) 510 */ 520 action = DCMCFEMI | DCMCFJUST ; 530 commform = DCNOFLAGS ; 540 active = 0 ; 550 cdataleng = 16 ; 560 rtn_cod = dc_mcf_execap(action, commform, resv01, active, 570 apnam, comdata, cdataleng) ; 580 if(rtn_cod != DCMCFRTN_00000) { 590 /* 600 * MCF- ROLLBACK (エラー処理) 610 */ 620 printf("dc_mcf_execap 失敗 !! CODE = %d \n", rtn_cod) ; 630 rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; 640 } 650 660 printf("***** MCF REPLY *****\n") ; 670 /* 680 * MCF-REPLY (応答メッセージの送信) 690 */ 700 action = DCMCFEMI ; 710 commform = DCNOFLAGS ; 720 opcd = DCNOFLAGS ; 730 cdataleng = 16 ; 740 rtn_cod = dc_mcf_reply(action, commform, resv01, resv02, 750 senddata, cdataleng, resv03, opcd) ; 760 if(rtn_cod != DCMCFRTN_00000) { 770 /* 780 * MCF- ROLLBACK (エラー処理) 790 */ 800 printf("dc_mcf_reply 失敗 !! CODE = %d \n", rtn_cod) ; 810 rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; 820 } 830 }