In:
Title: z/OS V1R12.0 XL C/C++ Run-Time Library Reference
Document Number: SA22-7821-12
I read:
Note: Starting with, z/OS V1R2, the storage used to define the environment
variable pointed to by envvar is added to the array of environment
variables.
Previously, the system copied the string into system allocated storage.
A new environment variable, _EDC_PUTENV_COPY, will allow the previous
behavior to continue if set to YES. If _EDC_PUTENV_COPY is not set or is set
to any other value the new behavior will take place.
Yaaay! ("new" seems to be their funny way of saying "POSIX-compliant",
as if POSIX were new to them. But I laud them for adopting POSIX, even
at the cost of changing a default behavior.)
And it works in both EBCDIC and ASCII compiler modes. How do they make
that work? I can only imagine that when an ASCII program starts, it makes
an entire copy of the (EBCDIC) shell environment, converted to ASCII. Then
exec*() must reverse the conversion, only to have it redone if the target is
another ASCII program.
Ouch! The overhead! (Or have I overlooked something?) I can scarcely
imagine how important a customer must have complained.
-- gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN