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

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.