PRINT 属性は、STREAM 属性と OUTPUT 属性を持つファイルの場合に指定できます。 この属性はそのファイルが印刷される予定であることを示します。 すなわち、ファイルと関連したデータを、 最初はほかのメディアに書き出されていても、 印刷されたページに現れることを示します。
|
PRINT を指定したときは、PRINT ファイルの各レコードの最初のデータ・バイトは米国標準規格 (ANS) 印刷制御文字を入れるために予約されます。 この制御文字は、PL/I によって挿入されます。
リスト・ディレクティブ・データ伝送またはデータ・ディレクティブ・データ伝送で伝送されるデータ値は、自動的に左マージンに合わせられ、また、システムで定義され、事前設定されているタブ位置に合わせられます。
PRINT ファイルのレイアウトは、表 34 に リストされているオプションおよびフォーマット項目を使用して制御することができます。
| ステートメント | ステートメントの オプション | 編集ディレクティブの フォーマット項目 | 結果 |
|---|---|---|---|
| OPEN | LINESIZE(n) | - | 行の文字数を設定します。 |
| OPEN | PAGESIZE(n) | - | ページの行数を設定します。 |
| PUT | PAGE | PAGE | 新しいページにスキップします。 |
| PUT | LINE(n) | LINE(n) | 指定された行にスキップします。 |
| PUT | SKIP[(n)] | SKIP[(n)] | 指定された行数だけスキップします。 |
| PUT | - | COLUMN(n) | 行の中の指定された桁にスキップします。 |
| PUT | - | X(n) | 行の中にブランク桁を作って位置を設定します。 |
LINESIZE と PAGESIZE は、ページの印刷区域 (脚注を除く) の大きさを設定するためのものです。 LINESIZE オプションは、各印刷行に印刷される文字の最大文字数を表します。 PRINT ファイルの場合、このオプションを省略すると、120 文字と見なされます。 PRINT 以外のファイルではデフォルトの値はありません。 PAGESIZE オプションは各印刷ページの最大の印刷行数を指定します。指定しない場合は、デフォルトの値の 60 が使用されます。 以下に例を示します。
open file(Report) output stream print PAGESIZE(55) LINESIZE(110);
on endpage(Report) begin;
put file(Report) skip list (Footing);
Pageno = Pageno + 1;
put file(Report) page list ('Page '||Pageno);
put file(Report) skip (3);
end;
この OPEN ステートメントは、ファイル Report を PRINT ファイルとしてオープンします。 PAGESIZE(55) という指定は、各ページに最大 55 行書き出せることを 示しています。 すでに 55 行が書き出された (またはスキップされた) あと、同じページへの書き出しが試みられると、ENDPAGE 条件が起こります。 ENDPAGE 条件が起こったとき、暗黙に取られる処置は新しいページへのスキップですが、この例に示したように、ON ステートメントを使用してユーザー独自の処置を設定することもできます。
LINESIZE(110) は、ページの各行に最大 110 文字書き出せることを示しています。 110 文字を超える行を書き出そうとすると、余分の文字は次の行に書き出されます。
56 行目に書き出そうとすると (または 55 行目を超えてスキップしようとすると)、ENDPAGE 条件が起こり、ここに示した開始ブロックが実行されます。 ENDPAGE 条件は、1 ページあたり 1 回しか起こりません。 したがって、ENDPAGE 条件が起こったあと、指定の PAGESIZE を超えて印刷を続けることができます。 たとえば、各ページの最下部にフッティングを書き出すような場合には、この方法が役立ちます。
最初の PUT ステートメントでは、1 行スキップすることと、文字ストリングと推定される フッティングの値を 57 行目に印刷する (ENDPAGE 条件が起こったとき、現在行は 常に PAGESIZE+1 です) ことを指定しています。 ページ番号 Pageno が 1 つだけ増やされ、ファイル Report が 次のページにセットされ、文字定数 'Page' と 新しいページ番号が連結されて印刷されます。 最後の PUT ステートメントが実行されると 3 行スキップされるので、 次は 4 行目から印刷されることになります。制御は、 開始ブロックから、ENDPAGE 条件を引き起こした PUT ステートメントに戻されます。 ただし、その PUT ステートメントに SKIP または LINE オプションが指定されていても、それらは影響を及ぼしません。