There are actually TWO uses for the concatenation symbol. In a calculation (DEFINE, COMPUTE or -SET), it's used to append two field values. That's why:
HEAD1/A20 = EDIT(SEATS) | ' SEATS';
works. Note that you're dealing with field NAMES, or literals (a literal in a DEFINE or COMPUTE is indicated by single quotes).
In Dialogue Manager, a variable is indicated by a leading '&'. If there's no quotes, it's treated as a literal. That's why:
-SET &HEAD = YEAR | 'AMOUNT';
gave you 'YEARAMOUNT'. No amper variables on the right hand side of the '=', so everything was a constant/literal.
A SECOND, less utilized use of the concatenation symbol, is to act as a terminator in a TABLE request. Without the indicator, you couldn't have anything else ABUT an amper variable, as the 'anything else' would be treated as part of the amper variable name. If you had typed:
PRINT AMOUNT AS &THISMONTHAMOUNT
instead of:
PRINT AMOUNT AS &THISMONTH|AMOUNT
The Dialogue Manager would assume it was looking for a D.M. variable named 'THISMONTHAMOUNT'. However, with the concatenation symbol as a separator, it KNOWS that the variable name is THISMONTH, and to position what IMMEDIATELY follow adjacent to the value. Note that there can be NO spaces to the left or right of the concat symbol for this behavior (otherwise it would be treated as a literal). With the concat symbol, if &THISMONTH was '05', the AS phrase becomes '05AMOUNT'.