Google
オフコン練習帳内を検索
インターネット全体を検索

NECオフコン関連
オフコン一般
情報

[掲示板に戻る]


プリンタの印字についてのご質問 ど素人 2012-7-25 16:39
Re: プリンタの印字についてのご質問 近藤 2012-7-25 17:08
Re: プリンタの印字についてのご質問 名無しさん 2012-7-26 10:48
Re: プリンタの印字についてのご質問 近藤 2012-7-27 23:37
Re: プリンタの印字についてのご質問 ど素人 2012-7-31 9:32
Re: x2:プリンタの印字についてのご... 江須扇 2012-7-26 10:19
Re: x2:プリンタの印字についてのご... ど素人 2012-7-26 11:26
Re: x2:プリンタの印字についてのご... 富山清風 2012-7-26 12:36
Re: x2:プリンタの印字についてのご... ど素人 2012-7-26 13:12
Re: x7:プリンタの印字についてのご... 江須扇 2012-7-27 16:49
Re: x7:プリンタの印字についてのご... ど素人 2012-7-31 9:42
Re: よかったですね(プリンタの印字に... 江須扇 2012-8-1 16:39
Re: x2:プリンタの印字についてのご... オフコン人 2012-7-30 9:55
Re: x2:プリンタの印字についてのご... ど素人 2012-7-31 9:33

1 プリンタの印字についてのご質問
ど素人 2012-7-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で作成しています。
よろしくお願いします。
2 Re: プリンタの印字についてのご質問
近藤 2012-7-25 17:08  [返信] [編集]

こんにちは
ソースがないとわかりませんが・・・

なんとなく、
WRITE プリンタ FROM ファイル情報 AFTER 1

このファイル情報はどこかのタイミングでMOVEで移送してると思いますが、移送しているタイミングがおかしいのでは?

そこの箇所だけでもソースがほしいっす♪
3 Re: x2:プリンタの印字についてのご質問
江須扇 2012-7-26 10:19  [返信] [編集]

江須扇と申します。

>1件目の登録では見出し行のみ印字され、2件目登録後1件目の情報が印字されます。
この辺にヒントがあるようです。
一回遅れで印字されるということですよね。

>プログラムを終了(プリンタのCLOSE)時に最終登録情報が印字されます。
最終的には印字されるということですよね。
ACCEPTしたものが直ぐに印字しないのがお気に召さないということですよね。

>WRITE プリンタ FROM ファイル情報 AFTER 1 ←これが印字されないまま入力に行ってしまう
”AFTER 1”は1行改行後印字という命令です。

>ラインプリンタに入力した情報を印刷し、次のデータ入力
シリアルプリンタでないのが原因ではと考えます
機構的にラインプリンタは同一行に2回以上重ね印字できないという特性があります。
つまり行が変わったという情報を得てから印字します。

対策としては
1.”AFTER 1”の代わりに”BEFORE 1”印字後改行を使う
2.ACCEPTのあと画面に必要項目をDISPLAYし画面で確認

老婆心ながら蛇足を書きます
オフコンデータ入力はクリーンデータ入力が基本で
ACCEPT入力時にマスターチェックや論理チェックをし確認画面を出し最終的に問題ない場合データベースに書き込みが普通です。
その後にデータベースからバッチ(まとめて)印字してチェックリストして最終確認と保管リストとします。
目的的に的外れかもしれませんが念の為、書きました。

4 Re: プリンタの印字についてのご質問
名無しさん 2012-7-26 10:48  [返信] [編集]

早速のご回答ありがとうございます。
紛らわしい質問をしてしまったので、簡素化したプログラムで質問致します。

<印刷する内容>
☆一覧表☆
コード 氏 名 金額

という2行の印字をしたい場合で、『☆一覧表☆』を印字後ACCEPT
して印字されたか目視で確認後、『コード 氏 名 金額』を
印字するというプログラムです。
以下ソース
000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. AAA003.
000030 ENVIRONMENT DIVISION.
000040 CONFIGURATION SECTION.
000050 INPUT-OUTPUT SECTION.
000060 FILE-CONTROL.
000070 SELECT DPFL ASSIGN TO DP-PRN999.
000080*
000090 I-O-CONTROL.
000100* (印刷ファイル)
000110 APPLY SHIFT-CODE ON DPFL.
000120*
000130 DATA DIVISION.
000140 FILE SECTION.
000150* (印刷ファイル)
000160 FD DPFL LABEL RECORD OMITTED
000170 LINAGE IS 66.
000180*
000190 01 DPFL-R PIC X(136).
000200*
000210 WORKING-STORAGE SECTION.
000220 01 WORK-AREA.
000230 03 END-STATUS.
000240 05 ADV PIC X(02) VALUE "04".
000250 03 WK-ADV PIC X(01).
000260*-----------------------------------------------------------------*
000270* 印刷領域 *
000280*-----------------------------------------------------------------*
000290 01 P-TITLE.
000300 03 FILLER PIC X(10) VALUE "☆一覧表☆".
000310 03 FILLER PIC X(126).
000320 01 P-MIDASHI.
000330 03 FILLER PIC X(04) VALUE "コード".
000340 03 FILLER PIC X(03).
000350 03 FILLER PIC X(06) VALUE "氏 名".
000360 03 FILLER PIC X(08).
000370 03 FILLER PIC X(08) VALUE "金額".
000380 03 FILLER PIC X(107).
000390*-----------------------------------------------------------------*
000400* 画面定義 *
000410*-----------------------------------------------------------------*
000420 SCREEN SECTION.
000430 SD GAMEN END STATUS IS END-ST.
000440*
000450 01 SCR01 CLEAR SCREEN.
000460 03 LINE 01 COLUMN 01 PIC N(14) VALUE
000470 NC"☆一覧表印刷☆".
000480 01 AC-AREA.
000490 03 AC-ADV LINE 22 COLUMN 68 PIC X(01) 確認
000500 USING WK-ADV
000510 NO IFC CHECK OVERFLOW.
000520*
000530 PROCEDURE DIVISION.
000540*
000550 BEGINNING.
000560 DISPLAY SCR01.
000570 OPEN OUTPUT DPFL.
000580* (1行目印刷)
000590 WRITE DPFL-R FROM P-TITLE AFTER 2
000600 END-WRITE.
000610* (印刷されたか確認するためACCEPT)
000620 ACCEPT AC-ADV.
000630 EVALUATE END-ST
000640 WHEN ADV
000650* (F10キー押下で2行目印刷)
000660 WRITE DPFL-R FROM P-MIDASHI AFTER 2
000670 END-WRITE
000680 WHEN OTHER
000690* (他キーは終了)
000700 CONTINUE
000710 END-EVALUATE.
000720 CLOSE DPFL.
000730 STOP RUN.
62行目のACCEPTでは1行目が印字されているはずなのに印字されず、
F10キー押下後に1行目が印字され、CLOSE処理で2行目が印字されます。
よろしくお願い致します。
5 Re: x2:プリンタの印字についてのご質問
ど素人 2012-7-26 11:26  [返信] [編集]

ご回答ありがとうございます。

>つまり行が変わったという情報を得てから印字します。
そういう構造なんですね。勉強になります。

>1.”AFTER 1”の代わりに”BEFORE 1”印字後改行を使う
試しにやってみましたが結果は同じでした;;

>その後にデータベースからバッチ(まとめて)印字してチェックリストして最終確認と保管リストとします。
おっしゃる通り他のプログラムはそのようになっておりますが、
ユーザー(役員レベル)からの強い要望で、画面確認ではなく
登録後即印字して目視で確認してから次を登録するという
仕様になってしまいました。
他のプログラムを見よう見まねで作成したところ今回の事態
になっています。

やはり機構的に無理ということなのでしょうか?
6 Re: x2:プリンタの印字についてのご質問
富山清風 2012-7-26 12:36  [返信] [編集]

すこし話しがそれますが、ラインプリンタではなく、シリアルプリンタでは正しく作動するのでしょうか?

正しく作動するとすれば、
プログラムが正しく動く/動かないの前に、
プログラムの仕様に無理があるのでは?
ラインプリンタに印字されたか否かを判断するのに、
「ラインプリンタのカバーをあけ、印字位置アップ(?)し、
印字の確認をする」という操作が必要になってくるのでは。
毎回/毎行、その操作をするということですか?

話が、とんちんかんであれば、無視してください。
7 Re: x2:プリンタの印字についてのご質問
ど素人 2012-7-26 13:12  [返信] [編集]

ご質問にお答えします。

>シリアルプリンタでは正しく作動するのでしょうか?
シリアルプリンタはあるのですが、オフコンにはラインプリンタ
とページプリンタが接続されていますので動作確認はしていません。
端末の隣にあるラインプリンタでという前提です。

>プログラムの仕様に無理があるのでは?
うすうす感じてします^^;

>「ラインプリンタのカバーをあけ、印字位置アップ(?)し、
印字の確認をする」という操作が必要になってくるのでは。
カバーを開けると自動的に紙送りされ、閉じると元の位置に
自動で戻ります。

>毎回/毎行、その操作をするということですか?
その通りです^^;

何とか実現する方法がないか質問した次第です。
江須扇様から『ラインプリンタ行が変わったという情報を得てから印字する』と教えて頂いたので、
データ行印字後にスペース行を印字するようにしたところデータ行は印字されるように
なりました。根本的な解決にはなってませんが。。。

8 Re: x7:プリンタの印字についてのご質問
江須扇 2012-7-27 16:49  [返信] [編集]

>>1.”AFTER 1”の代わりに”BEFORE 1”印字後改行を使う
>試しにやってみましたが結果は同じでした;;
だめでしたかもうしわけありませんでした。
技術的なことですが、COBOLの仕様とOS(A−VX)の仕様が違っているかもしれません。
”BEFORE 1”を使ってもOSは改行命令を出力しないのかもしれません。

>ユーザー(役員レベル)からの強い要望で、画面確認ではなく
>登録後即印字して目視で確認してから次を登録するという
>仕様になってしまいました。
役員のご要望であればしかたありませんね
なっとくしました。

>データ行印字後にスペース行を印字するようにしたところデータ行は印字されるように
>なりました。根本的な解決にはなってませんが。。。
チェックリストであれば行間隔が空いたほうがチェックしやすと思いますが、
役員がベタ印刷をご要望されているという事であればむずかしいかもしれません
実機がないのでテストできませんが
”BEFORE 1”で印字した後、
スペース行を”AFTER 0”で印字すれば改行命令が出力されるかもしれません。
9 Re: プリンタの印字についてのご質問
近藤 2012-7-27 23:37  [返信] [編集]

ソースを要求したのに
大変遅くなり、すみませんでした。
すっかりわすれてました。

たしかにプログラム的には問題ないような気がしますね。

ACCEPT要求をしてるときに印字されていないとなるとおかしいですよね。

プログラムではなければプリンタになるのですが・・・・

考えられるのが、あるような気がします。
会社に帰ってからはっきりわかりますが、プリンタ側の設定で変えられるのですが、思い出せません。

write命令をだしてもプリンタ側にある程度溜め込めなければ印字しないような設定になっているのではないのでしょうか?

サーバのプリンタ設定でラインプリンタを見てもらう事になります。プリンタ設定の中に
アルファベット
3文字
E??
???
???
???
  3から4種類を選択できる所がありますが
  この箇所を変えれば直出力になります。

自宅ではわからないので、月曜日まで持ち越すか
どなたかわかる人にお任せします。    

中途半端な回答になりすみません。

(ラインプリンタが会社になくUSER先に行かないと確認が取れませんw
3文字がまったくでてこないw
"E"がついて、"U"もついてたような気がします、悔しいです)










10 Re: x2:プリンタの印字についてのご質問
オフコン人 2012-7-30 9:55  [返信] [編集]

プリンタの機種は何になるでしょうか?
後ろにCMと付くタイプのプリンタだと、そのような仕様のようです。
1行目の印刷データを出力しただけでは、印刷を行わず、次の行の印刷データを出力すると、1行目の印刷データを印字するようです。
11 Re: プリンタの印字についてのご質問
ど素人 2012-7-31 9:32  [返信] [編集]

ご回答ありがとうございます。

他の回答者様からAFTER 0を使用してみてはと
言われたのでBEFOREで印字し最後にSPACE行のAFTER 0
を使用したところ印字できるようになりました。

ただプリンタ設定でどうにかなるのであればそちらの方が
良いので詳細が分かりましたらお教え下さい。
12 Re: x2:プリンタの印字についてのご質問
ど素人 2012-7-31 9:33  [返信] [編集]

ご回答ありがとうございます。
プリンタはNECのN1153-021でございます。
13 Re: x7:プリンタの印字についてのご質問
ど素人 2012-7-31 9:42  [返信] [編集]

ご回答ありがとうございます。

>スペース行を”AFTER 0”で印字すれば改行命令が出力されるかもしれません。

できました!全部BEFOREに直して最後にAFTER 0を入れたところ
印字されるようになりました。
Micro FocusのPC-COBOLではシリアルプリンタを使用しており
AFTER 0も使用しているのですが、オフコンのラインプリンタでも
使用できるのは目からウロコです。
とりあえず仕様通りできそうです。本当にありがとうございました。
14 Re: よかったですね(プリンタの印字についてのご質問)
江須扇 2012-8-1 16:39  [返信] [編集]

>とりあえず仕様通りできそうです。本当にありがとうございました。
上手くいってよかったですね。
本来なら販売店のSEが教えてくれると思いますが、
どこの販売店もオフコンは基よりCOBOLもしらないから教えてくれないですよね

BluesBB ©Sting_Band