Am 18.01.2015 um 17:19 schrieb Peter Relson:
Storage for static variables, i.e. variables declared with
the STATIC keyword, is "allocated" in the so called static
CSECT that becomes part of the object module. Note that
this *is* read/write storage, so in PL/I STATIC does not
mean constant.
If it's truly part of a "CSECT" that is part of a load module, then this
statement is wrong (or needs to be fine-tuned). All z/OS storage is
read/write if you're in the right key (unless z/OS has page-protected it).
So if you're trying to say that a non-key-0 program can write into it, in
z/OS that will depend on the APF authorization of the load library
concatenation and the reentrancy of the module.


Even a non-authorized program which is linked RENT can write into its STATIC CSECT. We did this all the time in our PL/1 modules that are compiled using the NORENT option (or compiled with old releases of PL/1, before the RENT option was available).

There are two use cases (at our site) to do that:

a) to store the entry point of modules that are dynamically loaded, so that only at the first call a LOAD macro is needed ... at the subsequent calls the entry point is non-zero,
so it can be used immediately

b) to store results of expensive computations (and the arguments, that leaded to this
results), in case that the following call is done with the same arguments

In the second case, you have to take care that there will be no damage due to the parallel use of the module from different tasks ... there are ways to do this. In the first case, you dont have such a problem ... the only damage that can occur is
that you do the LOAD too often.

BTW: our PL/1 modules (no DLLs, simple LOAD modules) call each other using
ASSEMBLER interfaces, doing MVS LOAD ... we don't normally use LE services
for that (this is an old technique from the early 1980s). But it works until today,
and the rest is all LE compliant. We use the new EP PL/1 compilers.

Same goes for C ... no difference at all.

Kind regards

Bernd

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to