OpenTP1 Version 7

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

OpenTP1 プロトコル TP1/NET/TCP/IP編

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

3000-3-D70-20

目　　次

前書き

変更内容

はじめに

1.　概要

1.1　AP間通信の概要

1.2　AP間通信の形態

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

1.2.2　メッセージ送受信の形態

1.3　ソフトウェア構成の例

2.　機能

2.1　コネクションに関する機能

2.1.1　TP1/NET/TCP/IPが使用するTCP/IP資源

2.1.2　使用できるコネクション数

2.1.3　クライアント型コネクションの確立

2.1.4　相手アドレスを指定したコネクションの確立（クライアント型コネクション）

2.1.5　サーバ型コネクションの確立

2.1.6　コネクションの確立要求の受付開始と終了（サーバ型コネクション）

2.1.7　相手アドレスチェックの抑止（サーバ型コネクション）

2.1.8　コネクションの解放

2.1.9　コネクション障害

2.1.10　コネクションリプレース（サーバ型コネクション）

2.1.11　コネクションの状態表示

2.1.12　コネクションの切り替え（クライアント型コネクション）

2.1.13　キープアライブ

2.1.14　TCP_NODELAY

2.1.15　無通信状態監視

2.2　論理端末に関する機能

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

2.2.2　論理端末の状態表示

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

2.3　メッセージ送受信に関する機能

2.3.1　一方送信メッセージ

2.3.2　同期型メッセージ

2.3.3　同一論理端末上でのsend関数の併用に関する注意事項

2.3.4　問い合わせメッセージと応答メッセージ（問い合わせ応答形態）

2.3.5　問い合わせメッセージと応答メッセージ（継続問い合わせ応答形態）

2.3.6　メッセージとセグメントの関係

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

2.3.8　送受信時のデータサイズ

2.3.9　メッセージの重複，および欠落のチェック

2.3.10　メッセージ送達の確認

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

2.3.12　コネクション再確立時の未送信メッセージの送信抑止

3.　C言語のライブラリ関数

C言語のライブラリ関数の一覧

dc_mcf_contend － 継続問い合わせ応答の終了（C言語）

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

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

dc_mcf_reply － 応答メッセージの送信（C言語）

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

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

dc_mcf_sendrecv － 同期型メッセージの送受信（C言語）

dc_mcf_sendsync － 同期型メッセージの送信（C言語）

dc_mcf_tactcn － コネクションの確立（C言語）

dc_mcf_tactle － 論理端末の閉塞解除（C言語）

dc_mcf_tdctcn － コネクションの解放（C言語）

dc_mcf_tdctle － 論理端末の閉塞（C言語）

dc_mcf_tempget － 一時記憶データの受け取り（C言語）

dc_mcf_tempput － 一時記憶データの更新（C言語）

dc_mcf_tlscn － コネクションの状態取得（C言語）

dc_mcf_tlsle － 論理端末の状態取得（C言語）

dc_mcf_tlsln － サーバ型コネクションの確立要求の受付状態取得（C言語）

dc_mcf_tofln － サーバ型コネクションの確立要求の受付終了（C言語）

dc_mcf_tonln － サーバ型コネクションの確立要求の受付開始（C言語）

4.　COBOL-UAP作成用プログラムインタフェース

COBOL-UAP作成用プログラムインタフェースの一覧

CBLDCMCF('CONTEND△') － 継続問い合わせ応答の終了（COBOL言語）

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

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

CBLDCMCF('REPLY△△△') － 応答メッセージの送信（COBOL言語）

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

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

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

CBLDCMCF('SENDSYNC') － 同期型メッセージの送信（COBOL言語）

CBLDCMCF('TACTCN△△') － コネクションの確立（COBOL言語）

CBLDCMCF('TACTLE△△') － 論理端末の閉塞解除（COBOL言語）

CBLDCMCF('TDCTCN△△') － コネクションの解放（COBOL言語）

CBLDCMCF('TDCTLE△△') － 論理端末の閉塞（COBOL言語）

CBLDCMCF('TEMPGET△') － 一時記憶データの受け取り（COBOL言語）

CBLDCMCF('TEMPPUT△') － 一時記憶データの更新（COBOL言語）

CBLDCMCF('TLSCN△△△') － コネクションの状態取得（COBOL言語）

CBLDCMCF('TLSLE△△△') － 論理端末の状態取得（COBOL言語）

CBLDCMCF('TLSLN△△△') － サーバ型コネクションの確立要求の受付状態取得（COBOL言語）

CBLDCMCF('TOFLN△△△') － サーバ型コネクションの確立要求の受付終了（COBOL言語）

CBLDCMCF('TONLN△△△') － サーバ型コネクションの確立要求の受付開始（COBOL言語）

DISABLE － 継続問い合わせ応答の終了（データ操作言語）

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

RECEIVE － 一時記憶データの受け取り（データ操作言語）

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

SEND － 一時記憶データの更新（データ操作言語）

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

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

5.1.1　入力セグメントの判定

5.1.2　入力セグメント判定UOCインタフェース

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

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

5.1.5　出力メッセージの編集

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

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

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

5.1.9　コネクション確立要求の判定

5.1.10　コネクション確立UOCインタフェース

5.1.11　受信メッセージ判定

5.1.12　受信メッセージ判定UOCインタフェース

5.1.13　受信メッセージの保留判定

5.1.14　受信メッセージの保留判定UOCインタフェース

5.1.15　UOC作成上の注意事項

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

5.2.1　MCFイベントの種類

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

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

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

6.　システム定義

TP1/NET/TCP/IPの定義の概要

TP1/NET/TCP/IP固有のシステム定義の種類

定義の指定順序

mcfaalcap（アプリケーション属性定義）

mcfmuap（UAP共通定義）

mcfttrc（トレース環境定義）

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

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

mcftalcle（論理端末定義）

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

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

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

MCF定義オブジェクトの解析

コネクションの形態とMCF通信構成定義との関係

アプリケーションプログラムとシステム環境設定の関連

MCFトレースファイルの見積もり式

DCCMII/TCPおよびDCCM3/TCPの通信定義との関係

OpenTP1システムの変更に影響する定義

定義例

7.　運用コマンド

TP1/NET/TCP/IPの運用コマンド

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

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

mcftchcn（コネクションの切り替え）

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

mcftdctle（論理端末の閉塞）

mcftendct（継続問い合わせ応答処理の強制終了）

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

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

mcftlsln（ネットワークの状態表示）

mcftofln（サーバ型コネクションの確立要求の受付終了）

mcftonln（サーバ型コネクションの確立要求の受付開始）

8.　組み込み方法

8.1　TP1/NET/TCP/IPの組み込みの流れ

8.2　MCFメイン関数の作成

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

9.　障害対策

9.1　障害の種類と対応処理

9.2　コネクション障害時の処理

9.3　ユーザアプリケーションプログラム異常終了時の処理

9.4　ユーザアプリケーションプログラム閉塞時の処理

9.5　入力キュー障害時の処理

9.6　出力キュー障害時の処理

10.　トラブル発生時の調査手順

10.1　取得情報と確認事項

10.1.1　取得情報

10.1.2　障害が発生したときの確認事項

10.2　調査手順

10.2.1　KFCA14802-Eメッセージが出力された場合

10.2.2　KFCA14803-Eメッセージが出力された場合

10.2.3　KFCA14815-Eメッセージが出力された場合

10.2.4　KFCA14816-Eメッセージが出力された場合

10.2.5　KFCA14830-EまたはKFCA14841-Eメッセージが出力された場合

10.2.6　KFCA14834-EまたはKFCA14835-Eメッセージが出力された場合

10.2.7　KFCA14877-Iメッセージが出力された場合

付録

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

付録A.1　07-04での変更点

付録A.2　07-03での変更点

付録A.3　07-02での変更点

付録A.4　07-01での変更点

付録A.5　07-00での変更点

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

付録B.1　バージョン6からの移行

付録B.2　バージョン5以前からの移行

付録B.3　バージョン5以前でのソケット関数の処理の流れ

付録C　インタフェースの変更一覧（バージョン6以前から移行する場合）

付録C.1　メッセージ送受信インタフェース

付録C.2　ユーザオウンコーディング

付録C.3　MCFイベントインタフェース

付録C.4　MCFメイン関数のコーディング概要

付録C.5　ユーザアプリケーションプログラムの作成例

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

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

付録F　送受信メッセージの衝突時の処理の流れ（メッセージ送達確認機能使用時）

付録F.1　DCCMとのメッセージ衝突

付録F.2　任意の相手システムとのメッセージ衝突

付録G　ソケット関数の処理の流れ

付録H　MCF性能検証用トレースの取得

付録H.1　MCF固有情報の出力情報

付録H.2　MCF性能検証用トレースの取得タイミング

付録H.3　MCF性能検証用トレースの取得量

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

付録I.1　コーディング例

付録I.2　提供するサンプルコーディング

付録J　理由コード一覧

付録K　用語解説

索引

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

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

前書き

■ 対象製品

※印の付いているプログラムプロダクトについては，発行時期をご確認ください。
・適用OS：AIX 5L V5.1，AIX 5L V5.2，AIX 5L V5.3，AIX V6.1，AIX V7.1（32ビット用）

P-1M64-3131　 uCosminexus TP1/Message Control　 07-05
P-1M64-3231　 uCosminexus TP1/NET/Library　 07-05
P-F1M64-3231C　 uCosminexus TP1/NET/TCP/IP　 07-04※
P-F1M64-3231D　 uCosminexus TP1/NET/High Availability　 07-00

・適用OS：AIX 5L V5.3，AIX V6.1，AIX V7.1（64ビット用）

P-1M64-4111　 uCosminexus TP1/Message Control(64)　 07-05
P-1M64-4211　 uCosminexus TP1/NET/Library(64)　 07-05
P-F1M64-4211C　 uCosminexus TP1/NET/TCP/IP(64)　 07-04※
P-F1M64-4211D　 uCosminexus TP1/NET/High Availability(64)　 07-00

・適用OS：HP-UX 11i，HP-UX 11i V2 (PA-RISC)

R-18455-41K　 uCosminexus TP1/Message Control　 07-00
R-18456-41K　 uCosminexus TP1/NET/Library　 07-00
R-F18456-41CK　 uCosminexus TP1/NET/TCP/IP　 07-00
P-1B64-3F31　 uCosminexus TP1/NET/High Availability　 07-00

・適用OS：HP-UX 11i V2 (IPF)，HP-UX 11i V3 (IPF) （32ビット用）

R-18455-21J　 uCosminexus TP1/Message Control　 07-05※
R-18456-21J　 uCosminexus TP1/NET/Library　 07-05※
R-F18456-21CJ　 uCosminexus TP1/NET/TCP/IP　 07-04※
P-1J64-3F21　 uCosminexus TP1/NET/High Availability　 07-00

・適用OS：HP-UX 11i V2 (IPF)，HP-UX 11i V3 (IPF) （64ビット用）

R-1B455-11J　 uCosminexus TP1/Message Control(64)　 07-05※
R-1B456-11J　 uCosminexus TP1/NET/Library(64)　 07-05※
R-F1B456-11CJ　 uCosminexus TP1/NET/TCP/IP(64)　 07-04※
P-1J64-4F11　 uCosminexus TP1/NET/High Availability(64)　 07-00

・適用OS：Solaris 8，Solaris 9，Solaris 10

R-19455-216　 uCosminexus TP1/Message Control　 07-00
R-19456-216　 uCosminexus TP1/NET/Library　 07-00
R-F19456-21C6　 uCosminexus TP1/NET/TCP/IP　 07-00
P-9D64-3F31　 uCosminexus TP1/NET/High Availability　 07-00

・適用OS：Red Hat Enterprise Linux 5 (AMD/Intel 64)，Red Hat Enterprise Linux 5 (x86)，Red Hat Enterprise Linux 5 Advanced Platform (AMD/Intel 64)，Red Hat Enterprise Linux 5 Advanced Platform (x86)，Red Hat Enterprise Linux Server 6 (32-bit x86)，Red Hat Enterprise Linux Server 6 (64-bit x86_64)（32ビット用）

P-9S64-3161　 uCosminexus TP1/Message Control　 07-05
P-9S64-3261　 uCosminexus TP1/NET/Library　 07-05
P-F9S64-3261C　 uCosminexus TP1/NET/TCP/IP　 07-04※
P-F9S64-3251D　 uCosminexus TP1/NET/High Availability　 07-00

・適用OS：Red Hat Enterprise Linux 5 (AMD/Intel 64)，Red Hat Enterprise Linux 5 Advanced Platform (AMD/Intel 64)，Red Hat Enterprise Linux Server 6 (64-bit x86_64)（64ビット用）

P-9W64-3111　 uCosminexus TP1/Message Control(64)　 07-05※
P-9W64-3211　 uCosminexus TP1/NET/Library(64)　 07-05※
P-F9W64-3211C　 uCosminexus TP1/NET/TCP/IP(64)　 07-04※
P-F9W64-3211D　 uCosminexus TP1/NET/High Availability(64)　 07-00

・適用OS：Red Hat Enterprise Linux 5 (Intel Itanium)，Red Hat Enterprise Linux 5 Advanced Platform (Intel Itanium)

P-9V64-3131　 uCosminexus TP1/Message Control　 07-05※
P-9V64-3231　 uCosminexus TP1/NET/Library　 07-05※
P-F9V64-3231C　 uCosminexus TP1/NET/TCP/IP　 07-04※
P-F9V64-3221D　 uCosminexus TP1/NET/High Availability　 07-00

・適用OS：Windows Server 2003，Windows Server 2003 x64 Editions，Windows Server 2003 R2，Windows Server 2003 R2 x64 Editions，Windows XP，Windows Vista，Windows Vista x64 Edition，Windows Server 2008，Windows Server 2008 x64 Editions，Windows Server 2008 R2，Windows 7，Windows 7 x64 Edition，Windows Server 2012，Windows 8，Windows 8 x64 Edition

P-2464-3154　 uCosminexus TP1/Message Control　 07-05
P-2464-3254　 uCosminexus TP1/NET/Library　 07-05
P-F2464-3254C　 uCosminexus TP1/NET/TCP/IP　 07-04
P-F2464-3254D　 uCosminexus TP1/NET/High Availability　 07-01

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

■ 輸出時の注意

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

■ 商標類

AIXは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
AMDは，Advanced Micro Devices, Inc.の商標です。
HP-UXは，Hewlett-Packard Development Company, L.P.のオペレーティングシステムの名称です。
Itaniumは，アメリカ合衆国およびその他の国におけるIntel Corporationの商標です。
Linuxは，Linus Torvalds氏の日本およびその他の国における登録商標または商標です。
Microsoftは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
OracleとJavaは，Oracle Corporation 及びその子会社，関連会社の米国及びその他の国における登録商標です。
PA-RISCは，Hewlett-Packard Development Company, L.P.の商標です。
Red Hatは，米国およびその他の国でRed Hat, Inc. の登録商標もしくは商標です。
UNIXは，The Open Groupの米国ならびに他の国における登録商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
その他記載の会社名，製品名は，それぞれの会社の商標もしくは登録商標です。
プログラムプロダクト「P-9D64-3F31，R-19455-216，R-19456-216，R-F19456-21C6」には，Oracle Corporationまたはその子会社，関連会社が著作権を有している部分が含まれています。
プログラムプロダクト「P-9D64-3F31，R-19455-216，R-19456-216，R-F19456-21C6」には，UNIX System Laboratories, Inc. が著作権を有している部分が含まれています。

■ 発行

2013年12月　3000-3-D70-20

■ 著作権

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

変更内容

変更内容（3000-3-D70-20） uCosminexus TP1/Message Control 07-05，uCosminexus TP1/NET/Library 07-05，uCosminexus TP1/NET/TCP/IP 07-04

追加・変更機能
変更個所

問い合わせ応答形態をできるようにした。これに伴い，コネクション定義の開始（mcftalccn）に-lオプションを追加した。
1.2.2，2.1.1(1)，2.1.7(2)，2.1.10(4)，2.2.1，2.3.1，2.3.4，2.3.5，2.3.11，

3.　C言語のライブラリ関数

C言語のライブラリ関数の一覧，

dc_mcf_contend，

dc_mcf_recvsync，

dc_mcf_reply，

dc_mcf_sendrecv，

dc_mcf_sendsync，

dc_mcf_tempget，

dc_mcf_tempput，

4.　COBOL-UAP作成用プログラムインタフェース

COBOL-UAP作成用プログラムインタフェースの一覧，

CBLDCMCF('CONTEND△')，

CBLDCMCF('RECVSYNC')，

CBLDCMCF('REPLY△△△')，

CBLDCMCF('SENDRECV')，

CBLDCMCF('SENDSYNC')，

CBLDCMCF('TEMPGET△')，

CBLDCMCF('TEMPPUT△')，

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

RECEIVE － メッセージの受信，

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

SEND － メッセージの送信，

SEND － 一時記憶データの更新，

5.1.2(4)(a)，5.1.4，5.1.6(4)(a)，5.1.7，5.1.8，5.2.1，

6.　システム定義

TP1/NET/TCP/IP固有のシステム定義の種類，

mcfaalcap，

mcftalccn，

コネクションの形態とMCF通信構成定義との関係，

7.　運用コマンド

TP1/NET/TCP/IPの運用コマンド，

mcftdctle，

mcftendct，

mcftlscn，

9.1，10.2.5，付録J

同一ホスト内の他のプロセスとの通信に関する説明を追加した。
2.1.1(1)

TP1/NET/TCP/IPで使用するポート番号の説明を追加した。
2.1.1(2)

ディスクキューを使用した場合のシステム全体で使用できるコネクション数の上限に関する説明を追加した。
2.1.2

障害などによるコネクション解放が発生したときのコネクション解放形態を指定できるようにした。
これに伴い，コネクション定義の開始（mcftalccn -f）にcnreleaseオペランドを追加した。
2.1.8，2.1.9(1)，

3.　C言語のライブラリ関数

dc_mcf_tdctcn，

4.　COBOL-UAP作成用プログラムインタフェース

CBLDCMCF('TDCTCN△△')，

6.　システム定義

TP1/NET/TCP/IP固有のシステム定義の種類，

mcftalccn，

コネクションの形態とMCF通信構成定義との関係，

7.　運用コマンド

mcftdctcn，

付録G，付録J

交代用コネクションとMCF通信構成定義との関係の説明を追加した。
2.1.12，

6.　システム定義

mcftalccn，

コネクションの形態とMCF通信構成定義との関係

出力キューまたは入力キューの割り当て先としてディスクキューを使用する場合の説明を追加した。
2.3.1

受信バッファの空き待ちの説明を追加した。
また，受信バッファ数不足が発生したときの説明を変更した。
2.3.7(3)，9.1(2)，10.2.7

メッセージ送信完了監視時間を指定している場合の説明を追加した。
2.3.10(2)(a)

NULLまたはヌル文字列設定時のコーディング例を追加した。また，ヌル文字列を設定できる引数に説明を追加した。

3.　C言語のライブラリ関数

C言語のライブラリ関数の一覧，

dc_mcf_receive，

dc_mcf_recvsync，

dc_mcf_send，

dc_mcf_sendrecv，

dc_mcf_sendsync

リターン値DCMCFRTN_73001およびステータスコード73001の説明を変更した。

3.　C言語のライブラリ関数

dc_mcf_recvsync，

dc_mcf_sendrecv，

dc_mcf_sendsync，

4.　COBOL-UAP作成用プログラムインタフェース

CBLDCMCF('RECVSYNC')，

CBLDCMCF('SENDRECV')，

CBLDCMCF('SENDSYNC')，

RECEIVE － メッセージの受信，

SEND － メッセージの送信

リターン値DCMCFRTN_NOMSGおよびステータスコード70904の説明を変更した。

3.　C言語のライブラリ関数

dc_mcf_resend

4.　COBOL-UAP作成用プログラムインタフェース

CBLDCMCF('RESEND△△')

入力セグメント判定UOCの標準提供UOCを使用する場合のUAPおよびUOCに通知するメッセージの形式の説明を追加した。
5.1.1(6)(d)

ERREVT3に設定するトランザクションブランチIDの形式の説明を追加した。
5.2.3(4)(b)，5.2.4

コネクションを解放したとき，および障害によるコネクション切断が発生したときに出力するログメッセージの形式を指定できるようにした。
これに伴い，コネクション定義の開始（mcftalccn）に次のオペランドを追加した。

-fオプションのreleaselogオペランド

-fオプションのcnerrlogオペランド

6.　システム定義

TP1/NET/TCP/IP固有のシステム定義の種類，

mcftalccn，

コネクションの形態とMCF通信構成定義との関係，

9.1

受信バッファの見積もり式に注意事項を追加した。

6.　システム定義

mcftalccn

MCF性能検証用トレースの説明を追加した。

6.　システム定義

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

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

付録H

Linux版またはSolaris版でファイル記述子数の最大数の条件を満たさない場合の注意事項を変更した。

6.　システム定義

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

定義オブジェクトファイルの出力先に読み取り権限を持つファイルがすでに存在する場合，定義オブジェクトファイルを上書きするかどうかを指定できるようにした。

6.　システム定義

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

UAPとシステム環境設定の関係について説明を追加した。

6.　システム定義

アプリケーションプログラムとシステム環境設定の関連

トレース情報量の見積もり式を変更した。

6.　システム定義

MCFトレースファイルの見積もり式

ホスト名またはIPアドレスを変更する場合に，見直しが必要な定義と，変更手順について説明を追加した。

6.　システム定義

OpenTP1システムの変更に影響する定義

Windows版で提供している定義例の説明を追加した。

6.　システム定義

定義例

運用コマンドを多数入力する場合の説明を追加した。

7.　運用コマンド

mcftactcn，

mcftactle，

mcftdctcn，

mcftdctle，

mcftlscn，

mcftlsle

-sオプションを省略した場合の説明を追加した。

7.　運用コマンド

mcftchcn

アプリケーション起動サービスに関する説明を追加した。

7.　運用コマンド

mcftlsle

スタート関数を呼び出した後の注意事項を追加した。
8.2

UOCを使用しない場合の注意事項を追加した。
8.2

KFCA14830-Eの出力に関する注意事項を変更した。
10.2.5

バージョン5からの移行に関する注意事項に次の項目を追加した。

OpenTP1終了中の相手システムからのコネクション確立

受信バッファ数不足発生時のメッセージログ

受信バッファの空き待ち

付録B.2(11)，付録B.2(12)，付録B.2(13)

メッセージ送達確認機能を使用する場合の一方送信メッセージの送信時の処理の流れを追加した。
付録D

Windows版で提供するサンプルコーディングの格納場所について説明を変更した。
付録I.2

uCosminexus TP1/Message Control 07-05，uCosminexus TP1/NET/Library 07-05，uCosminexus TP1/NET/TCP/IP 07-03

追加・変更機能
変更個所

コネクションの再確立時にメッセージの送信を抑止できるようにした。
これに伴い，論理端末定義（mcftalcle）に-dオプションを追加した。
2.1.9(2)(a)，2.3.12，

3.　C言語のライブラリ関数

dc_mcf_recvsync，

dc_mcf_sendrecv，

dc_mcf_sendsync，

4.　COBOL-UAP作成用プログラムインタフェース

CBLDCMCF('RECVSYNC')，

CBLDCMCF('SENDRECV')，

CBLDCMCF('SENDSYNC')，

RECEIVE － メッセージの受信，

SEND － メッセージの送信，

5.2.1，5.2.2，5.2.3(10)，5.2.4，

6.　システム定義

TP1/NET/TCP/IP固有のシステム定義の種類，

mcftalcle，

コネクションの形態とMCF通信構成定義との関係

単なる誤字・脱字などはお断りなく訂正しました。

変更内容（3000-3-D70-10） uCosminexus TP1/Message Control 07-02，uCosminexus TP1/NET/Library 07-03，uCosminexus TP1/NET/TCP/IP 07-02

追加・変更機能

論理端末の状態表示，閉塞，閉塞解除を，ライブラリ関数およびCOBOL-UAP作成用プログラムインタフェースでできるようにした。これに伴い，次の関数を追加した。

dc_mcf_tactle

dc_mcf_tdctle

dc_mcf_tlsle

CBLDCMCF('TACTLE△△')

CBLDCMCF('TDCTLE△△')

CBLDCMCF('TLSLE△△△')

同期型のメッセージを受信できるようにした。これに伴い，次の関数を追加した。

dc_mcf_recvsync

CBLDCMCF('RECVSYNC')

次のオプションおよびオペランドを追加した。

UAP共通定義（mcfmuap）の-tオプションのrecvtimオペランド

コネクション定義の開始（mcftalccn）の-Cオプション

同期型メッセージの受信に伴う理由コードを追加した。
また，受信メッセージを保留できるようにした。
これに伴い，コネクション定義の開始（mcftalccn）に次のオペランドを追加した。

-uオプションのmsgholdオペランド

-uオプションのholdlimitオペランド

さらに，相手システムからメッセージを受信した場合，受信メッセージを保留して同期受信要求を待ち合わせるかどうかを指定できるようにした。
これに伴い，受信メッセージの保留判定UOCを追加した。

コネクションの確立，解放，および状態表示を，ライブラリ関数およびCOBOL-UAP作成用プログラムインタフェースでできるようにした。
これに伴い，次の関数を追加した。

dc_mcf_tactcn

dc_mcf_tdctcn

dc_mcf_tlscn

CBLDCMCF('TACTCN△△')

CBLDCMCF('TDCTCN△△')

CBLDCMCF('TLSCN△△△')

相手アドレスを指定したコネクションの確立をできるようにした。

ネットワーク情報を表示できるようにした。これに伴い，mcftlslnコマンドに-tオプションを追加した。

サーバ型コネクションの確立要求の受付開始・終了を，ライブラリ関数およびCOBOL-UAP作成用プログラムインタフェースでできるようにした。
これに伴い，次の関数を追加した。

dc_mcf_tofln

dc_mcf_tonln

CBLDCMCF('TOFLN△△△')

CBLDCMCF('TONLN△△△')

キープアライブでコネクション障害を検出した場合に出力されるメッセージを記載した。

無通信状態の監視時間がタイムアウトした場合に出力されるメッセージを記載した。

同期型メッセージの送受信関数を発行したときに，指定した監視タイマのタイムアウトが発生した場合，コネクションの切断を抑止できるようにした。
これに伴い，コネクション定義の開始（mcftalccn）に-wオプションを追加した。

入力セグメント判定UOCの説明に，次の内容を追加した。

未完成の受信メッセージがTP1/NET/TCP/IPに蓄積されている場合，受信バッファには未完成の受信メッセージと今回受信したメッセージが連結して格納されること

メッセージの全体長が不明な場合に，残りサイズに指定する情報

入力セグメント判定UOCの処理の流れ

コネクションの確立要求の受付状態を，ライブラリ関数およびCOBOL-UAP作成用プログラムインタフェースで表示できるようにした。
これに伴い，次の関数を追加した。

dc_mcf_tlsln

CBLDCMCF('TLSLN△△△')

RPCの送信データ長の上限値オーバーが原因で，UAPへの連絡に失敗した場合，エラーリターンするようにした。

リターン値（数値）の説明を追加した。

送受信できる一つのセグメントの最大長について記述を追加した。

入力セグメント判定UOCインタフェースに，受信バッファサイズを通知する領域を追加した。

UOCで使用できる時間取得関数を明記した。

MCF定義オブジェクトの解析コマンドについて説明を追加した。

MCFトレースファイルの見積もり式について説明を追加した。

トラブル発生時の調査手順を追加した。

バージョンアップ時の，定義，関数，コマンドおよびデフォルト値の変更を記載した。

バージョン7で変更された関数のデータ型について，変更一覧を記載した。

バージョン5以前のソケット関数の処理の流れを記載した。

ソケット関数の処理の流れ図に，setsockopt，getsocknameを追加した。

uCosminexus TP1/Message Control 07-01，uCosminexus TP1/NET/Library 07-01，uCosminexus TP1/NET/TCP/IP 07-01

追加・変更機能

サーバ型コネクションの確立要求の受付開始・終了を，手動でできるようにした。これに伴い，コネクション定義の開始（mcftalccn）の-hオプションにlistenオペランドを追加した。また，次のコマンドを追加した。

mcftofln

mcftonln

サーバ型コネクションのアドレス割り当てに失敗した場合，MCF通信プロセスの起動を中断しないようにした。

MCF通信プロセス識別子を表示できるようにした。
これに伴い，コネクション定義の開始（mcftalccn）を追加した。

モデルとする定義の指定内容を流用できる，modelnameオペランドを追加した。

はじめに

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

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

＜はじめにの構成＞

対象読者

マニュアルの構成

関連マニュアル

読書手順

図中で使用する記号

文法の記号

このマニュアルでの表記

略語一覧

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

謝辞

対象読者

OpenTP1システムの通信にTCP/IPプロトコルを使用するシステム管理者，システム設計者，およびプログラマを対象としています。また，オンラインや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/TCP/IPを使用したシステム間の通信（AP間通信）の概要について説明しています。

第2章　機能

TP1/NET/TCP/IPで使用できるコネクションに関する機能，論理端末に関する機能，およびメッセージ送受信に関する機能について説明しています。

第3章　C言語のライブラリ関数

TP1/NET/TCP/IPで使用できる，C言語のライブラリ関数について説明しています。

第4章　COBOL-UAP作成用プログラムインタフェース

TP1/NET/TCP/IPで使用できる，COBOL-UAP作成用プログラムインタフェースについて説明しています。

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

TP1/NET/TCP/IPのユーザオウンコーディングのインタフェース，およびMCFイベントインタフェースについて説明しています。

第6章　システム定義

TCP/IPプロトコルを使用するために必要な，OpenTP1のシステム定義の中でのTP1/NET/TCP/IP固有のシステム定義，および定義例について説明しています。

第7章　運用コマンド

TP1/NET/TCP/IPで使用できる運用コマンドについて説明しています。

第8章　組み込み方法

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

第9章　障害対策

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

第10章　トラブル発生時の調査手順

障害が発生したときに取得する情報および調査手順について説明しています。

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

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

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

バージョン6からバージョン7へ移行する場合，およびバージョン5以前からバージョン7へ移行する場合の注意事項について説明しています。また，バージョン5でのソケット関数の処理の流れについて説明しています。

付録C　インタフェースの変更一覧（バージョン6以前から移行する場合）

バージョン6以前からバージョン7に移行する場合のインタフェースの変更一覧について説明しています。

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

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

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

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

付録F　送受信メッセージの衝突時の処理の流れ（メッセージ送達確認機能使用時）

送受信メッセージが衝突した場合の処理の流れについて説明しています。

付録G　ソケット関数の処理の流れ

ソケット関数の処理の流れについて説明しています。

付録H　MCF性能検証用トレースの取得

MCF性能検証用トレースの取得について説明しています。

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

TP1/NET/TCP/IPのユーザアプリケーションプログラムの作成例について説明しています。

付録J　理由コード一覧

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

付録K　用語解説

TP1/NET/TCP/IPで使用する用語について説明しています。

関連マニュアル

読書手順

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

図中で使用する記号

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

文法の記号

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

（1）文法記述記号

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

文法記述記号
意味

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

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

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

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

（例）-t reply｜request

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

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

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

（例）｛DCMCFESI｜DCMCFEMI｝

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

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

（例）-i auto｜manual

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

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

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

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

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

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

（2）属性表示記号

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

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

（3）構文要素記号

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

構文要素記号
意味

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

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

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

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

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

＜10進数字＞
数字（0～9）

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

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

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

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

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

＜ホスト名＞
先頭が英数字または-（ハイフン）で，
先頭以外が英数字，-（ハイフン），または.（ピリオド）

このマニュアルでの表記

（1）製品名

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

製品名称
略称

AIX 5L V5.1
AIX

AIX 5L V5.2

AIX 5L V5.3

AIX V6.1

AIX V7.1

HP-UX 11i (PA-RISC)
HP-UX (PA-RISC)（32ビット用）
HP-UX

HP-UX 11i V2 (PA-RISC)

HP-UX 11i V2 (IPF)
HP-UX (IPF)
（32ビット用），
HP-UX (IPF)
（64ビット用）

HP-UX 11i V3 (IPF)

Itanium(R) Processor Family
IPF

Microsoft(R) Windows(R) 7 Enterprise
Windows 7
Windows 7

Microsoft(R) Windows(R) 7 Professional

Microsoft(R) Windows(R) 7 Ultimate

Microsoft(R) Windows(R) 7 Enterprise (x64)
Windows 7 x64 Edition

Microsoft(R) Windows(R) 7 Professional (x64)

Microsoft(R) Windows(R) 7 Ultimate (x64)

Windows(R) 8 Enterprise
Windows 8
Windows 8

Windows(R) 8 Pro

Windows(R) 8 Enterprise (x64)
Windows 8 x64 Edition

Windows(R) 8 Pro (x64)

Microsoft(R) Windows Server(R) 2003, Datacenter Edition
Windows Server 2003
Windows Server 2003

Microsoft(R) Windows Server(R) 2003, Enterprise Edition

Microsoft(R) Windows Server(R) 2003, Standard Edition

Microsoft(R) Windows Server(R) 2003 R2, Enterprise Edition
Windows Server 2003 R2

Microsoft(R) Windows Server(R) 2003 R2, Standard Edition

Microsoft(R) Windows Server(R) 2003 R2, Enterprise x64 Edition
Windows Server 2003 R2 x64 Editions

Microsoft(R) Windows Server(R) 2003 R2, Standard x64 Edition

Microsoft(R) Windows Server(R) 2003, Datacenter x64 Edition
Windows Server 2003 x64 Editions

Microsoft(R) Windows Server(R) 2003, Enterprise x64 Edition

Microsoft(R) Windows Server(R) 2003, Standard x64 Edition

Microsoft(R) Windows Server(R) 2008 Datacenter (x86)
Windows Server 2008
Windows Server 2008

Microsoft(R) Windows Server(R) 2008 Enterprise (x86)

Microsoft(R) Windows Server(R) 2008 Standard (x86)

Microsoft(R) Windows Server(R) 2008 R2, Datacenter Edition
Windows Server 2008 R2

Microsoft(R) Windows Server(R) 2008 R2, Enterprise Edition

Microsoft(R) Windows Server(R) 2008 R2, Standard Edition

Microsoft(R) Windows Server(R) 2008 Datacenter (x64)
Windows Server 2008 x64 Editions

Microsoft(R) Windows Server(R) 2008 Enterprise (x64)

Microsoft(R) Windows Server(R) 2008 Standard (x64)

Microsoft(R) Windows Server(R) 2012 Datacenter
Windows Server 2012

Microsoft(R) Windows Server(R) 2012 Standard

Microsoft(R) Windows Vista(R) Business (x86)
Windows Vista
Windows Vista

Microsoft(R) Windows Vista(R) Enterprise (x86)

Microsoft(R) Windows Vista(R) Ultimate (x86)

Microsoft(R) Windows Vista(R) Business (x64)
Windows Vista x64 Edition

Microsoft(R) Windows Vista(R) Enterprise (x64)

Microsoft(R) Windows Vista(R) Ultimate (x64)

Microsoft(R) Windows(R) XP Professional Operating System
Windows XP

uCosminexus TP1/Message Control
TP1/Message Control

uCosminexus TP1/Message Control(64)

uCosminexus TP1/NET/High Availability
TP1/NET/High Availability

uCosminexus TP1/NET/High Availability(64)

uCosminexus TP1/NET/Library
TP1/NET/Library

uCosminexus TP1/NET/Library(64)

uCosminexus TP1/NET/NCSB
TP1/NET/NCSB

uCosminexus TP1/NET/OSI-TP
TP1/NET/OSI-TP

uCosminexus TP1/Server Base
TP1/Server Base

uCosminexus TP1/Server Base(64)

uCosminexus TP1/NET/TCP/IP
TP1/NET/TCP/IP

uCosminexus TP1/NET/TCP/IP(64)

uCosminexus TP1/NET/X25-Extended
TP1/NET/X25-Extended

UNIX(R)
UNIX

Linux(R)
Linux

Red Hat Enterprise Linux 5 (AMD/Intel 64)
Linux（x86，AMD/Intel 64）（32ビット用），
Linux（AMD/Intel 64）（64ビット用）

Red Hat Enterprise Linux 5 (x86)

Red Hat Enterprise Linux 5 Advanced Platform (AMD/Intel 64)

Red Hat Enterprise Linux 5 Advanced Platform (x86)

Red Hat Enterprise Linux Server 6 (32-bit x86)

Red Hat Enterprise Linux Server 6 (64-bit x86_64)

Red Hat Enterprise Linux 5 (Intel Itanium)
Linux（IPF）

Red Hat Enterprise Linux 5 Advanced Platform (Intel Itanium)

Solaris 8
Solaris

Solaris 9

Solaris 10

Windows Server 2003，Windows XP，Windows Vista，Windows Server 2008，Windows 7，Windows 8，およびWindows Server 2012で機能差がない場合，Windowsと表記しています。

AIX，HP-UX，Linux，およびSolarisを総称してUNIXと表記しています。

（2）適用OSによる違いについて

Windows版の製品をご使用になる場合，マニュアルの記述を次のように読み換えてください。

項目
マニュアルの表記
読み換え

環境変数の表記
$aaaaaa
（例）　$DCDIR
%aaaaaa%
（例）　%DCDIR%

パス名の区切り文字
:
;

ディレクトリの区切り文字
/
¥

完全パス名
ルートディレクトリから指定します。
（例）　/tmp
先頭にドライブ文字を付加して，ルートディレクトリから指定します。
（例）　C:¥tmp

実行形式ファイル名
ファイル名だけを指定します。
（例）　mcfmngrd
ファイル名に拡張子を付加して指定します。
（例）　mcfmngrd.exe

makeコマンド
make
nmake

（3）アーキテクチャによる違いについて

このマニュアルでは，32ビットアーキテクチャ対応OSと64ビットアーキテクチャ対応OSで記述を書き分けている個所があります。ご使用のOSをご確認の上，アーキテクチャに応じた記載個所をお読みください。

次の表に，このマニュアルでのアーキテクチャの違いによる表記と対応OSを示します。

マニュアルの表記
OS

32ビットアーキテクチャの場合

AIX（32ビット用）

HP-UX（PA-RISC）（32ビット用），HP-UX （IPF）（32ビット用）

Solaris

Windows Server 2003，Windows XP，Windows Vista，Windows Server 2008，Windows 7，Windows 8，Windows Server 2012

Linux （x86，AMD/Intel 64）（32ビット用）

64ビットアーキテクチャの場合

AIX （64ビット用）

HP-UX （IPF）（64ビット用）

Linux （AMD/Intel 64）（64ビット用），Linux （IPF）

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

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

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

略語一覧

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

英略語 | 英字での表記
ACK | Acknowledgement Flag
AP | Application Program
API | Application Programming Interface
DNS | Domain Name System
FIN | Fin Flag
LAN | Local Area Network
MCF | Message Control Facility
MHP | Message Handling Program
OS | Operating System
PSH | Push Flag
RST | Reset Flag
SPP | Service Providing Program
SYN | Synchronize Flag
TCP/IP | Transmission Control Protocol/Internet Protocol
UAP | User Application Program
UOC | User Own Coding

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/TCP/IPは，OpenTP1システムを構成するプログラムの一つです。ホストコンピュータ，端末などをTCP/IPプロトコルによって論理的に接続し，メッセージを送受信します。この章では，TP1/NET/TCP/IPを使用したシステム間の通信（AP間通信）の概要について説明します。

＜この章の構成＞

1.1　AP間通信の概要

1.2　AP間通信の形態

1.3　ソフトウェア構成の例

1.1　AP間通信の概要

AP間通信とは，異なるシステムにあるアプリケーションプログラム間でのメッセージ送受信のことです。TP1/NET/TCP/IPは，OSが提供するTCP/IPのソケットインタフェースを利用してAP間通信をするプログラムです。TP1/NET/TCP/IPを使用したAP間通信では，相手システムで発生したトランザクションを自システムで処理したり，その結果を送信したりできます。

TP1/NET/TCP/IPを使用したネットワーク構成の例を次の図に示します。

図1-1　TP1/NET/TCP/IPを使用したネットワーク構成の例

1.2　AP間通信の形態

ここでは，コネクションと論理端末の関係，およびメッセージ送受信の形態について説明します。

＜この節の構成＞

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

1.2.2　メッセージ送受信の形態

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

TP1/NET/TCP/IPは，AP間通信をするために，自システムと相手システムとの間に論理的な通信路（コネクション）を確立します。コネクションの確立方法には，クライアント型とサーバ型の二つがあります。

一方，論理端末は，TP1/NET/TCP/IPとUAPとの通信接点に当たります。TP1/NET/TCP/IPは，論理端末を通して，自システムのUAPとメッセージを送受信します。

コネクションと論理端末の指定を対応させると，自システムと相手システムとの論理的な通信路が確立でき，AP間通信ができるようになります。コネクションと論理端末は，システム定義で対応させます。なお，コネクションと論理端末の数は，1対1になります。

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

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

1.2.2　メッセージ送受信の形態

TP1/NET/TCP/IPを使用したメッセージ送受信の形態を次に示します。

一方送信（非同期送信）

一方受信（非同期受信）

同期送信

同期受信

同期送受信

問い合わせ応答（非同期受信と非同期送信）

TP1/NET/TCP/IPを使用したメッセージ送受信の例を次の図に示します。

図1-3　TP1/NET/TCP/IPを使用したメッセージ送受信の例

相手システムとのメッセージ送受信に使用するUAPインタフェースを，メッセージ送受信関数と呼びます。

＜この項の構成＞

(1)　一方送信（非同期送信）

(2)　一方受信（非同期受信）

(3)　同期送信

(4)　同期受信

(5)　同期送受信

(6)　問い合わせ応答（非同期受信と非同期送信）

(1)　一方送信（非同期送信）

自システムから，一方送信メッセージを相手システムに送信する形態です。トランザクションと連動して相手システムにメッセージを送信する場合に使用します。

一つのトランザクションで複数のメッセージを一方送信した場合でも，トランザクションが決着するまで相手システムへメッセージは送信されません。

(2)　一方受信（非同期受信）

相手システムからの一方送信メッセージを，自システムで受信する形態です。トランザクションと連動してメッセージを受信する場合に使用します。

(3)　同期送信

相手システムに対して，メッセージを送信する形態です。トランザクションと連動しないで相手システムにメッセージを送信する場合，つまりメッセージの送信要求と相手システムへのメッセージ送信処理を同期させる場合に使用します。

一つのトランザクションで複数のメッセージを同期送信した場合は，メッセージの送信要求のたびに相手システムへメッセージが送信されます。

相手システムからの応答は要求しません。メッセージ送信処理が完了すると，送信を要求したUAPにリターンします。

(4)　同期受信

相手システムから，メッセージを受信する形態です。トランザクションと連動しないで相手システムからのメッセージを受信する場合に使用します。

相手システムからのメッセージの受信を待ちます。メッセージを受信すると，受信を要求したUAPにリターンします。

(5)　同期送受信

自システムからメッセージを送信し，相手システムからの応答を受信する形態です。トランザクションと連動しないでメッセージの送受信をする場合に使用します。

相手システムからのメッセージを受信したときに，同期送受信を要求したUAPにリターンします。

(6)　問い合わせ応答（非同期受信と非同期送信）

相手システムからの問い合わせメッセージを，自システムで受信したあと，自システムから応答メッセージを相手システムに送信する形態です。トランザクションと連動してメッセージを送受信する場合に使用します。

一つのトランザクションで複数のメッセージを応答送信した場合でも，トランザクションが決着するまで相手システムへメッセージは送信されません。

1.3　ソフトウェア構成の例

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

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

図1-4　TP1/NET/TCP/IPを組み込んだソフトウェア構成の例

注※1

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

注※2

コネクションの切り替えをする場合に必要となるプログラムです。コネクションの切り替えについては，「2.1.12 コネクションの切り替え（クライアント型コネクション）」を参照してください。

2.　機能

この章では，TP1/NET/TCP/IPで使用できるコネクションに関する機能，論理端末に関する機能，およびメッセージ送受信に関する機能について説明します。

＜この章の構成＞

2.1　コネクションに関する機能

2.2　論理端末に関する機能

2.3　メッセージ送受信に関する機能

2.1　コネクションに関する機能

ここでは，コネクションに関する機能について説明します。

＜この節の構成＞

2.1.1　TP1/NET/TCP/IPが使用するTCP/IP資源

2.1.2　使用できるコネクション数

2.1.3　クライアント型コネクションの確立

2.1.4　相手アドレスを指定したコネクションの確立（クライアント型コネクション）

2.1.5　サーバ型コネクションの確立

2.1.6　コネクションの確立要求の受付開始と終了（サーバ型コネクション）

2.1.7　相手アドレスチェックの抑止（サーバ型コネクション）

2.1.8　コネクションの解放

2.1.9　コネクション障害

2.1.10　コネクションリプレース（サーバ型コネクション）

2.1.11　コネクションの状態表示

2.1.12　コネクションの切り替え（クライアント型コネクション）

2.1.13　キープアライブ

2.1.14　TCP_NODELAY

2.1.15　無通信状態監視

2.1.1　TP1/NET/TCP/IPが使用するTCP/IP資源

＜この項の構成＞

(1)　コネクションとポートの関係

(2)　TP1/NET/TCP/IPで使用しているポート番号

(1)　コネクションとポートの関係

ポートとは，TCP/IPプロトコルを使用してメッセージ送受信をするときに，相手システムと自システムとのサービスの窓口となるものです。ポート番号はシステム内で一意な値にする必要があるため，TP1/NET/TCP/IPが使用するポート番号は重複しないように注意してください。また，ほかのアプリケーションとの重複を避けるため，OSが任意に割り当てるポート番号（動的ポートまたは短命ポートと呼ばれるポート番号）を使用しないでください。

サーバ型コネクションの場合は，一つのポートに一つ以上のコネクションを持つことができます。

コネクションとポートの関係を，サーバ型，およびクライアント型の場合についてそれぞれ次の図に示します。なお，サーバ型とクライアント型のコネクションを混在させて確立することもできます。

図2-1　コネクションとポートの関係（自システムがサーバ型）

注※

相手ポートが任意（コネクション定義（mcftalccn -o）のoprtnoオペランドにfreeを指定）のサーバ型コネクションが複数存在する場合，相手システムから受け付けたコネクション確立要求をどのサーバ型コネクションに割り当てるかは任意となります。したがって，現在TP1/NET/TCP/IPから割り当てられたサーバ型コネクションが，次回の確立要求時にも割り当てられるとは限りません。

このため，サーバ型コネクションの解放時に未送信メッセージが残っていた場合，意図しない相手システムのプログラムに未送信メッセージが送信されることがあります。

ユーザが未送信メッセージを破棄するか，システム間でメッセージの整合性をチェックするなどの処置をしてください。

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用する場合，継続問い合わせ応答中の論理端末に対応するコネクションを割り当て対象とするかどうかをコネクション定義（mcftalccn -l）のcnassignオペランドで指定できます。ただし，継続問い合わせ応答中の論理端末に対応するコネクションを割り当て対象とする指定（all）をしても，継続問い合わせ応答が終了するまでは，該当するコネクションで確立できません。

図2-2　コネクションとポートの関係（自システムがクライアント型）

相手ポートは，相手システムごとにユニークな番号でも，すべて同じ番号でも問題ありません。

ポート番号の指定誤りなどによって次に示す状態になった場合は，TP1/NET/TCP/IPの起動やコネクション確立ができません。

同一の相手ポートと自ポートの中で複数のコネクションを確立しようとしている。

自システム内でプロセス間にわたって同一の自ポート番号を使用している。

それぞれのパターンについて，次の図に示します。

図2-3　コネクションとポートの不正なパターン例1

同一の相手ポートと自ポートの中で複数のコネクションは持てません。

図2-4　コネクションとポートの不正なパターン例2

自システム内でプロセス間にわたって同一の自ポート番号は使用できません。

同一ホスト内の他のプロセス（TP1/NET/TCP/IPのMCF通信プロセスを含みます）とコネクションを確立することもできます。この場合，自ポートと相手ポートは異なるポート番号を使用してください。

図2-5　同一ホスト内のコネクションとポートの関係

(2)　TP1/NET/TCP/IPで使用しているポート番号

ポート番号を指定できるシステム定義のオペランドを，次の表に示します。

表2-1　ポート番号を指定できるシステム定義のオペランド

定義名 | 定義 | 指定できる範囲 | デフォルト値 | 対象システムサービス
MCF通信構成定義 | mcftalccn -r portno | 1024～65535 | OSの自動割り当てポートの範囲※ | MCF通信サービス

注※

サーバ型コネクションの場合，省略できません。

2.1.2　使用できるコネクション数

一つのMCF通信プロセス当たりで使用できるコネクション数はOSごとに異なります。使用できるコネクション数を次の表に示します。

表2-2　一つのMCF通信プロセス当たりで使用できるコネクション数

OS | 一つのMCF通信プロセス当たりで使用できるコネクション数
AIX | 1～1024
HP-UX | 1～1024
Solaris | 1～512
Windows | 1～512
Linux | 1～512

この表で示すコネクション数より多くのコネクションを使用する場合は，MCF通信プロセスを分割してください。

注意事項

使用するコネクション数に応じて各MCF通信プロセスで使用するファイル記述子数やアクセスするファイル数を見積もって，OpenTP1のシステムサービス共通情報定義を指定する必要があります。詳細については，「6.　システム定義」の「システムサービス共通情報定義」を参照してください。
また，使用するコネクション数を変更する場合は，メモリ所要量およびディスク占有量の再見積もりが必要になります。使用するコネクション数に応じた資源の見積もりと設定については，マニュアル「OpenTP1 システム定義」，およびTP1/Server Base，TP1/Message Control，TP1/NET/TCP/IPのリリースノートを参照してください。資源不足が発生すると，コネクションの確立に失敗したり，OpenTP1システムがダウンしたりする場合があります。

接続するコネクション数が増加すると，selectシステムコールによる事象監視のオーバヘッドも増加します。使用するコネクション数は，システムの性能を十分に検討した上で決定してください。

ディスクキューを使用する場合，システム全体で使用できる論理端末数の上限に制約があります。これに伴ってシステム全体で使用できるコネクション数の上限も制限されます。詳細については，マニュアル「OpenTP1 システム定義」の拡張予約定義（mcfmexp）を参照してください。

2.1.3　クライアント型コネクションの確立

クライアント型コネクションは，自システムからコネクションの確立を要求する方法です。

クライアント型コネクションの場合，コネクション定義（mcftalccn）に相手システムのアドレス（ホスト名称），およびポート番号を指定する必要があります。また，必要に応じて自システムのアドレス（ホスト名称），およびポート番号を指定することもできます。

クライアント型コネクションとMCF通信構成定義との関係については，「6.　システム定義」の「コネクションの形態とMCF通信構成定義との関係」を参照してください。

運用コマンド（mcftactcn）の入力，またはAPI（dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△')）の発行によって，TP1/NET/TCP/IPは相手システムにコネクションの確立を要求します。相手システムからの確立応答を受信した時点でコネクションが確立します。TP1/NET/TCP/IPは状態通知イベント（COPNEVT）によってコネクションの確立を通知します。

また，相手システムからの確立応答を長時間待ち合わせないように，コネクション確立時の監視時間をコネクション定義（mcftalccn -b）のconcmptimオペランドで指定できます。

なお，コネクション定義（mcftalccn -i）にautoを指定することで，オンライン開始時に自動的にコネクションを確立することもできます。

運用コマンド（mcftactcn）入力時またはオンライン開始時の，クライアント型コネクションの確立方法を次の図に示します。

図2-6　クライアント型コネクションの確立（運用コマンド入力時またはオンライン開始時）

API（dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')）発行時のクライアント型コネクションの確立方法を次の図に示します。

図2-7　クライアント型コネクションの確立（API発行時）

2.1.4　相手アドレスを指定したコネクションの確立（クライアント型コネクション）

クライアント型コネクションの確立の場合，相手アドレスを指定してコネクションを確立できます。

相手アドレスを指定したコネクション確立は，次に示すような場合に有効です。

接続相手の数が一つのMCF通信プロセスで定義できる最大数を超える場合

OpenTP1がオンライン状態で接続相手を追加する場合

相手アドレスの指定は，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で行います。指定できるのは，自システムのIPアドレス，ポート番号，相手システムのIPアドレス，およびポート番号です。このとき，コネクション定義（mcftalccn）に指定したこれらの項目は無効となります。

相手アドレスを指定したコネクションの確立を次の図に示します。

図2-8　相手アドレスを指定したコネクションの確立

2.1.5　サーバ型コネクションの確立

サーバ型コネクションは，相手システムからのコネクションの確立要求を受け入れる方法です。

サーバ型コネクションの場合，コネクション定義（mcftalccn）に自システムのポート番号，相手システムのアドレス（ホスト名称），およびポート番号を指定する必要があります。また，必要に応じて自システムのアドレス（ホスト名称）を指定することもできます。

サーバ型コネクションとMCF通信構成定義との関係については，「6.　システム定義」の「コネクションの形態とMCF通信構成定義との関係」を参照してください。

確立要求を受け付けた相手システムのアドレスおよびポート番号がコネクション定義（mcftalccn）に定義されていない場合，コネクションを解放します。相手システムの任意のポート番号からの確立要求を受け入れる場合は，ポートフリーを指定してください。また，任意の相手システムからの確立要求を受け入れる場合は，相手アドレスのチェックを抑止してください。詳細は，「2.1.1(1)　コネクションとポートの関係」，「2.1.7　相手アドレスチェックの抑止（サーバ型コネクション）」，および「6.　システム定義」を参照してください。

TP1/NET/TCP/IPは，定義オブジェクトファイルの内容によって起動し，確立要求の受付を開始して，相手システムからのコネクション確立要求を待ちます。確立要求を受けると，コネクションが確立します。コネクションが確立すると，TP1/NET/TCP/IPは状態通知イベント（COPNEVT）によってコネクションの確立を通知します。

サーバ型コネクションの確立方法を，次の図に示します。

図2-9　サーバ型コネクションの確立

2.1.6　コネクションの確立要求の受付開始と終了（サーバ型コネクション）

サーバ型コネクションの場合，コネクション定義（mcftalccn -h）のlistenオペランドにmanualを指定すると，OpenTP1のオンライン開始時のコネクション確立要求の受付開始を手動にできます。

手動にした場合は，サーバ側の準備が完了し，相手システムからのコネクション確立要求を受け付け可能となった時点で，運用コマンド（mcftonln）を入力するか，またはAPI（dc_mcf_tonln関数もしくはCBLDCMCF('TONLN△△△')）を発行し，コネクションの確立要求の受け付けを開始します。これによって，相手システムからのデータ送受信を待ち合わせたい場合に，サービスグループをスケジュール閉塞したり，コネクション確立UOCでコネクションの確立を拒否したりする必要がなくなります。

コネクション確立要求の受付を終了する場合は，運用コマンド（mcftofln）を入力するか，またはAPI（dc_mcf_tofln関数もしくはCBLDCMCF('TOFLN△△△')）を発行します。

一方，自動的にコネクション確立要求を受け付ける場合は，コネクション定義（mcftalccn -h）のlistenオペランドでautoを指定してください。

なお，運用コマンド（mcftlsln）の入力，またはAPI（dc_mcf_tlsln関数もしくはCBLDCMCF('TLSLN△△△')）の発行によって，確立要求の受付状態を表示することもできます。

コネクション確立要求の受付開始・終了について，それぞれ説明します。

＜この項の構成＞

(1)　コネクション確立要求の受付開始

(2)　コネクション確立要求の受付終了

(1)　コネクション確立要求の受付開始

運用コマンド（mcftonln）の入力，またはAPI（dc_mcf_tonln関数もしくはCBLDCMCF('TONLN△△△')）の発行によって，TP1/NET/TCP/IPは相手システムからのコネクション確立要求の受付を開始します。

コネクション確立要求の受付開始について，運用コマンド（mcftonln）を入力する場合を例に次の図に示します。

図2-10　コネクション確立要求の受付開始（運用コマンド入力時）

確立要求の受付処理に失敗した場合は，コネクション定義（mcftalccn -b）のbretryオペランド，bretryintオペランド，およびbretrycntオペランドの指定に従って再試行します。再試行回数が指定した上限を超えた場合は，受付処理を終了します。この場合は，障害を取り除いたあとに再度運用コマンドを入力してください。

コネクション確立要求の受付処理の失敗について，運用コマンド（mcftonln）を入力する場合を例に次の図に示します。

図2-11　コネクション確立要求の受付処理の失敗（運用コマンド入力時）

(2)　コネクション確立要求の受付終了

運用コマンド（mcftofln）の入力，またはAPI（dc_mcf_tofln関数またはCBLDCMCF('TOFLN△△△')）の発行によって，TP1/NET/TCP/IPは相手システムからのコネクション確立要求の受付を終了します。

コネクション確立要求の受付終了について，運用コマンド（mcftofln）を入力する場合を例に次の図に示します。

図2-12　コネクション確立要求の受付終了（運用コマンド入力時）

2.1.7　相手アドレスチェックの抑止（サーバ型コネクション）

相手アドレスチェックの抑止は，TP1/NET/TCP/IPによる相手システムのアドレス情報のチェックを抑止する機能です。この機能を使用すると，業務運用に合わせた相手システムのアドレスチェックと，コネクション確立の制御ができるようになります。

相手アドレスチェックの抑止機能を使用すると，TP1/NET/TCP/IPは，定義されたコネクションの中からコネクション選択ルールに従って未確立コネクションを選び出します。そのあと，コネクション確立UOCを呼び出し，コネクション確立を受け入れるかどうかを判定します。一方，未確立コネクションがない場合は，コネクション確立要求を拒否します。

コネクション選択ルールについては，「(2)　コネクション選択ルール」を参照してください。また，コネクション確立UOCについては，「(3)　コネクション確立UOC」を参照してください。

このようにすることで，コネクション確立要求受信時の相手アドレスチェックを抑止し，任意の相手システムからのコネクション確立要求を受け入れられるようになります。相手システムのアドレス情報をコネクション定義に指定しておく必要がありません。

なお，相手アドレスチェックを抑止した場合でも，運用コマンド（mcftlsln -t）を入力することで接続相手を確認できます。

相手アドレスチェックを抑止している場合にコネクション障害が発生したときは対処が必要です。詳細については，「2.1.9(2)　相手アドレス指定時，または相手アドレスチェックの抑止時のコネクション障害」を参照してください。

＜この項の構成＞

(1)　相手アドレスチェックを抑止する場合の定義方法

(2)　コネクション選択ルール

(3)　コネクション確立UOC

(1)　相手アドレスチェックを抑止する場合の定義方法

相手アドレスチェックを抑止する場合は，コネクション定義（mcftalccn -h）のaddrchkオペランドでnoを指定します。このとき，-oオプションの次に示すオペランドに指定する相手システムのアドレス情報の定義は不要です。定義した場合は，無効となります。

oipaddrオペランド

ohostnameオペランド

oportnoオペランド

また，同時に通信する相手システム数以上のコネクションを指定してください。

注意事項

一つの通信プロセスで，相手アドレスチェックを抑止するコネクションと，相手アドレスをチェックするコネクションとの混在はできません。ただし，MCF通信プロセスを分ければ混在できます。

(2)　コネクション選択ルール

TP1/NET/TCP/IPは，相手アドレスチェックの抑止機能を使用してコネクション確立要求を受け入れる場合は，MCF通信構成定義による構成管理をしません。コネクション選択ルールに従って未確立コネクションを選び出し，コネクション確立要求を受け入れます。未確立コネクションがなければ，コネクション確立要求を拒否します。

TP1/NET/TCP/IPが未確立コネクションを選び出すときの，コネクション選択ルールを次の図に示します。

図2-13　コネクション選択ルール

相手システム数以上のコネクションを定義していて，相手システムとの間に1本だけTCPコネクションを確立する場合は，コネクション選択ルールの1.および2.の検索で未確立コネクションを選べます。つまり，同じ相手システムとの再接続時には，前回接続時と同じコネクションで確立します。

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用する場合，継続問い合わせ応答中の論理端末に対応するコネクションを割り当て対象とするかどうかをコネクション定義（mcftalccn -l）のcnassignオペランドで指定できます。ただし，継続問い合わせ応答中の論理端末に対応するコネクションを割り当て対象とする指定（all）をしても，継続問い合わせ応答が終了するまでは，該当するコネクションで確立できません。

(3)　コネクション確立UOC

コネクション確立UOCを使用して，コネクション確立要求を受け入れてよい相手システムかどうかを判断できます。TP1/NET/TCP/IPはコネクション選択ルールに基づいて未確立コネクションを選択したあと，コネクション確立UOCを呼び出します。コネクション確立UOCは，TP1/NET/TCP/IPから渡された相手アドレス情報を基に，受け入れるかどうかを判定します。

コネクション確立要求受信時の流れを次の図に示します。

図2-14　コネクション確立要求受信時の流れ

2.1.8　コネクションの解放

運用コマンド（mcftdctcn）の入力，またはAPI（dc_mcf_tdctcn関数またはCBLDCMCF('TDCTCN△△')）の発行によって，TP1/NET/TCP/IPはコネクションを解放します。自システムからコネクションの解放要求を受けるとメッセージの送受信を終了し，コネクションを解放します。相手システムから解放要求を受信した場合も同様に，解放要求を受信した時点でコネクションを解放します。相手システムからの解放が，正常解放なのか，相手システムの異常による強制解放なのかの区別はできません。さらに，オンライン終了時にも，コネクションは解放されます。

自システムからコネクションを解放した場合，TP1/NET/TCP/IPは，コネクション定義（mcftalccn -f）のcnreleaseオペランドの指定によって，状態通知イベント（CCLSEVT），または障害通知イベント（CERREVT）のどちらかを通知します。また，相手システムからのコネクション解放の場合はコネクション定義（mcftalccn -f）のkindオペランドの指定によって，状態通知イベント（CCLSEVT），または障害通知イベント（CERREVT）のどちらかを通知します。コネクションは，クライアント，およびサーバのどちらからでも解放できます。

メッセージの欠落を防ぐため，コネクションの解放はユーザ間で，データ転送の終了の同期合わせ後に行ってください。

運用コマンド（mcftdctcn）を入力時またはオンライン終了時の，自システムからのコネクションの解放を次の図に示します。

図2-15　自システムからのコネクションの解放（運用コマンド入力時またはオンライン終了時）

注※

オンライン終了時は通知されません。

運用コマンド（mcftdctcn）の-fオプションの指定の有無，およびコネクション定義（mcftalccn -f）のcnreleaseオペランドの指定によって，CCLSEVTまたはCERREVTのどちらかを通知します。

API（dc_mcf_tdctcn関数またはCBLDCMCF('TDCTCN△△')）発行時の，自システムからのコネクションの解放を次の図に示します。

図2-16　自システムからのコネクションの解放（API発行時）

注※

APIおよびコネクション定義（mcftalccn -f）のcnreleaseオペランドの指定によって，CCLSEVTまたはCERREVTのどちらかを通知します。

相手システムからのコネクションの解放を次の図に示します。

図2-17　相手システムからのコネクションの解放

注※

オンライン終了時は通知されません。

コネクション定義（mcftalccn -f）のkindオペランドの指定によって，CCLSEVTまたはCERREVTのどちらかを通知します。

2.1.9　コネクション障害

ネットワーク障害または自システム内の異常によって，メッセージ送受信中にコネクション障害を検出すると，コネクションが解放され，メッセージを送受信できなくなります。このように，オンライン終了時を除いて，運用コマンドやAPIを使用しないでコネクションが解放されることを，コネクションの切断といいます。

ここでは，コネクションの切断と，相手アドレス指定時，または相手アドレスチェックの抑止時のコネクション障害について説明します。

＜この項の構成＞

(1)　コネクションの切断

(2)　相手アドレス指定時，または相手アドレスチェックの抑止時のコネクション障害

(1)　コネクションの切断

TP1/NET/TCP/IPは障害通知イベント（CERREVT）によって，障害の発生とコネクションの切断を通知します。送信中の場合，該当メッセージはコネクション再確立後に再送されますが，受信中の場合，該当メッセージは破棄されます。

コネクション障害時の対策については，「9.2　コネクション障害時の処理」を参照してください。

コネクションの切断を，次の図に示します。

図2-18　コネクションの切断

主に障害の検出によって自システムからコネクションを解放する場合，コネクション定義（mcftalccn -f）のcnreleaseオペランドを指定することで，コネクションの解放形態を指定できます。解放形態には，FINパケットを送信してコネクションを解放する形態（finを指定）と，RSTパケットを送信して強制的にコネクションを解放する形態（rstを指定）があります。コネクションを解放する要因と送信するパケットを次の表に示します。

表2-3　コネクションの解放要因と送信するパケット

コネクションの解放要因
コネクション定義(mcftalccn -f)のcnreleaseオペランドの指定値
送信するパケット

mcftdctcnコマンド
-fオプションなし
任意
FINパケット

-fオプションあり
fin
FINパケット

rst
RSTパケット

API（dc_mcf_tdctcn関数またはCBLDCMCF('TDCTCN△△')）
強制解放オプションなし※1
任意
FINパケット

強制解放オプションあり※2
fin
FINパケット

rst
RSTパケット

相手システムからの解放
任意
FINパケット

OpenTP1終了

正常終了

強制正常終了

計画停止A

計画停止B

MCF構成変更準備停止

任意
FINパケット

強制停止
fin
FINパケット※3

rst
RSTパケット

障害の検出
サーバ型コネクションの確立拒否
任意
FINパケット

上記以外（受信バッファ数不足，後続セグメント受信監視タイムアウトなど）
fin
FINパケット

rst
RSTパケット

注※1

dc_mcf_tdctcn関数の場合，action引数にDCMCFFRCを指定しません。

CBLDCMCF('TDCTCN△△')の場合，データ名D1に空白または'0'を指定します。

注※2

dc_mcf_tdctcn関数の場合，action引数にDCMCFFRCを指定します。

CBLDCMCF('TDCTCN△△')の場合，データ名D1に'1'を指定します。

注※3

Windowsの場合，RSTパケットを送信します。

注意

TP1/NET/TCP/IPはOSが提供するTCP/IPのソケットインタフェースを利用しています。そのため，FINパケットを送信する指定をしていても，ネットワーク上のデータのすれ違いなどによって，TP1/NET/TCP/IPの指示と関係なくOSがRSTパケットを送信する場合があります。

RSTパケットによるコネクション解放の場合，TCP/IPソケットの送信バッファに蓄積されている送信メッセージがコネクション解放時に破棄されます。送信メッセージが相手システムに到達してからコネクションを解放する場合は，メッセージの送達を確認してからコネクションを解放してください。送達確認については，「2.3.10　メッセージ送達の確認」を参照してください。

(2)　相手アドレス指定時，または相手アドレスチェックの抑止時のコネクション障害

次に示す場合，TP1/NET/TCP/IPは，コネクションの切断後にどの相手システムとコネクションを確立するか特定できません。

相手アドレスを指定してコネクションを確立する場合

相手アドレスチェックの抑止機能の使用時で次の場合

コネクション定義数が相手システム数より小さい

相手システムとの間に複数本のTCPコネクションを確立している

このような場合に出力キューまたは入力キューにメッセージがあるときは，次のことに注意する必要があります。

(a)　コネクション障害時に出力キューにメッセージがある場合

いったんコネクションが解放されると，そのコネクションは次にどの相手システムと接続するのか特定できないため，現在出力キューにあるメッセージが本来のあて先でない相手に送信される場合があります。

このため，コネクション確立前に，出力キューに残っている不要なメッセージを運用コマンド（mcftdlqle）の入力，またはAPI（dc_mcf_tdlqle関数もしくはCBLDCMCF('TDLQLE△△')）の発行によって削除するようにしてください。ただし，出力キューに残っている不要なメッセージを削除するタイミングよりも早く，別の相手システムと接続されてメッセージが送信されてしまう場合があります。相手システムが不要なメッセージを受信してしまった場合は，メッセージ受信後にそのメッセージを破棄してください。

コネクション障害時に出力キューにメッセージがあるときの流れを，dc_mcf_send関数を使用する場合を例に次の図に示します。

図2-19　コネクション障害時に出力キューにメッセージがある場合の流れ

なお，MHPからメッセージを送信する場合は，コネクション再確立時に未送信メッセージの送信を抑止できます。詳細については，「2.3.12　コネクション再確立時の未送信メッセージの送信抑止」を参照してください。

(b)　コネクション障害時に入力キューにメッセージがある場合

いったんコネクションが解放されると，そのコネクションは次にどの相手システムと接続するのかを特定できないため，現在入力キューにあるメッセージが，現在接続している相手システムから送信されたものではない場合があります。したがって，UAP側で，メッセージ内容などからどの相手システムから送信されたメッセージなのかを判断する必要があります。

コネクション障害後に入力キューからメッセージを取り出したときの流れを，dc_mcf_receive関数を使用する場合を例に次の図に示します。

図2-20　コネクション障害後に入力キューからメッセージを取り出した場合の流れ

2.1.10　コネクションリプレース（サーバ型コネクション）

コネクションリプレースは，相手システムからコネクション確立要求を受け付けた場合，TP1/NET/TCP/IPに割り当て可能な未確立コネクションがなければ，確立状態にある既存のコネクションを切断し，新たなコネクション確立要求を受け付ける機能です。コネクションリプレースを使用しない場合に比べ，相手システムでの障害検出を契機としたコネクションの再確立を迅速に行えます。

コネクションリプレースは，コネクション定義（mcftalccn -h）のchgconnオペランドにreplaceを指定したサーバ型コネクションに対して使用できます。コネクションリプレースを使用する場合の注意事項については，「(4)　コネクションリプレースを使用するときの注意事項」を参照してください。

コネクションの切断については，「2.1.9　コネクション障害」を参照してください。

＜この項の構成＞

(1)　コネクションリプレースの概要

(2)　複数のコネクションを定義した場合のコネクション選択ルール

(3)　コネクション確立UOCを併用する場合

(4)　コネクションリプレースを使用するときの注意事項

(1)　コネクションリプレースの概要

コネクションリプレースを使用しない場合と使用する場合に分け，相手システムが障害を検出したあとの処理について説明します。

(a)　コネクションリプレースを使用しない場合

相手システムがTP1/NET/TCP/IPよりも先に障害を検出し，コネクションの再確立を要求した場合，割り当て可能な未確立コネクションがなければ，コネクション確立要求によって一時的に受け入れた新しいコネクションを解放します。

なお，次の状態になるまで，該当のコネクションは再確立できません。

ユーザが障害を検出して運用コマンド（mcftdctcn）を入力するか，またはAPI（dc_mcf_tdctcn関数もしくはCBLDCMCF('TDCTCN△△')）を発行する。

TP1/NET/TCP/IPがキープアライブ，または無通信状態監視で障害を検出する。

コネクションリプレースを使用しない場合の処理の流れを次に示します。

図2-21　相手システムが障害を検出したあとの処理の流れ（コネクションリプレース未使用時）

(b)　コネクションリプレースを使用する場合

相手システムがTP1/NET/TCP/IPよりも先に障害を検出し，コネクションの再確立を要求した場合，割り当て可能な未確立コネクションがなければ，確立状態の既存のコネクションは切断されます。その後，TP1/NET/TCP/IPは新たなコネクションの確立要求を受け付け，切断したコネクションを再確立します。

コネクションリプレースを使用した場合の処理の流れを次に示します。

図2-22　相手システムが障害を検出したあとの処理の流れ（コネクションリプレース使用時）

注※1

論理端末が閉塞解除状態の場合に出力されます。

注※2

論理端末定義（mcftalcle -i）のautoオペランドを指定し，自動的に論理端末を閉塞解除するよう設定している場合に出力されます。

(2)　複数のコネクションを定義した場合のコネクション選択ルール

次の場合，自システムのIPアドレスおよびポート番号が同じコネクションを複数定義できます。

ポートフリーのコネクション
コネクション定義（mcftalccn -o）のoportnoオペランドにfreeを指定したコネクション。

相手アドレスのチェックを抑止したコネクション
コネクション定義（mcftalccn -h）のaddrchkオペランドにnoを指定を指定したコネクション。

このような複数コネクションに対して，コネクションリプレースを使用できるのは，自システムのIPアドレスおよび自システムのポート番号が同じで，かつそれらすべてのコネクションが確立状態にあるときです。

ポートフリーのコネクションに対してコネクションリプレースを使用する場合，TP1/NET/TCP/IPは自システムのIPアドレスおよびポート番号が同じコネクションの中から，確立状態にあるいちばん古いコネクションをコネクションリプレースの対象として選択します。

(a)　ポートフリーのコネクションの場合

ポートフリーのコネクションに対して，コネクションリプレースを使用する場合のコネクション選択ルールを次の図に示します。

図2-23　コネクション選択ルール（ポートフリーのコネクションの場合）

(b)　相手アドレスチェックを抑止したコネクションの場合

相手アドレスチェックを抑止したコネクションに対してコネクションリプレースを使用する場合には，TP1/NET/TCP/IPは次の両方の条件と一致する，確立状態にあるいちばん古いコネクションをコネクションリプレースの対象として選択します。

接続している既存コネクションの相手アドレスと，確立要求した相手のアドレスが一致

自システムのIPアドレスおよびポート番号が同じ

なお，該当するコネクションがない場合，ポートフリーのコネクションの場合と同様に，自システムのIPアドレスおよびポート番号が同じコネクションの中からいちばん古いコネクションをコネクションリプレース対象として選択します。

相手アドレスチェックを抑止したコネクションに対して，コネクションリプレースを使用する場合のコネクション選択ルールを次の図に示します。

図2-24　コネクション選択ルール（相手アドレスチェックを抑止したコネクションの場合）

(c)　未確立コネクションが存在する場合

未確立コネクションが存在する場合は，コネクションリプレースを行わないで，未確立コネクションを割り当てます。未確立コネクションが存在する場合のコネクション選択ルールを次に示します。

図2-25　コネクション選択ルール（未確立コネクションが存在する場合）

(3)　コネクション確立UOCを併用する場合

コネクションリプレースとコネクション確立UOCを併用する場合，TP1/NET/TCP/IPがコネクションリプレースを行うコネクションを選択したあと，コネクション確立UOCを呼び出します。コネクション確立UOCには，相手システムのアドレス，ポート番号および自システムのポート番号を通知するので，これらの情報を基に相手システムからの確立要求を受け入れるか，または拒否するかを選択できます。

相手システムからの確立要求を受け入れた場合，コネクション確立UOCを併用しないときと同様に，コネクションリプレースを行います。詳細は，「(1)　コネクションリプレースの概要」を参照してください。

コネクション確立要求を受け入れない場合，コネクションリプレースは行いません。また，コネクション確立UOCがエラーリターンした場合，コネクション確立UOCで設定したパラメタが誤っていた場合もコネクションリプレースは行いません。

コネクション確立要求を受け入れない場合の処理の流れを次の図に示します。

図2-26　コネクション確立UOCとの併用（コネクションの確立要求を拒否した場合）

(4)　コネクションリプレースを使用するときの注意事項

コネクションリプレースを使用するときには，次の点に注意してください。

コネクションリプレースは，相手システムのポート番号が固定（コネクション定義（mcftalccn -o）のoportnoオペランドに1～65535を指定）のサーバ型コネクションには適用されません。ただし，相手システムのポート番号が固定のサーバ型コネクションの場合は，RFC 793の規定によって，相手システムからのコネクション確立要求を契機にして，OSがコネクション障害を検出します。そのため，相手システムのポート番号が固定のサーバ型コネクションはコネクションリプレースを適用しなくても障害回復を行えます。

コネクションリプレースを使用する場合，TP1/NET/TCP/IPは選択したコネクションの状態に関係なく，確立状態にある既存のコネクションを切断します。受信処理中のメッセージは破棄し，送信処理中の一方送信メッセージは出力キューに戻ります。また，同期型メッセージの送信関数および同期型メッセージの送受信関数を発行していた場合は，出力先論理端末の停止を示すリターン値またはステータスコードでエラーリターンします。

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用する場合，継続問い合わせ応答中の論理端末に対応するコネクションをコネクションリプレースの対象とするかどうかをコネクション定義（mcftalccn -l）のcnassignオペランドで指定できます。ただし，継続問い合わせ応答中の論理端末に対応するコネクションをコネクションリプレースの対象とする指定（all）をしても，継続問い合わせ応答が終了するまで該当するコネクションで再確立できません。

2.1.11　コネクションの状態表示

コネクションが確立状態か解放状態かといったコネクションの状態や，コネクションID，プロトコル種別などを表示することができます。コネクションの状態を表示するには，運用コマンド（mcftlscn）を入力するか，またはAPI（dc_mcf_tlscn関数もしくはCBLDCMCF('TLSCN△△△')）を発行します。

運用コマンド（mcftlscn）を使用した場合，コネクションの状態は，標準出力で表示されます。一方，dc_mcf_tlscn関数またはCBLDCMCF('TLSCN△△△')を使用した場合，コネクションの状態はUAP中で指定した領域に格納されます。

運用コマンド（mcftlscn）のオプションの指定によっては，コネクションに対応する論理端末の情報も表示できます。

2.1.12　コネクションの切り替え（クライアント型コネクション）

クライアント型コネクションの場合，TP1/NET/TCP/IPでは，コネクションの切り替えができます。その場合，前提となるプログラムプロダクトとして，TP1/NET/High Availabilityが必要です。

TP1/NET/TCP/IPは，システム定義で，現用コネクションと交代用コネクションに対して同一の論理端末を指定することで，コネクションと論理端末との接続関係を変更できます。UAPは，同一の論理端末名称を使用したまま，相手システムの切り替えができます。

また，現用コネクションと交代用コネクションは，1対1の関係でなければなりません。出力キューに未送信メッセージがある状態でコネクションの切り替えをすると，未送信メッセージは交代用コネクションに対して送信されます。

交代用コネクションとMCF通信構成定義との関係については，「6.　システム定義」の「コネクションの形態とMCF通信構成定義との関係」を参照してください。

コネクション切り替え機能の概要を，dc_mcf_send関数およびdc_mcf_receive関数を使用する場合を例に，次の図に示します。

図2-27　コネクション切り替え機能の概要

次に，ホットスタンバイを行うような，同一の構成を持つシステムでコネクションの切り替えを適用した場合の例を次の図に示します。

図2-28　コネクションの切り替えの流れ

メッセージ送受信中のコネクションに障害が発生すると，TP1/NET/TCP/IPはMCFイベント処理用MHPを起動します。起動されたMCFイベント処理用MHPでは，相手システムを交代させる場合，運用コマンド（mcftchcn）を入力して，通信先の相手システムを変更します。メッセージは，コネクションを切り替えたあとで，交代用コネクション確立時に再送信されます。コネクション切り替え後，元に戻す場合は運用コマンド（mcftchcn）を再び入力します。

2.1.13　キープアライブ

障害はTCP/IPの特性上，確実に検出できません。障害を確実に検出するために，TP1/NET/TCP/IPではOSが提供しているソケットオプション「SO_KEEPALIVE」を使用して，キープアライブを行います。キープアライブとは，コネクションがメッセージ送受信中でない場合に，相手システムに対して，一定間隔でパケットを送信し，その間に応答がなければ障害と見なしてコネクションを切断する機能です。キープアライブを使用するかどうかはコネクション定義（mcftalccn -k）のkeepaliveオペランドで指定します。

TCP/IPのキープアライブの仕様はOSの実装によって異なり，ネットワークの負荷を高める場合があります。コネクション障害を確実に検出したい場合だけ使用してください。なお，キープアライブによって障害が検出された場合は，KFCA14802-Eが出力されます。

2.1.14　TCP_NODELAY

TCP_NODELAYは，送信済みデータの応答待ちの状態でも遅延させることなくデータ送信できるようにする機能です。この機能では，OSが提供するソケットオプション「TCP_NODELAY」を使用します。このTCP_NODELAYの仕様は，OSによって異なります。

データ送信の際にTCP_NODELAYを使用するかどうかは，コネクション定義（mcftalccn -k）のnodelayオペランドで指定します。なお，TCP_NODELAYを使用するとネットワークの負荷が大きくなるため，この機能の必要性を十分に検討した上で使用するようにしてください。

2.1.15　無通信状態監視

無通信状態とは，任意のコネクションにおいて，相手システムとの間で，メッセージの送信または受信がない状態のことです。TP1/NET/TCP/IPは，この無通信状態を監視します。無通信状態の監視時間は，コネクション定義（mcftalccn -k）のnotrftimeオペランドで指定します。指定した時間を超過した場合，何らかの障害が発生しているものとして，コネクションを強制解放します。

コネクション障害を検出する機能としてキープアライブがあります。キープアライブがソケットオプション「SO_KEEPALIVE」を使用して一定間隔でパケットを送信しながらコネクションの状態を監視するのに対し，無通信状態監視機能はパケットを送信しないでコネクションの状態を監視します。

なお，無通信状態の監視時間がタイムアウトした場合は，KFCA16520-Eが出力されます。

TP1/NET/TCP/IPは，各コネクションに対して該当の論理端末が閉塞解除された時点から，論理端末の閉塞またはOpenTP1の終了（正常終了，計画停止A，計画停止B）までを監視します。また，メッセージを受信，または送信すると，状態監視をリセットし，改めて次のメッセージの受信または送信までの監視を開始します。

TP1/NET/TCP/IPが無通信状態を監視する区間を，dc_mcf_send関数およびdc_mcf_receive関数を使用する場合を例に，次の図に示します。

図2-29　無通信状態を監視する区間

2.2　論理端末に関する機能

ここでは，論理端末に関する機能について説明します。

＜この節の構成＞

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

2.2.2　論理端末の状態表示

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

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

TP1/NET/TCP/IPで扱う論理端末の端末タイプはany（任意型）です。この端末タイプを指定することで，TP1/NET/TCP/IPで使用するすべての通信形態に対応できます。

アプリケーションは，ユーザが送受信データの中に指定したアプリケーション名をキーとして，一つのUAP（MHP）プロセスで実行されます。アプリケーションは，サービスの方式によって型が異なります。この型をTP1/Message Controlのアプリケーション属性の一つとして，システム定義時に指定します。TP1/NET/TCP/IPのアプリケーションの型を次に示します。

非応答型（noans）

応答型（ans）

継続問い合わせ応答型（cont）

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

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

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

any（任意型論理端末）
非応答型（noans）
一方送信メッセージ
dc_mcf_send
dc_mcf_reply
一方送信

dc_mcf_receive
一方受信

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

dc_mcf_recvsync
同期受信

dc_mcf_sendrecv
同期送受信

応答型（ans）
問い合わせメッセージ
dc_mcf_receive
問い合わせ応答

応答メッセージ
dc_mcf_reply

一方送信メッセージ
dc_mcf_send
一方送信

継続問い合わせ応答型（cont）
問い合わせメッセージ
dc_mcf_receive
問い合わせ応答

応答メッセージ
dc_mcf_reply

一方送信メッセージ
dc_mcf_send
一方送信

それぞれのアプリケーションの型での，dc_mcf_reply，dc_mcf_send呼び出しの可否を次の表に示します。

表2-5　dc_mcf_reply，dc_mcf_send呼び出しの可否

アプリケーションの型 | UAPインタフェース | 送信先の論理端末
入力元 | 入力元以外
非応答型（noans） | dc_mcf_reply | ○※ | ×
dc_mcf_send | ○ | ○
応答型（ans） | dc_mcf_reply | ◎ | ×
dc_mcf_send | ○ | ○
継続問い合わせ応答型（cont） | dc_mcf_reply | ◎ | ×
dc_mcf_send | ○ | ○

（凡例）

◎：次の場合は，必ず呼び出してください。

・dc_mcf_execap関数を呼び出してほかのアプリケーションに応答の権利を譲渡しない場合

・応答メッセージを送信したかどうかをチェックする（アプリケーション属性定義（mcfaalcap -n）のreplychkオペランドを省略，またはyesを指定）応答型のアプリケーションの場合

dc_mcf_execap関数を呼び出して，応答の権利をほかのアプリケーションに譲渡した場合は呼び出せません。

○：呼び出せます。

×：呼び出せません。

注※

非応答型のアプリケーションからの問い合わせ応答をする（UAP共通定義（mcfmuap）の-cオプションのnoansreplyオペランドにyesを指定）場合に呼び出せます。

一方送信メッセージとして送信します。

2.2.2　論理端末の状態表示

論理端末の状態は，運用コマンド（mcftlsle）の入力，またはAPI（dc_mcf_tlsle関数もしくはCBLDCMCF('TLSLE△△△')）の発行によって表示できます。表示できる内容は，MCF識別子，論理端末名称，論理端末状態（閉塞状態，または閉塞解除状態）などです。

運用コマンド（mcftlsle）を使用した場合，論理端末の状態は，標準出力で表示されます。一方，dc_mcf_tlsle関数またはCBLDCMCF('TLSLE△△△')を使用した場合，論理端末の状態はUAP中で指定した領域に格納されます。

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

TP1/NET/TCP/IPは，コネクション確立後，または確立と同時に論理端末の閉塞を解除してメッセージの送受信をします。論理端末の状態について次に示します。

＜この項の構成＞

(1)　閉塞状態

(2)　閉塞解除状態

(1)　閉塞状態

UAPが送信要求したメッセージを，相手システムに送信できない状態です。この状態でUAPが送信要求を行った場合，送信要求は正常に受け付けられますが，送信メッセージは出力キューに滞留します。

また，この状態のとき，相手システムからの受信メッセージのスケジュールは，正常に行われます。

論理端末を閉塞するには，運用コマンド（mcftdctle）を入力するか，またはAPI（dc_mcf_tdctle関数もしくはCBLDCMCF('TDCTLE△△')）を発行します。閉塞中の一方送信メッセージの送信要求は，出力キューに滞留します。

なお，論理端末は障害によって閉塞することもあります。

(2)　閉塞解除状態

論理端末が持つ機能を使用できる状態です。

論理端末を閉塞解除するには，運用コマンド（mcftactle）を入力するか，またはAPI（dc_mcf_tactle関数もしくはCBLDCMCF('TACTLE△△')）を発行します。閉塞が解除されると，出力キューに残っているメッセージが送信されます。

なお，コネクションが未確立の場合は，論理端末の閉塞解除はできません。

2.3　メッセージ送受信に関する機能

TP1/NET/TCP/IPを使用すると，上位プロトコル（ユーザプロトコル）を意識しないでメッセージを送受信できます。TP1/NET/TCP/IPでは，一方送信メッセージ，および同期型メッセージを使用してメッセージの送受信をします。

＜この節の構成＞

2.3.1　一方送信メッセージ

2.3.2　同期型メッセージ

2.3.3　同一論理端末上でのsend関数の併用に関する注意事項

2.3.4　問い合わせメッセージと応答メッセージ（問い合わせ応答形態）

2.3.5　問い合わせメッセージと応答メッセージ（継続問い合わせ応答形態）

2.3.6　メッセージとセグメントの関係

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

2.3.8　送受信時のデータサイズ

2.3.9　メッセージの重複，および欠落のチェック

2.3.10　メッセージ送達の確認

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

2.3.12　コネクション再確立時の未送信メッセージの送信抑止

2.3.1　一方送信メッセージ

相手システムから一方送信メッセージを受信したり，自システムから一方送信メッセージを送信したりする形態です。UAP（SPP，MHP）のトランザクションの決着と連動してメッセージを送受信します。非トランザクションのMHPの場合は，サービスの終了と連動してメッセージを送受信します。論理端末の端末タイプはany，アプリケーションの型は非応答型です。なお，一方送信メッセージの送信は，応答型または継続問い合わせ応答型のアプリケーションでもできます。

UAPがAPI（dc_mcf_send関数またはCBLDCMCF('SEND△△△△')）で送信要求すると，メッセージが出力キューに登録されます。TP1/NET/TCP/IPは出力キューからメッセージを読み出し，出力メッセージ編集UOCで編集されたメッセージを相手システムに送信します。一方送信メッセージをTCP/IPの送信バッファに書き込み完了した時点で，送信完了として送信完了通知イベント（SCMPEVT）を通知します。ただし，SCMPEVTを通知するのは，MCFアプリケーション定義でSCMPEVTを定義して，かつ，UAPが送信完了通知イベントを要求していた場合だけです。その後，TP1/NET/TCP/IPは出力キューにある送信済みメッセージのデータを消去します。

また，相手システムからのメッセージを受信すると，TP1/NET/TCP/IPは入力メッセージ編集UOCで編集されたメッセージを入力キューに登録します。同時に，非応答型のアプリケーションに対応するUAP（MHP）を起動して，メッセージを引き渡します。

非応答型のアプリケーションからの問い合わせ応答をする（UAP共通定義（mcfmuap）の-cオプションのnoansreplyオペランドにyesを指定）場合，非応答型のアプリケーションからdc_mcf_reply関数またはCBLDCMCF('REPLY△△△')を発行して一方送信メッセージを送信できます。この一方送信メッセージは，出力通番を付けない一般の一方送信メッセージとして扱います。

出力キューまたは入力キューの割り当て先としてディスクキューを使用する場合，入力キューおよび出力キューに蓄えられた一方送信メッセージは，オンラインシステムが異常終了した場合などの再開始時に，引き継ぐことができます。

一方送信メッセージの受信と送信を，dc_mcf_send関数およびdc_mcf_receive関数を使用する場合を例に，次の図に示します。

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

UAPは一方送信メッセージの送信を要求します。

TP1/NET/TCP/IPは一方送信メッセージを送信します。

TP1/NET/TCP/IPは送信完了通知イベント（SCMPEVT）をMHPに通知します。

出力キューにある一方送信メッセージのデータを消去します。

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

TP1/NET/TCP/IPは相手システムからのメッセージを入力キューに書き込み，MHPを起動します。

MHPはメッセージを受け取ります。

メッセージを送受信するときのデータの流れ，およびジャーナルの取得タイミングについては，「付録D　メッセージ送受信の処理の流れ」を参照してください。

なお，TP1/NET/TCP/IPの通信プロセスが，一方送信メッセージの送信完了を認識する前に運用コマンド（mcftdctcn）を入力，またはAPI（dc_mcf_tdctcn関数もしくはCBLDCMCF('TDCTCN△△')）を発行した場合，TP1/NET/TCP/IPはコネクションを解放し，KFCA10608-Wを出力することがあります。このとき，論理端末は閉塞され，状態通知イベント（CCLSEVT）を通知します。

2.3.2　同期型メッセージ

TP1/NET/TCP/IPではトランザクションと連動しないで，任意のタイミングで相手システムとメッセージの送受信を行う形態である，同期型メッセージの送受信ができます。同期型メッセージの送受信時に，TP1/NET/TCP/IPでは，次のような機能が使えます。

受信メッセージの保留
相手システムから受信したメッセージをいったん保留して，任意のタイミングで受信できます。

監視タイマの設定
メッセージの送受信処理を無制限に待つことがないよう，待ち時間を指定できます。監視タイマがタイムアウトした場合，コネクションは切断されますが，コネクション定義（mcftalccn -w）のsrtimoutオペランドにyesを指定することで切断を抑止できます。

ここでは，同期型メッセージの送受信に関する機能について説明します。

なお，メッセージを送受信するときのデータの流れ，およびジャーナルの取得タイミングについては，「付録D　メッセージ送受信の処理の流れ」を参照してください。

＜この項の構成＞

(1)　同期型メッセージの送信

(2)　同期型メッセージの受信

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

(4)　受信メッセージの保留

(5)　コネクションの切断抑止

(1)　同期型メッセージの送信

この形態は，自システムのUAPとメッセージの送信完了を同期する場合に使用します。この場合の「送信完了」とは，TP1/NET/TCP/IPが行うTCP/IPの送信バッファへのメッセージ書き込みが完了したことを表します。したがって，API（dc_mcf_sendsync関数またはCBLDCMCF('SENDSYNC')）がUAPにリターンしたことは，送信メッセージが相手システムに到達したことを示しているわけではありません。

UAPは，API（dc_mcf_sendsync関数またはCBLDCMCF('SENDSYNC')）でTP1/NET/TCP/IPにメッセージの送信を要求します。TP1/NET/TCP/IPは受け取ったメッセージを編集したあと，相手システムに送信処理をします。送信処理が完了した時点で，UAPにリターンします。

dc_mcf_sendsync関数を使用した場合の同期型メッセージの送信を次の図に示します。

図2-31　同期型メッセージの送信

MHP，またはSPPから同期型メッセージを送信します。

TP1/NET/TCP/IPは相手システムにメッセージを送信します。

同期型メッセージ送信を要求したUAPに制御が渡されます。

(2)　同期型メッセージの受信

この形態は，自システムのUAPと相手システムからのメッセージ受信を同期する場合に使用します。

UAPは，API（dc_mcf_recvsync関数またはCBLDCMCF('RECVSYNC')）を発行してTP1/NET/TCP/IPにメッセージの受信を要求します。このとき，TP1/NET/TCP/IPが相手システムから受信したメッセージを保留しているかどうかによって，次のように処理が異なります。

受信メッセージを保留している場合

TP1/NET/TCP/IPはメッセージを編集して，UAPに引き渡します。

受信メッセージを保留していない場合

相手システムからのメッセージを受信するまで，TP1/NET/TCP/IP内で待ち続けます。相手システムからのメッセージを受信した時点で，メッセージの受信を要求したUAPに渡します。

受信メッセージの保留については，「(4)　受信メッセージの保留」を参照してください。

受信メッセージを保留している場合，および受信メッセージを保留していない場合の同期型メッセージの受信を以降の図に示します。

図2-32　同期型メッセージの受信（受信メッセージを保留している場合）

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

MHP，またはSPPから同期型メッセージの受信を要求します。

メッセージの同期受信を要求したUAPに制御が渡され，保留した受信メッセージを受信します。

図2-33　同期型メッセージの受信（受信メッセージを保留していない場合）

MHPまたは，SPPから同期型メッセージの受信を要求します。

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

メッセージの同期受信を要求したUAPに制御が渡され，メッセージを受信します。

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

自システムからのメッセージ送信と，相手システムからの応答メッセージの受信を連続して行う形態です。この形態は，自システムのUAPと相手システムとの間でメッセージの同期合わせ，順序管理をする場合に使用します。

UAPは，API（dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')）を発行してTP1/NET/TCP/IPにメッセージの送受信を要求します。TP1/NET/TCP/IPは受け取ったメッセージを編集したあと，相手システムに送信処理をします。送信処理が完了したあとは，UAPにリターンしないで，引き続き受信待ち状態となります。相手システムからのメッセージを受信すると，TP1/NET/TCP/IPはメッセージを編集して，UAPに引き渡します。

dc_mcf_sendrecv関数を使用した場合の同期型メッセージの送受信を次の図に示します。

図2-34　同期型メッセージの送受信

MHP，またはSPPから同期型メッセージを送受信します。

TP1/NET/TCP/IPは相手システムにメッセージを送信します。

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

同期型メッセージ送受信を要求したUAPに制御が渡され，メッセージを受信します。

同一コネクションでの自システムからのメッセージ送信と，相手システムからの一方送信メッセージがネットワーク上ですれ違うことがあります。メッセージがネットワーク上ですれ違った場合，TP1/NET/TCP/IPは相手システムからの一方送信メッセージを応答メッセージと見なして受信します。

dc_mcf_sendrecv関数の使用時にメッセージがネットワーク上ですれ違った場合の例を次の図に示します。

図2-35　ネットワーク上でメッセージがすれ違った場合の同期型メッセージの送受信

MHP，またはSPPから同期型メッセージを送受信します。

TP1/NET/TCP/IPは相手システムにメッセージを送信します。

ネットワーク上ですれ違った相手システムからのメッセージを受信します。

同期型メッセージ送受信を要求したUAPに制御が渡され，ネットワーク上ですれ違ったメッセージを受信します。

自システムからメッセージを送信した場合に，すでにTP1/NET/TCP/IPが相手システムからの一方送信メッセージを受信し，論理メッセージを組み立てていたときは，dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')が，リターン値DCMCFRTN_73003またはステータスコード73003でエラーリターンします。

(4)　受信メッセージの保留

相手システムから受信したメッセージを，MHPにスケジュールしないで，TP1/NET/TCP/IP内に保留しておくことができます。これによって，ユーザは任意のタイミングでメッセージを受信できます。

相手システムからメッセージを受信した場合，TP1/NET/TCP/IP内に受信メッセージを保留して同期受信要求を待ち合わせるかどうかをコネクション定義（mcftalccn -u）のmsgholdオペランドで指定します。また，受信メッセージが無制限に保留されることを避けるため，コネクション定義（mcftalccn -u）のholdlimitオペランドで，メッセージの最大保留数を指定できます。指定した最大保留数を超過した場合は，コネクションを切断します。

相手システムから受信したメッセージを保留すると，TP1/NET/TCP/IPは受信メッセージ保留通知イベント（RHLDEVT）を通知します。RHLDEVTを通知するには，MCFアプリケーション定義で定義しておく必要があります。

受信メッセージの保留について，dc_mcf_receive関数を使用する場合を例に，次の図に示します。

図2-36　受信メッセージの保留

(a)　受信メッセージの保留判定

相手システムから受信したメッセージを保留するかどうか一意に決定できない場合は，コネクション定義（mcftalccn -u）のmsgholdオペランドにuocを指定し，受信メッセージ保留判定UOCを使用します。これによって，メッセージ単位に保留するかどうかを判定できます。

コネクション定義（mcftalccn -u）のmsgholdオペランドにuocを指定した場合，TP1/NET/TCP/IPは相手システムからメッセージを受信したあと，受信メッセージ保留判定UOCを呼び出します。受信メッセージ保留判定UOCは，TP1/NET/TCP/IPから渡された受信メッセージの内容を基に，受信したメッセージを保留するかどうかを判定します。受信メッセージ保留判定UOCについては，「5.1.13　受信メッセージの保留判定」を参照してください。

受信メッセージの保留判定の流れを，dc_mcf_receive関数およびdc_mcf_recvsync関数を使用する場合を例に，次の図に示します。

図2-37　受信メッセージの保留判定の流れ

(b)　受信メッセージを保留する場合の注意事項

TP1/NET/TCP/IPが受信メッセージを保留している間，dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')は使用できません（dc_mcf_sendsync関数またはCBLDCMCF('SENDSYNC')は使用できます）。dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')を使用した場合は，リターン値DCMCFRTN_73003またはステータスコード73003でエラーリターンします。

TP1/NET/TCP/IPがdc_mcf_sendrecv関数またはdc_mcf_recvsync関数（CBLDCMCF('RECVSYNC')またはCBLDCMCF('SENDRECV')）の発行待ちの場合は，TP1/NET/TCP/IPは受信メッセージを保留しないで，仕掛り中のUAPに受信メッセージを引き渡します。このとき，受信メッセージ保留通知イベントの通知，および受信メッセージ保留判定UOCの呼び出しは行いません。

ネットワーク上のすれ違いなどにより，dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')の送信処理仕掛り中（TCP/IPの送信バッファへのメッセージ書き込み中）に相手システムからメッセージを受信することがあります。この場合，TP1/NET/TCP/IPはコネクション定義の指定内容に従って保留判定（RHLDEVTの通知，受信メッセージ保留判定UOCの呼び出しを含む）を行います。保留した受信メッセージは，dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')の送信処理完了後，応答メッセージと見なしてUAPに引き渡されます。dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')から渡された応答メッセージが意図しないメッセージであった場合は，受信したメッセージを破棄してdc_mcf_recvsync関数またはCBLDCMCF('RECVSYNC')を再度発行するような処置を行ってください。

(5)　コネクションの切断抑止

通常，同期型メッセージの送受信関数の発行時に指定した監視タイマがタイムアウトすると，コネクションは切断されます。しかし，システム定義の指定によっては，コネクションの切断を抑止することができます。

ここでは，コネクションの切断抑止の概要，およびタイムアウト発生時の動作について説明します。

(a)　コネクションの切断抑止の概要

コネクションの切断抑止では，送受信関数がタイムアウトした場合のコネクション切断，およびCERREVTの起動を行いません。コネクションの切断を抑止するかどうかは，コネクション定義（mcftalccn -w）のsrtimoutオペランドで指定します。

コネクションの切断を抑止する場合は，入力セグメント判定UOCでの後続メッセージ監視を行わないでください。

dc_mcf_sendrecv関数がタイムアウトした場合の，コネクションの切断抑止の概要を，次の図に示します。

図2-38　コネクションの切断抑止の概要

(b)　タイムアウト発生時の動作

メッセージの送受信関数のタイムアウト発生時の動作を，次の表に示します。

表2-6　メッセージの送受信関数タイムアウト発生時の動作

項番
項目
コネクション定義（mcftalccn -w）の指定による動作

srtimoutオペランドにyesを指定
（コネクションの切断を抑止する）
srtimoutオペランドにnoを指定
（コネクションの切断を抑止しない）

1
コネクション
コネクションを切断しません。
コネクションを切断します。

2
CERREVT
起動しません。
起動します。
次に示す内容を通知します。

障害要因コード：0x30

理由コード1：
DCMTCP_RSN1_MCF

理由コード2：
DCMTCP_RSN2_SRTO

3
リターン値
DCMCFRTN_73005（監視タイマタイムアウト）が返されます。

4
ステータスコード
73005（監視タイマタイムアウト）が返されます。

2.3.3　同一論理端末上でのsend関数の併用に関する注意事項

同一論理端末上での，一方送信によるメッセージ送信（dc_mcf_send関数またはCBLDCMCF('SEND△△△△')）と，次に示すメッセージ送受信との併用は避けてください。

同期型メッセージの送受信（dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')）

同期型メッセージの送信（dc_mcf_sendsync関数またはCBLDCMCF('SENDSYNC')）

併用する場合は，UAPが行うメッセージの送信要求の優先順位に注意が必要です。MCFは，次の優先順位に従って，UAPの送信要求をTP1/NET/TCP/IPにスケジュールします。

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

一方送信メッセージの送信（優先）

一方送信メッセージの送信（一般）

併用する場合は，同期送受信，または同期送信によって送信されたメッセージが，一方送信によって送信されたメッセージを追い越したときでも，この優先順位に矛盾しない運用をしてください。優先順位に従った運用をしなかった場合に，同一論理端末上で一方送信によるメッセージ送信，または同期送受信もしくは同期送信によるメッセージ送信を併用すると，送信メッセージの追い越しが発生するおそれがあります。

2.3.4　問い合わせメッセージと応答メッセージ（問い合わせ応答形態）

相手システムから問い合わせメッセージを受信したあと，自システムから応答メッセージを送信する形態です。UAP（MHP）のトランザクションの決着と連動してメッセージを送受信します。非トランザクションのMHPの場合は，サービスの終了と連動してメッセージを送受信します。論理端末の端末タイプはany，アプリケーションの型は応答型です。

相手システムからのメッセージを受信すると，TP1/NET/TCP/IPは入力メッセージ編集UOCで編集されたメッセージを入力キューに登録します。同時に，応答型のアプリケーションに対応するUAPを起動して，メッセージを引き渡します。

UAPがAPI（dc_mcf_reply関数またはCBLDCMCF('REPLY△△△')）で送信要求すると，メッセージが出力キューに登録されます。TP1/NET/TCP/IPは出力キューからメッセージを読み出し，出力メッセージ編集UOCで編集されたメッセージを相手システムに送信します。応答メッセージをTCP/IPの送信バッファに書き込み完了した時点で，送信完了としてTP1/NET/TCP/IPは出力キューにある送信済みメッセージのデータを消去します。

出力キューまたは入力キューの割り当て先の指定に関係なく，入力キューに蓄えられた問い合わせメッセージおよび出力キューに蓄えられた応答メッセージは，オンラインシステムが異常終了した場合などの再開始時に引き継がれません。

問い合わせメッセージの受信と応答メッセージの送信を，dc_mcf_receive関数およびdc_mcf_reply関数を使用する場合を例に，次の図に示します。

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

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

TP1/NET/TCP/IPは相手システムからのメッセージを入力キューに書き込み，MHPを起動します。

MHPはメッセージを受け取ります。

MHPは応答メッセージの送信を要求します。

TP1/NET/TCP/IPは応答メッセージを送信します。

出力キューにある一方送信メッセージのデータを消去します。

以降，問い合わせ応答形態の詳細を説明します。

＜この項の構成＞

(1)　問い合わせ応答の開始と終了

(2)　問い合わせ応答中のアプリケーション起動

(3)　問い合わせ応答中の論理端末へのメッセージ受信

(4)　問い合わせ応答中の論理端末へのメッセージ送信

(5)　閉塞中の論理端末への問い合わせメッセージ受信

(1)　問い合わせ応答の開始と終了

問い合わせ応答は，相手システムから問い合わせメッセージを受信し，応答型のアプリケーションを起動することで開始します。そして，UAPから応答メッセージを受け付け，相手システムへの応答メッセージの送信が完了すると問い合わせ応答を終了します。また，障害などによるコネクションの解放および論理端末の閉塞となった場合にも問い合わせ応答を終了します。

問い合わせ応答の開始から問い合わせ応答の終了までを問い合わせ応答中と呼びます。

(2)　問い合わせ応答中のアプリケーション起動

問い合わせ応答中にアプリケーション起動要求をする場合，非応答型または応答型のアプリケーション名を指定できます。ただし，応答型のアプリケーションを起動できるのは一つのサービスで1回だけです。

応答型のアプリケーションを起動した場合，そのサービスでは応答メッセージを送信できません。起動先の応答型アプリケーションで応答メッセージを送信してください。

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

(3)　問い合わせ応答中の論理端末へのメッセージ受信

問い合わせ応答中の論理端末が相手システムからメッセージを受信した場合，TP1/NET/TCP/IPはメッセージログ（KFCA14884-W）を出力し，MDELEVTを起動します。

UAP応答待ちの論理端末へのメッセージ受信を次の図に示します。

図2-40　UAP応答待ちの論理端末へのメッセージ受信

(4)　問い合わせ応答中の論理端末へのメッセージ送信

問い合わせ応答中の論理端末に対してメッセージを送信した場合，メッセージの種類によって動作が異なります。

(a)　一方送信メッセージの場合

一方送信メッセージは出力キューに登録され，APIは正常にリターンします。登録された一方送信メッセージは，TP1/NET/TCP/IPの取り出しを待ちます。応答メッセージの送信完了後に出力キューから読み出し，相手システムに送信します。

(b)　同期型メッセージの場合

APIがリターン値DCMCFRTN_72001またはステータスコード72001でエラーリターンします。

(5)　閉塞中の論理端末への問い合わせメッセージ受信

閉塞中の論理端末が相手システムからメッセージを受信した場合，TP1/NET/TCP/IPはUAPを起動しますが，サービスが終了しても出力キューから応答メッセージを読み出さないで，問い合わせ応答中のままになります。相手システムに応答メッセージを送信する場合，運用コマンド（mcftactle）を入力し，論理端末を閉塞解除してください。

なお，出力キューに滞留した応答メッセージを運用コマンド（mcftdlqle）などで削除した場合，論理端末を閉塞解除しても問い合わせ応答は終了しません。運用コマンド（mcftdctcn）を入力し，コネクションを解放してください。

2.3.5　問い合わせメッセージと応答メッセージ（継続問い合わせ応答形態）

相手システムからの問い合わせメッセージの受信と，自システムからの応答メッセージの送信を繰り返す形態です。UAP（MHP）のトランザクションの決着と連動してメッセージを送受信します。非トランザクションのMHPの場合は，サービスの終了と連動してメッセージを送受信します。論理端末の端末タイプはany，アプリケーションの型は継続問い合わせ応答型です。

継続問い合わせ応答は継続問い合わせ応答型のアプリケーションの起動によって開始され，UAPからAPI（dc_mcf_contend関数またはCBLDCMCF('CONTEND△')）を発行したり，運用コマンド（mcftendct）を入力したりすることで終了します。

相手システムからのメッセージを受信すると，TP1/NET/TCP/IPは入力メッセージ編集UOCで編集されたメッセージを入力キューに登録します。同時に，継続問い合わせ応答型のアプリケーションに対応するUAPを起動して，メッセージを引き渡します。

UAPがAPI（dc_mcf_reply関数またはCBLDCMCF('REPLY△△△')）で送信要求すると，メッセージが出力キューに登録されます。継続問い合わせ応答中のUAPは，dc_mcf_reply関数またはCBLDCMCF('REPLY△△△')発行時に次に起動するアプリケーションを指定できます。また，継続問い合わせ応答用一時記憶領域を使って次に起動するアプリケーションにデータを引き継ぐことができます。

TP1/NET/TCP/IPは出力キューからメッセージを読み出し，出力メッセージ編集UOCで編集されたメッセージを相手システムに送信します。応答メッセージをTCP/IPの送信バッファに書き込み完了した時点で，送信完了としてTP1/NET/TCP/IPは出力キューにある送信済みメッセージのデータを消去します。

出力キューまたは入力キューの割り当て先の指定に関係なく，入力キューに蓄えられた問い合わせメッセージおよび出力キューに蓄えられた応答メッセージはオンラインシステムが異常終了した場合などの再開始時に引き継がれません。

継続問い合わせ応答を，dc_mcf_receive関数およびdc_mcf_reply関数を使用する場合を例に，次の図に示します。

図2-41　継続問い合わせ応答

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

TP1/NET/TCP/IPは相手システムからのメッセージを入力キューに書き込み，MHP1を起動します。

MHP1は問い合わせメッセージを受け取ります。

MHP1は一時記憶データの受け取り要求を行い，一時記憶データを受け取ります。

MHP1は一時記憶データの更新要求を行い，一時記憶データを更新します。

MHP1は応答メッセージの送信を要求します。

TP1/NET/TCP/IPは応答メッセージを送信します。

出力キューにある応答メッセージのデータを消去します。

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

TP1/NET/TCP/IPは相手システムからのメッセージを入力キューに書き込み，MHP2を起動します。

MHP2は問い合わせメッセージを受け取ります。

MHP2は一時記憶データの受け取り要求を行い，一時記憶データを受け取ります。

MHP2は一時記憶データの更新要求を行い，一時記憶データを更新します。

MHP2は継続問い合わせ応答の終了を要求します。

MHP2は応答メッセージの送信を要求します。

TP1/NET/TCP/IPは応答メッセージを送信します。

出力キューにある応答メッセージのデータを消去します。

以降，継続問い合わせ応答形態の詳細を説明します。

＜この項の構成＞

(1)　継続問い合わせ応答の開始

(2)　次起動アプリケーションの予約

(3)　継続問い合わせ応答中のアプリケーション起動

(4)　継続問い合わせ応答用一時記憶データ

(5)　継続問い合わせ応答の終了

(6)　エラーイベント

(7)　継続問い合わせ応答中の論理端末へのメッセージ受信

(8)　継続問い合わせ応答中の論理端末へのメッセージ送信

(9)　閉塞中の論理端末への問い合わせメッセージ受信

(1)　継続問い合わせ応答の開始

継続問い合わせ応答は，継続問い合わせ応答中でないときに相手システムから問い合わせメッセージを受信し，継続問い合わせ応答型のアプリケーションを起動することで開始します。

問い合わせ応答と異なり，継続問い合わせ応答では相手システムへの応答メッセージの送信が完了しても継続問い合わせ応答を終了しません。

継続問い合わせ応答の開始から継続問い合わせ応答の終了までを継続問い合わせ応答中と呼びます。また，継続問い合わせ応答中にUAPを起動してから送信メッセージを読み出すまでを継続問い合わせ応答のUAP実行中と呼びます。

(2)　次起動アプリケーションの予約

応答メッセージ送信要求時，次に起動する継続問い合わせ応答型のアプリケーション（次起動アプリケーション）を予約できます。

次起動アプリケーションの指定を省略した場合，実行中のアプリケーション名が指定されたものとします。ただし，エラーイベントで次起動アプリケーションの指定を省略した場合は，継続問い合わせ応答を終了します。詳細については，「2.3.5(6)　エラーイベント」を参照してください。

次起動アプリケーションの予約を次の図に示します。

使用方法の詳細については，「3.　C言語のライブラリ関数」または「4.　COBOL-UAP作成用プログラムインタフェース」を参照してください。

図2-42　次起動アプリケーションの予約

(3)　継続問い合わせ応答中のアプリケーション起動

継続問い合わせ応答中にアプリケーション起動要求をする場合，非応答型または継続問い合わせ応答型のアプリケーション名を指定できます。ただし，継続問い合わせ応答型のアプリケーションを起動できるのは一つのサービスで1回だけです。

継続問い合わせ応答型のアプリケーションを起動した場合，そのサービスでは応答メッセージを送信できません。また，継続問い合わせ応答の終了要求もできません。起動先の継続問い合わせ応答型アプリケーションで応答メッセージを送信したり，継続問い合わせ応答の終了要求をしてください。

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

(4)　継続問い合わせ応答用一時記憶データ

継続問い合わせ応答用一時記憶データ（以降，一時記憶データと呼びます）を使用して，次起動アプリケーションへデータの引き継ぎができます。データの引き継ぎを，次の図に示します。

図2-43　一時記憶データの引き継ぎ

一時記憶データを格納する継続問い合わせ応答用一時記憶領域は論理端末ごとに確保するため，複数の論理端末で同時に一つのアプリケーションを使用して継続問い合わせ応答ができます。論理端末と一時記憶データの関係を次の図に示します。

図2-44　論理端末と一時記憶データの関係

(a)　継続問い合わせ応答用一時記憶領域の確保

一時記憶データを格納する継続問い合わせ応答用一時記憶領域は，更新用領域および回復用領域の2面を共有メモリに確保します。

アプリケーション属性定義（mcfaalcap）でアプリケーションごとに継続問い合わせ応答用一時記憶領域のサイズを定義できます。

ただし，実際に確保する継続問い合わせ応答用一時記憶領域のサイズは，継続問い合わせ応答を開始したあと最初に一時記憶データの更新要求をしたアプリケーションのアプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値となります。確保済みの継続問い合わせ応答用一時記憶領域のサイズが，一時記憶データの更新要求を行う場合のデータ長よりも小さいとき，実行中のアプリケーションのアプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値のサイズで，継続問い合わせ応答用一時記憶領域を再確保します。したがって，継続問い合わせ応答で使用する各アプリケーションの更新する一時記憶データの領域長が異なる場合，最初に起動するアプリケーションのアプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドにデータ長の最大値を指定すると，途中で再確保をしないため，性能が向上します。

(b)　一時記憶データの受け渡し

一時記憶データの受け渡しには「受け取り要求」と「更新要求」があります。

一時記憶データの受け取り要求
指定したデータ長の一時記憶データを受け取れます。初期値は，アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで指定したサイズ分の(00)₁₆が渡されます。指定した受け取り領域長が一時記憶データより小さい場合，指定した領域長の長さだけ受け取り，残りは切り捨てられます。

一時記憶データの更新要求
指定したデータ長のデータを用いて一時記憶データを更新します。最大でアプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで指定したデータ長の更新ができます。

使用方法の詳細については，「3.　C言語のライブラリ関数」または「4.　COBOL-UAP作成用プログラムインタフェース」を参照してください。

(c)　継続問い合わせ応答用一時記憶領域の解放

継続問い合わせ応答を終了すると継続問い合わせ応答用一時記憶領域を解放します。

(d)　障害発生時の一時記憶データ

障害発生時の一時記憶データの扱いについて次に示します。

OpenTP1システム障害による全面回復の場合
一時記憶データは失われます。

UAP障害による部分回復の場合
異常終了したUAPでの一時記憶データの更新要求が取り消され，異常終了したUAPが一時記憶データの受け取り要求を行ったときの状態に戻ります。

(5)　継続問い合わせ応答の終了

継続問い合わせ応答は次のどれかで終了します。

(a)　MHPからの終了要求（dc_mcf_contend関数またはCBLDCMCF('CONTEND△')）

MHPからAPI（dc_mcf_contend関数またはCBLDCMCF('CONTEND△')）を発行して継続問い合わせ応答の終了を要求します。

ただし，次に示す条件に該当する場合はエラーリターンします。

次起動アプリケーションを予約して，応答メッセージの送信を要求している。

継続問い合わせ応答型のアプリケーションの起動を要求している。

使用方法の詳細については，「3.　C言語のライブラリ関数」または「4.　COBOL-UAP作成用プログラムインタフェース」を参照してください。

(b)　運用コマンドによる終了要求（mcftendct）

運用コマンド（mcftendct）で論理端末名称を指定して，その論理端末に対する継続問い合わせ応答を強制終了できます。また，継続問い合わせ応答を行っていないUAPからも運用コマンドを発行できます。詳細については，「7.　運用コマンド」を参照してください。

継続問い合わせ応答のUAP実行中に継続問い合わせ応答を即時強制終了する場合，-fオプションの指定が必要です。

なお，-fオプションを指定したmcftendctコマンドの実行後にMHPが次に示す処理をしたとき，MHPが異常終了します。このとき，エラーイベントは起動しません。

TP1/Message Control以外のリソースマネジャにもアクセスするMHPのサービス終了時

継続問い合わせ用一時記憶領域アクセス時（dc_mcf_tempget関数，dc_mcf_tempput関数発行時）

ロールバック要求時（dc_mcf_rollback関数発行時（action：DCMCFRTRY，またはDCMCFNRTNの場合））

(c)　コネクション解放および論理端末の閉塞

障害などによるコネクションの解放および論理端末の閉塞となった場合に，継続問い合わせ応答を終了します。

相手からのコネクション解放，または運用コマンド（mcftdctcn）や障害によってコネクションを解放する場合，継続問い合わせ応答を処理しているMHPが実行中であればMHPのサービス完了を待ち合わせます。MHPのサービスが完了した後に継続問い合わせ応答を終了し，コネクションは解放状態となります。

なお，継続問い合わせ応答中の論理端末は，運用コマンド（mcftdctle）による閉塞はできません。

(6)　エラーイベント

MHPの処理中に障害が発生した場合，MCFイベント処理用MHPにエラーイベントを通知します。継続問い合わせ応答中に障害が発生した場合，エラーイベントを継続問い合わせ応答型として起動します。

(a)　エラーイベントを定義した場合

MCFイベント処理用MHPで次のどちらかを行うことで継続問い合わせを続行できます。

次起動アプリケーションを指定して，応答メッセージの送信要求をする。

継続問い合わせ応答型のアプリケーションの起動要求をする。

MCFイベント処理用MHPで継続問い合わせ応答型のアプリケーションの起動要求を行わない，かつ，次起動アプリケーションを指定しないで応答メッセージの送信要求をした場合，継続問い合わせ応答処理は終了します。

ただし，MCFイベント処理用MHPで継続問い合わせ応答型のアプリケーションを起動し，起動先のアプリケーションで次に起動するアプリケーション名を指定しないで応答メッセージの送信要求をした場合，継続問い合わせ応答を終了することなく，MCFイベント処理用MHPから起動した継続問い合わせ応答型のアプリケーションを次のメッセージ受信時に再び起動します。

(b)　エラーイベントを定義しない場合

継続問い合わせ応答処理は終了します。

(7)　継続問い合わせ応答中の論理端末へのメッセージ受信

継続問い合わせ応答中の論理端末が相手システムからメッセージを受信した場合，応答型と同様にTP1/NET/TCP/IPはメッセージログ（KFCA14884-W）を出力し，MDELEVTを起動します。

(8)　継続問い合わせ応答中の論理端末へのメッセージ送信

継続問い合わせ応答中の論理端末に対してメッセージを送信した場合，メッセージの種類によって動作が異なります。

(a)　一方送信メッセージの場合

一方送信メッセージは出力キューに登録され，APIは正常にリターンします。登録された一方送信メッセージは，TP1/NET/TCP/IPの取り出しを待ちます。継続問い合わせ応答の終了後に出力キューから読み出し，相手システムに送信します。

(b)　同期型メッセージの場合

APIがリターン値DCMCFRTN_72001またはステータスコード72001でエラーリターンします。

(9)　閉塞中の論理端末への問い合わせメッセージ受信

閉塞中の論理端末が相手システムからメッセージを受信した場合，TP1/NET/TCP/IPはUAPを起動しますが，サービスが終了しても出力キューから応答メッセージを読み出さないで，継続問い合わせ応答のUAP実行中のままになります。相手システムに応答メッセージを送信する場合，運用コマンド（mcftactle）を入力し，論理端末を閉塞解除してください。

なお，出力キューに滞留した応答メッセージを運用コマンド（mcftdlqle）などで削除した場合，論理端末を閉塞解除したり，コネクションを解放しても継続問い合わせ応答は終了しません。-fオプションを指定したmcftendctコマンドを入力し，継続問い合わせ応答を即時強制終了してください。

2.3.6　メッセージとセグメントの関係

UAPの1回の関数で入出力できるメッセージの分割単位を，セグメントといいます。TP1/NET/TCP/IPを使用して相手システムと送受信する場合，一つのメッセージは一つのセグメントで構成されます。つまり，1回の関数の呼び出しで，一つのメッセージを送受信できます。ただし，MCFイベント（MCFが通知する特殊なメッセージ）は，二つのセグメントで構成されることがあります。これを受信する場合は，メッセージを受信する関数を2回呼び出してください。MCFイベントのセグメント構成については，「5.2.2　MCFイベント通知時のセグメント構成」を参照してください。

メッセージ送受信の関数で処理するセグメントの先頭には，MCFで使用されるヘッダ領域があります。C言語およびCOBOL言語のメッセージ送受信関数を使用している場合，ヘッダ領域の長さは，バッファ形式1とバッファ形式2で異なります。バッファ形式を省略した場合，バッファ形式1が仮定されます。

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

TP1/NET/TCP/IPがメッセージを受け取る場合，相手システムから送信されたメッセージがネットワーク内で分割されたり，前後に送信されたメッセージと結合してしまうことがあります。また，メッセージを受け取る側のシステムでは，送信されたメッセージのセグメントがどこまでで終わっているのかを正確に認識できません。ただし，メッセージの送信順序は保証されます。

分割，または結合されたメッセージは，受け取る側のシステムが再度分割，組み立てをすることで，正常な論理メッセージとなります。メッセージの分割，および組み立て時には，該当するメッセージが論理メッセージのセグメントの終わりかどうかを判定する必要があります。TP1/NET/TCP/IPでは，受信メッセージ組み立て機能，または入力セグメント判定UOCで入力セグメントの終わりを判定し，メッセージの分割・組み立てをします。受信メッセージ組み立て機能，または入力セグメント判定UOCを使用しない場合は，TP1/NET/TCP/IPはTCP/IPソケットの受信バッファから受け取ったメッセージをそのままUAPに通知します。この場合，UAPでメッセージの分割・組み立てを行ってください。

＜この項の構成＞

(1)　受信メッセージの組み立て機能

(2)　入力セグメント判定UOC

(3)　受信バッファの空き待ち

(1)　受信メッセージの組み立て機能

コネクション定義（mcftalccn -u）のmasmオペランドにyesを指定した場合，受信メッセージの組み立て機能を使用できます。

受信メッセージ組み立て機能を使用する場合，メッセージ送信時に，TP1/NET/TCP/IPはメッセージ中の先頭に自動的にメッセージ長エリアを付けます。そのエリアにバイト順序がビッグエンディアン※の整数型のメッセージ長を設定し，特定のフォーマットにして送信します。このとき，メッセージが分割されるかどうかは，システム（ソケット）の送受信バッファ長に依存します。

メッセージ受信時には，メッセージ中に設定したメッセージ長エリアのバイト順序がビッグエンディアンの整数型であることを前提に論理メッセージを組み立てます。このため，相手システムはメッセージ長エリアにバイト順序がビッグエンディアンの整数型のメッセージ長を設定する必要があります。

注※

ビッグエンディアンとはバイトを低い方から順番に並べて，最下位のビットを最上位のバイトに置く方式のことです。

メッセージ受信時，メッセージ中のTP1/NET/TCP/IPが送信時に付けたメッセージ長エリアを自動的に削除します。受信メッセージ組み立て機能での分割・組み立ての概要を次の図に示します。

図2-45　受信メッセージ組み立て機能での分割・組み立て

（凡例）

L1，L2：メッセージ長

メッセージ長エリアにバッファグループ定義（mcftbuf -g）のlengthオペランドで定義した受信バッファのサイズを超える値が設定されていた場合，TP1/NET/TCP/IPは受信バッファオーバフローと見なし，コネクションを解放します。

(2)　入力セグメント判定UOC

入力セグメント判定UOCは，TP1/NET/TCP/IPが蓄積している受信メッセージがセグメントとして完成しているかどうか，完成している場合は，完成したセグメントと後続のセグメントとの境界がどこであるかを判断するためのUOCです。

入力セグメント判定UOCを使用する場合，セグメントの終わりを判定するための目印が必要となります。例えば，メッセージにメッセージ長を含んだヘッダを付けることによって，入力セグメント判定UOCで，セグメントの終わりを判定できます。

送信されたメッセージが後続のメッセージと結合している場合は，該当するメッセージのセグメントの終わりを判定すると同時に，次のメッセージの長さを計算します。メッセージの形式は，システム間であらかじめ取り決めておきます。

入力セグメント判定UOCでの分割・組み立てを次の図に示します。

図2-46　入力セグメント判定UOCでの分割・組み立て

入力セグメント判定UOCがセグメント未完を指示したとき，UOCに渡したメッセージのサイズと該当メッセージの残りのサイズの和がバッファグループ定義で定義した受信バッファのサイズを超えている場合，TP1/NET/TCP/IPは受信バッファオーバフローと見なし，コネクションを解放します。

入力セグメント判定UOCの詳細については，「5.1.1　入力セグメントの判定」を参照してください。

(3)　受信バッファの空き待ち

論理メッセージの組み立てと論理メッセージの入力キューへの格納は，非同期に行われます。

TCP/IPソケットの受信バッファから受け取ったメッセージは，入力キューに格納するまでコネクション定義（mcftalccn -g）のrcvbufオペランドで指定した受信バッファに保持されます。

相手システムから一方的に連続してメッセージを受信するなどによって受信バッファの空きが不足した場合，TP1/NET/TCP/IPは受信バッファの空きを最大3分間待ち合わせます。受信バッファの空きを待ち合わせている間は，相手システムからメッセージを受信したり，相手システムからのコネクション解放を検出できなくなります。一定時間が経過したあとも受信バッファの空きがない場合は，メッセージログ（KFCA14847-E）を出力し，コネクションを解放します。

入力キューへの格納が完了するなどによって，TP1/NET/TCP/IPが受信バッファの空きを検出すると，再び相手システムからメッセージを受信したり，相手システムからのコネクション解放を検出できるようになります。なお，受信バッファの空きチェックはタイマ定義（mcfttim -b）のbtimオペランドの指定値の間隔で行います。

受信バッファの空き待ちを次の図に示します。

図2-47　受信バッファの空き待ち

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

1.で受信したメッセージを入力キューに格納する前に相手システムからメッセージを受信します。

受信バッファ不足を検出すると，メッセージログ（KFCA14877-I）を出力し，受信バッファの空きを待ち合わせます。

1.で受信したメッセージを入力キューに格納すると，受信バッファの空きを検出します。

2.で受信したメッセージを入力キューに格納します。

受信バッファの空き待ちによって受信処理が遅延し，性能に影響を与えるおそれがあるため，受信バッファ面数には余裕を持った値を見積もってください。詳細については，「6.　システム定義」の「mcftalccn（コネクション定義の開始）」の注意事項を参照してください。

2.3.8　送受信時のデータサイズ

TP1/NET/TCP/IPが相手システムにメッセージを送信するときは，ネットワークに対して，UAPから渡された論理メッセージのサイズで送信要求します。また，TP1/NET/TCP/IPが相手システムからメッセージを受信し，UAPに受信メッセージを渡すときは，受信メッセージの組み立て機能または入力セグメント判定UOCで組み立てたメッセージをUAPに通知します。

出力メッセージ編集UOCまたは入力メッセージ編集UOCでヘッダを付ける場合，データサイズは送受信するメッセージの長さとヘッダの長さとの合計になります。このため，送受信バッファのサイズには，上記の合計値，またはそれ以上の値を設定してください。

2.3.9　メッセージの重複，および欠落のチェック

TP1/NET/TCP/IPでは，送信したメッセージの重複および欠落をチェックしません。メッセージの重複，および欠落をチェックする場合は，相手システムと自システムのUAPとの間でメッセージの形式を決めます。例えば，メッセージの内部を制御部とデータ部に分け，制御部にメッセージの通番を格納し，データ部にはユーザの送信したいデータを格納します。メッセージを受信する側が通番をチェックすることで，メッセージの重複，および欠落を検出できます。メッセージの形式の例を次の図に示します。

図2-48　メッセージの形式の例

2.3.10　メッセージ送達の確認

メッセージの送達確認には，UAPで実装する方法とTP1/NET/TCP/IPが提供する送達確認機能を使用する方法があります。

＜この項の構成＞

(1)　UAPで実装する場合

(2)　TP1/NET/TCP/IPが提供する送達確認機能を使用する場合

(1)　UAPで実装する場合

UAPで実装する場合，メッセージ送達の確認は，あらかじめ相手システムと自システムのUAPとの間で送達確認のためのメッセージ形式を取り決めておき，送達確認メッセージの送受信によって行います。メッセージ送達確認の例を次の図に示します。

図2-49　メッセージ送達確認の例

(2)　TP1/NET/TCP/IPが提供する送達確認機能を使用する場合

TP1/NET/TCP/IPが提供する送達確認機能には，DCCMII/TCPおよびDCCM3/TCP（以降，DCCMII/TCPおよびDCCM3/TCPのメッセージ送達確認機能をサポートした相手システムをDCCMと呼びます）のメッセージ送達確認のプロトコルに従ったメッセージ送達確認と，任意の相手システムとのメッセージ送達確認があります。

(a)　DCCMとのメッセージ送達確認

DCCMのメッセージ送達確認のプロトコルに従って，メッセージ送受信を行います。UAPは応答専用データ（DCCMのメッセージ送達確認機能で使用される送達確認メッセージ）を意識する必要はありません。

DCCMと接続し，メッセージ送達確認機能を使用する場合，TP1/NET/TCP/IPの定義とDCCMの定義を対応させる必要があります。対応させる内容の詳細については，「6.　システム定義」の「DCCMII/TCPおよびDCCM3/TCPの通信定義との関係」を参照してください。

DCCMへの一方送信時の処理の流れを，dc_mcf_send関数を使用する場合を例に，次の図に示します。

図2-50　DCCMへの一方送信時の処理の流れ

MHP，またはSPPから一方送信メッセージを受信します。

DCCMへ一方送信メッセージを送信します。

DCCMから応答専用データを受信します。

TP1/NET/TCP/IPが付加した送信メッセージのメッセージIDと，DCCMが付加した応答専用データのメッセージIDを比較します。その結果，メッセージIDが一致した場合，送信処理を完了します。不一致の場合は，受信した応答専用データを破棄します。

送信を完了した場合，送信完了通知イベント（SCMPEVT）をMHPに通知します。

送信を完了した場合，出力キューにある一方送信メッセージのデータを消去します。

TP1/NET/TCP/IPは，受信した応答専用データをUAPに通知しません。

コネクション定義のメッセージ送信完了監視時間（mcftalccn -b sndcmptim）を指定している場合，メッセージ送信から応答専用データの受信までを監視できます。応答専用データの受信監視時間がタイムアウトした場合，CERREVTを起動します。このとき，送信メッセージは出力キューに戻されます。

DCCMからの一方受信時の処理の流れを，dc_mcf_receive関数を使用する場合を例に，次の図に示します。

図2-51　DCCMからの一方受信時の処理の流れ

DCCMから一方送信メッセージを受信します。

入力キューへの書き込みが完了した時点で応答専用データを送信します。
DCCMからの受信メッセージ内のセグメント情報に応答不要が指定されている場合は，応答専用データを送信しません。

TP1/NET/TCP/IPとDCCM間で送受信するメッセージの形式を次の図に示します。

図2-52　TP1/NET/TCP/IPとDCCM間での送受信メッセージの形式

メッセージ送達確認機能を使用する場合，メッセージ長，セグメント情報，メッセージIDはTP1/NET/TCP/IPが自動的に付加・削除します。

メッセージ長

メッセージの組み立て・分解をするための全体長です。

セグメント情報

セグメントの種類と応答要求の種類が設定されます。セグメントの種類と応答要求の種類を次の表に示します。なお，次の表に示す格納値以外の値は不正データとし，コネクションを解放します。

表2-7　セグメントの種類と応答要求の種類

セグメントの種類 | 応答要求の種類 | 格納値※
TP1/NET/TCP/IPからの送信 | DCCMからの送信
単一セグメント | 応答不要 | － | (10)₁₆
自動応答要求 | (18)₁₆ | (18)₁₆

（凡例）

－：該当しません（TP1/NET/TCP/IPはこのメッセージを送信しません）

DCCMのプロトコルではセグメント情報に単一セグメントと複数セグメントを設定できますが，TP1/NET/TCP/IPは単一セグメントだけをサポートします。DCCMから複数セグメントのメッセージを受信した場合，TP1/NET/TCP/IPは不正データと見なしてコネクションを解放します。

メッセージID

メッセージと応答専用データの組を確認するための情報です。TP1/NET/TCP/IPはメッセージ送信ごとにユニークな値を採番します。

TP1/NET/TCP/IPとDCCM間で送受信する応答専用データの形式を次の図に示します。

図2-53　応答専用データの形式

メッセージ長

メッセージの組み立て・分解をするための全体長として，11を設定します。

セグメント情報

TP1/NET/TCP/IPは，単一セグメント，応答専用データを示す，0x10を設定します。

メッセージID

DCCMから受信したメッセージのメッセージIDを設定します。

TP1/NET/TCP/IPのメッセージ送信と，DCCMのメッセージ送信が衝突した場合の処理の流れについては，「付録F　送受信メッセージの衝突時の処理の流れ（メッセージ送達確認機能使用時）」を参照してください。

(b)　任意の相手システムとのメッセージ送達確認

受信メッセージ判定UOCを使用し，TP1/NET/TCP/IPが受信したメッセージが送達確認メッセージかどうかを判定することで，任意の相手システムとのメッセージ送達確認を行うことができます。

受信メッセージ判定UOCを使用した任意の相手システムとのメッセージ送達確認では，受信メッセージ判定UOCのmsg_typeに指定したメッセージの種別によって，処理が異なります。

メッセージの種別には，次の種別があります。

DCTCP_UOC_MR_MT_ACK（送達確認メッセージ）

DCTCP_UOC_MR_MT_INFO（一方送信メッセージ）

DCTCP_UOC_MR_MT_CLS（コネクション解放）

DCTCP_UOC_MR_MT_IGN（破棄メッセージ）

種別ごとに，処理の流れを説明します。

●相手システムへの一方送信（DCTCP_UOC_MR_MT_ACK（送達確認メッセージ）の場合）

相手システムへの一方送信時の処理の流れを次の図に示します。

図2-54　相手システムへの一方送信時の処理の流れ（DCTCP_UOC_MR_MT_ACK）

UAPは相手システムへの一方送信メッセージを送信します。

相手システムは，送達確認メッセージを送信します。

相手システムからの送達確認メッセージを待ち合わせ，受信します。

メッセージ受信時に起動する受信メッセージ判定UOCで送達確認メッセージを指定した場合，送信処理を完了します。

送信を完了した場合，送信完了通知イベント（SCMPEVT）をMHPに通知します。

送信を完了した場合，出力キューから送信済みメッセージのデータを消去します。

注

送達確認メッセージを不要とする一方送信メッセージは送信できません。

コネクション定義のメッセージ送信完了監視時間（mcftalccn -b sndcmptim）を指定している場合，メッセージ送信から送達確認メッセージの受信までを監視できます。メッセージ送信完了監視時間がタイムアウトした場合，CERREVTを起動します。このとき，送信メッセージは出力キューに戻されます。

●相手システムからの一方受信（DCTCP_UOC_MR_MT_INFO（一方送信メッセージ）の場合）

相手システムからの一方受信時の処理の流れを次の図に示します。

図2-55　相手システムからの一方受信時の処理の流れ（DCTCP_UOC_MR_MT_INFO）

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

受信メッセージ判定UOCで一方送信メッセージを設定した場合，一方送信メッセージを受信し，UAPにメッセージ受信を通知します。

受信メッセージ判定UOCで，送達確認メッセージの送信要否に応答要を設定した場合，TP1/NET/TCP/IPは入力キューへの書き込みが完了した時点で受信メッセージ判定UOCで編集したメッセージを送信します。

●相手システムからの一方受信（DCTCP_UOC_MR_MT_CLS（コネクション解放）の場合）

受信メッセージ判定UOCで，メッセージ種別にコネクション解放を設定した場合，TP1/NET/TCP/IPは受信したメッセージをUAPに通知しないで破棄し，メッセージログ(KFCA14850-I)を出力してコネクションを解放し，CERREVTを起動します。このとき，送信処理中のメッセージは出力キューに残ります。

●相手システムからの一方受信（DCTCP_UOC_MR_MT_IGN（破棄メッセージ）の場合）

受信メッセージ判定UOCで，メッセージ種別に破棄メッセージを設定した場合，TP1/NET/TCP/IPはメッセージログ（KFCA14849-I）を出力して，受信したメッセージをUAPに通知しないで破棄します。コネクション確立状態を維持したまま受信したメッセージをUAPに通知させない場合に指定してください。

TP1/NET/TCP/IPのメッセージ送信と，相手システムのメッセージ送信が衝突した場合の処理の流れについては，「付録F　送受信メッセージの衝突時の処理の流れ（メッセージ送達確認機能使用時）」を参照してください。

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

TP1/NET/TCP/IPは，メッセージを受信するときに，アプリケーション名を決定します。アプリケーション名を決定する方法を，優先順位の高い順に次に示します。

入力メッセージ編集UOCでアプリケーション名を決定する。

予約した次起動アプリケーション（継続問い合わせ応答中の場合）でアプリケーション名を決定する。

論理端末定義（mcftalcle -v）でアプリケーション名を決定する。

入力メッセージの先頭から空白の手前までの8バイト以内でアプリケーション名を決定する。

アプリケーション名を決定できなかった場合，エラーイベント（ERREVT1）を起動します。アプリケーション名の決定の処理手順を次の図に示します。

図2-56　アプリケーション名の決定の処理手順

2.3.12　コネクション再確立時の未送信メッセージの送信抑止

＜この項の構成＞

(1)　コネクション再確立時の未送信メッセージの送信抑止の概要

(2)　送信抑止ルール

(3)　入力元論理端末と同じ論理端末にメッセージ送受信関数を発行した場合

(4)　入力元論理端末と異なる論理端末でメッセージ送受信関数を発行した場合

(5)　SPPからメッセージ送受信関数を発行した場合

(6)　アプリケーションプログラムの起動によって起動されたMHPからメッセージ送受信関数を発行した場合

(7)　MCFイベント処理用MHPからメッセージ送受信関数を発行した場合

(8)　mcfuevtコマンドによって起動したMHPからメッセージ送受信関数を発行した場合

(1)　コネクション再確立時の未送信メッセージの送信抑止の概要

コネクション再確立時の未送信メッセージの送信抑止は，MHPからメッセージ送受信関数を発行したときに，TP1/NET/TCP/IPがコネクションの再確立の有無をチェックし，再確立前の古いコネクションで受信したメッセージに対する一方送信メッセージの送信や同期型の関数の発行を抑止する機能です。

この機能を使用すると，UAPや相手システムで不要なメッセージを削除する必要がなくなるため，TP1/NET/TCP/IPを使用したシステムの開発が容易になります。

一方送信メッセージの送信を抑止した場合，送受信メッセージ廃棄通知イベント（MDELEVT）を通知します。MDELEVTを通知するには，MCFアプリケーション定義でMDELEVTを定義しておく必要があります。

同期型の関数の発行を抑止した場合，MDELEVTは起動しません。

なお，応答メッセージについては，この機能の使用に関係なく，コネクションが再確立すると応答メッセージの送信が抑止されます。このとき，MDELEVTは起動しません。

注意

一方送信メッセージの送信を抑止した場合，TP1/NET/TCP/IPは相手システムにメッセージを送信したと見なしません。そのため，次の点に注意してください。

AJ（メッセージ送信完了ジャーナル）を取得する（論理端末定義（mcftalcle -o）のajオペランドを省略，またはyesを指定）場合，AJを取得しません。

コネクションの無通信状態を監視している場合（コネクション定義（mcftalccn -k）のnotrftimeオペランドに0以外の値を指定），状態監視の経過時間をリセットしません。

(2)　送信抑止ルール

この機能が有効となるか無効となるかは，メッセージ送受信関数を発行したUAPの種類，UAPの起動要因，入力元論理端末とメッセージ送受信関数を発行した論理端末の差異に依存します。各々の条件で機能が有効となるか無効となるかを次の表に示します。

表2-8　送信抑止の実行条件

UAPの種類 | UAPの起動要因 | 入力元論理端末と関数発行先論理端末の差異 | 送信の抑止
MHP | mcfuevtコマンド | － | ×
上記以外 | 同じ | ○
異なる | ×
SPP | － | － | ×

（凡例）

○：有効です（送信は抑止されます）。

×：無効です（送信は抑止されません）。

－：該当しません。

(3)　入力元論理端末と同じ論理端末にメッセージ送受信関数を発行した場合

(a)　一方送信メッセージの送信の場合

TP1/NET/TCP/IPが一方送信メッセージを受信してから，一方送信メッセージを受信したMHPで，入力元論理端末と同じ論理端末に一方送信メッセージを送信するまでの間に，コネクションの解放と再確立が発生した場合，TP1/NET/TCP/IPはメッセージを破棄し，MDELEVTを通知します。

入力元論理端末と同じ論理端末への一方送信メッセージの送信関数発行を，dc_mcf_send関数を使用する場合を例に，次の図に示します。

図2-57　入力元論理端末と同じ論理端末で一方送信メッセージの送信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）からメッセージを受信します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_send関数を発行して出力キューにメッセージを格納します。

論理端末の閉塞解除を契機に，出力キューからメッセージを読み出します。

TP1/NET/TCP/IPがコネクションの再確立を検出したため，出力キューのメッセージを破棄します。

MDELEVTを起動します。

(b)　同期型メッセージの送信または同期型メッセージの送受信の場合

TP1/NET/TCP/IPが一方送信メッセージを受信してから，一方送信メッセージを受信したMHPで，入力元論理端末と同じ論理端末に，同期型メッセージの送信関数または同期型メッセージの送受信関数を発行するまでの間に，コネクションの解放と再確立が発生した場合，発行した関数はリターン値DCMCFRTN_73002またはステータスコード73002でエラーリターンし，送信メッセージを破棄します。

入力元論理端末と同じ論理端末への同期型メッセージの送信関数または同期型メッセージの送受信関数発行を，dc_mcf_sendsync関数を使用する場合を例に，次の図に示します。

図2-58　入力元論理端末と同じ論理端末で同期型メッセージの送信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）からメッセージを受信します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_sendsync関数を発行して同期型メッセージを送信します。

TP1/NET/TCP/IPがコネクションの再確立を検出したため，メッセージを破棄してMHPにリターン値DCMCFRTN_73002でエラーリターンします。

(c)　同期型メッセージの受信の場合

TP1/NET/TCP/IPが一方送信メッセージを受信してから，一方送信メッセージを受信したMHPで，入力元論理端末と同じ論理端末に同期型メッセージの受信関数を発行するまでの間に，コネクションの解放と再確立が発生した場合，発行した関数はリターン値DCMCFRTN_73002またはステータスコード73002でエラーリターンします。

入力元論理端末と同じ論理端末への同期型メッセージの受信関数発行を，dc_mcf_recvsync関数を使用する場合を例に，次の図に示します。

図2-59　入力元論理端末と同じ論理端末で同期型メッセージの受信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）からメッセージを受信します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_recvsync関数を発行して同期型メッセージの受信を要求します。

TP1/NET/TCP/IPがコネクションの再確立を検出したため，MHPにリターン値DCMCFRTN_73002でエラーリターンします。

(4)　入力元論理端末と異なる論理端末でメッセージ送受信関数を発行した場合

TP1/NET/TCP/IPが一方送信メッセージを受信してから，一方送信メッセージを受信したMHPで，入力元論理端末と異なる論理端末にメッセージ送受信関数を発行した場合，TP1/NET/TCP/IPは相手システムとのコネクションが再確立したかどうかをチェックしません。

入力元論理端末と異なる論理端末へのメッセージ送受信関数発行を，dc_mcf_send関数を使用する場合を例に，次の図に示します。

図2-60　入力元論理端末と異なる論理端末でメッセージ送受信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）からメッセージを受信します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

相手システムB（コネクション名：CN_B）とコネクションを確立します。

dc_mcf_send関数を発行してCN_Bに対応する論理端末Bの出力キューにメッセージを格納します。

論理端末の閉塞解除を契機に出力キューからメッセージを読み出します。

入力元の論理端末と異なるため，コネクションが再確立したかどうかをチェックしないで，相手システムBにメッセージを送信します。

(5)　SPPからメッセージ送受信関数を発行した場合

SPPからメッセージ送受信関数を発行した場合，TP1/NET/TCP/IPはコネクションが再確立したかどうかをチェックしません。

SPPからのメッセージ送受信関数発行を，dc_mcf_send関数を使用する場合を例に次の図に示します。

図2-61　SPPからメッセージ送受信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）からメッセージを受信します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

dc_rpc_call関数を発行してSPPを起動します。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_send関数を発行して出力キューにメッセージを格納します。

論理端末の閉塞解除を契機に，出力キューからメッセージを読み出します。

メッセージ送受信関数を発行したUAPの種類がSPPのため，コネクションが再確立したかどうかをチェックしないで，相手システムBにメッセージを送信します。

(6)　アプリケーションプログラムの起動によって起動されたMHPからメッセージ送受信関数を発行した場合

TP1/NET/TCP/IPが一方送信メッセージを受信してから，一方送信メッセージを受信したMHPからアプリケーションプログラムの起動によって起動されたMHPで，入力元論理端末と同じ論理端末でメッセージ送受信関数を発行するまでの間に，コネクションの解放と再確立が発生した場合，一方送信メッセージを受信したMHPからメッセージ送受信関数を発行したときと同様に送信を抑止します。

アプリケーションプログラムの起動によって起動されたMHPからのメッセージ送受信関数発行を，dc_mcf_send関数を使用する場合を例に，次の図に示します。

図2-62　アプリケーションプログラムの起動によって起動されたMHPからメッセージ送受信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）からメッセージを受信します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

dc_mcf_execap関数を発行してMHPを起動します。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

dc_mcf_send関数を発行して出力キューにメッセージを格納します。

論理端末の閉塞解除を契機に，出力キューからメッセージを読み出します。

TP1/NET/TCP/IPがコネクションの再確立を検出したため，出力キューのメッセージを破棄します。

MDELEVTを起動します。

(7)　MCFイベント処理用MHPからメッセージ送受信関数を発行した場合

TP1/NET/TCP/IPでMCFイベントを起動するイベントが発生してから，MCFイベント処理用MHPで，イベントが発生した論理端末と同じ論理端末でメッセージ送受信関数を発行するまでの間に，コネクションの解放と再確立が発生した場合，一方送信メッセージを受信したMHPからメッセージ送受信関数を発行したときと同様に送信を抑止します。

MCFイベント処理用MHPからのメッセージ送受信関数発行を，COPNEVTおよびERREVT1からdc_mcf_send関数を使用する場合を例に，次の図に示します。

(a)　COPNEVTの場合

図2-63　COPNEVT処理用MHPからメッセージ送受信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）とコネクションを確立します。

COPNEVTを起動します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_send関数を発行して出力キューにメッセージを格納します。

論理端末の閉塞解除を契機に，出力キューからメッセージを読み出します。

TP1/NET/TCP/IPがコネクションの再確立を検出したため，出力キューのメッセージを破棄します。

MDELEVTを起動します。

(b)　ERREVT1の場合

図2-64　ERREVT1処理用MHPからメッセージ送受信関数を発行したときの処理の流れ

相手システムA（コネクション名：CN_A）からメッセージを受信し，アプリケーション名不正を検出します。

ERREVT1を起動します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_send関数を発行して出力キューにメッセージを格納します。

論理端末の閉塞解除を契機に，出力キューからメッセージを読み出します。

TP1/NET/TCP/IPがコネクションの再確立を検出したため，出力キューのメッセージを破棄します。

MDELEVTを起動します。

(8)　mcfuevtコマンドによって起動したMHPからメッセージ送受信関数を発行した場合

mcfuevtコマンドで起動されたMHPからメッセージ送受信関数を発行した場合，TP1/NET/TCP/IPは相手システムとのコネクションが再確立したかどうかをチェックしません。

mcfuevtコマンドで起動したMHPからのメッセージ送受信関数発行を，dc_mcf_send関数を使用する場合を例に，次の図に示します。

図2-65　mcfuevtコマンドより起動したMHPからメッセージ送受信関数を発行したときの処理の流れ

mcfuevtコマンドを入力してMHPを起動します。

dc_mcf_receive関数を発行してメッセージを受け取ります。

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

CN_Aが相手システムBとコネクションを再確立します。

dc_mcf_send関数を発行して出力キューにメッセージを格納します。

論理端末の閉塞解除を契機に，出力キューからメッセージを読み出します。

メッセージ送受信関数を発行したMHPがmcfuevtコマンドによって起動したため，コネクションが再確立したかどうかをチェックしないで，相手システムBにメッセージを送信します。

3.　C言語のライブラリ関数

この章では，TP1/NET/TCP/IPで使用できる，C言語のライブラリ関数について説明します。

＜この章の構成＞

C言語のライブラリ関数の一覧

dc_mcf_contend － 継続問い合わせ応答の終了（C言語）

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

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

dc_mcf_reply － 応答メッセージの送信（C言語）

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

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

dc_mcf_sendrecv － 同期型メッセージの送受信（C言語）

dc_mcf_sendsync － 同期型メッセージの送信（C言語）

dc_mcf_tactcn － コネクションの確立（C言語）

dc_mcf_tactle － 論理端末の閉塞解除（C言語）

dc_mcf_tdctcn － コネクションの解放（C言語）

dc_mcf_tdctle － 論理端末の閉塞（C言語）

dc_mcf_tempget － 一時記憶データの受け取り（C言語）

dc_mcf_tempput － 一時記憶データの更新（C言語）

dc_mcf_tlscn － コネクションの状態取得（C言語）

dc_mcf_tlsle － 論理端末の状態取得（C言語）

dc_mcf_tlsln － サーバ型コネクションの確立要求の受付状態取得（C言語）

dc_mcf_tofln － サーバ型コネクションの確立要求の受付終了（C言語）

dc_mcf_tonln － サーバ型コネクションの確立要求の受付開始（C言語）

C言語のライブラリ関数の一覧

TP1/NET/TCP/IPで使用するC言語のライブラリ関数の一覧について説明します。

C言語のライブラリ関数に対応する機能の一覧を次の表に示します。

表3-1　C言語のライブラリ関数に対応する機能の一覧

関数名 | 機能
dc_mcf_contend | 継続問い合わせ応答の終了
dc_mcf_receive | メッセージの受信
dc_mcf_recvsync | 同期型メッセージの受信
dc_mcf_reply | 応答メッセージの送信
dc_mcf_resend | メッセージの再送
dc_mcf_send | 一方送信メッセージの送信
dc_mcf_sendrecv | 同期型メッセージの送受信
dc_mcf_sendsync | 同期型メッセージの送信
dc_mcf_tactcn | コネクションの確立
dc_mcf_tactle | 論理端末の閉塞解除
dc_mcf_tdctcn | コネクションの解放
dc_mcf_tdctle | 論理端末の閉塞
dc_mcf_tempget | 一時記憶データの受け取り
dc_mcf_tempput | 一時記憶データの更新
dc_mcf_tlscn | コネクションの状態取得
dc_mcf_tlsle | 論理端末の状態取得
dc_mcf_tlsln | サーバ型コネクションの確立要求の受付状態取得
dc_mcf_tofln | サーバ型コネクションの確立要求の受付終了
dc_mcf_tonln | サーバ型コネクションの確立要求の受付開始

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

NULLまたはヌル文字列設定時のコーディング例

C言語のライブラリ関数の引数にNULLまたはヌル文字列を設定する場合のコーディング例を示します。

NULLを設定する場合

char *resv01=NULL;
dc_mcf_receive(…, resv01, …);

ヌル文字列を設定する場合

char resv01[1]="¥0";
dc_mcf_receive(…, resv01, …);

注

resv01以外のdc_mcf_receive関数の引数は省略しています。

dc_mcf_contend － 継続問い合わせ応答の終了（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int  dc_mcf_contend(DCLONG action, char *resv01)

　K&R版 Cの形式

　#include <dcmcf.h>
　int  dc_mcf_contend(action, resv01)
　DCLONG    action;
　char      *resv01;

機能

継続問い合わせ応答を終了します。

UAPで値を設定する引数

●action

DCNOFLAGSを設定します。

●resv01

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

リターン値

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

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

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

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

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

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

DCMCFRTN_72101
-13101
継続問い合わせ応答型でないアプリケーションで，dc_mcf_contend関数を呼び出しています。

DCMCFRTN_72107
-13107
dc_mcf_contend関数を2回以上呼び出しています。

DCMCFRTN_72111
-13111
次起動アプリケーションを設定してdc_mcf_reply関数を呼び出したあと，dc_mcf_contend関数を呼び出しています。

継続問い合わせ応答型のアプリケーション名を設定してdc_mcf_execap関数を呼び出したあと，dc_mcf_contend関数を呼び出しています。

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

（凡例）

－：該当しません。

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

形式

　ANSI C，C++の形式

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

　K&R版 Cの形式

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

機能

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

受信できるメッセージの一つのセグメントの最大長は，1メガバイトです。

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

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

MCFイベント

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

TP1/NET/TCP/IPを使用して通信する場合，相手システムから送信されるメッセージは，常に単一セグメントで構成されます。

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

UAPで値を設定する引数

●action

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

｛DCMCFFRST｜DCMCFSEG｝〔｜｛DCMCFBUF1｜DCMCFBUF2｝〕

DCMCFFRST

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

DCMCFSEG

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

DCMCFBUF1

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

DCMCFBUF2

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

●commform

DCNOFLAGSを設定します。

●termnam

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

処理終了後，termnamにはOpenTP1から値が返されます。

●resv01

NULLまたはヌル文字列を設定します。

●recvdata

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

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

処理終了後，recvdataにはOpenTP1から値が返されます。

●inbufleng

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

OpenTP1から値が返される引数

●termnam

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

中間セグメントまたは最終セグメントの受信する場合は，ここで返された論理端末名称をtermnamに設定します。

●recvdata

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

●rdataleng

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

●time

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

リターン値

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

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バイト以上の領域を確保してください。

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

（凡例）

－：該当しません。

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

形式

　ANSI C，C++の形式

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

　K&R版Cの形式

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

機能

相手システムから同期型でメッセージを受信します。相手システムから送信されるメッセージは，常に一つのセグメントで構成されます。

受信できるメッセージの一つのセグメントの最大長は，1メガバイトです。

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

UAPで値を設定する引数

●action

受信する論理メッセージのセグメントと，使用するバッファ形式を次の形式で指定します。

DCMCFFRST〔|｛DCMCFBUF1|DCMCFBUF2｝〕

DCMCFFRST

単一セグメントを示すDCMCFFRSTを設定します。

DCMCFBUF1

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

DCMCFBUF2

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

●commform

DCNOFLAGSを設定します。

●termnam

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

●resv01

NULLまたはヌル文字列を設定します。

●recvdata

セグメントを受信する領域を設定します。dc_mcf_recvsync関数が終了すると，受信したセグメントが返されます。

処理終了後，recvdataにはOpenTP1から値が返ります。

●inbufleng

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

●watchtime

dc_mcf_recvsync関数を呼び出してから終了するまでの最大時間を設定します。0を設定した場合，MCFマネジャ定義のUAP共通定義で指定した同期型受信監視時間（mcfmuap -t recvtim）が設定されます。

負の値を設定した場合は，時間を監視しません。

OpenTP1から値が返される引数

●recvdata

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

●rdataleng

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

●time

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

リターン値

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

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
先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，dc_mcf_recvsync関数を呼び出しています。

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

termnamに設定した入力元の論理端末名称は，MCFで定義していません。

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

＜問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合＞
問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

DCMCFRTN_72012
-13012
MCFバッファグループ定義のバッファ長が不足しました。

MCF通信プロセスは相手システムからメッセージを受信しましたが，UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。

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

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

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

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

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

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

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

DCMCFRTN_73001
-14001
watchtimeに60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

前回の通信から無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

入力元の論理端末でMCF通信プロセスの内部障害が発生しました。

DCMCFRTN_73002
-14002
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，受信を取り消しました。

DCMCFRTN_73005
-14005
watchtimeに設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

DCMCFRTN_73015
-14015
指定した論理端末は，ほかのUAPで仕掛り中です。

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

DCMCFRTN_73020
-14020
入力元の論理端末は停止しています。

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

（凡例）

－：該当しません。

dc_mcf_reply － 応答メッセージの送信（C言語）

形式

　ANSI C，C++の形式

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

　K&R版 Cの形式

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

機能

メッセージを入力した論理端末に対して応答メッセージを送信します。応答メッセージは，一つのセグメントで構成されます。

送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

UAPで値を設定する引数

●action

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

DCMCFEMI〔｜｛DCMCFSEQ｜DCMCFNSEQ｝〕〔｜｛DCMCFBUF1｜DCMCFBUF2｝〕

DCMCFEMI

単一セグメントを示すDCMCFEMIを設定します。

DCMCFSEQ

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

DCMCFNSEQ

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

DCMCFBUF1

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

DCMCFBUF2

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

●commform

DCNOFLAGSを設定します。

●resv01

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

●resv02

NULLまたはヌル文字列を設定します。

●senddata

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

●sdataleng

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

●nextap

＜継続問い合わせ応答形態の場合＞

次起動アプリケーションをヌル文字を含め最大9文字で設定します。

ヌル文字列を設定した場合，実行中のアプリケーションを次のメッセージ受信時に再び起動します。

dc_mcf_reply関数を発行するサービスでdc_mcf_contend関数を呼び出す場合，nextapにはヌル文字列を設定してください。

継続問い合わせ応答を引き継いだエラーイベントで，dc_mcf_reply関数を発行する際に，nextapにヌル文字列を設定した場合，継続問い合わせ応答を終了します。ただし，継続問い合わせ応答を引き継いだエラーイベントで，dc_mcf_execap関数を発行して継続問い合わせ応答型のアプリケーションを起動し，起動先のアプリケーションでdc_mcf_reply関数を発行する際に，nextapにヌル文字列を設定した場合，継続問い合わせ応答を終了しないで，dc_mcf_execap関数を発行したときに設定した継続問い合わせ応答型のアプリケーションを次のメッセージ受信時に再び起動します。

＜継続問い合わせ応答形態以外の場合＞

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

●opcd

DCNOFLAGSを設定します。

リターン値

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

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_reply関数を呼び出しています。

非応答型のアプリケーションからの問い合わせ応答をしない（UAP共通定義（mcfmuap -c）のnoansreplyオペランドを省略，またはnoを指定）場合に，非応答型のアプリケーションからdc_mcf_reply関数を呼び出しています。

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

DCMCFRTN_72001
-13001
入力元論理端末は，応答メッセージの送信をサポートしていません。

入力元論理端末は，問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用していません（コネクション定義（mcftalccn -l）のreplymsgオペランドを省略，またはnoを指定）。

DCMCFRTN_72008
-13008
応答型のアプリケーションからdc_mcf_execap関数を呼び出して応答型のアプリケーションを起動したあとで，dc_mcf_reply関数を呼び出しています。

継続問い合わせ応答型のアプリケーションからdc_mcf_execap関数を呼び出して継続問い合わせ応答型のアプリケーションを起動したあとで，dc_mcf_reply関数を呼び出しています。

DCMCFRTN_72011
-13011
継続問い合わせ応答型でないアプリケーションが，次起動アプリケーションを設定して，dc_mcf_reply関数を呼び出しています。

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

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

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

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

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

DCMCFRTN_72041
-13041
sdatalengに0バイト，またはマイナス値を設定しています。

DCMCFRTN_72044
-13044
dc_mcf_contend関数を呼び出したあとで，次起動アプリケーションを設定してdc_mcf_reply関数を呼び出しています。

DCMCFRTN_72045
-13045
nextapに，継続問い合わせ応答型でないアプリケーションのアプリケーション名を設定してdc_mcf_reply関数を呼び出しています。

DCMCFRTN_72046
-13046
nextapに設定したアプリケーション名が異なるdc_mcf_reply関数を，2回以上呼び出しています。

DCMCFRTN_72047
-13047
nextapに，アプリケーション属性定義（mcfaalcap）に定義されていないアプリケーション名を設定してdc_mcf_reply関数を呼び出しています。

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

（凡例）

－：該当しません。

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

形式

　ANSI C，C++の形式

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

　K&R版 Cの形式

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

機能

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

出力先の論理端末名称

メッセージ出力通番

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

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

UAPで値を設定する引数

●action

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

｛DCMCFSEQ｜DCMCFNSEQ｝〔｜｛DCMCFNORM｜DCMCFPRIO｝〕〔｜DCMCFLAST〕

DCMCFSEQ

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

DCMCFNSEQ

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

DCMCFNORM

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

DCMCFPRIO

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

DCMCFLAST

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

●commform

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

●rtermnam

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

●resv01

NULLを設定します。

●oseqid

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

DCMCFRID_NORM

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

DCMCFRID_PRIO

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

省略した場合は，DCMCFRID_NORM（一般の一方送信メッセージを対象）が設定されます。

●orgseq

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

●otermnam

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

●resv02，resv03，resv04

NULLを設定します。

●opcd

DCNOFLAGSを設定します。

リターン値

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

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

DCMCFRTN_NOMSG
-11904
出力通番使用論理端末数（MCFマネジャ共通定義（mcfmcomn）の-nオプション）を省略，または0を指定しています。

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

再送するメッセージは次に示す理由によって，再送できるメッセージの条件を満たしていません。

再送対象とするメッセージの送信時に出力通番を付けていません。

送信メッセージの割り当て先にメモリキューを使用しています（論理端末定義（mcftalcle -l）のquekindオペランドを省略，またはmemoryを指定）。

論理端末が閉塞しているなどの要因によって，送信メッセージが送信済みになっていません。

送信済みのメッセージがディスクキューに保持されていません（保持メッセージ数は，メッセージキューサービス定義のquegrpコマンドの-mオプションで指定します）。

otermnamで指定した論理端末に割り当てられているメッセージキューは，システム開始時に障害が発生したため，メモリキューを代用して縮退運転をしています。

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）の値が間違っています。

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

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

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

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

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

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

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

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

（凡例）

－：該当しません。

注意事項

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

-eオプション

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

-lオプション

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

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

形式

　ANSI C，C++の形式

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

　K&R版 Cの形式

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

機能

相手システムへ一方送信メッセージを送信します。一方送信メッセージは，一つのセグメントで構成されます。

送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

UAPで値を設定する引数

●action

単一セグメントを送信すること，優先か一般か，出力通番を付けるかどうか，使用するバッファ形式，および送信完了通知イベントを通知させるかどうかを，次の形式で設定します。

DCMCFEMI〔｜｛DCMCFNORM｜DCMCFPRIO｝〕
〔｜｛DCMCFSEQ｜DCMCFNSEQ｝〕〔｜｛DCMCFBUF1｜DCMCFBUF2｝〕
〔｜DCMCFSEVT〕

DCMCFEMI

単一セグメントを示すDCMCFEMIを設定します。

DCMCFNORM

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

DCMCFPRIO

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

DCMCFSEQ

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

DCMCFNSEQ

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

DCMCFBUF1

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

DCMCFBUF2

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

DCMCFSEVT

送信完了通知イベントを通知させるときに設定します。ただし，送信完了通知イベント処理用のMHPをMCFアプリケーション定義で指定していない場合は無効です。

●commform

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

●termnam

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

●resv01

NULLまたはヌル文字列を設定します。

●senddata

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

●sdataleng

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

●resv02

NULLまたはヌル文字列を設定します。

●opcd

DCNOFLAGSを設定します。

リターン値

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

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
dc_mcf_send関数を呼び出せない論理端末を設定しています。

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

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

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

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

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

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

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

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

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

DCMCFRTN_72041
-13041
sdatalengに0バイト，またはマイナス値を設定しています。

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

（凡例）

－：該当しません。

dc_mcf_sendrecv － 同期型メッセージの送受信（C言語）

形式

　ANSI C，C++の形式

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

　K&R版 Cの形式

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

機能

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

dc_mcf_sendrecv関数では，相手システムへ送るメッセージのセグメントを送信できます。

メッセージのセグメントを送信すると，dc_mcf_sendrecv関数は相手システムからの応答を待ちます。応答が届くと，そのメッセージのセグメントを受信します。

受信できるメッセージの一つのセグメントの最大長は，1メガバイトです。また，送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

UAPで値を設定する引数

●action

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

DCMCFEMI〔｜｛DCMCFBUF1｜DCMCFBUF2｝〕

DCMCFEMI

単一セグメントを示すDCMCFEMIを設定します。

DCMCFBUF1

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

DCMCFBUF2

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

●commform

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

●termnam

メッセージを出力して応答を入力する論理端末名称を設定します。論理端末名称は最大8バイトの長さです。論理端末名称の最後にはヌル文字を付けてください。

●resv01

NULLまたはヌル文字列を設定します。

●senddata

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

●sdataleng

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

●recvdata

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

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

処理終了後，recvdataにはOpenTP1から値が返されます。

●inbufleng

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

●watchtime

dc_mcf_sendrecv関数を呼び出してから終了するまでの最大時間を設定します。0を設定した場合，MCFマネジャ定義のUAP共通定義で指定した同期型送受信監視時間（mcfmuap -t sndrcvtim）が設定されます。

負の値を設定した場合は，時間を監視しません。

OpenTP1から値が返される引数

●recvdata

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

●rdataleng

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

●time

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

リターン値

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

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

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

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

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

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

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

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

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

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

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

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

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

termnamに設定した出力先の論理端末名称は，MCFで定義していません。

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

＜問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合＞
問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

DCMCFRTN_72012
-13012
MCFバッファグループ定義のバッファ長が不足しました。

MCF通信プロセスは相手システムからメッセージを受信しましたが，UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。

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
sdatalengに0バイト，またはマイナス値を設定しています。

DCMCFRTN_72073
-13073
非同期メッセージを送信処理中です。

DCMCFRTN_73001
-14001
watchtimeに60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

メッセージの送信処理中に相手システムからメッセージを受信したため，非同期受信処理を行いましたが，障害（UOC障害など）が発生しました。

出力先の論理端末でMCF通信プロセスの内部障害が発生しました。

DCMCFRTN_73002
-14002
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，送信を抑止しました。

DCMCFRTN_73003
-14003
メッセージ受信が仕掛り中です。

DCMCFRTN_73005
-14005
watchtimeに設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

メッセージの編集エラーが発生しました。

DCMCFRTN_73015
-14015
出力先の論理端末は，ほかのUAPで仕掛り中です。

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

DCMCFTRN_73019
-14019
メッセージ送信完了監視タイマのタイムアウトが発生しました。

DCMCFRTN_73020
-14020
出力先の論理端末は停止しています。

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

（凡例）

－：該当しません。

dc_mcf_sendsync － 同期型メッセージの送信（C言語）

形式

　ANSI C，C++の形式

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

　K&R版 Cの形式

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

機能

相手システムへ同期型でメッセージを送信します。メッセージは，一つのセグメントで構成されます。

送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

UAPで値を設定する引数

●action

送信する論理メッセージのセグメントと，使用するバッファ形式を次の形式で指定します。

DCMCFEMI〔｜｛DCMCFBUF1｜DCMCFBUF2｝〕

DCMCFEMI

単一セグメントを示すDCMCFEMIを設定します。

DCMCFBUF1

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

DCMCFBUF2

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

●commform

DCNOFLAGSを設定します。

●termnam

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

●resv01

NULLまたはヌル文字列を設定します。

●senddata

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

●sdataleng

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

●resv02

NULLまたはヌル文字列を設定します。

●opcd

DCNOFLAGSを設定します。

●watchtime

dc_mcf_sendsync関数を呼び出してから終了するまでの最大時間を設定します。0を設定した場合，MCFマネジャ定義のUAP共通定義で指定した同期型送信監視時間（mcfmuap -t sndtim）が仮定されます。

負の値を設定した場合は，時間を監視しません。

リターン値

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

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

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

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

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

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

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

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

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

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

termnamに設定した出力先の論理端末名称は，MCFで定義していません。

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

＜問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合＞
問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

DCMCFRTN_72016
-13016
actionに設定できない値を設定しています。

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

resv01，resv02の指す領域の値がNULLになっていません。

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

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

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

DCMCFRTN_72041
-13041
sdatalengに0バイト，またはマイナス値を設定しています。

DCMCFRTN_72073
-13073
非同期メッセージを送信処理中です。

DCMCFRTN_73001
-14001
watchtimeに60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

メッセージの送信処理中に相手システムからメッセージを受信したため，非同期受信処理を行いましたが，障害（UOC障害など）が発生しました。

出力先の論理端末でMCF通信プロセスの内部障害が発生しました。

DCMCFRTN_73002
-14002
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，送信を抑止しました。

DCMCFRTN_73005
-14005
watchtimeに設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

DCMCFRTN_73015
-14015
出力先の論理端末は，ほかのUAPで仕掛り中です。

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

DCMCFRTN_73020
-14020
出力先の論理端末は停止しています。

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

（凡例）

－：該当しません。

dc_mcf_tactcn － コネクションの確立（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tactcn (DCLONG action, dcmcf_tactcnopt *cnopt,
                    char *proinf, DCLONG *resv02, char *resv03,
                    char *resv04)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tactcn (action, cnopt, proinf, resv02, resv03, resv04)
　DCLONG             action;
　dcmcf_tactcnopt    *cnopt;
　char               *proinf;
　DCLONG             *resv02;
　char               *resv03;
　char               *resv04;

機能

コネクションを確立します。

なお，dc_mcf_tactcn関数の正常終了は，コネクション確立要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，相手システムとのコネクションの確立が正常に完了したことを示すものではありません。

dc_mcf_tactcn関数の呼び出し後にコネクションに関する何らかの処理をする場合は，dc_mcf_tlscn関数を用いてコネクションの状態を確認してください。

UAPで値を設定する引数

●action

確立するコネクションの指定方法を次の形式で設定します。

｛DCMCFLE｜DCMCFCN｝〔｜DCMCFPRO〕

DCMCFLE

確立するコネクションを論理端末名称で指定するときに設定します。

DCMCFCN

確立するコネクションをコネクションIDで指定するときに設定します。

DCMCFPRO

TP1/NET/TCP/IP固有の機能を使用するときに設定します。

●cnopt

この関数の対象となったコネクションの情報を，構造体dcmcf_tactcnoptに設定します。

構造体の形式を次に示します。

typedef struct {
               DCLONG        mcfid;          …MCF通信プロセス識別子
               char          resv01[4];      …予備領域
               char          idnam[9];       …論理端末名称，
                                               コネクションID
               char          resv02[7];      …予備領域
               char          resv03[112];    …予備領域
               char          scnnam[9];      …MCF使用領域
               char          resv04[7];      …予備領域
               char          yournam[9];     …MCF使用領域
               char          resv05[7];      …予備領域
               char          hostnam[143];   …MCF使用領域
               char          resv06[17];     …予備領域
               char          resv07[184];    …予備領域
               } dcmcf_tactcnopt;

mcfid
処理対象のコネクションを持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。
論理端末名称を使用してコネクションの状態取得を要求する場合は，無効となります。
0を指定すると，該当するコネクションIDが属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの関数を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

resv01
領域をヌル文字で埋めます。

idnam
確立するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは最大8バイトの長さです。論理端末名称の最後にはヌル文字を付けてください。

resv02，resv03，scnnam，resv04，yournam，resv05，hostnam，resv06，resv07
領域をヌル文字で埋めます。

●proinf

プロトコル固有領域として，構造体dcmtcp_tactcnを設定します。

TP1/NET/TCP/IP固有の機能を使用しない場合は，NULLを設定します。

プロトコル固有領域の形式を次に示します。

構造体の形式を次に示します。

typedef struct {
               char              pnam[4];         …プロトコルの名称
               char              resv01[4];       …予備領域
               DCULONG           i_ipaddr;        …自システムの
                                                    IPアドレス
               unsigned short    i_portno;        …自システムの
                                                    ポート番号
               char              resv02[2];       …予備領域
               DCULONG           o_ipaddr;        …相手システムの
                                                    IPアドレス
               unsigned short    o_portno;        …相手システムの
                                                    ポート番号
               char              resv03[2];       …予備領域
               char              i_pathname[128]; …予備領域
               char              o_pathname[128]; …予備領域
               char              resv04[744];     …予備領域
               } dcmtcp_tactcn;

pnam
プロトコル固有領域のプロトコル名称を設定します。

"TCP△"

TCP/IPプロトコル

resv01
領域をヌル文字で埋めます。

i_ipaddr
自システムのIPアドレスを16進形式（ビッグエンディアン）で設定します。

dotted-decimal形式では指定できません。
自システムのIPアドレスの割り当てをOSに任せる場合は，0を設定してください。
IPアドレス255.255.255.255は設定できません。

i_portno
自システムのポート番号を16進形式（ビッグエンディアン）で設定します。

設定できる範囲は0，または1024～65535です。
自システムのポート番号の割り当てをOSに任せる場合は，0を設定してください。

resv02
領域をヌル文字で埋めます。

o_ipaddr
相手システムのIPアドレスを16進形式（ビッグエンディアン）で設定します。
dotted-decimal形式では指定できません。
IPアドレス0.0.0.0，および255.255.255.255は設定できません。

o_portno
相手システムのポート番号を16進形式（ビッグエンディアン）で設定します。
設定できる範囲は1～65535です。

resv03，i_pathname，o_pathname，resv04
領域をヌル文字で埋めます。

●resv02，resv03，resv04

NULLを設定します。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tactcn関数が受け付けられません。

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

DCMCFRTN_71004
-12004
dc_mcf_tactcn関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71007
-12007
指定されたコネクション名は登録されていません。

DCMCFRTN_71008
-12008
指定された論理端末名称は登録されていません。

DCMCFRTN_71009
-12009
dc_mcf_tactcn関数が，該当するMCF通信プロセスではサポートされていません。

DCMCFRTN_71010
-12010
MCF通信プロセスにコネクションの確立を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71011
-12011
コネクションが削除されているため，dc_mcf_tactcn関数が受け付けられません。

DCMCFRTN_72050
-13050
actionに未サポートのフラグを設定しています。

DCMCFRTN_72051
-13051
cnoptにNULLが設定されています。

DCMCFRTN_72052
-13052
＜actionにDCMCFPROを設定していない場合＞
proinfにNULLが設定されていません。

＜actionにDCMCFPROを設定した場合＞
proinfが示すプロトコル固有領域長Lに0未満，または1025以上の値を設定しています。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72054
-13054
resv03にNULLが設定されていません。

DCMCFRTN_72055
-13055
resv04にNULLが設定されていません。

DCMCFRTN_72060
-13060
actionにはDCMCFLEとDCMCFCNを同時に設定できません。

DCMCFRTN_72061
-13061
dcmcf_tactcnoptのmcfidに0未満または240以上の値が設定されています。

DCMCFRTN_72062
-13062
dcmcf_tactcnoptのresv01がヌル文字で埋められていません。

DCMCFRTN_72063
-13063
dcmcf_tactcnoptのidnamの先頭がヌル文字です。

DCMCFRTN_72064
-13064
dcmcf_tactcnoptのresv02がヌル文字で埋められていません。

DCMCFRTN_72065
-13065
dcmcf_tactcnoptのresv03がヌル文字で埋められていません。

DCMCFRTN_72066
-13066
dcmcf_tactcnoptのscnnamがヌル文字で埋められていません。

DCMCFRTN_72067
-13067
dcmcf_tactcnoptのresv04がヌル文字で埋められていません。

DCMCFRTN_72068
-13068
dcmcf_tactcnoptのyournamがヌル文字で埋められていません。

DCMCFRTN_72069
-13069
dcmcf_tactcnoptのresv05がヌル文字で埋められていません。

DCMCFRTN_72070
-13070
dcmcf_tactcnoptのhostnamがヌル文字で埋められていません。

DCMCFRTN_72071
-13071
dcmcf_tactcnoptのresv06がヌル文字で埋められていません。

DCMCFRTN_72072
-13072
dcmcf_tactcnoptのresv07がヌル文字で埋められていません。

DCMCFRTN_72073
-13073
dcmcf_tactcnoptのidnamに9以上の文字が設定されています。

DCMCFRTN_72074
-13074
dcmcf_tactcnoptのidnamに設定された文字列中に不正な文字があります。

DCMCFRTN_73100
-14100
コネクションが確立済みのため受け付けられません。

DCMCFRTN_73101
-14101
コネクションが確立処理中のため受け付けられません。

DCMCFRTN_73102
-14102
コネクションに対する論理端末が接続されていないため受け付けられません。

DCMCFRTN_73103
-14103
サーバ型コネクションのため受け付けられません。

DCMCFRTN_73104
-14104
コネクションが解放処理中のため受け付けられません。

DCMCFRTN_73130
-14130
プロトコル固有領域長Lに設定した値が不足しています。

DCMCFRTN_73131
-14131
dcmtcp_tactcnのpnamの値が間違っています。

DCMCFRTN_73132
-14132
dcmtcp_tactcnのresv01がヌル文字で埋められていません。

DCMCFRTN_73133
-14133
dcmtcp_tactcnのi_ipaddrに255.255.255.255のIPアドレスが設定されています。

DCMCFRTN_73134
-14134
dcmtcp_tactcnのi_portnoに1以上1023以下の値が設定されています。

DCMCFRTN_73135
-14135
dcmtcp_tactcnのresv02がヌル文字で埋められていません。

DCMCFRTN_73136
-14136
dcmtcp_tactcnのo_ipaddrに0.0.0.0，または255.255.255.255のIPアドレスが設定されています。

DCMCFRTN_73137
-14137
dcmtcp_tactcnのo_portnoに0が設定されています。

DCMCFRTN_73138
-14138
dcmtcp_tactcnのresv03がヌル文字で埋められていません。

DCMCFRTN_73139
-14139
dcmtcp_tactcnのi_pathnameがヌル文字で埋められていません。

DCMCFRTN_73140
-14140
dcmtcp_tactcnのo_pathnameがヌル文字で埋められていません。

DCMCFRTN_73141
-14141
dcmtcp_tactcnのresv04がヌル文字で埋められていません。

dc_mcf_tactle － 論理端末の閉塞解除（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tactle (DCLONG action, dcmcf_tactleopt *leopt,
                    char *proinf, DCLONG *resv02,
                    char *resv03, char *resv04)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tactle (action, leopt, proinf, resv02, resv03, resv04)
　DCLONG             action;
　dcmcf_tactleopt    *leopt;
　char               *proinf;
　DCLONG             *resv02;
　char               *resv03;
　char               *resv04;

機能

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

なお，dc_mcf_tactle関数の正常終了は，論理端末の閉塞解除要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，論理端末の閉塞解除が正常に完了したことを示すものではありません。

dc_mcf_tactle関数の呼び出し後に論理端末に関する何らかの処理をする場合は，dc_mcf_tlsle関数を用いて論理端末の状態を確認してください。

UAPで値を設定する引数

●action

閉塞解除する論理端末の指定方法を次の形式で設定します。

DCMCFLE

DCMCFLE

閉塞解除する論理端末を論理端末名称で指定するときに設定します。

●leopt

この関数の対象となった論理端末の情報を，構造体dcmcf_tactleoptに設定します。

構造体の形式を次に示します。

typedef struct {
               DCLONG    mcfid;          …MCF通信プロセス識別子
               char      resv01[4];      …予備領域
               char      idnam[9];       …論理端末名称
               char      resv02[7];      …予備領域
               char      resv03[112];    …予備領域
               char      resv04[376];    …予備領域
               } dcmcf_tactleopt;

mcfid
処理対象の論理端末を持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。
0を指定すると，該当する論理端末名称が属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの関数を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

resv01
領域をヌル文字で埋めます。

idnam
閉塞解除する論理端末の名称を設定します。論理端末名称は8バイト以内で設定し，文字列の最後にヌル文字を付けます。

resv02，resv03，resv04
領域をヌル文字で埋めます。

●proinf，resv02，resv03，resv04

NULLを設定します。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tactle関数が受け付けられません。

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

DCMCFRTN_71004
-12004
dc_mcf_tactle関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71008
-12008
指定された論理端末名称は登録されていません。

DCMCFRTN_71009
-12009
dc_mcf_tactle関数が，該当するMCF通信プロセスではサポートされていません。または，サポートしていないDCMCFPROを指定しています。

DCMCFRTN_71010
-12010
MCF通信プロセスに論理端末の閉塞の解除を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71011
-12011
論理端末が削除されているため，dc_mcf_tactle関数が受け付けられません。

DCMCFRTN_72050
-13050
actionに未サポートのフラグを設定しています。

actionにDCMCFLEが指定されていません。

DCMCFRTN_72051
-13051
leoptにNULLが設定されています。

DCMCFRTN_72052
-13052
proinfにNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72054
-13054
resv03にNULLが設定されていません。

DCMCFRTN_72055
-13055
resv04にNULLが設定されていません。

DCMCFRTN_72061
-13061
dcmcf_tactleoptのmcfidに0未満または240以上の値が設定されています。

DCMCFRTN_72062
-13062
dcmcf_tactleoptのresv01がヌル文字で埋められていません。

DCMCFRTN_72063
-13063
dcmcf_tactleoptのidnamの先頭がヌル文字です。

DCMCFRTN_72064
-13064
dcmcf_tactleoptのresv02がヌル文字で埋められていません。

DCMCFRTN_72065
-13065
dcmcf_tactleoptのresv03がヌル文字で埋められていません。

DCMCFRTN_72067
-13067
dcmcf_tactleoptのresv04がヌル文字で埋められていません。

DCMCFRTN_72073
-13073
dcmcf_tactleoptのidnamに設定された文字数が9以上です。

DCMCFRTN_72074
-13074
dcmcf_tactleoptのidnamに設定された文字列中に不正な文字があります。

dc_mcf_tdctcn － コネクションの解放（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tdctcn (DCLONG action, dcmcf_tdctcnopt *cnopt,
                    char *proinf, DCLONG *resv02, char *resv03,
                    char *resv04)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tdctcn (action, cnopt, proinf, resv02, resv03, resv04)
　DCLONG               action;
　dcmcf_tdctcnopt      *cnopt;
　char                 *proinf;
　DCLONG               *resv02;
　char                 *resv03;
　char                 *resv04;

機能

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

なお，dc_mcf_tdctcn関数の正常終了は，コネクション解放要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，相手システムとのコネクションの解放が正常に完了したことを示すものではありません。

dc_mcf_tdctcn関数の呼び出し後にコネクションに関する何らかの処理をする場合は，dc_mcf_tlscn関数を用いてコネクションの状態を確認してください。

コネクション解放後，CCLSEVTまたはCERREVTを通知します。コネクション解放後に通知するMCFイベントを次の表に示します。

action引数のDCMCFFRC指定 | コネクション定義（mcftalccn -f）のcnreleaseオペランドの指定値 | 通知するMCFイベント
なし | 任意 | CCLSEVT
あり | fin | CCLSEVT
rst | CERREVT

UAPで値を設定する引数

●action

解放するコネクションの指定方法を次の形式で設定します。

｛DCMCFLE｜DCMCFCN｝〔｜DCMCFFRC〕

DCMCFLE

解放するコネクションを論理端末名称で指定するときに設定します。

DCMCFCN

解放するコネクションをコネクションIDで指定するときに設定します。

DCMCFFRC

コネクションを強制的に解放するときに設定します。

コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定している場合，RSTパケットを送信してコネクションを強制解放します。

コネクション定義（mcftalccn -f）のcnreleaseオペランドを省略，またはfinを指定している場合，指定しても無効となり，FINパケットを送信してコネクションを正常に解放します。

●cnopt

この関数の対象となったコネクションの情報を，構造体dcmcf_tdctcnoptに設定します。

構造体の形式を次に示します。

typedef struct {
               DCLONG    mcfid;          …MCF通信プロセス識別子
               char      resv01[4];      …予備領域
               char      idnam[9];       …論理端末名称，
                                           コネクションID
               char      resv02[7];      …予備領域
               char      resv03[112];    …予備領域
               char      scnnam[9];      …MCF使用領域
               char      resv04[7];      …予備領域
               char      resv05[360];    …予備領域
               } dcmcf_tdctcnopt;

mcfid
処理対象のコネクションを持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。
論理端末名称を使用してコネクションの解放を要求する場合は，無効となります。
0を指定すると，該当するコネクションIDが属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの関数を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

resv01
領域をヌル文字で埋めます。

idnam
解放するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは8バイト以内で設定し，文字列の最後にヌル文字を付けます。

resv02，resv03，scnnam，resv04，resv05
領域をヌル文字で埋めます。

●proinf，resv02，resv03，resv04

NULLを設定します。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tdctcn関数が受け付けられません。

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

DCMCFRTN_71004
-12004
dc_mcf_tdctcn関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71007
-12007
指定されたコネクション名は登録されていません。

DCMCFRTN_71008
-12008
指定された論理端末名称は登録されていません。

DCMCFRTN_71009
-12009
dc_mcf_tdctcn関数が，該当するMCF通信プロセスではサポートされていません。または，サポートしていないDCMCFPROを指定しています。

DCMCFRTN_71010
-12010
MCF通信プロセスにコネクションの解放を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71011
-12011
コネクションが削除されているため，dc_mcf_tdctcn関数が受け付けられません。

DCMCFRTN_71014
-12014
TP1/NET/NCSB，またはTP1/NET/X25-Extendedの論理端末名称を指定しています。またはTP1/NET/OSI-TPのコネクショングループ名を指定しています。

DCMCFRTN_72050
-13050
actionに未サポートのフラグを設定しています。

DCMCFRTN_72051
-13051
cnoptにNULLが設定されています。

DCMCFRTN_72052
-13052
proinfにNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72054
-13054
resv03にNULLが設定されていません。

DCMCFRTN_72055
-13055
resv04にNULLが設定されていません。

DCMCFRTN_72060
-13060
actionにはDCMCFLEとDCMCFCNを同時に設定できません。

DCMCFRTN_72061
-13061
dcmcf_tdctcnoptのmcfidに0未満または240以上の値が設定されています。

DCMCFRTN_72062
-13062
dcmcf_tdctcnoptのresv01がヌル文字で埋められていません。

DCMCFRTN_72063
-13063
dcmcf_tdctcnoptのidnamの先頭がヌル文字です。

DCMCFRTN_72064
-13064
dcmcf_tdctcnoptのresv02がヌル文字で埋められていません。

DCMCFRTN_72065
-13065
dcmcf_tdctcnoptのresv03がヌル文字で埋められていません。

DCMCFRTN_72066
-13066
dcmcf_tdctcnoptのscnnamがヌル文字で埋められていません。

DCMCFRTN_72067
-13067
dcmcf_tdctcnoptのresv04がヌル文字で埋められていません。

DCMCFRTN_72069
-13069
dcmcf_tdctcnoptのresv05がヌル文字で埋められていません。

DCMCFRTN_72073
-13073
dcmcf_tdctcnoptのidnamに設定された文字数が9以上です。

DCMCFRTN_72074
-13074
dcmcf_tdctcnoptのidnamに設定された文字列中に不正な文字があります。

dc_mcf_tdctle － 論理端末の閉塞（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tdctle (DCLONG action, dcmcf_tdctleopt *leopt,
                    char *proinf, DCLONG *resv02,
                    char *resv03, char *resv04)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tdctle (action, leopt, proinf, resv02, resv03, resv04)
　DCLONG             action;
　dcmcf_tdctleopt    *leopt;
　char               *proinf;
　DCLONG             *resv02;
　char               *resv03;
　char               *resv04;

機能

論理端末を閉塞します。

なお，dc_mcf_tdctle関数の正常終了は，論理端末の閉塞要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，論理端末の閉塞が正常に完了したことを示すものではありません。

dc_mcf_tdctle関数の呼び出し後に論理端末に関する何らかの処理をする場合は，dc_mcf_tlsle関数を用いて論理端末の状態を確認してください。

UAPで値を設定する引数

●action

閉塞する論理端末の指定方法を次の形式で設定します。

DCMCFLE

DCMCFLE

閉塞する論理端末を論理端末名称で指定するときに設定します。

●leopt

この関数の対象となったコネクションの情報を，構造体dcmcf_tdctleoptに設定します。

構造体の形式を次に示します。

typedef struct {
               DCLONG    mcfid;         …MCF通信プロセス識別子
               char      resv01[4];     …予備領域
               char      idnam[9];      …論理端末名称
               char      resv02[7];     …予備領域
               char      resv03[112];   …予備領域
               char      resv04[376];   …予備領域
               } dcmcf_tdctleopt;

mcfid
処理対象の論理端末を持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。
0を指定すると，該当する論理端末名称が属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの関数を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

resv01
領域をヌル文字で埋めます。

idnam
閉塞する論理端末の名称を設定します。論理端末名称は8バイト以内で設定し，文字列の最後にヌル文字を付けます。

resv02，resv03，resv04
領域をヌル文字で埋めます。

●proinf，resv02，resv03，resv04

NULLを設定します。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tdctle関数が受け付けられません。

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

DCMCFRTN_71004
-12004
dc_mcf_tdctle関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71008
-12008
指定された論理端末名称は登録されていません。

DCMCFRTN_71009
-12009
dc_mcf_tdctle関数が，該当するMCF通信プロセスではサポートされていません。または，サポートしていないDCMCFPROを指定しています。

DCMCFRTN_71010
-12010
MCF通信プロセスに論理端末の閉塞を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71011
-12011
論理端末が削除されているため，dc_mcf_tdctle関数が受け付けられません。

DCMCFRTN_72050
-13050
actionに未サポートのフラグを設定しています。

actionにDCMCFLEが指定されていません。

DCMCFRTN_72051
-13051
leoptにNULLが設定されています。

DCMCFRTN_72052
-13052
proinfにNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72054
-13054
resv03にNULLが設定されていません。

DCMCFRTN_72055
-13055
resv04にNULLが設定されていません。

DCMCFRTN_72061
-13061
dcmcf_tdctleoptのmcfidに0未満または240以上の値が設定されています。

DCMCFRTN_72062
-13062
dcmcf_tdctleoptのresv01がヌル文字で埋められていません。

DCMCFRTN_72063
-13063
dcmcf_tdctleoptのidnamの先頭がヌル文字です。

DCMCFRTN_72064
-13064
dcmcf_tdctleoptのresv02がヌル文字で埋められていません。

DCMCFRTN_72065
-13065
dcmcf_tdctleoptのresv03がヌル文字で埋められていません。

DCMCFRTN_72067
-13067
dcmcf_tdctleoptのresv04がヌル文字で埋められていません。

DCMCFRTN_72073
-13073
dcmcf_tdctleoptのidnamに設定された文字数が9以上です。

DCMCFRTN_72074
-13074
dcmcf_tdctleoptのidnamに設定された文字列中に不正な文字があります。

dc_mcf_tempget － 一時記憶データの受け取り（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int  dc_mcf_tempget(DCLONG action, char *getdata, DCLONG gtempleng,
　                    DCLONG *gdataleng, char *resv01)

　K&R版 Cの形式

　#include <dcmcf.h>
　int  dc_mcf_tempget(action, getdata, gtempleng, gdataleng, resv01)
　DCLONG    action;
　char      *getdata;
　DCLONG    gtempleng;
　DCLONG    *gdataleng;
　char      *resv01;

機能

継続問い合わせ応答用一時記憶領域に格納されている一時記憶データを受け取ります。

gtemplengの長さ（7～32006バイト）を超える一時記憶データがある場合，超えた部分については切り捨てます。

dc_mcf_tempget実行時，gtemplengから6を減算した値と比べて一時記憶データ長が短い場合，一時記憶データを受け取り領域に設定します。残りの受け取り領域については何も設定しません。

dc_mcf_tempget実行時，初期状態（継続問い合わせ応答開始後，dc_mcf_tempputを1回も実行していない状態）の場合，アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで指定した長さの(00)₁₆の一時記憶データがあるものとして，dc_mcf_tempgetを実行します。

受け取り領域の形式を次に示します。

UAPで値を設定する引数

●action

DCMCFBUF2を設定します。

●getdata

受け取り領域を設定します。

処理終了後，getdataにはOpenTP1から値が返されます。

●gtempleng

受け取り領域長を7～32006バイトで設定します。

●resv01

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

OpenTP1から値が返される引数

●getdata

受け取った一時記憶データが返されます。初期状態の場合，継続問い合わせ応答用一時記憶領域の長さ（アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値）分だけ(00)₁₆が埋められます。

●gdataleng

前回更新した一時記憶データの長さが返されます。初期状態の場合，継続問い合わせ応答用一時記憶領域の長さ（アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値）が返されます。

リターン値

リターン値 | リターン値（数値） | 意味
DCMCFRTN_00000 | 0 | 正常に終了しました。
DCMCFRTN_72000 | -13000 | SPPではdc_mcf_tempget関数を呼び出せません。
DCMCFRTN_72013 | -13013 | gtemplengの設定値を超える一時記憶データを受け取りました。gtemplengの設定値を超えた部分は切り捨てられました。
DCMCFRTN_72016 | -13016 | resv01に設定した値が間違っています。
引数に設定した値に間違いがあります。
DCMCFRTN_72036 | -13036 | gtemplengの設定値が不足しています。7バイト以上の領域を確保してください。
DCMCFRTN_72101 | -13101 | 継続問い合わせ応答型でないアプリケーションで，dc_mcf_tempget関数を呼び出しています。
DCMCFRTN_72106 | -13106 | 先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，dc_mcf_tempget関数を呼び出しています。
DCMCFRTN_72107 | -13107 | dc_mcf_contend関数を呼び出したあとで，dc_mcf_tempget関数を呼び出しています。
上記以外 | － | プログラムの破壊などによる，予期しないエラーが発生しました。

（凡例）

－：該当しません。

dc_mcf_tempput － 一時記憶データの更新（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int  dc_mcf_tempput(DCLONG action, char *putdata, DCLONG pdataleng,
　                    char *resv01)

　K&R版 Cの形式

　#include <dcmcf.h>
　int  dc_mcf_tempput(action, putdata, pdataleng, resv01)
　DCLONG    action;
　char      *putdata;
　DCLONG    pdataleng;
　char      *resv01;

機能

継続問い合わせ応答用一時記憶領域に格納されている一時記憶データを更新します。

更新要求をする前に，必ず受け取り要求をしてください。

アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドには，更新する一時記憶データ長（pdataleng）以上の値を指定してください。

更新する領域の形式を次に示します。

UAPで値を設定する引数

●action

DCMCFBUF2を設定します。

●putdata

一時記憶データの更新データが格納されている領域を設定します。

●pdataleng

一時記憶データの更新データ長を設定します。

●resv01

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

リターン値

リターン値 | リターン値（数値） | 意味
DCMCFRTN_00000 | 0 | 正常に終了しました。
DCMCFRTN_71103 | -12103 | 一時記憶データを更新するための領域をメモリ上に確保できませんでした。
DCMCFRTN_72000 | -13000 | SPPではdc_mcf_tempput関数を呼び出せません。
DCMCFRTN_72016 | -13016 | resv01に設定した値が間違っています。
引数に設定した値に間違いがあります。
DCMCFRTN_72035 | -13035 | pdatalengに設定した更新データの長さが，アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで定義した長さを超えています。
pdatalengに0バイト，またはマイナス値を設定しています。
DCMCFRTN_72101 | -13101 | 継続問い合わせ応答型でないアプリケーションで，dc_mcf_tempput関数を呼び出しています。
DCMCFRTN_72105 | -13105 | dc_mcf_tempget関数を呼び出す前に，dc_mcf_tempput関数を呼び出しています。
DCMCFRTN_72106 | -13106 | 先頭セグメントを受信するdc_mcf_receive関数を呼び出す前に，dc_mcf_tempput関数を呼び出しています。
DCMCFRTN_72107 | -13107 | dc_mcf_contend関数を呼び出したあとで，dc_mcf_tempput関数を呼び出しています。
上記以外 | － | プログラムの破壊などによる，予期しないエラーが発生しました。

（凡例）

－：該当しません。

dc_mcf_tlscn － コネクションの状態取得（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tlscn (DCLONG action, dcmcf_tlscnopt *cnopt,
                   char *resv01, DCLONG *resv02,
                   char *resv03, DCLONG *infcnt,
　                  dcmcf_cninf *inf, char *resv04)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tlscn (action, cnopt, resv01, resv02, resv03, infcnt,
                   inf, resv04)
　DCLONG            action;
　dcmcf_tlscnopt    *cnopt;
　char              *resv01;
　DCLONG            *resv02;
　char              *resv03;
　DCLONG            *infcnt;
　dcmcf_cninf       *inf;
　char              *resv04;

機能

コネクションの状態を取得します。

UAPで値を設定する引数

●action

状態を取得するコネクションの指定方法を次の形式で設定します。

｛DCMCFLE｜DCMCFCN｝

DCMCFLE

状態を取得するコネクションを論理端末名称で指定するときに設定します。

DCMCFCN

状態を取得するコネクションをコネクションIDで指定するときに設定します。

●cnopt

この関数の対象となったコネクションの情報を，構造体dcmcf_tlscnoptに設定します。

構造体の形式を次に示します。

typedef struct {
               DCLONG    mcfid;        …MCF通信プロセス識別子
               char      resv01[4];    …予備領域
               char      idnam[9];     …論理端末名称，コネクションID
               char      resv02[7];    …予備領域
               char      resv03[112];  …予備領域
               char      resv04[376];  …予備領域
               } dcmcf_tlscnopt;

mcfid
処理対象のコネクションを持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。
論理端末名称を使用してコネクションの状態取得を要求する場合は，無効となります。
0を指定すると，該当するコネクションIDが属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの関数を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

resv01
領域をヌル文字で埋めます。

idnam
状態を取得するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは8バイト以内で設定し，文字列の最後にヌル文字を付けます。

resv02，resv03，resv04
領域をヌル文字で埋めます。

●resv01，resv02，resv03

NULLを設定します。

●infcnt

コネクション状態を格納する領域dcmcf_cninfの個数として，1を設定します。

処理終了後は，該当するコネクションの個数が返されます。

●inf

コネクション状態を格納する領域dcmcf_cninfを設定します。

「構造体dcmcf_cninfのサイズ×infcnt」バイト数分の領域が必要です。

●resv04

NULLを設定します。

OpenTP1から値が返される引数

●infcnt

この関数の対象となったコネクションの個数が返されます。

●inf

この関数の対象となったコネクションの情報が，構造体dcmcf_cninfで返されます。

構造体の形式を次に示します。

typedef struct {
               char      idnam[9];     …コネクションID
               char      resv01[7];    …予備領域
               char      pnam[4];      …プロトコル名
               DCLONG    status;       …コネクション状態
               char      resv02[40];   …予備領域
               } dcmcf_cninf;

idnam
要求したコネクションのコネクションIDが設定されます。

resv01
領域をヌル文字で埋めます。

pnam
要求したコネクションのプロトコル種別が設定されます。

TCP

TCP/IPプロトコル

status
要求したコネクションの状態として，次の値が設定されます。

DCMCF_CNST_ACT

確立状態

DCMCF_CNST_ACT_B

確立処理中状態

DCMCF_CNST_DCT

解放状態

DCMCF_CNST_DCT_B

解放処理中状態

resv02
領域をヌル文字で埋めます。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tlscn関数が受け付けられません。

DCMCFRTN_71004
-12004
dc_mcf_tlscn関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71007
-12007
指定されたコネクション名は登録されていません。

DCMCFRTN_71008
-12008
指定された論理端末名称は登録されていません。

DCMCFRTN_71009
-12009
dc_mcf_tlscn関数が，該当するMCF通信プロセスではサポートされていません。

DCMCFRTN_71010
-12010
MCF通信プロセスにコネクションの状態取得を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71011
-12011
コネクションが削除されているため，dc_mcf_tlscn関数が受け付けられません。

DCMCFRTN_71014
-12014
TP1/NET/NCSB，またはTP1/NET/X25-Extendedの論理端末名称を指定しています。またはTP1/NET/OSI-TPのコネクショングループ名を指定しています。

DCMCFRTN_72050
-13050
actionに未サポートのフラグを設定しています。

DCMCFRTN_72051
-13051
cnoptにNULLが設定されています。

DCMCFRTN_72052
-13052
resv01にNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72054
-13054
resv03にNULLが設定されていません。

DCMCFRTN_72055
-13055
resv04にNULLが設定されていません。

DCMCFRTN_72056
-13056
infcntにNULLが設定されています。

DCMCFRTN_72057
-13057
infにNULLが設定されています。

DCMCFRTN_72060
-13060
actionにはDCMCFLEとDCMCFCNを同時に設定できません。

DCMCFRTN_72061
-13061
dcmcf_tlscnoptのmcfidに0未満または240以上の値が設定されています。

DCMCFRTN_72062
-13062
dcmcf_tlscnoptのresv01がヌル文字で埋められていません。

DCMCFRTN_72063
-13063
dcmcf_tlscnoptのidnamの先頭がヌル文字です。

DCMCFRTN_72064
-13064
dcmcf_tlscnoptのresv02がヌル文字で埋められていません。

DCMCFRTN_72065
-13065
dcmcf_tlscnoptのresv03がヌル文字で埋められていません。

DCMCFRTN_72067
-13067
dcmcf_tlscnoptのresv04がヌル文字で埋められていません。

DCMCFRTN_72073
-13073
dcmcf_tlscnoptのidnamに設定された文字数が9以上です。

DCMCFRTN_72074
-13074
dcmcf_tlscnoptのidnamに設定された文字列中に不正な文字があります。

DCMCFRTN_72076
-13076
infcntに1が設定されていません。

dc_mcf_tlsle － 論理端末の状態取得（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tlsle (DCLONG action, dcmcf_tlsleopt *leopt,
                   char *resv01, DCLONG *resv02,
                   char *resv03, DCLONG *infcnt,
　                  dcmcf_leinf2 *inf, char *resv04)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tlsle (action, leopt, resv01, resv02, resv03, infcnt,
                   inf, resv04)
　DCLONG            action;
　dcmcf_tlsleopt    *leopt;
　char              *resv01;
　DCLONG            *resv02;
　char              *resv03;
　DCLONG            *infcnt;
　dcmcf_leinf2      *inf;
　char              *resv04;

機能

論理端末の状態を取得します。

UAPで値を設定する引数

●action

状態を取得する論理端末の指定方法を次の形式で設定します。

DCMCFLE

DCMCFLE

状態を取得する論理端末を論理端末名称で指定するときに設定します。

●leopt

この関数の対象となったコネクションの情報を，構造体dcmcf_tlsleoptに設定します。

構造体の形式を次に示します。

typedef struct {
               DCLONG    mcfid;        …MCF通信プロセス識別子
               char      resv01[4];    …予備領域
               char      idnam[9];     …論理端末名称
               char      resv02[7];    …予備領域
               char      resv03[112];  …予備領域
               char      resv04[376];  …予備領域
               } dcmcf_tlsleopt;

mcfid
処理対象の論理端末を持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。
0を指定すると，該当する論理端末名称が属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの関数を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

resv01
領域をヌル文字で埋めます。

idnam
状態を取得する論理端末の名称を設定します。論理端末名称は8バイト以内で設定し，文字列の最後にヌル文字を付けます。

resv02，resv03，resv04
領域をヌル文字で埋めます。

●resv01，resv02，resv03

NULLを設定します。

●infcnt

論理端末の状態を格納する領域dcmcf_leinf2の個数として，1を設定します。

処理終了後は，該当する論理端末の個数が返されます。

●inf

論理端末の状態を格納する領域dcmcf_leinf2を設定します。

「構造体dcmcf_leinf2のサイズ×infcnt」バイト数分の領域が必要です。

●resv04

NULLを設定します。

OpenTP1から値が返される引数

●infcnt

この関数の対象となった論理端末の個数が返されます。

●inf

この関数の対象となった論理端末の情報が構造体dcmcf_leinf2で返されます。

構造体の形式を次に示します。

typedef struct {
               char      idnam[9];     …論理端末名称
               char      resv01[7];    …予備領域
               char      resv02[4];    …予備領域
               DCLONG    status;       …論理端末状態
               char      resv03[40];   …予備領域
               } dcmcf_leinf2;

idnam
要求した論理端末の名称が設定されます。

resv01，resv02
領域をヌル文字で埋めます。

status
要求した論理端末の状態として，次の値が設定されます。

DCMCF_LEST_ACT

閉塞解除状態

DCMCF_LEST_DCT

閉塞状態

resv03
領域をヌル文字で埋めます。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tlsle関数が受け付けられません。

DCMCFRTN_71004
-12004
dc_mcf_tlsle関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71008
-12008
指定された論理端末名称は登録されていません。

DCMCFRTN_71009
-12009
dc_mcf_tlsle関数が，該当するMCF通信プロセスではサポートされていません。

DCMCFRTN_71010
-12010
MCF通信プロセスに論理端末の状態取得を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71011
-12011
論理端末が削除されているため，dc_mcf_tlsle関数が受け付けられません。

DCMCFRTN_72050
-13050
actionに未サポートのフラグを設定しています。

actionにDCMCFLEが指定されていません。

DCMCFRTN_72051
-13051
leoptにNULLが設定されています。

DCMCFRTN_72052
-13052
resv01にNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72054
-13054
resv03にNULLが設定されていません。

DCMCFRTN_72055
-13055
resv04にNULLが設定されていません。

DCMCFRTN_72056
-13056
infcntにNULLが設定されています。

DCMCFRTN_72057
-13057
infにNULLが設定されています。

DCMCFRTN_72061
-13061
dcmcf_tlsleoptのmcfidに0未満または240以上の値が設定されています。

DCMCFRTN_72062
-13062
dcmcf_tlsleoptのresv01がヌル文字で埋められていません。

DCMCFRTN_72063
-13063
dcmcf_tlsleoptのidnamの先頭がヌル文字です。

DCMCFRTN_72064
-13064
dcmcf_tlsleoptのresv02がヌル文字で埋められていません。

DCMCFRTN_72065
-13065
dcmcf_tlsleoptのresv03がヌル文字で埋められていません。

DCMCFRTN_72067
-13067
dcmcf_tlsleoptのresv04がヌル文字で埋められていません。

DCMCFRTN_72073
-13073
dcmcf_tlsleoptのidnamに設定された文字数が9以上です。

DCMCFRTN_72074
-13074
dcmcf_tlsleoptのidnamに設定された文字列中に不正な文字があります。

DCMCFRTN_72076
-13076
infcntに1が設定されていません。

dc_mcf_tlsln － サーバ型コネクションの確立要求の受付状態取得（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tlsln (DCLONG action, DCLONG mcfid, char *resv01,
　                  DCLONG *infcnt, dcmcf_lninf *inf, char *resv02)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tlsln (action, mcfid, resv01, infcnt, inf, resv02)
　DCLONG         action;
　DCLONG         mcfid;
　char           *resv01;
　DCLONG         *infcnt;
　dcmcf_lninf    *inf;
　char           *resv02;

機能

サーバ型コネクションの確立要求の受付状態を取得します。

UAPで値を設定する引数

●action

DCNOFLAGSを設定します。

●mcfid

処理対象のMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は1～239です。

●resv01

NULLを設定します。

●infcnt

サーバ型コネクションの確立要求の受付状態を格納する領域dcmcf_lninfの個数として，1を設定します。

処理終了後は，該当するMCF通信サービスの個数が返されます。

●inf

サーバ型コネクションの確立要求の受付状態を格納する領域dcmcf_lninfを設定します。

「構造体dcmcf_lninfのサイズ×infcnt」バイト数分の領域が必要です。

●resv02

NULLを設定します。

OpenTP1から値が返される引数

●infcnt

この関数の対象となったMCF通信サービスの個数が返されます。

●inf

この関数の対象となったMCF通信サービスのサーバ型コネクションの確立要求の受付状態が構造体dcmcf_lninfで返されます。

構造体の形式を次に示します。

typedef struct {
               DCLONG    status;       …受付状態
               char      resv01[60];   …予備領域
               } dcmcf_lninf;

status
サーバ型コネクションの確立要求の受付状態として，次の値が設定されます。

DCMCF_LNST_LISTEN

受付開始状態

DCMCF_LNST_RETRY

受付開始処理中状態

DCMCF_LNST_ONLN_W

受付開始要求待ち状態

DCMCF_LNST_INIT

受付終了状態

それぞれの状態のときに使用できるライブラリ関数を，次の表に示します。

statusの設定値 | 使用できるライブラリ関数
dc_mcf_tonln | dc_mcf_tofln
DCMCF_LNST_LISTEN | × | ○
DCMCF_LNST_RETRY | × | ○
DCMCF_LNST_ONLN_W | ○ | ○
DCMCF_LNST_INIT | ○ | ×

（凡例）

○：使用できます。

×：使用できません。

resv01
領域をヌル文字で埋めます。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tlsln関数が受け付けられません。

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

DCMCFRTN_71004
-12004
dc_mcf_tlsln関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71009
-12009
dc_mcf_tlsln関数が，該当するMCF通信プロセスではサポートされていません。

DCMCFRTN_71010
-12010
MCF通信プロセスにサーバ型コネクションの確立要求の状態取得を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_72050
-13050
actionにDCNOFLAGSが設定されていません。

DCMCFRTN_72052
-13052
resv01にNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72056
-13056
infcntにNULLが設定されています。

DCMCFRTN_72057
-13057
infにNULLが設定されています。

DCMCFRTN_72061
-13061
mcfidに0未満または240以上の値が設定されています。

DCMCFRTN_72076
-13076
infcntに1が設定されていません。

dc_mcf_tofln － サーバ型コネクションの確立要求の受付終了（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tofln (DCLONG action, DCLONG mcfid, char *resv01,
                   char *resv02)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tofln (action, mcfid, resv01, resv02)
　DCLONG    action;
　DCLONG    mcfid;
　char      *resv01;
　char      *resv02;

機能

サーバ型コネクションの確立要求の受付を終了します。

UAPで値を設定する引数

●action

DCNOFLAGSを設定します。

●mcfid

処理対象のMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は1～239です。

●resv01，resv02

NULLを設定します。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tofln関数が受け付けられません。

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

DCMCFRTN_71004
-12004
dc_mcf_tofln関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71009
-12009
dc_mcf_tofln関数が，該当するMCF通信プロセスではサポートされていません。

DCMCFRTN_71010
-12010
MCF通信プロセスにサーバ型コネクションの確立要求の受付終了を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_72050
-13050
actionにDCNOFLAGSが設定されていません。

DCMCFRTN_72052
-13052
resv01にNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72061
-13061
mcfidに0未満または240以上の値が設定されています。

dc_mcf_tonln － サーバ型コネクションの確立要求の受付開始（C言語）

形式

　ANSI C，C++の形式

　#include <dcmcf.h>
　int dc_mcf_tonln (DCLONG action, DCLONG mcfid, char *resv01,
                   char *resv02)

　K&R版Cの形式

　#include <dcmcf.h>
　int dc_mcf_tonln (action, mcfid, resv01, resv02)
　DCLONG    action;
　DCLONG    mcfid;
　char      *resv01;
　char      *resv02;

機能

サーバ型コネクションの確立要求の受付を開始します。

UAPで値を設定する引数

●action

DCNOFLAGSを設定します。

●mcfid

処理対象のMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は1～239です。

●resv01，resv02

NULLを設定します。

リターン値

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

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

DCMCFRTN_71001
-12001
MCFが開始処理中のため，dc_mcf_tonln関数が受け付けられません。

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

DCMCFRTN_71004
-12004
dc_mcf_tonln関数の処理中にメモリ不足が発生しました。

DCMCFRTN_71005
-12005
通信障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71006
-12006
内部障害が発生しました。原因については，メッセージログファイルを参照してください。

DCMCFRTN_71009
-12009
dc_mcf_tonln関数が，該当するMCF通信プロセスではサポートされていません。

DCMCFRTN_71010
-12010
MCF通信プロセスにサーバ型コネクションの確立要求の受付開始を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。

DCMCFRTN_72050
-13050
actionにDCNOFLAGSが設定されていません。

DCMCFRTN_72052
-13052
resv01にNULLが設定されていません。

DCMCFRTN_72053
-13053
resv02にNULLが設定されていません。

DCMCFRTN_72061
-13061
mcfidに0未満または240以上の値が設定されています。

4.　COBOL-UAP作成用プログラムインタフェース

この章では，TP1/NET/TCP/IPで使用できる，COBOL-UAP作成用プログラムインタフェースについて説明します。

＜この章の構成＞

COBOL-UAP作成用プログラムインタフェースの一覧

CBLDCMCF('CONTEND△') － 継続問い合わせ応答の終了（COBOL言語）

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

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

CBLDCMCF('REPLY△△△') － 応答メッセージの送信（COBOL言語）

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

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

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

CBLDCMCF('SENDSYNC') － 同期型メッセージの送信（COBOL言語）

CBLDCMCF('TACTCN△△') － コネクションの確立（COBOL言語）

CBLDCMCF('TACTLE△△') － 論理端末の閉塞解除（COBOL言語）

CBLDCMCF('TDCTCN△△') － コネクションの解放（COBOL言語）

CBLDCMCF('TDCTLE△△') － 論理端末の閉塞（COBOL言語）

CBLDCMCF('TEMPGET△') － 一時記憶データの受け取り（COBOL言語）

CBLDCMCF('TEMPPUT△') － 一時記憶データの更新（COBOL言語）

CBLDCMCF('TLSCN△△△') － コネクションの状態取得（COBOL言語）

CBLDCMCF('TLSLE△△△') － 論理端末の状態取得（COBOL言語）

CBLDCMCF('TLSLN△△△') － サーバ型コネクションの確立要求の受付状態取得（COBOL言語）

CBLDCMCF('TOFLN△△△') － サーバ型コネクションの確立要求の受付終了（COBOL言語）

CBLDCMCF('TONLN△△△') － サーバ型コネクションの確立要求の受付開始（COBOL言語）

DISABLE － 継続問い合わせ応答の終了（データ操作言語）

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

RECEIVE － 一時記憶データの受け取り（データ操作言語）

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

SEND － 一時記憶データの更新（データ操作言語）

COBOL-UAP作成用プログラムインタフェースの一覧

TP1/NET/TCP/IPで使用するCOBOL-UAP作成用プログラムインタフェースについて，COBOL言語，およびデータ操作言語に分けて説明します。

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

COBOL言語のプログラムインタフェース

COBOL言語でUAPを作成する場合，OpenTP1システムの関数に対応しているプログラムを，CALL文で呼び出してUAPを作成します。

COBOL言語のプログラムインタフェースの一覧を次の表に示します。

表4-1　COBOL言語のプログラムインタフェースの一覧

プログラム名 | データ名Aに設定する要求コード | 機能
CBLDCMCF | 'CONTEND△' | 継続問い合わせ応答の終了
'RECEIVE△' | メッセージの受信
'RECVSYNC' | 同期型メッセージの受信
'REPLY△△△' | 応答メッセージの送信
'RESEND△△' | メッセージの再送
'SEND△△△△' | 一方送信メッセージの送信
'SENDRECV' | 同期型メッセージの送受信
'SENDSYNC' | 同期型メッセージの送信
'TACTCN△△' | コネクションの確立
'TACTLE△△' | 論理端末の閉塞解除
'TDCTCN△△' | コネクションの解放
'TDCTLE△△' | 論理端末の閉塞
'TEMPGET△' | 一時記憶データの受け取り
'TEMPPUT△' | 一時記憶データの更新
'TLSCN△△△' | コネクションの状態取得
'TLSLE△△△' | 論理端末の状態取得
'TLSLN△△△' | サーバ型コネクションの確立要求の受付状態取得
'TOFLN△△△' | サーバ型コネクションの確立要求の受付終了
'TONLN△△△' | サーバ型コネクションの確立要求の受付開始

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

データ操作言語のプログラムインタフェース

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

データ操作言語のプログラムインタフェースの一覧を，次の表に示します。

表4-2　データ操作言語のプログラムインタフェースの一覧

通信文 | 機能 | 対応するC言語のライブラリ関数
データコミュニケーション機能 | RECEIVE | メッセージの受信 | 「表4-4　RECEIVE文（データコミュニケーション機能）の指定とC言語のライブラリ関数との対応」，および「表4-5　SEND文（データコミュニケーション機能）の指定とC言語のライブラリ関数との対応」を参照してください。
SEND | メッセージの送信
サービス機能 | DISABLE | 継続問い合わせ応答の終了 | dc_mcf_contend
RECEIVE | 一時記憶データの受け取り | dc_mcf_tempget
SEND | 一時記憶データの更新 | dc_mcf_tempput

注

dc_mcf_resend（メッセージの再送）に対応するデータ操作言語のインタフェースはありません。

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

通信記述項について

TP1/NET/TCP/IPのメッセージ送受信の通信文で，通信記述項に指定できる句の指定要否を，次の表に示します。

表4-3　通信記述項に指定できる句の指定要否

データ名を指定する句 | データ領域の値の設定元
1. | 2. | 3. | 4. | 5. | 6. | 7. | 8. | 9. | 10.
STATUS KEY | B | B | B | B | B | B | B | B | B | B
SYMBOLIC TERMINAL | B | U₁※ | U₁ | U₁ | － | U₁ | U₁ | × | × | ×
MESSAGE DATE | B | B | B | － | － | － | － | － | － | －
MESSAGE TIME | B | B | B | － | － | － | － | － | － | －
SYNCHRONOUS MODE | U₂ | U₂ | U₁ | U₂ | U₂ | U₁ | U₁ | － | － | －
SWITCHING MODE | － | － | － | U₂ | － | － | － | － | － | －
NEXT TRANSACTION | － | － | － | － | U₂ | － | － | － | － | －
DETAIL MODE | － | － | － | U₂ | U₂ | － | － | － | － | －
WAITING TIME | － | － | U₂ | － | － | U₂ | U₂ | － | － | －

（凡例）

1.：先頭セグメントの非同期受信（RECEIVE）

2.：中間，最終セグメントの非同期受信（RECEIVE）

3.：単一セグメントの同期受信（RECEIVE）

4.：一方送信メッセージの単一セグメントの非同期送信（SEND）

5.：応答メッセージの単一セグメントの非同期送信（SEND）

6.：単一セグメントの同期送信（SEND）

7.：単一セグメントの同期送受信（SEND）

8.：継続問い合わせ応答の終了（DISABLE）

9.：一時記憶データの受け取り（RECEIVE）

10.：一時記憶データの更新（SEND）

B：OpenTP1から値が返されます。省略できます。

U₁：UAPで値を設定します。省略できません。

U₂：UAPで値を設定します。省略できます。

－：該当しません。設定しても無効です。

×：空白以外の値を設定するとエラーリターンします。

注※

先頭メッセージ受信時のRECEIVE文と同一のCD句を用いた場合は省略できます。

データコミュニケーション機能とC言語のライブラリ関数の対応

RECEIVE文（データコミュニケーション機能）の指定とC言語のライブラリ関数との対応を，次の表に示します。

表4-4　RECEIVE文（データコミュニケーション機能）の指定とC言語のライブラリ関数との対応

FOR句 | SYNCHRONOUS MODE句 | 対応するC言語のライブラリ関数
INPUT | I-O | SYNC，または'1' | ASYNC，'0'，'△'，または省略
○ | － | － | ○ | dc_mcf_receive
－ | ○ | － | ○
－ | ○ | ○ | － | dc_mcf_recvsync

（凡例）

○：指定あり

－：指定なし

SEND文（データコミュニケーション機能）の指定とC言語のライブラリ関数との対応を，次の表に示します。

表4-5　SEND文（データコミュニケーション機能）の指定とC言語のライブラリ関数との対応

FOR句 | SYNCHRONOUS MODE句 | BEFORE句 | 対応するC言語のライブラリ関数
OUTPUT | I-O | SYNC，または'1' | ASYNC，'0'，'△'，または省略
○ | － | － | ○ | － | dc_mcf_send
－ | ○ | － | ○ | － | dc_mcf_reply
－ | ○ | ○ | － | － | dc_mcf_sendsync
－ | ○ | ○ | － | ○ | dc_mcf_sendrecv

（凡例）

○：指定あり

－：指定なし

CBLDCMCF('CONTEND△') － 継続問い合わせ応答の終了（COBOL言語）

形式

PROCEDURE DIVISIONの指定

CALL  'CBLDCMCF'  USING  一意名1

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)  VALUE 'CONTEND '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(16) VALUE LOW-VALUE.

機能

継続問い合わせ応答を終了します。

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

●データ名A

継続問い合わせ応答の終了を示す要求コード「VALUE 'CONTEND△'」を設定します。

●データ名C

MCFで使用する領域です。

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

●データ名B

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

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

72101
継続問い合わせ応答型でないアプリケーションで，CBLDCMCF('CONTEND△')を呼び出しています。

72107
CBLDCMCF('CONTEND△')を2回以上呼び出しています。

72111
次起動アプリケーションを設定してCBLDCMCF('REPLY△△△')を呼び出したあと，CBLDCMCF('CONTEND△')を呼び出しています。

継続問い合わせ応答型のアプリケーション名を設定してCBLDCMCF('EXECAP△△')を呼び出したあと，CBLDCMCF('CONTEND△')を呼び出しています。

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

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

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

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

機能

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

受信できるメッセージの一つのセグメントの最大長は，1メガバイトです。

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

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

MCFイベント

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

TP1/NET/TCP/IPを使用して通信する場合，相手システムから送信されるメッセージは，常に単一セグメントで構成されます。

セグメントを受信する領域（一意名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で使用する領域です。

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

●データ名B

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

●データ名E

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

●データ名F

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

●データ名P

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

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

●データ名U

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

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

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

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

●データ名Y

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A    PIC X(8)  VALUE 'RECVSYNC'.
   02  データ名B    PIC X(5).
   02  FILLER       PIC X(3).
   02  データ名C    PIC X(4).
   02  データ名D    PIC X(4)  VALUE SPACE.
   02  データ名E    PIC 9(8).
   02  データ名F    PIC 9(8).
   02  データ名G    PIC 9(9)  COMP.
   02  データ名H    PIC X(4)  VALUE SPACE.
   02  データ名I    PIC X(4)  VALUE SPACE.
   02  データ名J    PIC X(4)  VALUE SPACE.
   02  データ名K    PIC X(4)  VALUE SPACE.
   02  データ名L   PIC X(8)  VALUE SPACE.
   02  データ名M1   PIC X(4)  VALUE SPACE.
   02  データ名M2   PIC X(8)  VALUE SPACE.
   02  データ名M3   PIC X(4)  VALUE SPACE.
   02  データ名M4   PIC 9(9)  COMP VALUE ZERO.
   02  データ名M5   PIC 9(9)  COMP.
   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).

機能

相手システムから同期型でメッセージを受信します。相手システムから送信されるメッセージは，常に一つのセグメントで構成されます。

受信できるメッセージの一つのセグメントの最大長は，1メガバイトです。

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

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

●データ名A

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

●データ名C

「VALUE 'FRST'」を設定します。

●データ名D

空白を設定します。

●データ名G

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

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

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

CBLDCMCF('RECVSYNC')を呼び出してから終了するまでの，監視時間を設定します。0を設定した場合は，MCFマネジャ定義のUAP共通定義で指定した同期型受信監視時間（mcfmuap -t recvtim）が設定されます。

負の値を設定した場合は，時間を監視しません。

●データ名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で使用する領域です。

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

●データ名B

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

●データ名E

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

●データ名F

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

●データ名U

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

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

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

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

●データ名Y

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

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

72000
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('RECVSYNC')を呼び出しています。

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

データ名Pに設定した入力元の論理端末名称は，MCFで定義していません。

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

＜問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合＞
問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

72012
MCFバッファグループ定義のバッファ長が不足しました。

MCF通信プロセスは相手システムからメッセージを受信しましたが，UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。

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

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

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

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

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

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

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

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

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

73001
データ名M5に60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

前回の通信から無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

入力元の論理端末でMCF通信プロセスの内部障害が発生しました。

73002
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，受信を取り消しました。

73005
データ名M5に設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

73015
指定した論理端末は，ほかのUAPで仕掛り中です。

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

730200
入力元の論理端末は停止しています。

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

CBLDCMCF('REPLY△△△') － 応答メッセージの送信（COBOL言語）

形式

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).
   02  データ名T   PIC X(28) VALUE LOW-VALUE.
01  一意名3.
   02  データ名U  PIC 9(x)  COMP.
   02  データ名V  PIC X(x)  VALUE LOW-VALUE.
   02  データ名W  PIC X(n).

機能

メッセージを入力した論理端末に対して応答メッセージを送信します。応答メッセージは，一つのセグメントで構成されます。

送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

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

●データ名A

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

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

空白を設定します。

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

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H

単一セグメントの送信を示す「VALUE 'EMI△'」を設定します。

●データ名I，データ名J

空白を設定します。

●データ名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，データ名P，データ名Q

空白を設定します。

●データ名R

＜継続問い合わせ応答形態の場合＞

次のメッセージ受信時に起動するアプリケーションを設定します。

空白を設定した場合，実行中のアプリケーションを次のメッセージ受信時に再び起動します。

CBLDCMCF('REPLY△△△')を呼び出すサービスでCBLDCMCF('CONTEND△')を呼び出す場合はデータ名Rに空白を設定してください。

継続問い合わせ応答を引き継いだエラーイベントでCBLDCMCF('REPLY△△△')を発行する際に，データ名Rに空白を設定した場合，継続問い合わせ応答を終了します。ただし，継続問い合わせ応答を引き継いだエラーイベントで，CBLDCMCF('EXECAP△△')を発行して継続問い合わせ応答型のアプリケーションを起動し，起動先のアプリケーションでCBLDCMCF('REPLY△△△')を発行する際に，データ名Rに空白を設定した場合，継続問い合わせ応答を終了しないで，CBLDCMCF('EXECAP△△')を発行したときに設定した継続問い合わせ応答型のアプリケーションを次のメッセージ受信時に再び起動します。

＜継続問い合わせ応答形態以外の場合＞

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名U

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

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

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

送信するセグメントの長さ＋4を設定します。

●データ名V

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

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

MCFで使用する領域です。

●データ名W

送信する応答メッセージのセグメントの内容を設定します。一つのセグメントで32000バイトまで送信できます。

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

●データ名B

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

バッファ形式1の場合はデータ名Uに32000バイトを超える値を設定しています。バッファ形式2の場合はデータ名Uに32004バイトを超える値を設定しています。

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

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

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

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

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

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

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('REPLY△△△')を呼び出しています。

非応答型のアプリケーションからの問い合わせ応答をしない（UAP共通定義（mcfmuap -c）のnoansreplyオペランドを省略，またはnoを指定）場合に，非応答型のアプリケーションからCBLDCMCF('REPLY△△△')を呼び出しています。

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

72001
入力元論理端末は，応答メッセージの送信をサポートしていません。

入力元論理端末は，問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用していません（コネクション定義（mcftalccn -l）のreplymsgオペランドを省略，またはnoを指定）。

72008
応答型のアプリケーションから，CBLDCMCF('EXECAP△△')を呼び出して応答型のアプリケーションを起動したあとで，CBLDCMCF('REPLY△△△')を呼び出しています。

継続問い合わせ応答型のアプリケーションから，CBLDCMCF('EXECAP△△')で継続問い合わせ応答型のアプリケーションを起動したあとで，CBLDCMCF('REPLY△△△')を呼び出しています。

72011
継続問い合わせ応答型でないアプリケーションが，次起動アプリケーションを設定して，CBLDCMCF('REPLY△△△')を呼び出しています。

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

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

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

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

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

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

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

72041
バッファ形式1の場合はデータ名Uに0バイト，またはマイナス値を設定しています。バッファ形式2の場合はデータ名Uに0から4バイト，またはマイナス値を設定しています。

72044
CBLDCMCF('CONTEND△')を呼び出したあとで，次起動アプリケーションを設定してCBLDCMCF('REPLY△△△')を呼び出しています。

72045
データ名Rに，継続問い合わせ応答型でないアプリケーションのアプリケーション名を設定してCBLDCMCF('REPLY△△△')を呼び出しています。

72046
データ名Rに設定したアプリケーション名が異なるCBLDCMCF('REPLY△△△')を，2回以上呼び出しています。

72047
データ名Rに，アプリケーション属性定義（mcfaalcap）に定義されていないアプリケーション名を設定してCBLDCMCF('REPLY△△△')を呼び出しています。

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

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

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

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

機能

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

出力先の論理端末名称

メッセージ出力通番

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

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

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

●データ名A

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

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

空白を設定します。

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

MCFで使用する領域です。

●データ名G

0を設定します。

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

空白を設定します。

●データ名J

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

VALUE 'NORM'

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

VALUE 'PRIO'

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

空白

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

●データ名K

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

VALUE 'SEQ△'

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

VALUE 'NSEQ'

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

空白

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

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

空白を設定します。

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

0を設定します。

●データ名6，データ名M7

空白を設定します。

●データ名N

MCFで使用する領域です。

●データ名O

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

●データ名P

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

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

空白を設定します。

●データ名S

MCFで使用する領域です。

●データ名T

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

●データ名U

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

VALUE 'NORM'

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

VALUE 'PRIO'

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

空白

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

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

●データ名V

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

●データ名W

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

VALUE 'LAST'

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

空白

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

●データ名X

MCFで使用する領域です。

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

●データ名B

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

70904
出力通番使用論理端末数（MCFマネジャ共通定義（mcfmcomn）の-nオプション）を省略，または0を指定しています。

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

再送するメッセージは次に示す理由によって，再送できるメッセージの条件を満たしていません。

再送対象とするメッセージの送信時に出力通番を付けていません。

送信メッセージの割り当て先にメモリキューを使用しています（論理端末定義（mcftalcle -l）のquekindオペランドを省略，またはmemoryを指定）。

論理端末が閉塞しているなどの要因によって，送信メッセージが送信済みになっていません。

送信済みのメッセージがディスクキューに保持されていません（保持メッセージ数は，メッセージキューサービス定義のquegrpコマンドの-mオプションで指定します）。

データ名Tで指定した論理端末に割り当てられているメッセージキューは，システム開始時に障害が発生したため，メモリキューを代用して縮退運転をしています。

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

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

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

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

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

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

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

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

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

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

先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('RESEND△△')を呼び出しています。

非トランザクション属性のMHPから，CBLDCMCF('RESEND△△')を呼び出しています。

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

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

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

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

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

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

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

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

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

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

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

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

注意事項

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

-eオプション

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

-lオプション

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

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

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

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

機能

相手システムへ一方送信メッセージを送信します。一方送信メッセージは，一つのセグメントで構成されます。

送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

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

●データ名A

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

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

空白を設定します。

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

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H

単一セグメントの送信を示す「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)

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

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

送信するセグメントの長さ＋4を設定します。

●データ名V

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

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

領域の2⁴ビットに1を設定

送信完了通知イベントを通知させます。ただし，送信完了通知イベント処理用のMHPをMCFアプリケーション定義で指定していない場合は無効です。

領域の2⁴ビットに0を設定

送信完了通知イベントを通知させません。

データ名Vとビットの設定位置の関係を次に示します。

注

Xの値は次のとおりです。

　バッファ形式1の場合　X=63

　バッファ形式2の場合　X=15

●データ名W

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

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

●データ名B

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

バッファ形式1の場合はデータ名Uに32000バイトを超える値を設定しています。バッファ形式2の場合はデータ名Uに32004バイトを超える値を設定しています。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

72041
バッファ形式1の場合はデータ名Uに0バイト，またはマイナス値を設定しています。バッファ形式2の場合はデータ名Uに0から4バイト，またはマイナス値を設定しています。

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

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

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

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

機能

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

CBLDCMCF('SENDRECV')では，相手システムへ送るメッセージのセグメントを送信できます。

メッセージのセグメントを送信すると，CBLDCMCF('SENDRECV')は相手システムからの応答を待ちます。応答が届くと，そのメッセージのセグメントを受信します。

受信できるメッセージの一つのセグメントの最大長は，1メガバイトです。また，送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

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

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

●データ名A

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

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

空白を設定します。

●データ名G

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

●データ名H

単一セグメントを示す「VALUE 'EMI△'」を設定します。

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

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

CBLDCMCF('SENDRECV')を呼び出してから終了するまでの最大時間を設定します。0を設定した場合，MCFマネジャ定義のUAP共通定義で指定した同期型送受信監視時間（mcfmuap -t sndrcvtim）が設定されます。

負の値を設定した場合は，時間を監視しません。

●データ名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)

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

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

送信するセグメントの長さ＋4を設定します。

●データ名V

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

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

MCFで使用する領域です。

●データ名W

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

●データ名Y1

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

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

空白を設定します。

●データ名Y2

MCFで使用する領域です。

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

●データ名B

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

●データ名E

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

●データ名F

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

●データ名X

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

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

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

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

●データ名Z

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

バッファ形式1の場合はデータ名Uに32000バイトを超える値を設定しています。バッファ形式2の場合はデータ名Uに32004バイトを超える値を設定しています。

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

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

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

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

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

72000
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('SENDRECV')を呼び出しています。

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

データ名Pに設定した出力先の論理端末名称は，MCFで定義していません。

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

＜問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合＞
問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

72012
MCFバッファグループ定義のバッファ長が不足しました。

MCF通信プロセスは相手システムからメッセージを受信しましたが，UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。

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

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

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

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

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

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

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

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

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

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

72041
バッファ形式1の場合はデータ名Uに0バイト，またはマイナス値を設定しています。バッファ形式2の場合はデータ名Uに0から4バイト，またはマイナス値を設定しています。

72073
非同期メッセージを送信処理中です。

73001
データ名M5に60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

メッセージの送信処理中に相手システムからメッセージを受信したため，非同期受信処理を行いましたが，障害（UOC障害など）が発生しました。

出力先の論理端末でMCF通信プロセスの内部障害が発生しました。

73002
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，送信を抑止しました。

73003
メッセージ受信が仕掛り中です。

73005
データ名M5に設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

メッセージの編集エラーが発生しました。

73015
出力先の論理端末は，ほかのUAPで仕掛り中です。

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

73019
メッセージ送信完了監視タイマのタイムアウトが発生しました。

73020
出力先の論理端末は停止しています。

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

CBLDCMCF('SENDSYNC') － 同期型メッセージの送信（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A    PIC X(8)  VALUE 'SENDSYNC'.
   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.
   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  データ名W    PIC X(n).

機能

相手システムへ同期型でメッセージを送信します。メッセージは，一つのセグメントで構成されます。

送信できるメッセージの一つのセグメントの最大長は，32000バイトです。

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

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

●データ名A

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

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

空白を設定します。

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

MCFで使用する領域です。

●データ名G

0を設定します。

●データ名H

単一セグメントの送信を示す「VALUE 'EMI△'」を設定します。

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

空白を設定します。

●データ名M4

0を設定します。

●データ名M5

CBLDCMCF('SENDSYNC')を呼び出してから終了するまでの最大時間を設定します。0を設定した場合，MCFマネジャ定義のUAP共通定義で指定した同期型送信監視時間（mcfmuap -t sndtim）が仮定されます。

負の値を設定した場合は，時間を監視しません。

●データ名M6

空白を設定します。

●データ名M7

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

VALUE '1'

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

VALUE '2'

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

空白

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

●データ名N

MCFで使用する領域です。

●データ名O

空白を設定します。

●データ名P

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

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

空白を設定します。

●データ名T

MCFで使用する領域です。

●データ名U

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

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

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

送信するセグメントの長さ＋4を設定します。

●データ名V

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

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

MCFで使用する領域です。

●データ名W

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

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

●データ名B

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

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

71002
バッファ形式1の場合はデータ名Uに32000バイトを超える値を設定しています。バッファ形式2の場合はデータ名Uに32004バイトを超える値を設定しています。

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

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

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

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

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

72000
先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('SENDSYNC')を呼び出しています。

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

データ名Pに設定した出力先の論理端末名称は，MCFで定義していません。

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

＜問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合＞
問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

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

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

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

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

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

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

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

72041
バッファ形式1の場合はデータ名Uに0バイト，またはマイナス値を設定しています。バッファ形式2の場合はデータ名Uに0から4バイト，またはマイナス値を設定しています。

72073
非同期メッセージを送信処理中です。

73001
データ名M5に60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

メッセージの送信処理中に相手システムからメッセージを受信したため，非同期受信処理を行いましたが，障害（UOC障害など）が発生しました。

出力先の論理端末でMCF通信プロセスの内部障害が発生しました。

73002
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，送信を抑止しました。

73005
データ名M5に設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

73015
出力先の論理端末は，ほかのUAPで仕掛り中です。

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

73020
出力先の論理端末は停止しています。

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

CBLDCMCF('TACTCN△△') － コネクションの確立（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TACTCN  '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4).
   02  データ名D1  PIC X(1)   VALUE SPACE.
   02  データ名D2  PIC X(1).
   02  データ名D3  PIC X(26)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F1  PIC X(8).
   02  データ名F2  PIC X(56)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K1  PIC 9(9)   COMP.
   02  データ名K2  PIC X(4).
   02  データ名K3  PIC X(4)   VALUE LOW-VALUE.
   02  データ名K4  PIC X(4).
   02  データ名K5  PIC X(2).
   02  データ名K6  PIC X(2)   VALUE LOW-VALUE.
   02  データ名K7  PIC X(4).
   02  データ名K8  PIC X(2).
   02  データ名K9  PIC X(2)   VALUE LOW-VALUE.
   02  データ名K10 PIC X(128) VALUE LOW-VALUE.
   02  データ名K11 PIC X(128) VALUE LOW-VALUE.
   02  データ名K12 PIC X(744) VALUE LOW-VALUE.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

機能

コネクションを確立します。

なお，CBLDCMCF('TACTCN△△')の正常終了は，コネクション確立要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，相手システムとのコネクションの確立が正常に完了したことを示すものではありません。

CBLDCMCF('TACTCN△△')の呼び出し後にコネクションに関する何らかの処理をする場合は，CBLDCMCF('TLSCN△△△')を用いてコネクションの状態を確認してください。

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

●データ名A

コネクション確立を示す要求コード「VALUE 'TACTCN△△'」を設定します。

●データ名C

確立するコネクションの指定方法を設定します。

'LE△△'

確立するコネクションを論理端末名称で指定するときに設定します。

'CN△△'

確立するコネクションをコネクションIDで指定するときに設定します。

空白

省略されたものとして，'LE△△'（論理端末名称指定）が仮定されます。

●データ名D1

空白を設定します。

●データ名D2

TP1/NET/TCP/IP固有の機能を使用するかどうかを設定します。

'1'

TP1/NET/TCP/IP固有の機能を使用するときに設定します。

'0'

TP1/NET/TCP/IP固有の機能を使用しないときに設定します。

空白

省略されたものとして，'0'（使用しない）が仮定されます。

●データ名D3

空白を設定します。

●データ名E

処理対象のコネクションを持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は，0～239です。

論理端末名称を使用してコネクションの確立を要求する場合は，無効となります。

0を指定すると，該当するコネクションIDが属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの命令文を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

●データ名F1

確立するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは8バイト以内で設定してください。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名F2，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K1

TP1/NET/TCP/IP固有の機能を使用するときは1024を，使用しないときは0を設定してください。

●データ名K2

プロトコル名称を設定します。

"TCP△"

TCP/IPプロトコル

●データ名K3，データ名K6，データ名K9，データ名K10，データ名K11，データ名K12

0を設定します。

●データ名K4

自システムのIPアドレスを16進形式（ビッグエンディアン）で設定します。

dotted-decimal形式では指定できません。

自システムのIPアドレスの割り当てをOSに任せる場合は，0を設定してください。

IPアドレス255.255.255.255は設定できません。

●データ名K5

自システムのポート番号を16進形式（ビッグエンディアン）で設定します。

設定できる範囲は0，または1024～65535です。

自システムのポート番号の割り当てをOSに任せる場合は，0を設定してください。

●データ名K7

相手システムのIPアドレスを16進形式（ビッグエンディアン）で設定します。

dotted-decimal形式では指定できません。

IPアドレス0.0.0.0，および，255.255.255.255は設定できません。

●データ名K8

相手システムのポート番号を16進形式（ビッグエンディアン）で設定します。

設定できる範囲は1～65535です。

●データ名L

0を設定します。

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

●データ名B

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

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TACTCN△△')が受け付けられません。
71002 | MCFが終了処理中のため，CBLDCMCF('TACTCN△△')が受け付けられません。
71004 | CBLDCMCF('TACTCN△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71007 | 指定されたコネクション名は登録されていません。
71008 | 指定された論理端末名称は登録されていません。
71010 | MCF通信プロセスにコネクションの確立を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
71011 | コネクションが削除されているため，CBLDCMCF('TACTCN△△')が受け付けられません。
71014 | TP1/NET/NCSB，またはTP1/NET/X25-Extendedの論理端末名称を指定しています。またはTP1/NET/OSI-TPのコネクショングループを指定しています。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名K1に0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに'LE△△'，'CN△△'，または空白以外の値が設定されています。
72059 | データ名D1，またはデータ名D3に空白でない値が設定されています。
データ名D2に1，0，または空白以外の値が設定されています。
72061 | データ名Eに0未満，または240以上の値が設定されています。
72063 | データ名F1に空白が設定されています。
72065 | データ名F2に空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。
72074 | データ名F1に設定された文字列中に不正な文字があります。
73100 | コネクション確立済みのため受け付けられません。
73101 | コネクション確立処理中のため受け付けられません。
73102 | コネクションに対する論理端末が接続されていないため受け付けられません。
73103 | サーバ型のコネクションのため受け付けられません。
73104 | コネクション解放処理中のため受け付けられません。
73130 | データ名K1に1以上1024未満の値が設定されています。
73131 | データ名K2に設定した値が間違っています。
73132 | データ名K3に0でない値が設定されています。
73133 | データ名K4に255.255.255.255のIPアドレスが設定されています。
73134 | データ名K5に1以上1023以下の値が設定されています。
73135 | データ名K6に0でない値が設定されています。
73136 | データ名K7に0.0.0.0，または255.255.255.255のIPアドレスが設定されています。
73137 | データ名K8に0が設定されています。
73138 | データ名K9に0でない値が設定されています。
73139 | データ名K10に0でない値が設定されています。
73140 | データ名K11に0でない値が設定されています。
73141 | データ名K12に0でない値が設定されています。

CBLDCMCF('TACTLE△△') － 論理端末の閉塞解除（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TACTLE  '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4)   VALUE SPACE.
   02  データ名D1  PIC X(1)   VALUE SPACE.
   02  データ名D2  PIC X(1)   VALUE SPACE.
   02  データ名D3  PIC X(26)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F1  PIC X(8).
   02  データ名F2  PIC X(56)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

機能

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

なお，CBLDCMCF('TACTLE△△')の正常終了は，論理端末の閉塞解除要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，論理端末の閉塞解除が正常に完了したことを示すものではありません。

CBLDCMCF('TACTLE△△')の呼び出し後に論理端末に関する何らかの処理をする場合は，CBLDCMCF('TLSLE△△△')を用いてコネクションの状態を確認してください。

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

●データ名A

論理端末の閉塞の解除を示す要求コード「VALUE 'TACTLE△△'」を設定します。

●データ名C，データ名D1，データ名D2，データ名D3

空白を設定します。

●データ名E

処理対象の論理端末を持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。

0を指定すると，該当する論理端末名称が属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの命令文を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

●データ名F1

閉塞解除する論理端末の名称を設定します。論理端末名称は8バイト以内で設定してください。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名F2，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

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

●データ名B

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

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TACTLE△△')が受け付けられません。
71002 | MCFが終了処理中のため，CBLDCMCF('TACTLE△△')が受け付けられません。
71004 | CBLDCMCF('TACTLE△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71008 | 指定された論理端末名称は登録されていません。
71009 | CBLDCMCF('TACTLE△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスに論理端末の閉塞の解除を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
71011 | 論理端末が削除されているため，CBLDCMCF('TACTLE△△')が受け付けられません。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに空白でない値が設定されています。
72059 | データ名D1，データ名D2，またはデータ名D3に空白でない値が設定されています。
72061 | データ名Eに0未満または240以上の値が設定されています。
72063 | データ名F1に空白が設定されています。
72065 | データ名F2に空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。
72074 | データ名F1に設定された文字列中に不正な文字があります。

CBLDCMCF('TDCTCN△△') － コネクションの解放（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TDCTCN  '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4).
   02  データ名D1  PIC X(1).
   02  データ名D2  PIC X(1)   VALUE SPACE.
   02  データ名D3  PIC X(26)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F1  PIC X(8).
   02  データ名F2  PIC X(56)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

機能

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

なお，CBLDCMCF('TDCTCN△△')の正常終了は，コネクション解放要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，相手システムとのコネクションの解放が正常に完了したことを示すものではありません。

CBLDCMCF('TDCTCN△△')の呼び出し後にコネクションに関する何らかの処理をする場合は，CBLDCMCF('TLSCN△△△')を用いてコネクションの状態を確認してください。

コネクション解放後，CCLSEVTまたはCERREVTを通知します。コネクション解放後に通知するMCFイベントを次の表に示します。

データ名D1 | コネクション定義（mcftalccn -f）のcnreleaseオペランドの指定値 | 通知するMCFイベント
空白または'0' | 任意 | CCLSEVT
'1' | fin | CCLSEVT
rst | CERREVT

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

●データ名A

コネクション解放を示す要求コード「VALUE 'TDCTCN△△'」を設定します。

●データ名C

解放するコネクションの指定方法を設定します。

'LE△△'

解放するコネクションを論理端末名称で指定するときに設定します。

'CN△△'

解放するコネクションをコネクションIDで指定するときに設定します。

空白

省略されたものとして，'LE△△'（論理端末名称指定）が仮定されます。

●データ名D1

コネクションを強制的に解放するかどうかを設定します。

'1'

コネクションを強制的に解放します。

コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定している場合，RSTパケットを送信してコネクションを強制解放します。

コネクション定義（mcftalccn -f）のcnreleaseオペランドを省略，またはfinを指定している場合，1を指定しても無効となり，FINパケットを送信してコネクションを正常に解放します。

'0'

FINパケットを送信してコネクションを正常に解放します。

空白

省略されたものとして，'0'（正常解放）が仮定されます。

●データ名D2，データ名D3

空白を設定します。

●データ名E

処理対象のコネクションを持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。

論理端末名称を使用してコネクションの解放を要求する場合は，無効となります。

0を指定すると，該当するコネクションIDが属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの命令文を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

●データ名F1

解放するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは8バイト以内で設定してください。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名F2，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

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

●データ名B

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

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TDCTCN△△')が受け付けられません。
71002 | MCFが終了処理中のため，CBLDCMCF('TDCTCN△△')が受け付けられません。
71004 | CBLDCMCF('TDCTCN△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71007 | 指定されたコネクション名は登録されていません。
71008 | 指定された論理端末名称は登録されていません。
71009 | CBLDCMCF('TDCTCN△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスにコネクションの解放を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
71011 | コネクションが削除されているため，CBLDCMCF('TDCTCN△△')が受け付けられません。
71014 | TP1/NET/NCSB，またはTP1/NET/X25-Extendedの論理端末名称を指定しています。またはTP1/NET/OSI-TPのコネクショングループ名を指定しています。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに'LE△△'，'CN△△'，または空白以外の値が設定されています。
72059 | データ名D1，データ名D2，またはデータ名D3に空白でない値が設定されています。
72061 | データ名Eに0未満または240以上の値が設定されています。
72063 | データ名F1に空白が設定されています。
72065 | データ名F2に空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。
72074 | データ名F1に設定された文字列中に不正な文字があります。
72075 | データ名D1に1，0，または空白以外の値が設定されています。

CBLDCMCF('TDCTLE△△') － 論理端末の閉塞（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TDCTLE  '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4)   VALUE SPACE.
   02  データ名D1  PIC X(1)   VALUE SPACE.
   02  データ名D2  PIC X(1)   VALUE SPACE.
   02  データ名D3  PIC X(26)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F1  PIC X(8).
   02  データ名F2  PIC X(56)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

機能

論理端末を閉塞します。

なお，CBLDCMCF('TDCTLE△△')の正常終了は，論理端末の閉塞要求をTP1/NET/TCP/IPが正常に受け付けたことを意味します。このため，論理端末の閉塞が正常に完了したことを示すものではありません。

CBLDCMCF('TDCTLE△△')の呼び出し後に論理端末に関する何らかの処理をする場合は，CBLDCMCF('TLSLE△△△')を用いてコネクションの状態を確認してください。

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

●データ名A

論理端末の閉塞を示す要求コード「VALUE 'TDCTLE△△'」を設定します。

●データ名C，データ名D1，データ名D2，データ名D3

空白を設定します。

●データ名E

処理対象の論理端末を持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。

0を指定すると，該当する論理端末名称が属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの命令文を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

●データ名F1

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

●データ名F2，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

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

●データ名B

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

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TDCTLE△△')が受け付けられません。
71002 | MCFが終了処理中のため，CBLDCMCF('TDCTLE△△')が受け付けられません。
71004 | CBLDCMCF('TDCTLE△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71008 | 指定された論理端末名称は登録されていません。
71009 | CBLDCMCF('TDCTLE△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスに論理端末の閉塞を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
71011 | 論理端末が削除されているため，CBLDCMCF('TDCTLE△△')が受け付けられません。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに空白でない値が設定されています。
72059 | データ名D1，データ名D2，またはデータ名D3に空白でない値が設定されています。
72061 | データ名Eに0未満または240以上の値が設定されています。
72063 | データ名F1に空白が設定されています。
72065 | データ名F2に空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。
72074 | データ名F1に設定された文字列中に不正な文字があります。
72075 | データ名D1に空白以外の値が設定されています。

CBLDCMCF('TEMPGET△') － 一時記憶データの受け取り（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)  VALUE 'TEMPGET '.
   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)  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)  VALUE '2'.
   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  データ名S   PIC X(28) VALUE LOW-VALUE.
01  一意名3.
   02  データ名T   PIC 9(4)  COMP.
   02  データ名U   PIC X(4).
   02  データ名V   PIC X(n).

機能

継続問い合わせ応答用一時記憶領域に格納されている一時記憶データを受け取ります。

データ名Gの長さ（7～32006バイト）を超える一時記憶データがある場合，超えた分については切り捨てます。

データ名Gから6を減算した値と比べて一時記憶データ長の方が短い場合，データ名Vに一時記憶データを設定します。データ名Vの残りの領域については何も設定しません。

受け取り要求実行時，初期状態（継続問い合わせ応答開始後，CBLDCMCF('TEMPPUT△')を1回も実行していない状態）の場合，アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで指定した長さの(00)₁₆の一時記憶データがあるものとしてCBLDCMCF('TEMPGET△')を実行します。

受け取り領域（一意名3で示す領域）の形式を次に示します。

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

●データ名A

一時記憶データの受け取りを示す要求コード「VALUE 'TEMPGET△'」を設定します。

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

空白を設定します。

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

MCFで使用する領域です。

●データ名G

一時記憶データを受け取る領域の長さを7～32006バイトで設定します。

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

空白を設定します。

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

0を設定します。

●データ名M6

空白を設定します。

●データ名M7

使用するバッファの形式を「VALUE '2'」と設定します。

●データ名N

MCFで使用する領域です。

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

空白を設定します。

●データ名S，データ名U

MCFで使用する領域です。

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

●データ名B

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

●データ名T

前回更新した一時記憶データの長さ＋6が返されます。初期状態の場合，継続問い合わせ応答用一時記憶領域の長さ（アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値）＋6が返されます。

●データ名V

受け取った一時記憶データが返されます。初期状態の場合，継続問い合わせ応答用一時記憶領域の長さ（アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値）分だけ(00)₁₆が埋められます。

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
72000 | SPPではCBLDCMCF('TEMPGET△')を呼び出せません。
72013 | 一時記憶データ格納バッファ領域の長さ（データ名Gから6を減算した値）を超える一時記憶データを受け取りました。一時記憶データ格納バッファ領域の長さを超える一時記憶データを切り捨てました。
72016 | データ名Nまたはデータ名Sに設定した値が間違っています。
72028 | データ名Aに設定した値が間違っています。
72036 | データ名Gの設定値が不足しています。7バイト以上の領域を確保してください。
72101 | 継続問い合わせ応答型でないアプリケーションで，CBLDCMCF('TEMPGET△')を呼び出しました。
72106 | 先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('TEMPGET△')を呼び出しました。
72107 | CBLDCMCF('CONTEND△')を呼び出したあとで，CBLDCMCF('TEMPGET△')を呼び出しました。
上記以外 | プログラムの破壊などによる，予期しないエラーが発生しました。

CBLDCMCF('TEMPPUT△') － 一時記憶データの更新（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)  VALUE 'TEMPPUT '.
   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)  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)  VALUE '2'.
   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  データ名S   PIC X(28) VALUE LOW-VALUE.
01  一意名3.
   02  データ名T   PIC 9(4)  COMP.
   02  データ名U   PIC X(4).
   02  データ名V   PIC X(n).

機能

継続問い合わせ応答用一時記憶領域に格納されている一時記憶データを更新します。

アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドには，更新する一時記憶データ長（データ名Tから6を減算した値）以上の値を指定してください。

更新する領域（一意名3で示す領域）の形式を次に示します。

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

●データ名A

一時記憶データの更新を示す要求コード「VALUE 'TEMPPUT△'」を設定します。

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

空白を設定します。

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

MCFで使用する領域です。

●データ名G

0を設定します。

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

空白を設定します。

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

0を設定します。

●データ名M6

空白を設定します。

●データ名M7

使用するバッファの形式を「VALUE '2'」と設定します。

●データ名N

MCFで使用する領域です。

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

空白を設定します。

●データ名S

MCFで使用する領域です。

●データ名T

一時記憶データの更新データ長を設定します。

●データ名U

MCFで使用する領域です。

●データ名V

一時記憶データが格納されている領域を設定します。

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

●データ名B

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

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71103 | 一時記憶データを更新するための領域をメモリ上に確保できませんでした。
72000 | SPPではCBLDCMCF('TEMPPUT△')を呼び出せません。
72016 | データ名Nまたはデータ名Sに設定した値が間違っています。
72028 | データ名Aに設定した値が間違っています。
72035 | データ名Tに設定した更新データの長さが，アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで定義した長さを超えています。
データ名Tに0から6バイト，またはマイナス値を設定しています。
72101 | 継続問い合わせ応答型でないアプリケーションで，CBLDCMCF('TEMPPUT△')を呼び出しました。
72105 | CBLDCMCF('TEMPGET△')を呼び出す前に，CBLDCMCF('TEMPPUT△')を呼び出しました。
72106 | 先頭セグメントを受信するCBLDCMCF('RECEIVE△')を呼び出す前に，CBLDCMCF('TEMPPUT△')を呼び出しました。
72107 | CBLDCMCF('CONTEND△')を呼び出したあとで，CBLDCMCF('TEMPPUT△')を呼び出しました。
上記以外 | プログラムの破壊などによる，予期しないエラーが発生しました。

CBLDCMCF('TLSCN△△△') － コネクションの状態取得（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TLSCN   '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4).
   02  データ名D   PIC X(28)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F1  PIC X(8).
   02  データ名F2  PIC X(56)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

01  一意名3.
   02  データ名M   PIC 9(9)   COMP.
   02  一意名4.
       03  データ名N   PIC X(8).
       03  データ名O   PIC X(4).
       03  データ名P   PIC X(4).
       03  データ名Q   PIC X(40)   VALUE LOW-VALUE.

機能

コネクションの状態を取得します。

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

●データ名A

コネクション状態取得を示す要求コード「VALUE 'TLSCN△△△'」を設定します。

●データ名C

状態を取得するコネクションの指定方法を設定します。

'LE△△'

状態を取得するコネクションを論理端末名称で指定するときに設定します。

'CN△△'

状態を取得するコネクションをコネクションIDで指定するときに設定します。

空白

省略されたものとして，'LE△△'（論理端末名称指定）が仮定されます。

●データ名D

空白を設定します。

●データ名E

処理対象のコネクションを持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。

論理端末名称を使用してコネクションの状態取得を要求する場合は，無効となります。

0を指定すると，該当するコネクションIDが属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの命令文を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

●データ名F1

状態を取得するコネクションの論理端末名称，またはコネクションIDを設定します。論理端末名称，またはコネクションIDは8バイト以内で設定してください。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名F2，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

●データ名M

一意名4から一意名nの数（データ名N，データ名O，データ名P，とデータ名Qの組の数）として，1を設定します。

処理終了後は，該当するコネクションの個数が返されます。

●データ名Q

MCFで使用する領域です。

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

●データ名B

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

●データ名M

この命令文の対象となったコネクションの個数が返されます。

●データ名N

要求したコネクションのコネクションIDが設定されます。

●データ名O

要求したコネクションのプロトコル種別が設定されます。

'TCP△'

TCP/IPプロトコル

●データ名P

要求したコネクションの状態として，次の値が設定されます。

'ACT '

確立状態

'ACTB'

確立処理中状態

'DCT '

解放状態

'DCTB'

解放処理中状態

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TLSCN△△△')が受け付けられません。
71004 | CBLDCMCF('TLSCN△△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71007 | 指定されたコネクション名は登録されていません。
71008 | 指定された論理端末名称は登録されていません。
71009 | CBLDCMCF('TLSCN△△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスにコネクションの状態取得を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
71011 | コネクションが削除されているため，CBLDCMCF('TLSCN△△△')が受け付けられません。
71014 | TP1/NET/NCSB，またはTP1/NET/X25-Extendedの論理端末名称を指定しています。またはTP1/NET/OSI-TPのコネクショングループ名を指定しています。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに'LE△△'，'CN△△'，または空白以外の値が設定されています。
72059 | データ名Dに空白でない値が設定されています。
72061 | データ名Eに0未満または240以上の値が設定されています。
72063 | データ名F1に空白が設定されています。
72065 | データ名F2に空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。
72074 | データ名F1に設定された文字列中に不正な文字があります。
72076 | データ名Mに1でない値が設定されています。

CBLDCMCF('TLSLE△△△') － 論理端末の状態取得（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TLSLE   '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4)   VALUE SPACE.
   02  データ名D   PIC X(28)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F1  PIC X(8).
   02  データ名F2  PIC X(56)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

01  一意名3.
   02  データ名M   PIC 9(9)   COMP.
   02  一意名4.
       03  データ名N   PIC X(8).
       03  データ名O   PIC X(4)  LOW-VALUE.
       03  データ名P   PIC X(4).
       03  データ名Q   PIC X(40) LOW-VALUE.

機能

論理端末の状態を取得します。

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

●データ名A

論理端末の状態取得を示す要求コード「VALUE 'TLSLE△△△'」を設定します。

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

空白を設定します。

●データ名E

処理対象の論理端末を持つMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。

0を指定すると，該当する論理端末名称が属するMCF通信サービスを検索します。MCF通信サービスが多い構成やUAPからこの命令文を多数発行する場合は，MCF通信プロセス識別子の指定をお勧めします。

●データ名F1

状態を取得する論理端末の名称を設定します。論理端末名称は8バイト以内で設定してください。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

●データ名F2，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

●データ名M

一意名4から一意名nの数（データ名N，データ名O，データ名P，とデータ名Qの組の数）として，1を設定します。

処理終了後は，該当する論理端末の個数が返されます。

●データ名O，データ名Q

MCFで使用する領域です。

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

●データ名B

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

●データ名M

この命令文の対象となった論理端末の個数が返されます。

●データ名N

要求した論理端末の名称が設定されます。

●データ名P

要求した論理端末の状態として，次の値が設定されます。

'ACT△'

閉塞解除状態

'DCT△'

閉塞状態

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TLSLE△△△')が受け付けられません。
71004 | CBLDCMCF('TLSLE△△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71008 | 指定された論理端末名称は登録されていません。
71009 | CBLDCMCF('TLSLE△△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスに論理端末の状態取得を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
71011 | 論理端末が削除されているため，CBLDCMCF('TLSLE△△△')が受け付けられません。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに空白でない値が設定されています。
72059 | データ名Dに空白でない値が設定されています。
72061 | データ名Eに0未満または240以上の値が設定されています。
72063 | データ名F1に空白が設定されています。
72065 | データ名F2に空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。
72074 | データ名F1に設定された文字列中に不正な文字があります。
72076 | データ名Mに1でない値が設定されています。

CBLDCMCF('TLSLN△△△') － サーバ型コネクションの確立要求の受付状態取得（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TLSLN   '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4)   VALUE SPACE.
   02  データ名D   PIC X(28)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F   PIC X(64)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

01  一意名3.
   02  データ名M   PIC 9(9)   COMP VALUE 1.
   02  一意名4.
       03  データ名N   PIC X(4).
       03  データ名O   PIC X(60) VALUE LOW-VALUE.

機能

サーバ型コネクションの確立要求の受付状態を取得します。

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

●データ名A

コネクションの確立要求の受付状態取得を示す要求コード「VALUE 'TLSLN△△△'」を設定します。

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

空白を設定します。

●データ名E

処理対象のMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は0～239です。

●データ名F，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

●データ名M

1を設定します。

●データ名O

MCFで使用する領域です。

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

●データ名B

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

●データ名N

サーバ型コネクションの確立要求の受付状態として，次の値が設定されます。

'LSTN'

受付開始状態

'RTRY'

受付開始処理中状態

'ON_W'

受付開始要求待ち状態

'INIT'

受付終了状態

それぞれの状態のときに使用できる命令文を，次の表に示します。

データ名Nの設定値 | 使用できるCOBOL-UAP作成用プログラム
CBLDCMCF('TONLN△△△') | CBLDCMCF('TOFLN△△△')
LSTN | × | ○
RTRY | × | ○
ON_W | ○ | ○
INIT | ○ | ×

（凡例）

○：使用できます。

×：使用できません。

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TLSLN△△△')が受け付けられません。
71002 | MCFが終了処理中のため，CBLDCMCF('TLSLN△△△')が受け付けられません。
71004 | CBLDCMCF('TLSLN△△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71009 | CBLDCMCF('TLSLN△△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスにサーバ型コネクションの確立要求の受付状態取得を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに空白でない値が設定されています。
72059 | データ名Dに空白でない値が設定されています。
72061 | データ名Eに0以下または240以上の値が設定されています。
72065 | データ名Fに空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。
72076 | データ名Mに1でない値が設定されています。

CBLDCMCF('TOFLN△△△') － サーバ型コネクションの確立要求の受付終了（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TOFLN   '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4)   VALUE SPACE.
   02  データ名D   PIC X(28)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F   PIC X(64)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

機能

サーバ型コネクションの確立要求の受付を終了します。

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

●データ名A

コネクションの確立要求の受付終了を示す要求コード「VALUE 'TOFLN△△△'」を設定します。

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

空白を設定します。

●データ名E

処理対象MCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は1～239です。

●データ名F，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

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

●データ名B

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

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TOFLN△△△')が受け付けられません。
71002 | MCFが終了処理中のため，CBLDCMCF('TOFLN△△△')が受け付けられません。
71004 | CBLDCMCF('TOFLN△△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71009 | CBLDCMCF('TOFLN△△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスにサーバ型コネクションの確立要求の受付終了を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに空白でない値が設定されています。
72059 | データ名Dに空白でない値が設定されています。
72061 | データ名Eに0以下または240以上の値が設定されています。
72065 | データ名Fに空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。

CBLDCMCF('TONLN△△△') － サーバ型コネクションの確立要求の受付開始（COBOL言語）

形式

PROCEDURE DIVISIONの指定

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

DATA DIVISIONの指定

01  一意名1.
   02  データ名A   PIC X(8)   VALUE 'TONLN   '.
   02  データ名B   PIC X(5).
   02  FILLER      PIC X(3).
   02  データ名C   PIC X(4)   VALUE SPACE.
   02  データ名D   PIC X(28)  VALUE SPACE.
   02  データ名E   PIC 9(9)   COMP.
   02  データ名F   PIC X(64)  VALUE SPACE.
   02  データ名G   PIC X(8)   VALUE SPACE.
   02  データ名H   PIC X(8)   VALUE SPACE.
   02  データ名I   PIC X(144) VALUE SPACE.
   02  データ名J   PIC X(184) VALUE SPACE.
   02  データ名K   PIC 9(9)   COMP VALUE ZERO.

01  一意名2.
   02  データ名L   PIC 9(9)   COMP VALUE ZERO.

機能

サーバ型コネクションの確立要求の受付を開始します。

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

●データ名A

コネクションの確立要求の受付開始を示す要求コード「VALUE 'TONLN△△△'」を設定します。

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

空白を設定します。

●データ名E

処理対象のMCF通信サービスのMCF通信プロセス識別子を設定します。設定できる範囲は1～239です。

●データ名F，データ名G，データ名H，データ名I，データ名J

空白を設定します。

●データ名K，データ名L

0を設定します。

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

●データ名B

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

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71001 | MCFが開始処理中のため，CBLDCMCF('TONLN△△△')が受け付けられません。
71002 | MCFが終了処理中のため，CBLDCMCF('TONLN△△△')が受け付けられません。
71004 | CBLDCMCF('TONLN△△△')の処理中にメモリ不足が発生しました。
71005 | 通信障害が発生しました。原因については，メッセージログファイルを参照してください。
71006 | 内部障害が発生しました。原因については，メッセージログファイルを参照してください。
71009 | CBLDCMCF('TONLN△△△')が，該当する通信プロセスではサポートされていません。
71010 | MCF通信プロセスにサーバ型コネクションの確立要求の受付開始を要求しましたが，受け付けられませんでした。原因については，メッセージログファイルを参照してください。
72028 | データ名Aに設定した値が間違っています。
72052 | データ名Kに0でない値が設定されています。
72053 | データ名Lに0でない値が設定されています。
72058 | データ名Cに空白でない値が設定されています。
72059 | データ名Dに空白でない値が設定されています。
72061 | データ名Eに0以下または240以上の値が設定されています。
72065 | データ名Fに空白でない値が設定されています。
72066 | データ名Gに空白でない値が設定されています。
72068 | データ名Hに空白でない値が設定されています。
72070 | データ名Iに空白でない値が設定されています。
72072 | データ名Jに空白でない値が設定されています。

DISABLE － 継続問い合わせ応答の終了（データ操作言語）

形式

DATA DIVISION（通信記述項）の指定

CD  通信記述名
   FOR  I-O  STORAGE
 〔STATUS  KEY  IS  データ名1〕.

PROCEDURE DIVISION（通信文）の指定

DISABLE  通信記述名.

機能

次に示すCALLインタフェースの機能を実現します。

継続問い合わせ応答の終了　CBLDCMCF('CONTEND△')

UAPで値を設定する項目

●FOR句

継続問い合わせ応答の終了を示すI-O STORAGEを設定します。

OpenTP1から値が返される項目

●STATUS KEY句

ステータスコードを受け取りたい場合に設定します。省略した場合は，ステータスコードを受け取れません。データ名1にステータスコードが返されます。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

72000
＜MHPの実行でリターンした場合＞
先頭セグメントを受信するRECEIVE文を呼び出す前に，DISABLE文を呼び出しました。

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

72042
通信記述項にSYMBOLIC TERMINAL句の設定があり，空白以外が設定されています。

72101
継続問い合わせ応答型でないアプリケーションで，DISABLE文を呼び出しました。

72107
DISABLE文を2回以上呼び出しました。

72111
次起動アプリケーションを設定してSEND（応答メッセージの送信）文を呼び出したあと，DISABLE文を呼び出しました。

継続問い合わせ応答型のアプリケーション名を設定してSEND（アプリケーションプログラムの起動）文を呼び出したあと，DISABLE文を呼び出しました。

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

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

形式

DATA DIVISION（通信記述項）の指定

CD  通信記述名
   FOR  ｛INPUT|I-O｝
  〔STATUS  KEY  IS  データ名1〕
  〔SYMBOLIC  TERMINAL  IS  データ名2〕
  〔MESSAGE  DATE  IS  データ名3〕
  〔MESSAGE  TIME  IS  データ名4〕
  〔SYNCHRONOUS  MODE  IS ｛SYNC|ASYNC|データ名6｝〕
  〔WAITING  TIME  IS  データ名11〕.

DATA DIVISION（データ記述項）の指定

01  一意名1.
   02  データ名A   PIC 9(4)  COMP.
   02  データ名B   PIC X(2).
   02  データ名C   PIC X(n).

PROCEDURE DIVISION（通信文）の指定

RECEIVE  通信記述名
  〔FIRST〕 SEGMENT
      INTO  一意名1.

機能

次に示すCALLインタフェースの機能を実現します。ただし，受信できるメッセージの一つのセグメントの最大長は，32763バイトです。

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

同期型メッセージの受信　CBLDCMCF('RECVSYNC')

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

UAPで値を設定する項目

●FOR句

次のどちらかの値を設定します。

INPUT

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

I-O

問い合わせメッセージまたは同期型メッセージの受信

●SYMBOLIC TERMINAL句

非同期型のメッセージ（中間セグメントまたは最終セグメント）の受信，または，同期型のメッセージの受信の場合，論理端末名称を設定したデータ項目を設定します。データ名2にメッセージ入力元の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

非同期型のメッセージ（中間セグメントまたは最終セグメント）の受信の場合，先頭セグメントの受信時に返された論理端末名称を設定してください。

非同期型のメッセージ（先頭セグメント）の受信処理終了後，SYMBOLIC TERMINAL句にはOpenTP1から値が返されます。

●SYNCHRONOUS MODE句

非同期型でメッセージを受信するか，同期型でメッセージを受信するかを設定します。

SYNC

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

ASYNC

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

データ名6

次の値を設定したデータ項目

'0'または'△'：非同期型のメッセージの受信

'1'：同期型のメッセージの受信

省略した場合は，ASYNC（非同期型のメッセージの受信）が設定されます。

●WAITING TIME句

RECEIVE文を実行してから終了するまでの，最大時間を設定したデータ項目を設定します。同期型のメッセージの受信の場合に設定します。

データ名11

監視時間をHHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で設定したデータ項目を設定します。

省略した場合，またはデータ名11に'00000000'を設定した場合は，MCFマネジャ定義のUAP共通定義で設定した同期型受信監視時間（mcfmuap -t recvtim）が設定されます。

●データ名B

MCFで使用する領域です。

●FIRST

先頭セグメントを受信する場合に設定します。

OpenTP1から値が返される項目

●STATUS KEY句

ステータスコードを受け取りたい場合に設定します。省略した場合は，ステータスコードを受け取れません。データ名1にステータスコードが返されます。

●SYMBOLIC TERMINAL句

非同期型のメッセージ（先頭セグメント）の受信の場合，入力元の論理端末名称を受け取りたいときに設定します。省略した場合は，論理端末名称を受け取れません。データ名2にメッセージ入力元の論理端末名称が返されます。

中間セグメントまたは最終セグメントを受信する場合は，ここで返された論理端末名称をSYMBOLIC TERMINAL句に設定します。

●MESSAGE DATE句

メッセージを受信した日付を受け取りたい場合に設定します。省略した場合は，メッセージを受信した日付を受け取れません。データ名3にメッセージを受信した日付がYYMMDD（YY：西暦下2けた　MM：月　DD：日）の形式で返されます。

●MESSAGE TIME句

メッセージを受信した時刻を受け取りたい場合に設定します。省略した場合は，メッセージを受信した時刻を受け取れません。データ名4にメッセージを受信した時刻がHHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で返されます。

●データ名A

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

●データ名C

受信したセグメントの内容が返されます。一つのセグメントで32763バイトまで受信できます。

ステータスコード

ステータスコード
意味

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文を実行できません。

72001
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。

SYMBOLIC TERMINAL句に設定した入力元の論理端末名称は，MCFで定義していません。

RECEIVE文を実行できない論理端末を設定しています。

＜問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合＞
問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

72012
MCFバッファグループ定義のバッファ長が不足しました。

MCF通信プロセスは相手システムからメッセージを受信しましたが，UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。

72013
データ名Cのサイズを超えるセグメントを受信しました。データ名Cのサイズを超えた部分は切り捨てられました。

32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。

72016
WAITING TIME句に設定した値が間違っています。

72020
SYNCHRONOUS MODE句に設定した値が間違っています。

72024
FOR句に設定した値が間違っています。

72036
データ名Cのサイズが不足しています。5バイト以上の領域を確保してください。

73001
データ名11に60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

前回の通信から無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

入力元の論理端末でMCF通信プロセスの内部障害が発生しました。

73002
＜同期型メッセージの受信を行う（FOR句にI-Oを設定，かつ，SYNCHRONOUS MODE句にSYNCを設定または1を設定したデータ名6を設定）場合＞
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，受信を取り消しました。

73005
データ名11に設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

73015
設定した論理端末は，ほかのUAPで仕掛り中です。

73018
データ名11に設定した監視時間が間違っています。

73020
入力元の論理端末は停止しています。

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

RECEIVE － 一時記憶データの受け取り（データ操作言語）

形式

DATA DIVISION（通信記述項）の指定

CD  通信記述名
   FOR  ｛INPUT|I-O｝  STORAGE
 〔STATUS  KEY  IS  データ名1〕.

DATA DIVISION（データ記述項）の指定

01  一意名1.
   02  データ名A   PIC 9(4)  COMP.
   02  データ名B   PIC X(4).
   02  データ名C   PIC X(n).

PROCEDURE DIVISION（通信文）の指定

RECEIVE  通信記述名  ｛MESSAGE|SEGMENT｝
  INTO  一意名1.

機能

次に示すCALLインタフェースの機能を実現します。

一時記憶データの受け取り　CBLDCMCF('TEMPGET△')

一時記憶データ格納バッファ領域（データ名C）は，1～32000バイトの長さを確保してください。

データ名Cの長さを超える一時記憶データがある場合，超えた分については切り捨てます。

データ名Cの長さと比べて一時記憶データの長さの方が短い場合，データ名Cに一時記憶データを設定します。残りの領域については何も設定しません。

受け取り要求実行時，初期状態（継続問い合わせ応答開始後，SEND（一時記憶データの更新）文を1回も実行していない状態）の場合，アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで指定した長さの(00)₁₆の一時記憶データがあるものとして実行します。

受け取り後の一意名1の形式を次に示します。

UAPで値を設定する項目

●FOR句

一時記憶データの受け取りであることを示す，INPUT STORAGEまたはI-O STORAGEを設定します。

●データ名B

MCFで使用する領域です。

●MESSAGE，SEGMENT

どちらかを設定します。

OpenTP1から値が返される項目

●STATUS KEY句

ステータスコードを受け取りたい場合に設定します。省略した場合は，ステータスコードを受け取れません。データ名1にステータスコードが返されます。

●データ名A

前回更新した一時記憶データの長さ＋6が返されます。初期状態の場合，継続問い合わせ応答用一時記憶領域の長さ（アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値）＋6が返されます。

●データ名C

受け取った一時記憶データが返されます。初期状態の場合，継続問い合わせ応答用一時記憶領域の長さ（アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドの指定値）分だけ(00)₁₆が埋められます。

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
72000 | SPPではRECEIVE（一時記憶データの受け取り）文を呼び出せません。
72013 | 一時記憶データ格納バッファ領域の長さ（データ名Cの長さ）を超える一時記憶データを受け取りました。一時記憶データ格納バッファ領域の長さを超える一時記憶データを切り捨てました。
72016 | 通信文にBEFORE ERASINGが設定されています。
72036 | 受け取り領域の長さ（一意名1の長さ）が不足しています。7バイト以上の領域を確保してください。
72042 | 通信記述項にSYMBOLIC TERMINAL句の設定があり，空白以外が設定されています。
72101 | 継続問い合わせ応答型でないアプリケーションで，RECEIVE（一時記憶データの受け取り）文を呼び出しました。
72106 | 先頭セグメントを受信するRECEIVE文を呼び出す前に，RECEIVE（一時記憶データの受け取り）文を呼び出しました。
72107 | DISABLE文を呼び出したあとで，RECEIVE（一時記憶データの受け取り）文を呼び出しました。
上記以外 | プログラムの破壊などによる，予期しないエラーが発生しました。

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

形式

DATA DIVISION（通信記述項）の指定

CD  通信記述名
   FOR  ｛OUTPUT｜I-O｝
 〔STATUS  KEY  IS  データ名1〕
 〔SYMBOLIC  TERMINAL  IS  データ名2〕
 〔SYNCHRONOUS  MODE  IS  ｛SYNC｜ASYNC｜データ名6｝〕
 〔SWITCHING  MODE  IS  ｛NORMAL｜PRIOR｜データ名7｝〕
 〔NEXT  TRANSACTION  IS データ名8〕
 〔DETAIL  MODE  IS  データ名10〕
 〔WAITING  TIME  IS  データ名11〕.

DATA DIVISION（データ記述項）の指定

01  一意名1.
   02  データ名A   PIC 9(4)  COMP.
   02  データ名B   PIC X(2).
   02  データ名C   PIC X(n).
01  一意名3.
   02  データ名D   PIC 9(4)  COMP.
   02  データ名E   PIC X(2).
   02  データ名F   PIC X(n).

PROCEDURE DIVISION（通信文）の指定

SEND  通信記述名  FROM  一意名1
   〔WITH  ｛EMI｜一意名2｝〕
   〔BEFORE  RECEIVING  MESSAGE  INTO  一意名3〕.

機能

次に示すCALLインタフェースの機能を実現します。

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

一方送信メッセージの送信　CBLDCMCF('SEND△△△△')

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

同期型メッセージの送信　CBLDCMCF('SENDSYNC')

送信できるメッセージの一つのセグメントの最大長は，32000バイトです。単一セグメントだけ扱えます。

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

同期型メッセージの送受信の場合，セグメントを受信する領域（一意名3で示す領域）も設定します。受信できるメッセージの一つのセグメントの最大長は，32763バイトです。

セグメントを受信する領域の形式を次に示します。

UAPで値を設定する項目

●FOR句

次のどちらかの値を設定します。

OUTPUT

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

I-O

応答メッセージの送信，同期型のメッセージの送受信，または，同期型のメッセージの送信。

●SYMBOLIC TERMINAL句

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

●SYNCHRONOUS MODE句

非同期型でメッセージを送信するか，同期型でメッセージを送信するかを設定します。

SYNC

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

同期型のメッセージの送信または同期型のメッセージの送受信のとき設定します。

ASYNC

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

一方送信メッセージの送信または応答メッセージの送信のとき設定します。

データ名6

次の値を設定したデータ項目

'0'または'△'：非同期型のメッセージの送信

'1'：同期型のメッセージの送信

省略した場合は，ASYNC（非同期型のメッセージの送信）が設定されます。

●SWITCHING MODE句

一方送信メッセージの場合に，一般か優先かを設定します。

NORMAL

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

PRIOR

優先の一方送信メッセージ

データ名7

次の値を設定したデータ項目

'0'または'△'：一般の一方送信メッセージ

'1'：優先の一方送信メッセージ

省略した場合は，NORMAL（一般の一方送信メッセージ）が設定されます。

●NEXT TRANSACTION句

＜継続問い合わせ応答形態の場合＞

次のメッセージ受信時に起動するアプリケーションを設定します。データ名8に起動するMHPのアプリケーション名を設定します。アプリケーション名は最大8バイトの長さです。8バイトに満たない名称を設定する場合は，後ろを空白で埋めてください。

NEXT TRANSACTION句を省略，または，データ名8に空白を設定した場合，実行中のアプリケーションを次のメッセージ受信時に再び起動します。

応答メッセージの送信を行うSEND（メッセージの送信）文を呼び出すサービスでDISABLE（継続問い合わせ応答の終了）文を呼び出す場合はNEXT TRANSACTION句を省略，または，データ名8に空白を設定してください。

継続問い合わせ応答を引き継いだエラーイベントで応答メッセージの送信を行うSEND（メッセージの送信）文を発行する際に，NEXT TRANSACTION句を省略，または，データ名8に空白を設定した場合，継続問い合わせ応答を終了します。ただし，継続問い合わせ応答を引き継いだエラーイベントで，SEND（アプリケーションプログラムの起動）文を発行して継続問い合わせ応答型のアプリケーションを起動し，起動先のアプリケーションで応答メッセージの送信を行うSEND（メッセージの送信）文を発行する際に，NEXT TRANSACTION句を省略，または，データ名8に空白を設定した場合，継続問い合わせ応答を終了しないで，SEND（アプリケーションプログラムの起動）文を発行したときに設定した継続問い合わせ応答型のアプリケーションを次のメッセージ受信時に再び起動します。

＜継続問い合わせ応答形態以外の場合＞

NEXT TRANSACTION句を省略，または，データ名8に空白を設定します。

●DETAIL MODE句

非同期型のメッセージの送信の場合に，出力通番を付けるかどうかを設定します。データ名10に次のどちらかを設定します。

データ名10

次の値を設定したデータ項目

'0'または'△'：出力通番を付けます。

'1'：出力通番を付けません。

省略した場合は，出力通番を付けません。

●WAITING TIME句

SEND文を実行してから終了するまでの，最大時間を設定したデータ項目を設定します。同期型メッセージの送受信，または同期型メッセージの送信の場合に設定します。

データ名11

監視時間の値をHHMMSS00（HH：時　MM：分　SS：秒　00は固定）の形式で設定したデータ項目を設定します。

省略した場合，またはデータ名11に'00000000'を設定した場合，同期型メッセージの送受信のときは，MCFマネジャ定義のUAP共通定義で指定した同期型送受信監視時間（mcfmuap -t sndrcvtim）が設定されます。同期型メッセージの送信のときは，MCFマネジャ定義のUAP共通定義で指定した同期型送信監視時間（mcfmuap -t sndtim）が設定されます。

●データ名A

送信するセグメントの長さ＋4を設定します。

●データ名B

送信完了通知イベントを設定します。データ名Bとビットの設定値の関係を次に示します。

送信完了通知イベントの要否は，データ名Bの領域の2⁴ビット目で設定します。

領域の2⁴ビットに1を設定

送信完了通知イベントを通知させます。ただし，送信完了通知イベント処理用のMHPをMCFアプリケーション定義で指定していない場合は無効です。

領域の2⁴ビットに0を設定

送信完了通知イベントを通知させません。

●データ名C

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

●データ名E

MCFで使用する領域です。

●WITH句

送信するセグメントが単一の論理メッセージであることを設定します。

EMI

単一セグメントを設定します。

一意名2

次の値を設定したデータ項目

'2'：EMI（単一セグメント）

指定を省略した場合は，EMI（単一セグメント）を設定します。

●BEFORE句

同期型のメッセージの送受信の場合に，セグメントを受信するデータ項目（一意名3）を設定します。一方送信メッセージの送信，応答メッセージの送信，または，同期型のメッセージの送信の場合，BEFORE句を省略します。

OpenTP1から値が返される項目

●STATUS KEY句

ステータスコードを受け取りたい場合に設定します。省略した場合は，ステータスコードを受け取れません。データ名1にステータスコードが返されます。

●データ名D

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

●データ名F

受信したセグメントの内容が返されます。一つのセグメントで32763バイトまで受信できます。

ステータスコード

ステータスコード
意味

00000
正常に終了しました。

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

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

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

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

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

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

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

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

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

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

先頭セグメントを受信するRECEIVE文を実行する前に，SEND文を実行しています。

非応答型のアプリケーションからの問い合わせ応答をしない（UAP共通定義（mcfmuap -c）のnoansreplyオペランドを省略，またはnoを指定）場合に，非応答型のアプリケーションから応答メッセージを送信しています。

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

トランザクションでないSPPの処理から，一方送信メッセージを送信するSEND文を実行しています。

SPPでは，応答メッセージを送信するSEND文を実行できません。

72001
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。

SYMBOLIC TERMINAL句に設定した出力先の論理端末名称は，MCFで定義していません。

SEND文を実行できない論理端末を設定しています。

＜応答メッセージの送信を行う（FOR句にI-Oを設定し，かつ，SYNCHRONOUS MODE句を省略またはSYNCHRONOUS MODE句にASYNCを設定またはSYNCHRONOUS MODE句に0もしくは空白を設定したデータ名6を設定）場合＞

入力元論理端末は，応答メッセージの送信をサポートしていません。

入力元論理端末は，問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用していません（コネクション定義（mcftalccn -l）のreplymsgオペランドを省略，またはnoを指定）。

＜同期型メッセージの送信または同期型メッセージの送受信を行う（FOR句にI-Oを設定し，かつ，SYNCHRONOUS MODE句にSYNCを設定または1を設定したデータ名6を設定）場合＞
問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合，問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。

72008
応答型のアプリケーションからSEND（アプリケーションプログラムの起動）文を呼び出して応答型のアプリケーションを起動したあとで，応答メッセージを送信するSEND文を呼び出しました。

継続問い合わせ応答型のアプリケーションからSEND（アプリケーションプログラムの起動）文を呼び出して継続問い合わせ応答型のアプリケーションを起動したあとで，応答メッセージを送信するSEND文を呼び出しました。

72011
継続問い合わせ応答型でないアプリケーションが，次起動アプリケーションを設定して，応答メッセージを送信するSEND文を呼び出しました。

72012
MCFバッファグループ定義のバッファ長が不足しました。

MCF通信プロセスは相手システムからメッセージを受信しましたが，UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。

72013
データ名Fのサイズを超えるセグメントを受信しました。データ名Fのサイズを超えた部分は切り捨てられました。

32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。

72017
DETAIL MODE句に設定した値が間違っています。

72018
SWITCHING MODE句に設定した値が間違っています。

72020
SYNCHRONOUS MODE句に設定した値が間違っています。

72024
FOR句に設定した値が間違っています。

72026
WITH句に設定した値が間違っています。

72036
データ名Fのサイズが不足しています。5バイト以上の領域を確保してください。

72037
非同期型メッセージの送信（SYNCHRONOUS MODE句を省略，またはSYNCHRONOUS MODE句にASYNCを設定，またはSYNCHRONOUS MODE句に0もしくは空白を設定したデータ名6を設定）の場合，BEFORE句は設定できません。

72041
データ名Aに0から4バイト，またはマイナス値を設定しています。

72044
DISABLE文を呼び出したあとで，次起動アプリケーションを設定して応答メッセージを送信するSEND文を呼び出しました。

72045
NEXT TRANSACTION句に継続問い合わせ応答型でないアプリケーションのアプリケーション名を設定して応答メッセージを送信するSEND文を呼び出しました。

72046
NEXT TRANSACTION句に設定したアプリケーション名が異なる応答メッセージの送信を行うSEND文を2回以上呼び出しました。

72047
NEXT TRANSACTION句にアプリケーション属性定義（mcfaalcap）に定義されていないアプリケーション名を設定して応答メッセージを送信するSEND文を呼び出しました。

72073
非同期メッセージを送信処理中です。

73001
データ名11に60秒を加算した時間が経過しましたが，MCF通信プロセスからの応答がありません。

無通信監視時間（コネクション定義（mcftalccn -k）のnotrftimeオペランド指定値）が経過しましたが，相手システムからの通信がありません。

相手システムからメッセージを受信しましたが，受信バッファを確保できませんでした。

メッセージの送信処理中に相手システムからメッセージを受信したため，非同期受信処理を行いましたが，障害（UOC障害など）が発生しました。

出力先の論理端末でMCF通信プロセスの内部障害が発生しました。

73002
＜同期型メッセージの送信または同期型メッセージの送受信を行う（FOR句にI-Oを設定し，かつ，SYNCHRONOUS MODE句にSYNCを設定または1を設定したデータ名6を設定）場合＞
コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されたため，送信を抑止しました。

73003
メッセージ受信仕掛り中です。

73005
WAITING TIME句に設定した時間が経過しましたが，論理端末からの応答がありません。

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

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

73015
出力先の論理端末は，ほかのUAPで仕掛り中です。

73018
WAITING TIME句に設定した値が間違っています。

73019
メッセージ送信完了監視タイマのタイムアウトが発生しました。

73020
出力先の論理端末は停止しています。

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

SEND － 一時記憶データの更新（データ操作言語）

形式

DATA DIVISION（通信記述項）の指定

CD  通信記述名
   FOR  I-O  STORAGE
 〔STATUS  KEY  IS  データ名1〕.

DATA DIVISION（データ記述項）の指定

01  一意名1.
   02  データ名A   PIC 9(4)  COMP.
   02  データ名B   PIC X(4).
   02  データ名C   PIC X(n).

PROCEDURE DIVISION（通信文）の指定

SEND  通信記述名  FROM  一意名1.

機能

次に示すCALLインタフェースの機能を実現します。

一時記憶データの更新　CBLDCMCF('TEMPPUT△')

アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドには，更新する一時記憶データ長（データ名Aから6を減算した値）以上の値を指定してください。

更新する領域（一意名1で示す領域）の形式を次に示します。

UAPで値を設定する項目

●FOR句

一時記憶データの更新であることを示す，I-O STORAGEを設定します。

●データ名A

一意名1の長さ（データ名Aの長さ（2）＋データ名Bの長さ（4）＋データ名Cの長さ）を設定します。

●データ名B

MCFで使用する領域です。

●データ名C

一時記憶データが格納されている領域を設定します。

OpenTP1から値が返される項目

●STATUS KEY句

ステータスコードを受け取りたい場合に設定します。省略した場合は，ステータスコードを受け取れません。データ名1にステータスコードが返されます。

ステータスコード

ステータスコード | 意味
00000 | 正常に終了しました。
71103 | 一時記憶データを更新するための領域をメモリ上に確保できませんでした。
72000 | SPPではSEND（一時記憶データの更新）文を呼び出せません。
72024 | FOR句に設定した値が間違っています。
72035 | データ名Aに設定した更新データの長さが，アプリケーション属性定義（mcfaalcap -n）のtempsizeオペランドで定義した長さを超えています。
データ名Aに0から6バイト，またはマイナス値を設定しています。
72042 | 通信記述項にSYMBOLIC TERMINAL句の設定があり，空白以外が設定されています。
72101 | 継続問い合わせ応答型でないアプリケーションで，SEND（一時記憶データの更新）文を呼び出しました。
72105 | RECEIVE（一時記憶データの受け取り）文を呼び出す前に，SEND（一時記憶データの更新）文を呼び出しました。
72106 | 先頭セグメントを受信するRECEIVE文を呼び出す前に，SEND（一時記憶データの更新）文を呼び出しました。
72107 | DISABLE文を呼び出したあとで，SEND（一時記憶データの更新）文を呼び出しました。
上記以外 | プログラムの破壊などによる，予期しないエラーが発生しました。

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

この章では，TP1/NET/TCP/IPのユーザオウンコーディングのインタフェース，およびMCFイベントのインタフェースについて説明します。

＜この章の構成＞

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

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

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

メッセージ送受信のUAPを，より多様な業務に対応させるために補助するプログラムをユーザオウンコーディング（以降，UOCと略します）といいます。

TP1/NET/TCP/IPで使用するUOCを次に示します。

入力セグメント判定UOC

入力メッセージ編集UOC

出力メッセージ編集UOC

送信メッセージ通番編集UOC

コネクション確立UOC

受信メッセージ判定UOC

受信メッセージの保留判定UOC

UOCを使用する場合は，あらかじめMCFメイン関数またはUAPのメイン関数にUOC関数のアドレスを登録し，UOC関数のオブジェクトファイルをMCF通信プロセスまたはUAPの実行形式プログラムに結合（リンケージ）しておく必要があります。また，UOCはC言語で作成します。

＜この節の構成＞

5.1.1　入力セグメントの判定

5.1.2　入力セグメント判定UOCインタフェース

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

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

5.1.5　出力メッセージの編集

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

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

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

5.1.9　コネクション確立要求の判定

5.1.10　コネクション確立UOCインタフェース

5.1.11　受信メッセージ判定

5.1.12　受信メッセージ判定UOCインタフェース

5.1.13　受信メッセージの保留判定

5.1.14　受信メッセージの保留判定UOCインタフェース

5.1.15　UOC作成上の注意事項

5.1.1　入力セグメントの判定

入力セグメント判定UOCは，メッセージを受信したとき，そのメッセージでセグメントが完成しているかどうか，完成している場合は，完成したセグメントと後続のセグメントの境界がどこであるかを判定します。UOCは，相手システムからのメッセージを受信するたびに起動します。セグメントが未完成のとき（後続メッセージがある場合）は，後続メッセージに対して，監視タイマを設定できます。

ただし，コネクションの切断を抑止している場合は，監視タイマを設定しないでください。コネクションの切断抑止については，「2.3.2(5)　コネクションの切断抑止」を参照してください。

なお，入力セグメント判定UOCは，次に示す条件に該当する場合は呼び出されません。

MCFイベントの発生

UAPからのアプリケーションプログラムの起動

受信メッセージの組み立て機能の使用

メッセージのデータ形式の詳細については，「2.3.7　メッセージの分割と組み立て」を参照してください。

＜この項の構成＞

(1)　入力セグメントの判定

(2)　後続メッセージ監視タイマの設定

(3)　UOCエラーリターン処理

(4)　UOCパラメタ不正の場合の処理

(5)　OpenTP1への組み込み方法

(6)　標準提供UOC

(1)　入力セグメントの判定

TP1/NET/TCP/IPはUOCを呼び出すと，受信したメッセージのセグメントが格納されている受信バッファを引き渡します。未完成の受信メッセージがTP1/NET/TCP/IPに蓄積されている場合，受信バッファには未完成の受信メッセージと今回受信したメッセージが連結して格納されます。UOCでは，受信バッファに格納された受信メッセージの内容を基に，セグメントが完成しているかどうかを判定し，リターン値を設定します。UOCでの判定結果別に，設定する必要がある情報について説明します。

セグメントが未完成の場合

該当メッセージの残りサイズを設定する必要があります。UOCが呼び出された時点で残りサイズを一意に決定できないときは，一意に決定できる情報（セグメントの全体長など）が格納された位置までの残りサイズ，または，受信バッファの残りサイズを設定してください。

セグメントが完成した場合

該当メッセージのサイズと次メッセージについての情報を設定する必要があります。次メッセージがある場合，TP1/NET/TCP/IPは次メッセージの先頭を受信バッファの先頭に再配置して，再度UOCを呼び出します。

入力セグメントの判定処理の流れを次の図に示します。ここでは，データAとデータBを相手システムから送信する場合を例に説明します。

図5-1　入力セグメントの判定処理の流れ

各パラメタに設定した値が不正の場合，TP1/NET/TCP/IPはMCFイベントを通知して，コネクションを解放します。

(2)　後続メッセージ監視タイマの設定

セグメントが未完成のとき，必要に応じて後続メッセージ監視タイマを設定できます。後続メッセージ監視タイマのセットを指示したあとで後続メッセージのタイムアウトが発生したときは，コネクションを解放してMCFイベント処理用MHPを起動します。このとき，該当メッセージは破棄されます。また，各パラメタに設定した値が不正の場合，TP1/NET/TCP/IPはMCFイベントを起動して，コネクションを解放します。

ユーザが作成する入力セグメント判定UOCの処理の流れを次の図に示します。

図5-2　入力セグメント判定の処理

注※1

残っている該当メッセージのサイズを示します。

UOCを呼び出した時点で残っている該当メッセージのサイズを一意に決定できない場合は，一意に決定できる情報が格納された位置までの残りサイズ，または受信バッファの残りサイズを設定してください。

注※2

次メッセージのサイズ，次メッセージの先頭アドレス，該当メッセージのサイズを示します。

(3)　UOCエラーリターン処理

UOCからDCTCP_UOC_SGCK_NGでリターンした場合，TP1/NET/TCP/IPは障害通知イベント（CERREVT）を通知します。

(4)　UOCパラメタ不正の場合の処理

UOCで設定した値に不正があった場合，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知してコネクションを解放します。該当するメッセージは破棄します。

(5)　OpenTP1への組み込み方法

スタート関数（dc_mcf_svstart）を発行するMCFメイン関数に，作成したUOCの関数アドレスを設定します。入力セグメント判定UOCの関数アドレスは任意に決められます。UOC関数をコンパイルして生成したUOCオブジェクトファイルを，UOC関数を登録したMCFメイン関数と結合して，TP1/NET/TCP/IPの実行形式プログラムを生成します。MCFメイン関数の詳細については，「8.2　MCFメイン関数の作成」を参照してください。

(6)　標準提供UOC

入力セグメント判定UOCには，TP1/NET/TCP/IPが標準提供するUOC（標準提供UOC）があります。標準提供UOCを使用する場合は，MCFメイン関数に標準提供UOC関数（dc_mcf_stduoc_tcp_segchk）の関数アドレスを登録します。

標準提供する入力セグメント判定UOCが正常に動作するためには，受信するメッセージの先頭4バイト（ヘッダ）にメッセージ全体の長さ（メッセージのサイズ）が設定されていなければなりません。メッセージのサイズはバイト順序がビッグエンディアン※である整数型でなければなりません。また，標準提供の入力セグメント判定UOCを使用する場合，メッセージの先頭にアプリケーション名を設定できなくなります。このため，アプリケーション名は入力メッセージ編集UOCなど，別の方法で決定してください。また，セグメント未完のときの後続メッセージに対する監視タイマ値を30秒で設定します。

メッセージの形式を次に示します。

注※

ビッグエンディアンとはバイトを低い方から順番に並べて，最下位のビットを最上位のバイトに置く方式のことです。

(a)　妥当性のチェック

入力セグメント判定UOCは，ヘッダ（メッセージのサイズ）の妥当性をチェックします。

受信メッセージの先頭4バイトに格納されている値（メッセージのサイズ）が4バイト未満の場合は，エラーリターンします。

(b)　エラー時の設定内容

入力セグメント判定UOCでエラーを検出すると，リターンコードにDCTCP_UOC_SGCK_NGを設定します。その場合，詳細リターンコード（rtn_detail）に-19001（メッセージのサイズ不正）を設定します。

(c)　処理の流れ

標準提供UOCの処理の流れを次の図に示します。

図5-3　標準提供UOCの処理の流れ

注※1

残っている該当メッセージのサイズを示します。

注※2

次メッセージのサイズ，次メッセージの先頭アドレス，該当メッセージのサイズを示します。

(d)　UAPやUOCに通知するメッセージの形式

UAPやUOCに通知するメッセージの形式を次に示します。

ホストバイトオーダがリトルエンディアンのOS（LinuxまたはWindows）では，ビックエンディアンで設定されたメッセージサイズを参照する場合，UAPまたはUOCでバイトオーダを変換してください。

5.1.2　入力セグメント判定UOCインタフェース

入力セグメント判定UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　コーディング例

(1)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG uoc_func(dctcp_uoc_sgck *parm)

　K&R版 Cの場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG    uoc_func(parm)

dctcp_uoc_sgck *parm ;

(2)　説明

uoc_func（入力セグメント判定UOC）を呼び出すとき，MCFは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　dctcp_uoc_sgckの内容

typedef struct {
   DCLONG pro_kind;            …プロトコル種別
   char le_name[9];            …論理端末名称
   char reserve1[7];           …予備
   DCLONG rcv_prim;            …受信サービスプリミティブ
   char *rcv_data_adr;         …受信データ先頭アドレス
   DCLONG rcv_data_size;       …受信データ有効サイズ
   char *uoc_inf_adr;          …MCF使用領域
   DCLONG uoc_inf_size;        …MCF使用領域
   dctcp_sguoc_prot *pro_indv_ifa;
                               …プロトコル個別インタフェース
                                 領域アドレス
   dctcp_uoctimer_inf *ptimerinf_adr;
                               …プロトコルタイマ情報アドレス
   DCLONG rtn_detail;          …詳細リターンコード
   DCLONG rcv_buf_size;        …受信バッファサイズ
   DCLONG reserve2[1];         …予備
} dctcp_uoc_sgck;

(b)　dctcp_uoctimer_inf（タイマ情報），dctcp_sguoc_prot（領域アドレス）の内容

typedef struct {
   DCLONG timer_code;          …タイマセット指示
   DCLONG timer_value;         …後続メッセージ監視タイマ値
   DCLONG timer_result;        …MCF使用領域
   DCLONG reserve1[2];         …予備
} dctcp_uoctimer_inf;

typedef struct {
   DCLONG rest_data_size;      …残っている該当メッセージのサイズ
   DCLONG next_data_size;      …次メッセージの有効長
   char *next_data_adr;        …次メッセージの先頭アドレス
   DCLONG now_data_size;       …該当メッセージの有効長
   DCLONG reserve[2];          …予備
} dctcp_sguoc_prot;

(4)　MCFが値を設定する項目

(a)　dctcp_uoc_sgck

pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_TCP

TCP/IPプロトコル

le_name
メッセージを入力した論理端末の名称が設定されます。

rcv_prim
受信サービスプリミティブとして，次のどちらかの値が設定されます。

DCMCF_UOC_RCV_BRD

一方送信メッセージの受信，問い合わせメッセージの受信または同期型メッセージの受信

DCMCF_UOC_RCV_REP_SR

同期型メッセージの送受信関数によるメッセージの受信

rcv_data_adr
受信したメッセージの先頭アドレスが設定されます。

rcv_data_size
受信したメッセージの有効長が設定されます。

uoc_inf_adr
MCFで使用するパラメタです。

uoc_inf_size
MCFで使用するパラメタです。

pro_indv_ifa
プロトコル個別インタフェース領域アドレスが設定されます。

ptimerinf_adr
プロトコルタイマ情報アドレスが設定されます。

rcv_buf_size
受信したメッセージを格納しているバッファ長が設定されます。

(b)　dctcp_uoctimer_inf（タイマ情報）

timer_result
MCFで使用するパラメタです。

(5)　ユーザが値を設定する項目

(a)　dctcp_uoc_sgck

rtn_detail
詳細リターンコードを設定できます。このコードは，UOCがDCTCP_UOC_SGCK_NGをリターンしたときに，MCFに返されます。MCFは，詳細リターンコードをメッセージログファイルに出力します。
詳細リターンコードは，-19999～-19000の範囲で指定してください。
なお，標準提供の入力セグメント判定UOCは，詳細リターンコードとして-19001を返します。

(b)　dctcp_sguoc_prot（領域アドレス）

rest_data_size
残っている該当メッセージのサイズを設定します。
受信したメッセージのセグメントが未完成のときは，不足分のメッセージのサイズを設定します。DCTCP_UOC_SGCK_OK_NSEGでリターンした場合だけ有効です。

next_data_size
次のメッセージのサイズを設定します。
受信したメッセージのセグメントが完成しているとき，次のメッセージが含まれていれば，次のメッセージのサイズを設定します。含まれていない場合は0を設定します。DCTCP_UOC_SGCK_OK_LASTでリターンした場合だけ有効です。

next_data_adr
次のメッセージの先頭アドレスを設定します。next_data_sizeが0でない場合に設定します。

now_data_size
該当するメッセージのサイズを設定します。next_data_sizeが0でない場合に設定します。

(c)　dctcp_uoc_timer_inf（タイマ情報）

timer_code
後続メッセージ監視タイマを設定します。
受信したメッセージのセグメントが未完成のとき，後続メッセージの受信に対して監視タイマをセットするかどうかを設定します。DCTCP_UOC_SGCK_OK_NSEGでリターンした場合だけ有効です。

DCTCP_TIME_SET

監視タイマをセットします。

DCTCP_TIME_NO_SET

監視タイマをセットしません。

timer_value　　～〈10進数字〉((1～2550))（単位：秒）
後続メッセージの監視タイマの値を設定します。
この値は，監視タイマをセットする場合に設定します。timer_codeがDCTCP_TIME_SETの場合だけ有効です。

(6)　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値 | 意味
DCTCP_UOC_SGCK_OK_NSEG | 正常リターン（セグメント未完成）
DCTCP_UOC_SGCK_OK_LAST | 正常リターン（最終セグメント受信完了）
DCTCP_UOC_SGCK_NG | セグメント判定エラー

DCTCP_UOC_SGCK_OK_NSEGでリターンした場合は，残っている該当メッセージのサイズの値が有効になります。DCTCP_UOC_SGCK_OK_LASTでリターンした場合は，次のメッセージのサイズの値が有効になります。

(7)　コーディング例

入力セグメント判定UOCのコーディング例（K&R版）を次に示します。また，このコーディング例を次のファイルで提供しています。

適用OSがWindowsの場合

%DCDIR%¥examples¥mcf¥tcpip¥cmlib¥c¥uoc.c

適用OSがLinuxの場合

/opt/OpenTP1/examples/mcf/TCPIP/cmlib/c/uoc.c

その他の適用OSの場合

/BeTRAN/examples/mcf/TCPIP/cmlib/c/uoc.c

/***********************************************************/
/*                                                         */
/* name = 入力セグメント判定UOC名                             */
/*                                                         */
/* func = 入力セグメント判定UOC（TP1/NET/TCP/IP用）            */
/* （メッセージの先頭4バイトにメッセージ                         */
/*   サイズがint型で設定されている場合）                        */
/*                                                         */
/***********************************************************/
/***********************************************************/
/*    ヘッダファイル                                         */
/***********************************************************/
#include <stdio.h>         /* UNIXシステムヘッダ             */
#include <sys/types.h>
#include <netinet/in.h>
#include <dcmcf.h>         /* TP1/Message Control 提供ヘッダ */
#include <dcmcfuoc.h>      /* TP1/NET/TCP/IP UOC 用ヘッダ    */
#include <dcmtcpu.h>       /* TP1/NET/TCP/IP ヘッダ         */

/***********************************************************/
/*    定数宣言                                              */
/***********************************************************/
#define ERR_RCVMSG_LEN  -19001
                    /* エラー詳細（受信メッセージサイズ不正）   */
#define DCTCP_TIME_VALUE  30
                    /* 後続メッセージ監視タイマ設定値（秒）    */
/***********************************************************/
/* dc_mcf_stduoc_tcp_segchk                                */
/*                                                         */
/* name = 入力セグメントを判定する。                           */
/*                                                         */
/* return = DCTCP_UOC_SGCK_OK_NSEG ：正常（セグメント未完成）  */
/*          DCTCP_UOC_SGCK_OK_LAST ：正常（最終セグメント受信完了）*/
/*          DCTCP_UOC_SGCK_NG      ：セグメント判定エラー     */
/*          <error detail>                                 */
/*             1 ：受信メッセージサイズ不正                    */
/* memo =1. メッセージの先頭4バイトにメッセージサイズが           */
/*          int型で設定されていることを前提とする。              */
/*                                                         */
/***********************************************************/

DCLONG dc_mcf_stduoc_tcp_segchk(parm)
dctcp_uoc_sgck *parm;
   /* parm <parm=UOCインタフェース情報テーブルのアドレス>       */
   /* 属性 <type=dctcp_uoc_sgck *>                         */
{
/***** define valiable（dc_mcf_stduoc_tcp_segchk）**********/
 DCLONG   rcode ;
 int      *bufadr ;              /* 受信データ格納領域ポインタ  */
 DCLONG   msglen ;              /* メッセージサイズ */
 DCLONG  next_msglen ;          /* 次メッセージサイズ */
 dctcp_sguoc_prot *proadr ;   /* プロトコル個別インタフェース*/
                              /* 領域ポインタ */

/***** procedure start（dc_mcf_stduoc_tcp_segchk）**********/
 bufadr = (long *)parm->rcv_data_adr;
       /* CAST変換で受信データ格納領域のポインタ取得           */
 proadr = (dctcp_sguoc_prot *)parm->pro_indv_ifa;
       /* CAST変換でプロトコル個別インタフェース領域のポインタ取得 */
 if (parm->rcv_data_size < sizeof(msglen)) {
       /* ヘッダは未完成か？                                  */
   proadr->rest_data_size =
     sizeof(msglen) - parm->rcv_data_size;
       /* 残り該当メッセージサイズに残りヘッダサイズを設定       */
   parm->ptimerinf_adr->timer_code = DCTCP_TIME_SET;
                                 /* タイマセット設定 */
   parm->ptimerinf_adr->timer_value = DCTCP_TIME_VALUE;
                                 /* タイマ値設定 */
   return(DCTCP_UOC_SGCK_OK_NSEG);
                                 /* セグメント未完成でリターン */
 }
 msglen = ntohl(*bufadr);
        /* メッセージの先頭4バイトよりメッセージサイズを取得 */
 if (msglen < sizeof(msglen)) {
        /* 受信メッセージサイズは不正か？ */
   parm->rtn_detail = ERR_RCVMSG_LEN;
        /* 詳細リターンコード設定 */
   return(DCTCP_UOC_SGCK_NG);  
        /* セグメント判定エラー */
 }

 next_msglen = parm->rcv_data_size - msglen;
        /* 次メッセージサイズの算出 */

 if (next_msglen >=0) {          /* セグメント完成か？ */

 /******** セグメント完成時の処理 ********/
   if (next_msglen > 0) {        /* 次メッセージはあるか？ */
     /******** 次メッセージありの場合 ********/
     proadr->next_data_size = next_msglen;
                                 /* 次メッセージサイズ設定 */
     proadr->next_data_adr = parm->rcv_data_adr + msglen;
                            /* 次メッセージ先頭アドレス設定 */
     proadr->now_data_size = msglen;
                            /* 該当メッセージサイズ設定 */
   }else{
     /******** 次メッセージなしの場合 ********/
     proadr->next_data_size = NULL;
                            /* 次メッセージサイズにヌルを設定 */
   }
   proadr->rest_data_size = NULL;
                            /* 残り該当メッセージサイズクリア */
   rcode = DCTCP_UOC_SGCK_OK_LAST;
                            /* 最終セグメント受信完了 */
 }else{
 /******** セグメント未完成時の処理 ********/
   proadr->rest_data_size = -next_msglen;
                            /* 残り該当メッセージサイズ設定 */
   parm->ptimerinf_adr->timer_code = DCTCP_TIME_SET;
                            /* タイマセット設定 */
   parm->ptimerinf_adr->timer_value = DCTCP_TIME_VALUE;
                            /* タイマ値設定 */
   rcode = DCTCP_UOC_SGCK_OK_NSEG;
                            /* セグメント未完成 */
 }
 return(rcode);             /* リターン */
}

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

入力メッセージ編集UOCは，受信した論理メッセージをユーザ任意の形式に変換します。次に，受信した論理メッセージを基に，ユーザは任意のアプリケーション名を決定できます。標準提供の入力セグメント判定UOCを使用する場合，受信メッセージでアプリケーション名を決定できなくなります。ユーザが入力メッセージ編集UOC，または論理端末定義（mcftalcle）の-vオプションで，アプリケーション名を決定してください。UOCは，MHPを起動するメッセージのセグメントを受信すると起動します。

なお，入力メッセージ編集UOCは，次に示す条件に該当する場合は呼び出されません。

MCFイベントの発生時

UAPからのアプリケーションプログラムの起動

ユーザは，MCFメイン関数でUOC関数アドレスを設定します。また，必要に応じてメッセージ編集用バッファグループ番号（コネクション定義（mcftalccn -e）のmsgbufオペランド）を定義します。

＜この項の構成＞

(1)　入力メッセージの編集

(2)　アプリケーション名の決定

(3)　UOCエラーリターン処理

(4)　UOCパラメタ不正の場合の処理

(5)　OpenTP1への組み込み方法

(1)　入力メッセージの編集

受信したメッセージが格納されている受信バッファ，および定義で指定した編集バッファを引き渡します。UOCでは，これらのバッファを使用して，入力メッセージの編集ができます。

また，UAPに通知するメッセージのセグメントは，受信バッファ，または編集バッファのどちらかに格納されたものを使用できます。どちらのセグメントを使用するかは，UOCから返されるリターンコードによって選択できます。

各パラメタに設定した値が不正の場合，TP1/NET/TCP/IPはMCFイベントを通知して論理端末を閉塞またはコネクションを解放します。

(2)　アプリケーション名の決定

該当するMCF通信プロセスに入力メッセージ編集UOCが登録されている場合，論理メッセージの受信と同時にアプリケーション名を決定できます。

このUOCでアプリケーション名を決定する場合，アプリケーション名の形式は，アプリケーション名格納領域の先頭から，'¥0'の手前までの1～8バイトの英数字です。先頭から9バイト目までに'¥0'がないときは，アプリケーション名を不正とします。

アプリケーション名の決定の処理は，「2.3.11　アプリケーション名の決定」を参照してください。

(3)　UOCエラーリターン処理

UOCからDCMCF_UOC_MSG_NGでリターンした場合，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。

UOCで障害を検出し，MCFイベント処理用MHPを起動したい場合は，ユーザ任意のMCFイベント処理用MHPのアプリケーション名を設定します。このとき，MCFにはDCMCF_UOC_MSG_OK（_RCV）でリターンします。

(4)　UOCパラメタ不正の場合の処理

UOCで設定したパラメタに不正があった場合，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知して，論理端末を閉塞またはコネクションを解放します。

(5)　OpenTP1への組み込み方法

入力セグメント判定UOCの組み込み方法と同じです。「5.1.1(5)　OpenTP1への組み込み方法」を参照してください。

5.1.4　入力メッセージ編集UOCインタフェース

入力メッセージ編集UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　パラメタとバッファの関係

(1)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
DCLONG  uoc_func(dcmcf_uoc_min_n *parm)

　K&R版 Cの場合

#include <dcmcf.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;              …バッファアドレス
   DCULONG buf_size;           …バッファ最大長
   DCULONG seg_size;           …バッファ使用長
   char reserve1[4];           …予備
   dcmcfuoc_w_type buff_id;    …MCF内部情報1
   DCMLONG buff_addr;          …MCF内部情報2
   char reserve2[4];           …予備
} dcmcf_uocbufinf_n;

(d)　dcmtcp_min_ifa（プロトコル個別インタフェース）の内容

typedef struct {
   char cont_status;           …継続問い合わせ応答ステータス
   char reserve1[63];          …予備
} dcmtcp_min_ifa;

(4)　MCFが値を設定する項目

(a)　dcmcf_uoc_min_n

pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_TCP

TCP/IPプロトコル

le_name
メッセージを入力した論理端末の名称が設定されます。

rcv_prim
受信サービスプリミティブとして，次の値が設定されます。

DCMCF_UOC_RCV_BRD

一方送信メッセージの受信および問い合わせメッセージの受信

DCMCF_UOC_RCV_REP_RE

同期型メッセージの受信

DCMCF_UOC_RCV_REP_SR

同期型メッセージの送受信関数によるメッセージの受信

buflist_adr
受信用バッファリストのアドレスが設定されます。

ebuflist_adr
編集用バッファリストのアドレスが設定されます。
メッセージ編集バッファが未定義の場合，つまり，コネクション定義（mcftalccn）の-eオプションを省略した場合，ebuflist_adrにはNULLが設定されます。

aplname
アプリケーション名が設定されます。設定するアプリケーション名を次の表に示します。

継続問い合わせ応答ステータス | 論理端末定義（mcftalcle）の-vオプションの指定 | 設定するアプリケーション名
継続問い合わせ応答中 | 任意 | 応答メッセージの送信時に指定した次起動アプリケーション名（次起動アプリケーション名を省略した場合，応答メッセージの送信を行ったアプリケーション名）
継続問い合わせ応答中以外（問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能未使用の場合を含みます） | あり | 論理端末定義（mcftalcle）の-vオプションの指定値
なし | なし（ヌル文字で埋められます）

pro_indv_ifa
プロトコル個別インタフェース領域のアドレスが設定されます。

(b)　dcmcf_uocbuff_list_n（バッファリスト）

buf_num
バッファ情報の数として，1が設定されます。

buf_array
バッファ情報の配列が設定されます。バッファ情報は，buf_numの数だけ設定されます。

(c)　dcmcf_uocbufinf_n（バッファ情報）

buf_adr
バッファのアドレスが設定されます。

buf_size
バッファの最大長が設定されます。

seg_size
送信，または受信用バッファリストの場合だけ，バッファの使用長が設定されます。

buff_id，buff_addr
MCFで使用するパラメタです。

(d)　dcmtcp_min_ifa（プロトコル個別インタフェース）

cont_status
継続問い合わせ応答ステータスが設定されます。

'c'

継続問い合わせ応答中

'n'

継続問い合わせ応答中以外

(5)　ユーザが値を設定する項目

(a)　dcmcf_uoc_min_n

aplname
UOCで決定したアプリケーション名を設定します。

rtn_detail
詳細リターンコードを設定します。
このコードは，UOCがDCMCF_UOC_MSG_NGでリターンしたときに，MCFに渡されます。MCFは，詳細リターンコードをメッセージログファイルに出力します。
詳細リターンコードは，-19999～-19000の範囲で指定してください。

(b)　dcmcf_uocbuff_list_n（バッファリスト）

used_buf_num
使用したバッファ情報の数として，1を設定します。

(c)　dcmcf_uocbufinf_n（バッファ情報）

seg_size
バッファの使用長を設定します。

(6)　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値 | 意味
DCMCF_UOC_MSG_OK | 正常リターン（編集バッファでスケジューリング）
DCMCF_UOC_MSG_OK_RCV | 正常リターン（受信バッファでスケジューリング）
DCMCF_UOC_MSG_NG | メッセージ編集エラー

(7)　パラメタとバッファの関係

UOCインタフェース用のパラメタとバッファの関係を次の図に示します。

図5-4　UOCインタフェース用のパラメタとバッファの関係

注※1

mcftalccnコマンドの-eオプションを指定しない場合，NULLとなり，バッファリストとバッファは確保されません。

注※2

バッファ情報は次の形式をしています。

5.1.5　出力メッセージの編集

出力メッセージ編集UOCは，送信メッセージの編集をするUOCです。出力メッセージの編集UOCは，UAPが発行した送信メッセージを相手システムに実際に送信する前に処理するように位置させます。出力キューからセグメントを読み出すと起動します。

ユーザは，MCFメイン関数でUOC関数アドレスを設定します。また，必要に応じてメッセージ編集用バッファグループ番号（コネクション定義（mcftalccn -e）のmsgbufオペランド）を定義します。

＜この項の構成＞

(1)　出力メッセージの編集

(2)　UOCエラーリターン処理

(3)　UOCパラメタ不正の場合の処理

(4)　OpenTP1への組み込み方法

(1)　出力メッセージの編集

送信するメッセージが格納されている送信バッファ，および定義で指定した編集バッファを引き渡します。UOCでは，これらのバッファを使用して，出力メッセージの編集処理ができます。

また，UOCからのリターンコードによってUAPに通知するメッセージとして送信バッファに格納されたものを使用するか，編集バッファに格納されたものを使用するかを選択できます。

各パラメタに設定した値が不正の場合，TP1/NET/TCP/IPはMCFイベントを起動して論理端末を閉塞します。

(2)　UOCエラーリターン処理

UOCからDCMCF_UOC_MSG_NGでリターンした場合，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。該当するメッセージは破棄します。

(3)　UOCパラメタ不正の場合の処理

UOCで設定したパラメタに不正があった場合，MCFはメッセージログを出力し，障害通知イベント（CERREVT）を通知して論理端末を閉塞します。該当するメッセージは破棄します。

(4)　OpenTP1への組み込み方法

入力セグメント判定UOCの組み込み方法と同じです。「5.1.1(5)　OpenTP1への組み込み方法」を参照してください。

5.1.6　出力メッセージ編集UOCインタフェース

出力メッセージ編集UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　パラメタとバッファの関係

(1)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
DCLONG  uoc_func(dcmcf_uoc_mout_n *parm)

　K&R版 Cの場合

#include <dcmcf.h>
#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（バッファ情報）の内容

「5.1.4　入力メッセージ編集UOCインタフェース」を参照してください。

(4)　MCFが値を設定する項目

(a)　dcmcf_uoc_mout_n

pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_TCP

TCP/IPプロトコル

le_name
メッセージを出力する論理端末の名称が設定されます。

buflist_adr
送信用バッファリストのアドレスが設定されます。

ebuflist_adr
編集用バッファリストのアドレスが設定されます。
メッセージ編集バッファが未定義の場合（コネクション定義（mcftalccn）の-eオプションを省略した場合），ebuflist_adrにはNULLが設定されます。

output_no
メッセージ出力通番が設定されます。ただし，outputno_flagがDCMCF_UOC_OUTPUTNO_OKのときだけ有効です。

msg_type
メッセージ種別として，次の値が設定されます。

'o'

応答メッセージ

'n'

一般一方送信メッセージ

'p'

優先一方送信メッセージ

's'

同期送信メッセージ

outputno_flag
メッセージ出力通番の有効フラグとして，次のどちらかの値が設定されます。

DCMCF_UOC_OUTPUTNO_OK

メッセージ出力通番を有効にします。

DCMCF_UOC_OUTPUTNO_NG

メッセージ出力通番を無効とします。

resend_flag
再送メッセージフラグとして，次のどちらかの値が設定されます。

'r'

再送メッセージです。

'n'

再送メッセージではありません。

pro_indv_ifa
MCFで使用するパラメタです。

(b)　dcmcf_uocbuff_list_n（バッファリスト），dcmcf_uocbufinf_n（バッファ情報）

「5.1.4　入力メッセージ編集UOCインタフェース」を参照してください。

(5)　ユーザが値を設定する項目

(a)　dcmcf_uoc_mout_n

rtn_detail
詳細リターンコードを設定します。
このコードは，UOCがDCMCF_UOC_MSG_NGでリターンしたときに，MCFに渡されます。MCFは，詳細リターンコードをメッセージログファイルに出力します。
詳細リターンコードは，-19999～-19000の範囲で指定してください。

(b)　dcmcf_uocbuff_list_n（バッファリスト），dcmcf_uocbufinf_n（バッファ情報）

「5.1.4　入力メッセージ編集UOCインタフェース」を参照してください。

(6)　リターン値

uoc_func()は次のコードでリターンしてください。

リターン値 | 意味
DCMCF_UOC_MSG_OK | 正常リターン（編集バッファでスケジューリング）
DCMCF_UOC_MSG_OK_SND | 正常リターン（送信バッファでスケジューリング）
DCMCF_UOC_MSG_NG | メッセージ編集エラー

(7)　パラメタとバッファの関係

UOCインタフェース用のパラメタとバッファの関係は，入力メッセージ編集UOCと同じです。「5.1.4(7)　パラメタとバッファの関係」を参照してください。

5.1.7　送信メッセージの通番編集

＜この項の構成＞

(1)　出力通番編集

(2)　OpenTP1への組み込み方法

(1)　出力通番編集

送信メッセージの通番編集UOCでは，受け取った出力通番を基に，ユーザ独自の処理ができます。例えば，出力通番を使用して編集した送信メッセージを再送要求します。

送信メッセージの通番編集UOCを起動する場合，メッセージ送信の関数で，出力通番を付けるように設定してください。UOCは，UAPがdc_mcf_send関数，dc_mcf_reply関数またはdc_mcf_resend関数を発行したときに，MCFによって起動されます。

(2)　OpenTP1への組み込み方法

UAPのメイン関数の中に，UOCの関数アドレスを登録しておきます。UAPのメイン関数に登録するdc_mcf_regster関数の形式を次に示します。

(a)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
int dc_mcf_regster(DCLONG flags, DCLONG (*uoc_addr)
                  (DCLONG flags, char *termname,
                  DCLONG sendno, DCLONG sendid,
                  DCLONG dataleng, char *senddata))

　K&R版 Cの場合

#include <dcmcf.h>
int dc_mcf_regster(flags, uoc_addr)
DCLONG flags;
DCLONG (*uoc_addr)();

(b)　ユーザが値を設定する引数

flags
DCMCF_SEND_UOCを指定します。

uoc_addr
flagsに対応するUOCのアドレスを指定します。

(c)　リターン値

リターン値 | 意味
DC_OK | 正常に終了しました。
DCMCFER_INVALID_ARGS | 引数の指定が間違っています。
DCMCFER_NOMEM | ローカルメモリが不足しました。

メイン関数への登録例を次に示します。

MHPの場合

main()
{
extern DCLONG send_uoc();

dc_rpc_open();
dc_mcf_open();
dc_mcf_regster(DCMCF_SEND_UOC,send_uoc);
dc_mcf_mainloop();
dc_mcf_close();
dc_rpc_close();
}

SPPの場合

main()
{
extern DCLONG send_uoc();

dc_rpc_open();
dc_mcf_open();
dc_mcf_regster(DCMCF_SEND_UOC,send_uoc);
dc_rpc_mainloop();
dc_mcf_close();
dc_rpc_close();
}

メイン関数，サービス関数，スタブ関数にUOC関数をリンケージしてUAPの実行形式プログラムを生成します。

5.1.8　送信メッセージの通番編集UOCインタフェース

送信メッセージの通番編集UOCは，次に示す形式で，send_uoc関数として作成します。なお，UOCの関数名称はユーザの任意です。

＜この項の構成＞

(1)　形式

(2)　MCFが値を設定する項目

(3)　リターン値

(1)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
DCLONG send_uoc(DCLONG flags, char *termname, DCLONG sendno,
               DCLONG sendid, DCLONG dataleng, char *senddata)

　K&R版 Cの場合

#include <dcmcf.h>
DCLONG send_uoc(flags, termname, sendno, sendid, dataleng,
             senddata)
DCLONG        flags;
char          *termname;
DCLONG        sendno;
DCLONG        sendid;
DCLONG        dataleng;
char          *senddata;

(2)　MCFが値を設定する項目

flags
送信メッセージの通番編集UOCがいつ呼ばれたかが設定されます。

DCMCF_SEND_DML

メッセージを送信する関数または命令文が呼び出されたときを意味します。

DCMCF_RESEND_DML

メッセージを再送する関数または命令文が呼び出されたときを意味します。

termname
送信先の論理端末名称が設定されます。

sendno
送信メッセージの出力通番が設定されます。

sendid
送信するメッセージ種別が設定されます。

DCMCF_SEND_IO

応答メッセージ

DCMCF_SEND_PRIO

優先の一方送信メッセージ

DCMCF_SEND_NORM

一般の一方送信メッセージ

dataleng
送信メッセージ長が設定されます。

senddata
セグメントの内容が設定されます。

(3)　リターン値

リターン値 | 意味
DC_OK | 正常に終了しました。

5.1.9　コネクション確立要求の判定

コネクション確立UOCは，相手システムからコネクション確立要求を受信するたびに起動し，その確立要求を受け入れるかどうかを判定できます。

＜この項の構成＞

(1)　コネクション確立要求の判定

(2)　UOCエラーリターン処理

(3)　UOCパラメタ不正の場合の処理

(4)　OpenTP1への組み込み方法

(1)　コネクション確立要求の判定

TP1/NET/TCP/IPはコネクション確立UOCを呼び出すとき，コネクション確立要求を発行した相手システムのアドレス情報を通知します。コネクション確立UOCは，通知された相手システムのアドレス情報を基に，コネクション確立要求を受け入れるかどうかを判定します。

コネクション確立要求を受け入れる場合は，TP1/NET/TCP/IPが状態通知イベント（COPNEVT）によってコネクションの確立を通知すると，MHPは相手システムとのデータ送受信をできるようになります。

コネクション確立要求を拒否する場合は，相手アドレス識別のために一時的に受け入れたコネクションを解放します。この場合，相手システムにはコネクション確立後，TP1/NET/TCP/IPから即座にコネクションが解放されたように見えます。また，相手システムから送信されたデータは破棄されます。

注意事項

相手アドレスチェック抑止機能を使用し，コネクション確立UOCを使用しない場合，未確立コネクションがあれば必ずコネクション確立要求を受け入れます。この場合，TP1/NET/TCP/IPおよびUOCによる相手アドレスチェックが行われないため，誤接続のおそれがあります。相手アドレスチェック抑止機能を使用する際は十分注意してください。

(2)　UOCエラーリターン処理

UOCからDCMTCP_UOC_CON_NGでリターンした場合，TP1/NET/TCP/IPはメッセージログを出力し，コネクションの確立を拒否します。

(3)　UOCパラメタ不正の場合の処理

UOCで設定したパラメタに不正があった場合，TP1/NET/TCP/IPはメッセージログを出力し，コネクションの確立を拒否します。

(4)　OpenTP1への組み込み方法

入力セグメント判定UOCの組み込み方法と同じです。「5.1.1(5)　OpenTP1への組み込み方法」を参照してください。また，MCFメイン関数のコーディング例は「5.1.10(7)　MCFメイン関数のコーディング例」を参照してください。

5.1.10　コネクション確立UOCインタフェース

コネクション確立UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　MCFメイン関数のコーディング例

(1)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG con_uoc(dcmtcp_uoc_con_n *parm)

　K&R版 Cの場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG con_uoc(parm)

dcmtcp_uoc_con_n *parm;

(2)　説明

con_uoc（コネクション確立UOC）を呼び出すとき，MCFは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　dcmtcp_uoc_con_nの内容

typedef struct｛
   char  cn_name[9];            …コネクションID
   char  reserve[7];            …予備
   dcmtcp_cnuoc_oaddr *oaddr;   …相手システムのアドレス情報
   unsigned short  oportno;     …相手システムのポート番号
   unsigned short  iportno;     …自システムのポート番号
   DCLONG  connect_permit;      …コネクション確立要求受け入れ可否
   DCLONG  reject_reason;       …コネクション確立拒否理由
   DCLONG  rtn_detail;          …詳細リターンコード
｝dcmtcp_uoc_con_n;

(b)　dcmtcp_cnuoc_oaddr（相手システムのアドレス情報）の内容

typedef struct｛
   unsigned short o_type;       …アドレス通知形式
   unsigned short o_len;        …アドレス長
   char  o_addr[256];           …相手システムのアドレス
｝dcmtcp_cnuoc_oaddr;

(4)　MCFが値を設定する項目

(a)　dcmtcp_uoc_con_n

cn_name
確立要求を受け付けたコネクションIDが設定されます。

oaddr
確立要求を行った相手システムのアドレス情報として，次の値が設定されます。

oportno
確立要求を行った相手システムのポート番号が設定されます。

iportno
確立要求を受け付けた自システムのポート番号が設定されます。

(b)　dcmtcp_cnuoc_oaddr（相手システムのアドレス情報）

o_type
相手システムアドレスの通知形式が設定されます。
0x01　ドット10進数字（dotted-decimal形式）表記

o_len
相手システムアドレスの格納長が設定されます。

o_addr
相手システムアドレスを格納した領域が設定されます。
相手システムのIPアドレスはドット10進数字（dotted-decimal形式）表記の文字列で設定されます（例："172.18.151.40"）。

(5)　ユーザが値を設定する項目

(a)　dcmtcp_uoc_con_n

connect_permit
コネクション確立要求を受け入れるかどうかを設定します。

DCMTCP_UOC_CON_ACCEPT

コネクション確立要求を受け入れます。

DCMTCP_UOC_CON_REJECT

コネクション確立要求を拒否します。

reject_reason
コネクション確立要求を拒否する場合の拒否理由を設定します。値は任意です。この拒否理由はログメッセージ（KFCA14840-I）に出力されます。

rtn_detail
コネクション確立UOCがDCMTCP_UOC_CON_NG（UOC異常終了）でリターンするときの詳細コードを設定します。この詳細リターンコードはログメッセージ（KFCA14808-E）に出力されます。値は-19999～-19000の範囲内で設定します。TP1/NET/TCP/IPは，値の範囲をチェックしません。

(6)　リターン値

con_uoc()は次のコードでリターンしてください。

リターン値 | 意味
DCMTCP_UOC_CON_OK | 正常リターン（コネクション確立要求の受信）
DCMTCP_UOC_CON_NG | コネクション確立要求判定エラー

(7)　MCFメイン関数のコーディング例

コネクション確立UOCをメイン関数に登録する場合のコーディング例を次に示します。

ANSI C，C++の場合

#include <dcmtcp.h>
#include <dcmtcpu.h>

extern DCLONG con_uoc(dcmtcp_uoc_con_n *);/* コネクション確立UOC*/
extern dcmcf_uoc_t  dcmcf_uoctbl;     /* UOCテーブルextern宣言 */

int main()
{
    dcmcf_uoctbl.assctn                   /* コネクション確立UOC */
              = (dcmcf_uocfunc)con_uoc;   /* アドレス設定 */
    dc_mcf_svstart();
    return 0;
}

K&R版 Cの場合

#include <dcmtcp.h>

extern DCLONG con_uoc();                   /* コネクション確立UOC */
extern dcmcf_uoc_t dcmcf_uoctbl;      /* UOCテーブルextern宣言 */

main()
{
    dcmcf_uoctbl.assctn = con_uoc;        /* コネクション確立UOC */
                                          /* アドレス設定 */
    dc_mcf_svstart();
}

5.1.11　受信メッセージ判定

受信メッセージ判定UOCは，メッセージ受信時に呼び出され，受信したメッセージの種別と送達確認メッセージの送信要否を決定します。受信メッセージ判定UOCは，任意の相手システムとのメッセージ送達確認機能を使用する場合に必要となります。

＜この項の構成＞

(1)　受信メッセージの判定

(2)　UOCエラーリターン処理

(3)　UOCパラメタ不正の場合の処理

(4)　OpenTP1への組み込み方法

(1)　受信メッセージの判定

TP1/NET/TCP/IPは受信メッセージ判定UOCを呼び出す際に，受信したメッセージを通知します。受信メッセージ判定UOCは，通知されたメッセージを基に，メッセージの種別と送達確認メッセージの送信要否を決定します。

(2)　UOCエラーリターン処理

UOCからDCTCP_UOC_MR_NGでリターンした場合，TP1/NET/TCP/IPはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。該当するメッセージは破棄します。

(3)　UOCパラメタ不正の場合の処理

UOCで設定した値に不正があった場合，TP1/NET/TCP/IPはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。該当するメッセージは破棄します。

(4)　OpenTP1への組み込み方法

入力セグメント判定UOCの組み込み方法と同じです。「5.1.1(5)　OpenTP1への組み込み方法」を参照してください。また，MCFメイン関数のコーディング例は「5.1.12(7)　MCFメイン関数のコーディング例」を参照してください。

5.1.12　受信メッセージ判定UOCインタフェース

受信メッセージ判定UOCは，次に示す形式で呼び出します。なお，UOCの関数名称はユーザの任意です。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　MCFメイン関数のコーディング例

(1)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG msgrep_uoc(dctcp_uoc_msgrep *parm)

　K&R版 Cの場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG    msgrep_uoc(parm)

dctcp_uoc_msgrep *parm;

(2)　説明

msgrep_uoc（受信メッセージ判定UOC）を呼び出すとき，MCFは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　dctcp_uoc_msgrepの内容

typedef struct {
   DCLONG pro_kind;           …プロトコル種別
   char cn_name[9];           …コネクションID
   char reserve1[7];          …予備
   char le_name[9];           …論理端末名称
   char reserve2[7];          …予備
   DCLONG snd_status;         …送信状態
   char *rcv_data_adr;        …受信メッセージ格納アドレス
   DCLONG rcv_data_size;      …受信メッセージ長
   DCLONG msg_type;           …メッセージ種別
   DCLONG reason;             …理由コード
   DCLONG msg_reply;          …送達確認メッセージの送信要否
   char *snd_data_adr;        …送達確認メッセージ格納アドレス
   DCLONG snd_buff_size;      …送達確認メッセージ格納バッファサイズ
   DCLONG snd_data_size;      …送達確認メッセージ長
   DCLONG snd_cont;           …送信処理の継続可否
   DCLONG rtn_detail;         …詳細リターンコード
   char reserve3[16];         …予備
}dctcp_uoc_msgrep;

(4)　MCFが値を設定する項目

(a)　dctcp_uoc_msgrep

pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_TCP

TCP/IPプロトコル

cn_name
メッセージを受信したコネクション名が設定されます。

le_name
cn_nameに対応する論理端末の名称が設定されます。

snd_status
送信状態が設定されます。DCTCP_UOC_MR_ST_SNDが設定されている場合，送受信メッセージの衝突が発生しています。

DCTCP_UOC_MR_ST_IDL

未送信

DCTCP_UOC_MR_ST_SND

送信処理中

rcv_data_adr
受信メッセージを格納したバッファのアドレスが設定されます。
ユーザは，このパラメタを使用して受信メッセージを参照・編集できます。ただし，受信メッセージのメッセージ長は変更できません。

rcv_data_size
受信メッセージ長が設定されます。
UOCでこのパラメタを変更しても無効となります。

snd_data_adr
送達確認メッセージを格納するバッファのアドレスが設定されます。
ユーザは，このパラメタを使用して送達確認メッセージを編集します。

snd_buff_size
送達確認メッセージを格納するバッファサイズが設定されます。
UOCでこのパラメタを変更しても無効となります。

(5)　ユーザが値を設定する項目

(a)　dctcp_uoc_msgrep

msg_type
受信したメッセージの種別を設定します。

DCTCP_UOC_MR_MT_INFO

一方送信メッセージ

DCTCP_UOC_MR_MT_ACK

送達確認メッセージ

DCTCP_UOC_MR_MT_IGN

破棄メッセージ

DCTCP_UOC_MR_MT_CLS

コネクション解放

reason
破棄メッセージおよびコネクション解放を指定するときの理由を設定します。この理由コードはログメッセージ（KFCA14849-I，KFCA14850-I）に出力されます。値はユーザの任意に設定します。msg_typeが，DCTCP_UOC_MR_MT_IGN，DCTCP_UOC_MR_MT_CLSの場合だけ有効です。

msg_reply
送達確認メッセージの送信要否を設定します。msg_typeがDCTCP_UOC_MR_MT_INFOの場合だけ有効です。

DCTCP_UOC_MR_REP_ON

送達確認メッセージの送信要

DCTCP_UOC_MR_REP_OFF

送達確認メッセージの送信不要

snd_data_size
送達確認メッセージ長を設定します。msg_typeがDCTCP_UOC_MR_MT_INFOであり，かつmsg_replyがDCTCP_UOC_MR_REP_ONの場合だけ有効です。

snd_cont
仕掛り中の送信処理を継続するかどうかを設定します。snd_statusがDCTCP_UOC_MR_ST_SNDの場合で，msg_typeがDCTCP_UOC_MR_MT_INFOまたはDCTCP_UOC_MR_MT_IGNのときだけ有効です。

DCTCP_UOC_MR_SC_CONT

送信処理を継続します。

DCTCP_UOC_MR_SC_RSND

送信処理を中断します。送信中のメッセージは，受信処理および送達確認メッセージの送信処理完了後，再送します。

DCTCP_UOC_MR_SC_STOP

論理端末を閉塞し，送信処理を停止します。

rtn_detail
UOCエラーリターン時の詳細リターンコードを設定します。

(6)　リターン値

msgrep_uoc()は次のコードでリターンしてください。

リターン値 | 意味
DCTCP_UOC_MR_OK | 正常リターン
DCTCP_UOC_MR_NG | エラーリターン

(7)　MCFメイン関数のコーディング例

受信メッセージ判定UOCをメイン関数に登録する場合のコーディング例を次に示します。

ANSI C，C++の場合

#include  <dcmtcp.h>
#include  <dcmtcpu.h>

extern DCLONG   msgrep_uoc(dctcp_uoc_msgrep *);  /* 受信メッセージ判定UOC */
extern dcmcf_uoc_t dcmcf_uoctbl;   /* UOCテーブルextern宣言 */

int main()
{
   dcmcf_uoctbl.msgrep            /* 受信メッセージ判定 UOC */
  = (dcmcf_uocfunc)msgrep_uoc;    /*           アドレス設定  */
   dc_mcf_svstart();
   return 0;
}

K&R版 Cの場合

#include  <dcmtcp.h>
extern DCLONG        msgrep_uoc(); /* 受信メッセージ判定 UOC    */
extern dcmcf_uoc_t dcmcf_uoctbl;   /* UOC テーブルextern宣言   */

main()
{
   dcmcf_uoctbl.msgrep = msgrep_uoc; /* 受信メッセージ判定 UOC  */
                                   /*         アドレス設定    */
   dc_mcf_svstart();
}

5.1.13　受信メッセージの保留判定

受信メッセージ保留判定UOCは，メッセージ受信時に呼び出され，受信したメッセージ単位で保留するかどうかを決定します。このUOCは，同期型メッセージの受信時に使用できます。

＜この項の構成＞

(1)　受信メッセージの保留判定

(2)　UOCエラーリターン処理

(3)　UOCパラメタ不正の場合の処理

(4)　OpenTP1への組み込み方法

(1)　受信メッセージの保留判定

TP1/NET/TCP/IPは，受信メッセージ保留判定UOCを呼び出すときに，受信したメッセージをユーザに通知します。受信メッセージ保留判定UOCは，通知されたメッセージを基に，受信したメッセージを保留するかどうか決定します。

(2)　UOCエラーリターン処理

UOCからDCTCP_UOC_MH_NGでリターンした場合，TP1/NET/TCP/IPはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。該当するメッセージは破棄します。

(3)　UOCパラメタ不正の場合の処理

UOCで設定した値に不正があった場合，TP1/NET/TCP/IPはメッセージログを出力し，障害通知イベント（CERREVT）を通知します。該当するメッセージは破棄します。

(4)　OpenTP1への組み込み方法

入力セグメント判定UOCの組み込み方法と同じです。「5.1.1(5)　OpenTP1への組み込み方法」を参照してください。また，MCFメイン関数のコーディング例は「5.1.14(7)　MCFメイン関数のコーディング例」を参照してください。

5.1.14　受信メッセージの保留判定UOCインタフェース

受信メッセージ保留判定UOCは，次に示す形式で呼び出します。

＜この項の構成＞

(1)　形式

(2)　説明

(3)　パラメタの内容

(4)　MCFが値を設定する項目

(5)　ユーザが値を設定する項目

(6)　リターン値

(7)　MCFメイン関数のコーディング例

(1)　形式

　ANSI C，C++の場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG msghld_uoc(dctcp_uoc_msghld *parm)

　K&R版 Cの場合

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG    msghld_uoc(parm)

dctcp_uoc_msghld *parm;

(2)　説明

msghld_uoc（受信メッセージ保留判定UOC）を呼び出すとき，MCFは次に示す所定のパラメタをparmに設定します。

(3)　パラメタの内容

(a)　dctcp_uoc_msghldの内容

typedef struct {
   DCLONG pro_kind;           …プロトコル種別
   char cn_name[9];           …コネクションID
   char reserve1[7];          …予備
   char le_name[9];           …論理端末名称
   char reserve2[7];          …予備
   char reserve3[4];          …予備
   char *rcv_data_adr;        …受信メッセージ格納アドレス
   DCLONG rcv_data_size;      …受信メッセージ長
   DCLONG msg_hld;            …受信メッセージの保留要否
   DCLONG rtn_detail;         …詳細リターンコード
   char reserve4[20];         …予備
}dctcp_uoc_msghld;

(4)　MCFが値を設定する項目

(a)　dctcp_uoc_msghld

pro_kind
プロトコル種別として，次の値が設定されます。

DCMCF_UOC_PRO_TCP

TCP/IPプロトコル

cn_name
メッセージを受信したコネクションIDが設定されます。

le_name
cn_nameに対応する論理端末の名称が設定されます。

rcv_data_adr
受信メッセージを格納したバッファのアドレスが設定されます。
ユーザは，このパラメタを使用して受信メッセージを参照・編集できます。ただし，受信メッセージのメッセージ長は変更できません。

rcv_data_size
受信メッセージ長が設定されます。
UOCでこのパラメタを変更しても無効となります。

(5)　ユーザが値を設定する項目

(a)　dctcp_uoc_msghld

msg_hld
受信メッセージを保留するかどうかを設定します。

DCTCP_UOC_MH_HLD_ON

受信したメッセージを保留します。

保留したメッセージは同期型メッセージの受信関数を使用して受信してください。

DCTCP_UOC_MH_HLD_OFF

受信したメッセージを保留しません。

TP1/NET/TCP/IPは受信メッセージを入力キューに書き込み，MHPを起動します。

rtn_detail
UOCエラーリターン時の詳細リターンコードを設定します。

(6)　リターン値

msghld_uoc()は次のコードでリターンしてください。

リターン値 | 意味
DCTCP_UOC_MH_OK | 正常リターン
DCTCP_UOC_MH_NG | エラーリターン

(7)　MCFメイン関数のコーディング例

受信メッセージ保留判定UOCをメイン関数に登録する場合のコーディング例を次に示します。

ANSI C，C++の場合

#include  <dcmtcp.h>
#include  <dcmtcpu.h>

extern DCLONG   msghld_uoc(dctcp_uoc_msghld *);
                                     /* 受信メッセージ保留判定UOC */
extern dcmcf_uoc_t dcmcf_uoctbl;
                                        /* UOCテーブルextern宣言 */

int main()
{
   dcmcf_uoctbl.msghld               /* 受信メッセージ保留判定UOC */
                  = (dcmcf_uocfunc)msghld_uoc;     /*アドレス設定 */
   dc_mcf_svstart();
   return 0;

}

K&R版 Cの場合

#include  <dcmtcp.h>
extern DCLONG        msghld_uoc();     /* 受信メッセージ保留判定UOC */
extern dcmcf_uoc_t dcmcf_uoctbl;         /* UOC テーブルextern宣言*/

main()
{
   dcmcf_uoctbl.msghld              /* 受信メッセージ保留判定UOC */
                  = msghld_uoc;                   /*アドレス設定 */
   dc_mcf_svstart();
}

5.1.15　UOC作成上の注意事項

UOC作成上の注意事項を次に示します。

＜この項の構成＞

(1)　UOCの構造

(2)　UOCで使用できる関数

(3)　UOCの異常処理

(4)　UOCの実行タイミング

(1)　UOCの構造

UOCで使用するローカル変数のサイズの合計は，各UOCで1024バイト以内になるよう作成してください。また，UOCの中で関数の再帰呼び出しはしないでください。

(2)　UOCで使用できる関数

UOCを作成する場合，UOCでは次に示す関数だけが使用できます。ほかの関数を使用した場合，正常に動作しないことがあるためご注意ください。

メモリ操作をする関数

データ領域管理（例：malloc，free）

共有メモリ管理関数（例：shmctl，shmget，shmop）

メモリ操作（例：memcpy）

文字列操作（例：strcpy）

時間取得関数（例：time，gettimeofday）

(3)　UOCの異常処理

TP1/NET/TCP/IPのUOCで異常を検知した場合，MCFの所定のリターンコードを使用してMCFに異常の発生を通知してください。UOCでプロセス終了となるシグナル，またはabort()を発行すると，MCFが異常終了します。

(4)　UOCの実行タイミング

MCFが起動するUOCの実行タイミングは，OpenTP1システム，およびUAPの開始，終了シーケンスと同期しない場合があります。UAPより先にUOCが実行されたり，UAPがすべて終了してからUOCが呼び出されたりしてもよいように作ってください。

5.2　MCFイベントインタフェース

TP1/NET/TCP/IPでメッセージ送受信をすると，OpenTP1の各種システム情報がMHPに通知されます。これをMCFイベントといいます。メッセージ送受信処理でエラーや障害が発生した場合，システム内で何が起こっているのかがMCFイベントの内容でわかります。MCFイベントに対応するMHPをMCFイベント処理用MHPといいます。

MCFイベントは入力キューに渡されて，MCFイベント処理用MHPで回復処理をします。なお，MCFイベントの発生時は入力メッセージ編集UOCは呼び出しません。詳細についてはマニュアル「OpenTP1 プログラム作成の手引」を参照してください。

＜この節の構成＞

5.2.1　MCFイベントの種類

5.2.2　MCFイベント通知時のセグメント構成

5.2.3　MCFイベント情報の形式（C言語）

5.2.4　MCFイベント情報の形式（COBOL言語）

5.2.1　MCFイベントの種類

TP1/NET/TCP/IPが通知するMCFイベントの種類を次の表に示します。

表5-1　TP1/NET/TCP/IPが通知するMCFイベントの種類

MCFイベント名
MCFイベントコード
発生した原因
MCFイベント処理用MHPでの処理の例

不正アプリケーション名検出通知イベント
ERREVT1
メッセージのアプリケーション名がMCFアプリケーション定義にありません。
該当するアプリケーションがないことを報告します。

メッセージ廃棄通知イベント
ERREVT2
次の理由で，受信メッセージを破棄しました。

入力キューに障害が発生しました。

MHPのサービス，サービスグループ，アプリケーションが閉塞しました。

MHPに受信メッセージを渡す前にMHPの異常終了が発生しました。

アプリケーション名に相当するMHPのサービスがありません。

アプリケーションの即時起動時に障害が発生しました。

MHPのアプリケーション，サービスグループがセキュア状態です。

メッセージを廃棄したことを報告します。

UAP異常終了通知イベント
ERREVT3
MHPに受信メッセージを渡したあとにMHPの異常終了※が発生しました。
UAP異常終了時の対処障害メッセージを送信します。

タイマ起動メッセージ廃棄通知イベント
ERREVT4
アプリケーションのタイマ起動時に障害が発生しました。
メッセージを廃棄したことを報告します。

未処理送信メッセージ廃棄通知イベント
ERREVTA
次の理由で，未処理送信メッセージを破棄しました。

MCFの正常終了処理時に，未処理送信メッセージの滞留時間監視の時間切れ（タイムアウト）が発生しました。

運用コマンド（mcftdlqle）の入力，またはAPI（dc_mcf_tdlqle関数もしくはCBLDCMCF('TDLQLE△△')）の発行によって，出力キューが削除されました。

未処理送信メッセージを廃棄したことを報告します。

送信完了通知イベント
SCMPEVT
メッセージの送信を正常に完了しました。
送信の完了を確認して，任意の処理ができます。

障害通知イベント
CERREVT
コネクション障害，または論理端末障害が発生しました。
コネクション，または論理端末に障害が発生したことを報告します。

状態通知イベント
COPNEVT
コネクションが確立しました。
コネクションが確立したことを報告します。

CCLSEVT
コネクションが正常に解放されました。
コネクションが解放されたことを報告します。

受信メッセージ保留通知イベント
RHLDEVT
受信したメッセージを保留しました。
同期型メッセージの受信関数を使用してメッセージを受信します。

送受信メッセージ廃棄通知イベント
MDELEVT
次の理由で，受信メッセージまたは送信メッセージを破棄しました。

任意の相手システムとのメッセージ送達確認を使用している（コネクション定義（mcftalcle -u）のdelichkオペランドにuseを指定）場合に，受信メッセージ判定UOCで受信したメッセージの種別に破棄メッセージを指定しました。

コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されました。

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している（コネクション定義（mcftalccn -l）のreplymsgオペランドにyesを指定）場合に，問い合わせ応答中の論理端末がメッセージを受信しました。

メッセージを廃棄したことを報告します。

注※

アプリケーション属性定義（mcfaalcap -g）のrecvmsgオペランドにrを指定した場合，またはdc_mcf_rollbackのactionにDCMCFRTRYまたはDCMCFRRTNを指定した場合は除きます。

5.2.2　MCFイベント通知時のセグメント構成

MCFイベントをMHPに通知する場合，先頭セグメントにMCFイベント情報を設定します。エラーイベント（ERREVT1，ERREVT2，ERREVT3，ERREVT4，ERREVTA）および送受信メッセージ廃棄通知イベント（MDELEVT）の場合は，第2セグメントに処理できなかったメッセージセグメントを設定します。

MCFイベント通知時のセグメント構成を次の図に示します。

図5-5　MCFイベント通知時のセグメント構成

MCFイベントは，UAPを作成した言語によって，UAPに通知されるデータの形式が異なります。

エラーイベントの場合はバッファ形式1とバッファ形式2で先頭の内容が異なります。このため，それ以降の項目の位置にずれがあります。「5.2.4　MCFイベント情報の形式（COBOL言語）」のエラーイベントの表ではERREVT1，ERREVT2，ERREVT3，およびERREVTAのバッファ形式別に位置（バイト）を分けて説明しています。なお，ERREVT4については，マニュアル「OpenTP1 プログラム作成リファレンス」の該当する言語編を参照してください。

5.2.3　MCFイベント情報の形式（C言語）

MCFイベント情報は構造体で，MCFイベント処理用MHPに渡されます。MHPに渡される構造体の形式は，MCFイベントの種類によって異なります。ただし，MCFイベント情報の先頭部分の形式は，各イベントに共通です。

エラーイベント（ERREVT1，ERREVT2，ERREVT3，ERREVT4，ERREVTA）および送信完了通知イベント（SCMPEVT）で使用する構造体は，<dcmcf.h>で定義してあります。なお，dc_mcf_evtheaderは，<dcmcf.h>で定義されています。<dcmtcpu.h>の前に<dcmcf.h>を取り込んでおいてください。

MCFイベントとして設定される項目を次に示します。

＜この項の構成＞

(1)　MCFイベントの共通ヘッダ

(2)　ERREVT1

(3)　ERREVT2

(4)　ERREVT3

(5)　ERREVTA

(6)　SCMPEVT

(7)　CERREVT

(8)　COPNEVT，CCLSEVT

(9)　RHLDEVT

(10)　MDELEVT

(1)　MCFイベントの共通ヘッダ

(a)　形式

struct dc_mcf_evtheader {
 char mcfevt_name[9] ; …  MCFイベントコード
 char le_name[16] ;    …  入力元論理端末名称
                          （ERREVT1，ERREVT2，ERREVT3，CERREVT，
                            COPNEVT，CCLSEVT，RHLDEVT，MDELEVTの場合）
                           出力先論理端末名称
                          （ERREVTA，SCMPEVTの場合）
 char cn_name[9] ;     …  コネクション名
 unsigned char format_kind;
                       …  MCF使用領域
 char reserve01;       …  予備
 DCLONG time ;         …  メッセージ入力時刻
};

(b)　MCFイベントとして設定される項目

le_name
ERREVT1，ERREVT2，ERREVT3，またはRHLDEVTでは，メッセージを入力した論理端末名称が設定されます。
ただし，ERREVT2またはERREVT3で，次に示す場合には，'*'が設定されます。

SPPがアプリケーション起動をしたMHPで，障害が発生した場合

上記の障害発生時にMCFイベントとして起動されたMHPによって，さらにアプリケーション起動をされたMHPで，障害が発生した場合

ERREVTA，SCMPEVTでは，メッセージを出力する論理端末名称が設定されます。
CERREVTでは，障害が発生した論理端末名称，または障害が発生したコネクションに対応する論理端末名称が設定されます。
COPNEVTまたはCCLSEVTでは，確立または解放したコネクションに対応する論理端末名称が設定されます。
MDELEVTでは，破棄したメッセージを入力した論理端末名称，または破棄したメッセージを出力しようとした論理端末名称が設定されます。

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の理由コードが設定されます。理由コードの詳細については，「付録J　理由コード一覧」を参照してください。

(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 reserve02[10] ;     … 予備
 char reserve03[2] ;      … 予備
 char ap_name[10] ;       … アプリケーション名
                          （正常終了したメッセージの
                            アプリケーション名）
 char reserve04[2] ;      … 予備
 char reserve05[32] ;     … 予備
 char reserve06[32] ;     … 予備
 DCLONG user_leng ;       … 他プロトコルの場合の使用領域
 char user_data[16] ;     … 他プロトコルの場合の使用領域
 char reserve07[16] ;     … 予備
} ;

(b)　MCFイベントとして設定される項目

ap_name
正常終了したメッセージのアプリケーション名が設定されます。
アプリケーション名は，MHPから送信されたメッセージの場合に設定されます。ただし，MHP以外から送信された場合はヌル文字が設定されます。

(6)　SCMPEVT

(a)　形式

struct dc_mcf_scmpevt_type {
 struct dc_mcf_evtheader  evtheader ; … MCFイベント共通ヘッダ
 DCLONG output_no ;                   … 出力通番
 char map_name[9] ;                   … MCFが使用
 char msg_type ;                      … メッセージ種別
 char reason_code ;                   … 起動理由
 char reserve01[5] ;                  … 予備
 DCLONG user_leng ;                   … MCF使用領域
 char pro_indv_inf[16] ;              … MCF使用領域
 char user_data[16] ;                 … MCF使用領域
} ;

(b)　MCFイベントとして設定される項目

output_no
出力通番が設定されます。出力通番がない場合は，「-1」が設定されます。

msg_type
メッセージ種別として，次のどちらかの値が設定されます。
n：一般一方送信メッセージ
p：優先一方送信メッセージ

reason_code
起動理由として次の値が設定されます。
△：メッセージが正常に送信されました。

(7)　CERREVT

(a)　形式

typedef struct {
 struct dc_mcf_evtheader  header ;
                          … MCFイベント共通ヘッダ
 DCLONG err_fact ;        … 障害要因コード（4バイト）
                             0x30：コネクション障害発生
                             0x31：論理端末障害発生
 DCLONG err_reason1 ;     … 理由コード1（4バイト）
 DCLONG err_reason2 ;     … 理由コード2（4バイト）
 char group_name[16];     … MCF使用領域
 char reserve1[32] ;      … 予備
} dcmtcp_cerrevt ;

(b)　MCFイベントとして設定される項目

err_reason1，err_reason2
CERREVTの理由コード1，理由コード2が設定されます。「付録J　理由コード一覧」を参照してください。

(8)　COPNEVT，CCLSEVT

(a)　形式

typedef struct {
 struct dc_mcf_evtheader  header ;
                          … MCFイベント共通ヘッダ
 char group_name[16];     … MCF使用領域
 char reserve1[40] ;      … 予備
} dcmtcp_statevt ;

(9)　RHLDEVT

(a)　形式

typedef struct {
 struct dc_mcf_evtheader  header ;
                        … MCFイベント共通ヘッダ
 char group_name[16];   … MCF使用領域
 char reserve1[44] ;    … 予備
} dcmtcp_rhldevt ;

(10)　MDELEVT

(a)　形式

typedef struct {
 struct dc_mcf_evtheader  header ;
                        … MCFイベント共通ヘッダ
 DCLONG del_reason;     … 理由コード
 char group_name[16];   … MCF使用領域
 char reserve1[40] ;    … 予備
} dcmtcp_mdelevt ;

(b)　MCFイベントとして設定される項目

del_reason
MDELEVTの理由コードが設定されます。理由コードの詳細については，「付録J　理由コード一覧」を参照してください。

5.2.4　MCFイベント情報の形式（COBOL言語）

COBOL言語の場合はセグメントの並びとして渡されます。

COBOL言語のUAPの場合のMCFイベント情報の内容を，以降の表に示します。

表5-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
－
－

（凡例）

－：該当しません，または使用されません。

表5-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
－
－

（凡例）

－：該当しません，または使用されません。

注※

理由コードの詳細については，「付録J　理由コード一覧」を参照してください。

表5-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
英数字
異常が発生したUAPのアプリケーション名に対応するサービス名です。

予備
159
155
1
－
－

サービスグループ名
160
156
31
英数字
異常が発生したUAPのサービスグループ名です。

予備
191
187
1
－
－

トランザクションブランチID（BID）
192
188
36
英数字
異常が発生したトランザクションのBIDです。
トランザクションブランチIDの形式については，表5-5を参照してください。

予備
228
224
28
－
－

（凡例）

－：該当しません，または使用されません。

表5-5　トランザクションブランチIDの形式

項目 | 位置（バイト） | 長さ（バイト） | 属性
OpenTP1システムノードID | 0 | 8 | 英数字
トランザクションブランチ番号 | 8 | 4 | 2進数字
OpenTP1使用領域 | 12 | 4 | －
予備 | 16 | 20 | －

表5-6　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
－
－

（凡例）

－：該当しません，または使用されません。

表5-7　COBOL言語のMCFイベント情報の内容（SCMPEVT）

項目
位置（バイト）
長さ
（バイト）
属性
内容

形式1
形式2

長さ
（形式1のときだけ）
0
－
2
－
MCFが使用します。

予備
（形式1のときだけ）
2
－
2
－
－

イベントコード
4
0
8
英数字
「SCMPEVT」が設定されます。

出力先論理端末名称
12
8
8
英数字
一方送信メッセージの送信が完了した論理端末名称が設定されます。

予備
20
16
8
－
－

コネクション名
28
24
8
英数字
一方送信メッセージの送信が完了したコネクション名が設定されます。

一方送信メッセージの送信が完了した日付
36
32
8
外部10進
一方送信メッセージの送信が完了した日付が設定されます。
YYYYMMDDの形式です。
YYYY：西暦の年
MM：月
DD：日

一方送信メッセージの送信が完了した時刻
44
40
8
外部10進
一方送信メッセージの送信が完了した時刻が設定されます。HHMMSS00の形式です。
HH：時
MM：分
SS：秒
00は固定です。

出力通番
52
48
4
2進数
出力通番が設定されます。
出力通番がない場合は，(FFFFFFFF)₁₆が設定されます。

出力マップ名
56
52
8
英数字
MCFが使用します。

メッセージ種別
64
60
1
英数字
メッセージ種別として次の値が設定されます。
n：一般一方送信メッセージ
p：優先一方送信メッセージ

起動理由
65
61
1
英数字
起動理由として次の値が設定されます。
△：送信が正常に完了しました。

予備
66
62
9
－
－

プロトコル個別情報
75
71
16
英数字
MCFが使用します。

予備
91
87
19
－
－

（凡例）

－：該当しません，または使用されません。

表5-8　COBOL言語のMCFイベント情報の内容（CERREVT）

項目
位置
（バイト）
長さ
（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「CERREVT」が設定されます。

入力元論理端末名称
8
8
英数字
障害が発生した論理端末名称，または障害が発生したコネクション名に対応する論理端末名称が設定されます。

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージ入力日付
32
8
外部10進数字
CERREVTを入力した日付です。

メッセージ入力時刻
40
8
外部10進数字
CERREVTを入力した時刻です。

障害要因コード
48
4
2進数字
障害要因コードが設定されます。
(00000030​)₁₆：コネクション障害
(00000031​)₁₆：論理端末障害

理由コード1※
52
4
2進数字
理由コード1が設定されます。

理由コード2※
56
4
2進数字
理由コード2が設定されます。

予備
60
48
－
－

（凡例）

－：該当しません，または使用されません。

注※

理由コード1，および理由コード2は，「付録J　理由コード一覧」を参照してください。

表5-9　COBOL言語のMCFイベント情報の内容（COPNEVT，CCLSEVT）

項目
位置
（バイト）
長さ
（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「COPNEVT」，または「CCLSEVT」が設定されます。

入力元論理端末名称
8
8
英数字
確立または解放したコネクション名に対応する論理端末名称が設定されます。

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージ入力日付
32
8
外部10進数字
COPNEVT，CCLSEVTを入力した日付です。

メッセージ入力時刻
40
8
外部10進数字
COPNEVT，CCLSEVTを入力した時刻です。

予備
48
60
－
－

（凡例）

－：該当しません，または使用されません。

表5-10　COBOL言語のMCFイベント情報の内容（RHLDEVT）

項目
位置
（バイト）
長さ
（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「RHLDEVT」が設定されます。

入力元論理端末名称
8
8
英数字
受信メッセージを保留した論理端末名称が設定されます。

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージ入力日付
32
8
外部10進数字
RHLDEVTを入力した日付です。

メッセージ入力時刻
40
8
外部10進数字
RHLDEVTを入力した時刻です。

予備
48
16
－
－

予備
64
44
－
－

（凡例）

－：該当しません，または使用されません。

表5-11　COBOL言語のMCFイベント情報の内容（MDELEVT）

項目
位置
（バイト）
長さ
（バイト）
属性
内容

イベントコード
0
8
英数字
イベントコード「MDELEVT」が設定されます。

論理端末名称
8
8
英数字
破棄したメッセージを入力した論理端末名称，または破棄したメッセージを出力しようとした論理端末名称が設定されます。

予備
16
8
－
－

入力元コネクション名
24
8
英数字
コネクション名が設定されます。

メッセージ入力日付
32
8
外部10進数字
MDELEVTを入力した日付です。

メッセージ入力時刻
40
8
外部10進数字
MDELEVTを入力した時刻です。

理由コード※
48
4
2進数字
理由コードが設定されます。

予備
52
56
－
－

（凡例）

－：該当しません，または使用されません。

注※

理由コードの詳細については，「付録J　理由コード一覧」を参照してください。

6.　システム定義

この章では，TCP/IPプロトコルを使用するために必要な，OpenTP1のシステム定義の中でのTP1/NET/TCP/IP固有のシステム定義，および定義例について説明します。

＜この章の構成＞

TP1/NET/TCP/IPの定義の概要

TP1/NET/TCP/IP固有のシステム定義の種類

定義の指定順序

mcfaalcap（アプリケーション属性定義）

mcfmuap（UAP共通定義）

mcfttrc（トレース環境定義）

mcftalccn（コネクション定義の開始）

mcftalced（コネクション定義の終了）

mcftalcle（論理端末定義）

システムサービス情報定義

システムサービス共通情報定義

MCF定義オブジェクトの生成

MCF定義オブジェクトの解析

コネクションの形態とMCF通信構成定義との関係

アプリケーションプログラムとシステム環境設定の関連

MCFトレースファイルの見積もり式

DCCMII/TCPおよびDCCM3/TCPの通信定義との関係

OpenTP1システムの変更に影響する定義

定義例

TP1/NET/TCP/IPの定義の概要

TP1/NET/TCP/IPのシステム定義は，OpenTP1のネットワークコミュニケーション定義の中で定義します。

OpenTP1のネットワークコミュニケーション定義の中での定義

OpenTP1のネットワークコミュニケーション定義のうち，TP1/NET/TCP/IPに固有の定義について説明します。

使用する定義ファイル

MCFおよびTP1/NET/TCP/IPを起動するには，定義ファイルに環境情報を設定する必要があります。MCFで使用する定義ファイルを次の表に示します。

表6-1　MCFで使用する定義ファイル

定義の種類 | 定義のソースファイル | 定義の内容
MCFマネジャ定義 | MCFマネジャ定義ソースファイル | MCF全体の実行環境
MCF通信構成定義 | 共通定義ソースファイル | プロトコルごとの実行環境
プロトコル固有定義ソースファイル
MCFアプリケーション定義 | MCFアプリケーション定義ソースファイル | アプリケーションの属性

定義のソースファイルは，定義コマンド，オプション，およびオペランドを指定して作成します。それらの中には，プロトコルで共通のものと，プロトコルに固有のものがあります。次の定義には，TP1/NET/TCP/IPに固有の定義があります。

MCFマネジャ定義

MCF通信構成定義

この章では，TP1/NET/TCP/IPに固有の定義コマンド，オプション，およびオペランドについて説明します。プロトコルで共通の定義については，マニュアル「OpenTP1 システム定義」を参照してください。ただし，mcftbuf（バッファグループ定義）のlength，countオペランドの指定値については，「6.　システム定義」の「mcftalccn（コネクション定義の開始）」の注意事項を参照してください。

TP1/NET/TCP/IPの組み込み時に必要なファイル

次に示すファイルは，TP1/NET/TCP/IPをOpenTP1システムに組み込むときに必要なファイルです。

システムサービス情報定義ファイル

システムサービス共通情報定義ファイル

MCF定義オブジェクトファイル

この章では，システムサービス情報定義ファイルとシステムサービス共通情報定義ファイルの記述内容，およびMCF定義オブジェクトファイルを生成するユティリティの起動コマンドについて説明します。TP1/NET/TCP/IPを組み込む方法については，「8.　組み込み方法」を参照してください。

TP1/NET/TCP/IP固有のシステム定義の種類

OpenTP1のネットワークコミュニケーション定義のうち，TP1/NET/TCP/IPに固有の定義の一覧を次の表に示します。

表6-2　TP1/NET/TCP/IP固有の定義の一覧

定義名
コマンド
オプション・オペランド
定義内容
指定値((値範囲))《省略時解釈値》

MCFマネジャ定義
mcfmuap※¹
（UAP共通定義）
-t
sndtim
同期型送信監視時間
符号なし整数((0～65535))《0》（単位：秒）

sndrcvtim
同期型送受信監視時間
符号なし整数((0～65535))《0》（単位：秒）

recvtim
同期型受信監視時間
符号なし整数((0～65535))《0》（単位：秒）

MCF通信構成定義
共通定義
mcfttrc
（トレース環境定義）
-t
msgsize
トレース取得するメッセージのサイズ
符号なし整数((0～1073741824​))《128》（単位：バイト）

プロトコル固有定義
mcftalccn
（コネクション定義の開始）
指定数：1～512または1～1024※²
-c
－
コネクションID
1～8文字の識別子

-N
modelname
モデルコネクションID
1～8文字の識別子

-p
－
プロトコルの種別
tcp

-g
sndbuf
メッセージ送信用バッファグループ番号
符号なし整数((1～512))

rcvbuf
メッセージ受信用バッファグループ番号
符号なし整数((1～512))

-e
msgbuf
メッセージ編集用バッファグループ番号
符号なし整数((1～512))

count
メッセージ編集用バッファ数
符号なし整数((1～131070))

-i
－
コネクションの確立方法
auto｜《manual》

-b
bretry
コネクション確立障害時の確立再試行するかどうかを指定
《yes》｜no

bretrycnt
コネクション確立障害時の確立再試行回数
符号なし整数((0～65535))《0》（単位：回）

bretryint
コネクション確立障害時の確立再試行間隔
符号なし整数((0～2550))《60》（単位：秒）

concmptim
コネクション確立時の監視時間
符号なし整数((0～65535))《0》（単位：秒）

sndcmptim
メッセージ送信完了までの監視時間
符号なし整数((0～65535))《0》（単位：秒）

-w
srtimout
コネクション切断抑止をするかどうかを指定
yes｜《no》

-t
－
トランスポート層のプロトコルの種別
tcp

-y
mode
クライアントとサーバの種別
client｜server

-r
ipaddr
自システムのホストのIPアドレス
符号なし整数((0～255))（nnn.nnn.nnn.nnn）

hostname
自システムのホスト名
1～255文字のホスト名

portno
自システムのホストのポート番号
符号なし整数((1024～65535))

-o
oipaddr
相手システムのホストのIPアドレス
符号なし整数((0～255))（nnn.nnn.nnn.nnn）

ohostname
相手システムのホスト名
1～255文字のホスト名

oportno
相手システムのホストのポート番号
符号なし整数((1～65535))《free》

-k
keepalive
ソケットオプション「SO_KEEPALIVE」を使用するかどうかを指定
yes｜《no》

nodelay
ソケットオプション「TCP_NODELAY」を使用するかどうかを指定
yes｜《no》

notrftime
無通信状態監視時間
符号なし整数((0～65535))《0》（単位：秒）

-f
kind
相手システムからのコネクション解放の通知
《ccls》｜cerr

cnrelease
コネクション解放形態
《fin》｜rst

releaselog
コネクション解放時のログメッセージの形式
《1》｜2

cnerrlog
障害によるコネクション切断時のログメッセージの形式
《1》｜2

-A
mastercn
現用コネクションID
1～8文字の識別子

-u
masm
受信メッセージ組み立て機能を使用するかどうかを指定
yes｜《no》

ntimer
後続セグメント受信の監視タイマ
《yes》｜no

ntime
後続セグメント受信の監視タイマ値
符号なし整数((1～2550))《30》（単位：秒）

delichk
メッセージ送達確認機能を使用するかどうかを指定
dccm2m｜dccm2s｜dccm3m｜dccm3s｜use｜《nouse》

msghold
受信メッセージを保留するかどうかを指定
《nohold》｜hold｜uoc

holdlimit
受信メッセージの最大保留数
符号なし整数((0～256))《1》

-h
addrchk
相手アドレス情報のチェックをするかどうかを指定
《yes》｜no

chgconn
コネクション確立要求を受け付けた場合，未確立コネクションがなかったときの動作（コネクションリプレース機能を使用するかどうかを指定）
replace｜《keep》

listen
オンライン開始時から自動的にコネクション確立要求を受け付けるかどうかを指定
《auto》｜manual

-C
lscnfmt
mcftlscnコマンドの表示形式
《1》｜2

-l
replymsg
問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信を行うかどうかを指定
yes｜《no》

cnassign
相手からのコネクション確立要求時にコネクションを割り当てる対象の選択
《freeonly》｜all

mcftalcle
（論理端末定義）
指定数：1～512または1～1024※²
-l
－
論理端末名称
1～8文字の識別子

-N
modelname
モデル論理端末名称
1～8文字の識別子

-t
－
論理端末の端末タイプ
any

-m
mmsgcnt
メモリ出力メッセージ最大格納数
符号なし整数((0～65535))《0》

dmsgcnt
ディスク出力メッセージ最大格納数
符号なし整数((0～65535))《0》

-i
－
論理端末の閉塞解除方法
《auto》｜manual

-k
quekind
出力メッセージの割り当て先
《memory》｜disk

quegrpid
キューグループID
1～8文字の識別子

-o
aj
メッセージ送信完了ジャーナルを取得するかどうかを指定
《yes》｜no

-v
－
アプリケーション名
1～8文字の識別子

-d
replacemsg
コネクション再確立時に未送信メッセージを送信するかどうかを指定（コネクション再確立時の未送信メッセージの送信抑止機能を使用するかどうかを指定）
《send》｜discard

mcftalced
（コネクション定義の終了）
指定数：mcftalccnと同数
－
－
コネクション定義の終了
－

MCFアプリケーション定義
mcfaalcap※1
（アプリケーション属性定義）
指定数：1～4096
-n
replychk
応答送信チェックをするかどうかを指定
《yes》｜no

（凡例）

－：該当する内容がないことを表します。

注※1

TP1/NET/TCP/IPに固有の定義だけ記載してあります。このほかにも，プロトコルで共通の定義コマンド，オプション，オペランドがあります。それらについては，マニュアル「OpenTP1 システム定義」を参照してください。

注※2

一つのMCF通信プロセス当たりで513以上のコネクション数を使用できるのは，OSがAIX，またはHP-UXの場合だけです。コネクション数の詳細については，「2.1.2　使用できるコネクション数」を参照してください。

定義の指定順序

TP1/NET/TCP/IPのプロトコル固有定義コマンドの指定順序を次の図に示します。MCF通信構成定義コマンドを指定するときは，必ずこの順序に従ってください。

図6-1　TP1/NET/TCP/IPのプロトコル固有定義コマンドの指定順序

注※

mcftalccnコマンドで-Aオプションを指定する場合，mcftalcleは指定できません。

定義内容の流用

MCF通信構成定義では，コネクション定義の開始（mcftalccn -N）または論理端末定義（mcftalcle -N）のmodelnameオペランドを使用すると，モデルとする定義の指定内容を流用できます。

このとき，モデルとするMCF通信構成定義の一部だけを流用して，新しい定義を作成することもできます。例えば，コネクション名称「cn01」のコネクション定義の一部を流用してコネクション名称「cn02」を定義する場合，次の図に示すように定義できます。

図6-2　コネクション定義の指定例

mcfaalcap（アプリケーション属性定義）

形式

mcfaalcap           ：
     〔-n "〔replychk=yes｜no〕"〕

                   ：

機能

アプリケーションに関する属性を定義します。

オプション

この定義コマンドには，ほかにもオプションがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

●-n

このオプションには，ほかにもオペランドがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

（オペランド）

replychk=yes｜no　　～《yes》

応答型アプリケーションが応答メッセージを送信したかどうか，MCFにチェックさせるかどうかを指定します。

yes

応答型アプリケーションが応答メッセージを送信していない場合，またはほかの応答型アプリケーションを起動していない場合に，トランザクションをロールバックしERREVT3を通知します。

no

応答型アプリケーションが応答メッセージを送信したかどうかをチェックしません。

replychkオペランドを指定した場合は，typeオペランドにansを，kindオペランドにuserを指定する必要があります。

mcfmuap（UAP共通定義）

形式

mcfmuap             ：
     〔-t "〔sndtim=同期型送信監視時間〕
           〔sndrcvtim=同期型送受信監視時間〕
           〔recvtim=同期型受信監視時間〕"〕

                   ：

機能

UAPに共通する環境を定義します。

オプション

この定義コマンドには，ほかにもオプションがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

●-t

（オペランド）

sndtim=同期型送信監視時間　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

同期型のメッセージ送信の仕掛り開始から終了までの限界監視時間を指定します。監視時間の詳細については，「6.　システム定義」の「アプリケーションプログラムとシステム環境設定の関連」を参照してください。0を指定した場合，監視を行いません。

sndrcvtim=同期型送受信監視時間　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

同期型のメッセージ送受信の仕掛り開始から終了までの限界監視時間を指定します。監視時間の詳細については，「6.　システム定義」の「アプリケーションプログラムとシステム環境設定の関連」を参照してください。0を指定した場合，監視を行いません。

recvtim=同期型受信監視時間　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

同期型のメッセージ受信の仕掛り開始から終了までの限界監視時間を指定します。監視時間の詳細については，「6.　システム定義」の「アプリケーションプログラムとシステム環境設定の関連」を参照してください。0を指定した場合，監視を行いません。

mcfttrc（トレース環境定義）

形式

mcfttrc             ：
     〔-t "〔msgsize=MCFトレースに取得する送受信メッセージのサイズ〕"〕
                   ：

機能

MCFのトレースに関する環境を定義します。

オプション

この定義コマンドには，ほかにもオプションがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

●-t

（オペランド）

msgsize=MCFトレースに取得する送受信メッセージのサイズ　　～〈符号なし整数〉((0～1073741824))《128》（単位：バイト）

TP1/NET/TCP/IPがMCFトレースに取得する送受信メッセージの最大メッセージ長を指定します。0を指定した場合，送受信メッセージの内容をMCFトレースに取得しません。送受信メッセージのサイズがこの指定値より小さい場合は，メッセージの全内容をMCFトレースに取得します。

このオペランドを指定する場合，トレースバッファの大きさ（mcfttrc -t size）はこのオペランドよりも十分に大きな値を指定してください。トレースバッファの大きさよりもこのオペランドの指定値が大きい場合，トレースバッファの大きさよりも大きなメッセージを送受信したとき，TP1/NET/TCP/IPは該当するメッセージのMCFトレースを取得しません。

MCFトレースファイルの見積もり式については，「6.　システム定義」の「MCFトレースファイルの見積もり式」を参照してください。

mcftalccn（コネクション定義の開始）

形式

mcftalccn -c コネクションID
       〔-N "modelname=モデルコネクションID"〕
         -p tcp
         -g "sndbuf=メッセージ送信用バッファグループ番号
             rcvbuf=メッセージ受信用バッファグループ番号"
       〔-e "msgbuf=メッセージ編集用バッファグループ番号
             count=メッセージ編集用バッファ数"〕
       〔-i auto｜manual〕
       〔-b "〔bretry=yes｜no〕
             〔bretrycnt=コネクション確立障害時の確立再試行回数〕
             〔bretryint=コネクション確立障害時の確立再試行間隔〕
             〔concmptim=コネクション確立時監視時間〕
             〔sndcmptim=メッセージ送信完了監視時間〕"〕
       〔-w "srtimout=yes｜no"〕
         -t tcp
         -y "mode=client｜server"
       〔-r "〔ipaddr=自システムのホストのIPアドレス〕
             〔hostname=自システムのホスト名〕
               portno=自システムのポート番号"〕
       〔-o "〔oipaddr=相手システムのホストのIPアドレス〕
             〔ohostname=相手システムのホスト名〕
               oportno=相手システムのホストのポート番号｜free"〕
       〔-k "〔keepalive=yes｜no〕
             〔nodelay=yes｜no〕
             〔notrftime=無通信状態監視時間〕"〕
       〔-f "〔kind=ccls｜cerr〕
             〔cnrelease=fin｜rst〕
             〔releaselog=1｜2〕
             〔cnerrlog=1｜2〕"〕
       〔-A "mastercn=現用コネクションID"〕
       〔-u "〔masm=yes｜no〕
             〔ntimer=yes｜no〕
             〔ntime=後続セグメント受信の監視タイマ値〕
             〔delichk=dccm2m｜dccm2s｜dccm3m｜dccm3s｜use｜nouse〕
             〔msghold=nohold｜hold｜uoc〕
             〔holdlimit=受信メッセージ最大保留数〕"〕
       〔-h "〔addrchk=yes｜no〕
             〔chgconn=replace｜keep〕
             〔listen=auto｜manual〕"〕
       〔-C "lscnfmt=1｜2"〕
       〔-l "〔replymsg=yes｜no〕
             〔cnassign=freeonly｜all〕"〕

機能

コネクションに関する環境を定義します。

オプション

●-c コネクションID　　～〈1～8文字の識別子〉

OpenTP1システム内で，一意となるコネクションIDを指定します。

●-N

（オペランド）

modelname=モデルコネクションID　　～〈1～8文字の識別子〉

このコネクション定義で使用する定義情報を持つ（モデルとする），コネクション定義のコネクションIDを指定します。ただし，指定したコネクションIDに対するコネクション定義が，先に定義されていなければなりません。

このオペランドを指定したときは，-cオプション以外のオプション，またはオペランドを省略できます。

-cオプション以外のオプション，またはオペランドを省略した場合，modelnameに指定したコネクションIDの定義指定値がすべて流用されます。

このコネクション定義に-Nオプション以外のオプション，またはオペランドを指定した場合は，指定したオプション，またはオペランドの指定値が優先されます。

このオプションは2回以上指定できません。また，モデルとしたコネクションと，-Nオプション以外に指定したオプション，またはオペランドの組み合わせによっては，相関チェックによってエラーになる場合があります。そのため，-iオプションには，モデル定義と異なる指定をしないでください。

●-p tcp

プロトコルの種別を指定します。

tcp

TCP/IPプロトコル

●-g

（オペランド）

sndbuf=メッセージ送信用バッファグループ番号　　～〈符号なし整数〉((1～512))

メッセージ送信用バッファグループ番号を指定します。

mcftbufコマンドの-gオプションのgroupnoオペランドで指定するバッファグループ番号を指定してください。

rcvbuf=メッセージ受信用バッファグループ番号　　～〈符号なし整数〉((1～512))

メッセージ受信用バッファグループ番号を指定します。

mcftbufコマンドの-gオプションのgroupnoオペランドで指定するバッファグループ番号を指定してください。

●-e

（オペランド）

msgbuf=メッセージ編集用バッファグループ番号　　～〈符号なし整数〉((1～512))

入力，出力メッセージ編集UOC呼び出し時に，メッセージ編集用として使用するバッファグループ番号を指定します。

このオペランドを省略した場合は，メッセージ編集用バッファは確保されません。メッセージ編集用バッファグループ番号は，mcftbufコマンドの-gオプションのgroupnoオペランドで指定するバッファグループ番号を指定します。

count=メッセージ編集用バッファ数　　～〈符号なし整数〉((1～131070))

入力，出力メッセージ編集UOC呼び出し時に，メッセージ編集用として使用するバッファの数を指定します。

msgbufオペランドで指定するメッセージ編集用バッファグループ番号に対応するmcftbufコマンドの-gオプションのcount，およびextendオペランドで指定するバッファ数の中から，1回のUOC呼び出しごとに1面のバッファを使用します。このオペランドに2以上の値を指定しても，入力メッセージ編集UOCおよび出力メッセージ編集UOCで使用できる編集バッファ数は一つだけです。

メッセージ編集用バッファグループ番号に対応するmcftbufのcountオペランドおよびextendオペランドには，すべての論理端末で入力メッセージ編集UOCおよび出力メッセージ編集UOCが，同時に動作した場合を考慮した面数を指定してください。

また，このcountオペランドで指定するメッセージ編集用バッファ数は，mcftbufコマンドの-gオプションのcount，およびextendオペランドで指定するバッファ数の合計値を超える指定はできません。

msgbufオペランドを省略した場合は，このオペランドの指定は無効です。

msgbufオペランドを指定した場合，このオペランドを省略できません。省略した場合，定義オブジェクト生成時にKFCA11519-Eメッセージを出力してエラーとなります。

●-i auto｜manual　　～《manual》

OpenTP1システム開始時および再開始時の，コネクションの確立の方法を指定します。このオプションは，mcftalccnコマンドの-yオプションのmodeオペランドで，clientを指定した場合だけ有効です。また，-Aオプションを指定した場合はmanual以外は指定できません。

auto

OpenTP1システム開始時および再開始時にコネクションを自動的に確立します。

manual

MCF起動後，コネクションを確立します。コネクションの確立は，運用コマンド（mcftactcn）の入力，またはAPI（dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△')）の発行で行います。

●-b

（オペランド）

bretry=yes｜no　　～《yes》

コネクション確立時に障害が発生した場合，コネクション確立の再試行をするかどうかを指定します。mcftalccnコマンドの-yオプションのmodeオペランドで，serverを指定した場合にはネットワークへのアドレス割り当ての再試行をします。

yes

コネクションの確立再試行をします。

no

コネクションの確立再試行をしません。

bretrycnt=コネクション確立障害時の確立再試行回数　　～〈符号なし整数〉((0～65535))《0》（単位：回）

コネクションの確立再試行をする場合の確立再試行回数を指定します。bretryオペランドでnoを指定した場合，このオペランドの指定は無効です。

bretryオペランドでyesを指定し，このオペランドに0を指定した場合，無限に確立再試行をします。

bretryint=コネクション確立障害時の確立再試行間隔　　～〈符号なし整数〉((0～2550))《60》（単位：秒）

コネクションの確立再試行をする場合の確立再試行間隔を指定します。bretryオペランドでnoを指定した場合，このオペランドの指定は無効です。

concmptim=コネクション確立時監視時間　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

コネクション確立時の監視時間を指定します。0を指定するか，指定を省略した場合は，OSの監視時間に依存します。

コネクション確立時の監視時間がタイムアウトした場合，コネクション確立を再試行できれば，コネクション確立障害時の確立再試行間隔後，コネクション確立を再試行します。コネクション確立を再試行できなければ，CERREVTを起動します。コネクション確立障害時再試行との関係については，「付録E　障害発生時の処理の流れ」を参照してください。

sndcmptim=メッセージ送信完了監視時間　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

メッセージ送信完了までの監視時間を指定します。0を指定した場合，時間監視をしません。また，同期型メッセージの送信関数の発行時，このオペランドによる時間監視を行いません。同期型メッセージの送信関数の時間監視は，関数発行時に指定する監視時間で行ってください。

同期型メッセージの送受信関数でメッセージ送信完了までの時間を監視する場合，このオペランドには，次の値より小さな値を指定してください。

mcfmuapコマンドの-tオプションのsndrcvtimオペランドで指定する同期型送受信監視時間

同期型メッセージの送受信関数の発行時（dc_mcf_sendrecv関数またはCBLDCMCF('SENDRECV')）に指定する最大時間

監視対象区間やタイムアウトした場合の動作については，「6.　システム定義」の「アプリケーションプログラムとシステム環境設定の関連」を参照してください。

●-w

（オペランド）

srtimout=yes｜no　　～《no》

同期型メッセージの送受信関数がタイムアウトした場合に，コネクションの切断を抑止するかどうかを指定します。

yes

同期型メッセージの送受信関数がタイムアウトした場合，コネクションを切断しません。

no

同期型メッセージの送受信関数がタイムアウトした場合，コネクションを切断します。

●-t tcp

トランスポート層に適用するプロトコルを指定します。

tcp

TCP/IPプロトコル

●-y

（オペランド）

mode=client｜server

自システムのコネクション確立モードを指定します。コネクション切り替え機能の対象となるコネクションの場合，このオペランドではclientしか指定できません。

client

クライアントとして，コネクションの確立要求をします。

server

サーバとして，コネクションの確立要求を受けます。

●-r

（オペランド）

ipaddr=自システムのホストのIPアドレス　　～（nn.nn.nn.nn）〈符号なし整数〉((0～255))

自システムのホストのIPアドレスを指定します。

指定形式はnn.nn.nn.nnです。nnの値は，0～255まで指定できます。

ただし，0.0.0.0と255.255.255.255は指定できません。

このオペランドを指定した場合，指定したアドレスをバインドします。また，このオペランドを省略した場合，自システムのIPアドレスはOSによって割り振られます

hostname=自システムのホスト名　　～〈1～255文字のホスト名〉

自システムのホスト名を指定します。

自システムがサーバで，OpenTP1の開始時にIPアドレスを取得できなかった場合，開始処理を中断します。

ipaddrオペランドを指定した場合，このオペランドの指定は無効です。

このオペランドを指定し，ipaddrオペランドの指定を省略した場合，このオペランドで指定したアドレスをバインドします。

portno=自システムのポート番号　　～〈符号なし整数〉((1024～65535))

メッセージ送受信に使用する，自システムのポート番号を指定します。

コネクションとポートの関係については，「2.1.1(1)　コネクションとポートの関係」を参照してください。

ほかのプロセスが使用するポートと重複しないポート番号を指定してください。また，OSが任意に割り当てるポート番号（動的ポートまたは短命ポートと呼ばれるポート番号）を使用しないでください。

OSが任意に割り当てるポート番号は，OSの種別やバージョンによって異なります。詳細については，ご使用のOSのマニュアルを参照してください。

一方，同じ定義内（MCF通信プロセス内）に複数のコネクションを指定する場合は，重複したポート番号を指定できます。ただし，図2-3に示すパターンで重複させることはできません。

クライアント型コネクション（コネクション定義（mcftalccn -y）のmodeオペランドでclientを指定）の場合は省略できます。省略した場合，自システムのポート番号はコネクション確立時にOSによって割り振られます。

サーバ型コネクション（コネクション定義（mcftalccn -y）のmodeオペランドでserverを指定）の場合は必ず指定してください。

-rオプションのportnoオペランドが同じサーバ型コネクションを複数指定する場合，-rオプションのipaddrオペランドおよびhostnameオペランドの指定を省略したコネクションと，-rオプションのipaddrオペランドまたはhostnameオペランドを指定したコネクションを混在して使用しないでください。

●-o

（オペランド）

oipaddr=相手システムのホストのIPアドレス　　～（nn.nn.nn.nn）〈符号なし整数〉((0～255))

相手システムのホストのIPアドレスを指定します。

指定形式は，nn.nn.nn.nnです。nnの値は，0～255まで指定できます。

ただし，0.0.0.0と255.255.255.255は指定できません。

ohostname=相手システムのホスト名　　～〈1～255文字のホスト名〉

相手システムのホスト名を指定します。

-oオプションを指定するときは，上に示す二つのオペランドのどちらかを必ず指定してください。二つのオペランドを指定すると，ohostnameオペランドは無効となります。

oportno=相手システムのホストのポート番号｜free　　～〈符号なし整数〉((1～65535))《free》

相手システムのホストのポート番号を指定します。freeを指定できるのは，-yオプションのmodeオペランドでserverを指定した場合だけです。

freeを指定した場合，oipaddrまたはohostnameオペランドで指定した相手システムと一致する任意のポート番号からのコネクション確立要求を受け入れます。このとき，一つの相手システムから複数のコネクションを受け入れるためには，受け入れるコネクション数の分だけコネクション定義を指定する必要があります。さらに，それぞれのコネクション定義には，同一のoipaddrまたはohostnameオペランドを指定してください。指定したコネクション定義の数以上のコネクション確立要求を受けた場合，要求を拒否します。

●-k

（オペランド）

keepalive=yes｜no　　～《no》

TCP/IPが提供するソケットオプション「SO_KEEPALIVE」を使用するかどうかを指定します。

SO_KEEPALIVEを使用することで，コネクションの切断を検出することができるようになりますが，ネットワークの負荷を高める場合があります。そのため，この機能の必要性を十分に検討した上で使用するようにしてください。

yes

キープアライブを使用します。

no

キープアライブを使用しません。

nodelay=yes｜no　　～《no》

TCP/IPが提供するソケットオプション「TCP_NODELAY」を使用するかどうかを指定します。

TCP_NODELAYを使用することで，送信済みデータの応答待ちの状態でも，遅延させることなくデータ送信ができるようになりますが，ネットワークの負荷は大きくなります。そのため，この機能の必要性を十分に検討した上で使用するようにしてください。

yes

TCP_NODELAYを使用します。

no

TCP_NODELAYを使用しません。

notrftime=無通信状態監視時間　　～〈符号なし整数〉((0～65535))《0》（単位：秒）

コネクションの無通信状態の経過時間を監視するタイマ値を設定します。0を指定した場合，時間監視をしません。

●-f

（オペランド）

kind=ccls｜cerr　　～《ccls》

相手システムからのコネクション解放の通知方法を指定します。

ccls

状態通知イベント（CCLSEVT）で通知します。

cerr

障害通知イベント（CERREVT）で通知します。

cnrelease=fin｜rst　　～《fin》

障害などによるコネクション解放が発生したときのコネクション解放形態を指定します。コネクションを解放する要因と送信するパケットの関係については，「2.1.9　コネクション障害」を参照してください。

fin

FINパケットを送信してコネクションを解放します。

rst

RSTパケットを送信してコネクションを強制的に解放します。

releaselog=1｜2　　～《1》

コネクションを解放したときのログメッセージの形式を指定します。

1

KFCA14801-Iの形式で出力します。

2

KFCA14875-Iの形式で出力します。

cnerrlog=1｜2　　～《1》

障害によるコネクション切断が発生したときのログメッセージの形式を指定します。

1

KFCA14802-Eを出力します。

2

KFCA14802-EとKFCA14876-Iを出力します。

●-A

（オペランド）

mastercn=現用コネクションID　　～〈1～8文字の識別子〉

コネクション切り替え機能の使用時に，該当するコネクションを交代用として指定する場合に，その対となる現用コネクションIDを指定します。

このオペランドを指定した場合，現用コネクションで指定されている論理端末定義が反映されます。

このオペランドを指定するには，TP1/NET/High Availabilityが必要です。TP1/NET/High Availabilityがないと，コネクション切り替え機能を使用できません。

交代用コネクションとMCF通信構成定義との関係については，「6.　システム定義」の「コネクションの形態とMCF通信構成定義との関係」を参照してください。

●-u

（オペランド）

masm=yes｜no　　～《no》

受信メッセージの組み立て機能を使用するかどうかを指定します。

yes

受信メッセージ組み立て機能を使用します。

yesを指定した場合，入力セグメント判定UOCは無効となるため，入力セグメント判定UOCが組み込まれていても起動しません。

no

メッセージ組み立て機能を使用しません。

入力セグメント判定UOCが組み込まれている場合，入力セグメント判定UOCを起動します。入力セグメント判定UOCが組み込まれていない場合，セグメントの組み立てをしないで，TP1/NET/TCP/IPが受信したデータを論理メッセージとします。

ntimer=yes｜no　　～《yes》

後続セグメント受信の監視タイマをセットするかどうかを指定します。このオペランドの指定値は，受信メッセージ組み立て機能を使用する場合，つまり，masmオペランドにyesを指定した場合だけ有効です。

yes

監視タイマをセットします。

no

監視タイマをセットしません。

ntime=後続セグメント受信の監視タイマ値　　～〈符号なし整数〉((1～2550))《30》（単位：秒）

後続セグメント受信の監視タイマをセットする場合に，監視タイマ値を指定します。後続セグメント受信監視時間がタイムアウトした場合，コネクションを解放し，CERREVTを起動します。

delichk=dccm2m｜dccm2s｜dccm3m｜dccm3s｜use｜nouse　　～《nouse》

メッセージ送達確認機能を使用するかどうかを指定します。メッセージ送達確認機能を使用する場合，同期型メッセージの送受信関数を使用できません。

dccm2m

メッセージ送達確認機能を使用し，TERMINAL文のCONTENTオペランドがMASTERを指定したDCCMII/TCPとして動作します。

dccm2s

メッセージ送達確認機能を使用し，TERMINAL文のCONTENTオペランドがSLAVEを指定したDCCMII/TCPとして動作します。

dccm3m

メッセージ送達確認機能を使用し，TERMINAL文のCONTENTオペランドがMASTERを指定したDCCM3/TCPとして動作します。

dccm3s

メッセージ送達確認機能を使用し，TERMINAL文のCONTENTオペランドがSLAVEを指定したDCCM3/TCPとして動作します。

use

任意の相手システム間とのメッセージ送達確認を行います。受信メッセージ判定UOCが組み込まれている場合，メッセージ受信後に呼び出します。受信メッセージ判定UOCが組み込まれていない場合，開始処理を中断します。

nouse

メッセージ送達確認機能を使用しません。

メッセージ送達確認機能を使用する場合のほかのオプション，オペランドとの関係

送信完了監視タイマ（-bオプションのsndcmptimオペランド）
メッセージの送信から応答データの受信までを監視します。

受信メッセージの組み立て機能を使用するかどうか（-uオプションのmasmオペランド）
dccm2m，dccm2s，dccm3m，dccm3sを指定した場合は，noを指定できません。省略した場合，yesを指定したものと見なします。

msghold=nohold｜hold｜uoc　　～《nohold》

相手システムから受信したメッセージをTP1/NET/TCP/IP内で保留するかどうかを指定します。

ただし，同期型メッセージの送受信関数または同期型メッセージの受信関数で受信を待ち合わせていた場合，このオペランドの指定値に関係なく，同期型メッセージの送受信関数または同期型メッセージの受信関数を発行していたUAPに受信メッセージを通知します。

nohold

受信したメッセージを保留しません。

TP1/NET/TCP/IPは受信メッセージを入力キューに書き込み，MHPを起動します。

hold

受信したメッセージを保留します。

保留したメッセージは同期型メッセージの受信関数を使用して受信してください。

uoc

受信したメッセージごとに，受信メッセージ保留判定UOCで保留するかどうかを判定します。

受信メッセージ保留判定UOCが組み込まれていない場合，メッセージログ（KFCA14844-E）を出力し，開始処理を中断します。

holdlimit=受信メッセージ最大保留数　　～〈符号なし整数〉((0～256))《1》

TP1/NET/TCP/IP内で保留する受信メッセージの最大数を指定します。

このオペランドの指定値を超えて受信メッセージを保留した場合，メッセージログ（KFCA14867-E）を出力し，コネクションを解放します。

0を指定した場合，最大保留数は無制限になります。ただし，実際に保留できるメッセージ数は，バッファグループ定義で指定したバッファ数（mcftbuf -g count）に依存します。

msgholdオペランドを省略した場合，またはmsgholdオペランドにnoholdを指定した場合，このオペランドの指定値は無効となります。

●-h

（オペランド）

addrchk=yes｜no　　～《yes》

コネクション確立要求受信時に相手アドレス情報をチェックするかどうかを指定します。

一つのMCF通信構成定義内でのすべてのサーバ型コネクションで，このオペランドに同じ値を指定する必要があります。

クライアント型コネクションにこのオペランドを指定しても無効となります。

yes

コネクション確立要求受信時に相手アドレス情報をチェックします。

相手システムのアドレス情報を定義しておく必要があります。

コネクション定義で指定された相手アドレスと確立要求発行元アドレスが一致する場合は確立要求を受け入れますが，一致しない場合は確立要求を拒否します。

no

コネクション確立要求受信時に相手アドレス情報をチェックしません（相手アドレスチェックを抑止します）。

相手システムのアドレス情報の定義は不要です。定義した場合は，無効となります。

コネクション確立UOCの判断によって，任意の相手システムと確立できます。未確立コネクションがない場合は，確立を拒否します。

noを指定した場合，ほかのオプションのオペランドとの関係は次のようになります。

-yオプションのmodeオペランドでclientを指定した場合は，addrchkオペランドの指定は無効となります。

-oオプションのoipaddrオペランド，ohostnameオペランドおよびoportnoオペランドで相手システムのアドレス情報を指定しても無効となります。

chgconn=replace｜keep　　～《keep》

相手システムからコネクションの確立要求を受け付けた場合に，割り当てできる未確立コネクションがないときの動作（コネクションリプレースの使用有無）を指定します。

一つのMCF通信構成定義内で，同じ自システムのポート番号（コネクション定義（mcftalccn -r）のportnoオペランドで指定）を持つすべてのサーバ型コネクション（コネクション定義（mcftalccn -y）のmodeオペランドでserverを指定）で，このオペランドに同じ値を指定する必要があります。

クライアント型コネクション（コネクション定義（mcftalccn -y）のmodeオペランドでclientを指定）および，相手ポート番号が固定（コネクション定義（mcftalccn -o）のoportnoオペランドに1～65535を指定）のサーバ型コネクションにこのオペランドを指定した場合，無効となります。

replace

コネクションリプレース機能を使用します。相手システムと確立状態にある最も古いコネクションを切断して，新たなコネクションの確立要求を受け付けます。

keep

コネクションリプレース機能を使用しません。既存のコネクションの確立状態を保持し，相手システムからの新たなコネクション確立要求を拒否します。

このオペランドを省略した場合はkeepを仮定します。

listen=auto｜manual　　～《auto》

オンライン開始時に自動的にコネクション確立要求を受け付けるかどうかを指定します。

一つのMCF通信構成定義内で，同じ自システムのポート番号（mcftalccn -r portno）を持つすべてのサーバ型コネクションで，このオペランドに同じ値を指定する必要があります。

クライアント型コネクションにこのオペランドを指定した場合は無効となります。

auto

オンライン開始時に自動的にコネクション確立要求を受け付けます。

manual

MCF起動後に，相手システムからのコネクション確立要求の受け付けを開始します。コネクション確立要求の受付開始は，運用コマンド（mcftonln）の入力，またはAPI（dc_mcf_tonln関数もしくはCBLDCMCF('TONLN△△△')）で行います。

●-C

（オペランド）

lscnfmt=1｜2　　～《1》

mcftlscnコマンドの出力形式を指定します。

1

出力形式1（TP1/NET/TCP/IP 07-01以前と互換性のある形式）で状態表示します。

2

出力形式2（TP1/NET/TCP/IP 07-02で追加した形式）で状態表示します。

-dオプションを指定したときに，受信メッセージの保留数が追加で表示されます。

●-l

（オペランド）

replymsg=yes｜no　　～《no》

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信を行うかどうかを指定します。

サーバ型コネクションで指定する場合，一つのMCF通信構成定義内で，同じ自システムのポート番号（コネクション定義（mcftalccn -r）のportnoオペランド）を持つすべてのサーバ型コネクション（コネクション定義（mcftalccn -y）のmodeオペランドでserverを指定）で，このオペランドに同じ値を指定する必要があります。

yes

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信を行います。

yesを指定した場合，メッセージ送達確認機能は使用できません。コネクション定義（mcftalccn -u）のdelichkオペランドにnouse以外を指定した場合，定義オブジェクト生成時にKFCA11513-Eメッセージを出力してエラーとなります。

no

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信を行いません。

cnassign=freeonly｜all　　～《freeonly》

問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信を行う場合（コネクション定義（mcftalccn -l）のreplymsgオペランドでyesを指定），相手からのコネクション確立要求時にコネクションを割り当てる対象を選択します。

一つのMCF通信構成定義内で，同じ自システムのポート番号（コネクション定義（mcftalccn -r）のportnoオペランド）を持つすべてのサーバ型コネクション（コネクション定義（mcftalccn -y）のmodeオペランドでserverを指定）で，このオペランドに同じ値を指定する必要があります。

クライアント型コネクションにこのオペランドを指定しても無効となります。

freeonly

未確立のコネクションのうち，継続問い合わせ応答中の論理端末に対応するコネクションを割り当て対象から除きます。また，コネクションリプレースと併用する場合，継続問い合わせ応答中の論理端末に対応するコネクションをコネクションリプレースの対象から除きます。

all

未確立のコネクションすべてを割り当て対象とします。

継続問い合わせ応答中の論理端末に対応するコネクションが割り当てられた場合，KFCA14883-Eを出力し，コネクションを解放します。

replymsgオペランドを省略した場合，またはreplymsgオペランドにnoを指定した場合，このオペランドの指定値は無効となります。この場合，相手からのコネクション確立要求時には未確立のコネクションすべてを割り当て対象とします。

注意事項

-gオプション，および-eオプションで指定するバッファグループ番号は，バッファグループ定義のmcftbufコマンドに対応しています。mcftbufコマンドでは，1コネクション単位に次の表に示す資源が必要です。システムで受信するメッセージの平均長とかけ離れた長さのメッセージを連続で受信した場合，次の表に従って受信バッファを見積もったとしても，バッファ不足が発生することがあります。

バッファグループ定義については，マニュアル「OpenTP1 システム定義」を参照してください。

バッファ種別
lengthオペランド
countオペランド

sndbuf

mcftalccn -u delichk=use，nouseの場合

（最大論理メッセージ長）※1以上

mcftalccn -u delichk=dccm2m，dccm2s，dccm3m，dccm3sの場合

（最大論理メッセージ長＋7）※1以上

mcftalccn -u delichk=nouseの場合

1以上

mcftalccn -u delichk=dccm2m，dccm2s，dccm3m，dccm3s，useの場合

（受信バッファ数＋1）以上

rcvbuf
sndbufと同じ
（lengthオペランドの値）／（受信するメッセージの平均長）※2＋（保留する受信メッセージの数）以上
（小数点以下を切り上げる）

msgbuf
sndbufと同じ
2以上

注※1

出力メッセージ編集UOCでメッセージサイズを変更している場合，次の値を設定してください。

mcftalccn -u delichk=use，nouseのとき
出力メッセージ編集UOCで変更したあとのメッセージサイズ，または最大論理メッセージ長

mcftalccn -u delichk=dccm2m，dccm2s，dccm3m，dccm3sのとき
出力メッセージ編集UOCで変更したあとのメッセージサイズ，または（最大論理メッセージ長＋7）

注※2

相手システムから連続してメッセージを受信する場合，一つの受信バッファに複数のメッセージが格納されることがあります。受信メッセージ組み立て機能または入力セグメント判定UOCで分割する場合，分割した数に応じた受信バッファが必要となります。
一つの受信バッファに3個分のメッセージをまとめて受信した場合の例を次に示します。

相手システムから連続してメッセージを受信する形態では，受信メッセージの最大長よりも極端に大きい値をlengthオペランドに指定すると，一つの受信バッファに多数のメッセージが格納されることがあります。受信バッファに格納されたメッセージは，受信メッセージ組み立て機能または入力セグメント判定UOCによって分割され，格納されているメッセージ数に応じた受信バッファを確保します。そのため，countオペランドにも大きい値を指定する必要がありますので，lengthオペランドには適切な値を設定するようにしてください。

lengthオペランドよりも長い受信メッセージは受信できません。一つの受信メッセージを複数の受信バッファに分割して受信することもできません。

mcftalced（コネクション定義の終了）

形式

mcftalced

機能

コネクション定義の終了を示します。

オプション

ありません。

mcftalcle（論理端末定義）

形式

mcftalcle -l 論理端末名称
       〔-N "modelname=モデル論理端末名称"〕
         -t any
       〔-m "〔mmsgcnt=メモリ出力メッセージ最大格納数〕
             〔dmsgcnt=ディスク出力メッセージ最大格納数〕"〕
       〔-i auto｜manual〕
       〔-k "〔quekind=memory｜disk〕
             〔quegrpid=キューグループID〕"〕
       〔-o "aj=yes｜no"〕
       〔-v アプリケーション名〕
       〔-d "replacemsg=send｜discard"〕

機能

論理端末に関する環境を定義します。

コネクション定義の開始（mcftalccn）で-Aオプションを指定する場合，この定義は指定できません。

オプション

●-l 論理端末名称　　～〈1～8文字の識別子〉

OpenTP1システム内で，一意となる論理端末名称を指定します。

●-N

（オペランド）

modelname=モデル論理端末名称　　～〈1～8文字の識別子〉

この論理端末定義で使用する定義情報を持つ（モデルとする），論理端末定義の論理端末名称を指定します。ただし，指定した論理端末名称に対する論理端末定義が，先に定義されていなければなりません。

このオペランドを指定したときは，-lオプション以外のオプション，またはオペランドを省略できます。

-lオプション以外のオプション，またはオペランドを省略した場合，modelnameに指定した論理端末名称の定義指定値がすべて流用されます。

この論理端末定義に-Nオプション以外のオプション，またはオペランドを指定した場合は，指定したオプション，またはオペランドの指定値が優先されます。

このオプションは2回以上指定できません。また，モデルとした論理端末と，-Nオプション以外に指定したオプション，またはオペランドの組み合わせによっては，相関チェックによってエラーになる場合があります。そのため，-kオプションのquekindオペランドには，モデル定義と異なる指定をしないでください。

●-t any

この論理端末の端末タイプとして，次の値を指定します。

any

任意型論理端末

●-m

（オペランド）

mmsgcnt=メモリ出力メッセージ最大格納数　　～〈符号なし整数〉((0～65535))《0》

メモリキューで待ち合わせをする出力メッセージの最大格納数を指定します。

出力メッセージの待ち合わせ数が指定した最大数になると，それ以後UAPからの一方送信メッセージの送信要求（dc_mcf_send関数またはCBLDCMCF('SEND△△△△')）はエラーリターンとなります。

0を指定した場合，メモリキューで待ち合わせをする出力メッセージの数は無制限になります。ただし，実際に待ち合わせをできる出力メッセージ数は動的共用メモリの容量に依存します。

dmsgcnt=ディスク出力メッセージ最大格納数　　～〈符号なし整数〉((0～65535))《0》

ディスクキューで待ち合わせをする出力メッセージの最大格納数を指定します。

出力メッセージの待ち合わせ数が指定した最大数になると，それ以後UAPからの一方送信メッセージの送信要求（dc_mcf_send関数またはCBLDCMCF('SEND△△△△')）はエラーリターンとなります。

0を指定した場合，ディスクキューで待ち合わせをする出力メッセージの数は無制限になります。ただし，実際に待ち合わせをできる出力メッセージ数はメッセージキューファイルの容量に依存します。

●-i auto｜manual　　～《auto》

論理端末の閉塞解除方法を指定します。

auto

コネクション確立時，システムが自動的に論理端末を閉塞解除します。

manual

運用コマンド（mcftactle）の入力，またはAPI（dc_mcf_tactle関数もしくはCBLDCMCF('TACTLE△△')）の発行で論理端末を閉塞解除します。

●-k

（オペランド）

quekind=memory｜disk　　～《memory》

出力メッセージの割り当て先（メモリキューまたはディスクキュー）を指定します。

memory

メモリキューだけに割り当てます。

disk

ディスクキューおよびメモリキューに割り当てます。

diskを指定した場合，必ずquegrpidオペランドを指定してください。

quegrpid=キューグループID　　～〈1～8文字の識別子〉

ディスクで待ち合わせをする出力メッセージに使用するキューグループIDを指定します。

MCFマネジャ定義のmcfmqgidコマンドで指定するキューグループID（キュー種別はotq）のどれかを指定してください。

このオペランドは，quekindオペランドでdiskを指定した場合だけ指定します。

●-o

（オペランド）

aj=yes｜no　　～《yes》

メッセージ送信が完了した場合に，メッセージ送信完了ジャーナル（AJ）を取得するかどうかを指定します。

ただし，dc_mcf_sendsync関数またはdc_mcf_sendrecv関数で送信したメッセージは，このオペランドの指定内容に関係なく，メッセージ送信完了ジャーナルを取得しません。

yes

メッセージ送信完了ジャーナルを取得します。

no

メッセージ送信完了ジャーナルを取得しません。

●-v アプリケーション名　　～〈1～8文字の識別子〉

入力メッセージを受信した場合に起動するアプリケーション名称（MHP）を指定します。アプリケーション属性定義（mcfaalcap -n name）で定義した名称を指定してください。アプリケーション属性定義の詳細については，マニュアル「OpenTP1 システム定義」を参照してください。このオプションを省略した場合，入力メッセージ編集UOCで指定した値，または入力メッセージの先頭から空白の手前までの8バイト以内の値がアプリケーション名として仮定されます。アプリケーション名決定の優先順位は，「2.3.11　アプリケーション名の決定」を参照してください。

●-d

（オペランド）

replacemsg=send｜discard　　～《send》

MHPでメッセージを受信し，受信した論理端末と同一の論理端末に対してメッセージ送信をするまでの間にコネクションがいったん解放され再確立した場合，未送信となっていたメッセージを送信するかどうかを指定します。

send

コネクション再確立時に未送信となったメッセージを送信します。

discard

コネクション再確立時に未送信となったメッセージを送信しません。

ただし，次の場合は対象となりません。

入力元論理端末と異なる論理端末にメッセージを送信した場合

mcfuevtで起動したMHPからメッセージを送信した場合

SPPからメッセージを送信した場合

システムサービス情報定義

MCFサービスはユーザが作るシステムサービスで，OpenTP1のシステムサービスと同じ位置づけになります。

システムサービス情報定義では，MCF通信サービスを起動するための環境を定義します。ユーザがMCFサービスを作成するときに定義する必要があります。

システムサービス情報定義は，テキストエディタを使用して作成します。

システムサービス情報定義の完全パス名を次に示します。

$DCDIR/lib/sysconf/定義ファイル名

定義ファイル名には，システムサービス情報定義のmoduleオペランドで指定する実行形式プログラム名を指定します。この定義ファイル名をMCFマネジャ定義のmcfmcnameコマンドに指定します。

形式

set形式

 set module="TP1/NET/TCP/IPの実行形式プログラム名"
〔set mcf_prf_trace=Y|N〕

機能

プロセスサービスがMCF通信サービスを起動するための環境を定義します。

各MCF通信サービスに対して一つ，システムサービス情報定義を作成できます。また，複数のMCF通信サービスで一つのシステムサービス情報定義を共用することもできます。

説明

set形式のオペランド

set形式のオペランドについて次に示します。

●module="TP1/NET/TCP/IPの実行形式プログラム名"　　～〈1～8文字の識別子〉

MCF通信サービスを起動するための実行形式プログラム名を指定します。

MCF実行形式プログラムには，MCF通信プロセスのためのものとアプリケーション起動プロセスのためのものがあります。

MCF実行形式プログラムは，MCF通信プロセス同士，アプリケーション起動プロセス同士で共有できます。

TP1/NET/TCP/IPの実行形式プログラム名には，先頭4文字がmcfuで始まる最大8文字の名称を指定します。

●mcf_prf_trace=Y|N　　～《Y》

MCF通信サービスごとに，MCF性能検証用トレース情報を取得するかどうかを指定します。このオペランドの指定値を有効にするには，システムサービス共通情報定義のmcf_prf_trace_levelオペランドに00000001を指定してください。

Y

MCF性能検証用トレース情報を取得します。

N

MCF性能検証用トレース情報を取得しません。

オペランドの指定，または指定値に誤りがある場合は，OpenTP1の開始処理中にOpenTP1が異常終了します。

MCF通信サービスでのMCF性能検証用トレース情報取得有無とオペランドの指定値の関係を，次の表に示します。

システムサービス共通情報定義
mcf_prf_trace_levelオペランドの指定値
システムサービス情報定義
mcf_prf_traceオペランドの指定値

Y
N

00000000​
取得しない
取得しない

00000001​
取得する
取得しない

このオペランドの使用は，TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できません。

注意事項

MCFの性能検証用トレース取得機能を使用する場合，システムサービス情報定義に指定できない定義を指定すると定義エラーとなることがあります。システムサービス情報定義の定義内容が正しいことを確認してください。

システムサービス共通情報定義

TP1/NET/TCP/IPで定義したシステム構成の内容（使用するコネクション数など）によっては，OpenTP1のシステムサービス共通情報定義を指定する必要があります。

システムサービス共通情報定義の完全パス名を次に示します。

$DCDIR/lib/sysconf/mcf

形式

set形式

 set max_socket_descriptors=ソケット用ファイル記述子の最大数
 set max_open_fds=MCF通信プロセスでアクセスするファイルの最大数
〔set mcf_prf_trace_level=MCF性能検証用トレース情報の取得レベル〕

機能

システムサービス共通情報定義では，複数のMCF通信サービスに共通する情報を定義します。この定義ファイルは，標準値を定義した状態で製品に含まれています。次に示すオペランドについては，必要に応じて，テキストエディタを使用して定義値を変更してください。ほかのオペランドについては，変更しないでください。

説明

set形式のオペランド

この定義には，ほかにもオペランドがあります。詳細については，マニュアル「OpenTP1 システム定義」を参照してください。

●max_socket_descriptors=ソケット用ファイル記述子の最大数　　～〈符号なし整数〉((64～1024または64～2047))

各MCF通信プロセスでソケット用に使用するファイル記述子数の中の最大数を指定します。

指定値の範囲は，適用OSによって異なります。指定値の範囲は，適用OSがSolarisまたはLinuxの場合は64～1024，適用OSがAIX，HP-UXまたはWindowsの場合は64～2047となります。

ソケット用ファイル記述子の最大数を求める計算式を次に示します。↑↑は，小数点以下を切り上げることを意味します。

↑（このMCF通信プロセスに対してメッセージ送信要求を行うUAPプロセス数※1
 ＋システムサービスプロセス数※2
 ＋このMCF通信プロセスに対して同時に処理要求を行う運用コマンド数
 ）／0.8↑

注※1

アプリケーション起動サーバに対するアプリケーション起動要求を行うUAPプロセス数も含みます。

注※2

システムサービスプロセス数とは，自OpenTP1内のシステムサービスプロセス数です。

自OpenTP1内の各MCF通信プロセスごとに計算し，その結果の中で最大値が64より大きい場合は，その値を指定します。64以下の場合は，64を指定します。

●max_open_fds=MCF通信プロセスでアクセスするファイルの最大数　　～〈符号なし整数〉((100～1024または100～2016))

各MCF通信プロセスでアクセスするファイルの数の中の最大値を指定します。

指定値の範囲は，適用OSによって異なります。指定値の範囲は，適用OSがSolarisまたはLinuxの場合は100～1024，適用OSがAIX，HP-UXまたはWindowsの場合は100～2016となります。

ファイル記述子の最大数を求める計算式を次に示します。

（プロトコル制御で使用するファイル記述子数※¹）
＋MCFメイン関数でユーザが使用するファイル記述子数
＋30※²

注※1

TP1/NET/TCP/IPの場合，MCF通信構成定義に定義したコネクションの総数，サーバ型コネクションの自システムのホストのIPアドレス（ホスト名），およびポート番号の組み合わせ数を加算した値になります。実際に通信を行うコネクションの総数ではありませんので，注意してください。

TP1/NET/TCP/IPで使用するファイル記述子数を求める計算式を次に示します。

TP1/NET/TCP/IPで使用するファイル記述子数＝
MCF通信構成定義に定義したコネクションの総数＋
サーバ型コネクションの自システムのホストのIPアドレス（ホスト名）とポート番号の組み合わせ数

自システムのホストのIPアドレスとポート番号の組み合わせ数の数え方の例を次に示します。

例1，3の場合：2

例2の場合：1

例1

mcftalccn -y "mode=server" -r "ipaddr=11.11.11.11 portno=10000"
mcftalccn -y "mode=server" -r "ipaddr=11.11.11.11 portno=10001"

例2

mcftalccn -y "mode=server" -r "ipaddr=11.11.11.11 portno=10000"
mcftalccn -y "mode=server" -r "ipaddr=11.11.11.11 portno=10000"

例3

mcftalccn -y "mode=server" -r "ipaddr=11.11.11.11 portno=10000"
mcftalccn -y "mode=server" -r "ipaddr=22.22.22.22 portno=10000"

注※2

MCF通信プロセスが扱う定義ファイルなどの数の最大値です。

自OpenTP1内のMCF通信プロセスごとに計算し，その結果の中で最大値が500より大きい場合は，その値を指定します。500以下の場合は，500を指定します。指定値を超えてファイルのアクセスが発生した場合，その超過分はソケット用ファイル記述子使用数として扱われます。この場合，max_socket_descriptorsオペランドの指定値からmax_open_fdsオペランドの指定値を減算した超過分が，実際のソケット用ファイル記述子の最大数になりますので，ご注意ください。

なお，このオペランドには，次の条件を満たす値を指定してください。

（「このオペランドの指定値」
＋同定義内の「max_socket_descriptorsオペランドの指定値」）
≦「ファイル記述子の最大数※3」

注※3

ファイル記述子の最大数は，適用OSによって次のように異なります。

適用OSがSolarisまたはLinuxの場合：1024

適用OSがAIX，HP-UXまたはWindowsの場合：2048

適用OSがAIX，HP-UXまたはWindowsの場合，条件を満たさない指定をしたとき，このオペランドの指定値は次に示すように強制的に補正されます。

ファイル記述子の最大数
－（同定義内の「max_socket_descriptorsオペランドの指定値」）

適用OSがSolarisまたはLinuxの場合，条件を満たさない指定をし，かつ，指定値が1プロセス当たりでオープンできるファイル数の物理限界値（ハードリミット）を超えていたとき，MCFの開始を中断します。条件を満たさない指定をし，かつ，指定値が1プロセス当たりでオープンできるファイル数の物理限界値（ハードリミット）以内のとき，MCFの開始を中断しませんが，OpenTP1の動作は保証できません。条件を満たすように指定値を変更してください。

●mcf_prf_trace_level=MCF性能検証用トレース情報の取得レベル　　～((00000000～00000001))《00000000》

MCF性能検証用トレース情報の取得レベルを指定します。MCF性能検証用トレースを取得する場合は，システム共通定義のprf_traceオペランドにYを指定するか，または省略してください。

00000000

MCF性能検証用トレース情報を取得しません。

00000001

MCF性能検証用トレース情報（イベントID：0xa000～0xa0ff）を取得します。イベントIDの詳細については，マニュアル「OpenTP1 運用と操作」を参照してください。また，TP1/NET/TCP/IP固有の出力情報や取得タイミングについては，「付録H　MCF性能検証用トレースの取得」を参照してください。

00000001を指定した場合，システムサービス情報定義に指定できない定義を指定すると定義エラーとなることがあります。システムサービス情報定義の定義内容が正しいことを確認してください。

オペランドの指定に誤りがある場合は，OpenTP1開始処理中にOpenTP1が異常終了します。

このオペランドの使用は，TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できません。

注意事項

max_socket_descriptorsオペランドの指定値とmax_open_fdsオペランドの指定値の合計は，OSのシステムパラメタで指定する「1プロセスでオープンできるファイル数」を超えないようにする必要があります。超える場合は，OSのシステムパラメタの指定を変更してください。

MCF定義オブジェクトの生成

MCF定義オブジェクト生成ユティリティでは，MCFの定義ファイルの構文のチェックと定義オブジェクトファイルへの変換をします。ここでは，MCF定義オブジェクト生成ユティリティの起動コマンドについて説明します。

形式

mcftcp -i 〔パス名〕入力ファイル名
      -o 〔パス名〕出力オブジェクトファイル名
    〔-r ｛no｜rep｝〕

機能

MCF通信構成定義のTP1/NET/TCP/IPのプロトコル固有定義ファイルの構文をチェックし，定義オブジェクトファイルを作成します。

ただし，開始から再開始の間に定義オブジェクトファイルを変更しないでください。変更した場合，再開始時に正常に動作しないことがありますのでご注意ください。

TP1/NET/TCP/IPのプロトコル固有定義オブジェクトファイル以外の生成ユティリティについては，マニュアル「OpenTP1 システム定義」を参照してください。

オプション

●-i 〔パス名〕入力ファイル名　　～〈パス名〉〈1～8文字の識別子〉

定義ソースが格納されているファイル名を指定します。

●-o 〔パス名〕出力オブジェクトファイル名　　～〈パス名〉〈1～8文字の英数字〉

定義オブジェクトを格納するファイル名を指定します。

●-r ｛no｜rep｝　　～《no》

定義オブジェクトファイルの出力先に読み取り権限を持つファイルがすでに存在する場合，定義オブジェクトファイルを上書きするかどうかを指定します。

no

定義オブジェクトファイルを上書きしないで，KFCA10332-Eメッセージを出力します。

rep

定義オブジェクトファイルを上書きします。

MCF定義オブジェクトの解析

対応する定義ソースが不明となったMCF定義オブジェクトファイルの内容を知りたい場合に，MCF定義オブジェクトの解析をします。ここでは，MCF定義オブジェクト解析コマンドについて説明します。

形式

mcftcpr -i 〔パス名〕解析対象オブジェクトファイル名

機能

次の定義オブジェクトを解析し，定義ソースの形式で標準出力します。

TP1/NET/TCP/IPのプロトコル固有定義オブジェクトファイル

オプション

●-i 〔パス名〕解析対象オブジェクトファイル名　　～〈1～8文字の英数字〉

定義オブジェクトが格納されているファイル名を指定します。

出力形式

#############################################################

        MCF communication configuration definition
                     TCP/IP definition

#############################################################

  OBJECT FILE NAME : xxxxxxxx
  VV-RR            : vv-rr
  DATE             : yyyy-mm-dd hh:mm:ss

#############################################################

mcftalccn
  -c            = cn01
  -p            = tcp
  -g sndbuf     = 1
  -g rcvbuf     = 2
  -e msgbuf     = 3
  -e count      = 1
  -i            = manual
  -t            = tcp
  -y mode       = client
  -b bretry     = yes
  -b bretrycnt  = 10
  -b bretryint  = 5
  -b dretry     = yes
  -b dretrycnt  = 0
  -b dretryint  = 10000
  -b concmptim  = 0
  -b sndcmptim  = 0
  -r portno     = 10001
  -r hostname   = host01
 *-r backlog    = 0

・
・
・

mcftalcle
  -l            = le01
  -t            = any
  -m mmsgcnt    = 0
  -m dmsgcnt    = 0
  -i            = manual

・
・
・

mcftalced

####################### End Of File #######################

解析結果

定義オブジェクト解析コマンドは，その解析結果を定義ソースの形式で出力します。出力される内容は解析結果であり，記述形式は元の定義ソースの記述形式とは一致しません。定義ソースと定義オブジェクト解析結果の差異を次に示します。

表6-3　定義ソースと定義オブジェクト解析結果の差異

項目
定義ソース
定義オブジェクト解析結果

注釈文
書き込みできる。
出力しない。

省略値の扱い
省略できる。
限定公開部分も含めて，省略値を出力する。

限定公開部分の表記方法
一般公開部分と差異なし。
バージョン7での限定公開機能の行の先頭に，"*"を付与する。

定義コマンド名とオプションの表記方法
1行に表記できる。

（例）

mcftalccn -c cn01

定義コマンド名を表記後，改行する。また，オプションに"="を付記する。

（例）

mcftalccn

-c = cn01

1定義コマンドが複数の行にわたる場合
継続記号"￥"を付与する。

（例）

mcftalccn -c cn01 ¥

-p tcp

継続記号は出力しない。

（例）

mcftalccn

-c = cn01

-p = tcp

1定義オプションに複数のオペランドを指定する場合
複数のオペランドをまとめて二重引用符(")で囲む。

（例）

mcftalccn -g "sndbuf=1 rcvbuf=2"

個々のオペランドに対してオプションを付記する。

（例）

mcftalccn

-g sndbuf = 1

-g rcvbuf = 2

その他
なし

ファイル名などを記したタイトルが出力される。

定義オブジェクト生成時の補正によって，実際の指定値とは異なる内容が出力される場合がある。

定義ソースと該当コマンドのバージョンの差異によって，解析結果にサポート内容の過不足がある場合がある。

注意事項

解析対象が不正であった場合は，正常に動作しないことがあります。

コネクションの形態とMCF通信構成定義との関係

コネクションの形態とMCF通信構成定義との関係を次の表に示します。

表6-4　コネクションの形態とMCF通信構成定義との関係

コマンド | オプション | オペランド | クライアント型 | サーバ型
mcftalccn（コネクション定義の開始） | -c | － | ○ | ○
-N | modelname | △ | △
-p | － | ○ | ○
-g | sndbuf | △ | △
rcvbuf | △ | △
-e | msgbuf | △ | △
count | △ | △
-i | － | △ | ×
-b | bretry | △ | △
bretrycnt | △ | △
bretryint | △ | △
concmptim | △ | ×
sndcmptim | △ | △
-w | srtimout | △ | △
-t | － | ○ | ○
-y | mode | ○ | ○
-r | ipaddr※1 | △ | △
hostname※1 | △ | △
portno※1 | △ | ○
-o | oipaddr※1，※2 | ○ | ○※3
ohostname※1，※2 | ○ | ○※3
oportno※1 | ○ | ○※3
-k | keepalive | △ | △
nodelay | △ | △
notrftime | △ | △
-f | kind | △ | △
cnrelease | △ | △
releaselog | △ | △
cnerrlog | △ | △
-A | mastercn | △ | ×
-u | masm | △ | △
ntimer | △ | △
ntime | △ | △
delichk | △ | △
msghold | △ | △
holdlimit | △ | △
-h | addrchk | × | △
chgconn | × | △
listen | × | △
-C | lscnfmt | △ | △
-l | replymsg | △ | △
cnassign | × | △
mcftalcle（論理端末定義） | -l | － | ○ | ○
-N | modelname | △ | △
-t | － | ○ | ○
-m | mmsgcnt | △ | △
dmsgcnt | △ | △
-i | － | △ | △
-k | quekind | △ | △
quegrpid | △ | △
-o | aj | △ | △
-v | － | △ | △
-d | replacemsg | △ | △

（凡例）

－：該当する内容がないことを表します。

○：指定が必要です。

△：指定は任意です。

×：指定できません，または，無効となります。

注※1

すべてのコネクションで，これらのオペランド指定値が完全に重複しないように設定してください。

複数のコネクションを使用する場合は，これらのオペランド指定値のうち，一つでも指定値が異なるように設定してください。

注※2

これらのオペランドは，どちらか一つだけを設定してください。

注※3

-hオプションのaddrchkオペランドの指定値がnoの場合，指定値は無効（×）になります。

交代用コネクションとMCF通信構成定義との関係を次の表に示します。

表6-5　交代用コネクションとMCF通信構成定義との関係

コマンド | オプション | オペランド | 交代用コネクションでの指定値
mcftalccn（コネクション定義の開始） | -c | － | ◇
-N | modelname | △
-p | － | ○
-g | sndbuf | ○
rcvbuf | ○
-e | msgbuf | ○
count | ○
-i | － | ○
-b | bretry | ○
bretrycnt | ○
bretryint | ○
concmptim | ○
sndcmptim | ○
-w | srtimout | ○
-t | － | ○
-y | mode | ○
-r | ipaddr※ | △
hostname※ | △
portno※ | △
-o | oipaddr※ | △
ohostname※ | △
oportno※ | △
-k | keepalive | ○
nodelay | ○
notrftime | ○
-f | kind | ○
cnrelease | ○
releaselog | ○
cnerrlog | ○
-A | mastercn | ◎
-u | masm | ○
ntimer | ○
ntime | ○
delichk | ○
msghold | ○
holdlimit | ○
-h | addrchk | ×
chgconn | ×
listen | ×
-C | lscnfmt | ○
-l | replymsg | ○
cnassign | ×

（凡例）

－：該当する内容がないことを表します。

◎：現用コネクションIDを指定する必要があります。

○：現用コネクションの指定と一致する必要があります。

◇：OpenTP1システムで一意にする必要があります。

△：任意の値を指定できます。

×：指定できません，または，無効となります。

注※

現用コネクションを除いたすべてのコネクションで，これらのオペランド指定値が完全に重複しないように設定してください。

複数のコネクションを使用する場合は，これらのオペランド指定値のうち，一つでも指定値が異なるように設定してください。

アプリケーションプログラムとシステム環境設定の関連

UAPとシステム環境設定の関係について説明します。

メッセージ送受信の監視時間

一方送信メッセージの送信と各種タイマ監視値の関係

メッセージ送達確認機能を使用しない場合の一方送信メッセージの送信と，各種タイマ監視値の関係を次の図に示します。

図6-3　一方送信メッセージの送信と各種タイマ監視値の関係（メッセージ送達確認機能を使用しない場合）

図中のt1について次に説明します。

t1：メッセージ送信完了監視時間

出力メッセージ編集UOCのリターン直後からメッセージの送信完了（TCP/IPソケットの送信バッファへのメッセージ書き込み完了）までの時間を監視します。

コネクション定義（mcftalccn -b）のsndcmptimオペランドの指定値が監視時間の最大値となります（省略または0を指定した場合は時間監視をしません）。

タイムアウト発生時には，KFCA14815-Eメッセージが出力され，論理端末を閉塞し，CERREVTを起動します。

DCCMとのメッセージ送達確認機能を使用する場合の一方送信メッセージの送信と各種タイマ監視値の関係を次の図に示します。

図6-4　一方送信メッセージの送信と各種タイマ監視値の関係（DCCMとのメッセージ送達確認機能を使用する場合）

図中のt1，t2について次に説明します。

t1：メッセージ送信完了監視時間

出力メッセージ編集UOCのリターン直後から応答専用データを受信するまでの時間を監視します。

コネクション定義（mcftalccn -b）のsndcmptimオペランドの指定値が監視時間の最大値となります（省略または0を指定した場合は時間監視をしません）。

メッセージ送信完了前にタイムアウトが発生した場合は，KFCA14815-Eメッセージが出力され，論理端末を閉塞し，CERREVTを起動します。メッセージ送信完了から応答専用データ受信前にタイムアウトが発生した場合は，KFCA14815-Eメッセージが出力され，コネクションを解放し，CERREVTを起動します。

t2：後続セグメント受信監視時間

応答専用データがネットワーク上で分割された場合，未完成のセグメントを受信してから次のセグメントを受信するまでの時間を監視します。

コネクション定義（mcftalccn -u）のntimeオペランドの指定値が監視時間の最大値となります（コネクション定義（mcftalccn -u）のntimerオペランドにnoを指定した場合は時間監視をしません）。

タイムアウト発生時には，KFCA14823-Wメッセージが出力され，コネクションを解放し，CERREVTを起動します。

任意の相手システムとのメッセージ送達確認機能を使用する場合の一方送信メッセージの送信と各種タイマ監視値の関係を次の図に示します。

図6-5　一方送信メッセージの送信と各種タイマ監視値の関係（任意の相手システムとのメッセージ送達確認機能を使用する場合）

図中のt1，t2について次に説明します。

t1：メッセージ送信完了監視時間

出力メッセージ編集UOCのリターン直後から送達確認メッセージを受信するまでの時間を監視します。

コネクション定義（mcftalccn -b）のsndcmptimオペランドの指定値が監視時間の最大値となります（省略または0を指定した場合は時間監視をしません）。

メッセージ送信完了前にタイムアウトが発生した場合は，KFCA14815-Eメッセージが出力され，論理端末を閉塞し，CERREVTを起動します。メッセージ送信完了から送達確認メッセージ受信前にタイムアウト発生した場合は，KFCA14815-Eメッセージが出力され，コネクションを解放し，CERREVTを起動します。

t2：後続セグメント受信監視時間

送達確認メッセージがネットワーク上で分割された場合，未完成のセグメントを受信してから次のセグメントを受信するまでの時間を監視します。

コネクション定義（mcftalccn -u）のmasmオペランドの指定によって，監視時間の最大値が異なります。監視時間を次の表に示します。

表6-6　後続セグメント受信監視時間の最大値

コネクション定義（mcftalccn -u）のmasmオペランドの指定値 | コネクション定義（mcftalccn -u）のntimerオペランドの指定値 | 入力セグメント判定UOCのdctcp_uoc_timer_inf構造体のtimer_codeの指定値 | 監視時間
yes | yesまたは省略 | 任意 | コネクション定義（mcftalccn -u）のntimeオペランドの指定値
no | 時間監視をしません
noまたは省略 | 任意 | DCTCP_TIME_SET | 入力セグメント判定UOCのdctcp_uoc_timer_inf構造体のtimer_valueの指定値
DCTCP_TIME_NO_SET | 時間監視をしません

タイムアウト発生時には，KFCA14823-Wメッセージが出力され，コネクションを解放し，CERREVTを起動します。

一方送信メッセージの受信と各種タイマ監視値の関係

メッセージ送達確認機能を使用しない場合の一方送信メッセージの受信と各種タイマ監視値の関係を次の図に示します。

図6-6　一方送信メッセージの受信と各種タイマ監視値の関係（メッセージ送達確認機能を使用しない場合）

図中のt2について次に説明します。

t2：後続セグメント受信監視時間

メッセージがネットワーク上で分割された場合，未完成のセグメントを受信してから次のセグメントを受信するまでの時間を監視します。

コネクション定義（mcftalccn -u）のmasmオペランドの指定によって，監視時間の最大値が異なります。監視時間の詳細については，表6-6を参照してください。

タイムアウト発生時には，KFCA14823-Wメッセージが出力され，コネクションを解放し，CERREVTを起動します。

DCCMとのメッセージ送達確認機能を使用する場合の一方送信メッセージの受信と各種タイマ監視値の関係を次の図に示します。

図6-7　一方送信メッセージの受信と各種タイマ監視値の関係（DCCMとのメッセージ送達確認機能を使用する場合）

図中のt1，t2について次に説明します。

t1：メッセージ送信完了監視時間

受信メッセージを入力キューに書き込んだ直後から応答専用データの送信完了（TCP/IPソケットの送信バッファへのメッセージ書き込み完了）までの時間を監視します。

コネクション定義（mcftalccn -b）のsndcmptimオペランドの指定値が監視時間の最大値となります（省略または0を指定した場合は時間監視をしません）。

タイムアウト発生時には，KFCA14815-Eメッセージが出力され，コネクションを解放し，CERREVTを起動します。

t2：後続セグメント受信監視時間

メッセージがネットワーク上で分割された場合，未完成のセグメントを受信してから次のセグメントを受信するまでの時間を監視します。

コネクション定義（mcftalccn -u）のntimeオペランドの指定値が監視時間の最大値となります（コネクション定義（mcftalccn -u）のntimerオペランドにnoを指定した場合は時間監視をしません）。

タイムアウト発生時には，KFCA14823-Wメッセージが出力され，コネクションを解放し，CERREVTを起動します。

任意の相手システムとのメッセージ送達確認機能を使用する場合の一方送信メッセージの受信と各種タイマ監視値の関係を次の図に示します。

図6-8　一方送信メッセージの受信と各種タイマ監視値の関係（任意の相手システムとのメッセージ送達確認機能を使用する場合）

図中のt2については，図6-6の説明を参照してください。t1について次に説明します。

t1：メッセージ送信完了監視時間

受信メッセージを入力キューに書き込んだ直後から送達確認メッセージの送信完了（TCP/IPソケットの送信バッファへのメッセージ書き込み完了）までの時間を監視します。

コネクション定義（mcftalccn -b）のsndcmptimオペランドの指定値が監視時間の最大値となります（省略または0を指定した場合は時間監視をしません）。

タイムアウト発生時には，KFCA14815-Eメッセージが出力され，コネクションを解放し，CERREVTを起動します。

問い合わせメッセージの受信と各種タイマ監視値の関係

問い合わせメッセージの受信と各種タイマ監視値の関係を次の図に示します。

図6-9　問い合わせメッセージの受信と各種タイマ監視値の関係

図中のt2については，図6-6の説明を参照してください。t1について次に説明します。

t1：メッセージ送信完了監視時間

出力メッセージ編集UOCのリターン直後からメッセージの送信完了（TCP/IPソケットの送信バッファへのメッセージ書き込み完了）までの時間を監視します。

コネクション定義（mcftalccn -b）のsndcmptimオペランドの指定値が監視時間の最大値となります（省略または0を指定した場合は時間監視をしません）。

タイムアウト発生時には，KFCA14815-Eメッセージが出力され，コネクションを解放し，CERREVTを起動します。

同期型メッセージの送信と各種タイマ監視値の関係

同期型メッセージの送信と各種タイマ監視値の関係を次の図に示します。

図6-10　同期型メッセージの送信と各種タイマ監視値の関係

図中のt3，t4について次に説明します。

t3：同期型送信監視時間(UAP)

dc_mcf_sendsync関数を発行してからTP1/NET/TCP/IPから送信完了を受信するまでの時間を監視します。

監視時間の最大値を次の表に示します。

表6-7　同期型送信監視時間（UAP）の最大値

dc_mcf_sendsync関数のwatchtime引数の指定値 | UAP共通定義（mcfmuap -t）のsndtimオペランドの指定値 | 監視時間
プラス値 | 任意 | dc_mcf_sendsync関数のwatchtime引数の指定値に60を加算した値
0 | 0以外 | UAP共通定義（mcfmuap -t）のsndtimオペランドの指定値に60を加算した値
0または省略 | 時間監視をしません
マイナス値 | 任意 | 時間監視をしません

タイムアウト発生時には，dc_mcf_sendsync関数がDCMCFRTN_73001（-14001）でエラーリターンします。

t4：同期型送信監視時間（TP1/NET/TCP/IP）

出力メッセージ編集UOCのリターン直後からメッセージの送信完了（TCP/IPソケットの送信バッファへのメッセージ書き込み完了）までの時間を監視します。

監視時間の最大値を次の表に示します。

表6-8　同期型送信監視時間（TP1/NET/TCP/IP）の最大値

dc_mcf_sendsync関数のwatchtime引数の指定値 | UAP共通定義（mcfmuap -t）のsndtimオペランドの指定値 | 監視時間
プラス値 | 任意 | dc_mcf_sendsync関数のwatchtime引数の指定値
0 | 0以外 | UAP共通定義（mcfmuap -t）のsndtimオペランドの指定値
0または省略 | 時間監視をしません
マイナス値 | 任意 | 時間監視をしません

タイムアウト発生時には，KFCA14853-Wメッセージが出力され，dc_mcf_sendsync関数がDCMCFRTN_73005（-14005）でエラーリターンします。さらに，コネクション定義（mcftalccn -w）のsrtimoutオペランドを省略，またはnoを指定した場合は，コネクションを解放し，CERREVTを起動します。

同期型メッセージの受信と各種タイマ監視値の関係

同期型メッセージの受信と各種タイマ監視値の関係を次の図に示します。

図6-11　同期型メッセージの受信と各種タイマ監視値の関係

図中のt2，t5，t6について次に説明します。

t2：後続セグメント受信監視時間

メッセージがネットワーク上で分割された場合，未完成のセグメントを受信してから次のセグメントを受信するまでの時間を監視します。

コネクション定義（mcftalccn -u）のmasmオペランドの指定によって，監視時間の最大値が異なります。監視時間の詳細については，表6-6を参照してください。

タイムアウト発生時には，KFCA14823-Wメッセージが出力され，dc_mcf_recvsync関数がDCMCFRTN_73005（-14005）でエラーリターンし，コネクションを解放し，CERREVTを起動します。

t5：同期型受信監視時間（UAP）

dc_mcf_recvsync関数を発行してからTP1/NET/TCP/IPからメッセージを受信するまでの時間を監視します。

監視時間の最大値を次の表に示します。

表6-9　同期型受信監視時間（UAP）の最大値

dc_mcf_recvsync関数のwatchtime引数の指定値 | UAP共通定義（mcfmuap -t）のrecvtimオペランドの指定値 | 監視時間
プラス値 | 任意 | dc_mcf_recvsync関数のwatchtime引数の指定値に60を加算した値
0 | 0以外 | UAP共通定義（mcfmuap -t）のrecvtimオペランドの指定値に60を加算した値
0または省略 | 時間監視をしません
マイナス値 | 任意 | 時間監視をしません

タイムアウト発生時には，dc_mcf_recvsync関数がDCMCFRTN_73001（-14001）でエラーリターンします。

t6：同期型受信監視時間（TP1/NET/TCP/IP）

dc_mcf_recvsync関数を受け付けてから入力メッセージ編集UOCを呼び出す直前までの時間を監視します。

監視時間の最大値を次の表に示します。

表6-10　同期型受信監視時間（TP1/NET/TCP/IP）の最大値

dc_mcf_recvsync関数のwatchtime引数の指定値 | UAP共通定義（mcfmuap -t）のrecvtimオペランドの指定値 | 監視時間
プラス値 | 任意 | dc_mcf_recvsync関数のwatchtime引数の指定値
0 | 0以外 | UAP共通定義（mcfmuap -t）のrecvtimオペランドの指定値
0または省略 | 時間監視をしません
マイナス値 | 任意 | 時間監視をしません

タイムアウト発生時には，KFCA14866-Wメッセージが出力され，dc_mcf_recvsync関数がDCMCFRTN_73005（-14005）でエラーリターンします。さらに，コネクション定義（mcftalccn -w）のsrtimoutオペランドを省略，またはnoを指定した場合は，コネクションを解放し，CERREVTを起動します。

同期型メッセージの送受信と各種タイマ監視値の関係

同期型メッセージの送受信と各種タイマ監視値の関係を次の図に示します。

図6-12　同期型メッセージの送受信と各種タイマ監視値の関係

図中のt1，t2，t7，t8について次に説明します。

t1：メッセージ送信完了監視時間

出力メッセージ編集UOCのリターン直後からメッセージの送信完了（TCP/IPソケットの送信バッファへのメッセージ書き込み完了）までの時間を監視します。

コネクション定義（mcftalccn -b）のsndcmptimオペランドの指定値が監視時間の最大値となります（省略または0を指定した場合は時間監視をしません）。

タイムアウト発生時には，KFCA14815-Eメッセージが出力され，dc_mcf_sendrecv関数がDCMCFRTN_73019（-14019）でエラーリターンし，論理端末を閉塞し，CERREVTを起動します。

t2：後続セグメント受信監視時間

メッセージがネットワーク上で分割された場合，未完成のセグメントを受信してから次のセグメントを受信するまでの時間を監視します。

コネクション定義（mcftalccn -u）のmasmオペランドの指定によって，監視時間の最大値が異なります。監視時間の詳細については，表6-6を参照してください。

タイムアウト発生時には，KFCA14823-Wメッセージが出力され，dc_mcf_sendrecv関数がDCMCFRTN_73005（-14005）でエラーリターンし，コネクションを解放し，CERREVTを起動します。

t7：同期型送受信監視時間（UAP）

dc_mcf_sendrecv関数を発行してからTP1/NET/TCP/IPからメッセージを受信するまでの時間を監視します。

監視時間の最大値を次の表に示します。

表6-11　同期型送受信監視時間（UAP）の最大値

dc_mcf_sendrecv関数のwatchtime引数の指定値 | UAP共通定義（mcfmuap -t）のsndrcvtimオペランドの指定値 | 監視時間
プラス値 | 任意 | dc_mcf_sendrecv関数のwatchtime引数の指定値に60を加算した値
0 | 0以外 | UAP共通定義（mcfmuap -t）のsndrcvtimオペランドの指定値に60を加算した値
0または省略 | 時間監視をしません
マイナス値 | 任意 | 時間監視をしません

タイムアウト発生時には，dc_mcf_sendrecv関数がDCMCFRTN_73001（-14001）でエラーリターンします。

t8：同期型送受信監視時間（TP1/NET/TCP/IP）

出力メッセージ編集UOCのリターン直後から入力メッセージ編集UOCを呼び出す直前までの時間を監視します。

監視時間の最大値を次の表に示します。

表6-12　同期型送受信監視時間（TP1/NET/TCP/IP）の最大値

dc_mcf_sendrecv関数のwatchtime引数の指定値 | UAP共通定義（mcfmuap -t）のsndrcvtimオペランドの指定値 | 監視時間
プラス値 | 任意 | dc_mcf_sendrecv関数のwatchtime引数の指定値
0 | 0以外 | UAP共通定義（mcfmuap -t）のsndrcvtimオペランドの指定値
0または省略 | 時間監視をしません
マイナス値 | 任意 | 時間監視をしません

タイムアウト発生時には，KFCA14831-Wメッセージが出力され，dc_mcf_sendrecv関数がDCMCFRTN_73005（-14005）でエラーリターンします。さらに，コネクション定義（mcftalccn -w）のsrtimoutオペランドを省略，またはnoを指定した場合は，コネクションを解放し，CERREVTを起動します。

MCFトレースファイルの見積もり式

ここでは，トレース情報量の見積もり式，トレース情報が失われる経過時間の見積もり式，および具体的な見積もりの例について説明します。

トレース情報量の見積もり式

1秒当たりに取得するMCFトレースファイルの，トレース情報量の見積もり式を次に示します。

1秒当たりのトレース情報量（単位：バイト）
　　　　　　　　　　　　　　＝ (A×B) ＋ ((C＋D)×E) ＋ ((F＋D)×G)

A：コネクションの確立と解放時に取得するトレース情報量（単位：バイト）

クライアント型コネクションの場合：（32ビットの場合）8000，（64ビットの場合）9000

サーバ型コネクションの場合：（32ビットの場合）6500，（64ビットの場合）7000

B：1秒当たりのコネクション確立および解放の回数※

C：メッセージ送信時に取得するトレース情報量（単位：バイト）

一方送信メッセージまたは応答メッセージの送信の場合：（32ビットの場合）2400，（64ビットの場合）2700

同期型メッセージの送信の場合：（32ビットの場合）2000，（64ビットの場合）2200

D：次のどちらか小さい方の値（単位：バイト）

MCFトレースに取得する送受信メッセージのサイズ（mcfttrc -t msgsize）

実際に送受信するメッセージの最大メッセージ長

E：1秒当たりのメッセージ送信回数※

F：メッセージ受信時に取得するトレース情報量（単位：バイト）

一方送信メッセージまたは問い合わせメッセージの受信の場合：（32ビットの場合）2500，（64ビットの場合）2800

同期型メッセージの受信の場合：（32ビットの場合）3500，（64ビットの場合）3800

G：1秒当たりのメッセージ受信回数※

注※

MCF通信プロセスが複数存在する場合は，MCF通信プロセス単位で回数を算出してください。

トレース情報が失われる経過時間の見積もり式

MCFトレースファイルから，トレース情報が失われる経過時間の算出式を次に示します。

なお，算出式中の，「1秒当たりのトレース情報量」とは，トレース情報量の見積もり式で算出した値です。

経過時間（秒） ＝ G×H×I／1秒当たりのトレース情報量（単位：バイト）

G：トレースバッファの大きさ（mcfttrc -t size）

H：トレースバッファの数（mcfttrc -t bufcnt）

I：MCFトレースファイルの数（mcfttrc -t trccnt）

見積もり式の算出例

ここでは，トレース情報量の見積もり式，およびトレース情報が失われる経過時間の見積もり式の具体的な算出例を示します。

ここでは，次の場合を例に説明します。

32ビットでの常時接続のサーバ型コネクションで，一方送信メッセージの受信と送信をする場合

32ビットでのクライアント型コネクションで，メッセージ送受信ごとにコネクションの確立と解放をする場合

例1　常時接続のサーバ型コネクションで，一方送信メッセージの受信と送信をする場合

この例では，次の値が想定されています。

項目
想定値

コネクションの確立と解放時に取得するトレース情報量
6000バイト

１分（60秒）当たりのメッセージの受信から送信までの回数
120回

送受信メッセージ長
1000バイト

メッセージ送信時に取得するトレース情報量
2400バイト

メッセージ受信時に取得するトレース情報量
2500バイト

トレース環境定義（mcfttrc -t）のオペランドの指定値

size ＝ 204800

bufcnt ＝ 100

trccnt ＝ 3

msgsize ＝ 128

この例の場合の，計算例を次に示します。

トレース情報量の見積もり

(6000×0※) ＋ ((2400+128)×(120／60)) ＋ ((2500+128)×(120／60)) ＝ 10312

1秒当たりのトレース情報量は，10312バイトとなります。

注※

コネクションが常時接続であるため，1秒当たりのコネクション確立および解放の回数は0として計算してください。

トレース情報が失われる経過時間の見積もり

204800×100×3／10312 ＝ 5958.1

トレース情報が失われる経過時間は，5958.1秒（約99分）となります。

例2　クライアント型コネクションで，メッセージ送受信ごとにコネクションの確立と解放をする場合

この例では，次の値が想定されています。

項目
想定値

コネクションの確立と解放時に取得するトレース情報量
8000バイト

１分（60秒）当たりのメッセージの受信から送信までの回数
120回

送受信メッセージ長
1000バイト

メッセージ送信時に取得するトレース情報量
2000バイト

メッセージ受信時に取得するトレース情報量
3500バイト

トレース環境定義（mcfttrc -t）のオペランドの指定値

size ＝ 204800

bufcnt ＝ 100

trccnt ＝ 3

msgsize ＝ 128

この例の場合の，計算例を次に示します。

トレース情報量の見積もり

(8000×(120／60)) ＋ ((2000+128)×(120×2／60))
　　　　　　　　　　　　　　　＋ ((3500+128)×(120×2／60)) ＝ 39024

1秒当たりのトレース情報量は，39024バイトとなります。

トレース情報が失われる経過時間の見積もり

204800×100×3／39024 ＝ 1574.4

トレース情報が失われる経過時間は，1574.4秒（約26分）となります。

DCCMII/TCPおよびDCCM3/TCPの通信定義との関係

TP1/NET/TCP/IPがDCCMII/TCPまたはDCCM3/TCPと接続し，メッセージ送達確認機能を使用する場合，TP1/NET/TCP/IPの定義とDCCMII/TCPまたはDCCM3/TCPの定義を対応させる必要があります。対応させる内容を次の表に示します。

表6-13　DCCMII/TCPおよびDCCM3/TCPの定義との関係

相手システム（接続先） | 相手システム（接続先）の定義 | 自システム（TP1/NET/TCP/IP）の定義
DCCMII/TCP | TERMINAL CONTENT=SLAVE | mcftalccn -u delichk = dccm2m
TERMINAL CONTENT=MASTER | mcftalccn -u delichk = dccm2s
DCCM3/TCP | TERMINAL CONTENT=SLAVE | mcftalccn -u delichk = dccm3m
TERMINAL CONTENT=MASTER | mcftalccn -u delichk = dccm3s

OpenTP1システムの変更に影響する定義

OpenTP1システムの変更に伴って見直しが必要となる定義およびOpenTP1ファイルについて説明します。

ホスト名またはIPアドレスの変更

ホスト名またはIPアドレスを変更する場合に，見直しが必要な定義および変更手順について説明します。

ホスト名またはIPアドレスを変更する場合に見直しが必要な定義

ホスト名またはIPアドレスを変更する場合，見直す必要のある定義の一覧と発生する条件を次の表に示します。

表6-14　ホスト名またはIPアドレスを変更する場合に見直しが必要な定義の一覧

定義ファイル名 | 定義 | 見直しが必要な条件
MCF通信構成定義 | mcftalccn -r ipaddr | 無条件に見直しが必要
mcftalccn -r hostname | 無条件に見直しが必要
mcftalccn -o oipaddr | 相手アドレスチェックの抑止を行っていない場合，見直しが必要
mcftalccn -o ohostname | 相手アドレスチェックの抑止を行っていない場合，見直しが必要

ホスト名またはIPアドレスの変更手順

ホスト名またはIPアドレスは，次の手順で変更してください。

OpenTP1を正常停止します。

MCF通信構成定義について，変更前のホスト名またはIPアドレスを検索します。
OSがUNIXの場合はgrepコマンド，Windowsの場合はfindstrコマンドを使用して検索します。

検索の結果，変更前のホスト名またはIPアドレスが見つかった場合には，変更します。

変更した場合，MCF通信構成定義の定義オブジェクトファイルを再作成します。

コネクション（論理端末）の追加

コネクション（論理端末）を追加する場合に見直す必要のある定義の一覧，および再見積もりが発生する条件を次の表に示します。

表6-15　コネクション（論理端末）を追加する場合に見直しが必要な定義の一覧

定義ファイル名 | 定義 | 再見積もりが発生する条件
システム環境定義 | static_shmpool_size※1 | 無条件に再見積もりが必要
dynamic_shmpool_size※1 | 同時に送受信するメッセージ数が増加する場合
MCFマネジャ定義 | mcfmcomn -n | メッセージ出力通番を使用する場合
mcfmcomn -p※2 | 無条件に再見積もりが必要
mcfmexp -l※3 | 拡張予約定義を定義している場合
MCF通信構成定義 | mcftbuf -g count※4 | 無条件に再見積もりが必要
mcftsts -l | 状態を引き継ぐ論理端末が増える場合
システムサービス共通情報定義 | max_open_fds※5 | 無条件に再見積もりが必要

注※1

詳細については，マニュアル「OpenTP1 システム定義」の「MCFサービス用の共用メモリの見積もり式」の説明を参照してください。

注※2

詳細については，マニュアル「OpenTP1 システム定義」の「mcfmcomn」と「MCFサービス用の共用メモリの見積もり式」の説明を参照してください。

注※3

詳細については，マニュアル「OpenTP1 システム定義」の「mcfmexp」の説明を参照してください。

注※4

詳細については，「6.　システム定義」の「mcftalccn（コネクション定義の開始）」の注意事項とマニュアル「OpenTP1 システム定義」の「mcftbuf」の説明を参照してください。

注※5

詳細については，「6.　システム定義」の「システムサービス共通情報定義」を参照してください。

見直す必要のあるOpenTP1ファイルの一覧，および再見積もりが発生する条件を次の表に示します。

表6-16　コネクション（論理端末）を追加する場合に見直しが必要なOpenTP1ファイルの一覧

OpenTP1ファイル
再見積もりが発生する条件

ステータスファイル
次に示すどれかの条件の場合，再見積もりが必要

メッセージ出力通番を使用する場合

拡張予約定義を定義している場合

状態を引き継ぐ論理端末が増える場合

メッセージキューファイル
入力キューまたは出力キューにディスクキューを割り当てていて，同時に送受信するメッセージ数が増加する場合

また，TP1/NET/TCP/IPのリリースノートを参照し，MCF通信プロセスが使用するローカルメモリのメモリ所要量も見直してください。

定義例

ここでは，TP1/NET/TCP/IPのシステム構成例およびコネクション切り替え機能を使用する場合のシステム構成例，ならびにそれぞれの構成例に沿った定義例を示します。

TP1/NET/TCP/IPのシステム定義例

TP1/NET/TCP/IPのシステム構成例と，構成例に沿った定義例を次に示します。

構成例1

UNIX版で提供しているコーディング例におけるシステム構成例を次に示します。

これらの定義のコーディング例を次のファイルで提供しています。

適用OSがAIX，HP-UXまたはSolarisの場合

/BeTRAN/examples/mcf/TCPIP/conf/com_c1

/BeTRAN/examples/mcf/TCPIP/conf/com_d1

適用OSがLinuxの場合

/opt/OpenTP1/examples/mcf/TCPIP/conf/com_c1

/opt/OpenTP1/examples/mcf/TCPIP/conf/com_d1

図6-13　TP1/NET/TCP/IPのシステム構成例1

#############################################################
#    MCF通信構成定義（共通定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：com_c1                                     #
#############################################################
#----MCF環境定義（mcftenv）----#
mcftenv    -s  01       ¥
          -a  aplfil01
#----MCF通信構成共通定義（mcftcomn）----#
mcftcomn
#----トレース環境定義（mcfttrc）----#
mcfttrc    -t  "disk = yes"
#----バッファグループ定義（mcftbuf）----#
### バッファグループ定義（送信用）
mcftbuf    -g  "groupno=1                                   ¥
               length =1024                                ¥
               count  =128"
### バッファグループ定義（受信用）
mcftbuf    -g  "groupno=2                                   ¥
               length =1024                                ¥
               count  =128"
### バッファグループ定義（編集用）
mcftbuf    -g  "groupno=3                                   ¥
               length =1024                                ¥
               count  =128"
###########################  終わり  ########################

#############################################################
#    MCF通信構成定義（固有定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：com_d1                                     #
#############################################################
#----コネクション定義（mcftalccn）----#
### コネクション定義開始（ctcp01）
mcftalccn  -c  ctcp01                                       ¥
          -p  tcp                                          ¥
          -g  "sndbuf =1                                   ¥
               rcvbuf =2"                                  ¥
          -e  "msgbuf=3                                    ¥
               count=1"                                    ¥
          -t  tcp                                          ¥
          -y  "mode=client"                                ¥
          -r  "portno=10001"                               ¥
          -o  "oipaddr=200.100.50.1                        ¥
               oportno=20001"
#-----------------------------------------------------------#
####### 論理端末定義（leid01）
mcftalcle  -l  leid01                                       ¥
          -t  any                                          ¥
          -k  "quekind=disk                                ¥
               quegrpid=otqgrp01"
#-----------------------------------------------------------#
### コネクション定義終了（ctcp01）
mcftalced
#-----------------------------------------------------------#
### コネクション定義開始（ctcp02）
mcftalccn  -c  ctcp02                                       ¥
          -p  tcp                                          ¥
          -g  "sndbuf =1                                   ¥
               rcvbuf =2"                                  ¥
          -e  "msgbuf=3                                    ¥
               count=1"                                    ¥
          -t  tcp                                          ¥
          -y  "mode=client"                                ¥
          -r  "portno=10002"                               ¥
          -o  "oipaddr=200.100.50.2                        ¥
               oportno=20002"
#-----------------------------------------------------------#
####### 論理端末定義（leid02）
mcftalcle  -l  leid02                                       ¥
          -t  any                                          ¥
          -k  "quekind=disk                                ¥
               quegrpid=otqgrp01"
#-----------------------------------------------------------#
### コネクション定義終了（ctcp02）
mcftalced
#-----------------------------------------------------------#
### コネクション定義開始（ctcp03）
mcftalccn  -c  ctcp03                                       ¥
          -p  tcp                                          ¥
          -g  "sndbuf =1                                   ¥
               rcvbuf =2"                                  ¥
          -e  "msgbuf=3                                    ¥
               count=1"                                    ¥
          -t  tcp                                          ¥
          -y  "mode=server"                                ¥
          -r  "portno=10003"                               ¥
          -o  "oipaddr=200.100.50.3                        ¥
               oportno=20003"
#-----------------------------------------------------------#
####### 論理端末定義（leid03）
mcftalcle  -l  leid03                                       ¥
          -t  any                                          ¥
          -k  "quekind=disk                                ¥
               quegrpid=otqgrp01"
#-----------------------------------------------------------#
### コネクション定義終了（ctcp03）
mcftalced
#-----------------------------------------------------------#
### コネクション定義開始（ctcp04）
mcftalccn  -c  ctcp04                                       ¥
          -p  tcp                                          ¥
          -g  "sndbuf =1                                   ¥
               rcvbuf =2"                                  ¥
          -e  "msgbuf=3                                    ¥
               count=1"                                    ¥
          -t  tcp                                          ¥
          -y  "mode=server"                                ¥
          -r  "portno=10003"                               ¥
          -o  "oipaddr=200.100.50.4                        ¥
               oportno=20004"
#-----------------------------------------------------------#
####### 論理端末定義（leid04）
mcftalcle  -l  leid04                                       ¥
          -t  any                                          ¥
          -k  "quekind=disk                                ¥
               quegrpid=otqgrp01"
#-----------------------------------------------------------#
### コネクション定義終了（ctcp04）
mcftalced
#########################  終わり  ##########################

構成例2

Windows版で提供しているコーディング例でのシステム構成例を次に示します。

これらの定義のコーディング例を次のファイルで提供しています。

%DCDIR%¥examples¥mcf¥tcpip¥conf¥source¥TCPCc

%DCDIR%¥examples¥mcf¥tcpip¥conf¥source¥TCPCm

%DCDIR%¥examples¥mcf¥tcpip¥conf¥source¥TCPSc

%DCDIR%¥examples¥mcf¥tcpip¥conf¥source¥TCPSm

図6-14　TP1/NET/TCP/IPのシステム構成例2

#############################################################
#    MCF通信構成定義（共通定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：TCPCc                                      #
#############################################################
#----MCF環境定義（mcftenv）----#
mcftenv     -s  01                          ¥
           -m  A                           ¥
           -a  _TCPAPL
#----MCF通信構成共通定義（mcftcomn）----#
mcftcomn
#----タイマ定義（mcfttim）----#
mcfttim     -p  "usertime=yes               ¥
                msgsize=256"
#----トレース環境定義（mcfttrc）----#
mcfttrc
#----バッファグループ定義（mcftbuf）----#
### バッファグループ定義（送信用）
mcftbuf     -g  "groupno=11                 ¥
                length=4096                ¥
                count=2"
### バッファグループ定義（受信用）
mcftbuf     -g  "groupno=12                 ¥
                length=4096                ¥
                count=2"
###########################  終わり  ########################

#############################################################
#    MCF通信構成定義（固有定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：TCPCm                                     #
#############################################################
#----コネクション定義（mcftalccn）----#
### コネクション定義開始（TCPCN1C）
mcftalccn       -c  TCPCN1C                 ¥
               -p  tcp                     ¥
               -g  "sndbuf=11              ¥
                    rcvbuf=12"             ¥
               -t  tcp                     ¥
               -y  mode=client             ¥
               -r  portno=10211            ¥
               -o  "ohostname=HostName     ¥
                    oportno=10111"         ¥
               -f  "releaselog=2           ¥
                    cnerrlog=2"            ¥
               -u  "masm=yes"
#-----------------------------------------------------------#
####### 論理端末定義（TCPLE1C）
mcftalcle       -l  TCPLE1C                 ¥
               -t  any
#-----------------------------------------------------------#
### コネクション定義終了（TCPCN1C）
mcftalced
###########################  終わり  ########################

#############################################################
#    MCF通信構成定義（共通定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：TCPSc                                      #
#############################################################
#----MCF環境定義（mcftenv）----#
mcftenv     -s  02                          ¥
           -m  A                           ¥
           -a  _TCPAPL
#----MCF通信構成共通定義（mcftcomn）----#
mcftcomn
#----トレース環境定義（mcfttrc）----#
mcfttrc
#----バッファグループ定義（mcftbuf）----#
### バッファグループ定義（送信用）
mcftbuf     -g  "groupno=11                 ¥
                length=4096                ¥
                count=2"
### バッファグループ定義（受信用）
mcftbuf     -g  "groupno=12                 ¥
                length=4096                ¥
                count=2"
###########################  終わり  ########################

#############################################################
#    MCF通信構成定義（固有定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：TCPSm                                     #
#############################################################
#----コネクション定義（mcftalccn）----#
### コネクション定義開始（TCPCN1S）
mcftalccn       -c  TCPCN1S                 ¥
               -p  tcp                     ¥
               -g  "sndbuf=11              ¥
                    rcvbuf=12"             ¥
               -t  tcp                     ¥
               -y  mode=server             ¥
               -r  portno=10111            ¥
               -o  "ohostname=HostName     ¥
                    oportno=10211"         ¥
               -f  "releaselog=2           ¥
                    cnerrlog=2"            ¥
               -u  "masm=yes"
#-----------------------------------------------------------#
####### 論理端末定義（TCPLE1S）
mcftalcle       -l  TCPLE1S                 ¥
               -t  any                     ¥
               -k  "quekind=disk           ¥
                    quegrpid=quegrp01"     ¥
               -v  mhpap
#-----------------------------------------------------------#
### コネクション定義終了（TCPCN1S）
mcftalced
###########################  終わり  ########################

コネクション切り替え機能を使用したTP1/NET/TCP/IPのシステム定義例

コネクション切り替え機能を使用する場合のTP1/NET/TCP/IPのシステム構成例と，構成例に沿った定義例を次に示します。

これらの定義のコーディング例を次のファイルで提供しています。Windows版では提供していません。

適用OSがAIX，HP-UXまたはSolarisの場合

/BeTRAN/examples/mcf/TCPIP/conf/com_c2

/BeTRAN/examples/mcf/TCPIP/conf/com_d2

適用OSがLinuxの場合

/opt/OpenTP1/examples/mcf/TCPIP/conf/com_c2

/opt/OpenTP1/examples/mcf/TCPIP/conf/com_d2

図6-15　コネクション切り替え機能を使用する場合のTP1/NET/TCP/IPのシステム構成例

#############################################################
#    MCF通信構成定義（共通定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：com_c2                                     #
#############################################################
#----MCF環境定義（mcftenv）----#
mcftenv    -s  01       ¥
          -a  aplfil01
#----MCF通信構成共通定義（mcftcomn）----#
mcftcomn
#----トレース環境定義（mcfttrc）----#
mcfttrc    -t  "disk = yes"
#----バッファグループ定義（mcftbuf）----#
### バッファグループ定義（送信用）
mcftbuf    -g  "groupno=1                                   ¥
               length =1024                                ¥
               count  =128"
### バッファグループ定義（受信用）
mcftbuf    -g  "groupno=2                                   ¥
               length =1024                                ¥
               count  =128"
### バッファグループ定義（編集用）
mcftbuf    -g  "groupno=3                                   ¥
               length =1024                                ¥
               count  =128"
########################  終わり  ###########################

#############################################################
#    MCF通信構成定義（固有定義）                           #
#    TCP/IPプロトコル対応                                  #
#    ファイル名：com_d2                                     #
#############################################################
#----コネクション定義（mcftalccn）----#
### コネクション定義開始（ctcp01）
mcftalccn  -c  ctcp01                                       ¥
          -p  tcp                                          ¥
          -g  "sndbuf =1                                   ¥
               rcvbuf =2"                                  ¥
          -e  "msgbuf=3                                    ¥
               count=1"                                    ¥
          -t  tcp                                          ¥
          -y  "mode=client"                                ¥
          -r  "portno=10001"                               ¥
          -o  "oipaddr=200.100.50.1                        ¥
               oportno=20001"    
#-----------------------------------------------------------#
#######論理端末定義（leid01）
mcftalcle  -l  leid01                                       ¥
          -t  any                                          ¥
          -k  "quekind=disk                                ¥
               quegrpid=otqgrp01"
#-----------------------------------------------------------#
###コネクション定義終了（ctcp01）
mcftalced
#-----------------------------------------------------------#
### コネクション定義開始（ctcp02）
mcftalccn  -c  ctcp02                                       ¥
          -p  tcp                                          ¥
          -g  "sndbuf =1                                    ¥
               rcvbuf =2"                                   ¥
          -e  "msgbuf=3                                    ¥
               count=1"                                    ¥
          -t  tcp                                          ¥
          -y  "mode=client"                                ¥
          -r  "portno=10002"                               ¥
          -o  "oipaddr=200.100.50.2                        ¥
               oportno=20002"                              ¥
          -A  "mastercn=ctcp01"
#-----------------------------------------------------------#
###コネクション定義終了（ctcp02）
mcftalced
########################  終わり  ###########################

7.　運用コマンド

この章では，TP1/NET/TCP/IPで使用できる運用コマンドについて説明します。

＜この章の構成＞

TP1/NET/TCP/IPの運用コマンド

mcftactcn（コネクションの確立）

mcftactle（論理端末の閉塞解除）

mcftchcn（コネクションの切り替え）

mcftdctcn（コネクションの解放）

mcftdctle（論理端末の閉塞）

mcftendct（継続問い合わせ応答処理の強制終了）

mcftlscn（コネクションの状態表示）

mcftlsle（論理端末の状態表示）

mcftlsln（ネットワークの状態表示）

mcftofln（サーバ型コネクションの確立要求の受付終了）

mcftonln（サーバ型コネクションの確立要求の受付開始）

TP1/NET/TCP/IPの運用コマンド

ここでは，TP1/NET/TCP/IPに関係のあるオプションについてだけ説明しています。ほかのオプションおよびその他の運用コマンドについては，マニュアル「OpenTP1 運用と操作」を参照してください。

TP1/NET/TCP/IPで使用する運用コマンドの一覧を，次の表に示します。

表7-1　TP1/NET/TCP/IPで使用する運用コマンドの一覧

機能 | コマンド名称 | 定義中組み込み | オフライン中に実行 | オンライン中に実行 | UAPから実行
コネクション管理 | コネクションの確立 | mcftactcn | × | × | ○ | ○
コネクションの解放 | mcftdctcn | × | × | ○ | ○
コネクションの切り替え※ | mcftchcn | × | × | ○ | ○
コネクションの状態表示 | mcftlscn | × | × | ○ | ○
ネットワークの状態表示 | mcftlsln | × | × | ○ | ○
サーバ型コネクションの確立要求の受付終了 | mcftofln | × | × | ○ | ○
サーバ型コネクションの確立要求の受付開始 | mcftonln | × | × | ○ | ○
論理端末管理 | 論理端末の閉塞解除 | mcftactle | × | × | ○ | ○
論理端末の閉塞 | mcftdctle | × | × | ○ | ○
論理端末の状態表示 | mcftlsle | × | × | ○ | ○
継続問い合わせ応答処理の強制終了 | mcftendct | × | × | ○ | ○

（凡例）

○：組み込み，または実行ができます。

×：組み込み，または実行ができません。

注※

このコマンドは，TP1/NET/High Availabilityを組み込んでいる場合だけ使用できます。

mcftactcn（コネクションの確立）

形式

mcftactcn 〔-s MCF通信プロセス識別子〕 -c コネクションID

機能

コネクションを確立します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象のコネクションを制御するMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftactcnコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-c コネクションID　　～〈1～8文字の識別子〉

確立するコネクションの名称を指定します。

コネクションIDは，一度に8個まで指定できます。多数入力する運用を行う場合は，次に示す複数指定または一括指定を使用して，一つの運用コマンドで行う並列処理数を増やし，運用コマンド入力数を減らすように運用設計を行ってください。

複数を指定するときは，引用符（"）で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。同一コネクションIDは重複して指定できません。

また，コネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDとは，混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべてのコネクションを確立します。

先行文字列*：先行文字列で始まるすべてのコネクションを確立します。

〈複数指定の例〉　cnn1，cnn2，cnn3を指定する場合

-c "cnn1△cnn2△cnn3"

〈一括指定の例〉　cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftactcnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftactcnコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10371-I | mcftactcnコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftactcnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10391-E | mcftactcnコマンドはサポートされていません。 | 標準エラー出力
KFCA10500-I | ヘルプメッセージ | 標準出力
KFCA14818-W | コネクション確立済みのため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14819-W | コネクション確立処理中のため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14825-E | 指定されたコネクションに対する論理端末が接続されていないため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14829-E | サーバ型のコネクションのため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14845-W | コネクション解放処理中のため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftactle（論理端末の閉塞解除）

形式

mcftactle 〔-s MCF通信プロセス識別子〕 〔-c コネクションID〕
           -l 論理端末名称

機能

論理端末の閉塞を解除します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象の論理端末を制御するMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftactleコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-c コネクションID　　～〈1～8文字の識別子〉

閉塞解除したい論理端末に対応するコネクションのコネクションIDを指定します。

コネクションIDは複数を指定できません。また，一括指定もできません。

●-l 論理端末名称　　～〈1～8文字の識別子〉

閉塞解除する論理端末の名称を指定します。

-cオプションを指定した場合は，指定したコネクションIDに対応する論理端末の名称を指定します。

論理端末名称は，一度に8個まで指定できます。多数入力する運用を行う場合は，次に示す複数指定または一括指定を使用して，一つの運用コマンドで行う並列処理数を増やし，運用コマンド入力数を減らすように運用設計を行ってください。

複数を指定するときは，引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は重複して指定できません。

また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称とは，混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべての論理端末の閉塞を解除します。

先行文字列*：先行文字列で始まるすべての論理端末の閉塞を解除します。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末を指定する場合

-l "len*"

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftactleコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftactleコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10371-I | mcftactleコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftactleコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10382-E | 指定した論理端末は登録されていません。 | 標準エラー出力
KFCA10390-E | 指定されたコネクションIDと論理端末名称の対応が正しくありません。 | 標準エラー出力
KFCA10391-E | mcftactleコマンドはサポートされていません。 | 標準エラー出力
KFCA10395-E | 指定したコネクションには未接続の論理端末名称が指定されています。 | 標準エラー出力
KFCA10503-I | ヘルプメッセージ | 標準出力
KFCA14820-W | コネクションが確立されていないため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14821-W | 論理端末が閉塞解除済みのため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14826-E | 指定されたコネクションに対する論理端末が接続されていないため，論理端末の閉塞を解除できません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftchcn（コネクションの切り替え）

形式

mcftchcn 〔-s MCF通信プロセス識別子〕 -f 切り替え元コネクションID
          -t 切り替え先コネクションID

機能

切り替え元コネクションと論理端末の接続を無効にして，切り替え先コネクションと論理端末を接続します。

mcftchcnコマンドを実行する前に，切り替え元のコネクション上の論理端末を閉塞してください。

このコマンドを入力するときは，切り替え元コネクションおよび切り替え先コネクションは確立されていない状態でなければなりません。このコマンドの処理では，コネクションの状態は変更されません。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象のコネクションを制御するMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftchcnコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-f 切り替え元コネクションID　　～〈1～8文字の識別子〉

切り替え元のコネクションのコネクションIDを指定します。

切り替え元のコネクションIDは複数を指定できません。

●-t 切り替え先コネクションID　　～〈1～8文字の識別子〉

切り替え先のコネクションのコネクションIDを指定します。

切り替え先のコネクションIDは複数を指定できません。

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10110-E | 閉塞されていない論理端末が存在するため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA10115-E | コネクションの切り替えができる構成になっていません。 | 標準エラー出力
KFCA10350-I | mcftchcnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftchcnコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10371-I | mcftchcnコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftchcnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10391-E | mcftchcnコマンドはサポートされていません。 | 標準エラー出力
KFCA10392-E | MCF運用コマンドの実行に必要なプログラムプロダクトがインストールされていません。 | 標準エラー出力
KFCA10530-I | ヘルプメッセージ | 標準出力
KFCA14827-E | 指定した切り替え元コネクションが解放されていません。 | 標準エラー出力
KFCA14828-E | 指定した切り替え元コネクションに対して，論理端末が接続されていません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftdctcn（コネクションの解放）

形式

mcftdctcn 〔-s MCF通信プロセス識別子〕 -c コネクションID 〔-f〕

機能

コネクションを解放します。該当コネクションが仕掛り中の場合でも，強制的に解放します。コネクション解放後，CCLSEVTまたはCERREVTを通知します。コネクション解放後に通知するMCFイベントを次の表に示します。

-fオプションの指定 | コネクション定義（mcftalccn -f）のcnreleaseオペランドの指定値 | 通知するMCFイベント
なし | 任意 | CCLSEVT
あり | fin | CCLSEVT
rst | CERREVT

なお，仕掛り中の処理は，次のように扱います。

受信仕掛り中の場合，受信途中のメッセージを破棄します。

一方送信（dc_mcf_send）の仕掛り中の場合，送信処理を中断し，仕掛り中のメッセージを出力キューに戻します。出力キューに戻したメッセージは，次回のコネクション確立時に再送されます。

同期型メッセージの送受信関数（dc_mcf_sendrecv，dc_mcf_sendsync，またはdc_mcf_recvsync）の仕掛り中の場合，送受信処理を中断し，エラーコードDCMCFRTN_73020でリターンします。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象のコネクションを制御するMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftdctcnコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-c コネクションID　　～〈1～8文字の識別子〉

解放するコネクションのコネクションIDを指定します。

コネクションIDは，一度に8個まで指定できます。多数入力する運用を行う場合は，次に示す複数指定または一括指定を使用して，一つの運用コマンドで行う並列処理数を増やし，運用コマンド入力数を減らすように運用設計を行ってください。

複数を指定するときは，引用符（"）で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。同一コネクションIDは重複して指定できません。

また，コネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDとは，混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべてのコネクションを解放します。

先行文字列*：先行文字列で始まるすべてのコネクションを解放します。

〈複数指定の例〉　cnn1，cnn2，cnn3を指定する場合

-c "cnn1△cnn2△cnn3"

〈一括指定の例〉　cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

●-f

コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定している場合，RSTパケットを送信してコネクションを強制解放します。

コネクション定義（mcftalccn -f）のcnreleaseオペランドを省略，またはfinを指定している場合，指定しても無効となり，FINパケットを送信してコネクションを正常に解放します。

出力メッセージ

メッセージ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 | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10391-E | mcftdctcnコマンドはサポートされていません。 | 標準エラー出力
KFCA10501-I | ヘルプメッセージ | 標準出力
KFCA14820-W | コネクションが確立されていないため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14845-W | コネクション解放処理中のため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftdctle（論理端末の閉塞）

形式

mcftdctle 〔-s MCF通信プロセス識別子〕 〔-c コネクションID〕
           -l 論理端末名称

機能

論理端末を閉塞します。該当コネクションが同期型メッセージの送受信関数仕掛り中の場合，同期型メッセージの送受信関数（dc_mcf_sendsyncまたはdc_mcf_sendrecv）をエラーコードDCMCFRTN_73020でエラーリターンし，コネクションを解放します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象の論理端末を制御するMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftdctleコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-c コネクションID　　～〈1～8文字の識別子〉

閉塞したい論理端末に対応するコネクションのコネクションIDを指定します。

コネクションIDは複数を指定できません。また，一括指定もできません。

●-l 論理端末名称　　～〈1～8文字の識別子〉

閉塞する論理端末の名称を指定します。

-cオプションを指定した場合は，指定したコネクションIDに対応する論理端末の名称を指定します。

論理端末名称は，一度に8個まで指定できます。多数入力する運用を行う場合は，次に示す複数指定または一括指定を使用して，一つの運用コマンドで行う並列処理数を増やし，運用コマンド入力数を減らすように運用設計を行ってください。

複数を指定するときは，引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は重複して指定できません。

また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称とは，混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべての論理端末を閉塞します。

先行文字列*：先行文字列で始まるすべての論理端末を閉塞します。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末を指定する場合

-l "len*"

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftdctleコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftdctleコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10371-I | mcftdctleコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftdctleコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10382-E | 指定した論理端末は登録されていません。 | 標準エラー出力
KFCA10390-E | 指定されたコネクションIDと論理端末名称の対応が正しくありません。 | 標準エラー出力
KFCA10391-E | mcftdctleコマンドはサポートされていません。 | 標準エラー出力
KFCA10395-E | 指定したコネクションには未接続の論理端末名称が指定されています。 | 標準エラー出力
KFCA10504-I | ヘルプメッセージ | 標準出力
KFCA14820-W | コネクションが確立されていないため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14822-W | 論理端末が閉塞済みのため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14881-W | 論理端末は継続問い合わせ中のため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

注意事項

受信仕掛り中に運用コマンド（mcftdctle）を入力した場合は，論理端末が閉塞状態でも，メッセージを受信します。論理端末閉塞によるメッセージ受信処理への影響はありません。

送信仕掛り中に運用コマンド（mcftdctle）を入力した場合は，一方送信メッセージまたは応答メッセージの送信処理を中断しません。送信仕掛り中のメッセージの送信完了後に論理端末が閉塞されます。

継続問い合わせ応答中は論理端末を閉塞することはできません。

問い合わせ応答中に運用コマンド（mcftdctle）を入力した場合，応答メッセージが出力キューに滞留することがありますが，次に論理端末が閉塞解除しても送信しないで破棄します。

mcftendct（継続問い合わせ応答処理の強制終了）

形式

mcftendct 〔-s MCF通信プロセス識別子〕 -l 論理端末名称〔-f〕

機能

継続問い合わせ応答処理を強制終了します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象の論理端末を制御するMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftendctコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-l 論理端末名称　　～〈1～8文字の識別子〉

継続問い合わせ応答処理中の論理端末の名称を指定します。

論理端末名称は，一度に8個まで指定できます。多数入力する運用を行う場合は，次に示す複数指定または一括指定を使用して，一つの運用コマンドで行う並列処理数を増やし，運用コマンド入力数を減らすように運用設計を行ってください。

複数を指定するときは，引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は重複して指定できません。

また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称とは，混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべての論理端末をを対象とします。

先行文字列*：先行文字列で始まるすべての論理端末を対象とします。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末を指定する場合

-l "len*"

●-f

継続問い合わせ応答処理を即時強制終了する場合に指定します。このオプションを指定すると，直ちに継続問い合わせ用一時記憶領域を解放し，該当する論理端末からの問い合わせを処理しているMHP（エラーイベントを含む）は異常終了します。このときエラーイベントは起動しません。

-fオプションを指定したmcftendctコマンドの実行後にMHPが次に示す処理をしたとき，MHPが異常終了します。

TP1/Message Control以外のリソースマネジャにもアクセスするMHPのサービス終了時

継続問い合わせ用一時記憶領域アクセス時（dc_mcf_tempget関数，dc_mcf_tempput関数発行時）

ロールバック要求時（dc_mcf_rollback関数発行時（action：DCMCFRTRY，またはDCMCFNRTNの場合））

このオプションの指定を省略すると，MHPが該当する論理端末からの問い合わせを処理中の場合，エラーメッセージが出力されます。

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftendctコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftendctコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10371-I | mcftendctコマンドを正常に受け付けました。 | 標準出力
KFCA10373-E | mcftendctコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10382-E | 指定した論理端末は登録されていません。 | 標準エラー出力
KFCA10391-E | mcftendctコマンドはサポートされていません。 | 標準エラー出力
KFCA10521-I | ヘルプメッセージ | 標準出力
KFCA14878-E | 継続問い合わせ応答終了処理で障害が発生しました。 | 標準エラー出力
KFCA14879-W | UAPが継続問い合わせ応答処理中のため，運用コマンドは受け付けられません。 | 標準エラー出力
KFCA14880-W | 論理端末は継続問い合わせ中ではありません。 | 標準エラー出力
KFCA14882-W | 論理端末は継続問い合わせ応答形態をサポートしていません。 | 標準エラー出力
KFCA14885-I | 継続問い合わせ応答を強制終了しました。 | メッセージログファイル
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftlscn（コネクションの状態表示）

形式

mcftlscn 〔-s MCF通信プロセス識別子〕 -c コネクションID 〔-d〕

機能

コネクションの状態を標準出力で表示します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象のコネクションを制御するMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は，複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftlscnコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-c コネクションID　　～〈1～8文字の識別子〉

状態を表示するコネクションのコネクションIDを指定します。

コネクションIDは，一度に8個まで指定できます。多数入力する運用を行う場合は，次に示す複数指定または一括指定を使用して，一つの運用コマンドで行う並列処理数を増やし，運用コマンド入力数を減らすように運用設計を行ってください。

複数を指定するときは，引用符（"）で囲んで，コネクションIDとコネクションIDとの間を空白で区切ります。同一コネクションIDは重複して指定できません。

また，コネクションIDは，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外のコネクションIDとは，混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべてのコネクションの状態を表示します。

先行文字列*：先行文字列で始まるすべてのコネクションの状態を表示します。

〈複数指定の例〉　cnn1，cnn2，cnn3を指定する場合

-c "cnn1△cnn2△cnn3"

〈一括指定の例〉　cnnで始まるすべてのコネクションを指定する場合

-c "cnn*"

●-d

コネクションの状態と該当するコネクションに対応する論理端末の情報を表示します。

このオプションの指定を省略すると，コネクションの状態だけを表示します。

出力形式

mmm cccccccc ppp sssss ddddd     ef　　　　　　…1
   llllllll ttt aaa 　　　　　　　　　　　　　…2
   qqqqq（rrrrr） 　　　　　　　　　　　　　　…3

1：-dオプションの指定に関係なく出力します。

2：-dオプションを指定した場合に出力します。

3：-dオプションを指定し，かつ，出力形式2で状態表示する（コネクション定義（mcftalccn -C）のlscnfmtオペランドに2を指定）場合に出力します。

mmm：MCF識別子

cccccccc：コネクションID

ppp：プロトコル種別

sssss：コネクションの状態
ACT…確立状態
ACT/B…確立処理中状態
DCT…解放状態
DCT/B…解放処理中状態

ddddd：詳細ステータス（保守情報）
INIT…初期状態
CNC_W…コネクション確立待ち状態
CNRTY…コネクション確立再試行待ち状態
CNREQ…コネクション確立要求待ち状態
SRREQ…データ送受信可能状態
SND_W…データ送信処理中状態
NEXTW…後続データ受信待ち状態
SR_SW…同期型送受信のデータ送信処理中状態
SR_W…同期型送受信のデータ受信待ち状態
SR_NW…同期型送受信の後続データ受信待ち状態
ACK_W…送達確認メッセージ受信待ち状態
SD_SW…同期型送信のデータ送信処理中状態
RV_W…同期型受信のデータ受信待ち状態
ANS…問い合わせ応答中状態
CONT…継続問い合わせ応答中状態
MHPEW…継続問い合わせ応答中のMHP処理完了待ち状態
*****…コネクション解放処理中状態

e：問い合わせ応答状態
問い合わせ応答および継続問い合わせ応答形態によるメッセージ送受信機能を使用する（コネクション定義（mcftalccn -l）のreplymsgにyesを指定）場合に出力します。
A…問い合わせ応答中
C…継続問い合わせ応答中

f：UAP実行中状態
問い合わせ応答および継続問い合わせ応答形態によるメッセージ送受信機能を使用する（コネクション定義（mcftalccn -l）のreplymsgにyesを指定）場合に出力します。
U…UAP実行中状態
Uが表示される場合，-fオプションを指定しないmcftendctコマンドは受け付けられません。

llllllll：論理端末名称

ttt：論理端末タイプ

aaa：論理端末とコネクションの接続状態（未接続の場合だけ）
NOU…未接続

qqqqq：現在保留している受信メッセージ数

rrrrr：OpenTP1システム開始以降に保留した，最大受信メッセージ数

出力メッセージ

メッセージ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 | 状態表示を終了します。 | 標準出力
KFCA10373-E | mcftlscnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10391-E | mcftlscnコマンドはサポートされていません。 | 標準エラー出力
KFCA10502-I | ヘルプメッセージ | 標準出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftlsle（論理端末の状態表示）

形式

mcftlsle 〔-s MCF通信プロセス識別子〕 〔-c コネクションID〕
          -l 論理端末名称 〔-q〕

機能

論理端末の状態を標準出力で表示します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象の論理端末を制御するMCF通信サービスのMCF通信プロセス識別子を指定します。アプリケーション起動サービスのアプリケーション起動プロセス識別子は指定できません。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftlsleコマンドを実行します。したがって，MCF通信サービスを検索するオーバヘッドが，運用コマンドの処理に加わります。

MCF通信サービスが多い構成や運用コマンドを多数入力する運用を行う場合は，-sオプションで，MCF通信プロセス識別子を指定する運用設計を行ってください。

●-c コネクションID　　～〈1～8文字の識別子〉

状態を表示したい論理端末に対応するコネクションのコネクションIDを指定します。

コネクションIDは複数を指定できません。また，一括指定もできません。

●-l 論理端末名称　　～〈1～8文字の識別子〉

状態を表示する論理端末の名称を指定します。

-cオプションを指定した場合，指定したコネクションIDに対応する論理端末名称を指定します。

論理端末名称は，一度に8個まで指定できます。多数入力する運用を行う場合は，次に示す複数指定または一括指定を使用して，一つの運用コマンドで行う並列処理数を増やし，運用コマンド入力数を減らすように運用設計を行ってください。

複数を指定するときは，引用符（"）で囲んで，論理端末名称と論理端末名称との間を空白で区切ります。同一論理端末名称は，重複して指定できません。

また，論理端末名称は，*を使って一括指定ができます。一括指定は一つだけ指定できます。一括指定と一括指定以外の論理端末名称とは，混在して指定できません。一括指定をするときは，引用符（"）で囲んで指定します。

*：すべての論理端末の状態を表示します。

先行文字列*：先行文字列で始まるすべての論理端末の状態を表示します。

〈複数指定の例〉　len1，len2，len3を指定する場合

-l "len1△len2△len3"

〈一括指定の例〉　lenで始まるすべての論理端末を指定する場合

-l "len*"

●-q

指定した論理端末に対応する出力キューの保留状態を表示します。

このオプションの指定を省略すると，論理端末に対応する出力キューの保留状態は表示しません。

出力形式

mmm llllllll sss
   SYNC xxxxxxxxxx yyyyyyyyyy zzzzzzzzzz
     IO      :          :     ：
   PRIO      :          :     ：
   NORM      :          :     ：
   iii ooo

mmm：MCF識別子

llllllll：論理端末名称

sss：論理端末状態
ACT…閉塞解除状態
DCT…閉塞状態

SYNC：同期型メッセージ

IO：非同期型問い合わせ応答メッセージ

PRIO：非同期型一方送信メッセージ（優先）

NORM：非同期型一方送信メッセージ（一般）

xxxxxxxxxx：未送信メッセージ数

yyyyyyyyyy：未送信メッセージの先頭の出力通番

zzzzzzzzzz：未送信メッセージの最後の出力通番

iii：出力キューの入力の保留状態（-qオプション指定時だけ表示）
NOH…保留解除
HLD…保留

ooo：出力キューのスケジュールの保留状態（-qオプション指定時だけ 表示）
NOH…保留解除
HLD…保留

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftlsleコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftlsleコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10360-I | 状態表示を開始します。 | 標準出力
KFCA10364-I | 表示情報 | 標準出力
KFCA10365-I | 表示情報 | 標準出力
KFCA10369-I | 状態表示を終了します。 | 標準出力
KFCA10373-E | mcftlsleコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10381-E | 指定したコネクションは登録されていません。 | 標準エラー出力
KFCA10382-E | 指定した論理端末は登録されていません。 | 標準エラー出力
KFCA10390-E | 指定したコネクションIDと論理端末名称の対応が正しくありません。 | 標準エラー出力
KFCA10391-E | mcftlsleコマンドはサポートされていません。 | 標準エラー出力
KFCA10395-E | 指定したコネクションには未接続の論理端末名称が指定されています。 | 標準エラー出力
KFCA10505-I | ヘルプメッセージ | 標準出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftlsln（ネットワークの状態表示）

形式

mcftlsln 〔-s MCF通信プロセス識別子〕〔-t〕

機能

ネットワークの状態を標準出力で表示します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象のMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

このオプションの指定を省略すると，すべてのMCF通信サービスに対して，mcftlslnコマンドを実行します。

●-t

相手システムとのメッセージ送受信に関するネットワークの状態を表示します。

このオプションの指定を省略すると，サーバ型コネクションの確立要求の受付状態を表示します。

出力形式と出力例

出力形式と出力例を，-tオプションを指定した場合と省略した場合とに分けて，それぞれ次に示します。

-tオプションを指定した場合

出力形式

mmm cccccccc ppp y sss AAAA.BBBB (CCCC.DDDD) EEEE.FFFF (GGGG.HHHH)

mmm：MCF識別子

cccccccc：コネクションID

ppp：プロトコル種別
tcp…TCP/IPプロトコル

y ：コネクションの確立モード（mcftalccn -y mode）
C…クライアント型のコネクション
S…サーバ型のコネクション

sss：メッセージ送受信に関するネットワークの状態
OPN…使用中
CLS…未使用

AAAA：自システムのIPアドレス（dotted-decimal形式表示）
例：192.11.42.20
ネットワークの状態が未使用の場合，*を出力します。

BBBB：自システムのポート番号
ネットワークの状態が未使用の場合，*を出力します。

CCCC：コネクション定義の自システムのホスト名（mcftalccn -r hostname）または自システムのホストのIPアドレス（mcftalccn -r ipaddr）
自システムのホスト名は最大15文字まで表示します。
定義を省略した場合，*を出力します。

DDDD：コネクション定義の自システムのポート番号（mcftalccn -r portno）
定義を省略した場合，*を出力します。

EEEE：相手システムのIPアドレス（dotted-decimal形式表示）
ネットワークの状態が未使用の場合，*を出力します。

FFFF：相手システムのポート番号
ネットワークの状態が未使用の場合，*を出力します。

GGGG：コネクション定義の相手システムのホスト名（mcftalccn -o ohostname）または相手システムのホストのIPアドレス（mcftalccn -o oipaddr）
相手システムのホスト名は最大15文字まで表示します。
相手アドレス情報をチェックしない（mcftalccn -h addrchkにnoを指定）場合，*を出力します。

HHHH：コネクション定義の相手システムのポート番号（mcftalccn -o oportno）
相手アドレス情報をチェックしない（mcftalccn -h addrchkにnoを指定）場合，または，相手ポートが任意（mcftalccn -o oportnoにfreeを指定）の場合，*を出力します。

出力例

-tオプションを省略した場合

出力形式

mmm cccccccc ppp sssss IIIII JJJJJ

mmm：MCF識別子

cccccccc：コネクションID

ppp：プロトコル種別
tcp…TCP/IPプロトコル

sssss：サーバ型コネクションの確立要求の受付状態
INIT…受付終了状態
LISTEN…受付開始状態
RETRY…受付開始処理の再試行中状態

IIIII：自システムのポート番号（mcftalccn -r portno）

JJJJJ：自システムのIPアドレス（mcftalccn -r ipaddr）（dotted-decimal形式表示）
定義を省略した場合，*を出力します。

出力例

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftlslnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftlslnコマンド入力元への応答に失敗しました。 | メッセージログファイル，または標準エラー出力
KFCA10360-I | 状態表示を開始します。 | 標準出力
KFCA10369-I | 状態表示を終了します。 | 標準出力
KFCA10372-E | mcftlslnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10391-E | mcftlslnコマンドはサポートされていません。 | 標準エラー出力
KFCA10561-I | ヘルプメッセージ | 標準出力
KFCA14862-W | サーバ型のコネクションは存在しません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力
KFCA16432-I | ネットワーク情報の表示 | 標準出力

mcftofln（サーバ型コネクションの確立要求の受付終了）

形式

mcftofln -s MCF通信プロセス識別子

機能

サーバ型コネクションの確立要求の受付を終了します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象のMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftoflnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftoflnコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10370-I | mcftoflnコマンドを正常に受け付けました。 | 標準出力
KFCA10372-E | mcftoflnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10391-E | mcftoflnコマンドはサポートされていません。 | 標準エラー出力
KFCA10560-I | ヘルプメッセージ | 標準出力
KFCA14861-W | 着呼受付が終了しています。 | 標準エラー出力
KFCA14862-W | サーバ型のコネクションは存在しません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

mcftonln（サーバ型コネクションの確立要求の受付開始）

形式

mcftonln -s MCF通信プロセス識別子

機能

サーバ型コネクションの確立要求の受付を開始します。

オプション

●-s MCF通信プロセス識別子　　～〈数字（0～9），a～f〉((01～ef))

処理対象のMCF通信サービスのMCF通信プロセス識別子を指定します。

MCF通信プロセス識別子は複数を指定できません。

出力メッセージ

メッセージID | 内容 | 出力先
KFCA10350-I | mcftonlnコマンドが入力されました。 | 標準出力
KFCA10351-E | MCF開始処理中です。 | 標準エラー出力
KFCA10352-E | MCF終了処理中です。 | 標準エラー出力
KFCA10353-W | 入力形式が誤っています。 | 標準エラー出力
KFCA10354-E | メモリ不足です。 | メッセージログファイル，または標準エラー出力
KFCA10355-W | 引数の指定が誤っています。 | 標準エラー出力
KFCA10356-E | プロセス間でタイムアウトが発生しました。 | 標準エラー出力
KFCA10357-E | MCF内でタイムアウトが発生しました。 | 標準エラー出力
KFCA10358-E | 内部関数のエラーが発生しました。 | メッセージログファイル，または標準エラー出力
KFCA10359-W | mcftonlnコマンド入力元への応答に失敗しました。 | メッセージログファイル
KFCA10370-I | mcftonlnコマンドを正常に受け付けました。 | 標準出力
KFCA10372-E | mcftonlnコマンドが異常終了しました。 | 標準エラー出力
KFCA10380-E | 相手プロセスの検索に失敗しました。 | 標準エラー出力
KFCA10391-E | mcftonlnコマンドはサポートされていません。 | 標準エラー出力
KFCA10559-I | ヘルプメッセージ | 標準出力
KFCA14860-W | 着呼受付は開始しています。 | 標準エラー出力
KFCA14862-W | サーバ型のコネクションは存在しません。 | 標準エラー出力
KFCA16402-E | RPC障害が発生しました。 | 標準エラー出力

8.　組み込み方法

この章では，TP1/NET/TCP/IPをOpenTP1システムに組み込む方法について説明します。

＜この章の構成＞

8.1　TP1/NET/TCP/IPの組み込みの流れ

8.2　MCFメイン関数の作成

8.3　定義オブジェクトファイルの生成

8.1　TP1/NET/TCP/IPの組み込みの流れ

TP1/NET/TCP/IPをOpenTP1システムに組み込むときの作業の流れを示します。

＜この節の構成＞

(1)　MCFメイン関数の作成

(2)　MCFサービス名の登録

(3)　システムサービス情報定義ファイルの作成

(4)　定義オブジェクトファイルの生成

(1)　MCFメイン関数の作成

TP1/NET/TCP/IPを起動するためには，MCFメイン関数をコーディングし，コンパイル，およびリンケージしておく必要があります。詳細は，「8.2　MCFメイン関数の作成」を参照してください。

(2)　MCFサービス名の登録

TP1/NET/TCP/IPを実行するために，MCFサービス名をシステムサービス構成定義で定義しておく必要があります。

MCFサービス名はMCFマネジャ定義オブジェクトファイル名と一致させてください。

詳細は，マニュアル「OpenTP1 システム定義」を参照してください。

(3)　システムサービス情報定義ファイルの作成

システムサービス情報定義ファイルをテキストエディタで作成します。作成するファイルのパス名は，「$DCDIR/lib/sysconf/システムサービス情報定義ファイル名」です。ファイルの定義形式については，「6.　システム定義」の「システムサービス情報定義」を参照してください。

(4)　定義オブジェクトファイルの生成

OpenTP1のネットワークコミュニケーション定義の各ソースファイルから定義オブジェクトファイルを生成します。詳細は，「8.3　定義オブジェクトファイルの生成」を参照してください。

8.2　MCFメイン関数の作成

TP1/NET/TCP/IPは，OpenTP1プロセスサービスによって起動されます。

TP1/NET/TCP/IPを起動するためには，MCFメイン関数を作成し，コンパイル，およびリンケージを行ってTP1/NET/TCP/IPの実行形式プログラムを作成する必要があります。リンケージには，mcfpltcpコマンドを使用します。

MCFメイン関数では，スタート関数（dc_mcf_svstart）を呼び出します。UOCを使用する場合は，MCFメイン関数でUOCの関数アドレスを指定してください。

UOCは，MCFメイン関数と同じ言語（ANSI C，C++またはK&R版 C）で作成してください。

MCFメイン関数のコーディング概要を図8-1，図8-2に示します。また，ディレクトリへの組み込み方法を図8-3に示します。

なお，これらのコーディング例は，次のファイルで提供しています。

適用OSがWindowsの場合

%DCDIR%¥examples¥mcf¥tcpip¥cmlib¥c¥com.c

適用OSがLinuxの場合

/opt/OpenTP1/examples/mcf/TCPIP/cmlib/ansi/com.c

/opt/OpenTP1/examples/mcf/TCPIP/cmlib/c/com.c

その他のOSの場合

/BeTRAN/examples/mcf/TCPIP/cmlib/ansi/com.c

/BeTRAN/examples/mcf/TCPIP/cmlib/c/com.c

図8-1　MCFメイン関数のコーディング概要（ANSI C，C++の場合）

注※

TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合は，「segchk01」の代わりに「dc_mcf_stduoc_tcp_segchk」をコーディングしてください。

図8-2　MCFメイン関数のコーディング概要（K&R版 Cの場合）

注※

TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合は，「segchk01」の代わりに「dc_mcf_stduoc_tcp_segchk」をコーディングしてください。

TP1/NET/TCP/IPで提供するヘッダファイルを取り込みます。

使用するUOC関数をextern宣言します。UOCのリターン値はDCLONG型にしてください。
UOCをまったく使用しない場合，このコーディングは必要ありません。

UOCテーブルをextern宣言します。UOCを使用する場合，必ずこのとおりにコーディングしてください。
UOCをまったく使用しない場合，このコーディングは必要ありません。

各UOC関数のアドレスを，次に示すシステム提供変数に設定します。使用するUOCだけコーディングしてください。

dcmcf_uoctbl.segchk  /*入力セグメント判定UOCアドレス*/
dcmcf_uoctbl.msgrcv  /*入力メッセージ編集UOCアドレス*/
dcmcf_uoctbl.msgsend /*出力メッセージ編集UOCアドレス*/

UOCをまったく使用しない場合，このコーディングは必要ありません。

スタート関数を呼び出します。MCFメイン関数には必ずコーディングしてください。
スタート関数を呼び出したあとは，MCFメイン関数に制御が戻りません。そのため，スタート関数のあとにコーディングした処理は実行されませんので，ご注意ください。

図8-3　MCFメイン関数のディレクトリへの組み込み方法の概要

注※1

UOCを使用しない場合は，必要ありません。

注※2

mcfpltcpコマンドでリンケージします。

mcfpltcpコマンドの詳細については，TP1/NET/TCP/IPの「リリースノート」を参照してください。

注※3

TP1/NET/TCP/IPの実行形式プログラム名は，先頭がmcfuで始まる8文字以内の名称にしてください。

8.3　定義オブジェクトファイルの生成

定義オブジェクトファイルを次の手順で生成します。

ただし，開始から再開始の間に定義オブジェクトファイルを変更しないでください。変更した場合，再開始時に正常に動作しない場合がありますのでご注意ください。

OSのテキストエディタを使用して，MCFの定義ファイルから，次に示す定義ソースファイルを作成します。

MCFマネジャ定義ソースファイル

MCF通信構成定義の共通定義ソースファイル

MCF通信構成定義のTP1/NET/TCP/IPのプロトコル固有定義ソースファイル

MCFアプリケーション定義ソースファイル

MCF定義オブジェクト生成ユティリティを使用して，定義ソースファイルから，次に示すオブジェクトファイルを作成します。

MCFマネジャ定義オブジェクトファイル

MCF通信構成定義の共通定義オブジェクトファイル

MCF通信構成定義のTP1/NET/TCP/IPのプロトコル固有定義オブジェクトファイル

MCFアプリケーション定義オブジェクトファイル

MCF定義結合ユティリティを使用して，MCF通信構成定義の共通定義とプロトコル固有定義のオブジェクトファイルを結合し，次に示すオブジェクトファイルを作成します。

MCF通信構成定義オブジェクトファイル

定義オブジェクトファイルの作成方法の概要を次の図に示します。

図8-4　定義オブジェクトファイルの作成方法の概要

注※1

次に示すコマンドで生成します。

mcfXXXX△-i△〔パス名〕入力ファイル名
      △-o△〔パス名〕出力オブジェクトファイル名

mcfXXXXは，ソースファイルごとに異なります。

mcfmngr：MCFマネジャ定義ソースファイル

mcfcomn：MCF通信構成定義の共通定義ソースファイル

mcftcp ：MCF通信構成定義のプロトコル（TP1/NET/TCP/IP）固有定義ソースファイル

mcfapli：MCFアプリケーション定義ソースファイル

MCF定義オブジェクト生成ユティリティのmcftcpコマンドについては，「6.　システム定義」の「MCF定義オブジェクトの生成」を，その他のコマンドについてはマニュアル「OpenTP1 システム定義」を参照してください。

注※2

次に示すコマンドで，MCF通信構成定義の二つのオブジェクトファイルを結合します。

mcflink△-i△共通定義オブジェクトファイル名
      △TP1/NET/TCP/IP定義オブジェクトファイル名
      △-o△出力オブジェクトファイル名

注※3

定義オブジェクトファイルはシステム環境定義のDCCONFPATHで指定したディレクトリに格納してください。システム環境定義については，マニュアル「OpenTP1 システム定義」を参照してください。

9.　障害対策

この章では，TP1/NET/TCP/IP運用中に発生する障害と，TP1/NET/TCP/IPの対応処理，およびメッセージの処理について説明します。

＜この章の構成＞

9.1　障害の種類と対応処理

9.2　コネクション障害時の処理

9.3　ユーザアプリケーションプログラム異常終了時の処理

9.4　ユーザアプリケーションプログラム閉塞時の処理

9.5　入力キュー障害時の処理

9.6　出力キュー障害時の処理

9.1　障害の種類と対応処理

運用中に障害が発生すると，TP1/NET/TCP/IPはシステムを回復します。このとき，システム定義の指定によって，MCFイベント処理用MHPも起動できます。

TP1/NET/TCP/IP運用中の障害と対応処理について障害の種類ごとに説明します。

＜この節の構成＞

(1)　コネクション障害

(2)　受信スケジュール関係障害（入力キュー，入力メッセージ編集UOC）

(3)　送信スケジュール関係障害（出力キュー，出力メッセージ編集UOC）

(4)　メッセージ送達確認関係障害

(5)　UAPの障害

(6)　TP1/NET/TCP/IPの障害

(1)　コネクション障害

表9-1　コネクション障害と対応処理

障害の内容
TP1/NET/TCP/IPの処理
ユーザの処理

コネクション確立時障害（クライアント型）

コネクション確立時障害を通知するメッセージログ（KFCA14803-E）を出力します。

CERREVT（コネクション確立不可能）を起動します。

「10.2.2　KFCA14803-Eメッセージが出力された場合」を参照してください。

コネクション確立時障害（サーバ型）

サーバ側コネクション確立時障害を通知するメッセージログ（KFCA14834-E）を出力します。

確立リトライ処理をします。

「10.2.6　KFCA14834-EまたはKFCA14835-Eメッセージが出力された場合」を参照してください。

コネクション確立時リトライオーバ（サーバ型）

コネクション確立リトライオーバを通知するメッセージログ（KFCA14835-E）を出力します。

コネクション切断

コネクション障害を通知するメッセージログ（KFCA14802-E）を出力します。

アドレス情報を通知するメッセージログ（KFCA14876-I）を出力します※1。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

CERREVT（コネクション切断）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※2）を出力します。

「10.2.1　KFCA14802-Eメッセージが出力された場合」を参照してください。

メッセージ送信時障害
（一方送信メッセージの場合）

コネクション障害を通知するメッセージログ（KFCA14802-E）を出力します。

アドレス情報を通知するメッセージログ（KFCA14876-I）を出力します※1。

CERREVT（コネクション切断）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※2）を出力します。

送信メッセージを出力キューに戻します。

メッセージの送信中断を通知するメッセージログ（KFCA10608-W）を出力します。

（応答メッセージの場合）

コネクション障害を通知するメッセージログ（KFCA14802-E）を出力します。

アドレス情報を通知するメッセージログ（KFCA14876-I）を出力します※1。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

CERREVT（コネクション切断）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※2）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

（同期型メッセージの場合）

コネクション障害を通知するメッセージログ（KFCA14802-E）を出力します。

アドレス情報を通知するメッセージログ（KFCA14876-I）を出力します※1。

CERREVT（コネクション切断）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※2）を出力します。

UAPにエラーリターンします。

メッセージ送信完了タイムアウト
（一方送信メッセージの場合）

メッセージ送信失敗を通知するメッセージログ（KFCA14815-E）を出力します。

送信メッセージを出力キューに戻します。

メッセージの送信中断を通知するメッセージログ（KFCA10608-W）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（メッセージ送信完了タイムアウト）を起動します。

「10.2.3　KFCA14815-Eメッセージが出力された場合」を参照してください。

（応答メッセージの場合）

メッセージ送信失敗を通知するメッセージログ（KFCA14815-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

コネクションを解放します。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

CERREVT（メッセージ送信完了タイムアウト）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※2）を出力します。

（同期型メッセージの場合）

メッセージ送信失敗を通知するメッセージログ（KFCA14815-E）を出力します。

送信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（メッセージ送信完了タイムアウト）を起動します。

注※1

コネクション定義（mcftalccn -f）のcnerrlogオペランドの指定によって，KFCA14876-Iを出力します。

注※2

コネクション定義（mcftalccn -f）のreleaselogオペランドの指定によって，KFCA14801-IまたはKFCA14875-Iのどちらかを出力します。

(2)　受信スケジュール関係障害（入力キュー，入力メッセージ編集UOC）

表9-2　受信スケジュール関係の障害と対応処理

障害の内容
TP1/NET/TCP/IPの処理
ユーザの処理

アプリケーション名未定義

入力キュー障害を通知するメッセージログ（KFCA10604-E）を出力します。

ERREVT1を起動します。

システム定義を見直してください。

MCFイベント名未定義

ERREVT1

ERREVT2

COPNEVT

CCLSEVT

CERREVT

RHLDEVT

MDELEVT

受信メッセージおよびMCFイベントを破棄します。
ありません。

MHPサービス，サービスグループ閉塞

入力キュー障害を通知するメッセージログ（KFCA10604-E）を出力します。

ERREVT2を起動します。

MHPサービス，サービスグループ閉塞の要因を取り除いてください。

入力キュー書き込み障害

入力キュー障害を通知するメッセージログ（KFCA10604-E）を出力します。

ERREVT2を起動します。

入力キュー書き込み障害の要因を取り除いてください。

入力メッセージ編集UOCパラメタ不正
（一方送信メッセージの場合）

UOCパラメタ不正を通知するメッセージログ（KFCA10620-E）を出力します。

アプリケーション名取得失敗を通知するメッセージログ（KFCA10610-E）を出力します。

受信メッセージを破棄します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

入力メッセージ編集UOCを見直してください。

（問い合わせメッセージの場合）

UOCパラメタ不正を通知するメッセージログ（KFCA10620-E）を出力します。

アプリケーション名取得失敗を通知するメッセージログ（KFCA10610-E）を出力します。

受信メッセージを破棄します。

継続問い合わせ応答中の場合，継続問い合わせ応答を終了します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

（同期型メッセージの場合）

UOCパラメタ不正を通知するメッセージログ（KFCA10620-E）を出力します。

受信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

入力メッセージ編集UOCエラーリターン
（一方送信メッセージの場合）

UOCエラーリターンを通知するメッセージログ（KFCA10611-E）を出力します。

アプリケーション名取得失敗を通知するメッセージログ（KFCA10610-E）を出力します。

受信メッセージを破棄します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

入力メッセージ編集UOCを見直してください。

（問い合わせメッセージの場合）

UOCエラーリターンを通知するメッセージログ（KFCA10611-E）を出力します。

アプリケーション名取得失敗を通知するメッセージログ（KFCA10610-E）を出力します。

受信メッセージを破棄します。

継続問い合わせ応答中の場合，継続問い合わせ応答を終了します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

（同期型メッセージの場合）

UOCエラーリターンを通知するメッセージログ（KFCA10611-E）を出力します。

受信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

アプリケーション名形式不正

アプリケーション名取得失敗を通知するメッセージログ（KFCA10610-E）を出力します。

ERREVT1を起動します。

アプリケーション名取得失敗の要因を取り除いてください。

次起動アプリケーション型不正（継続問い合わせ応答中に入力メッセージ編集UOCで設定したアプリケーション名がcont型でない）

受信メッセージ破棄を通知するメッセージログ（KFCA14806-W）を出力します。

継続問い合わせ応答を終了します。

コネクションを解放します。

CERREVT（次起動アプリケーション型不正）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

メッセージ入力編集UOCおよびシステム定義を見直してください。

受信バッファオーバフロー

メッセージ受信失敗を通知するメッセージログ（KFCA14816-E）を出力します。

受信メッセージ破棄を通知するメッセージログ（KFCA14806-W）を出力します。

受信バッファオーバフローを検出したときの追加情報を通知するメッセージログ（KFCA14865-I）を出力します。

コネクションを解放します。

受信メッセージを破棄します。

CERREVT（受信バッファオーバフロー）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

「10.2.4　KFCA14816-Eメッセージが出力された場合」を参照してください。

受信バッファ数不足

受信バッファの空き待ちを通知するメッセージログ（KFCA14877-I）を出力し，ほかで使用中の受信バッファの空きを待ちます。

（一定時間内に空きを検出した場合）

2.処理を続行します。

（一定時間内に空きを検出しなかった場合）

2.バッファ取得失敗を通知するメッセージログ（KFCA14847-E）を出力します。

3.コネクションを解放します。

4.受信メッセージを破棄します。

5.CERREVT（受信バッファ取得失敗）を起動します。

6.コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

「10.2.7 KFCA14877-Iメッセージが出力された場合」を参照してください。

入力セグメント判定UOCパラメタ不正

UOCパラメタ不正を通知するメッセージログ（KFCA14832-E）を出力します。

コネクションを解放します。

受信メッセージを破棄します。

CERREVT（UOC障害）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

入力セグメント判定UOC，または相手システムを見直してください。

入力セグメント判定UOCエラーリターン

UOCエラーを通知するメッセージログ（KFCA14808-E）を出力します。

コネクションを解放します。

受信メッセージを破棄します。

CERREVT（UOC障害）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

入力セグメント判定UOCを見直してください。

後続セグメント受信監視タイムアウト

後続メッセージ監視を通知するメッセージログ（KFCA14823-W）を出力します。

コネクションを解放します。

受信メッセージを破棄します。

CERREVT（後続メッセージ監視タイムアウト）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

システム構成および運用を見直してください。

問い合わせ応答中の論理端末に対するメッセージの受信

問い合わせ応答中の論理端末がメッセージを受信したことを通知するメッセージログ（KFCA14884-W）を出力します。

MDELEVTを起動します。

相手システム，または運用を見直してください。

注※

コネクション定義（mcftalccn -f）のreleaselogオペランドの指定によって，KFCA14801-IまたはKFCA14875-Iのどちらかを出力します。

(3)　送信スケジュール関係障害（出力キュー，出力メッセージ編集UOC）

表9-3　送信スケジュール関係の障害と対応処理

障害の内容
TP1/NET/TCP/IPの処理
ユーザの処理

出力キュー読み出し障害
（一方送信メッセージの場合）

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（出力キュー読み出し障害）を起動します。

「10.1.1　取得情報」で示す保守情報を退避してください。

（応答メッセージの場合）

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（出力キュー読み出し障害）を起動します。

（同期型メッセージの場合）

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（出力キュー読み出し障害）を起動します。

出力メッセージ編集UOCエラーリターン
（一方送信メッセージの場合）

UOCエラーリターンを通知するメッセージログ（KFCA10611-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

運用，または出力メッセージ編集UOCを見直してください。

（応答メッセージの場合）

UOCエラーリターンを通知するメッセージログ（KFCA10611-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

（同期型メッセージの場合）

UOCエラーリターンを通知するメッセージログ（KFCA10611-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

出力メッセージ編集UOCパラメタ不正
（一方送信メッセージの場合）

UOCパラメタ不正を通知するメッセージログ（KFCA10620-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

出力メッセージ編集UOCを見直してください。

（応答メッセージの場合）

UOCパラメタ不正を通知するメッセージログ（KFCA10620-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

（同期型メッセージの場合）

UOCパラメタ不正を通知するメッセージログ（KFCA10620-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（UOC障害）を起動します。

メッセージ消し込み障害

メッセージ送信完了障害を通知するメッセージログ（KFCA10617-E）を出力します。

処理を続行します。

「10.1.1　取得情報」で示す保守情報（$DCDIR/spool下）を退避してください。

送信バッファオーバフロー
（一方送信メッセージの場合）

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（送信バッファオーバフロー）を起動します。

システム定義，またはUAPを見直してください。

（応答メッセージの場合）

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（送信バッファオーバフロー）を起動します。

（同期型メッセージの場合）

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（送信バッファオーバフロー）を起動します。

送信バッファ数不足
（一方送信メッセージの場合）

バッファ取得失敗を通知するメッセージログ（KFCA10618-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（送信バッファ取得失敗）を起動します。

システム定義を見直してください。

（応答メッセージの場合）

バッファ取得失敗を通知するメッセージログ（KFCA10618-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

送信メッセージ破棄を通知するメッセージログ（KFCA10607-W）を出力します。

問い合わせ応答中または継続問い合わせ応答中の場合，問い合わせ応答または継続問い合わせ応答を終了します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（送信バッファ取得失敗）を起動します。

（同期型メッセージの場合）

バッファ取得失敗を通知するメッセージログ（KFCA10618-E）を出力します。

出力キュー障害を通知するメッセージログ（KFCA10605-E）を出力します。

送信メッセージを破棄します。

UAPにエラーリターンします。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（送信バッファ取得失敗）を起動します。

(4)　メッセージ送達確認関係障害

DCCMとのメッセージ送達確認を行う場合，および任意の相手システムとのメッセージ送達確認を行う場合に発生する可能性がある障害に対するTP1/NET/TCP/IPの処理を，以降の表に示します。

表9-4　メッセージ送達確認関係の障害と対応処理（mcftalccn -u delichk=dccm2s，dccm2m，dccm3s，dccm3mの場合）

障害の内容
TP1/NET/TCP/IPの処理
ユーザの処理

応答専用データ用送信バッファ数不足

バッファ取得失敗を通知するメッセージログ（KFCA10618-E）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（応答専用データ用送信バッファ取得失敗）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

定義を見直してください。

不正データ受信（11バイト未満のメッセージ受信，セグメント情報不正）

不正データ受信を通知するメッセージログ（KFCA14848-E）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（不正データ受信）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

相手システムを見直してください。

メッセージID不一致

受信メッセージ破棄を通知するメッセージログ（KFCA14806-W）を出力します。

処理を続行します。

相手システムを見直してください。

応答を待ち合わせていないときに，応答専用データを受信

受信メッセージ破棄を通知するメッセージログ（KFCA14806-W）を出力します。

処理を続行します。

相手システムを見直してください。

送受信メッセージ衝突
（dccm2s，dccm3sの場合）

メッセージの送信中断を通知するメッセージログ（KFCA10608-W）を出力します。

処理を続行します。

相手システムまたは運用を見直してください。

（dccm2mの場合）

受信メッセージ破棄を通知するメッセージログ（KFCA14806-W）を出力します。

送信メッセージを出力キューに戻します。

メッセージの送信中断を通知するメッセージログ（KFCA10608-W）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（送受信メッセージ衝突）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

（dccm3mの場合）

受信メッセージ破棄を通知するメッセージログ（KFCA14806-W）を出力します。

処理を続行します。

応答専用データを待ち合わせたまま，送信完了監視タイムアウト

メッセージ送信失敗を通知するメッセージログ（KFCA14815-E）を出力します。

送信メッセージを出力キューに戻します。

メッセージの送信中断を通知するメッセージログ（KFCA10608-W）を出力します。

コネクションを解放します。

CERREVT（応答専用データ受信監視タイムアウト）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

定義または相手システムを見直してください。

応答専用データ送信処理中の送信完了監視タイムアウト

メッセージ送信失敗を通知するメッセージログ（KFCA14815-E）を出力します。

コネクションを解放します。

CERREVT（応答専用データ送信完了監視タイムアウト）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

定義または相手システムを見直してください。

応答専用データ送信処理中の一方送信メッセージ受信

メッセージ受信失敗を通知するメッセージログ（KFCA14816-E）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（応答専用データ送信処理中一方送信メッセージの受信）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

相手システムを見直してください。

受信メッセージ通知失敗
表9-6を参照してください。
定義または運用を見直してください。

注※

コネクション定義（mcftalccn -f）のreleaselogオペランドの指定によって，KFCA14801-IまたはKFCA14875-Iのどちらかを出力します。

表9-5　メッセージ送達確認関係の障害と対応処理（mcftalccn -u delichk=useの場合）

障害の内容
TP1/NET/TCP/IPの処理
ユーザの処理

受信メッセージ判定UOC未登録

UOC未登録を通知するメッセージログ（KFCA14844-E）を出力します。

OpenTP1が異常終了します。

受信メッセージ判定UOCを作成し，登録してください。

送達確認メッセージ用送信バッファ数不足

バッファ取得失敗を通知するメッセージログ（KFCA10618-E）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（送達確認メッセージ用送信バッファ取得失敗）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

定義を見直してください。

送達確認メッセージを待ち合わせていないときに，受信メッセージ判定UOCにてメッセージ種別に送達確認メッセージを指定

受信メッセージ破棄を通知するメッセージログ（KFCA14806-W）を出力します。

処理を続行します。

相手システムを見直してください。

送達確認メッセージを待ち合わせたまま，送信完了監視タイムアウト

メッセージ送信失敗を通知するメッセージログ（KFCA14815-E）を出力します。

送信メッセージを出力キューに戻します。

メッセージの送信中断を通知するメッセージログ（KFCA10608-W）を出力します。

コネクションを解放します。

CERREVT（送達確認メッセージ受信監視タイムアウト）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

定義または相手システムを見直してください。

送達確認メッセージ送信処理中の送達確認メッセージ送信完了監視タイムアウト

メッセージ送信失敗を通知するメッセージログ（KFCA14815-E）を出力します。

コネクションを解放します。

CERREVT（送達確認メッセージ送信完了監視タイムアウト）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

定義または相手システムを見直してください。

送達確認メッセージ送信処理中の一方送信メッセージ受信

メッセージ受信失敗を通知するメッセージログ（KFCA14816-E）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（送達確認メッセージ送信処理中一方送信メッセージの受信）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

相手システムを見直してください。

受信メッセージ判定UOCでメッセージ種別に破棄メッセージを指定

受信メッセージ判定UOCによる受信メッセージ破棄を通知するメッセージログ（KFCA14849-I）を出力します。

MDELEVTを起動します。

処理を続行します。

なし。

受信メッセージ判定UOCでメッセージ種別にコネクション解放を指定

受信メッセージ判定UOCによるコネクション解放を通知するメッセージログ（KFCA14850-I）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（受信メッセージ判定UOCでのコネクション解放指示）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

相手システムを見直してください。

受信メッセージ判定UOCで送信処理の継続可否に送信停止を指定

受信メッセージ判定UOCによる論理端末閉塞を通知するメッセージログ（KFCA14851-I）を出力します。

送信メッセージを出力キューに戻します。

メッセージの送信中断を通知するメッセージログ（KFCA10608-W）を出力します。

論理端末を閉塞します。

論理端末閉塞を通知するメッセージログ（KFCA14809-I）を出力します。

CERREVT（受信メッセージ判定UOCでの送信停止指示）を起動します。

なし。

受信メッセージ判定UOCエラーリターン

UOCエラーリターンを通知するメッセージログ（KFCA14808-E）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（UOC障害）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

受信メッセージ判定UOCを見直してください。

受信メッセージ判定UOCパラメタ不正

UOCパラメタ不正を通知するメッセージログ（KFCA14852-E）を出力します。

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（受信メッセージ判定UOCでのパラメタ不正）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

受信メッセージ判定UOCを見直してください。

受信メッセージ通知失敗
表9-6を参照してください。
定義または運用を見直してください。

注※

コネクション定義（mcftalccn -f）のreleaselogオペランドの指定によって，KFCA14801-IまたはKFCA14875-Iのどちらかを出力します。

表9-6　受信メッセージ通知失敗に対するTP1/NET/TCP/IPの処理

障害の内容
ERREVT1
ERREVT2
TP1/NET/TCP/IPの処理

アプリケーション名未定義
○
－

送達確認メッセージを送信します。

処理を続行します。

×
－

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（受信メッセージ通知失敗）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

未定義
－

スケジュール失敗
－
○

送達確認メッセージを送信します。

処理を続行します。

－
×

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（受信メッセージ通知失敗）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

－
未定義

入力メッセージ編集UOCエラーリターン
－
－

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（UOC障害）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

入力メッセージ編集UOCパラメタ不正
－
－

受信メッセージを破棄します。

コネクションを解放します。

CERREVT（UOC障害）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

（凡例）

○：通知成功

×：通知失敗

－：通知なし

注※

コネクション定義（mcftalccn -f）のreleaselogオペランドの指定によって，KFCA14801-IまたはKFCA14875-Iのどちらかを出力します。

(5)　UAPの障害

表9-7　UAPの障害と対応処理

障害の内容 | TP1/NET/TCP/IPの処理 | ユーザの処理
メッセージ受信前のUAP異常終了 | ERREVT2を起動します。 | UAPを見直してください。
メッセージ受信後のUAP異常終了 | ERREVT3を起動します。

(6)　TP1/NET/TCP/IPの障害

表9-8　TP1/NET/TCP/IPの障害と対応処理

障害の内容
TP1/NET/TCP/IPの処理
ユーザの処理

内部論理矛盾，または他プログラムプロダクトとのインタフェースエラー

論理エラーを通知するメッセージログ（KFCA14811-E）を出力します。

コネクションを解放します。

CERREVT（内部論理矛盾）を起動します。

コネクション解放を通知するメッセージログ（KFCA14801-IまたはKFCA14875-I※）を出力します。

「10.1.1　取得情報」で示す保守情報（$DCDIR/spool下）を退避してください。

注※

コネクション定義（mcftalccn -f）のreleaselogオペランドの指定によって，KFCA14801-IまたはKFCA14875-Iのどちらかを出力します。

9.2　コネクション障害時の処理

コネクションが切断された場合，クライアント型コネクションであれば障害の原因を取り除いたあと，運用コマンド（mcftactcn）の入力，またはAPI（dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△')）の発行によってコネクションを再確立します。サーバ型コネクションであれば，自動的に相手システムからのコネクション確立を待ちます。

＜この節の構成＞

(1)　メッセージ送信時のコネクション障害

(2)　メッセージ受信時のコネクション障害

(1)　メッセージ送信時のコネクション障害

メッセージはロールバックされ，コネクション再確立時に再送信されます。

一方メッセージ送信時のコネクション障害の例を次の図に示します。

図9-1　メッセージ送信時のコネクション障害時の処理

(2)　メッセージ受信時のコネクション障害

メッセージは欠落します。

メッセージ受信時のコネクション障害の例を次の図に示します。

図9-2　メッセージ受信時のコネクション障害時の処理

9.3　ユーザアプリケーションプログラム異常終了時の処理

UAPが異常終了した場合，TP1/NET/TCP/IPは入力キューにMCFイベントを登録し，MCFイベント処理用MHPを起動します。起動されたMCFイベント処理用MHPは，エラー情報と入力されたメッセージを受信します。

＜この節の構成＞

(1)　メッセージ受信前のUAP異常終了

(2)　メッセージ受信後のUAP異常終了

(1)　メッセージ受信前のUAP異常終了

TP1/NET/TCP/IPは入力キューにMCFイベントERREVT2を登録し，MCFイベント処理用MHPを起動します。起動されたMCFイベント処理用MHPは，エラー情報と入力されたメッセージを受信します。

メッセージ受信前のUAP異常終了の例を次の図に示します。

図9-3　メッセージ受信前のUAP異常終了時の処理

(2)　メッセージ受信後のUAP異常終了

TP1/NET/TCP/IPは入力キューにMCFイベントERREVT3を登録し，MCFイベント処理用MHPを起動します。起動されたMCFイベント処理用MHPは，エラー情報と入力されたメッセージを受信します。

メッセージ受信後のUAP異常終了の例を次の図に示します。

図9-4　メッセージ受信後のUAP異常終了時の処理

9.4　ユーザアプリケーションプログラム閉塞時の処理

UAPが閉塞していて使用できない場合，TP1/NET/TCP/IPは入力キューにMCFイベントERREVT2を登録し，MCFイベント処理用MHPを起動します。起動されたMCFイベント処理用MHPは，エラー情報と入力されたメッセージを受信します。

UAP閉塞による障害の例を次の図に示します。

図9-5　UAP閉塞による障害時の処理

9.5　入力キュー障害時の処理

メッセージを入力キューに書き込むときに障害が発生した場合，TP1/NET/TCP/IPは入力キューにMCFイベントERREVT2を登録し，MCFイベント処理用MHPを起動します。起動されたMCFイベント処理用MHPは，エラー情報と入力されたメッセージを受信します。

入力キュー障害の例を次の図に示します。

図9-6　入力キュー障害時の処理

9.6　出力キュー障害時の処理

メッセージを出力キューから読み込むときに障害が発生した場合，メッセージは欠落します。

出力キュー障害の例を次の図に示します。

図9-7　出力キュー障害時の処理

10.　トラブル発生時の調査手順

障害が発生したときに取得する情報および調査手順について説明します。

「10.1　取得情報と確認事項」では障害発生時に取得する情報や確認する事項のうち，あらゆる障害に共通する内容について説明します。

「10.2　調査手順」では具体的な障害事例を基に，障害発生時の調査手順について説明します。

＜この章の構成＞

10.1　取得情報と確認事項

10.2　調査手順

10.1　取得情報と確認事項

ここでは障害発生時に取得する情報や確認する事項のうち，あらゆる障害に共通する内容について説明します。

＜この節の構成＞

10.1.1　取得情報

10.1.2　障害が発生したときの確認事項

10.1.1　取得情報

障害要因を調査する場合に必要な情報を示します。

ここでは調査に必要な基本的な情報を記載しています。「10.2　調査手順」で説明する個々の障害事例に記載していない障害については，ここで説明する情報を基に障害の要因を調査してください。

障害要因の調査に必要な情報を次の表に示します。なお，通信先相手システムもOpenTP1システムである場合，現象発生ノードだけでなく，通信先相手システムのノードについても次の表の資料を取得してください。

表10-1　障害要因の調査に必要な情報

取得する情報
備考

現象発生ノードのbetran.log（OpenTP1の標準出力および標準エラー出力先ファイル）
UNIX版の場合，$DCDIR/bin/prcoutに指定したファイルに出力されます。指定していない場合は，次のファイルに出力されます。

$DCDIR/spool/prclog1

$DCDIR/spool/prclog2

Windows版の場合，イベントログ（アプリケーションログおよびシステムログ）を取得してください。また，標準出力リダイレクト機能を使用しているときは，システム環境定義のredirect_file_nameオペランドに指定したファイルも取得してください。指定していない場合は，次のファイルに出力されます。

%DCDIR%¥spool¥prclog1

%DCDIR%¥spool¥prclog2

現象発生ノードのsyslogファイル
Windows版の場合，取得する必要はありません。

現象発生ノードの$DCDIR/spool配下のファイル
spool配下のすべてのファイルを取得するのが困難な場合は，spool配下をすべて退避したあと，次に示すファイルを取得してください。

$DCDIR/spool/cmdlog/cmdlog*

$DCDIR/spool/mcftXXXnn（MCFトレース※）
XXX：MCF識別子
nn：通し番号

なお，MCFトレースファイルの見積もり式については，「6.　システム定義」の「MCFトレースファイルの見積もり式」を参照してください。

現象発生ノードの$DCDIR/tmp配下のファイル
システム共通定義のprc_current_work_pathオペランドを指定している場合は，その配下もすべて取得してください。

現象発生ノードの$DCDIR/conf配下および$DCCONFPATH配下のファイル
$DCUAPCONFPATHを設定している場合は，$DCUAPCONFPATH配下のファイルも取得してください。定義ファイルを取得するときに，ユーザサービス定義も取得してください。

次に示す定義

MCFマネジャ定義

MCF通信構成定義（共通定義およびプロトコル固有定義）

MCFアプリケーション定義

定義の格納先，およびファイル名は任意に指定されたものになります。また，オンラインで使用するオブジェクトファイルではなく，オブジェクト生成前の定義ファイルを取得してください。

システムサービス共通情報定義（$DCDIR/lib/sysconf/mcf）
－

システムサービス情報定義（$DCDIR/lib/sysconf/配下の先頭4文字が「mcfu」で始まるファイル名）
－

現象発生ノードの$DCDIRのディレクトリ情報
UNIX版の場合，次に示すコマンドを実行し，情報を取得してください。

ls -laR $DCDIR

（凡例）

－：該当しません。

注※

MCFトレースの取得については，次の注意が必要です。

現象発生後，速やかにMCFトレースを退避してください。現象発生から長時間経過した場合，MCFトレースファイルがラップアラウンドし，該当時間帯のトレース情報が失われるおそれがあります。

オンライン中にMCFトレースを取得する場合，mcftswptrコマンドを実行し，MCFトレースをスワップしてください。なお，コマンドを実行する前にディスクに残っているMCFトレースはあらかじめ退避してください。

トレース環境定義でディスク出力機能を使用していない（mcfttrc -t disk=no）場合，MCFトレースを取得できないため，障害要因の調査ができないおそれがあります。ディスク出力機能を使用しないでMCFトレースを取得したい場合は，mcftstrtrコマンドを実行してください。

注意事項

障害要因の調査に必要な情報には，パイプファイルなどの特殊ファイルが含まれています。このような特殊ファイルをファイル転送コマンドで直接取得した場合，正常に処理されないことがあります。tarコマンドで一つのファイルに結合してから資料を採取してください。また，ファイル転送をするときは，転送モードに注意が必要です。

10.1.2　障害が発生したときの確認事項

障害が発生したときの確認事項を説明します。

OpenTP1製品のバージョン
正確なバージョンを確認してください。

修正版の場合

バージョン表記に追加されたコードも確認してください。

例：07-00-01，06-03-/Aなど

UNIX版の場合

日立PPインストーラのコマンド（hitachi_setup）で，製品のバージョンを確認できます。日立PPインストーラの使用方法は，ご使用の製品のリリースノートを参照してください。

Windows版の場合

ご使用の製品のreadmeファイルで，製品のバージョンを確認できます。%DCDIR%¥readmeフォルダに格納されている，readmeファイルを参照してください。

現象発生日時

ノード間の時刻差
複数ノードが関連する場合だけ確認してください。

現象発生時のマシンの負荷状態
CPUが高負荷であるなど，わかる範囲で確認してください。

現象発生時の相手システムおよびネットワーク機器の状態
機器の起動状態やエラーの有無など，わかる範囲で確認してください。

現象が発生した環境
本番環境かどうかを確認してください。本番環境の場合，業務への影響度を確認してください。

現象発生直前のOpenTP1環境および運用に対する変更点
ネットワーク構成，OSのパラメタ，OpenTP1システムの環境および運用などを確認してください。

10.2　調査手順

具体的な障害事例を基に，障害発生時の調査手順について説明します。

＜この節の構成＞

10.2.1　KFCA14802-Eメッセージが出力された場合

10.2.2　KFCA14803-Eメッセージが出力された場合

10.2.3　KFCA14815-Eメッセージが出力された場合

10.2.4　KFCA14816-Eメッセージが出力された場合

10.2.5　KFCA14830-EまたはKFCA14841-Eメッセージが出力された場合

10.2.6　KFCA14834-EまたはKFCA14835-Eメッセージが出力された場合

10.2.7　KFCA14877-Iメッセージが出力された場合

10.2.1　KFCA14802-Eメッセージが出力された場合

KFCA14802-Eメッセージが出力された場合の調査手順，および対処について説明します。

＜この項の構成＞

(1)　現象

(2)　現象発生時の確認事項

(3)　取得情報

(4)　原因の調査と対処

(1)　現象

次のメッセージが出力されて，コネクションが解放されました。

KFCA14802-E mmm コネクション障害が発生しました。
コネクション名＝aa....aa 関数＝bb....bb 詳細エラーコード＝cc....cc

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：TCP/IPソケットの関数名

cc....cc：詳細エラーコード

(2)　現象発生時の確認事項

現象発生日時

現象発生時の相手システムおよびネットワーク機器の状態

現象発生直前の接続先相手システムに対する変更点

(3)　取得情報

障害要因の調査に必要な情報
「10.1.1　取得情報」を参照してください。

自システムと相手システム間のパケットトレース

(4)　原因の調査と対処

この障害の主な原因を次に示します。

相手システムのネットワーク機器，または自システムと相手システム間のネットワーク機器からのコネクション強制解放

自システムのネットワーク障害の検出

次に示すフローに従って原因の調査と対処をしてください。

図10-1　KFCA14802-Eが出力された場合の調査手順（ステップ1）

対処
内容

対処1
KFCA14802-EのTCP/IPソケットの関数名と詳細エラーコードから，ご使用のOSのマニュアルで詳細エラーコードの意味を確認し，想定される要因に該当するかどうかを調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

図10-2　KFCA14802-Eが出力された場合の調査手順（ステップ1-1）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

対処
内容

対処2
メッセージ送信中にコネクションを強制解放されたことが原因です。
相手システム，または自システムと相手システム間のネットワーク機器を調査してください。

対処3
自システムの資源不足が原因です。
自システムの負荷状況を調査してください。

対処4
ご使用のOSのマニュアルでsend関数に対応する詳細エラーコードの意味を確認し，想定される要因に該当するかどうかを調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

図10-3　KFCA14802-Eが出力された場合の調査手順（ステップ1-2）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

対処
内容

対処5
コネクションが強制解放されたことが原因です。※1
相手システム，または自システムと相手システム間のネットワーク機器を調査してください。

対処6
自システムがネットワーク障害を検出したことが原因です。※2
相手システム，または自システムと相手システム間のネットワーク機器を調査してください。

対処7
自システムの資源不足が原因です。
自システムの負荷状況を調査してください。

対処8
ご使用のOSのマニュアルで，recv関数に対応する詳細エラーコードの意味を確認し，想定される要因に該当するかどうか調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

注※1

自システムからのメッセージ送信と相手システムからのコネクション解放のすれ違いによって発生することもあります。

注※2

TCP/IP上のパケット再送リトライアウトやキープアライブなどが該当します。

10.2.2　KFCA14803-Eメッセージが出力された場合

KFCA14803-Eメッセージが出力された場合の調査手順，および対処について説明します。

＜この項の構成＞

(1)　現象

(2)　現象発生時の確認事項

(3)　取得情報

(4)　原因の調査と対処

(1)　現象

次のメッセージが出力されて，相手システムとコネクションが確立できませんでした。

KFCA14803-E mmm コネクション確立時に障害が発生しました。
コネクション名＝aa....aa 関数＝bb....bb 詳細エラーコード＝cc....cc

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：TCP/IPソケットの関数名

cc....cc：詳細エラーコード

(2)　現象発生時の確認事項

現象発生日時

相手システムとの接続実績

現象発生時の相手システムおよびネットワーク機器の状態

現象発生直前のOpenTP1環境に対する変更点

現象発生直前の接続先相手システムに対する変更点

(3)　取得情報

障害要因の調査に必要な情報
「10.1.1　取得情報」を参照してください。

hostsファイル（DNSを使用している場合は不要）

自システムの状態
自システムでnetstat -aコマンドを実行し，取得した実行結果を残してください。

相手システムの状態
相手システムでnetstat -aコマンドを実行し，取得した実行結果を残してください。

自システムと相手システム間のパケットトレース

(4)　原因の調査と対処

この障害の主な原因を次に示します。

コネクション定義に指定した相手システムのIPアドレスまたはポート番号が不正

相手システム，または自システムと相手システム間のネットワーク機器の障害

次に示すフローに従って原因の調査と対処をしてください。

図10-4　KFCA14803-Eが出力された場合の調査手順（ステップ1）

注※

コネクション定義の確立モード（mcftalccn -y mode）の指定値を確認してください。指定値が「client」の場合はクライアント型，指定値が「server」の場合はサーバ型です。

コネクションの確立モードは，運用コマンド（mcftlsln -t）を実行して確認することもできます。出力内容が「C」の場合はクライアント型，出力内容が「S」の場合はサーバ型です。

図10-5　KFCA14803-Eが出力された場合の調査手順（ステップ2）

対処
内容

対処1
KFCA14803-EのTCP/IPソケットの関数名と詳細エラーコードから，ご使用のOSのマニュアルで詳細エラーコードの意味を確認し，想定される要因に該当するかどうかを調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

図10-6　KFCA14803-Eが出力された場合の調査手順（ステップ2-1）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

また，詳細エラーコードがENFILEの場合はシステム全体で使用できるファイル記述子の上限を，EMFILEの場合は1プロセスで使用できるファイル記述子の上限を見直してください。

対処
内容

対処2
MCF通信プロセスで使用できるファイル記述子の指定値が不足していることが原因です。システムサービス共通情報定義のmax_open_fdsオペランドの指定値，およびOSのカーネルパラメタ※の指定値を見直してください。

対処3
ご使用のOSのマニュアルでsocket関数に対応する詳細エラーコードの意味を確認し，想定される要因に該当するかどうかを調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

注※

カーネルパラメタの指定値を変更する場合は，余裕を持った値を指定してください。

図10-7　KFCA14803-Eが出力された場合の調査手順（ステップ2-2）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

対処
内容

対処4
割り当てられないIPアドレスを指定したことが原因です。
コネクション定義の自システムのIPアドレス（mcftalccn -r ipaddr），またはホスト名（mcftalccn -r hostname）の指定値を見直してください。
直前にKFCA14868-Iが出力されている場合は，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で設定した自システムのIPアドレスの設定値を見直してください。

対処5
他のプログラムが使用しているポート番号を指定したことが原因です。
コネクション定義の自システムのポート番号（mcftalccn -r portno）の指定値を見直してください。
直前にKFCA14868-Iが出力されている場合は，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で設定した自システムのポート番号の設定値を見直してください。※

対処6
ご使用のOSのマニュアルで，bind関数に対応する詳細エラーコードの意味を確認し，想定される要因に該当するかどうか調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

注※

他のアプリケーションとの重複を避けるため，OSが任意に割り当てるポート番号（動的ポートまたは短命ポートと呼ばれるポート番号）を使用しないでください。

OSが任意に割り当てるポート番号の範囲は，OSの種別やバージョンによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

図10-8　KFCA14803-Eが出力された場合の調査手順（ステップ2-3）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

対処
内容

対処7
次に示す要因のどれかで，確立要求を相手システムが拒否したことが原因です。

相手システムが使用していないポート番号にコネクション確立要求を行った。

相手システムの処理能力を超えるコネクション確立要求が集中した。

次に示す調査または見直しをしてください。

コネクション定義の相手システムのIPアドレス（mcftalccn -o oipaddr）またはホスト名（mcftalccn -o ohostname）およびポート番号（mcftalccn -o oportno）の指定値を見直してください。

直前にKFCA14868-Iが出力されている場合，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で設定した相手システムのIPアドレスおよびポート番号の設定値を見直してください。

相手システム内の接続先アプリケーションの起動状態，および障害が発生した時間帯の負荷状態を調査してください。

対処8
次に示す要因のどれかで，コネクション確立要求がタイムアウトしたことが原因です。

相手システムの電源が未投入などにより，指定したIPアドレスがネットワーク上に存在しない。

相手システムの処理能力を超えるコネクション確立要求が集中した。

OSやネットワーク機器のパケットフィルタリング機能でコネクション確立要求が破棄された。

次に示す調査または見直しをしてください。

コネクション定義の相手システムのIPアドレス（mcftalccn -o oipaddr）またはホスト名（mcftalccn -o ohostname）の指定値を見直してください。
直前にKFCA14868-Iが出力されている場合，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で設定した相手システムのIPアドレスの設定値を見直してください。

相手システムの起動状態，および該当時間帯の負荷状態を調査してください。

自システムと相手システム間のネットワークの状態を調査してください。

相手システムおよびネットワーク機器のパケットフィルタリング機能の設定を見直してください。

詳細エラーコードが-16778の場合，コネクション定義のコネクション確立時監視時間（mcftalccn -b concmptim）の指定値が適切であるか見直してください。※1

対処9
TIME_WAIT状態※2のコネクションに確立要求を行ったことが原因です。
コネクション定義のコネクション確立障害時の確立再試行回数（mcftalccn -b bretrycnt）および確立再試行間隔（mcftalccn -b bretryint）の指定値を見直してください。

対処10
到達できないネットワークのIPアドレスを指定したことが原因です。
次に示す調査または見直しをしてください。

コネクション定義の相手システムのIPアドレス（mcftalccn -o oipaddr）またはホスト名（mcftalccn -o ohostname）の指定値を見直してください。

直前にKFCA14868-Iが出力されている場合，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で設定した相手システムのIPアドレスの設定値を見直してください。

自システムと相手システム間のネットワーク機器を調査してください。

対処11
ご使用のOSのマニュアルで，connect関数に対応する詳細エラーコードの意味を確認し，想定される要因に該当するかどうか調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

注※1

OpenTP1システムの時間の精度は1秒です。

注※2

自システムからコネクションを解放すると，OSのコネクションの状態がTIME_WAIT状態となります。TIME_WAIT状態の所要時間はOSによって異なります。

自システムからコネクションを解放した直後に再度コネクションを確立する必要がある場合は，コネクション定義の自システムのポート番号（mcftalccn -r portno）は指定しないで，OSが自動的に割り当てたポート番号を使用してください。

図10-9　KFCA14803-Eが出力された場合の調査手順（ステップ3）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

また，詳細エラーコードがENFILEの場合はシステム全体で使用できるファイル記述子の上限を，EMFILEの場合は1プロセスで使用できるファイル記述子の上限を見直してください。

対処
内容

対処12
MCF通信プロセスで使用できるファイル記述子の指定値が不足していることが原因です。
システムサービス共通情報定義のmax_open_fdsオペランドの指定値およびOSのカーネルパラメタ※1の指定値を見直してください。

対処13
TP1/NET/TCP/IPがコネクション確立要求を受け付けた直後，相手システムからコネクションを強制解放されたことが原因です。
相手システムのネットワーク機器，および自システムと相手システム間のネットワーク機器を調査してください。
また，ポートスキャンが行われていたかどうかを調査してください。

対処14
KFCA14803-EのTCP/IPソケットの関数名，および詳細エラーコードから，ご使用のOSのマニュアルで詳細エラーコードの意味を確認し，想定される要因に該当するかどうか調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

対処15
相手システムのIPアドレスおよびポート番号がコネクション定義に定義されていないことが原因です。相手システムのIPアドレスとポート番号については，KFCA14803-Eの直後に出力されたKFCA14854-Iで確認してください。
次に示す調査または見直しをしてください。

コネクション定義の相手システムのIPアドレス（mcftalccn -o oipaddr），ホスト名（mcftalccn -o ohostname）※2およびポート番号（mcftalccn -o oportno）※3の指定値を見直してください。

コネクション定義の自システムのポート番号（mcftalccn -r portno）の指定値と同じポート番号を使用するアプリケーション（自システム内の他のTP1/NET/TCP/IPの通信プロセスを含みます）が自システム内に存在していないか調査してください。※4

対処16
コネクション確立要求の受け付けを開始していないことが原因です。
mcftonlnコマンドを実行して確立要求の受け付けを開始してください。

注※1

カーネルパラメタの指定値を変更する場合は，余裕を持った値を指定してください。

注※2

相手システムをホスト名で指定している場合，自システムのhostsファイルまたはDNSの指定内容を確認してください。ただし，OpenTP1のオンライン中に相手システムのIPアドレスが変更された場合，OpenTP1を再立ち上げするまで反映されないので注意が必要です。

注※3

相手システムのポート番号が不定の場合，相手システムのポート番号（mcftalccn -o oportno）にはfreeを指定してください。

注※4

自システムのポート番号が他のアプリケーション（自システム内の他のTP1/NET/TCP/IPの通信プロセスを含みます）と重複していると，他のアプリケーションに対するコネクション確立要求を受け付けるおそれがあります。

自システム内にTP1/NET/TCP/IPのMCF通信プロセスが複数存在する場合は，KFCA14834-Eが出力されていないか確認してください。

10.2.3　KFCA14815-Eメッセージが出力された場合

KFCA14815-Eメッセージが出力された場合の調査手順，および対処について説明します。

＜この項の構成＞

(1)　現象

(2)　現象発生時の確認事項

(3)　取得情報

(4)　原因の調査と対処

(1)　現象

次のメッセージが出力されて，メッセージの送信に失敗しました。

KFCA14815-E mmm メッセージの送信に失敗しました。
コネクション名＝aa....aa 論理端末名称＝bb....bb 障害コード＝cc....cc

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：論理端末名称

cc....cc：障害コード（詳細エラーコード）

(2)　現象発生時の確認事項

現象発生日時

現象発生時の相手システムの状態

現象発生直前の接続先相手システムに対する変更点

(3)　取得情報

障害要因の調査に必要な情報
「10.1.1　取得情報」を参照してください。

自システムと相手システム間のパケットトレース

(4)　原因の調査と対処

KFCA14815-Eは，メッセージ送信完了監視時間（mcftalccn -b sndcmptim）がタイムアウトした場合に出力されます。この障害は主に相手システムのスローダウンなどによって，自システムが送信したメッセージを相手システムが受信できていないことが原因で発生します。

次に示すフローに従って原因の調査と対処をしてください。

図10-10　KFCA14815-Eが出力された場合の調査手順（ステップ1）

対処
内容

対処1
メッセージ送信完了監視時間がタイムアウトしたことが原因です。
次に示す調査または見直しをしてください。

コネクション定義のメッセージ送信完了監視時間（mcftalccn -b sndcmptim）の指定値が適切であるか見直してください。※

相手システムの動作を調査してください。

相手システムのアプリケーションがTP1/NET/TCP/IPのMCF通信プロセスの場合，バッファグループ定義の受信バッファ面数（mcftbuf -g count）の指定値が適切かどうか見直してください。

対処2
情報を取得してサポートセンタへ問い合わせてください。

注※

OpenTP1システムの時間の精度は1秒です。

10.2.4　KFCA14816-Eメッセージが出力された場合

KFCA14816-Eメッセージが出力された場合の調査手順，および対処について説明します。

＜この項の構成＞

(1)　現象

(2)　現象発生時の確認事項

(3)　取得情報

(4)　原因の調査と対処

(1)　現象

次のメッセージが出力されて，コネクションが解放されました。

KFCA14816-E mmm メッセージの受信に失敗しました。
コネクション名＝aa....aa 論理端末名称＝bb....bb 詳細エラーコード＝cc....cc

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：論理端末名称

cc....cc：詳細エラーコード

(2)　現象発生時の確認事項

現象発生日時

相手システムとの接続実績

現象発生時の相手システムおよびネットワーク機器の状態

現象発生直前の接続先相手システムに対する変更点

(3)　取得情報

障害要因の調査に必要な情報
「10.1.1　取得情報」を参照してください。

自システムと相手システム間のパケットトレース

(4)　原因の調査と対処

この障害の主な原因を次に示します。

受信バッファのバッファ長不足（mcftbuf -g length）

相手システムから受信したメッセージの形式が不正

MCF通信プロセスに組み込んだ入力セグメント判定UOCの設定誤り

相手システムから受信したメッセージの内容は，パケットトレースで確認してください。パケットトレースを取得していない場合，MCFトレースを取得してサポートセンタへ問い合わせてください。

次に示すフローに従って原因の調査と対処をしてください。

図10-11　KFCA14816-Eが出力された場合の調査手順（ステップ1）

対処
内容

対処1
受信メッセージの組み立て機能を使用（mcftalccn -u masm=yes）している場合に，メッセージ長（メッセージの先頭4バイト）が4バイト以下※に設定されたメッセージを相手システムから受信したことが原因です。
相手システムの動作を調査してください。

対処2
メッセージ送達確認機能を使用（（mcftalccn -u delichk）にnouse以外の値を指定）している場合に，送達確認メッセージ（応答専用データ）の送信処理中に相手システムから一方送信メッセージを受信したことが原因です。
相手システムの動作を調査してください。

対処3
情報を取得してサポートセンタへ問い合わせてください。

注※

メッセージ長に負の値が設定されている場合も該当します。

メッセージ長はビックエンディアンで設定する必要があります。相手システムがリトルエンディアンのOS（WindowsやLinuxなど）の場合，メッセージ長をビックエンディアンに変換して設定しているか確認してください。

図10-12　KFCA14816-Eが出力された場合の調査手順（ステップ2）

注※

KFCA14865-Iは，TP1/NET/TCP/IP 07-02以降の場合に出力されます。

TP1/NET/TCP/IP 07-01以前の場合，受信メッセージの組み立て機能（mcftalccn -u masm）の使用の有無，およびMCF通信サービスのメイン関数を参照し，メッセージの組み立て方式を確認してください。

対処
内容

対処4
受信バッファのバッファ長不足が原因です。
バッファグループ定義のバッファ長（mcftbuf -g length）を見直してください。

対処5
メッセージ長（メッセージの先頭4バイト）に受信バッファ長を超える値※が設定されたメッセージを相手システムから受信したことが原因です。
相手システムの動作を調査してください。

対処6
TP1/NET/TCP/IPの受信済みメッセージと，入力セグメント判定UOCで設定した残っている該当メッセージのサイズ（dctcp_sguoc_protのrest_data_size）の和が，受信バッファ長を超えていることが原因です。
入力セグメント判定UOCおよび相手システムの動作を調査してください。

注※

メッセージ長はビックエンディアンで設定する必要があります。相手システムがリトルエンディアンのOS（WindowsやLinuxなど）の場合，メッセージ長をビックエンディアンに変換して設定しているか確認してください。

10.2.5　KFCA14830-EまたはKFCA14841-Eメッセージが出力された場合

KFCA14830-EまたはKFCA14841-Eメッセージが出力された場合の調査手順，および対処について説明します。

＜この項の構成＞

(1)　現象

(2)　現象発生時の確認事項

(3)　取得情報

(4)　原因の調査と対処

(1)　現象

次のどちらかのメッセージが出力されて，相手システムとコネクションが確立できませんでした。

KFCA14830-E mmm ポートフリー型コネクションからのコネクション確立要求が定義数を超えたため拒否します。
クライアントアドレス（aa....aa，bb....bb） 自ポート番号＝cc....cc

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：相手システムのホスト名

bb....bb：相手システムのIPアドレス

cc....cc：自システムのポート番号

注

コネクションが確立済みの場合に，同じポート番号に対して同じ相手システムから繰り返し確立要求を受け付けたとき，KFCA14830-Eは一度だけ出力します。

いったんコネクションを解放すると，再びKFCA14830-Eは出力されるようになります。

また，異なる自ポート番号に対して繰り返し確立要求を受け付けている場合，それぞれの自ポート番号ごとにKFCA14830-Eを一度だけ出力します。

KFCA14841-E mmm 未確立のコネクションが存在しないため，確立要求を拒否しました。
自ポート番号=aa....aa 相手アドレス=bb....bb 相手ポート番号=cc....cc

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：自システムのポート番号

bb....bb：相手システムのIPアドレス

cc....cc：相手システムのポート番号

(2)　現象発生時の確認事項

現象発生日時

現象発生時の相手システムおよびネットワーク機器の状態

現象発生直前のOpenTP1環境に対する変更点

現象発生直前の接続先相手システムに対する変更点

(3)　取得情報

障害要因の調査に必要な情報
「10.1.1　取得情報」を参照してください。

ネットワークの状態
mcftlsln -tコマンドを実行し，取得した実行結果を残してください。

コネクションの状態
mcftlscnコマンドを実行し，取得した実行結果を残してください。

仕掛り中のトランザクションの状態
間隔をあけて複数回trnls -taコマンドを実行し，取得した実行結果を残してください。

(4)　原因の調査と対処

この障害の主な原因を次に示します。

同時に接続するコネクション数がMCF通信構成定義に定義したコネクション数を超えている

自システムがコネクション障害を検出していない状態で，コネクション障害を検出した相手システムからコネクションの確立要求を再度受け付けた

継続問い合わせ応答を処理するトランザクションが長時間終了しない

次に示すフローに従って原因の調査と対処をしてください。

図10-13　KFCA14830-EまたはKFCA14841-Eが出力された場合の調査手順

対処
内容

対処1
自システムがコネクション障害を検出していない状態で，コネクション障害を検出した相手システムからコネクションの確立要求を再度受け付けたことが原因です。
OpenTP1システムと相手システムの状態不一致を解消するため，次の中から自システムに必要な対策をしてください。

UAPでコネクションの生存確認（定期的なメッセージ送受信など）をする

無通信状態監視を使用する（コネクション定義（mcftalccn -k）のnotrftimeオペランドに0以外の値を指定）

キープアライブを使用する（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定）

コネクションリプレースを使用する（コネクション定義（mcftalccn -h）のchgconnオペランドにreplaceを指定）

対処2
継続問い合わせ応答のUAP実行中のため，コネクションを割り当てられないことが原因です。
UAPの動作を調査してください。
仕掛り中のトランザクションが終了するまで待ち合わせないで，相手システムとコネクションを確立したい場合，mcftendct -fコマンドを実行してください。

対処3
MCF通信構成定義のコネクション定義数が不足していることが原因です。
MCF通信構成定義のコネクション定義数および同時に接続するコネクション数を見直してください。

10.2.6　KFCA14834-EまたはKFCA14835-Eメッセージが出力された場合

KFCA14834-EまたはKFCA14835-Eメッセージが出力された場合の調査手順，および対処について説明します。

＜この項の構成＞

(1)　現象

(2)　現象発生時の確認事項

(3)　取得情報

(4)　原因の調査と対処

(1)　現象

次のどちらかのメッセージが出力されて，サーバ型コネクションの確立準備に失敗しました。

KFCA14834-E mmm サーバ側コネクション確立準備に失敗しました。
コネクション名＝aa....aa 自ポート番号＝bb....bb
関数＝cc....cc 詳細エラーコード＝dd....dd

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：自システムのポート番号

cc....cc：TCP/IPソケットの関数名

dd....dd：詳細エラーコード

KFCA14835-E mmm サーバ側コネクション確立準備のリトライが失敗しました。
コネクション名＝aa....aa 自ポート番号＝bb....bb
関数＝cc....cc 詳細エラーコード＝dd....dd

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：自システムのポート番号

cc....cc：TCP/IPソケットの関数名

dd....dd：詳細エラーコード

(2)　現象発生時の確認事項

現象発生日時

現象発生時の自システムの状態

現象発生直前のOpenTP1環境に対する変更点

(3)　取得情報

障害要因の調査に必要な情報
「10.1.1　取得情報」を参照してください。

自システムの状態
自システムでnetstat -aコマンドを実行し，取得した実行結果を残してください。

(4)　原因の調査と対処

KFCA14834-EまたはKFCA14835-Eは，コネクションの確立準備に失敗した場合に出力されます。この障害は，主に自システム内の他のアプリケーション（自システム内のほかのTP1/NET/TCP/IPの通信プロセスを含みます）と自システムのポート番号が重複していることが原因で発生します。

次に示すフローに従って原因の調査と対処をしてください。

図10-14　KFCA14834-EまたはKFCA14835-Eが出力された場合の調査手順（ステップ1）

対処
内容

対処1
KFCA14834-EまたはKFCA14835-EのTCP/IPソケットの関数名と詳細エラーコードから，ご使用のOSのマニュアルで詳細エラーコードの意味を確認し，想定される要因に該当するかどうかを調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

図10-15　KFCA14834-EまたはKFCA14835-Eが出力された場合の調査手順（ステップ1-1）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

また，詳細エラーコードがENFILEの場合はシステム全体で使用できるファイル記述子の上限を，EMFILEの場合は1プロセスで使用できるファイル記述子の上限を見直してください。

対処
内容

対処2
MCF通信プロセスで使用できるファイル記述子の指定値が不足していることが原因です。システムサービス共通情報定義のmax_open_fdsオペランドの指定値，およびOSのカーネルパラメタ※の指定値を見直してください。

対処3
ご使用のOSのマニュアルでsocket関数に対応する詳細エラーコードの意味を確認し，想定される要因に該当するかどうかを調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

注※

カーネルパラメタの指定値を変更する場合は，余裕を持った値を指定してください。

図10-16　KFCA14834-EまたはKFCA14835-Eが出力された場合の調査手順（ステップ1-2）

注※

OSが返したerrnoです。実際にメッセージに出力される値は，使用するOSによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

対処
内容

対処4
コネクション定義の次に示すオプションおよびオペランドの指定値が，すべて一致するコネクションが複数存在することが原因です。

自システムのIPアドレス（mcftalccn -r ipaddr）またはホスト名（mcftalccn -r hostname）

自システムのポート番号（mcftalccn -r portno）

相手システムのIPアドレス（mcftalccn -o oipaddr）またはホスト名（mcftalccn -o ohostname）

相手システムのポート番号（mcftalccn -o oportno）に指定したfree以外の値

上記のコネクション定義の指定値を見直してください。

対処5
割り当てられないIPアドレスを指定したことが原因です。
コネクション定義の自システムのIPアドレス（mcftalccn -r ipaddr），またはホスト名（mcftalccn -r hostname）の指定値を見直してください。
直前にKFCA14868-Iが出力されている場合は，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で設定した自システムのIPアドレスの設定値を見直してください。

対処6
他のプログラムが使用しているポート番号を指定したことが原因です。
コネクション定義の自システムのポート番号（mcftalccn -r portno）の指定値を見直してください。
直前にKFCA14868-Iが出力されている場合は，dc_mcf_tactcn関数またはCBLDCMCF('TACTCN△△')で設定した自システムのポート番号の設定値を見直してください。※

対処7
ご使用のOSのマニュアルで，bind関数に対応する詳細エラーコードの意味を確認し，想定される要因に該当するかどうか調査してください。
解決しない場合は，情報を取得してサポートセンタへ問い合わせてください。

注※

他のアプリケーションとの重複を避けるため，OSが任意に割り当てるポート番号（動的ポートまたは短命ポートと呼ばれるポート番号）を使用しないでください。

OSが任意に割り当てるポート番号の範囲は，OSの種別やバージョンによって異なります。詳細については，ご使用のOSのマニュアルまたは技術情報を参照してください。

10.2.7　KFCA14877-Iメッセージが出力された場合

KFCA14877-Iメッセージが出力された場合の調査手順，および対処について説明します。

＜この項の構成＞

(1)　現象

(2)　現象発生時の確認事項

(3)　取得情報

(4)　原因の調査と対処

(1)　現象

次のメッセージが出力されて，通信性能が劣化しました。

KFCA14877-I mmm 受信バッファの空きがないため，メッセージの受信を待ち合わせます。
コネクション名＝aa....aa バッファグループ番号＝bb....bb

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：受信バッファのバッファグループ番号

または，KFCA14877-Iのメッセージが出力されたあと，さらに次のメッセージが出力されて，コネクションが解放されました。

KFCA14847-E mmm バッファ不足のためバッファ取得に失敗しました。
コネクション名＝aa....aa バッファ種別＝bb....bb 障害コード＝cc....cc

（凡例）

mmm：MCF通信プロセス識別子

aa....aa：コネクション名

bb....bb：バッファ種別

cc....cc：障害コード

(2)　現象発生時の確認事項

現象発生日時

現象発生直前のOpenTP1環境に対する変更点

現象発生直前の接続先相手システムに対する変更点

(3)　取得情報

障害要因の調査に必要な情報
「10.1.1　取得情報」を参照してください。

(4)　原因の調査と対処

KFCA14877-IおよびKFCA14847-Eは，通信で使用する受信バッファが確保できなかった場合に出力されます。受信バッファの上限値は，コネクション定義（mcftalccn -g）のrcvbufオペランドで指定されたバッファグループ番号に対応するバッファグループ定義（mcftbuf -g）のcountオペランドの指定値と，extendオペランドの指定値の和です。この障害は，主に，受信バッファの上限値の見積もり不正による受信バッファ不足が原因で発生します。

次に示すフローに従って対処をしてください。

図10-17　KFCA14877-Iが出力された場合の調査手順

対処
内容

対処1
「6.　システム定義」の「mcftalccn（コネクション定義の開始）」の見積もり計算式を参照して見積もってください。

対処2
一度に大量のメッセージを受信していることが原因です。
次の点を見直してください。

単位時間あたりの受信メッセージ件数が妥当か，相手システムを見直してください。

受信バッファ数の安全値を見直してください。安全値を設定していない場合は，1.2倍を目安に再見積もりをしてください。

受信バッファのバッファ長（バッファグループ定義（mcftbuf -g）のlengthオペランド）の指定値が適切であるかを見直してください。受信バッファのバッファ長が受信メッセージ長よりも非常に大きい場合，一時的に大量の受信バッファを必要とすることがあります。

付録

＜この付録の構成＞

付録A　バージョンアップ時の変更点

付録B　旧製品からの移行に関する注意事項

付録C　インタフェースの変更一覧（バージョン6以前から移行する場合）

付録D　メッセージ送受信の処理の流れ

付録E　障害発生時の処理の流れ

付録F　送受信メッセージの衝突時の処理の流れ（メッセージ送達確認機能使用時）

付録G　ソケット関数の処理の流れ

付録H　MCF性能検証用トレースの取得

付録I　ユーザアプリケーションプログラムの作成例

付録J　理由コード一覧

付録K　用語解説

付録A　バージョンアップ時の変更点

各バージョンでの変更点を次に示す分類ごとに示します。

関数，定義およびコマンドの追加・変更・削除

動作の変更

関数，定義およびコマンドのデフォルト値の変更

＜この節の構成＞

付録A.1　07-04での変更点

付録A.2　07-03での変更点

付録A.3　07-02での変更点

付録A.4　07-01での変更点

付録A.5　07-00での変更点

付録A.1　07-04での変更点

TP1/NET/TCP/IP 07-04での関数，定義およびコマンドの追加・変更・削除を次の表に示します。

表A-1　TP1/NET/TCP/IP 07-04での関数，定義およびコマンドの追加・変更・削除

種別
分類
内容

追加
関数
dc_mcf_contend

dc_mcf_reply

dc_mcf_tdctcn

actionの設定値にDCMCFFRCを追加

dc_mcf_tempget

dc_mcf_tempput

CBLDCMCF('CONTEND△')

CBLDCMCF('REPLY△△△')

CBLDCMCF('TDCTCN△△')

データ名D1の設定値に0，1を追加

CBLDCMCF('TEMPGET△')

CBLDCMCF('TEMPPUT△')

DISABLE － 継続問い合わせ応答の終了

RECEIVE － メッセージの受信

SYNCHRONOUS MODE句の設定値にASYNCを追加

SYNCHRONOUS MODE句のデータ名6の設定値に0，空白を追加

RECEIVE － 一時記憶データの受け取り

SEND － メッセージの送信

NEXT TRANSACTION句

WITH句

SEND － 一時記憶データの更新

定義
コネクション定義の開始（mcftalccn）

-fオプションのcnreleaseオペランド

-fオプションのreleaselogオペランド

-fオプションのcnerrlogオペランド

-lオプション

アプリケーション属性定義（mcfaalcap）

-nオプション

コマンド
mcftcpコマンド

-rオプション

mcftendctコマンド

変更
なし

削除
なし

TP1/NET/TCP/IP 07-04での動作の変更点を次に示します。

表A-2　TP1/NET/TCP/IP 07-04での動作の変更点

分類 | 内容
その他 | 受信バッファ数不足を検出した場合，メッセージKFCA14877-Iを出力するように変更

TP1/NET/TCP/IP 07-04での関数，定義およびコマンドのデフォルト値の変更はありません。

付録A.2　07-03での変更点

TP1/NET/TCP/IP 07-03での関数，定義およびコマンドの追加・変更・削除を次の表に示します。

表A-3　TP1/NET/TCP/IP 07-03での関数，定義およびコマンドの追加・変更・削除

種別
分類
内容

追加
関数
送受信メッセージ廃棄通知イベント（MDELEVT）

定義
論理端末定義（mcftalcle）

-dオプション

コマンド
なし

変更
なし

削除
なし

TP1/NET/TCP/IP 07-03での動作の変更点はありません。

TP1/NET/TCP/IP 07-03での関数，定義およびコマンドのデフォルト値の変更はありません。

付録A.3　07-02での変更点

TP1/NET/TCP/IP 07-02での関数，定義およびコマンドの追加・変更・削除を次の表に示します。

表A-4　TP1/NET/TCP/IP 07-02での関数，定義およびコマンドの追加・変更・削除

種別
分類
内容

追加
関数
dc_mcf_recvsync

dc_mcf_tactcn

dc_mcf_tactle

dc_mcf_tdctcn

dc_mcf_tdctle

dc_mcf_tlscn

dc_mcf_tlsle

dc_mcf_tlsln

dc_mcf_tofln

dc_mcf_tonln

CBLDCMCF('RECVSYNC')

CBLDCMCF('TACTCN△△')

CBLDCMCF('TACTLE△△')

CBLDCMCF('TDCTCN△△')

CBLDCMCF('TDCTLE△△')

CBLDCMCF('TLSCN△△△')

CBLDCMCF('TLSLE△△△')

CBLDCMCF('TLSLN△△△')

CBLDCMCF('TOFLN△△△')

CBLDCMCF('TONLN△△△')

入力セグメント判定UOC

dctcp_uoc_sgck構造体のrcv_buf_size

受信メッセージ保留判定UOC

受信メッセージ保留通知イベント（RHLDEVT）

定義
UAP共通定義（mcfmuap）

-tオプションのrecvtimオペランド

コネクション定義の開始（mcftalccn）

-uオプションのmsgholdオペランド

-uオプションのholdlimitオペランド

-wオプション

-Cオプション

コマンド
mcftlslnコマンド

-tオプション

変更
なし

削除
なし

TP1/NET/TCP/IP 07-02での動作の変更点を次に示します。

表A-5　TP1/NET/TCP/IP 07-02での動作の変更点

分類
内容

コマンド
mcftlscnコマンド

mcftalccn定義コマンドの-Cオプションのlscnfmtオペランドに2を指定した場合の，次のメッセージ数を追加
・ -dオプションの出力内容に現在保留している受信メッセージ数
・ OpenTP1システム開始以降に保留している受信メッセージの最大数

詳細ステータスの出力内容に，同期型受信のデータ受信待ち状態を追加

その他
受信バッファオーバフローを検出した場合，メッセージKFCA14865-Iを出力するように変更

TP1/NET/TCP/IP 07-02での関数，定義およびコマンドのデフォルト値の変更はありません。

付録A.4　07-01での変更点

TP1/NET/TCP/IP 07-01での関数，定義およびコマンドの追加・変更・削除を次の表に示します。

表A-6　TP1/NET/TCP/IP 07-01での関数，定義およびコマンドの追加・変更・削除

種別
分類
内容

追加
関数
なし

定義
コネクション定義の開始（mcftalccn）

-hオプションのlistenオペランド

-Nオプションのmodelnameオペランド

論理端末定義（mcftalcle）

-Nオプションのmodelnameオペランド

コマンド
mcftlslnコマンド

mcftoflnコマンド

mcftonlnコマンド

変更
なし

削除
なし

TP1/NET/TCP/IP 07-01での動作の変更点を次に示します。

表A-7　TP1/NET/TCP/IP 07-01での動作の変更点

分類 | 内容
その他 | サーバ型コネクションのアドレス割り当てに失敗した場合，MCF通信プロセスの起動を中断しないように変更。

TP1/NET/TCP/IP 07-01での関数，定義およびコマンドのデフォルト値の変更はありません。

付録A.5　07-00での変更点

TP1/NET/TCP/IP 07-00での関数，定義およびコマンドの追加・変更・削除を次の表に示します。

表A-8　TP1/NET/TCP/IP 07-00での関数，定義およびコマンドの追加・変更・削除

種別
分類
内容

追加
関数
送信完了イベント（SCMPEVT）

定義
なし

コマンド
なし

変更
関数
C言語の関数の64ビットアーキテクチャでのインタフェースを，32ビットアーキテクチャでのインタフェースと統一。
詳細については，「付録C　インタフェースの変更一覧（バージョン6以前から移行する場合）」を参照してください。

削除
なし

TP1/NET/TCP/IP 07-00での動作の変更点を次に示します。

表A-9　TP1/NET/TCP/IP 07-00での動作の変更点

分類 | 内容
その他 | コネクション確立要求を格納するキューの長さを，固定値から定義したコネクション数に応じて，TP1/NET/TCP/IPが自動的に調整するように変更。

TP1/NET/TCP/IP 07-00での関数，定義およびコマンドのデフォルト値の変更はありません。

付録B　旧製品からの移行に関する注意事項

ここでは，バージョン6からバージョン7へ移行する場合，およびバージョン5以前からバージョン7へ移行する場合の注意事項について説明します。

＜この節の構成＞

付録B.1　バージョン6からの移行

付録B.2　バージョン5以前からの移行

付録B.3　バージョン5以前でのソケット関数の処理の流れ

付録B.1　バージョン6からの移行

バージョン6からバージョン7へ移行する場合，次の点に注意してください。

＜この項の構成＞

(1)　ソースの互換性

(2)　コネクション確立要求を格納するキューの長さ

(1)　ソースの互換性

バージョン6からバージョン7へ移行する場合の各種ソースファイルの互換性について説明します。

バージョン6からバージョン7へ移行する場合，バージョン6で使用していたソースファイルをそのまま使用できないことがあります。ソースファイルの互換性は，次の表に示すとおりです。

表B-1　バージョン6で使用していたソースファイルの互換性

ソースファイルの種類
ソースファイルを作成した言語
互換性

UAP
C言語
32ビット
32ビットアーキテクチャのバージョン7を使用する場合は，ソースファイルを変更しないで使用できます。
それ以外の場合は，ソースファイルを変更する必要があります。※

64ビット
64ビットアーキテクチャのバージョン7を使用する場合は，ソースファイルを変更しないで使用できます。
それ以外の場合は，ソースファイルを変更する必要があります。※

COBOL言語
ソースファイルを変更しないで使用できます。

UOC
C言語
32ビット
32ビットアーキテクチャのバージョン7を使用する場合は，ソースファイルを変更しないで使用できます。
それ以外の場合は，ソースファイルを変更する必要があります。※

64ビット
64ビットアーキテクチャのバージョン7を使用する場合は，ソースファイルを変更しないで使用できます。
それ以外の場合は，ソースファイルを変更する必要があります。※

MCF通信構成定義（プロトコル固有の定義）
－
ソースファイルを変更しないで使用できます。

（凡例）

－：該当する内容がないことを表します。

注※

バージョン7では，メッセージ送受信インタフェース，UOC，およびMCFイベントインタフェースのそれぞれの引数ならびにパラメタの型が変更されています。そのため，バージョン6のUAPおよびUOCのソースファイルを見直す必要があります。

なお，この変更によるUAPやUOCの処理への影響はありません。

詳細については，「付録C　インタフェースの変更一覧（バージョン6以前から移行する場合）」を参照してください。

(2)　コネクション確立要求を格納するキューの長さ

バージョン6ではコネクション数に関係なく固定としていましたが，バージョン7では定義したコネクション数に応じてTP1/NET/TCP/IPが自動的に調整するように変更しました。

付録B.2　バージョン5以前からの移行

バージョン5以前からバージョン7へ移行する場合，次の点に注意してください。

＜この項の構成＞

(1)　ソースの互換性

(2)　サーバ型コネクションの自IPアドレス

(3)　メッセージ送信の再試行

(4)　MCFトレースで取得する送受信メッセージのサイズ

(5)　未確立コネクションの論理端末に対する運用コマンドの動作

(6)　クライアント型コネクションの確立処理

(7)　コネクション当たりの受信バッファ数

(8)　システムサービス共通情報定義のmax_open_fdsオペランド

(9)　Windows版でのシステムサービス共通情報定義のmax_socket_descriptorsオペランドとmax_open_fdsオペランド

(10)　コネクション確立要求を格納するキューの長さ

(11)　OpenTP1終了中の相手システムからのコネクション確立

(12)　受信バッファ数不足発生時のメッセージログ

(13)　追加機能

(1)　ソースの互換性

バージョン5以前からバージョン7へ移行する場合の各種ソースファイルの互換性について説明します。

バージョン5以前からバージョン7へ移行する場合，バージョン5以前で使用していたソースファイルをそのまま使用できないことがあります。ソースファイルの互換性は，次の表に示すとおりです。

表B-2　バージョン5以前で使用していたソースファイルの互換性

ソースファイルの種類
ソースファイルを作成した言語
互換性

UAP
C言語
32ビットアーキテクチャのバージョン7を使用する場合は，ソースファイルを変更しないで使用できます。
それ以外の場合は，ソースファイルを変更する必要があります。※

COBOL言語
ソースファイルを変更しないで使用できます。

UOC
C言語
32ビットアーキテクチャのバージョン7を使用する場合は，ソースファイルを変更しないで使用できます。
それ以外の場合は，ソースファイルを変更する必要があります。※

MCF通信構成定義（プロトコル固有の定義）
－
ソースファイルを変更しないで使用できます。

（凡例）

－：該当する内容がないことを表します。

注※

バージョン7では，メッセージ送受信インタフェース，UOC，およびMCFイベントインタフェースのそれぞれの引数ならびにパラメタの型が変更されています。そのため，UAPおよびUOCのソースファイルを見直す必要があります。

なお，この変更によるUAPやUOCの処理への影響はありません。

詳細については，「付録C　インタフェースの変更一覧（バージョン6以前から移行する場合）」を参照してください。

(2)　サーバ型コネクションの自IPアドレス

バージョン5以前では，サーバ型コネクションに指定した自システムのIPアドレスおよびホスト名を無効としていましたが，バージョン7では，コネクション定義に指定した自システムのIPアドレスまたはホスト名に対応するIPアドレスを開始時にバインドします。

指定したIPアドレスまたはホスト名に対応するIPアドレスへのバインドに失敗した場合，-bオプションのbretry，bretrycnt，bretryintオペランドの指定値に従ってバインドを再試行します。

ホスト名に対応するIPアドレスの取得に失敗した場合，開始処理を中断しますのでご注意ください。

(3)　メッセージ送信の再試行

バージョン5以前に存在したコネクション定義のメッセージ送信の再試行（mcftalccn -b dretry，dretryint，dretrycnt）は廃止し，定義しても無効となります。

バージョン5以前で行っていたメッセージ送信の再試行をバージョン7でも引き続き行い，再試行間隔（mcftalccn -b dretryint）および再試行回数（mcftalccn -b dretrycnt）にデフォルト値以外の値を設定していた場合，メッセージ送信完了監視時間（mcftalccn -b sndcmptim）に次の計算式で求めた値を設定してください。

メッセージ送信完了監視時間（sndcmptim）（秒）
 ＝再試行間隔（ミリ秒）× 再試行回数／1000（端数切り上げ）
  （dretryint）          （dretrycnt）

（例）

再試行間隔に250（ミリ秒），再試行回数に15（回）を指定していた場合の，メッセージ送信完了監視時間を求めるときの計算式を次に示します。

250 × 15 / 1000 ＝ 3.75
                ≒ 4

この場合は，メッセージ送信完了時間に4（秒）を指定します。

(4)　MCFトレースで取得する送受信メッセージのサイズ

バージョン5以前では，TP1/NET/TCP/IPが送受信したメッセージの全内容をMCFトレースに取得していましたが，バージョン7では，送受信したメッセージの先頭から最大128バイトをMCFトレースに取得します。

128バイトを超える送受信メッセージをMCFトレースに取得する場合は，トレース環境定義のMCFトレースに取得する送受信メッセージのサイズ（mcfttrc -t msgsize）に，送受信するメッセージ長以上の値を指定してください。

(5)　未確立コネクションの論理端末に対する運用コマンドの動作

バージョン7では，未確立コネクションの論理端末に対する運用コマンド（mcftactleとmcftdctle）の動作が，バージョン5以前と異なります。未確立コネクションの論理端末に対する運用コマンドの動作を次に示します。

表B-3　未確立コネクションの論理端末に対する運用コマンドの動作

運用コマンド | バージョン | 論理端末の状態
閉塞 | 閉塞解除
mcftactle | バージョン5以前 | 論理端末の閉塞解除をします。 | KFCA14821-Wを出力し，運用コマンドを受け付けません。
バージョン7 | KFCA14820-Wを出力し，運用コマンドを受け付けません。 | 該当する状態※にはなりません。
mcftdctle | バージョン5以前 | KFCA14822-Wを出力し，運用コマンドを受け付けません。 | 論理端末を閉塞します。
バージョン7 | KFCA14820-Wを出力し，運用コマンドを受け付けません。 | 該当する状態※にはなりません。

注※

コネクションが未確立で，かつ論理端末が閉塞解除している状態。

(6)　クライアント型コネクションの確立処理

バージョン7では，クライアント型コネクションの確立処理が，バージョン5以前と異なります。

バージョン7では，クライアント型コネクションの確立処理を変更し，相手システムからの応答を待ち合わせる最大時間として，コネクション確立時の監視時間をコネクション定義（mcftalccn -b）のconcmptimオペランドで指定できます。

クライアント型コネクションの確立処理を変更したことによって，次の処理に必要な時間がバージョン5以前と異なります。

TP1/NET/TCP/IPがコネクション確立を検出するまでの時間

相手システムまたはネットワークの障害によって確立処理がリトライオーバするまでの時間

OSが相手システムとコネクションを確立したあと，TP1/NET/TCP/IPがコネクションの確立を検出するために，バージョン5以前では最大で，コネクション定義（mcftalccn -b）のbretryintオペランドで指定したコネクション確立障害時の確立再試行間隔だけ時間を必要としました。一方，バージョン7ではコネクションの確立を即時検出できます。

バージョン7の確立処理のリトライオーバまでの所要時間の計算式を次に示します。

確立処理のリトライオーバまでの最大所要時間（秒）
 ＝（コネクション確立障害時の確立再試行間隔 ＋ 確立障害検出時間※）
       （mcftalccn -b bretryint）
    ×コネクション確立障害時の確立再試行回数
       （mcftalccn -b bretrycnt）

注※

コネクション確立時の監視時間とOSが確立障害を検出する時間のどちらか小さい方の値が設定されます。

バージョン5以前での，クライアント型コネクションの確立処理の流れは，「付録B.3　バージョン5以前でのソケット関数の処理の流れ」を参照してください。また，バージョン7での，クライアント型コネクションの確立手順の詳細は，「付録G　ソケット関数の処理の流れ」を参照してください。

(7)　コネクション当たりの受信バッファ数

バージョン5以前では，1コネクション当たりに必要な受信バッファは3以上でしたが，バージョン7では次の計算式で求めた値と2のどちらか大きい方の値以上が必要となります。

1コネクション当たりの受信バッファ数(小数点以下を切り上げ)
 ＝受信バッファのバッファサイズ（バイト）／受信するメッセージの平均長
                                             （mcftbuf -b length）

(8)　システムサービス共通情報定義のmax_open_fdsオペランド

バージョン5以前ではプロトコル制御で使用するファイル記述子数は，コネクションの総数とサーバ型コネクションで使用するポート数でしたが，バージョン7ではコネクションの総数，サーバ型コネクションの自システムのホストのIPアドレス（ホスト名），およびポート番号を組み合わせた数です。

max_open_fdsオペランドについては，「6.　システム定義」の「システムサービス共通情報定義」を参照してください。

(9)　Windows版でのシステムサービス共通情報定義のmax_socket_descriptorsオペランドとmax_open_fdsオペランド

Windows版のバージョン5ではシステムサービス共通情報定義のmax_socket_descriptorsにプロトコル制御で使用するファイル記述子数（コネクション数×2）を追加する必要がありましたが，バージョン7ではUNIX版と同様にmax_open_fdsオペランドにプロトコル制御で使用するファイル記述子を追加してください。

(10)　コネクション確立要求を格納するキューの長さ

バージョン5以前ではコネクション数にかかわらず固定としていましたが，バージョン7では定義したコネクション数に応じてTP1/NET/TCP/IPが自動的に調整するように変更しました。

(11)　OpenTP1終了中の相手システムからのコネクション確立

バージョン5以前ではOpenTP1終了中においても相手システムからのコネクション確立要求を受け付けていましたが，バージョン7では相手システムからのコネクション確立要求を受け付けないように変更しました。

(12)　受信バッファ数不足発生時のメッセージログ

バージョン5以前ではKFCA10618-Eを出力していましたが，バージョン7ではKFCA14847-Eを出力するように変更しました。

(13)　追加機能

バージョン5以前と比較して，バージョン7では「付録A　バージョンアップ時の変更点」に記載した追加機能のほかに次の機能を追加しています。

相手アドレスチェックの抑止
サーバ型コネクションにおいて，相手システムのアドレス情報のチェックを抑止し，任意の相手システムからのコネクション確立要求を受け付ける機能です。詳細は「2.1.7　相手アドレスチェックの抑止（サーバ型コネクション）」を参照してください。

コネクションリプレース
サーバ型コネクションにおいて，割り当て可能な未確立コネクションがない時に相手システムからコネクション確立要求を受け付けた場合，確立状態にある既存のコネクションを解放し，新しい確立要求を受け付ける機能です。詳細は「2.1.10　コネクションリプレース（サーバ型コネクション）」を参照してください。

無通信状態監視
一定時間以上相手システムと無通信状態が続いていないかを監視する機能です。詳細は「2.1.15　無通信状態監視」を参照してください。

同期型メッセージの送信
sendsync関数またはCBLDCMCF('SENDSYNC')にて同期型メッセージを送信できる機能です。詳細は「2.3.2 (1)　同期型メッセージの送信」を参照してください。

メッセージ送達の確認
DCCMII/TCPおよびDCCM3/TCPのメッセージ送達確認プロトコルに従ったメッセージ送達確認を行うか，または，受信メッセージ判定UOCを使用した任意の相手システムとのメッセージ送達確認を行う機能です。詳細は「2.3.10 (2)　TP1/NET/TCP/IPが提供する送達確認機能を使用する場合」を参照してください。

受信バッファの空き待ち
受信バッファの空きが不足した場合，受信バッファの空きを待ち合わせる機能です。詳細については，「2.3.7(3)　受信バッファの空き待ち」を参照してください。

付録B.3　バージョン5以前でのソケット関数の処理の流れ

ここでは，バージョン5以前のTP1/NET/TCP/IPが，次の場合に発行するソケット関数の処理の流れを示します。

クライアント型コネクションの確立

クライアント型コネクションの確立障害（相手システムのサービス未起動の場合）

クライアント型コネクションの確立障害（相手システム未起動またはネットワーク障害）

TCP/IPソケットと相手システム間のパケット送受信のタイミングはTP1/NET/TCP/IPが動作するOSの実装に依存します。実装によっては，実際のパケット送受信のタイミングが，図に示したパケット送受信のタイミングと異なる場合があります。

なお，バージョン7でのソケット関数の処理の流れについては，「付録G　ソケット関数の処理の流れ」を参照してください。

図B-1　クライアント型コネクションの確立（バージョン5以前）

（凡例）

ACK：確認応答フラグ

SYN：コネクション確立要求フラグ

注※1

キープアライブを使用する場合（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定），発行します。

注※2

TCP_NODELAYを使用する場合（コネクション定義（mcftalccn -k）のnodelayオペランドにyesを指定），発行します。

注※3

自システムのポート番号を指定した場合，発行します。

注※4

自システムのホスト名，IPアドレスまたはポート番号を指定した場合，発行します。

注※5

パケットの送受信は，TP1/NET/TCP/IPと非同期に行われます。バージョン5以前のTP1/NET/TCP/IPは，相手システムからのSYNおよびACKを待ち合わせません。

図B-2　クライアント型コネクションの確立障害（相手システムのサービス未起動）（バージョン5以前）

（凡例）

SYN：コネクション確立要求フラグ

RST：コネクション強制切断フラグ

注※1

キープアライブを使用する場合（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定），発行します。

注※2

TCP_NODELAYを使用する場合（コネクション定義（mcftalccn -k）のnodelayオペランドにyesを指定），発行します。

注※3

自システムのポート番号を指定した場合，発行します。

注※4

自システムのホスト名，IPアドレスまたはポート番号を指定した場合，発行します。

注※5

同じ処理を行います。

注※6

パケットの送受信は，TP1/NET/TCP/IPと非同期に行われます。バージョン5のTP1/NET/TCP/IPは，相手システムからのRSTを待ち合わせません。

注※7

コネクション確立障害時の確立再試行間隔（コネクション定義（mcftalccn -b）のbretryintオペランドの指定値）だけ待ち合わせます。

注※8

最大でコネクション確立障害時の確立再試行回数（コネクション定義（mcftalccn -b）のbretrycntオペランドの指定値）だけ繰り返します。

図B-3　クライアント型コネクションの確立障害（相手システム未起動またはネットワーク障害）（バージョン5以前）

（凡例）

SYN：コネクション確立要求フラグ

注※1

キープアライブを使用する場合（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定），発行します。

注※2

TCP_NODELAYを使用する場合（コネクション定義（mcftalccn -k）のnodelayオペランドにyesを指定），発行します。

注※3

自システムのポート番号を指定した場合，発行します。

注※4

自システムのホスト名，IPアドレスまたはポート番号を指定した場合，発行します。

注※5

コネクション確立障害時の確立再試行間隔（コネクション定義（mcftalccn -b）のbretryintオペランドの指定値）だけ待ち合わせます。

注※6

最大でコネクション確立障害時の確立再試行回数（コネクション定義（mcftalccn -b）のbretrycntオペランドの指定値）だけ繰り返します。

付録C　インタフェースの変更一覧（バージョン6以前から移行する場合）

TP1/NET/TCP/IPのバージョン6以前から移行するときに，32ビットアーキテクチャ以外の場合は，C言語のソースファイルを見直す必要があります。ここでは，バージョン6以前のインタフェースの変更一覧を示します。

ここで説明するインタフェースを次に示します。

表C-1　インタフェースの変更一覧

変更されたインタフェース
バージョン7のマニュアルの該当個所

メッセージ送受信インタフェース
dc_mcf_receive
3.　dc_mcf_receive － メッセージの受信（C言語）

dc_mcf_resend
3.　dc_mcf_resend － メッセージの再送（C言語）

dc_mcf_send
3.　dc_mcf_send － 一方送信メッセージの送信（C言語）

dc_mcf_sendrecv
3.　dc_mcf_sendrecv － 同期型メッセージの送受信（C言語）

dc_mcf_sendsync
3.　dc_mcf_sendsync － 同期型メッセージの送信（C言語）

ユーザオウンコーディング
入力セグメント判定UOC
5.1.2　入力セグメント判定UOCインタフェース

入力メッセージ編集UOC
5.1.4　入力メッセージ編集UOCインタフェース

出力メッセージ編集UOC
5.1.6　出力メッセージ編集UOCインタフェース

送信メッセージの通番編集UOC
5.1.8　送信メッセージの通番編集UOCインタフェース

コネクション確立UOC
5.1.10　コネクション確立UOCインタフェース

受信メッセージ判定UOC
5.1.12　受信メッセージ判定UOCインタフェース

MCFイベントインタフェース
5.2.3　MCFイベント情報の形式（C言語）

MCFメイン関数のコーディング概要
8.2　MCFメイン関数の作成

ユーザアプリケーションプログラムの作成例
付録I.1　コーディング例
(1)　C言語（K&R版）

以降，バージョン6以前のインタフェースと，バージョン7以前のインタフェースの変更一覧を示します。変更箇所には，下線を付与しています。

＜この節の構成＞

付録C.1　メッセージ送受信インタフェース

付録C.2　ユーザオウンコーディング

付録C.3　MCFイベントインタフェース

付録C.4　MCFメイン関数のコーディング概要

付録C.5　ユーザアプリケーションプログラムの作成例

付録C.1　メッセージ送受信インタフェース

ここでは，メッセージ送受信インタフェースの変更一覧を示します。

＜この項の構成＞

(1)　dc_mcf_receive － メッセージの受信

(2)　dc_mcf_resend － メッセージの再送

(3)　dc_mcf_send － 一方送信メッセージの送信

(4)　dc_mcf_sendrecv － 同期型メッセージの送受信

(5)　dc_mcf_sendsync － 同期型メッセージの送信

(1)　dc_mcf_receive － メッセージの受信

(a)　ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_receive(long action,
                   long commform,
                   char *termnam,
                   char *resv01,
                   char *recvdata,
                   long *rdataleng,
                   long inbufleng,
                   long *time)

#include <dcmcf.h>
　int  dc_mcf_receive(DCLONG action,
                   DCLONG commform,
                   char *termnam,
                   char *resv01,
                   char *recvdata,
                   DCLONG *rdataleng,
                   DCLONG inbufleng,
                   DCLONG *time)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_receive(int action,
                   int commform,
                   char *termnam,
                   char *resv01,
                   char *recvdata,
                   int *rdataleng,
                   int inbufleng,
                   int *time)

(b)　K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_receive(action,
                     commform,
                     termnam,
                     resv01,
                     recvdata,
                     rdataleng,
                     inbufleng,
                     time)
　long      action;
　long      commform;
　char      *termnam;
　char      *resv01;
　char      *recvdata;
　long      *rdataleng;
　long      inbufleng;
　long      *time;

#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;

＜64ビットアーキテクチャの場合＞

　#include <dcmcf.h>
　int  dc_mcf_receive(action,
                     commform,
                     termnam,
                     resv01,
                     recvdata,
                     rdataleng,
                     inbufleng,
                     time)
　int      action;
　int      commform;
　char      *termnam;
　char      *resv01;
　char      *recvdata;
　int      *rdataleng;
　int      inbufleng;
　int      *time;

(2)　dc_mcf_resend － メッセージの再送

(a)　ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_resend(long action,
                    long commform,
                    char *rtermnam,
                    char *resv01,
                    long oseqid,
                    long orgseq,
                    char *otermnam,
                    char *resv02,
                    char *resv03,
                    char *resv04,
                    long opcd)

#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)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_resend(int action,
                    int commform,
                    char *rtermnam,
                    char *resv01,
                    int oseqid,
                    int orgseq,
                    char *otermnam,
                    char *resv02,
                    char *resv03,
                    char *resv04,
                    int opcd)

(b)　K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_resend(action,
                    commform,
                    rtermnam,
                    resv01,
                    oseqid,
                    orgseq,
                    otermnam,
                    resv02,
                    resv03,
                    resv04,
                    opcd)
　long      action;
　long      commform;
　char      *rtermnam;
　char      *resv01;
　long      oseqid;
　long      orgseq;
　char      *otermnam;
　char      *resv02;
　char      *resv03;
　char      *resv04;
　long      opcd;

#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;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_resend(action,
                    commform,
                    rtermnam,
                    resv01,
                    oseqid,
                    orgseq,
                    otermnam,
                    resv02,
                    resv03,
                    resv04,
                    opcd)
　int      action;
　int      commform;
　char     *rtermnam;
　char     *resv01;
　int      oseqid;
　int      orgseq;
　char     *otermnam;
　char     *resv02;
　char     *resv03;
　char     *resv04;
　int      opcd;

(3)　dc_mcf_send － 一方送信メッセージの送信

(a)　ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_send(long action,
                  long commform,
                  char *termnam,
                  char *resv01,
                  char *senddata,
                  long sdataleng,
                  char *resv02,
                  long opcd)

#include <dcmcf.h>
　int  dc_mcf_send(DCLONG action,
                  DCLONG commform,
                  char *termnam,
                  char *resv01,
                  char *senddata,
                  DCLONG sdataleng,
                  char *resv02,
                  DCLONG opcd)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_send(int action,
                  int commform,
                  char *termnam,
                  char *resv01,
                  char *senddata,
                  int sdataleng,
                  char *resv02,
                  int opcd)

(b)　K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_send(action,
                  commform,
                  termnam,
                  resv01,
                  senddata,
                  sdataleng,
                  resv02,
                  opcd)
　long      action;
　long      commform;
　char      *termnam;
　char      *resv01;
　char      *senddata;
　long      sdataleng;
　char      *resv02;
　long      opcd;

#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;

＜64ビットアーキテクチャの場合＞
#include <dcmcf.h>
　int  dc_mcf_send(action,
                  commform,
                  termnam,
                  resv01,
                  senddata,
                  sdataleng,
                  resv02,
                  opcd)
　int      action;
　int      commform;
　char     *termnam;
　char     *resv01;
　char     *senddata;
　int      sdataleng;
　char     *resv02;
　int      opcd;

(4)　dc_mcf_sendrecv － 同期型メッセージの送受信

(a)　ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_sendrecv(long action,
                    long commform,
                    char *termnam,
                    char *resv01,
                    char *senddata,
                    long sdataleng,
                    char *recvdata,
                    long *rdataleng,
                    long inbufleng,
                    long *time,
                    long watchtime)

#include <dcmcf.h>
　int  dc_mcf_sendrecv(DCLONG action,
                    DCLONG commform,
                    char *termnam,
                    char *resv01,
                    char *senddata,
                    DCLONG sdataleng,
                    char *recvdata,
                    DCLONG *rdataleng,
                    DCLONG inbufleng,
                    DCLONG *time,
                    DCLONG watchtime)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_sendrecv(int action,
                    int commform,
                    char *termnam,
                    char *resv01,
                    char *senddata,
                    int sdataleng,
                    char *recvdata,
                    int *rdataleng,
                    int inbufleng,
                    int *time,
                    int watchtime)

(b)　K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞
#include <dcmcf.h>
　int  dc_mcf_sendrecv(action,
                      commform,
                      termnam,
                      resv01,
                      senddata,
                      sdataleng,
                      recvdata,
                      rdataleng,
                      inbufleng,
                      time,
                      watchtime)
　long      action;
　long      commform;
　char      *termnam;
　char      *resv01;
　char      *senddata;
　long      sdataleng;
　char      *recvdata;
　long      *rdataleng;
　long      inbufleng;
　long      *time;
　long      watchtime;

#include <dcmcf.h>
　int  dc_mcf_sendrecv(action,
                      commform,
                      termnam,
                      resv01,
                      senddata,
                      sdataleng,
                      recvdata,
                      rdataleng,
                      inbufleng,
                      time,
                      watchtime)
　DCLONG    action;
　DCLONG    commform;
　char      *termnam;
　char      *resv01;
　char      *senddata;
　DCLONG    sdataleng;
　char      *recvdata;
　DCLONG    *rdataleng;
　DCLONG    inbufleng;
　DCLONG    *time;
　DCLONG    watchtime;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_sendrecv(action,
                      commform,
                      termnam,
                      resv01,
                      senddata,
                      sdataleng,
                      recvdata,
                      rdataleng,
                      inbufleng,
                      time,
                      watchtime)
　int      action;
　int      commform;
　char     *termnam;
　char     *resv01;
　char     *senddata;
　int      sdataleng;
　char     *recvdata;
　int      *rdataleng;
　int      inbufleng;
　int      *time;
　int      watchtime;

(5)　dc_mcf_sendsync － 同期型メッセージの送信

(a)　ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_sendsync(long action,
                    long commform,
                    char *termnam,
                    char *resv01,
                    char *senddata,
                    long sdataleng,
                    char *resv02,
                    long opcd,
                    long watchtime)

　#include <dcmcf.h>
　int  dc_mcf_sendsync(DCLONG action,
                    DCLONG commform,
                    char *termnam,
                    char *resv01,
                    char *senddata,
                    DCLONG sdataleng,
                    char *resv02,
                    DCLONG opcd,
                    DCLONG watchtime)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_sendsync(int action,
                    int commform,
                    char *termnam,
                    char *resv01,
                    char *senddata,
                    int sdataleng,
                    char *resv02,
                    int opcd,
                    int watchtime)

(b)　K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_sendsync(action,
                      commform,
                      termnam,
                      resv01,
                      senddata,
                      sdataleng,
                      resv02,
                      opcd,
                      watchtime)
　long      action;
　long      commform;
　char      *termnam;
　char      *resv01;
　char      *senddata;
　long      sdataleng;
　char      *resv02;
　long      opcd;
　long      watchtime;

#include <dcmcf.h>
　int  dc_mcf_sendsync(action,
                      commform,
                      termnam,
                      resv01,
                      senddata,
                      sdataleng,
                      resv02,
                      opcd,
                      watchtime)
　DCLONG    action;
　DCLONG    commform;
　char      *termnam;
　char      *resv01;
　char      *senddata;
　DCLONG    sdataleng;
　char      *resv02;
　DCLONG    opcd;
　DCLONG    watchtime;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int  dc_mcf_sendsync(action,
                      commform,
                      termnam,
                      resv01,
                      senddata,
                      sdataleng,
                      resv02,
                      opcd,
                      watchtime)
　int      action;
　int      commform;
　char     *termnam;
　char     *resv01;
　char     *senddata;
　int      sdataleng;
　char     *resv02;
　int      opcd;
　int      watchtime;

付録C.2　ユーザオウンコーディング

ここでは，ユーザオウンコーディングの変更一覧を示します。

＜この項の構成＞

(1)　入力セグメント判定UOC

(2)　入力メッセージ編集UOC

(3)　出力メッセージ編集UOC

(4)　送信メッセージの通番編集UOC

(5)　コネクション確立UOC

(6)　受信メッセージ判定UOC

(1)　入力セグメント判定UOC

(a)　形式

ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
long uoc_func(dctcp_uoc_sgck *parm)

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG uoc_func(dctcp_uoc_sgck *parm)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
int uoc_func(dctcp_uoc_sgck *parm)

K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
long    uoc_func(parm)

dctcp_uoc_sgck *parm ;

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG    uoc_func(parm)

dctcp_uoc_sgck *parm ;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
int    uoc_func(parm)

dctcp_uoc_sgck *parm ;

(b)　パラメタの内容

dctcp_uoc_sgckの内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
   long pro_kind;
   char le_name[9];
   char reserve1[7];
   long rcv_prim;
   char *rcv_data_adr;
   long rcv_data_size;
   char *uoc_inf_adr;
   long uoc_inf_size;
   dctcp_sguoc_prot *pro_indv_ifa;
   dctcp_uoctimer_inf *ptimerinf_adr;
   long rtn_detail;

   long reserve2[2];
} dctcp_uoc_sgck;

typedef struct {
   DCLONG pro_kind;
   char le_name[9];
   char reserve1[7];
   DCLONG rcv_prim;
   char *rcv_data_adr;
   DCLONG rcv_data_size;
   char *uoc_inf_adr;
   DCLONG uoc_inf_size;
   dctcp_sguoc_prot *pro_indv_ifa;
   dctcp_uoctimer_inf *ptimerinf_adr;
   DCLONG rtn_detail;
   DCLONG rcv_buf_size;
   DCLONG reserve2[1];
} dctcp_uoc_sgck;

＜64ビットアーキテクチャの場合＞

typedef struct {
   int pro_kind;
   char le_name[9];
   char reserve1[7];
   int rcv_prim;
   char *rcv_data_adr;
   int rcv_data_size;
   char *uoc_inf_adr;
   int uoc_inf_size;
   dctcp_sguoc_prot *pro_indv_ifa;
   dctcp_uoctimer_inf *ptimerinf_adr;
   int rtn_detail;

   int reserve2[2];
} dctcp_uoc_sgck;

dctcp_uoctimer_inf（タイマ情報），dctcp_sguoc_prot（領域アドレス）の内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
   long timer_code;
   long timer_value;
   long timer_result;
   long reserve1[2];
} dctcp_uoctimer_inf;

typedef struct {
   long rest_data_size;
   long next_data_size;
   char *next_data_adr;
   long now_data_size;
   long reserve[2];
} dctcp_sguoc_prot;

typedef struct {
   DCLONG timer_code;
   DCLONG timer_value;
   DCLONG timer_result;
   DCLONG reserve1[2];
} dctcp_uoctimer_inf;

typedef struct {
   DCLONG rest_data_size;
   DCLONG next_data_size;
   char *next_data_adr;
   DCLONG now_data_size;
   DCLONG reserve[2];
} dctcp_sguoc_prot;

＜64ビットアーキテクチャの場合＞

typedef struct {
   int timer_code;
   int timer_value;
   int timer_result;
   int reserve1[2];
} dctcp_uoctimer_inf;

typedef struct {
   int rest_data_size;
   int next_data_size;
   char *next_data_adr;
   int now_data_size;
   int reserve[2];
} dctcp_sguoc_prot;

(2)　入力メッセージ編集UOC

(a)　形式

ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
long  uoc_func(dcmcf_uoc_min_n *parm)

#include <dcmcf.h>
#include <dcmcfuoc.h>
DCLONG  uoc_func(dcmcf_uoc_min_n *parm)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
int  uoc_func(dcmcf_uoc_min_n *parm)

K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
long    uoc_func(parm)

dcmcf_uoc_min_n   *parm ;

#include <dcmcf.h>
#include <dcmcfuoc.h>
DCLONG    uoc_func(parm)

dcmcf_uoc_min_n   *parm ;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
int    uoc_func(parm)

dcmcf_uoc_min_n   *parm ;

(b)　パラメタの内容

dcmcf_uoc_min_nの内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
   long pro_kind;
   char le_name[9];
   char reserve1[7];
   long rcv_prim;
   dcmcf_uocbuff_list_n *buflist_adr;
   dcmcf_uocbuff_list_n *ebuflist_adr;
   char aplname[9];
   char reserve2[7];
   char *pro_indv_ifa;
   long rtn_detail;
   char reserve3[8];
} 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;

＜64ビットアーキテクチャの場合＞

typedef struct {
   int pro_kind;
   char le_name[9];
   char reserve1[7];
   int rcv_prim;
   dcmcf_uocbuff_list_n *buflist_adr;
   dcmcf_uocbuff_list_n *ebuflist_adr;
   char aplname[9];
   char reserve2[7];
   char *pro_indv_ifa;
   int rtn_detail;
   char reserve3[8];
} dcmcf_uoc_min_n;

dcmcf_uocbuff_list_n（バッファリスト）の内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
   long buf_num;
   long used_buf_num;
   char reserve1[8];
   dcmcf_uocbufinf_n
       buf_array[DCMCF_UOC_BUFF_MAX];
} 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;

＜64ビットアーキテクチャの場合＞

typedef struct {
   int buf_num;
   int used_buf_num;
   char reserve1[8];
   dcmcf_uocbufinf_n
       buf_array[DCMCF_UOC_BUFF_MAX];
} dcmcf_uocbuff_list_n;

dcmcf_uocbufinf_n（バッファ情報）の内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
   char *buf_adr;
   unsigned long buf_size;
   unsigned long seg_size;
   char reserve1[4];
   dcmcfuoc_w_type buff_id;
   long buff_addr;
   char reserve2[4];
} dcmcf_uocbufinf_n;

typedef struct {
   char *buf_adr;
   DCULONG buf_size;
   DCULONG seg_size;
   char reserve1[4];
   dcmcfuoc_w_type buff_id;
   DCMLONG buff_addr;
   char reserve2[4];
} dcmcf_uocbufinf_n;

＜64ビットアーキテクチャの場合＞

typedef struct {
   char *buf_adr;
   unsigned int buf_size;
   unsigned int seg_size;
   char reserve1[4];
   dcmcfuoc_w_type buff_id;
   char *buff_addr;
   char reserve2[4];
} dcmcf_uocbufinf_n;

(3)　出力メッセージ編集UOC

(a)　形式

ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
long  uoc_func(dcmcf_uoc_mout_n *parm)

#include <dcmcf.h>
#include <dcmcfuoc.h>
DCLONG  uoc_func(dcmcf_uoc_mout_n *parm)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
int  uoc_func(dcmcf_uoc_mout_n *parm)

K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
long  uoc_func(parm)

dcmcf_uoc_mout_n *parm ;

#include <dcmcf.h>
#include <dcmcfuoc.h>
DCLONG  uoc_func(parm)

dcmcf_uoc_mout_n *parm ;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
int  uoc_func(parm)

dcmcf_uoc_mout_n *parm ;

(b)　パラメタの内容

dcmcf_uoc_mout_nの内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
   long pro_kind;
   char le_name[9];
   char reserve1[7];
   dcmcf_uocbuff_list_n *buflist_adr;
   dcmcf_uocbuff_list_n *ebuflist_adr;
   long output_no;
   char msg_type;
   char outputno_flag;
   char resend_flag;
   char reserve2[1];
   char *pro_indv_ifa;
   long rtn_detail;
   char reserve3[20];
} 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;
   DCLONG rtn_detail;
   char reserve3[20];
} dcmcf_uoc_mout_n;

＜64ビットアーキテクチャの場合＞

typedef struct {
   int pro_kind;
   char le_name[9];
   char reserve1[7];
   dcmcf_uocbuff_list_n *buflist_adr;
   dcmcf_uocbuff_list_n *ebuflist_adr;
   int output_no;
   char msg_type;
   char outputno_flag;
   char resend_flag;
   char reserve2[1];
   char *pro_indv_ifa;
   int rtn_detail;
   char reserve3[20];
} dcmcf_uoc_mout_n;

dcmcf_uocbuff_list_n（バッファリスト），dcmcf_uocbufinf_n（バッファ情報）の内容

入力メッセージ編集UOCのパラメタの内容と同じです。「付録C.2(2)(b) パラメタの内容」を参照してください。

(4)　送信メッセージの通番編集UOC

(a)　形式

ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
long send_uoc(long flags,
               char *termname,
               long sendno,
               long sendid,
               long dataleng,
               char *senddata)

#include <dcmcf.h>
DCLONG send_uoc(DCLONG flags,
                 char *termname,
                 DCLONG sendno,
                 DCLONG sendid,
                 DCLONG dataleng,
                 char *senddata)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
int send_uoc(int flags,
              char *termname,
              int sendno,
              int sendid,
              int dataleng,
              char *senddata)

K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
　long send_uoc(flags,
               termname,
               sendno,
               sendid,
               dataleng,
               senddata)
　long    flags;
　char    *termname;
　long    sendno;
　long    sendid;
　long    dataleng;
　char    *senddata;

#include <dcmcf.h>
　DCLONG send_uoc(flags,
                 termname,
                 sendno,
                 sendid,
                 dataleng,
                 senddata)
　DCLONG    flags;
　char      *termname;
　DCLONG    sendno;
　DCLONG    sendid;
　DCLONG    dataleng;
　char      *senddata;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
　int send_uoc(flags,
              termname,
              sendno,
              sendid,
              dataleng,
              senddata)
　int     flags;
　char    *termname;
　int     sendno;
　int     sendid;
　int     dataleng;
　char    *senddata;

(5)　コネクション確立UOC

(a)　形式

ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
long con_uoc(dcmtcp_uoc_con_n *parm)

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG con_uoc(dcmtcp_uoc_con_n *parm)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
int con_uoc(dcmtcp_uoc_con_n *parm)

K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
long con_uoc(parm)

dcmtcp_uoc_con_n *parm;

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG con_uoc(parm)

dcmtcp_uoc_con_n *parm;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
int con_uoc(parm)

dcmtcp_uoc_con_n *parm;

(b)　パラメタの内容

dcmtcp_uoc_con_nの内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct｛
   char  cn_name[9];
   char  reserve[7];
   dcmtcp_cnuoc_oaddr *oaddr;
   unsigned short  oportno;
   unsigned short  iportno;
   long  connect_permit;
   long  reject_reason;
   long  rtn_detail;
｝dcmtcp_uoc_con_n;

typedef struct｛
   char  cn_name[9];
   char  reserve[7];
   dcmtcp_cnuoc_oaddr *oaddr;
   unsigned short  oportno;
   unsigned short  iportno;
   DCLONG  connect_permit;
   DCLONG  reject_reason;
   DCLONG  rtn_detail;
｝dcmtcp_uoc_con_n;

＜64ビットアーキテクチャの場合＞

typedef struct｛
   char  cn_name[9];
   char  reserve[7];
   dcmtcp_cnuoc_oaddr *oaddr;
   unsigned short  oportno;
   unsigned short  iportno;
   int  connect_permit;
   int  reject_reason;
   int  rtn_detail;
｝dcmtcp_uoc_con_n;

dcmtcp_cnuoc_oaddr（相手システムのアドレス情報）の内容

バージョン6以前とバージョン7で，差異はありません。

(6)　受信メッセージ判定UOC

(a)　形式

ANSI C，C++の形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
long msgrep_uoc(dctcp_uoc_msgrep *parm)

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG msgrep_uoc(dctcp_uoc_msgrep *parm)

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
int msgrep_uoc(dctcp_uoc_msgrep *parm)

K&R版 Cの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
long    msgrep_uoc(parm)

dctcp_uoc_msgrep *parm;

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
DCLONG    msgrep_uoc(parm)

dctcp_uoc_msgrep *parm;

＜64ビットアーキテクチャの場合＞

#include <dcmcf.h>
#include <dcmcfuoc.h>
#include <dcmtcpu.h>
int    msgrep_uoc(parm)

dctcp_uoc_msgrep *parm;

(b)　パラメタの内容

dctcp_uoc_msgrepの内容

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
   long pro_kind;
   char cn_name[9];
   char reserve1[7];
   char le_name[9];
   char reserve2[7];
   long snd_status;
   char *rcv_data_adr;
   long rcv_data_size;
   long msg_type;
   long reason;
   long msg_reply;
   char *snd_data_adr;
   long snd_buff_size;
   long snd_data_size;
   long snd_cont;
   long rtn_detail;
   char reserve3[16];
}dctcp_uoc_msgrep;

typedef struct {
   DCLONG pro_kind;
   char cn_name[9];
   char reserve1[7];
   char le_name[9];
   char reserve2[7];
   DCLONG snd_status;
   char *rcv_data_adr;
   DCLONG rcv_data_size;
   DCLONG msg_type;
   DCLONG reason;
   DCLONG msg_reply;
   char *snd_data_adr;
   DCLONG snd_buff_size;
   DCLONG snd_data_size;
   DCLONG snd_cont;
   DCLONG rtn_detail;
   char reserve3[16];
}dctcp_uoc_msgrep;

＜64ビットアーキテクチャの場合＞

typedef struct {
   int pro_kind;
   char cn_name[9];
   char reserve1[7];
   char le_name[9];
   char reserve2[7];
   int snd_status;
   char *rcv_data_adr;
   int rcv_data_size;
   int msg_type;
   int reason;
   int msg_reply;
   char *snd_data_adr;
   int snd_buff_size;
   int snd_data_size;
   int snd_cont;
   int rtn_detail;
   char reserve3[16];
}dctcp_uoc_msgrep;

付録C.3　MCFイベントインタフェース

ここでは，MCFイベントインタフェースの変更一覧を示します。

＜この項の構成＞

(1)　MCFイベントの共通ヘッダの形式

(2)　ERREVT1の形式

(3)　ERREVT2の形式

(4)　ERREVT3の形式

(5)　ERREVTAの形式

(6)　CERREVTの形式

(7)　COPNEVT，CCLSEVTの形式

(1)　MCFイベントの共通ヘッダの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

struct dc_mcf_evtheader {
 char mcfevt_name[9] ;
 char le_name[16] ;
 char cn_name[9] ;
 unsigned char format_kind;
 char reserve01;
 long time ;
};

struct dc_mcf_evtheader {
 char mcfevt_name[9] ;
 char le_name[16] ;
 char cn_name[9] ;
 unsigned char format_kind;
 char reserve01;
 DCLONG time ;
};

＜64ビットアーキテクチャの場合＞

struct dc_mcf_evtheader {
 char mcfevt_name[9] ;
 char le_name[16] ;
 char cn_name[9] ;
 unsigned char format_kind;
 char reserve01;
 int time ;
};

(2)　ERREVT1の形式

バージョン6以前とバージョン7で，差異はありません。

(3)　ERREVT2の形式

バージョン6以前とバージョン7で，差異はありません。

(4)　ERREVT3の形式

バージョン6以前とバージョン7で，差異はありません。

(5)　ERREVTAの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

struct dc_mcf_evta_type {
 struct dc_mcf_evtheader  evtheader ;
 char reserve01[12] ;
 char reserve02[10] ;
 char reserve03[2] ;
 char ap_name[10] ;
 char reserve04[2] ;
 char reserve05[32] ;
 char reserve06[32] ;
 long user_leng ;
 char user_data[16] ;
 char reserve07[16] ;
} ;

struct dc_mcf_evta_type {
 struct dc_mcf_evtheader  evtheader ;
 char reserve01[12] ;
 char reserve02[10] ;
 char reserve03[2] ;
 char ap_name[10] ;
 char reserve04[2] ;
 char reserve05[32] ;
 char reserve06[32] ;
 DCLONG user_leng ;
 char user_data[16] ;
 char reserve07[16] ;
} ;

＜64ビットアーキテクチャの場合＞

struct dc_mcf_evta_type {
 struct dc_mcf_evtheader  evtheader ;
 char reserve01[12] ;
 char reserve02[10] ;
 char reserve03[2] ;
 char ap_name[10] ;
 char reserve04[2] ;
 char reserve05[32] ;
 char reserve06[32] ;
 int user_leng ;
 char user_data[16] ;
 char reserve07[16] ;
} ;

(6)　CERREVTの形式

バージョン6以前
バージョン7

＜32ビットアーキテクチャの場合＞

typedef struct {
 struct dc_mcf_evtheader  header ;
 long err_fact ;
 long err_reason1 ;
 long err_reason2 ;

 char reserve1[48] ;
} dcmtcp_cerrevt ;

typedef struct {
 struct dc_mcf_evtheader  header ;
 DCLONG err_fact ;
 DCLONG err_reason1 ;
 DCLONG err_reason2 ;
 char group_name[16];
 char reserve1[32] ;
} dcmtcp_cerrevt ;

＜64ビットアーキテクチャの場合＞

typedef struct {
 struct dc_mcf_evtheader  header ;
 int err_fact ;
 int err_reason1 ;
 int err_reason2 ;

 char reserve1[48] ;
} dcmtcp_cerrevt ;

(7)　COPNEVT，CCLSEVTの形式

バージョン6以前
バージョン7

typedef struct {
 struct dc_mcf_evtheader  header ;

 char reserve1[58] ;
} dcmtcp_statevt ;

typedef struct {
 struct dc_mcf_evtheader  header ;
 char group_name[16];
 char reserve1[40] ;
} dcmtcp_statevt ;

付録C.4　MCFメイン関数のコーディング概要

MCFメイン関数のコーディング概要の変更一覧を示します。変更箇所は，図中の網掛け部分です。

＜この項の構成＞

(1)　ANSI C，C++の場合

(2)　K&R版 Cの場合

(1)　ANSI C，C++の場合

(a)　バージョン6以前

注※

TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合は，「segchk01」の代わりに「dc_mcf_stduoc_tcp_segchk」をコーディングしてください。

(b)　バージョン7

注※

TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合は，「segchk01」の代わりに「dc_mcf_stduoc_tcp_segchk」をコーディングしてください。

(2)　K&R版 Cの場合

(a)　バージョン6以前

注※

TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合は，「segchk01」の代わりに「dc_mcf_stduoc_tcp_segchk」をコーディングしてください。

(b)　バージョン7

注※

TP1/NET/TCP/IPが標準提供する入力セグメント判定UOCを使用する場合は，「segchk01」の代わりに「dc_mcf_stduoc_tcp_segchk」をコーディングしてください。

付録C.5　ユーザアプリケーションプログラムの作成例

ユーザアプリケーションプログラムの作成例の変更一覧を示します。

＜この項の構成＞

(1)　バージョン6以前

(2)　バージョン7

(1)　バージョン6以前

/********************************************************/
/*    C言語を使用したUAP作成例                        */
/********************************************************/
#include <dcmcf.h>

void ex_uap1()
{
   char termnam[9];
   long rdataleng;
   long time;
   struct{
       char mcfctl[8];
       long msglen;
       char recvdata[2036];
   }recvmsg;
   struct{
       char mcfctl[8];
       long msglen;
       char senddata1[500];
   }sendmsg;
   char senddata2[512];
   static char resv01[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   static char resv02[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   static char resv03[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   char *workadd = (char *)&recvmsg;

   dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01,
                  workadd,&rdataleng,2048,&time) ;
                                /* 一方送信メッセージの受信 */
   /***************************************/
   /*********   データの処理   ************/
   /***************************************/

   dc_mcf_send(DCMCFEMI,DCMCFOUT,"PRINTER1",resv01,
               senddata2,504,resv02,DCNOFLAGS);
                                /* 一方送信メッセージの送信 */
   sendmsg.msglen = 504;       /* セグメント長の設定 */
   dc_mcf_send(DCMCFEMI,DCMCFOUT,"TERMNAM1",resv01,
               (char *)&sendmsg,504,resv02,DCNOFLAGS);
/* メッセージの送信 */
}
/********   C言語によるUAP 終わり   ********/

(2)　バージョン7

/********************************************************/
/*    C言語を使用したUAP作成例                             */
/********************************************************/
#include <dcmcf.h>

void ex_uap1()
{
   char termnam[9];
   DCLONG rdataleng;
   DCLONG time;
   struct{
       char mcfctl[8];
       DCLONG msglen;
       char recvdata[2036];
   }recvmsg;
   struct{
       char mcfctl[8];
       DCLONG msglen;
       char senddata1[500];
   }sendmsg;
   char senddata2[512];
   static char resv01[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   static char resv02[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   static char resv03[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   char *workadd = (char *)&recvmsg;

   dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01,
                  workadd,&rdataleng,2048,&time) ;
                                /* 一方送信メッセージの受信 */
   /***************************************/
   /*********   データの処理     ************/
   /***************************************/

   dc_mcf_send(DCMCFEMI,DCMCFOUT,"PRINTER1",resv01,
               senddata2,504,resv02,DCNOFLAGS);
                                /* 一方送信メッセージの送信 */
   sendmsg.msglen = 504;       /* セグメント長の設定 */
   dc_mcf_send(DCMCFEMI,DCMCFOUT,"TERMNAM1",resv01,
               (char *)&sendmsg,504,resv02,DCNOFLAGS);
/* メッセージの送信 */
}
/********   C言語によるUAP 終わり   ********/

付録D　メッセージ送受信の処理の流れ

ここでは，次のときのメッセージを送受信するときのデータの流れ，ジャーナルの取得タイミングなどについて説明します。

一方送信メッセージの送信時（メッセージ送達確認機能を使用しない場合）

一方送信メッセージの送信時（メッセージ送達確認機能を使用する場合）

一方送信メッセージの受信時

同期型メッセージ送信時

同期型メッセージ受信時

同期型メッセージ送受信時

後続メッセージ監視時

それぞれについて，以降の図に示します。

なお，ジャーナルのフォーマットについては，マニュアル「OpenTP1 運用と操作」を参照してください。

図D-1　一方送信メッセージの送信時の処理の流れ（メッセージ送達確認機能を使用しない場合）

図D-2　一方送信メッセージの送信時の処理の流れ（メッセージ送達確認機能を使用する場合）

図D-3　一方送信メッセージの受信時の処理の流れ

図D-4　同期型メッセージ送信時の処理の流れ

図D-5　同期型メッセージ受信時の処理の流れ

図D-6　同期型メッセージ送受信時の処理の流れ

図D-7　後続メッセージ監視時の処理の流れ

付録E　障害発生時の処理の流れ

ここでは，次のときの障害発生時の処理の流れについて説明します。

メッセージ送信でのコネクション障害時

メッセージ送信中のコネクション解放時

コネクション切断時

入力セグメント判定UOCエラー時

入力メッセージ編集UOCエラー時

出力メッセージ編集UOCエラー時

後続メッセージ監視タイムアウト時

コネクション確立監視時間タイムアウト時

送信完了監視時間タイムアウト時

無通信状態監視時間タイムアウト時

それぞれについて，以降の図に示します。

図E-1　メッセージ送信でのコネクション障害時の処理の流れ

図E-2　メッセージ送信中のコネクション解放時の処理の流れ

図E-3　コネクション切断時の処理の流れ

図E-4　入力セグメント判定UOCエラー時の処理の流れ

図E-5　入力メッセージ編集UOCエラー時の処理の流れ

図E-6　出力メッセージ編集UOCエラー時の処理の流れ

図E-7　後続メッセージ監視タイムアウト時の処理の流れ

図E-8　コネクション確立監視時間タイムアウト時の処理の流れ

注※

同じ処理を行います。

図E-9　送信完了監視時間タイムアウト時の処理の流れ

図E-10　無通信状態監視時間タイムアウト時の処理の流れ

注※

論理端末の閉塞解除，およびメッセージ受信でも同様に状態監視を開始します。

付録F　送受信メッセージの衝突時の処理の流れ（メッセージ送達確認機能使用時）

ここでは，DCCMとのメッセージの衝突，および任意の相手システムとのメッセージ衝突の，処理の流れについて説明します。

＜この節の構成＞

付録F.1　DCCMとのメッセージ衝突

付録F.2　任意の相手システムとのメッセージ衝突

付録F.1　DCCMとのメッセージ衝突

TP1/NET/TCP/IPのメッセージ送信と，DCCMのメッセージ送信が衝突するときの処理の流れを，次に示すあらかじめ決められた定義の対応ごとに説明します。

TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2s（DCCMII/TCPの定義がTERMINAL CONTENT=MASTER）の場合

TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2m（DCCMII/TCPの定義がTERMINAL CONTENT=SLAVE）の場合

TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm3s（DCCM3/TCPの定義がTERMINAL CONTENT=MASTER）の場合

TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm3m（DCCM3/TCPの定義がTERMINAL CONTENT=SLAVE）の場合

＜この項の構成＞

(1)　TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2s，またはmcftalccn -u delichk = dccm3sの場合

(2)　TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2mの場合

(3)　TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm3mの場合

(1)　TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2s，またはmcftalccn -u delichk = dccm3sの場合

TP1/NET/TCP/IPの送信処理を中断し，メッセージ受信処理を継続します。メッセージ受信処理完了後，中断したメッセージを再送します。この場合の処理の流れを次の図に示します。

図F-1　メッセージ衝突時の処理の流れ（TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2s，またはmcftalccn -u delichk = dccm3sの場合）

UAPはDCCMへの一方送信メッセージを送信します。

DCCMへ一方送信メッセージを送信する時，DCCMからUAPへの一方送信メッセージと衝突しました。

送信メッセージを出力キューに戻し，UAPからDCCMへの一方送信メッセージ送信処理を中断します。

DCCMからUAPへの一方送信メッセージを受信し，UAPへ通知します。

DCCMへ応答専用データを送信します。

出力キューから送信メッセージを取り出し，DCCMへ一方送信します。

(2)　TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2mの場合

TP1/NET/TCP/IPは受信メッセージを破棄し，コネクションを解放し，コネクションレベルのCERREVTを起動します。このとき，送信メッセージは出力キューに残ります。この場合の処理の流れを次の図に示します。

図F-2　メッセージ衝突時の処理の流れ（TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm2mの場合）

UAPはDCCMへの一方送信メッセージを送信します。

DCCMへ一方送信メッセージを送信する時，DCCMからUAPへの一方送信メッセージと衝突しました。

DCCMから受信したメッセージを破棄します。

送信メッセージを出力キューに戻し，コネクションを解放します。

UAPにCERREVTを通知します。

(3)　TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm3mの場合

TP1/NET/TCP/IPは受信したメッセージを破棄し，メッセージ送信処理を継続します。この場合の処理の流れを次の図に示します。

図F-3　メッセージ衝突時の処理の流れ（TP1/NET/TCP/IPの定義がmcftalccn -u delichk = dccm3mの場合）

UAPはDCCMへの一方送信メッセージを送信します。

DCCMへ一方送信メッセージを送信する時，DCCMからUAPへの一方送信メッセージと衝突しました。

DCCMから受信したメッセージを破棄します。

メッセージ送信処理を継続します。

付録F.2　任意の相手システムとのメッセージ衝突

TP1/NET/TCP/IPのメッセージ送信と，任意の相手システムからのメッセージ送信が衝突した場合，TP1/NET/TCP/IPは受信メッセージ判定UOCの指定内容に従って動作します。UOCで，受信したメッセージの種別，および送信処理中のメッセージの処理内容を指定し，送受信メッセージが衝突した場合のTP1/NET/TCP/IPの動作を決定してください。メッセージの処理内容については，「5.1.12(5)　ユーザが値を設定する項目」を参照してください。

送受信メッセージ衝突時の処理の流れを，次に示す受信メッセージ判定UOCの設定の例ごとに説明します。

メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理継続の設定の場合

メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理再送の設定の場合

メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理停止の設定の場合

メッセージ種別が破棄メッセージ，送信処理継続の設定の場合

メッセージ種別がコネクション解放の設定の場合

＜この項の構成＞

(1)　メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理継続の設定の場合

(2)　メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理再送の設定の場合

(3)　メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理停止の設定の場合

(4)　メッセージ種別が破棄メッセージ，送信処理継続の設定の場合

(5)　メッセージ種別がコネクション解放の設定の場合

(1)　メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理継続の設定の場合

送信処理を継続します。UAPに受信メッセージを通知したあと，相手システムに送達確認メッセージを送信します。この場合の処理の流れを次の図に示します。

図F-4　メッセージ衝突時の処理の流れ（メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理継続の設定の場合）

(2)　メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理再送の設定の場合

UAPからの送信処理を一時的に中断します。相手システムからの一方送信メッセージ受信処理完了後，相手システムにUAPからの一方送信メッセージを再送します。この場合の処理の流れを次の図に示します。

図F-5　メッセージ衝突時の処理の流れ（メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理再送の設定の場合）

(3)　メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理停止の設定の場合

論理端末を閉塞して送信処理を停止し，受信処理を続行します。この場合の処理の流れを次の図に示します。

図F-6　メッセージ衝突時の処理の流れ（メッセージ種別が一方送信メッセージ，送達確認メッセージ送信要，送信処理停止の設定の場合）

(4)　メッセージ種別が破棄メッセージ，送信処理継続の設定の場合

受信メッセージを破棄し，送信処理を継続します。この場合の処理の流れを次の図に示します。

図F-7　メッセージ衝突時の処理の流れ（メッセージ種別が破棄メッセージ，送信処理継続の設定の場合）

(5)　メッセージ種別がコネクション解放の設定の場合

受信メッセージを破棄し，コネクション解放します。この場合の処理の流れを次の図に示します。

図F-8　メッセージ衝突時の処理の流れ（メッセージ種別がコネクション解放の設定の場合）

付録G　ソケット関数の処理の流れ

ここでは，次の場合にTP1/NET/TCP/IPが発行するソケット関数の処理の流れを示します。

クライアント型コネクションの確立

クライアント型コネクションの確立障害（相手システムのサービス未起動の場合）

クライアント型コネクションの確立障害（相手システム未起動またはネットワーク障害）

サーバ型コネクションの確立

サーバ型コネクションの確立拒否

メッセージ送信

メッセージ送信の再試行

メッセージ受信

自システムからのコネクションの解放（FIN）

自システムからのコネクションの解放（RST）

相手システムからのコネクションの解放（FIN）

相手システムからのコネクションの解放（RST）

TCP/IPソケットと相手システム間のパケット送受信のタイミングはTP1/NET/TCP/IPが動作するOSの実装に依存します。実装によっては，実際のパケット送受信のタイミングが，図に示したパケット送受信のタイミングと異なる場合があります。

なお，バージョン5以前でのソケット関数の処理の流れについては，「付録B.3　バージョン5以前でのソケット関数の処理の流れ」を参照してください。

図G-1　クライアント型コネクションの確立

（凡例）

ACK：確認応答フラグ

SYN：コネクション確立要求フラグ

注※1

コネクション確立要求は，運用コマンド（mcftactcn）の入力，またはAPI（dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△')）の発行で行います。

注※2

キープアライブを使用する場合（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定），発行します。

注※3

TCP_NODELAYを使用する場合（コネクション定義（mcftalccn -k）のnodelayオペランドにyesを指定），発行します。

注※4

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行します。

注※5

自システムのポート番号を指定した場合，発行します。

注※6

自システムのホスト名，IPアドレスまたはポート番号を指定した場合，発行します。

図G-2　クライアント型コネクションの確立障害（相手システムのサービス未起動の場合）

（凡例）

SYN：コネクション確立要求フラグ

RST：コネクション強制切断フラグ

注※1

コネクション確立要求は，運用コマンド（mcftactcn）の入力，またはAPI（dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△')）の発行で行います。

注※2

キープアライブを使用する場合（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定），発行します。

注※3

同じ処理を行います。

注※4

TCP_NODELAYを使用する場合（コネクション定義（mcftalccn -k）のnodelayオペランドにyesを指定），発行します。

注※5

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行します。

注※6

自システムのポート番号を指定した場合，発行します。

注※7

自システムのホスト名，IPアドレスまたはポート番号を指定した場合，発行します。

注※8

最大でコネクション確立障害時の確立再試行回数（コネクション定義（mcftalccn -b）のbretrycntオペランドの指定値）だけ繰り返します。

注※9

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行しません。

注※10

コネクション確立障害時の確立再試行間隔（コネクション定義（mcftalccn -b）のbretryintオペランドの指定値）だけ待ち合わせます。

図G-3　クライアント型コネクションの確立障害（相手システム未起動またはネットワーク障害）

（凡例）

SYN：コネクション確立要求フラグ

注※1

コネクション確立要求は，運用コマンド（mcftactcn）の入力，またはAPI（dc_mcf_tactcn関数もしくはCBLDCMCF('TACTCN△△')）の発行で行います。

注※2

キープアライブを使用する場合（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定），発行します。

注※3

同じ処理を行います。

注※4

TCP_NODELAYを使用する場合（コネクション定義（mcftalccn -k）のnodelayオペランドにyesを指定），発行します。

注※5

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行します。

注※6

自システムのポート番号を指定した場合，発行します。

注※7

自システムのホスト名，IPアドレスまたはポート番号を指定した場合，発行します。

注※8

コネクション確立監視時間（コネクション定義（mcftalccn -b）のconcmptimオペランドの指定値），またはTCP/IPソケットが確立障害を検出するまで待ち合わせます。

注※9

最大でコネクション確立障害時の確立再試行回数（コネクション定義（mcftalccn -b）のbretrycntオペランドの指定値）だけ繰り返します。

注※10

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行しません。

注※11

コネクション確立障害時の確立再試行間隔（コネクション定義（mcftalccn -b）のbretryintオペランドの指定値）だけ待ち合わせます。

図G-4　サーバ型コネクションの確立

（凡例）

ACK：確認応答フラグ

SYN：コネクション確立要求フラグ

注※1

コネクション確立要求の受付開始は，運用コマンド（mcftonln）の入力，またはAPI（dc_mcf_tonln関数もしくはCBLDCMCF('TONLN△△△')）の発行で行います。

注※2

キープアライブを使用する場合（コネクション定義（mcftalccn -k）のkeepaliveオペランドにyesを指定），発行します。

注※3

TCP_NODELAYを使用する場合（コネクション定義（mcftalccn -k）のnodelayオペランドにyesを指定），発行します。

注※4

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行します。

図G-5　サーバ型コネクションの確立拒否

（凡例）

ACK：確認応答フラグ

FIN：通信終了フラグ

SYN：コネクション確立要求フラグ

注※1

コネクション確立要求の受付開始は，運用コマンド（mcftonln）の入力，またはAPI（dc_mcf_tonln関数もしくはCBLDCMCF('TONLN△△△')）の発行で行います。

注※2

次の条件のどれかに該当する場合，コネクションの確立を拒否します。

未定義の相手システムからの確立要求を受信した場合

空きコネクション（ポートフリーまたは相手アドレスチェックの抑止を指定した未確立コネクション）がない状態で確立要求を受信した場合

コネクション確立UOCで確立要求を拒否した場合

注※3

パケットの送受信は，TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは，相手システムからのACKおよびFINを待ち合わせません。

図G-6　メッセージ送信

（凡例）

ACK：確認応答フラグ

PSH：プッシュフラグ

注※

パケットの送受信は，TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは，相手システムからのACKを待ち合わせません。

図G-7　メッセージ送信の再試行

（凡例）

ACK：確認応答フラグ

PSH：プッシュフラグ

注※1

TCP/IPソケットの送信バッファが満杯の場合，送信バッファに空き領域ができるまでメッセージ送信を待ち合わせます。

注※2

コネクション定義に指定したメッセージ送信完了監視時間（mcftalccn -b sndcmptim）だけ送信処理を監視します。送達確認機能を使用する場合は，メッセージ送信成功後に相手システムからの送達確認メッセージの受信までを監視します。

注※3

パケットの送受信は，TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは，相手システムからのACKを待ち合わせません。

図G-8　メッセージ受信

（凡例）

ACK：確認応答フラグ

PSH：プッシュフラグ

図G-9　自システムからのコネクションの解放（FIN）

（凡例）

ACK：確認応答フラグ

FIN：通信終了フラグ

注※1

コネクション解放要求は，運用コマンド（mcftdctcn）の入力，またはAPI（dc_mcf_tdctcn関数もしくはCBLDCMCF('TDCTCN△△')）の発行で行います。

注※2

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行します。

注※3

パケットの送受信は，TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは，相手システムからのACKおよびFINを待ち合わせません。

注※4

OpenTP1終了時のコネクション解放では，CCLSEVTは発行されません。

図G-10　自システムからのコネクションの解放（RST）

（凡例）

RST：コネクション強制切断フラグ

注※

コネクション強制解放要求は，コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定したときに，運用コマンド（mcftdctcn -f）の入力，またはAPI（action引数にDCMCFFRCを指定したdc_mcf_tdctcn関数もしくはデータ名D1に'1'を指定したCBLDCMCF('TDCTCN△△')）の発行で行います。

図G-11　相手システムからのコネクションの解放（FIN）

（凡例）

ACK：確認応答フラグ

FIN：通信終了フラグ

注※1

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行します。

注※2

パケットの送受信は，TP1/NET/TCP/IPと非同期に行われます。TP1/NET/TCP/IPは，相手システムからのACKを待ち合わせません。

図G-12　相手システムからのコネクションの解放（RST）

（凡例）

RST：コネクション強制切断フラグ

注※

障害などによるコネクション解放時にRSTパケットを送信する場合（コネクション定義（mcftalccn -f）のcnreleaseオペランドにrstを指定），発行しません。

付録H　MCF性能検証用トレースの取得

TP1/Message Controlを使用したメッセージ送受信での主なイベントで，MCF識別子などのトレース情報を取得しています。これをMCF性能検証用トレースと呼びます。

ここでは，MCF性能検証用トレースのMCF固有情報の出力情報，取得タイミング，および取得量について説明します。

＜この節の構成＞

付録H.1　MCF固有情報の出力情報

付録H.2　MCF性能検証用トレースの取得タイミング

付録H.3　MCF性能検証用トレースの取得量

付録H.1　MCF固有情報の出力情報

ここでは，メッセージ送受信時，およびUOC呼び出し時のMCF性能検証用トレースのダンプ出力情報について説明します。

＜この項の構成＞

(1)　メッセージ送受信時

(2)　UOC呼び出し時

(1)　メッセージ送受信時

論理端末単位に相手システムと送受信するメッセージの情報を取得します。MCF固有情報のダンプ出力情報を，次の表に示します。

表H-1　メッセージ送受信時のMCF固有情報のダンプ出力情報

イベントID | オフセット
0x0000～0x0003 | 0x0004～0x0007 | 0x0008～0x000f | 0x0010～0x0017 | 0x0018～0x001f
0xa000 | MCF識別子 | スレッドID | － | 入力元論理端末名 | －
0xa001 | － | 出力先論理端末名 | －

（凡例）

－：情報を取得しません。

(2)　UOC呼び出し時

TP1/NET/TCP/IPで使用するUOCの情報を取得します。MCF固有情報のダンプ出力情報，およびUOC名称の出力情報を，以降の表に示します。

表H-2　UOC呼び出し時のMCF固有情報のダンプ出力情報

イベントID | オフセット
0x0000～0x0003 | 0x0004～0x0007 | 0x0008～0x000f | 0x0010～0x0017 | 0x0018～0x001f
0xa070 | MCF識別子 | スレッドID | － | － | UOC名称
0xa071 | － | －

（凡例）

－：情報を取得しません。

表H-3　UOC名称の出力情報

UOCの種類 | UOC名称出力情報
入力セグメント判定UOC | "SEGCHK"
入力メッセージ編集UOC | "MSGRCV"
出力メッセージ編集UOC | "MSGSEND"
送信メッセージ通番編集UOC | "SEND_UOC"
コネクション確立UOC | "ASSCTN"
受信メッセージ判定UOC | "MSGREP"
受信メッセージ保留判定UOC | "MSGHLD"

付録H.2　MCF性能検証用トレースの取得タイミング

MCF性能検証用トレースの取得タイミングを，使用する送受信形態別に説明します。

＜この項の構成＞

(1)　一方送信メッセージ送信時

(2)　一方送信メッセージ受信時

(3)　問い合わせメッセージ受信時

(4)　同期型メッセージ送信時

(5)　同期型メッセージ受信時

(6)　同期型メッセージ送受信時

(1)　一方送信メッセージ送信時

一方送信メッセージ送信時のMCF性能検証用トレースの取得タイミングについて，次の図に示します。

図H-1　一方送信メッセージ送信時のMCF性能検証用トレースの取得タイミング（メッセージ送達確認機能を使用しない場合）

図H-2　一方送信メッセージ送信時のMCF性能検証用トレースの取得タイミング（DCCMとのメッセージ送達確認機能を使用する場合）

図H-3　一方送信メッセージ送信時のMCF性能検証用トレースの取得タイミング（任意の相手システムとのメッセージ送達確認機能を使用する場合）

(2)　一方送信メッセージ受信時

一方送信メッセージ受信時のMCF性能検証用トレースの取得タイミングについて，次の図に示します。

図H-4　一方送信メッセージ受信時のMCF性能検証用トレースの取得タイミング（メッセージ送達確認機能を使用しない場合）

図H-5　一方送信メッセージ受信時のMCF性能検証用トレースの取得タイミング（DCCMとのメッセージ送達確認機能を使用する場合）

図H-6　一方送信メッセージ受信時のMCF性能検証用トレースの取得タイミング（任意の相手システムとのメッセージ送達確認機能を使用する場合）

(3)　問い合わせメッセージ受信時

問い合わせメッセージ受信時のMCF性能検証用トレースの取得タイミングについて，次の図に示します。

図H-7　問い合わせメッセージ受信時のMCF性能検証用トレースの取得タイミング

(4)　同期型メッセージ送信時

同期型メッセージ送信時のMCF性能検証用トレースの取得タイミングについて，次の図に示します。

図H-8　同期型メッセージ送信時のMCF性能検証用トレースの取得タイミング

(5)　同期型メッセージ受信時

同期型メッセージ受信時のMCF性能検証用トレースの取得タイミングについて，次の図に示します。

図H-9　同期型メッセージ受信時のMCF性能検証用トレースの取得タイミング

(6)　同期型メッセージ送受信時

同期型メッセージ送受信時のMCF性能検証用トレースの取得タイミングについて，次の図に示します。

図H-10　同期型メッセージ送受信時のMCF性能検証用トレースの取得タイミング

付録H.3　MCF性能検証用トレースの取得量

1回のメッセージ送受信で取得するMCF性能検証用トレースのトレース取得量を，次の表に示します。

表H-4　MCF性能検証用トレースの取得量

メッセージの送受信形態
トレース取得量
（単位：キロバイト）

一方送信メッセージの送信
メッセージ送達確認機能未使用
1.8

DCCMとのメッセージ送達確認機能を使用
1.9

任意の相手システムとのメッセージ送達確認機能を使用
2.4

一方送信メッセージの受信
メッセージ送達確認機能未使用
2.3

DCCMとのメッセージ送達確認機能を使用
2.5

任意の相手システムとのメッセージ送達確認機能を使用
2.8

問い合わせメッセージの受信
3.5

同期型メッセージの送信
0.8

同期型メッセージの受信
0.9

同期型メッセージの送受信
1.4

付録I　ユーザアプリケーションプログラムの作成例

メッセージ送受信処理の流れを，次の図に示します。

図I-1　処理の流れ

ここでは，図に示した処理の流れのコーディング例，およびTP1/NET/TCP/IPが提供しているサンプルの格納場所について説明します。

＜この節の構成＞

付録I.1　コーディング例

付録I.2　提供するサンプルコーディング

付録I.1　コーディング例

図I-1の処理の流れについて，使用する言語ごとにUAPのコーディング例を示します。

＜この項の構成＞

(1)　C言語（K&R版）

(2)　COBOL言語

(3)　データ操作言語

(1)　C言語（K&R版）

C言語（K&R版）を使用したUAPのコーディング例を次に示します。

/********************************************************/
/*    C言語を使用したUAP作成例                             */
/********************************************************/
#include <dcmcf.h>

void ex_uap1()
{
   char termnam[9];
   DCLONG rdataleng;
   DCLONG time;
   struct{
       char mcfctl[8];
       DCLONG msglen;
       char recvdata[2036];
   }recvmsg;
   struct{
       char mcfctl[8];
       DCLONG msglen;
       char senddata1[500];
   }sendmsg;
   char senddata2[512];
   static char resv01[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   static char resv02[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   static char resv03[9] = "¥0" ;  /*** 予備領域の初期化 ***/
   char *workadd = (char *)&recvmsg;

   dc_mcf_receive(DCMCFFRST,DCNOFLAGS,termnam,resv01,
                  workadd,&rdataleng,2048,&time) ;
                                /* 一方送信メッセージの受信 */
   /***************************************/
   /*********   データの処理     ************/
   /***************************************/

   dc_mcf_send(DCMCFEMI,DCMCFOUT,"PRINTER1",resv01,
               senddata2,504,resv02,DCNOFLAGS);
                                /* 一方送信メッセージの送信 */
   sendmsg.msglen = 504;       /* セグメント長の設定 */
   dc_mcf_send(DCMCFEMI,DCMCFOUT,"TERMNAM1",resv01,
               (char *)&sendmsg,504,resv02,DCNOFLAGS);
/* メッセージの送信 */
}
/********   C言語によるUAP 終わり   ********/

(2)　COBOL言語

COBOL言語を使用したUAPのコーディング例を次に示します。

/*******************************************************/
/******    COBOL言語を使用したUAP作成例            ********/
/*******************************************************/

IDENTIFICATION DIVISION.
PROGRAM-ID. EXUAP1.
         :
ENVIRONMENT DIVISION.
         :
DATA DIVISION.
         :
WORKING-STORAGE SECTION.
         :
01  RCV.
 02  MSG-REC         PIC X(8) VALUE 'RECEIVE '.
 02  STATUS-CODE1    PIC X(5).
 02  FILLER          PIC X(3).
 02  SEG-CODE        PIC X(4) VALUE 'FRST'.
 02  RTN-CODE        PIC X(4) VALUE SPACE.
 02  DAY-ID          PIC 9(8).
 02  TIME-ID         PIC 9(8).
 02  SEG-LENG        PIC 9(9) COMP VALUE 2048.
 02  MCFUSE01        PIC X(4) VALUE SPACE.
 02  MCFUSE02        PIC X(4) VALUE SPACE.
 02  MCFUSE03        PIC X(4) VALUE SPACE.
 02  MCFUSE04        PIC X(4) VALUE SPACE.
 02  MCFUSE05        PIC X(8) VALUE SPACE.
 02  MCFUSE06        PIC X(4) VALUE SPACE.
 02  MCFUSE07        PIC X(8) VALUE SPACE.
 02  MCFUSE08        PIC X(4) VALUE SPACE.
 02  MCFUSE09        PIC 9(9) COMP VALUE ZERO.
 02  MCFUSE10        PIC 9(9) COMP VALUE ZERO.
 02  MCFUSE11        PIC X(1) VALUE SPACE.
 02  MCFUSE12        PIC X(1) VALUE SPACE.
 02  MCFUSE13        PIC X(14) VALUE LOW-VALUE.
01  CD1.
 02  SEG-CODE1       PIC X(4) VALUE SPACE.
 02  TERM-CODE       PIC X(8).
 02  MCFUSE14        PIC X(8).
 02  MCFUSE15        PIC X(8) VALUE SPACE.
 02  MCFUSE16        PIC X(28) VALUE LOW-VALUE.
01  DATA1.
 02  MSGSEG-LENG1    PIC 9(9) COMP.
 02  MCFUSE17        PIC X(4).
 02  MCFUSE18        PIC X(2).
 02  MCFUSE19        PIC X(1).
 02  MCFUSE20        PIC X(1).
 02  REC-MSGSEG1.
   03  MSG-LENG      PIC 9(9) COMP.
   03  RECV-DATA     PIC X(2036).
01  SND1.
 02  MSG-SEND        PIC X(8) VALUE 'SEND    '.
 02  STATUS-CODE2    PIC X(5).
 02  FILLER          PIC X(3).
 02  MCFUSE21        PIC X(4) VALUE SPACE.
 02  MCFUSE22        PIC X(4) VALUE SPACE.
 02  MCFUSE23        PIC 9(8).
 02  MCFUSE24        PIC 9(8).
 02  MCFUSE25        PIC 9(9) COMP VALUE ZERO.
 02  SEND-SEG        PIC X(4) VALUE 'EMI '.
 02  MCFUSE26        PIC X(4) VALUE SPACE.
 02  SEND-NORM       PIC X(4) VALUE 'NORM'.
 02  SEND-NO         PIC X(4) VALUE 'NSEQ'.
 02  MCFUSE27        PIC X(8) VALUE SPACE.
 02  MCFUSE28        PIC X(4) VALUE SPACE.
 02  MCFUSE29        PIC X(8) VALUE SPACE.
 02  MCFUSE30        PIC X(4) VALUE SPACE.
 02  MCFUSE31        PIC 9(9) COMP VALUE ZERO.
 02  MCFUSE32        PIC 9(9) COMP.
 02  MCFUSE33        PIC X(1) VALUE SPACE.
 02  MCFUSE34        PIC X(1) VALUE SPACE.
 02  MCFUSE35        PIC X(14) VALUE LOW-VALUE.
01  CD2.
 02  SENDSEG-CODE2   PIC X(4) VALUE 'OUT '.
 02  TERM-CODE2      PIC X(8) VALUE 'PRINTER1'.
 02  MCFUSE36        PIC X(8) VALUE SPACE.
 02  MCFUSE37        PIC X(8) VALUE SPACE.
 02  MCFUSE38        PIC X(28) VALUE LOW-VALUE.
01  DATA2.
 02  MSGSEG-LENG2    PIC 9(9) COMP VALUE 512.
 02  MCFUSE39        PIC X(8).
 02  REC-MSGSEG2     PIC X(512).
01  SND2.
 02  MSG-SEND        PIC X(8) VALUE 'SEND    '.
 02  STATUS-CODE3    PIC X(5).
 02  FILLER          PIC X(3).
 02  MCFUSE40        PIC X(4) VALUE SPACE.
 02  MCFUSE41        PIC X(4) VALUE SPACE.
 02  MCFUSE42        PIC 9(8).
 02  MCFUSE43        PIC 9(8).
 02  MCFUSE44        PIC 9(9) COMP VALUE ZERO.
 02  SEND-SEG1       PIC X(4) VALUE 'EMI '.
 02  MCFUSE45        PIC X(4) VALUE SPACE.
 02  SEND-NORM1      PIC X(4) VALUE 'NORM'.
 02  SEND-NO1        PIC X(4) VALUE 'NSEQ'.
 02  MCFUSE46        PIC X(8) VALUE SPACE.
 02  MCFUSE47        PIC X(4) VALUE SPACE.
 02  MCFUSE48        PIC X(8) VALUE SPACE.
 02  MCFUSE49        PIC X(4) VALUE SPACE.
 02  MCFUSE50        PIC 9(9) COMP VALUE ZERO.
 02  MCFUSE51        PIC 9(9) COMP.
 02  MCFUSE52        PIC X(1) VALUE SPACE.
 02  MCFUSE53        PIC X(1) VALUE SPACE.
 02  MCFUSE54        PIC X(14) VALUE LOW-VALUE.
01  CD3.
 02  SENDSEG-CODE3   PIC X(4) VALUE 'OUT '.
 02  TERM-CODE3      PIC X(8) VALUE 'TERMNAM1'.
 02  MCFUSE55        PIC X(8) VALUE SPACE.
 02  MCFUSE56        PIC X(8) VALUE SPACE.
 02  MCFUSE57        PIC X(28) VALUE LOW-VALUE.
01  DATA3.
 02  MSGSEG-LENG3    PIC 9(9) COMP VALUE 512.
 02  MCFUSE58        PIC X(8).
 02  REC-MSGSEG3.
   03  MSG-LENG      PIC 9(9) COMP.
   03  SEND-DATA     PIC X(508).
         :
         :
PROCEDURE DIVISION.
CALL 'CBLDCMCF' USING RCV CD1 DATA1.    
/* 一方送信メッセージの受信 */

/**********************************/
/*********    処理1     ************/
/**********************************/

CALL 'CBLDCMCF' USING SND1 CD2 DATA2.  
/* 一方送信メッセージの送信 */

/**********************************/
/*********    処理2     ************/
/**********************************/

MOVE 512 TO MSG-LENG OF REC-MSGSEG3.    
/* セグメント長の設定 */
CALL 'CBLDCMCF' USING SND2 CD3 DATA3.  
/* メッセージの送信 */

/**********************************/
/*********    処理3     ************/
/**********************************/

EXIT PROGRAM.

/******   COBOL言語によるUAP 終わり   ******/

(3)　データ操作言語

データ操作言語を使用したUAPのコーディング例を次に示します。

*
*****************************************************
*    MHPサービスプログラム                             *
*****************************************************
*
IDENTIFICATION DIVISION.

PROGRAM-ID. SVRA.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
*
*****************************************************
*    ワーク変数                                       *
*****************************************************
*
DATA DIVISION.
WORKING-STORAGE SECTION.
*
****************************************************
*    メッセージ受信領域                               *
****************************************************
*
 01  RECV-AREA.
   02  RE-DATALENG       PIC 9(4) COMP VALUE 1028.
   02  RE-RSV1           PIC X(2).
   02  RECV-MSG.
     03  MSG-LENG        PIC 9(9).
     03  REC-DATA        PIC X(1020).
*
****************************************************
*    一方送信メッセージ送信領域                         *
****************************************************
*
 01  SEND-IO-AREA1.
   02  IO-DATALENG       PIC 9(4) COMP VALUE 512.
   02  IO-RSV1           PIC X(2).
   02  IO-DATA           PIC X(508).
*
****************************************************
*    メッセージ送信領域                               *
****************************************************
*
 01  SEND-IO-AREA2.
   02  IO-DATALENG       PIC 9(4) COMP VALUE 516.
   02  IO-RSV1           PIC X(2).
   02  SEND-MSG.
     03  MSG-LENG        PIC 9(9) COMP.
     03  SEND-DATA       PIC X(508).
*
*****************************************************
*    通信記述項                                       *
*****************************************************
*
COMMUNICATION SECTION.
*
*****************************************************
*    メッセージの受信の通信記述項                        *
*****************************************************
*
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.
*
*****************************************************
*    一方送信メッセージの送信の通信記述項                 *
*****************************************************
*
CD SEND-IO-1
  FOR OUTPUT
  STATUS KEY IS        SE-STATUS-IO-1
  SYMBOLIC TERMINAL IS SE-TERMNAM-IO-1.
*
****************************************************
*    メッセージの送信の通信記述項                       *
****************************************************
*
CD SEND-IO-2
  FOR OUTPUT
  STATUS KEY IS        SE-STATUS-IO-2
  SYMBOLIC TERMINAL IS SE-TERMNAM-IO-2.
*

PROCEDURE DIVISION.

*
****************************************************
*    メッセージの受信の通信記述項                       *
****************************************************
*
  RECEIVE RECV-INF
          FIRST SEGMENT
          INTO RECV-AREA.
*
****************************************************
*    一方送信メッセージの送信の通信記述項                *
****************************************************
*
 MOVE 'PRINTER1' TO SE-TERMNAM-IO-1.
 SEND SEND-IO-1
      FROM SEND-IO-AREA1.
*
****************************************************
*    メッセージの送信の通信記述項                       *
****************************************************
*
 MOVE 512 TO MSG-LENG OF SEND-MSG.
 MOVE 'TERMNAM1' TO SE-TERMNAM-IO-2.
 SEND SEND-IO-2
      FROM SEND-IO-AREA2.
 EXIT PROGRAM.

付録I.2　提供するサンプルコーディング

ここでは，TP1/NET/TCP/IPが提供するサンプルコーディングの格納場所について言語ごとに示します。なお，図I-1に示した処理の流れのサンプルコーディングはUNIX版だけが提供しています。Windows版で提供しているサンプルコーディングの格納場所についてはTP1/NET/TCP/IPのリリースノートを参照してください。

＜この項の構成＞

(1)　C言語

(2)　COBOL言語

(3)　データ操作言語

(1)　C言語

C言語のサンプルコーディングは，次のファイルで提供しています。

適用OSがLinuxの場合

/opt/OpenTP1/examples/mcf/TCPIP/aplib/c/ap.c

適用OSがAIX，HP-UXまたはSolarisの場合

/BeTRAN/examples/mcf/TCPIP/aplib/c/ap.c

(2)　COBOL言語

COBOL言語のサンプルコーディングは，次のファイルで提供しています。

適用OSがLinuxの場合

/opt/OpenTP1/examples/mcf/TCPIP/aplib/cobol/ap.cbl

適用OSがAIX，HP-UXまたはSolarisの場合

/BeTRAN/examples/mcf/TCPIP/aplib/cobol/ap.cbl

(3)　データ操作言語

データ操作言語のサンプルコーディングは，次のファイルで提供しています。

適用OSがLinuxの場合

/opt/OpenTP1/examples/mcf/TCPIP/aplib/dml/ap.cbl

適用OSがAIX，HP-UXまたはSolarisの場合

/BeTRAN/examples/mcf/TCPIP/aplib/dml/ap.cbl

付録J　理由コード一覧

ここでは，ERREVT2発生時，CERREVT発生時，およびMDELEVT発生時の理由コードを示します。

ERREVT2発生時の理由コードを次の表に示します。

表J-1　ERREVT2の理由コード

C言語の理由コード
（16進数字）
COBOL言語の理由コード
（外部10進数字）
ERREVT2の通知理由

DCMCF_NO_SERV（0010）
0010
アプリケーション名に相当するMHPのサービスがありません。

DCMCF_SCD_ERR（0020）
0020
RPC障害，サーバ未起動などによってMHPまたはSPPの起動に失敗しました。

DCMCF_QUE_BUF_ERR（0030）
0030
メモリ不足のため，入力キューへの書き込みに失敗しました。

DCMCF_QUE_FIL_OVER（0031）
0031
キューファイルが満杯のため，入力キューへの書き込みに失敗しました。

DCMCF_QUE_LIMIT_OVER（0032）
0032
入力メッセージ最大格納数の定義指定値を超えたため，入力キューに書き込みませんでした。

DCMCF_QUE_IO_ERR（0033）
0033
入力キューへの書き込み時に障害が発生しました。

DCMCF_AP_CLOSE（0040）
0040
MHPのアプリケーションが閉塞中です。

DCMCF_AP_SECURE（0041）
0041
MHPのアプリケーションがセキュア状態です。

DCMCF_SERV_CLOSE（0042）
0042
MHPのサービスまたはサービスグループが閉塞中です。

DCMCF_SERV_SECURE（0043）
0043
MHPのサービスグループがセキュア状態です。

DCMCF_ABNORMAL_END（0050）
0050
MHPのセグメント受信関数にセグメントを渡す前に，MHPの異常が発生しました。

CERREVT発生時の理由コードを，次の表に示します。

表J-2　CERREVT発生時の理由コード

理由コード1
（16進数字）
理由コード2（16進数字）
発生条件
発生個所※1

DCMTCP_RSN1_MCF（00000001​）（MCF障害）
DCMTCP_RSN2_CNNC（00000000​）
コネクション確立不可能
コネクション

DCMTCP_RSN2_CNER（00000001​）
コネクション切断
コネクション

DCMTCP_RSN2_RBFOF（00000002​）
受信バッファオーバフロー
コネクション

DCMTCP_RSN2_SBFOF（00000003​）
送信バッファオーバフロー
論理端末

DCMTCP_RSN2_ERROR（00000004​）
TP1/NET/TCP/IP内部論理矛盾
コネクション

DCMTCP_RSN2_OTGET（00000005​）
出力キュー読み込み障害
論理端末

DCMTCP_RSN2_NOBUF（00000007​）
受信バッファ取得失敗
コネクション

DCMTCP_RSN2_SNDER（00000008​）
メッセージ送信不可能
コネクション
論理端末

DCMTCP_RSN2_NXTTO（00000009​）
後続メッセージ監視タイムアウト
コネクション

DCMTCP_RSN2_SNBUF（0000000​A）
送信バッファ取得失敗
論理端末

DCMTCP_RSN2_SRTO（0000000​B）
同期型メッセージの送受信タイムアウト
コネクション

DCMTCP_RSN2_DCTLE（0000000​C）
論理端末仕掛り中のmcftdctleコマンド要求
コネクション

DCMTCP_RSN2_RMSGLN（0000000​D）
メッセージサイズエリア内容不正
コネクション

DCMTCP_RSN2_NOTRFTO（0000000​F）
無通信状態監視によるタイムアウト発生
コネクション

DCMTCP_RSN2_ANBUF（00000010​）
送達確認メッセージ（応答専用データ）用送信バッファ取得失敗
コネクション

DCMTCP_RSN2_ERRMSG（00000011​）
不正データ受信
コネクション

DCMTCP_RSN2_ACKRTO（00000012​）
送達確認メッセージ（応答専用データ）受信監視タイムアウト
コネクション

DCMTCP_RSN2_ACKSTO（00000013​）
送達確認メッセージ（応答専用データ）送信完了監視タイムアウト
コネクション

DCMTCP_RSN2_RCVCOL（00000014​）
送達確認メッセージ（応答専用データ）送信処理中一方送信メッセージの受信
コネクション

DCMTCP_RSN2_RVFAIL（00000015​）
受信メッセージ通知失敗
コネクション

DCMTCP_RSN2_SRCOL（00000016​）
送受信メッセージ衝突
コネクション

DCMTCP_RSN2_DCTCNF（00000017​）
運用コマンドまたはAPIによる強制解放
コネクション

DCMTCP_RSN2_REPLACE（00000018​）
コネクションリプレースによる切断
コネクション

DCMTCP_RSN2_HLDLIMT（00000019​）
受信メッセージの最大保留数の超過
コネクション

DCMTCP_RSN2_NOCONT（0000001​A）
次起動アプリケーション型不正
コネクション

DCMTCP_RSN1_UOC（00000003​）（UOC障害）
UOCからの詳細リターンコード
入力セグメント判定UOCエラーリターン
コネクション

UOCからの詳細リターンコード
入力，および出力メッセージ編集UOCエラーリターン
論理端末

DCMTCP_RSN2_BCNT（00000001​）
使用バッファ数不正
論理端末

DCMTCP_RSN2_SEG（00000002​）
有効セグメント不正
論理端末

DCMTCP_RSN2_BADR（00000003​）
編集バッファアドレス不正
論理端末

DCMTCP_RSN2_TIVL（00000005​）
タイマ値不正
コネクション

DCMTCP_RSN2_TICD（00000006​）
タイマセット指示種別不正
コネクション

DCMTCP_RSN2_SEGEND（00000007​）
セグメント完/未完種別不正
コネクション

DCMTCP_RSN2_NXTSIZ（00000008​）
次メッセージサイズ不正
コネクション

DCMTCP_RSN2_NXTADR（00000009​）
次メッセージ先頭アドレス不正
コネクション

DCMTCP_RSN2_NOWSIZ（0000000​A）
該当メッセージサイズ不正
コネクション

DCMTCP_RSN2_NOWSSI（0000000​B）
残留該当メッセージサイズ不正
コネクション

DCMTCP_RSN2_SPCCLS（00000012​）
受信メッセージ判定UOCでのコネクション解放指示
コネクション

DCMTCP_RSN2_SPCSTP（00000013​）
受信メッセージ判定UOCでの送信停止指示
論理端末

DCMTCP_RSN2_MRPARM（00000014​）
受信メッセージ判定UOCでのパラメタ不正
コネクション

DCMTCP_RSN2_MHPARM（00000015​）
受信メッセージ保留判定UOCでのパラメタ不正
コネクション

DCMTCP_RSN1_CLS※²（00000004​）
－
相手局からのコネクション解放
コネクション

（凡例）

－：該当する内容がないことを表します。

注※1

発生個所に対応した障害要因コードが，CERREVTのerr_factに設定されます。

注※2

コネクション定義（mcftalccn -f）でcerrを指定した場合だけ有効になります。

MDELEVT発生時の理由コードを，次の表に示します。

表J-3　MDELEVT発生時の理由コード

理由コード（16進数字） | MDELEVTの通知理由
DCMTCP_DRSN_UIND（00000001​） | 任意の相手システムとのメッセージ送達確認を使用している（コネクション定義（mcftalcle -u）のdelichkオペランドにuseを指定）場合に，受信メッセージ判定UOCで受信したメッセージの種別に破棄メッセージを指定しました。
DCMTCP_DRSN_CNDCT（00000003​） | コネクション再確立時の未送信メッセージの送信抑止機能を使用している（論理端末定義（mcftalcle -d）のreplacemsgオペランドにdiscardを指定）場合に，MHPでメッセージ受信後にコネクションが再確立されました。
DCMTCP_DRSN_RCVDUP(00000004​) | 問い合わせ応答中および継続問い合わせ応答中の論理端末がメッセージを受信したため，破棄しました。
DCMTCP_DRSN_SRANS(00000005​) | メッセージ送信処理中に問い合わせメッセージを受信したため，破棄しました。
DCMTCP_DRSN_SRCONT(00000006​) | メッセージ送信処理中に継続問い合わせメッセージを受信したため，破棄しました。

付録K　用語解説

英字｜カ行｜サ行｜ナ行｜ハ行｜ラ行

英字

AJ（メッセージ送信完了ジャーナル）

MCFが取得する統計用の履歴情報の一つです。メッセージ出力通番，出力先論理端末名などで構成されます。

AJの取得タイミングは，メッセージ送達確認機能を使用しているかどうかで異なります。メッセージ送達確認機能を使用していない場合は，メッセージをTCP/IPソケットの送信バッファにすべて格納した直後です。メッセージ送達確認機能を使用している場合は，メッセージをTCP/IPソケットの送信バッファにすべて格納したあと，相手システムから送達確認メッセージまたは応答専用データを受信した直後です。

GJ（メッセージ受信ジャーナル）

MCFが取得する統計用の履歴情報の一つです。入力メッセージサイズ，入力論理端末名などで構成されます。

GJの取得タイミングは，非同期受信関数を発行して，MHPが受信メッセージを入力キューから取り出した直後です。

IJ（メッセージ入力ジャーナル）

MCFが取得する統計用の履歴情報の一つです。メッセージ入力通番，入力論理端末名，入力メッセージ種別，および入力メッセージなどで構成されます。

IJの取得タイミングは，相手システムから受信したメッセージを入力キューに格納する直前です。

MJ（メッセージジャーナル）

MCFが取得する統計用の履歴情報の一つです。入力論理端末名または出力論理端末名，メッセージジャーナル種別，入力または出力メッセージ（入力メッセージ編集前のデータ，または出力メッセージ編集後のデータ）などで構成されます。

MJの取得タイミングは，入力メッセージの場合，入力メッセージ編集UOCを呼び出す直前です。また，出力メッセージの場合，出力メッセージ編集UOCを呼び出した直後です。

OJ（メッセージ出力ジャーナル）

MCFが取得する統計用の履歴情報の一つです。メッセージ出力通番，出力論理端末名，出力メッセージ種別，出力メッセージなどで構成されます。

OJの取得タイミングは，非同期送信関数を発行して，UAPが送信メッセージを出力キューに格納した直後です。

TCP/IPプロトコル

米国防省を中心に開発されたプロトコル群の総称です。主として，LAN上のワークステーションおよびパーソナルコンピュータ間での通信プロトコルに使用され，事実上の標準プロトコルとなっています。

カ行

キープアライブ

相手システムに一定間隔でパケットを送信することで，コネクション切断を検出するための機能です。

クライアント

コネクション確立時，相手システムに対して，確立要求をする機能およびシステムです。

コネクション

TP1/NET/TCP/IPがAP間通信をするときに，自システムと相手システムの間に確立する論理的通信路です。

サ行

サーバ

コネクション確立時，相手システムからの確立要求を受ける機能およびシステムです。

出力キュー

処理の結果として出力メッセージを管理する待ち行列です。

ナ行

入力キュー

処理要求として入力メッセージを管理する待ち行列です。

ハ行

ポート番号

ネットワーク上で提供する，各サービスに付ける固有の番号です。

ラ行

論理端末

TP1/NET/TCP/IPとUAPとの通信接点です。TP1/NET/TCP/IPとUAPは，論理端末単位にメッセージの送受信をします。

索引

[Ａ][Ｂ][Ｃ][Ｄ][Ｅ][Ｇ][Ｈ][Ｉ][Ｋ][Ｌ][Ｍ][Ｎ][Ｏ][Ｐ][Ｑ][Ｒ][Ｓ][Ｔ][Ｕ]
[ア行][カ行][サ行][タ行][ナ行][ハ行][マ行][ヤ行][ラ行]

(英字)

(Ａ)

addrchk〔mcftalccn（コネクション定義の開始）〕

aj〔mcftalcle（論理端末定義）〕

AJ〔用語解説〕

AP間通信の概要

AP間通信の形態

(Ｂ)

bretry〔mcftalccn（コネクション定義の開始）〕

bretrycnt〔mcftalccn（コネクション定義の開始）〕

bretryint〔mcftalccn（コネクション定義の開始）〕

(Ｃ)

CBLDCMCF('CONTEND△')

CBLDCMCF('RECEIVE△')

CBLDCMCF('RECVSYNC')

CBLDCMCF('REPLY△△△')

CBLDCMCF('RESEND△△')

CBLDCMCF('SEND△△△△')

CBLDCMCF('SENDRECV')

CBLDCMCF('SENDSYNC')

CBLDCMCF('TACTCN△△')

CBLDCMCF('TACTLE△△')

CBLDCMCF('TDCTCN△△')

CBLDCMCF('TDCTLE△△')

CBLDCMCF('TEMPGET△')

CBLDCMCF('TEMPPUT△')

CBLDCMCF('TLSCN△△△')

CBLDCMCF('TLSLE△△△')

CBLDCMCF('TLSLN△△△')

CBLDCMCF('TOFLN△△△')

CBLDCMCF('TONLN△△△')

CCLSEVT〔MCFイベント情報の内容〕〔COBOL言語〕

CCLSEVT〔形式〕

CERREVT〔MCFイベント情報の内容〕〔COBOL言語〕

CERREVT〔形式〕

CERREVT発生時の理由コード

chgconn〔mcftalccn（コネクション定義の開始）〕

cnerrlog

cnrelease

COBOL-UAP作成用プログラムインタフェース

COBOL-UAP作成用プログラムインタフェースの一覧

COBOL言語のプログラムインタフェース

COBOL言語のプログラムインタフェースの一覧

concmptim〔mcftalccn（コネクション定義の開始）〕

COPNEVT〔MCFイベント情報の内容〕〔COBOL言語〕

COPNEVT〔形式〕

count〔mcftalccn（コネクション定義の開始）〕

C言語のライブラリ関数

C言語のライブラリ関数に対応する機能の一覧

C言語のライブラリ関数の一覧

(Ｄ)

dc_mcf_contend

dc_mcf_receive

dc_mcf_recvsync

dc_mcf_reply

dc_mcf_resend

dc_mcf_send

dc_mcf_sendrecv

dc_mcf_sendsync

dc_mcf_tactcn

dc_mcf_tactle

dc_mcf_tdctcn

dc_mcf_tdctle

dc_mcf_tempget

dc_mcf_tempput

dc_mcf_tlscn

dc_mcf_tlsle

dc_mcf_tlsln

dc_mcf_tofln

dc_mcf_tonln

DCCM

DCCMII/TCPおよびDCCM3/TCPの通信定義との関係

DCCMからの一方受信時の処理の流れ

DCCMとのメッセージ衝突

DCCMへの一方送信時の処理の流れ

delichk〔mcftalccn（コネクション定義の開始）〕

DISABLE

dmsgcnt〔mcftalcle（論理端末定義）〕

(Ｅ)

ERREVT1〔MCFイベント情報の内容〕〔COBOL言語〕

ERREVT1〔形式〕

ERREVT2〔MCFイベント情報の内容〕〔COBOL言語〕

ERREVT2〔形式〕

ERREVT2の理由コード

ERREVT3〔MCFイベント情報の内容〕〔COBOL言語〕

ERREVT3〔形式〕

ERREVTA〔MCFイベント情報の内容〕〔COBOL言語〕

ERREVTA〔形式〕

(Ｇ)

GJ〔用語解説〕

(Ｈ)

holdlimit〔mcftalccn（コネクション定義の開始）〕

hostname〔mcftalccn（コネクション定義の開始）〕

(Ｉ)

IJ〔用語解説〕

ipaddr〔mcftalccn（コネクション定義の開始）〕

(Ｋ)

keepalive〔mcftalccn（コネクション定義の開始）〕

KFCA14877-Iメッセージが出力された場合

kind〔mcftalccn（コネクション定義の開始）〕

(Ｌ)

listen〔mcftalccn（コネクション定義の開始）〕

lscnfmt〔mcftalccn（コネクション定義の開始）〕

(Ｍ)

masm〔mcftalccn（コネクション定義の開始）〕

mastercn〔mcftalccn（コネクション定義の開始）〕

max_open_fds

max_socket_descriptors

MCF

mcfaalcap（アプリケーション属性定義）

mcfmuap

mcftactcn

mcftactle

mcftalccn

mcftalced

mcftalcle

mcftchcn

mcftcp

mcftcpr

mcftdctcn

mcftdctle

mcftendct

mcftlscn

mcftlscnコマンドの出力形式

mcftlsle

mcftlsln

mcftofln

mcftonln

mcfttrc

MCFアプリケーション定義

MCFイベントインタフェース

MCFイベント処理用MHP

MCFイベント通知時のセグメント構成

MCFイベントの共通ヘッダ

MCFイベントの種類

MCF固有情報の出力情報

MCFサービス名の登録

MCF性能検証用トレースの取得

MCF性能検証用トレースの取得タイミング

MCF性能検証用トレースの取得量

MCF通信構成定義

MCF通信プロセスでアクセスするファイルの最大数

MCF定義オブジェクトの解析

MCF定義オブジェクトの生成

MCFで使用する定義ファイル

MCFトレースで取得する送受信メッセージのサイズ〔バージョン5以前からの移行〕

MCFトレースに取得する送受信メッセージのサイズ

MCFトレースファイルの見積もり式

MCFマネジャ定義

MCFメイン関数のコーディング概要（ANSI C，C++の場合）

MCFメイン関数のコーディング概要（K＆R版 Cの場合）

MCFメイン関数の作成

MCFメイン関数のディレクトリへの組み込み方法

MDELEVT

MJ〔用語解説〕

mmsgcnt〔mcftalcle（論理端末定義）〕

mode〔mcftalccn（コネクション定義の開始）〕

modelname〔mcftalccn（コネクション定義の開始）〕

modelname〔mcftalcle（論理端末定義）〕

msgbuf〔mcftalccn（コネクション定義の開始）〕

msghold〔mcftalccn（コネクション定義の開始）〕

msgsize〔mcfttrc（トレース環境定義）〕

(Ｎ)

nodelay〔mcftalccn（コネクション定義の開始）〕

notrftime〔mcftalccn（コネクション定義の開始）〕

ntime〔mcftalccn（コネクション定義の開始）〕

ntimer〔mcftalccn（コネクション定義の開始）〕

(Ｏ)

ohostname〔mcftalccn（コネクション定義の開始）〕

oipaddr〔mcftalccn（コネクション定義の開始）〕

OJ〔用語解説〕

OpenTP1システムの変更に影響する定義

OpenTP1終了中の相手システムからのコネクション確立

OpenTP1プロセスサービス

OpenTP1への組み込み方法

oportno〔mcftalccn（コネクション定義の開始）〕

(Ｐ)

portno〔mcftalccn（コネクション定義の開始）〕

(Ｑ)

quegrpid〔mcftalcle（論理端末定義）〕

quekind〔mcftalcle（論理端末定義）〕

(Ｒ)

rcvbuf〔mcftalccn（コネクション定義の開始）〕

RECEIVE ,[2]

recvtim〔mcfmuap（UAP共通定義）〕

releaselog

RHLDEVT〔MCFイベント情報の内容〕〔COBOL言語〕

RHLDEVT〔形式〕

(Ｓ)

SCMPEVT〔MCFイベント情報の内容〕〔COBOL言語〕

SCMPEVT〔形式〕

SEND ,[2]

sndbuf〔mcftalccn（コネクション定義の開始）〕

sndcmptim〔mcftalccn（コネクション定義の開始）〕

sndrcvtim〔mcfmuap（UAP共通定義）〕

sndtim〔mcfmuap（UAP共通定義）〕

SO_KEEPALIVEを使用

srtimout〔mcftalccn（コネクション定義の開始）〕

(Ｔ)

TCP_NODELAY

TCP_NODELAYを使用

TCP/IPプロトコル〔用語解説〕

TP1/Message Control

TP1/NET/TCP/IPが使用するTCP/IP資源

TP1/NET/TCP/IPが提供する送達確認機能を使用する場合

TP1/NET/TCP/IPで使用しているポート番号

TP1/NET/TCP/IPの組み込みの流れ

TP1/NET/TCP/IPの実行形式プログラム名

TP1/NET/TCP/IPの障害

TP1/NET/TCP/IPの定義の概要

(Ｕ)

UAP共通定義

UAPで実装する場合

UAPの障害

UAP閉塞による障害

UOCインタフェース用のパラメタとバッファの関係

UOCエラーリターン処理

UOC作成上の注意事項

UOCで使用できる関数

UOCの異常処理

UOCの実行タイミング

UOCパラメタ不正の場合の処理

(ア行)

(あ)

相手アドレス指定時，または相手アドレスチェックの抑止時のコネクション障害

相手アドレス情報をチェック

相手アドレスチェックの抑止（サーバ型コネクション）

相手アドレスを指定したコネクションの確立（クライアント型コネクション）

相手システムのホストのIPアドレス

相手システムのホストのポート番号

相手システムのホスト名

アプリケーションプログラムとシステム環境設定の関連

アプリケーション名

アプリケーション名の決定

(い)

一時記憶データの受け取り（COBOL言語）

一時記憶データの受け取り（C言語）

一時記憶データの受け取り（データ操作言語）

一時記憶データの更新（COBOL言語）

一時記憶データの更新（C言語）

一時記憶データの更新（データ操作言語）

一方受信

一方送信

一方送信メッセージ

一方送信メッセージの受信時の処理の流れ

一方送信メッセージの送信（COBOL言語）

一方送信メッセージの送信（C言語）

一方送信メッセージの送信時の処理の流れ（メッセージ送達確認機能を使用しない場合）

一方送信メッセージの送信時の処理の流れ（メッセージ送達確認機能を使用する場合）

インタフェースの変更一覧〔バージョン6以前から移行する場合〕

(う)

運用コマンド

(お)

応答型（ans）

応答メッセージの送信（COBOL言語）

応答メッセージの送信（C言語）

(カ行)

(か)

概要

(き)

キープアライブ

キープアライブ〔用語解説〕

機能

キューグループID

旧製品からの移行に関する注意事項

(く)

組み込み方法

クライアント〔用語解説〕

クライアント型コネクションの確立

クライアント型コネクションの確立処理〔バージョン5以前からの移行〕

(け)

継続問い合わせ応答型（cont）

継続問い合わせ応答処理の強制終了〔運用コマンド〕

継続問い合わせ応答の終了（COBOL言語）

継続問い合わせ応答の終了（C言語）

継続問い合わせ応答の終了（データ操作言語）

現用コネクションID

(こ)

後続セグメント受信の監視タイマ

後続セグメント受信の監視タイマ値

後続メッセージ監視時の処理の流れ

後続メッセージ監視タイマの設定

後続メッセージ監視タイムアウト時の処理の流れ

コネクション

コネクション〔用語解説〕

コネクションID

コネクション当たりの受信バッファ数〔バージョン5以前からの移行〕

コネクション解放の通知方法

コネクション確立UOC

コネクション確立UOCインタフェース

コネクション確立UOCを併用する場合

コネクション確立監視時間タイムアウト時の処理の流れ

コネクション確立時監視時間

コネクション確立障害時の確立再試行回数

コネクション確立障害時の確立再試行間隔

コネクション確立の再試行

コネクション確立モード

コネクション確立要求の判定

コネクション確立要求を格納するキューの長さ〔バージョン5以前からの移行〕

コネクション確立要求を格納するキューの長さ〔バージョン6からの移行〕

コネクション再確立時の未送信メッセージの送信抑止

コネクション障害

コネクション障害時の処理

コネクション障害と対応処理

コネクション切断時の処理の流れ

コネクション選択ルール

コネクション選択ルール（相手アドレスチェックを抑止したコネクションの場合）

コネクション選択ルール（ポートフリーのコネクションの場合）

コネクション選択ルール（未確立コネクションが存在する場合）

コネクション定義の開始

コネクション定義の終了

コネクションとポートの関係

コネクションとポートの関係（自システムがクライアント型）

コネクションとポートの関係（自システムがサーバ型）

コネクションと論理端末の関係

コネクションに関する機能

コネクションの解放

コネクションの解放〔運用コマンド〕

コネクションの解放（COBOL言語）

コネクションの解放（C言語）

コネクションの確立〔運用コマンド〕

コネクションの確立（COBOL言語）

コネクションの確立（C言語）

コネクションの確立の方法

コネクションの確立要求の受付開始と終了（サーバ型コネクション）

コネクションの切り替え〔運用コマンド〕

コネクションの切り替え（クライアント型コネクション）

コネクションの形態とMCF通信構成定義との関係

コネクションの状態取得（COBOL言語）

コネクションの状態取得（C言語）

コネクションの状態表示

コネクションの状態表示〔運用コマンド〕

コネクションの切断

コネクションの切断抑止

コネクションリプレース（サーバ型コネクション）

コネクションリプレースの使用有無

コネクションを自動的に確立

(サ行)

(さ)

サーバ〔用語解説〕

サーバ型コネクション

サーバ型コネクションの確立

サーバ型コネクションの確立要求の受付開始〔運用コマンド〕

サーバ型コネクションの確立要求の受付開始（COBOL言語）

サーバ型コネクションの確立要求の受付開始（C言語）

サーバ型コネクションの確立要求の受付終了〔運用コマンド〕

サーバ型コネクションの確立要求の受付終了（COBOL言語）

サーバ型コネクションの確立要求の受付終了（C言語）

サーバ型コネクションの確立要求の受付状態取得（COBOL言語）

サーバ型コネクションの確立要求の受付状態取得（C言語）

サーバ型コネクションの自IPアドレス〔バージョン5以前からの移行〕

最大保留数

(し)

自システムのポート番号

自システムのホストのIPアドレス

自システムのホスト名

システム構成例〔コネクション切り替え機能を使用する場合〕

システム構成例1

システムサービス共通情報定義

システムサービス共通情報定義のmax_open_fdsオペランド〔バージョン5以前からの移行〕

システムサービス共通情報定義のmax_socket_descriptorsオペランドとmax_open_fdsオペランド〔Windows版〕〔バージョン5以前からの移行〕

システムサービス情報定義

システムサービス情報定義ファイルの作成

システム定義

自動的にコネクション確立要求を受け付け

受信したメッセージを保留

受信スケジュール関係障害（入力キュー，入力メッセージ編集UOC）

受信バッファ数不足発生時のメッセージログ

受信バッファの空き待ち

受信メッセージ最大保留数

受信メッセージの組み立て

受信メッセージの組み立て機能

受信メッセージの判定

受信メッセージの保留

受信メッセージの保留判定

受信メッセージの保留判定UOCインタフェース

受信メッセージ判定

受信メッセージ判定UOCインタフェース

出力キュー

出力キュー〔用語解説〕

出力キュー障害時の処理

出力メッセージの編集

出力メッセージの割り当て先

出力メッセージ編集UOCインタフェース

出力メッセージ編集UOCエラー時の処理の流れ

障害対策

障害の種類と対応処理

障害発生時の処理の流れ

使用できるコネクション数

(そ)

送受信時のデータサイズ

送受信メッセージの衝突時の処理の流れ（メッセージ送達確認機能使用時）

送信完了監視時間タイムアウト時の処理の流れ

送信スケジュール関係障害（出力キュー，出力メッセージ編集UOC）

送信メッセージの通番編集

送信メッセージの通番編集UOCインタフェース

ソースの互換性〔バージョン5以前からの移行〕

ソースの互換性〔バージョン6からの移行〕

ソケット関数の処理の流れ

ソケット用ファイル記述子の最大数

ソフトウェア構成の例

(タ行)

(た)

端末タイプ

(つ)

追加機能〔バージョン5以前からの移行〕

(て)

定義オブジェクトファイルの作成方法の概要

定義オブジェクトファイルの生成

定義の指定順序

定義例

ディスク出力メッセージ最大格納数

データ操作言語のプログラムインタフェース

データ操作言語のプログラムインタフェースの一覧

(と)

問い合わせメッセージと応答メッセージ（継続問い合わせ応答形態）

問い合わせメッセージと応答メッセージ（問い合わせ応答形態）

同一論理端末上でのsend関数の併用に関する注意事項

同期型受信監視時間

同期型送受信監視時間

同期型送信監視時間

同期型メッセージ

同期型メッセージ受信時の処理の流れ

同期型メッセージ送受信時の処理の流れ

同期型メッセージ送信時の処理の流れ

同期型メッセージの受信

同期型メッセージの受信（COBOL言語）

同期型メッセージの受信（C言語）

同期型メッセージの送受信

同期型メッセージの送受信（COBOL言語）

同期型メッセージの送受信（C言語）

同期型メッセージの送信

同期型メッセージの送信（COBOL言語）

同期型メッセージの送信（C言語）

同期受信

同期送受信

同期送信

トランスポート層に適用するプロトコル

トレース環境定義

トレース情報が失われる経過時間の見積もり式

トレース情報量の見積もり式

(ナ行)

(に)

入力キュー〔用語解説〕

入力キュー障害時の処理

入力セグメントの判定

入力セグメント判定UOC

入力セグメント判定UOCインタフェース

入力セグメント判定UOCエラー時の処理の流れ

入力セグメント判定UOCでの分割・組み立て

入力セグメント判定の処理

入力メッセージの編集

入力メッセージ編集UOCインタフェース

入力メッセージ編集UOCエラー時の処理の流れ

任意の相手システムとのメッセージ衝突

(ね)

ネットワーク構成の例

ネットワークの状態表示〔運用コマンド〕

(ハ行)

(は)

バージョン5以前からの移行

バージョン6からの移行

(ひ)

非応答型（noans）

ビッグエンディアン

非同期受信

非同期送信

標準提供UOC

標準提供UOCの処理の流れ

(ふ)

複数のコネクションを定義した場合のコネクション選択ルール

プロトコルの種別

(ほ)

ポート

ポート番号〔用語解説〕

(マ行)

(み)

未確立コネクション

未確立コネクションの論理端末に対する運用コマンドの動作〔バージョン5以前からの移行〕

(む)

無通信状態監視

無通信状態監視時間

無通信状態監視時間タイムアウト時の処理の流れ

(め)

メッセージジャーナル〔用語解説〕

メッセージ受信後のUAP異常終了

メッセージ受信時のコネクション障害

メッセージ受信ジャーナル〔用語解説〕

メッセージ受信前のUAP異常終了

メッセージ受信用バッファグループ番号

メッセージ出力ジャーナル〔用語解説〕

メッセージ制御機能

メッセージ送受信に関する機能

メッセージ送受信の形態

メッセージ送受信の処理の流れ

メッセージ送受信の例

メッセージ送信完了監視時間

メッセージ送信完了ジャーナル

メッセージ送信完了ジャーナル〔用語解説〕

メッセージ送信時のコネクション障害

メッセージ送信中のコネクション解放時の処理の流れ

メッセージ送信でのコネクション障害時の処理の流れ

メッセージ送信の再試行〔バージョン5以前からの移行〕

メッセージ送信用バッファグループ番号

メッセージ送達確認関係障害

メッセージ送達確認機能を使用

メッセージ送達確認の例

メッセージ送達の確認

メッセージとセグメントの関係

メッセージ入力ジャーナル〔用語解説〕

メッセージの形式の例

メッセージの再送（COBOL言語）

メッセージの再送（C言語）

メッセージの受信（COBOL言語）

メッセージの受信（C言語）

メッセージの受信（データ操作言語）

メッセージの送信（データ操作言語）

メッセージの重複，および欠落のチェック

メッセージの分割と組み立て

メッセージ編集用バッファグループ番号

メッセージ編集用バッファ数

メモリ出力メッセージ最大格納数

(も)

モデルコネクションID

モデル論理端末名称

(ヤ行)

(ゆ)

ユーザアプリケーションプログラム異常終了時の処理

ユーザアプリケーションプログラムの作成例

ユーザアプリケーションプログラム閉塞時の処理

ユーザオウンコーディングインタフェース

(よ)

用語解説

(ラ行)

(り)

理由コード一覧

(ろ)

論理端末

論理端末〔用語解説〕

論理端末定義

論理端末とアプリケーションの型の関係

論理端末の状態取得（COBOL言語）

論理端末の状態取得（C言語）

論理端末の状態表示

論理端末の状態表示〔運用コマンド〕

論理端末の閉塞〔運用コマンド〕

論理端末の閉塞（COBOL言語）

論理端末の閉塞（C言語）

論理端末の閉塞解除〔運用コマンド〕

論理端末の閉塞解除（COBOL言語）

論理端末の閉塞解除（C言語）

論理端末の閉塞解除方法

論理端末の閉塞と閉塞解除

論理端末名称

■ 商標類

AIXは，米国およびその他の国におけるInternational Business Machines Corporationの商標です。
AMDは，Advanced Micro Devices, Inc.の商標です。
HP-UXは，Hewlett-Packard Development Company, L.P.のオペレーティングシステムの名称です。
Itaniumは，アメリカ合衆国およびその他の国におけるIntel Corporationの商標です。
Linuxは，Linus Torvalds氏の日本およびその他の国における登録商標または商標です。
Microsoftは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
OracleとJavaは，Oracle Corporation 及びその子会社，関連会社の米国及びその他の国における登録商標です。
PA-RISCは，Hewlett-Packard Development Company, L.P.の商標です。
Red Hatは，米国およびその他の国でRed Hat, Inc. の登録商標もしくは商標です。
UNIXは，The Open Groupの米国ならびに他の国における登録商標です。
Windowsは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
Windows Serverは，米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
その他記載の会社名，製品名は，それぞれの会社の商標もしくは登録商標です。
プログラムプロダクト「P-9D64-3F31，R-19455-216，R-19456-216，R-F19456-21C6」には，Oracle Corporationまたはその子会社，関連会社が著作権を有している部分が含まれています。
プログラムプロダクト「P-9D64-3F31，R-19455-216，R-19456-216，R-F19456-21C6」には，UNIX System Laboratories, Inc. が著作権を有している部分が含まれています。