次の方法で共有


位置指定レコードにおけるフィールド位置の仕様

位置指定レコードを定義するには、そのレコードに含まれるフィールドの位置情報と長さ情報を指定する必要があります。 レコードにサブレコードが含まれている場合、サブレコードに含まれるフィールドの位置と長さが集計されて、上位レコードの情報が生成されます。

特定の Field 要素ノードまたは Field Attribute ノードの位置オフセットプロパティと位置長プロパティに指定する値の合計によって、対応するフィールド専用の文字数が決まります。 レコードおよびそのサブレコードに含まれるすべてのフィールドについて、このような一連の合計値を取得することによって各フィールドの境界が決定されます。

Note

[スキーマ] ノードの [Count Positions In Bytes]\(バイト単位の位置数\) プロパティが Yes に設定されている場合、[位置の長さ] プロパティと [位置オフセット] プロパティは文字ではなくバイトを指定します。

これらのプロパティの詳細については、 UI ガイダンスと開発者 API 名前空間のリファレンスを参照してください

"位置指定オフセット" プロパティ

フラット ファイル逆アセンブラーがフラット ファイル インスタンス メッセージを同等の XML インスタンス メッセージに変換する場合、 位置オフセット プロパティに指定する値は、インスタンス メッセージ内のその位置で無視され、スキップされる文字数 (バイト) を定義します。 つまり、フラット ファイル インスタンス メッセージの開始位置と長さ ( 位置オフセット プロパティで指定されている後者) で発生した情報は、メッセージの XML バージョンにはコピーされません。

フラット ファイル アセンブラーが XML インスタンス メッセージを同等のフラット ファイル インスタンス メッセージに変換する場合、 位置オフセット プロパティに指定する値は、作成されるフラット ファイル インスタンス メッセージ内の開始位置にスペース文字が入力される文字数 (またはバイト) を定義します。 オフセット位置に挿入される文字としては、常にスペースが使用されます。この文字は変更できません。

位置オフセット プロパティを使用すると、位置指定レコードの内容を柔軟に解釈できます。 このプロパティを使用すると、0 以外の値に設定されたフィールドの前にある固定長データを無視できます。 無視できる固定長データとしては、XML からフラット ファイルへの変換時に、フラット ファイル インスタンス メッセージに含める必要のないフィールドや定数データ (フィールドに関連付けられたタグなど) などがあります。 詳細については、後の例を参照してください。

"位置指定値" プロパティ

フラット ファイル逆アセンブラーがフラット ファイル インスタンス メッセージを同等の XML インスタンス メッセージに変換する場合、 Position Length プロパティに指定する値は、インスタンス メッセージ内のその位置にあるフィールドに関連付けられている文字数 (またはバイト数) を定義します。 フラット ファイル インスタンス メッセージの開始位置と長さで発生する情報は、関連する Justification プロパティと Pad Character プロパティによって提供される追加情報に従って、フィールド内のデータを構成します。 理由とフィールドの埋め込みの詳細については、「フィールドの位置合わせ」と「フィールドのパディング」を参照してください。

フラット ファイル アセンブラーが XML インスタンス メッセージを同等のフラット ファイル インスタンス メッセージに変換する場合、 位置指定長 プロパティに指定する値は、そのフィールドに関連付けられたデータを書き込む際に使用できる文字数 (またはバイト) を定義します。 データの文字数が、指定されたフィールド長よりも少ない場合、適切な埋め込み文字数で長さの違いが調整されます。 フィールドの指定した長さよりも多くのデータ文字がある場合、データの先頭または末尾は Justification プロパティの設定に基づいて切り捨てられ、作成されるフラット ファイル インスタンス メッセージには含まれません。

Note

左揃えデータの場合、右端の部分が切り詰められます (破棄される)。 右揃えデータの場合、左端の部分が切り詰められます (破棄される)。

レコードのフィールドが、次のように定義されているとします。

フィールド ノード名 Offset 長さ 埋め込み文字 妥当性
Field1 0 6 既定 (スペース) Left
Field2 0 4 * Right
Field3 2 6 * Left
Field4 4 6 既定 (スペース) Right

また、これらのフィールド定義を持つレコードの開始位置から、次のような文字列を挿入するとします (1 行目は文字の位置を示しています)。

123456789012345678901234567890123456789012345678901234567890  
abc   **12345678**skip  here  

このサンプル レコード データにこれらのフィールド定義を適用した場合、フラット ファイル逆アセンブラーは、次のような XML インスタンス メッセージを生成します (太字部分はデータ)。

<Field1>abc</Field1>  
<Field2>12</Field2>  
<Field3>5678</Field3>  
<Field4>here</Field4>  

次に、このデータが具体的にどのように解析されるかを説明します。

  • Field1 に関連付けられている文字 (オフセットのない長さ 6) は "abc ですが、スペース文字は Field1 の (既定の) パッド文字であり、Field1 は左揃えとして定義されているため、スペースは XML に含まれません。

  • Field2 に関連付けられている文字 (オフセットのない長さ 4) は "**12" ですが、アスタリスク文字は Field2 に対して定義されたパッド文字であり、Field2 は右揃えとして定義されているため、XML にはアスタリスクは含まれません。

  • Field3 に関連付けられている文字 (長さ 6 とオフセット 2) は "345678**" ですが、3 と 4 はオフセットのため XML に含まれません。 また、XML にアスタリスクは追加されません。Field3 ではアスタリスクが埋め込み文字であり、左揃えとして定義されているためです。

  • Field4 に関連付けられている文字 (長さ 6 とオフセット 4) は "skip here" ですが、文字シーケンス "skip" はオフセットのため XML に含まれません。 また、XML に 2 つのスペースは追加されません。Field4 ではスペースが既定の埋め込み文字であり、右揃えとして定義されているためです。

    この例のフラット ファイル逆アセンブラーによって生成された XML が、同じフィールド定義を使用してフラット ファイル アセンブラーに渡された場合、同じフラット ファイル データが生成されます。ただし、破棄されたオフセット シーケンス 34 と skip には、スペース文字 (データの次の行の文字で ^ 示されます) が入力されます。

123456789012345678901234567890123456789012345678901234567890  
abc   **12  5678**      here  
          ^^      ^^^^  
  

参照