TALLY

1. Syntax

1 TALLY(start,length,
1! Z
1 type
2 ,string)

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 バイトとなります。startlength の合計が 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