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