分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス COBOL言語編

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

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

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')
サービス機能 COMMIT MHPのコミット
CBLDCMCF('COMMIT  ')
DISABLE 継続問い合わせ応答の終了
CBLDCMCF('CONTEND ')
RECEIVE 一時記憶データの受け取り
CBLDCMCF('TEMPGET ')
ROLLBACK MHPのロールバック
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.
 
 
ROLLBACKWITH STOPPING〕.
 

通信記述項について

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

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

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

データ名を指定する句 データ領域の
形式
データ領域の値の設定元
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
STATUS KEY データ名1
 PIC X(5).
B B B B B B B B B B
SYMBOLIC TERMINAL データ名2
 PIC X(8).
B U U U U U U
MESSAGE DATE データ名3
 PIC 9(6).
B
MESSAGE TIME データ名4
 PIC 9(8).
B
MAP NAME データ名5
 PIC X(8).
b U U
SYNCHRONOUS MODE データ名6
 PIC X(1).
u u
SWITCHING MODE データ名7
 PIC X(1).
u u
NEXT TRANSACTION データ名8
 PIC X(8).
u
ACTIVE INTERVAL データ名9
 PIC X(8).
u
DETAIL MODE データ名10
 PIC X(1).
u u
WAITING TIME データ名11
 PIC 1(32) BIT.
u u
(凡例)
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文では通信記述項を使いません。