*******************************************************************************
*                                                                             *
*                                 B A R C O D E                               *
*                                                                             *
*         A versatile barcode generator for PCL*-based printers under         *
*                                                                             *
*           HP-UNIX*, IBM-AIX*, LINUX*, SCO-Unix*, DEC-OpenVMS* (a.o.)        *
*                                                                             *
*******************************************************************************

Program description:
====================
Many barcode applications can be found, running on Microsoft operating systems.
In most cases, these applications come with their own user interface and are
frequently not suitable for the very specific personal barcode problems.

BARCODE is based on a completely different approach and offers You an 
affordable and easy way of printig barcodes without adding any physical
components.

This shareware tool trades standard input (stdin) as printable data and scans it
for special barcode command sequences, similar to these ones, known from
Kyocera's* Prescribe* language. While this special sequence does not appear in
the input stream, data is copied to standard output (stdout) without any
modification. Once BARCODE recognizes the command sequence, an appropriate
barcode is generated and inserted into the output stream in form of PCL-commands.

For printing a barcode on UNIX platforms, just replace the original print command
with a shell script, containing a line like:

                   cat $1 | barcode <register id> | lp

Without <registration id> (see file REG_ENGL.TXT), data and text will sometimes be scrambled.


Syntax:
=======
The following command syntax will be interpreted as a barcode command:

!R! BARCODE <mode>,"<text>","<data>",<x>,<y>,<width>,<height>,<rotation>,<options>;EXIT;

with:

<mode>          Barcode style; supported values: 0 for "2 of 5 interleaved",
                                                 1 for "Code39",
                                                 2 for "Code128",
                                                 3 for "Codabar",
                                                 4 for "MSI".


"<text>"        Human readable text, that will be printed on top of or below the
                bars. Character density (CPI) will be adjusted depending on bar
                code width. BARCODE uses character set 'ISO 8859-1 Latin 1 /
                ECMA1' and style 'Courier'. If necessary, text height may be
                reduced by adding some spaces on both sides of <text>.

                Note: For some reasons, at least one character (e.g. space) must
                ===== be supplied, otherwise the command will not be recognized!

"<data>"        Data sequence to be drawn as a barcode. If necessary (mode
                dependent), <data> will be automatically zero-prefixed
                (Note: '2 of 5 interleaved' barcodes always need an even number
                of data elements, including check character).

<x>             Horizontal offset, given in mm relative to the actual cursor
                position and with respect to the upper left corner of a
                imaginary barcode bounding box (viewed in scanning direction).
                Negative values will result in left shifted, positive values
                in right shifted output.

<y>             Vertical offset, given in mm relative to the actual cursor
                position and with respect to the upper left corner of a
                imaginary barcode bounding box (viewed in scanning direction).
                Negative values will result in up shifted, positive values
                in down shifted output.

<width>         Barcode width, given in mm (viewed in scanning direction).

<height>        Barcode height, given in mm.

<rotation>      0 = Horizontally oriented barcode.
                1 = 90 degrees cunter-clockwise rotated barcode.

<options>       0 = No checksum will be generated (except Code128).
                1 = Checksum bars will be generated and printed, based on
                    barcode data. Of course, a mode specific checksum
                    algorithm will be used.
                2 = Human readable text will not be drawn above, but below the
                    bars.
                3 = 1 + 2
                4 = Human readable text is the same as barcode data
                5 = 1 + 4
                6 = 2 + 4
                7 = 1 + 2 + 4


Sample inline call sequence:
============================
This demo text will be supplied with a 2of5 barcode.
!R! BARCODE 0, "serial number", "08154711", -40, 20, 35, 15, 1,0; EXIT;
The command above will result in a vertically oriented barcode with a total width
viewed in scanning direction) of 35 mm and a bar height of 15 mm.
Starting point is 40 mm left and 20 mm on top of the first (not printed)
exclamation mark's border line.


Limitations:
============
This version of BARCODE supports barcodes '2 of 5 interleaved', 'Code39',
'Code128', 'Codabar' and "MSI".

Other codes are under construction or may be implemented quickly upon request.

The maximum number of printable characters (<data> or <text>) is 80.

You can find binary versions in the appropriately designated subdirectories,
directly transferable (e.g. by FTP) onto the following platforms:

- MS-DOS,   tested on IMB*-comp. PC under MS-DOS* V6.20 and V6.22
- LINUX,    tested on IBM*-comp. PC under Linux, Kernel V2.0
- HP-UX,    tested on HP*9000/800 G60 under HP-UX* V9.0 and V10.10
- AIX,      tested on IBM*6000 C10 under AIX* V4.1.4 and V4.2
- SCO-Unix, tested on IBM*-comp. PC under SCO-Unix* Release 3.2 Version 4.2
- OpenVMS,  tested on DEC* alpha*.

Due to the nature of BARCODE's source (ANSI C), versions for other platforms
can be easily made available by a simple 'make'. Just ask for it.


Ruediger Kerkloh


Authors address:
================
Dipl.-Ing. Ruediger Kerkloh
Gartenstrasse 39
D-59387 Ascheberg/Westf.
Germany

Phone: +49-2593-98659
Fax:   +49-2593-98704

EMail: r.kerkloh@t-online.de


*) Many of the designations used by manufacturers and retailers
to distinguish their products are claimed as trademarks. Where
these designations appear in this or other supplied documents
and the author was aware of a trademark, the designations are
marked with an asterix.
