3.3.4 MCF受信メッセージファイル
1論理メッセージは,一つまたは複数のセグメントで構成されています。1セグメントはセグメント情報の入ったヘッダ部と,メッセージデータであるデータ部で構成されています。
セグメントには,次の五つの種別があります。
-
1論理メッセージが1セグメントで構成されている場合のセグメント
-
1論理メッセージが複数セグメントで構成されている場合の先頭セグメント
-
1論理メッセージが複数セグメントで構成されている場合の中間セグメント
-
1論理メッセージが複数セグメントで構成されている場合の最終セグメント
-
二つのメッセージを連結する場合に,先頭に付けるセグメント
なお,セグメントの種別は,ヘッダ部に指定します。
- 〈この項の構成〉
(1) 非同期型受信メッセージファイル
MCF関数(dc_mcf_receive関数)で,UAPが受け取るメッセージを格納します。一つのファイルには,一つの論理メッセージを作成します。ヘッダセグメントを使用すると,メッセージの前にデータを付けられます。
(a) ファイルの構造
■ 1論理メッセージ1セグメントのとき
■ 1論理メッセージ複数セグメントのとき
■ ヘッダセグメントのとき
(b) ファイルの内容
項目 |
位置 |
長さ (バイト) |
内容 |
|
---|---|---|---|---|
ヘッダ |
入出力論理端末名称 |
0 |
9 |
MCF関数でやり取りするための論理端末名称を指定します(最後のヌル文字を含みます)。 複数セグメントのときは,各セグメントで同じものを指定します。 |
マップ名 |
9 |
9 |
マップ名を指定します(最後のヌル文字を含みます)。 複数セグメントのときは,各セグメントで同じものを指定します。 この指定はマップ名を返す関数だけ有効です。 |
|
予備 |
18 |
9 |
ヌル文字を指定します。 |
|
セグメント種別 |
27 |
1 |
次の文字のどれかを指定します。 F:先頭セグメントのとき M:中間セグメントのとき L:最終セグメントのとき O:単セグメントのとき H:ヘッダセグメントのとき |
|
メッセージ長 |
28 |
4 |
メッセージの長さを指定します(0〜2147483647)。 |
|
データ |
メッセージ |
32 |
n |
セグメントの実体(データ)を,メッセージ長で指定した長さで指定します。 |
(c) 注意事項
-
非同期型受信メッセージファイルの構造と,MCF関数でのUAPからのメッセージ受信要求との関係を次に示します。
-
ヘッダセグメントを連結すると,別ファイルに作成したデータを先頭セグメント,または単セグメントと合成してUAPに渡せます。ヘッダセグメントと,MCF関数でのUAPからのメッセージ受信要求との関係を次に示します。
-
セグメント種別がF(先頭セグメント)のセグメントとM(中間セグメント)のセグメントは,同じものとして扱われます。また,L(最終セグメント)のセグメントとO(単セグメント)のセグメントも,同じものとして扱われます。
例えば,セグメント種別がF,M,Lの3セグメントから成るファイルは,M,M,Oの3セグメントから成るファイルと同等に扱われます。
-
MHPとのメッセージ送受信時にセグメントヘッダに指定したセグメント種別と,実行時のファイルの種別との関係を次に示します。なお,セグメント種別の指定に誤りがある場合は,最初のメッセージ受信時に受信要求関数がエラーリターンします。
■ ヘッダセグメント以外を格納した非同期型受信メッセージファイルの場合
セグメント種別にL,またはOを指定したメッセージを受信すると,メッセージ完了と判断して以降のセグメントを無視します。
セグメント種別 |
MHPが受信するセグメント |
||
---|---|---|---|
先頭セグメント |
中間セグメント |
最終セグメント |
|
F |
M |
L |
F,M,L |
F |
L |
X |
F,L※1 |
L |
X |
X |
L※2 |
X |
M |
L |
受信しません※3。 |
F |
X |
L |
■ ヘッダセグメントを格納した非同期型受信メッセージファイルの場合
ファイルの最初のセグメントだけが有効になります。
セグメント種別 |
MHPが受信するセグメント |
---|---|
H |
H※1 |
H+X |
|
X |
受信しません※2。 |
X+H |
(2) 同期型受信メッセージファイル
MCF関数(dc_mcf_recvsync関数,dc_mcf_sendrecv関数)で,UAPが受け取る同期型のメッセージを格納します。同期型受信メッセージファイルには,複数論理メッセージ分のデータを格納できます。ヘッダセグメントを使用すると,メッセージの前にデータを付けられます。
(a) ファイルの構造
■ 1論理メッセージ1セグメントのとき
■ 1論理メッセージ複数セグメントのとき
■ ヘッダセグメントのとき
(b) ファイルの内容
項目 |
位置 |
長さ (バイト) |
内容 |
|
---|---|---|---|---|
ヘッダ |
入出力論理端末名称 |
0 |
9 |
MCF関数でやり取りするための論理端末名称を指定します(最後のヌル文字を含みます)。 複数セグメントのときは,論理メッセージごとに各セグメントで同じものを指定します。 |
マップ名 |
9 |
9 |
マップ名を指定します(最後のヌル文字を含みます)。 複数セグメントのときは,各セグメントで同じものを指定します。 この指定はマップ名を返す関数だけ有効です。 |
|
予備 |
18 |
9 |
ヌル文字を指定します。 |
|
セグメント種別 |
27 |
1 |
次の文字のどれかを指定します。 F:先頭セグメントのとき M:中間セグメントのとき L:最終セグメントのとき O:単セグメントのとき H:ヘッダセグメントのとき |
|
メッセージ長 |
28 |
4 |
メッセージの長さを指定します(0〜2147483647)。 |
|
データ |
メッセージ |
32 |
n |
セグメントの実体(データ)を,メッセージ長で指定した長さで指定します。 |
(c) 注意事項
-
同期型受信メッセージファイルの構造と,MCF関数でのUAPからのメッセージ受信要求との関係を次に示します。
-
ヘッダセグメントを連結すると,別ファイルに作成したデータを先頭セグメント,または単セグメントと合成してUAPに渡せます。ヘッダセグメントと,MCF関数でのUAPからのメッセージ受信要求との関係を次に示します。
-
MCFシミュレート機能を使用して,UAPで同期型メッセージ受信によって複数論理メッセージを受信する場合,受信メッセージの先頭に付けるヘッダセグメントは,各論理メッセージに対応させて格納してください。複数論理メッセージのうち,ヘッダセグメントの必要がない論理メッセージがある場合は,メッセージ長に0を指定したダミーのヘッダセグメントを格納しておく必要があります。なお,ヘッダセグメントが必要な論理メッセージがない場合は,ヘッダセグメントを格納したファイルは作成する必要はありません。ヘッダセグメントと,MCF関数でのUAPからのメッセージ受信要求との関係を次に示します。
-
セグメント種別がF(先頭セグメント)のセグメントとM(中間セグメント)のセグメントは,同じものとして扱われます。また,L(最終セグメント)のセグメントとO(単セグメント)のセグメントも,同じものとして扱われます。
例えば,セグメント種別がF,M,Lの3セグメントから成るファイルは,M,M,Oの3セグメントから成るファイルと同等に扱われます。
-
MHPとのメッセージ送受信時にセグメントヘッダに指定したセグメント種別と,実行時のファイルの種別との関係を次に示します。なお,セグメント種別の指定に誤りがある場合は,最初のメッセージ受信時に受信要求関数がエラーリターンします。
■ ヘッダセグメント以外を格納した同期型受信メッセージファイルの場合
セグメント種別にL,またはOを指定したメッセージを受信すると,メッセージ完了と判断して以降のセグメントを無視します。
セグメント種別 |
MHPが受信するセグメント |
||
---|---|---|---|
先頭セグメント |
中間セグメント |
最終セグメント |
|
F |
M |
L |
(F,M,L) |
M |
M |
L |
(M,M,L) |
O |
O |
O |
(O),(O),(O) |
F |
L |
M |
(F,L),(M) |
X |
M |
L |
受信しません※。 |
F |
X |
L |
■ ヘッダセグメントを格納した同期型受信メッセージファイルの場合
ファイルの全ヘッダセグメントが有効になります。
セグメント種別 |
MHPが受信するセグメント |
---|---|
H |
H※1 |
H+H |
H,H※1 |
H+X |
受信しません※2。 |
X |
|
X+H |