OpenTP1 Version 7

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

OpenTP1 プロトコル TP1/NET/OSAS-NIF編

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

3000-3-D79

目　　次

前書き

はじめに

1.　概要

1.1　システム間通信の概要

1.2　システム間通信の形態

1.2.1　問い合わせ応答形態

1.2.2　同期型問い合わせ応答形態

1.2.3　分岐送信形態

1.2.4　一方受信形態

1.3　ソフトウェアの構成

1.3.1　前提プログラム

1.3.2　ソフトウェア構成の例

2.　機能

2.1　システム間通信の機能

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

2.1.2　論理端末とアプリケーション

2.1.3　セグメントの分割と組み立て

2.1.4　コネクションの確立

2.1.5　コネクションの解放

2.1.6　論理端末の閉塞と閉塞解除

2.2　システム間通信メッセージの送受信

2.2.1　問い合わせメッセージの送信

2.2.2　同期型の問い合わせメッセージの送信

2.2.3　応答メッセージの送信

2.2.4　一方送信メッセージの送信

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

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

2.4　フロー制御

2.5　再送機能

2.5.1　メッセージ再送機能

2.5.2　NIF通番

2.6　タイマ監視

2.6.1　相手システムとのメッセージ送受信に関するタイマ監視

2.6.2　UAPとのメッセージ送受信に関するタイマ監視

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

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

3.1.1　dc_mcf_execap － アプリケーションプログラムの起動

3.1.2　dc_mcf_receive － メッセージの受信

3.1.3　dc_mcf_recvsync － 同期型メッセージの後続セグメント受信

3.1.4　dc_mcf_reply － 応答メッセージの送信

3.1.5　dc_mcf_resend － メッセージの再送

3.1.6　dc_mcf_send － メッセージの送信

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

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

3.2.1　CBLDCMCF('EXECAP ') － アプリケーションプログラムの起動

3.2.2　CBLDCMCF('RECEIVE ') － メッセージの受信

3.2.3　CBLDCMCF('RECVSYNC') － 同期型メッセージの後続セグメント受信

3.2.4　CBLDCMCF('REPLY ') － 応答メッセージの送信

3.2.5　CBLDCMCF('RESEND ') － メッセージの再送

3.2.6　CBLDCMCF('SEND ') － メッセージの送信

3.2.7　CBLDCMCF('SENDRECV') － 同期型メッセージの送受信

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

3.3.1　RECEIVE － メッセージの受信

3.3.2　SEND － アプリケーションプログラムの起動，応答メッセージの送信，メッセージの送信，同期型メッセージの送受信

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

3.4.1　C言語

3.4.2　COBOL言語

3.4.3　データ操作言語

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.　システム定義

5.1　TP1/NET/OSAS-NIFの定義の概要

5.1.1　OpenTP1のネットワークコミュニケーション定義の中での定義

5.1.2　通信定義の内容の関連づけ

5.2　TP1/NET/OSAS-NIF固有のシステム定義の種類

5.2.1　定義の指定順序

5.3　MCFマネジャ定義

5.3.1　mcfmcomn － MCFマネジャ共通定義

5.4　MCF通信構成定義

5.4.1　mcftalccn － コネクション定義の開始

5.4.2　mcftalcle － 論理端末定義

5.4.3　mcftalced － コネクション定義の終了

5.5　MCFアプリケーション定義

5.5.1　mcfaalcap － アプリケーション属性定義

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

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

5.8　定義オブジェクトファイルの生成ユティリティ

5.8.1　MCF定義オブジェクト生成ユティリティの起動

5.8.2　MCF定義オブジェクト解析ユティリティの起動

5.9　メッセージキューサービス定義

5.10　自システムの通信管理プログラム（XNF/AS）と関連づける内容

5.11　相手システムの通信定義と関連づける内容

5.11.1　相手システムの通信管理の定義

5.11.2　相手システムの定義

5.12　アプリケーション起動機能を使用する場合に関連づける内容

5.13　定義例

6.　運用コマンド

6.1　TP1/NET/OSAS-NIFの運用コマンド

6.2　mcftactcn － コネクションの確立

6.3　mcftdctcn － コネクションの解放

6.4　mcftlscn － コネクションの状態表示

6.5　mcftactle － 論理端末の閉塞解除

6.6　mcftdctle － 論理端末の閉塞

6.7　mcftlsle － 論理端末の状態表示

7.　組み込み方法

7.1　TP1/NET/OSAS-NIFの組み込みの流れ

7.2　MCFメイン関数の作成

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

8.　障害対策

8.1　障害の種類と対応処理

8.2　通信形態と障害の処理

8.2.1　問い合わせ応答形態の障害

8.2.2　同期型問い合わせ応答形態の障害

8.2.3　分岐送信形態の障害

8.2.4　一方受信形態の障害

付録

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

付録A.1　問い合わせメッセージの送信

付録A.2　同期型の問い合わせメッセージの送信

付録A.3　応答メッセージの送信

付録A.4　一方送信メッセージの送信

付録A.5　一方送信メッセージの受信

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

付録C　UOCのコーディング例

付録D　理由コード一覧

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

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

付録E　旧製品からの移行に関する注意事項

付録F　バージョンアップ時の変更点

付録F.1　07-00での変更点

付録G　用語解説

索引

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

All Rights Reserved. Copyright (C) 2009, 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-32318　 uCosminexus TP1/NET/OSAS-NIF　 07-00

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

■ 輸出時の注意

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

■ 商標類

AIXは，米国における米国International Business Machines Corp.の登録商標です。

■ 発行

2009年1月（第1版）3000-3-D79

■ 著作権

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

はじめに

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

このマニュアルに記載するプログラムプロダクトは次のとおりです。

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

P-1M64-3131　uCosminexus TP1/Message Control

P-1M64-3231　uCosminexus TP1/NET/Library

P-F1M64-32318　uCosminexus TP1/NET/OSAS-NIF

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

＜はじめにの構成＞

対象読者

マニュアルの構成

関連マニュアル

読書手順

図中で使用する記号

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

文法の記号

このマニュアルでの表記

略語一覧

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

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

謝辞

対象読者

OpenTP1システムの通信にNIF/OSIプロトコルを使用するシステム管理者およびシステム設計者を対象としています。また，オンラインや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章　概要

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

第2章　機能

TP1/NET/OSAS-NIFを使用したシステム間通信の機能，メッセージ送受信の流れおよびTP1/NET/OSAS-NIF固有の機能について説明しています。

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

TP1/NET/OSAS-NIFを使用してメッセージを送受信するUAPの作成方法，および作成例について説明しています。

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

TP1/NET/OSAS-NIFに関連するユーザオウンコーディング（UOC）およびMCFイベントインタフェースについて説明しています。

第5章　システム定義

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

第6章　運用コマンド

TP1/NET/OSAS-NIFで使用する運用コマンドについて説明しています。

第7章　組み込み方法

TP1/NET/OSAS-NIFをOpenTP1システムへ組み込む方法について説明しています。

第8章　障害対策

TP1/NET/OSAS-NIFの障害時の処理とユーザの対策について説明しています。

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

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

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

メッセージの送受信中に，障害が発生した場合の処理の流れについて説明しています。

付録C　UOCのコーディング例

TP1/NET/OSAS-NIFの入力メッセージ編集UOCのコーディング例を示しています。

付録D　理由コード一覧

障害通知イベントが発生した場合の理由コードについて説明しています。

付録E　旧製品からの移行に関する注意事項

バージョン6以前からバージョン7に移行する際の注意事項について説明しています。

付録F　バージョンアップ時の変更点

各バージョンでの関数，定義およびコマンドの変更点について説明しています。

付録G　用語解説

TP1/NET/OSAS-NIFで使用する用語について説明しています。

関連マニュアル

読書手順

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

図中で使用する記号

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

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

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

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

文法の記号

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

（1）　文法記述記号

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

文法記述記号
意味

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

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

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

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

（例）-t reply|request

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

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

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

（例）｛DCMCFESI｜DCMCFEMI｝

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

｛｛　｝｝
この記号で囲まれた複数の項目が一つの繰り返し項目の単位であり，繰り返し指定できることを示します。

（例）{{mcftalccn

mcftalcle

mcftalced}}

mcftalccn，mcftalcleおよびmcftalcedを一組として，繰り返し指定できることを示します。

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

（例）-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に依存）

このマニュアルでの表記

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

製品名称 | 略称
AIX 5L V5.1 | AIX
AIX 5L V5.2
AIX 5L V5.3
uCosminexus TP1/Message Control | TP1/Message Control
uCosminexus TP1/Message Control/Tester | TP1/Message Control/Tester
uCosminexus TP1/NET/Library | TP1/NET/Library
uCosminexus TP1/NET/OSAS-NIF | TP1/NET/OSAS-NIF
uCosminexus TP1/Server Base | TP1/Server Base
XNF/AS/ACONARC | XNF/AS | XNF
XNF/AS/BASE
XNF/AS/OSI Extension
XNF/AS/WAN

略語一覧

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

英略語 | 英字での表記
ACSE | Association Control Service Element
AT | Agent
ATM | Agent Manager
CCP | Communication Control Processor
ECS/VTAM | Extended Communication Support/Virtual Telecommunication Access Method
HNA | Hitachi Network Architecture
LE | Logical Entity
MCF | Message Control Facility
MHP | Message Handling Program
NIF/OSI | Network Interface Feature/Open Systems Interconnection
OS | Operating System
RPC | Remote Procedure Call
SPP | Service Providing Program
TMS-4V/SP | Transaction Management System-4V/System Product
UAP | User Application Program

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

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

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

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.　概要

TP1/NET/OSAS-NIFは，OpenTP1システムでNIF/OSIプロトコルを使用してシステム間通信をするためのプログラムです。この章では，TP1/NET/OSAS-NIFの概要について説明します。

＜この章の構成＞

1.1　システム間通信の概要

1.2　システム間通信の形態

1.3　ソフトウェアの構成

1.1　システム間通信の概要

複数のシステムを接続して，それぞれのシステムのユーザアプリケーションプログラム間でメッセージの送受信をすることをシステム間通信といいます。

メッセージの送受信には，システム間で通信する場合とシステム内で通信する場合があります。システム間の通信は，異なるシステムにあるアプリケーションプログラムとのメッセージの送受信をいいます。また，システム内の通信は，同じシステム内にあるアプリケーションプログラムとのメッセージの送受信をいいます。システム間とシステム内の通信の違いを次の図に示します。

図1-1　システム間の通信とシステム内の通信

TP1/NET/OSAS-NIFは，OpenTP1システムと異なるシステムとの通信をするプログラムです。TP1/NET/OSAS-NIFを使用すると，自システム内でのアプリケーション起動と同様の手順で，異なるシステムとメッセージの送受信ができます。

TP1/NET/OSAS-NIFには，メッセージの再送機能およびフロー制御機能があり，システム間通信の信頼性を高めています。

TP1/NET/OSAS-NIFは，OpenTP1システムに組み込んで使用します。TP1/NET/OSAS-NIFは，拡張HNAの上で動作し，NIF/OSIプロトコルを使用してシステム間通信をします。

NIF/OSIプロトコルは，OSI上位層（5層，6層および7層の一部）の共通基盤であるOSASを使用して，システム間通信を提供するプロトコルです。

TP1/NET/OSAS-NIFのネットワーク構成例を図1-2に，TP1/NET/OSAS-NIFのOSI7層構造の中での機能範囲を図1-3に示します。

図1-2　TP1/NET/OSAS-NIFのネットワーク構成例

図1-3　TP1/NET/OSAS-NIFのOSI7層構造の中での機能範囲

1.2　システム間通信の形態

システム間通信を使用すると，自システムで発生したメッセージを相手システムで処理したり，相手システムで発生したメッセージを，自システムで処理したりできます。

TP1/NET/OSAS-NIFで行うシステム間通信の形態は，問い合わせ応答形態，同期型問い合わせ応答形態，分岐送信形態および一方受信形態です。それぞれの通信形態の説明をします。

＜この節の構成＞

1.2.1　問い合わせ応答形態

1.2.2　同期型問い合わせ応答形態

1.2.3　分岐送信形態

1.2.4　一方受信形態

1.2.1　問い合わせ応答形態

問い合わせ応答形態は，自システムで発生したメッセージを，相手システムへ送信し，その処理結果を受信する形態です。

自システムから相手システムへ送信するメッセージを，問い合わせメッセージといいます。相手システムから受信する処理結果を応答メッセージといいます。

問い合わせ応答形態のシステム間通信の例を次の図に示します。

図1-4　問い合わせ応答形態のシステム間通信の例

図1-4に示す通信形態のうち，TP1/NET/OSAS-NIFの通信形態システムを次の表に示します。

表1-1　TP1/NET/OSAS-NIFの通信形態システム

通信形態 | 図1-4の通信形態システム
問い合わせ応答形態 | システムA：問い合わせメッセージの送信と応答メッセージの受信
システムB：問い合わせメッセージの受信と応答メッセージの送信

1.2.2　同期型問い合わせ応答形態

同期型問い合わせ応答形態は，自システムで発生したメッセージを相手システムへ送信し，その処理結果のメッセージを受信する形態です。UAPでのメッセージ送受信を，システム間で同期を取りたいときに使用します。

自システムから相手システムへ送信するメッセージを，問い合わせメッセージといいます。相手システムから受信する処理結果のメッセージを応答メッセージといいます。

同期型問い合わせ応答形態のシステム間通信の例を次の図に示します。

図1-5　同期型問い合わせ応答形態のシステム間通信の例

1.2.3　分岐送信形態

分岐送信形態は，自システムで発生したメッセージを，通信相手システムに送信する通信形態です。その場合，相手システムの処理結果の返送は期待しません。

自システムから相手システムに送信するメッセージを，一方送信メッセージといいます。

分岐送信形態のシステム間通信の例を次の図に示します。

図1-6　分岐送信形態のシステム間通信の例

1.2.4　一方受信形態

一方受信形態は，相手システムから送信されたメッセージを受信する通信形態です。相手システムから受信するメッセージは，分岐送信形態の場合と同様に一方送信メッセージといいます。

一方受信形態のシステム間通信の例を次の図に示します。

図1-7　一方受信形態のシステム間通信の例

1.3　ソフトウェアの構成

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

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

＜この節の構成＞

1.3.1　前提プログラム

1.3.2　ソフトウェア構成の例

1.3.1　前提プログラム

TP1/NET/OSAS-NIFを使用したMCFを実現するための前提プログラムは次のとおりです。

適用OS：AIX

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

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

P-F1M14-5111　XNF/AS/WAN※1，※2

P-F1M14-5112　XNF/AS/ACONARC※1，※2

P-F1M14-511D　XNF/AS/OSI Extension※1，※2

注※1

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

注※2

XNF/AS/WAN，XNF/AS/ACONARC，XNF/AS/OSI Extensionのどれか一つが必要です。

1.3.2　ソフトウェア構成の例

TP1/NET/OSAS-NIFを組み込んだソフトウェア構成の例を次の図に示します。

図1-8　TP1/NET/OSAS-NIFを組み込んだソフトウェア構成

注※

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

また，TP1/NET/OSAS-NIFがAP間通信で使用するプロトコル，および主な通信相手プログラムを次の表に示します。

表1-2　TP1/NET/OSAS-NIFに適用するAP間通信のプロトコル

プロトコル | 主な通信相手
NIF/OSIプロトコル | XDM/DCCM3システムの「VOS3 OSAS/UA2/DCCM3」※
TMS-4V/SPシステムの「VOS3 OSAS/NF/4VSP」

注※

「VOS3 OSAS/UA2/DCCM3」との通信では，問い合わせ応答形態および同期型問い合わせ応答形態は使用できません。

2.　機能

TP1/NET/OSAS-NIFはシステム間通信機能を提供し，メッセージの送受信をします。この章では，コネクションの確立や論理端末の端末タイプなどのシステム間通信の機能，システム間通信のメッセージの送受信およびTP1/NET/OSAS-NIF固有の機能について説明します。

＜この章の構成＞

2.1　システム間通信の機能

2.2　システム間通信メッセージの送受信

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

2.4　フロー制御

2.5　再送機能

2.6　タイマ監視

2.1　システム間通信の機能

TP1/NET/OSAS-NIFは，NIF/OSIプロトコルを支援している相手システムとシステム間通信をします。システム間通信をするには，論理端末，アプリケーションプログラムなどを関連づけてシステムを作成する必要があります。この節では，論理端末やアプリケーションプログラムを使用したシステム間通信の機能について説明します。

＜この節の構成＞

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

2.1.2　論理端末とアプリケーション

2.1.3　セグメントの分割と組み立て

2.1.4　コネクションの確立

2.1.5　コネクションの解放

2.1.6　論理端末の閉塞と閉塞解除

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

TP1/NET/OSAS-NIFを使用してメッセージの送受信をする場合，ユーザはコネクションと論理端末を対応づけて定義をする必要があります。

コネクションは，システム間でメッセージの送受信をするための論理的な通信路です。コネクションはTP1/NET/OSAS-NIFの通信管理側の通信接点であり，TP1/NET/OSAS-NIFと通信管理はコネクション単位にメッセージの送受信をします。コネクションはNIF/OSIプロトコルのアソシエーションに対応します。

コネクションはMCF通信構成定義（mcftalccn）で指定します。TP1/NET/OSAS-NIFでは，システムに1～512のコネクションを定義できます。

論理端末（LE）は，通信相手システムとのメッセージの送受信のため，コネクションに対して通信を要求します。論理端末はTP1/NET/OSAS-NIFのUAP側の通信接点であり，TP1/NET/OSAS-NIFとUAPは論理端末単位にメッセージの送受信をします。論理端末はNIF/OSIプロトコルのエージェント（AT）に対応します。エージェントには，コネクションの管理，およびエージェントの初期化，管理をするエージェントマネジャ（ATM）があります。

論理端末はMCF通信構成定義（mcftalcle）で指定します。TP1/NET/OSAS-NIFでは，論理端末は一つのコネクションに対し，複数指定できます。論理端末を複数指定した場合，その中の一つを代表論理端末にします。代表論理端末は，コネクションに関するイベントを受信します。

コネクションと論理端末の関係を次の図に示します。

図2-1　コネクションと論理端末の関係

2.1.2　論理端末とアプリケーション

TP1/NET/OSAS-NIFでは，システム間通信をするために，論理端末の端末タイプおよびアプリケーションの型を定義します。

＜この項の構成＞

(1)　論理端末の端末タイプ

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

(3)　システム間通信の形態

(1)　論理端末の端末タイプ

論理端末は，相手システムとのメッセージの送受信をするための通信接点です。TP1/NET/OSAS-NIFでは利用形態によって，次に示す端末タイプがあります。論理端末の端末タイプは，MCF通信構成定義（mcftalcle -t）で指定します。

request型：問い合わせ型論理端末

request型（同期型）：問い合わせ型論理端末（同期型）※

reply型：応答型論理端末

send型：送信型論理端末

receive型：受信型論理端末

注※

MCF通信構成定義（mcftalcle -d）で"sync=yes"を指定した場合

自システムから相手システムへ問い合わせメッセージを送信する場合，request型の論理端末から相手システムのREPLY型のエージェントへ送信します。また，相手システムから応答メッセージを受信する場合は，相手システムのREPLY型のエージェントから送信したメッセージを，自システムのrequest型の論理端末で受信します。

相手システムからの問い合わせメッセージを受信する場合，相手システムのREQUEST型のエージェントからメッセージを送信し，自システムのreply型の論理端末がメッセージを受信します。また，相手システムへ応答メッセージを送信する場合は，自システムのreply型の論理端末から相手システムのREQUEST型のエージェントへ送信します。

自システムから相手システムに一方送信メッセージを送信する場合，send型の論理端末から相手システムのRECEIVE型のエージェントに送信します。また，相手システムからメッセージを送信する場合は，相手システムのSEND型のエージェントからメッセージを送信し，自システムのreceive型の論理端末がメッセージを受信します。

システム間通信と論理端末の端末タイプの関係の例を次の図に示します。

図2-2　システム間通信と論理端末の端末タイプの関係

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

システム間通信をするには，論理端末の端末タイプ，メッセージの種類，アプリケーションの型，UAPインタフェースおよび通信形態を関連づけます。関連づける項目の関係を次の表に示します。

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

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

request型（問い合わせ型）
問い合わせメッセージ
任意
EXECAP
問い合わせ応答形態

SEND

RESEND

応答メッセージ
RECEIVE

request型（同期型）（問い合わせ型（同期型））
問い合わせメッセージ
SENDRECV※1
同期型問い合わせ応答形態

応答メッセージ
RECVSYNC※2

reply型
（応答型）
問い合わせメッセージ
応答型
RECEIVE
問い合わせ応答形態

応答メッセージ
REPLY

send型
（送信型）
一方送信メッセージ
任意
EXECAP
分岐送信形態

SEND

RESEND

receive型（受信型）
非応答型
RECEIVE
一方受信形態

注※1

セグメント送信時と先頭セグメント受信時だけ使用できます。

注※2

後続セグメント受信時だけ使用できます。

(3)　システム間通信の形態

TP1/NET/OSAS-NIFで実現できるシステム間通信の形態を示します。

(a)　問い合わせ応答形態を使用した通信形態

UAPからEXECAP要求を発行して，問い合わせメッセージを送信する場合，EXECAP要求でアプリケーション名を指定します。このとき，アプリケーション名に対応するMCFアプリケーション定義（mcfaalcap -n）のlnameオペランドでrequest型論理端末を指定してください。または，MCFアプリケーション定義（mcfaalcap -n）のcnameオペランドでrequest型論理端末の定義があるコネクションのコネクションIDを指定してください。コネクションIDを指定した場合，TP1/NET/OSAS-NIFは指定されたコネクションからrequest型論理端末を使用します。

該当する論理端末が使用中で応答メッセージ未受信の状態であるとき，EXECAP要求を発行できません。論理端末が応答メッセージを受信して，論理端末の使用状態を解除したあと，EXECAP要求を発行できます。

UAPからSEND要求を発行して，問い合わせメッセージを送信する場合，SEND要求でrequest型論理端末を指定します。

該当する論理端末が使用中で応答メッセージ未受信の状態でも，MCF通信構成定義（mcftalcle -m）で指定した出力メッセージ格納数を上限として，SEND要求を発行できます。

なお，同じコネクションでEXECAP要求とSEND要求を混在して使用しないでください。EXECAP要求で使用中のrequest型論理端末に対して，SEND要求が発行されることがあります。

問い合わせ応答形態を使用したシステム間通信の形態例を次の図に示します。

図2-3　問い合わせ応答形態を使用した通信形態の例

図2-3に示した五つの通信形態例について説明します。

端末からSPPが起動され，EXECAP要求またはSEND要求を発行して，問い合わせメッセージを相手システムへ送信します。その後，相手システムからの応答メッセージを受信して非応答型MHPを起動し，RECEIVE要求を発行して相手システムからのメッセージを受信する通信形態です。

端末から応答型MHPが起動され，SEND要求を発行して，問い合わせメッセージを相手システムへ送信します。その後，相手システムからの応答メッセージを受信して非応答型MHPを起動し，RECEIVE要求を発行して相手システムからのメッセージを受信する通信形態です。
また，端末から起動された応答型MHPは，SEND要求発行後，REPLY要求を発行することによって，応答メッセージを端末へ送信できます。

端末から応答型MHPが起動され，EXECAP要求を発行して，問い合わせメッセージを相手システムへ送信します。その後，相手システムからの応答メッセージを受信して応答型MHPを起動し，RECEIVE要求を発行して相手システムからのメッセージを受信する通信形態です。
request型論理端末に対するEXECAP要求は，発行元のMHPの応答型の属性を引き継ぐため，端末から起動された応答型MHPは，EXECAP要求発行後，REPLY要求を発行できません。入力元の端末に対する応答メッセージの送信は，相手システムからの応答メッセージ受信で起動された応答型MHPからREPLY要求を発行することによって行います。

端末から応答型MHPが起動され，EXECAP要求を発行して，自システム内の応答型MHPを起動します。自システム内で起動されたMHPはEXECAP要求を発行して，問い合わせメッセージを相手システムへ送信します。その後，相手システムからの応答メッセージを受信して応答型MHPを起動し，RECEIVE要求を発行して相手システムからのメッセージを受信する通信形態です。
request型論理端末に対するEXECAP要求は，発行元のMHPの応答型の属性を引き継ぐため，端末から起動された応答型MHPは，EXECAP要求発行後，REPLY要求を発行できません。入力元の端末に対する応答メッセージの送信は，相手システムからの応答メッセージ受信で起動された応答型MHPからREPLY要求を発行することによって行います。

相手システムから問い合わせメッセージを受信することによって，応答型MHPが起動され，RECEIVE要求を発行して相手システムからのメッセージを受信します。その後，REPLY要求を発行して，相手システムへ応答メッセージを送信する通信形態です。

なお，端末からのUAPの起動，自システム内でのMHPの起動およびUAPから端末へのメッセージ送信は，MCFまたはほかのOpenTP1プロトコルで支援している機能です。

(b)　同期型問い合わせ応答形態を使用した通信形態

UAPからSENDRECV要求を発行して，問い合わせメッセージを送信する場合，SENDRECV要求でrequest型論理端末（同期型）を指定します。

該当するrequest型論理端末が使用中で，応答メッセージ未受信の状態であるとき，SENDRECV要求は発行できません。応答メッセージを受信して，論理端末の使用状態が解除されたあと，SENDRECV要求を発行できます。

同期型問い合わせ応答形態を使用した通信形態例を次の図に示します。

図2-4　同期型問い合わせ応答形態を使用した通信形態の例

図2-4は，端末からSPPが起動され，SENDRECV要求を発行して，問い合わせメッセージを相手システムへ送信する例です。相手システムからの応答メッセージ受信を契機にSENDRECV要求がリターンすることで，SPPは先頭セグメントを受信します。その後，SPPはRECVSYNC要求を発行して，後続セグメントを受信する通信形態です。SPPは，TP1/NET/OSAS-NIFを介して問い合わせ応答をしたあと，端末のクライアント側のUAPへ制御を移せます。

なお，端末からのUAPの起動およびUAPから端末へのメッセージ送信は，MCFまたはほかのOpenTP1プロトコルで支援している機能です。

(c)　分岐送信形態および一方受信形態を使用した通信形態

UAPからEXECAP要求を発行して，一方送信メッセージを送信する場合，EXECAP要求でアプリケーション名を指定します。このとき，アプリケーション名に対応するMCFアプリケーション定義（mcfaalcap -n）のlnameオペランドでsend型論理端末を指定します。

UAPからSEND要求を発行して，一方送信メッセージを送信する場合，SEND要求でsend型論理端末を指定します。

該当する論理端末が送信中の状態でもMCF通信構成定義（mcftalcle -m）で指定した出力メッセージ格納数を上限としてEXECAP要求またはSEND要求を発行できます。

分岐送信形態および一方受信形態を使用した通信形態例を次の図に示します。

図2-5　分岐送信形態および一方受信形態を使用した通信形態の例

図2-5に示した四つの通信形態例について説明します。

端末からSPPが起動され，EXECAP要求またはSEND要求を発行して，一方送信メッセージを送信する通信形態です。

端末から非応答型MHPが起動され，EXECAP要求またはSEND要求を発行して，一方送信メッセージを送信する通信形態です。

端末から応答型MHPが起動され，EXECAP要求またはSEND要求を発行して，一方送信メッセージを送信する通信形態です。また，EXECAP要求またはSEND要求発行後，REPLY要求を発行することによって，応答メッセージを端末へ送信できます。

相手システムから一方送信メッセージを受信して，非応答型のMHPを起動する通信形態です。起動されたMHPは，RECEIVE要求を発行して相手システムからのメッセージを受信します。また，端末へはSEND要求を発行してメッセージを送信できます。

なお，端末からのUAPの起動およびUAPから端末へのメッセージ送信は，MCFまたはほかのOpenTP1プロトコルで支援している機能です。

2.1.3　セグメントの分割と組み立て

メッセージは，UAPでセグメント単位に分割してシステム間で送受信をします。

メッセージの送信時，TP1/NET/OSAS-NIFは，UAPから受け取ったメッセージをセグメント単位で相手システムへ送信します。このとき，TP1/NET/OSAS-NIFはセグメントの先頭にNIFヘッダを付けます。送信できる1セグメントの長さは，1～32000バイトです。ただし，相手システムによって，受信できるセグメント長が異なりますので確認してから送信してください。

また，メッセージの受信時は，相手システムから受信したメッセージをセグメント単位でUAPへ渡します。受信できる1セグメントの長さは1～65462バイトです。

メッセージを送受信するときのメッセージの形式の変化について，次の図に示します。

図2-6　メッセージの形式の変化

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

2.1.4　コネクションの確立

TP1/NET/OSAS-NIFは，相手システムとの間で，論理的な通信路（コネクション）を確立してメッセージの送受信をします。

コネクションの確立には，発呼型と着呼型があります。

＜この項の構成＞

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

(2)　着呼型のコネクション確立

(3)　システム間の構成合わせ

(4)　コネクションを確立するときの注意事項

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

発呼型は，TP1/NET/OSAS-NIFからコネクションを確立する方法です。次に示す二つがあります。

オンライン開始時に自動的に確立します（MCF通信構成定義（mcftalccn -i）でautoを指定しておきます）。

運用コマンド（mcftactcn）で確立します。
TP1/NET/OSAS-NIFからのコネクションの確立について，次の図に示します。

図2-7　コネクションの確立（発呼型）

オンラインを開始します。または，運用コマンド（mcftactcn）を入力します。

TP1/NET/OSAS-NIFは，MCF通信構成定義情報に基づいて，初期設定要求を相手システムに送信します。

相手システムはTP1/NET/OSAS-NIFから受信した初期設定要求の構成情報の内容と突き合わせます。

相手システムから初期設定回答として構成情報を受信します。

初期設定回答に従い，構成合わせをします。なお，構成合わせについては，「(3)　システム間の構成合わせ」を参照してください。

コネクションが確立されます。

TP1/NET/OSAS-NIFは，コネクションが確立されると状態通知イベント（COPNEVT）を通知します。アプリケーション定義にCOPNEVTが定義されていない場合は，MHPは起動しません。

発呼型の場合のコネクションの確立方式には，重畳型と非重畳型があり，相手システムと確立方式を合わせておく必要があります。コネクションの確立方式は，MCF通信構成定義（mcftalccn -x）で指定します。

(2)　着呼型のコネクション確立

着呼型は，相手システムからの要求でコネクションを確立する方法です。

TP1/NET/OSAS-NIFは，あらかじめ，運用コマンド（mcftactcn）を入力しておくか，MCF通信構成定義（mcftalccn -i）でautoを指定しておく必要があります。その後，相手システムからのコネクション確立要求の初期設定要求を受け，初期設定回答を送信すると，コネクションが確立します。コネクションの確立方式は，相手システムの確立方式に合わせます。

(3)　システム間の構成合わせ

TP1/NET/OSAS-NIFは，コネクション確立時に相手システムとの構成情報を突き合わせます。次に示す三つの情報を突き合わせ，相手システムと構成の同期を取ります。

NIF通番の最大値

タイマ監視値

論理端末構成

(a)　NIF通番の最大値の突き合わせ

NIF通番とは，送受信メッセージごとにTP1/NET/OSAS-NIFが設定する通し番号のことです。

TP1/NET/OSAS-NIFは，NIF通番の最大値の突き合わせをします。突き合わせの結果，不一致となる場合は，小さい方の値を最大値とします。

NIF通番については，「2.5.2　NIF通番」を参照してください。

(b)　タイマ監視値の突き合わせ

TP1/NET/OSAS-NIFは，次に示す監視時間の値を突き合わせます。

正常処理監視時間

ユーザ処理監視時間

送達確認監視時間

連続送信監視時間

突き合わせの結果，値が不一致となる場合は，大きい値に合わせます。ただし，どちらかが0を指定した場合は，タイマ監視はしません。また，終了処理監視時間は突き合わせをしません。

タイマ監視の詳細については，「2.6　タイマ監視」を参照してください。

(c)　論理端末構成の突き合わせ

TP1/NET/OSAS-NIFは，コネクション確立時に，対応する自システムの論理端末と相手システムのエージェントの個数を突き合わせます。突き合わせの結果，不一致となる場合は少ない方の個数に合わせてシステム間通信の条件を設定します。論理端末数が0となるとき，TP1/NET/OSAS-NIFはコネクションを確立しません。

論理端末構成の突き合わせの例を次の図に示します。

図2-8　論理端末構成の突き合わせの例

(4)　コネクションを確立するときの注意事項

コネクションの状態が確立処理中※の場合は，オンラインを終了することができません。運用コマンド（mcftdctcn -f）を入力してコネクションを解放してから，オンラインを終了してください。コネクションの状態を確認するときは，運用コマンド（mcftlscn）を入力してください。

注※

コネクションが次に示す状態のときを，コネクション確立処理中といいます。

発呼型のコネクションで，コネクション確立を再試行しているとき。

着呼型のコネクションで，相手システムからのコネクション確立要求を待っているとき。

2.1.5　コネクションの解放

TP1/NET/OSAS-NIFは，コネクションを解放してからシステム間通信を終了します。

コネクションの解放には，正常解放と強制解放があります。

＜この項の構成＞

(1)　正常解放

(2)　強制解放

(3)　コネクション解放時のメッセージの処理

(4)　コネクションを解放するときの注意事項

(1)　正常解放

TP1/NET/OSAS-NIFは，次に示す場合，コネクションを正常解放し，状態通知イベント（CCLSEVT）を通知します。

自システムから運用コマンド（mcftdctcn）を入力した場合

相手システムからの解放要求を受信した場合

オンライン正常終了する場合※

注※

この場合は状態通知イベントを通知しません。

運用コマンドによるコネクションの正常解放を図2-9に，相手システムからの解放要求によるコネクションの正常解放を図2-10に，オンライン正常終了によるコネクションの正常解放を図2-11に示します。

図2-9　運用コマンドによるコネクションの正常解放

mcftdctcnコマンド（-fオプションなし）を入力します。

TP1/NET/OSAS-NIFは，仕掛り中の送受信メッセージを処理します。メッセージの処理については，「(3)　コネクション解放時のメッセージの処理」を参照してください。

TP1/NET/OSAS-NIFは，NIFアソシエーション解放要求を送信します。

相手システムからNIFアソシエーション解放の回答を受信します。

コネクションを解放します。

TP1/NET/OSAS-NIFは，コネクションが解放されると状態通知イベント（CCLSEVT）を通知します。アプリケーション定義にCCLSEVTが定義されていない場合は，MHPは起動しません。

図2-10　相手システムからの解放要求によるコネクションの正常解放

相手システムから，NIFアソシエーション解放要求を受信します。

TP1/NET/OSAS-NIFは，仕掛り中の送受信メッセージを処理します。メッセージの処理については，「(3)　コネクション解放時のメッセージの処理」を参照してください。

TP1/NET/OSAS-NIFは，NIFアソシエーション解放回答を相手システムへ送信します。

コネクションを解放します。

TP1/NET/OSAS-NIFは，コネクションが解放されると状態通知イベント（CCLSEVT）を通知します。アプリケーション定義にCCLSEVTが定義されていない場合は，MHPは起動しません。

図2-11　オンライン正常終了によるコネクションの正常解放

dcstopコマンドを入力します。

TP1/NET/OSAS-NIFは，仕掛り中の送受信メッセージを処理します。メッセージの処理については，「(3)　コネクション解放時のメッセージの処理」を参照してください。

TP1/NET/OSAS-NIFは，NIFアソシエーション解放要求を相手システムへ送信します。

相手システムから，NIFアソシエーション解放の回答を受信します。

コネクションを解放します。

TP1/NET/OSAS-NIFは，終了します。

(2)　強制解放

TP1/NET/OSAS-NIFは，次に示す場合，コネクションを強制的に解放し，障害通知イベント（CERREVT）を通知します。

運用コマンド（mcftdctcn -f）を入力した場合

送受信バッファおよび編集バッファの資源が不足した場合

通信管理から回線障害を報告された場合

相手システムからの強制解放を受信した場合

MCF通信プロセスが終了した場合，または強制停止した場合※

注※

この場合は状態通知イベントを通知しません。

運用コマンドによるコネクションの強制解放を図2-12に，相手システムからの強制解放によるコネクションの強制解放を図2-13に示します。

図2-12　運用コマンドによるコネクションの強制解放

mcftdctcn -fコマンドを入力します。

仕掛り中の受信メッセージを破棄し，送信処理を中断します。メッセージの処理については，「(3)　コネクション解放時のメッセージの処理」を参照してください。

TP1/NET/OSAS-NIFは，NIFアソシエーション緊急解放要求を送信します。

コネクションを解放します。

TP1/NET/OSAS-NIFは，コネクションが解放されると状態通知イベント（CERREVT）を通知します。アプリケーション定義にCERREVTが定義されていない場合は，MHPは起動しません。

図2-13　相手システムからの強制解放によるコネクションの強制解放

相手システムから，NIFアソシエーション緊急解放要求を受信します。

仕掛り中の受信メッセージを破棄し，送信処理を中断します。メッセージの処理については，「(3)　コネクション解放時のメッセージの処理」を参照してください。

コネクションを解放します。

TP1/NET/OSAS-NIFは，コネクションが解放されると状態通知イベント（CERREVT）を通知します。アプリケーション定義にCERREVTが定義されていない場合は，MHPは起動しません。

(3)　コネクション解放時のメッセージの処理

コネクションの正常解放時に送受信中のメッセージがある場合，TP1/NET/OSAS-NIFは，メッセージの送受信を完了してからコネクションを解放します。

コネクションの強制解放時に送受信中のメッセージがある場合，メッセージの扱いは，論理端末の端末タイプによって異なります。強制解放時の送受信中メッセージの扱いを次の表に示します。

表2-2　コネクションの強制解放時の送受信中メッセージの扱い

端末タイプ
送信メッセージ
受信メッセージ

送信中断
メッセージの破棄
再確立時の再送※
メッセージの破棄
再確立時の再受信

request型
○
×
○
○
△

request型
（同期型）
○
○
×
○
×

reply型
○
×
△
○
△

send型
○
×
○
－
－

receive型
－
－
－
○
△

（凡例）

○：処理をします。

×：処理をしません。

△：相手システムに依存します。

－：該当しません。

注※

再送の詳細については，「2.5　再送機能」を参照してください。

(4)　コネクションを解放するときの注意事項

コネクションの状態が解放処理中の場合は，オンラインを終了することができません。運用コマンド（mcftdctcn -f）を入力してコネクションを解放してから，オンラインを終了してください。コネクションの状態を確認するときは，運用コマンド（mcftlscn）を入力してください。

2.1.6　論理端末の閉塞と閉塞解除

TP1/NET/OSAS-NIFは，相手システムとのコネクションを確立するとき，論理端末の閉塞を解除してメッセージを送受信します。

＜この項の構成＞

(1)　論理端末の閉塞

(2)　論理端末の閉塞解除

(1)　論理端末の閉塞

TP1/NET/OSAS-NIFは，次に示すような障害要因を検知すると，該当する論理端末を閉塞します。論理端末を閉塞すると，障害通知イベント（CERREVT）を通知し，対応するMHPを起動します。

(a)　運用コマンド（mcftdctle）による閉塞

TP1/NET/OSAS-NIFは，運用コマンド（mcftdctle）を入力したとき，次に示す処理をします。

メッセージ送信中の場合

request型論理端末およびsend型論理端末は，メッセージ送信を中断し，相手システムへ処理中断連絡（送信中断）を送信したあと，論理端末を閉塞します。

request型論理端末（同期型）は，送信メッセージを破棄し，相手システムへ送信中断連絡（送信中断）を送信したあと，論理端末を閉塞します。

reply型論理端末は，メッセージの送信が完了した時点で，論理端末を閉塞します。相手システムには，次にメッセージを受信したとき，処理中断連絡（受信拒否）を送信します。

メッセージ受信中の場合

request型論理端末およびrequest型論理端末（同期型）はメッセージの受信が完了した時点で，論理端末を閉塞します。

reply型論理端末およびreceive型論理端末は受信メッセージを破棄し，相手システムへ処理中断連絡（受信拒否）を送信したあと，論理端末を閉塞します。

ただし，送受信処理中のメッセージがない場合は，処理中断連絡を送信しません。また，閉塞している論理端末に対して，新たにメッセージを受信したときは処理中断連絡（受信拒否）を送信します。

(b)　相手システムからの強制閉塞

TP1/NET/OSAS-NIFは，相手システムから処理中断連絡（送信中断または受信拒否）を受信すると，次に示す処理をします。

メッセージ送信中の場合

request型論理端末およびsend型論理端末は，メッセージ送信を中断し，論理端末を閉塞します。

request型論理端末（同期型）およびreply型論理端末は，送信中のメッセージを破棄し，論理端末を閉塞します。

メッセージ受信中の場合

request型論理端末，request型論理端末（同期型），reply型論理端末およびreceive型論理端末は受信メッセージを破棄し，論理端末を閉塞します。

(c)　コネクション解放による閉塞

TP1/NET/OSAS-NIFは，コネクションを解放すると，論理端末を閉塞します。コネクション解放時は論理端末の障害通知イベント（CERREVT）は起動しません。

このときの送受信メッセージの扱いについては，「2.1.5(3)　コネクション解放時のメッセージの処理」を参照してください。

(d)　NIF-REJECT送信または受信による強制閉塞

TP1/NET/OSAS-NIFは，相手システムへNIF-REJECTを送信するか，または相手システムからNIF-REJECTを受信すると，次に示す処理をします。

メッセージ送信中の場合

request型論理端末，reply型論理端末およびsend型論理端末は，メッセージ送信を中断し，論理端末を閉塞します。

request型論理端末（同期型）は，送信メッセージを破棄し，論理端末を閉塞します。

メッセージ受信中の場合

request型論理端末，request型論理端末（同期型），reply型論理端末およびreceive型論理端末は，受信メッセージを破棄し，論理端末を閉塞します。

(e)　メッセージ送受信処理障害による閉塞

TP1/NET/OSAS-NIFは，メッセージ入力障害などによる障害が発生した場合，論理端末を閉塞します。詳細については，「8.1　障害の種類と対応処理」を参照してください。

(2)　論理端末の閉塞解除

TP1/NET/OSAS-NIFは，コネクション確立中に，論理端末を閉塞した場合，運用コマンド（mcftactle）を入力するか，相手システムの障害復旧を認識するか，またはコネクションの再確立をすると，閉塞していた論理端末の閉塞を解除します。

なお，コネクション確立時に，論理端末の突き合わせで使用できなくなった論理端末の閉塞は解除できません。

(a)　運用コマンド（mcftactle）による閉塞解除

TP1/NET/OSAS-NIFは，運用コマンド（mcftactle）を入力したとき，次に示す処理をします。

相手システムから処理中断連絡（受信拒否）を受信して閉塞した場合

request型論理端末，request型論理端末（同期型），reply型論理端末およびsend型論理端末は，運用コマンド（mcftactle）を受け付けません。

相手システムから処理中断連絡（送信中断）を受信して閉塞した場合

request型論理端末およびrequest型論理端末（同期型）は論理端末を閉塞解除します。

reply型論理端末およびreceive型論理端末は運用コマンド（mcftactle）を受け付けません。

相手システムへ処理中断連絡（受信拒否）を送信して閉塞した場合

reply型論理端末およびreceive型論理端末は，相手システムへ受信拒否解除を送信して，論理端末を閉塞解除します。

相手システムへ処理中断連絡（送信中断）を送信して閉塞した場合

request型論理端末およびsend型論理端末は，論理端末を閉塞解除します。中断していたメッセージ送信を再処理します。

request型論理端末（同期型）およびreply型論理端末は，論理端末を閉塞解除します。

NIF-REJECT送信または受信によって閉塞した場合

request型論理端末，request型論理端末（同期型）およびsend型論理端末は，論理端末を閉塞解除します。

reply型論理端末およびreceive型論理端末は，運用コマンド（mcftactle）を受け付けません。

上記以外の場合

論理端末を閉塞解除します。

(b)　相手システムの障害復旧による閉塞解除

TP1/NET/OSAS-NIFは，相手システムから処理中断連絡（受信拒否/送信中断）を受信して閉塞した場合，またはNIF-REJECTを送受信して閉塞した場合，相手システムの障害復旧によって，自動的に論理端末の閉塞を解除します。

相手システムから処理中断連絡（受信拒否）を受信して閉塞した場合

request型論理端末およびsend型論理端末は，相手システムから受信拒否解除を受信することによって，相手システムの障害復旧を認識し，論理端末を閉塞解除します。中断していたメッセージ送信を再処理します。

request型論理端末（同期型）およびreply型論理端末は，論理端末を閉塞解除します。

相手システムから処理中断連絡（送信中断）を受信して閉塞した場合

reply型論理端末およびreceive型論理端末は，相手システムからメッセージを受信することによって，相手システムの障害復旧を認識し，論理端末を閉塞解除します。

NIF-REJECT送信または受信によって閉塞した場合

reply型論理端末およびreceive型論理端末は，相手システムからメッセージを受信することによって，相手システムの障害復旧を認識し，論理端末を閉塞解除します。

2.2　システム間通信メッセージの送受信

TP1/NET/OSAS-NIFは，システム間通信メッセージの送受信をします。TP1/NET/OSAS-NIFで使用するメッセージには次の種類があります。

問い合わせメッセージ

応答メッセージ

一方送信メッセージ

この節では，TP1/NET/OSAS-NIFのメッセージの送信と受信の流れについて説明します。

＜この節の構成＞

2.2.1　問い合わせメッセージの送信

2.2.2　同期型の問い合わせメッセージの送信

2.2.3　応答メッセージの送信

2.2.4　一方送信メッセージの送信

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

2.2.1　問い合わせメッセージの送信

TP1/NET/OSAS-NIFが，相手システムへ問い合わせメッセージを送信し，相手システムからの応答メッセージを受信した場合の処理の流れを説明します。

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

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

SPPまたはMHPから，request型論理端末あてに問い合わせメッセージを送信します。
EXECAP要求を呼び出した場合，request型論理端末は使用状態となり，同じ論理端末あてにEXECAP要求を発行できません。

TP1/NET/OSAS-NIFは出力キューに書き込まれたメッセージを取り出します。

出力メッセージ編集UOCでメッセージを編集します。

相手システムへ問い合わせメッセージを送信します。

相手システムから応答メッセージを受信します。

入力メッセージ編集UOCでメッセージを編集します。

TP1/NET/OSAS-NIFは入力キューへ応答メッセージを書き込みます。
1.でEXECAP要求を呼び出した場合，1.で使用状態としたrequest型論理端末の状態を解除します。同じ論理端末あてにEXECAP要求を発行できます。

MHPを起動させます。MHPはRECEIVE要求を発行してメッセージを受け取ります。

2.2.2　同期型の問い合わせメッセージの送信

TP1/NET/OSAS-NIFが，相手システムへ同期型の問い合わせメッセージを送信し，相手システムからの応答メッセージを受信した場合の処理の流れを説明します。

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

図2-15　同期型の問い合わせメッセージの送信と応答メッセージの受信の流れ

MHPまたはSPPから，request型論理端末（同期型）あてに問い合わせメッセージを送信します。
request型論理端末（同期型）は使用状態となり，同じ論理端末あてにSENDRECV要求を発行できません。

TP1/NET/OSAS-NIFは出力キューに書き込まれたメッセージを取り出します。

出力メッセージ編集UOCでメッセージを編集します。

相手システムへ問い合わせメッセージを送信します。

相手システムから応答メッセージを受信します。

入力メッセージ編集UOCでメッセージを編集します。

TP1/NET/OSAS-NIFは入力キューへ応答メッセージを書き込みます。
1.で使用状態としたrequest型論理端末（同期型）の状態を解除し，同じ論理端末あてにSENDRECV要求を発行可能とします。

問い合わせメッセージを送信したUAPに制御が渡され，応答メッセージを受け取ります。
応答メッセージが複数のセグメントの場合，RECVSYNC要求を発行して，後続セグメントを受信します。

2.2.3　応答メッセージの送信

TP1/NET/OSAS-NIFが，相手システムからの問い合わせメッセージを受信し，相手システムへ応答メッセージを送信する場合の処理の流れを説明します。

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

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

相手システムからの問い合わせメッセージをreply型論理端末で受信します。

入力メッセージ編集UOCでメッセージを編集します。相手システムからのEXECAP要求を受信した場合に，自システムのアプリケーションが指定されているときは，入力メッセージ編集UOCは不要です。

TP1/NET/OSAS-NIFは入力キューへ問い合わせメッセージを書き込みます。

MHPを起動させます。MHPはRECEIVE要求を発行してメッセージを受け取ります。ただし，相手システムからのEXECAP要求を受信した場合は，EXECAP要求の中で指定されたアプリケーションが起動されます。

MHPは，REPLY要求を発行して出力キューへ応答メッセージを書き込みます。

TP1/NET/OSAS-NIFは，出力キューに書き込まれた応答メッセージを取り出します。

出力メッセージ編集UOCでメッセージを編集します。

相手システムへ応答メッセージを送信します。

2.2.4　一方送信メッセージの送信

TP1/NET/OSAS-NIFが，相手システムへ一方送信メッセージを送信した場合の処理の流れを説明します。

一方送信メッセージ送信の処理の流れを次の図に示します。

図2-17　一方送信メッセージ送信の処理の流れ

MHPまたはSPPから，send型論理端末あてに一方送信メッセージを送信します。

TP1/NET/OSAS-NIFは出力キューに書き込まれたメッセージを取り出します。

出力メッセージ編集UOCでメッセージを編集します。

相手システムへメッセージを送信します。

相手システムからの一方送信完了を受信します。

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

TP1/NET/OSAS-NIFが，相手システムからの一方送信メッセージを受信した場合の処理の流れを説明します。

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

図2-18　一方送信メッセージ受信の処理の流れ

相手システムからreceive型論理端末あての一方送信メッセージを受信します。

入力メッセージ編集UOCでメッセージを編集します。

受信したメッセージを入力キューに書き込みます。

相手システムに一方送信完了を送信します。

MHPを起動させます。MHPはRECEIVE要求を発行してメッセージを受け取ります。

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

TP1/NET/OSAS-NIFでは，アプリケーション起動機能を使用できます。ここでは，アプリケーション起動機能を使用する場合に必要な準備と，使用方法について説明します。なお，アプリケーション起動機能の詳細については，マニュアル「OpenTP1 プログラム作成の手引」のアプリケーションプログラムの起動について説明している個所を参照してください。

＜この節の構成＞

(1)　アプリケーション起動機能を使用する場合に必要なMCF通信プロセス

(2)　アプリケーション起動機能の対象

(3)　アプリケーション起動機能の使用方法

(1)　アプリケーション起動機能を使用する場合に必要なMCF通信プロセス

アプリケーション起動機能を使用する場合，相手システムとの通信を行うプロセスとは別のMCFのプロセスを使用します。TP1/NET/OSAS-NIFでは，メッセージ送受信で使用するMCFのプロセスをMCF通信プロセス，dc_mcf_execap関数で使用するMCFのプロセスをアプリケーション起動プロセスといいます。

アプリケーション起動プロセスはアプリケーション起動環境定義に指定します。アプリケーション起動機能を使用する場合は，MCF通信構成定義のアプリケーション起動環境定義を作成しておいてください。

なお，アプリケーション起動環境定義については，マニュアル「OpenTP1 システム定義」を参照してください。

(2)　アプリケーション起動機能の対象

アプリケーション起動機能の対象となるのは，自システムおよび相手システムです。

相手システムのアプリケーションを起動する場合には，次に示す3種類があります。

SPPからのシステム間通信によってアプリケーションを起動する場合

MHPからのシステム間通信によってアプリケーションを起動する場合

システム間通信と自システム内のアプリケーション起動を併用する場合

それぞれの場合の定義例については，「5.12　アプリケーション起動機能を使用する場合に関連づける内容」を参照してください。

(3)　アプリケーション起動機能の使用方法

アプリケーション起動機能を使用する場合は，アプリケーションプログラムを起動する関数（dc_mcf_execapまたはCBLDCMCF('EXECAP ')）に，起動させたいMHPまたはSPPのアプリケーション名，および引き渡すメッセージのセグメントを指定します。

dc_mcf_execap関数についての詳細は「3.1.1　dc_mcf_execap － アプリケーションプログラムの起動」を，CBLDCMCF('EXECAP ')関数についての詳細は「3.2.1　CBLDCMCF('EXECAP ') － アプリケーションプログラムの起動」をそれぞれ参照してください。

2.4　フロー制御

フロー制御とは，メッセージ送信の信頼性を高めるため，メッセージを送信するときに，セグメント単位に通信相手への送信完了を確認しながら連続送信をする機能です。

TP1/NET/OSAS-NIFがメッセージを送信する場合は，必ずフロー制御をします。メッセージを受信する場合は，相手システムによって，フロー制御をする場合としない場合があります。フロー制御を次の図に示します。

図2-19　フロー制御（問い合わせメッセージの送信と応答メッセージの受信）

図2-20　フロー制御（一方送信メッセージの送信と受信）

2.5　再送機能

TP1/NET/OSAS-NIFは，メッセージ送受信中に自システム内に障害が発生した場合，またはオンラインシステムが停止した場合，送信中だったメッセージを再度送信します。メッセージの再送のために，TP1/NET/OSAS-NIFは，メッセージに一連の通番を付けています。

＜この節の構成＞

2.5.1　メッセージ再送機能

2.5.2　NIF通番

2.5.1　メッセージ再送機能

仕掛り中メッセージの再送は，中断要因，キュー種別および論理端末の端末タイプによって異なります。

障害回復後の仕掛り中メッセージの再送を次の表に示します。

表2-3　仕掛り中メッセージの再送

端末タイプ
中断要因

コネクション障害，オンライン停止，タイムアウト，NIF-REJECT送信/受信
受信拒否受信
論理端末障害
左記以外

mcftdctle入力
バッファ不足

キュー種別
キュー種別
キュー種別
キュー種別

ディスク
メモリ
ディスク
メモリ
ディスク
メモリ
ディスク
メモリ

request型
○
×
○
×
○
×
○
×
×

request型
（同期型）
×
×
×
×
×
×
×
×
×

reply型
△
×
×
×
－※1
－※1
△※2
×
×

send型
○
×
○
×
○
×
○
×
×

（凡例）

○：再送します。

×：再送しません。

△：相手システムに依存します。

－：該当しません。

注※1

送信を完了してから論理端末を閉塞するため，再送は該当しません。

注※2

コネクションを解放するため，コネクション再確立後に再送されます。

ただし，次に示す場合は，メッセージの再送はしません。

送信メッセージが出力キューから消滅した場合

再送準備中に障害が発生した場合

次に，TP1/NET/OSAS-NIFによる再送と，RESEND要求による再送との違いを示します。

TP1/NET/OSAS-NIFによる再送：
相手システムとのメッセージ送受信で障害が発生した場合に自動的に行われます。

RESEND要求による再送：
相手システムのUAPがメッセージを受け取ったあとで，メッセージ損失が発生した場合に使用します。

2.5.2　NIF通番

TP1/NET/OSAS-NIFは，UAPからのシステム間通信メッセージに一連の通番を付け，メッセージを管理し，再送機能に使用します。TP1/NET/OSAS-NIFがメッセージに付ける通番のことを，NIF通番といいます。

TP1/NET/OSAS-NIFは，メッセージにNIF通番を付け，メッセージの脱落や重複を防止したり，メッセージ送達の確認をしています。このため，相手システムでは，NIF/OSIプロトコルで定める通番機能，通番問い合わせ機能を，必ず使用してください。使用しない場合，コネクションを確立できません。

NIF通番は，論理端末（エージェント）ごとに管理されています。

NIF通番を参照することはできません。

また，TP1/NET/OSAS-NIFはオンライン再開始時に前回のオンライン停止時のNIF通番を引き継ぐことができます。

オンライン再開始時にNIF通番を引き継がない場合は，MCF通信構成定義（mcftalcle）の -kオプションのquekindオペランドにmemoryを，-dオプションのnuguaオペランドにnoを指定してください。

オンライン再開始時にNIF通番を引き継がない指定をした場合，オンライン再開始時のNIF通番はリセット状態となり，再送のための情報はなくなります。

2.6　タイマ監視

TP1/NET/OSAS-NIFは，相手システムとUAPとのメッセージ送受信でメッセージ送受信中の無応答を防止するため，タイマ監視をします。

＜この節の構成＞

2.6.1　相手システムとのメッセージ送受信に関するタイマ監視

2.6.2　UAPとのメッセージ送受信に関するタイマ監視

2.6.1　相手システムとのメッセージ送受信に関するタイマ監視

TP1/NET/OSAS-NIFは，各種の送信メッセージに対する次のメッセージを受信するまでの時間を監視しています。

タイマ監視をするかどうか，および監視タイマ値は，MCF通信構成定義（mcftalccn -v）で指定します。監視タイマ値に0を指定すると，時間監視はしません。MCF通信構成定義の詳細は，「5.4　MCF通信構成定義」を参照してください。

TP1/NET/OSAS-NIFの相手システムとのタイマ監視の種類と内容を次の表に示します。また，相手システムとのタイマ監視の範囲の例を図2-21に示します。

表2-4　相手システムとのタイマ監視の種類と内容

タイマ監視の種別
内容
タイムアウト時のTP1/NET/OSAS-NIFの処理

正常処理監視（t1）
初期設定要求を送信してから，初期設定回答を受信するまでの時間の監視
コネクションの確立処理を中断します。

論理端末の閉塞解除に関する各要求を送信してから，応答を受信するまでの時間の監視
論理端末の閉塞解除処理を中断します。

ユーザ処理監視（t2）
問い合わせメッセージの最終セグメントを送信してから応答メッセージの先頭セグメントを受信するまでの時間の監視
論理端末を閉塞します。
送信処理を中断します。

送達確認監視（t3）
一方送信メッセージの一つのセグメントを送信してから，送達確認または一方送信完了を受信するまでの時間の監視
論理端末を閉塞します。
送信処理を中断します。

問い合わせメッセージまたは応答メッセージの，先頭セグメントまたは中間セグメントを送信してから送達確認を受信するまでの時間の監視

連続送信監視（t4）
送達確認を送信してから，次のセグメントを受信するまでの時間の監視
論理端末を閉塞します。
受信メッセージを破棄します。

終了処理監視（t5）
NIFアソシエーション解放要求を送信してから，コネクションが解放するまでの時間の監視
コネクションを強制解放します。

NIFアソシエーション解放回答を送信してから，アソシエーション解放要求を受信するまでの時間の監視

図2-21　相手システムとのタイマ監視の範囲の例

2.6.2　UAPとのメッセージ送受信に関するタイマ監視

TP1/NET/OSAS-NIFは，reply型論理端末で問い合わせメッセージを受信してUAPを起動したあと，UAPから応答メッセージを受け付けるまで時間監視します。

タイマ監視をするかどうか，および監視タイマ値は，MCF通信構成定義（mcftalcle -d）のrplytimオペランドで指定します。監視タイマ値に0を指定すると，時間監視はしません。

TP1/NET/OSAS-NIFのUAPとのタイマ監視の種類と内容を次の表に示します。また，UAPとのタイマ監視の範囲について図2-22に示します。

表2-5　UAPとのタイマ監視の種類と内容

タイマ監視の種類と内容
内容
タイムアウト時のTP1/NET/OSAS-NIFの処理

応答監視タイマ
相手システムから問い合わせメッセージを受信して，入力キューへ登録後，UAPから応答メッセージの送信を受け付けるまでの時間の監視
論理端末を閉塞します。
送信処理を中断します。
応答メッセージは送信済みとして処理します。

UAPからの応答メッセージの送信受け付け待ちの状態で，論理端末が閉塞したとき，論理端末の閉塞解除処理で，相手システムから通番問い合わせ要求を受信後，UAPから応答メッセージの送信を受け付けるまでの時間の監視
問い合わせメッセージは未受信として処理します。

UAPからの応答メッセージの送信受け付け待ちの状態で，論理端末が閉塞したとき，論理端末の閉塞解除処理で，相手システムから再送された問い合わせメッセージを受信後UAPから応答メッセージの送信を受け付けるまでの時間の監視
論理端末を閉塞します。
問い合わせメッセージの受信を拒否します。

図2-22　UAPとのタイマ監視の範囲の例

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

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

なお，メッセージ送受信のためのUAP作成の詳細，およびその他の関数については，次のマニュアルを参照してください。

「OpenTP1 プログラム作成の手引」

「OpenTP1 プログラム作成リファレンス C言語編」

「OpenTP1 プログラム作成リファレンス COBOL言語編」

また，TP1/NET/OSAS-NIFに関連するメッセージ送受信のUAP，およびその作成例について説明します。

＜この章の構成＞

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

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

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

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

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

C言語のメッセージ送受信の関数について説明します。TP1/NET/OSAS-NIFで扱うメッセージ送受信の関数を次の表に示します。

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

関数名 | 機能
dc_mcf_execap | アプリケーションプログラムの起動
dc_mcf_receive | メッセージの受信
dc_mcf_recvsync | 同期型メッセージの後続セグメント受信
dc_mcf_reply | 応答メッセージの送信
dc_mcf_resend | メッセージの再送
dc_mcf_send | メッセージの送信
dc_mcf_sendrecv | 同期型メッセージの送受信

＜この節の構成＞

3.1.1　dc_mcf_execap － アプリケーションプログラムの起動

3.1.2　dc_mcf_receive － メッセージの受信

3.1.3　dc_mcf_recvsync － 同期型メッセージの後続セグメント受信

3.1.4　dc_mcf_reply － 応答メッセージの送信

3.1.5　dc_mcf_resend － メッセージの再送

3.1.6　dc_mcf_send － メッセージの送信

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

3.1.1　dc_mcf_execap － アプリケーションプログラムの起動

＜この項の構成＞

(1)　形式

(2)　機能

(3)　UAPで値を設定する引数

(4)　リターン値

(1)　形式

ANSI C， C++　の形式

#include <dcmcf.h>
int dc_mcf_execap(DCLONG action, DCLONG commform, char *resv01,
                 DCLONG active, char *apnam, char *comdata,
                 DCLONG cdataleng)

K&R版C　の形式

#include <dcmcf.h>
int dc_mcf_execap(action,commform,resv01,active,apnam,comdata,
                 cdataleng)
DCLONG          action;
DCLONG          commform;
char            *resv01;
DCLONG          active;
char            *apnam;
char            *comdata;
DCLONG          cdataleng;

(2)　機能

TP1/NET/OSAS-NIFの場合，相手システムのアプリケーションプログラムを起動します。

また，システム内の通信ではUAP（SPPまたはMHP）から，apnamに設定したアプリケーション名のMHPを開始させます。

SPPからdc_mcf_execap関数を呼び出す場合は，SPPがトランザクションとして処理していることと，そのSPPのメイン関数でdc_mcf_open関数を呼び出していることが前提です。

システム内のアプリケーションプログラムの起動については，マニュアル「OpenTP1 プログラム作成の手引」およびマニュアル「OpenTP1 プログラム作成リファレンス C言語編」を参照してください。

開始させるMHPに渡すメッセージのセグメント形式を次に示します。Lは，バッファ形式1の場合は8バイト，バッファ形式2の場合は4バイトです。

(3)　UAPで値を設定する引数

　action
開始させるMHPに渡すセグメントが論理メッセージの最終セグメントかどうかを，次の形式で設定します。

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

DCMCFESI

先頭セグメントまたは中間セグメントを渡す場合に設定します。この値を設定したdc_mcf_execap関数を呼び出した場合は，そのあとに必ずactionにDCMCFEMIを設定したdc_mcf_execap関数を呼び出してください。

DCMCFEMI

最終セグメントを渡す場合，および論理メッセージが単一セグメントの場合に設定します。さらに，先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合にもこの値を設定します。

DCMCFBUF1

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

DCMCFBUF2

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

　commform
DCNOFLAGSを設定します。

　resv01
ヌル文字を設定します。

　active
0を設定します。

　apnam
開始させるMHPのアプリケーション名を設定します。アプリケーション名は最大8バイトです。アプリケーション名の最後にはヌル文字を付けてください。

　comdata
開始させるMHPに渡す，セグメントの内容を設定します。先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合にも必ず設定してください。

　cdataleng
開始させるMHPに渡すセグメントの長さを設定します。
先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合には，0を設定してください。

(4)　リターン値

リターン値
リターン値
（数値）
意味

DCMCFRTN_00000
0
正常に終了しました。

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

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

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

セグメント長に32000バイトを超える値を設定しています。

MCFが終了処理中のため，apnamに設定したMHPを起動できません。

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

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

DCMCFRTN_71108
-12108
apnamに設定したアプリケーション名のMHPを開始しようとしましたが，開始しようとしたMHPの管理テーブルを確保できませんでした。

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

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

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

DCMCFRTN_72001
-13001
apnamに設定したアプリケーション名は，MCFで定義されていません。

apnamに設定したアプリケーション名が間違っています。

MCFマネジャ定義の通信サービス定義（mcfmcname）に，アプリケーション起動プロセス名またはMCF通信プロセス名を指定していません。

アプリケーション起動プロセスまたはMCF通信プロセスに対応するMCFアプリケーション定義の環境定義（mcfaenv -p）に，アプリケーション起動プロセス識別子を指定していません。

アプリケーション環境定義（mcfaenv -p）で指定したアプリケーション起動プロセス識別子と，アプリケーション起動プロセスまたはMCF通信プロセスのMCF通信構成定義（mcftenv -s）で指定する識別子が一致していません。

＜論理端末名称を指定してアプリケーションを起動する場合＞

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のlnameオペランドに論理端末を指定していません。

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のlnameオペランドに指定した論理端末を，MCF通信プロセスのMCF通信構成定義（mcftalcle）に定義していません。

起動先アプリケーションのアプリケーション属性定義に指定した論理端末が，request型論理端末またはsend型論理端末ではありません。

起動先アプリケーションのアプリケーション属性定義で指定した論理端末は，アプリケーション起動を使えません。

DCMCFRTN_72001
-13001
＜コネクションIDを指定してアプリケーションを起動する場合＞

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のcnameオペランドにコネクションIDを指定していません。

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のcnameオペランドに指定したコネクションIDを，MCF通信プロセスのMCF通信構成定義（mcftalccn）に定義していません。

MCF通信プロセスのMCF通信構成定義（mcftalcle）に，request型論理端末を指定していません。

＜SPPからアプリケーションを起動する場合＞

アプリケーション起動プロセス識別子を起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定していません。

起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定しているアプリケーション起動プロセス識別子が，アプリケーション起動プロセス，またはMCF通信プロセスのMCF通信構成定義（mcftenv -s），およびアプリケーション環境定義（mcfaenv -p）で指定しているアプリケーション起動プロセス識別子と一致していません。

起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_mgridオペランドに指定しているMCFマネジャ識別子が，アプリケーション起動プロセスが属しているMCFマネジャの識別子と一致していません。

DCMCFRTN_72005
-13005
先頭セグメントまたは中間セグメントを渡すdc_mcf_execap関数で，長さが0バイトのセグメントを渡しています。

DCMCFRTN_72007
-13007
dc_mcf_reply関数をすでに呼び出した応答型（type=ans）のMHPから，応答型のMHPをdc_mcf_execap関数で起動させています。

dc_mcf_reply関数をすでに呼び出した継続問い合わせ応答型（type=cont）のMHPから，継続問い合わせ応答型のMHPをdc_mcf_execap関数で起動させています。

DCMCFTRN_72009
-13009
応答型（type=ans）のMHPから，dc_mcf_execap関数で応答型のMHPを2回以上起動させています。

継続問い合わせ応答型（type=cont）のMHPから，dc_mcf_execap関数で継続問い合わせ応答型のMHPを2回以上起動させています。

DCMCFTRN_72011
-13011
応答型（type=ans）のMHPから，dc_mcf_execap関数で応答型のMHPを2回以上起動させています。

継続問い合わせ応答型（type=cont）でないMHPから，dc_mcf_execap関数で継続問い合わせ応答型のMHPを2回以上起動させています。

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

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

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

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

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

DCMCFRTN_72041
-13041
単一セグメントを渡すdc_mcf_execap関数で，長さが0バイトのセグメントを渡しています。

DCMCFRTN_77001
-18001
起動しようとするアプリケーションに対応する論理端末は，現在仕掛り中で使用できません。または，使用できる論理端末がありません。

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

（凡例）

－：該当しません。

3.1.2　dc_mcf_receive － メッセージの受信

＜この項の構成＞

(1)　形式

(2)　機能

(3)　UAPで値を設定する引数

(4)　OpenTP1から値が返される引数

(5)　リターン値

(1)　形式

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;

(2)　機能

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

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

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

MCFイベント

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

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

(3)　UAPで値を設定する引数

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

{DCMCFFRST|DCMCFSEG}〔|{DCMDFBUF1|DCMDFBUF2}〕

DCMCFFRST

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

DCMCFSEG

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

DCMDFBUF1

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

DCMDFBUF2

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

　commform
DCNOFLAGSを設定します。

　termnam
中間セグメントまたは最終セグメントを受信する場合は，入力元の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。論理端末名称の最後にはヌル文字を付けてください。
先頭セグメントの処理終了後，termnamにはOpenTP1から値が返ります。

　resv01
ヌル文字を設定します。

　recvdata
セグメントを受信する領域を設定します。
dc_mcf_receive関数が終了すると，recvdataにはメッセージのセグメントの一つが返されます。
処理終了後，recvdataには，OpenTP1から値が返ります。

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

(4)　OpenTP1から値が返される引数

　termnam
先頭セグメントを受信する場合だけ，入力元の論理端末名称が返されます。論理端末名称は最大8バイトの長さです。論理端末名称の最後にはヌル文字が付けられます。
先頭セグメントの受信時に返された論理端末名称は，中間セグメントまたは最終セグメントの受信時にUAPでtermnamに設定します。

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

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

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

(5)　リターン値

リターン値
リターン値
（数値）
意味

DCMCFRTN_00000
0
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

（凡例）

－：該当しません。

3.1.3　dc_mcf_recvsync － 同期型メッセージの後続セグメント受信

＜この項の構成＞

(1)　形式

(2)　機能

(3)　UAPで値を設定する引数

(4)　OpenTP1から値が返される引数

(5)　リターン値

(1)　形式

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;

(2)　機能

相手システムから届いた論理メッセージ（同期型で受信）のうち，先頭セグメント以外の後続する一つのセグメントを受信します。先頭セグメントを受信するdc_mcf_sendrecv関数のあとに，後続するセグメントの数だけdc_mcf_recvsync関数を発行することによって一つの論理メッセージを受信できます。

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

(3)　UAPで値を設定する引数

　action
受信するセグメントが論理メッセージの先頭セグメントかどうかを，次の形式で設定します。

DCMCFSEG〔|{DCMCFBUF1|DCMCFBUF2}〕

DCMCFSEG

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

DCMCFBUF1

バッファ形式1のバッファを使用します。

DCMCFBUF2

バッファ形式2のバッファを使用します。

　commform
DCNOFLAGSを設定します。

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

　resv01
ヌル文字を設定します。

　recvdata
受信領域を設定します。
dc_mcf_recvsync関数がリターンすると，受信したメッセージのセグメントが設定されます。

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

　resv02
DCNOFLAGSを設定します。

(4)　OpenTP1から値が返される引数

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

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

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

(5)　リターン値

リターン値
リターン値
（数値）
意味

DCMCFRTN_00000
0
正常に終了しました。

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

DCMCFRTN_71002
-12002
MCFが終了処理中のため，受け付けられません。

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

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

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

リターン値DCMCFRTN_71001が返されたあとに，再び次のセグメントを受信するdc_mcf_recvsync関数を呼び出しました。

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

termnamに設定した論理端末名称は，MCFで定義されていません。

該当する論理端末では，dc_mcf_recvsync関数を呼び出せません。

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

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

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

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

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

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

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

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

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

（凡例）

－：該当しません。

3.1.4　dc_mcf_reply － 応答メッセージの送信

＜この項の構成＞

(1)　形式

(2)　機能

(3)　UAPで値を設定する引数

(4)　リターン値

(1)　形式

ANSI C，C++　の形式

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

K&R版C　の形式

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

(2)　機能

メッセージを入力した論理端末に送信する応答メッセージのうち，一つのセグメントを送信します。必要なセグメントの数だけdc_mcf_reply関数を発行することによって，一つの論理メッセージを送信できます。

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

(3)　UAPで値を設定する引数

　action
送信するセグメントが論理メッセージの最終セグメントかどうかを，次の形式で設定します。

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

DCMCFESI

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

DCMCFEMI

最終セグメントを応答送信する場合，および論理メッセージが単一セグメントの場合に設定します。さらに，先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合にもこの値を設定します。

DCMCFBUF1

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

DCMCFBUF2

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

　commform
DCNOFLAGSを設定します。

　resv01，resv02
ヌル文字を設定します。

　senddata
送信する応答メッセージのセグメントの内容を設定します。一つのセグメントで32000バイトまで送信できます。
メッセージの送信の終了を連絡する場合で，セグメントの内容がないときも，必ず設定してください。

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

　resv03
ヌル文字を設定します。

　opcd
DCNOFLAGSを設定します。

(4)　リターン値

リターン値
リターン値
（数値）
意味

DCMCFRTN_00000
0
正常に終了しました。

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

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

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

セグメント長に32000バイトを超える値を設定しています。

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

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

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

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

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

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

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

非応答型MHPから，dc_mcf_reply関数を呼び出しました。

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

DCMCFRTN_72001
-13001
該当する論理端末では，関数を呼び出せません。

DCMCFRTN_72005
-13005
先頭セグメントまたは中間セグメントを送信するdc_mcf_reply関数で，長さが0バイトのセグメントを送信しています。

DCMCFRTN_72008
-13008
最終セグメントを送信するdc_mcf_reply関数を呼び出したあとに，再びdc_mcf_reply関数を呼び出しています。

dc_mcf_execap関数を呼び出して応答型（type=ans）のMHPを起動させたあとに，dc_mcf_reply関数を呼び出しています。

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

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

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

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

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

DCMCFRTN_72041
-13041
送信するメッセージの内容がありません。単一セグメントを送信するdc_mcf_reply関数で，長さが0バイトのセグメントを送信しています。

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

（凡例）

－：該当しません。

3.1.5　dc_mcf_resend － メッセージの再送

＜この項の構成＞

(1)　形式

(2)　機能

(3)　UAPで値を設定する引数

(4)　リターン値

(5)　注意事項

(1)　形式

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;

(2)　機能

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

出力先の論理端末名称

メッセージ通番

メッセージ種別（一般送信，優先送信）

対象としたメッセージが以前に送信されていない場合は，dc_mcf_resend関数はリターン値DCMCFRTN_NOMSGを返します。また，メッセージキュー（ディスクキュー）内に対象のメッセージがない場合もリターン値DCMCFRTN_NOMSGを返します。このため，使用するメッセージキューの種別ではディスクキューを指定するとともに，メッセージキューファイルの容量および保持メッセージ（メッセージキューサービス定義のquegrpコマンドの-mオプションで指定）に余裕を持った値を設定してください。

(3)　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（一般の送信メッセージを対象）が設定されます。

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

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

　resv02，resv03，resv04
ヌル文字を設定します。

　opcd
DCNOFLAGSを設定します。

(4)　リターン値

リターン値
リターン値
（数値）
意味

DCMCFRTN_00000
0
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

（凡例）

－：該当しません。

(5)　注意事項

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

-eオプション

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

-lオプション

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

3.1.6　dc_mcf_send － メッセージの送信

＜この項の構成＞

(1)　形式

(2)　機能

(3)　UAPで値を設定する引数

(4)　リターン値

(1)　形式

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;

(2)　機能

MCFで管理する論理端末に送信するメッセージの，一つのセグメントを送信要求します。必要なセグメントの数だけ，dc_mcf_send関数を呼び出すと，一つの論理メッセージを送信できます。

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

(3)　UAPで値を設定する引数

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

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

DCMCFESI

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

DCMCFEMI

最終セグメントを送信する場合，および論理メッセージが単一セグメントの場合に設定します。メッセージの送信の終了を連絡するために，最後は必ずこの値を設定してください。

DCMCFNORM

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

DCMCFPRIO

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

DCMCFSEQ

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

DCMCFNSEQ

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

DCMCFBUF1

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

DCMCFBUF2

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

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

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

　resv01
ヌル文字を設定します。

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

　sdataleng
送信するメッセージのセグメントの長さを設定します。先頭セグメントまたは中間セグメントの送信後，メッセージの送信の終了を連絡する場合には，0を設定してください。

　resv02
ヌル文字を設定します。

　opcd
DCNOFLAGSを設定します。

(4)　リターン値

リターン値
リターン値
（数値）
意味

DCMCFRTN_00000
0
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

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

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

termnamに設定した出力先の論理端末名称は，MCFで定義されていません。

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

DCMCFRTN_72005
-13005
先頭セグメントまたは中間セグメントを送信するdc_mcf_send関数で，長さが0バイトのセグメントを送信しています。

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

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

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

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

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

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

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

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

DCMCFRTN_72041
-13041
単一セグメントを送信するdc_mcf_send関数で，長さが0バイトのセグメントを送信しています。

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

（凡例）

－：該当しません。

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

＜この項の構成＞

(1)　形式

(2)　機能

(3)　UAPで値を設定する引数

(4)　OpenTP1から値が返される引数

(5)　リターン値

(1)　形式

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 resv02)

K&R版C　の形式

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

(2)　機能

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

dc_mcf_sendrecv関数では，相手システムへ送る論理メッセージのうち，一つのセグメントを送信できます。必要なセグメントの数だけdc_mcf_sendrecv関数を発行することによって，一つの論理メッセージを送信できます。メッセージの最終セグメントを送信すると，dc_mcf_sendrecv関数は相手システムからの応答を待ちます。応答が届くと，そのメッセージの先頭セグメントを受信します。

中間セグメントおよび最終セグメントを受信する場合は，dc_mcf_recvsync関数を発行してください。

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

(3)　UAPで値を設定する引数

　action
送信するセグメントが論理メッセージの最終セグメントかどうかを，次の形式で設定します。

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

DCMCFESI

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

DCMCFEMI

最終セグメントを送信する場合，および論理メッセージが単一セグメントの場合に設定します。メッセージの送信の終了を連絡するために，最後は必ずこの値を設定してください。この値を設定してdc_mcf_sendrecv関数を発行すると，応答メッセージを待ちます。

DCMCFBUF1

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

DCMCFBUF2

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

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

　termnam
メッセージを出力して応答を入力する論理端末名称を設定します。論理端末名称は最大8バイトの長さです。論理端末名称の最後にはヌル文字を設定してください。

　resv01
ヌル文字を設定します。

　senddata
送信する応答メッセージのセグメントの内容を設定します。一つのセグメントで32000バイトまで送信できます。
メッセージの送信の終了を連絡する場合で，セグメントの内容がないときも，必ず設定してください。

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

　recvdata
受信領域を設定します。
単一セグメントまたは最終セグメントを送受信するdc_mcf_sendrecv関数がリターンすると，受信したメッセージの先頭セグメントが返されます。
処理終了後，recvdataにはOpenTP1から値が返ります。

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

　resv02
DCNOFLAGSを設定します。

(4)　OpenTP1から値が返される引数

　recvdata
受信したメッセージの先頭セグメントの内容が返されます。

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

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

(5)　リターン値

リターン値
リターン値
（数値）
意味

DCMCFRTN_00000
0
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

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

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

DCMCFRTN_72005
-13005
先頭セグメントまたは中間セグメントを送信するdc_mcf_sendrecv関数で，長さが0バイトのセグメントを送信しています。

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

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

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

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

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

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

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

DCMCFRTN_72041
-13041
単一セグメントを送信するdc_mcf_sendrecv関数で，長さが0バイトのセグメントを送信しています。

DCMCFRTN_73001
-14001
メッセージの送受信処理中に障害が発生しました。

DCMCFRTN_73002
-14002
論理端末が閉塞しています。

DCMCFRTN_73004
-14004
メッセージの送信処理中にタイムアウトが発生しました。

DCMCFRTN_73005
-14005
メッセージの受信処理中にタイムアウトが発生しました。

DCMCFRTN_73008
-14008
運用コマンドまたは障害による論理端末閉塞処理中に，dc_mcf_sendrecv関数を呼び出しました。

DCMCFRTN_73009
-14009
論理端末の閉塞解除の処理中に，dc_mcf_sendrecv関数を呼び出しました。

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

DCMCFRTN_73015
-14015
出力先の論理端末は，ほかのUAPで仕掛り中です。

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

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

（凡例）

－：該当しません。

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

COBOL言語のメッセージ送受信の文について説明します。TP1/NET/OSAS-NIFで扱うメッセージ送受信の文を次の表に示します。

表3-2　メッセージ送受信の文（COBOL言語）

プログラム名 | データ名 | 機能
CBLDCMCF | 'EXECAP△△' | アプリケーションプログラムの起動
'RECEIVE△' | メッセージの受信
'RECVSYNC' | 同期型メッセージの後続セグメント受信
'REPLY△△△' | 応答メッセージの送信
'RESEND△△' | メッセージの再送
'SEND△△△△' | メッセージの送信
'SENDRECV' | 同期型メッセージの送受信

＜この節の構成＞

3.2.1　CBLDCMCF('EXECAP ') － アプリケーションプログラムの起動

3.2.2　CBLDCMCF('RECEIVE ') － メッセージの受信

3.2.3　CBLDCMCF('RECVSYNC') － 同期型メッセージの後続セグメント受信

3.2.4　CBLDCMCF('REPLY ') － 応答メッセージの送信

3.2.5　CBLDCMCF('RESEND ') － メッセージの再送

3.2.6　CBLDCMCF('SEND ') － メッセージの送信

3.2.7　CBLDCMCF('SENDRECV') － 同期型メッセージの送受信

3.2.1　CBLDCMCF('EXECAP ') － アプリケーションプログラムの起動

＜この項の構成＞

(1)　形式

(2)　機能

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

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

(5)　ステータスコード

(1)　形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01 一意名1.
  02 データ名A  PIC X(8) VALUE 'EXECAP  '.
  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) VALUE SPACE.
  02 データ名K  PIC X(4) VALUE SPACE.
  02 データ名L  PIC X(8) VALUE SPACE.
  02 データ名M  PIC X(4) VALUE SPACE.
  02 データ名N  PIC X(8).
  02 データ名O1 PIC X(4) VALUE SPACE.
  02 データ名O2 PIC 9(9) COMP VALUE ZERO.
  02 データ名O3 PIC 9(9) COMP VALUE ZERO.
  02 データ名O4 PIC X(1) VALUE SPACE.
  02 データ名O5 PIC X(1).
  02 データ名P  PIC X(14) VALUE LOW-VALUE.
01 一意名2.
  02 データ名Q  PIC X(4) VALUE SPACE.
  02 データ名R  PIC X(8) VALUE SPACE.
  02 データ名S  PIC X(8) VALUE SPACE.
  02 データ名T  PIC X(6) VALUE SPACE.
  02 データ名U  PIC X(2) VALUE SPACE.
  02 データ名V  PIC X(28) VALUE LOW-VALUE.
01 一意名3.
  02 データ名W  PIC 9(x) COMP.
  02 データ名X  PIC X(x).
  02 データ名Y  PIC X(n).

(2)　機能

CBLDCMCF('EXECAP△△')は，TP1/NET/OSAS-NIFの場合，通信相手システムのアプリケーションプログラムを起動します。

また，システム内の通信ではUAP（SPPまたはMHP）から，データ名Nに設定したアプリケーション名のMHPを開始させます。

SPPからCBLDCMCF('EXECAP△△')を呼び出す場合は，SPPがトランザクションとして処理していることと，そのSPPのメインプログラムでMCF環境のオープン文を呼び出していることが前提です。

システム内のアプリケーションプログラムの起動については，マニュアル「OpenTP1 プログラム作成の手引」またはマニュアル「OpenTP1 プログラム作成リファレンス COBOL言語編」を参照してください。

開始させるMHPに渡すセグメントの領域（一意名3で示す領域）の形式を次に示します。

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

　データ名A
メッセージの送信を示す要求コード「VALUE 'EXECAP△△'」を設定します。

　データ名C，データ名D
空白を設定します。

　データ名E，データ名F
MCFで使用する領域です。

　データ名G
0を設定します。

　データ名H
開始させるMHPに渡すセグメントが，論理メッセージの最終セグメントかどうかを設定します。次のどちらかの値を設定してください。

VALUE 'ESI△'

先頭セグメントまたは中間セグメントを渡す場合に設定します。この値を設定したCBLDCMCF('EXECAP△△')文を呼び出した場合は，そのあとに必ずデータ名Hに「VALUE 'EMI△'」を設定したCBLDCMCF('EXECAP△△')文を呼び出してください。

VALUE 'EMI△'

最終セグメントを渡す場合，および論理メッセージが単一セグメントの場合に設定します。さらに，先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合にもこの値を設定してください。

　データ名I，データ名J，データ名K，データ名L，データ名M
空白を設定します。

　データ名N
この文を発行したMHPが終了したあとに起動するMHPのアプリケーション名を設定します。アプリケーション名は最大8バイトの長さです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

　データ名O1
空白を設定します。

　データ名O2，データ名O3
0を設定します。

　データ名O4
空白を設定します。

　データ名O5
使用するバッファ形式を設定します。

VALUE '1'

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

VALUE '2'

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

空白

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

　データ名P
MCFで使用する領域です。

　データ名Q，データ名R，データ名S，データ名T，データ名U
空白を設定します。

　データ名V
MCFで使用する領域です。

　データ名W

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

送信セグメントの長さを設定します。

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

送信セグメントの長さ＋4を設定します。

先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合には，送信セグメントの長さに0を設定してください。

　データ名X

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

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

MCFで使用する領域です。

　データ名Y
起動させるMHPに渡すセグメント内容を設定します。
先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合にも必ず設定してください。

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

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

(5)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

セグメント長に32000バイトを超える値を設定しています。

MCFが終了処理中のため，データ名Nに設定したMHPを起動できません。

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

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

71108
MHPを開始しようとしましたが，開始しようとしたMHPの管理テーブルを確保できませんでした。

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

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

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

72001
データ名Nに設定したアプリケーション名は，MCFで定義されていません。

データ名Nに設定したアプリケーション名が間違っています。

MCFマネジャ定義の通信サービス定義（mcfmcname）に，アプリケーション起動プロセス名またはMCF通信プロセス名を指定していません。

アプリケーション起動プロセス，またはMCF通信プロセスに対応するMCFアプリケーション定義の環境定義（mcfaenv -p）に，アプリケーション起動プロセス識別子を指定していません。

アプリケーション環境定義（mcfaenv -p）で指定したアプリケーション起動プロセス識別子と，アプリケーション起動プロセス，またはMCF通信プロセスのMCF通信構成定義（mcftenv -s）で指定する識別子が一致していません。

＜論理端末名称を指定してアプリケーションを起動する場合＞

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のlnameオペランドに論理端末を指定していません。

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のlnameオペランドに指定した論理端末を，MCF通信プロセスのMCF通信構成定義（mcftalcle）に定義していません。

起動先アプリケーションのアプリケーション属性定義に指定した論理端末が，request型論理端末またはsend型論理端末ではありません。

起動先アプリケーションのアプリケーション属性定義で指定した論理端末は，アプリケーション起動を使えません。

＜コネクションIDを指定してアプリケーションを起動する場合＞

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のcnameオペランドにコネクションIDを指定していません。

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のcnameオペランドに指定したコネクションIDを，MCF通信プロセスのMCF通信構成定義（mcftalccn）に定義していません。

MCF通信プロセスのMCF通信構成定義（mcftalcle）に，request型論理端末を指定していません。

＜SPPからアプリケーションを起動する場合＞

アプリケーション起動プロセス識別子を起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定していません。

起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定しているアプリケーション起動プロセス識別子が，アプリケーション起動プロセス，またはMCF通信プロセスのMCF通信構成定義（mcftenv -s），およびアプリケーション環境定義（mcfaenv -p）で指定しているアプリケーション起動プロセス識別子と一致していません。

起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_mgridオペランドに指定しているMCFマネジャ識別子が，アプリケーション起動プロセスが属しているMCFマネジャの識別子と一致していません。

72005
先頭セグメントまたは中間セグメントを渡すCBLDCMCF('EXECAP△△')で，データ名Wに0（バッファ形式1）または4以下（バッファ形式2）の値を設定しています。

72007
CBLDCMCF('REPLY△△△')をすでに呼び出した応答型（type=ans）のMHPから，応答型のMHPをCBLDCMCF('EXECAP△△')で起動させています。

CBLDCMCF('REPLY△△△')をすでに呼び出した継続問い合わせ応答型（type=cont）のMHPから，継続問い合わせ応答型のMHPをCBLDCMCF('EXECAP△△')で起動させています。

72009
応答型（type=cont）のMHPから，CBLDCMCF('EXECAP△△')で応答型のMHPを2回以上起動させています。

継続問い合わせ応答型（type=cont）のMHPから，CBLDCMCF('EXECAP△△')で継続問い合わせ応答型のMHPを2回以上起動させています。

72011
継続問い合わせ応答型（type=cont）でないMHPから，CBLDCMCF('EXECAP△△')で継続問い合わせ応答型のMHPを起動させています。

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

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

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

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

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

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

72041
単一セグメントを渡すCBLDCMCF('EXECAP△△')で，データ名Wに0（バッファ形式1）または4以下（バッファ形式2）の値を設定しています。

77001
起動しようとするアプリケーションに対応する論理端末は，現在仕掛り中で使用できません。または，使用できる論理端末がありません。

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

3.2.2　CBLDCMCF('RECEIVE ') － メッセージの受信

＜この項の構成＞

(1)　形式

(2)　機能

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

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

(5)　ステータスコード

(1)　形式

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).

(2)　機能

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

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

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

MCFイベント

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

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

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

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

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

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
中間セグメントまたは最終セグメントを受信する場合，入力元の論理端末名称を設定します。先頭セグメントの受信時に返された論理端末名称を設定してください。論理端末名称は最大8バイトの長さです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。
先頭セグメントの受信処理終了後，データ名PにはOpenTP1から値が返ります。

　データ名Q
MCFで使用する領域です。

　データ名R
空白を設定します。

　データ名T
MCFで使用する領域です。

　データ名V

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

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

MCFで使用する領域です。

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

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

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

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

　データ名P
先頭セグメントを受信する場合，入力元の論理端末名称が返されます。論理端末名称は最大8バイトの長さです。8バイトに満たない名称が返される場合は，最後に空白が付けられます。
中間セグメントまたは最終セグメントを受信する場合は，ここで返された論理端末名称をデータ名Pに設定します。

　データ名U

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

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

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

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

　データ名W
受信したセグメントが返されます。

(5)　ステータスコード

ステータスコード
意味

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バイト以上の領域を確保してください。

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

3.2.3　CBLDCMCF('RECVSYNC') － 同期型メッセージの後続セグメント受信

＜この項の構成＞

(1)　形式

(2)　機能

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

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

(5)　ステータスコード

(1)　形式

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) VALUE 'SEG '.
  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 データ名Y  PIC X(n).

(2)　機能

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

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

(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(8)

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

MCFで使用する領域です。

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

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

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

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

　データ名U

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

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

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

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

　データ名Y
受信した論理メッセージのセグメントの内容が返されます。

(5)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

71002
MCFが終了処理中のため，受け付けられません。

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

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

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

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

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

データ名Pに設定した論理端末名称は，MCFで定義されていません。

該当する論理端末では，CBLDCMCF('RECVSYNC')を発行できません。

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

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

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

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

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

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

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

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

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

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

3.2.4　CBLDCMCF('REPLY ') － 応答メッセージの送信

＜この項の構成＞

(1)　形式

(2)　機能

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

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

(5)　ステータスコード

(1)　形式

PROCEDURE DIVISION　の指定

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

DATA DIVISION　の指定

01 一意名1.
  02 データ名A  PIC X(8) VALUE 'REPLY   '.
  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) 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) VALUE SPACE.
  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).

(2)　機能

メッセージを入力した論理端末に送信する応答メッセージのうち，一つのセグメントを送信要求します。必要なセグメントの数だけCBLDCMCF('REPLY△△△')を発行することによって，一つの論理メッセージを送信できます。

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

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

　データ名A
応答メッセージの送信を示す要求コード「VALUE 'REPLY△△△'」を設定します。

　データ名C，データ名D
空白を設定します。

　データ名E，データ名F
MCFで使用する領域です。

　データ名G
0を設定します。

　データ名H
メッセージの最終セグメントを送信するかどうかを設定します。次のどちらかの値を設定してください。

VALUE 'ESI△'

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

VALUE 'EMI△'

最終セグメントを送信する場合，および論理メッセージが単一セグメントの場合に設定します。さらに，先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合にもこの値を設定します。

　データ名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，データ名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バイトまで送信できます。メッセージの送信の終了を連絡する場合で，セグメントの内容がないときも必ず設定してください。

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

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

(5)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

セグメント長に32000バイトを超える値を設定しています。

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

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

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

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

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

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

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('REPLY△△△')を呼び出しました。

非応答型のMHPからCBLDCMCF('REPLY△△△')を呼び出しました。

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

72001
該当する論理端末では，CBLDCMCF('REPLY△△△')を呼び出せません。

72005
先頭セグメントまたは中間セグメントを送信するCBLDCMCF('REPLY△△△')で，長さが0バイトのセグメントを送信しています。

72008
最終セグメントを送信するCBLDCMCF('REPLY△△△')を呼び出したあとに，再びCBLDCMCF('REPLY△△△')を呼び出しています。

CBLDCMCF('EXECAP△△')を呼び出して応答型（type=ans）のMHPを起動させたあとに，CBLDCMCF('REPLY△△△')を呼び出しています。

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

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

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

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

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

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

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

72041
送信するメッセージの内容がありません。単一セグメントを送信するCBLDCMCF('REPLY△△△')で，長さが0バイトのセグメントを送信しています。

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

3.2.5　CBLDCMCF('RESEND ') － メッセージの再送

＜この項の構成＞

(1)　形式

(2)　機能

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

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

(5)　ステータスコード

(6)　注意事項

(1)　形式

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.

(2)　機能

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

出力先の論理端末名称

メッセージ通番

メッセージ種別（一般送信，優先送信）

対象としたメッセージが以前に送信されていない場合は，CBLDCMCF('RESEND△△')はステータスコード70904を返します。また，メッセージキュー（ディスクキュー）内に対象のメッセージがない場合もステータスコード70904を返します。このため，使用するメッセージキューの種別ではディスクキューを指定するとともに，メッセージキューファイルの容量および保持メッセージ（メッセージキューサービス定義のquegrpコマンドの-mオプションで指定）に余裕を持った値を設定してください。

(3)　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'」（一般の送信メッセージを対象）が設定されます。

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

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

VALUE 'LAST'

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

空白

省略されたものとして，最終出力通番を持つメッセージを再送対象としないことが設定されます。

　データ名X
MCFで使用する領域です。

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

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

(5)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

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

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('RESEND△△')を呼び出しています。

非トランザクション属性のMHPからCBLDCMCF('RECEIVE△')を呼び出しています。

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

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

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

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

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

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

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

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

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

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

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

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

(6)　注意事項

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

-eオプション

-eオプションでは，CBLDCMCF('RESEND△△')で使用する作業領域の大きさを指定します。

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

-lオプション

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

3.2.6　CBLDCMCF('SEND ') － メッセージの送信

＜この項の構成＞

(1)　形式

(2)　機能

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

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

(5)　ステータスコード

(1)　形式

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).

(2)　機能

MCFで管理する論理端末に送信するメッセージのうち，一つのセグメントを送信要求します。必要なセグメントの数だけ，CBLDCMCF('SEND△△△△')を発行することによって，一つの論理メッセージを送信できます。

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

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

　データ名A
一方送信メッセージの送信を示す要求コード「VALUE 'SEND△△△△'」を設定します。

　データ名C，データ名D
空白を設定します。

　データ名E，データ名F
MCFで使用する領域です。

　データ名G
0を設定します。

　データ名H
メッセージの最終セグメントを送信するかどうかを設定します。
次のどちらかの値を設定してください。

VALUE 'ESI△'

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

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バイトまで送信できます。
先頭セグメントまたは中間セグメントの送信後，メッセージの送信の終了を連絡する場合にも，必ず設定してください。

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

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

(5)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

72041
単一セグメントを送信するCBLDCMCF('SEND△△△△')で，データ名Uに0（バッファ形式1の場合）または4以下（バッファ形式2の場合）の値を設定しています。

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

3.2.7　CBLDCMCF('SENDRECV') － 同期型メッセージの送受信

＜この項の構成＞

(1)　形式

(2)　機能

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

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

(5)　ステータスコード

(1)　形式

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 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 '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).

(2)　機能

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

CBLDCMCF('SENDRECV')では，相手システムへ送る論理メッセージのうち，一つのセグメントを送信できます。必要なセグメントの数だけCBLDCMCF('SENDRECV')を発行することによって，一つの論理メッセージを送信できます。

メッセージの最終セグメントを送信すると，CBLDCMCF('SENDRECV')は相手システムからの応答を待ちます。応答が届くと，そのメッセージの先頭セグメントを受信します。

中間セグメントおよび最終セグメントを受信する場合はCBLDCMCF('RECVSYNC')を発行してください。

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

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

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

　データ名A
同期型メッセージの送受信を示す要求コード「VALUE 'SENDRECV'」を設定します。

　データ名C，データ名D
空白を設定します。

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

　データ名H
メッセージの最終セグメントを送信するかどうかを設定します。次のどちらかの値を設定してください。

VALUE 'ESI△'

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

VALUE 'EMI△'

最終セグメントを送信する場合，および論理メッセージが単一セグメントの場合に設定します。さらに，先頭セグメントまたは中間セグメントの引き渡し後，メッセージの引き渡しの終了を連絡する場合にもこの値を設定します。この値を設定してCBLDCMCF('SENDRECV')を発行すると，論理端末からの応答を待ちます。

　データ名I，データ名J，データ名K，データ名L，データ名M1，データ名M2，データ名M3
空白を設定します。

　データ名M4，データ名M5
0を設定します。

　データ名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で使用する領域です。

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

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

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

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

　データ名X

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

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

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

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

　データ名Z
受信した論理メッセージの先頭セグメントの内容が返されます。

(5)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

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

MCFが終了処理中のため，受け付けられません。

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

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

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

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

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

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

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

72005
先頭セグメントまたは中間セグメントを送信するCBLDCMCF('SENDRECV')で，長さが0バイトのセグメントを送信しています。

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

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

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

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

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

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

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

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

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

72041
単一セグメントを送信するCBLDCMCF('SENDRECV')で，長さが0バイトのセグメントを送信しています。

73001
メッセージの送受信処理中に障害が発生しました。

73002
論理端末が閉塞されています。

73004
メッセージの送信処理中にタイムアウトが発生しました。

73005
メッセージの受信処理中にタイムアウトが発生しました。

73008
運用コマンドまたは障害による論理端末閉塞処理中に，CBLDCMCF('SENDRECV')を呼び出しました。

73009
論理端末閉塞解除処理中に，CBLDCMCF('SENDRECV')を呼び出しました。

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

73015
出力先の論理端末は，ほかのUAPで仕掛り中です。

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

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

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

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

なお，TP1/NET/OSAS-NIFでは，通信相手システムのアプリケーションプログラムを起動することも，メッセージの送信に該当します。

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

通信文 | 機能 | 対応するCALLインタフェース
データコミュニケーション機能 | RECEIVE | メッセージの受信 | CBLDCMCF('RECEIVE△')
SEND | アプリケーションプログラムの起動 | CBLDCMCF('EXECAP△△')
応答メッセージの送信 | CBLDCMCF('REPLY△△△')
メッセージの送信 | CBLDCMCF('SEND△△△△')
同期型メッセージの送受信 | CBLDCMCF('SENDRECV')

注

データ操作言語ではRECVSYNCおよびRESENDに対応する通信文はありません。

＜この節の構成＞

3.3.1　RECEIVE － メッセージの受信

3.3.2　SEND － アプリケーションプログラムの起動，応答メッセージの送信，メッセージの送信，同期型メッセージの送受信

3.3.1　RECEIVE － メッセージの受信

＜この項の構成＞

(1)　形式

(2)　機能

(3)　通信記述項に設定する項目

(4)　通信文に指定する項目

(5)　ステータスコード

(1)　形式

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.

(2)　機能

次に示すCALLインタフェースの機能を実現します。

メッセージの受信　CBLDCMCF('RECEIVE△')

(3)　通信記述項に設定する項目

　FOR句
次のどちらかの値を指定します。

INPUT

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

I-O

問い合わせメッセージの受信

　STATUS KEY句
ステータスコードを受け取りたい場合に指定します。省略した場合は，ステータスコードを受け取りません。

　SYMBOLIC TERMINAL句
入力元の論理端末名称を参照するためのデータ項目を指定します。

　MESSAGE DATE句
メッセージを受信した日付を参照するデータ項目を指定します。YYMMDD（YY：西暦の下2けた　MM：月　DD：日）の形式で参照できます。

　MESSAGE TIME句
メッセージを受信した時刻を参照するデータ項目を指定します。HHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で参照できます。

(4)　通信文に指定する項目

　FIRST
先頭セグメントを受信する場合に指定します。

　一意名1
セグメントを受信するデータ項目を指定します。一意名1の形式を次に示します。

(5)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

71000
先頭セグメントを受信するRECEIVE文を2回以上呼び出しています。
中間セグメントまたは最終セグメントを受信する場合は，FIRSTを指定しないでRECEIVE文を呼び出してください。

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

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

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

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

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

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

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

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

先頭セグメントを受信するRECEIVE文を呼び出す前に，中間セグメントまたは最終セグメントを受信するRECEIVE文を呼び出しています。先頭セグメントを受信する場合は，FIRSTを指定してRECEIVE文を呼び出してください。

ステータスコード71001が返されたあとで，RECEIVE文を呼び出しています。

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

ステータスコード71001が返されたあとに，再びRECEIVE文を呼び出しました。

72001
SYMBOLIC TERMINAL 句に設定した論理端末名称が間違っています。

RECEIVE文を呼び出せない論理端末を設定しています。

72013
一意名1のLの指定値を超えるセグメントを受信しました。一意名1のLの指定値を超えた部分は切り捨てられました。

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

72024
FOR句に設定した値が間違っています。

72036
一意名1のLが不足しています。5バイト以上の領域を確保してください。

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

3.3.2　SEND － アプリケーションプログラムの起動，応答メッセージの送信，メッセージの送信，同期型メッセージの送受信

＜この項の構成＞

(1)　形式1（セグメントの内容を設定して送信する場合）

(2)　形式2（セグメントの内容を設定しないで，メッセージの送信の終了だけ連絡する場合）

(3)　機能

(4)　通信記述項に設定する項目

(5)　通信文に指定する項目

(6)　ステータスコード

(1)　形式1（セグメントの内容を設定して送信する場合）

DATA DIVISION（通信記述項）の指定

CD 通信記述名
  FOR{OUTPUT PROGRAM|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〕.

PROCEDURE DIVISION（通信文）の指定

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

(2)　形式2（セグメントの内容を設定しないで，メッセージの送信の終了だけ連絡する場合）

DATA DIVISION（通信記述項）の指定

CD 通信記述名
  FOR {OUTPUT PROGRAM|OUTPUT|I-O}
  〔STATUS KEY IS データ名1〕
  〔SYMBOLIC TERMINAL IS データ名2〕
  〔SWITCHING MODE IS {NORMAL|PRIOR|データ名7}〕.

PROCEDURE DIVISION（通信文）の指定

SEND 通信記述名 WITH EMI.

(3)　機能

次に示すCALLインタフェースの機能を実現します。

アプリケーションプログラムの起動　CBLDCMCF('EXECAP△△')

応答メッセージの送信　CBLDCMCF('REPLY△△△')

メッセージの送信　CBLDCMCF('SEND△△△△')

同期型メッセージの送受信　CBLDCMCF('SENDRECV')※

注※

単一セグメントだけ扱えます。

(4)　通信記述項に設定する項目

　FOR句
次のどれかを指定します。

OUTPUT PROGRAM

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

OUTPUT

メッセージの送信

I-O

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

　STATUS KEY句
ステータスコードを受け取りたい場合に指定します。省略した場合は，ステータスコードは受け取りません。

　SYMBOLIC TERMINAL句
FOR句の設定内容によって，次のどれかを設定します。

OUTPUT PROGRAM

アプリケーション名を設定したデータ項目を指定します。

OUTPUT

論理端末名称を設定したデータ項目を指定します。

I-O

論理端末名称を設定したデータ項目を指定します。

　SYNCHRONOUS MODE句
メッセージ送信が同期型か非同期型かを設定します。

SYNC

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

ASYNC

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

データ名6

次の値を設定したデータ項目

'0'：非同期型メッセージの送信

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

省略した場合は，非同期型メッセージ送信（ASYNC）が設定されます。

　SWITCHING MODE句
メッセージ送信時，一般か優先かを指定します。

NORMAL

一般のメッセージ送信

PRIOR

優先のメッセージ送信

データ名7

次の値を設定したデータ項目

'0'または'△'：一般のメッセージ送信

'1'：優先のメッセージ送信

省略した場合は，一般のメッセージ送信（NORMAL）が設定されます。

　DETAIL MODE句
メッセージ送信時，出力通番を付けるかどうかを指定します。

データ名10

次の値を設定したデータ項目

'0'または'△'：出力通番を付けます。

'1'：出力通番を付けません。

省略した場合は，出力通番を付けます。

(5)　通信文に指定する項目

　一意名1
メッセージセグメント送信領域を示すデータ項目を設定します。一意名1の形式を次に示します。

　WITH句
送信するセグメントが，論理メッセージの最終セグメントかどうかを指定します。

ESI

先頭セグメントまたは中間セグメントの送信

EMI

最終セグメントまたは単一セグメントの送信

一意名2

次の値を設定したデータ項目

'1'：ESI（先頭セグメントまたは中間セグメントの送信）

'2'：EMI（最終セグメントまたは単一セグメントの送信）

省略した場合は，EMI（最終セグメントまたは単一セグメントの送信）が設定されます。
なお，同期型メッセージの送受信の場合は，EMIを指定するか，または指定を省略してください。

　BEFORE句
同期型メッセージの送受信の場合，メッセージ送信後に受信するメッセージを格納するデータ項目を設定します。一意名3の形式を次に示します。

(6)　ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

一意名1のLに32000バイトを超える値を設定しています。

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

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

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

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

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

72000
FOR句にI-Oを設定していますが，SYNCHRONOUS MODE句でSYNCを設定していません。

＜MHPの実行でリターンした場合＞
先頭セグメントを受信するRECEIVE文を呼び出す前に，SEND文を呼び出しています。
非応答型のMHPから応答メッセージを送信しています。

＜SPPの実行でリターンした場合＞
トランザクションでないSPPの処理から，SEND文を呼び出しています。
SPPでは応答メッセージを送信するSEND文を呼び出せません。

72001
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。

SEND文を呼び出せない論理端末を設定しています。

設定したアプリケーション名は，MCFで定義されていません。

アプリケーション名が間違っています。

MCFマネジャ定義の通信サービス定義（mcfmcname）に，アプリケーション起動プロセス名またはMCF通信プロセス名を指定していません。

アプリケーション起動プロセス，またはMCF通信プロセスに対応するMCFアプリケーション定義の環境定義（mcfaenv -p）に，アプリケーション起動プロセス識別子を指定していません。

アプリケーション環境定義（mcfaenv -p）で指定したアプリケーション起動プロセス識別子と，アプリケーション起動プロセス，またはMCF通信プロセスのMCF通信構成定義（mcftenv -s）で指定する識別子が一致していません。

＜論理端末名称を指定してアプリケーションを起動する場合＞

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のlnameオペランドに論理端末を指定していません。

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のlnameオペランドに指定した論理端末を，MCF通信プロセスのMCF通信構成定義（mcftalcle）に定義していません。

起動先アプリケーションのアプリケーション属性定義に指定した論理端末が，request型論理端末またはsend型論理端末ではありません。

起動先アプリケーションのアプリケーション属性定義で指定した論理端末はアプリケーション起動を使えません。

＜コネクションIDを指定してアプリケーションを起動する場合＞

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のcnameオペランドにコネクションIDを指定していません。

起動先アプリケーションのアプリケーション属性定義（mcfaalcap -n）のcnameオペランドに指定したコネクションIDを，MCF通信プロセスのMCF通信構成定義（mcftalccn）に定義していません。

MCF通信プロセスのMCF通信構成定義（mcftalcle）に，request型論理端末を指定していません。

＜SPPからアプリケーションを起動する場合＞

アプリケーション起動プロセス識別子を起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定していません。

起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_psv_idオペランドに指定しているアプリケーション起動プロセス識別子が，アプリケーション起動プロセス，またはMCF通信プロセスのMCF通信構成定義（mcftenv -s），およびアプリケーション環境定義（mcfaenv -p）で指定しているアプリケーション起動プロセス識別子と一致していません。

起動元のUAPのユーザサービス定義，またはユーザサービスデフォルト定義のmcf_mgridオペランドに指定しているMCFマネジャ識別子が，アプリケーション起動プロセスが属しているMCFマネジャの識別子と一致していません。

72005
先頭セグメントまたは中間セグメントを送信するSEND文で，送信セグメント長に4以下の値を設定しています。

72007
応答型（type=ans）のMHPで，応答メッセージを送信したあとで，応答型のMHPを起動しています。

継続問い合わせ応答型（type=cont）のMHPで，応答メッセージを送信したあとで，継続問い合わせ応答型のMHPを起動しています。

72008
応答メッセージの最終セグメントを送信するSEND文を呼び出したあとに，再び応答メッセージを送信するSEND文を呼び出しています。

SEND文を呼び出して応答型（type=ans）のMHPを起動させたあとに，応答メッセージを送信するSEND文を呼び出しています。

72009
応答型（type=ans）のMHPを2回以上起動しています。

継続問い合わせ応答型（type=cont）のMHPを2回以上起動しています。

72011
応答型（type=ans）でないMHPから，応答型のMHPを起動させています。

継続問い合わせ応答型（type=cont）でないMHPから，継続問い合わせ応答型のMHPを起動しています。

72013
一意名1のLの指定値を超えるセグメントを受信しました。一意名1のLの指定値を超えた部分は切り捨てられました。

72017
DETAIL MODE句に設定した値が間違っています。

72018
SWITCHING MODE句に設定した値が間違っています。

72020
SYNCHRONOUS MODE句に設定した値が間違っています。

72024
FOR句に設定した値が間違っています。

72026
WITH句に設定した値が間違っています。

72036
セグメントを受信する領域（一意名3）の長さが不足しています。5バイト以上の領域を確保してください。

72041
単一セグメントを送信するSEND文で，一意名1のLに4以下の値を設定しています。

72044
継続問い合わせ応答を終了したあとで，継続問い合わせ応答型（type=cont）のMHPから，SEND文で継続問い合わせ応答型のMHPを起動させています。

73001
メッセージの送受信処理中に障害が発生しました。

73002
論理端末が閉塞されています。

73004
メッセージの送信処理中にタイムアウトが発生しました。

73005
メッセージの受信処理中にタイムアウトが発生しました。

73008
運用コマンドまたは障害による論理端末閉塞処理中に，SEND文を呼び出しました。

73009
論理端末閉塞解除処理中に，SEND文を呼び出しました。

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

73015
出力先の論理端末は，ほかのUAPで仕掛り中です。

73018
WAITING TIME 句に設定した値が間違っています。

77001
起動しようとするアプリケーションに対応する論理端末は，現在仕掛り中で使用できません。または，使用できる論理端末がありません。

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

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

UAPの作成例の処理の流れを次の図に示します。

図3-1　UAPの作成例の処理の流れ

図3-1で示したUAPに対応するC言語，COBOL言語およびデータ操作言語のコーディング例は，次の表に示すファイルで提供しています。

表3-4　TP1/NET/OSAS-NIFが提供するUAPのコーディング例

使用言語 | 提供ファイル | マニュアル記載個所
C言語（ANSI C，C++） | /BeTRAN/examples/mcf/OSASNIF/aplib/ansi/ap.c | 3.4.1(1)
C言語（K&R版C） | /BeTRAN/examples/mcf/OSASNIF/aplib/c/ap.c | 3.4.1(2)
COBOL言語 | /BeTRAN/examples/mcf/OSASNIF/aplib/cobol/ap.cbl | 3.4.2
データ操作言語 | /BeTRAN/examples/mcf/OSASNIF/aplib/dml/ap.cbl | 3.4.3

＜この節の構成＞

3.4.1　C言語

3.4.2　COBOL言語

3.4.3　データ操作言語

3.4.1　C言語

＜この項の構成＞

(1)　ANSI C，C++の場合

(2)　K&R版Cの場合

(1)　ANSI C，C++の場合

/*
* MHP SERVICE FUNCTION
*/

#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <dcmcf.h>
#include <dcrpc.h>

void SVRA(void)
{
    DCLONG action ;
    DCLONG commform ;
    DCLONG opcd ;
    DCLONG active ;
    char   recvdata[1024] ;
    DCLONG rdataleng ;
    DCLONG time ;
    DCLONG inbufleng ;
    int    rtn_cod ;
    DCLONG cdataleng ;
    char   termnam[10] ;
    struct dataform { char mcfuse[8] ;
                      char trnname[9] ;
                      char data[23] ;
                    } ;
    static struct dataform execdata ;
    static struct dataform senddata ;
    static char resv01[9] ;
    static char resv02[9] ;
    static char apnam[9] ;

    strncpy(execdata.mcfuse, "        ", 8) ;
    strncpy(execdata.trnname, "         ", 9) ;
    strcpy(execdata.data, "SRVA EXECAP DATA") ;
    strncpy(senddata.mcfuse, "        ", 8) ;
    senddata.trnname[0] = 0xc1 ;  /* A */
    senddata.trnname[1] = 0xd7 ;  /* P */
    senddata.trnname[2] = 0xd3 ;  /* L */
    senddata.trnname[3] = 0xf0 ;  /* 0 */
    senddata.trnname[4] = 0xf2 ;  /* 2 */
    senddata.trnname[5] = 0x40 ;  /*   */
    senddata.trnname[6] = 0x40 ;  /*   */
    senddata.trnname[7] = 0x40 ;  /*   */
    senddata.trnname[8] = 0x40 ;  /*   */
    strcpy(senddata.data, "SRVA SEND   DATA") ;
    strcpy(execdata.mcfuse, "" ) ;
    strcpy(resv02, "") ;
    strcpy(apnam, "APL01") ;

/*
* MCF-RECEIVE(MESSAGE RECEIVING)
*/

    action = DCMCFFRST ;
    commform = DCNOFLAGS ;
    inbufleng = sizeof(recvdata) ;
    rtn_cod = dc_mcf_receive(action, commform, termnam, resv01,
                             recvdata, &rdataleng, inbufleng, &time) ;
    if(rtn_cod != DCMCFRTN_00000) {
/*
* MCF-ROLLBACK(ERROR PROCESSING)
*/
    rtn_cod = dc_mcf_rollback(DCMCFNRTN) ;
    }
/*
* MCF-EXECAP(APPICATION PROGRAM BOOTING)
*/
    action = DCMCFEMI|DCMCFJUST ;
    commform = DCNOFLAGS ;
    active = 0 ;
    cdataleng = 25 ;
    rtn_cod = dc_mcf_execap(action, commform, resv01, active,
                            apnam, (char*)&execdata, cdataleng) ;
    if(rtn_cod != DCMCFRTN_00000) {
/*
* MCF-ROLLBACK(ERROR PROCESSING)
*/
    rtn_cod = dc_mcf_rollback(DCMCFNRTN) ;
    }
/*
* MCF-SEND(MESSAGE SENDING)
*/
    action = DCMCFEMI ;
    commform = DCMCFOUT ;
    strcpy(termnam, "NFLE02");
    opcd = DCNOFLAGS ;
    cdataleng = 25 ;
    rtn_cod = dc_mcf_send(action, commform, termnam, resv01,
                          (char *)&senddata, cdataleng, resv02, opcd) ;
    if(rtn_cod != DCMCFRTN_00000) {
/*
* MCF ROLLBACK(ERROR PROCESSING)
*/
    rtn_cod = dc_mcf_rollback(DCMCFNRTN) ;
    }
}

(2)　K&R版Cの場合

/*
* MHP SERVICE FUNCTION
*/
#include <stdio.h>
#include <sys/types.h>
#include <dcmcf.h>
#include <dcrpc.h>

SVRA()
{
    DCLONG action ;
    DCLONG commform ;
    DCLONG opcd ;
    DCLONG active ;
    char   recvdata[1024] ;
    DCLONG rdataleng ;
    DCLONG time ;
    DCLONG inbufleng ;
    int    rtn_cod ;
    DCLONG cdataleng ;
    char   termnam[10] ;
    struct dataform { char mcfuse[8] ;
                      char trnname[9] ;
                      char data[23] ;
                    } ;
    static struct dataform execdata ;
    static struct dataform senddata ;
    static char resv01[9] ;
    static char resv02[9] ;
    static char apnam[9] ;

    strncpy(execdata.mcfuse, "        ", 8) ;
    strncpy(execdata.trnname, "         ", 9) ;
    strcpy(execdata.data, "SRVA EXECAP DATA") ;
    strncpy(senddata.mcfuse, "        ", 8) ;
    senddata.trnname[0] = 0xc1 ;  /* A */
    senddata.trnname[1] = 0xd7 ;  /* P */
    senddata.trnname[2] = 0xd3 ;  /* L */
    senddata.trnname[3] = 0xf0 ;  /* 0 */
    senddata.trnname[4] = 0xf2 ;  /* 2 */
    senddata.trnname[5] = 0x40 ;  /*   */
    senddata.trnname[6] = 0x40 ;  /*   */
    senddata.trnname[7] = 0x40 ;  /*   */
    senddata.trnname[8] = 0x40 ;  /*   */
    strcpy(senddata.data, "SRVA SEND   DATA") ;
    strcpy(execdata.mcfuse, "" ) ;

    strcpy(resv02, "") ;
    strcpy(apnam, "APL01") ;

/*
* MCF-RECEIVE(MESSAGE RECEIVING)
*/
    action = DCMCFFRST ;
    commform = DCNOFLAGS ;
    inbufleng = sizeof(recvdata) ;
    rtn_cod = dc_mcf_receive(action, commform, termnam, resv01, recvdata,
                             &rdataleng, inbufleng, &time) ;
    if(rtn_cod != DCMCFRTN_00000) {
/*
* MCF-ROLLBACK(ERROR PROCESSING)
*/
    rtn_cod = dc_mcf_rollback(DCMCFNRTN) ;
    }
/*
* MCF-EXECAP(APPLICATION PROGRAM BOOTING)
*/
    action = DCMCFEMI|DCMCFJUST ;
    commform = DCNOFLAGS ;
    active = 0 ;
    cdataleng = 25 ;
    rtn_cod = dc_mcf_execap(action, commform, resv01, active,
                            apnam, (char*)&execdata, cdataleng) ;
    if(rtn_cod != DCMCFRTN_00000) {
/*
* MCF-ROLLBACK(ERROR PROCESSING)
*/
    rtn_cod = dc_mcf_rollback(DCMCFNRTN) ;
    }
/*
* MCF-SEND(MESSAGE SENDING)
*/
    action = DCMCFEMI ;
    commform = DCMCFOUT ;
    strcpy(termnam, "NFLE02");
    opcd = DCNOFLAGS ;
    cdataleng = 25 ;
    rtn_cod = dc_mcf_send(action, commform, termnam, resv01,
                          (char *)&senddata, cdataleng, resv02, opcd) ;
    if(rtn_cod != DCMCFRTN_00000) {
/*
* MCF ROLLBACK(ERROR PROCESSING)
*/    
    rtn_cod = dc_mcf_rollback(DCMCFNRTN) ;
    }
}

3.4.2　COBOL言語

***************************************************************
*    MHP SERVICE PROGRAM                                      *
***************************************************************

IDENTIFICATION DIVISION.

PROGRAM-ID. SVRA.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.

***************************************************************
*   WORKING STORAGE                                           *
***************************************************************

DATA DIVISION.
WORKING-STORAGE SECTION.

***************************************************************
*    DATA AREA FOR MCF-RECEIVE                                *
***************************************************************

01  RECV-PARM1.
  02  RECV-A            PIC X(8) VALUE 'RECEIVE '.
  02  RECV-B            PIC X(5).
  02  FILLER            PIC X(3).
  02  RECV-C            PIC X(4) VALUE 'FRST'.
  02  RECV-D            PIC X(4) VALUE SPACE.
  02  RECV-E            PIC 9(8).
  02  RECV-F            PIC 9(8).
  02  RECV-G            PIC 9(9) COMP VALUE 1024.
  02  RECV-H            PIC X(4) VALUE SPACE.
  02  RECV-I            PIC X(4) VALUE SPACE.
  02  RECV-J            PIC X(4) VALUE SPACE.
  02  RECV-K            PIC X(4) VALUE SPACE.
  02  RECV-L            PIC X(8) VALUE SPACE.
  02  RECV-M1           PIC X(4) VALUE SPACE.
  02  RECV-M2           PIC X(8) VALUE SPACE.
  02  RECV-M3           PIC X(4) VALUE SPACE.
  02  RECV-M4           PIC 9(9) COMP VALUE ZERO.
  02  RECV-M5           PIC 9(9) COMP VALUE ZERO.
  02  RECV-M6           PIC X(1) VALUE SPACE.
  02  RECV-M7           PIC X(1) VALUE SPACE.
  02  RECV-N            PIC X(14) VALUE LOW-VALUE.
01  RECV-PARM2.
  02  RECV-O            PIC X(4) VALUE SPACE.
  02  RECV-P            PIC X(8).
  02  RECV-Q            PIC X(8) VALUE SPACE.
  02  RECV-R            PIC X(8) VALUE SPACE.
  02  RECV-T            PIC X(28) VALUE LOW-VALUE.
01  RECV-PARM3.
  02  RECV-U            PIC 9(9) COMP.
  02  RECV-V            PIC X(8).
  02  RECV-W            PIC X(1024).

***************************************************************
*    DATA AREA FOR MCF-EXECAP                                 *
***************************************************************

01  EXEC-PARM1.
  02  EXEC-A            PIC X(8) VALUE 'EXECAP  '.
  02  EXEC-B            PIC X(5).
  02  FILLER            PIC X(3).
  02  EXEC-C            PIC X(4) VALUE SPACE.
  02  EXEC-D            PIC X(4) VALUE SPACE.
  02  EXEC-E            PIC 9(8).
  02  EXEC-F            PIC 9(8).
  02  EXEC-G            PIC 9(9) COMP VALUE ZERO.
  02  EXEC-H            PIC X(4) VALUE 'EMI '.
  02  EXEC-I            PIC X(4) VALUE SPACE.
  02  EXEC-J            PIC X(4) VALUE SPACE.
  02  EXEC-K            PIC X(4) VALUE SPACE.
  02  EXEC-L            PIC X(8) VALUE '00000000'.
  02  EXEC-M            PIC X(4) VALUE SPACE.
  02  EXEC-N            PIC X(8) VALUE 'APL01   '.
  02  EXEC-O1           PIC X(4) VALUE 'JUST'.
  02  EXEC-O2           PIC 9(9) COMP VALUE ZERO.
  02  EXEC-O3           PIC 9(9) COMP VALUE ZERO.
  02  EXEC-O4           PIC X(1) VALUE SPACE.
  02  EXEC-O5           PIC X(1) VALUE SPACE.
  02  EXEC-P            PIC X(14) VALUE LOW-VALUE.
01  EXEC-PARM2.
  02  EXEC-Q            PIC X(4) VALUE SPACE.
  02  EXEC-R            PIC X(8) VALUE SPACE.
  02  EXEC-S            PIC X(8) VALUE SPACE.
  02  EXEC-T            PIC X(6) VALUE SPACE.
  02  EXEC-U            PIC X(2) VALUE SPACE.
  02  EXEC-V            PIC X(28) VALUE LOW-VALUE.
01  EXEC-PARM3.
  02  EXEC-W            PIC 9(9) COMP VALUE 25.
  02  EXEC-X            PIC X(8).
  02  EXEC-Y1           PIC X(9) VALUE SPACE.
  02  EXEC-Y2           PIC X(16) VALUE 'SVRA EXECAP DATA'.

***************************************************************
*    DATA AREA FOR MCF-SEND                                   *
***************************************************************

01  SEND-PARM1.
  02  SEND-A            PIC X(8) VALUE 'SEND    '.
  02  SEND-B            PIC X(5).
  02  FILLER            PIC X(3).
  02  SEND-C            PIC X(4) VALUE SPACE.
  02  SEND-D            PIC X(4) VALUE SPACE.
  02  SEND-E            PIC 9(8).
  02  SEND-F            PIC 9(8).
  02  SEND-G            PIC 9(9) COMP VALUE ZERO.
  02  SEND-H            PIC X(4) VALUE 'EMI '.
  02  SEND-I            PIC X(4) VALUE SPACE.
  02  SEND-J            PIC X(4) VALUE SPACE.
  02  SEND-K            PIC X(4) VALUE SPACE.
  02  SEND-L            PIC X(8) VALUE SPACE.
  02  SEND-M1           PIC X(4) VALUE SPACE.
  02  SEND-M2           PIC X(8) VALUE SPACE.
  02  SEND-M3           PIC X(4) VALUE SPACE.
  02  SEND-M4           PIC 9(9) COMP VALUE ZERO.
  02  SEND-M5           PIC 9(9) COMP VALUE ZERO.
  02  SEND-M6           PIC X(1) VALUE SPACE.
  02  SEND-M7           PIC X(1) VALUE SPACE.
  02  SEND-N            PIC X(14) VALUE LOW-VALUE.
01  SEND-PARM2.
  02  SEND-O            PIC X(4) VALUE 'OUT '.
  02  SEND-P            PIC X(8) VALUE 'NFLE02  '.
  02  SEND-Q            PIC X(8) VALUE SPACE.
  02  SEND-R            PIC X(8) VALUE SPACE.
  02  SEND-T            PIC X(28) VALUE LOW-VALUE.
01  SEND-PARM3.
  02  SEND-U            PIC 9(9) COMP VALUE 25.
  02  SEND-V            PIC X(8).
  02  SEND-W1           PIC X(9) VALUE X'C1D7D3F0F240404040'.
  02  SEND-W2           PIC X(16) VALUE 'SVRA SEND   DATA'.

***************************************************************
*    DATA AREA FOR MCF-ROLLBACK                               *
***************************************************************

01  RBK-PARM1.
  02  RBK-A            PIC X(8) VALUE 'ROLLBACK'.
  02  RBK-B            PIC X(5).
  02  FILLER           PIC X(3).
  02  RBK-C            PIC X(4) VALUE 'NRTN'.
  02  RBK-D            PIC X(12) VALUE LOW-VALUE.

PROCEDURE DIVISION.

***************************************************************
*    MCF-RECEIVE(RECEIVE OF MESSAGE)                          *
***************************************************************

  CALL 'CBLDCMCF' USING RECV-PARM1 RECV-PARM2 RECV-PARM3.
  IF RECV-B IS NOT EQUAL TO '00000'

***************************************************************
*    MCF-ROLLBACK(ERROR PROCESSING)                           *
***************************************************************

  CALL 'CBLDCMCF' USING RBK-PARM1.

***************************************************************
*    MCF-EXECAP(APPLICATION PROGRAM BOOTING)                  *
***************************************************************

  CALL 'CBLDCMCF' USING EXEC-PARM1 EXEC-PARM2 EXEC-PARM3.
  IF EXEC-B IS NOT EQUAL TO '00000'

***************************************************************
*    MCF-ROLLBACK(ERROR PROCESSING)                           *
***************************************************************

  CALL 'CBLDCMCF' USING RBK-PARM1.

***************************************************************
*    MCF-SEND(SEND OF MESSAGE)                                *
***************************************************************

  CALL 'CBLDCMCF' USING SEND-PARM1 SEND-PARM2 SEND-PARM3.
  IF SEND-B IS NOT EQUAL TO '00000'

***************************************************************
*    MCF-ROLLBACK(ERROR PROCESSING)                           *
***************************************************************

  CALL 'CBLDCMCF' USING RBK-PARM1.

***************************************************************
*    END PROCESSING                                           *
***************************************************************

  EXIT PROGRAM.

3.4.3　データ操作言語

***************************************************************
*    MHP SERVICE PROGRAM                                      *
***************************************************************

IDENTIFICATION DIVISION.

PROGRAM-ID. SVRA.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.

***************************************************************
*    WORKING STORAGE                                          *
***************************************************************

DATA DIVISION.
WORKING-STORAGE SECTION.

***************************************************************
*    AREA FOR MESSAGE RECEIVING                               *
***************************************************************

 01  RECV-AREA.
   02  RE-DATALENG       PIC 9(4) COMP.
   02  RE-RSV1           PIC X(2).
   02  RE-DATA           PIC X(1024).

***************************************************************
*    AREA FOR APPLICATION BOOTING MESSAGE                     *
***************************************************************

 01  SEND-PRO-AREA.
   02  PRO-DATALENG       PIC 9(4) COMP VALUE 29.
   02  PRO-RSV1           PIC X(2).
   02  PRO-DATA1          PIC X(9) VALUE SPACE.
   02  PRO-DATA2          PIC X(16) VALUE 'SVRA EXECAP DATA'.

***************************************************************
*    AREA FOR MESSAGE SENDING                                 *
***************************************************************

 01  SEND-AREA.
   02  SE-DATALENG       PIC 9(4) COMP VALUE 29.
   02  SE-RSV1           PIC X(2).
   02  SE-DATA1          PIC X(9) VALUE X'C1D7D3F0F240404040'.
   02  SE-DATA2          PIC X(16) VALUE 'SVRA SEND   DATA'.

COMMUNICATION SECTION.

***************************************************************
*    RECEIVE OF MESSAGE (COMMUNICATION DESCRIPTION TERM)      *
***************************************************************

CD RECV-INF
  FOR INPUT
  STATUS KEY IS        RE-STATUS
  SYMBOLIC TERMINAL IS RE-TERMNAM
  MESSAGE DATE IS      RE-DATE
  MESSAGE TIME IS      RE-TIME.

***************************************************************
* APPLICATION PROGRAM BOOTING (COMMUNICATION DESCRIPTON TERM) *
***************************************************************

CD SEND-PRO
  FOR OUTPUT PROGRAM
  STATUS KEY IS        SE-STATUS-PRO
  SYMBOLIC TERMINAL IS SE-TERMNAM-PRO.

***************************************************************
*    SEND OF MESSAGE (COMMUNICATIO DESCRIPTION TERM)          *
***************************************************************

CD SEND-INF
  FOR OUTPUT
  STATUS KEY IS        SE-STATUS
  SYMBOLIC TERMINAL IS SE-TERMNAM.

PROCEDURE DIVISION.

***************************************************************
*    RECEIVE OF MESSAGE (COMMUNICATION DESCRIPTION SENTENCE)  *
***************************************************************

  MOVE 1028 TO RE-DATALENG.
  RECEIVE RECV-INF
          FIRST SEGMENT
          INTO RECV-AREA.
  IF RE-STATUS IS NOT EQUAL '00000'

***************************************************************
*    PARTIAL RECOVERY                                         *
***************************************************************

  ROLLBACK WITH STOPPING.

***************************************************************
*    APPLICATION PROGRAM BOOTING (COMMUNICATION SENTENCE)     *
***************************************************************

  MOVE 'APL01   ' TO SE-TERMNAM-PRO.
  SEND SEND-PRO
       FROM SEND-PRO-AREA
       WITH EMI.
  IF SE-STATUS-PRO IS NOT EQUAL '00000'

***************************************************************
*    PARTIAL RECOVERY                                         *
***************************************************************

  ROLLBACK WITH STOPPING.

***************************************************************
*    SEND OF MESSAGE (COMMUNICATION SENTENCE)                 *
***************************************************************

  MOVE 'NFLE02  ' TO SE-TERMNAM.
  SEND SEND-INF
       FROM SEND-AREA
       WITH EMI.
  IF SE-STATUS IS NOT EQUAL '00000'

***************************************************************
*    PARTIAL RECOVERY                                         *
***************************************************************

  ROLLBACK WITH STOPPING.

***************************************************************
*    END PROCESSING                                           *
***************************************************************

  EXIT PROGRAM.

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

TP1/NET/OSAS-NIFに関連するユーザオウンコーディングおよびMCFイベントのインタフェースについて説明します。

＜この章の構成＞

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

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

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

メッセージ送受信のUAPを，より多様な業務に対応させるために補助するプログラムを，ユーザオウンコーディング（UOC）といいます。

TP1/NET/OSAS-NIFで使用できるUOCを次に示します。

入力メッセージ編集UOC

出力メッセージ編集UOC

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

UOCはK&R版C，ANSI CおよびC++言語で作成します。UOCを作成する言語は，MCFメイン関数と同一言語で記述します。UOCを使用する場合は，あらかじめUOCとMCF提供ライブラリをリンケージする必要があります。

＜この節の構成＞

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です。

論理メッセージをユーザ任意の形式に変換したり，受信した論理メッセージを基にユーザ任意のアプリケーション名を決定したりできます。

TP1/NET/OSAS-NIFは，メッセージの最終セグメント受信後，入力メッセージ編集UOCを起動します。ただし，MCFイベント通知時と，UAPからのシステム内部のアプリケーションプログラム起動時は起動しません。

入力メッセージ編集UOCは，ユーザが作成するUOCのほかに，TP1/NET/OSAS-NIFが提供する標準UOCがあります。標準UOCについては，「(6)　標準UOC」を参照してください。

ユーザは，MCFメイン関数でUOC関数アドレスを設定します。また，必要に応じてMCF通信構成定義（mcftalccn -e）で，メッセージ編集用バッファグループ番号を定義します。

入力メッセージ編集UOCのコーディングについては，「付録C　UOCのコーディング例」を参照してください。

＜この項の構成＞

(1)　入力メッセージの編集

(2)　アプリケーション名の決定

(3)　UOCエラーリターン処理

(4)　UOCパラメタ不正の場合の処理

(5)　OpenTP1への組み込み方法

(6)　標準UOC

(1)　入力メッセージの編集

受信したメッセージが格納されている受信バッファおよび定義で指定した編集バッファをリスト形式で引き渡します。UOCでは，これらのバッファを使用して，入力メッセージの編集ができます。

また，UAPに通知するメッセージは，UOCからのリターンコードによって，受信バッファに格納されたものを使用するか，または編集バッファに格納されたものを使用するかを選択できます。

(2)　アプリケーション名の決定

該当するMCFに入力メッセージ編集UOCが登録されている場合，論理メッセージの編集と同時にアプリケーション名を決定できます。

TP1/NET/OSAS-NIFは，相手システムからのメッセージのNIFヘッダにあて先名称としてアプリケーション名が設定されている場合は，その情報をJISコードに変換してUOCへ渡します。その情報は，プロトコル個別インタフェース領域アドレスのあて先名称領域（dcmnom_uocのappname）に設定されます。ただし，アプリケーション名に英数字（大文字）以外の文字が設定されている場合，「¥0」をUOCへ渡します。

ユーザが作成するUOCでアプリケーション名を決定する場合，アプリケーション名の形式は，アプリケーション名格納領域の先頭から「¥0」の手前までに1から8バイトの英数字を設定します。先頭から9バイト目までに「¥0」がない場合，アプリケーション名を不正とし，不正アプリケーション名検出通知イベント（ERREVT1）を通知します。

UOCでアプリケーション名を決定しない場合，メッセージの先頭8バイト以内をアプリケーション名として使用します。ただし，この場合はJISコードへの変換はしません。また，先頭から9バイト目までに空白がない場合，アプリケーション名を不正とし，不正アプリケーション名検出通知イベント（ERREVT1）を通知します。

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

図4-1　アプリケーション名の決定の処理

(3)　UOCエラーリターン処理

UOCからDCMCF_UOC_MSG_NGでリターンした場合，TP1/NET/OSAS-NIFは相手システムに受信拒否を送信し，該当する論理端末を閉塞します。なお，このときMCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。

UOCで障害を検出し，エラー処理UAPを起動したい場合は，ユーザ任意のエラー処理をするUAPのアプリケーション名を設定します。また，MCFには正常リターンします。

(4)　UOCパラメタ不正の場合の処理

UOCで設定した値に不正があった場合，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。

(5)　OpenTP1への組み込み方法

MCFメイン関数で，作成したUOCの関数アドレスを指定します。入力メッセージ編集UOCの関数アドレスは任意に決められます。UOCのオブジェクトファイルは，MCFメイン関数を翻訳・結合すると，TP1/NET/OSAS-NIFの実行形式ファイルに結合されて実行できる状態になります。MCFメイン関数の詳細については，「7.2　MCFメイン関数の作成」を参照してください。

(6)　標準UOC

TP1/NET/OSAS-NIFは，アプリケーション名を決定するための標準UOCを提供しています。ユーザは，MCFメイン関数に標準UOCのアドレスを指定すると，使用できます。関数名を次に示します。

関数名：dc_mcf_stduoc_msgin

標準UOCの処理の概要を次の図に示します。

図4-2　標準UOCの処理の概要

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

入力メッセージ編集UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　パラメタとバッファの関係

(1)　形式

ANSI C，C++　の形式

#include <dcmcf.h>
#include <dcmnom.h>
#include <dcmcfuoc.h>
DCLONG    uoc_func(dcmcf_uoc_min_n *parm)

K&R版C　の形式

#include <dcmcf.h>
#include <dcmnom.h>
#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;                 …プロトコル個別インタフェース
                                           領域アドレス
   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内部情報
   DCLONG buff_addr;                     …MCF内部情報
   char   reserve2[4];                   …予備
} dcmcf_uocbufinf_n;

(d)　プロトコル個別インタフェース領域の内容

typedef struct {                        …プロトコル個別インタフェース領域
   char lename[16];                   …MCF内部情報
   char mapname[10];                  …MCF内部情報
   char reserve1[6];                  …予備
   char appname[10];                  …あて先名称領域
   char reserve2[6];                  …予備
} dcmnom_uoc;

(4)　MCFが値を設定する項目

(a)　dcmcf_uoc_min_n

　pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_NF：NIF/OSIプロトコル

　le_name
メッセージを入力した論理端末の名称が設定されます。

　rcv_prim
受信サービスプリミティブとして，次の値が設定されます。

DCMCF_UOC_RCV_BRD：一方送信メッセージの受信

DCMCF_UOC_RCV_INQ：問い合わせメッセージの受信

DCMCF_UOC_RCV_REP：応答メッセージの受信

DCMCF_UOC_RCV_REP_SR：同期型応答メッセージの受信
DCMCF_UOC_RCV_REP_SRが設定されている場合，アプリケーション名は無効です。

　buflist_adr
受信用バッファリストのアドレスが設定されます。

　ebuflist_adr
編集用バッファリストのアドレスが設定されます。
メッセージ編集バッファが未定義の場合，つまり，MCF通信構成定義（mcftalccn -e）を省略した場合，ebuflist_adrにはヌル文字が設定されます。

　aplname
すべて「¥0」を設定します。

　pro_indv_ifa
プロトコル個別インタフェース領域アドレスが設定されます。

(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で使用するパラメタです。

(d)　プロトコル個別インタフェース

　lename，mapname
MCFで使用するパラメタです。

　appname
あて先名称が設定されます。TP1/NET/OSAS-NIFは，相手システムからきたEBCDIKコードを，自システムのコード体系に合わせて変換し，設定します。
相手システムからのあて先名称が設定されていなかった場合，またはあて先名称に英数字（大文字）以外のコードが設定されている場合は，すべて「¥0」を設定します。

(5)　ユーザが値を設定する項目

(a)　dcmcf_uoc_min_n

　aplname
UOCで決定したアプリケーション名を設定します。

　rtn_detail
詳細リターンコードを設定します。
このコードは，UOCがDCMCF_UOC_MSG_NGでリターンした場合に，MCFに渡されます。
MCFは，詳細リターンコードをメッセージログファイルに出力します。
詳細リターンコードは，-19999～-19000の範囲で指定してください。
なお，標準UOCは，詳細リターンコードを使用しません。標準UOCでメッセージ不正を検出した場合は，詳細リターンコードは0になります。

(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-3　UOCインタフェース用のパラメタとバッファの関係

注※1

mcftalccn -eオプションを指定しなければヌル文字となり，バッファリストとバッファは確保されません。

注※2

バッファ情報は32バイトで次の形式をしています。

4.1.3　出力メッセージの編集

出力メッセージ編集UOCは，送信する論理メッセージを編集するUOCです。出力メッセージ編集UOCは，UAPが発行した送信メッセージを相手システムに送信する前に処理します。TP1/NET/OSAS-NIFは，出力キューから全セグメントを読み出すと，出力メッセージ編集UOCを起動させます。

ユーザは，MCFメイン関数でUOC関数アドレスを設定します。また，必要に応じてMCF通信構成定義（mcftalccn -e）で，メッセージ編集用バッファグループ番号を定義します。

＜この項の構成＞

(1)　出力メッセージの編集

(2)　UOCエラーリターン処理

(3)　UOCパラメタ不正の場合の処理

(4)　OpenTP1への組み込み方法

(1)　出力メッセージの編集

送信するメッセージが格納されている送信バッファおよび定義で指定した編集バッファをリスト形式で引き渡します。UOCでは，これらのバッファを使用して，出力メッセージの編集処理ができます。

また，UOCからのリターンコードで相手システムへ送信するメッセージとして，送信バッファに格納されたものを使用するか，または編集バッファに格納されたものを使用するかを選択できます。

(2)　UOCエラーリターン処理

UOCからDCMCF_UOC_MSG_NGでリターンした場合，該当するメッセージを破棄し，論理端末を閉塞します。なお，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。

(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 <dcmfuoc.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（バッファ情報）の内容

入力メッセージ編集UOCインタフェースのバッファリストおよびバッファ情報の内容と同じです。「4.1.2(3)(b)　dcmcf_uocbuff_list_n（バッファリスト）の内容」および「4.1.2(3)(c)　dcmcf_uocbufinf_n（バッファ情報）の内容」を参照してください。

(4)　MCFが値を設定する項目

(a)　dcmcf_uoc_mout_n

　pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_NF：NIF/OSIプロトコル

　le_name
メッセージを出力した論理端末の名称が設定されます。

　buflist_adr
送信用バッファリストのアドレスが設定されます。

　ebuflist_adr
編集用バッファリストのアドレスが設定されます。
メッセージ編集バッファが未定義の場合，つまり，MCF通信構成定義（mcftalccn -e）を省略した場合，ebuflist_adrにはヌル文字が設定されます。

　output_no
メッセージ出力通番が設定されます。ただしoutputno_flagがDCMCF_UOC_OUTPUTNO_OKの場合だけ有効です。

　msg_type
メッセージ種別として，次の値が設定されます。ただしoutputno_flagがDCMCF_UOC_OUTPUTNO_OKの場合だけ有効です。

'o'：応答メッセージ

'n'：一般送信メッセージ

'p'：優先送信メッセージ

's'：同期型の送信メッセージ

　outputno_flag
メッセージ出力通番が有効であるかどうか，次の値が設定されます。

DCMCF_UOC_OUTPUTNO_OK：メッセージ出力通番有効
（output_noおよびmsg_typeが有効になります）

DCMCF_UOC_OUTPUTNO_NG：メッセージ出力通番無効

　resend_flag
次の値が設定されます。

'r'：再送メッセージです。

'n'：再送メッセージではありません。

　pro_indv_ifa
MCFで使用するパラメタです。

(b)　dcmcf_uocbuff_list_n（バッファリスト），dcmcf_uocbufinf_n（バッファ情報）

入力メッセージ編集UOCインタフェースのバッファリストおよびバッファ情報の内容と同じです。「4.1.2(4)(b)　dcmcf_uocbuff_list_n（バッファリスト）」および「4.1.2(4)(c)　dcmcf_uocbufinf_n（バッファ情報）」を参照してください。

(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（バッファ情報）

入力メッセージ編集UOCインタフェースのバッファリストおよびバッファ情報の内容と同じです。「4.1.2(3)(b)　dcmcf_uocbuff_list_n（バッファリスト）の内容」および「4.1.2(3)(c)　dcmcf_uocbufinf_n（バッファ情報）の内容」を参照してください。

(6)　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値 | 意味
DCMCF_UOC_MSG_OK | 正常リターン（編集バッファでスケジューリング）
DCMCF_UOC_MSG_OK_SND | 正常リターン（送信バッファでスケジューリング）
DCMCF_UOC_MSG_NG | メッセージ編集エラー

UOCが正常リターンすると，TP1/NET/OSAS-NIFは，パラメタから取り出したアプリケーション名をEBCDIKコードに変換してメッセージを送信します。

(7)　パラメタとバッファの関係

UOCインタフェース用のパラメタとバッファの関係は，入力メッセージ編集UOCの場合と同じです。「4.1.2(7)　パラメタとバッファの関係」を参照してください。

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

送信メッセージの通番編集UOCは，受け取った通番を基に，ユーザ独自の処理をするためのUOCです。

送信メッセージの通番編集UOCを起動する場合，メッセージ送信の関数で，出力通番を付けるように設定してください。UOCは，UAPが先頭セグメントを送信する関数を発行したときに，MCFによって起動されます。したがって，このUOCでメッセージを編集する場合，先頭セグメントしか編集できません。

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

送信メッセージの通番編集UOCは，次に示す形式でsend_uoc関数として作成します。

＜この項の構成＞

(1)　形式

(2)　MCFから値が渡される引数

(3)　リターン値

(4)　OpenTP1への組み込み方法

(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)　OpenTP1への組み込み方法

UAPのメイン関数の中に，UOCの関数アドレスを登録しておきます。UAPのメイン関数に登録するdc_mcf_regster関数の形式を次に示します。

(a)　形式

ANSI C，C++の形式

#include <dcmcf.h>
int dc_mcf_regster(DCLONG flags, DCLONG (*uoc_addr)())

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 | ローカルメモリが不足しています。

メイン関数への登録例を次に示します。

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();
}

4.1.7　UOC作成上の注意事項

UOC作成上の注意事項を次に示します。

＜この項の構成＞

(1)　UOCの構造

(2)　UOCで使用できる関数

(3)　UOCの異常処理

(4)　UOCの実行タイミング

(5)　UOCインタフェースパラメタの設定する項目

(1)　UOCの構造

UOCで使用するローカル変数のサイズの合計は，各UOCで1024バイト以内になるよう設計してください。また，UOCの中で関数の再帰呼び出しはしないでください。

(2)　UOCで使用できる関数

UOCでは次に示す関数だけを使用できます。ほかの関数を使用した場合，TP1/NET/OSAS-NIFの動作に影響を与えるおそれがあるため使用しないでください。

メモリ操作をする関数

データ領域管理（例：malloc，free）

共有メモリ管理関数（例：shmctl，shmget，shmop）

メモリ操作（例：memory）

文字列操作（例：string）

時間取得関数

(3)　UOCの異常処理

TP1/NET/OSAS-NIFのUOCで異常を検知した場合，MCFの所定のリターンコードを使用して，MCFに異常の発生を通知してください。UOCでプロセス終了となるシグナル，またはabort()を発行すると，MCFが異常終了します。

(4)　UOCの実行タイミング

TP1/NET/OSAS-NIFが起動するUOCの実行タイミングは，OpenTP1システム，およびUAPの開始，終了シーケンスと必ずしも同期が取れません。UAPより先にUOCが実行されたり，UAPがすべて終了してからUOCが呼ばれたりしても問題がないように作成してください。

(5)　UOCインタフェースパラメタの設定する項目

UOCパラメタの設定で，ユーザが値を設定する項目以外の項目について更新しないでください。

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

OpenTP1でメッセージ送受信をすると，OpenTP1の各種システム情報がMHPに通知されます。これをMCFイベントといいます。メッセージ送受信処理でエラーや障害が発生した場合，システム内で何が起こっているのかがMCFイベントの内容でわかります。MCFイベントに対応するMHPをMCFイベント処理用MHPといいます。

この節では，TP1/NET/OSAS-NIFが通知するMCFイベントについて説明します。なお，MCFイベントの発生時は，入力メッセージの編集UOCを呼び出しません。

MCFイベントの概要については，マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

＜この節の構成＞

4.2.1　MCFイベントの種類

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

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

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

4.2.1　MCFイベントの種類

TP1/NET/OSAS-NIFが通知するMCFイベントを次の表に示します。

表4-1　MCFイベント一覧

MCFイベント名
MCFイベントコード
発生した原因
MCFイベント処理用
MHPの処理の例

不正アプリケーション名検出通知イベント
ERREVT1
メッセージのアプリケーション名がMCFアプリケーション定義にありません。
該当するアプリケーション名がなかったことを報告します。

メッセージ廃棄通知イベント
ERREVT2
次の理由で受信メッセージを廃棄しました。

入力キューに障害が発生しました。

MHPのサービス，サービスグループ，アプリケーションが閉塞しました。

MHPのセグメント受信関数に，セグメントを渡す前にMHPの異常終了が発生しました。

アプリケーション名に相当するMHPのサービスがありません。

MHPのアプリケーション，サービスグループがセキュア状態です。

メッセージを廃棄したことを報告します。

UAP異常終了通知イベント
ERREVT3
MHPのセグメント受信関数に，セグメントを渡したあとにMHPの異常終了が発生しました。
UAP異常終了時の対処障害メッセージを送信します。

未処理送信メッセージ廃棄通知イベント
ERREVTA
次の理由で未処理送信メッセージを破棄しました。

MCFの正常終了処理時に，未処理送信メッセージの滞留時間監視の時間切れ（タイムアウト）が発生しました。

運用コマンド（mcftdlqle）の入力によって，出力キューが削除されました。

未処理送信メッセージを廃棄したことを報告します。

障害通知イベント
CERREVT
コネクション障害または論理端末障害が発生しました。
コネクションまたは論理端末に障害が発生したことを報告します。

状態通知イベント
COPNEVT
コネクションが確立しました。
コネクションが確立したことを報告します。

CCLSEVT
コネクションが正常に解放されました。
コネクションが解放されたことを報告します。

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

MCFイベントをMHPに通知する場合，先頭セグメントにMCFイベント情報を設定します。エラーイベント（ERREVTn）の場合は，第2セグメント以降に処理できなかったメッセージセグメントを最終セグメントまで設定します。

MCFイベント通知時のセグメント構成を次の図に示します。

図4-4　MCFイベント通知時のセグメント構成

MCFイベントは，作成したUAPがC言語の場合とCOBOL言語の場合で，UAPへ渡される形式が異なります。

COBOL言語を使用したエラーイベント（ERREVTn）の場合は，バッファ形式1とバッファ形式2とで，先頭の内容が異なります。このため，それ以降の項目の位置にずれがあります。「4.2.4　MCFイベント情報の形式（COBOL言語）」のエラーイベントの表では，バッファ形式ごとに位置（バイト）を分けて説明しています。

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

MCFイベント情報は，構造体でMCFイベント処理用MHPに渡されます。MHPに渡される構造体の形式は，MCFイベントの種類によって異なります。ただし，MCFイベント情報の先頭部分の形式は，各イベントに共通です。

エラーイベント（ERREVTn）で使用する構造体は<dcmcf.h>で定義してあります。Cイベント（CxxxEVT）で使用する構造体は<dcmnom.h>で定義してあります。<dcmcf.h>，<dcmnom.h>の順で取り込んでください。

各MCFイベントの共通ヘッダと，各イベントのMCF情報の形式を次に示します。

＜この項の構成＞

(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] ;                   … 論理端末名称
 char   cn_name[9] ;                    … コネクション名
 unsigned char format_kind;             … MCF使用領域
 char   reserve01 ;                     … 予備
 DCLONG time ;                          … メッセージ入力時刻
} ;

(b)　MCFイベントとして設定される項目

　le_name
メッセージを入力した論理端末名称が設定されます。
ERREVT2またはERREVT3で，次に示す場合は，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで，障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPによって，さらにアプリケーション起動をされたMHPで，障害が発生した場合

ERREVTAの場合は，メッセージを出力する論理端末名称が設定されます。
論理端末障害のCERREVTの場合は，障害が発生した論理端末名称が設定されます。
COPNEVT，CCLSEVTおよびコネクション障害のCERREVTの場合は，不定です。

　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の理由コードが設定されます。理由コードの内容については，「付録D　理由コード一覧」を参照してください。

(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] ;                 … 予備
 char reserve07[36] ;                 … 予備
} ;

(b)　MCFイベントとして設定される項目

　ap_name
正常終了したメッセージのアプリケーション名が設定されます。
アプリケーション名は，MHPから送信されたメッセージの場合に設定されます。MHP以外から送信された場合は，ヌル文字が設定されます。

(6)　CERREVT

コネクション障害または論理端末障害発生時に，相手システムから受信した障害報告の利用者データがある場合，CERREVTの第2セグメントに設定します。

(a)　形式

typedef struct {                         … 障害通知イベント情報の形式
 struct dc_mcf_evtheader  header ;      … MCFイベント情報共通ヘッダ
 DCLONG err_fact ;                      … 障害要因コード
 DCLONG err_reason1 ;                   … 理由コード1
 DCLONG err_reason2 ;                   … 理由コード2
 char   reserve1[44] ;                  … 予備
} dcmnom_cerrevt ;

(b)　MCFイベントとして設定される項目

　err_fact
障害の発生要因が設定されます。

0x30：コネクション障害発生

0x31：論理端末障害発生

　err_reason1，err_reason2
理由コードが設定されます。理由コードの詳細については，「付録D　理由コード一覧」を参照してください。

(7)　COPNEVT，CCLSEVT

(a)　形式

typedef struct {                       … 状態通知イベント情報の形式
 struct dc_mcf_evtheader  header ;    … MCFイベント情報共通ヘッダ
 char reserve1[56] ;                  … 予備
} dcmnom_statevt ;

(b)　MCFイベントとして設定される項目

ありません。

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

COBOL言語の場合はセグメントの並びとして渡されます。COBOL言語のUAPの場合のMCFイベント情報の内容を表4-2～表4-7に示します。

表4-2　COBOL言語の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言語の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
－
－

（凡例）

－：該当しません。または，使用されません。

注※

理由コードの内容については，「付録D　理由コード一覧」を参照してください。

表4-4　COBOL言語の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
英数字
異常が発生したMHPのアプリケーション名に対応するサービス名です。

予備
159
155
1
－
－

サービスグループ名
160
156
31
英数字
異常が発生したMHPのサービスグループ名です。

予備
191
187
1
－
－

トランザクションID（BID）
192
188
36
2進数字
異常が発生したトランザクションのBIDです。

予備
228
224
28
－
－

（凡例）

－：該当しません。または，使用されません。

表4-5　COBOL言語の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言語のMCFイベント情報の内容（CERREVT）

項目
位置（バイト）
長さ（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「CERREVT」が設定されます。

入力元論理端末名称
8
8
英数字
MCFが使用します。※1

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージが入力された日付
32
8
外部10進数字
CERREVTを入力した日付です。
YYYYMMDDの形式です。
YYYY：西暦の年
MM：月
DD：日

メッセージが入力された時刻
40
8
外部10進数字
CERREVTを入力した時刻です。
HHMMSS00の形式です。
HH：時
MM：分
SS：秒
00は固定です。

障害要因コード
48
4
2進数字
障害要因が設定されます。
（00000030）₁₆：コネクション障害
（00000031）₁₆：論理端末障害

理由コード1※2
52
4
2進数字
理由コード1が設定されます。

理由コード2※2
56
4
2進数字
理由コード2が設定されます。

予備
60
44
－
－

（凡例）

－：該当しません。または，使用されません。

注※1

論理端末障害の場合，障害の発生した論理端末名称が設定されます。

注※2

理由コード1および理由コード2については，「付録D　理由コード一覧」を参照してください。

表4-7　COBOL言語のMCFイベント情報の内容（COPNEVT，CCLSEVT）

項目
位置（バイト）
長さ（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「COPNEVT」または「CCLSEVT」が設定されます。

入力元論理端末名称
8
8
英数字
MCFが使用します。

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージが入力された日付
32
8
外部10進数字
COPNEVT，CCLSEVTを入力した日付です。
YYYYMMDDの形式です。
YYYY：西暦の年
MM：月
DD：日

メッセージが入力された時刻
40
8
外部10進数字
COPNEVT，CCLSEVTを入力した時刻です。
HHMMSS00の形式です。
HH：時
MM：分
SS：秒
00は固定です。

予備
48
56
－
－

（凡例）

－：該当しません。または，使用されません。

5.　システム定義

NIF/OSIプロトコルを使用する場合のTP1/NET/OSAS-NIFのシステム定義，自システムの通信管理プログラム（XNF/AS）と関連づける内容，相手システムとの定義の関係およびシステム定義例について説明します。

＜この章の構成＞

5.1　TP1/NET/OSAS-NIFの定義の概要

5.2　TP1/NET/OSAS-NIF固有のシステム定義の種類

5.3　MCFマネジャ定義

5.4　MCF通信構成定義

5.5　MCFアプリケーション定義

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

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

5.8　定義オブジェクトファイルの生成ユティリティ

5.9　メッセージキューサービス定義

5.10　自システムの通信管理プログラム（XNF/AS）と関連づける内容

5.11　相手システムの通信定義と関連づける内容

5.12　アプリケーション起動機能を使用する場合に関連づける内容

5.13　定義例

5.1　TP1/NET/OSAS-NIFの定義の概要

TP1/NET/OSAS-NIFのシステム定義は，OpenTP1のネットワークコミュニケーション定義の中で定義します。

＜この節の構成＞

5.1.1　OpenTP1のネットワークコミュニケーション定義の中での定義

5.1.2　通信定義の内容の関連づけ

5.1.1　OpenTP1のネットワークコミュニケーション定義の中での定義

OpenTP1のネットワークコミュニケーション定義のうち，TP1/NET/OSAS-NIFに固有の定義を説明します。

＜この項の構成＞

(1)　使用する定義ファイル

(2)　TP1/NET/OSAS-NIFの組み込み時に必要なファイル

(1)　使用する定義ファイル

MCFおよびTP1/NET/OSAS-NIFを起動するには，定義ファイルに環境情報を設定する必要があります。MCFで使用する定義ファイルを次の表に示します。

表5-1　MCFで使用する定義ファイル

定義の種類
定義のソースファイル
定義の内容

MCFマネジャ定義
MCFマネジャ定義ソースファイル
MCF全体の実行環境

MCF通信構成定義
共通定義ソースファイル
プロトコル固有定義ソースファイル
プロトコルごとの実行環境

MCFアプリケーション定義
MCFアプリケーション定義ソースファイル
アプリケーションの属性

定義のソースファイルは，定義コマンド，オプション，オペランドを使用して作成します。それらの中には，プロトコルで共通のものと，プロトコルに固有のものがあります。表5-1の定義の中で，TP1/NET/OSAS-NIFに固有の定義があるものを次に示します。

MCFマネジャ定義

MCF通信構成定義

MCFアプリケーション定義

TP1/NET/OSAS-NIFに固有，または関連する定義コマンド，オプションおよびオペランドについては，「5.3　MCFマネジャ定義」，「5.4　MCF通信構成定義」，「5.5　MCFアプリケーション定義」，「5.9　メッセージキューサービス定義」および「5.12　アプリケーション起動機能を使用する場合に関連づける内容」で説明します。プロトコルで共通の定義については，マニュアル「OpenTP1 システム定義」を参照してください。ただし，mcftbufコマンド（バッファグループ定義）のlengthオペランド，countオペランドの指定値については，「5.4.1(4)　注意事項」（mcftalccnの注意事項）を参照してください。

(2)　TP1/NET/OSAS-NIFの組み込み時に必要なファイル

次に示すファイルは，TP1/NET/OSAS-NIFをOpenTP1システムに組み込むときに必要なファイルです。

システムサービス情報定義ファイル

システムサービス共通情報定義ファイル

MCF定義オブジェクトファイル

システムサービス情報定義ファイルとシステムサービス共通情報定義ファイルの記述内容，およびMCF定義オブジェクトファイルを生成するユティリティのコマンドについては，「5.6　システムサービス情報定義」，「5.7　システムサービス共通情報定義」および「5.8　定義オブジェクトファイルの生成ユティリティ」で説明します。TP1/NET/OSAS-NIFを組み込む方法については，「7.　組み込み方法」を参照してください。

5.1.2　通信定義の内容の関連づけ

NIF/OSIプロトコルを使用して相手システムと通信するためには，TP1/NET/OSAS-NIFのシステム定義内容を自システムの通信管理プログラムや，相手システムの通信定義と関連づける必要があります。

自システムの通信管理プログラムXNF/ASと関連づける内容については，「5.10　自システムの通信管理プログラム（XNF/AS）と関連づける内容」で説明します。さらに，相手システム（TMS-4V/SPまたはXDM/DCCM3）のネットワーク定義と関連づける内容については，「5.11　相手システムの通信定義と関連づける内容」で説明します。

5.2　TP1/NET/OSAS-NIF固有のシステム定義の種類

TP1/NET/OSAS-NIFに固有の定義を次の表に示します。

表5-2　TP1/NET/OSAS-NIF固有の定義の種類

定義名 | コマンド | オプション・オペランド | 定義内容 | 指定値((値範囲))《省略時解釈値》
MCFマネジャ定義 | mcfmcomn | -l | － | MCFメッセージ回復用作業領域長 | 符号なし整数((0～524288))　《0》
MCF通信構成定義 | 共通定義 | プロトコル共通のコマンドだけで定義できます。共通のコマンドについては，マニュアル「OpenTP1 システム定義」を参照してください。
プロトコル固有定義 | mcftalccn（コネクション定義の開始）指定数：1～512※ | -c | － | コネクションID | 1～8文字の識別子
-p | － | プロトコル種別 | onf
-n | － | 自システムPSAPアドレス | 1～142文字の16進数字
-q | － | 相手システムのPSAPアドレス | 1～186文字の16進数字
-g | sndbuf | メッセージ送信用バッファグループ番号 | 符号なし整数((1～512))
rcvbuf | メッセージ受信用バッファグループ番号 | 符号なし整数((1～512))
-e | msgbuf | メッセージ編集用バッファグループ番号 | 符号なし整数((1～512))
count | メッセージ編集用バッファの数 | 符号なし整数((1～131070))
-m | mode | 使用する通信管理 | xnfas
-t | － | コネクション確立の発呼と着呼の識別 | 《int》 | rsp
-i | － | オンライン開始時にコネクションを自動的に確立するかどうか | auto | 《manual》
-b | bretry | コネクション確立時に障害が発生した場合のコネクション確立再試行の有無 | 《yes》 | no
bretrycnt | コネクション確立時に障害が発生した場合のコネクション確立再試行の回数 | 符号なし整数((0～65535))《0》（単位：回）
bretryint | コネクション確立時に障害が発生した場合コネクション確立再試行の間隔 | 符号なし整数((0～2550))《60》（単位：秒）
-v | tim1 | 正常処理監視タイマ値 | 符号なし整数((0，10～8191))《60》単位：秒
tim2 | ユーザ処理監視タイマ値 | 符号なし整数((0，10～8191))《60》単位：秒
tim3 | 送達確認監視タイマ値 | 符号なし整数((0，10～8191))《60》単位：秒
tim4 | 連続送信監視タイマ値 | 符号なし整数((0，10～8191))《60》単位：秒
tim5 | 終了処理監視タイマ値 | 符号なし整数((0，10～65535))《300》単位：秒
-o | ownsid | 自システムID | 16進数字　((0001～ffff))
otrsid | 相手システムID | 16進数字　((0001～ffff))
-y | nummax | NIF通番最大値 | 符号なし整数((1～4294967295))《32767》
-x | embed | コネクションの確立方式 | 《yes》 | no
agentnum | エージェント番号のオクテット数指定方式 | 《asn1》 | fixed
-z | slot | スロット番号 | 符号なし整数((0～65535))
mcftalcle（論理端末定義）　指定数 1～33（重畳型）　1～2048（非重畳型） | -l | － | 論理端末名称 | 1～8文字の識別子
-t | － | 論理端末の端末タイプ | request | reply | send | receive
-m | mmsgcnt | メモリ出力メッセージ最大格納数 | 符号なし整数((0～65535))《0》
dmsgcnt | ディスク出力メッセージ最大格納数 | 符号なし整数((0～65535))《0》
-k | quekind | キュー種別 | memory | 《disk》
quegrpid | キューグループID | 1～8文字の識別子
-o | aj | 送信完了時の情報を取得するかどうかの指定 | 《yes》 | no
-r | repr | 代表論理端末の指定 | yes | 《no》
-d | sync | 同期型問い合わせ応答の指定 | yes | 《no》
nugua | NIF通番引き継ぎの指定 | 《yes》 | no
rplytim | 応答監視タイマ値 | 符号なし整数((0～8191))《0》（単位：秒）
mcftalced（コネクション定義の終了）指定数：mcftalccnと同数 | － | － | コネクション定義の終了 | －
MCFアプリケーション定義 | mcfaalcap（アプリケーション属性定義） | -n | lname | 論理端末名称 | 1～8文字の識別子
cname | コネクションID | 1～8文字の識別子

（凡例）

－：該当しません。

注※

定義できる最大値です。同時接続できる最大数を求める計算式を次に示します。なお，ソケット用ファイル記述子の最大数については，「5.7　システムサービス共通情報定義」を参照してください。

同時接続数≦256－（定義コネクション数×2＋ソケット用ファイル記述子の最大数＋MCFメイン関数でユーザが使用するファイル記述子数＋30）

注

TP1/NET/OSAS-NIFに固有の定義だけ記載してあります。このほかにも，プロトコルで共通の定義コマンド，オプション，およびオペランドがあります。それらについては，マニュアル「OpenTP1 システム定義」を参照してください。

＜この節の構成＞

5.2.1　定義の指定順序

5.2.1　定義の指定順序

TP1/NET/OSAS-NIFのプロトコル固有定義コマンドの指定順序を次の図に示します。

図5-1　TP1/NET/OSAS-NIFのプロトコル固有定義コマンドの指定順序

注※

mcftalccnとmcftalcleの指定は，1対n（n：重畳型の場合は1～33，非重畳型の場合は1～2048）です。

5.3　MCFマネジャ定義

OpenTP1のMCFマネジャ定義のうち，TP1/NET/OSAS-NIFに関係する定義内容について説明します。ここで説明する定義コマンドには，ほかにもオプションがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

＜この節の構成＞

5.3.1　mcfmcomn － MCFマネジャ共通定義

5.3.1　mcfmcomn － MCFマネジャ共通定義

＜この項の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　指定例

(1)　形式

mcfmcomn              :
         〔-l MCFメッセージ回復用作業領域長〕
                     :

(2)　機能

メッセージの回復を保証するための作業領域長を定義します。

(3)　オプション

　-l MCFメッセージ回復用作業領域長～〈符号なし整数〉((0～524288))《0》
TP1/NET/OSAS-NIFを使用する場合，メッセージの回復を保証するための作業領域長を指定します。
作業領域長の計算式を次に示します。

↑論理端末数×192＋192↑₁₀₂₄＋256

（凡例） ↑ ↑₁₀₂₄：1024ごとに切り上げます。

(4)　指定例

論理端末数が六つの場合のMCFマネジャ共通定義（mcfmcomn）の例を次に示します。

###   MCFマネジャ共通定義
mcfmcomn  -n   300                  ¥
         -p   100                  ¥
         -l   1600

5.4　MCF通信構成定義

OpenTP1のMCF通信構成定義のうち，TP1/NET/OSAS-NIFのプロトコル固有定義について説明します。その他のMCF通信構成定義については，マニュアル「OpenTP1 システム定義」を参照してください。

＜この節の構成＞

5.4.1　mcftalccn － コネクション定義の開始

5.4.2　mcftalcle － 論理端末定義

5.4.3　mcftalced － コネクション定義の終了

5.4.1　mcftalccn － コネクション定義の開始

＜この項の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　注意事項

(1)　形式

mcftalccn -c コネクションID
         -p onf
         -n x'自システムのPSAPアドレス'
         -q x'相手システムのPSAPアドレス'
         -g "sndbuf=メッセージ送信用バッファのグループ番号
             rcvbuf=メッセージ受信用バッファのグループ番号"
        〔-e "〔msgbuf=メッセージ編集用バッファグループ番号〕
             〔count=メッセージ編集用バッファ数〕"〕
         -m "mode=xnfas"
        〔-t int|rsp〕
        〔-i auto|manual〕
        〔-b "〔bretry=yes|no〕
              〔bretrycnt=コネクション確立時再試行回数〕
              〔bretryint=コネクション確立時再試行間隔〕"〕
        〔-v "〔tim1=正常処理監視タイマ値〕
              〔tim2=ユーザ処理監視タイマ値〕
              〔tim3=送達確認監視タイマ値〕
              〔tim4=連続送信監視タイマ値〕
              〔tim5=終了処理監視タイマ値〕"〕
         -o "ownsid=x'自システムID'
             otrsid=x'相手システムID'"
        〔-y "〔nummax=NIF通番最大値〕"〕
        〔-x "〔embed=yes|no〕
              〔agentnum=asn1|fixed〕"〕
         -z "slot=スロット番号"

(2)　機能

コネクションに関する環境を定義します。

(3)　オプション

　-c コネクションID　　～〈識別子〉((1～8文字))
OpenTP1システム内で，一意となるコネクションIDを指定します。

　-p onf
プロトコルの種別を指定します。
onf：NIF/OSIプロトコル

　-n x'自システムのPSAPアドレス'　　～〈1～142文字の16進数字〉
自システムのPSAPアドレスを指定します。
PSAPアドレスの形式を次の図に示します。

図5-2　PSAPアドレスの形式

注※1

PSAPアドレス長の最大値は，自システムの場合(46)₁₆で，相手システムの場合(5C)₁₆です。

注※2

自システムの場合，NSAPアドレスは指定しません。

　-q x'相手システムのPSAPアドレス'　　～〈1～186文字の16進数字〉
相手システムのPSAPアドレスを指定します。
-nオプションで指定する自システムのPSAPアドレスと，-qオプションで指定する相手システムのPSAPアドレスの組み合わせは，ほかのmcftalccn定義コマンドで指定する値と重複しないようにしてください。
PSAPアドレスの形式については，図5-2を参照してください。

　-g
（オペランド）

sndbuf=メッセージ送信用バッファのグループ番号　　～〈符号なし整数〉((1～512))

メッセージ送信用バッファのグループ番号を指定します。

MCF通信構成定義（mcftbuf -g）のgroupnoオペランドに指定されているバッファグループ番号を指定してください。

rcvbuf=メッセージ受信用バッファのグループ番号　　～〈符号なし整数〉((1～512))

メッセージ受信用バッファのグループ番号を指定します。

MCF通信構成定義（mcftbuf -g）のgroupnoオペランドに指定されているバッファグループ番号を指定してください。

　-e
（オペランド）

msgbuf=メッセージ編集用バッファグループ番号　　～〈符号なし整数〉((1～512))

入力，出力メッセージ編集UOCの場合，メッセージ編集用として使用するバッファグループ番号を指定します。

このオペランドを省略した場合は，メッセージ編集用バッファは確保されません。メッセージ編集用バッファグループ番号は，MCF通信構成定義（mcftbuf -g）のgroupnoオペランドで指定するバッファグループ番号を指定してください。

count=メッセージ編集用バッファ数　　～〈符号なし整数〉((1～131070))

入力，出力メッセージ編集UOCの場合，メッセージ編集用として使用するバッファの数を指定します。

msgbufオペランドで指定するメッセージ編集用バッファグループ番号に対応するMCF通信構成定義（mcftbuf -g）のcountオペランドおよびextendオペランドで指定するバッファ数の中から，メッセージ編集用に使用するバッファ数を指定してください。

また，このオペランドの指定は，MCF通信構成定義（mcftbuf -g）のcountオペランドおよびextendオペランドで指定されたバッファ数の合計値を超える指定はできません。

msgbufオペランドを省略した場合は，このオペランドの指定は無効です。

　-m
（オペランド）

mode=xnfas

使用する通信管理を次の値で指定します。

このオペランドは必ず指定してください。

xnfas：XNF/AS

　-t int｜rsp　　～《int》
コネクション確立時の発呼と着呼の識別を指定します。
int：自システムが発呼側
rsp：自システムが着呼側

　-i auto｜manual　　～《manual》
オンライン開始時にコネクションを自動的に確立するかどうかを指定します。
auto：オンライン開始時にコネクションを自動的に確立します。
manual：オンライン中，運用コマンドの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オペランドの指定は無効になります。

　-v
（オペランド）

tim1=正常処理監視タイマ値　　～〈符号なし整数〉((0,10～8191))《60》（単位：秒）

正常処理監視タイマ値を指定します。

0を指定した場合，正常処理監視をしません。

tim2=ユーザ処理監視タイマ値　　～〈符号なし整数〉((0,10～8191))《60》（単位：秒）

ユーザ処理監視タイマ値を指定します。

0を指定した場合，ユーザ処理監視をしません。

tim3=送達確認監視タイマ値　　～〈符号なし整数〉((0,10～8191))《60》（単位：秒）

送達確認監視タイマ値を指定します。

0を指定した場合，送達確認監視をしません。

tim4=連続送信監視タイマ値　　～〈符号なし整数〉((0,10～8191))《60》（単位：秒）

連続送信監視タイマ値を指定します。

0を指定した場合，連続送信監視をしません。

tim5=終了処理監視タイマ値　　～〈符号なし整数〉((0，10～65535))《300》（単位：秒）

終了処理監視タイマ値を指定します。

0を指定した場合，終了処理監視をしません。

　-o
（オペランド）

ownsid=x'自システムID'　　～〈16進数字〉((0001～ffff))

自システムのシステムIDをネットワーク内で一意に指定します。

otrsid=x'相手システムID'　　～〈16進数字〉((0001～ffff))

相手システムのシステムIDをネットワーク内で一意に指定します。

　-y
（オペランド）

nummax=NIF通番最大値　　～〈符号なし整数〉((1～4294967295))《32767》

通番管理機能で使用するNIF通番の最大値を指定します。

　-x
（オペランド）

embed=yes｜no　　～《yes》

コネクションの確立方式を指定します。

ただし，-tオプションでrspを指定した場合，このオペランドの指定は無効になります。

yes：重畳型（OSI構造の層の中のACSEとNIF/OSIを同時に確立します。重畳型で接続できる端末の台数は，1～33台です）

no：非重畳型（OSI構造の層の中のACSEを確立してからNIF/OSIを確立します。非重畳型で接続できる端末の台数は，1～2048台です）

agentnum=asn1｜fixed　　～《asn1》

NIFヘッダに設定するエージェント番号のオクテット数を指定します。

このオペランドの指定を省略した場合，asn1に設定されます。

asn1：ASN.1のエンコード規則に従い，最小のオクテット数に設定します。

fixed：2オクテット固定で設定します。

　-z
（オペランド）

slot=スロット番号

　　～〈符号なし整数〉((0～65535))

スロット番号を指定します。

XNF/ASの通信構成定義で指定する仮想スロット番号を指定してください。

このオペランドは必ず指定してください。

(4)　注意事項

-gオプションおよび-eオプションで指定するバッファグループ番号は，MCF通信構成定義（mcftbuf）で指定したバッファグループ番号に対応させてください。mcftbuf定義コマンドでコネクションごとに割り当てる資源の量を次の表に示します。バッファグループ定義の詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

次の表に示した値より小さい値をMCF通信構成定義（mcftbuf）で指定すると，オンライン実行中にバッファ不足などが発生することがあります。

表5-3　mcftbuf定義コマンドでコネクションごとに割り当てる資源の量

mcftalccn
コマンド
バッファグループ定義　mcftbufコマンド　-gオプション

length　※¹
count + extend　※²

-g
sndbuf
論理端末数×10
または
コネクション間で最大のメッセージ長どちらかの最大値
論理端末数×（最大セグメント分割数＋1）

rcvbuf
論理端末数×10
または
コネクション間で最大のメッセージ長どちらかの最大値
論理端末数×（最大セグメント分割数＋1）

-e
msgbuf
ユーザ任意値（入力メッセージ編集UOC出力メッセージ編集UOCで編集したメッセージを格納できるサイズ）
編集用バッファ数

注※1

lengthオペランドに指定できる最大値-256未満の値を指定してください。また，複数コネクションでバッファグループを共用する場合，コネクション間での最大の値を指定します。

注※2

複数コネクションでバッファグループを共用する場合，コネクションごとの和を指定します。

5.4.2　mcftalcle － 論理端末定義

＜この項の構成＞

(1)　形式

(2)　機能

(3)　オプション

(1)　形式

mcftalcle -l 論理端末名称
         -t request|reply|send|receive
       〔-m "〔mmsgcnt=メモリ出力メッセージ最大格納数〕
             〔dmsgcnt=ディスク出力メッセージ最大格納数〕 "〕
         -k "〔quekind=memory|disk〕
             〔quegrpid=キューグループID〕 "
       〔-o "〔aj=yes|no〕"〕
       〔-r "〔repr=yes|no〕"〕
       〔-d "〔sync=yes|no〕
             〔nugua=yes|no〕
             〔rplytim=応答監視タイマ値〕"〕

(2)　機能

論理端末に関する環境を定義します。

(3)　オプション

　-l 論理端末名称　　～〈1～8文字の識別子〉
OpenTP1システム内で，一意となる論理端末名称を指定します。

　-t request｜reply｜send｜receive
この論理端末の端末タイプを指定します。
request：request型論理端末またはrequest型論理端末（同期型）
reply：reply型論理端末
send：send型論理端末
receive：receive型論理端末
なお，request型論理端末（同期型）を指定する場合，-dオプションのsyncオペランドにyesを指定してください。

　-m
（オペランド）

mmsgcnt=メモリ出力メッセージ最大格納数　　～〈符号なし整数〉((0～65535))《0》

メモリキューで待ち合わせる出力メッセージの最大格納数を指定します。

出力メッセージの待ち合わせ数が指定した最大数になると，それ以降UAPからの送信要求はエラーリターンとなります。

0を指定した場合，メモリキューで待ち合わせをする出力メッセージの数は無制限となります。

dmsgcnt=ディスク出力メッセージ最大格納数　　～〈符号なし整数〉((0～65535))《0》

ディスクキューで待ち合わせをする出力メッセージの最大格納数を指定します。

出力メッセージの待ち合わせ数が指定した最大数になると，それ以後UAPからの送信要求はエラーリターンとなります。

0を指定した場合，ディスクキューで待ち合わせをする出力メッセージの数は無制限となります。

　-k
（オペランド）

quekind=memory｜disk　　～《disk》

送受信メッセージの割り当て先（メモリキューまたはディスクキュー）を指定します。

memory：メモリキューだけに割り当てます。

disk：ディスクキューおよびメモリキューに割り当てます。

quegrpid=キューグループID　　～〈1～8文字の識別子〉

ディスクキューで待ち合わせをする出力メッセージに使用するキューグループIDを指定します。

MCFマネジャ定義（mcfmqgid）で指定するキューグループID（キューグループ種別はotq）のどれかを指定してください。

このオペランドは，quekindオペランドでdiskを指定した場合は省略できません。

　-o
（オペランド）

aj=yes｜no　　～《yes》

送信完了時の情報を取得するかどうかを指定します。

yes：取得します。

no：取得しません。

　-r
（オペランド）

repr=yes｜no　　～《no》

該当する論理端末を代表論理端末とするかどうかを指定します。

代表論理端末は，コネクションに関するイベントを受信するための論理端末です。

一つのコネクション内に複数の論理端末がある場合，一つの論理端末定義でだけ，yesを指定できます。このオペランドの指定がすべてnoの場合，最初に定義した論理端末が代表論理端末になります。

yes：該当する論理端末定義の論理端末を代表論理端末とします。

no：該当する論理端末定義の論理端末を代表論理端末としません。

　-d
（オペランド）

sync=yes｜no　　～《no》

request型論理端末を同期型として使用するかどうかを指定します。-tオプションにrequestを指定した場合だけ有効です。

このオペランドの指定を省略した場合，noに設定されます。

yes：同期型として使用します。

no：同期型として使用しません。

nugua=yes｜no　　～《yes》

MCFの再開始時に，NIF通番を引き継ぐかどうかを指定します。

-kオプションのquekindオペランドにmemoryを指定した場合，有効となります。

このオペランドの指定を省略した場合，yesに設定されます。

yes：NIF通番を引き継ぎます。

no：NIF通番を引き継ぎません。

なお，noを指定した場合，MCFの再開始時には，NIF通番はリセット状態となり，再送のための情報は失われます。

rplytim=応答監視タイマ値　　～〈符号なし整数〉((0～8191))《0》　（単位：秒）

問い合わせメッセージを受信して，reply型論理端末で起動したMHPからの応答メッセージの送信を受け付けるまでの監視時間を秒単位で指定します。-tオプションにreplyを指定した場合だけ有効です。

次に示す契機から応答メッセージの送信を受け付けるまでの時間を監視します。

相手システムから問い合わせメッセージを受信して入力キューへ登録したとき

MHPからの応答メッセージ送信待ちの状態で，相手システムから通番問い合わせ要求を受信したとき

MHPからの応答メッセージを送信待ちの状態で，相手システムから再送された問い合わせメッセージを受信したとき
問い合わせメッセージを受信して，監視時間内にMHPからの応答メッセージ送信を受け付けない場合，該当するメッセージの送受信の処理を打ち切り，次メッセージを処理します。
通番問い合わせ要求または再送された問い合わせメッセージを受信して，監視時間内にMHPから応答メッセージの送信を受け付けない場合，該当するメッセージは未受信として処理します。
このオペランドの指定を省略した場合，または0を指定した場合，応答監視はしません。
なお，監視時間の指定はMCF通信構成定義（mcftalccn -v）のtim1オペランドまたはtim2オペランドの指定値より小さな値を指定してください。

5.4.3　mcftalced － コネクション定義の終了

＜この項の構成＞

(1)　形式

(2)　機能

(3)　オプション

(1)　形式

mcftalced

(2)　機能

コネクションの定義の終了を示します。

(3)　オプション

ありません。

5.5　MCFアプリケーション定義

OpenTP1のMCFアプリケーション定義のうち，TP1/NET/OSAS-NIFに関係する定義内容について説明します。ここで説明する定義コマンドには，ほかにもオプションがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

＜この節の構成＞

5.5.1　mcfaalcap － アプリケーション属性定義

5.5.1　mcfaalcap － アプリケーション属性定義

＜この項の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　注意事項

(5)　指定例

(1)　形式

mcfaalcap -n "name=相手システムのアプリケーション名"
                   :
             [lname=自システムの論理端末名称]
             [cname=コネクションID]
                   :                

(2)　機能

EXECAP（相手システムのアプリケーションの起動）要求を発行する場合に，相手システムのアプリケーション名と次に示すどちらかをあわせて指定します。

自システムの論理端末名称

自システムのコネクションID

(3)　オプション

　-n
（オペランド）

name=相手システムのアプリケーション名

EXECAP要求を発行するときの相手システムのアプリケーション名を指定します。ただし，アプリケーション名には英小文字および_（アンダスコア）は指定できません。

lname=自システムの論理端末名称

EXECAP要求を発行する場合に，nameオペランドで指定した相手システムのアプリケーションとメッセージの送受信をする自システムの論理端末名称を指定します。

論理端末名称は，TP1/NET/OSAS-NIFのMCF通信構成定義（mcftalcle）で定義したrequest型論理端末またはsend型論理端末を指定してください。

cname=自システムのコネクションID

EXECAP要求を発行する場合に，nameオペランドで指定した相手システムのアプリケーションと通信する自システムのコネクションIDを指定します。コネクション下には，一つ以上のrequest型論理端末を定義してください。

ただし，typeオペランドでansまたはcontを指定したときだけ指定できます。-gオプションのtypeオペランドにSPPを指定したときは指定できません。

(4)　注意事項

EXECAP要求で相手システムのアプリケーションを起動する場合，次に示す項目に注意してください。

TP1/NET/OSAS-NIFのMCF通信構成定義に対応するmcfaalcapコマンドで次の項目を指定してください。ただし，自システム内でアプリケーション起動機能を使用する場合は，アプリケーション起動プロセスのMCF通信構成定義に対応するmcfaalcapコマンドで次の項目を指定してください。

相手システムのアプリケーション名

論理端末名称またはコネクションID

アプリケーション名には英小文字および_（アンダスコア）は指定できません。論理端末名称を指定する場合，request型論理端末またはsend型論理端末の論理端末名称を指定してください。コネクションIDを指定する場合，コネクション下に一つ以上のrequest型論理端末を定義してください。

相手システム側で起動するアプリケーションを定義する場合，サービスグループ名，サービス名は意味を持ちません。任意の名称を指定してください。

mcfaalcap -g quekindで指定するメッセージの割り当て先は，必ずdiskを指定してください。quekindオペランドの指定を省略した場合，またはディスクキューからの縮退処理によってメモリキューを使用している場合は，メッセージの再送はしません。

EXECAP要求を発行する起動元のアプリケーションプログラムと，起動先のアプリケーション属性定義との関係を次の表に示します。

次の表に示す以外の関係で，EXECAP要求を発行した場合はエラーとなります。

表5-4　起動元のアプリケーションプログラムと起動先のアプリケーション属性定義との関係

起動元のアプリケーションプログラム | 起動先のアプリケーション属性定義（mcfaalcap）
－n
lname | cname | type
任意 | send型論理端末を指定します。 | 指定しません。 | noans
ans型MHP | request型論理端末を指定します。 | ans
noans型MHPまたはSPP
cont型MHP | cont
ans型MHP | 指定しません。 | request型論理端末が定義してあるコネクションIDを指定します。 | ans
noans型MHPまたはSPP
cont型MHP | cont

(5)　指定例

###   アプリケーション属性定義(OSASNF)
mcfaalcap   -n  "name=APL01                ¥
                kind=user                 ¥
                type=noans                ¥
                msgcnt=100                ¥
                lname=NFLE01"             ¥
           -g  "servgrpn=srvgrp01         ¥
                quegrpid=quegrp02         ¥
                quekind=disk"             ¥
           -v  "servname=srv01"
mcfaalcap   -n  "name=APL02                ¥
                kind=user                 ¥
                type=ans                  ¥
                msgcnt=100                ¥
                cname=cnct01"             ¥
           -g  "servgrpn=srvgrp01         ¥
                quegrpid=quegrp02         ¥
                quekind=disk"             ¥
           -v  "servname=srv02"

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

MCFサービスはユーザが作るシステムサービスで，OpenTP1のシステムサービスと同じ位置づけになります。

システムサービス情報定義では，MCF通信サービスを起動するための環境を定義します。ユーザが，MCFサービスを作成するときに定義する必要があります。

システムサービス情報定義は，テキストエディタを使用して作成します。

システムサービス情報定義の完全パス名を次に示します。

＄DCDIR/lib/sysconf/定義ファイル名

定義ファイル名には，システムサービス情報定義のmoduleオペランドで指定する実行形式プログラム名を指定します。この定義ファイル名をMCFマネジャ定義のmcfmcnameコマンドに指定します。

＜この節の構成＞

(1)　形式

(2)　機能

(3)　オペランド

(1)　形式

set module="TP1/NET/OSAS-NIFの実行形式プログラム名"

(2)　機能

プロセスサービスがMCF通信サービスを起動するための環境を定義します。

各MCF通信サービスに対して一つ，システムサービス情報定義を作成できます。また，複数のMCF通信サービスで一つのシステムサービス情報定義を共用することもできます。

(3)　オペランド

　module="TP1/NET/OSAS-NIFの実行形式プログラム名"
～〈1～8文字の識別子〉
MCF通信サービスを起動するための実行形式プログラム名を指定します。
MCF実行形式プログラムには，MCF通信プロセスのためのものとアプリケーション起動プロセスのためのものがあります。
MCF実行形式プログラムは，MCF通信プロセス同士およびアプリケーション起動プロセス同士で共有できます。
TP1/NET/OSAS-NIFの実行形式プログラム名には，先頭4文字がmcfuで始まる最大8文字の名称を指定します。

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

TP1/NET/OSAS-NIFで定義したシステム構成の内容によっては，OpenTP1のシステムサービス共通情報定義を指定する必要があります。

システムサービス共通情報定義の完全パス名を次に示します。

$DCDIR/lib/sysconf/mcf

＜この節の構成＞

(1)　形式

(2)　機能

(3)　説明

(4)　注意事項

(1)　形式

set形式

set max_socket_descriptors=ソケット用ファイル記述子の最大数
set max_open_fds=MCF通信プロセスでアクセスするファイルの最大数

(2)　機能

システムサービス共通情報定義では，複数のMCF通信サービスに共通する情報を定義します。この定義ファイルは，標準値を定義した状態で製品に含まれています。次に示すオペランドについては，必要に応じて，テキストエディタを使用して定義値を変更してください。ほかのオペランドについては，変更しないでください。

(3)　説明

(a)　set形式のオペランド

　max_socket_descriptors=ソケット用ファイル記述子の最大数　　～〈符号なし整数〉((64～2048))
各MCF通信プロセスでソケット用に使用するファイル記述子数の中の最大数を指定します。
ソケット用ファイル記述子の最大数を求める計算式を次に示します。↑↑は，小数点以下を切り上げることを意味します。

↑（このMCF通信プロセスに対してメッセージ送信要求を行うUAPプロセス数
 ＋システムサービスプロセス数※
 ＋このMCF通信プロセスに対して同時に処理要求を行う運用コマンド数
 ）／0.8↑

注※

システムサービスプロセス数とは，自OpenTP1内のシステムサービスプロセス数です。

自OpenTP1内のMCF通信プロセスごとに計算し，その結果の中で最大値が64より大きい場合は，その値を指定します。64以下の場合は，64を指定します。

　max_open_fds=MCF通信プロセスでアクセスするファイルの最大数　　～〈符号なし整数〉((100～2048))
各MCF通信プロセスでアクセスするファイルの数の中の最大値を指定します。
ファイル記述子の最大数を求める計算式を次に示します。

（プロトコル制御で使用するファイル記述子数※¹）＋30※²

注※1

TP1/NET/OSAS-NIFの場合，コネクションの総数を3倍した値になります。

注※2

MCF通信プロセスが扱う定義ファイルなどの数の最大値です。

自OpenTP1内のMCF通信プロセスごとに計算し，その結果の中で最大値が500より大きい場合は，その値を指定します。500以下の場合は，500を指定します。指定値を超えてファイルのアクセスが発生した場合，その超過分は，ソケット用ファイル記述子使用数として扱われます。この場合，max_socket_descriptorsオペランドの指定値からmax_open_fdsオペランドの指定値を減算した超過分が，実際のソケット用ファイル記述子の最大数になりますので，ご注意ください。
なお，1プロセスで使用できるファイル記述子の最大数は2048であるため，このオペランドには，次の条件を満たす値を指定してください。

（「このオペランドの指定値」
＋同定義内の「max_socket_descriptorsオペランドの指定値」）≦2048

条件を満たさない指定をした場合は，このオペランドの指定値は次に示すように強制的に補正されます。

2048－（同定義内の「max_socket_descriptorsオペランドの指定値」）

(4)　注意事項

max_socket_descriptorsオペランドの指定値とmax_open_fdsオペランドの指定値の合計は，OSのシステムパラメタで指定する「1プロセスでオープンできるファイル数」を超えないようにする必要があります。システム定義の変更などによって，上記のオペランドの指定値の合計が増加する場合は，OSのシステムパラメタの指定を変更してください。

5.8　定義オブジェクトファイルの生成ユティリティ

MCF定義オブジェクト生成ユティリティでは，MCFの定義ファイルの構文のチェックと定義オブジェクトファイルへの変換をします。

＜この節の構成＞

5.8.1　MCF定義オブジェクト生成ユティリティの起動

5.8.2　MCF定義オブジェクト解析ユティリティの起動

5.8.1　MCF定義オブジェクト生成ユティリティの起動

＜この項の構成＞

(1)　形式

(2)　機能

(3)　オプション

(1)　形式

mcfosnf -i 〔パス名〕入力ファイル名
       -o 〔パス名〕出力オブジェクトファイル名

(2)　機能

MCF通信構成定義のTP1/NET/OSAS-NIFのプロトコル固有定義ファイルの構文のチェック，および定義オブジェクトファイルを作成します。

ただし，開始から再開始の間に定義オブジェクトファイルを変更してはいけません。変更した場合，再開始時に正常に動作しないおそれがあるためご注意ください。

TP1/NET/OSAS-NIFのプロトコル固有定義オブジェクトファイル以外の生成ユティリティについては，マニュアル「OpenTP1 システム定義」を参照してください。

(3)　オプション

　-i 〔パス名〕 入力ファイル名　　～〈パス名〉〈1～8文字の識別子〉
定義ソースが格納されているファイル名を指定します。

　-o 〔パス名〕 出力オブジェクトファイル名　　～〈パス名〉〈1～8文字の英数字〉
定義オブジェクトを格納するファイル名を指定します。

5.8.2　MCF定義オブジェクト解析ユティリティの起動

＜この項の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　出力例

(1)　形式

mcfosnfr -i 〔パス名〕解析対象オブジェクトファイル名

(2)　機能

MCF通信構成定義のプロトコル（TP1/NET/OSAS-NIF）固有定義オブジェクト，または，これと共通定義オブジェクトとを結合したオブジェクトを解析し，定義ソースのイメージで標準出力します。

解析対象が不正であった場合，オブジェクトの解析および出力ができないことがあります。

(3)　オプション

　-i 〔パス名〕 解析対象オブジェクトファイル名
～〈パス名〉〈1～8文字の英数字〉
解析する定義オブジェクトが格納されているファイル名を指定します。

(4)　出力例

定義オブジェクトの解析後の出力例を次に示します。

なお，値を指定していない場合は，省略値が表示されます。

################################################################
     MCF communication configuration definition
                 OSAS-NIF definition
################################################################
  OBJECT FILE NAME : XXXXXXXX
  VV-RR            : xx-xx
  DATE             : yyyy-mm-dd hh:mm:ss
################################################################

mcftalccn
 -c           = cnct01
 -p           = onf
 -n           = x'0a81008202000283020003'
 -q           = x'1781008202000383020003840b490001020000000000fe01'
 -g sndbuf    = 1
 -g rcvbuf    = 2
 -e msgbuf    = 3
 -e count     = 14
 -m mode      = xnfas
 -t           = int
 -i           = manual
 -b bretry    = yes
 -b bretrycnt = 20
 -b bretryint = 5
 -v tim1      = 60
 -v tim2      = 60
 -v tim3      = 60
 -v tim4      = 60
 -v tim5      = 60
 -o ownsid    = x'0001'
 -o otrsid    = x'ffff'
 -y nummax    = 20
 -x embed     = yes
 -x agentnum  = asn1
* -x rnodetr   = yes
* -x acname    = x'816fa973'
* -x timset    = yes
* -x userpi    = e1
 -z slot      = 1

mcftalcle
 -l           = NFLE01
 -t           = send
 -m mmsgcnt   = 0
 -m dmsgcnt   = 0
 -k quekind   = disk
 -k quegrpid  = quegrp01
 -o aj        = yes
 -r repr      = no
 -d sync      = no
 -d nugua     = yes
 -d rplytim   = 0
* -d ctlsend   = no
* -d nuupmode  = normal

mcftalcle
 -l           = NFLE02
 -t           = request
 -m mmsgcnt   = 0
 -m dmsgcnt   = 0
 -k quekind   = disk
 -k quegrpid  = quegrp01
 -o aj        = yes
 -r repr      = no
 -d sync      = no
 -d nugua     = yes
 -d rplytim   = 0
* -d ctlsend   = no
* -d nuupmode  = normal

mcftalced

######################### End Of File ##########################

注

先頭に*が付いている行は，限定公開機能の定義です。

5.9　メッセージキューサービス定義

TP1/NET/OSAS-NIFを使用する場合，メッセージの再読み出しをするため，メッセージキューサービス定義（quegrp）の-mオプションに，メッセージキューファイルに保持するメッセージ数を指定してください。

メッセージキューサービス定義（quegrp）の例を次に示します。

#que : メッセージキューサービス定義
quegrp -g quegrp01 -f /dev/rdsk/rhd011/quef01 -n 256 -m 1 -w 80 -b 1 -r 3
quegrp -g quegrp02 -f /dev/rdsk/rhd011/quef02 -n 256 -m 1 -w 80 -b 1 -r 3
set que_xidnum   = 256

メッセージキューサービス定義については，マニュアル「OpenTP1 システム定義」を参照してください。

5.10　自システムの通信管理プログラム（XNF/AS）と関連づける内容

相手システムとの接続方法や接続時に使用したい機能によって，使用する通信管理プログラムは次の図に示すとおり異なります。

通信管理プログラムの詳細については，マニュアル「通信管理 XNF/AS 解説・運用編」およびマニュアル「通信管理 XNF/AS 構成定義編」を参照してください。

図5-3　通信管理プログラムによる相手システムとの接続方法および接続時の機能の違い

図中のどの通信管理プログラムを使用する場合でも，TP1/NET/OSAS-NIFのMCF通信構成定義（mcftalccn）で指定する定義の内容と，XNF/ASのシステム定義時に指定する定義の内容とを関連づける必要があります。関連づける必要のある項目を次に示します。

最大コネクション数

Tセレクタ値（種類数）※

スロット番号

注※

例えば，次の図に示すように三つのmcftalccnコマンドを定義した場合は，Tセレクタ値の種類数である2をXNF/ASの通信構成定義と関連づけます。

関連づける項目は，相手システムとの接続方式および接続時の機能によって異なります。使用する接続方式および接続時の機能別に，次に示します。

＜この節の構成＞

(1)　回線接続する場合

(2)　チャネル接続する場合

(3)　OSI拡張機能を使用する場合

(1)　回線接続する場合

回線接続する場合は，次の表に示すとおりに定義を関連づけてください。

表5-5　回線接続する場合のXNF/ASの定義との関連づけ

項番 | TP1/NET/OSAS-NIFでの定義内容 | XNF/ASでの定義内容
コマンド | 内容 | 定義文 | オペランド
1 | mcftalccn | 定義数（コネクション数） | configuration | max_OSI_association
2 | max_TC_class02
3 | mcftalccn | -nオプションで指定するTセレクタ値の種類数 | configuration | max_TSAP
4 | mcftalccn | -zオプション（スロット番号） | link | VASS

(2)　チャネル接続する場合

チャネル接続する場合は，次の表に示すとおりに定義を関連づけてください。

表5-6　チャネル接続する場合のXNF/ASの定義との関連づけ

項番 | TP1/NET/OSAS-NIFでの定義内容 | XNF/ASでの定義内容
コマンド | 内容 | 定義文 | オペランド
1 | mcftalccn | 定義数（コネクション数） | configuration | max_OSI_association
2 | max_CHANNEL_TC
3 | mcftalccn | -nオプションで指定するTセレクタ値の種類数 | configuration | max_TSAP
4 | mcftalccn | -zオプション（スロット番号） | CHANNEL_VC | VASS

(3)　OSI拡張機能を使用する場合

OSI拡張機能を使用する場合は，次の表に示すとおりに定義を関連づけてください。

表5-7　OSI拡張機能を使用する場合のXNF/ASの定義との関連づけ

項番 | TP1/NET/OSAS-NIFでの定義内容 | XNF/ASでの定義内容
コマンド | 内容 | 定義文 | オペランド
1 | mcftalccn | 定義数（コネクション数） | configuration | max_OSI_association
2 | max_TPTCP_connection
3 | mcftalccn | -nオプションで指定するTセレクタ値の種類数 | configuration | max_TSAP
4 | mcftalccn | -zオプション（スロット番号） | TPTCP_define | VASS

5.11　相手システムの通信定義と関連づける内容

TP1/NET/OSAS-NIFを使用する場合のネットワーク構成の例を次の図に示します。

図5-4　ネットワーク構成の例

注※

XDM/DCCM3：XDM/DCCM3では，通信管理にはXNFだけ使用できます。

この例の場合，TP1/NET/OSAS-NIFは，ECS/VTAMまたはXNF，およびTMS-4V/SPまたはXDM/DCCM3の定義と関連づける必要があります。

＜この節の構成＞

5.11.1　相手システムの通信管理の定義

5.11.2　相手システムの定義

5.11.1　相手システムの通信管理の定義

＜この項の構成＞

(1)　ECS/VTAMネットワーク定義

(2)　XNFネットワーク定義

(1)　ECS/VTAMネットワーク定義

相手システムの通信管理がECS/VTAMの場合のTP1/NET/OSAS-NIFとECS/VTAMネットワーク定義の関係を次の図に示します。ECS/VTAMの定義については，マニュアル「VOS3 ECS/VTAM 使用の手引」を参照してください。

図5-5　ECS/VTAMネットワーク定義との関係

(2)　XNFネットワーク定義

相手システムの通信管理がXNFの場合のTP1/NET/OSAS-NIFとXNFネットワーク定義の関係を次の図に示します。XNFの定義については，マニュアル「VOS3 通信管理XNF ネットワーク定義」を参照してください。

図5-6　XNFネットワーク定義との関係

5.11.2　相手システムの定義

＜この項の構成＞

(1)　TMS-4V/SPシステムの定義

(2)　XDM/DCCM3システムの定義

(1)　TMS-4V/SPシステムの定義

相手システムがTMS-4V/SPシステムの場合の，TP1/NET/OSAS-NIFとOSAS/NF/4VSPの定義の関係を次の図に示します。OSAS/NF/4VSPの定義については，マニュアル「VOS3 TMS-4V/SP OSAS/AP間通信サービス-NF OSAS/NF/4VSP」を参照してください。

図5-7　OSAS/NF/4VSPの定義との関係

注※1

相手システムがTMS-4V/SPシステムの場合，コネクションの確立方式には非重畳型を指定してください。

注※2

相手システムがTP1/NET/OSAS-NIFの場合，ホストノードに対して複数の実ノードを定義することはできません。

(2)　XDM/DCCM3システムの定義

相手システムがXDM/DCCM3システムの場合のTP1/NET/OSAS-NIFとOSAS/UA2/DCCM3の定義の関係を次の図に示します。OSAS/UA2/DCCM3の定義については，マニュアル「VOS3 OSIアプリケーション共通機能/AP間通信サービス/DCCM3 OSAS/UA2/DCCM3」を参照してください。

図5-8　OSAS/UA2/DCCM3の定義との関係

5.12　アプリケーション起動機能を使用する場合に関連づける内容

EXECAP要求によってアプリケーションを起動する場合，自システム内の次のプロセス間で定義する内容を関連づける必要があります。

SPPまたはMHP

アプリケーション起動プロセス

MCF通信プロセス

ここでは，次に示す三つのパターンで，それぞれの定義をどのように関連づけるのか説明します。

SPPからのシステム間通信によってアプリケーションを起動する場合

MHPからのシステム間通信によってアプリケーションを起動する場合

システム間通信と自システム内のアプリケーション起動を併用する場合

＜この節の構成＞

(1)　SPPからのシステム間通信によってアプリケーションを起動する場合

(2)　MHPからのシステム間通信によってアプリケーションを起動する場合

(3)　システム間通信と自システム内のアプリケーション起動を併用する場合

(1)　SPPからのシステム間通信によってアプリケーションを起動する場合

SPPからEXECAP要求で相手システムのアプリケーションを起動する場合は，次の図に示すように定義を関連づけます。

図5-9　SPPからのシステム間通信によってアプリケーションを起動する場合の定義例

SPP1のユーザサービス定義のアプリケーション起動プロセス識別子（set mcf_psv_id）には，OSASNF1通信プロセスの通信構成定義（mcftenv -s）の識別子を指定します。

OSASNF1通信プロセスのアプリケーション環境定義のアプリケーション起動プロセス識別子（mcfaenv -p）には，アプリケーション起動プロセス（PSV1）の通信構成定義（mcftenv -s）の識別子を指定します。

SPP2のユーザサービス定義のアプリケーション起動プロセス識別子（set mcf_psv_id）には，OSASNF2通信プロセスの通信構成定義（mcftenv -s）の識別子を指定します。

OSASNF2通信プロセスのアプリケーション環境定義のアプリケーション起動プロセス識別子（mcfaenv -p）には，アプリケーション起動プロセス（PSV2）の通信構成定義（mcftenv -s）の識別子を指定します。

この定義例の場合，各SPPからアプリケーション起動を要求すると，次の表に示すような結果になります。

表5-8　SPPからのアプリケーション起動の結果

SPP | 起動するアプリケーション | アプリケーション起動の可否 | アプリケーション起動の結果
SPP1 | APL01 | ○ | SPP1のユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するOSASNF1通信プロセスの，アプリケーション定義（apldef01）のAPL01の論理端末（NFLE01）に要求を出すため，OSASNF1の相手システム1で起動されます。
APL02 | ○ | SPP1のユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するOSASNF1通信プロセスの，アプリケーション定義（apldef01）のAPL02の論理端末（NFLE02）に要求を出すため，OSASNF2の相手システム2で起動されます。
APL03 | ○ | SPP1のユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するOSASNF1通信プロセスの，アプリケーション定義（apldef01）のAPL03の論理端末（NFLE03）に要求を出すため，OSASNF2の相手システム2で起動されます。
SPP2 | APL01 | × | SPP2のユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するOSASNF2通信プロセスの，アプリケーション定義（apldef02）にAPL01の定義がないため，起動要求がエラーになります。
APL02 | ○ | SPP2のユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するOSASNF2通信プロセスの，アプリケーション定義（apldef02）のAPL02の論理端末（NFLE02）に要求を出すため，OSASNF2の相手システム2で起動されます。
APL03 | × | SPP2のユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するOSASNF2通信プロセスの，アプリケーション定義（apldef02）にAPL03の定義がないため，起動要求がエラーになります。

（凡例）

○：起動できます。

×：起動できません。

(2)　MHPからのシステム間通信によってアプリケーションを起動する場合

MHPからEXECAP要求で相手システムのアプリケーションを起動する場合は，次の図に示すように定義を関連づけます。

図5-10　MHPからのシステム間通信によってアプリケーションを起動する場合の定義例

OSASNF1通信プロセスのアプリケーション環境定義のアプリケーション起動プロセス識別子（mcfaenv -p）には，アプリケーション起動プロセス（PSV1）の通信構成定義（mcftenv -s）の識別子を指定します。

OSASNF2通信プロセスのアプリケーション環境定義のアプリケーション起動プロセス識別子（mcfaenv -p）には，アプリケーション起動プロセス（PSV2）の通信構成定義（mcftenv -s）の識別子を指定します。

この定義例の場合，各MHPからアプリケーション起動を要求すると，次の表に示すような結果になります。

表5-9　MHPからのアプリケーション起動の結果

MHP
起動するアプリケーション
アプリケーション起動の可否
アプリケーション起動の結果

MHP1
（OSASNF1のMHP）
APL01
○
MHP1を起動したOSASNF1通信プロセスのアプリケーション定義（apldef01）のAPL01の論理端末（NFLE01）に要求を出すため，OSASNF1の相手システム1で起動されます。

APL02
○
MHP1を起動したOSASNF1通信プロセスのアプリケーション定義（apldef01）のAPL02の論理端末（NFLE02）に要求を出すため，OSASNF2の相手システム2で起動されます。

APL03
○
MHP1を起動したOSASNF1通信プロセスのアプリケーション定義（apldef01）のAPL03の論理端末（NFLE03）に要求を出すため，OSASNF2の相手システム2で起動されます。

MHP2
（OSASNF2のMHP）
APL01
×
MHP2を起動したOSASNF2通信プロセスのアプリケーション定義（apldef02）にAPL01の定義がないため，起動要求がエラーになります。

APL02
○
MHP2を起動したOSASNF2通信プロセスのアプリケーション定義（apldef02）のAPL02の論理端末（NFLE02）に要求を出すため，OSASNF2の相手システム2で起動されます。

APL03
×
MHP2を起動したOSASNF2通信プロセスのアプリケーション定義（apldef02）にAPL03の定義がないため，起動要求がエラーになります。

（凡例）

○：起動できます。

×：起動できません。

(3)　システム間通信と自システム内のアプリケーション起動を併用する場合

自システム内でのアプリケーション起動によってUAPを起動したあと，そのUAPでシステム間通信を行ってアプリケーション起動要求を行う場合は，次の図に示すように定義を関連づけます。

図5-11　システム間通信と自システム内アプリケーション起動の併用する場合の定義例

自システム内のアプリケーション起動の場合，SPP1のユーザサービス定義のアプリケーション起動プロセス識別子（set mcf_psv_id）には，アプリケーション起動プロセス（PSV1）の通信構成定義（mcftenv -s）の識別子を指定します。

アプリケーション起動プロセス（PSV1）のアプリケーション環境定義のアプリケーション起動プロセス識別子（mcfaenv -p）には，アプリケーション起動プロセス（PSV1）の通信構成定義（mcftenv -s）の識別子を指定します。

自システム内でのアプリケーション起動によって起動したUAPから，さらにシステム間通信によるアプリケーション起動要求を行う場合，アプリケーション起動プロセス（PSV1）の通信構成定義に，起動するアプリケーションを定義します。※

OSASNF1通信プロセスのアプリケーション環境定義のアプリケーション起動プロセス識別子（mcfaenv -p）には，アプリケーション起動プロセス（PSV1）の通信構成定義（mcftenv -s）の識別子を指定します。

注※

OSASNF1通信プロセスの論理端末名も設定してください。

この定義例の場合，各UAPからアプリケーション起動を要求すると，次の表に示すような結果になります。

表5-10　UAPからのアプリケーション起動の結果

UAP | 起動するアプリケーション | アプリケーション起動の可否 | アプリケーション起動の結果
SPP1 | APL01 | ○ | SPP1ユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するアプリケーション起動プロセス（PSV1）の，アプリケーション定義（apldef01）のAPL01の論理端末（PSV01）に要求を出すため，自システムで起動されます。
APL02 | ○ | SPP1ユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するアプリケーション起動プロセス（PSV1）の，アプリケーション定義（apldef01）のAPL02の論理端末（NFLE02）に要求を出すため，OSASNF1の相手システム2で起動されます。
APL03 | ○ | SPP1ユーザサービス定義に指定したアプリケーション起動プロセス識別子と一致するアプリケーション起動プロセス（PSV1）の，アプリケーション定義（apldef01）のAPL03の論理端末（NFLE03）に要求を出すため，OSASNF1の相手システム2で起動されます。
APL01（PSV1のMHP） | APL01 | ○ | APL01を起動したアプリケーション起動プロセス（PSV01）の，アプリケーション定義（apldef01）のAPL01の論理端末（PSV01）に要求を出すため，自システムで起動されます。
APL02 | ○ | APL01を起動したアプリケーション起動プロセス（PSV01）の，アプリケーション定義（apldef01）のAPL02の論理端末（NFLE02）に要求を出すため，OSASNF1の相手システム2で起動されます。
APL03 | ○ | APL01を起動したアプリケーション起動プロセス（PSV01）の，アプリケーション定義（apldef01）のAPL03の論理端末（NFLE03）に要求を出すため，OSASNF1の相手システム2で起動されます。
MHP1（OSASNF1のMHP） | APL01 | × | MHP1を起動した通信プロセス（OSASNF1）のアプリケーション定義（apldef02）にAPL01の定義がないため，起動要求がエラーになります。
APL02 | ○ | MHP1を起動した通信プロセス（OSASNF1）のアプリケーション定義（apldef02）の，APL02の論理端末（NFLE02）に要求を出すため，OSASNF1の相手システム2で起動されます。
APL03 | × | MHP1を起動した通信プロセス（OSASNF1）のアプリケーション定義（apldef02）にAPL03の定義がないため，起動要求がエラーになります。

（凡例）

○：起動できます。

×：起動できません。

5.13　定義例

TP1/NET/OSAS-NIFを使用したシステム定義の例を示します。TP1/NET/OSAS-NIFのシステム構成例を次の図に示します。

図5-12　TP1/NET/OSAS-NIFのシステム構成例

図5-12のシステム構成例のコーディング例を次に示します。このコーディング例は，/BeTRAN/examples/mcf/OSASNIF/conf/com_dのファイルで提供しています。

### MCF通信構成定義 TP1/NET/OSAS-NIFプロトコル固有定義               ###
#
### コネクション定義の開始(cnct01)
mcftalccn   -c  cnct01                                                  ¥
           -p  onf                                                     ¥
           -n  x'0a81008202000283020003'                               ¥
           -g "sndbuf=1                                                ¥
               rcvbuf=2"                                               ¥
           -e "msgbuf=3                                                ¥
               count=14"                                               ¥
           -m "mode=xnfas"                                             ¥
           -i  manual                                                  ¥
           -v "tim1=60                                                 ¥
               tim2=60                                                 ¥
               tim3=60                                                 ¥
               tim4=60                                                 ¥
               tim5=60"                                                ¥
           -o "ownsid=x'0001'                                          ¥
               otrsid=x'ffff'"                                         ¥
           -y "nummax=20"                                              ¥
           -b "bretry=yes                                              ¥
               bretrycnt=20                                            ¥
               bretryint=5"                                            ¥
           -z "slot=1"                                                 ¥
           -q x'1781008202000383020003840b490001020000000000fe01'
#
###  論理端末定義
    mcftalcle   -l  NFLE01                                             ¥
                -t  send                                               ¥
                -m "dmsgcnt=0"                                         ¥
                -k "quegrpid=quegrp01"
#
###  論理端末定義
    mcftalcle   -l  NFLE02                                             ¥
                -t  request                                            ¥
                -m "dmsgcnt=0"                                         ¥
                -k "quegrpid=quegrp01"
#
###  論理端末定義
    mcftalcle   -l  NFLE03                                             ¥
                -t  request                                            ¥
                -m "dmsgcnt=0"                                         ¥
                -k "quegrpid=quegrp01"                                 ¥
                -d "sync=yes"
#
###  論理端末定義
    mcftalcle   -l  NFLE04                                             ¥
                -t  receive                                            ¥
                -k "quegrpid=quegrp01"
#
###  論理端末定義
    mcftalcle   -l  NFLE05                                             ¥
                -t  reply                                              ¥
                -k "quegrpid=quegrp01"                                 ¥
                -d "rplytim=30"
#
#-----------------------------------------------------------------------#
### コネクション定義の終了(cnct01)
mcftalced
#

6.　運用コマンド

OpenTP1システムは運用コマンドを使用して，システムを運用できます。この章では，TP1/NET/OSAS-NIFで使用する運用コマンドについて説明します。

＜この章の構成＞

6.1　TP1/NET/OSAS-NIFの運用コマンド

6.2　mcftactcn － コネクションの確立

6.3　mcftdctcn － コネクションの解放

6.4　mcftlscn － コネクションの状態表示

6.5　mcftactle － 論理端末の閉塞解除

6.6　mcftdctle － 論理端末の閉塞

6.7　mcftlsle － 論理端末の状態表示

6.1　TP1/NET/OSAS-NIFの運用コマンド

TP1/NET/OSAS-NIFは，オンライン中に運用コマンドを入力できます。

ここでは，運用コマンドのオプションのうち，TP1/NET/OSAS-NIFに関係のあるオプションについてだけ説明しています。ほかのオプション，運用コマンドの入力方法，およびその他の運用コマンドについては，マニュアル「OpenTP1 運用と操作」を参照してください。

TP1/NET/OSAS-NIFで使用する運用コマンドを次の表に示します。

表6-1　TP1/NET/OSAS-NIFで使用する運用コマンド

機能 | コマンド名称 | 定義中に組み込む | オフライン中に実行 | オンライン中に実行 | UAPから実行
コネクション管理 | コネクションの確立 | mcftactcn | × | × | ○ | ○
コネクションの解放 | mcftdctcn | × | × | ○ | ○
コネクションの状態表示 | mcftlscn | × | × | ○ | ○
論理端末管理 | 論理端末の閉塞解除 | mcftactle | × | × | ○ | ○
論理端末の閉塞 | mcftdctle | × | × | ○ | ○
論理端末の状態表示 | mcftlsle | × | × | ○ | ○

（凡例）

○：組み込みまたは実行ができます。

×：組み込みまたは実行ができません。

また，MCFが標準的に提供しているコマンドのうち，TP1/NET/OSAS-NIFでは次に示すコマンドは使用できないので，ご注意ください。

mcftspqle

mcftendct

mcfadltap

6.2　mcftactcn － コネクションの確立

＜この節の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　出力メッセージ

(1)　形式

mcftactcn 〔-s MCF通信プロセス識別子〕 -c コネクションID

(2)　機能

コネクションを確立します。

(3)　オプション

　-s MCF通信プロセス識別子　　～〈16進数字〉((01～ef))
MCF通信プロセス識別子を指定します。
MCF通信プロセス識別子は複数指定できません。
このオプションの指定を省略すると，すべてのMCFに対して，mcftactcnコマンドを実行します。

　-c コネクションID　　～〈1～8文字の識別子〉
確立するコネクションのコネクションIDを指定します。
コネクションIDは，一度に8個まで指定できます。複数指定するときは，引用符（"）で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。同一コネクションIDは重複して指定できません。
また，コネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDを混在して指定できません。一括指定の場合も，引用符（"）で囲みます。

*：すべてのコネクションを確立します。

先行文字列*：先行文字列で始まるすべてのコネクションを確立します。

〈複数指定の例〉　cnn1，cnn2，cnn3を指定する場合

-c "cnn1△cnn2△cnn3"

〈一括指定の例〉　cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

(4)　出力メッセージ

出力メッセージ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 | ヘルプメッセージ | 標準出力
KFCA13530-E | コマンドを無視しました。 | 標準エラー出力
KFCA13531-E | コマンドが失敗しました。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

6.3　mcftdctcn － コネクションの解放

＜この節の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　出力メッセージ

(1)　形式

mcftdctcn 〔-s MCF通信プロセス識別子〕 -c コネクションID 〔-f〕

(2)　機能

コネクションを解放します。

-fオプションを指定した場合は，該当コネクションが仕掛り中の場合でも，強制的に解放します。コネクション解放後，CERREVTを通知します。

-fオプションを指定しない場合は，該当コネクションの仕掛り完了を待ってから，解放します。コネクション解放後，CCLSEVTを通知します。

なお，仕掛り中の処理は，次のように扱います。

受信仕掛り中の場合，受信途中のメッセージを破棄します。

非同期SEND（dc_mcf_send）の仕掛り中の場合，送信処理を中断し，仕掛り中のメッセージを出力キューに戻します。出力キューに戻したメッセージは，次回のコネクション確立時に再送されます。

同期送受信（dc_mcf_sendrecv）仕掛り中の場合，送受信処理を中断し，エラーコードDCMCFRTN_73020でリターンします。

(3)　オプション

　-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
該当するコネクションを強制的に解放します。

(4)　出力メッセージ

出力メッセージ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 | ヘルプメッセージ | 標準出力
KFCA13530-E | コマンドを無視しました。 | 標準エラー出力
KFCA13531-E | コマンドが失敗しました。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

6.4　mcftlscn － コネクションの状態表示

＜この節の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　出力形式

(5)　出力メッセージ

(1)　形式

mcftlscn 〔-s MCF通信プロセス識別子〕 -c コネクションID 〔-d〕

(2)　機能

コネクションの状態を標準出力に出力します。

(3)　オプション

　-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
コネクションの状態と該当するコネクションに対応する論理端末の情報を表示します。
このオプションの指定を省略すると，コネクションの状態だけを表示します。

(4)　出力形式

mmm cccccccc ppp sssss dddd
   llllllll ttt nn

注

-dオプションを指定しないでmcftlscnコマンドを実行した場合は，「mmm cccccccc ppp sssss dddd」の行だけ出力されます。

mmm：MCF識別子

cccccccc：コネクションID

ppp：プロトコル種別
NIF…NIFプロトコル

sssss：コネクション状態
ACT…確立
ACT/B…確立処理中
DCT…解放
DCT/B…解放処理中

dddd：詳細ステータス（保守情報）

llllllll：論理端末名称

ttt：論理端末の端末タイプ
REQ…request型
RLY…reply型
SND…send型
REV…receive型

nn：エージェント番号

(5)　出力メッセージ

出力メッセージ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障害が発生しました。 | 標準エラー出力

6.5　mcftactle － 論理端末の閉塞解除

＜この節の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　出力メッセージ

(1)　形式

mcftactle 〔-s MCF通信プロセス識別子〕 〔-c コネクションID〕
           -l 論理端末名称

(2)　機能

論理端末の閉塞を解除します。

(3)　オプション

　-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*"

(4)　出力メッセージ

出力メッセージ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と論理端末名称の対応が正しくありません。 | 標準エラー出力
KFCA10395-E | 指定したコネクションには未接続の論理端末名称が指定されています。 | 標準エラー出力
KFCA10503-I | ヘルプメッセージ | 標準出力
KFCA13530-E | コマンドを無視しました。 | 標準エラー出力
KFCA13531-E | コマンドが失敗しました。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

6.6　mcftdctle － 論理端末の閉塞

＜この節の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　出力メッセージ

(5)　注意事項

(1)　形式

mcftdctle 〔-s MCF通信プロセス識別子〕 〔-c コネクションID〕
          -l 論理端末名称

(2)　機能

論理端末を強制的に閉塞します。

(3)　オプション

　-s MCF通信プロセス識別子　　～〈16進数字〉((01～ef))
MCF通信プロセス識別子を指定します。
MCF通信プロセス識別子は複数指定できません。
このオプションの指定を省略すると，すべてのMCFに対して，mcftdctleコマンドを実行します。

　-c コネクションID　　～〈1～8文字の識別子〉
閉塞したい論理端末に対応するコネクションのコネクションIDを指定します。
コネクションIDは複数指定できません。また，一括指定もできません。

　-l 論理端末名称　　～〈1～8文字の識別子〉
閉塞する論理端末の名称を指定します。
論理端末名称は，一度に8個まで指定できます。複数指定するときは，引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は，重複して指定できません。
また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称を混在して指定できません。一括指定の場合も，引用符（"）で囲みます。

*：すべての論理端末を閉塞します。

先行文字列*：先行文字列で始まるすべての論理端末を閉塞します。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末名称を指定する場合

-l "len*"

(4)　出力メッセージ

出力メッセージ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 | ヘルプメッセージ | 標準出力
KFCA13530-E | コマンドを無視しました。 | 標準エラー出力
KFCA13531-E | コマンドが失敗しました。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

(5)　注意事項

receive型論理端末およびreply型論理端末で，メッセージの受信仕掛り中にこのコマンドを実行した場合
受信仕掛り中のメッセージを破棄します。以降の受信メッセージは入力キューに登録しません。

request型論理端末で，メッセージの受信仕掛り中にこのコマンドを実行した場合
メッセージ受信完了を待ってから論理端末を閉塞します。

メッセージの送信仕掛り中にこのコマンドを実行した場合
メッセージの送信処理が中断されます。出力キューにディスクキューを使用しているときは，UAPからの送信メッセージは出力キュー上に格納されます。出力キューにメモリキューを使用しているときは，UAPからの送信メッセージは破棄されます。

6.7　mcftlsle － 論理端末の状態表示

＜この節の構成＞

(1)　形式

(2)　機能

(3)　オプション

(4)　出力形式

(5)　出力メッセージ

(1)　形式

mcftlsle 〔-s MCF通信プロセス識別子〕 〔-c コネクションID〕
         -l 論理端末名称 〔-q〕〔-t〕

(2)　機能

論理端末の状態を標準出力に出力します。

(3)　オプション

　-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
指定した論理端末がセキュア状態かどうかを表示します。

(4)　出力形式

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…保留

(5)　出力メッセージ

出力メッセージ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.　組み込み方法

TP1/NET/OSAS-NIFをOpenTP1システムへ組み込む方法について説明します。

＜この章の構成＞

7.1　TP1/NET/OSAS-NIFの組み込みの流れ

7.2　MCFメイン関数の作成

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

7.1　TP1/NET/OSAS-NIFの組み込みの流れ

TP1/NET/OSAS-NIFをOpenTP1システムに組み込むときの作業の流れを示します。

＜この節の構成＞

(1)　MCFメイン関数の作成

(2)　MCFサービス名の登録

(3)　システムサービス情報定義ファイルの作成

(4)　定義オブジェクトファイルの生成

(1)　MCFメイン関数の作成

TP1/NET/OSAS-NIFを起動するためには，MCFメイン関数をコーディングし，コンパイルおよびリンケージしておく必要があります。詳細は，「7.2　MCFメイン関数の作成」を参照してください。

(2)　MCFサービス名の登録

TP1/NET/OSAS-NIFを実行するために，MCFサービス名をシステムサービス構成定義で定義しておく必要があります。

また，MCFサービス名はMCFマネジャ定義オブジェクトファイル名と一致させてください。

詳細は，マニュアル「OpenTP1 システム定義」を参照してください。

(3)　システムサービス情報定義ファイルの作成

システムサービス情報定義ファイルをテキストエディタで作成します。作成するファイルのパス名は，「＄DCDIR/lib/sysconf/システムサービス情報定義ファイル名」です。ファイルの定義形式については，「5.6　システムサービス情報定義」を参照してください。

(4)　定義オブジェクトファイルの生成

OpenTP1のネットワークコミュニケーション定義の各ソースファイルから定義オブジェクトファイルを生成します。詳細は，「7.3　定義オブジェクトファイルの生成」を参照してください。

7.2　MCFメイン関数の作成

TP1/NET/OSAS-NIFは，OpenTP1プロセスサービスによって起動されます。

TP1/NET/OSAS-NIFを起動するには，ユーザがMCFメイン関数をコーディングし，コンパイル，およびリンケージを行ってTP1/NET/OSAS-NIFの実行形式プログラムを作成する必要があります。リンケージには，mcfplosasnfコマンドを使用します。

MCFメイン関数では，スタート関数（dc_mcf_svstart）を呼び出します。UOCを使用する場合は，MCFメイン関数でUOC関数アドレスを指定してください。UOCは，MCFメイン関数と同じ言語（K&R版　C，ANSI CまたはC++）で作成してください。

MCFメイン関数のコーディング概要を図7-1および図7-2に示します。また，ディレクトリへの組み込み方法を図7-3に示します。

なお，これらのコーディング例を次のファイルで提供しています。

図7-1（ANSI C，C++）：/BeTRAN/examples/mcf/OSASNIF/cmlib/ansi/com.c

図7-2（K&R版 C）：/BeTRAN/examples/mcf/OSASNIF/cmlib/c/com.c

図7-1　MCFメイン関数のコーディング概要（ANSI C，C++の場合）

図7-2　MCFメイン関数のコーディング概要（K&R版 Cの場合）

注※

TP1/NET/OSAS-NIF提供の標準UOCを使用する場合は，「msgrcv01」の代わりに「dc_mcf_stduoc_msgin」をコーディングしてください。さらに，下記のようにextern宣言を行ってください。

ANSI Cの場合

extern DCLONG dc_mcf_stduoc_msgin(dcmcf_uoc_min_n *);

C++の場合

extern "C"{ extern DCLONG dc_mcf_stduoc_msgin(dcmcf_uoc_min_n *); }

K&R版Cの場合

extern DCLONG dc_mcf_stduoc_msgin();

TP1/NET/OSAS-NIFで提供するヘッダファイルを取り込みます。

使用するUOC関数をextern宣言します。UOCのリターン値はDCLONG型にしてください。
これらのUOCを使用する場合だけ，コーディングしてください。

UOCテーブルをextern宣言します。UOC使用する場合，必ずこのとおりにコーディングしてください。
2.のUOCを使用する場合だけ，コーディングしてください。

各UOC関数のアドレスを，次に示すシステム提供変数に設定します。

dcmcf_uoctbl.msgrcv  /*入力メッセージ編集UOCアドレス */
dcmcf_uoctbl.msgsend /*出力メッセージ編集UOCアドレス */

これらのUOCを使用する場合だけ，コーディングしてください。

スタート関数を呼び出します。
MCFメイン関数には必ずコーディングしてください。

図7-3　MCFメイン関数のディレクトリへの組み込み方法

注※1

mcfplosasnfコマンドでリンケージします。

注※2

TP1/NET/OSAS-NIFの実行形式プログラム名は，先頭がmcfuで始まる8文字以内の名称にしてください。

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

定義オブジェクトファイルを次の手順で生成します。

ただし，開始から再開始の間に定義オブジェクトファイルを変更しないでください。変更した場合，再開始時に正常に動作しないおそれがあるためご注意ください。

OSのテキストエディタを使用して，MCFの定義ファイルから，次に示す定義ソースファイルを作成します。

MCFマネジャ定義ソースファイル

MCF通信構成定義の共通定義ソースファイル

MCF通信構成定義のTP1/NET/OSAS-NIFのプロトコル固有定義ソースファイル

MCFアプリケーション定義ソースファイル

MCF定義オブジェクト生成ユティリティを使用して，定義ソースファイルから，次に示すオブジェクトファイルを作成します。

MCFマネジャ定義オブジェクトファイル

MCF通信構成定義の共通定義オブジェクトファイル

MCF通信構成定義のTP1/NET/OSAS-NIFのプロトコル固有定義オブジェクトファイル

MCFアプリケーション定義オブジェクトファイル

MCF定義結合ユティリティを使用して，MCF通信構成定義の，共通定義とプロトコル固有定義のオブジェクトファイルを結合します。

定義オブジェクトファイルの作成方法の概要を次の図に示します。

図7-4　定義オブジェクトファイルの作成方法の概要

注※1

次に示すコマンドで生成します。

mcfXXXX△-i△〔パス名〕入力ファイル名
      △-o△〔パス名〕出力オブジェクトファイル名

mcfXXXXは，ソースファイルごとに異なります。

mcfmngr：MCFマネジャ定義ソースファイル

mcfcomn：MCF通信構成定義のソースファイル

mcfosnf：MCF通信構成定義のプロトコル（TP1/NET/OSAS-NIF）固有定義ソースファイル

mcfapli：MCFアプリケーション定義ソースファイル

MCF定義オブジェクト生成ユティリティのmcfosnfコマンドについては「5.8.1　MCF定義オブジェクト生成ユティリティの起動」を，その他のコマンドについてはマニュアル「OpenTP1 システム定義」を参照してください。

注※2

次に示すコマンドで，MCF通信構成定義の二つのオブジェクトファイルを結合します。

mcflink△-i△共通定義オブジェクトファイル名
      △TP1/NET/OSAS-NIF定義オブジェクトファイル名
      △-o△出力オブジェクトファイル名

注※3

定義オブジェクトファイルはシステム環境定義のDCCONFPATHで指定したディレクトリに格納してください。システム環境定義については，マニュアル「OpenTP1 システム定義」を参照してください。

8.　障害対策

TP1/NET/OSAS-NIFの障害対策について説明します。

＜この章の構成＞

8.1　障害の種類と対応処理

8.2　通信形態と障害の処理

8.1　障害の種類と対応処理

TP1/NET/OSAS-NIFで発生する障害の種類と対応処理を次の表に示します。

表8-1で記号で示すユーザの対応処理の詳細を表8-2に示します。該当するA～Nの記号で検索してください。

表8-1　障害の種類と対応処理

障害の種類
障害内容
TP1/NET/OSAS-NIFの処理
ユーザの対応処理

コネクション障害
コネクションの強制解放（mcftdctcn -f コマンド入力）

コネクション障害を通知するメッセージログ（KFCA13502-E）を出力します。

該当するコネクション下の論理端末を閉塞します。

CERREVTを起動します。

コネクションを解放します。

A

下位層障害
同上
B

コネクション確立処理の失敗

コネクション障害を通知するメッセージログ（KFCA13502-E）を出力します。

CERREVTを起動します。

B

論理端末障害
論理端末層検出異常

メッセージ受信中の障害の場合，論理端末の端末タイプごとに次に示す処理をします。
●reply型，receive型
(a)受信メッセージを破棄します。
(b)受信失敗を通知するメッセージログ（KFCA13506-E）を出力します。
(c)相手システムへ受信拒否を送信します。
●request型，request型（同期型）
(a)受信メッセージを破棄します。
(b)受信失敗を通知するメッセージログ（KFCA13506-E）を出力します。

メッセージ送信中の障害の場合は次に示す処理をします。
(a)送信メッセージを破棄します。
(b)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。
(c)相手システムへ送信中断を送信します。

障害発生を通知するメッセージログ（KFCA13503-E）を出力します。

CERREVTを起動します。

論理端末を閉塞します。

C

論理端末閉塞解除失敗

障害発生を通知するメッセージログ（KFCA13503-E）を出力します。

CERREVTを起動します。

C

mcftdctleコマンド入力

論理端末の端末タイプごとに次に示す処理をします。
●request型，request型（同期型），send型
(a)メッセージ送信中の場合
・メッセージ送信を中断します。
・送信中断を通知するメッセージログ（KFCA13508-E）を出力します。
・相手システムへ送信中断を送信します。
●reply型，receive型
(a)メッセージ受信中の場合
・受信メッセージを破棄します。
・受信失敗を通知するメッセージログ（KFCA13506-E）を出力します。
・相手システムへ受信拒否を送信します。

障害発生を通知するメッセージログ（KFCA13503-E）を出力します。

CERREVTを起動します。

論理端末を閉塞します。

D

入力メッセージ編集UOCの障害
UOCエラー

UOCエラー（KFCA10611-E），UOCパラメタ不正（KFCA10620-E）またはアプリケーション名取得失敗（KFCA10610-E）を通知するメッセージログを出力します。

以降の処理は「論理端末障害」の「論理端末層検出異常」と同じです。

F

入力キュー，スケジューラ，ネームサーバまたはRPCの障害

UAP閉塞

アプリケーション名不正

入力キュー書き込み障害

入力キュー障害を通知するメッセージログ（KFCA10604-E）を出力します。

入力メッセージの種類に従い，次に示す処理をします。

－

●受信メッセージ（エラーイベント定義）
ERREVT1またはERREVT2を起動します。
E

●受信メッセージ（エラーイベント未定義）
以降の処理は「論理端末障害」の「論理端末層検出異常」と同じです。
F

●ERREVT1，ERREVT2
以降の処理は「論理端末障害」の「論理端末層検出異常」と同じです。
F

●ERREVT3，ERREVTA，COPNEVT，CCLSEVT，CERREVT
メッセージを破棄します。
E

出力キュー，出力メッセージ編集UOC障害

出力キュー読み込み障害

UOCエラー

UOCエラー（KFCA10611-E），UOCパラメタ不正（KFCA10620-E）または出力キュー障害（KFCA10605-E）を通知するメッセージログを出力します。

論理端末障害の端末タイプごとに次に示す処理をします。
●request型，request型（同期型），send型
以降の処理は「論理端末障害」の「論理端末層検出異常」と同じです。
●reply型
以降の処理は「UAP異常」の「ERREVT3未定義」と同じです。

F

出力キュー障害

メッセージ送信済み障害

メッセージリセット障害

メッセージ送信完了処理で障害を通知するメッセージログ（KFCA10617-E）を出力します。

障害発生を通知するメッセージログ（KFCA13503-E）を出力します。

CERREVTを起動します。

論理端末を閉塞します。

F

送信バッファ障害（通常メッセージ）

バッファ長不足

バッファ数不足

メッセージ出力障害を通知するメッセージログ（KFCA10605-E）を出力します。

論理端末の端末タイプごとに次に示す処理をします。

－

●request型，request型（同期型），send型
(a)メッセージ送信を中断します。
(b)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。
(c)障害発生を通知するメッセージログ（KFCA13503-E）を出力します。
(d)CERREVTを起動します。
(e)論理端末を閉塞します。
F

●reply型
(a)メッセージ送信を中断します。
(b)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。
(c)障害発生を通知するメッセージログ（KFCA13503-E）を出力します。
(d)CERREVTを起動します。
(e)論理端末を閉塞します。
(f)以降の処理は「コネクション障害」の「下位層障害」と同じです。
G

受信バッファ障害

バッファ長不足

バッファ数不足

受信バッファ不足を通知するメッセージログ（KFCA13577-E）を出力します。

コネクション確立済みの場合は次に示す処理をします。
(a)NIFアソシエーション解放を通知するメッセージログ（KFCA13551-I）を出力します。
(b)以降の処理は「コネクション障害」の「下位層障害」と同じです。

コネクション確立中の場合は次に示す処理をします。
(a)NIFアソシエーション確立失敗を通知するメッセージログ（KFCA13579-E）を出力します。
(b)以降の処理は「コネクション障害」の「コネクション確立処理の失敗」と同じです。

G

バッファ不足

受信バッファサイズ値超過を通知するメッセージログ（KFCA13583-E）を出力します。

以降の処理は「バッファ長不足，バッファ数不足」の2.および3.と同じです。

G

送信バッファ障害（制御メッセージ）

バッファ長不足

バッファ数不足

送信バッファ不足を通知するメッセージログ（KFCA13576-E）を出力します。

コネクション確立済みの場合は次に示す処理をします。
(a)NIFアソシエーション解放を通知するメッセージログ（KFCA13551-I）を出力します。
(b)以降の処理は「コネクション障害」の「下位層障害」と同じです。

コネクション確立中の場合，以降の処理は「NIFアソシエーション確立失敗」と同じです。

G

バッファ不足

送信バッファサイズ値超過を通知するメッセージログ（KFCA13582-E）を出力します。

以降の処理は「バッファ長不足，バッファ数不足」の2.および3.と同じです。

G

編集バッファ障害

バッファ長不足

－
H

バッファ数不足

入力メッセージの場合は次に示す処理をします。
(a)アプリケーション名取得失敗を通知するメッセージログ（KFCA10610-E）を出力します。
(b)論理端末の端末タイプごとに，次に示す処理をします。

－

●request型
(a)受信メッセージを破棄します。
(b)受信失敗を通知するメッセージログ（KFCA13506-E）を出力します。
(c)障害発生を通知するメッセージログ（KFCA13503-E）を出力します。
(d)CERREVTを起動します。
(e)論理端末を閉塞します。
(f)以降の処理は「コネクション障害」の「下位層障害」と同じです。
G

●request型（同期型），reply型，receive型
「論理端末障害」の「論理端末層検出異常」と同じです。
F

出力メッセージの場合は，「送信バッファ障害（通常メッセージ）」と同じです。

F，G

UAP型不一致

入力メッセージと論理端末の端末タイプの不一致

アプリケーション型不正を通知するメッセージログ（KFCA13522-E）を出力します。

受信メッセージを破棄します。

相手システムへ受信拒否を送信します。

障害発生を通知するメッセージログ（KFCA13503-E）を出力します。

CERREVTを起動します。

論理端末を閉塞します。

F

UAP障害

UAP異常終了

rollback発行
　　　　　など

ERREVT3を起動します。

request型論理端末（同期型）を使用している場合は「論理端末障害」の「論理端末層検出異常」と同じです。

E

ERREVT1
ERREVT2
ERREVT3障害

ERREVT3未定義

reply型論理端末を使用している場合は次に示す処理をします。
(a)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。
(b)相手システムへUAP異常を送信します。
(c)障害発生を通知するメッセージログ（KFCA13503-E）を出力します。
(d)CERREVTを起動します。
(e)論理端末を閉塞します。

F

UAP異常受信

request型論理端末を使用している場合は次に示す処理をします。
(a)受信失敗を通知するメッセージログ（KFCA13506-E）を出力します。
(b)障害発生を通知するメッセージログ（KFCA13503-E）を出力します。
(c)CERREVTを起動します。
(d)論理端末を閉塞します。

F

プロトコル障害

シーケンスエラーなど

プロトコル違反を通知するメッセージログ（KFCA13573-E）を出力します。

コネクション確立済みの場合は次に示す処理をします。
(a)NIFアソシエーション解放を通知するメッセージログ（KFCA13551-I）を出力します。
(b)以降の処理は「コネクション障害」の「下位層障害」と同じです。

コネクション確立中の場合は「コネクション障害」の「コネクション確立処理の失敗」と同じです。

B

アソシエーション層プロトコル障害

シーケンスエラー

タイムアウト発生

アソシエーション層障害を通知するメッセージログ（KFCA13586-E）を出力します。

コネクション確立済みの場合は「プロトコル障害」の2.と同じです。

コネクション確立中に障害が発生して，再試行不可能またはリトライオーバになった場合は，「プロトコル障害」の2.と同じ処理をします。

B

不正データ受信

未支援データ受信

不正データ受信

不正データ受信を通知するメッセージログ（KFCA13570-E）を出力します。

コネクション確立中の場合は「プロトコル障害」の3.と同じです。

コネクション解放中の場合は「プロトコル障害」の2.と同じです。

メッセージ送受信中の場合は次に示す処理をします。
(a)NIF-REJECT送信を通知するメッセージログ（KFCA13569-E）を出力します。
(b)以降の処理は「処理中断連絡受信」の「NIF-REJECT受信」の2.～6.と同じです。

論理端末閉塞解除処理中の場合は次に示す処理をします。
(a)NIF-REJECT送信を通知するメッセージログ（KFCA13569-E）を出力します。
(b)以降の処理は「論理端末障害」の「論理端末閉塞解除失敗」と同じです。

1.：－
2.～3.：B
4.～5.：M

緊急解放要求受信

NIF-ABORT受信

ABORT受信を通知するメッセージログ（KFCA13571-E）を出力します。

コネクション確立済みの場合は「プロトコル障害」の2.と同じです。

コネクション確立中に障害が発生して，再試行不可能またはリトライオーバになった場合は，「プロトコル障害」の2.と同じ処理をします。

B

A-ABORT受信

A-P-ABORT受信

「アソシエーション層プロトコル障害」と同じです。

B

処理中断連絡受信

NIF-REJECT受信

NIF-REJECT受信を通知するメッセージログ（KFCA13572-E）を出力します。

メッセージ送信中の場合，論理端末の端末タイプごとに次に示す処理をします。
●request型，reply型，send型
(a)メッセージ送信を中断します。
(b)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。
●request型（同期型）
(a) 送信メッセージを破棄します。
(b)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。

メッセージ受信中の場合は次に示す処理をします。
(a)受信メッセージを破棄します。
(b)受信失敗を通知するメッセージログ（KFCA13506-E）を出力します。

障害発生を通知するメッセージログ（KFCA13503-E）を出力します。

CERREVTを起動します。

論理端末を閉塞します。

M

受信拒否受信

論理端末の端末タイプごとに次に示す処理をします。
●request型，send型
(a)メッセージ送信を中断します。
(b)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。
●request型（同期型），reply型
(a)送信メッセージを破棄します。
(b)送信中断を通知するメッセージログ（KFCA13508-E）を出力します。

障害発生を通知するメッセージログ（KFCA13503-E）を出力します。

CERREVTを起動します。

論理端末を閉塞します。

N

送信中断受信

「NIF-REJECT受信」の3.～6.と同じです。

N

タイムアウト

t1，t2，t3，t4，t5タイムアウト発生

タイムアウト発生を通知するメッセージログ（KFCA13580-E）を出力します。

コネクション確立中の場合は「緊急解放要求受信」の3.と同じです。

コネクション解放中の場合は「プロトコル障害」の2.と同じです。

メッセージ送受信中の場合は「不正データ受信」の4.と同じです。

論理端末閉塞解除処理中の場合は「不正データ受信」の5.と同じです。

1.～3.：B
4.～5.：M

rplytimタイムアウト発生

問い合わせメッセージ受信の場合は「UAP障害」の「ERREVT3未定義」と同じです。

再送問い合わせメッセージ受信の場合は「論理端末障害」の「論理端末層検出異常」と同じです。

F

下位層障害

XNFマクロエラー

切断受信

「アソシエーション層プロトコル障害」と同じです。

B

内部インタフェース領域確保失敗

共用メモリ不足

共用メモリ不足を通知するメッセージログ（KFCA13578-E）を出力します。

「プロトコル障害」の2.および3.と同じです。

G

ローカルメモリ不足

ローカルメモリ不足を通知するメッセージログ（KFCA13575-E）を出力します。

以降の処理は「プロトコル障害」の2.および3.と同じです。

G

ローカルメモリバッファ取得失敗

ローカルメモリバッファ取得失敗を通知するメッセージログ（KFCA13518-E）を出力します。

処理を終了します。

E

NIFアソシエーション確立失敗

構成不一致など

NIFアソシエーション確立失敗を通知するメッセージログ（KFCA13579-E）を出力します。

以降の処理は「コネクション障害」の「コネクション確立処理の失敗」と同じです。

G

開始処理失敗

共用メモリ不足

ローカルメモリ不足

論理端末の窓口登録失敗　　　など

イニシャライズ処理打ち切りを通知するメッセージログ（KFCA13519-E，KFCA13520-E，KFCA13584-E）を出力します。

MCFプロセスが異常終了します。

J

再送処理失敗

再送失敗

再送処理失敗を通知するメッセージログ（KFCA13509-E）を出力します。

再送処理を終了します。

論理端末を閉塞解除します。

I

再送メッセージ受信失敗

再送メッセージ受信失敗を通知するメッセージログ（KFCA13510-E）を出力します。

再送処理を終了します。

論理端末を閉塞解除します。

I

MCFの障害

内部論理矛盾など

内部矛盾を通知するメッセージログ（KFCA13547-E，KFCA13549-E，KFCA13574-E）を出力します。

メモリダンプを出力します。

必要に応じ，MCFプロセス異常終了，コネクション解放，論理端末閉塞，処理続行します。

K

MCFプログラムエラー

OSによるコアダンプを出力します。

MCFプロセスを異常終了します。

K

UOCプログラムエラー

「MCFプログラムエラー」と同じです。

L

（凡例）

－：対応処理はありません。

表8-2　ユーザの対応処理の詳細

ユーザの対応処理
ユーザの対応処理の詳細
採取資料

L
C
D
T

A

運用コマンド（mcftactcn）を入力して，再度コネクションを確立してください。

－
－
－
－

B

メッセージログで原因を調査してください。

原因不明の場合は，資料を採取し保守員に連絡してください。

原因を取り除いてください。

運用コマンド（mcftactcn）を入力して，再度コネクションを確立してください。

○
－
－
○

C

メッセージログで原因を調査してください。

原因不明の場合は，資料を採取し保守員に連絡してください。

原因を取り除いてください。

運用コマンド（mcftactle）を入力して，再度論理端末を閉塞解除してください。

○
－
－
○

D

運用コマンド（mcftactle）を入力して，再度論理端末を閉塞解除してください。

－
－
－
－

E

メッセージログで原因を調査してください。

原因を取り除いてください。

－
－
－
－

F

メッセージログで原因を調査してください。

原因を取り除いてください。

運用コマンド（mcftactle）を入力して，再度論理端末を閉塞解除してください。

－
－
－
－

G

メッセージログで原因を調査してください。

原因を取り除いてください。

運用コマンド（mcftactcn）を入力して，再度コネクションを確立してください。

－
－
－
－

H

必要に応じてUOCをリターンしてください。

－
－
－
－

I

メッセージログで原因を調査してください。

原因不明の場合は，資料を採取し保守員に連絡してください。

原因を取り除いてください。

○
－
－
○

J

メッセージログで原因を調査してください。

原因を取り除いてください。

MCFを再開始してください。

－
－
－
－

K

資料を採取して，保守員に連絡してください。

MCFを再開始してください。

○
○
○
○

L

原因を取り除いてください。

MCFを再開始してください。

－
－
－
－

M

メッセージログで原因を調査してください。

原因不明の場合は，資料を採取し保守員に連絡してください。

原因を取り除いてください。

運用コマンド（mcftactle）を入力したあと，または相手システムの障害復旧をしたあと，再度論理端末を閉塞解除してください。

○
－
－
○

N

メッセージログで原因を調査してください。

原因を取り除いてください。

運用コマンド（mcftactle）を入力したあと，または相手システムの障害復旧をしたあと，再度論理端末を閉塞解除してください。

－
－
－
－

（凡例）

L：メッセージログファイル

C：コアファイルおよび実行形式プログラムファイル

D：共用メモリダンプファイル

T：MCFイベントトレースファイル

○：採取する資料を示します。

－：該当しません。

8.2　通信形態と障害の処理

TP1/NET/OSAS-NIFでメッセージ処理中に発生する障害の発生個所と，TP1/NET/OSAS-NIFの処理を通信形態ごとに示します。

＜この節の構成＞

8.2.1　問い合わせ応答形態の障害

8.2.2　同期型問い合わせ応答形態の障害

8.2.3　分岐送信形態の障害

8.2.4　一方受信形態の障害

8.2.1　問い合わせ応答形態の障害

＜この項の構成＞

(1)　非応答型UAPからの問い合わせメッセージ送信時の障害

(2)　応答型UAPからの問い合わせメッセージ送信時の障害

(3)　応答メッセージ送信時の障害

(1)　非応答型UAPからの問い合わせメッセージ送信時の障害

非応答型UAPからの問い合わせメッセージ送信時の障害発生個所を次の図に示します。また，非応答型UAPからの問い合わせメッセージ送信時の障害の処理を表8-3に示します。該当する数字を参照してください。

図8-1　非応答型UAPからの問い合わせメッセージ送信時の障害発生個所

表8-3　非応答型UAPからの問い合わせメッセージ送信時の障害の処理

発生個所
内容
TP1/NET/OSAS-NIFの処理
問い合わせメッセージの扱い
応答メッセージの扱い
UAPでできる処理

1.
出力メッセージ編集
UOC障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
－

出力キュー障害
同上
破棄
－
－

バッファ取得障害
同上
保留
－
－

2.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
－
CERREVT処理

mcftdctle入力

メッセージログを出力します。

相手システムへ送信中断を送信します。

CERREVTを起動します。

論理端末を閉塞します。

保留
－
CERREVT処理

受信拒否受信
同上
保留
－
CERREVT処理

t3タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

保留
－
CERREVT処理

NIF-REJECT受信
同上
保留
－
CERREVT処理

3.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
－
CERREVT処理

t2タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

保留
－
CERREVT処理

UAP異常受信
同上
破棄
受信済み
CERREVT処理

4.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
破棄・未受信
CERREVT処理

t4タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

保留
破棄・未受信
CERREVT処理

NIF-REJECT受信
同上
保留
破棄・未受信
CERREVT処理

送信中断受信
同上
破棄
破棄・受信済み
CERREVT処理

5.
入力メッセージ編集
UOC障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
破棄・受信済み
－

UAP型不一致
同上
破棄
破棄・受信済み
－

アプリケーション名取得障害

ERREVT1またはERREVT2を起動します（起動できない場合は，メッセージログを出力後，CERREVTを起動して，論理端末を閉塞します）。

送信完了
ERREVT1またはERREVT2で受信（起動できない場合は破棄）
ERREVT1またはERREVT2処理

入力キュー障害
同上
送信完了
ERREVT1またはERREVT2で受信（起動できない場合は破棄）
ERREVT1またはERREVT2処理

バッファ取得障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
破棄・未受信
CERREVT処理

6.
メッセージ送信完了障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
－
CERREVT処理

（凡例）

－：該当しません。

(2)　応答型UAPからの問い合わせメッセージ送信時の障害

応答型UAPからの問い合わせメッセージ送信時の障害発生個所を次の図に示します。また，応答型UAPからの問い合わせメッセージ送信時の障害の処理を表8-4に示します。該当する数字を参照してください。

図8-2　応答型UAPからの問い合わせメッセージ送信時の障害発生個所

表8-4　非応答型UAPからの問い合わせメッセージ送信時の障害の処理

発生個所
内容
TP1/NET/OSAS-NIFの処理
問い合わせメッセージの扱い
応答メッセージの扱い
入力元論理端末へのUAP異常報告
UAPでできる処理

1.
出力メッセージ編集
UOC障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
あり
－

出力キュー障害
同上
破棄
－
あり
－

バッファ取得障害
同上
保留
－
－
－

2.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
－
－
CERREVT処理

mcftdctle入力

メッセージログを出力します。

相手システムへ送信中断を送信します。

CERREVTを起動します。

論理端末を閉塞します。

保留
－
－
CERREVT処理

受信拒否受信
同上
保留
－
－
CERREVT処理

t3タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

保留
－
－
CERREVT処理

NIF-REJECT受信
同上
保留
－
－
CERREVT処理

3.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
－
－
CERREVT処理

t2タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

保留
－
－
CERREVT処理

UAP異常受信
同上
破棄
受信済み
あり
CERREVT処理

4.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
破棄・未受信
－
CERREVT処理

t4タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

保留
破棄・未受信
－
CERREVT処理

NIF-REJECT受信
同上
保留
破棄・未受信
－
CERREVT処理

送信中断受信
同上
破棄
破棄・受信済み
あり
CERREVT処理

5.
入力メッセージ編集UOC障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
破棄・受信済み
あり
－

UAP型不一致
同上
破棄
破棄・受信済み
あり
－

アプリケーション名取得障害

ERREVT1を起動します（起動できない場合は，メッセージログを出力後，CERREVTを起動して，論理端末を閉塞します）。

送信完了
ERREVT1で受信（起動できない場合は破棄）
あり
ERREVT1処理

入力キュー障害

ERREVT2を起動します（起動できない場合は，メッセージログを出力後，CERREVTを起動して，論理端末を閉塞します）。

送信完了
ERREVT2で受信（起動できない場合は破棄）
－
ERREVT2処理REPLY要求で入力元論理端末へメッセージ送信

バッファ取得障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
破棄・未受信
－
CERREVT処理

6.
メッセージ送信完了障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
－
－
CERREVT処理

（凡例）

－：該当しません。

(3)　応答メッセージ送信時の障害

応答メッセージ送信時の障害発生個所を次の図に示します。また，応答メッセージ送信時の障害の処理を表8-5に示します。該当する数字を参照してください。

図8-3　応答メッセージ送信時の障害発生個所

表8-5　応答メッセージ送信時の障害の処理

発生個所
内容
TP1/NET/OSAS-NIFの処理
問い合わせメッセージの扱い
応答メッセージの扱い
UAPでできる処理

1.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

破棄
－
CERREVT処理

mcftdctle入力

メッセージログを出力します。

相手システムへ受信拒否を送信します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
CERREVT処理

t4タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
CERREVT処理

NIF-REJECT受信
同上
破棄
－
CERREVT処理

送信中断受信
同上
破棄
－
CERREVT処理

2.
入力メッセージ編集UOC障害

メッセージログを出力します。

相手システムへ受信拒否を送信します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
－

UAP型不一致
同上
破棄
－
－

バッファ取得障害
同上
破棄
－
－

アプリケーション名取得障害

ERREVT1またはERREVT2起動します（起動できない場合は，メッセージログを出力後，相手システムへ受信拒否を送信してから，CERREVTを起動して，論理端末を閉塞します）。

ERREVT1またはERREVT2で受信（起動できない場合は破棄）
－
ERREVT1またはERREVT2処理REPLY要求で相手システムへメッセージ送信

入力キュー障害
同上
ERREVT1またはERREVT2で受信（起動できない場合は破棄）
－
ERREVT1またはERREVT2処理REPLY要求で相手システムへメッセージ送信

3.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

－
未送信
CERREVT処理

NIF-REJECT受信

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
未送信
CERREVT処理

rplytimタイムアウト発生

メッセージログを出力します。

相手システムへUAP異常を送信します。

CERREVTを起動します。

論理端末を閉塞します。

－
送信済み
－

UAP異常終了
同上
－
送信済み
－

4.
出力メッセージ編集UOC障害

メッセージログを出力します。

相手システムへUAP異常を送信します。

CERREVTを起動します。

論理端末を閉塞します。

－
送信済み
－

出力キュー障害
同上
－
送信済み
－

バッファ取得障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

－
未送信
CERREVT処理

5.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

－
未送信
CERREVT処理

受信拒否受信

メッセージログを出力します。

相手システムへ送信中断を送信します。

CERREVTを起動します。

論理端末を閉塞します。

－
送信済み
－

t3タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
未送信
－

NIF-REJECT受信
同上
－
未送信
－

6.
メッセージ送信完了障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
－
CERREVT処理

（凡例）

－：該当しません。

8.2.2　同期型問い合わせ応答形態の障害

同期型の問い合わせメッセージ送信時の障害発生個所を次の図に示します。また，同期型の問い合わせメッセージ送信時の障害の処理を表8-6に示します。該当する数字を参照してください。

図8-4　同期型の問い合わせメッセージ送信時の障害発生個所

表8-6　同期型の問い合わせメッセージ送信時の障害の処理

発生個所
内容
TP1/NET/OSAS-NIFの処理
問い合わせメッセージの扱い
応答メッセージの扱い
UAPでできる処理

1.
出力メッセージ編集UOC障害

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
UAP処理

出力キュー障害
同上
破棄
－
UAP処理

バッファ取得障害
同上
破棄
－
UAP処理

2.
コネクション障害

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

コネクションを解放します。

破棄
－
UAP処理

mcftdctle入力

メッセージログを出力します。

UAPへエラーリターンします。

相手システムへ送信中断を送信します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
UAP処理

受信拒否受信
同上
破棄
－
UAP処理

t3タイムアウト発生

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
UAP処理

NIF-REJECT受信
同上
破棄
－
UAP処理

UAP異常終了

ERREVT2またはERREVT3を起動します。

メッセージログを出力します。

相手システムへ送信中断を送信します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－
ERREVT2またはERREVT3処理

3.
メッセージ送信完了障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
UAPで受信
CERREVT処理

4.
コネクション障害

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

コネクションを解放します。

－
受信済み
UAP処理

t2タイムアウト発生

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

論理端末を閉塞します。

－
受信済み
UAP処理

UAP異常受信
同上
－
受信済み
UAP処理

UAP異常終了

ERREVT2またはERREVT3を起動します。

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
破棄・受信済み
ERREVT2またはERREVT3処理

5.
コネクション障害

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

コネクションを解放します。

－
破棄・受信済み
UAP処理

t2タイムアウト発生

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

論理端末を閉塞します。

－
破棄・受信済み
UAP処理

NIF-REJECT受信
同上
－
破棄・受信済み
UAP処理

送信中断受信
同上
－
破棄・受信済み
UAP処理

UAP異常終了

ERREVT2またはERREVT3を起動します。

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
破棄・受信済み
ERREVT2またはERREVT3処理

6.
入力メッセージ編集UOC障害

メッセージログを出力します。

UAPへエラーリターンします。

CERREVTを起動します。

論理端末を閉塞します。

－
破棄・受信済み
UAP処理

バッファ取得障害
同上
－
破棄・受信済み
UAP処理

入力キュー障害
同上
－
破棄・受信済み
UAP処理

応答エラー

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
－
CERREVT処理

（凡例）

－：該当しません。

8.2.3　分岐送信形態の障害

一方送信メッセージ送信時の障害発生個所を次の図に示します。また，一方送信メッセージ送信時の障害の処理を表8-7に示します。該当する数字を参照してください。

図8-5　一方送信メッセージ送信時の障害発生個所

表8-7　一方送信メッセージ送信時の障害の処理

発生個所
内容
TP1/NET/OSAS-NIFの処理
送信メッセージの扱い
UAPでできる処理

1.
出力メッセージ編集UOC障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－

出力キュー障害
同上
破棄
－

バッファ取得障害
同上
保留
－

2.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

保留
CERREVT処理

mcftdctle入力

メッセージログを出力します。

相手システムへ送信中断を送信します。

CERREVTを起動します。

論理端末を閉塞します。

保留
CERREVT処理

受信拒否受信
同上
保留
CERREVT処理

t3タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

保留
CERREVT処理

NIF-REJECT受信
同上
保留
CERREVT処理

3.
メッセージ送信完了障害

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

－
CERREVT処理

（凡例）

－：該当しません。

8.2.4　一方受信形態の障害

一方送信メッセージ受信時の障害発生個所を次の図に示します。また，一方送信メッセージ受信時の障害の処理を表8-8に示します。該当する数字を参照してください。

図8-6　一方送信メッセージ受信時の障害発生個所

表8-8　一方送信メッセージ受信時の障害の処理

発生個所
内容
TP1/NET/OSAS-NIFの処理
受信メッセージの扱い
UAPでできる処理

1.
コネクション障害

メッセージログを出力します。

CERREVTを起動します。

コネクションを解放します。

破棄
CERREVT処理

mcftdctle入力

メッセージログを出力します。

相手システムへ受信拒否を送信します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
CERREVT処理

t4タイムアウト発生

メッセージログを出力します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
CERREVT処理

NIF-REJECT受信
同上
破棄
CERREVT処理

送信中断受信
同上
破棄
CERREVT処理

2.
入力メッセージ編集UOC障害

メッセージログを出力します。

相手システムへ受信拒否を送信します。

CERREVTを起動します。

論理端末を閉塞します。

破棄
－

UAP型不一致
同上
破棄
－

バッファ取得障害
同上
破棄
－

アプリケーション名取得障害

ERREVT1またはERREVT2を起動します（起動できない場合は，メッセージログを出力後，相手システムへ受信拒否を送信してから，CERREVTを起動し，論理端末を閉塞します）。

ERREVT1またはERREVT2で受信（起動できない場合破棄）
ERREVT1またはERREVT2処理

入力キュー障害
同上
ERREVT1またはERREVT2で受信（起動できない場合破棄）
ERREVT1またはERREVT2処理

（凡例）

－：該当しません。

付録

＜この付録の構成＞

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

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

付録C　UOCのコーディング例

付録D　理由コード一覧

付録E　旧製品からの移行に関する注意事項

付録F　バージョンアップ時の変更点

付録G　用語解説

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

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

＜この節の構成＞

付録A.1　問い合わせメッセージの送信

付録A.2　同期型の問い合わせメッセージの送信

付録A.3　応答メッセージの送信

付録A.4　一方送信メッセージの送信

付録A.5　一方送信メッセージの受信

付録A.1　問い合わせメッセージの送信

問い合わせメッセージを送信するときの処理の流れを，図A-1，図A-2に示します。

＜この項の構成＞

(1)　単一セグメントの場合

(2)　セグメント分割送信とセグメント組み立て受信の場合

(1)　単一セグメントの場合

図A-1　問い合わせメッセージの送信と応答メッセージの受信の処理の流れ（単一セグメントの場合）

(2)　セグメント分割送信とセグメント組み立て受信の場合

図A-2　問い合わせメッセージの送信と応答メッセージの受信の処理の流れ（セグメント分割送信とセグメント組み立て受信の場合）

付録A.2　同期型の問い合わせメッセージの送信

同期型の問い合わせメッセージを送信するときの処理の流れを，図A-3，図A-4に示します。

＜この項の構成＞

(1)　単一セグメントの場合

(2)　セグメント分割送信とセグメント組み立て受信の場合

(1)　単一セグメントの場合

図A-3　同期型の問い合わせメッセージの送信と応答メッセージの受信の処理の流れ（単一セグメントの場合）

(2)　セグメント分割送信とセグメント組み立て受信の場合

図A-4　同期型の問い合わせメッセージの送信と応答メッセージの受信の処理の流れ（セグメント分割送信とセグメント組み立て受信の場合）

付録A.3　応答メッセージの送信

応答メッセージを送信するときの処理の流れを，図A-5，図A-6に示します。

＜この項の構成＞

(1)　単一セグメントの場合

(2)　セグメント組み立て受信とセグメント分割送信の場合

(1)　単一セグメントの場合

図A-5　問い合わせメッセージの受信と応答メッセージの送信の処理の流れ（単一セグメントの場合）

(2)　セグメント組み立て受信とセグメント分割送信の場合

図A-6　問い合わせメッセージの受信と応答メッセージの送信の処理の流れ（セグメント組み立て受信とセグメント分割送信の場合）

付録A.4　一方送信メッセージの送信

一方送信メッセージを送信するときの処理の流れを，図A-7，図A-8に示します。

＜この項の構成＞

(1)　単一セグメントの場合

(2)　セグメント分割送信の場合

(1)　単一セグメントの場合

図A-7　一方送信メッセージ送信の処理の流れ（単一セグメントの場合）

(2)　セグメント分割送信の場合

図A-8　一方送信メッセージの送信処理の流れ（セグメント分割送信の場合）

付録A.5　一方送信メッセージの受信

一方送信メッセージを受信するときの処理の流れを，図A-9，図A-10に示します。

＜この項の構成＞

(1)　単一セグメントの場合

(2)　セグメント組み立て受信の場合

(1)　単一セグメントの場合

図A-9　一方送信メッセージ受信の処理の流れ（単一セグメントの場合）

(2)　セグメント組み立て受信の場合

図A-10　一方送信メッセージ受信の処理の流れ（セグメント組み立て受信の場合）

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

メッセージの送受信中に，障害が発生した場合の処理の流れを，図B-1～図B-4に示します。

＜この節の構成＞

(1)　メッセージ送信時の論理端末障害

(2)　メッセージ受信時の論理端末障害

(3)　入力メッセージ編集UOCエラー

(4)　UAP異常終了

(1)　メッセージ送信時の論理端末障害

図B-1　メッセージ送信時の論理端末障害

(2)　メッセージ受信時の論理端末障害

図B-2　メッセージ受信時の論理端末障害

(3)　入力メッセージ編集UOCエラー

図B-3　入力メッセージ編集UOCエラー

(4)　UAP異常終了

図B-4　UAP異常終了

注※1

一方送信メッセージ受信の場合だけ該当します。

注※2

応答メッセージ受信の場合だけ該当します。

付録C　UOCのコーディング例

TP1/NET/OSAS-NIFの入力メッセージ編集UOCのコーディング例（K&R版 C）を次に示します。このコーディング例は，/BeTRAN/examples/mcf/OSASNIF/cmlib/c/uoc.cのファイルで提供しています。

#include <stdio.h>
#include <dcmcf.h>
#include <dcmnom.h>
#include <dcmcfuoc.h>

#define ERR_PRT_KIND    -19001L

DCLONG dc_mcf_stduoc_msgin(param)

/* ADDRESS OF EDITING AREA FOR INPUT MESSAGE EDITING UOC       */
dcmcf_uoc_min_n *param ;

{
/*******************************/
/* DECLARATION OF ARGUMENT     */
/*******************************/

dcmnom_uoc *ifa_ptr ; /* POINTER OF PROTOCOL INDIVIDUAL INTERFACE */
DCLONG n ;
if(param->pro_kind != DCMCF_UOC_PRO_NF){ /* CHECK OF PROTOCOL KIND */
    param->rtn_detail=ERR_PRT_KIND;
    return(DCMCF_UOC_MSG_NG);            /* MESSAGE EDITING ERROR */
 }
ifa_ptr = (dcmnom_uoc *)param->pro_indv_ifa ;
       /* POINTER AQUISITION OF PROTOCOL INDIVIDUAL AREA BY CASTING */
if(ifa_ptr->appname[0] != 0){
  strcpy(param->aplname,ifa_ptr->appname);
 }
else{
      param->aplname[8] = 0 ;
      for(n = 0 ; n < 9 ; n++){
/* NULL TERMINATING IF SPACE, AND MAKING NORMAL DECISION OF AP NAME */
        if(param->buflist_adr->buf_array[0].buf_adr[n] == ' '){
            param->aplname[n] = 0 ;
            break;
        }
        param->aplname[n] =
                    param->buflist_adr->buf_array[0].buf_adr[n] ;
    }
}
param->buflist_adr->used_buf_num = param->buflist_adr->buf_num ;
return(DCMCF_UOC_MSG_OK_RCV);
}

付録D　理由コード一覧

＜この節の構成＞

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

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

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

ERREVT2の理由コードとコードが示す通知理由を次の表に示します。

表D-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
（0034）
0034
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の異常が発生しました。

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

CERREVTの理由コードを次の表に示します。

表D-2　CERREVTの理由コード

理由コード1
（16進数字）
理由コード2
（16進数字）
発生条件
発生個所

DCMNOM_RSN1_MCF
（00000001）
DCMNOM_RSN2_ITQ
（00000001）
メッセージ入力障害
論理端末

DCMNOM_RSN2_OTGET
（00000002）
送信メッセージ取得障害
論理端末

DCMNOM_RSN2_OTCMP
（00000003）
メッセージ送信完了処理障害
論理端末

DCMNOM_RSN2_DCTLE
（00000004）
mcftdctleコマンドによる論理端末の閉塞
論理端末

DCMNOM_RSN2_NOBUF
（00000005）
バッファの取得失敗
論理端末

DCMNOM_RSN2_DCTCN
（00000006）
mcftdctcn －fによるコネクション強制解放
コネクション

DCMNOM_RSN2_LEERR
（00000007）
論理端末障害によるコネクション強制解放
コネクション

DCMNOM_RSN2_SYCER
（00000008）
UAPへの同期リターン失敗
論理端末

DCMNOM_RSN1_ERR
（00000002）
DCMNOM_RSN2_CNERR
（00000000）
下位層障害
コネクション，論理端末

DCMNOM_RSN2_TIMEOUT
（00000001）
タイムアウト発生
コネクション，論理端末

DCMNOM_RSN2_RCV_RJT
（00000002）
受信拒否受信による論理端末閉塞
論理端末

DCMNOM_RSN2_RCV_STOP
（00000003）
送信中断受信による論理端末閉塞
論理端末

DCMNOM_RSN2_UERR
（00000004）
UAP異常受信による論理端末閉塞
論理端末

DCMNOM_RSN1_UOC
（00000003）
詳細リターンコード
（UOCからのリターンコード）
ユーザ（メッセージ編集UOC）検出障害
コネクション，論理端末

DCMNOM_RSN1_UAP
（00000004）
DCMNOM_RSN2_SND_ERR
（00000000）
エラー送信による論理端末閉塞
論理端末

DCMNOM_RSN2_MSGERR
（00000001）
UAP送信メッセージ編集失敗による論理端末閉塞
論理端末

DCMNOM_RSN2_UAPAB
（00000002）
UAP異常またはアプリケーション型不正による論理端末閉塞
論理端末

DCMNOM_RSN2_VRERR
（00000003）
前提バージョン不一致による論理端末閉塞
論理端末

DCMNOM_RSN2_RTIMEOUT
（00000004）
応答監視タイムアウトによる論理端末閉塞
論理端末

上記以外
上記以外の障害
不定

付録E　旧製品からの移行に関する注意事項

旧製品からの移行に関する注意事項について説明します。

バージョン6以前からバージョン7へ移行する場合は，各種ソースファイルの互換性に注意する必要があります。バージョン6以前からバージョン7へ移行する場合，バージョン6以前で使用していたソースファイルをそのまま使用できないことがあります。ソースファイルの互換性は，次の表に示すとおりです。

表E-1　バージョン6以前で使用していたソースファイルの互換性

ソースファイルを作成した言語 | 互換性
C言語（32ビット） | UAPおよびUOCのソースファイルを変更しないで使用できます。
COBOL言語 | UAPのソースファイルおよびMCF通信構成定義（プロトコル固有の定義）の定義ソースファイルを変更しないで使用できます。

付録F　バージョンアップ時の変更点

各バージョンでの変更点を次に示す分類ごとに示します。

関数，定義およびコマンドの追加と削除

動作の変更

関数，定義およびコマンドのデフォルト値の変更

＜この節の構成＞

付録F.1　07-00での変更点

付録F.1　07-00での変更点

TP1/NET/OSAS-NIF 07-00での関数，定義およびコマンドの追加と削除はありません。

TP1/NET/OSAS-NIF 07-00での動作の変更点を次に示します。

表F-1　TP1/NET/OSAS-NIF 07-00での動作の変更点

分類 | 内容
関数 | C言語の関数について，32ビットアーキテクチャでのインタフェースと64ビットアーキテクチャでのインタフェースを統一した。

TP1/NET/OSAS-NIF 07-00での関数，定義およびコマンドのデフォルト値の変更はありません。

付録G　用語解説

英字｜ア行｜カ行｜ラ行

英字

AJ（メッセージ送信完了ジャーナル）

TP1/NET/OSAS-NIFで取得する履歴情報の一つです。メッセージの送信完了情報である，メッセージ種別と送信先論理端末名称とで構成されます。

AJの取得タイミングは，相手システムにメッセージを送信し，その一方送信完了を受信した直後です。

GJ（メッセージ受信ジャーナル）

TP1/NET/OSAS-NIFで取得する履歴情報の一つです。メッセージの受信情報である，メッセージ長，論理端末名称などの情報です。

GJの取得タイミングは，RECEIVE要求を呼び出して，入力キューから取り出したメッセージをUAPに渡す直前です。

IJ（メッセージ入力ジャーナル）

入力キューに入力された情報です。論理端末名称，メッセージ種別，入力メッセージ長などの情報です。

IJの取得タイミングは，相手システムから受信したメッセージを入力キューに入力する直前です。

MJ（メッセージジャーナル）

TP1/NET/OSAS-NIFで取得する情報の一つです。論理端末名称，セグメント種別，メッセージ長などの情報です。

MJの取得タイミングは，メッセージ送信前，出力メッセージ編集UOC処理後，および入力メッセージ編集UOC処理前です。

OJ（メッセージ出力ジャーナル）

出力キューに入力された情報です。論理端末名称，メッセージ種別，出力メッセージ長などの情報です。

OJの取得タイミングは，UAPからEXECAP要求またはSEND要求を受け付けたときです。

ア行

エージェント（AT）

NIF/OSIプロトコルで規定されているサービス要素です。

エージェントマネジャ（ATM）

コネクションの管理およびエージェントの初期化や管理をするエージェントです。

カ行

コネクション

通信相手システムとの論理的な通信路です。TP1/NET/OSAS-NIFの通信管理側の通信接点であり，TP1/NET/OSAS-NIFと通信管理はコネクション単位に送受信をします。

ラ行

論理端末（LE）

TP1/NET/OSAS-NIFのUAP側の通信接点であり，TP1/NET/OSAS-NIFとUAPは論理端末単位に送受信をします。

索引

[Ａ][Ｂ][Ｃ][Ｄ][Ｅ][Ｇ][Ｉ][Ｌ][Ｍ][Ｎ][Ｏ][Ｐ][Ｑ][Ｒ][Ｓ][Ｔ][Ｕ][Ｖ][Ｘ]
[ア行][カ行][サ行][タ行][ナ行][ハ行][マ行][ヤ行][ラ行]

(英字)

(Ａ)

agentnum

aj

AJ

AT ,[2]

ATM ,[2]

(Ｂ)

bretry

bretrycnt

bretryint

(Ｃ)

CBLDCMCF('EXECAP ')

CBLDCMCF('RECEIVE ')

CBLDCMCF('RECVSYNC')

CBLDCMCF('REPLY ')

CBLDCMCF('RESEND ')

CBLDCMCF('SEND ')

CBLDCMCF('SENDRECV')

CCLSEVT ,[2]

CERREVT ,[2]

CERREVTの理由コード

cname

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

COPNEVT ,[2]

count

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

(Ｄ)

dc_mcf_execap

dc_mcf_receive

dc_mcf_recvsync

dc_mcf_reply

dc_mcf_resend

dc_mcf_send

dc_mcf_sendrecv

dmsgcnt

(Ｅ)

ECS/VTAM

ECS/VTAMネットワーク定義

embed

ERREVT1 ,[2]

ERREVT2 ,[2]

ERREVT2の理由コード

ERREVT3 ,[2]

ERREVTA ,[2]

(Ｇ)

GJ

(Ｉ)

IJ

(Ｌ)

LE ,[2]

lname

(Ｍ)

max_open_fds

max_socket_descriptors

MCF

mcfaalcap

mcfmcomn

mcftactcn

mcftactle

mcftalccn

mcftalced

mcftalcle

mcftbuf定義コマンドでコネクションごとに割り当てる資源の量

mcftdctcn

mcftdctle

mcftlscn

mcftlsle

MCFアプリケーション定義 ,[2]

MCFイベント

MCFイベント一覧

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

MCFイベント情報

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

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

MCFイベント処理用MHP

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

MCFイベントの共通ヘッダ

MCFイベントの種類

MCFサービス名の登録

MCF通信構成定義 ,[2]

MCF通信プロセス

MCF通信プロセスでアクセスするファイルの最大数

MCF定義オブジェクト解析ユティリティの起動

MCF定義オブジェクト生成ユティリティ

MCF定義オブジェクト生成ユティリティの起動

MCF定義結合ユティリティ

MCFで使用する定義ファイル

MCFマネジャ共通定義

MCFマネジャ定義 ,[2]

MCFメイン関数のコーディング概要

MCFメイン関数の作成

MCFメイン関数のディレクトリへの組み込み方法

MCFメッセージ回復用作業領域長

MHPからのアプリケーション起動の結果

MJ

mmsgcnt

mode

module

msgbuf

(Ｎ)

name

NIF-REJECT送信または受信による強制閉塞

NIF/OSIプロトコル

NIF通番

NIF通番最大値

NIF通番の最大値の突き合わせ

NIF通番を引き継ぐ

nugua

nummax

(Ｏ)

OJ

OpenTP1への組み込み方法

OSAS

OSI上位層

otrsid

ownsid

(Ｐ)

PSAPアドレスの形式

(Ｑ)

quegrpid

quekind

(Ｒ)

rcvbuf

RECEIVE

receive型

reply型

repr

request型

request型（同期型）

RESEND要求による再送

rplytim

(Ｓ)

SEND

send型

slot

sndbuf

SPPからのアプリケーション起動の結果

sync

(Ｔ)

tim1

tim2

tim3

tim4

tim5

TMS-4V/SP

TMS-4V/SPシステム

TMS-4V/SPシステムの定義

TP1/Message Control

TP1/NET/Library

TP1/NET/OSAS-NIF固有のシステム定義の種類

TP1/NET/OSAS-NIFによる再送

TP1/NET/OSAS-NIFのOSI7層構造の中での機能範囲

TP1/NET/OSAS-NIFの運用コマンド

TP1/NET/OSAS-NIFの組み込みの流れ

TP1/NET/OSAS-NIFのシステム構成例

TP1/NET/OSAS-NIFの実行形式プログラム名

TP1/NET/OSAS-NIFの通信形態システム

TP1/NET/OSAS-NIFのネットワーク構成例

TP1/NET/OSAS-NIFのプロトコル固有定義コマンドの指定順序

TP1/NET/OSAS-NIFを組み込んだソフトウェア構成

(Ｕ)

UAP異常終了

UAP異常終了通知イベント

UAPからのアプリケーション起動の結果

UAPとのタイマ監視の範囲の例

UAPとのメッセージ送受信に関するタイマ監視

UAPの作成例の処理の流れ

UOC

UOCインタフェースパラメタの設定する項目

UOCインタフェース用のパラメタとバッファの関係

UOCエラーリターン処理

UOC作成上の注意事項

UOCで使用できる関数

UOCの異常処理

UOCの構造

UOCのコーディング例

UOCの実行タイミング

UOCパラメタ不正の場合の処理

(Ｖ)

VOS3 OSAS/NF/4VSP

VOS3 OSAS/UA2/DCCM3

(Ｘ)

XDM/DCCM3

XDM/DCCM3システム

XDM/DCCM3システムの定義

XNFネットワーク定義

(ア行)

(あ)

相手システムID

相手システムからの解放要求によるコネクションの正常解放

相手システムからの強制解放によるコネクションの強制解放

相手システムからの強制閉塞

相手システムとのメッセージ送受信に関するタイマ監視

相手システムのPSAPアドレス

相手システムのアプリケーションを起動する場合に関連づける内容

相手システムの障害復旧による閉塞解除

相手システムの通信管理の定義

相手システムの通信定義と関連づける内容

相手システムの定義

アプリケーション起動機能

アプリケーション起動プロセス

アプリケーション属性定義

アプリケーションプログラムの起動 ,[2] ,[3]

アプリケーションプログラムの起動，応答メッセージの送信，メッセージの送信，同期型メッセージの送受信

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

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

(い)

一方受信形態

一方受信形態のシステム間通信の例

一方受信形態の障害

一方送信メッセージ

一方送信メッセージ受信の処理の流れ

一方送信メッセージ送信の処理の流れ

一方送信メッセージの受信 ,[2]

一方送信メッセージの送信 ,[2]

(う)

運用コマンド

運用コマンド（mcftactle）による閉塞解除

運用コマンド（mcftdctle）による閉塞

運用コマンドによるコネクションの強制解放

運用コマンドによるコネクションの正常解放

(え)

エージェント ,[2]

エージェントマネジャ ,[2]

(お)

応答型UAPからの問い合わせメッセージ送信時の障害

応答型論理端末

応答監視タイマ

応答監視タイマ値

応答メッセージ

応答メッセージ送信時の障害

応答メッセージの送信 ,[2] ,[3] ,[4]

オンライン正常終了によるコネクションの正常解放

(カ行)

(か)

拡張HNA

(き)

起動元のアプリケーションプログラムと起動先のアプリケーション属性定義との関係

機能

キューグループID

旧製品からの移行に関する注意事項

強制解放

(く)

組み込み方法

(こ)

コネクション ,[2] ,[3]

コネクション解放時のメッセージの処理

コネクション解放による閉塞

コネクション確立時再試行回数

コネクション確立時再試行間隔

コネクション確立時の発呼と着呼の識別

コネクション定義の開始

コネクション定義の終了

コネクションと論理端末の関係 ,[2]

コネクションの解放 ,[2]

コネクションの確立 ,[2]

コネクションの確立方式

コネクションの強制解放時の送受信中メッセージの扱い

コネクションの状態表示

コネクションを自動的に確立

(サ行)

(さ)

再送機能

(し)

仕掛り中メッセージの再送

時間取得関数

自システムID

自システムのPSAPアドレス

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

システム間通信

システム間通信と論理端末の端末タイプの関係

システム間通信の概要

システム間通信の機能

システム間通信の形態 ,[2]

システム間通信メッセージの送受信

システム間の構成合わせ

システム間の通信とシステム内の通信

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

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

システムサービス情報定義の完全パス名

システム定義

終了処理監視

終了処理監視タイマ値

受信型論理端末

出力メッセージの編集

出力メッセージ編集UOC

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

障害対策

障害通知イベント

障害の種類と対応処理

障害発生時の処理の流れ

状態通知イベント

(す)

スロット番号

(せ)

正常解放

正常処理監視

正常処理監視タイマ値

セグメントの分割と組み立て

(そ)

送信型論理端末

送信完了時の情報を取得するかどうか

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

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

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

送達確認監視

送達確認監視タイマ値

ソケット用ファイル記述子の最大数

ソフトウェアの構成

(タ行)

(た)

代表論理端末 ,[2]

タイマ監視

タイマ監視値の突き合わせ

(ち)

着呼型

着呼型のコネクション確立

重畳型 ,[2]

(つ)

通信管理

通信形態と障害の処理

(て)

定義オブジェクトファイルの作成方法の概要

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

定義オブジェクトファイルの生成ユティリティ

定義の概要

定義例

ディスク出力メッセージ最大格納数

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

(と)

問い合わせ応答形態

問い合わせ応答形態のシステム間通信の例

問い合わせ応答形態の障害

問い合わせ応答形態を使用した通信形態

問い合わせ応答形態を使用した通信形態の例

問い合わせ型論理端末

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

問い合わせメッセージ

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

問い合わせメッセージの送信 ,[2]

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

同期型問い合わせ応答形態

同期型問い合わせ応答形態のシステム間通信の例

同期型問い合わせ応答形態の障害

同期型問い合わせ応答形態を使用した通信形態

同期型の問い合わせメッセージの送信 ,[2]

同期型の問い合わせメッセージの送信と応答メッセージの受信の流れ

同期型メッセージの後続セグメント受信 ,[2]

同期型メッセージの送受信 ,[2]

(ナ行)

(に)

入力メッセージの編集

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

入力メッセージ編集UOC

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

入力メッセージ編集UOCエラー

入力メッセージ編集UOCのコーディング例

(ね)

ネットワーク構成の例

(ハ行)

(は)

発呼型

発呼型のコネクション確立

(ひ)

非応答型UAPからの問い合わせメッセージ送信時の障害

非重畳型 ,[2]

標準UOC

(ふ)

不正アプリケーション名検出通知イベント

フロー制御

分岐送信形態

分岐送信形態および一方受信形態を使用した通信形態

分岐送信形態のシステム間通信の例

分岐送信形態の障害

(マ行)

(み)

未処理送信メッセージ廃棄通知イベント

(め)

メッセージ再送機能

メッセージジャーナル

メッセージ受信時の論理端末障害

メッセージ受信ジャーナル

メッセージ受信用バッファのグループ番号

メッセージ出力ジャーナル

メッセージ制御機能

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

メッセージ送受信処理障害による閉塞

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

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

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

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

メッセージ送信完了ジャーナル

メッセージ送信時の論理端末障害

メッセージ送信用バッファのグループ番号

メッセージ入力ジャーナル

メッセージの形式の変化

メッセージの再送 ,[2]

メッセージの受信 ,[2] ,[3]

メッセージの送信 ,[2]

メッセージ廃棄通知イベント

メッセージ編集用バッファグループ番号

メッセージ編集用バッファ数

メモリ出力メッセージ最大格納数

メモリ操作をする関数

(ヤ行)

(ゆ)

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

ユーザオウンコーディング

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

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

ユーザ処理監視

ユーザ処理監視タイマ値

(よ)

用語解説

(ラ行)

(り)

理由コード一覧

(れ)

連続送信監視

連続送信監視タイマ値

(ろ)

論理端末 ,[2]

論理端末構成の突き合わせ

論理端末定義

論理端末とアプリケーション

論理端末の状態表示

論理端末の端末タイプ ,[2]

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

論理端末の閉塞 ,[2]

論理端末の閉塞解除 ,[2]

論理端末の閉塞と閉塞解除

論理端末名称

論理的な通信路

■ 商標類

AIXは，米国における米国International Business Machines Corp.の登録商標です。