過去の桐井戸端BBS (桐ver.5)
7111 印刷帳票で、縦倍角を2段に印刷 Ogo 2000/08/10-18:29

すみません、桐5・印刷帳票で、縦倍角を2段に印刷しようとすると、2段目は1行下から印刷を始めるため、半改行状態になってしまい、
文字が一部重なるという極めて情けなく、かつ実用に出来ない状態になってしまいます。

これまでは、そのような場合に #文字数 と #部分列 による行分割で対応していたのですが、その元になるデータが大変に面倒臭い(長い記述の)計算式で、
ちょっとその手を使うのが現実的とは思えないのですが……

何か別方法による回避方法がありますかねぇ?
(なんか、極めて当たり前の事を知らないだけの様な気がしてならない (^^;;; )


7112 Re:桐5:印刷帳票で、縦倍角を2段に印刷 宮城 2000/08/10-18:48
記事番号7111へのコメント
>その元になるデータが大変に
>面倒臭い(長い記述の)計算式で、ちょっとその手を使うのが
>現実的とは思えないのですが……

表示用の別項目もったらどうですか? なんて、やってないわけないような気がしますが。

そうそう、こないだ話題になった計算式にしてしまえば、どうでしょう?

7114 Re:桐5:印刷帳票で、縦倍角を2段に印刷 hidetake 2000/08/10-19:08
記事番号7112へのコメント
今の領域をちょいとわきによせて、その領域内で #progn 使って#progn(#setq(&STR,長〜い計算式),#u) と変数に代入して、後は実際に印刷したい領域で、
その変数に対して#文字数と#部分列で計算させ分割させると言うのではいけないのですか?

【備考】
桐5になってから、帳票印刷で変数を使ったカウントアップ等を行う場合、その計算されるタイミングがおかしくなる場合がありますが、
その場合、一度作成した帳票を、新規に作成した帳票に書式も含めて読み込み直すと、帳票の定義の繰り返しで内部的には順番の崩れたものが
読み込み直すことによって、左上から右下に向かい領域が整理された状態となり、思ったように正しく計算される場合があります。


7117 Re:桐5:印刷帳票で、縦倍角を2段に印刷 佐田 守弘 2000/08/11-01:22
記事番号7114へのコメント
■ Ogoさん
確かにMS-DOS版の桐では、縦倍角文字の印刷の途中で改行されると、こういった状況になりますね。
原則は1行以内に収まる方法を考えるしかないのかも知れません。
こういった時に、改行感覚を調整する設定がどこかにあった様な記憶もあるのですが、思い出せません。
確か、段組印刷の時に、片側に縦倍角がある時、相手側の改行感覚の調整を行う設定があったので、
それに関連する様な記憶なのですが。
●1行以内に収める方法
一度変数に受けなくても、文字が全て全角文字だとしたら、「#部分列」関数を使うだけで、可能なのではと思います。
つまり、1行20文字だとしたら、
1行目:#部分列(<印刷データ>,1,30)
2行目:#部分列(<印刷データ>,31,60)
 (以下同じ)
半角文字が混じっていると、ちょっと面倒ですね。この場合には桁数で指定するか、
やはり一度変数に受けてから処理するしかないかも知れません。
#計算(#set(&印字値,#部分列(&文字列,1,<n>))
   ,#set(&文字列,#部分列(&文字列,<n+1>))
   ,&印字値 )
●Windows版桐では...
私には「参ったさん」です。
MS-DOS版と違って、桁位置で文字が決められず、文字のピッチ、文字間によって印字長さが変わり、うまく行きません。
これができれば、しばらく前の質問にもあった、1つのデータを段組風に印刷する事もできるのですが。
(実際に印字した値を参照できる関数が欲しい。)

■ hidetakeさん
>その場合、一度作成した帳票を、新規に作成した帳票に
>書式も含めて読み込み直すと、
とても良い事を聞きました。
帳票の定義内容は、表と同じ形式で記述されていますが、再定義などを行うと、定義した順に領域の定義内容のデータ行が並ぶのだと思います。
通常は、領域の順序(上から下、同じ行では左から右)に整列してから印刷などをするはずなのですが、これがうまく行かない時があるのかも知れませんね。
別の帳票に読み込み直すと、丁度整列した表を書き出したり読み込んだりするのと同じで、定義順ではなく、処理すべき順序に書き直されるんでしょうね。

佐田守弘(KS-00119)

7120 Re:桐5:印刷帳票で、縦倍角を2段に印刷 Ogo 2000/08/11-03:27
記事番号7117へのコメント
結局、#文字位置 と #部分列 を使った大仰な計算式をゴリゴリ書いてケリを付けました。
全くスマートではありませんが、参考までに。

表示幅は32(全角16文字)、印字属性は縦倍


第1行目(あふれ改行文字に " "=全角スペース を設定)

#条件選択(#文字数([会社名])<17,#全角([会社名]),
 1,#文字置換(#文字置換(#文字置換(#全角([会社名]),"・"," ")
  ,"、"," ",","," "))


第2行目(上の行から1行置いた行に定義)

#条件選択(#文字数([会社名])<17,"",
 1,#部分列(#文字置換(#文字置換(#文字置換(#全角([会社名]),"・"," ")
  ,"、"," "),","," "),
   17-#文字位置(#文字列反転(#文字置換(#文字置換(#文字置換(
    #全角(#部分列([会社名],1,16)),"・"," ")
     ,"、"," "),","," "))," ")))

要するに、会社名が極端に長い時に(特にカタカナの会社名で多い)妙な位置で改行されないようにしたかったんですね。
しかも入力時の不整合に備えて、「株式会社 キリノケイジバン スーパー ユーザー」
「株式会社 キリノケイジバン・スーパー・ユーザー」
「株式会社 キリノケイジバン、スーパー、ユーザー」
「株式会社 キリノケイジバン,スーパー,ユーザー」
のどれでも許容するように。


戻る