%MAX and %MIN in RPGLE
While working with the data, we often need to identify the minimum or maximum value from the list of values provided.
Built-In functions %MAX (maximum value) and %MIN (minimum value) provides easier way to return the minimum or maximum value from the list of values provided.
Syntax:
%MAX(value1 : value2 : value3 ...)
%MIN(value1 : value2 : value3 ...)
There are few important points to note while working with these BIFs.
- Minimum of two operands (or values) to be passed.
- Data types of the values passed must be compatible with other values.
- If one value is packed numeric, other values can be packed numeric, zoned numeric, integer, unsigned integer, binary decimal or float.
- There is no maximum limit on the number of values to be passed (except when used in the declaration statement, we will see more on this later).
- Values can either be passed directly or by using the declared variables.
Let's have a look at an example to understand easily.
- Line - 11: %MIN is used with the list of values 10.1 (float), 89 (decimal) and a packed decimal field (wNinetyNine) with no decimal points, All these three are compatible for comparison.
- Lowest value here is '10.1' and %MIN would return the same.
- %MIN is returning to a variable which doesn't have decimal points defined, so '10' would be the return value.
- Line - 14: %MAX is used with the list of values 10.9 (float), 89 (decimal) and a packed decimal field (wNinetyNine) with no decimal points.
- Highest value here is '99' and %MAX would return '99'.
- Line - 19: %MIN is used with the two strings 'RETURN', 'MINIMUM' along with a character (VARCHAR) field declared (wConstant).
- Lowest value here is 'CONSTANT' and the same would be returned by %MIN.
- Line - 20: %MAX is used with the two strings 'RETURN', 'MAXIMUM' along with a character (VARCHAR) field declared (wConstant).
- Highest value here is 'RETURN' and the same would be returned by %MAX.
This was a straight forward example with moving the minimum value moving directly to the declared variable.
%MIN and %MAX can be directly used to in conditions to check if the return value is part of a specific range (using %RANGE), list (using %LIST), array or equal to the value passed (or a declared variable).
Let's have a look a small example with IF conditions.
- Line - 3: Checking if the minimum value returned by %MIN is present in a specific range provided using %RANGE.
- Line - 7: Checking if the maximum value returned by %MAX is present in the list of values provided using %LIST.
- An array can be used as well instead of %RANGE or %LIST.
- Line - 11: Checking if the maximum value returned by %MAX is same as the value specified.
- Declared variable can be used as well instead of specifying the value directly.
Apart from these, we can use %MIN and %MAX in declaration statements i.e., to specify the length of a variable or to specify the dimension of array etc.
Below are the couple of points to remember when using these BIFs in declaration statement.
- There must only be two values specified.
- Both the values must be numeric (not float or hexadecimal).
Below is a quick example to show how to use these BIFs in declaration statements.
- Line - 3: %MIN is used to assign the dimension of 'wDecArray2' based on the number of elements in the array 'wDecArray1' and the value passed.
- Since wDecArray1 is a varying-dimension array '*MAX' to be used in %ELEM and maximum dimension of the array would be returned.
- %MIN would return the minimum of both 10 and 15.
- Line - 4: %MAX is used to specify the length of the character variable being declared.
- %MAX would return the maximum of the two values passed.
Hope the above info was a bit of help to understand %MAX and %MIN better.
No comments:
Post a Comment