過去の桐井戸端BBS (桐ver.7)
1549 固定長のテキスト書き出しするには? TARO 1999/3/13-22:10
桐V7.1を使用していますが、固定長(列の長さが一定の)テキスト書き出しをしたいのですが、
うまくいきません。(スペースが無視されて、データの長さがばらばらになります)
データが数字、文字列でも固定長の長さの書き出しは可能なのでしょうか?
どなたか良きアドバイスをお願いします。
1551 Re: 入交 1999/3/14-05:13
記事番号1549へのコメント
こんちはTAROさん
ちと長いですよ。

こんなのどうでしょう。自分もV7.1を使用していますけど
結合表を使用します。
+----------------------+
+  品名  + 単価  +
+-----------+----------+
って「品名」テーブルがあるとします
数値の場合(単価)簡単なのでこっち先に記載します。

表示項目名  単価
所属対象表  計算項目
項目/計算式 #文字列(["品名.tbl”.単価],6)
この場合は必ず結果が6桁で表示され「200円]の場合000200で表示されます。
これ比較的簡単ですよね>きめつけてすいません。

文字列の場合がややこしいです。
問題は
半角で入力されているかどうか?もしくは混在か?
文字数が自分の思っている(固定長で使用する際)範囲内ですんでいるかどうか?
(これについてはテーブルの属性で文字数の規制をかければ可能だと思います。)
半角で入力されている場合
表示項目名  品名
所属対象表  計算項目
項目/計算式 ["品名.tbl".品名])+#複写(" ",10−#文字数(["品名.tbl".品名]))
この式の結果は
品名が「テレビ」だとします。
「テレビ 」ってことになります。
文字数が4個なので最後に6個半角のスペース入ります。

半角全角混在の場合
考えるとめんどいのですべて全角で書き出すことを考えました
表示項目名  品名
所属対象表  計算項目
項目/計算式 
#全角(["品名.tbl".品名])+#複写(” ”,10-#文字数(#全角(["品名.tbl".品名])))

この式の結果
品名が「桐バージョン7.1」場合(「桐」=全角、「バージョン7.1」が半角)
「桐バージョン7.1 」
文字数が9個なので最後に1個全角のスペース入ります。
半角を全角では複写する「スペース」が違いますので注意してください。

この書式で結合表を開けば結果通りが表示されそれをテキストなんかで書き出しすれば見事に
並んでいることと思いますよ。
簡単に確認するには「編集」>「すべて選択」>「編集」>「コピー」でワードパットなんかに
張りつけてみれば書き出ししなくても結果がわかると思います。
データを入力する際に気をつけて..
でわでは 入交
1555 Re: TARO 1999/3/14-21:11
記事番号1551へのコメント
入交さんへ、
回答いただき感謝します。本当にありがとうございました。
早速、試させていただきます。こんなに早く回答がいただけるとは、
正直思っていなかったので、もう感激です。
(独学でやっているので、どうしても独りよがりになってしまい、回りくどいやり方に色々なって
しまいます。)また、成果をご報告します。でわ、お礼まで。
1562 Re: 悲しげ 1999/3/15-10:12
記事番号1551へのコメント
どもっ、TAROさん、入交さん、
既に解決済のようですが、ちょっと補足しておきます。

>半角全角混在の場合
>考えるとめんどいのですべて全角で書き出すことを考えました
>表示項目名  品名
>所属対象表  計算項目
>項目/計算式 
>#全角(["品名.tbl".品名])+#複写(” ”,10-#文字数(#全角(["品名.tbl".品名])))

半角全角混在の場合でもさほどめんどうなことはありません。

 [品名.tbl".品名]+#複写("_",n−#桁数(["品名.tbl".品名]))

のように、#文字数ではなく#桁数を用いればいいと思います。
入力値がオール全角の場合のみ、複写元も全角スペースとして#文字数関数
を使って n も2byteの文字数で考えます。
それ以外(オール半角や全角半角混在)の場合は、複写元を半角スペース
として#桁数関数を使って、この時の n はbyte数(桁数)で設定します。

戻る