サポートチーム便り2011.06.22
正しい「Not Equal」構文
Question
OPNQRYF QRYSLT() パラメーターで「not equal to %VALUES()」を選択した場合の正しい構文を教えてください。「not equal」に *NE 演算子を使用しようとしているのですが、「CPD3129-Missing operand on expression in QRYSLT parameter. An operand was missing for the operator or built-in function <, specified at position 171 in the expression. (QRYSLT パラメーターの式にオペランドが見つかりません。式中の位置 171 に指定された演算子または組み込み関数 < のオペランドが見つかりませんでした)」というエラー・メッセージが表示されます。171 は、確かに式中の "*NE" がある位置にあるのですが...
(DPAHACLDAC = %VALUES("TERMP" "TERM"))
& (DPAHRE1 = %RANGE("T00" "T99"))
& (DPAHEFFCTD = %RANGE("2009-01-01" "2009-12-31"))
& (DPAHCMPNY = %VALUES(1000 2000))
& (DPAHRE1 *NE %VALUES("T51" "T63"))
Answer
次のように *NE ではなく *NOT を使用します。
QRYSLT( ' *NOT (MyField *EQ %VALUES("A" "B "C")) ' )