過去の桐井戸端BBS (桐ver.8)
11277 固定長ファイルの取り込みがうまくいかない Deta 2001/05/22-15:27
今、桐のv8を使用して固定長ファイルを取り込もうとしています。(そのファイルは、*.txtのテキストファイルです)
ファイル変換という機能を使用していますが、読み込みファイル指定をする際に拡張子が*.FIX指定となっているため、
事前に拡張子を*.txtから*.fixに無理やり変更し実行すると、要求している内容で*.tblファイルが作成されます。

 この工程の途中で項目数及び各項目の桁数を設定し変換定義ファイルというものを保存すれば、
次回からこのファイルを指定後実行するだけで全て変換してもらえると思ってました。
 ところが、変換定義ファイルを指定しても実行ボタンを押すとエラーとなってしまい。
項目の属性というのを確認してみると、全て1桁になっており
前回の内容が生かされていません。
そもそも使用方法に問題があるのでしょうか?
教えてくださいますようお願いします。
11280 Re:回答じゃないですが bonito 2001/05/22-16:50
記事番号11277へのコメント
Detaさん、ごめんなさい、このコメントは回答ではありません (^^;

>拡張子が*.FIX指定となっているため、

まったくです...。
その昔(といっても1年前未満)、私もEOSデータ(BASIC手順通信でもらう固定長テキストファイル)の桐TBL化を考えていました...が
実用するに至りませんでした、お客さん(うちは運送屋)がなくなって(倒産)しまったからです。

私が考えたのは読込展開用のTBLをつくって、その最初(最後)の1項目仮に[よむよむ]に、
テキスト読み込みで、固定長テキストの1行全部をまるまる読み込み、あとは固定長ですから、
項目計算式か置換で例えば
[発注コード]なら #NUM(#部分列([よむよむ],-6,-13)) とか
[発注数量]なら #NUM(#部分列([よむよむ],-29,-6)) とか...
という方式です。

*-----ここから蛇足------*

なぜこの方法を採ろうと思ったかというと、この固定長ファイルはヘッダとボディ(明細)をもっていて、
明細の行数は固定されていないのでした。
(最初の1バイトがBならヘッダ、Dならボディ)
つ〜わけで、先の例えは本当は [発注コード]
#条件選択([区分]="D",#NUM(#部分列([よむよむ],-6,-13)),1,"")
とする予定なのでした。

おそまつ!

11284 一番簡単な固定長ファイルの読み込み方法 佐田 守弘 2001/05/22-19:42
記事番号11277へのコメント
Detaさん
ファイル変換は、指定したファイルからTBLファイルを作り出す機能です。
読み込みではなかったと思います。

レコード区切りにcrlfが入っている事が前提ですが、
一番簡単なのは、固定長ファイルの1レコードを1行に読み込んでしまう方法です。
読み込んでから、#部分列関数を使って、所定の桁位置から桁数を切り出して下さい。
なお、部分列関数で桁位置と桁数を指定するには、マイナス記号を付けます。

佐田守弘(KS-00119)
11287 Re:一番簡単な固定長ファイルの読み込み方法 ONnoji 2001/05/23-11:31
記事番号11284へのコメント

>今、桐のv8を使用して固定長ファイルを取り込もうとしています。(そのファイル
>は、*.txtのテキストファイルです)
>ファイル変換という機能を使用していますが、読み込みファイル指定をする際に
>拡張子が*.FIX指定となっているため、事前に拡張子を*.txtから*.fixに
>無理やり変更し実行すると、要求している内容で*.tblファイルが作成されま
>す。
> この工程の途中で項目数及び各項目の桁数を設定し変換定義ファイルというもの
>を保存すれば、次回からこのファイルを指定後実行するだけで全て変換してもらえ
>ると思ってました。
> ところが、変換定義ファイルを指定しても実行ボタンを押すとエラーとなってしま
>い。項目の属性というのを確認してみると、全て1桁になっており
>前回の内容が生かされていません。そもそも使用方法に問題があるのでしょうか?

Detaさん、おはようございます。ONnojiです。
外していたらごめんなさい。

[ファイル]メニュー→[ファイル変換]→[変換定義ファイルで指定]に黒丸を付けて
[ファイル名]を指定して次へ進まずに[完了]ボタンを実行したのでしょうか?

それとも[固定長ファイルの指定(2/4)]以降へ進んでから
[完了]ボタンを実行したのでしょうか?

桐V8sp5実験したところ、
[固定長ファイルの指定(2/4)]で
[固定長ファイル名]を別のファイル名(.fix)に変更すると、
[固定長ファイルの項目数]と
各項目の桁数は1にリセットされてしまうようですね。

[固定長ファイルの指定(2/4)]で
[桐の表名]を別のファイル名に変更した場合には、
各項目の桁数は保持されているようです。

桐v8のマニュアル「表編集」p403にはこの辺のところが書いてありませんね。
11366 Re:一番簡単な固定長ファイルの読み込み方法 Deta 2001/05/28-10:28
記事番号11287へのコメント

>Detaさんは No.11277「ファイル変換機能について教えてください。」で書きました。
>>今、桐のv8を使用して固定長ファイルを取り込もうとしています。(そのファイル
>>は、*.txtのテキストファイルです)
>>ファイル変換という機能を使用していますが、読み込みファイル指定をする際に
>>拡張子が*.FIX指定となっているため、事前に拡張子を*.txtから*.fixに
>>無理やり変更し実行すると、要求している内容で*.tblファイルが作成されま
>>す。
>> この工程の途中で項目数及び各項目の桁数を設定し変換定義ファイルというもの
>>を保存すれば、次回からこのファイルを指定後実行するだけで全て変換してもらえ
>>ると思ってました。
>> ところが、変換定義ファイルを指定しても実行ボタンを押すとエラーとなってしま
>>い。項目の属性というのを確認してみると、全て1桁になっており
>>前回の内容が生かされていません。そもそも使用方法に問題があるのでしょうか?
>
>Detaさん、おはようございます。ONnojiです。
>外していたらごめんなさい。
>
>[ファイル]メニュー→[ファイル変換]→[変換定義ファイルで指定]に黒丸を付けて
>[ファイル名]を指定して次へ進まずに[完了]ボタンを実行したのでしょうか?
>
>それとも[固定長ファイルの指定(2/4)]以降へ進んでから
>[完了]ボタンを実行したのでしょうか?
>
>桐V8sp5実験したところ、
>[固定長ファイルの指定(2/4)]で
>[固定長ファイル名]を別のファイル名(.fix)に変更すると、
>[固定長ファイルの項目数]と
>各項目の桁数は1にリセットされてしまうようですね。
>[固定長ファイルの指定(2/4)]で
>[桐の表名]を別のファイル名に変更した場合には、
>各項目の桁数は保持されているようです。
>
>桐v8のマニュアル「表編集」p403にはこの辺のところが書いてありませんね。
>


みなさんご回答ありがとうございます。ファイル変換に関しては、変換ファイル指定で前回作成した「*.cnv」を指定します。
その時に出てくる「属性の確認」というボタンがあるので念の為に押してみると、
項目数など保持しているような表示をするのですが
実際に変換ファイル(前回と同名、同仕様のファイルを指定して書き出しファイル名も同じにしていざ実行すると実行エラーが出るのです。
「レコードの長さが桁数の合計を超えている」というエラーです。
 結局、部分列関数を使って対応を取ることにしました。
上記現象は、気になりますがこれからのボリュームを考えると、あまり悩まず対応可能な方法で行こうと思ってます。
本当にありがとうございました。

戻る