The Right Adjust Variable command takes a value such as '23 ' and
adjusts it to ' 23'. RGTADJVAR is intended for character
variables that contain decimal values. Both character and decimal
return variables are supported. A value such as '-23,112.38 ' is
also valid. Options exist to determine if special characters are
valid.
See the ADJVAR tool for adjusting character values.
The following is typical code:
DCL &INPUT *CHAR LEN(22)
DCL &OUTDEC *DEC LEN(15 0)
.
RGTADJVAR INPUT(&INPUT) OUTDEC(&OUTDEC)
If the INPUT value was '123,456.78 ', the OUTDEC value would be
' 12345678' as the decimal format and separator characters would
be ignored.
An OUTCHR return variable is also available and would return '
123456.78'. This value could be moved to a *DEC LEN(9 2) variable
for further processing.
Rules
-----
** The INPUT variable may be up to 22 characters in length, but
may not exceed 15 digits.
** The OUTDEC variable must be *DEC LEN(15 0).
** The OUTCHR variable must be *CHAR LEN(17). This allows for 15
digits, a decimal format character, and a minus sign.
** Decimal and separator characters are determined by the DECFMT
of the job such as USA=blank means a decimal format character
of '.' and a separator character of ','.
** A minus sign must precede or follow the value such as '-12 '
or '12- '.
** A 'CR' symbol may exist to the immediate right of the data
such as '123CR ' if ALWCR(*YES) is specified. The value
will be treated as negative.
** A decimal format character must be to the left of a digit.
** A list of up to 10 characters may be entered that will be
bypassed. This is intended for money symbols such as '$'.
** The code checks for invalid characters, multiple decimal
format characters, and multiple minus signs. If separator
characters are valid by ALWSEP(*YES), any separator character
found is ignored.
** Blanks may not appear to the left of a digit such as ' 12
'.
RGTADJVAR escape messages you can monitor for
---------------------------------------------
CPF9898 Invalid input. Text describes the error
Escape messages from based on functions will be re-sent.
RGTADJVAR Command parameters *CMD
----------------------------
INPUT The input value to be right adjusted. Up to 22
bytes may exist. The data must be left justified
such as '123 '.
ALWMINUS A *YES/*NO value for whether a minus sign should be
considered a valid value. *YES is the default. No
error occurs if a minus sign does not exist. If a
minus exists, the OUTCHR field with have a trailing
minus and the OUTDEC field will be negative.
*NO may be specified to cause an error if a minus
sign exists.
ALWDEC A *YES/*NO value for whether a decimal format
character (such as '.') should be considered a valid
value. *YES is the default. No error occurs if a
decimal format character does not exist.
*NO may be specified to cause an error if a decimal
format character exists.
ALWSEP A *YES/*NO value for whether a separator format
character (such as ',') should be considered a valid
value. *YES is the default. No error occurs if a
separator format character does not exist.
*NO may be specified to cause an error if a
separator format character exists.
ALWCR A *YES/*NO value for whether a 'CR' symbol may exist
to the right of the digits such as '123CR '. *NO
is the default. If a CR value exists, it is
considered an error.
*YES may be specified to allow the CR symbol to
exist and if it does, the data is considered
negative. No error occurs if a CR symbol is not
found.
BYPCHRLST A list of up to 10 characters may be entered that
will be bypassed such as '$'. The default is *NONE
meaning any non-recognized character will be
considered an error.
This is primarily intended for a money value symbol
(could be 2 characters), but could be used to bypass
a string of characters such as 'US$123.45 ' Just
enter the list as a character value (case
sensitive).
OUTDEC The adjusted return decimal value. This is an
optional return variable that if used must be
specified as *DEC LEN(15 0).
OUTCHR The adjusted return decimal value in a character
field. This is an optional return variable that if
used must be specified as *CHAR LEN(17). This is
large enough to contain 15 digits, a decimal
separator character and a trailing minus sign.
The major intent of this field is that if the INPUT
data has a number of decimal positions, the use of
OUTDEC will ignore the decimal positions as the
return field must be *DEC LEN(15 0). Using OUTCHR
allows a following CHGVAR command to move the data
to a variable declared with decimal positions such
as *DEC LEN(9 2).
Restrictions
------------
Because RGTADJVAR returns variables, the command may only be used in
a CL program.
See the previous comments about the rules for valid input and how the
output is formatted.
Prerequisites
-------------
The following TAA Tools must be on your system:
RTVVALA Retrieve value attributes
SNDESCINF Send escape information
SNDESCMSG Send escape message
Implementation
--------------
None, the tool is ready to use.
Objects used by the tool
------------------------
Object Type Attribute Src member Src file
------ ---- --------- ---------- ----------
RGTADJVAR *CMD TAACLTD QATTCMD
TAACLTDC *PGM CLP TAACLTDC QATTCL
|