Applying Zaps to the SAS/C Software Products |
The Release 6.50 version of APPLYZAP can be used to
apply zaps to any release of the SAS/C software products. The Release 6.50
version of APPLYZAP requires the Release 6.50 version of the transient library
(OS/390: sasc.LINKLIB, VM: LSCRTL LOADLIB) to be available. Previous releases
of APPLYZAP can be used to maintain SAS/C software
of that release and earlier only.
Note:
APPLYZAP was
unavailable on VM prior to Release 5.00G.
Table 3.4 provides a list of
required
DDnames for an execution of APPLYZAP.
For each distinct libname found in the
NAME statement of a zap being processed, there must be a corresponding DDname.
For example, suppose a DDname of LOAD has been defined as follows:
//LOAD DD DSN=sasc.LOAD,DISP=SHR
Then the following NAME statement can be issued:
NAME LC1370 DSUP@: LOAD
For a list of possible SAS/C
DDnames, refer to the APPLYZAP catalogued procedure.
Example 3.1 illustrates sample OS/390 JCL to execute
APPLYZAP.
//jobname JOB job-card information
//APPLYZAP EXEC PGM=APPLYZAP,
// PARM='UPPER'
//STEPLIB DD DSN=sasc.LOAD,DISP=SHR
// DD DSN=sasc.LINKLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*,DCB=(LRECL=121,RECFM=FBA)
//SYSZRPT DD SYSOUT=*
//SYSZLIN DD DSN=&&ZLIN,DISP=NEW,SPACE=(TRK,(2,2)),
// UNIT=SYSDA,DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//SYSZOUT DD SYSOUT=*
//SYSTERM DD SYSOUT=*
//ZAPPED DD DSN=sasc.ZAPPED,DISP=OLD,
// DCB=(LRECL=132,RECFM=FB)
//SYSIN DD DSN=&&TEMP,DISP=NEW,SPACE=(TRK,(2,2)),
// UNIT=SYSDA,DCB=(LRECL=80,RECFM=FB)
//SYSZLIB DD DSN=uprefix.SASC.ZAPS,DISP=SHR
//LOAD DD DSN=sasc.LOAD,DISP=SHR
//ARESOBJ DD DSN=sasc.ARESOBJ,DISP=SHR
//LINKLIB DD DSN=sasc.LINKLIB,DISP=SHR
//SYSZIN DD *
*
APPLY Z6001509
*
REPORT ZAP=Z6001509
*
* NAME: Z6001509 PRODUCT: SASC CATEGORY: RECO SYSTEM: MVS
* DATE: 08NOV96 STATUS: DZ+UT USAGE-ID: LIBRARY-C1509
*
* LSCX041, S0C4 ABEND in AMCLOSE, L$CRPWT(L$CRPOS), message LSCX548
*
* NOTE: APPLY TO SASC.LINKLIB (TRANSIENT RUN-TIME LIBRARY IN
* LOAD MODULE FORMAT), AND SASC.ARESOBJ (ALL-RESIDENT
* RUN-TIME LIBRARY IN OBJECT FORMAT) USING THE APPLYZAP
* UTILITY.
* NOTE: RELINK OR ZAP ANY ALL-RESIDENT PROGRAMS WHICH INCLUDE
* THIS MODULE.
* END
NAME L$CRPSO L$CRPOSO LINKLIB ARESOBJ
CHECKSUM
VER 0C7A 5850,5000
VER 0F7A 5850,5000
REP 0C7A 0707,0707
REP 0F7A 0707,0707
CHECKSUM CF52D552
IDRDATA Z6001509
*
REPORT LIB=LOAD
*
REPORT LIB=LINKLIB
/*
//
Example 3.1 uses APPLYZAP to apply several zaps to different
libraries and also to obtain several zap informational reports. APPLYZAP
will decide which utility and library to use for each zap. Note that zaps
may be applied using the APPLY command, in which case APPLYZAP looks in SYSZLIB
for the zap, or by directly including the zap into SYSZIN.
Example 3.2 illustrates sample OS/390 JCL to execute APPLYZAP
using the APPLYZAP catalogued procedure.
//jobname JOB job-card information
//APPLYZAP EXEC APPLYZAP,
// PARM.APPLY='UPPER'
//APPLY.SYSZLIB DD DSN=uprefix.SASC.ZAPS,DISP=SHR
//APPLY.SYSZIN DD *
*
APPLY Z6001507
*
REPORT ZAP=Z6001507
*
* NAME: Z6001507 PRODUCT: SASC CATEGORY: RECO SYSTEM: MVS
* DATE: 12DEC96 STATUS: DZ+UT USAGE-ID: CXX-C1507
*
* LSCT439, Object of abstract class <class_name> cannot be declared
*
* NOTE: APPLY TO SASC.LOAD (COMPILER AND UTILITIES LIBRARY IN
* LOAD MODULE FORMAT) USING THE APPLYZAP UTILITY.
* END
NAME LCXX# DECLARE@ LOAD
CHECKSUM
VER 002DEE 4390,F081
VER 002DF2 8990,001B
VER 002DF6 8890,001F,1299
*
REP 002DEE 9110,F081
REP 002DF2 4780,538C
REP 002DF6 D503,8000,C044
CHECKSUM 06C5E186
IDRDATA Z6001507
*
REPORT LIB=LOAD
/*
//
Example 3.2 applies zaps with the APPLYZAP catalogued
procedure, which is provided to help in executing APPLYZAP. The APPLYZAP catalogued
procedure is located on the SAS/C Usage
Notes tape in the .CNTL file. If the APPLYZAP catalogued procedure has been
installed into an accessible catalogued procedure library (.PROCLIB) and edited
to contain installation-specific names, this example may be used to accomplish
the same task as Example 3.1.
In both Example 3.1 and Example 3.2, zap Z6001507 is
found in the PDS file defined at DDname SYSZLIB and is contained directly
in the JCL file. Listed below are descriptions of the options and commands
used with the example APPLYZAP jobs:
-
REPORT ZAP=zname
-
generates a report containing a list of
all the libraries that the named zap (zname) has been applied
to.
-
REPORT LIB=libname
-
generates a report containing a list of
all the zaps applied to the named library (libname).
-
PARM='UPPER'
-
generates all output in uppercase.
Use the APPLYZAP catalogued procedure to ensure that
all of the necessary data sets are allocated.
APPLYZAP will apply any number of zaps, however, the
input file (SYSZIN) must be sequential. Therefore, a specific PDS member
as well as concatenated PDS members are acceptable.
The libname keyword used in the NAME statement of
a zap, the
LIB= parameter of the REPORT command, and the libname keyword found in all
APPLYZAP output, are used to identify a particular VM SAS/C software
file.
For each distinct libname found in the NAME statement
of the zap being processed, there must be a corresponding VM file or VM FILEDEF
pointing to a VM file. In determining how to interpret the libname, APPLYZAP
considers the following:
-
Was .ext supplied?
-
Was the FILEDEF option
specified?
-
Does an actual FILEDEF that matches the libname
exist?
Table 3.5 provides a Truth Table that indicates how
APPLYZAP will interpret the libname based on the above considerations for
a libname of LOAD or LOAD.L.
For a list of supplied DDnames,
refer to the APPLYZAP
EXEC.
There are no DDnames required to run APPLYZAP under
VM unless a particular zap indicates it by not supplying an .ext
in the libname. However, it is possible, using the FILEDEF option, to cause
APPLYZAP to zap a file pointed to by a FILEDEF that you supply.
Another use of DDnames in APPLYZAP is with the INPUT
option and the APPLY command. Zaps specified in the INPUT option and in
the APPLY command can be obtained from a MACLIB defined to the DDname of SYSZLIB.
It is important to realize that APPLYZAP will first search for the zap on
an accessed disk with a filetype of ZAP. By default, the DDname SYSZLIB is
allocated to the ZAP MACLIB (the name of the MACLIB on the Usage Notes tape
that contains all of the zaps).
To run APPLYZAP on VM, first ensure that the mini-disks
containing APPLYZAP and the zaps to be applied are at least read accessible.
Next, ensure that the mini-disks containing the libraries to be zapped, the
ZAPPED MACLIB (which is created on the first run of APPLYZAP) and LC370 LOADLIB,
are write accessible. Then do one of the following:
Example 3.3 shows VM sample for applying
multiple zaps to several libraries.
*
* NAME:Z6001507 PRODUCT:SASC CATEGORY:RECO SYSTEM:CMS/ESA
* DATE:12DEC96 STATUS: DZ+UT USAGE-ID:CXX-C1507
*
* LSCT439, Object of abstract class <class_name> cannot be
* declared
* NOTE: APPLY TO CXX LOADLIB (C++ TRANSLATOR) USING
* THE APPLYZAP UTILITY.
* NOTE: IF THE LIBRARY IS INSTALLED IN A DCSS, THE DCSS
* MUST BE RESAVED.
* END
NAME LCXX# DECLARE@ CXXLOAD
VER 002DEE 4390,F081
VER 002DF2 8990,001B
VER 002DF6 8890,001F,1299
*
REP 002DEE 9110,F081
REP 002DF2 4780,538C
REP 002DF6 D503,8000,C044
LOG Z6001507 ZAPLOG DECLARE@ LSCT439, Object of abstract class
<class_name> cann
*
REPORT LIB=LC370.L
Example 3.3 can be applied to the SAS/C software
products by following these steps:
-
Ensure that all libraries to be zapped are on
a write accessible disk. In this case, ensure that the LC370 LOADLIB, the
LC370CIC TXTLIB, and the LC370VSE TXTLIB files are on a write accessible disk.
The library information can be obtained from reading the header note in each
zap; LC370CIC and LC370VSE are associated with zap Z5000158.
-
If this is the first time running APPLYZAP, the
ZAPPED MACLIB is created on a write accessible disk. If this is not the first
time running APPLYZAP, ensure that the ZAPPED MACLIB is on a write accessible
disk.
-
Ensure that the disk containing the APPLYZAP utility
is linked with at least read access.
-
If the MACLIB containing the zaps is not named
ZAP MACLIB, issue a FILEDEF defining SYSZLIB to the correct MACLIB.
-
Invoke APPLYZAP in the following way:
APPLYZAP INPUT myzap
where myzap is the name of a file that must have a filetype of ZAP and contain
the data listed in Example 3.3
This example uses APPLYZAP to apply two zaps to different
libraries and also to obtain several informational zap reports. APPLYZAP
will decide which utility and library to use for each zap.
Note that a zap may be applied using the APPLY command
(in which case APPLYZAP will look for a file with a filetype of ZAP on an
accessed disk first, then in the MACLIB defined to SYSZLIB for the zap) or
by directly including the zap into SYSZIN.
APPLYZAP maintains a log of all applied zaps in three ways.
First, if the LIST option is in effect, APPLYZAP produces a listing of its
run-time activity in the SYSZOUT file. This listing shows which library the
zap was applied against and the result of the attempt. If the attempt failed,
then the listing will show the reasons for the failure. Regardless of whether
LIST or NOLIST is specified, a summary table is generated. This table details
the number of libraries used, the number of zaps from input, the number of
zaps applied as well as previously applied and not applied, the number of
object deck zaps, the number of load module zaps, and the maximum return code
from utility. Example 3.4 shows a sample of the APPLYZAP summary table.
APPLYZAP Summary:
Zaps:
Name Applied NOT Applied Previously Applied
-- ---- ------ ---------
Z5500873 X
Statistics:
Number of libraries used : 1
Number of zaps from input : 1
Number of zaps applied : 0
Number of zaps previously applied : 1
Number of zaps not applied : 0
Number of object deck zaps : 0
Number of load module zaps : 0
Maximum return code from utility : 4
Second,
a log of applied zaps is maintained in the form of a zaps applied file, called
ZAPPED. This file, an OS/390 PDS or VM MACLIB, contains a member for each
module zapped. The ZAPPED member-names correspond to the module name. For
each zap, information is kept regarding the CSECT name, time, userid, utility
used, and filename of the library zapped. This file can be checked to see
if a zap has ever been applied.
Third, a report of applied zaps can be obtained by using
the REPORT option or the following command:
REPORT LIB=<
libname
>
REPORT processing causes APPLYZAP to list the contents
of an internal record of applied zaps for each defined library. The report
is written to the SYSZRPT file. A defined library under OS/390 is any SAS/C library
that has been defined with a DD statement. A defined library under VM is
a SAS/C library found on a write accessed
disk. This method is the most accurate because both the SYSZOUT listing and
ZAPPED file can be discarded or overwritten.
Copyright © 2001
by SAS Institute Inc., Cary, NC, USA. All rights reserved.