付録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.