Chapter Contents

Previous

Next
Applying Zaps to the SAS/C Software Products

Using APPLYZAP

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.  [cautionend]


OS/390 Specifics

Table 3.4 provides a list of required DDnames for an execution of APPLYZAP.

Required DDnames
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 OS/390 JCL to execute APPLYZAP.

Example 3.1 Sample OS/390 JCL to Run to Apply Multiple Zaps to Several Libraries

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

Example 3.2 Sample OS/390 JCL to Run APPLYZAP to Apply Zaps with the APPLYZAP PROC

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


VM Specifics

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:

  1. Was .ext supplied?

  2. Was the FILEDEF option specified?

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

APPLYZAP Options
.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 accessible. Then do one of the following:

Example 3.3 shows VM sample for applying multiple zaps to several libraries.

Example 3.3 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:

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

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

  3. Ensure that the disk containing the APPLYZAP utility is linked with at least read access.

  4. If the MACLIB containing the zaps is not named ZAP MACLIB, issue a FILEDEF defining SYSZLIB to the correct MACLIB.

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


Listing Applied Zaps

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.

Example 3.4 Sample 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.


Chapter Contents

Previous

Next

Top of Page

Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.