ユーザアプリケーションプログラムの作成例
UAPの作成例の処理の流れを次の図に示し,その流れに沿ったコーディング例をC言語,COBOL言語,およびデータ操作言語別に示します。
図3-1 UAPの作成例の処理の流れ
C言語
C言語を使用したUAPのコーディング例を次に示します。
このコーディング例は,/BeTRAN/examples/mcf/NCSB/aplib/c/ap.cのファイルで提供しています。
#include <dcmcf.h>
typedef struct senddata_s {
char mcf_area[8];
char enq_area[4];
char ncsb_area[8];
char seg_area[998];
} senddata_def;
ncsb_uap1()
{
/* 引数定義 */
char termnam[9];
static char resv01[9] = "¥0";
senddata_def sdatarea;
senddata_def rdatarea;
DCLONG sdataleng;
DCLONG rdataleng;
DCLONG time;
static char resv02[9] = "¥0";
int rtn_code;
memset(resv01, 0, 9);
memset(resv02, 0, 9);
memset(sdatarea.ncsb_area, 0, 8);
memset(rdatarea.ncsb_area, 0, 8);
memset(rdatarea.seg_area, 0, 998);
memset(sdatarea.seg_area, 0, 998);
strcpy(termnam, "INTLE01");
/* メッセージ受信開始 receive関数の呼び出し */
rtn_code = dc_mcf_receive( DCMCFFRST, DCNOFLAGS, termnam,
resv01, &rdatarea, &rdataleng,
1018, &time );
/**** データの処理 ****/
/* メッセージ送信開始 send関数の呼び出し */
memcpy(sdatarea.enq_area, rdatarea.enq_area, 4);
sdataleng = rdatdaleng;
rtn_code = dc_mcf_send( DCMCFEMI, DCMCFOUT, termnam, resv01,
&sdatarea, sdataleng, resv02,
DCNOFLAGS );
if( rtn_code != DCMCFRTN_00000 )
{
goto ERROR;
}
ERROR: ;
return;
}
COBOL言語
COBOL言語を使用したUAPのコーディング例を次に示します。
このコーディング例は,/BeTRAN/examples/mcf/NCSB/aplib/cobol/ap.cblのファイルで提供しています。
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 'FIRST'.
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 1018.
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(8).
02 MCFUSE18.
03 SELENQD1 PIC X(4).
03 MCFUSE20 PIC X(8).
03 REC-MSGSEG1 PIC X(998).
01 SND.
02 MSG-SEND1 PIC X(8) VALUE 'SEND '.
02 STATUS-CODE3 PIC X(5).
02 FILLER PIC X(3).
02 MCFUSE30 PIC X(4) VALUE SPACE.
02 MCFUSE31 PIC X(4) VALUE SPACE.
02 MCFUSE32 PIC 9(8).
02 MCFUSE33 PIC 9(8).
02 MCFUSE34 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-SEQ1 PIC X(4) VALUE 'NSEQ'.
02 MCFUSE35 PIC X(8) VALUE SPACE.
02 SEND-CODE1 PIC X(4) VALUE SPACE.
02 MCFUSE36 PIC X(8) VALUE SPACE.
02 MCFUSE37 PIC X(4) VALUE SPACE.
02 MCFUSE38 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE39 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE40 PIC X(1) VALUE SPACE.
02 MCFUSE41 PIC X(1) VALUE SPACE.
02 MCFUSE42 PIC X(14) VALUE LOW-VALUE.
01 CD2.
02 SENDSEG-CODE2 PIC X(4) VALUE 'OUT '.
02 TERM-CODE PIC X(8) VALUE 'TERMNAM1'.
02 MCFUSE50 PIC X(8) VALUE SPACE.
02 MCFUSE51 PIC X(8) VALUE SPACE.
02 MCFUSE52 PIC X(28) VALUE LOW-VALUE.
01 DATA2.
02 MSGSEG-LENG2 PIC 9(9) COMP VALUE 1010.
02 MCFUSE60 PIC X(8).
02 MCFUSE61.
03 SELENQD2 PIC X(4).
03 MCFUSE62 PIC X(8).
03 REC-MSGSEG2 PIC X(998).
PROCEDURE DIVISION.
CALL 'CBLDCMCF' USING RCV CD1 DATA1.
MOVE SELENQD1 TO SELENQD2.
**** データの処理 ****
CALL 'CBLDCMCF' USING SND CD2 DATA2.
EXIT PROGRAM.
データ操作言語
データ操作言語を使用したUAPのコーディング例を次に示します。
このコーディング例は,/BeTRAN/examples/mcf/NCSB/aplib/dml/ap.cblのファイルで提供しています。
**** 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 1014.
02 RE-RSV1 PIC X(2).
02 RE-MCFUSE1.
03 RE-SELENQ PIC X(4).
03 RE-MCFUSE2 PIC X(8).
03 RE-DATA PIC X(998).
*
**** 一方送信領域 ****
*
01 SEND-IO-AREA.
02 IO-DATALENG PIC 9(4) COMP.
02 IO-RSV1 PIC X(2).
02 IO-MCFUSE1.
03 IO-SELENQ PIC X(4).
03 IO-MCFUSE2 PIC X(8).
03 IO-DATA PIC X(998).
*
**** 通信記述項 ****
*
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 'TERMNAM1' TO SE-TERMNAM-IO.
MOVE RE-SELENQ TO IO-SELENQ.
SEND SEND-IO
FROM SEND-IO-AREA
WITH EMI.
*
EXIT PROGRAM.