![]() Chapter Contents |
![]() Previous |
![]() Next |
A Guide for the SAS/C Compiler Consultant, Release 6.50 |
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 (MVS: 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.
The following table provides a list of required DDnames for an execution of APPLYZAP.
DDname | DCB notes and Special Cases |
---|---|
SYSPRINT | LRECL=121, RECFM=FBA |
SYSTERM | |
SYSZOUT | |
SYSZRPT | Only required if the REPORT option or command is used. |
SYSIN | |
SYSZLIN | LRECL=80, RECFM=FB, BLKSIZE=3200 |
SYSZIN | Not required if the INPUT option is used (input file must be sequential). |
SYSZLIB | Required only if the INPUT option or APPLY commands are used. |
ZAPPED | LRECL=132, RECFM=FB |
libname | A SAS/C library to be zapped (specified in NAME statement of zap). |
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 MVS 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 MVS 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 accessable 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:
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:
The following table 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.
.EXT Supplied? | FILEDEF Option ON? | FILEDEF Exists? | File/DDname to Search for |
---|---|---|---|
yes | yes | yes | DDN: LOAD |
yes | yes | no | LOAD LOADLIB * |
yes | no | yes | LOAD LOADLIB * |
yes | no | no | LOAD LOADLIB * |
no | yes | yes | DDN: LOAD |
no | yes | yes | Error |
no | no | yes | DDN: LOAD |
no | no | no | Error |
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 accessable. Then do one of the following:
APPLYZAP options... |
APPLYZAP INPUT zname additional-options |
where zname is the filename of the zap with a filetype of ZAP, or a member of a MACLIB FILEDEFed to SYSZLIB.
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:
APPLYZAP INPUT myzap |
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 MVS 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 MVS 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.
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © Fri Feb 6 08:07:34 EST 1998 by SAS Institute Inc., Cary, NC, USA. All rights reserved.