$StatD

From m204wiki
Revision as of 14:00, 2 May 2012 by Alan (talk | contribs)
Jump to navigation Jump to search

Calculate differences and rates for statistics strings

Most Sirius $functions have been deprecated in favor of Object Oriented methods. There is currently no OO equivalent for the $StatD function.

This function allows calculation of differences and rates for statistics strings. These statistics strings must be in a format identical to strings produced by $FISTAT, $SYSTAT, $TKSTAT, $SsStat and $UsStat.

The $StatD function accepts four arguments and returns a string made up of an error code and returned statistics.

The first argument is a string containing an EBCDIC identifier in bytes 1-10, a binary number in bytes 11-12 and data in bytes 13 to the end of the string.

The second argument is a string containing an EBCDIC identifier in bytes 1-10, a binary number in bytes 11-12 and data in bytes 13 to the end of the string. For differences to be calculated, bytes 1-12 must match bytes 1-12 of the first argument.

The third argument is a control string containing blank delimited tokens describing the action to be performed for each 4 byte chunk of the input strings. The available actions are

  • 'N' - stands for number. Simply copy 4 bytes from argument 2.
  • 'D' - stands for difference. Calculate binary difference between 4 bytes in argument 2 and argument 1.
  • 'R' - stands for rate. Calculate binary difference between 4 bytes in argument 2 and argument 1, multiply by 1,000,000 and then divide by argument 4. Argument 4 is required if an R is included in the control string.

The fourth argument is a number to be used as a divisor in calculating rates. This is an optional argument but is required if there is an 'R' in the control string (argument 3). This would ordinarily be the elapsed time between calculation of the first argument and the second.

Syntax

<section begin="syntax" /> %STRING = $StatD(stat_string1, stat_string2, - ctl_string, divisor) <section end="syntax" />

$StatD Function

%STRING is made up of binary data, the first 4 bytes of which is an error code. If the error code is negative %STRING will only be 4 bytes long.

The data returned by $StatD is binary with the first 4 bytes containing an error code. If the error code is negative, only 4 bytes are returned. If the differences were successfully calculated, the first 4 bytes are set to binary 0. When a zero error code is returned the next 12 bytes contain a copy of the first 12 bytes of argument 1 and 2. This means that the actual data starts at offset 16 (byte number 17) in the result string.

-5 - Required parameter not specified -12 - Invalid control string -13 - Invalid rate divisor -14 - Invalid length input string -15 - First 12 bytes don't match in input

$StatD return codes

The following program displays system CPU as a rate and difference over a one second interval and as a total over the whole run.

Begin %data is string len 255 %data1 is string len 255 %data2 is string len 255 %data1 = $SyStat('CPU SVIO DNSCACHE DNSRTIMO'):subString(5) pause 1 %data2 = $SyStat('CPU SVIO DNSCACHE DNSRTIMO'):subString(5) %data = $statD( %data1, %data2, 'R R N N', 1000) Text %data Return Code = {$UnBin($subStr(%data,1,4))} CPU = {$UnBin($SUBSTR(%data,17,4))} SVIO = {$UnBin($SUBSTR(%data,21,4))} DNSCACHE = {$UnBin($SUBSTR(%data,25,4))} DNSRTIMO = {$UnBin($SUBSTR(%data,29,4))} end Text End

Products authorizing $StatD