過去の桐井戸端BBS (桐ver.9)
26333 レポート印刷コマンドの終了状態の戻り値はどのような意味があるのでしょうか Koba 2004/05/16-17:59
皆さん いつも適切なアドバイス感謝しております
またまた教えていただきたく投稿します
印刷時に紙詰まり等のエラーが発生したときの対処方法ですが,
レポート印刷の終了状態の戻り値に
   1  最後まで印刷した。
   0  エラーが発生したため、印刷できなかった。
   -1 途中で印刷を中止した。
とあります.
そこで,戻り値<>1 の時の記述をしましたが,動かしてみると
印刷状態に入るとデータを一気にプリンターに送ってしまい,
実際にエラーが発生したときには,記述どおりの動きはしません
戻り値=1 は単にエラーなくデータをプリンターに送りました
という感じです.
どなたか こういう場合の対処方法を教えてください
よろしくお願いします

Ver9 sp1 プリンターは Epson VP-1850 です
26334 Re:特定の用紙で紙詰まりしますか? 今村 誠 2004/05/17-00:11
記事番号26333へのコメント
Kobaさんこんにちは
>印刷時に紙詰まり等のエラーが発生したときの対処方法ですが
用紙がもったいないので、即プリンタをオフラインにして、
win2kの場合「設定」→「プリンタ」
エラーのプリンタを「開く」印刷ジョブを右クリック→「キャンセル」
と選べばいいのではないでしょうか
また印刷が止まった場合プリンタのアイコンが薄くなってオフラインと
なる場合もあるので、プリンタを右クリックオフラインのチェックを、
外す事も必要かもしれません。

また紙詰まりは連続紙でしょうか?
単票の吸い込みが悪くて詰まるのでしょうか?
或いは、複写枚数が規定以上の枚数で詰まるのでしょうか?
それとも、プリンタの使用年数が長くて摩耗や消耗などの原因で詰まっているのでしょうか。
26345 Re:特定の用紙で紙詰まりしますか? Koba 2004/05/17-19:20
記事番号26334へのコメント
今村 誠さん コメントありがとうございます

>また紙詰まりは連続紙でしょうか?
>単票の吸い込みが悪くて詰まるのでしょうか?
>或いは、複写枚数が規定以上の枚数で詰まるのでしょうか?
>それとも、プリンタの使用年数が長くて摩耗や消耗などの原因で
>詰まっているのでしょうか。

説明が悪くて申し訳ありませんでした
紙詰まりがおきたのは数回程度で大した問題ではないのです.
ただ,そのことを想定して 戻り値<>1 の時の回避方法を記述していたのですが,
前回のコメントでも書いたようにエラーになっても,そのときにはすべてのデータをプリンター側に送っていて,
記述どおりの動きをしません
要するに私が教えてもらいたいのは,何のために 戻り値=1,0,-1の3つがあるのでしょうか.
この使い方がよくわかりません
この点についてよろしくお願いいたします.
26346 Re:特定の用紙で紙詰まりしますか? うにん 2004/05/17-23:28
記事番号26345へのコメント

>要するに私が教えてもらいたいのは,何のために 戻り値=1,0,-1の3つがあるの
>でしょうか.この使い方がよくわかりません

最近のプリンタはバッファが大きいのであんまり役に立たないかもしれませんね。
Windowsでは最低限プリンタのプロパティで「プリンタに直接印刷データを送る」
設定にしないとOSが全部受け取ってしまうので戻り値の意味がないでしょう。

んで、どっちみち実際に印刷が終わるのはデータを送ったずっと後であって、
桐のコマンドはそれまで無駄に待ってたりしないので、送り終わったあとでの
紙詰まりなどを検知することはできないでしょう。

プリンタドライバ自体は結構いろんな情報を返すようになっていると思うのですが、
各社で統一性がないのでアプリケーションからは使えないんじゃないでしょうか。

26349 Re:特定の用紙で紙詰まりしますか? 悲しげ 2004/05/18-00:49
記事番号26346へのコメント
ちなみに私は、「*印刷」コマンドでの終了状態の指定は、
その返り値で判断させるためと云うよりは、終了状態パラメータを記述しておかないと、
何らかの印刷エラーが発生した際に一括処理自体が落ちてしまうことがある。
云い換えれば、終了状態パラメータを記述しておけばエラーが発生しても一括処理が落ちない。
上記目的だけのために記述しています、DOS桐の頃から習慣的に。(^^;)

全然役に立たないコメントで、すいません。

26350 Re:レポート印刷の終了状態の戻り値について 佐田 守弘 2004/05/18-00:51
記事番号26333へのコメント
Kobaさん
他の方も書いておられますが、レポート印刷コマンドの終了状態の戻り値は、
本当にそのレポートが印刷物として仕上がったかどうかの判定には使えないと思います。
MS-DOS時代のアプリの場合、アプリがプリンタドライバを持っていて、
アプリがプリントを制御していましたが、現在のWindows環境では、
アプリは印刷データをOSが管理しているプリンタドライバに出し終わってしまえば、
その段階で印刷終了になります。
おそらく、桐の印刷コマンドでも、印字データを正常に出力し終えた段階で
 1  最後まで印刷した。
の戻り値を返しているのだと思います。

●プリンタの正常終了を調べられないのか
エプソンなどのインクジェットプリンタのドライバは、紙詰りとかインク切れなどを検知していますね。
詳しくは知りませんが、もしやろうとすれば、(機種によっては)アプリ側で
印刷状態のデータを取り込む事は不可能ではないとも思えます。

しかし本当に印刷が終るまで、桐の方で処理を中断して待つのかどうかが別の問題として出て来ます。
何十分も印刷待ちのために次の処理に進めないというのも、効率的でない様な気もします。
もし印刷が終るのを待たずにコマンドを先に進めてしまったら、
後からプリンタからの結果が戻って来ても、桐の方ではそれを受け取って判断のしようがなくなると思います。

またネットワークプリンタでは、少し状況がちがいます。
例えば、多数の人が共用する複合機と呼ばれるプリンタでは、
装置にデータを送り終えると、プリンタドライバの上でも印刷完了になる様です。
(本当に紙が出て来るのは、いつになるのか解らない)

●戻り値の意味
この戻り値は、印刷物ができ上がったという意味ではなくて、
印刷コマンドが正しく実行できて、プリンタに対して印刷データを出力できたかどうか
という意味で使うものかと思います。
良い例かどうか解りませんが、印刷対象の表の指定を誤ったために、
正常にレポート印刷が実行できなかったとか、項目値や変数値の値如何によって
レポート印刷が正しく行えなかったケースを判定する様な用途に使えると思います。

佐田守弘(KS-00119)
26352 みなさん ありがとうございました Koba 2004/05/18-07:33
記事番号26350へのコメント
今村さん うにんさん 悲しげさん 佐田さん
皆さんありがとうございました
なんとなく そうではないかなぁ と思っていましたが
これではっきりしました.
残念な結果でしたが,出来ないものは出来ないとあきらめてがんばります
今後ともよろしくお願いいたします.

戻る