Description of HSX

Download count: 6 this month, 6326 altogether.
Downloads for HSX :
  VMARC archive: v-1437K

 
********************** VM Generally Available Tools ************************
*  (c) Copyright IBM Corporation  1992, 2004.  All rights reserved.
* :nick.HSX             :sec.UNCLASSIFIED
* :title.HSX - Adds Compressed File Support to any CMS program
* :version.3.7.0
* :date.01/04/20    :SCP.CMS11, CMS12, CMS13, CMS14, CMS15, CMS16, CMS17 and on
* :oname.John Lumby                       :onode.TOROLAB2 :ouser.LUMBY
* :support.X        :cm.(this signifies that this tool is "AS IS")
* :repository.IBMVMGAT    :cm.IBM VM Generally Available Tools
* :sw.no pre-reqs but will exploit FCOPY, and WHATPACK is useful.
*     :cm.refer to HSX SCRIPT for more details.
* :doc.HSX SCRIPT             :lang.ASM, PL/X
* :kwd.Huffman Packed Compression
* :abs.HSX is a tool which allows programs which access CMS files to
* operate on compressed files as though they are decompressed, without
* needing a separate compress/decompress step. This saves considerable
* DASD space. The application perceives the file to be decompressed.
* Input and Output are both supported. Huffman, COPYFILE, FCOPY and
* TERSE packing methods are supported.
* The method:
* HSX establishes a nucleus extension which intercepts CMS file I/O's
* and dynamically compresses/decompresses.
* Any program which uses the published CMS file operations can, when
* HSX is installed, read or write compressed files.
* :lic.By placing material on this conference, I agree to grant
* IBM a non-exclusive, royalty-free license for the material
* as set forth in the LICENSE AGREEMNT file on this conference.
*
***********************************************************************+
*  note: 04 Jun 91: limitation:  applying to use under CMS7/8:
*        OS-simulation is currently supported under CMS7 or CMS8
*        but ONLY when running under the CP-ESA feature of VM-ESA,
*            NOT  when running under the CP-370 feature of VM-ESA.
*     It is unlikely that this restriction will ever be lifted
***********************************************************************+
*
 &1 &2 HSX      LICENSE  *    licence agreement
 &1 &2 HSX      README   * if you are a new user, read me first!
*
* exec to initialise and terminate HSX and display/set certain values:
*
 &1 &2 HSXPROF  EXEC     *
*
* HSXPROF invokes any profiles specified in globalv group HSX,
* variable PROFILES.    The default is two execs,
* HSXSPROF followed by HSXUPROF (or whichever exist).
* The profiles are user-provided execs to
* define specific HSX environments.
* This package provides a sample of HSXUPROF EXEC named:
*
 &1 &2 HSXUSAMP EXEC     *
*
* This package does not provide files named HSXSPROF or HSXUPROF
* to avoid overwriting the users' ones.   However they are named
* here so as to indicate their relationship to the package.
*
*     &1 &2 HSXSPROF EXEC     *
*     &1 &2 HSXUPROF EXEC     *
*
* So you should either rename HSXUSAMP or copy whatever of its
* contents you want into HSXSPROF / HSXUPROF.
* If HSXPROF finds no profiles at all it will try to invoke HSXUSAMP
*
 &1 &2 HSXFINIS EXEC     * to finis a MUSTCLOS file
 &1 &2 HSXERASE EXEC     * to erase a MUSTCLOS file
*
*    Executable code for dynamic compression/expansion
*
*  All of these files have a filename of the form:
*     HSX<signifier>2
*  where <signifier> is a single character denoting CMS release
*  as follows:
*
*      U      CMS level 11             (i.e. VM/ESA Rel 2 mod 2)
*      V      CMS level 12             (i.e. VM/ESA Ver 2 Rel 1.0)
*      W      CMS level 13             (i.e. VM/ESA Ver 2 Rel 2.0)
*      X      CMS level 14             (i.e. VM/ESA Ver 2 Rel 3.0)
*      Y      CMS level 15             (i.e. VM/ESA Ver 2 Rel 4.0)
*      Z      CMS level 16             (i.e. VM/ESA Ver 2 Rel 5.0)
*      0      CMS level 17 or higher   (i.e. z/VM Version 4 Release 1.0)
*  The signifier is indicated by a % below
*
*  As supplied, the MODULE can be NUCXLOADed by HSXPROF
*
 &1 &2 HSXU2    MODULE   * CMS 11        nucxloadable module
 &1 &2 HSXV2    MODULE   * CMS 12        nucxloadable module
 &1 &2 HSXW2    MODULE   * CMS 13        nucxloadable module
 &1 &2 HSXX2    MODULE   * CMS 14        nucxloadable module
 &1 &2 HSXY2    MODULE   * CMS 15        nucxloadable module
 &1 &2 HSXZ2    MODULE   * CMS 16        nucxloadable module
 &1 &2 HSX02    MODULE   * CMS 17        nucxloadable module
*
*    HSXMOVE program   -    copies (not moves!) with compression/expansion
 &1 &2 HSXMOVE  MODULE   *
 &1 &2 HSXCOPY  MODULE   *  same as HSXMOVE + runs stand-alone
* these two names do *NOT* indicate that the difference is that
* one program moves and the other copies;   they both copy.
* HSXCOPY can run stand-alone, and so is bigger.
*
 &1 &2 HSXCPY   EXEC     *  adds wildcard support to HSXCOPY function
*
*  STATEHSX program  -  indicates whether file is compressed by return code
*
 &1 &2 STATEHSX MODULE   *
*
*  modules to tell whether HSX is active (installed) and issue an HSX command
*
 &1 &2 HSXACTIV MODULE   * tell whether HSX is active
*                        *     rc 0 = active, rc 1 = not installed
 &1 &2 HSXCOMND MODULE   * issue an HSX command
*                        *     (regardless of name of nucleus extension)
*
* various useful HSX-related programs/execs
*
 &1 &2 QFILE    XEDIT    *    describes compression type of file being Xedited
*                        *    (nice to use WHATPACK instead if you
*                        *     have it  -  part of COMPRESS PACKAGE)
*
 &1 &2 HSXFILE  XEDIT    *    file a compressed file from XEDIT
*                             preserving compression type
*
 &1 &2 EDUPDATE XEDIT    *    edit UPDATE MODULE to allow UPDATE
*                             of a compressed file:  invoke as
*                     XTRAIL UPDATE MODULE S(?(EDUPDATE
*                             which puts you into an XEDIT session.
*                             If XEDIT msgs indicate successful changes,
*                             Then FILE on any R/W disk you choose.
*                             (RECFM is indicated as F while in XEDIT:
*                              this is correct - refer to XTRAIL PACKAGE).
 &1 &2 XTRAIL   EXEC     *    needed to use EDUPDATE
 &1 &2 XTRAIFIL MODULE   *    needed to use EDUPDATE
*
 &1 &2 TERSRECT MODULE   * add record-count record to TERSE'd file
*
 &1 &2 HSXUSAMP ONOFFX   * sample rexx exit at intercept switch point
*                          this exit is invoked whenever HSX file system
*                          intercepts are switched from ON to OFF or OFF to ON
*                          provided that you have specified its name by means
*                          of the command
*                          HS ONOFFX <name>
*                          Its filetype MUST be ONOFFX.
*                          It checks to see if REXXIO has stolen the
*                          FINIS intercept and, if so, attempts to
*                          reset REXXIO.
*
 &1 &2 HSXLIF11 MODULE   * LISTFILE which outputs uncompr'd chr'cs for CMS 11
 &1 &2 HSXLIF12 MODULE   * LISTFILE which outputs uncompr'd chr'cs for CMS 12
 &1 &2 HSXLIF13 MODULE   * LISTFILE which outputs uncompr'd chr'cs for CMS 13
 &1 &2 HSXLIF14 MODULE   * LISTFILE which outputs uncompr'd chr'cs for CMS 14
 &1 &2 HSXLIF15 MODULE   * LISTFILE which outputs uncompr'd chr'cs for CMS 15
 &1 &2 HSXLIF16 MODULE   * LISTFILE which outputs uncompr'd chr'cs for CMS 16
 &1 &2 HSXLIF17 MODULE   * LISTFILE which outputs uncompr'd chr'cs for CMS 17
*
*      I have added an extension to the CMS LISTFILE command to
*      output the uncompressed characteristics of a compressed file if
*      the HSX file system intercepts are ON.  These modules can be
*      either invoked as their own name or nucxloaded as LISTFILE so
*      that any exec or program which issues LISTFILE while HSX file
*      system intercepts are ON "sees" the uncompressed file. This
*      second use may allow some applications to work ok on compressed
*      files which currently don't.
* .     To nucxload as LISTFILE - rexx fragment:
*   "QUERY CMSLEVEL (LIFO"
*   parse pull vmtyp . cmslevel ',' .
*   If  cmslevel < 10 then cmrel = trunc(10*cmslevel)
*                     else cmrel = cmslevel
*   "NUCXLOAD LISTFILE HSXLIF"cmrel "(SYSTEM SERVICE"
* .  If you execute one on the wrong CMS release, rc 177 but no message.
* .  To terminate the NUCXLOADed override:
*    NUCXDROP LISTFILE
* .  Although intended for use with HSX, the program runs
*    independently of HSX, i.e. it does not require HSX to be loaded.
*    It functions exactly as regular LISTFILE if HSX is not loaded
*    or HSX file system intercepts are OFF.
*    You can nucxload it before or after HSXPROF ON
* .  When NUCXLOADed:
*      FULIST is NOT affected, i.e. continues to display compressed
*          characteristics of compressed files
*      FILELIST IS affected, i.e. displays uncompressed
*          characteristics of compressed files (it uses LISTFILE).
*  . If you LISTFILE or FILELIST a lot of compressed files, e.g.
*     * * X of a disk containing a lot of compressed files,
*     be prepared for a slow(er) response.
*
* documentation
*
 &1 &2 HSX      SCRIPT   *
*        written in SCRIPT/VS (Document Composition Facility) format
*        comments inside give some guidance on how to format
*        the document has an index but if you don't find what you're
*        looking for you can simply XEDIT the SCRIPT file and search.
*
* online help files
*
 &1 &2 HSX      HELPCMS  *    same as HSX README but in HELP format
 &1 &2 HS       HELPCMS  *    HS - HSX command processor
 &1 &2 HSXCOPY  HELPCMS  *
 &1 &2 HSXMOVE  HELPCMS  *    same as HSXCOPY but with HSXMOVE substituted
 &1 &2 STATEHSX HELPCMS  *
 &1 &2 QFILE    HELPXEDI *
*
*    relocatable stuff needed only if you want to run HSX in a saved segment
 &1 &2 HSXBAS   TXTLIB   *  ancient members I haven't touched
 &1 &2 HSXJLA   TXTLIB   *  new members not specific to CMS release
 &1 &2 HSXCMS11 TXTLIB   *  members specific to CMS11
 &1 &2 HSXCMS12 TXTLIB   *  members specific to CMS12
 &1 &2 HSXCMS13 TXTLIB   *  members specific to CMS13
 &1 &2 HSXCMS14 TXTLIB   *  members specific to CMS14
 &1 &2 HSXCMS15 TXTLIB   *  members specific to CMS15
 &1 &2 HSXCMS16 TXTLIB   *  members specific to CMS16
 &1 &2 HSXCMS17 TXTLIB   *  members specific to CMS17
*
*     LOADMAPS I got (provided in case you want to check yours)
 &1 &2 HSXU2    LODMAP   *  the loadmap I got when I loaded HSXU2
 &1 &2 HSXV2    LODMAP   *  the loadmap I got when I loaded HSXV2
 &1 &2 HSXW2    LODMAP   *  the loadmap I got when I loaded HSXW2
 &1 &2 HSXX2    LODMAP   *  the loadmap I got when I loaded HSXX2
 &1 &2 HSXY2    LODMAP   *  the loadmap I got when I loaded HSXY2
 &1 &2 HSXZ2    LODMAP   *  the loadmap I got when I loaded HSXZ2
 &1 &2 HSX02    LODMAP   *  the loadmap I got when I loaded HSX02
*
*     utility to generate certain HSX MODULEs
 &1 &2 HSXJLGEN EXEC     *  type HSXJLGEN ? for help
*
* Installation details:
*
* 1) choosing how the HSX code will be loaded, and generating
*         saved segments and modules:
*
* 1.1)   As noted above, if you want HSX to run as a NUCXLOADed
*    nucleus extension in free storage then simply restore the
*    files to your disk and the HSX code is ready to run.
*    There are no sysgens.
*
* 1.2)   In order to generate a saved segment or module you will
*    need to use the supplied TXTLIBs.
*
*      Hints on use:
*
*      There is no proper "documentation" for these TXTLIBs.
*      However the following notes may help you use them.
*      In the following, c_r denotes:
*                        ____    _____________________________
*
*                        11 for  CMS11           (VM/ESA Release 2.2)
*                        12 for  CMS12           (VM/ESA Ver 2 Rel 1.0)
*                        13 for  CMS13           (VM/ESA Ver 2 Rel 2.0)
*                        14 for  CMS14           (VM/ESA Ver 2 Rel 3.0)
*                        15 for  CMS15           (VM/ESA Ver 2 Rel 4.0)
*                        16 for  CMS16           (VM/ESA Ver 2 Rel 5.0)
*                        17 for  CMS17           (z/VM Version 4 Release 1.0)
*
* 1.3)   If you want HSX to run in a saved segment, then you will
*    need to use the supplied TXTLIBs to generate it:
*
*  1.3.1) The HSX segment must be located below 16Meg
*
*  1.3.2) It is assumed that the reason you want them is to create a
*         saved segment using DEFSEG / SAVESEG
*
*  1.3.3) To GLOBAL the TXTLIBs prior to loading the code:
*         'GLOBAL TXTLIB HSXJLA HSXCMS'||c_r||' HSXBAS'
*
*  1.3.4) To load the executable code at address <load_addr>:
*                (which must be located below 16Meg)
*    'LOAD H'||c_r||'2 (CLEAR ORIGIN' load_addr 'AMODE 24 RLDSAVE RESET H'||c_r||'2'
*    'INCLUDE F'||c_r||'PYXA HSXTER HSXTEN (NOAUTO LIBE'
*
*  1.3.5) Although not necessary in order to load the code,
*         you may want to find out what members a TXTLIB contains.
*         Output from TXTLIB MAP can be confusing.    As an alternative,
*         the technique I use is:
*         'FILEDEF INMOVE DISK' txtlib_name 'TXTLIB' disk_mode
*         'FILEDEF OUTMOVE DISK' txtlib_name 'MEMBERS' rw_disk_mode
*         'MOVEFILE (PDS'
*
*  1.3.6) To instal the HS nucleus extension you need some way of
*         SEGMENT LOADing the saved segment and NUCEXT defining the
*         nucleus extension.
*         You can use the EXTLoad <loadexec> option of HSXPROF
*      or some other way of your own.
*         HSX does not provide any utility to load the saved segment,
*         but if you use an exec of your own then you can use HSXPROF
*         to invoke your loadexec,    as described above.
*
* 1.4) generating your own copy of HSXMOVE or HSXCOPY module
*
*    You can generate these modules from the supplied TXTLIB if you
*    need to.    For example you could generate an HSXCOPY which is
*    smaller and faster by excluding support for certain CMS releases.
*
*  1.4.1) You may be able to use the supplied HSXJLGEN EXEC:
*         To generate HSXCOPY:
*         HSXJLGEN HSXCOPY <m> ( c_r_1 c_r_2 ... c_r_i
*             where    <m>  is disk mode of MODULE
*                   c_r_1 c_r_2 ... is a list of CMS release identifiers, e.g.
*                   13 14
*     Type HSXJLGEN ? for more information
*     Otherwise, to gen the MODULE "by hand", read on ...
*
*  1.4.2) To GLOBAL the TXTLIBs prior to loading the code:
*    'GLOBAL TXTLIB HSXJLA HSXCMS'||c_r_1 'HSXCMS'||c_r_2 ... ' HSXBAS'
*     where HSXCMS'||c_r_1 'HSXCMS'||c_r_2 ...  consists of the CMS-specific
*           libraries for all desired CMS releases;   e.g. if you want a
*           module which will run under CMS releases 10 and 11:
*    'GLOBAL TXTLIB HSXJLA HSXCMS10 HSXCMS11 HSXBAS'
*
*  1.4.3)  To generate HSXMOVE:
*
*    'LOAD HSXMOVE (CLEAR NOAUTO MAP RLDSAVE RESET HSXMOVE AMODE 24'
*    'GENMOD HSXMOVE MODULE'
*
*  1.4.4)  To generate HSXCOPY:
*    'LOAD HSXMOVE (CLEAR NOAUTO MAP RLDSAVE RESET HSXMOVE AMODE 24'
*    'INCLUDE H'||c_r_1||'2 F'||c_r_1||'PYXA H'||c_r_2||'2 F'||c_r_2||'PYXA' ... ,
*                                       'HSXTER HSXTEN (NOAUTO LIBE'
*    'GENMOD HSXCOPY MODULE'
*     where 'H'||c_r_1||'2 F'||c_r_1||'PYXA H'||c_r_2||'2 F'||c_r_2||'PYXA' ...
*           consists of the CMS-specific libraries for all desired
*           CMS releases;   e.g. if you want a
*           module which will run under CMS releases 12 and 13:
*    'INCLUDE H122 F12PYXA H132 F13PYXA HSXTER HSXTEN (NOAUTO LIBE'
*
* 2) customising HSXUPROF exec
*
*    You will almost certainly want to have an HSXUPROF exec.
*    You can rename or copy the suppplied HSXUSAMP exec, and
*    then optionally add/delete/modify entries.
*
*
* pre-requisite for reading FCOPYPAK files (packed by FCOPY):
*
*  &1 &2 FCOPY XMOD        *    provided on VMtools as part of the
*                          *    FCOPY package
*
* recommended for use of QFILE XEDIT:
*
*  &1 &2 WHATPACK EXEC     *    provided on VMtools as part of the
*                          *    COMPRESS package
*