How to: |
To manage disk space effectively, many installations enforce strict data set naming conventions. Since FOCUS refers to data sources by ddname, the data set names (dsnames) are not significant for processing. However, as an optional feature to support your installation's standards, FOCUS can call special installation-coded verification routines to determine whether the names are acceptable. This optional facility can be used with the following data sources: FOCUS MASTER Files, FOCEXEC files, ERROR files, and FOCUS data sources. If you install this optional feature, FOCUS calls your data set name verification routine (it must be named DSNCHK) whenever any of these is opened.
The argument in the call has the following syntax:
CALL SUBROUTINE DSNCHK(ddname,dsname,RETCOD)
where:
Is an 8-byte, left-justified file name with trailing blanks.
Is a 44-byte data set name field, which is also left justified with trailing blanks.
Is a fullword binary integer set by DSNCHK. A return code of 0 means the name is acceptable; a non-zero code means the name is unacceptable. If the return code is not zero, FOCUS issues the following diagnostic message:
(FOC333) INVALID DATASET NAME: dsname
where:
Is the actual data set name. FOCUS then proceeds as if the file was not allocated, which may generate further error messages.
The dsname argument field is actually the start of a 176-byte area that is returned by the RDJFCB macro. Refer to IBM publications for further file information returned by the macro.
Subroutine DSNCHK is link-edited to FOCUS. Normally, FOCUS is delivered with a link-edited dummy DSNCHK that accepts all data set names.
Note that z/OS-compatible versions of all user exits are required since the user exit code resides within the FOCUS load module.
//LINK1 EXEC PGM=IEWL,PARM='LET,NCAL,LIST,SIZE=1024K' //SYSPRINT DD SYSOUT=* //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(10,1)) //OLDMOD DD DSN=prefix.FOCLIB.LOAD,DISP=SHR //DSNCHK DD DSN=assembled.dsnchk,DISP=SHR //MAINTAIN DD DSN=prefix.FOCCTL.DATA,DISP=SHR //SYSLMOD DD DSN=prefix.TEST.FOCLIB.LOAD,DISP=SHR //SYSLIN DD * INCLUDE DSNCHK INCLUDE OLDMOD(CORFOC) <---- MODULE TO BE CHANGED INCLUDE MAINTAIN(CORFOC) <---- LINK1 CNTL STATEMENTS NAME FOCUS(R) <---- NEW MODULE /*
Information Builders |