付録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は除きます。