データ操作言語を使ったコーディング
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 ') |
文法上の一般規則
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 通信記述名 {〔FIRST〕SEGMENT|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). | 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 | - | - | - | - | - | - |