分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSAS-NIF編
/* * MHP SERVICE FUNCTION */ #include <string.h> #include <stdio.h> #include <sys/types.h> #include <dcmcf.h> #include <dcrpc.h> void SVRA(void) { DCLONG action ; DCLONG commform ; DCLONG opcd ; DCLONG active ; char recvdata[1024] ; DCLONG rdataleng ; DCLONG time ; DCLONG inbufleng ; int rtn_cod ; DCLONG cdataleng ; char termnam[10] ; struct dataform { char mcfuse[8] ; char trnname[9] ; char data[23] ; } ; static struct dataform execdata ; static struct dataform senddata ; static char resv01[9] ; static char resv02[9] ; static char apnam[9] ; strncpy(execdata.mcfuse, " ", 8) ; strncpy(execdata.trnname, " ", 9) ; strcpy(execdata.data, "SRVA EXECAP DATA") ; strncpy(senddata.mcfuse, " ", 8) ; senddata.trnname[0] = 0xc1 ; /* A */ senddata.trnname[1] = 0xd7 ; /* P */ senddata.trnname[2] = 0xd3 ; /* L */ senddata.trnname[3] = 0xf0 ; /* 0 */ senddata.trnname[4] = 0xf2 ; /* 2 */ senddata.trnname[5] = 0x40 ; /* */ senddata.trnname[6] = 0x40 ; /* */ senddata.trnname[7] = 0x40 ; /* */ senddata.trnname[8] = 0x40 ; /* */ strcpy(senddata.data, "SRVA SEND DATA") ; strcpy(execdata.mcfuse, "" ) ; strcpy(resv02, "") ; strcpy(apnam, "APL01") ; /* * MCF-RECEIVE(MESSAGE RECEIVING) */ action = DCMCFFRST ; commform = DCNOFLAGS ; inbufleng = sizeof(recvdata) ; rtn_cod = dc_mcf_receive(action, commform, termnam, resv01, recvdata, &rdataleng, inbufleng, &time) ; if(rtn_cod != DCMCFRTN_00000) { /* * MCF-ROLLBACK(ERROR PROCESSING) */ rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; } /* * MCF-EXECAP(APPICATION PROGRAM BOOTING) */ action = DCMCFEMI|DCMCFJUST ; commform = DCNOFLAGS ; active = 0 ; cdataleng = 25 ; rtn_cod = dc_mcf_execap(action, commform, resv01, active, apnam, (char*)&execdata, cdataleng) ; if(rtn_cod != DCMCFRTN_00000) { /* * MCF-ROLLBACK(ERROR PROCESSING) */ rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; } /* * MCF-SEND(MESSAGE SENDING) */ action = DCMCFEMI ; commform = DCMCFOUT ; strcpy(termnam, "NFLE02"); opcd = DCNOFLAGS ; cdataleng = 25 ; rtn_cod = dc_mcf_send(action, commform, termnam, resv01, (char *)&senddata, cdataleng, resv02, opcd) ; if(rtn_cod != DCMCFRTN_00000) { /* * MCF ROLLBACK(ERROR PROCESSING) */ rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; } }
/* * MHP SERVICE FUNCTION */ #include <stdio.h> #include <sys/types.h> #include <dcmcf.h> #include <dcrpc.h> SVRA() { DCLONG action ; DCLONG commform ; DCLONG opcd ; DCLONG active ; char recvdata[1024] ; DCLONG rdataleng ; DCLONG time ; DCLONG inbufleng ; int rtn_cod ; DCLONG cdataleng ; char termnam[10] ; struct dataform { char mcfuse[8] ; char trnname[9] ; char data[23] ; } ; static struct dataform execdata ; static struct dataform senddata ; static char resv01[9] ; static char resv02[9] ; static char apnam[9] ; strncpy(execdata.mcfuse, " ", 8) ; strncpy(execdata.trnname, " ", 9) ; strcpy(execdata.data, "SRVA EXECAP DATA") ; strncpy(senddata.mcfuse, " ", 8) ; senddata.trnname[0] = 0xc1 ; /* A */ senddata.trnname[1] = 0xd7 ; /* P */ senddata.trnname[2] = 0xd3 ; /* L */ senddata.trnname[3] = 0xf0 ; /* 0 */ senddata.trnname[4] = 0xf2 ; /* 2 */ senddata.trnname[5] = 0x40 ; /* */ senddata.trnname[6] = 0x40 ; /* */ senddata.trnname[7] = 0x40 ; /* */ senddata.trnname[8] = 0x40 ; /* */ strcpy(senddata.data, "SRVA SEND DATA") ; strcpy(execdata.mcfuse, "" ) ; strcpy(resv02, "") ; strcpy(apnam, "APL01") ; /* * MCF-RECEIVE(MESSAGE RECEIVING) */ action = DCMCFFRST ; commform = DCNOFLAGS ; inbufleng = sizeof(recvdata) ; rtn_cod = dc_mcf_receive(action, commform, termnam, resv01, recvdata, &rdataleng, inbufleng, &time) ; if(rtn_cod != DCMCFRTN_00000) { /* * MCF-ROLLBACK(ERROR PROCESSING) */ rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; } /* * MCF-EXECAP(APPLICATION PROGRAM BOOTING) */ action = DCMCFEMI|DCMCFJUST ; commform = DCNOFLAGS ; active = 0 ; cdataleng = 25 ; rtn_cod = dc_mcf_execap(action, commform, resv01, active, apnam, (char*)&execdata, cdataleng) ; if(rtn_cod != DCMCFRTN_00000) { /* * MCF-ROLLBACK(ERROR PROCESSING) */ rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; } /* * MCF-SEND(MESSAGE SENDING) */ action = DCMCFEMI ; commform = DCMCFOUT ; strcpy(termnam, "NFLE02"); opcd = DCNOFLAGS ; cdataleng = 25 ; rtn_cod = dc_mcf_send(action, commform, termnam, resv01, (char *)&senddata, cdataleng, resv02, opcd) ; if(rtn_cod != DCMCFRTN_00000) { /* * MCF ROLLBACK(ERROR PROCESSING) */ rtn_cod = dc_mcf_rollback(DCMCFNRTN) ; } }
All Rights Reserved. Copyright (C) 2009, Hitachi, Ltd.