14.1.5 Arithmetic and Expression Operators

Within an expression or condition a set of operators can be used. These are as follows:

                                                                      

Operator Description

(

Open bracket

)

Close bracket

+

Add

-

Subtract

/

Divide

*

Multiply

=

Compare equal

^=

Compare not equal. See Note:

<

Compare less than

<=

Compare less than or equal to

>

Compare greater than

>=

Compare greater than or equal to

*EQ

Compare equal

*NE

Compare not equal

*LT

Compare less than

*LE

Compare less than or equal to

*GT

Compare greater than

*GE

Compare greater than or equal to

AND

And

OR

Or

*AND

And

*OR

Or

 

Expression evaluation is left to right within brackets, so use brackets liberally whenever any doubt exists as to the order in which the expression will be evaluated.

The liberal use of brackets is a good programming practice as well. It makes clear your intent to the RDML compiler, but also more importantly, to anyone maintaining the application in the future.

Expression components are checked for type and length compatibility. The syntax of the expression or condition is also checked to ensure that it is correct.

Since all conditions and expressions specified under LANSA are "quoted strings" you should also read 14.1.6 Quotes and Quoted Strings.

Some examples of conditions and expressions are:

             IF COND('#A < 10')

         or  IF COND('#A *LT 10')

             CHANGE   FIELD(#A)  TO(10)

          or CHANGE   #A  (10)

          or CHANGE   #A 10

             IF COND('#A < ((#B + 10.62) / 2)')

         or  IF ('#A < ((#B + 10.62) / 2)')

         or  IF '#A < ((#B + 10.62) / 2)'

             CHANGE   FIELD(#A)  TO('(#B + 10.62) / 2')

          or CHANGE   #A  ('(#B + 10.62) / 2')

          or CHANGE   #A '(#B + 10.62) / 2'

          GROUP_BY NAME(#PRODUCT) FIELDS(#PRODNO #DESC #PRICE

                                         #QOH #TAX)

          BEGIN_LOOP

          DOUNTIL    COND('#IO$STS = OK')

          REQUEST    FIELD(#PRODNO)

          FETCH      FIELDS(#PRODUCT) FROM_FILE(PROMST)

                     WITH_KEY(#PRODNO)

          ENDUNTIL

          DISPLAY    FIELDS(#PRODUCT)

          END_LOOP

 

Note:

Due to translation table issues between IBM i and PC platforms (ASCII/EBCDIC), using 5250 terminals or 5250 emulation mode terminals users should be very careful when using the  ^= Compare not equal expression, which can be presented as ^= or ¢= or ¬= depending on the terminal/keyboard used during edit. Use the *NE expression instead.