Page History
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.