TALLY
FASTREXX プロシージャーで使用できます。
指定された入力レコード・フィールドの値を TALLY レジスターに累算し、File Manager 機能の終わりで、string が接頭部に付いている TALLY レジスターを SYSPRINT または FMNRSUM で印刷します。TALLY は、PDS のメンバーにまたがって維持されます。
注: REXX メンバー選択が DSC 関数またはデータ・コピー・ユーティリティーで使用されていると、入力レコードは、メンバーを DROP または PROCESS するかどうか決定が行われるまで REXX プロシージャーに渡されるだけです。TALLY は、REXX プロシージャーによって処理されるすべてのレコードについて、指定された入力レコード・フィールドの値を累積します。メンバーを DROP または PROCESS するかどうか既に決定がなされているため、これには、続いて DROP されたメンバーに対して処理されたレコードは組み込まれますが、REXX プロシージャーに渡されなかったレコードは除外されます。
- Returns (戻り値)
- 単一のブランク。
- start
- 入力レコードの中の累算されるフィールドの開始位置 (バイト単位)。
- length
- 入力レコードの中の累積されるフィールドの長さ (バイト数)。
- type
- 値が累算されるフィールドのデータ・タイプ。指定できる値は以下のとおりです。
- B
- 符号付き 2 進数。type に B を指定すると、length は 2、4、または 8 でなければなりません。
- P
- パック 10 進数。type に P を指定すると、length は 1 から 16 の間でなければなりません。
- UB
- 符号なし 2 進数。type に UB を指定すると、length は 2、4、または 8 でなければなりません。
- Z
- ゾーン 10 進数。これは、デフォルトです。type に Z を指定すると、length は 1 から 32 の間でなければなりません。またはフィールドに分離符号文字または先行ブランクが含まれる場合は、1 から 33 の間でなければなりません。TALLY は、ゾーン 10 進数フィールドの場合は先行ブランクを無視し、単純な文字数値フィールドを累算できるようにします。ターゲット・フィールドにブランクのみが含まれるレコードは無視されます。分離符号が存在する場合、符号とゾーン・データの間にブランクがあってはなりません。
- string
- 累積された TALLY 合計に接頭部として付けられるリテラル・ストリング。
値が累算されるフィールドは、入力レコードの start の位置から始まり、 その長さは length バイトとなります。start と length の合計が LENGTH(INREC) よりも大きい場合、TALLY 関数は、TALLY レジスターを変更することなしに、0 の値を戻します。
ユーザーのプロシージャーに、複数の TALLY 関数をコーディングすることができます。File Manager は、引数の組み合わせがそれぞれ固有である各 TALLY 関数ごとに別々の TALLY レジスターを作成します。これは、それぞれの TALLY 関数ごとの string に別々の値を指定することによって、 与えられたフィールドを複数の TALLY レジスターに累算できることを意味します。
例
レコード・タイプに基づき、人事記録に記録された時間数を累算します。
Select
When (FLD(1,1) == 'E') Then
TALLY(15,4,B,'Sum of employee hours')
When (FLD(1,1) == 'S') Then
TALLY(15,4,B,'Sum of supervisor hours')
Otherwise
TALLY(28,4,B,'Sum of manager hours')
End