プリンタ出力は原則的にスプーラ経由で印刷します。汎用機の時代からそうですね。Portsを突っついて直接印字のニーズは未だあるのかなぁ。DOS時代に経験しましたが....
純な機械物なので、ジャムったり、インク切れやインクリボン切断や紙切れによる打ちなど、異常系の発生しやすい出力デバイスです。
・データの出力で一度印刷したら、印刷済みマークや発行回数の欄を付けて、チェックしたりインクリメントしたりしています。
印刷済ならば、タイトルのみ右に"再発行"と印字する仕様です。
請求書印刷などで要望があったようです。印刷処理が走ると発行フラグを更新にする仕組みで設計/実装されてました。
ジャムッたら、"再発行"が印字されます。
私は、プログラムで状況把握できない動作が処理に介入する場合は、自動化するのは良しとしません。なので、発行済み欄は自動更新項目にするのはイヤです。
それ以前に、発行済み欄が必要かどうかも疑問だったりします。必要なケースもあるのでしょうが。人的にチゥックしてました。
良しとする設計者の意見を聞くと。
「 正常に印刷されるのが正常系で、プリンタ不調は捜査員は認識できるので、印刷済マークを解除すれば良い。」
「"再発行"の文字が出ていても不都合でない」
「印刷トラブルの発生率は低いので考慮は不必要」
うーん。そんなレベルの設計でいいの?
普通に起こりうる異常系は設計でカバーしたほうがいいです。ネットワークプリンタが普及しているのでなおさらです。
プリンタ機種に依存しますが、A3,A4,B4 が印字可能でも A3のカセットがセットされていないとき、発行したPCにメッセージが戻らず、プリンターが A3のカセット交換のメッセージを出して、止まる機種があります。
ピーピー啼いて煩いです。中には処理キャンセルボタンを押して、クリアする人までいます。何度印刷を消されたか...,<- 違う!
違う事例ですが、DataBaseのテーブルには大概更新日時欄を設定しています。普通はサーバー日付をDefaultで設定するものですが、ベタにコーディングする人はプログラムで 更新日付= now とクライアント日付で更新したりします。
設計基準で決めることでしょうが、考慮されていないことが過去にありました。クライアント日付は当てにならないという認識が薄い設計者もいますね。
過去日や未来日に設定しているクライアントも普通に存在し得る事です。
まぁ。どこまでが正常な異常系かの線引きは難しいのですが、......