Description of HSX
Download count: 18 this month, 5426 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 *