付録I.1 コーディング例
図I-1の処理の流れについて,使用する言語ごとにUAPのコーディング例を示します。
- 〈この項の構成〉
(1) C言語(K&R版)
C言語(K&R版)を使用したUAPのコーディング例を次に示します。
/********************************************************/ /* C言語を使用したUAP作成例 */ /********************************************************/ #include <dcmcf.h> void ex_uap1() { char termnam[9]; DCLONG rdataleng; DCLONG time; struct{ char mcfctl[8]; DCLONG msglen; char recvdata[2036]; }recvmsg; struct{ char mcfctl[8]; DCLONG msglen; char senddata1[500]; }sendmsg; char senddata2[512]; static char resv01[9] = "\0" ; /*** 予備領域の初期化 ***/ static char resv02[9] = "\0" ; /*** 予備領域の初期化 ***/ static char resv03[9] = "\0" ; /*** 予備領域の初期化 ***/ char *workadd = (char *)&recvmsg; dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01, workadd,&rdataleng,2048,&time) ; /* 一方送信メッセージの受信 */ /***************************************/ /********* データの処理 ************/ /***************************************/ dc_mcf_send(DCMCFEMI,DCMCFOUT,"PRINTER1",resv01, senddata2,504,resv02,DCNOFLAGS); /* 一方送信メッセージの送信 */ sendmsg.msglen = 504; /* セグメント長の設定 */ dc_mcf_send(DCMCFEMI,DCMCFOUT,"TERMNAM1",resv01, (char *)&sendmsg,504,resv02,DCNOFLAGS); /* メッセージの送信 */ } /******** C言語によるUAP 終わり ********/
(2) COBOL言語
COBOL言語を使用したUAPのコーディング例を次に示します。
/*******************************************************/ /****** 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 MCFUSE01 PIC X(4) VALUE SPACE. 02 MCFUSE02 PIC X(4) VALUE SPACE. 02 MCFUSE03 PIC X(4) VALUE SPACE. 02 MCFUSE04 PIC X(4) VALUE SPACE. 02 MCFUSE05 PIC X(8) VALUE SPACE. 02 MCFUSE06 PIC X(4) VALUE SPACE. 02 MCFUSE07 PIC X(8) VALUE SPACE. 02 MCFUSE08 PIC X(4) VALUE SPACE. 02 MCFUSE09 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). 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. 03 MSG-LENG PIC 9(9) COMP. 03 RECV-DATA PIC X(2036). 01 SND1. 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 MCFUSE26 PIC X(4) VALUE SPACE. 02 SEND-NORM PIC X(4) VALUE 'NORM'. 02 SEND-NO PIC X(4) VALUE 'NSEQ'. 02 MCFUSE27 PIC X(8) VALUE SPACE. 02 MCFUSE28 PIC X(4) VALUE SPACE. 02 MCFUSE29 PIC X(8) VALUE SPACE. 02 MCFUSE30 PIC X(4) VALUE SPACE. 02 MCFUSE31 PIC 9(9) COMP VALUE ZERO. 02 MCFUSE32 PIC 9(9) COMP. 02 MCFUSE33 PIC X(1) VALUE SPACE. 02 MCFUSE34 PIC X(1) VALUE SPACE. 02 MCFUSE35 PIC X(14) VALUE LOW-VALUE. 01 CD2. 02 SENDSEG-CODE2 PIC X(4) VALUE 'OUT '. 02 TERM-CODE2 PIC X(8) VALUE 'PRINTER1'. 02 MCFUSE36 PIC X(8) VALUE SPACE. 02 MCFUSE37 PIC X(8) VALUE SPACE. 02 MCFUSE38 PIC X(28) VALUE LOW-VALUE. 01 DATA2. 02 MSGSEG-LENG2 PIC 9(9) COMP VALUE 512. 02 MCFUSE39 PIC X(8). 02 REC-MSGSEG2 PIC X(512). 01 SND2. 02 MSG-SEND PIC X(8) VALUE 'SEND '. 02 STATUS-CODE3 PIC X(5). 02 FILLER PIC X(3). 02 MCFUSE40 PIC X(4) VALUE SPACE. 02 MCFUSE41 PIC X(4) VALUE SPACE. 02 MCFUSE42 PIC 9(8). 02 MCFUSE43 PIC 9(8). 02 MCFUSE44 PIC 9(9) COMP VALUE ZERO. 02 SEND-SEG1 PIC X(4) VALUE 'EMI '. 02 MCFUSE45 PIC X(4) VALUE SPACE. 02 SEND-NORM1 PIC X(4) VALUE 'NORM'. 02 SEND-NO1 PIC X(4) VALUE 'NSEQ'. 02 MCFUSE46 PIC X(8) VALUE SPACE. 02 MCFUSE47 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 SENDSEG-CODE3 PIC X(4) VALUE 'OUT '. 02 TERM-CODE3 PIC X(8) VALUE 'TERMNAM1'. 02 MCFUSE55 PIC X(8) VALUE SPACE. 02 MCFUSE56 PIC X(8) VALUE SPACE. 02 MCFUSE57 PIC X(28) VALUE LOW-VALUE. 01 DATA3. 02 MSGSEG-LENG3 PIC 9(9) COMP VALUE 512. 02 MCFUSE58 PIC X(8). 02 REC-MSGSEG3. 03 MSG-LENG PIC 9(9) COMP. 03 SEND-DATA PIC X(508). : : PROCEDURE DIVISION. CALL 'CBLDCMCF' USING RCV CD1 DATA1. /* 一方送信メッセージの受信 */ /**********************************/ /********* 処理1 ************/ /**********************************/ CALL 'CBLDCMCF' USING SND1 CD2 DATA2. /* 一方送信メッセージの送信 */ /**********************************/ /********* 処理2 ************/ /**********************************/ MOVE 512 TO MSG-LENG OF REC-MSGSEG3. /* セグメント長の設定 */ CALL 'CBLDCMCF' USING SND2 CD3 DATA3. /* メッセージの送信 */ /**********************************/ /********* 処理3 ************/ /**********************************/ EXIT PROGRAM. /****** COBOL言語によるUAP 終わり ******/
(3) データ操作言語
データ操作言語を使用したUAPのコーディング例を次に示します。
* ***************************************************** * MHPサービスプログラム * ***************************************************** * IDENTIFICATION DIVISION. PROGRAM-ID. SVRA. ENVIRONMENT DIVISION. CONFIGURATION SECTION. * ***************************************************** * ワーク変数 * ***************************************************** * DATA DIVISION. WORKING-STORAGE SECTION. * **************************************************** * メッセージ受信領域 * **************************************************** * 01 RECV-AREA. 02 RE-DATALENG PIC 9(4) COMP VALUE 1028. 02 RE-RSV1 PIC X(2). 02 RECV-MSG. 03 MSG-LENG PIC 9(9). 03 REC-DATA PIC X(1020). * **************************************************** * 一方送信メッセージ送信領域 * **************************************************** * 01 SEND-IO-AREA1. 02 IO-DATALENG PIC 9(4) COMP VALUE 512. 02 IO-RSV1 PIC X(2). 02 IO-DATA PIC X(508). * **************************************************** * メッセージ送信領域 * **************************************************** * 01 SEND-IO-AREA2. 02 IO-DATALENG PIC 9(4) COMP VALUE 516. 02 IO-RSV1 PIC X(2). 02 SEND-MSG. 03 MSG-LENG PIC 9(9) COMP. 03 SEND-DATA PIC X(508). * ***************************************************** * 通信記述項 * ***************************************************** * COMMUNICATION SECTION. * ***************************************************** * メッセージの受信の通信記述項 * ***************************************************** * CD RECV-INF FOR INPUT STATUS KEY IS RE-STATUS SYMBOLIC TERMINAL IS RE-TERMNAM MESSAGE DATE IS RE-DATE MESSAGE TIME IS RE-TIME. * ***************************************************** * 一方送信メッセージの送信の通信記述項 * ***************************************************** * CD SEND-IO-1 FOR OUTPUT STATUS KEY IS SE-STATUS-IO-1 SYMBOLIC TERMINAL IS SE-TERMNAM-IO-1. * **************************************************** * メッセージの送信の通信記述項 * **************************************************** * CD SEND-IO-2 FOR OUTPUT STATUS KEY IS SE-STATUS-IO-2 SYMBOLIC TERMINAL IS SE-TERMNAM-IO-2. * PROCEDURE DIVISION. * **************************************************** * メッセージの受信の通信記述項 * **************************************************** * RECEIVE RECV-INF FIRST SEGMENT INTO RECV-AREA. * **************************************************** * 一方送信メッセージの送信の通信記述項 * **************************************************** * MOVE 'PRINTER1' TO SE-TERMNAM-IO-1. SEND SEND-IO-1 FROM SEND-IO-AREA1. * **************************************************** * メッセージの送信の通信記述項 * **************************************************** * MOVE 512 TO MSG-LENG OF SEND-MSG. MOVE 'TERMNAM1' TO SE-TERMNAM-IO-2. SEND SEND-IO-2 FROM SEND-IO-AREA2. EXIT PROGRAM.