COMPRESS: Compress Partitioned Data Sets in TSO/E
[Home]
[Products]
[Support]
[Documents]
[Partners]
[Contact Us]
[Search]
[Freeware]
Overview
The COMPRESS command allows TSO/E users to compress a partitionned data set (PDS) with DISP=SHR using a protection scheme compatible with ISPF and the linkage-editor. It also allows several data sets to be compressed with a single command by specifying a generic data set name such as 'SYS2.*'. Together with the command itself, there is a COMPRESS edit macro particularly handy when abend SD37 strikes the PDS you're editing.
The COMPRESS command is written in assembler. It is a free program, available in source-code (under the name COMPRCMD) and load-module (called COMPRESS) format in the freeware section of this Web site.
The COMPRESS EDIT macro is written in REXX and also distributed in the freeware section of this Web site. Note that, in the TSO/E or ISPF/PDF environment, having a command and an EDIT macro with the same name is not ambiguous: ISPF/PDF searches an EDIT macro in SYSPROC and SYSEXEC first, and, if it didn't find it, looks for a command in LOAD libraries. When COMPRESS is invoked as a TSO/E command (inside or outside ISPF), then an available command is invoked before a REXX exec with the same name.
|
|
|
Syntax
COMPRESS can be called from TSO/E or ISPF.
COMPRESS 'data-set-name'
VOLUME('volser')
CHECK/NOCHECK
SHR/OLD/LLAREFRESH
CHANGED/NOCHANGED
SETMSG
- 'data-set-name' is the dsname of the data set or a generic dsname like 'ISP.V2R3M0.*'. If you specify a generic name, "COMPRESS" retrieves the full data sets names from the catalog. If the dsname is not enclosed in apostrophes, it is prefixed with your userid. A list of full data set names enclosed in parentheses can also be specified; processing stops after a generic dsname is processed.
- 'volser' is the volume serial number of the data set when the data set is not cataloged or cataloged on another volume. Optional.
- 'OLD' specifies that the data-set(s) should be allocated with DISP=OLD instead of SHR. The default is DISP=SHR. During a generic compress, 'OLD' allows you to make sure that the data sets currently allocated by other jobs are not compressed.
- 'LLAREFRESH' instructs COMPRESS to issue LLACOPY for each member in the compressed PDS to refresh LLA directory pointers. To satisfy LLACOPY authorisation requirements, COMPRESS must be specified in the AUTHTSF section of the IKJTSOxx member. Optional.
- CHECK/NOCHECK are key-words that only apply to MVS systems with ASM2 installed. 'CHECK' is the default and indicates that during a generic compress operation, a data set should not be compressed if its asm2id (ds1syscd+8 in the f1-dscb) is identical to the job name; in other words, if the PDS hasn't been updated since the last time your job processed it, there's no need to compress it again. 'NOCHECK' indicates that the PDS should be compressed regardless of what asm2id contains. Optional.
- 'CHANGED' indicates that during a generic compress operation, a data set should not be compressed if its DS1DSCHA bit is off, in other words, if the PDS hasn't been updated since the last time it's been backed up. This is the default.
'NOCHANGED' indicates that the PDS should be compressed regardless of the setting of the changed bit.
- 'SETMSG' is an option used by the COMPRESS edit macro.
Operation
- The "COMPRESS" command requires no APF authorization and can be executed out of any load-library. "COMPRESS" uses the TSO/E service routine (IKJEFTSR) to create the authorized environment required to execute IEBCOPY. The default IKJEFTAP table is set up for this purpose (and so is the IKJTSOxx parmlib member if your system supports it).
- The protection scheme used by "COMPRESS" is similar to the one implemented by ISPF/PDF V2 and provides against simultaneous updates by ISPF and the linkage editor. However, when you compress a PDS with DISP=SHR you don't have any read integrity. This is particularly critical for load libraries and compressing one while it is used may cause S106 abends.
- If you specify a volser together with a generic data set name, "COMPRESS" looks in the catalog for the full data set names, skipping the data sets that are cataloged on other disk packs. "COMPRESS" does not read the VTOC: if uncataloged data sets that satisfy the generic name requirement exist on the pack, they are not processed.
- If you intend to use the "COMPRESS" edit macro, copy it to a clist library such as IPO1.CMDPROC or ISR.V2R3M0.ISRCLIB. That's all you need to be able to invoke it as an edit primary commands like 'CANCEL' or 'RESET'. At any moment while you're editing a member, you may enter 'COMPRESS' to compress the PDS. When it is compressed, the edit macro returns an ISPF message that indicates how full the PDS now is.
- The TSO/E service routine creates a parallel TMP to invoke IEBCOPY.
This is what the TCB structure looks like while IEBCOPY is executing:
IKJEFT01 TMP INIT (JSTCB)
IKJEFT02 TMP MAINLINE
IKJEFT09 TMP SECOND LEVEL
COMPRESS Command Processor
IKJEFT02 TMP MAINLINE (PARALLEL TMP)
IKJEFT09 TMP SECOND LEVEL (PARALLEL TMP)
IEBCOPY IEBCOPY
- The STTMPMD (set TMP mode) macro is used to disable the attention and PA1 keys.
This prevents users from destroying their PDS which can so easily happen when they use ISPF compress services.
LOAD Libraries
Compressing a private load-library with DISP=SHR is generally something safe, i.e. it will not cause a problem. When such a private load-library is part of ISPLLIB or STEPLIB in a TSO/ISPF session, compressing it with ISPF services (options 3.1, 3.4 or 11) allocates the PDS with DISP=OLD, which fails if the PDS is allocated by a job or another TSO session. If the allocation succeeds with DISP=OLD, further access by a batch job or another TSO session will fail.
Compressing a public load-library with DISP=SHR can cause an application or a system failure, particularily if the PDS is allocated to CICS or LLA/VLF. It is recommended to use the OLD or LLAREFRESH options to compress a load-library used by permanent jobs or tasks.
After you compress a CICS load-library (DFHRPL) with DISP=SHR, tell CICS to refresh the directory using the following command : CEMT SET PROGRAM ALL NEWCOPY
Examples
COMPRESS ('IBMUSER.EXEC' 'IBMUSER.CLIST') Two fully-qualified PDS names
COMPRESS 'PRISMCS.LOCAL.*' CHANGED COMPRESS data set list if DS1DSCHA bit is ON
COMPRESS 'SYS1.CMDLIB' LLAREFRESH Compress and refresh LLA
COMPRESS ('IBMUSER.EXEC' 'PRISMCS.LOCAL.*') Generic dsname must be last in list
COMPRESS (EXEC CLIST MACLIB JCL LOAD) The user prefix is added to each DSNAME
ISPF EDIT Macro
The COMPRESS EDIT macro is written in REXX and also distributed in the freeware section of this Web site. Note that, in the TSO/E or ISPF/PDF environment, having a command and an EDIT macro with the same name is not ambiguous: ISPF/PDF searches an EDIT macro in SYSPROC and SYSEXEC first, and, if it didn't find it, looks for a command in LOAD libraries. When COMPRESS is invoked as a TSO/E command (inside or outside ISPF), then an available command is invoked before a REXX exec with the same name.