OpenTP1 Version 7

分散トランザクション処理機能

OpenTP1 プロトコル TP1/NET/Secondary Logical Unit - TypeP2編

解説・手引・文法・操作書

3000-3-D80

目　　次

前書き

はじめに

1.　概要

1.1　AP間通信の概要

1.2　AP間通信の形態

1.2.1　通信形態

1.3　ソフトウェアの構成

1.3.1　前提プログラム

1.3.2　ソフトウェア構成の例

2.　機能

2.1　AP間通信の仕組み

2.1.1　コネクションの確立と解放

2.1.2　コネクションと論理端末の関係

2.1.3　論理端末とアプリケーションの型の関係

2.1.4　メッセージの分割と組み立て

2.2　AP間通信メッセージの送受信

2.2.1　問い合わせメッセージの送信と応答メッセージの受信

2.2.2　一方送信メッセージの送信と受信

2.2.3　アプリケーション名の決定

3.　メッセージ送受信インタフェース

メッセージ送受信インタフェースの一覧

dc_mcf_receive － 一方送信メッセージの受信（C言語）

dc_mcf_recvsync － 同期型の応答メッセージの受信（C言語）

dc_mcf_resend － メッセージの再送（C言語）

dc_mcf_send － 一方送信メッセージの送信（C言語）

dc_mcf_sendrecv － 同期型の問い合わせメッセージの送受信（C言語）

CBLDCMCF('RECEIVE ') － 一方送信メッセージの受信（COBOL言語）

CBLDCMCF('RECVSYNC') －同期型の応答メッセージの受信（COBOL言語）

CBLDCMCF('RESEND ') － メッセージの再送（COBOL言語）

CBLDCMCF('SEND ') － 一方送信メッセージの送信（COBOL言語）

CBLDCMCF('SENDRECV') － 同期型の問い合わせメッセージの送受信（COBOL言語）

RECEIVE － メッセージの受信（データ操作言語）

SEND － メッセージの送信（データ操作言語）

ユーザアプリケーションプログラム作成例

4.　ユーザオウンコーディング，MCFイベントインタフェース

4.1　ユーザオウンコーディングインタフェース

4.1.1　入力メッセージの編集とアプリケーション名の決定

4.1.2　入力メッセージ編集UOCインタフェース

4.1.3　出力メッセージの編集

4.1.4　出力メッセージ編集UOCインタフェース

4.1.5　送信メッセージの通番編集

4.1.6　送信メッセージの通番編集UOCインタフェース

4.1.7　UOC作成上の注意事項

4.2　MCFイベントインタフェース

4.2.1　MCFイベントの種類

4.2.2　MCFイベント通知時のセグメント構成

4.2.3　MCFイベント情報の形式（C言語）

4.2.4　MCFイベント情報の形式（COBOL言語）

5.　システム定義

SLU - TypeP2の定義の概要

SLU - TypeP2固有のシステム定義の種類

mcfmuap（UAP共通定義）

mcftalccn（コネクション定義の開始）

mcftalced（コネクション定義の終了）

mcftalcle（論理端末定義）

システムサービス情報定義

システムサービス共通情報定義

MCF定義オブジェクトの生成

自システムの通信管理プログラムと関連づける内容

定義例

6.　運用コマンド

SLU - TypeP2の運用コマンド

mcftactcn（コネクションの確立）

mcftactle（論理端末の閉塞解除）

mcftdctcn（コネクションの解放）

mcftdctle（論理端末の閉塞）

mcftlscn（コネクションの状態表示）

mcftlsle（論理端末の状態表示）

7.　組み込み方法

7.1　SLU - TypeP2の組み込みの流れ

7.2　MCFメイン関数の作成

7.3　定義オブジェクトファイルの生成

8.　障害対策

8.1　障害の種類と対応処理

8.1.1　SLU - TypeP2運用中の障害と対応処理

8.1.2　論理端末ごとの障害処理

8.2　コネクション障害

8.3　論理端末障害

付録

付録A　メッセージ送受信の処理の流れ

付録B　障害発生時の処理の流れ

付録C　理由コードおよびセンスコード一覧

付録C.1　ERREVT2の理由コード

付録C.2　CERREVTの理由コード

付録C.3　SLU - TypeP2が使用するセンスコード

付録D　用語解説

索引

[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2006, Hitachi, Ltd.

前書き

■ 対象製品

・適用OS：AIX 5L V5.1，AIX 5L V5.2，AIX 5L V5.3

P-1M64-3131　 uCosminexus TP1/Message Control　 07-00
P-1M64-3231　 uCosminexus TP1/NET/Library　 07-00
P-F1M64-3231B　 uCosminexus TP1/NET/Secondary Logical Unit - TypeP2　 07-00

これらのプログラムプロダクトのほかにも，このマニュアルをご利用になれる場合があります。詳細は「リリースノート」でご確認ください。
これらの製品は，ISO9001およびTickITの認証を受けた品質マネジメントシステムで開発されました。

■ 輸出時の注意

本製品を輸出される場合には，外国為替および外国貿易法ならびに米国の輸出管理関連法規などの規制をご確認の上，必要な手続きをお取りください。
なお，ご不明な場合は，弊社担当営業にお問い合わせください。

■ 商標類

AIXは，米国における米国International Business Machines Corp.の登録商標です。
IMSは，米国における米国International Business Machines Corp.の商標です。
SNAは，米国International Business Machines Corp.のプロトコル名称です。
UNIXは，X/Open Company Limitedが独占的にライセンスしている米国ならびに他の国における登録商標です。

■ 発行

2006年11月（第1版）3000-3-D80

■ 著作権

All Rights Reserved. Copyright (C) 2006, Hitachi, Ltd.

はじめに

このマニュアルは，TP1/NET/Secondary Logical Unit - TypeP2の概要，機能，操作，および運用について説明したものです。

本文中に記載されている製品のうち，このマニュアルの対象製品ではない製品については，OpenTP1 Version 7対応製品の発行時期をご確認ください。

対象読者

OpenTP1システムの通信にSLUTYPE-Pプロトコルを使用するシステム管理者，システム設計者，およびプログラマを対象としています。また，オンラインやOpenTP1システムの基礎的な知識を持っていて，次のマニュアルを理解されていることを前提としています。

OpenTP1 解説　（3000-3-D50）

OpenTP1 プログラム作成の手引　（3000-3-D51）

OpenTP1 システム定義　（3000-3-D52）

OpenTP1 運用と操作　（3000-3-D53）

OpenTP1 プログラム作成リファレンス C言語編　（3000-3-D54）

OpenTP1 プログラム作成リファレンス COBOL言語編　（3000-3-D55）

マニュアルの構成

このマニュアルは，次に示す章と付録から構成されています。

第1章　概要

SLU - TypeP2を使用したシステム間の通信（AP間通信）の概要について説明しています。

第2章　機能

SLU - TypeP2が設定するコネクションの確立方法，メッセージの種類と送受信の方法について説明しています。

第3章　メッセージ送受信インタフェース

UAPの作成方法，および作成例について説明しています。

第4章　ユーザオウンコーディング，MCFイベントインタフェース

SLU - TypeP2に関連するユーザオウンコーディングインタフェース，およびMCFイベントインタフェースについて説明しています。

第5章　システム定義

SLUTYPE-Pプロトコルを使用するために必要な，OpenTP1のシステム定義の中でのSLU - TypeP2固有のシステム定義について説明しています。また，自システム内にある通信管理プログラムと関連づける内容，および定義例について説明しています。

第6章　運用コマンド

SLU - TypeP2で使用する運用コマンドについて説明しています。

第7章　組み込み方法

SLU - TypeP2をOpenTP1システムへ組み込む方法について説明しています。

第8章　障害対策

SLU - TypeP2運用中に発生する障害と，SLU - TypeP2の対応処理，およびメッセージの処理について説明しています。

付録A　メッセージ送受信の処理の流れ

メッセージを送受信するときのデータの流れ，ジャーナル取得のタイミングについて説明しています。

付録B　障害発生時の処理の流れ

障害が発生した場合の処理の流れについて説明しています。

付録C　理由コードおよびセンスコード一覧

障害通知イベントが発生した場合の理由コード，および-RSP送信時のセンスコードについて説明しています。

付録D　用語解説

SLU - TypeP2で使用する用語について説明しています。

関連マニュアル

読書手順

このマニュアルは，利用目的に合わせて章を選択して読むことができます。利用目的別に，次の流れに従ってお読みいただくことをお勧めします。

図中で使用する記号

このマニュアルの図中で使用する記号を，次のように定義します。

文法の記号

このマニュアルで使用する各種の記号を説明します。

(1)文法記述記号

文法の記述形式について説明する記号です。

文法記述記号
意味

〔　　〕
この記号で囲まれている項目は省略できることを示します。

（例）〔-s MCF通信プロセス識別子〕

-sオプションとそのオペランドを指定するか，何も指定しないことを示します。

｜
（ストローク）
この記号で区切られた項目は選択できることを示します。

（例）-t reply｜request

-tオプションにreplyまたはrequestを指定できることを示します。

ただし，C言語のインタフェースの説明でこの記号を使用した場合は，C言語の文法規則に従います。

｛　　｝
この記号で囲まれている複数の項目のうちから一つを選択できることを示します。

（例）｛DCMCFESI｜DCMCFEMI｝

DCMCFESIとDCMCFEMIのうち，どちらかを指定できることを示します。

（下線）
この記号で示す項目は，オペランド，オプションまたはコマンド引数を省略した場合の省略時解釈値を示します。

（例）-i auto｜manual

-iオプションを省略した場合，manualを省略時解釈値とすることを示します。

ただし，データ操作言語の説明の場合，この下線記号で示す予約語は，省略できないことを示します。下線がない予約語は，補助語なので書いても書かなくてもかまいません。

…
この記号で示す直前の一つの項目を繰り返し指定できることを示します。ただし，項目が括弧で囲まれている場合，括弧全体が一つの項目となります。

△
（白三角）
空白を示します。

（例）コネクションID1△コネクションID2

コネクションID1とコネクションID2の間に，空白を1個入力することを示します。

(2)属性表示記号

ユーザ指定値の範囲などを説明する記号です。

属性表示記号 | 意味
～ | この記号のあとにユーザ指定値の属性を示します。
《　　》 | ユーザが指定を省略したときの省略時解釈値を示します。
＜　　＞ | ユーザ指定値の構文要素を示します。
((　　)) | ユーザ指定値の指定範囲を示します。

(3)構文要素記号

ユーザ指定値の内容を説明する記号です。

構文要素記号
意味

＜英字＞
アルファベット（A～Z，a～z）と _（アンダスコア）

＜英字記号＞
アルファベット（A～Z，a～z）と＃，＠，¥

＜英数字＞
英字と数字（0～9）

＜英数字記号＞
英字記号と数字（0～9）

＜符号なし整数＞
数字列（0～9）

＜16進数字＞
数字（0～9）とアルファベット（A～F，a～f）

＜識別子＞
先頭がアルファベットの英数字列

＜記号名称＞
先頭が英字記号の英数字記号列

＜文字列＞
任意の文字の配列

＜パス名＞
記号名称，／，および．（ピリオド）
（ただし，パス名は使用するOSに依存）

このマニュアルでの表記

（1）製品名

このマニュアルで使用する製品名称の略称を次に示します。

製品名称 | 略称
AIX 5L V5.1 | AIX
AIX 5L V5.2
AIX 5L V5.3
uCosminexus TP1/Message Control | TP1/Message Control
uCosminexus TP1/NET/Library | TP1/NET/Library
uCosminexus TP1/NET/Secondary Logical Unit - TypeP2 | TP1/NET/Secondary Logical Unit - TypeP2または SLU - TypeP2

（2）JISコード配列のキーボードとASCIIコード配列のキーボードとの違いについて

JISコード配列とASCIIコード配列では，次に示すコードで入力文字の違いがあります。このマニュアルの文字入力例（コーディング例）の表記は，JISコード配列（日本語のキーボード）に従った文字に統一しています。

コード | JISコード配列 | ASCIIコード配列
(5c)₁₆ | '￥'（円記号） | '＼'（バックスラッシュ）
(7e)₁₆ | '￣'（オーバライン） | '～'（チルド）

略語一覧

このマニュアルで使用する英略語の一覧を次に示します。

英略語 | 英字での表記
AP | Application Program
FM | Function Management
HNA | Hitachi Network Architecture
LAN | Local Area Network
LU | Logical Unit
MCF | Message Control Facility
MHP | Message Handling Program
OS | Operating System
PLU | Primary Logical Unit
RU | Request UnitまたはResponse Unit
SPP | Service Providing Program
TS | Transmission Services
UAP | User Application Program
UOC | User Own Coding
WAN | Wide Area Network

常用漢字以外の漢字の使用について

このマニュアルでは，常用漢字を使用することを基本としていますが，次に示す用語については，常用漢字以外の漢字を使用しています。

個所（かしょ）　閉塞（へいそく）

KB（キロバイト）などの単位表記について

1KB（キロバイト），1MB（メガバイト），1GB（ギガバイト），1TB（テラバイト）はそれぞれ1,024バイト，1,024²バイト，1,024³バイト，1,024⁴バイトです。

謝辞

COBOL言語仕様は，CODASYL（the Conference on Data Systems Languages：データシステムズ言語協議会）によって，開発された。OpenTP1のユーザアプリケーションプログラムのインタフェース仕様のうち，データ操作言語（DML　Data Manipulation Language）の仕様は，CODASYL　COBOL（1981）の通信節，RECEIVE文，SEND文，COMMIT文，及びROLLBACK文を参考にし，それに日立製作所独自の解釈と仕様を追加して開発した。原開発者に対し謝意を表すとともに，CODASYLの要求に従って以下の謝辞を掲げる。なお，この文章は，COBOLの原仕様書「CODASYL COBOL JOURNAL OF DEVELOPMENT 1984」の謝辞の一部を再掲するものである。

いかなる組織であっても，COBOLの原仕様書とその仕様の全体又は一部分を複製すること，マニュアルその他の資料のための土台として原仕様書のアイデアを利用することは自由である。ただし，その場合には，その刊行物のまえがきの一部として，次の謝辞を掲載しなければならない。書評などに短い文章を引用するときは，"COBOL"という名称を示せば謝辞全体を掲載する必要はない。

COBOLは産業界の言語であり，特定の団体や組織の所有物ではない。

CODASYL　COBOL委員会又は仕様変更の提案者は，このプログラミングシステムと言語の正確さや機能について，いかなる保証も与えない。さらに，それに関連する責任も負わない。

　次に示す著作権表示付資料の著作者及び著作権者

FLOW-MATIC（Sperry Rand Corporationの商標），

Programming for the Univac（R）I and II，Data Automation Systems，

Sperry Rand Corporation　著作権表示1958年，1959年；

IBM Commercial Translator Form No.F 28-8013，IBM著作権表示1959年；

FACT，DSI 27A5260-2760，Minneapolis-Honeywell，著作権表示1960年

は，これら全体又は一部分をCOBOLの原仕様書中に利用することを許可した。この許可は，COBOL原仕様書をプログラミングマニュアルや類似の刊行物に複製したり，利用したりする場合にまで拡張される。

1.　概要

SLU - TypeP2は，OpenTP1システムを構成するプログラムの一つです。ホストコンピュータ，端末などをSLUTYPE-Pプロトコルによって論理的に接続し，メッセージを送受信します。

この章では，SLU - TypeP2を使用したシステム間の通信（AP間通信）の概要について説明します。

＜この章の構成＞

1.1　AP間通信の概要

1.2　AP間通信の形態

1.3　ソフトウェアの構成

1.1　AP間通信の概要

AP間通信とは，異なるシステムにあるアプリケーションプログラム間でのメッセージ送受信をいいます。SLU - TypeP2は，SLUTYPE-Pプロトコルの2次局側として，1次局側のホストシステムとAP間通信をするプログラムです。SLU - TypeP2を使用したAP間通信では，相手システムで発生したトランザクションを自システムで処理したり，その結果を送信したりできます。

SLU - TypeP2を使用したネットワーク構成の例を次の図に示します。

図1-1　SLU - TypeP2を使用したネットワーク構成の例

1.2　AP間通信の形態

＜この節の構成＞

1.2.1　通信形態

1.2.1　通信形態

AP間通信を使用すると，自システムで発生したトランザクションを相手システムで処理したり，その結果を受信したりできます。また，相手システムで発生したトランザクションを自システムで処理したり，その結果を送信したりできます。

SLU - TypeP2を使用したAP間通信の形態には，次の四つがあります。

一方受信

分岐送信

同期送受信

同期受信

SLU - TypeP2を使用したAP間通信の例を次の図に示します。

図1-2　SLU - TypeP2を使用したAP間通信の例

＜この項の構成＞

(1)　一方受信

(2)　分岐送信

(3)　同期送受信

(4)　同期受信

(1)　一方受信

相手システムからAP間通信の開始要求を受信する形態です。開始要求を受信すると，SLU - TypeP2はメッセージ送受信のためのアプリケーションを起動します。

(2)　分岐送信

相手システムに対して，メッセージを送信する形態です。

(3)　同期送受信

自システムからメッセージを送信し，応答を受信する形態です。このとき，自システムからメッセージを送信後，相手システムからの応答を待ちます。応答を受信したときに，同期送受信を要求したUAPに制御を返します。

(4)　同期受信

同期送受信でメッセージが複数に分割されている場合，2番目以降を受信する形態です。メッセージの先頭部分は同期送受信で受け取ります。メッセージの最終部分の受信が完了すると，同期受信を要求したUAPに制御を返します。

この形態は，同期送受信のメッセージが単一の場合は適用されません。

1.3　ソフトウェアの構成

SLU - TypeP2は，OpenTP1システムに組み込まれて動作するプログラムです。OpenTP1のメッセージ送受信機能(TP1/Message Control，TP1/NET/Library)と連携して，メッセージ制御機能（MCF）を実現します。

この節では，SLU - TypeP2を使用したMCFを実現するための前提プログラムと，SLU - TypeP2を組み込んだソフトウェア構成について説明します。

＜この節の構成＞

1.3.1　前提プログラム

1.3.2　ソフトウェア構成の例

1.3.1　前提プログラム

SLU - TypeP2を使用したMCFを実現するための前提プログラムは次のとおりです。

適用OS：AIX

P-1M64-2131　uCosminexus TP1/Server Base　07-00以降

P-1M14-511　XNF/AS/BASE※

P-F1M14-5111　XNF/AS/WAN※

P-F1M14-5116　XNF/AS/HNA2※

注※

前提となるXNFのバージョンは，AIX V5.1以降に対応するバージョン以降です。

1.3.2　ソフトウェア構成の例

SLU - TypeP2を組み込んだソフトウェア構成の例を次の図に示します。また，SLU - TypeP2がAP間通信で使用するプロトコルおよび通信相手プログラムを表1-1に示します。

図1-3　SLU - TypeP2を組み込んだソフトウェア構成の例

注※1

SLU - TypeP2で扱うUAPは，MHPおよびSPPです。UAPについては，マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

注※2

XNF/ASを使用できます。

表1-1　SLU - TypeP2に適用するAP間通信のプロトコル

プロトコル | 通信相手
SLUTYPE-Pプロトコル | IMS IBMホストシステム

2.　機能

一般に，AP間通信をするときには，自システムと相手システムとの間であらかじめ通信上の規約（プロトコル）を決める必要があります。SLU - TypeP2は，二つのシステムの間にコネクションという論理的通信路を設定し，メッセージを送受信します。

この章では，SLU - TypeP2が設定するコネクションの確立方法，メッセージの種類と送受信の方法について説明します。

＜この章の構成＞

2.1　AP間通信の仕組み

2.2　AP間通信メッセージの送受信

2.1　AP間通信の仕組み

＜この節の構成＞

2.1.1　コネクションの確立と解放

2.1.2　コネクションと論理端末の関係

2.1.3　論理端末とアプリケーションの型の関係

2.1.4　メッセージの分割と組み立て

2.1.1　コネクションの確立と解放

SLU - TypeP2では，相手システムとの間に論理的通信路（コネクション）を確立してメッセージを送受信します。コネクションは，SLUTYPE-Pプロトコルのセションに対応します。

＜この項の構成＞

(1)　コネクションの確立

(2)　コネクション確立時のチェック項目

(3)　コネクション確立時の再試行

(4)　コネクションの正常解放

(5)　コネクションの強制解放

(6)　コネクション解放後の回復動作

(1)　コネクションの確立

コネクションの確立方法には，次の三つがあります。

ホストからの要求による確立

SLU - TypeP2の定義による自動確立

運用コマンド入力による手動確立

(a)　ホストからの要求による確立

ホスト（相手システム）からコネクションの確立の要求を受ける方法です。

システム定義時，コネクション定義の起動種別（mcftalccn -k）にホスト起動（host）が指定された場合，SLU - TypeP2はホストからの確立要求（BIND）を待ちます。コネクション確立後，すべての論理端末を閉塞解除し，UAPにコネクションの確立（COPNEVT）を通知します。

ホストからの要求による確立を次の図に示します。

図2-1　ホストからの要求による確立

(b)　SLU - TypeP2の定義による自動確立

システム定義時，コネクション定義の起動種別（mcftalccn -k）に端末起動（ws）が指定され，かつ自動確立（-i auto）が指定された場合，SLU - TypeP2はホストに対して確立要求を送信します。コネクション確立後，すべての論理端末を閉塞解除し，UAPにコネクションの確立（COPNEVT）を通知します。

SLU - TypeP2の定義による自動確立を次の図に示します。

図2-2　SLU - TypeP2の定義による自動確立

(c)　運用コマンド入力による手動確立

システム定義時，コネクション定義の起動種別（mcftalccn -k）に端末起動（ws）が指定され，かつ手動確立（-i manual）が指定された場合，または，コネクション解放後に再確立する場合，運用コマンド（mcftactcn）を入力することでコネクションを確立できます。このとき，SLU - TypeP2はホストに対して確立要求を送信します。コネクション確立後，すべての論理端末を閉塞解除し，UAPにコネクションの確立（COPNEVT）を通知します。

運用コマンド入力による手動確立を次の図に示します。

図2-3　運用コマンド入力による手動確立

(2)　コネクション確立時のチェック項目

ホストからの要求によってコネクションを確立する場合，SLU - TypeP2はホストから受信した確立要求（BINDコマンド）のパラメタをチェックします。このチェックの結果，エラーが検出されると否定応答（センスコード=0821）が出力されます。否定応答（センスコード=0821）は，次のエラーが検出された場合に出力されます。

BIND指令中のセションパラメタが不正の場合

2次局側でサポートしていない内容を含んでいる場合

SLU - TypeP2で固有にチェックするパラメタの内容を次の表に示します。

表2-1　パラメタのチェック内容

内容
位置
（バイト）
長さ
（バイト）
チェック基準値
（16進数字）

フォーマット，BIND指令種別
1
1
(01)₁₆，または(00)₁₆

FMプロファイル番号
2
1
(04)₁₆

TSプロファイル番号
3
1
(04)₁₆

PLUプロトコル
4
1
(b1)₁₆

SLUプロトコル
5
1
(b1)₁₆

共通プロトコル
6
2
(6080)₁₆

SLU送信最大RU長※
10
1
(00)₁₆，またはMCF通信構成定義の送信最大RU長（mcftalccn -r sndrusiz）の指定値

SLU受信最大RU長※
11
1
(00)₁₆，またはMCF通信構成定義の受信最大RU長（mcftalccn -r rcvrusiz）の指定値

LUタイプ
14
1
(00)₁₆

注※

SLU送信最大RU長とSLU受信最大RU長は，相手システム（ホストシステム）で定義される最大RU長です。これらの値は，自システム（OpenTP1システム）のMCF通信構成定義（mcftalccn）の-r sndrusizと-r rcvrusizの指定値と，次に示す大小関係にある場合に有効となります。

自システムの送信最大RU長（-r sndrusiz）の指定値が，ホストシステムで指定されているSLU送信最大RU長以下の場合

自システムの受信最大RU長（-r rcvrusiz）の指定値が，ホストシステムで指定されているSLU受信最大RU長以上の場合

(3)　コネクション確立時の再試行

SLU - TypeP2は，コネクション確立時，コネクション定義の起動種別（mcftalccn -k）に端末起動（ws）が指定された場合，コネクション定義のコネクション確立再試行（mcftalccn -b）で指定された値に基づいてコネクション確立の再試行をします。

コネクション定義の詳細については，5章の「mcftalccn（コネクション定義の開始）」を参照してください。

(4)　コネクションの正常解放

コネクションの正常解放には，次の三つがあります。

ホストからの解放

システム終了時の解放

運用コマンド（mcftdctcn）の入力による解放

コネクションが正常解放された場合，論理端末は自動的に閉塞され，SLU - TypeP2はUAPにコネクションの解放（CCLSEVT）を通知します。なお，システム終了時は，CCLSEVTは通知されません。

コネクションの正常解放は，ユーザ間のデータ送受信が終了したあとに行ってください。

ホストからの解放を図2-4に，システム終了時の解放を図2-5に，運用コマンド入力による解放を図2-6に示します。

図2-4　ホストからの解放

図2-5　システム終了時の解放

図2-6　運用コマンド（mcftdctcn）入力による解放

(5)　コネクションの強制解放

コネクションの強制解放には，次の三つがあります。

下位障害発生による解放

運用コマンド（mcftdctcn -f）の入力による解放

バッファ不足などの内部矛盾による解放

コネクションが強制解放された場合，論理端末は自動的に閉塞され，SLU - TypeP2はUAPにコネクションの解放（CERREVT）を通知します。下位障害，内部矛盾などの障害対策については，「8.　障害対策」を参照してください。

下位障害発生による解放を図2-7に，運用コマンド（mcftdctcn -f）入力による解放を図2-8に，内部矛盾による解放を図2-9に示します。

図2-7　下位障害発生による解放

図2-8　運用コマンド（mcftdctcn -f）入力による解放

注※

通信管理で発行されます。

図2-9　内部矛盾による解放

(6)　コネクション解放後の回復動作

システム定義のコネクション定義の起動種別（mcftalccn -k）に指定するオペランドによって，SLU - TypeP2では解放したコネクションの回復動作が異なります。

コネクション定義の起動種別（mcftalccn -k）の指定内容とSLU - TypeP2の動作を次の表に示します。

表2-2　-kオプションの指定内容とSLU - TypeP2の動作

-kオプションの指定内容 | SLU - TypeP2の動作
host（ホスト起動） | コネクション解放後，ホストからのコネクション確立要求を待ちます。
ws（端末起動） | コネクション解放後，ユーザからの運用コマンド（mcftactcn）の入力を待ちます。

なお，コマンド入力による手動回復なのか，システムによる自動回復なのかを示す回復動作情報は，SLU - TypeP2がCERREVTまたはCCLSEVTに設定します。これらのイベントの種類および詳細については，「4.2　MCFイベントインタフェース」を参照してください。

コネクション定義の起動種別（mcftalccn -k）にホスト起動（host）が指定されたコネクションに対して運用コマンド（mcftactcn）が入力された場合，mcftactcnコマンドはエラーリターンして，SLU - TypeP2がメッセージログ（KFCA15342-E）を出力します。

また，コネクション定義の起動種別（mcftalccn -k）に端末起動（ws）が指定された場合，該当するコネクションに対して運用コマンド（mcftactcn）が入力されるまで，ホストからのコネクション確立要求は通信管理によって拒否されます。

2.1.2　コネクションと論理端末の関係

SLU - TypeP2は，論理端末を通して，自システムのUAPとメッセージを送受信します。この論理端末は，SLU - TypeP2とUAPとの通信接点に当たります。

これに対してコネクションとは，SLU - TypeP2が通信管理プログラムを介して，相手システムのUAPとメッセージを送受信するときに確立するものです。コネクションと論理端末の指定を対応させると，自システムと相手システムとの論理的通信路が確立でき，AP間通信ができるようになります。コネクションと論理端末は，システム定義時に対応させます。

2.1.3　論理端末とアプリケーションの型の関係

SLU - TypeP2で扱う論理端末の端末タイプには，次の三つがあります。

send（送信型論理端末）

receive（受信型論理端末）

request（問い合わせ型論理端末）

アプリケーションは，ユーザが送受信データの中に指定したアプリケーション名をキーとして，一つのUAP（MHP）プロセスで実行されます。アプリケーションは，サービスの方式によって型が異なります。この型をMCFの属性の一つとして，システム定義時に指定します。SLU - TypeP2で使用するアプリケーションの型は，非応答型（noans）です。

論理端末の端末タイプとメッセージ，アプリケーションの型，UAPインタフェース，および通信形態の関係を次の表に示します。

表2-3　論理端末の端末タイプとメッセージ，アプリケーションの型，UAPインタフェース，および通信形態の関係

論理端末の端末タイプ
メッセージ
アプリケーションの型
UAPインタフェース
通信形態

send
（送信型論理端末）
一方送信メッセージ
非応答型
send
分岐送信

resend

receive
（受信型論理端末）
一方送信メッセージ
非応答型
receive
一方受信

request
（問い合わせ型論理端末）
問い合わせメッセージ
非応答型
send
分岐送信

resend

sendrecv（セグメント送信時，先頭セグメント受信時）
同期送受信（同期問い合わせ応答）

recvsync（後続セグメント受信時）
同期受信（同期問い合わせ応答）

receive
一方受信

2.1.4　メッセージの分割と組み立て

SLU - TypeP2とUAPとの間では，メッセージをセグメントと呼ばれる単位に分割して扱います。一つの業務で処理するメッセージを論理メッセージといいます。論理メッセージは，一つまたは複数のセグメントで構成されます。

UAPで送受信命令を発行すると，一つのセグメントを受信または送信します。論理メッセージが複数のセグメントで構成される場合，セグメントの数だけ送受信命令を発行してください。

セグメントと論理メッセージの関係を次の図に示します。

図2-10　セグメントと論理メッセージ

また，メッセージ送受信の関数で処理するセグメントの先頭には，MCFで使用するヘッダ領域があります。このヘッダ領域の長さによって，バッファ形式1とバッファ形式2があります。通常，バッファ形式1を使用します。

メッセージの形式，パラメタの詳細，データ名などについては，「3.　メッセージ送受信インタフェース」を参照してください。

2.2　AP間通信メッセージの送受信

SLU - TypeP2では，次に示すメッセージの送受信をします。

問い合わせメッセージの送信と応答メッセージの受信

一方送信メッセージの送信と受信

＜この節の構成＞

2.2.1　問い合わせメッセージの送信と応答メッセージの受信

2.2.2　一方送信メッセージの送信と受信

2.2.3　アプリケーション名の決定

2.2.1　問い合わせメッセージの送信と応答メッセージの受信

ホスト（相手システム）へ同期型の問い合わせメッセージを送信し，応答を同期型のメッセージで受信します。

ホストへ問い合わせメッセージを送信するとき，UAPからsendrecv関数を呼び出します。問い合わせメッセージが複数のセグメントで構成される場合，セグメントの数だけsendrecv関数を呼び出す必要があります。UAPがメッセージのセグメントを送信し終わると，SLU - TypeP2は，ホストからの応答を待ちます。

ホストからの応答メッセージを受信すると，SLU - TypeP2はメッセージの先頭セグメントをUAPに返します。応答メッセージが複数のセグメントで構成される場合，UAPはrecvsync関数を呼び出して後続セグメントを受信できます。

SLU - TypeP2では，問い合わせ応答のデータ送受信時，ホストへ送信する応答識別（RQDまたはRQE）を指定することで，送信に対する応答（+RSPまたは-RSP）が必要かどうかを決定できます。応答を不要と指定すると，エラーが発生した場合だけ応答（-RSP）が送信されます。応答識別の指定については，5章の「mcftalccn（コネクション定義の開始）」の-dオプションを参照してください。

また，ユーザの指定によっては，問い合わせメッセージ送信完了から応答メッセージ受信までの間，時間監視ができます。監視時間内に応答がない場合，同期送受信要求がエラーリターンします。

ホストからの応答メッセージがダミーメッセージ（0バイトデータ）の場合，データはUAPに通知されません。

自システムから複数セグメントメッセージを送信する場合，先頭または中間セグメントに対して否定応答（-RSP）を返さないで，最終セグメントに対して否定応答（-RSP）を返す相手システムと接続してください。

問い合わせメッセージの送信と応答メッセージの受信を次の図に示します。

図2-11　問い合わせメッセージの送信と応答メッセージの受信

2.2.2　一方送信メッセージの送信と受信

一方送信メッセージを送信し，また，ホストから一方送信メッセージを受信します。

ホストへ一方送信メッセージを送信するとき，UAPからsend関数を呼び出します。一方送信メッセージが複数のセグメントで構成される場合，セグメントの数だけsend関数を呼び出してください。一方送信メッセージの送信が完了すると，SLU - TypeP2は，出力キューにある一方送信メッセージを送信済みとします。

ホストからの応答も，一方送信メッセージとして受信します。一方送信メッセージを受信すると，SLU - TypeP2は，メッセージに対応するアプリケーションを起動します。アプリケーションに該当するUAPは，receive関数を呼び出してメッセージを受信できます。一方送信メッセージが複数のセグメントで構成される場合，セグメントの数だけreceive関数を呼び出してください。

ホストから受信した一方送信メッセージがダミーメッセージ（0バイトデータ）の場合，データはUAPに通知されません。

自システムから複数セグメントメッセージを送信する場合，先頭または中間セグメントに対して否定応答（-RSP）を返さないで，最終セグメントに対して否定応答（-RSP）を返す相手システムと接続してください。

一方送信メッセージの送信と受信を次の図に示します。

図2-12　一方送信メッセージの送信と受信

2.2.3　アプリケーション名の決定

SLU - TypeP2では，システム定義時に，論理端末定義（mcftalcle）の-vオプションで指定された値を，ホストからの一方送信メッセージ受信時に，アプリケーション名とします。論理端末定義で指定を省略した場合は，入力メッセージ編集UOCを使用してアプリケーション名を決定する必要があります。入力メッセージ編集UOCについては，「4.1.2　入力メッセージ編集UOCインタフェース」を参照してください。

アプリケーション名決定の流れを次の図に示します。

図2-13　アプリケーション名決定の流れ

注※

入力メッセージ編集UOCによるアプリケーション名の決定については，「4.1.1　入力メッセージの編集とアプリケーション名の決定」を参照してください。

入力メッセージの中の情報からアプリケーション名を決定します。

入力メッセージがある場合，入力メッセージ編集UOCによる処理をします。

アプリケーション名が決定しているかどうかを判定します。

決定されたアプリケーション名に基づいてアプリケーションを起動します。

3.　メッセージ送受信インタフェース

SLU - TypeP2を使用してメッセージを送受信する場合，ユーザは個別の業務に対応させるため，UAPを作成します。この章では，UAPの作成方法，および作成例について説明します。

＜この章の構成＞

メッセージ送受信インタフェースの一覧

dc_mcf_receive － 一方送信メッセージの受信（C言語）

dc_mcf_recvsync － 同期型の応答メッセージの受信（C言語）

dc_mcf_resend － メッセージの再送（C言語）

dc_mcf_send － 一方送信メッセージの送信（C言語）

dc_mcf_sendrecv － 同期型の問い合わせメッセージの送受信（C言語）

CBLDCMCF('RECEIVE ') － 一方送信メッセージの受信（COBOL言語）

CBLDCMCF('RECVSYNC') －同期型の応答メッセージの受信（COBOL言語）

CBLDCMCF('RESEND ') － メッセージの再送（COBOL言語）

CBLDCMCF('SEND ') － 一方送信メッセージの送信（COBOL言語）

CBLDCMCF('SENDRECV') － 同期型の問い合わせメッセージの送受信（COBOL言語）

RECEIVE － メッセージの受信（データ操作言語）

SEND － メッセージの送信（データ操作言語）

ユーザアプリケーションプログラム作成例

メッセージ送受信インタフェースの一覧

SLU - TypeP2で使用するメッセージ送受信インタフェースについて，C言語，COBOL言語，およびデータ操作言語に分けて説明します。

UAP作成の詳細については，マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

C言語のメッセージ送受信

C言語（K&R版C，ANSI C，C++）でメッセージ送受信をする場合は，OpenTP1システムで提供する関数を使用してUAPを作成します。

メッセージ送受信の関数を次の表に示します。

表3-1　メッセージ送受信の関数（C言語）

関数名 | 機能
dc_mcf_receive | 一方送信メッセージの受信
dc_mcf_recvsync | 同期型の応答メッセージの受信
dc_mcf_resend | メッセージの再送
dc_mcf_send | 一方送信メッセージの送信
dc_mcf_sendrecv | 同期型の問い合わせメッセージの送受信

その他の関数については，マニュアル「OpenTP1 プログラム作成リファレンス C言語編」を参照してください。

COBOL言語のメッセージ送受信

COBOL言語でメッセージを送受信する場合は，関数に対応しているプログラムをCALL文で呼び出してUAPを作成します。

メッセージ送受信の関数に対応するプログラムを次の表に示します。

表3-2　メッセージ送受信の関数に対応するプログラム（COBOL言語）

プログラム名 | データ名Aに設定する要求コード | 意味
CBLDCMCF | 'RECEIVE△' | 一方送信メッセージの受信
'RECVSYNC' | 同期型の応答メッセージの受信
'RESEND△△' | メッセージの再送
'SEND△△△△' | 一方送信メッセージの送信
'SENDRECV' | 同期型の問い合わせメッセージの送受信

その他のプログラムについては，マニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照してください。

データ操作言語（COBOL言語）のメッセージ送受信

データ操作言語（COBOL言語）を使用した，メッセージ送受信の通信文について説明します。データ操作言語の形式の詳細については，マニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照してください。

SLU - TypeP2で固有の通信文を次の表に示します。

表3-3　メッセージ送受信の通信文（データ操作言語）

通信文 | 機能 | 対応するCALLインタフェース
データコミュニケーション機能 | RECEIVE | メッセージの受信 | CBLDCMCF('RECEIVE△')
SEND | メッセージの送信 | CBLDCMCF('SEND△△△△')
CBLDCMCF('SENDRECV')

注

同期型の応答メッセージの受信（CBLDCMCF('RECVSYNC')）およびメッセージの再送（CBLDCMCF('RESEND△△')）に相当するデータ操作言語のインタフェースはありません。

dc_mcf_receive － 一方送信メッセージの受信（C言語）

形式

ANSI C，C++の形式

#include<dcmcf.h>
int  dc_mcf_receive(DCLONG  action, DCLONG  commform,
                   char    *termnam, char  *resv01,
                   char    *recvdata, DCLONG  *rdataleng,
                   DCLONG  inbufleng, DCLONG  *time)

K&R版 Cの形式

#include<dcmcf.h>
int dc_mcf_receive(action, commform, termnam, resv01,
                  recvdata,rdataleng, inbufleng, time)
DCLONG   action;
DCLONG   commform;
char     *termnam;
char     *resv01;
char     *recvdata;
DCLONG   *rdataleng;
DCLONG   inbufleng;
DCLONG   *time;

機能

論理端末に届いたメッセージのうち，一つのセグメントを受信します。セグメントの数だけdc_mcf_receive関数を呼び出すと，一つの論理メッセージを受信できます。

dc_mcf_receive関数で受信できるメッセージの種類を次に示します。

相手システムから送信されたメッセージ

MCFイベント

アプリケーション起動で渡されたメッセージ

セグメントを受信する領域の形式を次に示します。Lは，バッファ形式1の場合は8バイト，バッファ形式2の場合は4バイトです。

UAPで値を設定する引数

●action

メッセージの先頭セグメントを受信するかどうか，および使用するバッファ形式を次の形式で設定します。

{DCMCFFRST｜DCMCFSEG}〔｜{DCMCFBUF1｜DCMCFBUF2}〕

DCMCFFRST

先頭セグメントを受信する場合や，メッセージが単一セグメントの場合に，DCMCFFRSTを設定します。

DCMCFSEG

中間セグメントまたは最終セグメントを受信する場合に設定します。

DCMCFBUF1

バッファ形式1を使用する場合に設定します。

DCMCFBUF2

バッファ形式2を使用する場合に設定します。

●commform

DCNOFLAGSを設定します。

●termnam

先頭セグメントを受信する場合は，入力元の論理端末名称が返される領域を設定します。dc_mcf_receive関数が終了すると，入力元の論理端末名称が返されます。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字が付けられます。

中間セグメントまたは最終セグメントを受信する場合は，入力元の論理端末名称を設定します。先頭セグメントの受信時に返された論理端末名称を設定してください。

先頭セグメントの受信処理終了後，termnamにはOpenTP1から値が返されます。

●resv01

ヌル文字を設定します。

●recvdata

セグメントを受信する領域を設定します。受信できるセグメントの最大長は，通信管理に依存します。

dc_mcf_receive関数が終了すると，recvdataにはメッセージのセグメントの一つが返されます。

●inbufleng

セグメントを受信する領域の長さを設定します。

OpenTP1から値が返される引数

●termnam

先頭セグメントを受信する場合だけ，入力元の論理端末名称が返されます。

ここで返された論理端末名称を，中間セグメントまたは最終セグメントの受信時にtermnamに設定してください。

●recvdata

受信したセグメントの内容が返されます。

●rdataleng

受信したセグメントの長さが返されます。

●time

メッセージを受信した時刻が，1970年1月1日0時0分0秒からの通算の秒数で返されます。

リターン値

リターン値
意味

DCMCFRTN_00000
正常に終了しました。

DCMCFRTN_71000
先頭セグメントを受信するdc_mcf_receive関数を2回以上呼び出しています。中間セグメントまたは最終セグメントを受信する場合は，actionにDCMCFSEGを設定してdc_mcf_receive関数を呼び出してください。

DCMCFRTN_71001
メッセージの最終セグメントを受信したあとで，次のセグメントを受信するdc_mcf_receive関数を呼び出しています。直前に呼び出したdc_mcf_receive関数でメッセージはすべて受信しました。このリターン値が返されたあとに，再びdc_mcf_receive関数を呼び出した場合は，リターン値DCMCFRTN_72000が返されます。

DCMCFRTN_71002
メッセージキューからの入力処理中に障害が発生しました。

メッセージキューが閉塞されています。

DCMCFRTN_72000
＜MHPの実行でリターンした場合＞

先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，中間セグメントおよび最終セグメントを受信するdc_mcf_receive関数を呼び出しています。先頭セグメントを受信する場合は，actionにDCMCFFRSTを設定してdc_mcf_receive関数を呼び出してください。

リターン値DCMCFRTN_71001が返されたあとに，再びdc_mcf_receive関数を呼び出しています。

＜SPPの実行でリターンした場合＞
SPPではdc_mcf_receive関数を呼び出せません。

DCMCFRTN_72001
termnamに設定した論理端末名称が間違っています。

DCMCFRTN_72013
inbuflengの指定値を超えるセグメントを受信しました。inbuflengの指定値を超えた部分は切り捨てられました。

DCMCFRTN_72016
actionに設定した値が間違っています。

resv01に設定した値が間違っています。

引数に設定した値に間違いがあります。

DCMCFRTN_72024
commformに設定した値が間違っています。

DCMCFRTN_72025
actionに設定したセグメント種別（DCMCFFRSTまたはDCMCFSEG）の値が間違っています。

DCMCFRTN_72036
inbuflengの指定値が不足しています。バッファ形式1の場合は9バイト以上，バッファ形式2の場合は5バイト以上の領域を確保してください。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

dc_mcf_recvsync － 同期型の応答メッセージの受信（C言語）

形式

ANSI C，C++の形式

#include<dcmcf.h>
int  dc_mcf_recvsync(DCLONG  action, DCLONG  commform,
                    char    *termnam, char  *resv01,
                    char    *recvdata, DCLONG  *rdataleng,
                    DCLONG  inbufleng, DCLONG  *time,
                    DCLONG  resv02)

K&R版Cの形式

#include <dcmcf.h>
int dc_mcf_recvsync(action, commform, termnam, resv01,
                   recvdata, rdataleng, inbufleng,
                   time, resv02)
DCLONG      action;
DCLONG      commform;
char        *termnam;
char        *resv01;
char        *recvdata;
DCLONG      *rdataleng;
DCLONG      inbufleng;
DCLONG      *time;
DCLONG      resv02;

機能

相手システムから同期型で受信したメッセージのうち，一つのセグメントを受信します。セグメントの数だけdc_mcf_recvsync関数を呼び出すと，一つの論理メッセージを受信できます。

セグメントを受信する領域の形式を次に示します。Lは，バッファ形式1の場合は8バイト，バッファ形式2の場合は4バイトです。

UAPで値を設定する引数

●action

メッセージの先頭セグメントを受信するかどうか，および使用するバッファ形式を次の形式で設定します。

{DCMCFFRST｜DCMCFSEG}〔｜{DCMCFBUF1｜DCMCFBUF2}〕

DCMCFFRST

先頭セグメントを受信する場合や，メッセージが単一セグメントの場合に，DCMCFFRSTを設定します。

DCMCFSEG

中間セグメントおよび最終セグメントを受信する場合に設定します。

DCMCFBUF1

バッファ形式1を使用する場合に設定します。

DCMCFBUF2

バッファ形式2を使用する場合に設定します。

●commform

DCNOFLAGSを設定します。

●termnam

入力元の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字を付けてください。

●resv01

ヌル文字を設定します。

●recvdata

セグメントを受信する領域を設定します。受信できるセグメントの最大長は，通信管理に依存します。

dc_mcf_recvsync関数が終了すると，recvdataにはメッセージのセグメントの一つが返されます。

●inbufleng

セグメントを受信する領域の長さを設定します。

●resv02

DCNOFLAGSを設定します。

OpenTP1から値が返される引数

●recvdata

受信したセグメントの内容が返されます。

●rdataleng

受信したセグメントの長さが返されます。

●time

メッセージを受信した時刻が，1970年1月1日0時0分0秒からの通算の秒数で返されます。

リターン値

リターン値
意味

DCMCFRTN_00000
正常に終了しました。

DCMCFRTN_71001
メッセージの最終セグメントを受信したあとで，その次のセグメントを受信するdc_mcf_recvsync関数を呼び出しています。直前に呼び出したdc_mcf_recvsync関数でそのメッセージはすべて受信しました。
このリターン値が返されたあとに，再び次のセグメントを受信するdc_mcf_recvsync関数を呼び出した場合は，リターン値DCMCFRTN_72000が返されます。

DCMCFRTN_71002
MCFが終了処理中のため，メッセージの受信を受け付けられません。

DCMCFRTN_71108
メッセージの受信に必要な管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

DCMCFRTN_72000
先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，dc_mcf_recvsync関数を呼び出しています。

リターン値DCMCFRTN_71001が返されたあとに，再びdc_mcf_recvsync関数を呼び出しています。

DCMCFRTN_72001
termnamに設定した論理端末名称が間違っています。

dc_mcf_recvsync関数を呼び出せない論理端末を設定しています。

DCMCFRTN_72013
inbuflengの指定値を超えるセグメントを受信しました。inbuflengの指定値を超えた部分は切り捨てられました。

DCMCFRTN_72016
actionに設定した値が間違っています。

resv01に設定した値が間違っています。

引数に設定した値に間違いがあります。

DCMCFRTN_72024
commformに設定した値が間違っています。

DCMCFRTN_72025
actionに設定したセグメント種別（DCMCFFRSTまたはDCMCFSEG）の値が間違っています。

DCMCFRTN_72036
inbuflengの指定値が不足しています。バッファ形式1の場合は9バイト以上，バッファ形式2の場合は5バイト以上の領域を確保してください。

DCMCFRTN_73001
入力元の論理端末で障害が発生しました。

DCMCFRTN_73002
dc_mcf_recvsync関数の処理中に，入力元の論理端末とMCFとの間のコネクションまたは経路が切り離されました。

dc_mcf_recvsync関数が呼び出されるまでに，入力元の論理端末とMCFとの間のコネクションまたは経路が切り離されました。

DCMCFRTN_73008
入力元の論理端末は，次のコマンドで停止しています。

mcftdctle

mcftdctcn

DCMCFRTN_73010
入力または出力メッセージ編集UOCで障害が発生しました。

メッセージの読み込み時に障害が発生しました。

DCMCFRTN_73018
resv02に設定した値が間違っています。

DCMCFRTN_73020
設定した論理端末は停止しています。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

dc_mcf_resend － メッセージの再送（C言語）

形式

ANSI C，C++ の形式

#include<dcmcf.h>
int  dc_mcf_resend(DCLONG  action, DCLONG  commform,
                  char    *rtermnam, char  *resv01,
                  DCLONG  oseqid, DCLONG  orgseq,
                  char    *otermnam, char  *resv02,
                  char    *resv03, char  *resv04, DCLONG  opcd)

K&R版C の形式

#include<dcmcf.h>
int dc_mcf_resend(action, commform, rtermnam, resv01,
                 oseqid, orgseq, otermnam, resv02,
                 resv03, resv04, opcd)
DCLONG   action;
DCLONG   commform;
char     *rtermnam;
char     *resv01;
DCLONG   oseqid;
DCLONG   orgseq;
char     *otermnam;
char     *resv02;
char     *resv03;
char     *resv04;
DCLONG   opcd;

機能

以前に送信したメッセージを再び送信します。再送するメッセージは，以前に送信したメッセージとは別の，新しいメッセージとして扱います。どのメッセージを再送するかは，次に示す送信済みメッセージの情報を基に選択できます。

出力先の論理端末名称

メッセージ通番

メッセージ種別（一般の一方送信または優先の一方送信）

対象としたメッセージが以前に送信されていない場合は，dc_mcf_resend関数はリターン値DCMCFRTN_NOMSGを返します。また，メッセージキュー（ディスクキュー）内に対象のメッセージがない場合もリターン値DCMCFRTN_NOMSGを返します。このため，使用するメッセージキューの種別ではディスクキューを指定するとともに，メッセージキューの大きさの定義は余裕を持った値を指定してください。

UAPで値を設定する引数

●action

再送するメッセージに出力通番を付け直すかどうか，一般か優先か，および最終出力通番のメッセージを再送するかどうかを次の形式で設定します。

{DCMCFSEQ｜DCMCFNSEQ}〔｜{DCMCFNORM｜DCMCFPRIO}〕〔｜DCMCFLAST〕

DCMCFSEQ

再送するメッセージに出力通番を付け直す場合に設定します。

DCMCFNSEQ

再送するメッセージに出力通番を付け直さない場合に設定します。

DCMCFNORM

一般の一方送信メッセージとして再送する場合に設定します。

DCMCFPRIO

優先の一方送信メッセージとして再送する場合に設定します。

DCMCFLAST

最終出力通番を持つメッセージを再送する場合に設定します。この値を設定したときは，orgseqに設定した値は無効となります。

●commform

一方送信を示す，DCMCFOUTを設定します。

●rtermnam

出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字を付けてください。

●resv01

ヌル文字を設定します。

●oseqid

再送するメッセージを検索するキーとして，以前に送信したメッセージの送信種別を設定します。

DCMCFRID_NORM

一般の一方送信メッセージを対象とする場合に設定します。

DCMCFRID_PRIO

優先の一方送信メッセージを対象とする場合に設定します。

省略した場合は，DCMCFRID_NORM（一般の一方送信メッセージを対象）が設定されます。DCMCFRID_PRIOを設定した場合は，otermnamに出力先の論理端末名称を設定できません。

●orgseq

再送するメッセージを検索するキーとして，以前に送信したメッセージの出力通番を設定します。actionでDCMCFLASTを設定した場合は，ここに設定した値は無効となります。

●otermnam

再送するメッセージを検索するキーとして，以前に送信したメッセージの出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字を付けてください。

●resv02，resv03，resv04

ヌル文字を設定します。

●opcd

DCNOFLAGSを設定します。

リターン値

リターン値
意味

DCMCFRTN_00000
正常に終了しました。

DCMCFRTN_NOMSG
該当するメッセージがありません。

DCMCFRTN_BUF_SHORT
再送するメッセージのセグメントの長さが，UAP共通定義（mcfmuap -e）で指定した値を超えています。

DCMCFRTN_71002
メッセージキューへの出力処理中に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

MCFが終了処理中のため，メッセージの再送を受け付けられません。

DCMCFRTN_71003
メッセージキューが満杯です。

DCMCFRTN_71004
メッセージキューから取り出したメッセージを格納するバッファ（作業領域）をメモリ上に確保できませんでした。

DCMCFRTN_71108
メッセージを再送しようとしましたが，再送先の管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

DCMCFRTN_72000
＜MHPの実行でリターンした場合＞

先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，dc_mcf_resend関数を呼び出しています。

非トランザクション属性のMHPから，dc_mcf_resend関数を呼び出しています。

＜SPPの実行でリターンした場合＞
トランザクションでないSPPの処理から，dc_mcf_resend関数を呼び出しています。

DCMCFRTN_72001
rtermnamまたはotermnamに設定した論理端末名称が間違っています。

dc_mcf_resend関数を呼び出せない論理端末を設定しています。

DCMCFRTN_72016
actionに設定したメッセージ種別（DCMCFNORMまたはDCMCFPRIO）の値が間違っています。

actionに設定した値が間違っています。

oseqidに設定した値が間違っています。

opcdに設定した値が間違っています。

resv01，resv02，resv03，またはresv04に設定した値が間違っています。

引数に設定した値に間違いがあります。

DCMCFRTN_72017
actionに設定した出力通番の要否（DCMCFSEQまたはDCMCFNSEQ）の値が間違っています。

DCMCFRTN_72024
commformに設定した値が間違っています。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

注意事項

メッセージの再送時には，MCFマネジャ定義のUAP共通定義（mcfmuap）の-eオプションと-lオプションの指定値に注意してください。

-eオプション

-eオプションでは，dc_mcf_resend関数で使用する作業領域の大きさを指定します。再送するメッセージのセグメントがこの作業領域より大きい場合，dc_mcf_resend関数はメッセージを再送しないで，リターン値DCMCFRTN_BUF_SHORTを返します。このため，-eオプションでは，セグメントの最大長よりも大きな値を設定しておいてください。

-lオプション

-lオプションでは，通番に関して指定します。この内容によっては，メッセージキューファイル内に同じ通番を持つメッセージが同時に存在する場合があります。この場合は，どのメッセージを再送するか保証できません。

dc_mcf_send － 一方送信メッセージの送信（C言語）

形式

ANSI C，C++の形式

#include<dcmcf.h>
int  dc_mcf_send (DCLONG  action, DCLONG  commform,
                 char    *termnam, char  *resv01,
                 char    *senddata, DCLONG  sdataleng,
                 char    *resv02, DCLONG  opcd)

K&R版 Cの形式

#include<dcmcf.h>
int dc_mcf_send (action, commform, termnam, resv01,
                senddata,sdataleng, resv02, opcd)
DCLONG   action;
DCLONG   commform;
char     *termnam;
char     *resv01;
char     *senddata;
DCLONG   sdataleng;
char     *resv02;
DCLONG   opcd;

機能

相手システムへ送る一方送信メッセージのうち，一つのセグメントを送信します。セグメントの数だけdc_mcf_send関数を呼び出すと，一つの論理メッセージを送信できます。

セグメントを送信する領域の形式を次に示します。Lは，バッファ形式1の場合は8バイト，バッファ形式2の場合は4バイトです。

UAPで値を設定する引数

●action

メッセージの最終セグメントを送信するかどうか，優先か一般か，出力通番を付けるかどうか，および使用するバッファ形式を次の形式で設定します。

{DCMCFESI｜DCMCFEMI}〔｜{DCMCFNORM｜DCMCFPRIO}〕
〔｜{DCMCFSEQ｜DCMCFNSEQ}〕〔｜{DCMCFBUF1｜DCMCFBUF2}〕

DCMCFESI

先頭セグメントまたは中間セグメントを送信する場合に設定します。

DCMCFEMI

最終セグメントを送信する場合や，メッセージが単一セグメントの場合に，DCMCFEMIを設定します。

メッセージの送信の終了を連絡するために，最後は必ずこの値を設定してください。

DCMCFNORM

一般の一方送信メッセージとして送信する場合に設定します。

DCMCFPRIO

優先の一方送信メッセージとして送信する場合に設定します。

DCMCFSEQ

出力通番が必要な場合に設定します。

DCMCFNSEQ

出力通番が必要ない場合に設定します。

DCMCFBUF1

バッファ形式1を使用する場合に設定します。

DCMCFBUF2

バッファ形式2を使用する場合に設定します。

●commform

一方送信を示す，DCMCFOUTを設定します。

●termnam

出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字を付けてください。

●resv01

ヌル文字を設定します。

●senddata

送信するセグメントの内容を設定した領域を設定します。一つのセグメントで32000バイトまで送信できます。

メッセージの送信の終了を連絡する場合で，セグメントの内容がない場合も，必ず設定してください。

●sdataleng

送信するセグメントの長さを設定します。メッセージの送信の終了を連絡する場合で，セグメントの内容がない場合は，0を設定します。

●resv02

ヌル文字を設定します。

●opcd

DCNOFLAGSを設定します。

リターン値

リターン値
意味

DCMCFRTN_00000
正常に終了しました。

DCMCFRTN_71002
メッセージキューへの出力処理中に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

sdatalengに32000バイトを超える値を設定しています。

MCFが終了処理中のため，メッセージの送信を受け付けられません。

DCMCFRTN_71003
メッセージキューが満杯です。

DCMCFRTN_71004
メッセージを格納するバッファをメモリ上に確保できませんでした。

DCMCFRTN_71108
メッセージを送信しようとしましたが，送信先の管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

DCMCFRTN_72000
＜MHPの実行でリターンした場合＞
先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，dc_mcf_send関数を呼び出しています。

＜SPPの実行でリターンした場合＞
トランザクションでないSPPの処理から，dc_mcf_send関数を呼び出しています。

DCMCFRTN_72001
termnamに設定した論理端末名称が間違っています。

dc_mcf_send関数を呼び出せない論理端末を設定しています。

DCMCFRTN_72005
先頭セグメントまたは中間セグメント送信時，sdatalengに0以下の値を設定しています。

DCMCFRTN_72016
actionに設定したメッセージ種別（DCMCFNORMまたはDCMCFPRIO）の値が間違っています。

actionに設定した値が間違っています。

opcdに設定した値が間違っています。

resv01またはresv02に設定した値が間違っています。

引数に設定した値に間違いがあります。

DCMCFRTN_72017
actionに設定した出力通番の要否（DCMCFSEQまたはDCMCFNSEQ）の値が間違っています。

DCMCFRTN_72024
commformに設定した値が間違っています。

DCMCFRTN_72026
actionに設定したセグメント種別（DCMCFESIまたはDCMCFEMI）の値が間違っています。

DCMCFRTN_72041
単一セグメント送信時，sdatalengに0以下の値を設定しています。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

dc_mcf_sendrecv － 同期型の問い合わせメッセージの送受信（C言語）

形式

ANSI C，C++の形式

#include<dcmcf.h>
int  dc_mcf_sendrecv (DCLONG  action, DCLONG  commform,
                     char    *termnam, char  *resv01,
                     char    *senddata, DCLONG  sdataleng,
                     char    *recvdata, DCLONG  *rdataleng,
                     DCLONG  inbufleng, DCLONG  *time,
                     DCLONG  watchtime)

K&R版Cの形式

#include<dcmcf.h>
int dc_mcf_sendrecv (action, commform, termnam, resv01,
                    senddata, sdataleng, recvdata,
                    rdataleng, inbufleng, time,watchtime)
DCLONG   action;
DCLONG   commform;
char     *termnam;
char     *resv01;
char     *senddata;
DCLONG   sdataleng;
char     *recvdata;
DCLONG   *rdataleng;
DCLONG   inbufleng;
DCLONG   *time;
DCLONG   watchtime;

機能

同期型でメッセージを送信したあと，同期型でメッセージを受信します。

dc_mcf_sendrecv関数では，相手システムへ送るメッセージのうち，一つのセグメントを送信できます。セグメントの数だけdc_mcf_sendrecv関数を呼び出すと，一つの論理メッセージを送信できます。

メッセージの最終セグメントを送信すると，dc_mcf_sendrecv関数は相手システムからの応答を待ちます。応答が届くと，そのメッセージの先頭セグメントを受信します。中間セグメントおよび最終セグメントを受信する場合は，dc_mcf_recvsync関数を呼び出してください。

セグメントを送信する領域と受信する領域の形式を次に示します。Lは，バッファ形式1の場合は8バイト，バッファ形式2の場合は4バイトです。

UAPで値を設定する引数

●action

メッセージの最終セグメントを送信するかどうか，および使用するバッファ形式を次の形式で設定します。

{DCMCFESI｜DCMCFEMI}〔｜{DCMCFBUF1｜DCMCFBUF2}〕

DCMCFESI

先頭セグメントまたは中間セグメントを送信する場合に設定します。

DCMCFEMI

最終セグメントを送信する場合や，メッセージが単一セグメントの場合に，DCMCFEMIを設定します。

メッセージの送信の終了を連絡するために，最後は必ずこの値を設定してください。この値を設定してdc_mcf_sendrecv関数を呼び出すと，論理端末からの応答を待ちます。

DCMCFBUF1

バッファ形式1を使用する場合に設定します。

DCMCFBUF2

バッファ形式2を使用する場合に設定します。

●commform

同期型メッセージの送受信を示す，DCMCFIOを設定します。

●termnam

出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字を付けてください。

●resv01

ヌル文字を設定します。

●senddata

送信するセグメントの内容を設定した領域を設定します。一つのセグメントで32000バイトまで送信できます。

メッセージの送信の終了を連絡する場合で，セグメントの内容がない場合も，必ず設定してください。

●sdataleng

送信するセグメントの長さを設定します。メッセージの送信の終了を連絡する場合で，セグメントの内容がない場合は，0を設定してください。

●recvdata

セグメントを受信する領域を設定します。受信できるセグメントの最大長は，通信管理に依存します。

単一セグメントまたは最終セグメントを送信するdc_mcf_sendrecv関数が終了すると，recvdataには受信したメッセージの先頭セグメントが返されます。

●inbufleng

セグメントを受信する領域の長さを設定します。

●watchtime

dc_mcf_sendrecv関数を呼び出してから終了するまでの最大時間を設定します。

0を設定した場合，MCFマネジャ定義のUAP共通定義（mcfmuap -t）で指定した，同期型送受信監視時間が設定されます。負の値を設定した場合は，時間を監視しません。

OpenTP1から値が返される引数

●recvdata

受信したセグメントの内容が返されます。

●rdataleng

受信したセグメントの長さが返されます。

●time

メッセージを受信した時刻が，1970年1月1日0時0分0秒からの通算の秒数で返されます。

リターン値

リターン値 | 意味
DCMCFRTN_00000 | 正常に終了しました。
DCMCFRTN_71002 | メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
sdatalengに32000バイトを超える値を設定しています。
MCFが終了処理中のため，メッセージの送受信を受け付けられません。
DCMCFRTN_71003 | メッセージキューが満杯です。
DCMCFRTN_71004 | メッセージを格納するバッファをメモリ上に確保できませんでした。
DCMCFRTN_71108 | メッセージを送信しようとしましたが，送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
DCMCFRTN_72000 | 先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，dc_mcf_sendrecv関数を呼び出しています。
DCMCFRTN_72001 | termnamに設定した論理端末名称が間違っています。
dc_mcf_sendrecv関数を呼び出せない論理端末を設定しています。
DCMCFRTN_72005 | 先頭セグメントまたは中間セグメント送信時，sdatalengに0以下の値を設定しています。
DCMCFRTN_72013 | inbuflengの指定値を超えるセグメントを受信しました。inbuflengの指定値を超えた部分は切り捨てられました。
DCMCFRTN_72016 | actionに設定した値が間違っています。
resv01に設定した値が間違っています。
引数に設定した値に間違いがあります。
DCMCFRTN_72024 | commformに設定した値に間違いがあります。
DCMCFRTN_72026 | actionに設定したセグメント種別（DCMCFESIまたはDCMCFEMI）の値が間違っています。
DCMCFRTN_72036 | inbuflengの指定値が不足しています。バッファ形式1の場合は9バイト以上，バッファ形式2の場合は5バイト以上の領域を確保してください。
DCMCFRTN_72041 | 単一セグメント送信時，sdatalengに0以下の値を設定しています。
DCMCFRTN_72073 | 非同期型のメッセージの送信処理が仕掛り中です。
DCMCFRTN_73001 | 出力先の論理端末で障害が発生しました。
DCMCFRTN_73002 | MCF通信サービスで障害が発生しました。
DCMCFRTN_73005 | watchtimeに設定した時間が経過しましたが，論理端末からの応答がありません。
応答ダミーデータ（空白メッセージ）を受信しました。
DCMCFRTN_73008 | 論理端末が閉塞中，またはMCFが終了処理中に，dc_mcf_sendrecv関数を呼び出しました。
DCMCFRTN_73010 | 入力または出力メッセージ編集UOCで障害が発生しました。
メッセージの読み込み時に障害が発生しました。
メッセージの編集エラーが発生しました。
DCMCFRTN_73015 | 出力先の論理端末は，ほかのUAPで仕掛り中です。
DCMCFRTN_73018 | watchtimeに設定した値が間違っています。
DCMCFRTN_73020 | 出力先の論理端末は停止しています。
上記以外 | プログラムの破壊などによる，予期しないエラーが発生しました。

CBLDCMCF('RECEIVE ') － 一方送信メッセージの受信（COBOL言語）

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCMCF' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定

01 一意名1.
  02 データ名A   PIC X(8)  VALUE 'RECEIVE '.
  02 データ名B   PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C   PIC X(4).
  02 データ名D   PIC X(4)  VALUE SPACE.
  02 データ名E   PIC 9(8).
  02 データ名F   PIC 9(8).
  02 データ名G   PIC 9(9)  COMP.
  02 データ名H   PIC X(4)  VALUE SPACE.
  02 データ名I   PIC X(4)  VALUE SPACE.
  02 データ名J   PIC X(4)  VALUE SPACE.
  02 データ名K   PIC X(4)  VALUE SPACE.
  02 データ名L   PIC X(8)  VALUE SPACE.
  02 データ名M1  PIC X(4)  VALUE SPACE.
  02 データ名M2  PIC X(8)  VALUE SPACE.
  02 データ名M3  PIC X(4)  VALUE SPACE.
  02 データ名M4  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M5  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M6  PIC X(1)  VALUE SPACE.
  02 データ名M7  PIC X(1).
  02 データ名N   PIC X(14) VALUE LOW-VALUE.
01 一意名2.
  02 データ名O   PIC X(4)  VALUE SPACE.
  02 データ名P   PIC X(8).
  02 データ名Q   PIC X(8).
  02 データ名R   PIC X(8)  VALUE SPACE.
  02 データ名T   PIC X(28) VALUE LOW-VALUE.
01 一意名3.
  02 データ名U   PIC 9(x)  COMP.
  02 データ名V   PIC X(x).
  02 データ名W   PIC X(n).

機能

論理端末に届いたメッセージのうち，一つのセグメントを受信します。セグメントの数だけCBLDCMCF('RECEIVE△')を呼び出すと，一つの論理メッセージを受信できます。

CBLDCMCF('RECEIVE△')で受信できるメッセージの種類を次に示します。

相手システムから送信されたメッセージ

MCFイベント

アプリケーション起動で渡されたメッセージ

セグメントを受信する領域（一意名3で示す領域）の形式を次に示します。

UAPで値を設定するデータ領域

●データ名A

メッセージの受信を示す要求コードを「VALUE 'RECEIVE△'」と設定します。

●データ名C

メッセージの先頭セグメントを受信するかどうかを設定します。次のどちらかを設定してください。

VALUE 'FRST'

先頭セグメントを受信する場合や，メッセージが単一セグメントの場合に，「VALUE 'FRST'」を設定します。

VALUE 'SEG△'

中間セグメントまたは最終セグメントを受信する場合に設定します。

●データ名D

空白を設定します。

●データ名G

セグメントを受信する領域の長さを設定します。

●データ名H，データ名I，データ名J，データ名K，データ名L，データ名M1，データ名M2，データ名M3

空白を設定します。

●データ名M4，データ名M5

0を設定します。

●データ名M6

空白を設定します。

●データ名M7

使用するバッファ形式を設定します。

VALUE '1'

バッファ形式1を使用する場合に設定します。

VALUE '2'

バッファ形式2を使用する場合に設定します。

空白

省略されたものとして，「VALUE '1'」（バッファ形式1）が設定されます。

●データ名N

MCFで使用する領域です。

●データ名O

空白を設定します。

●データ名P

先頭セグメントを受信する場合は，この領域には入力元の論理端末名称が返されます。

中間セグメントまたは最終セグメントを受信する場合は，入力元の論理端末名称を設定します。先頭セグメントの受信時に返された論理端末名称を設定してください。

先頭セグメントの受信処理終了後データ名PにはOpenTP1から値が返されます。

●データ名Q

MCFで使用する領域です。

●データ名R

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名V

【バッファ形式1の場合】　PIC X(8)

【バッファ形式2の場合】　PIC X(2)

MCFで使用する領域です。

OpenTP1から値が返されるデータ領域

●データ名B

リターンコードが，5けたの数字で返されます。

●データ名E

メッセージを受信した日付がYYYYMMDD（YYYY：西暦年　MM：月　DD：日）の形式で返されます。

●データ名F

メッセージを受信した時刻がHHMMSS00（HH：時　MM：分　SS：秒，00は固定）の形式で返されます。

●データ名P

先頭セグメントを受信する場合だけ，入力元の論理端末名称が返されます。

中間セグメントまたは最終セグメントを受信する場合は，ここで返された論理端末名称をデータ名Pに設定してください。

●データ名U

【バッファ形式1の場合】　PIC 9(9)

受信したセグメントの長さが返されます。

【バッファ形式2の場合】　PIC 9(4)

受信したセグメントの長さに+4を加算した値が返されます。

●データ名W

受信したセグメントの内容が返されます。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

71000
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を2回以上呼び出しています。中間セグメントおよび最終セグメントを受信する場合は，データ名Cに「VALUE 'SEG△'」を設定してCBLDCMCF('RECEIVE△')を呼び出してください。

71001
メッセージの最終セグメントを受信したあとで，次のセグメントを受信するCBLDCMCF('RECEIVE△')を呼び出しています。直前に呼び出したCBLDCMCF('RECEIVE△')でメッセージはすべて受信しました。このリターン値が返されたあとに，再びCBLDCMCF('RECEIVE△')を呼び出した場合は，ステータスコード72000が返されます。

71002
メッセージキューからの入力処理中に障害が発生しました。

メッセージキューが閉塞されています。

71108
プロセスのローカルメモリが不足しています。

72000
＜MHPの実行でリターンした場合＞

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，中間セグメントおよび最終セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出しています。先頭セグメントを呼び出す場合は，データ名CにVALUE 'FRST'を設定してCBLDCMCF('RECEIVE△')を呼び出してください。

ステータスコード71001が返されたあとに，再びCBLDCMCF('RECEIVE△')を呼び出しています。

＜SPPの実行でリターンした場合＞
SPPではCBLDCMCF('RECEIVE△')を呼び出せません。

72001
データ名Pに設定した論理端末名称が間違っています。

72013
データ名Gの指定値を超えるセグメントを受信しました。データ名Gの指定値を超えた部分は切り捨てられました。

バッファ形式2の場合で，32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。

72016
データ名Dに設定した値が間違っています。

データ名Nまたはデータ名Tに設定した値が間違っています。

データ名M7に設定した値が間違っています。

72024
データ名Oに設定した値が間違っています。

72025
データ名Cに設定した値が間違っています。

72028
データ名Aに設定した値が間違っています。

72036
データ名Gの指定値が不足しています。バッファ形式1の場合は9バイト以上，バッファ形式2の場合は5バイト以上の領域を確保してください。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

CBLDCMCF('RECVSYNC') －同期型の応答メッセージの受信（COBOL言語）

形式

PROCEDURE DIVISIONの指定

CALL 'CBLDCMCF' USING 一意名1 一意名2 一意名3

DATA DIVISIONの指定

01 一意名1.
  02 データ名A   PIC X(8)  VALUE 'RECVSYNC'.
  02 データ名B   PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C   PIC X(4).
  02 データ名D   PIC X(4)  VALUE SPACE.
  02 データ名E   PIC 9(8).
  02 データ名F   PIC 9(8).
  02 データ名G   PIC 9(9)  COMP.
  02 データ名H   PIC X(4)  VALUE SPACE.
  02 データ名I   PIC X(4)  VALUE SPACE.
  02 データ名J   PIC X(4)  VALUE SPACE.
  02 データ名K   PIC X(4)  VALUE SPACE.
  02 データ名L   PIC X(8)  VALUE SPACE.
  02 データ名M1  PIC X(4)  VALUE SPACE.
  02 データ名M2  PIC X(8)  VALUE SPACE.
  02 データ名M3  PIC X(4)  VALUE SPACE.
  02 データ名M4  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M5  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M6  PIC X(1)  VALUE SPACE.
  02 データ名M7  PIC X(1).
  02 データ名N   PIC X(14) VALUE LOW-VALUE.
01 一意名2.
  02 データ名O   PIC X(4)  VALUE SPACE.
  02 データ名P   PIC X(8).
  02 データ名Q   PIC X(8)  VALUE SPACE.
  02 データ名R   PIC X(8)  VALUE SPACE.
  02 データ名T   PIC X(28) VALUE LOW-VALUE.
01 一意名3.
  02 データ名U   PIC 9(x)  COMP.
  02 データ名V   PIC X(x).
  02 データ名X   PIC X(1).
  02 データ名Z   PIC X(n).

機能

相手システムから届いた同期型の受信メッセージのうち，先頭セグメント以外の後続する一つのセグメントを受信します。先頭セグメントを受信するCBLDBMCF('SENDRECV')のあとに，後続するセグメントの数だけCBLDCMCF('RECVSYNC')を呼び出すと，一つの論理メッセージを受信できます。

セグメントを受信する領域（一意名3で示す領域）の形式を次に示します。

UAPで値を設定するデータ領域

●データ名A

同期型のメッセージの受信を示す要求コードを「VALUE 'RECVSYNC'」と設定します。

●データ名C

メッセージの後続セグメントを受信する「VALUE 'SEG △ '」を設定します。

●データ名D

空白を設定します。

●データ名G

セグメントを受信する領域の長さを設定します。

●データ名H，データ名I，データ名J，データ名K，データ名L，データ名M1，データ名M2，データ名M3

空白を設定します。

●データ名M4，データ名M5

0を設定します。

●データ名M6

空白を設定します。

●データ名M7

使用するバッファ形式を次の値で設定します。

VALUE '1'

バッファ形式1を使用する場合に設定します。

VALUE '2'

バッファ形式2を使用することを設定します。

空白

省略されたものとして，「VALUE '1'」（バッファ形式1）が設定されます。

●データ名N

MCFで使用する領域です。

●データ名O

空白を設定します。

●データ名P

入力元の論理端末名称を設定します。論理端末名称は最大8バイトです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名Q，データ名R

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名V

【バッファ形式1の場合】　PIC X(7)

【バッファ形式2の場合】　PIC X(1)

MCFで使用する領域です。

●データ名X

MCFで使用する領域です。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

●データ名E

メッセージを受信した日付がYYYYMMDD（YYYY：西暦年　MM：月　DD：日）の形式で返されます。

●データ名F

メッセージを受信した時刻がHHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で返されます。

●データ名U

【バッファ形式1の場合】　PIC 9(9)

受信したメッセージのセグメントの長さが返されます。

【バッファ形式2の場合】　PIC 9(4)

受信したメッセージのセグメントの長さに+4を加算した値が返されます。

●データ名Z

受信したセグメントの内容が返されます。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

71001
メッセージの最終セグメントを受信したあとで，その次のセグメントを受信するCBLDCMCF('RECVSYNC')を呼び出しています。直前に呼び出したCBLDCMCF('RECVSYNC')でそのメッセージはすべて受信しました。
このステータスコードが返されたあとに，再び次のセグメントを受信するCBLDCMCF('RECVSYNC')を呼び出した場合は，ステータスコード72000が返されます。

71002
MCFが終了処理中のため，メッセージの受信を受け付けられません。

71108
メッセージの受信に必要な管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

72000
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('RECVSYNC')を呼び出しています。
ステータスコード71001が返されたあとに，再びCBLDCMCF('RECVSYNC')を呼び出しています。

72001
データ名Pに設定した論理端末名称が間違っています。

CBLDCMCF('RECVSYNC')を呼び出せない論理端末を設定しています。

72013
データ名Gの指定値を超えるセグメントを受信しました。データ名Gの指定値を超えた部分は切り捨てられました。

バッファ形式2の場合で，32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。

72016
データ名Nまたはデータ名Tに設定した値が間違っています。

データ名Qに設定した値が間違っています。

データ名M7に設定した値が間違っています。

72024
データ名Oに設定した値が間違っています。

72025
データ名Cに設定した値が間違っています。

72028
データ名Aに設定した値が間違っています。

72036
データ名Gの指定値が不足しています。バッファ形式1の場合は9バイト以上，バッファ形式2の場合は5バイト以上の領域を確保してください。

73001
入力元の論理端末で障害が発生しました。

73002
CBLDCMCF('RECVSYNC')の処理中に，入力元の論理端末とMCFとの間のコネクションまたは経路が切り離されました。

CBLDCMCF('RECVSYNC')が呼び出されるまでに，入力元の論理端末とMCFとの間のコネクションまたは経路が切り離されました。

73008
入力元の論理端末は，次のコマンドで停止しています。

mcftdctle

mcftdctcn

73010
入力または出力メッセージ編集UOCで障害が発生しました。

メッセージの読み込み時に障害が発生しました。

73018
データ名M5に設定した値が間違っています。

73020
設定した論理端末は停止しています。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

CBLDCMCF('RESEND ') － メッセージの再送（COBOL言語）

形式

PROCEDURE DIVISION の指定

CALL  'CBLDCMCF'USING 一意名1 一意名2 一意名3

DATA DIVISION の指定

01 一意名1.
  02 データ名A   PIC X(8)  VALUE 'RESEND  '.
  02 データ名B   PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C   PIC X(4)  VALUE SPACE.
  02 データ名D   PIC X(4)  VALUE SPACE.
  02 データ名E   PIC 9(8).
  02 データ名F   PIC 9(8).
  02 データ名G   PIC 9(9)  COMP VALUE ZERO.
  02 データ名H   PIC X(4)  VALUE SPACE.
  02 データ名I   PIC X(4)  VALUE SPACE.
  02 データ名J   PIC X(4).
  02 データ名K   PIC X(4).
  02 データ名L   PIC X(8)  VALUE SPACE.
  02 データ名M1  PIC X(4)  VALUE SPACE.
  02 データ名M2  PIC X(8)  VALUE SPACE.
  02 データ名M3  PIC X(4)  VALUE SPACE.
  02 データ名M4  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M5  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M6  PIC X(1)  VALUE SPACE.
  02 データ名M7  PIC X(1)  VALUE SPACE.
  02 データ名N   PIC X(14) VALUE LOW-VALUE.
01 一意名2.
  02 データ名O   PIC X(4)  VALUE 'OUT '.
  02 データ名P   PIC X(8).
  02 データ名Q   PIC X(8)  VALUE SPACE.
  02 データ名R   PIC X(8)  VALUE SPACE.
  02 データ名S   PIC X(28) VALUE LOW-VALUE.
01 一意名3.
  02 データ名T   PIC X(8).
  02 データ名U   PIC X(4).
  02 データ名V   PIC 9(9)  COMP.
  02 データ名W   PIC X(4).
  02 データ名X   PIC X(12) VALUE LOW-VALUE.

機能

以前に送信したメッセージを再び送信します。再送するメッセージは，以前に送信したメッセージとは別の，新しいメッセージとして扱います。どのメッセージを再送するかは，次に示す送信済みメッセージの情報を基に選択できます。

出力先の論理端末名称

メッセージ通番

メッセージ種別（一般の一方送信または優先の一方送信）

対象としたメッセージが以前に送信されていない場合は，CBLDCMCF('RESEND△△')はステータスコード70904を返します。また，メッセージキュー（ディスクキュー）内に対象のメッセージがない場合もステータスコード70904を返します。このため，使用するメッセージキューの種別ではディスクキューを指定するとともに，メッセージキューの大きさの定義は余裕を持った値を指定してください。

UAPで値を設定するデータ領域

●データ名A

メッセージの再送を示す要求コードを「VALUE 'RESEND△△'」と設定します。

●データ名C，データ名D

空白を設定します。

●データ名E，データ名F

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H，データ名I

空白を設定します。

●データ名J

一般として再送するか優先として再送するかを設定します。

VALUE 'NORM'

一般の一方送信メッセージとして再送する場合に設定します。

VALUE 'PRIO'

優先の一方送信メッセージとして再送する場合に設定します。

空白

省略されたものとして，「VALUE 'NORM'」（一般の一方送信メッセージとして再送）が設定されます。

●データ名K

再送するメッセージに出力通番を付け直すかどうかを設定します。

VALUE 'SEQ△'

再送するメッセージに出力通番を付け直す場合に設定します。

VALUE 'NSEQ'

再送するメッセージに出力通番を付け直さない場合に設定します。

空白

省略されたものとして，「VALUE 'NSEQ'」（出力通番を付け直さない）が設定されます。

●データ名L，データ名M1，データ名M2，データ名M3

空白を設定します。

●データ名M4，データ名M5

0を設定します。

●データ名M6，データ名M7

空白を設定します。

●データ名N

MCFで使用する領域です。

●データ名O

一方送信を示す「VALUE 'OUT△'」を設定します。

●データ名P

メッセージ出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名Q，データ名R

空白を設定します。

●データ名S

MCFで使用する領域です。

●データ名T

再送するメッセージを検索するキーとして，以前に送信したメッセージの出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名U

再送するメッセージを検索するキーとして，以前に送信したメッセージの送信種別を設定します。

VALUE 'NORM'

一般の一方送信メッセージを対象とする場合に設定します。

VALUE 'PRIO'

優先の一方送信メッセージを対象とする場合に設定します。

空白

省略されたものとして，「VALUE 'NORM'」（一般の一方送信メッセージを対象）が設定されます。

VALUE 'PRIO'を設定した場合は，データ名Tに出力先の論理端末名称を設定できません。

●データ名V

再送するメッセージを検索するキーとして，以前に送信したメッセージの出力通番を設定します。データ名Wに「VALUE 'LAST'」を設定した場合は，ここに設定した値は無効となります。

●データ名W

最終出力通番を持つメッセージを再送するかどうかを設定します。

VALUE 'LAST'

最終出力通番を持つメッセージを再送する場合に設定します。この値を設定した場合は，データ名Vに設定した値は無効となります。

空白

データ名Vで設定した出力通番を持つメッセージを再送する場合に設定します。

●データ名X

MCFで使用する領域です。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

70904
該当するメッセージがありません。

70905
再送するメッセージのセグメントの長さが，UAP共通定義（mcfmuap -e）で指定した値を超えています。

71002
メッセージキューへの出力処理中に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

MCFが終了処理中のため，メッセージの再送を受け付けられません。

71003
メッセージキューが満杯です。

71004
メッセージキューから取り出したメッセージを格納するバッファ（作業領域）をメモリ上に確保できませんでした。

71108
メッセージを再送しようとしましたが，再送先の管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

72000
＜MHPの実行でリターンした場合＞
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('RESEND△△')を呼び出しています。非トランザクション属性のMHPから，CBLDCMCF('RESEND△△')を呼び出しています。

＜SPPの実行でリターンした場合＞
トランザクションでないSPPの処理から，CBLDCMCF('RESEND△△')を呼び出しています。

72001
データ名Pまたはデータ名Tに設定した論理端末名称が間違っています。

CBLDCMCF('RESEND△△')を呼び出せない論理端末を設定しています。

72016
データ名Jに設定した値が間違っています。

データ名M4に設定した値が間違っています。

データ名Uに設定した値が間違っています。

データ名N，データ名S，またはデータ名Xに設定した値が間違っています。

72017
データ名Kに設定した値が間違っています。

72019
データ名M6に設定した値が間違っています。

72024
データ名Oに設定した値が間違っています。

72028
データ名Aに設定した値が間違っています。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

注意事項

メッセージの再送時には，MCFマネジャ定義のUAP共通定義（mcfmuap）の-eオプションと-lオプションの指定値に注意してください。

-eオプション

-eオプションでは，CBLDCMCF('RESEND△△')で使用する作業領域の大きさを指定します。再送するメッセージのセグメントがこの作業領域より大きい場合，CBLDCMCF('RESEND△△')はメッセージを再送しないで，ステータスコード70905を返します。このため，-eオプションでは，セグメントの最大長よりも大きな値を設定しておいてください。

-lオプション

-lオプションでは，通番に関して指定します。この内容によっては，メッセージキューファイル内に同じ通番を持つメッセージが同時に存在する場合があります。この場合は，どのメッセージを再送するか保証できません。

CBLDCMCF('SEND ') － 一方送信メッセージの送信（COBOL言語）

形式

PROCEDURE DIVISION の指定

CALL  'CBLDCMCF'USING 一意名1 一意名2 一意名3

DATA DIVISION の指定

01 一意名1.
  02 データ名A   PIC X(8)  VALUE 'SEND    '.
  02 データ名B   PIC X(5).
  02 FILLER    PIC X(3).
  02 データ名C   PIC X(4)  VALUE SPACE.
  02 データ名D   PIC X(4)  VALUE SPACE.
  02 データ名E   PIC 9(8).
  02 データ名F   PIC 9(8).
  02 データ名G   PIC 9(9)  COMP VALUE ZERO.
  02 データ名H   PIC X(4).
  02 データ名I   PIC X(4)  VALUE SPACE.
  02 データ名J   PIC X(4).
  02 データ名K   PIC X(4).
  02 データ名L   PIC X(8)  VALUE SPACE.
  02 データ名M1  PIC X(4)  VALUE SPACE.
  02 データ名M2  PIC X(8)  VALUE SPACE.
  02 データ名M3  PIC X(4)  VALUE SPACE.
  02 データ名M4  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M5  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M6  PIC X(1)  VALUE SPACE.
  02 データ名M7  PIC X(1).
  02 データ名N   PIC X(14) VALUE LOW-VALUE.
01 一意名2.
  02 データ名O   PIC X(4)  VALUE 'OUT '.
  02 データ名P   PIC X(8).
  02 データ名Q   PIC X(8)  VALUE SPACE.
  02 データ名R   PIC X(8)  VALUE SPACE.
  02 データ名T   PIC X(28) VALUE LOW-VALUE.
01 一意名3.
  02 データ名U   PIC 9(x)  COMP.
  02 データ名V   PIC X(x).
  02 データ名W   PIC X(n).

機能

相手システムへ送る一方送信メッセージのうち，一つのセグメントを送信します。セグメントの数だけCBLDCMCF('SEND△△△△')を呼び出すと，一つの論理メッセージを送信できます。

セグメントを送信する領域（一意名3で示す領域）の形式を示します。

UAPで値を設定するデータ領域

●データ名A

メッセージの送信を示す要求コードを「VALUE 'SEND△△△△'」と設定します。

●データ名C，データ名D

空白を設定します。

●データ名E，データ名F

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H

メッセージの最終セグメントを送信するかどうかを設定します。次のどちらかを設定します。

VALUE 'ESI△'

先頭セグメントおよび中間セグメントを送信する場合に設定します。

VALUE 'EMI△'

最終セグメントを送信する場合や，メッセージが単一セグメントの場合に，「VALUE 'EMI△'」を設定します。

メッセージの送信の終了を連絡するために，最後は必ずこの値を設定してください。

●データ名I

空白を設定します。

●データ名J

一般として送信するか優先として送信するかを設定します。

VALUE 'NORM'

一般の一方送信メッセージとして送信する場合に設定します。

VALUE 'PRIO'

優先の一方送信メッセージとして送信する場合に設定します。

空白

省略されたものとして，「VALUE 'NORM'」（一般の一方送信メッセージとして送信）が設定されます。

●データ名K

出力通番を付けるかどうかを設定します。

VALUE 'SEQ△'

出力通番が必要な場合に設定します。

VALUE 'NSEQ'

出力通番が必要ない場合に設定します。

空白

省略されたものとして，「VALUE 'NSEQ'」（出力通番を付けない）が設定されます。

●データ名L，データ名M1，データ名M2，データ名M3

空白を設定します。

●データ名M4，データ名M5

0を設定します。

●データ名M6

空白を設定します。

●データ名M7

使用するバッファ形式を設定します。

VALUE '1'

バッファ形式1を使用する場合に設定します。

VALUE '2'

バッファ形式2を使用する場合に設定します。

空白

省略されたものとして，「VALUE '1'」（バッファ形式1）が設定されます。

●データ名N

MCFで使用する領域です。

●データ名O

一方送信を示す「VALUE 'OUT△'」を設定します。

●データ名P

出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名Q，データ名R

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名U

【バッファ形式1の場合】PIC 9(9)

送信するセグメントの長さを設定します。メッセージの送信の終了を連絡する場合で，セグメントの内容がないときは，0を設定してください。

【バッファ形式2の場合】PIC 9(4)

送信するセグメントの長さに+4を加算した値を設定します。メッセージの送信の終了を連絡する場合で，セグメントの内容がないときは，4を設定してください。

●データ名V

【バッファ形式1の場合】　PIC X(8)

【バッファ形式2の場合】　PIC X(2)

MCFで使用する領域です。

●データ名W

送信するセグメントの内容を設定します。先頭セグメントまたは中間セグメントの送信後，メッセージの送信の終了を連絡する場合にも必ず設定してください。一つのセグメントで32000バイトまで送信できます。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

71002
メッセージキューへの出力処理中に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

データ名Uに32000バイトを超える値を設定しています。

MCFが終了処理中のため，メッセージの送信を受け付けられません。

71003
メッセージキューが満杯です。

71004
メッセージを格納するバッファをメモリ上に確保できませんでした。

71108
メッセージを送信しようとしましたが，送信先の管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

72000
＜MHPの実行でリターンした場合＞
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('SEND△△△△')を呼び出しています。

＜SPPの実行でリターンした場合＞
トランザクションでないSPPの処理から，CBLDCMCF('SEND△△△△')を呼び出しています。

72001
データ名Pに設定した論理端末名称が間違っています。

CBLDCMCF('SEND△△△△')を呼び出せない論理端末を設定しています。

72005
バッファ形式1の先頭セグメントまたは中間セグメント送信時，データ名Uに0以下の値を設定しています。または，バッファ形式2の先頭セグメントまたは中間セグメント送信時，データ名Uに4以下の値を設定しています。

72016
データ名Nまたはデータ名Tに設定した値が間違っています。

データ名Jに設定した値が間違っています。

データ名M1に設定した値が間違っています。

データ名M7に設定した値が間違っています。

72017
データ名Kに設定した値が間違っています。

72019
データ名M6に設定した値が間違っています。

72020
データ名Iに設定した値が間違っています。

72024
データ名Oに設定した値が間違っています。

72026
データ名Hに設定した値が間違っています。

72028
データ名Aに設定した値が間違っています。

72041
バッファ形式1の単一セグメント送信時，データ名Uに0以下の値を設定しています。または，バッファ形式2の単一セグメント送信時，データ名Uに4以下の値を設定しています。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

CBLDCMCF('SENDRECV') － 同期型の問い合わせメッセージの送受信（COBOL言語）

形式

PROCEDURE DIVISIONの指定

CALL  'CBLDCMCF' USING 一意名1 一意名2 一意名3 一意名4

DATA DIVISIONの指定

01 一意名1.
  02 データ名A   PIC X(8)  VALUE 'SENDRECV'.
  02 データ名B   PIC X(5).
  02 FILLER     PIC X(3).
  02 データ名C   PIC X(4)  VALUE SPACE.
  02 データ名D   PIC X(4)  VALUE SPACE.
  02 データ名E   PIC 9(8).
  02 データ名F   PIC 9(8).
  02 データ名G   PIC 9(9)  COMP.
  02 データ名H   PIC X(4).
  02 データ名I   PIC X(4)  VALUE SPACE.
  02 データ名J   PIC X(4)  VALUE SPACE.
  02 データ名K   PIC X(4)  VALUE SPACE.
  02 データ名L   PIC X(8)  VALUE SPACE.
  02 データ名M1  PIC X(4)  VALUE SPACE.
  02 データ名M2  PIC X(8)  VALUE SPACE.
  02 データ名M3  PIC X(4)  VALUE SPACE.
  02 データ名M4  PIC 9(9)  COMP VALUE ZERO.
  02 データ名M5  PIC 9(9)  COMP.
  02 データ名M6  PIC X(1)  VALUE SPACE.
  02 データ名M7  PIC X(1).
  02 データ名N   PIC X(14) VALUE LOW-VALUE.
01 一意名2.
  02 データ名O   PIC X(4)  VALUE 'IO  '.
  02 データ名P   PIC X(8).
  02 データ名Q   PIC X(8)  VALUE SPACE.
  02 データ名R   PIC X(8)  VALUE SPACE.
  02 データ名T   PIC X(28) VALUE LOW-VALUE.
01 一意名3.
  02 データ名U   PIC 9(x)  COMP.
  02 データ名V   PIC X(x).
  02 データ名W   PIC X(n).
01 一意名4.
  02 データ名X   PIC 9(x)  COMP.
  02 データ名Y1  PIC X(x)  VALUE SPACE.
  02 データ名Y2  PIC X(1).
  02 データ名Z   PIC X(n).

機能

同期型でメッセージを送信したあと，同期型でメッセージを受信します。

CBLDCMCF('SENDRECV')では，相手システムへ送るメッセージのうち，一つのセグメントを送信できます。セグメントの数だけCBLDCMCF('SENDRECV')を呼び出すと，一つの論理メッセージを送信できます。

メッセージの最終セグメントを送信すると，CBLDCMCF('SENDRECV')は相手システムからの応答を待ちます。応答が届くと，そのメッセージの先頭セグメントを受信します。中間セグメントまたは最終セグメントを受信する場合は，CBLDCMCF('RECVSYNC')を呼び出してください。

セグメントを送信する領域（一意名3で示す領域）の形式を示します。

セグメントを受信する領域（一意名4で示す領域）の形式を示します。

UAPで値を設定するデータ領域

●データ名A

同期型のメッセージの送受信を示す要求コードを「VALUE 'SENDRECV'」と設定します。

●データ名C，データ名D

空白を設定します。

●データ名G

セグメントを受信する領域の長さを設定します。

●データ名H

メッセージの最終セグメントを送信するかどうかを設定します。次のどちらかを設定してください。

VALUE 'ESI△'

先頭セグメントおよび中間セグメントを送信する場合に設定します。

VALUE 'EMI△'

最終セグメントを送信する場合や，メッセージが単一セグメントの場合に，「VALUE 'EMI△'」を設定します。

メッセージの送信の終了を連絡するために，最後は必ずこの値を設定してください。

この値を設定してCBLDCMCF('SENDRECV') を呼び出すと，論理端末からの応答を待ちます。

●データ名I，データ名J，データ名K，データ名L，データ名M1，データ名M2，データ名M3

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

CBLDCMCF('SENDRECV')を呼び出してから終了するまでの最大時間を設定します。

0を設定した場合，MCFマネジャ定義のUAP共通定義（mcfmuap -t）で指定した，同期型送受信監視時間が設定されます。負の値を設定した場合は，時間を監視しません。

●データ名M6

空白を指定します。

●データ名M7

使用するバッファ形式を設定します。

VALUE '1'

バッファ形式1を使用する場合に設定します。

VALUE '2'

バッファ形式2を使用する場合に設定します。

空白

省略されたものとして，「VALUE '1'」（バッファ形式1）が設定されます。

●データ名N

MCFで使用する領域です。

●データ名O

一方送信を示す「VALUE 'IO△△'」を設定します。

●データ名P

メッセージを出力して応答を入力する論理端末名称を設定します。論理端末名称の長さは最大8バイトです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名Q，データ名R

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名U

【バッファ形式1の場合】PIC 9(9)

送信するセグメントの長さを設定します。メッセージの送信の終了を連絡する場合で，セグメントの内容がないときは，0を設定してください。

【バッファ形式2の場合】PIC 9(4)

送信するセグメントの長さに＋4を加算した値を設定します。メッセージの送信の終了を連絡する場合で，セグメントの内容がないときは，4を設定してください。

●データ名V

【バッファ形式1の場合】　PIC X(8)

【バッファ形式2の場合】　PIC X(2)

MCFで使用する領域です。

●データ名W

送信するセグメントの内容を設定します。先頭セグメントまたは中間セグメントの送信後，メッセージの送信の終了を連絡する場合にも必ず設定してください。一つのセグメントで32000バイトまで送信できます。

●データ名Y1

【バッファ形式1の場合】　PIC X(7)

【バッファ形式2の場合】　PIC X(1)

空白を設定します。

●データ名Y2

MCFで使用する領域です。

OpenTP1から値が返されるデータ領域

●データ名B

ステータスコードが，5けたの数字で返されます。

●データ名E

メッセージを受信した日付がYYYYMMDD（YYYY：西暦年　MM：月　DD：日）の形式で返されます。

●データ名F

メッセージを受信した時刻がHHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で返されます。

●データ名X

【バッファ形式1の場合】　PIC 9(9)

受信したセグメントの長さが返されます。

【バッファ形式2の場合】　PIC 9(4)

受信したセグメントの長さ＋4が返されます。

●データ名Z

受信したセグメントの内容が返されます。

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71002 | メッセージキューへの入出力処理時に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
データ名Uに32000バイトを超える値を設定しています。
MCFが終了処理中のため，メッセージの送受信を受け付けられません。
71003 | メッセージキューが満杯です。
71004 | メッセージを格納するバッファをメモリ上に確保できませんでした。
71108 | メッセージを送信しようとしましたが，送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000 | 先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('SENDRECV')を呼び出します。
72001 | データ名Pに設定した論理端末名称が間違っています。
CBLDCMCF('SENDRECV')を呼び出せない論理端末を設定しています。
72005 | バッファ形式1の先頭セグメントまたは中間セグメント送信時，データ名Uに0以下の値を設定しています。または，バッファ形式2の先頭セグメントまたは中間セグメント送信時，データ名Uに4以下の値を設定しています。
72013 | データ名Gの指定値を超えるセグメントを受信しました。データ名Gの指定値の長さを超えた部分は切り捨てられました。
バッファ形式2の場合で，32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。
72016 | データ名Nまたはデータ名Tに設定した値が間違っています。
データ名M4に設定した値が間違っています。
データ名M7に設定した値が間違っています。
72019 | データ名M6に設定した値が間違っています。
72024 | データ名Oに設定した値が間違っています。
72026 | データ名Hに設定した値が間違っています。
72028 | データ名Aに設定した値が間違っています。
72036 | データ名Gの指定値が不足しています。バッファ形式1の場合は9バイト以上，バッファ形式2の場合は5バイト以上の領域を確保してください。
72041 | バッファ形式1の単一セグメント送信時，データ名Uに0以下の値を設定しています。または，バッファ形式2の単一セグメント送信時，データ名Uに4以下の値を設定しています。
72073 | 非同期型のメッセージの送信処理が仕掛り中です。
73001 | 出力先の論理端末で障害が発生しました。
73002 | MCF通信サービスで障害が発生しました。
73005 | データ名M5に設定した時間が経過しましたが，論理端末からの応答がありません。
応答ダミーデータ（空白メッセージ）を受信しました。
73008 | 論理端末が閉塞中，またはMCFが終了処理中に，CBLDCMCF('SENDRECV')を呼び出しました。
73010 | 入力または出力メッセージ編集UOCで障害が発生しました。
メッセージの読み込み時に障害が発生しました。
メッセージの編集エラーが発生しました。
73015 | 出力先の論理端末は，ほかのUAPで仕掛り中です。
73018 | データ名M5に設定した値が間違っています。
73020 | 出力先の論理端末は停止しています。
上記以外 | プログラムの破壊などによる，予期しないエラーが発生しました。

RECEIVE － メッセージの受信（データ操作言語）

形式

DATA DIVISION（通信記述項）の指定

CD   通信記述名
     FOR  {INPUT|I-O}
   〔STATUS  KEY  IS  データ名1〕
   〔SYMBOLIC  TERMINAL  IS データ名2〕
   〔MESSAGE  DATE  IS  データ名3〕
   〔MESSAGE  TIME  IS  データ名4〕.

PROCEDURE DIVISION（通信文）の指定

RECEIVE   通信記述名
  〔FIRST〕 SEGMENT
        INTO  一意名1.

機能

次に示すCALLインタフェースの機能を実現します。

一方送信メッセージの受信　CBLDCMCF('RECEIVE△')

通信記述項に設定する項目

●FOR句

次の値を指定します。

INPUT

一方送信メッセージの受信

●STATUS KEY句

ステータスコードを受け取りたい場合に指定します。省略した場合は，ステータスコードを受け取りません。

●SYMBOLIC TERMINAL句

入力元の論理端末名称を参照するデータ項目を指定します。

●MESSAGE DATE句

メッセージを受信した日付を参照するデータ項目を指定します。YYMMDD（YY：西暦の下2けた　MM：月　DD：日）の形式で参照できます。

●MESSAGE TIME句

メッセージを受信した時刻を参照するデータ項目を指定します。HHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で参照できます。

通信文に指定する項目

●FIRST

先頭セグメントを受信する場合に指定します。

●一意名1

セグメントを受信するデータ項目を指定します。

一意名1の形式を次に示します。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

71000
先頭セグメントを受信するRECEIVE文を2回以上実行しています。中間セグメントまたは最終セグメントを受信する場合は，FIRSTを指定しないでRECEIVE文を実行してください。

71001
メッセージの最終セグメントを受信したあとで，その次のセグメントを受信するRECEIVE文を実行しています。直前に実行したRECEIVE文でそのメッセージはすべて受信しました。
このステータスコードが返されたあとに，再び次のメッセージを受信するRECEIVE文を実行した場合は，ステータスコード72000が返されます。

71002
メッセージキューからの入力処理中に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

MCFが終了処理中のため，メッセージの受信を受け付けられません。

71108
メッセージの受信に必要な管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

72000
＜MHPの実行でリターンした場合＞

先頭セグメントを受信するRECEIVE文を実行する前に，中間セグメントまたは最終セグメントを受信するRECEIVE文を実行しています。

ステータスコード71001が返されたあとで，再びRECEIVE文を実行しています。

＜SPPの実行でリターンした場合＞
SPPではRECEIVE文を実行できません。

72001
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。

RECEIVE文を実行できない論理端末を設定しています。

72013
受信領域の長さを超えるセグメントを受信しました。受信領域の長さを超えた部分は切り捨てられました。

一意名1のLの指定値を超えるセグメントを受信しました。一意名1のLの指定値を超えた部分は切り捨てられました。

72024
FOR句の指定が間違っています。

72036
一意名1のLの指定値が不足しています。5バイト以上の領域を確保してください。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

SEND － メッセージの送信（データ操作言語）

形式1（セグメントの内容を設定して送信する場合）

DATA DIVISION（通信記述項）の指定

CD   通信記述名
    FOR {OUTPUT|I-O}
  〔STATUS  KEY  IS  データ名1〕
  〔SYMBOLIC  TERMINAL  IS  データ名2〕
  〔SYNCHRONOUS  MODE  IS  {SYNC|ASYNC|データ名6}〕
  〔SWITCHING  MODE  IS  {NORMAL|PRIOR|データ名7}〕
  〔DETAIL  MODE  IS  データ名10〕
  〔WAITING  TIME  IS  データ名11〕.

PROCEDURE DIVISION（通信文）の指定

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

形式2（セグメントの内容を設定しないで，メッセージの送信の終了だけ連絡する場合）

DATA DIVISION（通信記述項）の指定

CD   通信記述名
    FOR {OUTPUT|I-O}
  〔STATUS  KEY  IS  データ名1〕
  〔SYMBOLIC  TERMINAL  IS  データ名2〕
  〔SWITCHING  MODE  IS  {NORMAL|PRIOR|データ名7}〕.

PROCEDURE DIVISION（通信文）の指定

SEND 通信記述名 WITH  EMI.

機能

次に示すCALLインタフェースの機能を実現します。

一方送信メッセージの送信　CBLDCMCF('SEND△△△△')

同期型の問い合わせメッセージの送受信　CBLDCMCF('SENDRECV')

同期型の問い合わせメッセージの送受信では，単一セグメントの論理メッセージだけを扱えます。

通信記述項に設定する項目

●FOR句

次のどちらかの値を指定します。

OUTPUT

一方送信メッセージの送信

I-O

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

●STATUS KEY句

ステータスコードを受け取りたい場合に指定します。この指定を省略した場合は，ステータスコードを受け取れません。

●SYMBOLIC TERMINAL句

論理端末名称を設定したデータ項目を指定します。

●SYNCHRONOUS MODE句

メッセージ送信が，同期型か非同期型かを指定します。

SYNC

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

同期型のメッセージ送受信の場合に設定します。

ASYNC

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

一方送信メッセージ送信の場合に設定します。

データ名6

次の値を設定したデータ項目

'0'：非同期型のメッセージ送信

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

指定を省略した場合は，非同期のメッセージ送信（ASYNC）が仮定されます。

●SWITCHING MODE句

一方送信メッセージの場合に，一般か優先かを指定します。

NORMAL

一般の一方送信メッセージ

PRIOR

優先の一方送信メッセージ

データ名7

次の値を設定したデータ項目

'0'または'△'：一般の一方送信メッセージ

'1'：優先の一方送信メッセージ

指定を省略した場合は，一般（NORMAL）が仮定されます。

●DETAIL MODE句

一方送信メッセージの場合に，出力通番を付けるかどうかを指定します。

データ名10

次の値を設定したデータ項目

'0'または'△'：出力通番を付けます。

'1'：出力通番を付けません。

省略した場合は，出力通番を付けません。

●WAITING TIME句

SEND文を実行してから終了するまでの，最大時間を設定したデータ項目を設定します。同期型のメッセージの送信，または同期型のメッセージを送受信する場合に指定します。

指定を省略した場合，または'00000000'を設定した場合は，MCFマネジャ定義のUAP共通定義（mcfmuap -t）で指定した同期型送信監視時間または同期型送受信監視時間が設定されます。

データ名11

監視時間の値をHHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で設定したデータ項目

通信文に指定する項目

●一意名1

セグメントを送信するデータ項目を指定します。一つのセグメントで32000バイトまで送信できます。

一意名1の形式を次に示します。

●WITH句

メッセージの最終セグメントを送信するかどうかを指定します。非同期型のメッセージ送信の場合だけ指定します。

ESI

先頭セグメントまたは中間セグメントの送信

EMI

最終セグメントまたは単一セグメントの送信

一意名2

次の値を設定したデータ項目

'1'：ESI（先頭セグメントまたは中間セグメント）

'2'：EMI（最終セグメントまたは単一セグメント）

省略した場合は，EMI（最終セグメントまたは単一セグメントの送信）が設定されます。

なお，同期型のメッセージの送受信（SENDRECV）の場合は，EMI を指定するか，または指定を省略してください。

●BEFORE句

同期型のメッセージを送受信する場合に，セグメントを受信するデータ項目（一意名3）を指定します。

一意名3の形式を次に示します。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

71002
メッセージキューへの出力処理中に障害が発生しました。

メッセージキューが閉塞されています。

メッセージキューが割り当てられていません。

一意名1のLに32000バイトを超える値を設定しています。

MCFが終了処理中のため，メッセージの送信を受け付けられません。

71003
メッセージキューが満杯です。

71004
メッセージを格納するバッファをメモリ上に確保できませんでした。

71108
メッセージを送信しようとしましたが，送信先の管理テーブルが確保できませんでした。

プロセスのローカルメモリが不足しています。

72000
＜MHPの実行でリターンした場合＞

応答型でないMHPから応答メッセージを送信しています。

先頭セグメントを受信するRECEIVE文を実行する前に，SEND文を実行しています。

＜SPPの実行でリターンした場合＞

SPPでは，応答メッセージを送信するSEND文を実行できません。

トランザクションでないSPPの処理から，SEND文を実行しています。

72001
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。

SEND文を実行できない論理端末を設定しています。

72005
先頭セグメントまたは中間セグメント送信時，一意名1のLに4以下の値を設定しています。

72013
一意名3のLの指定値を超えるセグメントを受信しました。一意名3のLの指定値を超えた部分は切り捨てられました。

32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。

72017
DETAIL MODE句に設定した値が間違っています。

72018
SWITCHING MODE句に設定した値が間違っています。

72020
SYNCHRONOUS MODE句に設定した値が間違っています。

72024
FOR句に設定した値が間違っています。

72026
WITH句に設定した値が間違っています。

72036
一意名3のLの指定値が不足しています。5バイト以上の領域を確保してください。

72037
BEFORE句に設定した値が間違っています。

72041
単一セグメント送信時，一意名1のLに4以下の値を設定しています。

72073
非同期型のメッセージの送信処理で仕掛り中です。

73001
出力先の論理端末で障害が発生しました。

73002
MCF通信サービスで障害が発生しました。

73005
WAITING TIME句に設定した時間が経過しましたが，論理端末からの応答がありません。

73008
論理端末が閉塞中，またはMCFが終了処理中に，SEND文を実行しました。

73010
入力または出力メッセージ編集UOCで障害が発生しました。

メッセージの読み込み時に障害が発生しました。

メッセージの編集エラーが発生しました。

73015
出力先の論理端末は，ほかのUAPで仕掛り中です。

73018
WAITING TIME句に設定した値が間違っています。

73020
出力先の論理端末は停止しています。

上記以外
プログラムの破壊などによる，予期しないエラーが発生しました。

ユーザアプリケーションプログラム作成例

UAPの作成例として，処理の流れを次の図に示し，その流れに沿ったコーディング例をC言語（K&R版）とCOBOL言語で示します。

また，TP1/NET/SLU-TypeP2では，このコーディング例を次のファイルで提供しています。

C言語（K&R版）のコーディング例

/BeTRAN/examples/mcf/SLUP2/aplib/c/ap1.c

/BeTRAN/examples/mcf/SLUP2/aplib/c/sv1.c

/BeTRAN/examples/mcf/SLUP2/aplib/c/sv2.c

COBOL言語のコーディング例

/BeTRAN/examples/mcf/SLUP2/aplib/cobol/ap1.cbl

/BeTRAN/examples/mcf/SLUP2/aplib/cobol/sv1.cbl

/BeTRAN/examples/mcf/SLUP2/aplib/cobol/sv2.cbl

データ操作言語のコーディング例

/BeTRAN/examples/mcf/SLUP2/aplib/dml/ap1.cbl

/BeTRAN/examples/mcf/SLUP2/aplib/dml/sv1.cbl

図3-1　処理の流れの例

C言語

#include<dcmcf.h>

#define rcvmax 5120
void slmhprcv1()
{
  char            termnam[16];
  char            mapname[16];
  char            sdatarea[2048];
  char            rdatarea[rcvmax];
  DCLONG          sdataleng;
  DCLONG          rdataleng;
  DCLONG          time;

  int             rtn;

  memset(mapname, 0, 16);
  memset(sdatarea, 0, 2048);
  memset(rdatarea, 0, rcvmax);

  rtn =dc_mcf_receive(   DCMCFFRST,
                         DCNOFLAGS,
                         termnam,
                         mapname,
                         rdatarea,
                         &rdataleng,
                         rcvmax,
                         &time   );

  /*****************************************************/
  /*                                                   */
  /*   User Service Part                               */
  /*                                                   */
  /*****************************************************/

  if(rtn !=DCMCFRTN_00000)
  {
     goto ERROR;
  }
ERROR:;
  return;
}

#include<dcmcf.h>

#define sndmax   448
#define rcvmax   5120
#define segmax   (sndmax -9 -3 -4)          /*432 bytes */

/*448 bytes */
typedef   struct senddata_s{
  char    mcf_use[8];
  char    ap_name[9];
  char    snd_dmy[3];
  char    snd_lng[4];
  char    snd_seg[segmax];
}sdata_def;

void   slsppsnd1()
{
  static char   *lename ="SL2REQ01";
  char            termnam[9];
  char            resv01[9];
  char            resv02[9];
  char            resv03[9];
  DCLONG          rdataleng;
  DCLONG          sdataleng;
  DCLONG          inbufleng;
  sdata_def       senddata;
  int     rtn_code;

  memset(resv01, 0, 9);
  memset(resv02, 0, 9);
  memset(resv03, 0, 9);

  memset(&senddata, 0x33, sizeof(senddata));

  memcpy(senddata.ap_name, "slup2snd ", 9);
  memcpy(senddata.snd_lng, "0448", 4);
  memcpy(senddata.snd_seg, "send:aaaaaaaaaa1aaaaaaaaaaaaaaa2
aaaaaaaaaaaaaaa3aaaaaaaaaaaaaaa4aaaaaaaaaaaaaaa5
aaaaaaaaaaaaaaa6aaaaaaaaaaaaaaa7aaaaaaaaaaaaaaa8
aaaaaaaaaaaaaaa9aaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaB
aaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaE
aaaaaaaaaaaaaaaFaaaaaaaaaaaaaaa0", 256);
  memcpy(senddata.snd_seg + segmax -3, "end", 3);

  rtn_code =dc_mcf_send(   DCMCFEMI,
                           DCMCFOUT,
                           lename,
                           resv01,
                           &senddata,
                           sndmax,  
                           resv02,
                           DCNOFLAGS   );
  if(rtn_code !=DCMCFRTN_00000)
  {
     goto ERROR;
  }
ERROR:;
  return;
}

#include <dcmcf.h>

#define sndmax   448
#define rcvmax   5120
#define segmax   (sndmax -9 -3 -4)/*432 bytes */

/*448 bytes */
typedef   struct senddata_s{
  char    mcf_use[8];
  char    ap_name[9];
  char    snd_dmy[3];
  char    snd_lng[4];
  char    snd_seg[segmax];
}sdata_def;

void   slsppreq1()
{
  static char   rcv_buf[rcvmax];
  static char   *lename ="SL2REQ01";
  char            termnam[9];
  char            resv01[9];
  char            resv02[9];
  char            resv03[9];
  DCLONG          rdataleng;
  DCLONG          sdataleng;
  DCLONG          inbufleng;
  sdata_def       senddata;
  DCLONG          rcvtime;
  int             rtn_code;

  memset(resv01, 0, 9);
  memset(resv02, 0, 9);
  memset(resv03, 0, 9);

  memset(&senddata, 0x33, sizeof(senddata));

  memcpy(senddata.ap_name, "slup2req ", 9);
  memcpy(senddata.snd_lng, "0448", 4);
  memcpy(senddata.snd_seg, "*FMH*aaaaaaaaaa1aaaaaaaaaaaaaaa2
aaaaaaaaaaaaaaa3aaaaaaaaaaaaaaa4aaaaaaaaaaaaaaa5
aaaaaaaaaaaaaaa6aaaaaaaaaaaaaaa7aaaaaaaaaaaaaaa8
aaaaaaaaaaaaaaa9aaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaB
aaaaaaaaaaaaaaaCaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaE
aaaaaaaaaaaaaaaFaaaaaaaaaaaaaaa0", 256);
  memcpy(senddata.snd_seg + segmax -3, "end", 3);

  rtn_code =dc_mcf_sendrecv (DCMCFEMI,
                             DCMCFIO,
                             lename,
                             resv01,
                             &senddata,
                             sndmax,
                             rcv_buf,
                             &rdataleng,
                             rcvmax,
                             &rcvtime,
                             0);

  if(rtn_code != DCMCFRTN_00000)
  {
     goto ERROR;
  }
ERROR:;
  return;
}

COBOL言語

IDENTIFICATION    DIVISION.
PROGRAM-ID.       UAPCBL.

ENVIRONMENT       DIVISION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.
01   RCV.
     02  MSG-REQ          PIC X(8)   VALUE   'RECEIVE '.
     02  RTN              PIC X(5).
     02  FILLER           PIC X(3).
     02  RSV1             PIC X(4)   VALUE   'FRST'.
     02  RSV2             PIC X(4)   VALUE   SPACE.
     02  MCFUSING1        PIC 9(8).
     02  MCFUSING2        PIC 9(8).
     02  RSV3             PIC 9(9)   COMP    VALUE   2048.
     02  SEGKIND          PIC X(4)   VALUE   SPACE.
     02  RSV4             PIC X(4)   VALUE   SPACE.
     02  MSGKIND          PIC X(4)   VALUE   SPACE.
     02  OUTPUTNO         PIC X(4)   VALUE   SPACE.
     02  RSV5             PIC X(8)   VALUE   SPACE.
     02  RSV6             PIC X(4)   VALUE   SPACE.
     02  RSV7             PIC X(8)   VALUE   SPACE.
     02  RSV8             PIC X(4)   VALUE   SPACE.
     02  RSV9             PIC 9(9)   COMP    VALUE   ZERO.
     02  RSV10            PIC 9(9)   COMP    VALUE   ZERO.
     02  RSV11            PIC X(1)   VALUE   SPACE.
     02  RSV12            PIC X(1)   VALUE   SPACE.
     02  RSV13            PIC X(14)  VALUE   LOW-VALUE.
01   CD1.
     02  SEG-CODE1        PIC X(4)   VALUE   SPACE.
     02  TERM-CODE        PIC X(8)   VALUE   SPACE.
     02  MCFUSE14         PIC X(8)   VALUE   SPACE.
     02  MCFUSE15         PIC X(8)   VALUE   SPACE.
     02  MCFUSE16         PIC X(28)  VALUE   LOW-VALUE.
01   DATA1.
     02  MSGSEG-LENG1     PIC 9(9)   COMP.
     02  MCFUSE17         PIC X(4).
     02  MCFUSE18         PIC X(2).
     02  MCFUSE19         PIC X(1).
     02  MCFUSE20         PIC X(1).
     02  REC-MSGSEG1      PIC X(2048).

PROCEDURE DIVISION.
**********************************************************
CALL 'CBLDCMCF'  USING   RCV    CD1    DATA1.
*
**********************************************************
*                                                        *
*  User Service Part                                     *
*                                                        *
**********************************************************
*
EXIT PROGRAM.

IDENTIFICATION    DIVISION.
PROGRAM-ID.       SPPSND.

ENVIRONMENT       DIVISION.
CONFIGURATION     SECTION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

01   SND-AREA1.
     02  DATA-A           PIC X(8)   VALUE   'SEND    '.
     02  DATA-B           PIC X(5).
     02  FILLER           PIC X(3).
     02  DATA-C           PIC X(4)   VALUE   SPACE.
     02  DATA-D           PIC X(4)   VALUE   SPACE.
     02  DATA-E           PIC 9(8).
     02  DATA-F           PIC 9(8).
     02  DATA-G           PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-H           PIC X(4)   VALUE   'EMI '.
     02  DATA-I           PIC X(4)   VALUE   SPACE.
     02  DATA-J           PIC X(4)   VALUE   'NORM'.
     02  DATA-K           PIC X(4)   VALUE   'NSEQ'.
     02  DATA-L           PIC X(8)   VALUE   SPACE.
     02  DATA-M1          PIC X(4)   VALUE   SPACE.
     02  DATA-M2          PIC X(8)   VALUE   SPACE.
     02  DATA-M3          PIC X(4)   VALUE   SPACE.
     02  DATA-M4          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M5          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M6          PIC X(1)   VALUE   SPACE.
     02  DATA-M7          PIC X(1)   VALUE   '1'.
     02  DATA-N           PIC X(14)  VALUE   LOW-VALUE.
01   SND-AREA2.
     02  DATA-O           PIC X(4)   VALUE   'OUT '.
     02  DATA-P           PIC X(8)   VALUE   'SL2REQ01'.
     02  DATA-Q           PIC X(8)   VALUE   SPACE.
     02  DATA-R           PIC X(8)   VALUE   SPACE.
     02  DATA-T           PIC X(28)  VALUE   LOW-VALUE.
01   SND-AREA3.
     02  DATA-U           PIC 9(9)   COMP   VALUE   248.
     02  DATA-V           PIC X(8).
     02  DATA-W           PIC X(248).

PROCEDURE         DIVISION.
CALL 'CBLDCMCF'  USING   SND-AREA1    SND-AREA2
     SND-AREA3.
EXIT PROGRAM.

IDENTIFICATION    DIVISION.
PROGRAM-ID.       SPPSR.

ENVIRONMENT       DIVISION.
CONFIGURATION     SECTION.

DATA              DIVISION.
WORKING-STORAGE   SECTION.

01   SR-AREA1.
     02  DATA-A           PIC X(8)   VALUE   'SENDRECV'.
     02  DATA-B           PIC X(5).
     02  FILLER           PIC X(3).
     02  DATA-C           PIC X(4)   VALUE   SPACE.
     02  DATA-D           PIC X(4)   VALUE   SPACE.
     02  DATA-E           PIC 9(8).
     02  DATA-F           PIC 9(8).
     02  DATA-G           PIC 9(9)   COMP    VALUE   248.
     02  DATA-H           PIC X(4)   VALUE   'EMI '.
     02  DATA-I           PIC X(4)   VALUE   SPACE.
     02  DATA-J           PIC X(4)   VALUE   SPACE.
     02  DATA-K           PIC X(4)   VALUE   SPACE.
     02  DATA-L           PIC X(8)   VALUE   SPACE.
     02  DATA-M1          PIC X(4)   VALUE   SPACE.
     02  DATA-M2          PIC X(8)   VALUE   SPACE.
     02  DATA-M3          PIC X(4)   VALUE   SPACE.
     02  DATA-M4          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M5          PIC 9(9)   COMP    VALUE   ZERO.
     02  DATA-M6          PIC X(1)   VALUE   SPACE.
     02  DATA-M7          PIC X(1)   VALUE   SPACE.
     02  DATA-N           PIC X(14)  VALUE   LOW-VALUE.
01   SR-AREA2.
     02  DATA-O           PIC X(4)   VALUE   'IO  '.
     02  DATA-P           PIC X(8)   VALUE   'SL2REQ01'.
     02  DATA-Q           PIC X(8)   VALUE   SPACE.
     02  DATA-R           PIC X(8)   VALUE   SPACE.
     02  DATA-T           PIC X(28)  VALUE   LOW-VALUE.
01   SR-AREA3.
     02  DATA-U           PIC 9(9)   COMP    VALUE   248.
     02  DATA-V           PIC X(8).
     02  DATA-W           PIC X(248).
01   SR-AREA4.
     02  DATA-X           PIC 9(9)   COMP.
     02  DATA-Y1          PIC X(7)   VALUE   SPACE.
     02  DATA-Y2          PIC X(1).
     02  DATA-Z           PIC X(248).

PROCEDURE         DIVISION.
CALL 'CBLDCMCF'  USING   SR-AREA1  SR-AREA2
     SR-AREA3  SR-AREA4.

EXIT PROGRAM.

データ操作言語

IDENTIFICATION    DIVISION.
PROGRAM-ID.       UAPDML.

ENVIRONMENT       DIVISION.
CONFIGURATION     SECTION.
*
***********************************************************
*
DATA              DIVISION.
WORKING-STORAGE   SECTION.
*
***********************************************************
*
01   RECV-AREA1.
     02  RE-DATALENG1     PIC 9(4)   COMP   VALUE   1028.
     02  RE-RSV1          PIC X(2).
     02  RE-DATA1         PIC X(1024).
*
***********************************************************
*
COMMUNICATION SECTION.
*
***********************************************************
*

    CD  RECV-IN1
    FOR  INPUT
    STATUS KEY IS                   RE-STATUS1
    SYMBOLIC TERMINAL IS            RE-TERMNAM
    MESSAGE DATE IS                 RE-DATE1
    MESSAGE TIME IS                 RE-TIME1.
*
***********************************************************
*
PROCEDURE DIVISION.
*
***********************************************************
*
    RECEIVE  RECV-IN1
        FIRST  SEGMENT
        INTO  RECV-AREA1.
*
EXIT PROGRAM.

IDENTIFICATION    DIVISION.
PROGRAM-ID.       SNDDML.

ENVIRONMENT       DIVISION.
CONFIGURATION     SECTION.
*
***********************************************************
*
DATA              DIVISION.
WORKING-STORAGE   SECTION.
*
***********************************************************
*
01   SEND-AREA1.
     02  SE-DATALENG1   PIC 9(4)   COMP   VALUE   1028.
     02  SE-RSV1        PIC X(2).
     02  SE-DATA1       PIC X(1024).
*
***********************************************************
*
COMMUNICATION SECTION.
*
***********************************************************
*

   CD  SEND-IN1
       FOR  OUTPUT
       STATUS KEY IS                 SE-STATUS1
       SYMBOLIC TERMINAL IS          SE-TERMNAM
       SYNCHRONOUS MODE IS           ASYNC
       SWITCHING MODE IS             NORMAL.
*
***********************************************************
*
PROCEDURE DIVISION.
*
***********************************************************
*
   MOVE 'SL2REQ01'TO SE-TERMNAM.
   SEND SEND-IN1
       FROM SEND-AREA1
               WITH EMI.
*
EXIT PROGRAM.

4.　ユーザオウンコーディング，MCFイベントインタフェース

この章では，SLU - TypeP2に関連するユーザオウンコーディング，およびMCFイベントのインタフェースについて説明します。

＜この章の構成＞

4.1　ユーザオウンコーディングインタフェース

4.2　MCFイベントインタフェース

4.1　ユーザオウンコーディングインタフェース

メッセージ送受信のUAPを，より多様な業務に対応させるために補助するプログラムをユーザオウンコーディング（以降，UOCと略します）といいます。

SLU - TypeP2で使用するUOCを次に示します。

入力メッセージ編集UOC

出力メッセージ編集UOC

送信メッセージの通番編集UOC

UOCを使用する場合は，あらかじめMCFメイン関数またはUAPのメイン関数にUOC関数のアドレスを登録し，UOC関数のオブジェクトファイルをMCF通信プロセスまたはUAPの実行形式プログラムに結合（リンケージ）しておく必要があります。また，UOCはC言語で作成します。

＜この節の構成＞

4.1.1　入力メッセージの編集とアプリケーション名の決定

4.1.2　入力メッセージ編集UOCインタフェース

4.1.3　出力メッセージの編集

4.1.4　出力メッセージ編集UOCインタフェース

4.1.5　送信メッセージの通番編集

4.1.6　送信メッセージの通番編集UOCインタフェース

4.1.7　UOC作成上の注意事項

4.1.1　入力メッセージの編集とアプリケーション名の決定

入力メッセージ編集UOCは，受信した論理メッセージをユーザ任意の形式に変換します。次に，受信した論理メッセージを基に，ユーザ任意のアプリケーション名を決定できます。

UOCは，UAPを起動するメッセージの最終セグメントを受信すると起動します。ただし，MCFイベント発生時と，UAPからのアプリケーションプログラム起動時は，UOCは起動しません。

ユーザは，MCFメイン関数でUOC関数アドレスを設定します。また，必要に応じてMCF通信構成定義（mcftalccn -e）で，メッセージ編集用バッファグループ番号を定義します。

＜この項の構成＞

(1)　入力メッセージの編集

(2)　アプリケーション名の決定

(3)　UOCエラーリターン処理

(4)　UOCパラメタ不正の場合の処理

(5)　OpenTP1への組み込み方法

(1)　入力メッセージの編集

受信したメッセージが格納されている受信バッファ，および定義で指定した編集バッファを引き渡します。UOCでは，これらのバッファを使用して入力メッセージの編集ができます。

また，UAPに通知するメッセージのセグメントは，受信バッファ，または編集バッファのどちらかに格納されたものを使用できます。どちらのセグメントを使用するかは，UOCから返されるリターンコードによって選択できます。

(2)　アプリケーション名の決定

該当するMCFに入力メッセージ編集UOCが登録されている場合，論理メッセージの受信と同時にアプリケーション名を決定できます。

UOCでアプリケーション名を決定する場合，アプリケーション名の形式は，アプリケーション名格納領域の先頭から'¥0'の手前までの，1～8バイトの英数字です。先頭から9バイト目までに'¥0'がないときは，アプリケーション名を不正とし，ERREVT1を起動します。

アプリケーション名の決定の処理を次の図に示します。

図4-1　アプリケーション名の決定の処理

入力メッセージの中の情報からアプリケーション名を決定し，指定領域（aplname）にアプリケーション名を設定します。

入力キューの登録後，正常処理へ続きます。

(3)　UOCエラーリターン処理

UOCからDCMCF_UOC_MSG_NGでリターンした場合，SLU - TypeP2は論理端末を閉塞し，障害通知イベント（CERREVT）を通知します。

UOCで障害を検出し，MCFイベント処理用MHPを起動したい場合は，ユーザ任意のMCFイベント処理用MHPのアプリケーション名を設定します。MCFにはDCMCF_UOC_MSG_OK，またはDCMCF_UOC_MSG_OK_RCVでリターンします。ただし，この場合はSLU - TypeP2は正常なメッセージとして処理するため，UAP側で障害処理をしてください。

(4)　UOCパラメタ不正の場合の処理

UOCで設定したパラメタに不正があった場合，SLU - TypeP2は論理端末を閉塞し，障害通知イベント（CERREVT）を通知します。

(5)　OpenTP1への組み込み方法

スタート関数（dc_mcf_svstart）を発行するMCFメイン関数に，作成したUOCの関数アドレスを設定します。入力メッセージ編集UOCの関数アドレスは任意に決められます。UOC関数をコンパイルして生成したUOCオブジェクトファイルを，UOC関数を登録したMCFメイン関数と結合して，SLU - TypeP2の実行形式プログラムを生成します。MCFメイン関数の詳細については，「7.2　MCFメイン関数の作成」を参照してください。

4.1.2　入力メッセージ編集UOCインタフェース

入力メッセージ編集UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　パラメタとバッファの関係

(1)　形式

ANSI C，C++の場合

#include<dcmcfuoc.h>

DCLONG    uoc_func(dcmcf_uoc_min_n *parm)

K&R版C の場合

#include<dcmcfuoc.h>

DCLONG    uoc_func(parm)
dcmcf_uoc_min_n   *parm;

(2)　説明

uoc_func（入力メッセージ編集UOC）を呼び出すとき，MCFは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　dcmcf_uoc_min_nの内容

typedef struct {
   DCLONG pro_kind;           … プロトコル種別
   char le_name[9];           … 論理端末名称
   char reserve1[7];          … 予備
   DCLONG rcv_prim;           … 受信サービスプリミティブ
   dcmcf_uocbuff_list_n *buflist_adr;
                              … 受信バッファリストアドレス
   dcmcf_uocbuff_list_n *ebuflist_adr;
                              … 編集バッファリストアドレス
   char aplname[9];           … アプリケーション名
   char reserve2[7];          … 予備
   char *pro_indv_ifa;        … MCF使用領域
   DCLONG rtn_detail;         … 詳細リターンコード
   char reserve3[8];          … 予備
}dcmcf_uoc_min_n;

(b)　dcmcf_uocbuff_list_n（バッファリスト）の内容

typedef struct {
   DCLONG buf_num;            … バッファ情報数
   DCLONG used_buf_num;       … 使用バッファ情報数
   char reserve1[8];          … 予備
   dcmcf_uocbufinf_n buf_array[DCMCF_UOC_BUFF_MAX];
                              … バッファ情報
}dcmcf_uocbuff_list_n;

(c)　dcmcf_uocbufinf_n（バッファ情報）の内容

typedef struct {
   char *buf_adr;             … バッファアドレス
   DCLONG buf_size;           … バッファ最大長
   DCLONG seg_size;           … バッファ使用長
   char reserve1[4];          … 予備
   dcmcfuoc_w_type buff_id;   … MCF内部情報1
   DCLONG buff_addr;          … MCF内部情報2
   char reserve2[4];          … 予備
}dcmcf_uocbufinf_n;

(4)　MCFが値を設定する項目

(a)　dcmcf_uoc_min_n

pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_SLUP2

SLUTYPE-Pプロトコル（2次局）

le_name
メッセージを入力した論理端末の名称が設定されます。

rcv_prim
受信サービスプリミティブとして，次の値が設定されます。

DCMCF_UOC_RCV_BRD

一方送信メッセージ受信

DCMCF_UOC_RCV_REP_RE

応答メッセージ受信

buflist_adr
受信用バッファリストのアドレスが設定されます。

ebuflist_adr
編集用バッファリストのアドレスが設定されます。
メッセージ編集バッファが未定義の場合，つまり，MCF通信構成定義のmcftalccnコマンドの-eオプションを省略した場合，ebuflist_adrにはNULLが設定されます。

aplname
MCF通信構成定義のmcftalcleコマンドの-vオプションで指定したアプリケーション名が設定されます。

pro_indv_ifa
MCFで使用するパラメタです。

(b)　dcmcf_uocbuff_list_n（バッファリスト）

buf_num
バッファ情報の数が設定されます。

buf_array
バッファ情報の配列が設定されます。バッファ情報は，buf_numの数だけ設定されます。

(c)　dcmcf_uocbufinf_n（バッファ情報）

buf_adr
バッファのアドレスが設定されます。

buf_size
バッファの最大長が設定されます。

seg_size
送信，または受信用バッファリストの場合だけ，バッファの使用長が設定されます。

buff_id，buff_addr
MCFで使用するパラメタです。

(5)　ユーザが値を設定する項目

(a)　dcmcf_uoc_min_n

aplname
UOCで決定したアプリケーション名を設定します。

rtn_detail
詳細リターンコードを設定します。
このコードは，UOCがDCMCF_UOC_MSG_NGをリターンしたときに，MCFに渡されます。MCFは，詳細リターンコードをメッセージログファイルに出力します。詳細リターンコードは，-19999～-19000の範囲で設定してください。

(b)　dcmcf_uocbuff_list_n（バッファリスト）

used_buf_num
使用したバッファ情報の数を設定します。

(c)　dcmcf_uocbufinf_n（バッファ情報）

seg_size
バッファの使用長を設定します。

(6)　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値 | 意味
DCMCF_UOC_MSG_OK | 正常リターン（編集バッファでスケジューリング）
DCMCF_UOC_MSG_OK_RCV | 正常リターン（受信バッファでスケジューリング）
DCMCF_UOC_MSG_NG | メッセージ編集エラー

(7)　パラメタとバッファの関係

UOCインタフェース用のパラメタとバッファの関係を次の図に示します。

図4-2　UOCインタフェース用のパラメタとバッファの関係

注※1

mcftalccn -eオプションを指定しない場合，NULLとなり，バッファリストとバッファは確保されません。

注※2

バッファ情報は次の形式をしています。

4.1.3　出力メッセージの編集

出力メッセージ編集UOCは，応答メッセージまたは一方送信メッセージの編集をするUOCです。出力メッセージ編集UOCは，UAPが発行した送信メッセージを相手システムに実際に送信する前に処理するように位置させます。出力キューから全セグメントを読み出すと起動します。

ユーザは，MCFメイン関数でUOC関数アドレスを設定します。また，必要に応じてMCF通信構成定義（mcftalccn -e）で，メッセージ編集用バッファグループ番号を定義します。

＜この項の構成＞

(1)　出力メッセージの編集

(2)　UOCエラーリターン処理

(3)　UOCパラメタ不正の場合の処理

(4)　OpenTP1への組み込み方法

(1)　出力メッセージの編集

送信するメッセージが格納されている送信バッファ，および定義で指定した編集バッファを引き渡します。UOCでは，これらのバッファを使用して，出力メッセージの編集処理ができます。

また，UOCからのリターンコードによってUAPに通知するメッセージとして送信バッファに格納されたものを使用するか，編集バッファに格納されたものを使用するかを選択できます。

(2)　UOCエラーリターン処理

UOCからDCMCF_UOC_MSG_NGでリターンした場合，SLU - TypeP2は論理端末を閉塞します。なお，このときMCFイベント（ERREVTn）は通知しません。

(3)　UOCパラメタ不正の場合の処理

UOCで設定した値に不正があった場合，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。該当するメッセージは破棄します。

(4)　OpenTP1への組み込み方法

入力メッセージ編集UOCの組み込み方法と同じです。「4.1.1（5）　OpenTP1 への組み込み方法」を参照してください。

4.1.4　出力メッセージ編集UOCインタフェース

出力メッセージ編集UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　パラメタとバッファの関係

(1)　形式

ANSI C，C++の場合

#include<dcmcfuoc.h>

DCLONG    uoc_func(dcmcf_uoc_mout_n *parm)

K&R版C の場合

#include<dcmcfuoc.h>

DCLONG    uoc_func(parm)
dcmcf_uoc_mout_n  *parm;

(2)　説明

uoc_func（出力メッセージ編集UOC）を呼び出すとき，MCFは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　dcmcf_uoc_mout_nの内容

typedef struct {
   DCLONG pro_kind;        … プロトコル種別
   char le_name[9];        … 論理端末名称
   char reserve1[7];       … 予備
   dcmcf_uocbuff_list_n *buflist_adr;
                           … 送信バッファリストアドレス
   dcmcf_uocbuff_list_n *ebuflist_adr;
                           … 編集バッファリストアドレス
   DCLONG output_no;       … メッセージ出力通番
   char msg_type;          … メッセージ種別
   char outputno_flag;     … メッセージ出力通番有効フラグ
   char resend_flag;       … 再送フラグ
   char reserve2[1];       … 予備
   char *pro_indv_ifa;     … MCF使用領域
   DCLONG rtn_detail;      … 詳細リターンコード
   char reserve3[20];      … 予備
}dcmcf_uoc_mout_n;

(b)　dcmcf_uocbuff_list_n（バッファリスト），dcmcf_uocbufinf_n（バッファ情報）の内容

「4.1.2　入力メッセージ編集UOCインタフェース」を参照してください。

(4)　MCFが値を設定する項目

(a)　dcmcf_uoc_mout_n

pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_SLUP2

SLUTYPE-Pプロトコル（2次局）

le_name
メッセージを出力した論理端末の名称が設定されます。

buflist_adr
送信用バッファリストのアドレスが設定されます。

ebuflist_adr
編集用バッファリストのアドレスが設定されます。
メッセージ編集バッファが未定義の場合，つまり，MCF通信構成定義のmcftalccnコマンドの-eオプションを省略した場合，ebuflist_adrにはNULLが設定されます。

output_no
メッセージ出力通番が設定されます。ただし，outputno_flagがDCMCF_UOC_OUTPUTNO_OKのときだけ有効です。

msg_type
メッセージ種別として，次のどちらかの値が設定されます。

'n'

一般の一方送信メッセージ

'p'

優先の一方送信メッセージ

's'

同期問い合わせメッセージ

outputno_flag
メッセージ出力通番の有効フラグとして，次のどちらかの値が設定されます。

DCMCF_UOC_OUTPUTNO_OK

メッセージ出力通番を有効にします。

DCMCF_UOC_OUTPUTNO_NG

メッセージ出力通番を無効にします。

resend_flag
再送メッセージフラグとして，次のどちらかの値が設定されます。

'r'

再送メッセージです。

'n'

再送メッセージではありません。

pro_indv_ifa
MCFで使用するパラメタです。

(b)　dcmcf_uocbuff_list_n（バッファリスト），dcmcf_uocbufinf_n（バッファ情報）

「4.1.2　入力メッセージ編集UOCインタフェース」を参照してください。

(5)　ユーザが値を設定する項目

(a)　dcmcf_uoc_mout_n

rtn_detail
詳細リターンコードを設定します。
このコードは，UOCがDCMCF_UOC_MSG_NGをリターンしたときに，MCFに渡されます。MCFは，詳細リターンコードをメッセージログファイルに出力します。
詳細リターンコードは，-19999～-19000の範囲で設定してください。

(b)　dcmcf_uocbuff_list_n（バッファリスト），dcmcf_uocbufinf_n（バッファ情報）

「4.1.2　入力メッセージ編集UOCインタフェース」を参照してください。

(6)　リターン値

uoc_func()は，次のコードでリターンしてください。

リターン値 | 意味
DCMCF_UOC_MSG_OK | 正常リターン（編集バッファでスケジューリング）
DCMCF_UOC_MSG_OK_SND | 正常リターン（送信バッファでスケジューリング）
DCMCF_UOC_MSG_NG | メッセージ編集エラー

(7)　パラメタとバッファの関係

UOCインタフェース用のパラメタとバッファの関係は，入力メッセージの編集の場合と同じです。「4.1.2(7)　パラメタとバッファの関係」を参照してください。

4.1.5　送信メッセージの通番編集

送信メッセージの通番編集UOCでは，受け取った通番を基に，ユーザ独自の処理ができます。例えば，通番を使用して送信メッセージを編集できます。

送信メッセージの通番編集UOCを起動する場合，メッセージ送信の関数で出力通番を付けるように設定してください。UOCは，UAPが先頭セグメントを送信するsend関数またはresend関数を呼び出したときに，MCFによって起動されます。したがって，このUOCでメッセージを編集する場合，先頭セグメントしか編集できません。

＜この項の構成＞

(1)　OpenTP1への組み込み方法

(1)　OpenTP1への組み込み方法

UAPのメイン関数の中に，送信メッセージの通番編集UOCの関数アドレスを登録しておきます。UAPのメイン関数に登録するdc_mcf_regster関数の形式を次に示します。

(a)　形式

ANSI C，C++の場合

#include<dcmcf.h>

int dc_mcf_regster(DCLONG flags, DCLONG (*uoc_addr)(DCLONG flags,
                  char   *termname, DCLONG sendno,
                  DCLONG sendid,DCLONG dataleng,
                  char   *senddata))

K&R版Cの場合

#include<dcmcf.h>

int dc_mcf_regster(flags, uoc_addr)
DCLONG flags;
DCLONG (*uoc_addr)();

(b)　ユーザが値を設定する引数

flags
DCMCF_SEND_UOCを設定します。

uoc_addr
flagsに対応するUOCのアドレスを設定します。

(c)　リターン値

リターン値 | 意味
DC_OK | 正常に終了しました。
DCMCFER_INVALID_ARGS | 引数の指定が間違っています。
DCMCFER_NOMEM | ローカルメモリが不足しました。

(d)　メイン関数への登録例

MHPの場合

main()
{
extern DCLONG send_uoc();

dc_rpc_open();
dc_mcf_open();
dc_mcf_regster(DCMCF_SEND_UOC, send_uoc);
dc_mcf_mainloop();
dc_mcf_close();
dc_rpc_close();
}

SPPの場合

main()
{
extern DCLONG send_uoc();

dc_rpc_open();
dc_mcf_open();
dc_mcf_regster(DCMCF_SEND_UOC,send_uoc);
dc_rpc_mainloop();
dc_mcf_close();
dc_rpc_close();
}

4.1.6　送信メッセージの通番編集UOCインタフェース

送信メッセージの通番編集UOCは，次に示す形式で，send_uoc関数として作成します。

なお，UOCの関数名称はユーザの任意です。

＜この項の構成＞

(1)　形式

(2)　MCFが値を設定する引数

(3)　リターン値

(1)　形式

ANSI C，C++の場合

#include<dcmcf.h>

DCLONG send_uoc(DCLONG flags, char *termname, DCLONG sendno,
               DCLONG sendid,DCLONG dataleng, char *senddata)

K&R版C の場合

#include<dcmcf.h>

DCLONG send_uoc(flags, termname, sendno, sendid, dataleng,
             senddata)
DCLONG        flags;
char          *termname;
DCLONG        sendno;
DCLONG        sendid;
DCLONG        dataleng;
char          *senddata;

(2)　MCFが値を設定する引数

flags
送信メッセージの通番編集UOCがいつ呼ばれたかが設定されます。次の値が設定されます。

DCMCF_SEND_DML

メッセージを送信する関数または命令文が呼び出されたとき

DCMCF_RESEND_DML

メッセージを再送する関数または命令文が呼び出されたとき

termname
送信先の論理端末名称が設定されます。

sendno
送信メッセージの通番が設定されます。

sendid
送信するメッセージ種別が設定されます。次のどちらかが設定されます。

DCMCF_SEND_PRIO

優先の一方送信メッセージ

DCMCF_SEND_NORM

一般の一方送信メッセージ

dataleng
送信メッセージ長が設定されます。

senddata
先頭セグメントの内容が設定されます。

(3)　リターン値

リターン値 | 意味
DC_OK | 正常に終了しました。

4.1.7　UOC作成上の注意事項

UOC作成上の注意事項を次に示します。

＜この項の構成＞

(1)　UOCの構造

(2)　UOCで使用できる関数

(3)　UOCの異常処理

(4)　UOCの実行タイミング

(5)　ユーザセグメントの操作方法

(1)　UOCの構造

UOCで使用するローカル変数のサイズの合計は，各UOCで1024バイト以内になるよう作成してください。また，UOCの中で関数の再帰呼び出しはしないでください。

(2)　UOCで使用できる関数

UOCを作成する場合，UOCでは次に示す関数だけが使用できます。ほかの関数を使用した場合，正常に動作しないことがあるためご注意ください。

メモリ操作をする関数

データ領域管理（例：malloc，free）

共有メモリ管理関数（例：shmctl，shmget，shmop）

メモリ操作（例：memcpy）

文字列操作（例：strcpy）

時間取得関数

(3)　UOCの異常処理

SLU - TypeP2のUOCで異常を検知した場合，MCFの所定のリターンコードを使用して，MCFに異常の発生を通知してください。UOCでプロセス終了となるシグナルまたはabort()を発行すると，MCFが異常終了します。

(4)　UOCの実行タイミング

MCFが起動するUOCの実行タイミングは，OpenTP1システムおよびUAPの開始，終了シーケンスと同期しない場合があります。したがって，UAPより先にUOCが実行されたり，UAPがすべて終了してからUOCが呼び出されたりしてもよいように作成してください。

(5)　ユーザセグメントの操作方法

UOCでユーザセグメントを参照または設定する場合，ユーザセグメントの先頭アドレスがバウンダリ調整されていないことを確認してください。ユーザセグメントの参照・設定方法によっては，バウンダリアクセス例外が発生する場合があります。必要に応じて，メモリ操作関数（memcpy，memsetなど）を使用してください。

4.2　MCFイベントインタフェース

SLU - TypeP2でメッセージ送受信をすると，OpenTP1の各種システム情報がMHPに通知されます。これをMCFイベントといいます。メッセージ送受信処理でエラーや障害が発生した場合，システム内で何が起こっているのかがMCFイベントの内容でわかります。MCFイベントに対応するMHPをMCFイベント処理用MHPといいます。

MCFイベントは入力キューに渡されて，MCFイベント処理用MHPで回復処理をします。なお，MCFイベントの発生時は入力メッセージ編集UOCを呼び出しません。詳細については，マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

＜この節の構成＞

4.2.1　MCFイベントの種類

4.2.2　MCFイベント通知時のセグメント構成

4.2.3　MCFイベント情報の形式（C言語）

4.2.4　MCFイベント情報の形式（COBOL言語）

4.2.1　MCFイベントの種類

SLU - TypeP2が通知するMCFイベントの種類を次の表に示します。

表4-1　SLU - TypeP2が通知するMCFイベントの種類

MCFイベント名
MCFイベントコード
発生した原因
MCFイベント処理用MHPでの処理の例

不正アプリケーション名検出通知イベント
ERREVT1
メッセージのアプリケーション名がMCFアプリケーション定義にありません。
該当するアプリケーション名がなかったことを報告します。
問い合わせメッセージの場合は，応答メッセージを出力できます。

メッセージ廃棄通知イベント
ERREVT2
次の理由で受信メッセージを破棄しました。

入力キューに障害が発生しました。

MHPのサービス，サービスグループ，またはアプリケーションが閉塞しました。

MHPのセグメント受信関数に，セグメントを渡す前にMHPの異常終了が発生しました。

アプリケーション名に相当するMHPのサービスがありません。

アプリケーションの即時起動時に障害が発生しました。

MHPのアプリケーション，サービスグループがセキュア状態です。

メッセージを廃棄したことを報告します。
問い合わせメッセージの場合は，応答メッセージを出力できます。

UAP異常終了通知イベント
ERREVT3
MHPのセグメント受信関数にセグメントを渡したあとに，MHPの異常終了※が発生しました。
UAP異常終了時の対処障害メッセージを送信します。
問い合わせメッセージの場合は，応答メッセージを出力できます。

タイマ起動メッセージ廃棄通知イベント
ERREVT4
アプリケーションのタイマ起動時に障害が発生しました。
メッセージを廃棄したことを報告します。

未処理送信メッセージ廃棄通知イベント
ERREVTA
次の理由で未処理送信メッセージを破棄しました。

MCFの正常終了処理時に，未処理送信メッセージの滞留時間監視の時間切れ（タイムアウト）が発生しました。

運用コマンド（mcftdlqle）の入力によって，出力キューが削除されました。

未処理送信メッセージを廃棄したことを報告します。

障害通知イベント
CERREVT
通信管理プログラムのコネクション障害，または論理端末障害が発生しました。
コネクション，または論理端末に障害が発生したことを報告します。

状態通知イベント
COPNEVT
コネクションが確立しました。
コネクションが確立したことを報告します。

CCLSEVT
コネクションが正常に解放されました。
コネクションが解放されたことを報告します。

注※

MCFアプリケーション定義(mcfaalcap -g)のrecvmsgオペランドにrを指定した場合，またはdc_mcf_rollbackのactionにDCMCFRTRYまたはDCMCFRRTNを指定した場合は除きます。

4.2.2　MCFイベント通知時のセグメント構成

MCFイベントをMHPに通知する場合，先頭セグメントにMCFイベント情報を設定します。エラーイベント（ERREVTn）の場合は，第2セグメント以降に処理できなかったメッセージセグメントを最終セグメントまで設定します。

MCFイベント通知時のセグメント構成を次の図に示します。

図4-3　MCFイベント通知時のセグメント構成

MCFイベントは，作成したUAPがC言語の場合とCOBOL言語の場合で，UAPに通知されるデータの形式が異なります。

COBOL言語を使用したエラーイベント（ERREVTn）の場合は，バッファ形式1とバッファ形式2とで先頭の内容が異なります。このため，それ以降の項目の位置にずれがあります。「4.2.4　MCFイベント情報の形式（COBOL言語）」のエラーイベントの表ではERREVT1，ERREVT2，ERREVT3，およびERREVTAのバッファ形式別に位置（バイト）を分けて説明しています。

なお，ERREVT4についてはマニュアル「OpenTP1 プログラム作成リファレンス」の該当する言語編を参照してください。

4.2.3　MCFイベント情報の形式（C言語）

C言語の場合は，イベント別の情報が，構造体でMCFイベント処理用MHPに渡されます。MHPに渡される構造体の形式は，MCFイベントによって異なります。ただし，MCFイベント情報の先頭部分の形式は各イベントに共通です。

エラーイベント（ERREVTn）で使用する構造体は<dcmcf.h>で定義してあります。なお，dc_mcf_evtheaderは<dcmcf.h>で定義されています。<dcmslm.h>の前に<dcmcf.h>を取り込んでおいてください。

＜この項の構成＞

(1)　MCFイベントの共通ヘッダ

(2)　ERREVT1

(3)　ERREVT2

(4)　ERREVT3

(5)　ERREVTA

(6)　CERREVT

(7)　COPNEVT，CCLSEVT

(1)　MCFイベントの共通ヘッダ

(a)　形式

struct dc_mcf_evtheader{
   char mcfevt_name[9];       … MCFイベントコード
   char le_name[16];          … 入力元論理端末名称
                                （ERREVT1，ERREVT2，ERREVT3，
                                  ERREVT4の場合）
                              … 出力先論理端末名称
                                （ERREVTAの場合）
   char cn_name[9];           … コネクション名
   unsigned char format_kind; … MCF使用領域
   char reserve01;            … 予備
   DCLONG time;               … メッセージ入力時刻
};

(b)　MCFイベントとして設定される項目

le_name
ERREVT1，ERREVT2，またはERREVT3では，メッセージを入力した論理端末名称が設定されます。
ただし，ERREVT3で，次に示す場合には，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで，障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPによって，さらにアプリケーション起動をされたMHPで，障害が発生した場合

ERREVTAでは，メッセージを出力する論理端末名称が設定されます。
CERREVT，COPNEVT，またはCCLSEVTの場合は無効です。

cn_name
コネクション名が設定されます。
ただし，ERREVT2またはERREVT3で，次に示す場合には，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで，障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPによって，さらにアプリケーション起動をされたMHPで，障害が発生した場合

time
メッセージを入力した時刻が，1970年1月1日0時0分0秒からの通算の秒数で設定されます。

(2)　ERREVT1

(a)　形式

struct dc_mcf_evt1_type{
   struct dc_mcf_evtheader evtheader;
                              … MCFイベント情報共通ヘッダ
   char reserve01[12];        … 予備
   char reserve02[10];        … 予備
   char reserve03[2];         … 予備
   char ap_name[10];          … アプリケーション名
                                （メッセージに対応する
                                  アプリケーション名）
char reserve04[2];             …予備
};

(b)　MCFイベントとして設定される項目

ap_name
次に示すどちらかが設定されます。

形式不正の場合…不正となったアプリケーション名

定義されていない場合…定義されていないアプリケーション名

アプリケーション名は，MHPから送信されたメッセージの場合に設定されます。MHP以外から送信された場合は，ヌル文字が設定されます。

(3)　ERREVT2

(a)　形式

struct dc_mcf_evt2_type{
   struct dc_mcf_evtheader evtheader;
                              … MCFイベント情報共通ヘッダ
   char reserve01[12];        … 予備
   char reserve02[10];        … 予備
   char reserve03[2];         … 予備
   char ap_name[10];          … アプリケーション名
                                （メッセージに対応する
                                  アプリケーション名）
   short reason_code;         … 理由コード
};

(b)　MCFイベントとして設定される項目

ap_name
エラーになったUAPのアプリケーション名が設定されます。
アプリケーション名は，MHPから送信されたメッセージの場合に設定されます。MHP以外から送信された場合は，ヌル文字が設定されます。

reason_code
ERREVT2の理由コードが設定されます。理由コードの内容については，「付録C　理由コードおよびセンスコード一覧」を参照してください。

(4)　ERREVT3

(a)　形式

struct dc_mcf_evt3_type{
   struct dc_mcf_evtheader evtheader;
                              … MCFイベント情報共通ヘッダ
   char reserve01[12];        … 予備
   char map_name[10];         … MCF使用領域
   char reserve03[2];         … 予備
   char ap_name[10];          … アプリケーション名
                               （異常が発生したメッセージの
                                 アプリケーション名）
   char reserve04[2];         … 予備
   char service_name[32];     … サービス名
   char serv_grp_name[32];    … サービスグループ名
   char bid[36];              … トランザクション
                                 ブランチID領域
} ;

(b)　MCFイベントとして設定される項目

ap_name
異常が発生したMHPのアプリケーション名が設定されます。
アプリケーション名は，MHPから送信されたメッセージの場合に設定されます。MHP以外から送信された場合は，ヌル文字が設定されます。

service_name
異常が発生したMHPのアプリケーション名に対応するサービス名が設定されます。

serv_grp_name
異常が発生したMHPのサービスが属するサービスグループ名が設定されます。

bid
トランザクションのブランチIDが設定されます。

(5)　ERREVTA

(a)　形式

struct dc_mcf_evta_type {
   struct dc_mcf_evtheader evtheader;
                              … MCFイベント情報共通ヘッダ
   char reserve01[12];        … 予備
   char map_name[10];         … MCF使用領域
   char reserve03[2];         … 予備
   char ap_name[10];          … アプリケーション名
                                （正常終了したメッセージの
                                  アプリケーション名）
   char reserve04[2];         … 予備
   char reserve05[32];        … 予備
   char reserve06[32];        … 予備
   DCLONG user_leng;          … 他プロトコルの場合の使用領域
   char user_data[16];        … 他プロトコルの場合の使用領域
   char reserve07[16];        … 予備
} ;

(b)　MCFイベントとして設定される項目

ap_name
正常終了したメッセージのアプリケーション名が設定されます。
アプリケーション名は，MHPから送信されたメッセージの場合に設定されます。MHP以外から送信された場合は，ヌル文字が設定されます。

(6)　CERREVT

(a)　形式

typedef struct{
   struct dc_mcf_evtheader  header;
                              … MCFイベント情報共通ヘッダ
   DCLONG err_fact;           … 障害要因コード（4バイト）
   DCLONG err_reason1;        … 理由コード1（4バイト）
   DCLONG err_reason2;        … 理由コード2（4バイト）
   DCLONG err_rcv_action;     … 回復動作情報
   char reserve1[42];         … 予備
}dcmslm_cerrevt;

(b)　MCFイベントとして設定される項目

err_fact
CERREVTの障害要因コードが次に示す値で設定されます。

(00000030)₁₆

コネクション障害発生

(00000031)₁₆

論理端末障害発生

err_reason1，err_reason2
CERREVTの理由コードが設定されます。「付録C　理由コードおよびセンスコード一覧」を参照してください。

err_rcv_action
CERREVT通知時に，回復動作情報として次の値が設定されます。

DCMSLM_RSV_MANUAL

コマンド入力による手動回復

DCMSLM_RSV_AUTO

システムによる自動回復

回復動作情報は，該当するコネクションが端末起動の場合は手動回復になり，ホスト起動の場合は自動回復になります。

(7)　COPNEVT，CCLSEVT

(a)　形式

typedef struct{
   struct dc_mcf_evtheader header;
                             … MCFイベント情報共通ヘッダ
   DCLONG cls_rcv_action;    … 回復動作情報
                               （CCLSEVTの場合だけ有効）
   char reserve1[54];        … 予備
}dcmslm_statevt;

(b)　MCFイベントとして設定される項目

cls_rcv_action
CCLSEVT通知時に，回復動作情報として次の値が設定されます。

DCMSLM_RSV_MANUAL

コマンド入力による手動回復

DCMSLM_RSV_AUTO

システムによる自動回復

回復動作情報は，該当するコネクションが端末起動の場合は手動回復になり，ホスト起動の場合は自動回復になります。

4.2.4　MCFイベント情報の形式（COBOL言語）

COBOL言語の場合はセグメントの並びとして渡されます。

COBOL言語のUAPの場合，MCFイベント情報の内容を表4-2～表4-7に示します。

表4-2　COBOL言語のUAPに通知されるMCFイベント情報の内容（ERREVT1）

項目
位置（バイト）
長さ
（バイト）
属性
内容

形式1
形式2

予備（形式1のときだけ）
0
－
2
－
－

予備（形式1のときだけ）
2
－
2
－
－

エラーイベントコード
4
0
3
英数字
'ERR'が設定されます。

7
3
3
－
－

10
6
2
英数字
ERREVT1を示す'1△'が設定されます。

入力元論理端末名称
12
8
8
英数字
メッセージを入力した論理端末名称です。

予備
20
16
20
－
－

アプリケーション名
40
36
8
英数字
次に示すどちらかが設定されます。

形式不正となったアプリケーション名

定義されていないアプリケーション名

予備
48
44
8
－
－

予備
56
52
8
－
－

予備
64
60
8
－
－

コネクション名
72
68
8
英数字
コネクション名です。

予備
80
76
16
－
－

メッセージが入力された日付
96
92
8
外部10進数字
端末入力メッセージを入力した日付です。YYYYMMDDの形式です。
YYYY：西暦の年
MM：月
DD：日

メッセージが入力された時刻
104
100
8
外部10進数字
端末入力メッセージを入力した時刻です。HHMMSS00の形式です。
HH：時
MM：分
SS：秒
00は固定です。

予備
112
108
16
－
－

（凡例）

－：該当しません。または，使用されません。

表4-3　COBOL言語のUAPに通知されるMCFイベント情報の内容（ERREVT2）

項目
位置（バイト）
長さ
（バイト）
属性
内容

形式1
形式2

予備（形式1のときだけ）
0
－
2
－
－

予備（形式1のときだけ）
2
－
2
－
－

エラーイベントコード
4
0
3
英数字
'ERR'が設定されます。

7
3
3
－
－

10
6
2
英数字
ERREVT2を示す'2△'が設定されます。

入力元論理端末名称
12
8
8
英数字
メッセージを入力した論理端末名称です。次に示す場合には，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPによって，さらにアプリケーション起動されたMHPで，障害が発生した場合

予備
20
16
20
－
－

アプリケーション名
40
36
8
英数字
エラーになったUAPのアプリケーション名が設定されます。

予備
48
44
8
－
－

予備
56
52
8
－
－

予備
64
60
8
－
－

コネクション名
72
68
8
英数字
コネクション名です。次に示す場合には，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPによって，さらにアプリケーション起動されたMHPで，障害が発生した場合

予備
80
76
16
－
－

メッセージが入力された日付
96
92
8
外部10進数字
端末入力メッセージを入力した日付です。YYYYMMDDの形式です。
YYYY：西暦の年
MM：月
DD：日

メッセージが入力された時刻
104
100
8
外部10進数字
端末入力メッセージを入力した時刻です。HHMMSS00の形式です。
HH：時
MM：分
SS：秒
00は固定です。

理由コード※
112
108
4
外部10進数字
理由コードが設定されます。

予備
116
112
12
－
－

（凡例）

－：該当しません。または，使用されません。

注※

理由コードの内容については，「付録C　理由コードおよびセンスコード一覧」を参照してください。

表4-4　COBOL言語のUAPに通知されるMCFイベント情報の内容（ERREVT3）

項目
位置（バイト）
長さ
（バイト）
属性
内容

形式1
形式2

予備（形式1のときだけ）
0
－
2
－
－

予備（形式1のときだけ）
2
－
2
－
－

エラーイベントコード
4
0
3
英数字
'ERR'が設定されます。

7
3
3
－
－

10
6
2
英数字
ERREVT3を示す'3△'が設定されます。

入力元論理端末名称
12
8
8
英数字
メッセージを入力した論理端末名称です。次に示す場合は，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで，障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPが，さらにアプリケーション起動をしたMHPで，障害が発生した場合

予備
20
16
20
－
－

予備
40
36
8
－
－

マップ名
48
44
8
－
MCFが使用します。

アプリケーション名
56
52
8
英数字
異常が発生したメッセージのアプリケーション名です。

予備
64
60
8
－
－

コネクション名
72
68
8
英数字
コネクション名です。次に示す場合は，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで，障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPが，さらにアプリケーション起動をしたMHPで，障害が発生した場合

予備
80
76
16
－
－

メッセージが入力された日付
96
92
8
外部10進数字
端末入力メッセージを入力した日付です。YYYYMMDDの形式です。
YYYY：西暦の年
MM：月
DD：日

メッセージが入力された時刻
104
100
8
外部10進数字
端末入力メッセージを入力した時刻です。HHMMSS00の形式です。
HH：時
MM：分
SS：秒
00は固定です。

予備
112
108
16
－
－

サービス名
128
124
31
英数字
異常が発生したUAPのアプリケーション名に対応するサービス名です。

予備
159
155
1
－
－

サービスグループ名
160
156
31
英数字
異常が発生したUAPのサービスグループ名です。

予備
191
187
1
－
－

トランザクションID（BID）
192
188
36
2進数字
異常が発生したトランザクションのBIDです。

予備
228
224
28
－
－

（凡例）

－：該当しません。または，使用されません。

表4-5　COBOL言語のUAPに通知されるMCFイベント情報の内容（ERREVTA）

項目
位置（バイト）
長さ
（バイト）
属性
内容

形式1
形式2

予備（形式1のときだけ）
0
－
2
－
－

予備（形式1のときだけ）
2
－
2
－
－

エラーイベントコード
4
0
3
英数字
'ERR'が設定されます。

7
3
3
－
－

10
6
2
英数字
ERREVTAを示す'A△'が設定されます。

出力先論理端末名称
12
8
8
英数字
メッセージを出力する論理端末名称です。

予備
20
16
20
－
－

予備
40
36
8
－
－

マップ名
48
44
8
－
MCFが使用します。

アプリケーション名
56
52
8
英数字
正常終了したメッセージのアプリケーション名です。
MHPから送信されたメッセージの場合設定されます。MHP以外から送信された場合は空白が設定されます。

予備
64
60
8
－
－

コネクション名
72
68
8
英数字
コネクション名です。

予備
80
76
16
－
－

メッセージが入力された日付
96
92
8
外部10進数字
端末入力メッセージを入力した日付です。YYYYMMDDの形式です。
YYYY：西暦の年
MM：月
DD：日

メッセージが入力された時刻
104
100
8
外部10進数字
端末入力メッセージを入力した時刻です。HHMMSS00の形式です。
HH：時
MM：分
SS：秒
00は固定です。

予備
112
108
16
－
－

予備
128
124
31
－
－

予備
159
155
1
－
－

予備
160
156
31
－
－

予備
191
187
1
－
－

予備
192
188
36
－
－

予備
228
224
28
－
－

（凡例）

－：該当しません。または，使用されません。

表4-6　COBOL言語のUAPに通知されるMCFイベント情報の内容（CERREVT）

項目
位置
（バイト）
長さ
（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「CERREVT」が設定されます。

入力元論理端末名称
8
8
英数字
障害の発生した論理端末名称が設定されます（コネクション障害時は無効です）。

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージ入力日付
32
8
外部10進数字
CERREVTを入力した日付です。

メッセージ入力時刻
40
8
外部10進数字
CERREVTを入力した時刻です。

障害要因コード
48
4
2進数字
障害要因コードが設定されます。
(00000030)₁₆：コネクション障害
(00000031)₁₆：論理端末障害

理由コード1※
52
4
2進数字
理由コード1が設定されます。

理由コード2※
56
4
2進数字
理由コード2が設定されます。

回復動作情報
60
4
2進数字
障害時，システムを回復する方法を示す値が設定されます。
(00000000)₁₆：システムによる自動回復
(ffffffff)₁₆：コマンド入力による手動回復

予備
64
44
－
－

（凡例）

－：該当しません。または，使用されません。

注※

理由コード1および理由コード2の内容については，「付録C　理由コードおよびセンスコード一覧」を参照してください。

表4-7　COBOL言語のUAPに通知されるMCFイベント情報の内容（COPNEVT，CCLSEVT）

項目
位置
（バイト）
長さ
（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「COPNEVT」，または「CCLSEVT」が設定されます。

入力元論理端末名称
8
8
英数字
無効です。

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージ入力日付
32
8
外部10進数字
COPNEVT，CCLSEVTを入力した日付です。

メッセージ入力時刻
40
8
外部10進数字
COPNEVT，CCLSEVTを入力した時刻です。

回復動作情報
48
4
2進数字
障害時，システムを回復する方法を示す値が設定されます。
(00000000)₁₆：システムによる自動回復
(ffffffff)₁₆：コマンド入力による手動回復
回復動作情報は，該当するコネクションが端末起動の場合は手動回復になり，ホスト起動の場合は自動回復になります。

予備
52
56
－
－

（凡例）

－：該当しません。または，使用されません。

5.　システム定義

この章では，SLUTYPE-Pプロトコルを使用するために必要な，OpenTP1のシステム定義の中でのSLU - TypeP2固有のシステム定義について説明します。また，自システム内にある通信管理プログラムと関連づける内容，および定義例について説明します。

＜この章の構成＞

SLU - TypeP2の定義の概要

SLU - TypeP2固有のシステム定義の種類

mcfmuap（UAP共通定義）

mcftalccn（コネクション定義の開始）

mcftalced（コネクション定義の終了）

mcftalcle（論理端末定義）

システムサービス情報定義

システムサービス共通情報定義

MCF定義オブジェクトの生成

自システムの通信管理プログラムと関連づける内容

定義例

SLU - TypeP2の定義の概要

SLU - TypeP2のシステム定義は，OpenTP1のネットワークコミュニケーション定義の中で定義します。また，自システムの通信管理プログラムと，システム定義内容を関連づける必要があります。

OpenTP1のネットワークコミュニケーション定義の中での定義

OpenTP1のネットワークコミュニケーション定義のうち，SLU - TypeP2に固有の定義について説明します。

使用する定義ファイル

MCFおよびSLU - TypeP2を起動するには，定義ファイルに環境情報を指定する必要があります。MCFで使用する定義ファイルを次の表に示します。

表5-1　MCFで使用する定義ファイル

定義の種類 | 定義のソースファイル | 定義の内容
MCFマネジャ定義 | MCFマネジャ定義ソースファイル | MCF全体の実行環境
MCF通信構成定義 | 共通定義ソースファイル | プロトコルごとの実行環境
プロトコル固有定義ソースファイル
MCFアプリケーション定義 | MCFアプリケーション定義ソースファイル | アプリケーションの属性

定義のソースファイルは，定義コマンド，オプション，およびオペランドを指定して作成します。それらの中には，プロトコルで共通のものと，プロトコルに固有のものがあります。表5-1の定義の中で，SLU - TypeP2に固有の定義があるものを次に示します。

MCFマネジャ定義

MCF通信構成定義

この章では，SLU - TypeP2に固有の定義コマンド，オプション，およびオペランドについて説明します。プロトコルで共通の定義については，マニュアル「OpenTP1 システム定義」を参照してください。ただし，mcftbuf（バッファグループ定義）のlength，countオペランドの指定値については，mcftalccnの注意事項に記載してあります。

SLU - TypeP2の組み込み時に必要なファイル

次に示すファイルは，SLU - TypeP2をOpenTP1システムに組み込むときに必要なファイルです。

システムサービス情報定義ファイル

システムサービス共通情報定義ファイル

MCF定義オブジェクトファイル

この章では，システムサービス情報定義ファイルとシステムサービス共通情報定義ファイルの記述内容，およびMCF定義オブジェクトファイルを生成するユティリティの起動コマンドについて説明します。SLU - TypeP2を組み込む方法については，「7.　組み込み方法」を参照してください。

通信定義の内容の関連づけ

SLUTYPE-Pプロトコルを使用して相手システムと通信するためには，SLU - TypeP2のシステム定義内容を自システムの通信管理プログラムと関連づける必要があります。

この章では，自システムの通信管理プログラム（XNF/AS）と関連づける内容を示します。

SLU - TypeP2固有のシステム定義の種類

OpenTP1のネットワークコミュニケーション定義のうち，SLU - TypeP2に固有の定義の一覧を次の表に示します。

表5-2　SLU - TypeP2固有の定義の一覧

定義名
コマンド
オプション・オペランド
定義内容
指定値((値範囲))《省略時解釈値》

MCFマネジャ定義
mcfmuap※
-t
sndrcvtim
同期型送受信監視時間（SENDRECV）
符号なし整数((0～65535))《0》（単位：秒）

MCF通信構成定義
共通定義
プロトコル共通のコマンドだけで指定できます。共通のコマンドについては，マニュアル「OpenTP1 システム定義」を参照してください。

プロトコル固有定義
mcftalccn（コネクション定義の開始）
指定数：1～512
-c
－
コネクションID
1～8文字の識別子

-p
－
プロトコルの種別
slup2

-g
sndbuf
送信用バッファグループ番号
符号なし整数((1～512))

rcvbuf
受信用バッファグループ番号
符号なし整数((1～512))

-e
msgbuf
編集用バッファグループ番号
符号なし整数((1～512))

count
編集用バッファ数
符号なし整数((1～131070))

-m
mode
使用する通信管理
xnfas

-i
－
コネクションの確立方法
auto｜《manual》

-b
bretry
障害時にコネクション確立の再試行をするかどうか
《yes》｜no

bretrycnt
コネクション確立再試行の回数
符号なし整数((0～65535))《0》（単位：回）

bretryint
コネクション確立再試行の間隔
符号なし整数((0～2550))《60》（単位：秒）

-k
－
起動種別
host｜ws

-n
ownnode
自局ノード名称
符号なし整数((0～253))

-q
hostnode
ホストノード名称
1～8けたの16進数字

-r
sndrusiz
送信最大RU長
符号なし整数((0～32767))

rcvrusiz
受信最大RU長
符号なし整数((8～32767))

-o
－
LOGONモード名称
1～8文字の識別子｜space

-j
pluname
PLU名称
1～8文字の識別子

-d
－
問い合わせ応答識別
《rqd》｜rqe

-w
cmderrstp
コマンドエラーリターン抑止種別
yes｜《no》

firststsn
OpenTP1の開始後，初めてのSTSNコマンドに対する応答の内容
positive｜《negative》

-f
－
ホストへ送信するデータで，FMHを使用するかどうか
《yes》|no

-t
termself
TERM-SELFの終了方式
《orderly》|forced

setplu
TERM-SELFにPLU名称を設定するかどうか
yes|《no》

dactlu
TERM-SELFのDACTLU送信フィールドに設定する送信種別
on|《off》

mcftalcle（論理端末定義）
指定数：1～512
-l
－
論理端末名称
1～8文字の識別子

-t
－
論理端末タイプ
send｜receive｜request

-m
mmsgcnt
メモリ出力メッセージ最大格納数
符号なし整数((0～65535))《0》

dmsgcnt
ディスク出力メッセージ最大格納数
符号なし整数((0～65535))《0》

-k
quekind
出力キューの媒体の種別
《memory》｜disk

quegrpid
出力キューグループID
1～8文字の識別子

-o
aj
送信完了時の情報を取得するかどうか
《yes》｜no

-v
－
メッセージ受信時に起動するアプリケーション名
1～8文字の識別子

mcftalced（コネクション定義の終了）
指定数：mcftalccnと同数
－
－
コネクション定義の終了
－

（凡例）

－：該当しません。

注※

SLU - TypeP2に固有の定義だけ記載してあります。このほかにも，プロトコルで共通の定義コマンド，オプション，オペランドがあります。それらについては，マニュアル「OpenTP1 システム定義」を参照してください。

定義の指定順序

SLU - TypeP2のプロトコル固有定義コマンドの指定順序を次の図に示します。MCF通信構成定義コマンドを指定するときは，必ずこの順序に従ってください。

図5-1　SLU - TypeP2のプロトコル固有定義コマンドの指定順序

注※

mcftalccnとmcftalcleの指定は，1対1になるようにしてください。

mcfmuap（UAP共通定義）

形式

mcfmuap         ：
      〔-t "〔sndrcvtim = 同期送受信監視時間〕"〕
               ：

機能

UAPに共通する環境を定義します。

オプション

この定義コマンドには，ほかにもオプションおよびオペランドがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

●-t

（オペランド）

sndrcvtim=同期送受信監視時間　　～＜符号なし整数＞((0～65535))《0》（単位：秒）

同期型のメッセージ送受信の仕掛り開始（sendrecv（EMI）発行）から仕掛り終了（sendrecv終了）までの限界監視時間を指定します。このオペランドでは，相手システムからの応答時間を監視します。0を指定した場合，送受信時間の監視はしません。

mcftalccn（コネクション定義の開始）

形式

mcftalccn  -c コネクションID
          -p slup2
          -g "sndbuf = メッセージ送信用バッファグループ番号
              rcvbuf = メッセージ受信用バッファグループ番号"
        〔-e "〔msgbuf = メッセージ編集用バッファグループ番号〕
              〔count = メッセージ編集用バッファ数〕"〕
          -m "mode = xnfas"
        〔-i auto｜manual〕
        〔-b "〔bretry = yes｜no〕
              〔bretrycnt = コネクション確立再試行回数〕
              〔bretryint = コネクション確立再試行間隔〕"〕
          -k host｜ws
          -n "ownnode = 自局ノード名称"
          -q "hostnode = x'ホストノード名称'"
          -r "sndrusiz = 送信最大RU長
              rcvrusiz = 受信最大RU長"
          -o e'LOGONモード名称'｜space
          -j "pluname = e'PLU名称'"
        〔-d rqd｜rqe〕
        〔-w "〔cmderrstp = yes｜no〕
              〔firststsn = positive｜negative〕"〕
        〔-f yes｜no〕
        〔-t "〔termself = orderly｜forced〕
              〔setplu = yes｜no〕
              〔dactlu = on｜off〕"〕

機能

コネクションに関する環境を定義します。

オプション

●-c コネクションID　　～＜1～8文字の識別子＞

このコネクションIDは，ほかのmcftalccnコマンドの-cオプションで指定するコネクションIDと重複して指定できません。

●-p slup2

プロトコルの種別を指定します。

slup2

SLUTYPE-Pプロトコル（2次局）

●-g

（オペランド）

sndbuf=メッセージ送信用バッファグループ番号　　～＜符号なし整数＞((1～512))

メッセージ送信用バッファグループ番号を指定します。

mcftbufコマンドの-gオプションのgroupnoオペランドで指定するバッファグループ番号を指定してください。

rcvbuf=メッセージ受信用バッファグループ番号　　～＜符号なし整数＞((1～512))

メッセージ受信用バッファグループ番号を指定します。

mcftbufコマンドの-gオプションのgroupnoオペランドで指定するバッファグループ番号を指定してください。

●-e

（オペランド）

msgbuf=メッセージ編集用バッファグループ番号　　～＜符号なし整数＞((1～512))

入力，および出力メッセージ編集UOCを使用する場合に，メッセージ編集用として使用するバッファグループ番号を指定します。このオペランドを省略した場合は，メッセージ編集用バッファは確保されません。

メッセージ編集用バッファグループ番号には，mcftbufコマンドの-gオプションのgroupnoオペランドで指定するバッファグループ番号を指定してください。

count=メッセージ編集用バッファ数　　～＜符号なし整数＞((1～131070))

入力，および出力メッセージ編集UOC使用時に，メッセージ編集用として使用するバッファグループの数を指定します。

msgbuf オペランドで指定するメッセージ編集用バッファグループ番号に対応するmcftbufコマンドの-g オプションのcount，およびextendオペランドで指定するバッファ数の中から，メッセージ編集用に使用するバッファ数を指定してください。

また，このcountオペランドで指定するメッセージ編集用バッファ数は，mcftbufコマンドの-gオプションのcount，およびextendオペランドで指定するバッファ数の合計値を超える指定はできません。

msgbufオペランドを省略した場合は，このオペランドの指定は無効です。

●-m

（オペランド）

mode=xnfas

使用する通信管理を指定します。

xnfas

XNF/ASを使用します。

●-i auto｜manual　　～《manual》

OpenTP1システム開始時および再開始時にコネクションを自動的に確立するかどうかを指定します。

auto

OpenTP1システム開始時および再開始時にコネクションを自動的に確立します。

manual

MCF起動後，運用コマンド（mcftactcn）を入力してコネクションを確立します。

●-b

（オペランド）

bretry=yes｜no　　～《yes》

コネクション確立時に障害が発生した場合，コネクションの確立再試行をするかどうかを指定します。

yes

コネクションの確立再試行をします。

no

コネクションの確立再試行をしません。

bretrycnt=コネクション確立再試行回数　　～＜符号なし整数＞((0～65535))《0》（単位：回）

コネクション確立時に障害が発生した場合，MCFが行う確立再試行の回数を指定します。このオペランドを省略した場合，または0を指定した場合は，無限に確立再試行を繰り返します。

bretryオペランドでnoを指定した場合，bretrycntオペランドの指定は無効になります。

通信管理から再試行不可能な障害が通知された場合，または相手システムから確立要求に対する拒否応答を受けた場合は，再試行を中止します。

bretryint=コネクション確立再試行間隔　　～＜符号なし整数＞((0～2550))《60》（単位：秒）

コネクション確立時に障害が発生した場合，MCFが行う確立再試行の間隔を指定します。0を指定した場合，障害が発生するたびにコネクションの確立再試行をします。

bretryオペランドでnoを指定した場合，bretryintオペランドの指定は無効になります。

●-k host｜ws

起動種別を指定します。

host

ホスト（1次局）側からSLU - TypeP2へコネクションを確立します。SLU - TypeP2は，ホスト（1次局）側からのコネクション確立要求(BIND)を待ち合わせます。

ws

SLU - TypeP2からホスト（1次局）側へコネクションを確立します。

●-n

（オペランド）

ownnode=自局ノード名称　　～＜符号なし整数＞((0～253))

自局ノード名称を指定します。XNF/ASの構成定義で指定したLU番号を指定してください。

詳細については，この章の「自システムの通信管理プログラムと関連づける内容」を参照してください。

●-q

（オペランド）

hostnode=x'ホストノード名称'　　～＜1～8けたの16進数字＞

ホストノード名称を指定します。xは，16進数形式で指定することを意味します。

XNF/ASの構成定義で指定したPU番号と同じ値を指定してください。

詳細については，この章の「自システムの通信管理プログラムと関連づける内容」を参照してください。

●-r

（オペランド）

sndrusiz=送信最大RU長　　～＜符号なし整数＞((0～32767))

送信最大RU長を指定します。

rcvrusiz=受信最大RU長　　～＜符号なし整数＞((8～32767))

受信最大RU長を指定します。

●-o

（オペランド）

e'LOGONモード名称'　　～＜1～8文字の識別子＞

LOGONモード名称を指定します。eは，EBCDICコードに変換されることを意味します。

指定した文字数が8文字に満たない場合，指定領域の右側はスペースで埋められます。LOGONモード名称はEBCDICコードに変換されます。

space

LOGONモード名称に8文字のスペース（EBCDICコードの(4040404040404040)₁₆）を設定します。

●-j

（オペランド）

pluname=e'PLU名称'　　～＜1～8文字の識別子＞

PLU名称を指定します。eは，EBCDICコードに変換されることを意味します。

●-d rqd｜rqe　　～《rqd》

ホスト（1次局）への問い合わせ応答時の，応答識別を指定します。複数セグメントの問い合わせメッセージを送信する場合，このオプションの指定値は，最終セグメントだけ有効です。先頭セグメントおよび中間セグメントの応答識別は，このオプションの指定内容に関係なく，RQEになります。

rqd

問い合わせメッセージの応答識別にRQDを指定します。RQDを指定すると，問い合わせメッセージに対するホストからの応答（+RSPまたは-RSP）が送信されます。

rqe

問い合わせメッセージの応答識別にRQEを指定します。RQEを指定すると，エラーが発生した場合だけホストからの応答（-RSP）が送信されます。

●-w

（オペランド）

cmderrstp=yes｜no　　～《no》

SLU - TypeP2が運用コマンド（mcftactcn，mcftactle，mcftdctcn，およびmcftdctle）による状態変更ができない場合，運用コマンドを正常に受け付けたことにするかどうかを指定します。状態変更ができない場合とは，コネクションが確立済みのときにmcftactcnを入力したなどが該当します。

ただし，コネクションおよび論理端末の状態と受け付けた運用コマンドの組み合わせが以下の場合，このオペランドの指定に関係なくエラーとします。

コネクション確立処理障害時（mcftactcn）

コネクション使用中（mcftdctcn）

コネクション解放処理障害（正常解放時，および強制解放時）（mcftdctcn）

論理端末閉塞解除処理障害（mcftactle）

論理端末閉塞処理障害（mcftdctle）

論理端末使用中（mcftdctle）

yes

入力された運用コマンドを正常に受け付けたことにします。

no

入力された運用をエラーとします。運用コマンドはエラーメッセージを出力します。

firststsn=positive｜negative　　～《negative》

OpenTP1の開始後初めてのコネクションの確立において，ホストからSTSNコマンドのアクションコードが"SET&TEST要求"の送達確認がされた場合に，ホストに送信する応答の種類を指定します。

positive

ホストに肯定応答（TEST POSITIVE）を送信します。

negative

ホストに否定応答（TEST NEGATIVE）を送信します。

●-f yes｜no　　～《yes》

ホストに送信するデータで，FMHを使用するかどうかを指定します。

yes

ホストへのデータ送信でFMHを使用します（RH内のFIフィールドにONを設定する）。

ただし，FMHデータはUAPで送信メッセージ内に設定する必要があります。

no

ホストへのデータ送信でFMHを使用しません（RH内のFIフィールドにOFFを設定する）。

ただし，このオペランドの指定値に関係なく，ホスト側から受信するBINDセションパラメタは，FMHを使用する設定（バイト6，ビット1=ON）になっている必要があります。FMHを使用しない設定の場合，BINDパラメタ不正として-RSP（センスコード：0x0821）が応答され，コネクションの確立が拒否されます。

●-t

（オペランド）

termself =orderly｜forced　　～《orderly》

TERM-SELFコマンドの終了方式フィールド（バイト3，ビット2）に設定する終了方式を指定します。

orderly

計画終了（'1'）を設定します。

forced

強制終了（'0'）を設定します。

setplu=yes｜no　　～《no》

TERM-SELFコマンドにPLU名称を設定するかどうかを指定します。設定するPLU名称は，-jオプションに指定したPLU名称です。

yes

PLU名称を設定します。

no

PLU名称を設定しません。

なお，TERM-SELFコマンドの解放セションフィールド（バイト3，ビット5～6）への値の設定は，SLU - TypeP2がsetpluオペランドの指定値を基に決定します。

setpluオペランドの指定
解放セションフィールドへの設定値

yesの場合
'00'

noの場合
'10'

-tオプションのsetpluは省略し，そのほかのオペランドを指定した場合
'10'

-tオプション全体を省略した場合
'00'：SLU - TypeP2がTERM-SELFコマンドを送信する場合
'10'：通信管理がTERM-SELFコマンドを送信する場合

注1

解放セションフィールドの設定値の意味は次のとおりです。

'00'が設定されると，TERM-SELFコマンドの送信先がPLUに限定されます。

'10'が設定されると，PLU，SLUの区別に関係なくTERM-SELFコマンドが送信されます。

注2

解放セションフィールドの設定値は，-tオプション全体を省略する場合と-tオプションの各オペランドに省略時解釈値を明示指定する場合で異なります。解放セションフィールドの設定値をこのオプションが未サポートのSLU - TypeP2旧バージョンを使用する場合と同じにするには，-tオプション全体を省略してください。

dactlu=on｜off　　～《off》

TERM-SELFコマンドのDACTLU送信フィールド（バイト3，ビット3）に設定する送信種別を指定します。

on

送信可（'1'）を設定します。

off

送信不可（'0'）を設定します。

注意事項

-gオプション，および-eオプションで指定するバッファグループ番号は，バッファグループ定義のmcftbufコマンドに対応しています。mcftbufコマンドでは，1コネクション単位に次の表に示す資源が必要です。バッファグループ定義については，マニュアル「OpenTP1 システム定義」を参照してください。

バッファ種別 | バッファサイズ | バッファ面数
sndbuf | ユーザデータ長（送信最大RU長） | 最大セグメント分割数＋1
rcvbuf | ユーザデータ長（受信最大RU長） | 最大セグメント分割数＋2

mcftalced（コネクション定義の終了）

形式

mcftalced

機能

コネクション定義の終了を示します。

オプション

ありません。

mcftalcle（論理端末定義）

形式

mcftalcle -l 論理端末名称
         -t send｜receive｜request
       〔-m "〔mmsgcnt = メモリ出力メッセージ最大格納数〕
             〔dmsgcnt = ディスク出力メッセージ最大格納数〕"〕
       〔-k "〔quekind = memory｜disk〕
             〔quegrpid = キューグループID〕"〕
       〔-o "〔aj = yes｜no〕"〕
       〔-v アプリケーション名〕

機能

論理端末に関する環境を定義します。

オプション

●-l 論理端末名称　　～＜1～8文字の識別子＞

論理端末名称を指定します。

この論理端末名称は，ほかのmcftalcleコマンドの-lオプションで指定する論理端末名称とは異なる指定をしてください。

●-t send｜receive｜request

この論理端末の端末タイプを指定します。

send

送信型論理端末

receive

受信型論理端末

request

問い合わせ型論理端末

●-m

（オペランド）

mmsgcnt=メモリ出力メッセージ最大格納数　　～＜符号なし整数＞((0～65535))《0》

メモリで待ち合わせをする出力メッセージの最大格納数を指定します。

出力メッセージの待ち合わせ数が指定した最大数になると，それ以後UAPからの送信要求（SEND）はエラーリターンとなります。

0を指定した場合，メモリで待ち合わせをする出力メッセージの数は無制限になります。ただし，実際に待ち合わせをできる出力メッセージ数は動的共用メモリの容量に依存します。

dmsgcnt=ディスク出力メッセージ最大格納数　　～＜符号なし整数＞((0～65535))《0》

ディスクで待ち合わせをする出力メッセージの最大格納数を指定します。

出力メッセージの待ち合わせ数が指定した最大数になると，それ以後UAPからの送信要求（SEND）はエラーリターンとなります。

0を指定した場合，ディスクで待ち合わせをする出力メッセージの数は無制限になります。ただし，実際に待ち合わせをできる出力メッセージ数はメッセージキューファイルの容量に依存します。

●-k

（オペランド）

quekind=memory｜disk　　～《memory》

出力メッセージの割り当て先（メモリキューまたはディスクキュー）を指定します。

memory

メモリキューだけに割り当てます。

disk

ディスクキューおよびメモリキューに割り当てます。diskを指定した場合，必ずquegrpidオペランドを指定してください。

quegrpid=キューグループID　　～＜1～8文字の識別子＞

ディスクキューで待ち合わせをする出力メッセージに使用するキューグループIDを指定します。MCFマネジャ定義のmcfmqgidコマンドで指定するキューグループID（キューグループ種別はotq）のどれかを指定してください。

このオペランドは，quekindオペランドでdiskを指定した場合だけ指定してください。

●-o

（オペランド）

aj=yes｜no　　～《yes》

メッセージ送信が完了した場合に，メッセージ送信完了ジャーナル（AJ）を取得するかどうかを指定します。

yes

メッセージ送信完了ジャーナルを取得します。

no

メッセージ送信完了ジャーナルを取得しません。

●-v アプリケーション名　　～＜1～8文字の識別子＞

入力メッセージを受信した場合に起動するアプリケーション名（MHP）を指定します。MCFアプリケーション定義（mcfaalcap -nオプションのnameオペランド）で指定した名称を指定してください。MCFアプリケーション定義については，マニュアル「OpenTP1 システム定義」を参照してください。

このオプションを省略した場合は，入力メッセージ編集UOCで指定された値がアプリケーション名となります。

システムサービス情報定義

MCFサービスはユーザが作るシステムサービスで，OpenTP1のシステムサービスと同じ位置づけになります。

システムサービス情報定義では，MCF通信サービスを起動するための環境を定義します。ユーザがMCFサービスを作成するときに定義する必要があります。

システムサービス情報定義は，テキストエディタを使用して作成します。

システムサービス情報定義の完全パス名を次に示します。

＄DCDIR/lib/sysconf/定義ファイル名

定義ファイル名には，システムサービス情報定義のmoduleオペランドで指定する実行形式プログラム名を指定します。この定義ファイル名をMCFマネジャ定義のmcfmcnameコマンドに指定します。

形式

 set module = "SLU - TypeP2の実行形式プログラム名"

機能

プロセスサービスがMCF通信サービスを起動するための環境を定義します。

各MCF通信サービスに対して一つ，システムサービス情報定義を作成できます。また，複数のMCF通信サービスで一つのシステムサービス情報定義を共用することもできます。

オペランド

●module="SLU - TypeP2の実行形式プログラム名"　　～＜1～8文字の識別子＞

MCF通信サービスを起動するための実行形式プログラム名を指定します。

MCF実行形式プログラムには，MCF通信プロセスのためのものとアプリケーション起動プロセスのためのものがあります。

MCF実行形式プログラムは，MCF通信プロセス同士，アプリケーション起動プロセス同士で共有できます。

SLU - TypeP2の実行形式プログラム名には，先頭4文字がmcfuで始まる最大8文字の名称を指定します。

システムサービス共通情報定義

SLU - TypeP2で定義したシステム構成の内容によっては，OpenTP1のシステムサービス共通情報定義を指定する必要があります。

システムサービス共通情報定義の完全パス名を次に示します。

$DCDIR/lib/sysconf/mcf

形式

set形式

set max_socket_descriptors=ソケット用ファイル記述子の最大数
set max_open_fds=MCF通信プロセスでアクセスするファイルの最大数

機能

システムサービス共通情報定義では，複数のMCF通信サービスに共通する情報を定義します。この定義ファイルは，標準値を定義した状態で製品に含まれています。次に示すオペランドについては，必要に応じて，テキストエディタを使用して定義値を変更してください。ほかのオペランドについては，変更しないでください。

説明

set形式のオペランド

●max_socket_descriptors=ソケット用ファイル記述子の最大数　　～〈符号なし整数〉((64～2047))

各MCF通信プロセスでソケット用に使用するファイル記述子数の中の最大数を指定します。

ソケット用ファイル記述子の最大数を求める計算式を次に示します。↑↑は，小数点以下を切り上げることを意味します。

↑（このMCF通信プロセスに対してメッセージ送信要求を行うUAPプロセス数※1
 ＋システムサービスプロセス数※2
 ＋このMCF通信プロセスに対して同時に処理要求を行う運用コマンド数
 ）／0.8↑

注※1

アプリケーション起動サーバに対するアプリケーション起動要求を行うUAPプロセス数も含みます。

注※2

システムサービスプロセス数とは，自OpenTP1内のシステムサービスプロセス数です。

自OpenTP1内のMCF通信プロセスごとに計算し，その結果の中で最大値が64より大きい場合は，その値を指定します。64以下の場合は，64を指定します。

●max_open_fds=MCF通信プロセスでアクセスするファイルの最大数　　～〈符号なし整数〉((100～2016))

各MCF通信プロセスでアクセスするファイル数の中の最大値を指定します。

ファイル記述子の最大数を求める計算式を次に示します。

（プロトコル制御で使用するファイル記述子数※¹）＋MCFメイン関数でユーザが使用するファイル記述子数＋30※²

注※1

SLU - TypeP2の場合，MCF通信構成定義に定義したコネクションの総数を2倍した値になります。実際に通信を行うコネクションの総数ではありませんので，注意してください。

注※2

MCF通信プロセスが扱う定義ファイルなどの数の最大値です。

自OpenTP1内の各MCF通信プロセスごとに計算し，その結果の中で最大値が500より大きい場合は，その値を指定します。500以下の場合は，500を指定します。指定値を超えてファイルのアクセスが発生した場合，その超過分はソケット用ファイル記述子使用数として扱われます。この場合，max_socket_descriptorsオペランドの指定値からmax_open_fdsオペランドの指定値を減算した超過分が，実際のソケット用ファイル記述子の最大数になりますので，ご注意ください。

（「このオペランドの指定値」
＋同定義内の「max_socket_descriptorsオペランドの指定値」）≦2048

条件を満たさない指定をした場合は，このオペランドの指定値は次に示すように強制的に補正されます。

2048－（同定義内の「max_socket_descriptorsオペランドの指定値」）

注意事項

max_socket_descriptorsオペランドの指定値とmax_open_fdsオペランドの指定値の合計は，OSのシステムパラメタで指定する「1プロセスでオープンできるファイル数」を超えないようにする必要があります。システム定義の変更などによって，オペランドの指定値の合計が増加する場合は，OSのシステムパラメタの指定を変更してください。

MCF定義オブジェクトの生成

MCF定義オブジェクト生成ユティリティでは，MCFの定義ファイルの構文のチェックと定義オブジェクトファイルへの変換をします。ここでは，MCF定義オブジェクト生成ユティリティの起動コマンドについて説明します。

形式

mcfslup2 -i  〔パス名〕入力ファイル名
        -o  〔パス名〕出力オブジェクトファイル名

機能

MCF通信構成定義のSLU - TypeP2のプロトコル固有定義ファイルの構文をチェックし，定義オブジェクトファイルを作成します。

ただし，開始から再開始の間に定義オブジェクトファイルを変更してはいけません。変更した場合，再開始時に正常に動作しないことがありますのでご注意ください。

SLU - TypeP2のプロトコル固有定義オブジェクトファイル以外の生成ユティリティについては，マニュアル「OpenTP1 システム定義」を参照してください。

オプション

●-i 〔パス名〕入力ファイル名　　～＜パス名＞＜1～8文字の識別子＞

定義ソースが格納されているファイル名を指定します。

●-o 〔パス名〕出力オブジェクトファイル名　　～＜パス名＞＜1～8文字の英数字＞

定義オブジェクトを格納するファイル名を指定します。

自システムの通信管理プログラムと関連づける内容

SLU - TypeP2の定義には，LUの定義について，通信管理と関連づける項目があります。

自局ノード名称とホストノード名称

自局ノード名称とホストノード名称は，通信管理の構成定義で指定した値と一致させてください。通信管理の構成定義については，マニュアル「通信管理 XNF/AS 構成定義編」を参照してください。

ownnodeオペランド（mcftalccn -n）

ownnodeオペランドで指定する自局ノード名称は，HNA2用全体定義文（HNA2_configuration max_SLUS_LU）で指定したSLUS用のLU番号と一致させます。

hostnodeオペランド（mcftalccn -q）

hostnodeオペランドで指定するホストノード名称は，HNA2用PU定義文（HNA2_PU PU_number）で指定したPU番号と一致させます。

自システムと相手システムのLUの構成に応じた定義例

自システムの通信管理プログラムのローカルアドレス割り当て機能を使用しない場合

ローカルアドレス割り当て機能を使用しない場合は，通信管理プログラムが「LU番号＋2」をローカルアドレスとして自動的に割り当てます。

SLUS用LUだけで構成する例と，SLUS用LU以外のLUと混在する例をそれぞれ示します。

図5-2　SLUS用LUだけの構成例（ローカルアドレス割り当て機能を使用しない場合）

図5-3　SLUS用LU以外のLUと混在する構成例（ローカルアドレス割り当て機能を使用しない場合）

自システムの通信管理プログラムのローカルアドレス割り当て機能を使用する場合

ローカルアドレス割り当て機能を使用する場合に，SLUS用LUだけで構成する例と，SLUS用LU以外のLUと混在する例をそれぞれ示します。

図5-4　SLUS用LUだけの構成例（ローカルアドレス割り当て機能を使用する場合）

図5-5　SLUS用LU以外のLUと混在する構成例（ローカルアドレス割り当て機能を使用する場合）

通信管理プログラムの自動ログオン機能

SLU - TypeP2は，NOTIFYコマンドが未サポートのため，HNA2全体定義文（HNA2_configuration），HNA2用PU定義文（HNA2_PU）およびHNA2用LU定義文（HNA2_LU）のどれにも，自動ログオン定義（auto_logon）にyesを指定できません。自動ログオン定義を省略するか，noを指定する必要があります。

定義例

SLU - TypeP2のシステム構成例を次の図に，その構成に沿った定義例をそのあとに示します。

SLU - TypeP2では，この定義のコーディング例を次のファイルで提供しています。

/BeTRAN/examples/mcf/SLUP2/conf/com_d

図5-6　SLU - TypeP2のシステム構成例

#############################################################
#          MCF COMMUNICATION CONFIGURATION DEFINITION       #
#                  for SLU - TypeP2 protocol                #
#############################################################
#--------------Connection definition (mcftalccn)------------#
mcftalccn   -c    SL2INT01                 ¥
           -p    slup2                    ¥
           -n   "ownnode    = 20"         ¥
           -q   "hostnode   = x'01'"      ¥
           -o  e'LOGONMOD'                ¥
           -j   "pluname    = e'PLU01'"   ¥
           -g   "sndbuf     = 1           ¥
                 rcvbuf     = 2"          ¥
           -e   "msgbuf     = 3           ¥
                 count      = 10"         ¥
           -m   "mode       = xnfas"      ¥
           -i    auto                     ¥
           -b   "bretry     = yes         ¥
                 bretrycnt  = 10          ¥
                 bretryint  = 2"          ¥
           -k    ws                       ¥
           -d    rqe                      ¥
           -w   "firststsn = positive"    ¥
           -t   "termself = forced"       ¥
           -r   "sndrusiz   = 1024        ¥
                 rcvrusiz   = 1024"
#-----------------------------------------------------------#
########LE definition  (SL2REQ01)
mcftalcle   -l    SL2REQ01                 ¥
           -t    request                  ¥
           -m   "mmsgcnt    = 0           ¥
                 dmsgcnt    = 0"          ¥
           -k   "quekind    = disk        ¥
                 quegrpid   = quegrp01"   ¥
           -o   "aj         = yes"        ¥
           -v    slmhprv1
#-----------------------------------------------------------#
###Connection definition end  (SL2INT01)
mcftalced

6.　運用コマンド

OpenTP1システムは，運用コマンドを使用してシステムを運用できます。この章では，SLU - TypeP2で使用する運用コマンドについて説明します。

＜この章の構成＞

SLU - TypeP2の運用コマンド

mcftactcn（コネクションの確立）

mcftactle（論理端末の閉塞解除）

mcftdctcn（コネクションの解放）

mcftdctle（論理端末の閉塞）

mcftlscn（コネクションの状態表示）

mcftlsle（論理端末の状態表示）

SLU - TypeP2の運用コマンド

SLU - TypeP2は，オンライン中に運用コマンドを入力できます。SLU - TypeP2で使用する運用コマンドを次の表に示し，それぞれについて説明します。

なお，ここでは，SLU - TypeP2に関係のあるオプションについてだけ説明しています。ほかのオプション，運用コマンドの入力方法，およびその他の運用コマンドについては，マニュアル「OpenTP1 運用と操作」を参照してください。

表6-1　SLU - TypeP2で使用する運用コマンドの一覧

機能 | コマンド名称 | 定義中組み込み | オフライン中に実行 | オンライン中に実行 | UAPから実行
コネクション管理 | コネクションの確立 | mcftactcn | × | × | ○ | ○
コネクションの解放 | mcftdctcn | × | × | ○ | ○
コネクション状態表示 | mcftlscn | × | × | ○ | ○
論理端末管理 | 論理端末の閉塞解除 | mcftactle | × | × | ○ | ○
論理端末の閉塞 | mcftdctle | × | × | ○ | ○
論理端末の状態表示 | mcftlsle | × | × | ○ | ○

（凡例）

○：組み込み，または実行ができます。

×：組み込み，または実行ができません。

mcftactcn（コネクションの確立）

形式

mcftactcn 〔-s MCF通信プロセス識別子〕-c コネクションID

機能

コネクションを確立します。

オプション

●-s MCF通信プロセス識別子　　～＜16進数字＞((01～ef))

MCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数指定できません。このオプションの指定を省略すると，すべてのMCF通信プロセスに対してmcftactcnコマンドを実行します。

●-c コネクションID　　～＜1～8文字の識別子＞

確立するコネクションの名称を指定します。

コネクションIDは一度に8個まで指定できます。複数指定するときは引用符（"）で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。同一コネクションIDは重複して指定できません。

また，コネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDを混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべてのコネクションを確立します。

先行文字列*：先行文字列で始まるすべてのコネクションを確立します。

〈複数指定の例〉　cnn1，cnn2，cnn3を指定する場合

-c "cnn1△cnn2△cnn3"

〈一括指定の例〉　cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA10350-I | mcftactcnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | 標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | 標準エラー出力
KFCA10359-W | mcftactcnコマンド入力元への応答を失敗しました。 | メッセージログファイル
KFCA10371-I | mcftactcnコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftactcnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10500-I | ヘルプメッセージ | 標準出力
KFCA15330-E | MCF運用コマンド処理中に異常が発生しました。 | 標準エラー出力
KFCA15332-E | コネクションが確立済みのため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15333-E | コネクション確立処理中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15334-E | コネクション解放処理中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15342-E | ホスト起動方式のコネクションのため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftactle（論理端末の閉塞解除）

形式

mcftactle 〔-s MCF通信プロセス識別子〕〔-c コネクションID〕
           -l 論理端末名称

機能

論理端末の閉塞を解除します。

オプション

●-s MCF通信プロセス識別子　　～＜16進数字＞((01～ef))

MCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数指定できません。このオプションの指定を省略すると，すべてのMCF通信プロセスに対してmcftactleコマンドを実行します。

●-c コネクションID　　～＜1～8文字の識別子＞

閉塞解除したい論理端末に対応するコネクションのコネクションIDを指定します。

コネクションIDは複数指定できません。また，一括指定もできません。

●-l 論理端末名称　　～＜1～8文字の識別子＞

閉塞解除する論理端末の名称を指定します。

-cオプションを指定した場合は，指定したコネクションIDに対応する論理端末の名称を指定してください。

論理端末名称は一度に8個まで指定できます。複数指定するときは引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は重複して指定できません。

また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称を混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべての論理端末の閉塞を解除します。

先行文字列*：先行文字列で始まるすべての論理端末の閉塞を解除します。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末を指定する場合

-l "len*"

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA10350-I | mcftactleコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | 標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | 標準エラー出力
KFCA10359-W | mcftactleコマンド入力元への応答を失敗しました。 | メッセージログファイル
KFCA10371-I | mcftactleコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftactleコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10382-E | 指定した論理端末は登録されていません。 | 標準エラー出力
KFCA10390-E | 指定したコネクションIDと論理端末名称の対応が正しくありません。 | 標準エラー出力
KFCA10503-I | ヘルプメッセージ | 標準出力
KFCA15330-E | MCF運用コマンド処理中に異常が発生しました。 | 標準エラー出力
KFCA15337-E | 論理端末が活性化済みのため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15339-E | 論理端末閉塞処理中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15396-E | 内部処理実行中に障害が発生しました。論理端末を閉塞します。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftdctcn（コネクションの解放）

形式

mcftdctcn 〔-s MCF通信プロセス識別子〕-c コネクションID〔-f〕

機能

コネクションを解放します。

オプション

●-s MCF通信プロセス識別子　　～＜16進数字＞((01～ef))

MCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数指定できません。このオプションの指定を省略すると，すべてのMCF通信プロセスに対してmcftdctcnコマンドを実行します。

●-c コネクションID　　～＜1～8文字の識別子＞

解放するコネクションのコネクションIDを指定します。

コネクションIDは一度に8個まで指定できます。複数指定するときは引用符（"）で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。同一コネクションIDは重複して指定できません。

また，コネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDを混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべてのコネクションを解放します。

先行文字列*：先行文字列で始まるすべてのコネクションを解放します。

〈複数指定の例〉　cnn1，cnn2，cnn3を指定する場合

-c "cnn1△cnn2△cnn3"

〈一括指定の例〉　cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

●-f

該当するコネクションを強制的に解放します。

このオプションを指定した場合，該当するコネクションが仕掛り中のとき，仕掛り中の処理を終了しないで強制的に解放します。

このオプションの指定を省略した場合，該当するコネクションが仕掛り中の場合，mcftdctcnコマンドはエラーとなります。

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA10350-I | mcftdctcnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | 標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | 標準エラー出力
KFCA10359-W | mcftdctcnコマンド入力元への応答を失敗しました。 | メッセージログファイル
KFCA10371-I | mcftdctcnコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftdctcnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10501-I | ヘルプメッセージ | 標準出力
KFCA15330-E | MCF運用コマンド処理中に異常が発生しました。 | 標準エラー出力
KFCA15331-E | コネクションが未確立のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15333-E | コネクション確立処理中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15334-E | コネクション解放処理中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15341-E | コネクション使用中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftdctle（論理端末の閉塞）

形式

mcftdctle 〔-s MCF通信プロセス識別子〕〔-c コネクションID〕
           -l 論理端末名称

機能

論理端末を閉塞します。

オプション

●-s MCF通信プロセス識別子　　～＜16進数字＞((01～ef))

MCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数指定できません。このオプションの指定を省略すると，すべてのMCF通信プロセスに対してmcftdctleコマンドを実行します。

●-c コネクションID　　～＜1～8文字の識別子＞

閉塞したい論理端末に対応するコネクションのコネクションIDを指定します。

コネクションIDは複数指定できません。また，一括指定もできません。

●-l 論理端末名称　　～＜1～8文字の識別子＞

閉塞する論理端末の名称を指定します。

-cオプションを指定した場合は，指定したコネクションIDに対応する論理端末の名称を指定してください。

論理端末名称は一度に8個まで指定できます。複数指定するときは引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は重複して指定できません。

また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称を混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべての論理端末を閉塞します。

先行文字列*：先行文字列で始まるすべての論理端末を閉塞します。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末を指定する場合

-l "len*"

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA10350-I | mcftdctleコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | 標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | 標準エラー出力
KFCA10359-W | mcftdctleコマンド入力元への応答を失敗しました。 | メッセージログファイル
KFCA10371-I | mcftdctleコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftdctleコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10382-E | 指定した論理端末は登録されていません。 | 標準エラー出力
KFCA10390-E | 指定したコネクションIDと論理端末名称の対応が正しくありません。 | 標準エラー出力
KFCA10395-E | 指定したコネクションには未接続の論理端末が指定されています。 | 標準エラー出力
KFCA10504-I | ヘルプメッセージ | 標準出力
KFCA15330-E | MCF運用コマンド処理中に異常が発生しました。 | 標準エラー出力
KFCA15335-E | 論理端末が閉塞済みのため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15338-E | 論理端末使用中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA15339-E | 論理端末閉塞処理中のため運用コマンドは受け付けられません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

注意事項

受信仕掛り中に運用コマンド（mcftdctle）を入力した場合は，論理端末が閉塞状態でも，メッセージを受信します。論理端末閉塞によるメッセージ受信処理への影響はありません。

送信仕掛り中に運用コマンド（mcftdctle）を入力した場合は，運用コマンドがエラーリターンします。送信仕掛り中でない場合は，論理端末は閉塞されます。

mcftlscn（コネクションの状態表示）

形式

mcftlscn 〔-s MCF通信プロセス識別子〕-c コネクションID 〔-d〕

機能

コネクションの状態を標準出力に表示します。

オプション

●-s MCF通信プロセス識別子　　～＜16進数字＞((01～ef))

MCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数指定できません。このオプションの指定を省略すると，すべてのMCF通信プロセスに対してmcftlscnコマンドを実行します。

●-c コネクションID　　～＜1～8文字の識別子＞

状態を表示するコネクションのコネクションIDを指定します。

コネクションIDは一度に8個まで指定できます。複数指定するときは引用符（"）で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。同一コネクションIDは重複して指定できません。

また，コネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDを混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべてのコネクションの状態を表示します。

先行文字列*：先行文字列で始まるすべてのコネクションの状態を表示します。

〈複数指定の例〉　cnn1，cnn2，cnn3を指定する場合

-c "cnn1△cnn2△cnn3"

〈一括指定の例〉　cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

●-d

コネクションの状態と該当するコネクションに対応する論理端末の情報を表示します。

このオプションの指定を省略すると，コネクションの状態だけを表示します。

出力形式

mmm cccccccc ppp sssss dddd
   llllllll ttt uuuu xxxx

注

-dオプションを指定しないでmcftlscnコマンドを実行した場合は，「mmm cccccccc ppp sssss dddd」の行だけ出力されます。

mmm：MCF識別子

cccccccc：コネクションID

ppp：プロトコル種別
SL2…SLUTYPE-Pプロトコル

sssss：コネクション状態
ACT…確立
ACT/B…確立処理中
DCT…解放
DCT/B…解放処理中

dddd：詳細ステータス（保守情報）

llllllll：論理端末名称

ttt：論理端末の端末タイプ
SND…send型
RCV…receive型
REQ…request型

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA10350-I | mcftlscnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | 標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | 標準エラー出力
KFCA10359-W | mcftlscnコマンド入力元への応答を失敗しました。 | メッセージログファイル
KFCA10360-I | 状態表示を開始します。 | 標準出力
KFCA10361-I | 標準情報を表示します。 | 標準出力
KFCA10362-I | 詳細情報を表示します。 | 標準出力
KFCA10369-I | 状態表示を終了します。 | 標準出力
KFCA10371-I | mcftlscnコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftlscnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10502-I | ヘルプメッセージ | 標準出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftlsle（論理端末の状態表示）

形式

mcftlsle 〔-s MCF通信プロセス識別子〕〔-c コネクションID〕
          -l 論理端末名称〔-q〕〔-t〕

機能

論理端末の状態を標準出力に表示します。

オプション

●-s MCF通信プロセス識別子　　～＜16進数字＞((01～ef))

MCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数指定できません。このオプションの指定を省略すると，すべてのMCF通信プロセスに対してmcftlsleコマンドを実行します。

●-c コネクションID　　～＜1～8文字の識別子＞

状態を表示したい論理端末に対応するコネクションのコネクションIDを指定します。

コネクションIDは複数指定できません。また，一括指定もできません。

●-l 論理端末名称　　～＜1～8文字の識別子＞

状態を表示する論理端末の名称を指定します。

-cオプションを指定した場合，指定したコネクションIDに対応する論理端末名称を指定してください。

論理端末名称は一度に8個まで指定できます。複数指定するときは引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は重複して指定できません。

また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称を混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべての論理端末の状態を表示します。

先行文字列*：先行文字列で始まるすべての論理端末の状態を表示します。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末を指定する場合

-l "len*"

●-q

指定した論理端末に対応する出力キューの保留状態を表示します。

このオプションを省略すると，論理端末に対応する出力キューの保留状態は表示しません。

●-t

指定した論理端末がセキュア状態かどうかを表示します。

出力形式

mmm llllllll sss〔ggg〕〔tttt〕
   SYNC xxxxxxxxxx yyyyyyyyyy zzzzzzzzzz
   IO    ：    ：    ：
   PRIO  ：    ：    ：
   NORM  ：    ：    ：
   iii ooo

mmm：MCF識別子

llllllll：論理端末名称

sss：論理端末状態
ACT…閉塞解除状態
DCT…閉塞状態

ggg：論理端末のセキュア状態（-tオプション指定時だけ表示）
NOS…非セキュア状態
SEC…セキュア状態

tttt：論理端末のテストモード状態（TP1/Message Control/Tester使用時だけ表示）
TEST…テストモード
空白…非テストモード

SYNC：同期型メッセージ

IO：非同期型問い合わせ応答メッセージ

PRIO：非同期型一方送信メッセージ（優先）

NORM：非同期型一方送信メッセージ（一般）

xxxxxxxxxx：未送信メッセージ数

yyyyyyyyyy：未送信メッセージ最小通番

zzzzzzzzzz：未送信メッセージ最大通番

iii：出力キューの入力の保留状態（-qオプション指定時だけ表示）
NOH…保留解除
HLD…保留

ooo：出力キューの出力の保留状態（-qオプション指定時だけ表示）
NOH…保留解除
HLD…保留

出力メッセージ

出力メッセージID | 内容 | 出力先
KFCA10350-I | mcftlsleコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | 標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | 標準エラー出力
KFCA10359-W | mcftlsleコマンド入力元への応答を失敗しました。 | メッセージログファイル
KFCA10360-I | 状態表示を開始します。 | 標準出力
KFCA10364-I | 表示情報 | 標準出力
KFCA10365-I | 表示情報 | 標準出力
KFCA10369-I | 状態表示を終了します。 | 標準出力
KFCA10371-I | mcftlsleコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftlsleコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10382-E | 指定した論理端末は登録されていません。 | 標準エラー出力
KFCA10390-E | 指定したコネクションIDと論理端末名称の対応が正しくありません。 | 標準エラー出力
KFCA10395-E | 指定したコネクションには未接続の論理端末名称が指定されています。 | 標準エラー出力
KFCA10505-I | ヘルプメッセージ | 標準出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

7.　組み込み方法

この章では，SLU - TypeP2をOpenTP1システムに組み込む方法について説明します。

＜この章の構成＞

7.1　SLU - TypeP2の組み込みの流れ

7.2　MCFメイン関数の作成

7.3　定義オブジェクトファイルの生成

7.1　SLU - TypeP2の組み込みの流れ

SLU - TypeP2をOpenTP1システムに組み込むときの作業の流れを示します。

＜この節の構成＞

(1)　MCFメイン関数の作成

(2)　MCFサービス名の登録

(3)　システムサービス情報定義ファイルの作成

(4)　定義オブジェクトファイルの生成

(1)　MCFメイン関数の作成

SLU - TypeP2を起動するためには，MCFメイン関数をコーディングし，コンパイル，およびリンケージしておく必要があります。詳細は，「7.2　MCFメイン関数の作成」を参照してください。

(2)　MCFサービス名の登録

SLU - TypeP2を実行するためには，MCFサービス名をシステムサービス構成定義で定義しておく必要があります。

MCFサービス名はMCFマネジャ定義オブジェクトファイル名と一致させてください。

(3)　システムサービス情報定義ファイルの作成

システムサービス情報定義ファイルをテキストエディタで作成します。作成するファイルのパス名は，「$DCDIR/lib/sysconf/システムサービス情報定義ファイル名」です。ファイルの定義形式については，5章の「システムサービス情報定義」を参照してください。

(4)　定義オブジェクトファイルの生成

OpenTP1のネットワークコミュニケーション定義の各ソースファイルから定義オブジェクトファイルを生成します。詳細は，「7.3　定義オブジェクトファイルの生成」を参照してください。

7.2　MCFメイン関数の作成

SLU - TypeP2は，OpenTP1プロセスサービスによって起動されます。

SLU - TypeP2を起動するためには，ユーザがMCFメイン関数をコーディングし，コンパイル，およびリンケージを行ってSLU - TypeP2の実行形式プログラムを作成する必要があります。リンケージには，mcfplslup2コマンドを使用します。

MCFメイン関数からは，スタート関数（dc_mcf_svstart）を呼び出します。UOCを使用する場合は，MCFメイン関数でUOCの関数アドレスを指定してください。UOCは，MCFメイン関数と同じ言語（ANSI C，C++またはK&R版 C）で作成してください。

MCFメイン関数のコーディング概要を図7-1と図7-2に示します。また，ディレクトリへの組み込み方法を図7-3に示します。なお，これらのコーディング例を次のファイルで提供しています。

/BeTRAN/examples/mcf/SLUP2/cmlib/ansi/com.c

/BeTRAN/examples/mcf/SLUP2/cmlib/c/com.c

図7-1　MCFメイン関数のコーディング概要（ANSI C，C++の場合）

図7-2　MCFメイン関数のコーディング概要（K&R版Cの場合）

SLU - TypeP2で提供するヘッダファイルを取り込みます。

使用するUOC関数をextern宣言します。UOCのリターン値はDCLONG型にしてください。
UOCをまったく使用しない場合，このコーディングは必要ありません。

UOCテーブルをextern宣言します。UOCを使用する場合，必ずこのとおりにコーディングしてください。
UOCをまったく使用しない場合，このコーディングは必要ありません。

各UOC関数のアドレスを，次に示すシステム提供変数に設定します。使用するUOCだけコーディングしてください。

dcmcf_uoctbl.msgrcv  /*入力メッセージ編集UOCアドレス*/
dcmcf_uoctbl.msgsend /*出力メッセージ編集UOCアドレス*/

UOCをまったく使用しない場合，このコーディングは必要ありません。

スタート関数を呼び出します。MCFメイン関数には必ずコーディングしてください。

図7-3　MCFメイン関数のディレクトリへの組み込み方法の概要

注※1

mcfplslup2コマンドでリンケージします。

注※2

SLU - TypeP2の実行形式プログラム名は，先頭がmcfuで始まる8文字以内の名称にしてください。

7.3　定義オブジェクトファイルの生成

定義オブジェクトファイルを次の手順で生成します。

ただし，開始から再開始の間に定義オブジェクトファイルを変更してはいけません。変更した場合，再開始ができなくなることがあります。

テキストエディタを使用して，MCFの定義ファイルから，次に示す定義ソースファイルを作成します。

MCFマネジャ定義ソースファイル

MCF通信構成定義の共通定義ソースファイル

MCF通信構成定義のSLU - TypeP2のプロトコル固有定義ソースファイル

MCFアプリケーション定義ソースファイル

MCF定義オブジェクト生成ユティリティを使用して，定義ソースファイルから，次に示すオブジェクトファイルを作成します。

MCFマネジャ定義オブジェクトファイル

MCF通信構成定義の共通定義オブジェクトファイル

MCF通信構成定義のSLU - TypeP2のプロトコル固有定義オブジェクトファイル

MCFアプリケーション定義オブジェクトファイル

MCF定義結合ユティリティを使用して，MCF通信構成定義の共通定義とプロトコル固有定義のオブジェクトファイルを結合します。

定義オブジェクトファイルの作成方法の概要を次の図に示します。

図7-4　定義オブジェクトファイルの作成方法の概要

注※1

次に示すコマンドで生成します。

mcfXXXX△-i△〔パス名〕入力ファイル名
      △-o△〔パス名〕出力オブジェクトファイル名

mcfXXXXは，ソースファイルごとに異なります。

mcfmngr：MCFマネジャ定義ソースファイル

mcfcomn：MCF通信構成定義のソースファイル

mcfslup2：MCF通信構成定義のプロトコル（SLU - TypeP2）固有定義ソースファイル

mcfapli：MCFアプリケーション定義ソースファイル

MCF定義オブジェクト生成ユティリティのmcfslup2コマンドについては5章の「MCF定義オブジェクトの生成」を，その他のコマンドについてはマニュアル「OpenTP1 システム定義」を参照してください。

注※2

次に示すコマンドで，MCF通信構成定義の二つのオブジェクトファイルを結合します。

mcflink△-i△共通定義オブジェクトファイル名
      △SLU - TypeP2定義オブジェクトファイル名
      △-o△出力オブジェクトファイル名

注※3

定義オブジェクトファイルは，システム環境定義のDCCONFPATHで指定したディレクトリに格納してください。システム環境定義については，マニュアル「OpenTP1 システム定義」を参照してください。

8.　障害対策

この章では，SLU - TypeP2運用中に発生する障害と，SLU - TypeP2の対応処理，およびメッセージの処理について説明します。

＜この章の構成＞

8.1　障害の種類と対応処理

8.2　コネクション障害

8.3　論理端末障害

8.1　障害の種類と対応処理

運用中に障害が発生すると，SLU - TypeP2はシステムを回復します。このとき，システム定義を指定すると，MCFイベント処理用MHPを起動することもできます。

＜この節の構成＞

8.1.1　SLU - TypeP2運用中の障害と対応処理

8.1.2　論理端末ごとの障害処理

8.1.1　SLU - TypeP2運用中の障害と対応処理

SLU - TypeP2運用中の障害と対応処理について，障害の種類ごとに示します。

また，センスコードの詳細は，「付録C.3　SLU-TypeP2が使用するセンスコード」を参照してください。

＜この項の構成＞

(1)　コネクション障害

(2)　論理端末障害

(3)　その他の障害

(1)　コネクション障害

コネクション障害の発生個所に応じたSLU - TypeP2の障害処理については，「8.2　コネクション障害」を参照してください。

表8-1　コネクション障害発生時の処理

障害の内容
SLU - TypeP2の処理
ユーザの処置

通信管理からのH2_ABORT受信など

該当する論理端末ごとの障害処理をします（「8.1.2　論理端末ごとの障害処理」参照）。

コネクション障害を通知するメッセージログ（KFCA15121-E）を出力します。

端末起動の場合は運用コマンド（mcftactcn）を入力して，再び確立処理をします。ホスト起動の場合はホスト側から確立要求をするようにしてください。

通信管理マクロエラーリターン

該当する論理端末ごとの障害処理をします（「8.1.2　論理端末ごとの障害処理」参照）。

コネクション障害を通知するメッセージログ（KFCA15120-E）を出力します。

セションパラメタ不正のBINDコマンドを受信

-RSPを送信します。センスコードを次に示します。
セションパラメタ不正：08210000

-RSP送信したことを通知するメッセージログ（KFCA15204-E）を出力します。

CERREVT（コネクション障害，下位層障害）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

コネクション確立処理を中断します。

SLU-TypeP2の定義誤りの場合，誤りを訂正し，定義オブジェクトを作り直してOpenTP1を再開始します。

(2)　論理端末障害

論理端末の端末タイプごとに処理が異なります。

(a)　request型

表8-2　request型論理端末の障害発生時の処理

障害の内容
SLU - TypeP2の処理
ユーザの処置

メッセージ送信完了エラー，拒否応答（-RSP）受信

UAPにエラーリターンします。
リターン値DCMCFRTN_73001（同期）を返します。

CERREVT（論理端末障害，送信中断）を起動します。

出力キューを削除します（同期）。

再送準備を要求します（非同期）。

論理端末を閉塞します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

障害要因を取り除いたあと，運用コマンド（mcftactle）を入力して，論理端末を閉塞解除します。

出力キュー読み込み障害，出力メッセージ編集UOCエラーリターン，送信バッファサイズ不足

UAPにエラーリターンします。
リターン値DCMCFRTN_73001（同期）を返します。

CERREVT（論理端末障害）を起動します。

出力キューを削除します（同期）。

再送準備を要求します（非同期）。

論理端末を閉塞します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

内部処理障害を通知するメッセージログ（KFCA15396-E）を出力します。

出力キュー読み込み障害
障害要因を取り除いてください。

出力メッセージ編集UOCエラーリターン
出力メッセージ編集UOC処理を見直してください。

送信バッファサイズ不足
システム定義を修正してください。

送信メッセージ削除失敗
処理を続行します。
ありません。

タイムアウト

UAPにエラーリターンします。
リターン値DCMCFRTN_73005（同期）を返します。

出力キューを削除します（同期）。

論理端末を閉塞します。

コネクションを切断します。

CERREVT（コネクション障害，タイムアウト）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

端末起動の場合は運用コマンド（mcftactcn）を入力して，再び確立処理をします。ホスト起動の場合はホスト側から確立要求をするようにしてください。

不正応答メッセージ受信（ブラケット違反，チェイン違反，RU長不正）

UAPにエラーリターンします。
リターン値DCMCFRTN_73001（同期）を返します。

出力キューを削除します（同期）。

-RSPを送信します。
センスコードを次に示します。
・ブラケット違反：20030000
・チェイン違反：20020000
・RU長不正：10020000

-RSP送信したことを通知するメッセージログ（KFCA15204-E）を出力します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

相手システムへ不正応答メッセージを受信したことを連絡してください。

入力キュー書き込み障害，アプリケーションスケジュール失敗，入力メッセージ編集UOCエラーリターン

CERREVT（論理端末障害，入力キュー障害）を起動します。

論理端末を閉塞します。

-RSPを送信します。
センスコードを次に示します。
・要求不実行：08000000

-RSP送信したことを通知するメッセージログ（KFCA15204-E）を出力します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

内部処理障害を通知するメッセージログ（KFCA15396-E）を出力します。

運用コマンド（mcftactle）を入力して，論理端末を閉塞解除します。

送信仕掛り中のmcftdctle入力

コマンドをエラーリターンします。

論理端末の使用中を通知するメッセージログ（KFCA15338-E）を出力します。

ありません。

応答ダミーデータ受信

UAPにエラーリターンします。
リターン値DCMCFRTN_73005を返します。

ありません。

メッセージコンテンション
（ブラケット開始拒否）

-RSPを送信します。
センスコードを次に示します。
・ブラケット開始拒否：08130000，08140000

-RSP送信したことを通知するメッセージログ（KFCA15204-E）を出力します。

ありません。

(b)　send型

表8-3　send型論理端末の障害発生時の処理

障害の内容
SLU - TypeP2の処理
ユーザの処置

メッセージ送信完了エラー，拒否応答（-RSP）受信

-RSP受信したことを通知するメッセージログ（KFCA15205-E）を出力します。

CERREVT（論理端末障害，送信中断）を起動します。

再送準備を要求します（非同期）。

論理端末を閉塞します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

障害要因を取り除いたあと，運用コマンド（mcftactle）を入力して，論理端末を閉塞解除します。

出力キュー読み込み障害，出力メッセージ編集UOCエラーリターン，送信バッファサイズ不足

CERREVT（論理端末障害）を起動します。

論理端末を閉塞します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

内部処理障害を通知するメッセージログ（KFCA15396-E）を出力します。

再送準備を要求します。

出力キュー読み込み障害
障害要因を取り除いてください。

出力メッセージ編集UOCエラーリターン
出力メッセージ編集UOC処理を見直してください。

送信バッファサイズ不足
システム定義を修正してください。

送信メッセージ削除失敗
処理を続行します。
ありません。

送信仕掛り中のmcftdctle入力

コマンドをエラーリターンします。

論理端末の使用中を通知するメッセージログ（KFCA15338-E）を出力します。

ありません。

メッセージコンテンション
（ブラケット開始拒否）

-RSPを送信します。
センスコードを次に示します。
・ブラケット開始拒否：08130000，08140000

-RSP送信したことを通知するメッセージログ（KFCA15204-E）を出力します。

ありません。

(c)　receive型

表8-4　receive型論理端末の障害発生時の処理

障害の内容
SLU - TypeP2の処理
ユーザの処置

入力キュー書き込み障害，アプリケーションスケジュール失敗，入力メッセージ編集UOCエラーリターン

CERREVT（論理端末障害）を起動します。

-RSPを送信します。
センスコードを次に示します。
・要求不実行：08000000

-RSP受信したことを通知するメッセージログ（KFCA15205-E）を出力します。

論理端末を閉塞します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

内部処理障害を通知するメッセージログ（KFCA15396-E）を出力します。

再送準備を要求します。

障害要因を取り除いたあと，運用コマンド（mcftactle）を入力して，論理端末を閉塞解除します。

(3)　その他の障害

表8-5　論理端末の型に共通する，その他の障害発生時の処理

障害の種類
SLU - TypeP2の処理
ユーザの処置

受信メッセージと論理端末の端末タイプの不一致※¹

受信メッセージを破棄します。

-RSPを送信します。
センスコードを次に示します。
・要求不実行：08000000

-RSP受信したことを通知するメッセージログ（KFCA15205-E）を出力します。

CERREVT（論理端末障害）を起動します。

論理端末を閉塞します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

ホスト側との構成を見直してください。

送信メッセージと論理端末の端末タイプの不一致※²
UAPにエラーリターンします。
UAPで後処理をする必要があります。

送信メッセージ消去失敗
処理を続行します。
ありません。

送信バッファ面数不足

メモリダンプを出力します。

コネクションを切断します。

CERREVT（コネクション障害）を起動します。

コネクション強制解放を通知するメッセージログ（KFCA15398-E）を出力します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

バッファ面数を増やしてOpenTP1を再開始します。

受信バッファ面数不足

メモリダンプを出力します。

コネクションを切断します。

CERREVT（コネクション障害）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

バッファ面数を増やしてOpenTP1を再開始します。

同期送受信
（sendrecv）中にUAP終了

論理端末障害を通知する通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞するメッセージログ（KFCA15396-E）または処理を続行するメッセージログ（KFCA15397-E）を出力します。

メモリダンプを取得します。
（論理端末を閉塞する場合）

CERREVT（論理端末障害）を起動します。

論理端末を閉塞します。

UAPを見直し，障害要因を取り除いたあと，論理端末が閉塞されている場合は，運用コマンド（mcftactle）を入力して，論理端末を閉塞解除します。

内部矛盾

メモリダンプを出力します。

内部処理実行中異常を通知するメッセージログ（KFCA15399-E）を出力します。

プロセスを異常終了します。

OpenTP1を再開始します。

注※1

例えば，send型の論理端末にメッセージ受信した場合に発生します。

注※2

例えば，次の場合に発生します。

receive型の論理端末に対して送信要求（send，sendrecv）を実行した場合

send型の論理端末に対して同期送受信関数（sendrecv）を実行した場合

8.1.2　論理端末ごとの障害処理

SLU - TypeP2運用中の障害と対応処理について，論理端末ごとに示します。

＜この項の構成＞

(1)　request型

(2)　send型

(3)　recieve型

(1)　request型

表8-6　request型論理端末の障害処理

障害の内容
SLU - TypeP2の処理

下位切断
非同期送信仕掛り中

再送準備を要求します。

CERREVT（論理端末障害，下位層障害）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，下位層障害）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

同期送受信仕掛り中

同期送受信タイマを解除します。

UAPをエラーリターンします。
リターン値DCMCFRTN_73001（同期）を返します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，下位層障害）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

上記以外の場合

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，下位層障害）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

mcftdctcn -f入力による強制解放
非同期送信仕掛り中

再送準備を要求します。

CERREVT（論理端末障害，強制解放）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，強制解放）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

同期送受信仕掛り中

同期送受信タイマを解除します。

UAPをエラーリターンします。
リターン値DCMCFRTN_73001（同期）を返します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，強制解放）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302 -E）を出力します。

コネクションを切断します。

上記以外の場合

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，強制解放）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

LU-LUセション
解放
非同期送信仕掛り中

再送準備を要求します。

CERREVT（論理端末障害，送信中断）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，送信中断）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

同期送受信仕掛り中

同期送受信タイマを解除します。

UAPをエラーリターンします。
リターン値DCMCFRTN_73001（同期）を返します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，送信中断）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

(2)　send型

表8-7　send型論理端末の障害処理

障害の内容
SLU - TypeP2の処理

下位切断
非同期送信仕掛り中

再送準備を要求します。

CERREVT（論理端末障害，下位層障害）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，下位層障害）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

上記以外の場合

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，下位層障害）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

mcftdctcn -f
入力による
強制解放
非同期送信仕掛り中

再送準備を要求します。

CERREVT（論理端末障害，強制解放）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，強制解放）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

上記以外の場合

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，強制解放）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

LU-LUセション解放
非同期送信仕掛り中

再送準備を要求します。

CERREVT（論理端末障害，送信中断）を起動します。

論理端末障害を通知するメッセージログ（KFCA15303-E）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，送信中断）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

(3)　recieve型

表8-8　receive型論理端末の障害処理

障害の内容
SLU - TypeP2の処理

下位切断

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，下位層障害）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

mcftdctcn -f入力による強制解放

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA15312-I）を出力します。

CERREVT（コネクション障害，強制解放）を起動します。

コネクション障害を通知するメッセージログ（KFCA15302-E）を出力します。

コネクションを切断します。

8.2　コネクション障害

コネクションが切断された場合，端末起動型のシステムでは，運用コマンド（mcftactcn）を入力してコネクションを再確立します。ホスト起動型のシステムでは，自動的に相手システムからのコネクション確立を待ちます。自システムで管理している通信機器に障害が発生した場合も，同様にコネクション障害として処理します。

メッセージ送受信時にコネクション障害が発生した場合，メッセージは破棄されます。

コネクションの処理中に，障害の発生する個所の区分を次の図に示します。また，障害発生個所によるSLU - TypeP2の障害処理について表8-9に示します。

図8-1　コネクション障害

表8-9　コネクション障害の処理

障害発生個所
内容
メッセージログの出力内容
SLU - TypeP2の処理

1.
コネクション確立時のリトライオーバ（下位層の障害，またはタイムアウトによるリトライ）
コネクション障害

CERREVTを起動します。

コネクションを解放します。
解放後は運用コマンド（mcftactcn）で再確立できます。

2.
入力キュー書き込みエラー（COPNEVT）
メッセージ入力障害

メッセージを破棄します。

3.
コネクション確立後のコネクション障害
コネクション障害

CERREVTを起動します。

コネクションを閉塞します。
閉塞後は運用コマンド（mcftactcn）で再確立できます。

4.
コネクション解放中のコネクション障害
コネクション障害

CERREVTを起動します。

コネクションを閉塞します。
閉塞後は運用コマンド（mcftactcn）で再確立できます。

5.
入力キュー書き込みエラー（CCLSEVT）
メッセージ入力障害

メッセージを破棄します。

8.3　論理端末障害

論理端末障害が発生したときの処理は，コネクション障害の場合の処理と同じです。処理の詳細については，「8.1　障害の種類と対応処理」および「8.2　コネクション障害」を参照してください。

付録

＜この付録の構成＞

付録A　メッセージ送受信の処理の流れ

付録B　障害発生時の処理の流れ

付録C　理由コードおよびセンスコード一覧

付録D　用語解説

付録A　メッセージ送受信の処理の流れ

メッセージを送受信するときの処理の流れを図A-1～図A-6に示します。

図A-1　一方送信メッセージ（send型／単独セグメントの場合）

図A-2　一方送信メッセージ（send型／複数セグメントの場合）

図A-3　一方送信メッセージ（receive型／単独セグメントの場合）

図A-4　一方送信メッセージ（receive型／複数セグメントの場合）

図A-5　問い合わせメッセージ（request型／単独セグメントの場合）

図A-6　問い合わせメッセージ（request型／複数セグメントの場合）

付録B　障害発生時の処理の流れ

障害発生時の処理の流れを図B-1～図B-5に示します。

図B-1　コネクション確立失敗

図B-2　コネクション強制解放

図B-3　コネクション強制解放（send実行中）

図B-4　コネクション強制解放（sendrecv実行中）

図B-5　タイムアウト

付録C　理由コードおよびセンスコード一覧

＜この節の構成＞

付録C.1　ERREVT2の理由コード

付録C.2　CERREVTの理由コード

付録C.3　SLU - TypeP2が使用するセンスコード

付録C.1　ERREVT2の理由コード

ERREVT2通知時の理由コードを次の表に示します。

表C-1　ERREVT2の理由コード

C言語の理由コード
（16進数字）
COBOL言語の理由コード
（外部10進数字）
ERREVT2の通知理由

DCMCF_NO_SERV
（0010）
0010
アプリケーション名に相当するMHPのサービスがありません。

DCMCF_SCD_ERR
（0020）
0020
RPC障害，サーバ未起動などによって，MHPまたはSPPの起動に失敗しました。

DCMCF_QUE_BUF_ERR
（0030）
0030
メモリ不足のため，入力キューへの書き込みに失敗しました。

DCMCF_QUE_FIL_OVER
（0031）
0031
キューファイルが満杯のため，入力キューへの書き込みに失敗しました。

DCMCF_QUE_LIMIT_OVER
（0032）
0032
入力メッセージ最大格納数の定義指定値を超えたため，入力キューに書き込みませんでした。

DCMCF_QUE_IO_ERR
（0033）
0033
入力キューへの書き込み時に障害が発生しました。

DCMCF_AP_CLOSE
（0040）
0040
MHPのアプリケーションが閉塞中です。

DCMCF_AP_SECURE
（0041）
0041
MHPのアプリケーションがセキュア状態です。

DCMCF_SERV_CLOSE
（0042）
0042
MHPのサービスまたはサービスグループが閉塞中です。

DCMCF_SERV_SECURE
（0043）
0043
MHPのサービスグループがセキュア状態です。

DCMCF_ABNORMAL_END
（0050）
0050
MHPのセグメント受信関数にセグメントを渡す前に，MHPの異常が発生しました。

付録C.2　CERREVTの理由コード

CERREVT通知時の理由コードを次の表に示します。

表C-2　CERREVTの理由コード

理由コード1
（10進数字）
理由コード2
（10進数字）
発生条件
障害レベル

DCMSLM_RSN1_MCF
（MCF障害）
（1）
DCMSLM_RSN2_ITQ
（0）
メッセージ入力障害
コネクション

DCMSLM_RSN2_APL
（1）
アプリケーション名取得障害
コネクション

DCMSLM_RSN2_OTGET
（2）
メッセージ出力障害
コネクション

DCMSLM_RSN2_SLCMP
（3）
メッセージ送信処理障害
コネクションまたは論理端末※

DCMSLM_RSN2_UAPAB
（5）
UAP異常による強制解放
コネクション

DCMSLM_RSN2_SYCER
（6）
UAPへの同期リターン失敗
コネクション

DCMSLM_RSN2_ENDER
（7）
終了処理中のメッセージ拒否
コネクション

DCMSLM_RSN2_DCTLE
（8）
mcftdctleによる論理端末閉塞
論理端末

DCMSLM_RSN2_LETYPE
（9）
論理端末の型不正
論理端末

DCMSLM_RSN2_ERRIND
（11）
エラーデータ受信
論理端末

DCMSLM_RSN2_DCTCN_F
（536870912）
mcftdctcn -fによる強制解放
コネクション

DCMSLM_RSN2_ENDTO
（536870913）
強制解放（応答メッセージ受信監視時間超過）
コネクション

DCMSLM_RSN2_NOBUF
（536870914）
バッファ取得失敗による強制解放
コネクション

DCMSLM_RSN2_ERROR
（-1）
MCF内部矛盾による強制解放
コネクション

その他
上記以外の障害（理由コード2は保守情報）
コネクション

DCMSLM_RSN1_ABORT
（プロトコル障害）
（6）
DCMSLM_RSN2_XNF
（16）
下位層障害
コネクション

DCMSLM_RSN2_SLM
（17）
メッセージ制御プロトコル障害
コネクション

DCMSLM_RSN1_UOC
（UOC検出障害）
（3）
UOCからの詳細リターンコード
ユーザ（UOC）検出障害
コネクション

DCMSLM_RSN1_ACTER
（コネクション障害）
（5）
不定
コネクションの確立失敗
コネクション

その他
不定
上記以外の障害（理由コード1，2は保守情報）
不定

注※

コネクションに発生するのは，送信完了エラーおよび-RSP受信時の場合です。そのほかの発生条件の場合は，論理端末に発生します。

付録C.3　SLU - TypeP2が使用するセンスコード

SLU - TypeP2が使用するセンスコード（KFCA15204-E（-RSP送信時ログ）出力時のセンスコード）を次の表に示します。

表C-3　SLU - TypeP2が使用するセンスコード

センスコード
意味
発生条件

0x08000000
要求不実行
入力キュー書き込み障害の発生

メッセージ受信に対するアプリケーションスケジュール失敗

入力メッセージ編集UOCエラーリターン

0x08090000
モード不一致
RQD指定のメッセージ受信後，レスポンス送信前にデータ受信

レスポンス受信待ちで応答（EB）メッセージ受信

チェイン受信途中ではないのにCANCEL受信

0x08130000
ブラケット開始拒否（RTR送信なし）
RTRのレスポンス受信前に一方（BB，EB）メッセージ受信

ホストに送信権委譲後にBID受信

0x08140000
ブラケット開始拒否（RTR送信あり）
メッセージ送信に対するレスポンス待ちのときに，一方（BB，EB）メッセージまたはBID受信

0x08210000
セションパラメタ不正
BIND受信時にセションパラメタ不正検出

0x10020000
RU長不正
受信したメッセージのレングスが，セションパラメタで指定された最大RU長を超過

0x10030000
機能未サポート
次に示す未サポートコマンドを受信

LUSTAT

CHASE

QEC

RELQ

SIGNAL

SBI

BIS

0x20010000
シーケンス不正
NSPEをBIND受信待ち以外で受信

BINDをBIND受信待ち以外で受信

SHUTDの二重受信

0x20020000
チェイン状態違反
FICの二重受信

FIC，OICと受信

FIC受信に対して，-RSP（2002または2003）送信後，MICまたはLIC受信

0x20030000
ブラケット違反
一方（BB，EB）MIC，LIC受信待ちのときに応答（EB）メッセージ受信

応答（EB）メッセージ受信待ちのときに一方（BB，EB）メッセージ受信

ホストからBB有りEB無しのメッセージ受信

ホストからBB，EB無しのメッセージ受信

付録D　用語解説

（英字）

AJ（メッセージ送信完了ジャーナル）

SLU - TypeP2で取得する履歴情報の一つです。メッセージの送信完了情報である送信通番と送信先論理端末名称とで構成されます。

AJの取得タイミングは，相手システムにメッセージを送信し，その送信完了を受信した直後です。

GJ（メッセージ受信ジャーナル）

SLU - TypeP2で取得する履歴情報の一つです。メッセージの受信情報である，メッセージ長，論理端末名称などの情報です。

GJの取得タイミングは，receiveを発行して，入力キューから取り出したメッセージをUAPに渡した直後です。

IJ（メッセージ入力ジャーナル）

入力キューに入力された情報です。論理端末名称と入力メッセージの情報で構成されます。

IJの取得タイミングは，相手システムから受信したメッセージを入力キューに入力する直前です。

MJ（メッセージジャーナル）

SLU - TypeP2で取得する履歴情報の一つです。端末名称，メッセージ種別，入力メッセージ編集前のデータ，および出力メッセージ編集後のデータの情報です。

MJの取得タイミングは，メッセージ送信前，入力メッセージ編集UOC処理前，および出力メッセージ編集UOC処理後です。

OJ（メッセージ出力ジャーナル）

出力キューに入力された情報です。論理端末名称，出力メッセージ，セグメント種別などで構成されます。

OJの取得タイミングは，UAPから送信要求を受け付けた時です。

SLUTYPE-Pプロトコル

ホストシステムとインテリジェント端末（OpenTP1システムの論理端末など）とを接続するためのプロトコルです。米国IBM社が開発したネットワークアーキテクチャであるSNAに準拠しています。

SNA

米国IBM社が開発したネットワークアーキテクチャの名称です。SLU - TypeP2は，このアーキテクチャに従ったプロトコルを実装しています。

（カ行）

コネクション

SLU - TypeP2がAP間通信をするときに，自システムと相手システムの間に確立する論理的通信路です。

（サ行）

セション

SLUTYPE-Pプロトコルでの論理的通信路です。SLU - TypeP2ではコネクションと呼びます。

（ラ行）

論理端末

SLU - TypeP2とUAPとの通信接点です。SLU - TypeP2とUAPは，論理端末単位にメッセージを送受信します。

索引

[記号]
[Ａ][Ｃ][Ｄ][Ｅ][Ｇ][Ｉ][Ｌ][Ｍ][Ｏ][Ｐ][Ｒ][Ｓ][Ｔ][Ｕ]
[ア行][カ行][サ行][タ行][ナ行][ハ行][マ行][ヤ行][ラ行]

(記号)

-kオプションの指定内容とSLU - TypeP2の動作

(英字)

(Ａ)

AJ

AP間通信

AP間通信で使用するプロトコル

AP間通信の例

AP間通信メッセージの送受信

(Ｃ)

CBLDCMCF('RECEIVE ')

CBLDCMCF('RECVSYNC')

CBLDCMCF('RESEND ')

CBLDCMCF('SEND ')

CBLDCMCF('SENDRECV')

CCLSEVT

CCLSEVT

CCLSEVT

CERREVT

CERREVT

CERREVT

CERREVTの理由コード

COBOL言語のUAPに通知されるMCFイベント情報の内容

COBOL言語のメッセージ送受信

COPNEVT

COPNEVT

COPNEVT

C言語のメッセージ送受信

(Ｄ)

dc_mcf_receive

dc_mcf_recvsync

dc_mcf_resend

dc_mcf_send

dc_mcf_sendrecv

dcmcf_uoc_min_n

dcmcf_uoc_mout_n

dcmcf_uocbuff_list_n

dcmcf_uocbufinf_n

(Ｅ)

ERREVT1

ERREVT1

ERREVT1

ERREVT2

ERREVT2

ERREVT2

ERREVT2の理由コード

ERREVT3

ERREVT3

ERREVT3

ERREVT4

ERREVTA

ERREVTA

ERREVTA

(Ｇ)

GJ

(Ｉ)

IJ

IMS IBMホストシステム

(Ｌ)

LOGONモード名称

(Ｍ)

max_open_fds

max_socket_descriptors

MCF

mcfmuap

mcftactcn

mcftactle

mcftalccn

mcftalced

mcftalcle

mcftbuf

mcftbuf

mcftbuf

mcftbuf

mcftbuf

mcftdctcn

mcftdctle

mcftlscn

mcftlsle

MCFアプリケーション定義

MCFイベント

MCFイベントインタフェース

MCFイベント情報の形式（COBOL言語）

MCFイベント情報の形式（C言語）

MCFイベント処理用MHP

MCFイベント通知時のセグメント構成

MCFイベント通知時のセグメント構成

MCFイベントの共通ヘッダ

MCFイベントの種類

MCFサービス名の登録

MCF通信構成定義

MCF通信プロセスでアクセスするファイルの最大数

MCF定義オブジェクトの生成

MCFマネジャ定義

MCFメイン関数の作成

MJ

(Ｏ)

OJ

(Ｐ)

PLU名称

(Ｒ)

RECEIVE

(Ｓ)

SEND

SLU - TypeP2が使用するセンスコード

SLU - TypeP2の運用コマンド

SLU - TypeP2のシステム構成例

SLU - TypeP2の定義の概要

SLU - TypeP2のプロトコル固有定義コマンドの指定順序

SLU - TypeP2を組み込んだソフトウェア構成の例

SLUTYPE-Pプロトコル

SNA

(Ｔ)

TP1/Message Control

(Ｕ)

UAP異常終了通知イベント

UAP共通定義

UOC作成上の注意事項

UOCで使用できる関数

UOCの異常処理

UOC の構造

UOCの実行タイミング

(ア行)

(あ)

アプリケーションの型

アプリケーション名

アプリケーション名決定の流れ

アプリケーション名の決定

アプリケーション名の決定

(い)

一方受信

一方送信メッセージの受信（COBOL言語）

一方送信メッセージの受信（C言語）

一方送信メッセージの送信（COBOL言語）

一方送信メッセージの送信（C言語）

一方送信メッセージの送信と受信

(う)

運用コマンド

(お)

応答識別

応答メッセージの受信

(カ行)

(き)

起動種別

キューグループID

(く)

組み込み方法

(こ)

コネクション

コネクション

コネクションID

コネクション解放後の回復動作

コネクション確立再試行回数

コネクション確立再試行間隔

コネクション確立失敗

コネクション確立時の再試行

コネクション確立時のチェック項目

コネクション強制解放

コネクション強制解放（sendrecv実行中）

コネクション強制解放（send実行中）

コネクション障害

コネクション障害

コネクション障害の処理

コネクション定義の開始

コネクション定義の終了

コネクションと論理端末の関係

コネクションの解放

コネクションの確立

コネクションの確立

コネクションの強制解放

コネクションの状態表示

コネクションの正常解放

(サ行)

(し)

時間取得関数

自局ノード名称

システムサービス共通情報定義

システムサービス情報定義

システム定義

受信型論理端末

受信最大RU長

出力メッセージの編集

出力メッセージの割り当て先

出力メッセージ編集UOCインタフェース

障害対策

障害通知イベント

障害の種類と対応処理

障害発生時の処理の流れ

状態通知イベント

(せ)

セグメント

セグメントと論理メッセージの関係

セション

セション

(そ)

送信型論理端末

送信最大RU長

送信メッセージの通番編集

送信メッセージの通番編集UOCインタフェース

ソケット用ファイル記述子の最大数

(タ行)

(た)

タイマ起動メッセージ廃棄通知イベント

タイムアウト

端末タイプ

(つ)

通信相手プログラム

通信管理プログラムと関連づける内容

通信形態

(て)

定義オブジェクトファイルの生成

定義の指定順序

定義例

ディスク出力メッセージ最大格納数

データ操作言語（COBOL言語）のメッセージ送受信

(と)

問い合わせ型論理端末

問い合わせメッセージの送信

同期型の応答メッセージの受信（COBOL言語）

同期型の応答メッセージの受信（C言語）

同期型の問い合わせメッセージの送受信（COBOL言語）

同期型の問い合わせメッセージの送受信（C言語）

同期受信

同期送受信

同期送受信監視時間

(ナ行)

(に)

入力メッセージの編集

入力メッセージの編集とアプリケーション名の決定

入力メッセージ編集UOC

入力メッセージ編集UOC

入力メッセージ編集UOCインタフェース

(ね)

ネットワーク構成の例

(ハ行)

(は)

バッファ形式1

バッファ形式2

パラメタのチェック内容

(ふ)

不正アプリケーション名検出通知イベント

分岐送信

(へ)

ヘッダ領域

(ほ)

ホストノード名称

(マ行)

(み)

未処理送信メッセージ廃棄通知イベント

(め)

メッセージジャーナル

メッセージ受信ジャーナル

メッセージ受信用バッファグループ番号

メッセージ出力ジャーナル

メッセージ制御機能

メッセージ送受信インタフェース

メッセージ送受信インタフェースの一覧

メッセージ送受信の処理の流れ

メッセージ送信完了ジャーナル

メッセージ送信用バッファグループ番号

メッセージ入力ジャーナル

メッセージの再送（COBOL言語）

メッセージの再送（C言語）

メッセージの受信（データ操作言語）

メッセージの送信（データ操作言語）

メッセージの分割と組み立て

メッセージ廃棄通知イベント

メッセージ編集用バッファグループ番号

メッセージ編集用バッファ数

メモリ出力メッセージ最大格納数

メモリ操作をする関数

(ヤ行)

(ゆ)

ユーザアプリケーションプログラム作成例

ユーザオウンコーディングインタフェース

ユーザセグメントの操作方法

(よ)

用語解説

(ラ行)

(り)

理由コードおよびセンスコード一覧

(ろ)

論理端末

論理端末障害

論理端末障害

論理端末定義

論理端末とアプリケーションの型の関係

論理端末の状態表示

論理端末の端末タイプ

論理端末の端末タイプとメッセージ，アプリケーションの型，UAPインタフェース，および通信形態の関係

論理端末の閉塞

論理端末の閉塞解除

論理端末名称

論理的通信路

論理メッセージ

■ 商標類

AIXは，米国における米国International Business Machines Corp.の登録商標です。
IMSは，米国における米国International Business Machines Corp.の商標です。
SNAは，米国International Business Machines Corp.のプロトコル名称です。
UNIXは，X/Open Company Limitedが独占的にライセンスしている米国ならびに他の国における登録商標です。