Jay,

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.


Best,



Lindsay Haisley