ユーザアプリケーションプログラムの作成例

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.