Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The LANSA RDML is quite good at string handling.   When this is combined with the flexibility of true subroutine parameters, a very simple method of assembling, (and in this case printing), text strings results.

Consider the following subroutine: SUBROUTINE NAME

     SUBROUTINE NAME(PRINT_TEXT)

...

 PARMS(#S01 #S02 #S03 #S04 #S05)
    DEFINE     FIELD(#S01)

...

 TYPE(*CHAR)

...

 LENGTH(30)
    DEFINE     FIELD(#S02)

...

 TYPE(*CHAR)

...

 LENGTH(30)
    DEFINE     FIELD(#S03)

...

 TYPE(*CHAR)

...

 LENGTH(30)
    DEFINE     FIELD(#S04)

...

 TYPE(*CHAR)

...

 LENGTH(30)
    DEFINE     FIELD(#S05)

...

 TYPE(*CHAR)

...

 LENGTH(30)
    DEFINE     FIELD(#R01)

...

 TYPE(*CHAR)

...

 LENGTH(132)
    DEF_LINE   NAME(#R01L)

...

 FIELDS(#R01)
    USE        BUILTIN(BCONCAT)

...

 WITH_ARGS(

...

#S01 #S02 #S03 #S04 #S05)
               TO_GET(#R01)
    PRINT      LINE(#R01L)
 ENDROUTINE

This subroutine can be used like this:  EXECUTE PRINT

     EXECUTE PRINT_TEXT('''Product'''  +

...

                        #PRODNO +
                     '''

...

is out of stock. Please contact'''

...

                        #SUPPLIER +
                     '''

...

to order more.''')

...

   

to print:

Product 836 is out of stock. Please contact ACME ENGINEERING to order more.

Or like this:  EXECUTE PRINT

     EXECUTE PRINT_TEXT('''

...

Your departmental supervisor'''  +

...

                        #TITLE +

...

                        #NAME +
                     '''

...

should be informed of this error'''

...

 +
                     *BLANKS)

...

  

to print:

Your departmental supervisor Ms Cullen should be informed of this error.