プログラム記述ファイル中の用紙制御情報の変更

PRTCTL (プリンター制御) キーワードによって、用紙制御情報を変更し、プログ ラム内でプログラム記述 PRINTER ファイル用の現在行の値をアクセスすること ができます。 PRINTER ファイル用のファイル仕様書でキーワード PRTCTL(データ構造名) を指定します。

ユーザーのソースで、OPM 定義のデータ構造と ILE データ構造の 2 つのタイプの PRTCTL データ構造を指定することができます。デフォルトとして 表 42 に示される、ILE データ構造レイアウトを使います。 OPM 定義のデータ構造レイアウトを使用するためには、PRTCTL(データ構造 名:*COMPAT) を指定します。 OPM PRTCTL データ構造レイアウトは 表 43 に 示されています。

ILE PRTCTL データ構造は、定義仕様書で定義しなければなりません。 最小 15 バイトが必要であり、少なくとも次の順序で指定された次の 5 つのサ ブフィールドが入っていなければなりません。

表 42. ILE PRTCTL データ構造のレイアウト
サブフィールドの内容
1 〜 3 印刷前スペースの値が入っている 3 桁の文字フィールド。 (有効な値はブランクまたは 0 〜 255)
4 〜 6 印刷後スペースの値が入っている 3 桁の文字フィールド。 (有効な値はブランクまたは 0 〜 255)
7 〜 9 印刷前スキップの値が入っている 3 桁の文字フィールド。 (有効な値はブランクまたは 0 〜 255)
10 〜 12 印刷後スキップの値が入っている 3 桁の文字フィールド。 (有効な値はブランクまたは 0 〜 255)
13 〜 15 現在の行カウント値が入っている小数部分のない 3 桁の数値フィールド

OPM PRTCTL データ構造は、定義仕様書で定義し、少なくとも次の 5 つのサブフ ィールドを以下の順序で入れなければなりません。

表 43. OPM PRTCTL データ構造のレイアウト
サブフィールドの内容
1 印刷前スペースの値が入っている 1 桁の文字フィールド。 (有効な値はブランクまたは 0 〜 3)
2 印刷後スペースの値が入っている 1 桁の文字フィールド。 (有効な値はブランクまたは 0 〜 3)
3 〜 4 印刷前スキップの値が入っている 2 桁の文字フィールド。 (有効な値はブランク、1 〜 99、100 〜 109 を表す A0 〜 A9、または 110 〜 112 を表す B0 〜 B2)
5 〜 6 印刷後スキップの値が入っている 2 桁の文字フィールド。 (有効な値はブランク、1 〜 99、100 〜 109 を表す A0 〜 A9、または 110 〜 112 を表す B0 〜 B2)
7 〜 9 現在の行カウント値が入っている小数部分のない 3 桁の数値フィールド。

ILE PRTCTL データ構造の最初の 4 つのサブフィールドに入っている値は出 力仕様書の 40 〜 51 桁目 (スペースとスキップの指定) に許される値と同じです。 出力仕様書のスペース項目およびスキップ項目 (40 〜 51 桁目) がブランクで サブフィールド 1 〜 4 もブランクの場合は、デフォルトで印刷後 1 行送りにな ります。 PRTCTL キーワードが指定された場合には、40 から 51 桁目にブランクがある出 力レコードについてだけ使用されます。 PRINTER ファイルのスペースおよびスキップ値 (サブフィールド 1 〜 4) は、 プログラムの実行時に PRTCTL データ構造のこれらのサブフィールドの値を変 更することにより制御することができます。

サブフィールド 5 には現在行カウント値が入っています。 コンパイラーは最初の出力行が印刷された後までサブ フィールド 5 を初期設定しません。 その後で、コンパイラーはファイルへの各出力操作の後でサブ フィールド 5 を変更します。

用紙制御情報の変更例

図 182 は、PRTCTL キーワードを使用して用紙制御情報を変更 するために必要なコーディングの例を示したものです。

図 182. PRTCTL オプションの例
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
FFilename++IPEASFRlen+LKlen+AIDevice+.Keywords+++++++++++++++++++++++++++++
FPRINT     O    F  132        PRINTER PRTCTL(LINE)
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++
DLINE             DS
D SpBefore                1      3
D SpAfter                 4      6
D SkBefore                7      9
D SkAfter                10     12
D CurLine                13     15  0
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
C                   EXCEPT
C   01CurLine       COMP      10                                     49
C   01
CAN 49              MOVE      '3'           SpAfter
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... *
OFilename++DF..N01N02N03Excnam++++B++A++Sb+Sa+.............................
OPRINT     E    01
O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat++
O                       DATA                25

ファイル仕様書では、PRINT ファイルに PRTCTL キーワードを指定します。 関連したデータ構造の名前は LINE です。

LINE データ構造は、PRTCTL データ構造に事前定義されたサブフィールドだ けをもつ入力仕様書で定義されます。 1 〜 12 桁目の最初の 4 つのサブフィールドは、 出力仕様書の 40 〜 51 桁目で一般 に指定されるスペースとスキップ情報を提供するために使用されます。 PRTCTL キーワードによってプログラム内でこれらの仕様書を変更することができま す。

この例では、SpAfter サブフィールドの値は、CurLine (現在の行カウント値) サブフィールドの値が 10 になった時に 3 に変更されます。 (標識 01 はレコード識別標識としてオンに設定されたとします。)