ユーザアプリケーションプログラム作成例
HSC1手順またはHSC2手順(非同期モード)の例
UAPの作成例として,HSC1手順またはHSC2手順(非同期モード)の場合の処理の流れを次の図に示し,その流れに沿ったコーディング例をC言語(K&R版),COBOL言語,およびデータ操作言語で示します。
図4-1 UAP作成例の処理の流れ
●C言語(K&R版)
C言語(K&R版)を使用したUAPのコーディング例を示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/c/ap1.cのファイルで提供しています。
#include <dcmcf.h>
#include <dcmhsc.h>
void ex_uap1()
{
char termnam[9] ;
char recvdata[2048];
DCLONG rdataleng ;
DCLONG time ;
static char resv01[9] = "¥0" ; /* 予備領域の初期化 */
static char resv02[9] = "¥0" ; /* 予備領域の初期化 */
char *workadd = recvdata ;
struct {
DCLONG mcf[2];
DCLONG text_code;
char data[2048];
} senddata;
dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01,
workadd,&rdataleng,2048,&time) ; /* メッセージの受信 */
/****** データの処理 ******/
senddata.text_code = DCMHSC_DLETEXT ;
dc_mcf_send(DCMCFEMI,DCMCFOUT,"SYSTEM1",
resv01,&senddata,504,resv02,DCNOFLAGS) ;
/*メッセージの送信(分岐送信) */
dc_mcf_send(DCMCFEMI,DCMCFOUT,"TERMNAM1",
resv01,&senddata,504,resv02,DCNOFLAGS) ;
/*メッセージの送信(一方送信) */
}
●COBOL言語
COBOL言語を使用したUAPのコーディング例を示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/cobol/ap1.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 '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 SPACE.
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(4).
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. ** メッセージの受信 **
* 処理 1 *
CALL 'CBLDCMCF' USING SND1 CD2 DATA2. ** メッセージの送信(分岐送信) **
* 処理 2 *
CALL 'CBLDCMCF' USING SND2 CD3 DATA2. ** メッセージの送信(一方送信) **
* 処理 3 *
EXIT PROGRAM.
●データ操作言語
データ操作言語を使用したUAPのコーディング例を示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/dml/ap1.cblのファイルで提供しています。
*
* MHPサービスプログラム *
*
IDENTIFICATION DIVISION.
PROGRAM-ID. EX-UAP1.
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-TCODE PIC X(4).
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 'SYSTEM1' TO SE-TERMNAM-IO.
MOVE X'00000004' TO IO-TCODE.
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.
HSC2手順(同期モード)
HSC2手順(同期モード)の場合のUAPのコーディング例をC言語(K&R版),COBOL言語,およびデータ操作言語で示します。
UAPのコーディング例で示す発信用SPPの例と発信用MHPの例を図4-2に,着信用MHPの例を図4-3に示します。
図4-2 発信用SPP,発信用MHPの例
図4-3 着信用MHPの例
●C言語(K&R版)
C言語(K&R版)を使用したUAPのコーディング例を示します。
発信用SPPのコーディング例
図4-2に示した発信用SPPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/c/sv1.cのファイルで提供しています。
/*
* TP1/NET/HSC HSC2手順 発信用SPP
*/
# include <dcmcf.h>
# include <dcmhsc.h>
# include <dcmhsc2.h>
void hsc2spp(in,in_len,out,out_len)
char *in ;
DCULONG *in_len ;
char *out ;
DCULONG *out_len ;
{
static char resv01[9] = "¥0" ;
static char resv02[9] = "¥0" ;
dcmhs2_connect_inf data;
int rtn_code;
DCLONG size;
/*
* 回線接続要求
*/
data.text_code = DCMHSC_CONNECT_REQ; /* テキスト形態設定 */
strcpy(data.termid,"tid1"); /* ターミナルID設定 */
size = strlen(data.termid) + sizeof(data.text_code);
/* データ長設定 */
rtn_code = dc_mcf_send(DCMCFEMI,DCMCFOUT,"hsc2le1",
resv01,&data,size,resv02,
DCNOFLAGS) ;
if(rtn_code != DCMCFRTN_00000)
abort();
}
発信用MHPのコーディング例
図4-2に示した発信用MHPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/c/ap2.cのファイルで提供しています。
/*
* TP1/NET/HSC HSC2手順 発信用MHP
*/
# include <dcmcf.h>
# include <dcmhsc.h>
# include <dcmhsc2.h>
typedef struct {
DCLONG mcf[2];
DCLONG text_code;
char data[2048];
}data_t ;
/*
* MHP サービス関数
*/
void hsc2mhp()
{
char leid[16];
data_t sdata;
data_t rdata;
char resv01[9];
char resv02[9];
int rtn_code;
DCLONG rdataleng;
DCLONG *time;
/*
* 接続情報通知の受信
*/
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_receive(DCMCFFRST,DCNOFLAGS,leid,resv01,&rdata,
&rdataleng,sizeof(data_t),&time);
if( rtn_code != DCMCFRTN_00000 )
abort();
/*
* メッセージの送信(テキスト,EOT付き)
*/
sdata,text_code = DCMHSC_DLETEXT_EOT;
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
/****** メッセージの編集 ******/
rtn_code = dc_mcf_sendsync(DCMCFEMI,DCNOFLAGS,leid,resv01,&sdata,
200,resv02,DCNOFLAGS,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
/*
* メッセージの受信(テキスト)
*/
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_recvsync(DCMCFFRST,DCNOFLAGS,leid,resv01,&rdata,
&rdataleng,sizeof(data_t),&time,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
/****** メッセージの解析 ******/
/*
* メッセージの受信(EOT)
*/
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_recvsync(DCMCFFRST,DCNOFLAGS,leid,resv01,&rdata,
&rdataleng,sizeof(data_t),&time,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
/*
* メッセージの受信(DLE・EOT)
*/
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_recvsync(DCMCFFRST,DCNOFLAGS,leid,resv01,&rdata,
&rdataleng,sizeof(data_t),&time,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
}
着信用MHPのコーディング例
図4-3に示した着信用MHPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/c/ap3.cのファイルで提供しています。
/*
* TP1/NET/HSC HSC2手順 着信用MHP
*/
# include <dcmcf.h>
# include <dcmhsc.h>
# include <dcmhsc2.h>
typedef struct {
DCLONG mcf[2];
DCLONG text_code;
char data[2048];
}data_t ;
/*
* MHP サービス関数
*/
void rcvmhp()
{
char leid[16];
data_t sdata;
data_t rdata;
char resv01[9];
char resv02[9];
int rtn_code;
DCLONG rdataleng;
DCLONG size;
DCLONG req,seg;
DCLONG inbufleng;
DCLONG *time;
/*
* 接続情報通知の受信
*/
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_receive(DCMCFFRST,DCNOFLAGS,leid,resv01,&rdata,
&rdataleng,sizeof(data_t),&time);
if( rtn_code != DCMCFRTN_00000 )
abort();
/*
* メッセージの受信(テキスト)
*/
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_recvsync(DCMCFFRST,DCNOFLAGS,leid,resv01,&rdata,
&rdataleng,sizeof(data_t),&time,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
/****** メッセージの解析 ******/
/*
* メッセージの受信(EOT)
*/
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_recvsync(DCMCFFRST,DCNOFLAGS,leid,resv01,&rdata,
&rdataleng,sizeof(data_t),&time,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
/*
* メッセージの送信(テキスト,EOT付き)
*/
sdata,text_code = DCMHSC_DLETEXT_EOT;
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
/****** メッセージの編集 ******/
rtn_code = dc_mcf_sendsync(DCMCFEMI,DCNOFLAGS,leid,resv01,&sdata,
200,resv02,DCNOFLAGS,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
/*
* メッセージの送信(DLE・EOT)
*/
sdata,text_code = DCMHSC_DLE_EOT;
memset(resv01,'¥0',sizeof(resv01));
memset(resv02,'¥0',sizeof(resv02));
rtn_code = dc_mcf_sendsync(DCMCFEMI,DCNOFLAGS,leid,resv01,&sdata,
4,resv02,DCNOFLAGS,0);
if( rtn_code != DCMCFRTN_00000 )
abort();
}
●COBOL言語
COBOL言語を使用したUAPのコーディング例を示します。
発信用SPPのコーディング例
図4-2に示した発信用SPPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/cobol/sv1.cblのファイルで提供しています。
*
* TP1/NET/HSC HSC2手順 発信用SPP
*
IDENTIFICATION DIVISION.
PROGRAM-ID. SNDSPP.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
*
01 SND.
02 MSG-SEND PIC X(8) VALUE 'SEND '.
02 STATUS-CODE PIC X(5).
02 FILLER PIC X(3).
02 MCFUSE01 PIC X(4) VALUE SPACE.
02 MCFUSE02 PIC X(4) VALUE SPACE.
02 MCFUSE03 PIC 9(8).
02 MCFUSE04 PIC 9(8).
02 MCFUSE05 PIC 9(9) COMP VALUE ZERO.
02 SEND-SEG PIC X(4) VALUE 'EMI '.
02 MCFUSE06 PIC X(4) VALUE SPACE.
02 MCFUSE07 PIC X(4) VALUE SPACE.
02 MCFUSE08 PIC X(4) VALUE SPACE.
02 MCFUSE09 PIC X(8) VALUE SPACE.
02 MCFUSE10 PIC X(4) VALUE SPACE.
02 MCFUSE11 PIC X(8) VALUE SPACE.
02 MCFUSE12 PIC X(4) VALUE SPACE.
02 MCFUSE13 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE14 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE15 PIC X(1) VALUE SPACE.
02 MCFUSE16 PIC X(1) VALUE SPACE.
02 MCFUSE17 PIC X(14) VALUE LOW-VALUE.
01 CD1.
02 SENDSEG-CODE PIC X(4) VALUE 'OUT '.
02 LEID PIC X(8) VALUE 'hsc2le1 '.
02 MCFUSE18 PIC X(8) VALUE SPACE.
02 MCFUSE19 PIC X(8) VALUE SPACE.
02 MCFUSE20 PIC X(28) VALUE LOW-VALUE.
01 DATA1.
02 MSGSEG-LENG PIC 9(9) COMP VALUE 11.
02 MCFUSE21 PIC X(8).
02 TEXT-CODE PIC X(4) VALUE X'00030000'.
02 TERMINAL-ID PIC X(16) VALUE 'Termid1'.
PROCEDURE DIVISION.
CALL 'CBLDCMCF' USING SND CD1 DATA1. ** 回線接続要求 **
* 処理 1 *
*
EXIT PROGRAM.
発信用MHPのコーディング例
図4-2に示した発信用MHPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/cobol/ap2.cblのファイルで提供しています。
*
* TP1/NET/HSC HSC2手順 発信用MHP
*
IDENTIFICATION DIVISION.
PROGRAM-ID. SNDMHP.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
*
01 RCV1.
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-CODE1 PIC X(4).
02 TERMINAL-ID PIC X(16).
*
01 SND1.
02 MSG-SEND PIC X(8) VALUE 'SENDSYNC'.
02 STATUS-CODE PIC X(5).
02 FILLER PIC X(3).
02 MCFUSE01 PIC X(4) VALUE SPACE.
02 MCFUSE02 PIC X(4) VALUE SPACE.
02 MCFUSE03 PIC 9(8).
02 MCFUSE04 PIC 9(8).
02 MCFUSE05 PIC 9(9) COMP VALUE ZERO.
02 SEND-SEG PIC X(4) VALUE 'EMI '.
02 MCFUSE06 PIC X(4) VALUE SPACE.
02 MCFUSE07 PIC X(4) VALUE SPACE.
02 MCFUSE08 PIC X(4) VALUE SPACE.
02 MCFUSE09 PIC X(8) VALUE SPACE.
02 MCFUSE10 PIC X(4) VALUE SPACE.
02 MCFUSE11 PIC X(8) VALUE SPACE.
02 MCFUSE12 PIC X(4) VALUE SPACE.
02 MCFUSE13 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE14 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE15 PIC X(1) VALUE SPACE.
02 MCFUSE16 PIC X(1) VALUE SPACE.
02 MCFUSE17 PIC X(14) VALUE LOW-VALUE.
01 CD2.
02 SENDSEG-CODE PIC X(4) VALUE 'OUT '.
02 TERM-ID PIC X(8) VALUE 'hsc2le1 '.
02 MCFUSE18 PIC X(8) VALUE SPACE.
02 MCFUSE19 PIC X(8) VALUE SPACE.
02 MCFUSE20 PIC X(28) VALUE LOW-VALUE.
01 DATA2.
02 MSGSEG-LENG PIC 9(9) COMP VALUE 128.
02 MCFUSE21 PIC X(8).
02 TEXT-CODE2 PIC X(4).
02 REC-MSGSEG PIC X(124).
*
01 RCV2.
02 MSG-REC PIC X(8) VALUE 'RECVSYNC'.
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 DATA3.
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-CODE3 PIC X(4).
02 DATA0 PIC X(2044).
*
01 RCV3.
02 MSG-REC PIC X(8) VALUE 'RECVSYNC'.
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 RCV4.
02 MSG-REC PIC X(8) VALUE 'RECVSYNC'.
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.
*
PROCEDURE DIVISION.
CALL 'CBLDCMCF' USING RCV1 CD1 DATA1. ** 接続情報通知の受信 **
* 処理 1 *
MOVE X'00000002' TO TEXT-CODE2.
CALL 'CBLDCMCF' USING SND1 CD2 DATA2. ** メッセージの送信(テキスト,EOT付き) **
* 処理 2 *
CALL 'CBLDCMCF' USING RCV2 CD1 DATA3. ** メッセージの受信(テキスト) **
* 処理 3 *
CALL 'CBLDCMCF' USING RCV3 CD1 DATA3. ** メッセージの受信(EOT) **
* 処理 4 *
CALL 'CBLDCMCF' USING RCV4 CD1 DATA3. ** メッセージの受信(DLE・EOT) **
* 処理 5 *
EXIT PROGRAM.
着信用MHPのコーディング例
図4-3に示した着信用MHPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/cobol/ap3.cblのファイルで提供しています。
*
* TP1/NET/HSC HSC2手順 着信用MHP
*
IDENTIFICATION DIVISION.
PROGRAM-ID. RCVMHP.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
*
01 RCV1.
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-CODE1 PIC X(4).
02 TERMINAL-ID PIC X(16).
*
01 SND1.
02 MSG-SEND PIC X(8) VALUE 'SENDSYNC'.
02 STATUS-CODE PIC X(5).
02 FILLER PIC X(3).
02 MCFUSE01 PIC X(4) VALUE SPACE.
02 MCFUSE02 PIC X(4) VALUE SPACE.
02 MCFUSE03 PIC 9(8).
02 MCFUSE04 PIC 9(8).
02 MCFUSE05 PIC 9(9) COMP VALUE ZERO.
02 SEND-SEG PIC X(4) VALUE 'EMI '.
02 MCFUSE06 PIC X(4) VALUE SPACE.
02 MCFUSE07 PIC X(4) VALUE SPACE.
02 MCFUSE08 PIC X(4) VALUE SPACE.
02 MCFUSE09 PIC X(8) VALUE SPACE.
02 MCFUSE10 PIC X(4) VALUE SPACE.
02 MCFUSE11 PIC X(8) VALUE SPACE.
02 MCFUSE12 PIC X(4) VALUE SPACE.
02 MCFUSE13 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE14 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE15 PIC X(1) VALUE SPACE.
02 MCFUSE16 PIC X(1) VALUE SPACE.
02 MCFUSE17 PIC X(14) VALUE LOW-VALUE.
01 CD2.
02 SENDSEG-CODE PIC X(4) VALUE 'OUT '.
02 TERM-ID PIC X(8) VALUE 'hsc2le1 '.
02 MCFUSE18 PIC X(8) VALUE SPACE.
02 MCFUSE19 PIC X(8) VALUE SPACE.
02 MCFUSE20 PIC X(28) VALUE LOW-VALUE.
01 DATA2.
02 MSGSEG-LENG PIC 9(9) COMP VALUE 128.
02 MCFUSE21 PIC X(8).
02 TEXT-CODE2 PIC X(4).
02 REC-MSGSEG PIC X(124).
*
01 RCV2.
02 MSG-REC PIC X(8) VALUE 'RECVSYNC'.
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 CD3.
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 DATA3.
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-CODE3 PIC X(4).
02 DATA0 PIC X(2044).
*
01 RCV3.
02 MSG-REC PIC X(8) VALUE 'RECVSYNC'.
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 SND2.
02 MSG-SEND PIC X(8) VALUE 'SENDSYNC'.
02 STATUS-CODE PIC X(5).
02 FILLER PIC X(3).
02 MCFUSE01 PIC X(4) VALUE SPACE.
02 MCFUSE02 PIC X(4) VALUE SPACE.
02 MCFUSE03 PIC 9(8).
02 MCFUSE04 PIC 9(8).
02 MCFUSE05 PIC 9(9) COMP VALUE ZERO.
02 SEND-SEG PIC X(4) VALUE 'EMI '.
02 MCFUSE06 PIC X(4) VALUE SPACE.
02 MCFUSE07 PIC X(4) VALUE SPACE.
02 MCFUSE08 PIC X(4) VALUE SPACE.
02 MCFUSE09 PIC X(8) VALUE SPACE.
02 MCFUSE10 PIC X(4) VALUE SPACE.
02 MCFUSE11 PIC X(8) VALUE SPACE.
02 MCFUSE12 PIC X(4) VALUE SPACE.
02 MCFUSE13 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE14 PIC 9(9) COMP VALUE ZERO.
02 MCFUSE15 PIC X(1) VALUE SPACE.
02 MCFUSE16 PIC X(1) VALUE SPACE.
02 MCFUSE17 PIC X(14) VALUE LOW-VALUE.
*
PROCEDURE DIVISION.
CALL 'CBLDCMCF' USING RCV1 CD1 DATA1. ** 接続情報通知の受信 **
* 処理 1 *
CALL 'CBLDCMCF' USING RCV2 CD3 DATA3. ** メッセージの受信(テキスト) **
* 処理 2 *
CALL 'CBLDCMCF' USING RCV3 CD3 DATA3. ** メッセージの受信(EOT) **
* 処理 3 *
MOVE X'00010002' TO TEXT-CODE2.
CALL 'CBLDCMCF' USING SND1 CD2 DATA2. ** メッセージの送信(テキスト,EOT付き) **
* 処理 4 *
MOVE X'00020000' TO TEXT-CODE3.
CALL 'CBLDCMCF' USING SND2 CD3 DATA3. ** メッセージの受信(DLE・EOT) **
* 処理 5 *
EXIT PROGRAM.
●データ操作言語
データ操作言語を使用したUAPのコーディング例を示します。
発信用SPPのコーディング例
図4-2に示した発信用SPPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/dml/sv1.cblのファイルで提供しています。
*
* TP1/NET/HSC HSC2手順 発信用SPP
*
IDENTIFICATION DIVISION.
PROGRAM-ID. SNDSPP.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
*
01 SEND-AREA.
02 SE-DATALENG PIC 9(4) COMP VALUE 15.
02 SE-RSV1 PIC 9(2).
02 SE-TEXTCODE PIC X(4) VALUE X'00030000'.
02 SE-TERMID PIC X(16) VALUE 'TERMID1'.
*
* 通信記述項 *
*
COMMUNICATION SECTION.
*
* 通信記述項(送信) *
*
CD SEND-INF
FOR OUTPUT
STATUS KEY IS SE-STATUS
SYMBOLIC TERMINAL IS SE-TERMNAM.
PROCEDURE DIVISION.
*
* 回線接続要求 *
*
SEND SEND-INF
FROM SEND-AREA.
EXIT PROGRAM.
発信用MHPのコーディング例
図4-2に示した発信用MHPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/dml/ap2.cblのファイルで提供しています。
*
* TP1/NET/HSC HSC2手順 発信用のMHP
*
IDENTIFICATION DIVISION.
PROGRAM-ID. SNDMHP.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*
DATA DIVISION.
WORKING-STORAGE SECTION.
*
01 RECV-AREA.
02 RE-DATALENG PIC 9(4) COMP VALUE 508.
02 RE-RSV1 PIC 9(2).
02 RE-TEXTCODE PIC X(4).
02 RE-DATA PIC X(500).
*
01 SEND-AREA.
02 SE-DATALENG PIC 9(4) COMP VALUE 100.
02 SE-RSV1 PIC 9(2).
02 SE-TEXTCODE PIC X(4).
02 SE-DATA PIC X(100).
*
* 通信記述項 *
*
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 RECVSYNC-INF
FOR I-O
STATUS KEY IS RE-STATUS
SYMBOLIC TERMINAL IS RE-TERMNAM-S
SYNCHRONOUS MODE IS SYNC
MESSAGE DATE IS RE-DATE
MESSAGE TIME IS RE-TIME.
*
* 通信記述項(メッセージの送信) *
*
CD SEND-INF
FOR I-O
STATUS KEY IS SE-STATUS
SYMBOLIC TERMINAL IS SE-TERMNAM
SYNCHRONOUS MODE IS SYNC.
PROCEDURE DIVISION.
*
* 接続情報通知の受信 *
*
RECEIVE RECV-INF
FIRST SEGMENT
INTO RECV-AREA.
*
* メッセージの送信(テキスト,EOT付き) *
*
MOVE RE-TERMNAM TO SE-TERMNAM.
MOVE X'00010002' TO SE-TEXTCODE.
SEND SEND-INF
FROM SEND-AREA.
*
* メッセージの受信(テキスト) *
*
MOVE RE-TERMNAM TO RE-TERMNAM-S.
RECEIVE RECVSYNC-INF
FIRST SEGMENT
INTO RECV-AREA.
*
* メッセージの受信(EOT) *
*
RECEIVE RECVSYNC-INF
FIRST SEGMENT
INTO RECV-AREA.
*
* メッセージの受信(DLE・EOT) *
*
RECEIVE RECVSYNC-INF
FIRST SEGMENT
INTO RECV-AREA.
EXIT PROGRAM.
着信用MHPのコーディング例
図4-3に示した着信用MHPの例のコーディングを示します。
また,このコーディング例を,/BeTRAN/examples/mcf/HSC/aplib/dml/ap3.cblのファイルで提供しています。
*
* TP1/NET/HSC HSC2手順 着信用のMHP
*
IDENTIFICATION DIVISION.
PROGRAM-ID. RCVMHP.
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 9(2).
02 RE-TEXTCODE PIC X(4).
02 RE-DATA PIC X(1024).
*
01 SEND-AREA.
02 SE-DATALENG PIC 9(4) COMP VALUE 100.
02 SE-RSV1 PIC 9(2).
02 SE-TEXTCODE PIC X(4).
02 SE-DATA PIC X(200).
*
* 通信記述項 *
*
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 RECVSYNC-INF
FOR I-O
STATUS KEY IS RE-STATUS
SYMBOLIC TERMINAL IS RE-TERMNAM-S
SYNCHRONOUS MODE IS SYNC
MESSAGE DATE IS RE-DATE
MESSAGE TIME IS RE-TIME.
*
* 通信記述項(メッセージの送信) *
*
CD SEND-INF
FOR I-O
STATUS KEY IS SE-STATUS
SYNCHRONOUS MODE IS SYNC
SYMBOLIC TERMINAL IS SE-TERMNAM.
PROCEDURE DIVISION.
*
* 接続情報通知の受信 *
*
RECEIVE RECV-INF
FIRST SEGMENT
INTO RECV-AREA.
*
* メッセージの受信(テキスト) *
*
MOVE RE-TERMNAM TO RE-TERMNAM-S.
RECEIVE RECVSYNC-INF
FIRST SEGMENT
INTO RECV-AREA.
*
* メッセージの受信(EOT) *
*
RECEIVE RECVSYNC-INF
FIRST SEGMENT
INTO RECV-AREA.
*
* メッセージの送信(テキスト,EOT付き) *
*
MOVE RE-TERMNAM TO SE-TERMNAM.
MOVE X'00010002' TO SE-TEXTCODE.
SEND SEND-INF
FROM SEND-AREA.
*
* メッセージの送信(DLE・EOT) *
*
MOVE X'00020000' TO SE-TEXTCODE.
MOVE 8 TO SE-DATALENG.
SEND SEND-INF
FROM SEND-AREA.
EXIT PROGRAM.