web-dev-qa-db-ja.com

FIXメッセージ区切り文字

私はFIX-Protocolに比較的慣れていません。

FIX-Protocolメッセージの区切り文字は、^を表示する場合と|を表示する場合があります。 FIXのウィキペディア-プロトコルによると[SOH](<ヘッダーの開始>(16進数0x01の場合))が文字です。

その意味を教えてください。

たとえば、FIX-Protocolメッセージはvisuallyとして表すことができます。

8=FIX.4.4^9=122^35=D^34=215^49=CLIENT12^52=20100225-19:41:57.316^56=B^1=Marcel^11=13346^21=1^40=2^44=5^54=1^59=0^60=20100225-19:39:52.020^10=072^

または

8=FIX.4.4|9=122|35=D|34=215|49=CLIENT12|52=20100225-19:41:57.316|56=B|1=Marcel|11=13346|21=1|40=2|44=5|54=1|59=0|60=20100225-19:39:52.020|10=072|

では、^ over |を使用する場合の違いは正確には何ですか。

他の区切り文字も使用されていますか?理由は明らかではありません[SOH](0x01)は^または|に適合します

それは数えられたものであったかもしれません。

14
Ashley

区切り文字SOH = ASCIIコード01は印刷不可能な文字です。メッセージのバイナリ表現を見ると(たとえば、16進エディタービューで)、文字は0x01として表示されます。メッセージを表示すると、|を使用する人もいれば、^を使用する人もいるようです。これらはめったに使用されない文字であるため、適切な区切り文字です。

15
MP24

|文字の使用は視覚的な便宜のためであり、^Aよりも読みやすいです。

cat your.file.fix | tr '\01' '|' | less

上記のコマンドをカスタムシェルスクリプトとして簡単に変換して、FIXセッションファイルを開くことができます

~/.bashrc

function fixlog {
  cat $* | tr '\01' '|' | less
}
4
Julien

FIXメッセージは、ネットワーク上、OMS/EMS内、またはログファイル内のいずれであっても、メッセージのフィールド間に常に0x01があります。置換が行われるのは、メッセージを表示する必要がある場合のみです(OK、ログファイルをクリーンにして文字を転記する人もいます)。有効なFIXメッセージにフィールドを区切るパイプまたはキャレットが含まれることは決してありません。また、FIXメッセージがフィールド間以外のどこにも存在しない場合もあります。 (は、印刷されたテキストに表示されるべきではない文字です-FIXメッセージは読み取り可能であると想定されています-C文字列を終了する文字列と衝突しないため、メッセージ全体を文字列として扱うことができます。 。)

1
Mark Reece