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

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

付録C UOCのコーディング例

TP1/NET/OSAS-NIFの入力メッセージ編集UOCのコーディング例(K&R版 C)を次に示します。このコーディング例は,/BeTRAN/examples/mcf/OSASNIF/cmlib/c/uoc.cのファイルで提供しています。

 
#include <stdio.h>
#include <dcmcf.h>
#include <dcmnom.h>
#include <dcmcfuoc.h>
 
#define ERR_PRT_KIND    -19001L
 
DCLONG dc_mcf_stduoc_msgin(param)
 
/* ADDRESS OF EDITING AREA FOR INPUT MESSAGE EDITING UOC       */
dcmcf_uoc_min_n *param ;
 
{
/*******************************/
/* DECLARATION OF ARGUMENT     */
/*******************************/
 
dcmnom_uoc *ifa_ptr ; /* POINTER OF PROTOCOL INDIVIDUAL INTERFACE */
DCLONG n ;
 if(param->pro_kind != DCMCF_UOC_PRO_NF){ /* CHECK OF PROTOCOL KIND */
     param->rtn_detail=ERR_PRT_KIND;
     return(DCMCF_UOC_MSG_NG);            /* MESSAGE EDITING ERROR */
  }
 ifa_ptr = (dcmnom_uoc *)param->pro_indv_ifa ;
        /* POINTER AQUISITION OF PROTOCOL INDIVIDUAL AREA BY CASTING */
 if(ifa_ptr->appname[0] != 0){
   strcpy(param->aplname,ifa_ptr->appname);
  }
 else{
       param->aplname[8] = 0 ;
       for(n = 0 ; n < 9 ; n++){
/* NULL TERMINATING IF SPACE, AND MAKING NORMAL DECISION OF AP NAME */
         if(param->buflist_adr->buf_array[0].buf_adr[n] == ' '){
             param->aplname[n] = 0 ;
             break;
         }
         param->aplname[n] = 
                     param->buflist_adr->buf_array[0].buf_adr[n] ;
     }
 }
 param->buflist_adr->used_buf_num = param->buflist_adr->buf_num ;
 return(DCMCF_UOC_MSG_OK_RCV);
 }