付録G.1 コーディング例
ここでは,ユーザアプリケーションプログラムのコーディング例を示します。
- 〈この項の構成〉
(1) C言語
#include<dcmcf.h> #define rcvmax 5120 void slmhprcv1() { char termnam[16]; char mapname[16]; char sdatarea[2048]; char rdatarea[rcvmax]; DCLONG sdataleng; DCLONG rdataleng; DCLONG time; int rtn; memset(mapname, 0, 16); memset(sdatarea, 0, 2048); memset(rdatarea, 0, rcvmax); rtn =dc_mcf_receive( DCMCFFRST, DCNOFLAGS, termnam, mapname, rdatarea, &rdataleng, rcvmax, &time ); /*****************************************************/ /* */ /* User Service Part */ /* */ /*****************************************************/ if(rtn !=DCMCFRTN_00000) { goto ERROR; } ERROR:; return; } #include<dcmcf.h> #define sndmax 448 #define rcvmax 5120 #define segmax (sndmax -9 -3 -4) /*432 bytes */ /*448 bytes */ typedef struct senddata_s{ char mcf_use[8]; char ap_name[9]; char snd_dmy[3]; char snd_lng[4]; char snd_seg[segmax]; }sdata_def; void slsppsnd1() { static char *lename ="SL2REQ01"; char termnam[9]; char resv01[9]; char resv02[9]; char resv03[9]; DCLONG rdataleng; DCLONG sdataleng; DCLONG inbufleng; sdata_def senddata; int rtn_code; memset(resv01, 0, 9); memset(resv02, 0, 9); memset(resv03, 0, 9); memset(&senddata, 0x33, sizeof(senddata)); memcpy(senddata.ap_name, "slup2snd ", 9); memcpy(senddata.snd_lng, "0448", 4); memcpy(senddata.snd_seg, "send:aaaaaaaaaa1aaaaaaaaaaaaaaa2 aaaaaaaaaaaaaaa3aaaaaaaaaaaaaaa4aaaaaaaaaaaaaaa5 aaaaaaaaaaaaaaa6aaaaaaaaaaaaaaa7aaaaaaaaaaaaaaa8 aaaaaaaaaaaaaaa9aaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaB aaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaE aaaaaaaaaaaaaaaFaaaaaaaaaaaaaaa0", 256); memcpy(senddata.snd_seg + segmax -3, "end", 3); rtn_code =dc_mcf_send( DCMCFEMI, DCMCFOUT, lename, resv01, &senddata, sndmax, resv02, DCNOFLAGS ); if(rtn_code !=DCMCFRTN_00000) { goto ERROR; } ERROR:; return; } #include <dcmcf.h> #define sndmax 448 #define rcvmax 5120 #define segmax (sndmax -9 -3 -4)/*432 bytes */ /*448 bytes */ typedef struct senddata_s{ char mcf_use[8]; char ap_name[9]; char snd_dmy[3]; char snd_lng[4]; char snd_seg[segmax]; }sdata_def; void slsppreq1() { static char rcv_buf[rcvmax]; static char *lename ="SL2REQ01"; char termnam[9]; char resv01[9]; char resv02[9]; char resv03[9]; DCLONG rdataleng; DCLONG sdataleng; DCLONG inbufleng; sdata_def senddata; DCLONG rcvtime; int rtn_code; memset(resv01, 0, 9); memset(resv02, 0, 9); memset(resv03, 0, 9); memset(&senddata, 0x33, sizeof(senddata)); memcpy(senddata.ap_name, "slup2req ", 9); memcpy(senddata.snd_lng, "0448", 4); memcpy(senddata.snd_seg, "*FMH*aaaaaaaaaa1aaaaaaaaaaaaaaa2 aaaaaaaaaaaaaaa3aaaaaaaaaaaaaaa4aaaaaaaaaaaaaaa5 aaaaaaaaaaaaaaa6aaaaaaaaaaaaaaa7aaaaaaaaaaaaaaa8 aaaaaaaaaaaaaaa9aaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaB aaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaE aaaaaaaaaaaaaaaFaaaaaaaaaaaaaaa0", 256); memcpy(senddata.snd_seg + segmax -3, "end", 3); rtn_code =dc_mcf_sendrecv (DCMCFEMI, DCMCFIO, lename, resv01, &senddata, sndmax, rcv_buf, &rdataleng, rcvmax, &rcvtime, 0); if(rtn_code != DCMCFRTN_00000) { goto ERROR; } ERROR:; return; }
(2) COBOL言語
IDENTIFICATION DIVISION. PROGRAM-ID. UAPCBL. ENVIRONMENT DIVISION. DATA DIVISION. WORKING-STORAGE SECTION. 01 RCV. 02 MSG-REQ PIC X(8) VALUE 'RECEIVE '. 02 RTN PIC X(5). 02 FILLER PIC X(3). 02 RSV1 PIC X(4) VALUE 'FRST'. 02 RSV2 PIC X(4) VALUE SPACE. 02 MCFUSING1 PIC 9(8). 02 MCFUSING2 PIC 9(8). 02 RSV3 PIC 9(9) COMP VALUE 2048. 02 SEGKIND PIC X(4) VALUE SPACE. 02 RSV4 PIC X(4) VALUE SPACE. 02 MSGKIND PIC X(4) VALUE SPACE. 02 OUTPUTNO PIC X(4) VALUE SPACE. 02 RSV5 PIC X(8) VALUE SPACE. 02 RSV6 PIC X(4) VALUE SPACE. 02 RSV7 PIC X(8) VALUE SPACE. 02 RSV8 PIC X(4) VALUE SPACE. 02 RSV9 PIC 9(9) COMP VALUE ZERO. 02 RSV10 PIC 9(9) COMP VALUE ZERO. 02 RSV11 PIC X(1) VALUE SPACE. 02 RSV12 PIC X(1) VALUE SPACE. 02 RSV13 PIC X(14) VALUE LOW-VALUE. 01 CD1. 02 SEG-CODE1 PIC X(4) VALUE SPACE. 02 TERM-CODE PIC X(8) VALUE SPACE. 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). PROCEDURE DIVISION. ********************************************************** CALL 'CBLDCMCF' USING RCV CD1 DATA1. * ********************************************************** * * * User Service Part * * * ********************************************************** * EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. SPPSND. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 SND-AREA1. 02 DATA-A PIC X(8) VALUE 'SEND '. 02 DATA-B PIC X(5). 02 FILLER PIC X(3). 02 DATA-C PIC X(4) VALUE SPACE. 02 DATA-D PIC X(4) VALUE SPACE. 02 DATA-E PIC 9(8). 02 DATA-F PIC 9(8). 02 DATA-G PIC 9(9) COMP VALUE ZERO. 02 DATA-H PIC X(4) VALUE 'EMI '. 02 DATA-I PIC X(4) VALUE SPACE. 02 DATA-J PIC X(4) VALUE 'NORM'. 02 DATA-K PIC X(4) VALUE 'NSEQ'. 02 DATA-L PIC X(8) VALUE SPACE. 02 DATA-M1 PIC X(4) VALUE SPACE. 02 DATA-M2 PIC X(8) VALUE SPACE. 02 DATA-M3 PIC X(4) VALUE SPACE. 02 DATA-M4 PIC 9(9) COMP VALUE ZERO. 02 DATA-M5 PIC 9(9) COMP VALUE ZERO. 02 DATA-M6 PIC X(1) VALUE SPACE. 02 DATA-M7 PIC X(1) VALUE '1'. 02 DATA-N PIC X(14) VALUE LOW-VALUE. 01 SND-AREA2. 02 DATA-O PIC X(4) VALUE 'OUT '. 02 DATA-P PIC X(8) VALUE 'SL2REQ01'. 02 DATA-Q PIC X(8) VALUE SPACE. 02 DATA-R PIC X(8) VALUE SPACE. 02 DATA-T PIC X(28) VALUE LOW-VALUE. 01 SND-AREA3. 02 DATA-U PIC 9(9) COMP VALUE 248. 02 DATA-V PIC X(8). 02 DATA-W PIC X(248). PROCEDURE DIVISION. CALL 'CBLDCMCF' USING SND-AREA1 SND-AREA2 SND-AREA3. EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. SPPSR. ENVIRONMENT DIVISION. CONFIGURATION SECTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 SR-AREA1. 02 DATA-A PIC X(8) VALUE 'SENDRECV'. 02 DATA-B PIC X(5). 02 FILLER PIC X(3). 02 DATA-C PIC X(4) VALUE SPACE. 02 DATA-D PIC X(4) VALUE SPACE. 02 DATA-E PIC 9(8). 02 DATA-F PIC 9(8). 02 DATA-G PIC 9(9) COMP VALUE 248. 02 DATA-H PIC X(4) VALUE 'EMI '. 02 DATA-I PIC X(4) VALUE SPACE. 02 DATA-J PIC X(4) VALUE SPACE. 02 DATA-K PIC X(4) VALUE SPACE. 02 DATA-L PIC X(8) VALUE SPACE. 02 DATA-M1 PIC X(4) VALUE SPACE. 02 DATA-M2 PIC X(8) VALUE SPACE. 02 DATA-M3 PIC X(4) VALUE SPACE. 02 DATA-M4 PIC 9(9) COMP VALUE ZERO. 02 DATA-M5 PIC 9(9) COMP VALUE ZERO. 02 DATA-M6 PIC X(1) VALUE SPACE. 02 DATA-M7 PIC X(1) VALUE SPACE. 02 DATA-N PIC X(14) VALUE LOW-VALUE. 01 SR-AREA2. 02 DATA-O PIC X(4) VALUE 'IO '. 02 DATA-P PIC X(8) VALUE 'SL2REQ01'. 02 DATA-Q PIC X(8) VALUE SPACE. 02 DATA-R PIC X(8) VALUE SPACE. 02 DATA-T PIC X(28) VALUE LOW-VALUE. 01 SR-AREA3. 02 DATA-U PIC 9(9) COMP VALUE 248. 02 DATA-V PIC X(8). 02 DATA-W PIC X(248). 01 SR-AREA4. 02 DATA-X PIC 9(9) COMP. 02 DATA-Y1 PIC X(7) VALUE SPACE. 02 DATA-Y2 PIC X(1). 02 DATA-Z PIC X(248). PROCEDURE DIVISION. CALL 'CBLDCMCF' USING SR-AREA1 SR-AREA2 SR-AREA3 SR-AREA4. EXIT PROGRAM.
(3) データ操作言語
IDENTIFICATION DIVISION. PROGRAM-ID. UAPDML. ENVIRONMENT DIVISION. CONFIGURATION SECTION. * *********************************************************** * DATA DIVISION. WORKING-STORAGE SECTION. * *********************************************************** * 01 RECV-AREA1. 02 RE-DATALENG1 PIC 9(4) COMP VALUE 1028. 02 RE-RSV1 PIC X(2). 02 RE-DATA1 PIC X(1024). * *********************************************************** * COMMUNICATION SECTION. * *********************************************************** * CD RECV-IN1 FOR INPUT STATUS KEY IS RE-STATUS1 SYMBOLIC TERMINAL IS RE-TERMNAM MESSAGE DATE IS RE-DATE1 MESSAGE TIME IS RE-TIME1. * *********************************************************** * PROCEDURE DIVISION. * *********************************************************** * RECEIVE RECV-IN1 FIRST SEGMENT INTO RECV-AREA1. * EXIT PROGRAM. IDENTIFICATION DIVISION. PROGRAM-ID. SNDDML. ENVIRONMENT DIVISION. CONFIGURATION SECTION. * *********************************************************** * DATA DIVISION. WORKING-STORAGE SECTION. * *********************************************************** * 01 SEND-AREA1. 02 SE-DATALENG1 PIC 9(4) COMP VALUE 1028. 02 SE-RSV1 PIC X(2). 02 SE-DATA1 PIC X(1024). * *********************************************************** * COMMUNICATION SECTION. * *********************************************************** * CD SEND-IN1 FOR OUTPUT STATUS KEY IS SE-STATUS1 SYMBOLIC TERMINAL IS SE-TERMNAM SYNCHRONOUS MODE IS ASYNC SWITCHING MODE IS NORMAL. * *********************************************************** * PROCEDURE DIVISION. * *********************************************************** * MOVE 'SL2REQ01'TO SE-TERMNAM. SEND SEND-IN1 FROM SEND-AREA1 WITH EMI. * EXIT PROGRAM.