1:プリンタの印字についてのご質問 ど素人 07/25 16:39 オフコン(COBOL自体)素人でうまく説明できないかも知れませんが、わかる方教えて下さい。 あるファイルのメンテナンスプログラムを作成しており、 ACCEPTで必要な項目を入力させファイルにWRITE後、 ラインプリンタに入力した情報を印刷し、次のデータ入力 に戻るというプログラムを作成したのですが、うまく動きません。 印刷内容は見出し行(ページの先頭のみ)と入力した情報です。 1件目の登録後に見出し+1件目データを印字したいのですが、 1件目の登録では見出し行のみ印字され、2件目登録後1件目の情報が印字されます。 プログラムを終了(プリンタのCLOSE)時に最終登録情報が印字されます。 ソースは ACCEPT 項目入力 WRITE ファイル名 1件目ならプリンタOPEN WRITE プリンタ FROM 見出し行 AFTER 1 WRITE プリンタ FROM ファイル情報 AFTER 1 ←これが印字されないまま入力に行ってしまう 項目入力に戻る 終了時プリンタOPENならCLOSE 環境はExpress5800/600 AVX01で作成しています。 よろしくお願いします。 5:Re: x2:プリンタの印字についてのご質問 ど素人 07/26 11:26 ご回答ありがとうございます。 >つまり行が変わったという情報を得てから印字します。 そういう構造なんですね。勉強になります。 >1.”AFTER 1”の代わりに”BEFORE 1”印字後改行を使う 試しにやってみましたが結果は同じでした;; >その後にデータベースからバッチ(まとめて)印字してチェックリストして最終確認と保管リストとします。 おっしゃる通り他のプログラムはそのようになっておりますが、 ユーザー(役員レベル)からの強い要望で、画面確認ではなく 登録後即印字して目視で確認してから次を登録するという 仕様になってしまいました。 他のプログラムを見よう見まねで作成したところ今回の事態 になっています。 やはり機構的に無理ということなのでしょうか? 6:Re: x2:プリンタの印字についてのご質問 07/26 12:36 すこし話しがそれますが、ラインプリンタではなく、シリアルプリンタでは正しく作動するのでしょうか? 正しく作動するとすれば、 プログラムが正しく動く/動かないの前に、 プログラムの仕様に無理があるのでは? ラインプリンタに印字されたか否かを判断するのに、 「ラインプリンタのカバーをあけ、印字位置アップ(?)し、 印字の確認をする」という操作が必要になってくるのでは。 毎回/毎行、その操作をするということですか? 話が、とんちんかんであれば、無視してください。 7:Re: x2:プリンタの印字についてのご質問 ど素人 07/26 13:12 ご質問にお答えします。 >シリアルプリンタでは正しく作動するのでしょうか? シリアルプリンタはあるのですが、オフコンにはラインプリンタ とページプリンタが接続されていますので動作確認はしていません。 端末の隣にあるラインプリンタでという前提です。 >プログラムの仕様に無理があるのでは? うすうす感じてします^^; >「ラインプリンタのカバーをあけ、印字位置アップ(?)し、 印字の確認をする」という操作が必要になってくるのでは。 カバーを開けると自動的に紙送りされ、閉じると元の位置に 自動で戻ります。 >毎回/毎行、その操作をするということですか? その通りです^^; 何とか実現する方法がないか質問した次第です。 江須扇様から『ラインプリンタ行が変わったという情報を得てから印字する』と教えて頂いたので、 データ行印字後にスペース行を印字するようにしたところデータ行は印字されるように なりました。根本的な解決にはなってませんが。。。 8:Re: x7:プリンタの印字についてのご質問 江須扇 07/27 16:49 >>1.”AFTER 1”の代わりに”BEFORE 1”印字後改行を使う >試しにやってみましたが結果は同じでした;; だめでしたかもうしわけありませんでした。 技術的なことですが、COBOLの仕様とOS(A−VX)の仕様が違っているかもしれません。 ”BEFORE 1”を使ってもOSは改行命令を出力しないのかもしれません。 >ユーザー(役員レベル)からの強い要望で、画面確認ではなく >登録後即印字して目視で確認してから次を登録するという >仕様になってしまいました。 役員のご要望であればしかたありませんね なっとくしました。 >データ行印字後にスペース行を印字するようにしたところデータ行は印字されるように >なりました。根本的な解決にはなってませんが。。。 チェックリストであれば行間隔が空いたほうがチェックしやすと思いますが、 役員がベタ印刷をご要望されているという事であればむずかしいかもしれません 実機がないのでテストできませんが ”BEFORE 1”で印字した後、 スペース行を”AFTER 0”で印字すれば改行命令が出力されるかもしれません。 9:Re: プリンタの印字についてのご質問 近藤 07/27 23:37 ソースを要求したのに 大変遅くなり、すみませんでした。 すっかりわすれてました。 たしかにプログラム的には問題ないような気がしますね。 ACCEPT要求をしてるときに印字されていないとなるとおかしいですよね。 プログラムではなければプリンタになるのですが・・・・ 考えられるのが、あるような気がします。 会社に帰ってからはっきりわかりますが、プリンタ側の設定で変えられるのですが、思い出せません。 write命令をだしてもプリンタ側にある程度溜め込めなければ印字しないような設定になっているのではないのでしょうか? サーバのプリンタ設定でラインプリンタを見てもらう事になります。プリンタ設定の中に アルファベット 3文字 E?? ??? ??? ??? 3から4種類を選択できる所がありますが この箇所を変えれば直出力になります。 自宅ではわからないので、月曜日まで持ち越すか どなたかわかる人にお任せします。 中途半端な回答になりすみません。 (ラインプリンタが会社になくUSER先に行かないと確認が取れませんw 3文字がまったくでてこないw "E"がついて、"U"もついてたような気がします、悔しいです) 10:Re: x2:プリンタの印字についてのご質問 オフコン人 07/30 09:55 プリンタの機種は何になるでしょうか? 後ろにCMと付くタイプのプリンタだと、そのような仕様のようです。 1行目の印刷データを出力しただけでは、印刷を行わず、次の行の印刷データを出力すると、1行目の印刷データを印字するようです。 11:Re: プリンタの印字についてのご質問 ど素人 07/31 09:32 ご回答ありがとうございます。 他の回答者様からAFTER 0を使用してみてはと 言われたのでBEFOREで印字し最後にSPACE行のAFTER 0 を使用したところ印字できるようになりました。 ただプリンタ設定でどうにかなるのであればそちらの方が 良いので詳細が分かりましたらお教え下さい。 12:Re: x2:プリンタの印字についてのご質問 ど素人 07/31 09:33 ご回答ありがとうございます。 プリンタはNECのN1153-021でございます。 13:Re: x7:プリンタの印字についてのご質問 ど素人 07/31 09:42 ご回答ありがとうございます。 >スペース行を”AFTER 0”で印字すれば改行命令が出力されるかもしれません。 できました!全部BEFOREに直して最後にAFTER 0を入れたところ 印字されるようになりました。 Micro FocusのPC-COBOLではシリアルプリンタを使用しており AFTER 0も使用しているのですが、オフコンのラインプリンタでも 使用できるのは目からウロコです。 とりあえず仕様通りできそうです。本当にありがとうございました。 14:Re: よかったですね(プリンタの印字についてのご質問) 江須扇 08/01 16:39 >とりあえず仕様通りできそうです。本当にありがとうございました。 上手くいってよかったですね。 本来なら販売店のSEが教えてくれると思いますが、 どこの販売店もオフコンは基よりCOBOLもしらないから教えてくれないですよね |