MATCH
ANSI, NCHAR
The MATCH instruction compares two character strings or two RECORDS. The instruction uses the following format:
|
|
|
|
|
Where:
label
Optional. A Program Execution Label.
source
Required. A previously defined Character String Variable, National Character String Variable, Literal, National Character String Literal, or RECORD that is compared to the {dest} operand.
sep
Required. A comma or one of the following prepositions: BY, TO, OF, FROM, USING, WITH, IN, or INTO.
dest
Required. A previously defined Character String Variable, National Character String Variable, Literal, National Character String Literal, or RECORD that is compared to the {source} operand.
wildcard
Required. A previously defined Character String Variable, National Character String Variable, or constant character indicating source variable wildcard characters.
Flags Affected: EOS, LESS, ZERO
Note the following:
Only the Logical String contents of the {source} and {dest} strings are compared.
None of the operands, nor their Form Pointers or Length Pointers change.
If either operand is a Null String, the LESS and EQUAL Condition Flags are not set (both FALSE) and the EOS Condition Flag is set.
The operand length is defined as:
LENGTH = Length Pointer - Form Pointer + 1
If all characters matched are equal, the EQUAL
(or ZERO) Condition Flag is
set. The instruction then makes the following calculation:
X = DESTINATION LOGICAL LENGTH - SOURCE LOGICAL LENGTH
If X is negative, the LESS Condition Flag is set.
If all characters compared are not equal, the instruction makes the following calculation
based on the hexadecimal value of the first non-matching character:
X = DESTINATION HEX VALUE - SOURCE HEX VALUE
If X is negative, the LESS Condition Flag is set.
The optional third parameter ({wildcard}) specifies a character that is treated as a don't care or wildcard character. If the specified character exists in the {source} operand, it matches any character in the destination operand that occupies the same relative position. If {wildcard} is a character string variable, the Form Pointed character is used.
If the operands are RECORDs, the corresponding members of each record are matched. The MATCH operation is an absolute comparison of each byte in {source} to the corresponding byte in {dest}. The comparison is not being performed on a per member basis and therefore the {wildcard} parameter is not allowed. Specification of the {wildcard} parameter will produce a warning message by the compiler. The MATCH instruction does not support record pointers.
See Also: Example Code, CMATCH, Character String Instructions
![]() |