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

Reply via email to