分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSAS-NIF編

[目次][用語][索引][前へ][次へ]

3.4.1 C言語

<この項の構成>
(1) ANSI C,C++の場合
(2) K&R版Cの場合

(1) ANSI C,C++の場合

 
/*
 * 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) ;
     }
}
 

(2) K&R版Cの場合

 
/*
 * 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) ;
     }
}