データ操作言語を使ったコーディング

COBOL言語でUAPを作成するときに,OpenTP1のメッセージ送受信機能を,データ操作言語DML Data Manipulation Language)で作成できます。一つのサービスをコーディングするときには,CALL文とDMLは共存させることができます。

DMLは,TP1/Server Baseの場合にだけ使えます。TP1/LiNKでは,DMLは使えません。

DMLは,作業領域を定義する通信記述項と,命令文として使う通信文で構成されます。

DMLで使えるメッセージ送受信の機能を次の表に示します。

表3-1 DMLで使えるメッセージ送受信の機能

通信文機能対応するCALLインタフェース
データコミュニケーション機能RECEIVE※1メッセージの受信

CBLDCMCF('RECEIVE ')

同期型のメッセージの受信

CBLDCMCF('RECVSYNC')

SEND※1メッセージの送信

CBLDCMCF('SEND    ')

応答メッセージの送信

CBLDCMCF('REPLY   ')

同期型のメッセージの送信

CBLDCMCF('SENDSYNC')

同期型のメッセージの送受信

CBLDCMCF('SENDRECV')

ENABLE※2同期型のメッセージの送信

CBLDCMCF('SENDSYNC')

DISABLE※2同期型のメッセージの送信

CBLDCMCF('SENDSYNC')

サービス機能COMMITMHPのコミット

CBLDCMCF('COMMIT  ')

DISABLE継続問い合わせ応答の終了

CBLDCMCF('CONTEND ')

RECEIVE一時記憶データの受け取り

CBLDCMCF('TEMPGET ')

ROLLBACKMHPのロールバック

CBLDCMCF('ROLLBACK')

SENDアプリケーションプログラムの起動

CBLDCMCF('EXECAP  ')

SEND一時記憶データの更新

CBLDCMCF('TEMPPUT ')

SEND運用コマンドの実行

CBLDCADM('COMMAND ')

SENDユーザジャーナルの取得

CBLDCJNL('UJPUT   ')

メッセージの再送 - CBLDCMCF('RESEND ')のDMLインタフェースはありません。
注※1
文法については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
注※2
通信プロトコル対応製品にTP1/NET/OSI-TPを使った場合にだけ使えます。文法については,マニュアル「OpenTP1 プロトコル TP1/NET/OSI-TP編」を参照してください。

文法上の一般規則

OpenTP1のUAPで使うDMLは,COBOL言語本来の文法で記述された部分と,通信節,通信文から構成されます。ここでは通信節,通信文の記述規則,およびCOBOL言語本来の記述上で従わなければならない文法規則について説明します。ここで説明していない項目はCOBOL言語の文法規則に従います。COBOL言語の一般的な文法規則については,該当するマニュアルを参照してください。

記述記号

ここで説明する,記述形式に使う記号を次に示します。

記述記号意味
〔  〕この記号で囲まれている内容は省略できることを示します。
(例) 〔BEFORE ERASING〕
{  }この記号で囲まれている項目のうち,一つだけ選択することを示します。
__この下線記号で示す予約語は,必要語なので省略できないことを示します。下線がない予約語は,補助語なので書いても書かなくてもかまいません。

一意名およびデータ名

このマニュアルでは,一意名およびデータ名という用語をCOBOL言語で使う場合と同じ意味で使います。

(例)
データ名には添字や指標は付けられませんが,一意名には付けられます。ただし,通信文中の一意名には付けられません。

形式の詳細

通信節(COMMUNICATION SECTION)の記述規則

通信節は,データ部(DATA DIVISION)に記述します。通信節を含めたDATA DIVISIONの一般形式を次に示します。データ部の各節は,ここに示す形式で記述してください。

DATA DIVISION.
FILE SECTION.
   :  〕
WORKING-STORAGE SECTION.
   :  〕
LINKAGE SECTION.
   :  〕
COMMUNICATION SECTION.
通信記述項
   :  〕
REPORT SECTION.
   :  〕

通信節は,節の見出し(COMMUNICATION SECTIONという予約語列をピリオドと空白で止めたもの)で書き始めます。見出しのあとに一つ以上の通信記述項(CD)を記述します。

通信記述項(CD)の記述規則

通信記述項は,通信種別およびUAPとOpenTP1のインタフェース領域を定義します。通信記述項の一般形式を次に示します。

CD 通信記述名
FOR  {INPUT|OUTPUT|I-O} 〔STORAGE|JOURNAL|PROGRAM|COMMAND
STATUS KEY IS データ名1〕
〔 SYMBOLIC TERMINAL IS データ名2〕
MESSAGE DATE IS データ名3〕
MESSAGE TIME IS データ名4〕
MAP NAME IS データ名5〕
SYNCHRONOUS MODE IS {SYNC|ASYNC|データ名6}〕
SWITCHING MODE IS {NORMAL|PRIOR|データ名7}〕
NEXT TRANSACTION IS データ名8〕
ACTIVE INTERVAL IS データ名9〕
DETAIL MODE IS データ名10〕
WAITING TIME IS データ名11〕.

通信文の記述規則

通信文は,手続き部(PROCEDURE DIVISION)で使います。通信文の一般形式を次に示します。

RECEIVE 通信記述名 {〔FIRSTSEGMENT|MESSAGE}
       〔INTO 一意名1〕 〔 BEFORE ERASING 〕.


SEND 通信記述名  〔FROM 一意名1〕
   〔WITH {ESI|EMI|一意名2}〕
   〔 BEFORE RECEIVING MESSAGE INTO 一意名3〕.


DISABLE 通信記述名  〔 WITH 一意名1〕.


COMMIT.


ROLLBACK  〔WITH STOPPING〕.

通信記述項について

通信文で使う通信記述項は,複数の通信文で共用できます。これらの通信記述項には,UAPで値を設定するデータ名と,OpenTP1から値が返されるデータ名があります。OpenTP1から値が返されるデータ名以外は,通信文の前後で内容が変わりません。したがって,複数の文で同じ通信記述項を使う場合,前回使った通信文と同じ内容でよいデータ名は,値を再設定する必要がありません。

通信記述項のうちで,データ名を指定する句と,編集形式の一覧を次の表に示します。

表3-2 通信記述項でデータ名を指定する句と,編集形式の一覧

データ名を指定する句データ領域の
形式
データ領域の値の設定元
1.2.3.4.5.6.7.8.9.10.
STATUS KEYデータ名1
 PIC X(5).
BBBBBBBBBB
SYMBOLIC TERMINALデータ名2
 PIC X(8).
BUUUUUU
MESSAGE DATEデータ名3
 PIC 9(6).
B
MESSAGE TIMEデータ名4
 PIC 9(8).
B
MAP NAMEデータ名5
 PIC X(8).
bUU
SYNCHRONOUS MODEデータ名6
 PIC X(1).
uu
SWITCHING MODEデータ名7
 PIC X(1).
uu
NEXT TRANSACTIONデータ名8
 PIC X(8).
u
ACTIVE INTERVALデータ名9
 PIC X(8).
u
DETAIL MODEデータ名10
 PIC X(1).
uu
WAITING TIMEデータ名11
 PIC 1(32) BIT.
uu
(凡例)
1.:先頭セグメントの受信(RECEIVE)
2.:中間,最終セグメントの受信(RECEIVE)
3.:先頭セグメントの送信(SEND)
4.:中間,最終セグメントの送信(SEND)
5.:継続問い合わせ応答の終了(DISABLE)
6.:一時記憶データの受け取り(RECEIVE)
7.:アプリケーションプログラムの起動(SEND)
8.:一時記憶データの更新(SEND)
9.:運用コマンドの実行(SEND)
10.:ユーザジャーナルの取得(SEND)
B:OpenTP1から値が返されます。
b:ある条件のときには,OpenTP1から値が返されます。
U:UAPで値を設定します。
u:ある条件のときには,UAPで値を設定します。
-:該当しません。
注※
COMMIT文およびROLLBACK文では通信記述項を使いません。