Question & Answer
Question
When invoking one of the ISPF Interface services (BRIF, EDIF, or VIIF), sometimes the parameters specifying the dialog routines (read-routine, write-routine, and cmd-routine) or work area (dialog-data) are not recognized. This can result in an ISPS107 error message being issued and the service returning to the dialog with RC=20, or unexpected behavior while the service is active.
This same problem can occur with variable services that can only be invoked via ISPLINK. The services and associated parameters are VCOPY (length array and value array), VDEFINE (variable, length for the LIST format only, and user-data), and VREPLACE (lengths and values).
Answer
ISPF checks the first byte of an address passed for a parameter, and if it is a blank (x'40') it treats that parameter as not having been specified. For the parameters listed above, if they are located in the range x'40000000' through x'40FFFFFF' this causes them to be treated as unspecified. For a required address, this results in the ISPS107 error message. For optional routine parameters, this results in the routines not being invoked. For the work area address, this results in the routines being invoked without the expected work area (which might cause an S0C4 ABEND).
End users can be vulnerable to this problem if they are using other programs within their ISPF session that use a significant portion of the address space's private storage. The same is true for users on a system that have a large ECSA specified (approximately 1GB). Therefore, the affected dialog can work on many systems and for most users, but a subset of users or systems might experience one of the above failures.
To avoid this problem, always have the dialog create these address values with the high-order bit set to ON. This prevents the first byte from appearing to be a blank, and yet does not affect the resultant program's behavior (the high-order bit of addresses is ignored when running AMODE 31).
.
.
.
LA 2,DATAAREA
ST 2,DDATA
OI DDATA,X'80'
.
.
.
L 15,=V(ISPLINK)
CALL (15),(BRIF,PSEUDODSN,RECFM,LRECL,READRTN,BLANK,DDATA), *
VL,MF=(E,CALLIST)
.
.
.
BRIF DC CL8'BRIF'
PSEUDODSN DC C'SIMULATED.BROWSE '
BLANK DC C' '
RECFM DC C'F '
LRECL DC F'80'
EXTRN BRIFREAD
READRTN DC A(BRIFREAD+X'80000000')
LTORG
.
.
.
DDATA DS A
DATAAREA DS 100F
CALLIST CALL ,(,,,,,,,,,,,,,,,),MF=L
.
.
.
Was this topic helpful?
Document Information
Modified date:
07 June 2018
UID
dwa1452222