出力の条件付け標識
出力レコードまたは出力フィールドが書き出される条件を指定するために使用さ れる標識は、プログラム内で事前に定義されていなければなりません。 出力を条件付けする標識は、21 から 29 桁目に指定されます。 出力の条件付けには、すべての標識が有効です。
- オーバーフロー標識 (ファイル記述仕様書、OFLIND(標識))
- レコード識別標識 (入力仕様の 21 から 22 桁目)
- 制御レベル標識 (入力仕様の 63 から 64 桁目)
- フィールド標識 (入力仕様の 69 から 74 桁目)
- 結果標識 (演算仕様書の 71 から 76 桁目)
- 1P や LR のように RPG IV プログラムによって設定される標識
- プログラムの処理前または処理中に設定される外部標識
- *IN 配列、*IN(xx) 配列要素、または *INxx フィールド (これらの予約語の 1 つを使用して標識を定義する方法については、データとして参照される標識を参照し てください。)
標識によってレコード全体を条件付けする場合には、レコード・タイプを指定 する行に標識を記入します (図 1 を参照)。標識によってフィールドの書き出し 時点を条件付けする場合には、フィールド名と 同じ行に記入します (図 1 を参照)。
出力行には、条件付け標識は必須ではありません。条件付け標識が指定されていない場合には、レコード のタイプが出力用に検査されるたびにその行が出力されます。 条件付け標識を指定する場合には、3 つの 別個の出力標識フィールド (22 から 23、25 から 26、および 28 から 29 桁目) のそれぞれに標識を 1 つずつ 記入することができます。これらの標識がオンの場合には、出力操作が実行されます。 各標識の前の 桁 (21、24、または 27 桁目) の N は、標識がオンでない場合にだけ出力操作が 実行されることを意味します (否定標識)。 出力行を否定標識だけで条件付けする必要はありません が、少なくとも 1 つの標 識は肯定とする必要があります。 見出しまたは明細操作を否定標識だけで条件付 けした場合には、その操作は、プログラム・サイクルの始めか、あるいは 1 ペー ジ目 (1P) の行が書き出される時に実行されます。
CL0N01Factor1+++++++Opcode(E)+Extended-factor2+++++++++++++++++++++++++++
* Indicator 20 is set on only if indicators 10, 12, 14,16, and 18
* are set on.
C EVAL *IN20 = *IN10 AND *IN12 AND *IN14
C AND *IN16 AND *IN18
OFilename++DAddN01N02N03Excnam++++.......................................
O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat
* OUTFIELD is conditioned by indicator 20, which effectively
* means it is conditioned by all the indicators in the EVAL
* operation.
OPRINTER E
O 20 OUTFIELD
- 1 ページ目標識 (1P) によって、1 次ファイルを読み取る前に、 最初のサイクルで 1 ページ目の印刷などの出力を行うことができます。 1P 標識によって 条件付けされる行には、見出しまたは PAGE および UDATE など の予約語用のフィールドとして使用される定数が入っていなければなりませ ん。 この定数は、出力仕様の 53 から 80 桁目に指定されます。 1P がオーバー フロー標識との OR 関係で使用される場合には、この情報がすべてのページに印 刷されます (図 2 を参照)。1P 標識は、見出しまたは明細出力行に だけ使用してください。 合計出力行または 例外出力行の条件付けに使用することはできません。また、 制御レベル標識との AND 関係にもこの標識は使用しないようにしてください。
- 特定のエラー条件が起こり、出力操作の処理の取り止めが必要になることが あります。 エラーの原因となったデータを使用しないようにするためには、停止 標識を使用してください (図 3 を参照)。
- ある種の出力レコードを外部条件によって条件付けするには、外部標識を使 用して、それらのレコードを条件付けしてください。
出力仕様でのオーバーフロー標識の割り当てについては、「Rational Development Studio for i ILE RPG プログラマーの手引き」の印刷装置ファイルの項を参照して ください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
OFilename++DF..N01N02N03Excnam++++B++A++Sb+Sa+...........................
O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat
*
* One indicator is used to condition an entire line of printing.
* When 44 is on, the fields named INVOIC, AMOUNT, CUSTR, and SALSMN
* are all printed.
*
OPRINT D 44 1
O INVOIC 10
O AMOUNT 18
O CUSTR 65
O SALSMN 85
*
* A control level indicator is used to condition when a field should
* be printed. When indicator 44 is on, fields INVOIC, AMOUNT, and
* CUSTR are always printed. However, SALSMN is printed for the
* first record of a new control group only if 44 and L1 are on.
*
OPRINT D 44 1
O INVOIC 10
O AMOUNT 18
O CUSTR 65
O L1 SALSMN 85
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
OFilename++DF..N01N02N03Excnam++++B++A++Sb+Sa+...........................
O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat
*
* The 1P indicator is used when headings are to be printed
* on the first page only.
*
OPRINT H 1P 3
O 8 'ACCOUNT'
*
* The 1P indicator and an overflow indicator can be used to print
* headings on every page.
*
OPRINT H 1P 3 1
O OR OF
O 8 'ACCOUNT'
*...1....+....2....+....3....+....4....+....5....+....6....+....7...
IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................
I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr....
*
* When an error condition (zero in FIELDB) is found, the halt
* indicator is set on.
*
IDISK AA 01
I 1 3 FIELDA L1
I 4 8 0FIELDB H1
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq..
*
* When H1 is on, all calculations are bypassed.
*
C H1 GOTO END
C :
C : 演算
C :
C END TAG
OFilename++DF..N01N02N03Excnam++++B++A++Sb+Sa+...........................
O..............N01N02N03Field+++++++++YB.End++PConstant/editword/DTformat
*
* FIELDA and FIELDB are printed only if H1 is not on.
* Use this general format when you do not want information that
* is in error to be printed.
*
OPRINT H L1 0 2 01
O 50 'HEADING'
O D 01NH1 1 0
O FIELDA 5
O FIELDB Z 15