Q: I'm new to the AS/400 from the S/36. I'm trying to use the OPNQRYF command in a CL program to select records that do not contain an asterisk (*) anywhere within the order number field. I tried to build the select statement using *NE with the wildcard option. The CL compiled fine; but when I ran it, I received a CPF message with an error on CL command. I don't want to sort the file with an RPG program because of time constraints. The message that ended the CL was CPF9899 (Error occurred during processing of command), but the message in the job log before that was CPD3137 (Use of %WLDCRD on QRYSLT parm not valid). The QRYSLT is as follows:
'CUSTNO *NE %WLDCRD("LE***")'
The message text states that the error can be caused by "Specifying %WLDCRD built-in function somewhere other than the second operand of an *EQ operator." Does this mean that *NE cannot be used with %WLDCRD?
A: You can only use *EQ with %WLDCRD, %VALUES and %RANGE. To negate one of these functions, use the *NOT logical operator.
Also, the asterisk is the default wildcard character which stands for zero or more characters, so you'd have to tell OPNQRYF to use some other character (maybe an ampersand instead of an asterisk), like this.
QRYSLT('*NOT (CUSTNO *EQ + %WLDCRD("&*&" "_&"))')
However, an easier way to do what you're trying to do (find all orders where CUSTNO does not have an asterisk in it) is to use the contains operator (*CT). QRYSLT('*NOT (CUSTNO *CT "*")')
LATEST COMMENTS
MC Press Online