7.18.オーバーフロー標識について |
まず、参照される印刷装置ファイル(たとえば、QPRINT)の属性のオーバーフロー行を確認します。コマンドはDSPFDで出てきます。システムが最初から準備しているのは、LPI=6,一頁=66行、オーバーフロー行=60です。さて、RPGでは、印刷装置ファイルを内部記述とするか、外部記述とするかで違います。 内部記述のプリンターファイルの場合結構、これを使っている人は多いと思います。私も99%これです。F仕様書でQPRINT(など)の行に、OFなどと、オーバーフローの時の標識を付けます。(予備校で書くのを忘れた)。指定できるのは、oA 〜 oG、oVです。oHとか、oiは駄目です。理由は知りません。※1つのRPGでは、印刷ファイル8個までです。 内部記述だと、Except命令で印刷するのが通常ですが、F仕様書で、oF指定した場合、以下のように、この標識を使います。上記印刷装置ファイルの定義中のオーバーフロー行を超えると、F仕様書で指定した標識が、勝手に、オンになります。コーディングは、 *INOF IFEQ *ON EXCPT#HED END という感じです。#HEDは、改ページ指定(というか、絶対的にページの1行目に出す)という指定つきの、「見出し」EXCEPT命令です。これで、改ページします。つまり、いま、2行目を印刷していて、「絶対的な位置1行目に行け」という命令を受けると、今いるのが、一行目より大きい行なので、次ページに行く仕組みです。このとき、oFは勝手にオフになります。つまり、 OF EXCPT#HED OF SETON 75 としても、75はオンになりません。EXCEPT#HEDで、OFはオフになっているからです。この場合は、 OF SETON 75 OF EXCPT#HED とするか、 *INOF IFEQ *ON EXCPT#HED SETON 75 END とします。 それから、設計どおりに、改ページしてくれない場合、明細行を打つところで、改行してから明細か、明細印刷してから改行か、さらに、oFだったら見出し印刷のタイミングが、明細を打つ前か、後なのか、で違ってきます。 外部記述のプリンターファイルの場合F仕様書で、オーバーフロー標識は、数字の01から99になります。どういう訳か、oFなどは使えません(RPGの印刷装置の制約の引継によるものでしょう)。自動的に01から99はオンになりますが、ヘッダーを書き出しても、標識はオフにはなりません。自分でオフにします。 *IN10 IFEQ *ON WRITE HED01 MOVE *OFF *IN10 END といった具合です。ここは注意してください。 なお、参照マニュアルは、RPG400解説書の3.RPG標識を参照してください。 また、内部記述の時、フェッチなるものがあって、オーバーフローしたときに印刷するものを、o仕様書で定義できるようです。便利だ、と騒いでいたひとがいたのですが、私は使っていません。同じマニュアルの10.3.5.1にページオーバーフロールーチンとして、出ているのが、それです。チャンスがあったら試してみます。 |
You are at K's tips-n-kicks of AS/400
|
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||