Harald Denker <
[email protected]> has ported gzip 1.2.3 to MVS.
The executable is in gzip123-mvs.exe, the sources are in gzip123-mvs.zip.
MVS gzip is interoperable with other ASCII-platforms; it supports
ASCII-EBCDIC conversion.
For example, assume foo.txt is an ASCII text-file:
gzip on a PC gzip on mainframe
============ =================
foo.txt -----------> foo.gz --------------->foo.gz ------------>foo
gzip foo send as binary to host gzip -ad foo.gz
without conversion
and foo.txt <---------- foo.gz <-------------- foo.gz <----------- foo
gzip -d foo gzip -a foo
On the mainframe the meaning of the -a flag is:
- gzip: convert ebcdic to ascii before compression
- gunzip: convert ascii to ebcdic after decompression
The original filename is saved in ascii, as required by the gzip
specification.
You can use the file go_gzip to run gzip as a JES-batch Job.
There is still some work to be done on the filetype of the file
created by gzip -d.
For questions about gzip on MVS, contact Harald Denker
<
[email protected]> or <
[email protected]> directly.
The rest of this file is needed only if you intend to recompile gzip
from source.
==============================================================================
This is a small 'readme' for all those guys trying to port gzip to an IBM
mainframe running under MVS or VM/CMS and using the IBM C/370 compiler.
The first thing is to get (a little bit) familiar with your C/370.
Get the manuals "IBM C/370 User's Guide" and the "Common Programming Interface
C Reference".
Please check if your TSO-session accepts the C/370 code point mappings, that
is: do the chars (especially { } [ ] \...) typed in by TSO-edit have the same
hex-values as expected by the 'code point mappings' (App. E in the Users' Guide').
If not please use the scanner.c source provided in this folder to get the
changes done, of course accustom the source if necessary.
Contents:
- c370.h and c370.c: this is a small interface for the C/370-library providing
some Unix-like header-files, in this case there are stat.h, dirent.h (for
partitioned datasets), io.h,...
feel free to complete this stuff - and let me know what you've done.
generally replace #include-statements in sources like
#include <sys/stat> by #include "c370.h"
or something like that.
- patches: patches relative to the gzip 1.2.3 sources. It should be relatively
easy to adapt them for newer versions of gzip.
- hdcc: that's a JES-procedure for compiling C-sources. As you can see the
'scanner' is invoked. Please omit if you don't need that.
- make_gzp: that is a JES-Job containing a complete make of all sources
needed for gzip. As far as you know there is no unix-like 'make'
available for C/370... :-( But the C/370 compiler is VERY fast (cause
of the FAST hardware...) it doesn't matter if you compile the whole
stuff again (or not).
Of course you have to adapt the DSNames of this job, eg: replace my
userid (IE23218) with yours and check them very closely.
- scanner.c: that's a small C-source used for replacements for hex-values
of C-sources as I described some lines before. It is easy to adapt to
other (TSO-environments) but at least I don't hope that you'll need
this stuff
- go_gzip: you can start C370-Programs as a JES-batch Job. Please see the file
'go_gzip' for further information. And you can start C-programs as TSO
foreground applications, please enter call 'userid.loadmod(member)'
as a TSO command. see the User's guide for more info
General remarks for porting C-sources:
of course you can try to port other sources to the IBM mainframe.
Things to check are
- ASCII-EBCDIC stuff: replace char-comparisons like (ch < ' ') or
('A' <= ch && ch <= 'Z') by functions provided with <ctype.h>
like tolower(), toupper(), isprint(), isdigit(),....
that's vital!!!!
also check for constant hex-chars like \007, \012,... and replace
with \a, \n, \b,... and so on.
- check #include's: hint: make a global compiler-define #define C370
and replace #inlcude <abc.h> by
#ifndef C370
# include <abc.h>
#endif
or provide some dummy-file abc.h in the dataset containing the
system-include's like <stdio.h>
I've already ported several sources to IBM mainframes: gzip, pgp, des,
gnuchess, popeye. All work proper, but the speed now is incredible! :-)
If you have problems or more questions feel free to contact me!
<
[email protected]> daily, mails < 16KBytes, no uuencoded
<
[email protected]> daily, no limits
regards,
Harald