■固定長ファイルとは
1行の長さが一定であるファイルを固定長ファイルという。
一般的に桁数や行数でデータ項目を判断し、それぞれ区分けしたデータをインプットとして読み込む。
■固定長ファイルのイメージ
固定長ファイルの例を示す。
▼sample_data.txt
1202001051
2202001041234567890000000324112345678901
2202001031234567881000000020012345678902
2202001011234567870000006544112345678903
9000000003
▼固定長ファイルのレイアウト
一般的に固定長ファイルを扱う場合は、固定長ファイルに対応するファイルレイアウトが存在する。
上記「 sample_data.txt」のファイルレイアウトは以下の通り
▼ヘッダー行のレイアウト
項目 | 桁数 | 概要 |
---|---|---|
レコード区分 | 1 | 値が「1」の場合はヘッダーレコード |
日付 | 8 | YYYYMMDD形式 |
曜日 | 1 | 1:日曜日 2:月曜日 3:火曜日 4:水曜日 5:木曜日 6:金曜日 7:土曜日 |
ブランク | 30 | 半角スペース |
▼データ行のレイアウト
項目 | 桁数 | 概要 |
---|---|---|
レコード区分 | 1 | 値が「2」の場合はデータレコード |
利用日 | 8 | YYYYMMDD形式(データを作成した日) |
会員番号 | 9 | 利用者の会員番号 |
利用金額フラグ | 1 | 「0」ならプラス。「1」ならマイナス |
利用金額 | 10 | 利用金額(未使用部分は0埋め) |
電話番号 | 11 | 利用者の電話番号(ハイフンなし) |
▼フッター行のレイアウト
項目 | 桁数 | 概要 |
---|---|---|
レコード区分 | 1 | 値が「9」の場合はフッターレコード |
データ件数 | 9 | データレコードの件数 |
ブランク | 30 | 半角スペース |
■マスクツールの仕様
データ行の「会員番号」を「AAAAAAAAA」、「電話番号」を「BBBBBBBBBBB」に変換する。
また、フォルダ構成は以下の通りとする。
固定長ファイルマスクフォルダ
│ file_msk.vbs
│
├─00_マスク前
│ sample_data.txt
│
└─01_マスク後
sample_data.txt
「00_マスク前」フォルダにマスク前のファイルを格納し、「 file_msk.vbs 」を実行すると「 01_マスク後 」フォルダにマスク後のファイルを格納する。
▼サンプルコード
' 定数
const MskUserNo = "AAAAAAAAA" ' 会員番号をAにマスクする定数
const MskTelNo = "BBBBBBBBBBB" ' 電話番号をBにマスクする定数
' 変数
Dim fso 'ファイルオブジェクトを格納する変数
Dim input_file ' 読み込むファイルを格納する変数
Dim output_file ' 出力ファイルを格納変数
' ファイルオブジェクトをセット
set fso = WScript.CreateObject("Scripting.FileSystemObject")
' 入出力ファイルの設定
Set input_file = fso.OpenTextFile(".\00_マスク前\sample_data.txt", 1, False, 0)
Set output_file = fso.OpenTextFile(".\01_マスク後\sample_data.txt", 2, True)
' 読み込みファイルから1行ずつ読み込み、出力ファイルに最終行まで出力する
Do Until input_file.AtEndOfStream
Dim lineStr ' 1行ずつ読み込んだ文字列を格納する変数
' 1行ずつ読み込んだ文字列を格納
lineStr = input_file.ReadLine
' 1桁目がデータレコード(2)であれば、マスク対象
if mid(lineStr,1,1) = "2" then
' 会員番号と電話番号をマスクする
lineStr = mid(lineStr, 1, 9) + MskUserNo + mid(lineStr, 19, 11) + MskTelNo
end if
' 出力ファイルへ文字列を出力する
output_file.WriteLine lineStr
Loop
MsgBox "完了"
' 入出力ファイルを閉じる
input_file.Close
output_file.Close
' ファイルオブジェクトを閉じる
set fso = nothing
▼実行結果
▼ sample_data.txt (マスク後)
1202001051
220200104AAAAAAAAA00000003241BBBBBBBBBBB
220200103AAAAAAAAA10000000200BBBBBBBBBBB
220200101AAAAAAAAA00000065441BBBBBBBBBBB
9000000003
▼比較結果
コメント