------------------------------------------------------------------------------
◆RecordDefine(RP)ファイル説明
------------------------------------------------------------------------------
バイナリファイル中の対象1レコードの構成を定義・記述します。
Binary→Text変換、Text→Binary変換で使います。
バイナリ→テキスト→バイナリなどと使う時は、基本的に、同じ定義を使って下さい。
------------------------------------------------------------------------------
◆指定の仕方
------------------------------------------------------------------------------
1.ツールの画面で読み込んで指定します。
2.個別の ini ファイルの [FileInfo] の RecordDefinitionFileRP=
に続けて相対パスで指定します。
先頭、末尾のスペースは無効です。
「, A.txt 」でも「,A.txt」とみなされます。
------------------------------------------------------------------------------
◆記述ルール
------------------------------------------------------------------------------
・先頭が(//)で始まる行はコメントと見なされます。
・項目は半角カンマ(,)区切り。
ただし、以下は別です。
「(6) Text Data 項目列見出し」の各見出し項目は、半角スペース区切り。
「(7) Code Table File」の各ファイル名は、「*」区切り。
・1行の構成は、以下のようになっています。
(1) (2) (3) (4) (続く)
目印, Binary Data 項目長, Binary Data 読み書き方向, Conversion Type,
(続き)
(5) (6) (7)
Text Data 項目数, Text Data 項目列見出し, Code Table File
[sample]
01A,2,R,n,1,項目名A,Ref\codeABC.txt
01C,2,R,1,11,B01 B02 B03 B04 B05 B06 B07 B08 B09 B10 B11
・ファイルの1行読み取りサイズの Max は、514Byte 。(改行コード込み)
------------------------------------------------------------------------------
◆各項説明
------------------------------------------------------------------------------
------------------------------------------------------------------------------
(1) 目印
文字。ツールには無視されます。このファイルを編集する時の目印です。
アドレスなどをどうぞ。
------------------------------------------------------------------------------
(2) Binary Data 項目長 (以下、「B項目長」と略)
バイナリファイルの対象レコードの構成要素1項目の Byte 長です。
後述する、Data Convert Type(項目変換タイプ)が、
n, u, ビット数 の場合は、1, 2, 4 のいずれかで指定します。
s の場合は、1以上、2050 以下の10進数で指定します。
※1レコードの最大長は2050Byteです。
※また、Text→Binary変換時は、取り込み元のテキスト1レコード全体で、
2050 Byte 以下、の制限があります。(改行コード込み)◆
------------------------------------------------------------------------------
(3) Binary Data 読み書き方向 (以下、「B読み書き方向」と略)
N or R
バイト or ビットの読み書き方向。バイトオーダ(Byte-order) のようなもの。
例. B項目長=2Byte の項目の 16進値が「02 01」の場合、
上位下位(見た目では左右)どちらから読み書きするか。
N:順・上位から(左から)(例では、02 から)
R:逆・下位から(右から)(例では、01 から)
後述の「(4) Data Type(変換タイプ)」により以下の意味となります。
--------------------
n, u: 数の場合、
R はリトルエンディアン (Little endian)、
N はビッグエンディアン (Big endian)
--------------------
s:文字列の場合、
R は _swabする。(2Byte ずつ反転して読み書き。)
※B項目長が奇数の場合は最後1桁は保証されません。
N は _swab無し。
--------------------
bit 数 の場合、
・B項目長=2Byte 以上の場合、
R は 下位 Byte からとして順に分解/足し上げする。
N は 上位 Byte からとして順に分解/足し上げする。
(その中の 1Byte については、R/N どちらも下位 Bit から)
・B項目長=1Byte の場合、
R は 下位 Bit からとして順に分解/足し上げする。
N は 上位 Bit からとして順に分解/足し上げする。
--------------------
bit 数 の場合の例.
--------------------
例1.B項目長=2Byte の項目の 16進のビット値が「11111101 10101010」で
出力項目が 16項目の場合、
R -> 第1項=0, 第2項=1, ・・・, 第8項=1, 第9項=1, 第10項=0, ・・・, 第16項=1
N -> 第1項=1, 第2項=0, ・・・, 第8項=1, 第9項=0, 第10項=1, ・・・, 第16項=1
イメージは、
11111101 10101010
R <----(2) <----(1)
N <----(1) <----(2)
--------------------
例2.B項目長=1Byte の項目の 16進のビット値が「10101010」で
出力項目が 8項目の場合、
R -> 第1項=0, 第2項=1, ・・・, 第8項=1
N -> 第1項=1, 第2項=0, ・・・, 第8項=0
イメージは、
10101010
R <-------
N ------->
------------------------------------------------------------------------------
(4) Conversion Type (項目変換タイプ)
n, u, s, bit区切り数(1〜31)
n:符号(正負)有り10進数(B項目長= 1 or 2 or 4 Byte のいずれかのときのみ)
u:符号無し10進数 (B項目長= 1 or 2 Byte のいずれかのときのみ)
s:文字列(SJIS) (B読み書き方向= R の場合、B項目長の偶奇に注意.)
1〜31:bit区切り数
実行時、1〜31 の値を指定する場合、結果は非負(0 or 正の数)です。
例. 4:4bit区切り(変換後の値:0〜15)
1:1bit区切り(変換後の値:0/1)
注意. 以下の範囲の制限があります。
B項目長 変換タイプ
1 -> 1〜7 ( 8以上は指定できません。「u」を使用して下さい。)
2 -> 1〜15 (16以上は指定できません。「u」を使用して下さい。)
4 -> 1〜31 (32以上は指定できません。「u」を使用して下さい。)
------------------------------------------------------------------------------
(5) Text Data 項目数 (以下、「T項目数」と略)
Binary→Text変換時は、出力項目数。
Text→Binary変換時は、入力項目数。実際の項目数と一致している必要があります。
非負です。◆ 0を指定した場合は skip します。◆
最大値は「(2) Binary Data 項目長」と
「(4) Data Convert Type(項目変換タイプ)」で求まる数です。
0 以外の場合、以下の範囲で指定します。
・変換タイプが bit 区切り数でない(n,u,s)場合、1.
・変換タイプが bit 区切り数の場合、
B項目長 * 8(bit) / bit 区切り数
例. 1 Byte * 8(bit) / 4 => 2 まで
4 Byte * 8(bit) / 1 => 32 まで
Binary→Text変換時に、これらの範囲内で最大値より少ない項目数を指定した場合、
残り は出力されません。
Text→Binary変換時に、これらの範囲内で最大値より少ない項目数を指定した場合、
残り = その後ろの項の値は 0 と見なします。
------------------------------------------------------------------------------
(6) Text Data 項目列見出し (以下、「T列見出し」と略)
Binary→Text変換時の出力項目の列見出し。
出力項目数(「(5) Text Data 項目数」)分、半角スペース区切りで列挙します。
なお、Text→Binary変換時、編集ファイルの列見出し行は、
先頭「//」でコメントされていること。
また、出力結果の項目の先頭に「=」や「=」が付いていると、
EXCEL等で読み込んだとき、関数と見なされ、表示がおかしくなります。
そのまま使用しないで下さい。
------------------------------------------------------------------------------
(7) Code Table File (以下、「CodeTable」と略)
任意指定です。
数のコードの置換を定義しているファイルを記載します。
複数指定する場合、半角「*」区切りでファイルを追記します。
見づらければ、「 * 」のようにスペースを入れてもOKです。
[sample1] ・・・,codeAAA.txt
[sample2] ・・・,codeAAA.txt * codeBBB.txt
コード置換定義ファイルは、必ずツールと同じフォルダにの下に配置します。
ただし、ツールがあるフォルダの下にフォルダを作って、
そこに配置できます。 その場合は、そのパスから指定します。
例.・・・,Ref\code\charReplace.txt
→ReadMe_コード置換定義ファイル.txt の説明を参照して下さい。
------------------------------------------------------------------------------
◆補足・注意◆
------------------------------------------------------------------------------
・表示化けについて
出力結果の項目の先頭に「=」や「=」が付いていると、
EXCEL等で読み込んだとき、関数と見なされ、表示がおかしくなります。
そのまま使用しないで下さい。
・定義ファイルの同期について
レコード、コードの定義ファイルは、同じ対象のファイルの場合、
Binary→Text変換時とText→Binary変換時に、同期していないといけません。
・バイナリデータ中の特殊文字について
レコード定義ファイルで、変換タイプ=s と指定する項目(文字列項目)の
バイナリデータ中に、0x00 や 0x0A を含むものがあります。
文字列項目に関しては、0x00 は文字列の終了、0x0A は改行と見なされます。
そのため、文字列項目で 0x00 が現れたら、その後ろはゴミとして無視しています。
文字列項目で 0x0A が現れる可能性がある場合は、
コード置換定義ファイルを指定しましょう。
・弟1カラムのインデックスとしての利用について
弟1カラムの項目変換タイプが数でない場合、
Text→Binaryに変換する際に、
弟1カラムをインデックスとして利用できません。
以上です。