ユーザアプリケーションプログラム作成例
UAPの作成例として,処理の流れを次の図に示し,その流れに沿ったコーディング例をC言語(ANSI C,C++,K&R版 C),COBOL言語,およびデータ操作言語で示します。
図3-1 処理の流れ
TP1/NET/HDLCでは,このコーディング例を次のファイルで提供しています。
C言語(ANSI C,C++)
#include <string.h>
#include <stdlib.h>
#include <dcmcf.h>
void ex_uap1()
{
char termnam[9] ;
int rtn_code ;
char recvdata[2048] ;
DCLONG rdataleng ;
DCLONG time ;
DCLONG inbufleng;
char senddata[512] ;
DCLONG sdataleng ;
static char resv01[9]="¥0" ;
static char resv02[9]="¥0" ;
static char resv03[9]="¥0" ;
char *workadd = recvdata ;
rtn_code = dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01,
workadd,&rdataleng,2048,&time) ;
if(rtn_code != DCMCFRTN_00000) {
abort();
}
/***********************************************/
/* */
/* User Service Part. */
/* */
/***********************************************/
sdataleng = strlen(senddata) + 4 ;
rtn_code = dc_mcf_send(DCMCFEMI,DCMCFOUT,"PRINTER1",
resv01,senddata,sdataleng,resv02,DCNOFLAGS) ;
if(rtn_code != DCMCFRTN_00000) {
abort() ;
}
sdataleng = strlen(senddata) + 4 ;
rtn_code = dc_mcf_send(DCMCFEMI,DCMCFOUT,"TERMNAM1",
resv01,senddata,sdataleng,resv02,DCNOFLAGS) ;
if(rtn_code != DCMCFRTN_00000) {
abort() ;
}
}
C言語(K&R版 C)
#include <dcmcf.h>
void ex_uap1()
{
char termnam[9] ;
int rtn_code ;
char recvdata[2048] ;
DCLONG rdataleng ;
DCLONG time ;
DCLONG inbufleng;
char senddata[512] ;
DCLONG sdataleng ;
static char resv01[9]="¥0" ;
static char resv02[9]="¥0" ;
static char resv03[9]="¥0" ;
char *workadd = recvdata ;
rtn_code = dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01,
workadd,&rdataleng,2048,&time) ;
if(rtn_code != DCMCFRTN_00000) {
abort();
}
/***********************************************/
/* */
/* User Service Part. */
/* */
/***********************************************/
sdataleng = strlen(senddata) + 4 ;
rtn_code = dc_mcf_send(DCMCFEMI,DCMCFOUT,"PRINTER1",
resv01,senddata,sdataleng,resv02,DCNOFLAGS) ;
if(rtn_code != DCMCFRTN_00000) {
abort() ;
}
sdataleng = strlen(senddata) + 4 ;
rtn_code = dc_mcf_send(DCMCFEMI,DCMCFOUT,"TERMNAM1",
resv01,senddata,sdataleng,resv02,DCNOFLAGS) ;
if(rtn_code != DCMCFRTN_00000) {
abort() ;
}
}
COBOL言語
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) 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 TEXT-TYPE1 PIC X(4).
02 REC-MSGSEG1 PIC X(2044).
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 SEND-SYNC PIC X(4) VALUE 'ASYN'.
02 SEND-NORM PIC X(4) VALUE 'NORM'.
02 SEND-NO 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 VALUE ZERO.
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 'SYSTEM1'.
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 TEXT-TYPE2 PIC X(2).
02 REC-MSGSEG2 PIC X(508).
01 SND2.
02 MSG-SEND1 PIC X(8) VALUE 'SEND '.
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 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 SEND-CODE1 PIC X(4) VALUE SPACE.
02 MCFUSE47 PIC X(8) VALUE SPACE.
02 MCFUSE48 PIC X(4) VALUE SPACE.
02 MCFUSE49 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE50 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE51 PIC X(1) VALUE SPACE.
02 MCFUSE52 PIC X(1) VALUE SPACE.
02 MCFUSE53 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 MCFUSE54 PIC X(8) VALUE SPACE.
02 MCFUSE55 PIC X(8) VALUE SPACE.
02 MCFUSE56 PIC X(28) VALUE LOW-VALUE.
*
PROCEDURE DIVISION.
*
CALL 'CBLDCMCF'USING RCV CD1 DATA1.
*
CALL 'CBLDCMCF'USING SND1 CD2 DATA2.
*
CALL 'CBLDCMCF'USING SND2 CD3 DATA2.
EXIT PROGRAM.
データ操作言語
*
****************************************************************
* 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 RE-DATA PIC X(1024).
*
****************************************************************
* 一方送信,および分岐メッセージ送信領域 *
****************************************************************
*
01 SEND-IO-AREA.
02 IO-DATALENG PIC 9(4) COMP VALUE 20.
02 IO-RSV1 PIC X(2).
02 IO-DATA PIC X(16) VALUE 'SVRA SEND DATA1'.
*
****************************************************************
* 通信記述項 *
****************************************************************
*
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
FOR OUTPUT
STATUS KEY IS SE-STATUS-IO
SYMBOLIC TERMINAL IS SE-TERMNAM-IO.
*
PROCEDURE DIVISION.
*
****************************************************************
* メッセージの受信の通信記述項 *
****************************************************************
*
RECEIVE RECV-INF
FIRST SEGMENT
INTO RECV-AREA.
*
****************************************************************
* 分岐メッセージの送信の通信記述項 *
****************************************************************
*
MOVE 'PRINTER1' TO SE-TERMNAM-IO.
SEND SEND-IO
FROM SEND-IO-AREA
WITH EMI.
*
****************************************************************
* 一方送信メッセージの送信の通信記述項 *
****************************************************************
*
MOVE 'TERMNAM1' TO SE-TERMNAM-IO.
SEND SEND-IO
FROM SEND-IO-AREA
WITH EMI.
EXIT PROGRAM.