Here are my thoughts on the subject of spaces left by non-existent tokens
in alias script expansions.
Please excuse the fact that the names which I use for elements of the
command line and alias script are not the same as those which you very
nicely set forth in the ARUNZ09N.DOC file, however I wish to set forth a
concept which depends on a slightly different nomenclature. I think my
meanings will be obvious.
First, let me make a couple of definitions.
By a "string" I mean a set of characters defined by naming each element of
the set. Thus the statement $1 = cat means that the string named $1 is a
set of the characters c-a-t. A null string, in this case, is the same as
a non-existent string.
By a "field", I mean a >delimited< field which exists in a relationship to
other fields. A field consists of a string and a >field delimiter< which
separates it from other fields. A null field is NOT the same as a
non-existent field. The former consists of a field containing a null
string, while the latter has no existence by virtue of the fact that it
has no delimiter. A command line and an alias script both consist of a
set of delimited fields, the delimiter being a space or a tab.
It seems to me that what we have at present with ARUNZ (and other similar
command line expanders) is a situation where one syntax is used to define
two different kinds of parameters, and perhaps we need a syntax for each
kind. We may call one a "string substitution parameter" and the other a
"field substitution parameter". Currently, $n functions in ARUNZ strictly
as a string substitution paramter. If the command line field n contains
the string xxxx then $n in the alias script will be so expanded. If the
field n does not exist in the command line, then a null string will be
substituted in place of $n. This is fine for such expansions as
"FOO$1.COM" where FOO.COM is, for instance, the current version and
previous versions have numbers which may be substituted as indicated.
This is srictly a string substitution operation. On the other hand, when
we use $n to indicate the contents of a >field< in an alias script, as in
FOO $1 $2, we are using it as a field substitution parameter. Since we
are substituting one field for another, this works fine unless a command
line field is non-existent. If this is the case, the corresponding field
in the expanded alias script must also not exist. Using a string
substitution parameter for the job will simply produce a null field - not
the same.
I would suggest that you develope ARUNZ to differentiate these two kinds
of parameters - perhaps %n or $%n for string substitution and $n for field
substitution, or some such. Let me know what you think.