過去の桐井戸端BBS (桐ver.5)
14145 固定長のkifix.exeと印字コマンド wa2new 2001/11/21-10:30
おうかがいします。
いまだに桐V5ですが、
固定長の書き出しを印字コマンドですべきところを
面倒なので いつもkifix.exe @????.parとバッチ処理しています。
エラーメッセージ”漢字コードが2つのフィールドにまたがっています”で中断します。
仕方なく 表編集にもどり #全角 でフィールドデータをでっかくしてクリアーしています。
これでは ACCESSなどのフォームにもっていくといくら幅があっても足りません。(全角なので 横に 広がりすぎ!)

ここで質問ですが もし 印字コマンド で固定長に出力した場合ですが?
前出の”漢字コードが2つのフィールドにまたがっています”
は 出力結果 にどのような影響があるのでしょうか?

予想1・・・・特殊文字がヘンなテキストができる(Windowsdで開いたとき)

対策1・・・・事前に特殊文字を 1つ1つ 問題ないようにしたいのですが
この場合 どういう種別の文字を抽出し直せば良いのでしょうか?

よろしく お願いします。

14146 Re:固定長のkifix.exeと印字コマンド Ogo 2001/11/21-11:04
記事番号14145へのコメント

>エラーメッセージ”漢字コードが2つのフィールドにまたがっています”
>で中断します。

固定長ファイルの定義を仮に次の通りとします。

項目1……9文字
項目2……9文字
項目3……9文字

項目1<-|項目2<-|項目3<-|
123456789012345678901234567

当たり前の話ですが、固定長の場合の「文字数」
とは絶対に半角で計算します。

で、上記エラーメッセージはこういうことです。

項目1<-|項目2<-|項目3<-|
123456789012345678901234567
全角文字を何も考えずにいれる

全角文字の5文字目は、半角計算で 9 文字目と10文字目にまたがっています。
が、これは1文字の途中に項目区切りが指定されているということで、全くの「規格外データ」なのです。

>仕方なく 表編集にもどり #全角 でフィールドデータをでっかくして
>クリアーしています。
>これでは ACCESSなどのフォームにもっていくといくら幅があっても
>足りません。(全角なので 横に 広がりすぎ!)

クリアーする方法が間違っています。
指定された固定長データの規格(定義)をもう一度確認して、
その規格(定義)を満たすテキストファイルを作る方法を構築し直すべきです。

>ここで質問ですが もし 印字コマンド で固定長に出力した場合ですが?

印字コマンドを使っても、「規格外データ」を出力してしまっては、
相手先コンピューターで読むことはできないと思います
( KIFIX ならばテキストを作成する段階でエラーを表示してくれるが、
印字コマンドを使うと、テキスト作成の段階でエラーが表示されない代わりに、
提出した相手先から「読み込み不能」で突き返されて、「エラーが出ないのに?」と
疑問が増すばかりと思われます)。

# そもそも相手先が ACCESS だったら、固定長
# を使わずに、 K3 形式で書き出しておいて、
# 拡張子だけを「*.CSV」にリネームするのが
# 一般的なはずですが?
# 固定長は大型コンピューターのデータベース
# とデータを交換する際に使われる筈ですが?


14179 Re:固定長のkifix.exeと印字コマンド wa2new 2001/11/22-12:51
記事番号14146へのコメント
●Ogoさんへ、いつも的確なご回答をされているのを拝見しています。
今回も素早い回答をありがとうございました。

>固定長ファイルの定義を仮に次の通りとします。
>項目1<-|項目2<-|項目3<-|
>123456789012345678901234567
>全角文字を何も考えずにいれる
>全角文字の5文字目は、半角計算で 9 文字目と
>10文字目にまたがっています。
>が、これは1文字の途中に項目区切りが指定さ
>れているということで、全くの「規格外データ」
>なのです。

●なるほど。じゃあバイト数を数えさせて奇数だったら半角空白を加えるとOKですね。

>>ここで質問ですが もし 印字コマンド で固定長に出力した場合ですが?
>印字コマンドを使っても、「規格外データ」を
>出力してしまっては、相手先コンピューターで
>読むことはできないと思います( KIFIX ならば
>テキストを作成する段階でエラーを表示してく
>れるが、印字コマンドを使うと、テキスト作成
>の段階でエラーが表示されない代わりに、提出
>した相手先から「読み込み不能」で突き返され
>て、「エラーが出ないのに?」と疑問が増すば
>かりと思われます)。

●良かったです。お答えに感謝します。
印字でやってツボにはまるとこでした。

># そもそも相手先が ACCESS だったら、固定長
># を使わずに、 K3 形式で書き出しておいて、
># 拡張子だけを「*.CSV」にリネームするのが
># 一般的なはずですが?

●はい。今回はODBC経由で*.mdbを含み更新してる汎用システムなので
先方SEさんの指定でやむなく固定長を採用してるのです。
有り難うございました。
14180 Re:固定長のkifix.exeと印字コマンド Ogo 2001/11/22-13:34
記事番号14179へのコメント

>●なるほど。じゃあバイト数を数えさせて奇数だったら
>半角空白を加えるとOKですね。

#部分列( str , n1 【 | , n2 】 )

という関数のヘルプを良く読んでみて下さい。
特に知っておくべきことは、 n1 と n2 に負の数(マイナス)を指定するとどうなるかです。


戻る