Contents of the SMARTZIP.DOC file
SmartZIP (tm) 1.00, by Joe Vincent August, 1989
Copyright 1989, Joseph A. Vincent Consulting, all rights reserved
>>>>> What is SmartZIP?
SmartZIP 1.0 is a companion product for PKZIP 1.01, but don't delete
PKZIP 0.9x yet; SmartZIP can also take advantage of PKZIP 0.9x if that
version's "Reducing" will yield better compression for a particular
file. SmartZIP, working with PKZIP, will produce the absolutely,
positively smallest ZIP files possible.
SmartZIP is an intelligent ZIP file create/update utility which will
minimize both ZIP file size and the time required to create/update an
optimized ZIP file. It does this by using logic which will usually
yield the smallest possible ZIP file in a minimum number of trials.
SmartZIP is shareware. That means that you are encouraged to try it to
see if it meets your needs. If you decide to keep and use the program,
I ask that you register it and pay a reasonable fee ($12 per copy
Many hours of hard work have gone into producing SmartZIP and the
accompanying documentation. I developed SmartZIP out of my own need and
use it every day. I think you'll find that SmartZIP produces a savings
in disk space beyond that saved by using PKZIP alone at the expense of a
nominal amount of extra time spent in doing data compression.
SmartZIP supports wild cards for specification of the files to be
SmartZIPped and provides the options you're most likely to want.
>>>>> Why SmartZIP?
I wrote SmartZIP based on my observation that no single compression
algorithm ALWAYS yields the best compression. While one file might
compress best with Imploding, another might compress best with Shrinking
or Reducing. Therefore, it's not possible to obtain the smallest ZIP
file by selecting a single compression algorithm to use for all files to
be ZIPped. The ideal is to choose the compression algorithm file by
file, and that's what SmartZIP does for you.
You'll note, as you run SmartZIP, that SmartZIP won't use the same
compression algorithm for every file within a given ZIP file. Since
it's choosing the compression algorithm file-by-file, SmartZIP might,
for example, choose Imploding for one file, Shrinking for another and,
if you're using the "both PKZIPs" option, one of the Reducing levels
might be chosen for some other file. The result is that the best
compression algorithm is chosen for each FILE individually, not for the
COLLECTION of files on average.
Is it worth it? I think so. The following table provides statistics
for a few files for which Imploding (PKZIP 1.01's new minimize-size
algorithm) did NOT yield the best compression. The algorithm which
yielded the best compression is marked by an "*". Statistics are from
PKZIP 1.0 beta.
File Name or Type of File Imploded Shrunk Reduced (Level)
PCO.EXE (PC Outline) 62,071 61,359 * 50,341 (4)
BDEBUG.COM 3,693 4,008 * 3,463 (2)
Btrieve A 770,240 801,641 * 733,531 (1)
Btrieve B 59,518 60,347 * 58,332 (4)
Btrieve A unloaded to ASCII 353,047 * 326,676 365,606 (4)
Btrieve B unloaded to ASCII 27,844 * 27,194 30,133 (4)
ESETUP40.EXE 2,881 3,314 * 2,781 (3)
NORTON.EXE 301,781 301,781 * 298,329 (4)
ED.EXE (PC-Write) 73,118 77,332 * 64,571 (4)
WORDS.MAS (PC-Write lexicon) 87,685 93,442 * 82,973 (4)
In general, Imploding is a superior compression algorithm it yields
the best compression the majority of the time. However, there are
enough cases where it doesn't to make use of SmartZIP worthwhile.
>>>>> How does SmartZIP work?
SmartZIP ZIPs all of the files matching the file specification in the
current directory into a ZIP file using a ZIP file name specified by the
user. If the ZIP file exists, it is updated. If it doesn't exist, it
is created. If the reZIP ("/r") option is being used, the ZIP file must
For EACH of the files to be ZIPped, SmartZIP first performs PKZIP
Imploding. It then performs PKZIP Shrinking. (As an option, if you
still have PKZIP 0.9x, SmartZIP will also evaluate ZIP size using
Reducing level 4, and, if Reducing level 4 yields a smaller ZIP file
than either Imploding or Shrinking, SmartZIP will try the other three
Reducing levels, as well, searching for improved compression. If
Reducing level 4 was no better than Imploding or Shrinking, no
additional compression is attempted. [The assumption is that, if
Reducing level 4 doesn't yield better compression than Imploding or
Shrinking, it is unlikely that other Reducing levels will, either.] Use
of this option is HIGHLY recommended.) The optimum compression
algorithm isolated by this process is then used to ZIP the file into the
target ZIP file.
If the compression achieved by all of the algorithms used is the same,
then Shrinking (PKZIP 1.01's minimize-compression-time algorithm) will
be used to ZIP the file into the target ZIP file.
As SmartZIP executes, it will display several things:
- The name of the file being SmartZIPped.
- The compression algorithm being tried.
- The compression size achieved by each compression algorithm
When the optimum compression algorithm is identified, the compressed
file size achieved will be marked with an asterisk and highlighted, and
an additional message will be displayed stating that SmartZIP is
compressing the file and specifying the compression algorithm being
Note that the "compression size" displayed includes the ZIP file
overhead, so it won't match the compressed size of the individual file
exactly; it's usually high by a hundred bytes or so. Therefore, the
number displayed is only a relative size estimate suitable for the
>>>>> SmartZIP Setup
SmartZIP.EXE and PKZIP.EXE must both be in in a directory contained in
your PATH. If you wish to use the option to use both PKZIP 1.01
Imploding/Shrinking and PKZIP 0.9x Reducing (HIGHLY recommended), you
must rename PKZIP 0.9x to "PKZIP09.EXE" and place it in a directory in
your PATH, as well.
Make certain that you have ample disk space, particularly if you're
using the "/r" (reZIP) option. When reZIPping, SmartZIP first makes a
copy of the ZIP file and unZIPs it. PKZIP further requires disk space
equivalent to the final ZIP file size. Although SmartZIP has been
tested and recovers elegantly from a "disk-full" situation, it's better
to avoid such marginal conditions.
>>>>> SmartZIP Syntax
To run the program, key the following at the DOS prompt:
SMARTZIP zipname [filespec] [/B] [/D] [/M] [/O] [/R]
"zipname" = the name of the ZIP file to be created, updated or
reZIPped. If not specified, the file extension
defaults to "ZIP". If an extension is specified,
it must be "ZIP".
"filespec" = an optional pattern for specifying the files to be
SmartZIPped. Wild cards (* and ?) are supported.
The default is to SmartZIP all files (i.e., *.*).
"/B" = Use both PKZIPs. Try 1.0 Imploding/Shrinking
AND 0.9x Reducing. (The default is to try only
PKZIP 1.0 Imploding/Shrinking.) SEE NOTE BELOW.
"/D" = "Dumb" ZIPping (with "/B" only). This will force
SmartZIP to try ALL four levels of reducing for
"/M" = "Move" files to the ZIP file. The default is to
add files to the ZIP file.
"/O" = Set ZIP date to date of latest file.
"/R" = ReZIP the ZIP.
NOTE: If you wish to use the "/B" option to use both PKZIP 1.0
Imploding/Shrinking and PKZIP 0.9x Reducing (HIGHLY recommended),
you must rename PKZIP 0.9x to "PKZIP09.EXE" and place it in a
directory in your PATH.
SmartZIP has extensive logic for checking syntax and detecting errors.
If a ZIP naming error does manage to elude SmartZIP (I don't know of any
which would), PKZIP will catch the error and no harm will be done other
than watching SmartZIP "go through the motions." When SmartZIP detects
an error, a high-intensity error message will be displayed along with an
"information panel" showing correct syntax and brief help information.
NOTE: Since SmartZIP creates/updates the ZIP file "in flight", if some
error is encountered (for example, insufficient space remaining on the
disk) which forces SmartZIP termination, the ZIP file, if it exists,
will contain only those files SmartZIPped up to the point of
termination. If you're using the default ("add" to the ZIP file), you
probably won't care. However, if you're using the "/M" option ("move"
files to the ZIP file), you should be aware that the ZIP file contains
the files which have already been moved into it.
>>>>> SmartZIP Execution Time Optimization
Although I'm interested in optimum compression, I'm not interested in
infinite execution time. Although SmartZIP will usually identify the
optimum compression in two trials and never more than six, there are
some things you can do to further minimize SmartZIP execution time:
- Build the ZIP file on a RAM disk. Since SmartZIP is write-
intensive, use of a RAM disk will do more to minimize SmartZIP
execution time than any other single action you can take.
- Have a disk cache active. Since PKZIP is invoked multiple
times (and PKZIP09.EXE if you're using the "/b" option) and
each file being SmartZIPped could be read multiple times, a
large disk cache will also help.
I run SmartZIP with all temporary files residing on a RAM disk and I
also have a 512K disk cache active. This results in VERY fast runs.
>>>>> Technical Stuff
SmartZIP was written in QuickBASIC 4.5. It's not that I'm a big fan of
QuickBASIC, but it's easy to crank out prototype code in QB. If enough
SmartZIP users materialize, I'll probably convert the code to C. As
Phil's ZIP software continues to evolve, I'll keep SmartZIP updated. I
also plan to develop some additional "Smart" ZIP-related utilities for
both the DOS and OS/2 environments.
SmartZIP creates temporary files named "JVSMRTZP.xxx". If you terminate
SmartZIP inelegantly (please don't), you might have to clean up these
>>>>> Who Am I and Do I Want Money?
I'm Joe Vincent and this isn't my day job. I've put a roof over my
family's heads and food on the table for almost 30 years as a computing
professional working in large IBM mainframe installations. I consider
myself one of those fortunate people who get paid for doing what they
love to do.
Now that SmartZIP is in its third release, is reliable and appears to
enjoy some support from users, I'm less bashful about asking for some
compensation. If you find SmartZIP useful, a contribution of $12.00
would be gratefully received. I can be reached at the address at the
end of this documentation, in the Compression conference of the Exec-PC
BBS (414-964-5160) or on Phil Katz's PKWare BBS (414-352-7176).
I want to recognize the significant contribution made to the computing
field in general and data compression technology in particular by Phil
Katz, author of PKZIP, PKUNZIP, et al. SmartZIP invokes PKZIP via the
QuickBASIC "SHELL" command. If it weren't for the incredible efficiency
and speed of PKZIP, SmartZIP wouldn't perform as well as it does.
If you don't already have Phil's ZIP utilities, you can obtain them on
just about any BBS or by contacting PKWare directly at:
7545 North Port Washington Road
Glendale, WI. 53217
>>>>> DISCLAIMER OF WARRANTY
This software and documentation are distributed "as is" and without
warranties as to performance or merchantability. The author makes no
warranties whatsoever, either express or implied, with regard to this
software and other material distributed with this software and hereby
disclaims any and all implied warranties of merchantability or fitness
for a particular purpose. Because of the diversity of conditions and
hardware under which this software may be used, no warranty of fitness
for a particular purpose is offered. The user is advised to test the
software thoroughly before relying on it. The user must assume the
entire risk of using the software. In no event will the author be
liable for incidental or consequential damages, including, but not
limited to, destruction of data or damage to your equipment.
Joseph A. Vincent Consulting
805 Pine Way
Anchorage, Kentucky 40223-2361
Exec-PC BBS (414-964-5160), Compression conference
Phil Katz's PKWare BBS (414-352-7176).