固定長テキストから、「桐」表(tbl)への変換
◎ テキストファイルから、桐の表(tbl)を作成する方法として、そのまま読み込む方法や、コンマ・タブ等の区切り文字を利用する方法、また、拡張子により、桐が自動判断して読み込み処理を行う、その他あると思いますが、今回は、一般に固定長と呼ばれているファイルから、フォーム上で設定を行う変換処理を、ご紹介いたします
今回対象の「固定長ファイル」とは、普通のテキスト文字だけで構成されており、一定のルールで分割可能なデータが、繰り返し(1行以上)保存されているものを対象としています。(このプログラムでは処理していませんが、ヘッダー・フッタ等を含む場合もデーター行の処理は可能です。)
例:全銀フォーマット(注:勤務先で実際に利用しているファイルで調査いたしましたが、他の形式もあるかも知れません)以上を120バイト固定で、<ヘッダー><データ><データ><データ>・・・・・・・<トレーラー><エンド>のように改行なく、1行で構成されています。
- ヘッダー・レコード(1行) 先頭は「1」で固定。以下、依頼人情報・銀行情報等
- データ・レコード(データ行数) 先頭は「2」で固定。以下、振込先の銀行・支店・名前・金額等
- トレーラー・レコード(1行) 先頭は「8」で固定。以下、振込件数・振り込み合計金額をセットします
- エンド・レコード(1行) 先頭は「9」で固定(1行)以下、空白をセットします。
◎ 固定長テキストファイルからの、変換読み込み方法今回のフォームでは以上3種類に対応いたしております。
- 桐の初期メニューを使用
- メニューよりファイル名等を都度設定して変換
- 上記使用時、定義ファイルを作成しておき、参照して変換
- 一括処理・イベントから、コマンドにて使用
- コマンド「ファイル変換 固定長・・・・・・」を利用して変換
◎起動方法
「固定長変換.wfm」を、起動してください。
◎操作説明
- ファイル名入力
ファイル名入力時は、入力支援ボタンが利用できます。またファイル名のみ入力された場合は、データーパスと拡張子が自動付加されます
- 変換元・・一応拡張子は「fix」に固定してあります。
- 変換先・・変換後作成される、桐表(tbl)名です。
- 定義名・・一応拡張子は「cnv」に固定してあります。
- コマンドボタンの説明
- 定義書出・・設定内容を、定義名で設定したファイルに書き出します
- tbl確認・・変換先ファイルが実在するとき、開くことができます
- 定義読込・・定義名で設定したファイルを読み込み内容を表示します
- 定義確認・・現在の定義内容を確認します
- コマンド作成・・一括処理で実行するためのコマンド(文字列)を作成
- コマンド実行・・コマンド作成で作成された内容で実行します
- 形式と変換方法
- 項目数・・項目数の指定(項目の増減でも変更されます)
- 改行あり・・データーの内容に、途中に改行の有無を指定
- 先頭レコードの自動設定・・一応文字列で設定しています(明細のデータ型より優先)
- フォーム明細行(変換先の表の内容と変換方法指定)
- 項目名・・桐の表(tbl)の項目名。最低1個以上設定してください
- データー型・・・値集合で選択
- 型数・・計算用
- 表示幅・・データーの区切りバイト数設定
- 定義式・・定義ファイルに書き出しされる明細内容
- コマンド式・・コマンド実行時に使用される計算式
- 最下段の数字列は参照程度にご覧下さい。
◎その他・・・・・・
1.実は解析不明個所があります。定義(cnv)で書き出しされた「ConvOption=0,0,1」の内容で、3個の因数の内最初の数字が不明です
「0・1」のどちらでも、動くようですが、なんでしょう?
2.下記「変換定義内容」のなかで、変換のタイプ「固定長」が、くぼみ罫線で囲われていますが、その他になにがあるのか不明です
そのため表示は「固定長」に固定してあります。ご了承ください。
3.項目名の判定で、#文字位置で、半角空白の判断をしています。空白文字や/(スラッシュ)は使用しないでください。
◎サンプルの内容
- 銀行改有.fix・・・全銀ファイルのデーター行から、<ヘッダー><トレーラー><エンド>を削除後、120バイトで改行
- 銀行改無.fix・・・全銀ファイルのデーター行から、<ヘッダー><トレーラー><エンド>を削除後、改行なし
- 銀行変換.cnv・・・全銀フォーマットのサンプルです
(実際に作成されるファイルはパス名付きですがサンプルのため、パス名を削除してあります。)
固定長ファイル変換とは関係ないのですが・・・おまけです。
余分なフォームは作成したくなかったのですが・・・どうもメッセージボックスがうまく使えません
上段の「メッセージボックス」を利用しての表示と、下段の「フォーム」を利用しての表示では一目瞭然です。
メッセージボックス仕様 内容 メッセージボックス "変換定義内容の確認",\
"変換定義ファイル名 "+&CnvFile+"\n"+\
"変換のタイプ "+"固定長"+"\n"+\
"FIXファイル "+&SrcFile+"\n"+\
"桐の表名 "+&TblName+"\n"+\
"定義されてる項目数 "+#文字列(&ItemCount)+"\n"+\
"項目名の指定方法 "+#条件選択(&ConvOption[1]=0,"ユーザー指定",1,"★不明★")+"\n"+\
"データ型の指定方法 "+#条件選択(&ConvOption[2]=0,"ユーザー指定",1,"自動設定")+"\n"+\
"改行コード "+#条件選択(&ConvOption[3]=0,"改行なし",1,"改行あり"),\
制御文字展開=するフォーム形式表示(実際のフォームとは異なります) 内容 上記メッセージボックスに使用されてる変数を、テキストオブジェクトを作成し、ソースに変数として設定
追伸。一応テストはしたつもりですが、異常やエラー等がございましたら、連絡いただけましたらさいわいです。 【多遊】