[log in to unmask] (Tucker Taft) quoted and then wrote:
>[log in to unmask] wrote:
>> Am I wrong to be disappointed that such a defacto standard would be based
>> a C-ism (or Unix-ism) as the "environment variable" ?
>No. Environment variables really have nothing fundamental to do
>with C. I suppose Unix invented the term "environment variable" but
>most operating systems have some sort of process context which
>includes user-definable variables of some sort. Things like
>current directory, current search path, current user, etc., all
>seem most conveniently and consistenly accessible via named variables,
>even if there are also special systems calls available for each
In both VMS and MacOS the "current directory" is bifurcated, with
a device portion and a directory portion, neither stored in a
general-purpose user-defineable variables. So far as I know
there are no general purpose calls, only special system calls
to access them. Likewise for username on VMS, although I have
not looked at the new Mac OS 9 "user" support.
So while a portable standard might want to make use of such a uniform
string access method, in the two cases with which I am most familiar
it does not exist. VMS does have Logical Names and DCL Symbols,
and I thought I remembered hearing that C programmers who call the
Get Environment Variable function of the C Runtime library can
get either of those separate constructs back, depending on which
exists. I doubt that the VMS C Runtime library rules for which
gets set and which gets delivered are mirrored on any other operating
system that has two such constructs.
>Do you have some general replacement for the concept of "environment
>variables" in mind? Note that Ada 95 has the notion of "task attributes"
>which are solving a similar problem (though Ada does not provide
>inheritance of task attributes).
My concern was more for the situation of interfacing multiple languages;
certainly providing an Ada-only capability is straightforward, as is
providing a C-only capability. Getting all the compiler vendors to
make the same choices on all the operating systems is a little tougher.