Tandem Port History
===================

Hi, I'm Dave Smith and I work at BP Oil UK, looking after their European card
processing system since 1992.  We need to send lots of files via FTP to other
BP machines (Novell, NT, Sun...). Sending large files was frowned upon, so the
search for a zip product was on.

We tried the GZIP product from Twinsoft Netherlands but it was complicated to
use and it was not widely known by other arts of BP.

What we really wanted was a PKZIP compatible product, as this is a widely known
product.  By chance when surfing the web I discovered the Info-ZIP web site.
This claimed PKZIP 2.04g compatibility and had a number of ports, was free, and
even had source code, but unfortunately no Tandem version :-(

Thus in the autumn 1996 I bit the bullet and took on the job of porting the
code to Tandem NSK (Guardian).  This meant dusting off my circa 1985 'C'
programming skills and firing up the Tandem 'C' compiler - not known for its
ease of use, especially debugging 8-;  This was all on D30 by the way.

To start this off I had to choose an existing port to base te Tandem one on.
Nearest (?) was the VM-CMS/MVS port by George Petrov.  The main similarity
being that these machines are record based, and have a similarish filing system
to Guardian.

First to be tackled was ZIP.  By the end of 1996 I had a version which compiled
and ran (giving the program banner) - which seemed like a major acheivement at
the time.

In December 1996 I forwarded a version of ZIP to Info-ZIP which wor
ked only on Edit files, and had no concept of directories.  Became ZIP 2.1

By March 1997 I had improved ZIP so that it could cope with Unstructured files
as well (Became ZIP 2.2).  I also had ported a version of UNZIP which could
create Unstructured files (not Edit) - UNZIP 5.20

At the start of September 1997 I sent UNZIP with Edit file support to Info-ZIP
(incorporated into 5.32)

In March 1998 I submitted file I/O improvements (SBB) for ZIP (2.3a)

In August 1998 I added Tandem DEFINE processing for ZIP (2.3e).  This was a
feature required by BP to allow them to store files with a different internal
name than the physical file being zipped (without renaming it).
Also added storing of proper UTC timestamps which allow for DST & timezone.

Also in August I added the same file I/O improvements for UNZIP (5.33f)

I then added the ability to update the unzipped files last modified and last
open timestamps - this required help from TNSC to allow me access to the
priviliged procedure call.  Also can give the files back to the original user
by use of the '-X' flag.

At the end of 1998 I was given the go ahead to add the zipping of Enscribe
files.  This first version stores all Enscribe file attributes EXCEPT SQL, alt
key and partition information.

ZIP now uses its own Guardian I/O (rather than the 'C'library) for the reading
of files to be zipped.

Unstructured files use Large Transfer mode and READ (56K or 30K reads)
Edit files use IOEdit routines
Enscribe files use READ and SBB and add LF to the end of each record.

UNZIP has the ability to update the filecode of files restored to ther original
value (Unstructured only)


To Do ZIP
===========
1. Change I/O to use NSK/Large Transfer mode in fwrite of ZIP file itself- this
   will dramaticaly speed up updating an existing zipfile. When updating an
   existing zipfile it copies it to a temporary file currently using only SBB.
2. Add raw binary mode to allow storing of raw data in zip file - e.g. only to
   be unzipped on Tandem !  This is simplest/fastest way to provide full
   Enscribe support for Tandem platform - with no cross-platform support.
3. Add SQL support !!

To Do UNZIP
===========
1. Re-write the I/O routines to use NSK to recreate the original Enscribe file
   structure.
2. Use NSK Large Transfer mode I/O for reading/writing of ZIP file
3. Add raw binary mode to allow restoration of Tandem file from previous raw
   data ZIP (see above)
4. Add SQL support !!



Current Versions on Website
===========================

ZIP 2.3
UNZIP 5.5

As of February 17th 2002
