TALLY


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

指定された入力レコード・フィールドの値を TALLY レジスターに累算し、インポート・ユーティリティーの終了時に、文字が接頭部に付いている TALLY レジスターを SYSPRINT で印刷します。文字string。TALLY 関数が成功すると、値 0 を返します。失敗した場合、REXX 構文エラー条件が発生します。

値が累算されるフィールドは、入力レコードの start (バイト) の位置から始まり、 その長さは length バイトとなります。startlength の合計が LENGTH(INREC) よりも大きい場合、TALLY 関数は、TALLY レジスターを変更することなしに、0 の値を戻します。

値が累算されるフィールドのデータ・タイプは、type によって指定されます。type ごとに指定できる値は、次の通りです。
B
フィールドが 2 進数の場合。type に B を指定すると、length は 2、4、または 8 でなければなりません。フィールドは符号付きであると想定されます。
P
フィールドがパック 10 進数の場合。type に P を指定すると、length は 1 から 16 バイトの間でなければなりません。
Z
フィールドがゾーン 10 進数の場合。type に Z を指定すると、length は 1 から 32 バイトの間でなければなりません。またはフィールドが分離符号文字を含んでいる場合は、1 から 33 バイトの間でなければなりません。

type のデフォルト値は Z です。

ユーザーのプロシージャーに、複数の TALLY 関数をコーディングすることができます。FM/Db2 は、引数の組み合わせがそれぞれ固有である各 TALLY 関数ごとに別々の TALLY レジスターを作成します。これは、それぞれの TALLY 関数ごとの string に別々の値を指定することによって、 与えられたフィールドを複数の TALLY レジスターに累算できることを意味します。

レコード・タイプに基づき、人事記録に記録された時間数を累算します。
select;
  when(fld(1,1) = 'E') then
     rc = TALLY(15,4,B,'Sum of employee hours')
  when(fld(1,1) = 'S') then
     rc = TALLY(15,4,B,'Sum of supervisor hours')
  otherwise
     rc = TALLY(28,4,B,'Sum of manager hours')
 end