分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/XMAP3編

[目次][用語][索引][前へ][次へ]

付録G.1 コーディング例

使用する言語ごとにUAPのコーディング例を示します。

<この項の構成>
(1) C言語(K&R版)
(2) COBOL言語
(3) データ操作言語(DML)
(4) OSがWindowsの場合の注意事項

(1) C言語(K&R版)

C言語(K&R版)を使用したUAPのコーディング例を次に示します。

(a) コーディング例(C言語 その1)
 
/*
 * MHP サービス関数
 */
#include <stdio.h>
#include <dcmcf.h>
/*
 * 論理マップの取り込み
 */
#include "LOG0101I.h"                  ……1.
#include "LOG0201O.h"                  ……1.
#include "LOG1001O.h"                  ……1.
 
void uap01()
{
  int  rtn_cod;
 
  DCLONG action;
  DCLONG commform;
  char recv_term[9];
  char recv_map[9];
  DCLONG rdataleng;
  DCLONG inbufleng;
  DCLONG time;
 
  static char send_term[9] = "XPNLE201";
  static char send_map[9] = "MAM10";
  DCLONG sdataleng;
  char *pagecdat = NULL;
  DCLONG opcd;
 
  static char resv01[9] = "\0";
  static char rply_map[9] = "MAM02";
  static char nextap[9] = "\0";
 
/*
 * メッセージの受信
 */
  action = DCMCFFRST | DCMCFBUF2;
  commform = DCNOFLAGS;
  inbufleng = (DCLONG)LOG0101I.LOG0101S;
  rtn_cod = dc_mcf_receive(action,
               commform,
               recv_term,
               recv_map,
               &LOG0101I,              ……2.
               &rdataleng,
               inbufleng,
               &time);
 
/*
 *****************************************************************
 *                                                               *
 *                                                               *
 *     データの処理                                              *
 *                                                               *
 *                                                               *
 *****************************************************************
 */
 
/*
 * 一方送信メッセージの送信
 */
  action = DCMCFEMI | DCMCFNORM | DCMCFNSEQ | DCMCFBUF2;
  commform = DCMCFOUT;
  sdataleng = (DCLONG)LOG1001O.LOG1001L -4;
  opcd = DCNOFLAGS;
  rtn_cod = dc_mcf_send(action,
              commform,
              send_term,
              send_map,
              &LOG1001O,              ……2.
              sdataleng,
              pagecdat,
              opcd);
/*
 * 応答メッセージの送信
 */
  action = DCMCFEMI|DCMCFBUF2;
  commform = DCNOFLAGS;
  sdataleng = (DCLONG)LOG0201O.LOG0201L -4;
  opcd = DCNOFLAGS;
  rtn_cod = dc_mcf_reply(action,
               commform,
               resv01,
               rply_map,
               &LOG0201O,              ……2.
               sdataleng,
               nextap,
               opcd);
 
}
 

コーディング例中の1.および2.は次の意味になります。

  1. XMAP3で生成した入力・出力論理マップを#includeで取り込みます。
  2. recvdata・senddataには,XMAP3で作成した入力・出力論理マップの先頭アドレスを指定します。
(b) コーディング例(C言語 その2)
 
/*
 * MHP サービス関数
 */
#include <stdio.h>
#include <dcmcf.h>
#include <KAPS/jstqac.h>
#include <KAPS/jstqcc.h>
/*
 * 論理マップの取り込み
 */
#include "LOG0101I.h"
#include "LOG0201O.h"
#include "A4P001O.h"
 
/*
 * PAGEC情報テーブル
 */
typedef struct {
  int  pagec_id;
  char *pagec_name;
  char *pagec_tbl;
  int  resv;
}PAGEC_DAT ;
 
void uap02()
{
  PAGEC_DAT p_pgc;
  JST_PAGEC_TABLE PAGEC_AREA;
  DCLONG action;
  DCLONG commform;
  DCLONG opcd;
  DCLONG rdataleng;
  DCLONG time;
  DCLONG inbufleng;
  int  rtn_cod;
  DCLONG cdataleng;
  char re_termnam[9];
  char re_mapnam[9];
  char wkbuf[41];
  static char resv01[9] = "\0";
  static char nextap[9] = "\0";
  static char rp_mapnam[9] = "MAM02 ";
  static char se_mapnam[9] = "A4P001";
  static char se_termnam[9] = "XPNLE401";
 
/*
 * PAGEC情報の設定
 */
  p_pgc.pagec_id = DCMCFPGCT;
  p_pgc.pagec_name = "A4L4";
  p_pgc.pagec_tbl = (char *)&PAGEC_AREA;
  p_pgc.resv = 0;
  memset(&PAGEC_AREA,'0',32);
  PAGEC_AREA.jst_pagec_leng = 32;
            /* PAGECインタフェース領域長 */
  memcpy(PAGEC_AREA.jst_pagec_hopper,JST_PAGEC_HOPPER_MAIN,2);
            /* ホッパ設定                 */
  memcpy(PAGEC_AREA.jst_pagec_stacker,JST_PAGEC_STACKER_MAIN,2);
            /* スタッカ設定               */
  PAGEC_AREA.jst_pagec_face = JST_PAGEC_FACE_RECTO;
            /* 印刷面指定                 */
 
/*
 * メッセージの受信
 */
  action = DCMCFFRST|DCMCFBUF2;
  commform = DCNOFLAGS;
  inbufleng = (DCLONG)LOG0101I.LOG0101S;
  rtn_cod = dc_mcf_receive(action,
               commform,
               re_termnam,
               re_mapnam,
               &LOG0101I,
               &rdataleng,
               inbufleng,
               &time);
/*
 *****************************************************************
 *                                                               *
 *                                                               *
 *      データの処理                                             *
 *                                                               *
 *                                                               *
 *****************************************************************
 */
 
/*
 * 一方送信メッセージの送信
 */
  action = DCMCFEMI|DCMCFBUF2;
  commform = DCMCFOUT;
  opcd = DCNOFLAGS;
  sprintf(wkbuf,"send data from uap      ");
  memcpy(A4P001O.KUBUNO,wkbuf,25);
  cdataleng = ((DCLONG)A4P001O.A4P001L)-4;
  rtn_cod = dc_mcf_send(action,
              commform,
              se_termnam,
              se_mapnam,
              &A4P001O,
              cdataleng,
              (char *)&p_pgc,
              opcd);
 
/*
 * 応答メッセージの送信
 */
  action = DCMCFEMI|DCMCFBUF2;
  commform = DCNOFLAGS;
  opcd = DCNOFLAGS;
  sprintf(wkbuf,"reply data from uap     ");
  memcpy(LOG0201O.FLD0201O,wkbuf,25);
  cdataleng = ((DCLONG)LOG0201O.LOG0201L)-4;
  rtn_cod = dc_mcf_reply(action,
               commform,
               resv01,
               rp_mapnam,
               &LOG0201O,
               cdataleng,
               nextap,
               opcd);
}
 

(2) COBOL言語

COBOL言語を使用したUAPのコーディング例を次に示します。

(a) コーディング例(COBOL言語 その1)
 
*
***********************************************************
*     MHPサービスプログラム(COBOL)                        *
***********************************************************
*
 IDENTIFICATION DIVISION.
 
 PROGRAM-ID. MHPC.
 
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
*
***********************************************************
*     ワーク変数                                          *
***********************************************************
*
 DATA DIVISION.
 WORKING-STORAGE SECTION.
*
***********************************************************
*     論理マップコピー                                    *
*         LOG0101I : 入力ロジカルマップ                   *
*         LOG0201O : 出力ロジカルマップ                   *
*         LOG1001O : 出力ロジカルマップ                   *
***********************************************************
*
 COPY LOG0101I.                  ……1.
 COPY LOG0201O.                  ……1.
 COPY LOG1001O.                  ……1.
*
***********************************************************
*     メッセージの受信データ領域                          *
***********************************************************
*
 01  RECV-PARM1.
   02  RE-NAME           PIC X(8) VALUE 'RECEIVE '.
   02  RE-STATUS         PIC X(5).
   02  FILLER            PIC X(3).
   02  RE-SEG            PIC X(4) VALUE 'FRST'.
   02  RE-RSV1           PIC X(4) VALUE SPACE.
   02  RE-DATE           PIC 9(8).
   02  RE-TIME           PIC 9(8).
   02  RE-LENG           PIC 9(9) COMP VALUE 44.
   02  RE-RSV2           PIC X(4) VALUE SPACE.
   02  RE-RSV3           PIC X(4) VALUE SPACE.
   02  RE-RSV4           PIC X(4) VALUE SPACE.
   02  RE-RSV5           PIC X(4) VALUE SPACE.
   02  RE-RSV6           PIC X(8) VALUE SPACE.
   02  RE-RSV7           PIC X(4) VALUE SPACE.
   02  RE-RSV8           PIC X(8) VALUE SPACE.
   02  RE-RSV9           PIC X(4) VALUE SPACE.
   02  RE-RSV10          PIC 9(9) COMP VALUE ZERO.
   02  RE-RSV11          PIC 9(9) COMP VALUE ZERO.
   02  RE-RSV12          PIC X(1) VALUE SPACE.
   02  RE-BUFTYPE        PIC X(1) VALUE '2'.
   02  RE-RSV13          PIC X(14) VALUE LOW-VALUE.
 01  RECV-PARM2.
   02  RE-RSV14          PIC X(4) VALUE SPACE.
   02  RE-TERMNAM        PIC X(8).
   02  RE-MAPNAME        PIC X(8).
   02  RE-RSV15          PIC X(8) VALUE SPACE.
   02  RE-RSV16          PIC X(28) VALUE LOW-VALUE.
*
***********************************************************
*     一方送信メッセージの送信データ領域                  *
***********************************************************
*
 01  SEND-PARM1.
   02  SE-NAME           PIC X(8) VALUE 'SEND    '.
   02  SE-STATUS         PIC X(5).
   02  FILLER            PIC X(3).
   02  SE-RSV1           PIC X(4) VALUE SPACE.
   02  SE-RSV2           PIC X(4) VALUE SPACE.
   02  SE-RSV3           PIC 9(8).
   02  SE-RSV4           PIC 9(8).
   02  SE-RSV5           PIC 9(9) COMP VALUE ZERO.
   02  SE-SEG            PIC X(4) VALUE 'EMI '.
   02  SE-SYNC           PIC X(4) VALUE SPACE.
   02  SE-RSV6           PIC X(4) VALUE 'NORM'.
   02  SE-NO             PIC X(4) VALUE 'NSEQ'.
   02  SE-RSV7           PIC X(8) VALUE SPACE.
   02  SE-RSV8           PIC X(4) VALUE SPACE.
   02  SE-RSV9           PIC X(8) VALUE SPACE.
   02  SE-RSV10          PIC X(4) VALUE SPACE.
   02  SE-RSV11          PIC 9(9) COMP VALUE ZERO.
   02  SE-RSV12          PIC 9(9) COMP.
   02  SE-MAPMOD         PIC X(1) VALUE '0'.
   02  SE-BUFTYPE        PIC X(1) VALUE '2'.
   02  SE-PAGEC          PIC X(1) VALUE '0'.
   02  SE-RSV13          PIC X(13) VALUE LOW-VALUE.
 01  SEND-PARM2.
   02  SE-COMF           PIC X(4) VALUE 'OUT '.
   02  SE-TERMNAM        PIC X(8) VALUE 'XPNLE201'.
   02  SE-MAPNAM         PIC X(8) VALUE 'MAM10   '.
   02  SE-RSV14          PIC X(8) VALUE SPACE.
   02  SE-PAGECNAM       PIC X(6) VALUE SPACE.
   02  SE-RSV15          PIC X(28) VALUE LOW-VALUE.
*
***********************************************************
*     応答メッセージの送信データ領域                      *
***********************************************************
*
 01  RPLY-PARM1.
   02  RP-NAME           PIC X(8) VALUE 'REPLY   '.
   02  RP-STATUS         PIC X(5).
   02  FILLER            PIC X(3).
   02  RP-RSV1           PIC X(4) VALUE SPACE.
   02  RP-RSV2           PIC X(4) VALUE SPACE.
   02  RP-RSV3           PIC 9(8).
   02  RP-RSV4           PIC 9(8).
   02  RP-RSV5           PIC 9(9) COMP VALUE ZERO.
   02  RP-SEG            PIC X(4) VALUE 'EMI '.
   02  RP-SYNC           PIC X(4) VALUE SPACE.
   02  RP-RSV6           PIC X(4) VALUE SPACE.
   02  RP-RSV7           PIC X(4) VALUE SPACE.
   02  RP-RSV8           PIC X(8) VALUE SPACE.
   02  RP-OPT            PIC X(4) VALUE SPACE.
   02  RP-RSV9           PIC X(8) VALUE SPACE.
   02  RP-RSV10          PIC X(4) VALUE SPACE.
   02  RP-RSV11          PIC 9(9) COMP VALUE ZERO.
   02  RP-RSV12          PIC 9(9) COMP VALUE ZERO.
   02  RP-RSV13          PIC X(1) VALUE '0'.
   02  RP-BUFTYPE        PIC X(1) VALUE '2'.
   02  RP-RSV14          PIC X(14) VALUE LOW-VALUE.
 01  RPLY-PARM2.
   02  RP-RSV15          PIC X(4) VALUE SPACE.
   02  RP-RSV16          PIC X(8) VALUE SPACE.
   02  RP-MAPNAM         PIC X(8) VALUE 'MAM02   '.
   02  RP-NEXTAP         PIC X(8) VALUE SPACE.
   02  RP-RSV18          PIC X(28) VALUE LOW-VALUE.
*
 PROCEDURE DIVISION.
*
***********************************************************
*     メッセージの受信                                    *
***********************************************************
*
   CALL 'CBLDCMCF' USING RECV-PARM1 RECV-PARM2 LOG0101I.   ……2.
 
*
***********************************************************
*                                                         *
*                                                         *
*     データの処理                                        *
*                                                         *
*                                                         *
***********************************************************
*
 
*
***********************************************************
*     一方送信メッセージの送信                            *
***********************************************************
*
   CALL 'CBLDCMCF' USING SEND-PARM1 SEND-PARM2 LOG1001O.   ……2.
*
***********************************************************
*     応答メッセージの送信                                *
***********************************************************
*
   CALL 'CBLDCMCF' USING RPLY-PARM1 RPLY-PARM2 LOG0201O.   ……2.
*
***********************************************************
*     終了処理                                            *
***********************************************************
*
   EXIT PROGRAM.
 

コーディング例中の1.および2.は次の意味になります。

  1. XMAP3で生成した入力・出力論理マップをCOPY文で取り込みます。
  2. 一意名3には,XMAP3で作成した入力・出力論理マップを指定します。
(b) コーディング例(COBOL言語 その2)
 
*
***********************************************************
*    MHPサービスプログラム(COBOL)                         *
***********************************************************
*
 IDENTIFICATION DIVISION.
 
 PROGRAM-ID. MHPC2.
 
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
*
***********************************************************
*    ワーク変数                                           *
***********************************************************
*
 DATA DIVISION.
 WORKING-STORAGE SECTION.
*
***********************************************************
*    論理マップコピー                                     *
*      LOG0101I : 入力ロジカルマップ                      *
*      LOG0201O : 出力ロジカルマップ                      *
*      LOG1001O : 出力ロジカルマップ                      *
*      JSTQACBL : PAGECインタフェース領域                 *
*      JSTQCCBL : PAGECインタフェース領域定数             *
***********************************************************
*
 COPY LOG0101I.
 COPY LOG0201O.
 COPY A4P002O.
 COPY JSTQACBL.
 COPY JSTQCCBL.
*
***********************************************************
*    メッセージの受信データ領域                           *
***********************************************************
*
 01  RECV-PARM1.
   02  RE-NAME           PIC X(8) VALUE 'RECEIVE '.
   02  RE-STATUS         PIC X(5).
   02  FILLER            PIC X(3).
   02  RE-SEG            PIC X(4) VALUE 'FRST'.
   02  RE-RSV1           PIC X(4) VALUE SPACE.
   02  RE-DATE           PIC 9(8).
   02  RE-TIME           PIC 9(8).
   02  RE-LENG           PIC 9(9) COMP VALUE 2052.
   02  RE-RSV2           PIC X(4) VALUE SPACE.
   02  RE-RSV3           PIC X(4) VALUE SPACE.
   02  RE-RSV4           PIC X(4) VALUE SPACE.
   02  RE-RSV5           PIC X(4) VALUE SPACE.
   02  RE-RSV6           PIC X(8) VALUE SPACE.
   02  RE-RSV7           PIC X(4) VALUE SPACE.
   02  RE-RSV8           PIC X(8) VALUE SPACE.
   02  RE-RSV9           PIC X(4) VALUE SPACE.
   02  RE-RSV10          PIC 9(9) COMP VALUE ZERO.
   02  RE-RSV11          PIC 9(9) COMP VALUE ZERO.
   02  RE-RSV12          PIC X(1) VALUE SPACE.
   02  RE-BUFTYPE        PIC X(1) VALUE '2'.
   02  RE-RSV13          PIC X(14) VALUE LOW-VALUE.
 01  RECV-PARM2.
   02  RE-RSV14          PIC X(4) VALUE SPACE.
   02  RE-TERMNAM        PIC X(8).
   02  RE-MAPNAM         PIC X(8).
   02  RE-RSV15          PIC X(8) VALUE SPACE.
   02  RE-RSV16          PIC X(28) VALUE LOW-VALUE.
*
***********************************************************
*    一方送信メッセージの送信データ領域                   *
***********************************************************
*
 01  SEND-PARM1.
   02  SE-NAME           PIC X(8) VALUE 'SEND    '.
   02  SE-STATUS         PIC X(5).
   02  FILLER            PIC X(3).
   02  SE-RSV1           PIC X(4) VALUE SPACE.
   02  SE-RSV2           PIC X(4) VALUE SPACE.
   02  SE-RSV3           PIC 9(8).
   02  SE-RSV4           PIC 9(8).
   02  SE-RSV5           PIC 9(9) COMP VALUE ZERO.
   02  SE-SEG            PIC X(4) VALUE 'EMI '.
   02  SE-SYNC           PIC X(4) VALUE SPACE.
   02  SE-RSV6           PIC X(4) VALUE 'NORM'.
   02  SE-NO             PIC X(4) VALUE 'NSEQ'.
   02  SE-RSV7           PIC X(8) VALUE SPACE.
   02  SE-RSV8           PIC X(4) VALUE SPACE.
   02  SE-RSV9           PIC X(8) VALUE SPACE.
   02  SE-RSV10          PIC X(4) VALUE SPACE.
   02  SE-RSV11          PIC 9(9) COMP VALUE ZERO.
   02  SE-RSV12          PIC 9(9) COMP.
   02  SE-MAPMOD         PIC X(1) VALUE '0'.
   02  SE-BUFTYPE        PIC X(1) VALUE '2'.
   02  SE-PAGECFLG       PIC X(1) VALUE '1'.
   02  SE-RSV13          PIC X(13) VALUE LOW-VALUE.
 01  SEND-PARM2.
   02  SE-COMF           PIC X(4) VALUE 'OUT '.
   02  SE-TERMNAM        PIC X(8) VALUE 'XPNLE401'.
   02  SE-MAPNAM         PIC X(8) VALUE 'A4P002  '.
   02  SE-RSV14          PIC X(8) VALUE SPACE.
   02  SE-PAGECNAM       PIC X(6) VALUE 'A4L4  '.
   02  SE-RSV15          PIC X(22) VALUE LOW-VALUE.
*
***********************************************************
*    応答メッセージの送信データ領域                       *
***********************************************************
*
 01  RPLY-PARM1.
   02  RY-NAME           PIC X(8) VALUE 'REPLY   '.
   02  RY-STATUS         PIC X(5).
   02  FILLER            PIC X(3).
   02  RY-RSV1           PIC X(4) VALUE SPACE.
   02  RY-RSV2           PIC X(4) VALUE SPACE.
   02  RY-RSV3           PIC 9(8).
   02  RY-RSV4           PIC 9(8).
   02  RY-RSV5           PIC 9(9) COMP VALUE ZERO.
   02  RY-SEG            PIC X(4) VALUE 'EMI '.
   02  RY-SYNC           PIC X(4) VALUE SPACE.
   02  RY-RSV6           PIC X(4) VALUE SPACE.
   02  RY-RSV7           PIC X(4) VALUE SPACE.
   02  RY-RSV8           PIC X(8) VALUE SPACE.
   02  RY-OPT            PIC X(4) VALUE SPACE.
   02  RY-RSV9           PIC X(8) VALUE SPACE.
   02  RY-RSV10          PIC X(4) VALUE SPACE.
   02  RY-RSV11          PIC 9(9) COMP VALUE ZERO.
   02  RY-RSV12          PIC 9(9) COMP VALUE ZERO.
   02  RY-RSV13          PIC X(1) VALUE '0'.
   02  RY-BUFTYPE        PIC X(1) VALUE '2'.
   02  RY-RSV14          PIC X(14) VALUE LOW-VALUE.
 01  RPLY-PARM2.
   02  RY-RSV15          PIC X(4) VALUE SPACE.
   02  RY-RSV16          PIC X(8) VALUE SPACE.
   02  RY-MAPNAM         PIC X(8) VALUE 'MAM02   '.
   02  RY-NEXTAP         PIC X(8) VALUE SPACE.
   02  RY-RSV18          PIC X(28) VALUE LOW-VALUE.
*
 PROCEDURE DIVISION.
*
*
***********************************************************
*    PAGECインタフェース領域の設定                        *
***********************************************************
*
*    PAGECインタフェース領域の初期設定                    *
   MOVE JST-PAGEC-STANDARD-CNS  TO JST-PAGEC-TABLE.
*    印刷面 "表" を設定                                   *
   MOVE JST-PAGEC-FACE-RECTO  TO JST-PAGEC-FACE.
*    給紙先を設定                                         *
   MOVE JST-PAGEC-HOPPER-MAIN  TO JST-PAGEC-HOPPER.
*    排紙先を設定                                         *
   MOVE JST-PAGEC-STACKER-MAIN  TO JST-PAGEC-STACKER.
*
***********************************************************
*    メッセージの受信                                     *
***********************************************************
*
   CALL 'CBLDCMCF' USING RECV-PARM1 RECV-PARM2 LOG0101I.
 
*
***********************************************************
*                                                         *
*                                                         *
*    データの処理                                         *
*                                                         *
*                                                         *
***********************************************************
*
 
*
***********************************************************
*    一方送信メッセージの送信                             *
***********************************************************
*
   CALL 'CBLDCMCF' USING SEND-PARM1 SEND-PARM2 A4P002O
                         JST-PAGEC-TABLE.
*
***********************************************************
*    応答メッセージの送信                                 *
***********************************************************
*
   CALL 'CBLDCMCF' USING RPLY-PARM1 RPLY-PARM2 LOG0201O.
*
***********************************************************
*    終了処理                                             *
***********************************************************
*
   EXIT PROGRAM.

(3) データ操作言語(DML)

データ操作言語(DML)を使用したUAPのコーディング例を次に示します。

(a) コーディング例(データ操作言語 その1)
 
*
***********************************************************
*     MHPサービスプログラム(DML)                          *
***********************************************************
*
 IDENTIFICATION DIVISION.
 
 PROGRAM-ID. MHPD.
 
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
*
***********************************************************
*     ワーク変数                                          *
***********************************************************
*
 DATA DIVISION.
 WORKING-STORAGE SECTION.
*
***********************************************************
*     論理マップコピー                                    *
*          LOG0101I : 入力ロジカルマップ                  *
*          LOG0201O : 出力ロジカルマップ                  *
*          LOG1001O : 出力ロジカルマップ                  *
***********************************************************
*
 COPY LOG0101I.                  ……1.
 COPY LOG0201O.                  ……1.
 COPY LOG1001O.                  ……1.
*
***********************************************************
*     通信記述項                                          *
***********************************************************
*
 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
   MAP NAME IS          RE-MAPNAM.
*
***********************************************************
*     一方送信メッセージの送信                            *
***********************************************************
*
 CD SEND-INF-OUT
   FOR OUTPUT
   STATUS KEY IS        SE-STATUS-OUT
   SYMBOLIC TERMINAL IS SE-TERMNAM-OUT
   MAP NAME IS          SE-MAPNAM-OUT
   SWITCHING MODE IS    NORMAL.
*
***********************************************************
*     応答メッセージの送信                                *
***********************************************************
*
 CD SEND-INF-IO
   FOR I-O
   STATUS KEY IS        SE-STATUS-IO
   MAP NAME IS          SE-MAPNAM-IO.
 
 PROCEDURE DIVISION.
 
*
***********************************************************
*     メッセージの受信                                    *
***********************************************************
*
   RECEIVE RECV-INF
           FIRST SEGMENT
           INTO LOG0101I.        ……2.
 
*
***********************************************************
*                                                         *
*                                                         *
*     データの処理                                        *
*                                                         *
*                                                         *
***********************************************************
*
 
*
***********************************************************
*     一方送信メッセージの送信                            *
***********************************************************
*
   MOVE 'XPNLE201' TO SE-TERMNAM-OUT.
   MOVE 'MAM10   '  TO SE-MAPNAM-OUT.
 
   SEND SEND-INF-OUT
        FROM LOG1001O        ……2.
        WITH EMI.
*
***********************************************************
*     応答メッセージの送信                                *
***********************************************************
*
   MOVE 'MAM02   '    TO SE-MAPNAM-IO.
 
   SEND SEND-INF-IO
        FROM LOG0201O        ……2.
        WITH EMI.
*
***********************************************************
*     終了処理                                            *
***********************************************************
*
   EXIT PROGRAM.
 

コーディング例中の1.および2.は次の意味になります。

  1. XMAP3で生成した入力・出力論理マップをCOPY文で取り込みます。
  2. 一意名1には,XMAP3で作成した入力・出力論理マップを指定します。
(b) コーディング例(データ操作言語 その2)
 
*
***********************************************************
*    MHPサービスプログラム(DML)                           *
***********************************************************
*
 IDENTIFICATION DIVISION.
 
 PROGRAM-ID. MHPD2.
 
 ENVIRONMENT DIVISION.
 CONFIGURATION SECTION.
*
***********************************************************
*    ワーク変数                                           *
***********************************************************
*
 DATA DIVISION.
 WORKING-STORAGE SECTION.
*
***********************************************************
*    論理マップコピー                                     *
*      LOG0101I : 入力ロジカルマップ                      *
*      LOG0201O : 出力ロジカルマップ                      *
*      LOG1001O : 出力ロジカルマップ                      *
*      JSTQACBL : PAGECインタフェース領域                 *
*      JSTQCCBL : PAGECインタフェース領域定数             *
***********************************************************
*
 COPY LOG0101I.
 COPY LOG0201O.
 COPY LOG0101O.
 COPY JSTQACBL.
 COPY JSTQCCBL.
*
***********************************************************
*    通信記述項                                           *
***********************************************************
*
 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
   MAP NAME IS          RE-MAPNAM.
*
***********************************************************
*    一方送信メッセージの送信                             *
***********************************************************
*
 CD SEND-INF-OUT
   FOR OUTPUT
   STATUS KEY IS        SE-STATUS-OUT
   SYMBOLIC TERMINAL IS SE-TERMNAM-OUT
   MAP NAME IS          SE-MAPNAM-OUT
   SWITCHING MODE IS  NORMAL
*    PAGEC名の宣言                                        *
   PAGE NAME IS         PAGEC-NAME.
*
***********************************************************
*    応答メッセージの送信                                 *
***********************************************************
*
 CD SEND-INF-IO
   FOR I-O
   STATUS KEY IS        SE-STATUS-IO
   MAP NAME IS          SE-MAPNAM-IO.
 
 PROCEDURE DIVISION.
 
*
 
***********************************************************
*    メッセージの受信                                     *
***********************************************************
*
   RECEIVE RECV-INF
           FIRST SEGMENT
           INTO LOG0101I.
 
*
***********************************************************
*                                                         *
*                                                         *
*    データの処理                                         *
*                                                         *
*                                                         *
***********************************************************
*
 
*
***********************************************************
*    一方送信メッセージの送信                             *
***********************************************************
*
   MOVE 'XPNLE401' TO SE-TERMNAM-OUT.
   MOVE 'A4P001  '  TO SE-MAPNAM-OUT.
*    PAGEC名の設定                                        *
   MOVE 'A4L4  '  TO PAGEC-NAME.
*    PAGECインタフェース領域の初期設定                    *
   MOVE JST-PAGEC-STANDARD-CNS  TO JST-PAGEC-TABLE.
*    印刷面 "表" を設定                                    *
   MOVE JST-PAGEC-FACE-RECTO  TO JST-PAGEC-FACE.
*    給紙先を設定                                          *
   MOVE JST-PAGEC-HOPPER-MAIN  TO JST-PAGEC-HOPPER.
*    排紙先を設定                                          *
   MOVE JST-PAGEC-STACKER-MAIN  TO JST-PAGEC-STACKER.
*
*
   SEND SEND-INF-OUT
        FROM LOG0101O
        WITH EMI
 
   PAGE CONTROL IS JST-PAGEC-TABLE.
*
***********************************************************
*    応答メッセージの送信                                 *
***********************************************************
*
   MOVE 'MAM02   '    TO SE-MAPNAM-IO
   SEND SEND-INF-IO
        FROM LOG0201O
        WITH EMI.
*
***********************************************************
*    終了処理                                             *
***********************************************************
*
   EXIT PROGRAM.

(4) OSがWindowsの場合の注意事項

C言語およびデータ操作言語(DML)を使用したUAP(サービス関数)のコーディング例は,XMAP3が提供するサンプルプログラムを参照してください。

注※
XMAP3/Enterprise Edition Run Time SystemおよびRun Time System Upgradeは除きます。