13 1 5 Arithmetic and Expression Operators

LANSA Technical

13.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 13.1.6 Quotes and Quoted Strings.

Some examples of conditions and expressions are:

  • Condition RDML commands to execute only if field #A is less than 10:

             IF COND('#A < 10')

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

 

  • Change field #A to contain the value 10:

             CHANGE   FIELD(#A)  TO(10)

          or CHANGE   #A  (10)

          or CHANGE   #A 10

 

  • Condition RDML commands to execute only if field #A is greater than the sum of field #B and 10.62 divided by 2:

             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 contain the sum of field #B and 10.62 divided by 2:

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

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

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

 

  • Request that a product number be input by the user until it can be found in the product master, then display full details of the product:

          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.

Ý 13.1 RDML Command Parameters