付録B.4 プログラム例

<この項の構成>
(1) メインフレーム上のAPの例
(2) PC上の画面管理プログラムの例

(1) メインフレーム上のAPの例

PC上のGUI画面を使用して,メインフレーム上のAPを実行する場合のユーザ業務例(XDM/DCCM3オンライン,またはDCCM3オンライン),およびメインフレーム上のAPと,PC上の画面管理プログラムとのインタフェースについて説明します。

ここで前提とするシステムは,メインフレームのOSをVOS3またはVOS1とし,メインフレーム上のAPとPCは1対1になる構成とします。メインフレームとPCとの通信は拡張ホストアクセスを利用し,PC側で使用する画面管理プログラムは「ONLNPROC.C」です。

(a) 業務の流れ

GUI画面を使用したユーザ業務例として,受注データ処理,および受注伝票発行業務処理を想定します。ここでは,受注伝票発行業務画面を使用した受注データの修正について,作業の流れとインタフェースの仕組みおよび画面管理プログラムのコーディング例を示します。

画面および作業の遷移を次の図に示します。

図B-1 GUI画面を使用した受注伝票発行業務例

[図データ]

受注伝票発行業務画面の受注データ修正の処理の流れを次に示します。

  1. ユーザは,PC上のCommuniNet端末を起動しメインフレームへログインして,メインフレームのXDM/DCCM3と接続します。その後,起動したいトランザクション名を指定して,受注伝票発行業務のAPを起動させます。
  2. 「受注伝票発行業務画面」が表示されます。プッシュボタンを押して,業務を選択します。
  3. 「受注伝票発行業務画面」で「受注データ修正」をクリックすると,「受注データ修正:ヘッダ画面(一次ウィンドウ)」が表示されます。伝票番号の欄に「D0012345」を入力すると自動送信され,対応する顧客名,顧客コード,担当者名,担当者コード,および支店コードが表示されます。
  4. 「受注データ修正:ヘッダ画面」のメニューバー「アクション」のプルダウンメニュー「明細表示」を選択すると,「受注データ修正:明細画面」が表示されます。「受注データ修正:明細画面」では,全受注データを更新します。
  5. 「受注データ修正画面」のメニューバー「アクション」のプルダウンメニュー「印刷」を選択すると,受注伝票の帳票が印刷されます。
(b) 受注伝票発行業務プログラム(仮想端末のオープン)
フローチャート
仮想端末をオープンする受注伝票発行業務プログラムのフローチャートを次に示します。
[図データ]
コーディング
仮想端末をオープンする受注伝票発行業務プログラムのコーディングを次に示します。

*********************************************************
*    受注伝票発行業務プログラム                        
*                                                      
* (ディスプレイ仮想端末オープン)                      
*********************************************************
IDENTIFICATION    DIVISION.
PROGRAM-ID.       UP01.

ENVIRONMENT       DIVISION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

*  送受信用メッセージテーブル
    COPY             X3TRNTBL.

*  トランザクションコード&要求種別
    COPY             UPTBL.

*  通信節
COMMUNICATION  SECTION.
CD  MSG  FOR  I-O
    MAP  NAME  IS  MAP-NAME
    STATUS  KEY  IS  ERR-CODE.

*********************************************************
PROCEDURE          DIVISION.
*********************************************************
*  受信
*********************************************************
* メッセージ受信         SECTION.
*********************************************************
 RECEIVE  MSG  FIRST  SEGMENT  INTO  XMAP-RECV.

*  業務開始
  MOVE  '00000'    TO  ERR-CODE
  MOVE  '%MMC1R  ' TO  MAP-NAME

*  メッセージ設定
  MOVE  2920       TO  XMAP-SEND-MAPL
  MOVE  XMAP-SENDT TO  XMAP-SEND
  MOVE  UAPNAME    TO  XMAP-SEND-UAP
  MOVE  TRNCODE1   TO  XMAP-SEND-TRN
  MOVE  REQ-OPEN   TO  XMAP-SEND-REQ
  MOVE  DSPTERM    TO  XMAP-SEND-TNAME
  MOVE  ALL X'00'  TO  XMAP-SEND-PMAPNAME
  MOVE  +0         TO  XMAP-SEND-INLNG

*  送信
*********************************************************
メッセージ送信         SECTION .
*********************************************************
  SEND  MSG  FROM  XMAP-SEND  WITH  EMI.

  GOBACK.

(c) 受注伝票発行業務プログラム(メニュー画面表示)
フローチャート
メニュー画面を表示する受注伝票発行業務プログラムのフローチャートを次に示します。
[図データ]
コーディング
メニュー画面を表示する受注伝票発行業務プログラムのコーディングを次に示します。

*********************************************************
*   受注伝票発行業務プログラム                          
*                                                      
*  (メニュー画面表示)                                
*********************************************************
IDENTIFICATION    DIVISION.
PROGRAM-ID.       UP12.

ENVIRONMENT       DIVISION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

*  論理マップ
    COPY             MAPG01O.
    COPY             MAPG01I.

*  送受信用メッセージテーブル
    COPY             X3TRNTBL.

*  動的変更テーブル
    COPY             X3MODTBL.

*  トランザクションコード&要求種別
    COPY             UPTBL.

*  通信節
COMMUNICATION  SECTION.
CD  MSG  FOR  I-O
    MAP  NAME  IS  MAP-NAME
    STATUS  KEY  IS  ERR-CODE.

*********************************************************
PROCEDURE          DIVISION.
*********************************************************
*  受信
 RECEIVE  MSG  FIRST  SEGMENT  INTO  XMAP-RECV.

*********************************************************
  ユーザ業務処理部
*********************************************************
*  業務開始
  MOVE  '00000'    TO  ERR-CODE
  MOVE  '%MMC1R  ' TO  MAP-NAME

  MOVE  ALL X'3F'  TO  MAPG01G
  MOVE  XMAP-CNTRL1 TO MAPG01-CNTRLO

*  メッセージ設定
  MOVE  2920       TO  XMAP-SEND-MAPL
  MOVE  XMAP-SENDT TO  XMAP-SEND
  MOVE  UAPNAME    TO  XMAP-SEND-UAP
  MOVE  TRNCODE3   TO  XMAP-SEND-TRN
  MOVE  REQ-TRAN   TO  XMAP-SEND-REQ
  MOVE  DSPTERM    TO  XMAP-SEND-TNAME
  MOVE  'MAPG01ND' TO  XMAP-SEND-PMAPNAME
  MOVE  MAPG01S    TO  XMAP-SEND-INLNG
  COMPUTE  XMAP-SEND-MAPL = MAPG01L - 4
  MOVE  MAPG01O    TO  XMAP-SEND-MAPO

*  送信
  COMPUTE  XMAP-SEND-LL2 = XMAP-SEND-LL2 + XMAP-SEND-MAPL
  COMPUTE  XMAP-SEND-LL  = XMAP-SEND-LL  + XMAP-SEND-MAPL
  SEND  MSG  FROM  XMAP-SEND  WITH  EMI.

  GOBACK.

(d) 受注伝票発行業務プログラム(仮想端末クローズ)
フローチャート
仮想端末をクローズする受注伝票発行業務プログラムのフローチャートを次に示します。
[図データ]
コーディング
仮想端末をクローズする受注伝票発行業務プログラムのコーディングを次に示します。

*********************************************************
*    受注伝票発行業務プログラム                        
*                                                      
*  (ディスプレイ仮想端末クローズ)                    
*********************************************************
IDENTIFICATION    DIVISION.
PROGRAM-ID.       UP20.

ENVIRONMENT       DIVISION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

*  送受信用メッセージテーブル
    COPY             X3TRNTBL.

*  トランザクションコード&要求種別
    COPY             UPTBL.
*  通信節
COMMUNICATION  SECTION.
CD  MSG  FOR  I-O
MAP  NAME  IS  MAP-NAME
STATUS  KEY  IS  ERR-CODE.
*********************************************************
PROCEDURE          DIVISION.
*********************************************************

*  受信
*********************************************************
メッセージ受信         SECTION.
*********************************************************
 RECEIVE  MSG  FIRST  SEGMENT  INTO  XMAP-RECV.

*  業務開始
  MOVE  '00000'    TO  ERR-CODE
  MOVE  '%MMC1R  ' TO  MAP-NAME

*  メッセージ設定
  MOVE  2920       TO  XMAP-SEND-MAPL
  MOVE  XMAP-SENDT TO  XMAP-SEND
  MOVE  UAPNAME    TO  XMAP-SEND-UAP
  MOVE  TRNCODE8   TO  XMAP-SEND-TRN
  MOVE  REQ-CLOS   TO  XMAP-SEND-REQ
  MOVE  DSPTERM    TO  XMAP-SEND-TNAME
  MOVE  ALL X'00'  TO  XMAP-SEND-PMAPNAME
  MOVE  +0         TO  XMAP-SEND-INLNG

*  送信
*********************************************************
メッセージ送信         SECTION.
*********************************************************
  SEND  MSG  FROM  XMAP-SEND  WITH  EMI .

  GOBACK.

(e) 受注伝票発行業務プログラム(業務終了)
フローチャート
受注伝票発行業務プログラムの業務終了部分のフローチャートを次に示します。
[図データ]
コーディング
受注伝票発行業務プログラムの業務終了部分のフローチャートを次に示します。

*********************************************************
*    受注伝票発行業務プログラム
*                              
*  (業務終了)                                      
*********************************************************
IDENTIFICATION    DIVISION.
PROGRAM-ID.       UP21.

ENVIRONMENT       DIVISION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

*  送受信用メッセージテーブル
    COPY             X3TRNTBL.

*  トランザクションコード&要求種別
    COPY             UPTBL.
*  通信節
COMMUNICATION  SECTION.
CD  MSG  FOR  I-O
    MAP  NAME  IS  MAP-NAME
    STATUS  KEY  IS  ERR-CODE.

*********************************************************
PROCEDURE          DIVISION.
*********************************************************
*  受信
*********************************************************
メッセージ受信         SECTION.
*********************************************************
 RECEIVE  MSG  FIRST  SEGMENT  INTO  XMAP-RECV.

*  業務開始
  MOVE  '00000'    TO  ERR-CODE
  MOVE  '%MMC1S  ' TO  MAP-NAME

*  メッセージ設定
  MOVE  2920       TO  XMAP-SEND-MAPL
  MOVE  XMAP-SENDT TO  XMAP-SEND
  MOVE  UAPNAME    TO  XMAP-SEND-UAP
  MOVE  REQ-END    TO  XMAP-SEND-REQ

*  送信
*********************************************************
メッセージ送信         SECTION.
*********************************************************
  MOVE  +14        TO  XMAP-SEND-LL2
  MOVE  XMAP-SEND-LL = XMAP-SEND-LL1 + XMAP-SEND-LL2 + 4
  SEND  MSG  FROM  XMAP-SEND  WITH  EMI.

  GOBACK.

(2) PC上の画面管理プログラムの例

(a) 拡張ホストアクセスで2,920バイト以内のデータをやり取りする

標準的なオンライン処理を行う画面管理プログラムのサンプル「ONLNPROC.C」について説明します。

概要
XDM/DCCM3またはDCCM3を使用するメインフレーム上のAPと,PC上のXMAP3との間の論理マップデータのやり取りを中継します。なお,「ONLNPROC.C」で一度に転送できるデータは,2,920バイトまでです。
フローチャート
「ONLNPROC.C」のフローチャートを次に示します。
[図データ]
(b) 拡張ホストアクセスで2,920バイトを超えるデータをやり取りする

2,920バイトを超えるデータをやり取りするための画面管理プログラムのサンプル「ONLNPRC2.C」について説明します。

概要
XDM/DCCM3またはDCCM3を使用するメインフレーム上のAPと,PC上のXMAP3との間の論理マップデータのやり取りを中継します。なお,2,920バイトを超えるデータを転送するときは,継続入力命令または継続出力命令を使用して,2,920バイトずつに区切って転送し,最後に残った部分を入出力命令または出力命令で転送します。
フローチャート
「ONLNPRC2.C」のフローチャートを次に示します。
[図データ]
(c) 対話処理

対話処理を行うための画面管理プログラムのサンプル「TSSPROC.C」について説明します。

概要
TIOP3を使用するメインフレーム上のAPと,PC上のXMAP3との間の論理マップデータのやり取りを中継します。なお,「TSSPROC.C」で一度に転送できる論理マップのデータは2,920バイトまでです。
フローチャート
「TSSPROC.C」のフローチャートを次に示します。
[図データ]
(d) TP1/ClientによるMPPの処理

TP1/Client/Pと連携する画面管理プログラムのサンプル「TPCLPROC.C」について説明します。

概要
XDM/DCCM3を使用するメインフレーム上のAPと,PC上のXMAP3との間の論理マップデータのやり取りを中継します。なお,TP1/Client/Pを使用する場合,一度に2GBまでのデータを転送できるので,継続入出力などの処理は必要ありません。
フローチャート
「TPCLPROC.C」のフローチャートを次に示します。
[図データ]
(e) TP1/ClientによるBMPの処理

TP1/Client/Pと連携する画面管理プログラムのサンプル「TPCLPRC2.C」について説明します。

概要
DCCM3/TCPを使用するメインフレーム上のAPから,PC上のXMAP3への論理マップデータの送信を中継します。なお,TP1/Client/Pを使用する場合,PCからメインフレームには送達確認メッセージだけを送信します。
フローチャート
「TPCLPRC2.C」のフローチャートを次に示します。
[図データ]
(f) COBOLによる画面管理プログラム

COBOLで作成した画面管理プログラムのサンプル「ONLNPRC2.CBL」について説明します。

概要
XDM/DCCM3またはDCCM3を使用するメインフレーム上のAPと,PC上のXMAP3との間の論理マップデータのやり取りを中継します。なお,2,920バイトを超えるデータを転送するときは,継続入力命令または継続出力命令を使用して,2,920バイトずつに区切って転送し,最後に残った部分を入出力命令または出力命令で転送します。
フローチャート
「ONLNPRC2.CBL」のフローチャートを次に示します。
[図データ]