When the "new" version of the equate was compiled under Information  
flavor, the compiler warned that it was a Reality style LOCATE.

To its credit, the compiler defers the evaluation of the EQU until it  
is used, at which point, it evaluates it in context, so the compiler  
is evaluating "VALID.CC.TYPES<1,1>"
as
"A':@VM:'B':@VM:'D':@VM:'M':@VM:'S':@VM:'V'<1,1>"

The vlist output below gives a good hint as to what is going on.   
Notice that the <field,value> is being applied to the last value of  
the EQU string prior to doing the build with the rest of the codes.   
In the Reality format, it is legitimate to omit the <field,value>  
specifier, in which case the program will do a field level search  
rather than a value level search.

This quirk would only show up with the use of an EQUATE rather than a  
variable assignment.  If you feel compelled to use an EQUATE for the  
codes, you could overcome the issue with a temporary assignment such as

EQU VALID.CC.TYPES TO 'A':@VM:'B':@VM:'D':@VM:'M':@VM:'S':@VM:'V'
...
CC.TYPES = VALID.CC.TYPES
LOCATE X IN CC.TYPES<1,1> ...

--------- VLIST of LOCATE on original equate ------------------

00005:          LOCATE X IN VALID.CC.TYPES<1,1> BY 'AL' SETTING LP THEN
Press any key to continue...
00005 0000E : 060 dyn_extract    "V" 1 1 0  => $R0
00005 0001A : 03A concat         "A}B}D}M}S}" $R0  => $R1
00005 00022 : 0D4 locate         X $R1 1 0 0 "AL"  => LP
00005 00032 : 0C4 jumpf
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to