Mcf
Mcfの概要
名前空間
Hitachi.OpenTP1.Server
継承関係
System.Object +- Hitachi.OpenTP1.Server.Mcf
説明
Mcfクラスは,アプリケーション間でメッセージの送受信をするときに使う,メッセージ送受信機能を使用するためのメソッドを提供します。
メソッドの一覧
名称 |
説明 |
---|---|
Send(System.Int32, System.String, System.Byte[], System.Int32) |
相手システムへ一方送信メッセージを送信します。 |
同期型でメッセージを送信したあと,同期型でメッセージを受信します。 |
メソッドの詳細
●Send
- 説明
-
相手システムへ一方送信メッセージを送信します。一方送信メッセージは,一つのセグメントで構成されます。
セグメントを送信する領域の形式を次に示します。Lはヘッダ領域の長さです。バッファ形式1の場合は8バイト,バッファ形式2の場合は4バイトになります。
- 宣言
-
- 【C#の場合】
public static void Send( int action, string terminalName, byte[] sendData, int sendDataLength );
- 【Visual Basicの場合】
Public Shared Function Send( _ ByVal action As Integer, _ ByVal terminalName As String, _ ByVal sendData() As Byte, _ ByVal sendDataLength As Integer _ )
- 【J#の場合】
public static void Send( int action, System.String terminalName, ubyte[] sendData, int sendDataLength );
- パラメタ
-
- action
-
単一セグメントを送信すること,優先か一般か,出力通番を付けるかどうか,および使用するバッファ形式を,次の形式で設定します。
DCMCFEMI〔|{DCMCFNORM|DCMCFPRIO}〕 〔|{DCMCFSEQ|DCMCFNSEQ}〕〔|{DCMCFBUF1|DCMCFBUF2}〕
-
TP1ServerFlags.DCMCFEMI
メッセージが単一セグメントであることを設定します。
-
TP1ServerFlags.DCMCFNORM
一般の一方送信メッセージとして送信する場合に設定します。
-
TP1ServerFlags.DCMCFPRIO
優先の一方送信メッセージとして送信する場合に設定します。
-
TP1ServerFlags.DCMCFSEQ
出力通番が必要な場合に設定します。
-
TP1ServerFlags.DCMCFNSEQ
出力通番が必要ない場合に設定します。
-
TP1ServerFlags.DCMCFBUF1
バッファ形式1を使用する場合に設定します。
-
TP1ServerFlags.DCMCFBUF2
バッファ形式2を使用する場合に設定します。
-
- terminalName
-
出力先の論理端末名称を設定します。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字を付けてください。
- sendData
-
送信するセグメントの内容を設定した領域を設定します。一つのセグメントで32000バイトまで送信できます。
- sendDataLength
-
送信するセグメントの長さを設定します。
- 戻り値
-
なし
- 例外
-
- Hitachi.OpenTP1.Server.TP1ServerException
-
次の情報が出力されます。
-
メッセージ
例外の内容が出力されます。
OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。
"OpenTP1提供関数実行時にエラーが発生しました。"
それ以外の場合は,各エラーに対応したメッセージが出力されます。
-
クラス名
例外が発生したクラス名が出力されます。
-
メソッド名
例外が発生したメソッド名が出力されます。
-
引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)
例外が発生する原因となった引数名が出力されます。
-
エラーコード
発生原因に応じ,次のエラーコードが出力されます。
エラーコード
説明
DCMCFER_INVALID_ARGS
引数に設定した値が間違っています。
DCMCFER_PROTO
プロトコル不正です。
メッセージ送受信機能の使用が有効になっていません。
DCMCFRTN_71002
メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
セグメント長に32000バイトを超える値を設定しています。
MCFが終了処理中のため,メッセージの送信を受け付けられません。
DCMCFRTN_71003
メッセージキューが満杯です。
DCMCFRTN_71004
メッセージを格納するバッファをメモリ上に確保できませんでした。
DCMCFRTN_71108
メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
DCMCFRTN_72000
トランザクションでないSPP.NETの処理から,Sendメソッドを呼び出しています。
DCMCFRTN_72001
Sendメソッドを呼び出せない論理端末を設定しています。
terminalNameに設定した論理端末名称が間違っています。
DCMCFRTN_72016
actionに設定したメッセージ種別(DCMCFNORMまたはDCMCFPRIO)の値が間違っています。
actionに設定した値が間違っています。
引数に設定した値が間違っています。
DCMCFRTN_72017
actionに設定した出力通番の要否(DCMCFSEQまたはDCMCFNSEQ)の値が間違っています。
DCMCFRTN_72026
actionに設定したセグメント種別(DCMCFEMI)の値が間違っています。
DCMCFRTN_72041
送信するメッセージの内容がありません。
長さが0バイトのセグメントを送信しています。
-
●SendReceive
- 説明
-
同期型でメッセージを送信したあと,同期型でメッセージを受信します。
SendReceiveメソッドでは,相手システムへ送るメッセージのセグメントを送信できます。
メッセージのセグメントを送信すると,SendReceiveメソッドは相手システムからの応答を待ちます。応答が届くと,そのメッセージのセグメントを受信します。
セグメントを送信する領域と受信する領域の形式をそれぞれ示します。Lはヘッダ領域の長さです。バッファ形式1の場合は8バイト,バッファ形式2の場合は4バイトになります。
- 宣言
-
- 【C#の場合】
public static void SendReceive( int action, string terminalName, byte[] sendData, int sendDataLength, byte[] receiveData, ref int receiveDataLength, int receiveBufferLength, ref int time, int watchTime );
- 【Visual Basicの場合】
Public Shared Function SendReceive( _ ByVal action As Integer, _ ByVal terminalName As String, _ ByVal sendData() As Byte, _ ByVal sendDataLength As Integer, _ ByVal receiveData() As Byte, _ ByRef receiveDataLength As Integer, _ ByVal receiveBufferLength As Integer, _ ByRef time As Integer, _ ByVal watchTime As Integer _ )
- 【J#の場合】
public static void SendReceive( int action, System.String terminalName, ubyte[] sendData, int sendDataLength, ubyte[] receiveData, int receiveDataLength, int receiveBufferLength, int time, int watchTime );
- パラメタ
-
- action
-
メッセージの最終セグメントを送信するかどうか,および使用するバッファ形式を,次の形式で設定します。
DCMCFEMI〔|{DCMCFBUF1|DCMCFBUF2}〕
-
TP1ServerFlags.DCMCFEMI
最終セグメントを送信する場合に設定します。
メッセージが単一セグメントの場合も,DCMCFEMIを設定します。メッセージの送信の終了を連絡するために,最後は必ずこの値を設定してください。この値を設定してSendReceiveメソッドを呼び出すと,論理端末からの応答を待ちます。
-
TP1ServerFlags.DCMCFBUF1
バッファ形式1を使用する場合に設定します。
-
TP1ServerFlags.DCMCFBUF2
バッファ形式2を使用する場合に設定します。
-
- terminalName
-
メッセージを出力して応答を入力する論理端末名称を設定します。論理端末名称の長さは最大8バイトです。論理端末名称の後ろにはヌル文字を付けてください。
- sendData
-
送信するセグメントの内容を設定した領域を設定します。一つのセグメントで32000バイトまで送信できます。
メッセージの送信の終了を連絡する場合で,セグメントの内容がないときも,必ず設定してください。
- sendDataLength
-
メッセージの送信の終了を連絡する場合で,セグメントの内容がないときは,0を設定してください。
- receiveData
-
セグメントを受信する領域を設定します。
単一セグメントまたは最終セグメントを送信するSendReceiveメソッドが終了すると,受信したメッセージの先頭セグメントが返されます。
処理終了後,receiveDataにはOpenTP1から値が返されます。
- receiveDataLength
-
受信したメッセージの先頭セグメントの長さが返されます。
- receiveBufferLength
-
セグメントを受信する領域の長さを設定します。
- time
-
メッセージを受信した時刻が,1970年1月1日0時0分0秒からの通算の秒数で返されます。
- watchTime
-
SendReceiveメソッドを呼び出してから終了するまでの最大時間を設定します。
- 戻り値
-
なし
- 例外
-
- Hitachi.OpenTP1.Server.TP1ServerException
-
次の情報が出力されます。
-
メッセージ
例外の内容が出力されます。
OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。
"OpenTP1提供関数実行時にエラーが発生しました。"
それ以外の場合は,各エラーに対応したメッセージが出力されます。
-
クラス名
例外が発生したクラス名が出力されます。
-
メソッド名
例外が発生したメソッド名が出力されます。
-
引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)
例外が発生する原因となった引数名が出力されます。
-
エラーコード
発生原因に応じ,次のエラーコードが出力されます。
エラーコード
説明
DCMCFER_INVALID_ARGS
引数に設定した値が間違っています。
DCMCFER_PROTO
プロトコル不正です。
メッセージ送受信機能の使用が有効になっていません。
DCMCFRTN_71002
メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
セグメント長に32000バイトを超える値を設定しています。
MCFが終了処理中のため,メッセージの送信を受け付けられません。
DCMCFRTN_71003
メッセージキューが満杯です。
DCMCFRTN_71004
メッセージを格納するバッファをメモリ上に確保できませんでした。
DCMCFRTN_71108
メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
DCMCFRTN_72001
SendReceiveメソッドを呼び出せない論理端末を設定しています。
terminalNameに設定した論理端末名称が間違っています。
DCMCFRTN_72012
MCFバッファグループ定義のバッファ長が不足しました。
DCMCFRTN_72013
受信領域の長さを超えるセグメントを受信しました。受信領域の長さを超えた部分は切り捨てられました。
DCMCFRTN_72016
actionに設定したメッセージ種別(DCMCFNORMまたはDCMCFPRIO)の値が間違っています。
actionに設定した値が間違っています。
引数に設定した値が間違っています。
DCMCFRTN_72026
actionに設定したセグメント種別(DCMCFEMI)の値が間違っています。
DCMCFRTN_72036
セグメントを受信する領域の長さが不足しています。バッファ形式1の場合は9バイト以上,バッファ形式2の場合は5バイト以上の領域を確保してください。
DCMCFRTN_72041
送信するメッセージの内容がありません。
長さが0バイトのセグメントを送信しています。
DCMCFRTN_72073
非同期メッセージを送信処理中です。
DCMCFRTN_73001
出力先の論理端末で障害が発生しました。
DCMCFRTN_73002
MCF通信サービスで障害が発生しました。
DCMCFRTN_73003
メッセージ受信が仕掛り中です。
DCMCFRTN_73005
watchTimeに設定した時間が経過しましたが,論理端末からの応答がありません。
DCMCFRTN_73010
メッセージの読み込み時に障害が発生しました。
メッセージの編集エラーが発生しました。
DCMCFRTN_73015
出力先の論理端末は,ほかのUAPで仕掛り中です。
DCMCFRTN_73018
watchTimeに設定した値が間違っています。
DCMCFRTN_73019
メッセージ送信完了監視タイマのタイムアウトが発生しました。
DCMCFRTN_73020
出力先の論理端末は停止しています。
-