IBM Support

User routine addresses not recognized for ISPF interface services

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
          .
          .
          .

[{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSBLLD","label":"ISPF for z\/OS"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"","Version":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
07 June 2018

UID

dwa1452222