過去の桐井戸端BBS (桐ver.8)
7744 印字コマンドの使い方 今村 誠 2000/09/21-14:21
メイン&サブフォームで集計行だけをK3ファイルで書き出したいので、
書き出したい項目(メインフォームの項目)を、サブフォームのコマンドボタンから
手続き実行で全てをメソッド呼び出しから変数に代入しました。
サブフォームのグループ項目である合計金額とともに印字コマンドを使用して
得意先控えTBLに、追加書出したいのですが、K3ファイルを作成するには、
印字コマンドできますか。
印字コマンドを使ったことがないので、具体的な例があれば教えてください。

7751 印字コマンド 佐田 守弘 2000/09/21-20:29
記事番号7744へのコメント
今村 誠さん
印字コマンドの使い方を簡単に述べます。
●ファイル出力のための印字コマンドの使い方の概要
次の様な形で使います。
印字開始 <出力先テキストファイル名>
印字 <印字データの並び>
印字終了

@印字開始
印字開始コマンドで出力先ファイル名を指定すると、テキストファイルへの書き出しになります。
そして、このコマンドで出力先のファイルがオープンされます。

A印字
実際に印字する内容を、計算式で記述します。計算式は、カンマで区切って複数記述できます。
それらの計算式は、文字列値、数値が混じっていても構いません。
(計算式でとは、変数でも項目名でも関数を使った計算式でも構わないという意味)
計算式のリストの最後にカンマを付けない場合には、出力後に改行コードが出力されます。
カンマを付けると、改行コードは出力されず、次の印字コマンドの出力が続きます。
印字コマンドでは、計算式を記述した通りに出力されます。
つまり、CSVやK3形式で出力するには、コンマや二重引用符を出力する必要がありますが、
それらも出力する計算式のリストの1つとして出力して下さい。つまり、次のようになります。
(代入 &Q=#JIS(44) が実行されているとします)
印字 """",[名前],"""",",",[年齢],",",#JIS(44),[住所],&Q
このコマンドで、
"桐野",20,"港区西麻布"
の文字が出力されます。

B印字終了
印字コマンドを終える時に記述します。このコマンドで、出力したファイルがクローズされます。

●印字コマンドの機能
元来はプリンタにデータを出力する事から始まったコマンドなのでしょうが、出力先にファイル名を指定し、
ファイルに出力することも可能です。
また、プリンタに文字を出力する時には、桐はJISコード体系で作られていますから、1バイト文字でも2バイトで出力します。
その様な時にRAWのスイッチを付けて1バイトコードを出力することも可能です。
この方法で、プリンタに対してエスケープシーケンスを出力することも可能です(現在は余り意味がないでしょうけど)。

佐田守弘(KS-00119)
7772 Re:ありがとうございました 今村 誠 2000/09/24-18:52
記事番号7751へのコメント
皆さんこんばんは
いつも佐田先生コメントありがとうございます。
無事印字(K3ファイル)できました。
最初は、印字のあとに項目名や変数を続けて書こうと思ったのですが、
エラーが多発してうまくいかなかったので。作業変数をいくつか用意して
"",""","""",""""",等と実験しながら作成しました。
先生のサンプルのように"""",""""",4つ毎のコンマがポイントですね。
また全てを印字する前に変数に渡すときは全てのデータを文字置換しないとうまくいきませんでした。
やはり書き出すのですから、全て文字列に変換してから一つの変数を書き出すようにした方が私の場合楽でした。
代入 &宛名=#CAT("""",&PRT9,"""",",",#STR([日付]))
印字 &宛名
めっきり涼しくなりましたね。東京は遠いですね
いつも掲示板でお世話になっている方にご挨拶したいのですが………。
7774 印字コマンドとダブ子さん 佐田 守弘 2000/09/24-23:44
記事番号7772へのコメント
今村 誠さん et. al

>また全てを印字する前に変数に渡すときは全てのデータを文字置換しないと
>うまくいきませんでした。やはり書き出すのですから、全て文字列に変換して
>から一つの変数を書き出すようにした方が私の場合楽でした。

それも1つの方法ではありますが、文字列も数値データも含めて、
計算式でコンマ区切りで並べて記述できる点が印字コマンドの「うま味」でもあります。
そう言った意味では、一度変数に代入する事なしに、直接記述する事をお勧めします。

●ダブ子さん
以前より、ダブルクォーテーションマーク自身を文字列として書き出す事を「ダブ子さん」と呼ぶ方がおられます。
リファレンスによれば、ダブルクォーテーション自身を文字列とするには、
ダブルクォーテーションを2つ書き並べます。
つまり、「""」がダブルクォーテーションを表す文字列です。
そして、この文字列を文字列とするために前後をダブルクォーテーションで囲みますので、
結果として「""""」の様になります。

でも、これはとてもまぎらわしいです。
ベテランの方と言えども(ベテランの方ほど)間違えます。
つい先日も、#7704に超ベテランの悲しげさんの「白状記」がありましたけど、
あれは他人事ではないですね。私も全く同じ間違いをした事が数知れずです。
(悲しげさ〜ん。私もお仲間よ(^_^)/~~~~)

ですから、先般のコメントでは「""""」を書きましたけど、私自身はダブ子さんは使いません。
ではどうするかと言えば、
 代入 &Q=#JIS(34), &C=#JIS(44) (34は二重引用符、44はコンマ)
 印字 &Q,[データ],&Q,&C,・・・・
の様に記述します。

時には、
 代入 &QCQ=&Q=#JIS(34)+#JIS(44)+#JIS(34)
といったものも使います。見ていただけば分かる通り、これは「","」の文字列です。

佐田守弘(KS-00119)

追伸
訂正
前回の書き込みで、&Q=#JIS(44)と書きましたが、&Q=#JIS(34)の誤りでした。
二重引用符、コンマのJISコードは、それぞれ34、44ですので、今回の書き込みの様に訂正します。

戻る