ユーザアプリケーションプログラムの作成例
UAPの作成例の処理の流れを図3-1に示します。また,図3-1のコーディング例を,C言語,COBOL言語,およびデータ操作言語でそれぞれ示します。
図3-1 UAP作成例の処理の流れ
コーディング例(C言語)
C言語(K&R版C)を使用したUAPのコーディング例を次に示します。また,このコーディング例を,/BeTRAN/examples/mcf/X25EX/aplib/c/ap.cのファイルで提供しています。
#include <dcmcf.h>
void ex_uap1()
{
/* 引数定義 */
char termnam[16];
char mapname[16];
char sdatarea[2048];
char rdatarea[2048];
DCLONG sdataleng;
DCLONG rdataleng;
DCLONG time;
char resv02[9];
int rtn;
memset(mapname, 0, 16);
memset(sdatarea, 0, 2048);
memset(rdatarea, 0, 2048);
memset(resv02, 0, 16);
/* メッセージ受信開始 receive関数の呼び出し */
rtn = dc_mcf_receive( DCMCFFRST,
DCNOFLAGS,
termnam,
mapname,
rdatarea,
&rdataleng,
2048,
&time );
/*********************************************************************/
/* */
/* データの処理 */
/* */
/*********************************************************************/
/* メッセージ送信開始 send関数の呼び出し */
rtn = dc_mcf_send ( DCMCFEMI,
DCMCFOUT,
termnam,
mapname,
sdatarea,
sdataleng,
resv02,
DCNOFLAGS );
}
コーディング例(COBOL言語)
COBOL言語を使用したUAPのコーディング例を次に示します。また,このコーディング例を,/BeTRAN/examples/mcf/X25EX/aplib/cobol/ap.cblのファイルで提供しています。
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).
01 SND.
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 MCFUSE46 PIC X(4) VALUE SPACE.
02 SEND-NORM PIC X(4) VALUE 'NORM'.
02 SEND-SEQ1 PIC X(4) VALUE 'NSEQ'.
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 VALUE ZERO.
02 MCFUSE52 PIC X(1) VALUE SPACE.
02 MCFUSE53 PIC X(1) VALUE SPACE.
02 MCFUSE54 PIC X(14) VALUE LOW-VALUE.
01 CD2.
02 SENDSEG-CODE2 PIC X(4) VALUE 'OUT '.
02 TERM-CODE PIC X(8) VALUE 'INTLE01'.
02 MCFUSE55 PIC X(8) VALUE SPACE.
02 MCFUSE56 PIC X(8) VALUE SPACE.
02 MCFUSE57 PIC X(28) VALUE LOW-VALUE.
01 DATA2.
02 MSGSEG-LENG2 PIC 9(9) COMP VALUE 512.
02 MCFUSE58 PIC X(8).
02 REC-MSGSEG2 PIC X(512).
PROCEDURE DIVISION.
*************************************************************************
* メッセージ受信 *
*************************************************************************
CALL 'CBLDCMCF' USING RCV CD1 DATA1.
*
*
*************************************************************************
* *
* データの処理 *
* *
*************************************************************************
*
*
*************************************************************************
* メッセージ送信 *
*************************************************************************
CALL 'CBLDCMCF' USING SND CD2 DATA2.
EXIT PROGRAM.
コーディング例(データ操作言語)
データ操作言語を使用したUAPのコーディング例を次に示します。また,このコーディング例を,/BeTRAN/examples/mcf/X25EX/aplib/dml/ap.cblのファイルで提供しています。
*************************************************************************
* MHPサービスプログラム *
*************************************************************************
*
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).
*
*************************************************************************
* 一方送信領域 *
*************************************************************************
*
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 RECV-IN1
FOR INPUT
STATUS KEY IS RE-STATUS1
SYMBOLIC TERMINAL IS RE-TERMNAM1
MESSAGE DATE IS RE-DATE1
MESSAGE TIME IS RE-TIME1.
*
*************************************************************************
* 一方送信 *
*************************************************************************
*
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.
*
*************************************************************************
* 一方受信 *
*************************************************************************
*
RECEIVE RECV-IN1
FIRST SEGMENT
INTO RECV-AREA1.
*
*************************************************************************
* *
* データの処理 *
* *
*************************************************************************
*
*************************************************************************
* 一方送信 *
*************************************************************************
*
SEND SEND-IN1
FROM SEND-AREA1
WITH EMI.
*
EXIT PROGRAM.