Kilowatt Software's
Classic Rexx Tutorial
Language Level 4.00 (TRL-2)

# String concatenation

Rexx has two fundamental string concatenation operators.

1. concatenation with an intervening space -- space concatenation

2. concatenation WITHOUT an intervening space -- abuttal concatenation

Space concatenation is performed when two terms are separated by an intervening space.

Here is an example of space concatenation:

 magic1 = 'open' magic2 = 'sesame' say magic1 magic2    shows:   open sesame

In the above example the two magic words were concatenated with an intervening space.

Here is another example of space concatenation:

 say 'The result of 2 + 2 is:' 2 + 2    shows:   The result of 2 + 2 is: 4

In the above example the caption and the computation result were concatenated with an intervening space.

Space concatenation is also performed implicitly when an instruction is continued across a line boundary.

 say 'abra' ,   'ca' ,   'dabra'    shows:   abra ca dabra

Often, you will want to concatenate the values without an intervening space. This is accomplished by adding an abuttal operator, at the front of the lines which follow the first.

 say 'abra' ,   || 'ca' ,   || 'dabra'    shows:   abracadabra

There are several methods of performing an abuttal concatenation

1. using the abuttal operator, which is two vertical bars: ||

2. concatenation of adjacent terms -- especially when one term is quoted

3. concatenation of adjacent terms -- when the left term is a function result

4. concatenation of adjacent terms -- that are separated by a comment that has no surrounding spaces

Here is an example of abuttal concatenation, using the abuttal operator:

 magic1 = 'jumpin' magic2 = 'jehosephat' say magic1 || magic2    shows:   jumpinjehosephat

In the above example the two magic words were concatenated WITHOUT an intervening space.

Here is an example of abuttal concatenation, when one term is quoted:

 magic1 = 'jumpin' magic2 = 'jehosephat' say magic1'jehosephat' say 'jumpin'magic2    shows:   jumpinjehosephat   jumpinjehosephat

Here is an example of abuttal concatenation, when the left term is a function result:

 magic1 = 'shazam' say left( "Today's magic word is:", 24 )magic2    shows:   Today's magic word is: shazam

Here is an example of abuttal concatenation, due to a comment between terms:

 magic1 = 'jumpin' magic2 = 'jehosephat' say magic1/* connect the magic words */magic2    shows:   jumpinjehosephat

An elaborate example of the string concatenation is:

 /* get year, month, and day of month */ parse value date( 'Standard' ) with yr 5 . say right( time( 'Civil' ), 8) center( date( 'Month' ), 38 ),   || substr( yr, 3 )'.'right( date( 'Dayofyear' ), 3, '0' )    shows a line similar to the following: ``` 2:38pm July 02.189 ```

The above example used the PARSE instruction
and the following built-in functions;
CENTER,
DATE,
TIME,
RIGHT,
SUBSTR