過去の桐井戸端BBS (桐ver.5)
9417 印字コマンドで固定長のテキストを書き出したい wa2new 2001/01/21-16:55
直前に桐V5の印字コマンドの質問を拝見し詳しく知りたいのですが、
再度 V5で可能なテキストの処理についてご質問させてください。
●書き出し と●印字 コマンド
の両者では 先生のおっしゃる とおり
データを選択しながら 随時テキストに吐くのは
印字コマンドが良いらしいのですが・・・
私が望んでいるのが今回CSVではなく 固定長なのです。

今 全銀共 の固定長のテキストを作成するのに
たいへん便利に●書き出しと●kifix.exe を使用しています。
今 新たに業務用のハンディーターミナルのシステムへ
固定長のテキストを 一括で随時作成させなければならなくなり
今までは VisualBasic+Accessなどの外部業者さんの作成した
システムへkifix.exe をバッチで組んで吐き出していますが、
表の各フィールドを V5又は V8sp6 などで 印字コマンドのみで
簡易に固定長で書き出す事は可能でしょうか?
又 方法 ポイントなど ございましたら
よろしく ご指導下さい。

▲▲以前から 固定長への書き出しのコマンドは
確か?桐V5のkifix.exe をV8でも使うしか手は無い
といったような書きこみを拝見したような気がしましたので
V8のみ V5のみで commannd comに降りずに 
処理を完了したくご質問致します。

ちなみに 業務用のハンディーターミナルのシステムで
扱うのは 倉庫の在庫データです。 では。 
9418 Re:印字コマンド・・新たな質問 幅田 2001/01/21-18:13
記事番号9417へのコメント
wa2newさこんにちは

固定長のテキスト書き出しをするには、kifix.exeを使うことなく
#部分列関数や#右側文字列関数を使えば可能です。

詳しくは
↓を見てください。
http://www.fuku3.com/~habata/kbbs/kakov8/09081.htm

書き出しをする場合には、別に項目を作り、項目計算式で固定長データに
あたるものを作っておいてその項目を掻き出します。

印字コマンドを使う場合は、書き出すデータを先の関数を使って固定長データとして作成して書き出します。

このページにある全文検索システムで「固定長」をキーワードにして検索をかけてみてください。
他の記事もいろいろあります。

9420 印字コマンドで全銀協フォーマット書き出し 佐田 守弘 2001/01/21-20:18
記事番号9418へのコメント
wa2newさん
印字コマンドはファイル出力に関してオールマイティーな機能(反面、使い方は面倒)なので、
全銀協フォーマット書き出しに利用できます。
全銀協フォーマットを扱ったのが10年以上前なので、詳しいフォーマットは忘れてしまいましたが、
確か振り込みデータ以外に様々なヘッダやフッタなどを付ける必要があった様な記憶があります。

この様な表データ以外のデータを一緒にファイル出力するには、印字コマンドを使う事になると思います。
他の方が作られている一括処理でどの様に記述しているかを見ていないので、詳しい事は分かりませんが、
私が行うとしたら、印字コマンドを使うであろうと思います。

●印字コマンドで固定長ファイルを書き出す方法
さて、印字コマンドで固定長ファイルを書き出すには、書き出す文字列を常に一定長さにしてやればよい事になります。
例えば[名前]の項目を20桁(全角20文字ではなく半角20文字)で書き出すのであれば、
 #部分列([名前]+#複写(" ",20),-1,-20)
とすれば、[名前]の後ろに半角スペースを補って全体として20桁の文字列になります。

計算式について解説しておきます。
「#複写」関数は、指定した文字を指定した回数繰り返すもので、ここでは半角スペースを20個つながった文字列を返します。

「#部分列」関数は、指定した文字列の指定位置から指定長さを取り出す関数です。
ここでは、[名前]の後ろに半角スペース20個をつなげた文字列です。
指定位置と指定長さは、プラスの値を指定すれば、文字数での指定になりますが、
マイナスで指定すると、バイト数(桁数)での指定になります。

●全銀協フォーマットを書き出す場合に
上記の方法を使えば、表ファイルの項目値から全銀協フォーマットを直接書き出せます。
しかしながら書き出すデータを予めチェックするために、この様な計算式を設定した計算項目を作っておき、
実際にどの様な形で書き出されるかを確認するのが良いでしょう。

佐田守弘(KS-00119)
9423 感謝。理解できました!印字コマンドで固定長 wa2new 2001/01/21-22:44
記事番号9420へのコメント
佐田 先生 幅田様 ありがとうございました。
直前の 別の方の質問で一括でのループのやり方と
今回 ご指導頂いた
#sstr([a],-1,-12)+#sstr([b],-1,-10)+#sstr([c],-1,-8)+#sstr([a],-1,-16)
 #部分列([名前]+#複写(" ",20),-1,-20)
の マイナス符号でバイト数指定で完璧に理解できました。
これで たどたどしく一括で一旦表を作り直してから
 K3形式→kifix.exe リネームの
繰り返しから 逃れられます。

こんなに 親切に 無償でご教授いただけるなんて・・・・
本当にありがとうございました。
又、別件でお世話になるかも知れませんが
ぜひよろしくお願いします。

9430 Re:ハンディーターミナルについて HERB 2001/01/22-11:33
記事番号9417へのコメント
wa2newさん、はじめましてHERBです

桐の話題からはずれてしまうのですが、いくつかご質問させて下さい。
私も棚卸業務をスムーズに行うため、ハンディターミナルの導入を検討しています、
取扱商品が少量、多品種にわたり、仕入れた商品の約9割はバーコードがありません、
また、分封、混合したりします、これらの商品は社内商品番号を振ってあります、
桐でバーコードを発行することは可能です、簡単ですが以上のことから導入を躊躇しております、
wa2newさんのところでも同じ事情がありますか?そのようなときはどのように対処しておりますか。

>ちなみに 業務用のハンディーターミナルのシステムで
>扱うのは 倉庫の在庫データです。 では。 

在庫データは桐で管理しておられるのでしょうか?入庫、出庫データから倉庫在庫データを作成して、
ハンディーターミナルに書きだし実在庫データと合わせるのでしょうか。
お使いのハンディターミナルはアクセスとは連動する仕様ですか?
また、なぜ固定長でなければならないのですか?
仕様の問題ですか、おおざっぱな質問で申しわけありませんが、可能な範囲で結構です、
今後の参考にさせていただけないでしょうか、よろしくお願いします。

幅田さん桐の話題ではありませんがご勘弁下さい。

9444 Re:ハンディーターミナルについて wa2new 2001/01/23-09:22
記事番号9430へのコメント
>す、取扱商品が少量、多品種にわたり、仕入れた商品の約9割はバーコードがあり
>ません
●弊社の取り扱い商品は100%バーコードが添付されていますが
サイズの関係で直接読めません。それで商品の山の上にバーコード付きの在庫更新表が置いてあり
これをハンディーでスキャンします。
バーコードはWIN桐で印刷しています。

>在庫データは桐で管理しておられるのでしょうか?入庫、出庫データから倉庫在庫
>データを作成して、ハンディーターミナルに書きだし実在庫データと合わせるので
>しょうか。

商品マスターなどは桐で作成します。
又、担当別の出庫ヴィウアー(PC端末)なども桐で作成しています。

ハンディーはフルノさんの無線ハンディーで各端末(6台)からの
出庫データベースをリアルタイム更新しながらNetWareサーバー上に吐き出しています。
(これはDosベースですがPEN3-400でキャッシュ64Mという速いマシンです。)
PC端末はPC9821Xa16(Dos6)などを400MHzに拡張し桐v5セサミで細かな
データ作成・形式変更を行いますので40%くらい桐で在庫を管理していることになります。
これをサーバーに書き出してDynaLink(Dos版Win版の通信ソフト)で別事業所と通信しています。
この別事業所で新たに販売現場に25台のCannon製ハンディーが導入されるため
今回 固定長の質問をいたしました。
>お使いのハンディターミナルはアクセスとは連動する仕様ですか?
はい。
>また、なぜ固定
>長でなければならないのですか?仕様の問題ですか、
はい。社内の販売管理のメインシステムはAccessとVBで作成されており
弊社担当SEの方のご指示で固定長で倉庫の各担当別データを
別事業所のNTサーバーへ随時送りこむためです。
●以上です。 商売すべて固有の問題がありますので
あまり参考にならないかもしれませんね。 では。
9450 Re:ハンディーターミナルについて HERB 2001/01/23-17:36
記事番号9444へのコメント
wa2newさんは No.9444「Re:ハンディーターミナルについて」で書きました。

早速のレスありがとうございます、勉強不足でコメント読んだだけではちんぷんかんぷんです。
桐を実務で使いこなしている様子が伝わります、桐の話題とは違う内容にコメントいただき感謝いたします。

お礼まで。

戻る