2017-10-24 28 views
0

データを印刷しているプログラムを変更する必要があります。 これで、ある行番号に達したときに新しいページを開始する新しい方法を記述することができます。スプールファイルの最後には一定のデータが印刷されるため、新しいページで区切ってはいけません。PRTFの現在の行数を取得する方法

現在の方法は、カウンタをインクリメントすることです。しかし、これは非常に悪い方法です。なぜなら、バーコードを印刷するとき、私はこのバーコードがどれくらいの大きさ(何行)あるか分かりません。そして、すべてのプログラムで実装できる方法を実現したいので、すべてのバーコードのサイズを自分でテストして取得する必要はありません。

カーソル位置を示す表示ファイルのデータ構造があることは知っています。したがって、私が理解しているように、PRTFと現在の行番号とで同じことが可能でなければなりません。

誰でもこれを行う方法を知っていますか? ありがとう!

+1

プリンタファイル情報のデータ構造を調べてみましたか?そこには現在の行番号があります。しかし、AFPDSやIPDSのデータストリームにデータが入力されているかどうかはわかりません。 – jmarkmurphy

答えて

2

ファイル情報データ構造(INFDS)を使用して、必要な情報を取得します。

FQSYSPRT O F 132  PRINTER OFLIND(*INOF) 
F          INFDS(OutputFDS) 
F          PRTCTL(PrtCtlDS) 

D*File Information Data Structure               
D OutputFDS  DS                  
D**Open Feedback Area                  
D ROWS     152 153I 0              
D OVERFLOW    188 189I 0              
D                       
D**Printer Feedback Area                 
D CUR_LINE    367 368I 0          Current line num 
D CUR_PAGE    369 372I 0          Current page cnt 


D*Printer Control Data Structure   
D PrtCtlDS  DS      
D pSpacing    1  12   
D pSpcBefore    1  3A   
D pSpcAfter    4  6A   
D pSkpBefore    7  9A   
D pSkpAfter    10  12A   
D pLineNbr    13  15S 0  

あなたにも、プリンタ制御データ構造(PRTCTL)から行番号を取得することができますが、多くの場合、また、あなたの状況に行とオーバーフローラインを知りたいでしょうし、それだけで見つけることができますINFDS。

+0

良い答えですが、彼はバーコードを印刷しているので、OPはIPDSまたはAFPDSプリンタファイルを扱っています。 Markがその記事にコメントしたように、私はあなたが非テキストデータを扱うようになると、行#が正確であるとは思わない。 – Charles