Thank you for trying this port of UNZIP for VM/CMS and MVS! Using under MVS: ------------------------- 1. To use the Info-ZIP's UNZIP under MVS you need: - C/370 ver 2.1 compiler or another compatible compiler supporting long names for function/variable names. 2. To compile the program under MVS do : - unzip all the files from unz54vm.zip file. They are stored as ASCII format so you have to unzip them first on PC or other system that already have UNZIP, and then upload them to the mainframe with ASCII to EBCDIC conversion. - Copy all the .C files in the PDS called USERID.UNZIP.C - Copy all the .H files in the PDS called USERID.UNZIP.H - adjust the job UNZMVSC.JOB to work on your site. Change USERID to your userid. You might need to change the CEE dataset names to match your OS/390 system. - Preallocate PDS datasets named: USERID.UNZIP.OBJ and USERID.UNZIP.LOAD - execute the job UNZMVSC to compile and link all the sources. - if everything is ok you will get an UNZIP MODULE 3. Using UNZIP - Just read the UNZIP.TXT - A few exceptions concerning MVS 3.0. There are different ways to invoke UNZIP. - allocating UNZIP.LOAD dataset to your ISPLLIB if you want to invoke UNZIP under ISPF. Then just type UNZIP ...parms... to get it work - You can also call it directly with : TSO CALL 'userid.UNZIP.LOAD(UNZIP)' '...parms...' (notice to quotes!) - You can even call it from a batch job like: //MYZIP JOB (account) //STEP1 EXEC PGM=UNZIP,PARM='-l mytestz.zip *.c' //STEPLIB DD DSN=userid.UNZIP.LOAD,DISP=SHR //SYSPRINT DD SYSOUT=* This will list all the .c files from the zip file mytestz.zip 3.1. If the ZIP file has been zipped on an ASCII based system it will be automatically translated to EBCDIC ( I hope I got all those translation tables OK :-). You can force ASCII to EBCDIC conversion with the -a flag. 3.2. The date/time of the output files is set to the current system date/time - not according the date/time in the zip file. 3.3. You can even unzip using TSO/E PIPELINES so unzip can be used as pipeline filter: 'pipe cms unzip -p test.zip george.test | count lines | cons' ( we do also a lot of pipethinking here ;-) 3.4. If you got also the ZIP program (see ZIP21VM.ZIP) you can do zipping and unzipping without translating to ASCII the ZIP also preserves the file informations (LRECL,BLKSIZE..) So when you UNZIP a file zipped with ZIP under MVS it restores the file info. There currently some problems with file with RECFM=V* I don't save the length of each record yet :-) 3.5. No wildcards are supported in the input zip name you have to give the real name (.zip is not necessary) So you CAN'T use things like: unzip -t *.zip 3.6. But you CAN use wildcards as filename selection like: unzip -t myzip *.c - OK or even unzip -t myzip *.c -x z*.c - to exclude all files matching z*.c 3.7. You can unzip to a PDS using the -d parameter, for example: unzip -dmyzip myzip *.c This will unzip all .c files that are in the zip file in a PDS directory called MYZIP.C BE AWARE that the extension of every files is being placed as last identifier on the PDS name, so if you have a file in the zipfile called 'testp.doc' and you use '-d mypds' the PDS name will become 'mypds.doc(testp)' Depending on which options IBM chose for C this week, unzip may or may not prefix output files with your userid and/or TSO prefix. To prevent this, quote the filename to -d, for example //UNZIP EXEC PGM=UNZIP, // PARM='/-a -o ''userid.zip'' -d ''hlq.test'' *' //STEPLIB DD DSN=USERID.UNZIP.LOAD,DISP=SHR //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* The above JCL converts from ASCII to EBCDIC (-a), always overwrites existing members (-o), extracts from 'userid.zip', writes to files starting with 'hlq.test', all members (*). Note the double quotes because PARM= requires single quotes. 3.8. The rules for output DCBs are a little messy. If the output file already exists (remember the -d option) then unzip uses the existing DCB and space values. If the output file does not exist and the input zip came from MVS then unzip makes its best attempt at preserving the original DCB. However there is not enough information stored in the zip file to do this correctly for all file types, some file types may be corrupted. If the output file does not exist and the input zip does not contain MVS DCB information then unzip uses RECFM=U, LRECL=32760 for binary data, RECFM=V, LRECL=133 for text. Text includes ASCII to EBCDIC conversion. As soon as the output file is created, unzip uses the same output DCB for all following members, even if the input is a mixture of text and binary. In all cases, unzip has no built in parameters for space. For a preallocated file this is not a problem. If unzip creates an output file you get a default space allocation which is site dependent. It is far better to preallocate the output files with the correct space and DCB values then use the -d option to point to those files. 3.9. All '+','_' or '-' signs are skipped from the filenames Please repport all bugs and problems to : Zip-Bugs@lists.wku.edu That's all for now. Have fun! George Petrov e-mail: c888090@nlevdpsb.snads.philips.nl tel: +31-40-781155 Philips C&P Eindhoven The Netherlands Updated by: Keith Owens