When running a TSO program it requires a CPPL. When TSO is started by using the
TMP, a CPPL is provided, and it can be accessed.
One of the fields that is a supported programming interface is the ECT
(Environment Control Table), and it can be updated.
If a program or command is indirectly invoked eg from ISPF then the CPPL may
not be directly available and so will have to be constructed. One of the fields
required in the CPPL is the ECT.
For many many years it so happened that the ECT pointer was 8 bytes back from
the UPT, so code like the following could be used to find the ECT pointer and
store it in the CPPLECT field.
L R1,X'21C' POINT TO TCB
ICM R1,7,X'0B5'(R1) POINT TO JSCB
L R1,X'108'(,R1) POINT TO PSCB
ST R1,CPPLPSCB SAVE PSCB POINTER
L R1,X'034'(,R1) POINT TO UPT
ST R1,CPPLUPT SAVE UPT POINTER
LA R1,0(,R1) CLEAR HIGH ORDER BYTE
SH R1,=H'8' ASSUME ECT POINTER AT UPT - 8
MVC CPPLECT,0(R1) PICK UP ECT POINTER
With the application of the following PTFs, for the z/OS 2.1 system at least,
this no longer works.
UA80338 UA80339 UA80340 (which ever is appropriate for the z/OS version).
For some reason it still works with the z/OS 1.13 version.
These are security/integrity fixes, hence the APAR is not shown.
These PTFs are unlikely to be marked PE, so users that have old assembler
programs should check to see whether any of them use this method of locating
the ECT.
In the case of z/OS 1.13 which did not abend, it may have found storage that it
wsa allowed to address but it may not be a real ECT, and so an overlay may
occur. Future maintenance to TMP modules may well cause the ECT to be in a
different location to what it has been in for 25-30 years so it is advisable to
check any assembler programs that might be using this technique and change to
using the correct method.
Documented way is this:
The URLs are not hyperlinks so they have to be pasted into a
browser. The fact that the documents are for z/OS 2.2 does not matter the steps
are applicable to z/OS 1.13 and z/OS 2.1.
ECT:
---------
http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v
2r2.ikjd200/ikjd200100.htm?lang=en
Pointed to by:
CPPLECT field of the CPPL
TPLECT field of the TPL
LWAPECT field of the LWA
LWA:
---------
http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v
2r2.ikjd200/ikjd200292.htm?lang=en
Pointed to by:
ASXBLWA field of the ASXB
JSXL communication field of the JSXL
ASXB:
-----------
http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v
2r2.iead100/iead10094.htm?lang=en
Pointed to by:
ASCBASXB
ASCB:
-----------
http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v
2r2.iead100/iead10059.htm?lang=en
Pointed to by:
CVTASCBH and CVTASCBL fields of the CVT data area
PSAANEW field of the PSA data area
PSAAOLD field of the PSA data area (Master's ASCB)
...
PSA:
---------
http://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.2.0/com.ibm.zos.v
2r2.iead300/iead300767.htm?lang=en
PSSANEW must not be used, so finally we've reached PSAAOLD.
I am providing this information so that sites can avoid being caught by the
problem. I don't want to know anything, and I do not intend to get into a
discussion about why the old method used to work, or why it doesn't now.
Use this information or ignore it - your choice.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN