Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/User Agent編


付録G.1 コーディング例

図G-1の処理の流れについて,使用する言語ごとにUAPのコーディング例を示します。

〈この項の構成〉

(1) C言語(K&R版)

C言語(K&R版)を使用したUAPのコーディング例を次に示します。

#include <dcmcf.h>
ex_uap1()
{
   char termnam[9] ;
   char recvdata[2048] ;
   DCLONG rdataleng ;
   DCLONG time ;
   DCLONG inbufleng=2048 ;
   char senddata[512] ;
   static char resv01[9]="\0" ;
   static char resv02[9]="\0" ;
   static char resv03[9]="\0" ;
   char *workadd = recvdata ;
                              /* 問い合わせメッセージの受信 */
   dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01,
                  workadd,&rdataleng,2048,&time) ;
   workadd = workadd + rdataleng + 8 ;
   inbufleng = 2048 - (workadd - recvdata) ;
   while(dc_mcf_receive(DCMCFSEG,DCNOFLAGS,termnam,resv01,
                        workadd,&rdataleng,inbufleng,&time)
         == DCMCFRTN_00000)
      {
         workadd = workadd + rdataleng + 8 ;
         inbufleng = inbufleng - (workadd - recvdata) ;
       }
 
   /*        データの処理                         */
 
   dc_mcf_send(DCMCFEMI,DCMCFOUT,"HOSTB",
               resv01,senddata,504,resv02,DCNOFLAGS) ;
                              /* 一方送信メッセージの送信 */
   dc_mcf_reply(DCMCFEMI,DCNOFLAGS,resv03,
                resv01,senddata,504,resv02,DCNOFLAGS) ;
                              /* 応答メッセージの送信 */
}

(2) COBOL言語

COBOL言語を使用したUAPのコーディング例を次に示します。

 IDENTIFICATION DIVISION.
 PROGRAM-ID. EXUAP1.
 
 ENVIRONMENT DIVISION.
 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01  RCV.
     02  MSG-REC       PIC X(8) VALUE 'RECEIVE '.
     02  STATUS-CODE1  PIC X(5).
     02  FILLER        PIC X(3).
     02  SEG-CODE      PIC X(4) VALUE 'FRST'.
     02  RTN-CODE      PIC X(4) VALUE SPACE.
     02  DAY-ID        PIC 9(8).
     02  TIME-ID       PIC 9(8).
     02  SEG-LENG      PIC 9(9) COMP VALUE 2048.
     02  MCFUSE1       PIC X(4) VALUE SPACE.
     02  MCFUSE2       PIC X(4) VALUE SPACE.
     02  MCFUSE3       PIC X(4) VALUE SPACE.
     02  MCFUSE4       PIC X(4) VALUE SPACE.
     02  MCFUSE5       PIC X(8) VALUE SPACE.
     02  MCFUSE6       PIC X(4) VALUE SPACE.
     02  MCFUSE7       PIC X(8) VALUE SPACE.
     02  MCFUSE8       PIC X(4) VALUE SPACE.
     02  MCFUSE9       PIC 9(9) COMP VALUE ZERO.
     02  MCFUSE10      PIC 9(9) COMP VALUE ZERO.
     02  MCFUSE11      PIC X(1) VALUE SPACE.
     02  MCFUSE12      PIC X(1) VALUE SPACE.
     02  MCFUSE13      PIC X(14) VALUE LOW-VALUE.
 01  CD1.
     02  SEG-CODE1     PIC X(4) VALUE SPACE.
     02  TERM-CODE     PIC X(8).
     02  MCFUSE14      PIC X(8) VALUE SPACE.
     02  MCFUSE15      PIC X(8) VALUE SPACE.
     02  MCFUSE16      PIC X(28) VALUE LOW-VALUE.
 01  DATA1.
     02  MSGSEG-LENG1  PIC 9(9) COMP.
     02  MCFUSE17      PIC X(4).
     02  MCFUSE18      PIC X(2).
     02  MCFUSE19      PIC X(1).
     02  MCFUSE20      PIC X(1).
     02  REC-MSGSEG1   PIC X(2048).
 01  SND.
     02  MSG-SEND      PIC X(8) VALUE 'SEND    '.
     02  STATUS-CODE2  PIC X(5).
     02  FILLER        PIC X(3).
     02  MCFUSE21      PIC X(4) VALUE SPACE.
     02  MCFUSE22      PIC X(4) VALUE SPACE.
     02  MCFUSE23      PIC 9(8).
     02  MCFUSE24      PIC 9(8).
     02  MCFUSE25      PIC 9(9) COMP VALUE ZERO.
     02  SEND-SEG      PIC X(4) VALUE 'EMI '.
     02  SEND-SYNC     PIC X(4) VALUE 'ASYN'.
     02  SEND-NORM     PIC X(4) VALUE 'NORM'.
     02  SEND-SEQ      PIC X(4) VALUE 'NSEQ'.
     02  MCFUSE26      PIC X(8) VALUE SPACE.
     02  SEND-CODE     PIC X(4) VALUE SPACE.
     02  MCFUSE27      PIC X(8) VALUE SPACE.
     02  MCFUSE28      PIC X(4) VALUE SPACE.
     02  MCFUSE29      PIC 9(9) COMP VALUE ZERO.
     02  MCFUSE30      PIC 9(9) COMP.
     02  MCFUSE31      PIC X(1) VALUE SPACE.
     02  MCFUSE32      PIC X(1) VALUE SPACE.
     02  MCFUSE33      PIC X(14) VALUE LOW-VALUE.
 01  CD2.
     02  SENDSEG-CODE2 PIC X(4) VALUE 'OUT '.
     02  TERM-CODE2    PIC X(8) VALUE 'HOSTB'.
     02  MCFUSE34      PIC X(8) VALUE SPACE.
     02  MCFUSE35      PIC X(8) VALUE SPACE.
     02  MCFUSE36      PIC X(28) VALUE LOW-VALUE.
 01  DATA2.
     02  MSGSEG-LENG2  PIC 9(9) COMP VALUE 512.
     02  MCFUSE37      PIC X(8).
     02  REC-MSGSEG2   PIC X(512).
 01  RPLY.
     02  MSG-REPLY     PIC X(8) VALUE 'REPLY   '.
     02  STATUS-CODE3  PIC X(5).
     02  FILLER        PIC X(3).
     02  MCFUSE41      PIC X(4) VALUE SPACE.
     02  MCFUSE42      PIC X(4) VALUE SPACE.
     02  MCFUSE43      PIC 9(8).
     02  MCFUSE44      PIC 9(8).
     02  MCFUSE45      PIC 9(9) COMP VALUE ZERO.
     02  SEND-SEG1     PIC X(4) VALUE 'EMI '.
     02  SEND-SYNC1    PIC X(4) VALUE 'ASYN'.
     02  MCFUSE46      PIC X(4) VALUE SPACE.
     02  SEND-SEQ1     PIC X(4) VALUE SPACE.
     02  MCFUSE47      PIC X(8) VALUE SPACE.
     02  SEND-CODE1    PIC X(4) VALUE SPACE.
     02  MCFUSE48      PIC X(8) VALUE SPACE.
     02  MCFUSE49      PIC X(4) VALUE SPACE.
     02  MCFUSE50      PIC 9(9) COMP VALUE ZERO.
     02  MCFUSE51      PIC 9(9) COMP.
     02  MCFUSE52      PIC X(1) VALUE SPACE.
     02  MCFUSE53      PIC X(1) VALUE SPACE.
     02  MCFUSE54      PIC X(14) VALUE LOW-VALUE.
 01  CD3.
     02  SEND-CODE3    PIC X(4) VALUE SPACE.
     02  TERM-CODE3    PIC X(8) VALUE SPACE.
     02  MCFUSE55      PIC X(8) VALUE SPACE.
     02  MCFUSE56      PIC X(8) VALUE SPACE.
     02  MCFUSE57      PIC X(28) VALUE LOW-VALUE.
 
 PROCEDURE DIVISION.
 CALL 'CBLDCMCF'USING RCV CD1 DATA1.
*(問い合わせメッセージの受信)
*
*   処理 1
*
 CALL 'CBLDCMCF'USING SND CD2 DATA2.
*(一方送信メッセージの送信)
*
*   処理 2
*
 CALL 'CBLDCMCF'USING RPLY CD3 DATA2.
*(応答メッセージの送信)
*
*   処理 3
*
 EXIT PROGRAM.