従来の形式の演算仕様書 (C 仕様書) では、7 桁目および 8 桁目、そして 9 から 11 桁目に条件付け標識を含むことができます。 条件付け標識は、自由形式演算仕様書では使用されません。
演算を実行する条件を指定するために使用される標識は、プログラムのどこかで定義されていなければなりません。
演算仕様書の 7 から 8 桁目に制御レベル標識 (L1 から L9 および LR) を指定する ことができます。
7 から 8 桁目がブランクであれば、演算は明細時に実行されるか、サブルーチン 内のステートメントであるか、または宣言ステートメントです。 標識 L1 から L9 が 指定された場合に、合計時に演算が処理されるのは指定の標識がオンになっている 時だけです。 LR 標識が指定された場合には、演算は最終合計時に処理されます。
演算仕様書の 9 から 11 桁目を使用して、演算が処理される条件を制御する標識 を指定することができます。9 桁目に N を指定して標識の値がオフ ('0') であるかどうかを テストする必要があることを指示することができます。10 から 11 桁目に有効な記入項目は以下のとおり です。
9 から 11 桁目に使用する標識は、すべて次のタイプの標識の 1 つとして事前に定義 しておかなければなりません。
演算を条件付けするために標識がオフでなければならない場合には、9 桁目に N を 入れてください。グループ化された AND/OR 行の標識の他に制御レベル標識 (7 から 8 桁目 に指定される場合) も、図 18 のとおりに演算を実行する前に、 すべてがこの図に示されるとおりに正確に指定されていなければなりません。
*...1....+....2....+....3....+....4....+....5....+....6....+....7... CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.. * C 25 CAN L1 SUB TOTAL TOTAL A CL2 10 CANNL3TOTAL MULT 05 SLSTAX B *
標識 25 がレコード・タイプを表し、レコード・タイプ 25 が読み取られた 時に制御レベル 2 の切れ目が起こったとします。 L1 と L2 は両方ともオンになっ ています。7 から 8 桁目の制御レベル標識によって条件付けされたすべての演算 は、9 から 11 桁目の制御レベル標識によって条件付けされた演算より前に実行されます。 したがって、 A の演算の前に B の演算が行われます。 A の演算は、25 によって示される新しい制御グループの最初のレコードに ついて実行されますが、 B の演算は、前の制御グループのすべてのレコ ードに対して実行される合計演算です。
他の条件が満たされて L2 がオンの時に B の演算を実行することが できます。標識 10 はオンでなければならず、L3 標識がオンであってはなりません。
L2 と NL3 の両方によって条件付けされた演算は、制御レベル 2 の切れ目が起 こった時にだけ実行されます。 制御レベル 3 が起こった場合には、L2 もオンにな りますが、その時点ではこの演算は実行したくないため、これら 2 つの標識が同 時に使用されています。
9 から 11 桁目に条件付け標識を使用する場合に知っておく必要があるいくつかの特 別な考慮事項は、次のとおりです。
図 19 から 図 20 までは 、条件付け標識の例を示しています。
*...1....+....2....+....3....+....4....+....5....+....6....+....7... IFilenameSqNORiPos1NCCPos2NCCPos3NCC.PFromTo++DField+L1M1FrPlMnZr...* I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr.... * * Field indicators can be used to condition operations. Assume the * program is to find weekly earnings including overtime. The over- * time field is checked to determine if overtime was entered. * If the employee has worked overtime, the field is positive and - * indicator 10 is set on. In all cases the weekly regular wage * is calculated. However, overtime pay is added only if * indicator 10 is on. * ITIME AB 01 I 1 7 EMPLNO I 8 10 0OVERTM 10 I 15 20 2RATE I 21 25 2RATEOT CL0N01Factor1+++++++Opcode(E)+Extended-factor2+++++++++++++++++++++++++++ * * Field indicator 10 was assigned on the input specifications. * It is used here to condition calculation operations. * C EVAL (H) PAY = RATE * 40 C 10 EVAL (H) PAY = PAY + (OVERTM * RATEOT)
*...1....+....2....+....3....+....4....+....5....+....6....+....7... IFilename++SqNORiPos1+NCCPos2+NCCPos3+NCC................................ I........................Fmt+SPFrom+To+++DcField+++++++++L1M1FrPlMnZr.... * * A record identifying indicator is used to condition an operation. * When a record is read with a T in position 1, the 01 indicator is * set on. If this indicator is on, the field named SAVE is added * to SUM. When a record without T in position 1 is read, the 02 * indicator is set on. The subtract operation, conditioned by 02, * then performed instead of the add operation. * IFILE AA 01 1 CT I OR 02 1NCT I 10 15 2SAVE CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.. * * Record identifying indicators 01 and 02 are assigned on the input * specifications. They are used here to condition calculation * * CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.. C 01 ADD SAVE SUM 8 2 C 02 SUB SAVE SUM 8 2
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.