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

UAPの作成例として,処理の流れを次の図に示し,その流れに沿ったコーディング例をC言語(K&R版)とCOBOL言語で示します。

また,TP1/NET/SLU-TypeP2では,このコーディング例を次のファイルで提供しています。

C言語(K&R版)のコーディング例
  • /BeTRAN/examples/mcf/SLUP2/aplib/c/ap1.c
  • /BeTRAN/examples/mcf/SLUP2/aplib/c/sv1.c
  • /BeTRAN/examples/mcf/SLUP2/aplib/c/sv2.c
COBOL言語のコーディング例
  • /BeTRAN/examples/mcf/SLUP2/aplib/cobol/ap1.cbl
  • /BeTRAN/examples/mcf/SLUP2/aplib/cobol/sv1.cbl
  • /BeTRAN/examples/mcf/SLUP2/aplib/cobol/sv2.cbl
データ操作言語のコーディング例
  • /BeTRAN/examples/mcf/SLUP2/aplib/dml/ap1.cbl
  • /BeTRAN/examples/mcf/SLUP2/aplib/dml/sv1.cbl

    図3-1 処理の流れの例

    [図データ]

C言語

#include<dcmcf.h>

#define rcvmax 5120
void slmhprcv1()
{
  char            termnam[16];
  char            mapname[16];
  char            sdatarea[2048];
  char            rdatarea[rcvmax];
  DCLONG          sdataleng;
  DCLONG          rdataleng;
  DCLONG          time;

  int             rtn;

  memset(mapname, 0, 16);
  memset(sdatarea, 0, 2048);
  memset(rdatarea, 0, rcvmax);

  rtn =dc_mcf_receive(   DCMCFFRST,
                         DCNOFLAGS,
                         termnam,
                         mapname,
                         rdatarea,
                         &rdataleng,
                         rcvmax,
                         &time   );

  /*****************************************************/
  /*                                                   */
  /*   User Service Part                               */
  /*                                                   */
  /*****************************************************/

  if(rtn !=DCMCFRTN_00000)
  {
     goto ERROR;
  }
ERROR:;
  return;
}


#include<dcmcf.h>

#define sndmax   448
#define rcvmax   5120
#define segmax   (sndmax -9 -3 -4)          /*432 bytes */

/*448 bytes */
typedef   struct senddata_s{
  char    mcf_use[8];
  char    ap_name[9];
  char    snd_dmy[3];
  char    snd_lng[4];
  char    snd_seg[segmax];
}sdata_def;

void   slsppsnd1()
{
  static char   *lename ="SL2REQ01";
  char            termnam[9];
  char            resv01[9];
  char            resv02[9];
  char            resv03[9];
  DCLONG          rdataleng;
  DCLONG          sdataleng;
  DCLONG          inbufleng;
  sdata_def       senddata;
  int     rtn_code;

  memset(resv01, 0, 9);
  memset(resv02, 0, 9);
  memset(resv03, 0, 9);

  memset(&senddata, 0x33, sizeof(senddata));

  memcpy(senddata.ap_name, "slup2snd ", 9);
  memcpy(senddata.snd_lng, "0448", 4);
  memcpy(senddata.snd_seg, "send:aaaaaaaaaa1aaaaaaaaaaaaaaa2
aaaaaaaaaaaaaaa3aaaaaaaaaaaaaaa4aaaaaaaaaaaaaaa5
aaaaaaaaaaaaaaa6aaaaaaaaaaaaaaa7aaaaaaaaaaaaaaa8
aaaaaaaaaaaaaaa9aaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaB
aaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaE
aaaaaaaaaaaaaaaFaaaaaaaaaaaaaaa0", 256);
  memcpy(senddata.snd_seg + segmax -3, "end", 3);

  rtn_code =dc_mcf_send(   DCMCFEMI,
                           DCMCFOUT,
                           lename,
                           resv01,
                           &senddata,
                           sndmax,  
                           resv02,
                           DCNOFLAGS   );
  if(rtn_code !=DCMCFRTN_00000)
  {
     goto ERROR;
  }
ERROR:;
  return;
}


#include <dcmcf.h>

#define sndmax   448
#define rcvmax   5120
#define segmax   (sndmax -9 -3 -4)/*432 bytes */

/*448 bytes */
typedef   struct senddata_s{
  char    mcf_use[8];
  char    ap_name[9];
  char    snd_dmy[3];
  char    snd_lng[4];
  char    snd_seg[segmax];
}sdata_def;

void   slsppreq1()
{
  static char   rcv_buf[rcvmax];
  static char   *lename ="SL2REQ01";
  char            termnam[9];
  char            resv01[9];
  char            resv02[9];
  char            resv03[9];
  DCLONG          rdataleng;
  DCLONG          sdataleng;
  DCLONG          inbufleng;
  sdata_def       senddata;
  DCLONG          rcvtime;
  int             rtn_code;

  memset(resv01, 0, 9);
  memset(resv02, 0, 9);
  memset(resv03, 0, 9);

  memset(&senddata, 0x33, sizeof(senddata));

  memcpy(senddata.ap_name, "slup2req ", 9);
  memcpy(senddata.snd_lng, "0448", 4);
  memcpy(senddata.snd_seg, "*FMH*aaaaaaaaaa1aaaaaaaaaaaaaaa2
aaaaaaaaaaaaaaa3aaaaaaaaaaaaaaa4aaaaaaaaaaaaaaa5
aaaaaaaaaaaaaaa6aaaaaaaaaaaaaaa7aaaaaaaaaaaaaaa8
aaaaaaaaaaaaaaa9aaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaB
aaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaE
aaaaaaaaaaaaaaaFaaaaaaaaaaaaaaa0", 256);
  memcpy(senddata.snd_seg + segmax -3, "end", 3);

  rtn_code =dc_mcf_sendrecv (DCMCFEMI,
                             DCMCFIO,
                             lename,
                             resv01,
                             &senddata,
                             sndmax,
                             rcv_buf,
                             &rdataleng,
                             rcvmax,
                             &rcvtime,
                             0);

  if(rtn_code != DCMCFRTN_00000)
  {
     goto ERROR;
  }
ERROR:;
  return;
}

COBOL言語

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).

PROCEDURE DIVISION.
**********************************************************
CALL 'CBLDCMCF'  USING   RCV    CD1    DATA1.
*
**********************************************************
*                                                        *
*  User Service Part                                     *
*                                                        *
**********************************************************
*
EXIT PROGRAM.

IDENTIFICATION    DIVISION.
PROGRAM-ID.       SPPSND.

ENVIRONMENT       DIVISION.
CONFIGURATION     SECTION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

01   SND-AREA1.
     02  DATA-A           PIC X(8)   VALUE   'SEND    '.
     02  DATA-B           PIC X(5).
     02  FILLER           PIC X(3).
     02  DATA-C           PIC X(4)   VALUE   SPACE.
     02  DATA-D           PIC X(4)   VALUE   SPACE.
     02  DATA-E           PIC 9(8).
     02  DATA-F           PIC 9(8).
     02  DATA-G           PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-H           PIC X(4)   VALUE   'EMI '.
     02  DATA-I           PIC X(4)   VALUE   SPACE.
     02  DATA-J           PIC X(4)   VALUE   'NORM'.
     02  DATA-K           PIC X(4)   VALUE   'NSEQ'.
     02  DATA-L           PIC X(8)   VALUE   SPACE.
     02  DATA-M1          PIC X(4)   VALUE   SPACE.
     02  DATA-M2          PIC X(8)   VALUE   SPACE.
     02  DATA-M3          PIC X(4)   VALUE   SPACE.
     02  DATA-M4          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M5          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M6          PIC X(1)   VALUE   SPACE.
     02  DATA-M7          PIC X(1)   VALUE   '1'.
     02  DATA-N           PIC X(14)  VALUE   LOW-VALUE.
01   SND-AREA2.
     02  DATA-O           PIC X(4)   VALUE   'OUT '.
     02  DATA-P           PIC X(8)   VALUE   'SL2REQ01'.
     02  DATA-Q           PIC X(8)   VALUE   SPACE.
     02  DATA-R           PIC X(8)   VALUE   SPACE.
     02  DATA-T           PIC X(28)  VALUE   LOW-VALUE.
01   SND-AREA3.
     02  DATA-U           PIC 9(9)   COMP   VALUE   248.
     02  DATA-V           PIC X(8).
     02  DATA-W           PIC X(248).

PROCEDURE         DIVISION.
CALL 'CBLDCMCF'  USING   SND-AREA1    SND-AREA2
     SND-AREA3.
EXIT PROGRAM.

IDENTIFICATION    DIVISION.
PROGRAM-ID.       SPPSR.

ENVIRONMENT       DIVISION.
CONFIGURATION     SECTION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

01   SR-AREA1.
     02  DATA-A           PIC X(8)   VALUE   'SENDRECV'.
     02  DATA-B           PIC X(5).
     02  FILLER           PIC X(3).
     02  DATA-C           PIC X(4)   VALUE   SPACE.
     02  DATA-D           PIC X(4)   VALUE   SPACE.
     02  DATA-E           PIC 9(8).
     02  DATA-F           PIC 9(8).
     02  DATA-G           PIC 9(9)   COMP    VALUE   248.
     02  DATA-H           PIC X(4)   VALUE   'EMI '.
     02  DATA-I           PIC X(4)   VALUE   SPACE.
     02  DATA-J           PIC X(4)   VALUE   SPACE.
     02  DATA-K           PIC X(4)   VALUE   SPACE.
     02  DATA-L           PIC X(8)   VALUE   SPACE.
     02  DATA-M1          PIC X(4)   VALUE   SPACE.
     02  DATA-M2          PIC X(8)   VALUE   SPACE.
     02  DATA-M3          PIC X(4)   VALUE   SPACE.
     02  DATA-M4          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M5          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M6          PIC X(1)   VALUE   SPACE.
     02  DATA-M7          PIC X(1)   VALUE   SPACE.
     02  DATA-N           PIC X(14)  VALUE   LOW-VALUE.
01   SR-AREA2.
     02  DATA-O           PIC X(4)   VALUE   'IO  '.
     02  DATA-P           PIC X(8)   VALUE   'SL2REQ01'.
     02  DATA-Q           PIC X(8)   VALUE   SPACE.
     02  DATA-R           PIC X(8)   VALUE   SPACE.
     02  DATA-T           PIC X(28)  VALUE   LOW-VALUE.
01   SR-AREA3.
     02  DATA-U           PIC 9(9)   COMP    VALUE   248.
     02  DATA-V           PIC X(8).
     02  DATA-W           PIC X(248).
01   SR-AREA4.
     02  DATA-X           PIC 9(9)   COMP.
     02  DATA-Y1          PIC X(7)   VALUE   SPACE.
     02  DATA-Y2          PIC X(1).
     02  DATA-Z           PIC X(248).

PROCEDURE         DIVISION.
CALL 'CBLDCMCF'  USING   SR-AREA1  SR-AREA2
     SR-AREA3  SR-AREA4.

EXIT PROGRAM.

データ操作言語

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).
*
***********************************************************
*
COMMUNICATION SECTION.
*
***********************************************************
*


    CD  RECV-IN1
    FOR  INPUT
    STATUS KEY IS                   RE-STATUS1
    SYMBOLIC TERMINAL IS            RE-TERMNAM
    MESSAGE DATE IS                 RE-DATE1
    MESSAGE TIME IS                 RE-TIME1.
*
***********************************************************
*
PROCEDURE DIVISION.
*
***********************************************************
*
    RECEIVE  RECV-IN1
        FIRST  SEGMENT
        INTO  RECV-AREA1.
*
EXIT PROGRAM.


IDENTIFICATION    DIVISION.
PROGRAM-ID.       SNDDML.

ENVIRONMENT       DIVISION.
CONFIGURATION     SECTION.
*
***********************************************************
*
DATA              DIVISION.
WORKING-STORAGE   SECTION.
*
***********************************************************
*
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  SEND-IN1
       FOR  OUTPUT
       STATUS KEY IS                 SE-STATUS1
       SYMBOLIC TERMINAL IS          SE-TERMNAM
       SYNCHRONOUS MODE IS           ASYNC
       SWITCHING MODE IS             NORMAL.
*
***********************************************************
*
PROCEDURE DIVISION.
*
***********************************************************
*
   MOVE 'SL2REQ01'TO SE-TERMNAM.
   SEND SEND-IN1
       FROM SEND-AREA1
               WITH EMI.
*
EXIT PROGRAM.