home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 5
/
ctrom5b.zip
/
ctrom5b
/
DOS
/
TEKST
/
MULTICOL
/
MULTICOL.DOC
< prev
next >
Wrap
Text File
|
1994-10-13
|
33KB
|
674 lines
MULTICOL.DOC
10/13/94
The MULTICOL.EXE program creates multi-columned listings from a text file.
Features:
* You can specify the number of columns and desired page width for the
multi-column listing
* The program can provide titles, column headers, and footers for the
reformatted listing
* MULTICOL can also add these titles, etc to single-column listings,
providing some pagination capabilities for regular text
* Can reformat for display ASCII-delimited, fixed field, and dBase input files
* Can present totals and subtotals for dBase and ASCII-delimited fields
* Can reflow text to fit within the specified page widths
* Can embed printer control characters in the resulting file
* Can remove (or add) columns within a text document
Examples:
MULTICOL is an easy way of adding header and footer information to text
documentation. For my DEMO System documentation, I maintain an initialization
file (MULTIHED.INI)--init files are described below--that includes the following
lines:
; Is used to create page headings for text documents.
/COLUMNS=1
/EJECT
/LINES=59
/TITLEC1="^N Last revised ^D Page ^B"
/TITLE2=""
/OVERWRITE
Then I create the documentation using the following command:
MULTICOL DEMOSYS.DOC DEMOSYS.REF /IMULTIHED.INI
The "^N" parameter in the title is replaced with the file name, "^D" is replaced
with today's date, and "^B" is replaced with the page number. Notice I'm not
creating a multi-column output here and am not reformatting the original text at
all except to add headers and footers.
As another example, I frequently need a sorted multi-column directory listing.
DIR /ON /W is fine in DOS but I prefer to see the filenames listed
alphabetically down the page, not across it. So I maintain an initilization
file (in C:\DIRW.INI) for my Epson printer that contains these lines:
; Is used for multicolumn DIR listings.
/COLUMNS=7
/OVERWRITE
/WIDTH=132
; This is the setup string used to set a Epson to compressed mode.
/SETUP="\015"
; Don't want to leave the printer in that mode when you leave.
/RESET="\018"
Then I create the listing using the following commands:
DIR /ON > TEMP.TXT
MULTICOL TEMP.TXT TEMP.NEW /IC:\DIRW.INI
A similar example of the above (multicolumn DIR listings) creates a multicolumn
listing with just the file name and creation date. This requires creating a
field definition file (called, say, C:\DIRW.DEF) roughly like the following:
c 12 0 12 File Name
c 11 0 0 File Size
c 8 0 8 Updated
/+=-
/-=.
/-=Serial
Note that this definition file will provide the string "File Name" as the column
header for the first column of data, skip the second (file size), provide
"Updated" for the date, and then skip the rest of the DIR output. It will also
skip any lines in the directory that don't include a dash ("-") but drop the
records containing "." or "Serial", both of which appear in the heading
information. Once the definition file is provided, you can create a
three-column listing with the following commands. (You could make it have more
columns if you wanted to specify compressed options; see the prior example)
DIR /ON > TEMP.TXT
MULTICOL TEMP.TXT TEMP.NEW /INDEF=C:\DIRW.DEF /COLUMNS=3
A sample of what a portion of the output file (TEMP.NEW) might look like:
Page 1
| |
File Name Updated | File Name Updated | File Name Updated
| |
AV BAS 01-08-94 | DEMOMAKE DOC 01-08-94 | FIXTEXT DIZ 01-07-94
AV DIZ 03-22-93 | DEMOMAKE EXE 01-30-94 | FIXTEXT DOC 01-26-94
AV DOC 01-08-94 | DEMOMAKE REF 01-08-94 | FIXTEXT EXE 01-30-94
The MULTICOL.INI file:
MULTICOL will read a MULTICOL.INI file if one is found. (You can specify a
different file name if desired.) The file is an ASCII text file that can be
created maintained by hand. The file can consist or one or more command line
parameters (only those that begin with a "/"), one statement per line.
The file can also contain comments which are blank lines or any line beginning
with:
; (semi-colon)
: (colon)
' (quote)
MULTICOL looks for the initialization file in your default subdirectory first.
It then searches for it in the subdirectory where the executable was and then
goes through your DOS path.
Passing in "/-I" or "/INULL" skips loading the MULTICOL.INI file.
CONFIGWS.EXE:
In addition to using the MULTICOL.INI file, you can permanently change some
defaults within MULTICOL.EXE by using the CONFIGWS.EXE program. CONFIGWS.EXE is
not included in the MULTICOL distribution package but previous versions can
typically be used with MULTICOL if desired. (The same CONFIGWS.EXE program can
be used to path a number of Wayne Software programs.) If CONFIGWS can't patch
the executable, it will notify you of this before altering anything.
CONFIGWS.EXE allows you to set the following defaults:
If bad data: /SKIP, /MISSING, or /ABORT
Noise: /BEEP or /-BEEP
Output exists: /OVERASK, /OVERWRITE, /-OVERWRITE
When setting options, the program will process defaults in the following order:
(1) CONFIGWS.EXE-settable settings
(2) MULTICOL.INI settings
(3) command-line settings
The *last* settings encountered win.
Field definition file:
NOTE: THE FOLLOWING DISCUSSION DOES NOT APPLY TO BASIC TEXT FILES. IF YOU JUST
WANT TO ADD HEADERS AND SUCH TO STANDARD TEXT STUFF, SKIP THIS SECTION. IT IS
APPLICABLE ONLY FOR FIELDED DATA FILES.
For data files (ASCII-delimited, dBase, and fixed field input files), you can
use MULTICOL to present a reasonably formatted listing of variables. Unless you
are reading a dBase file, this program requires a field definition file to
figure out the characteristics for each field and also to set certain file
characteristics. If you're processing an ASCII-delimited input file, the
routine can try to create a field definition file for you if desired.
The definition file can be created with any text editor. The definition file
consists of several records with the following fields separated by spaces.
Except for the record type indicator (which must begin in column 1), all other
fields can be placed in any columns:
(1) record type (see below)
(2) length of field on input
(3) number of decimal places for numeric data (if you don't know,
put a "?" here; for non-numeric data, a "0" is fine) on output
(4) length of field on output
Any characters after the field length are treated as comment fields. You would
typically use this to enter the field name or column position or any other
information of use to you.
The data record types accepted by this routine are as follows:
type C = character data
N = numeric
L = logical (T or F)
D = date (in yyyymmdd format)
The data fields should be in the order the fields are found in the source file.
You may also specify up to 10 include filters and up to 10 exclude filters in
the field definition file. If an include filter is specified, the input record
must contain at least one of the specified character strings in order to be
processed. If an exclude filter is specified, any input record which contains
any of the specified character strings will be ignored. Filters are case
sensitive (capitalization matters) and processed as "or" items (if any filter is
met, the condition is met; filters are not combined to determine fulfillment).
The filters are specified in the field definition file in the following ways:
/+=string include filter, the string "string" can appear anywhere
/S+=string include filter, the string "string" is at the beginning
of the record
/+S=string include filter, the string "string" is at the end of the
record
/-=string exclude filter, the string "string" can appear anywhere
/S-=string exclude filter, the string "string" is at the beginning
of the record
/-S=string exclude filter, the string "string" is at the end of the
record
For example, if you want to specify in your control file that you only want
records that contain either "Japan" or "France" *and* you want to exclude any
records that begin with an underscore character, you would need to include the
following three filter statements:
/+=Japan
/+=France
/S-=_
The character string can include hexadecimal codes (in the &Hxx format) or
decimal codes (in the \ddd format) if necessary.
Note that for fixed field files, you have to account for every byte in the file.
If you have something like this:
12345678_1_2345678_2_2345678_3 (column positions)
APPLE X Y 12 BANANAS
Even though you may think you only have five fields, the following .DEF file
will NOT work:
; Bad .DEF file: Note does not account for blank spaces
C 8 0 8 Fruit1
C 1 0 1 Class1
C 1 0 1 Class2
N 5 0 5 Value
C 11 0 11 Fruit2
You may want the Fruit1 field to be in columns 1 through 8 and Class1 to be in
column 10 but the routine will not know to skip column 9 so it will start
reading Class1 beginning in column 9, Class2 beginning in column 10, etc. To
drop the blank positions, you have to add dummy fields on input and ask for them
to be dropped on output:
; Good .DEF file: Spaces between fields are accounted for
C 8 0 8 Fruit1
C 1 0 0 Filler
C 1 0 1 Class1
C 1 0 0 Filler
C 1 0 1 Class2
C 1 0 0 Filler
N 5 0 5 Value
C 1 0 0 Filler
C 11 0 11 Fruit2
You can also use the input field length and output field lengths to either drop
fields using other formats (by specifying a zero length for the output field
length) or for creating fields on output (by specifying a zero length for the
input field length). You can also use this to expand on contract a field. For
example, if Fruit1 is 8 characters long but you only want it to occupy 4
characters on output (thus the field would be truncated), specify 8 for the
input field length and 4 for the output field length.
For dBase files, a deffile will automatically be created for you unless you
specify /-OUTDEF. In that case, the routine will read the deffile and act
appropriately. This is necessary if you want fields expanded or ignored.
You can also use the /PRINT specification to select which fields you want
printed.
For adding headers and footers to regular text files, make sure you specify
/COLUMNS=1. The system starts a new page when it runs into lines with page
eject characters or when it hits the number of lines specified in the /LINES=n
parameter. (The page eject part is only true if /-WRAP is in effect.)
Syntax:
MULTICOL infile outfile [ /OVERWRITE | /-OVERWRITE | /OVERASK ]
[ /DELIM="string" ] [ /LINES=n ] [ /WIDTH=n ] [ /EJECT | /-EJECT ]
[ /COLUMNS=n ] [ /-WRAP | /WRAP [ /INDENT=n ] | /REFLOW ]
[ /Iinitfile | /-I ] [ /SETUP="string" ] [ /RESET="string" ]
[ /{ TITLE | HEADER | FOOTER }[ R | C | L ][ 1 to 5]="text" ]
[ /{ TITLE | HEADER | FOOTER }{ T | B }="string" ]
[ /-TITLE ] [ /FROM FIXED | /FROM ASCII | /FROM DBF ] [ /DELETED ]
[ /INDEF=deffile | /-INDEF ] [ /OUTDEF=deffile | /-OUTDEF ]
[ /DELIMS=aroundstrings,aroundnums,betweenfields ] [ /BEEP | /-BEEP ]
[ /SKIP | /MISSING | /ABORT ] [ /GAP=n ] [ /BLANKS | /-BLANKS ] [ /TALLY ]
[ /INMISS=val ] [ /INMISSC=val ] [ /OUTMISS=val ] [ /OUTMISSC=val ]
[ /SUM={ col_spec | var_spec } ] [ /BREAK={ col_spec | var_spec } ]
[ /PRINT={ col_spec | var_spec } ] [ /? | /?&H ]
where:
"infile" is the name of the ASCII text file that you want reformatted into a
multicolumn file.
"outfile" is the name of the ASCII text file that you want to create. "infile"
and "outfile" cannot be the same. While "outfile" is typically a file name, you
can specify devices like "PRN:" or "SCRN:" if you want to.
"/OVERWRITE" says to write over the outfile if it already exists.
"/-OVERWRITE" says to abort if the outfile exists already.
"/OVERASK" says to prompt if the outfile exists already. This is normally the
default but you can override this using the CONFIGWS.EXE program.
"/DELIM="string"" indicates the character string that should be used to separate
columns. Note that the string itself must appear within quotation marks. By
default, the string is " | ".
"/LINES=n" indicates how many physical lines can fit on your printed page. This
setting is used for determining where headers, footers, page eject characters
(with /EJECT option), and number of lines per column for multi-column output.
(It's not used in cases where you're using /COLUMNS=1, none of the other stuff,
and you've specified /-TITLE to turn off the default title line.) You
can also set it to /LINES=0 to turn off page breaks; only the first
title (if any) will print in that case. Defaults to /LINES=60.
"/WIDTH=n" indicates how many physical characters can fit on your printed page.
Defaults to /WIDTH=80. Typically, if you are in compressed mode, the value is
/WIDTH=132.
"/EJECT" says to add a page eject after the maximum lines-per-page (/LINES=n)
setting. This is not recommended if you're using a printer with a defined page
size that is the the same or smaller than the /LINES=n setting. If you're using
something like a LaserJet, setting /EJECT will typically result in blank pages
being generated after each full page. The default is "/-EJECT".
"/-EJECT" is the opposite of "/EJECT". This is the default.
"/COLUMNS=n" indicates how many text columns you want to appear. The value can
be as low as one (useful if you're just doing reformatting of paragraphs).
There's no maximum value but anything above 7 or so starts looking worthless.
The default value is /COLUMNS=2.
The combination of the /COLUMNS=n, /DELIM="string", and /WIDTH=n tells the
program how wide each physical column is. For example, using the defaults of
/COLUMNS=2, /DELIM=" | ", and /WIDTH=80, each text column is a maximum of 38
characters. (Width - (Size of Delimiter * (Number of columns - 1), all divided
by 2. INT((80-(3*1))/2) is 38.) The routine tells you what column size it
picked; if you don't like the result, adjust some of your other parameters and
try it again.
"/-WRAP", "/WRAP", and "/REFLOW" tells the program what you want it to do with
text that exceeds the width of each physical column. The default is /-WRAP.
Each is explained separately below:
"/-WRAP" indicates that long lines are to be truncated and the excess characters
are lost. This is the default.
"/WRAP" says the line is to be parsed into words and any word(s) that doesn't
fit on the original line spills over on successive line(s). The spillover lines
are indented by the value of "/INDENT=n". By default, the secondary lines are
indented by 2 spaces ("/INDENT=2").
"/INDENT=n"--see /WRAP above.
"/REFLOW" is the most sophisticated of the options. /REFLOW will treat most of
the text as paragraphs are readjust the length of the entire paragraph. The
reflowing stops whenever a new paragraph is detected. The routine considers a
new paragraph to start whenever the succeeding line is either blank or it starts
with a space. Unlike with the other options, you can actually end up with fewer
lines in your output file than you had in your input file using /REFLOW. This
only happens of course if the source lines were generally shorter than the
computer text column width.
"/Iinitfile" says to read an initialization file with the file name "initfile".
The file specification *must* contain a period. If no drive or path information
is specified, the program will search for initfile beginning in your default
subdirectory and then going throughout your DOS path. The use of an
initialization file is optional. Initially defaults to "/IMULTICOL.INI".
"/-I" (or "/INULL") says to skip loading the initialization file.
"/SETUP="string"" specifies the initialization string to put at the beginning of
the file. This is typically used to make sure your printer has the proper
orientation (landscape vs portrait), characters per inch (cpi), and lines per
inch (lpi) settings before printing. The setup string itself must appear in
quotation marks. Use "\027" for the Escape character and any other ASCII code
can be entered with "\" followed by its 3-digit value (e.g. "\032" is a space).
You can also use hexadecimal values as &Hxx. See the character table at the end
of this documentation. You have to know your own setup strings. Borland's
documentation provides some very useful tables for this sort of thing (use "\"
instead of "/" though). For an HP LaserJet, the setups I use all of the time
are:
Orientation PageLen RMargin String
Portrait 60 80 \027E
Portrait 60 132 \027(s16.66H
Landscape 45 106 \027&l10
Landscape 45 176 \027&l10\027(s16.66H
Landscape 66 106 \027&l1o5.45C
Landscape 66 176 \027&l1o5.45C\027(s16.66H
"/RESET="string"" specifies the string to send after your file is done. This
typically resets the printer to its system default setting so you won't get
stuck in landscape mode forever. The setup string itself must appear in
quotation marks. Use "\027" for the Escape character. For an HP LaserJet, the
following resets the printer to its factory settings:
\027E
"/{ TITLE | HEADER | FOOTER } [ R | C | L ] [ 1 to 5 ]="text"" allows you to
specify up to 5 lines each for the report's TITLE (at the top of each page),
HEADER (at the top of each column), and FOOTER (at the bottom of each page).
You can specify positioning as well:
R = right-justify the text
C = center the text (this is the default for /TITLE and /HEADER)
L = left-justify the text (this is the default for /FOOTER)
If no line number is specified, line 1 is presumed. If a line number is
specified, all lines before that number are presumed to contain something and
will be blank filled if you don't provide anything. If, for example, you
specify "/TITLER3="Hi!"", without specifying any other titles, then you'll get
blank lines for /TITLE1 and /TITLE2, but you won't get any /TITLE4 or /TITLE5.
The text itself can contain one of six embedded string-replacement codes:
^B will be replaced by the page number
^D will be replaced by today's date (in mm/dd/yy form)
^T will be replaced by today's time (in hh:mm form)
^N will be replaced by the input file's name
^A will be replaced by the input file's creation date (mm/dd/yy form)
^I will be replaced by the input file's creation time (hh:mm form)
The only title, header, or footer provided by default is /TITLE1="Page ^B". If
you don't want to replace the title with something else, the only way to turn it
off entirely is to use the /-TITLE option (below).
"/{TITLE | HEADER | FOOTER }{ T | B }="string"" allows you to specify a
repeating string to be placed either on top of or on the bottom of your titles,
headers, and footers. The string, typically consisting of just a few
characters, is repeated by the routine until it fills up the available space.
For example, "/TITLET=" -"" would add the following line at the top of the
report:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This option is typically used to (a) insure that there are blank lines before
footer lines and (b) to have demarcations between sections.
"/-TITLE" says to turn off all titles including the default one (/TITLE="Page
^B"). Note that any /TITLE specifications used after /-TITLE will still appear.
"/FROM FIXED" says that the input file is a fixed field file. Any file can be
fixed field: a page of text is typically a fixed field of 80 characters. All
standard text files are fixed-field. The default for MULTICOL is /FROM FIXED.
Note that if you want, you can specify a field definition file for fixed field
files. See the examples given in the beginning.
"/FROM ASCII" says that the input file is ASCII-delimited (typically with quotes
around strings and commas between fields--MULTICOL treats the quotes as
optional). Typically, the routine expects an input field-definition file
(/INDEF=deffile) to be specified with the definition of fields. The routine
will determine a field definition file for you if the /-INDEF parameter is
specified.
"/FROM DBF" specifies that the input file is a dBase file. If the file
extension is .DBF, the routine will presume this. The routine uses dBase's
default field lengths unless /-INDEF is specified.
"/DELETED" applies for dBase input files only. It says you want to retain
deleted records. Otherwise, they're dropped in the output file.
"/INDEF=deffile" provides the name of the field definition file to be read by
the program. If no deffile is specifically provided and you're using FROM
ASCII, the routine will presume the field definition file exists and is named
the same thing as the infile but it has the extension of ".DEF". A deffile has
to be specifically provided for FROM FIXED files if one is desired.
"/-INDEF" says there is no field definition file. This is the default if you're
using FROM DBF or FROM FIXED.
"/OUTDEF=deffile" provides the name of the output file that you want the program
to write the field-definition file to. This is useful in cases where you did
*not* use a field-definition file on input since it allows you to see and
possibly modify the field-definition file for next time. If no deffile is
provided and you're using FROM DBF, the routine will presume the
field-definition file is named the same thing as the infile but it has an
extension of ".DEF".
"/-OUTDEF" says to skip the creation of the field-definition file. This is the
default for ASCII-delimited and fixed-field files.
"/DELIMS=aroundstrings,aroundnums,betweenfields" allows you to specify the
delimiters (in sequence) around string fields, around numeric fields, and
between fields. Defaults to:
/DELIMS=",,,
(Use quotes around character strings, nothing around numeric data, and the third
comma indicates that there is a comma between fields.) The replacement string
can include hexadecimal codes (in the &Hxx format) or decimal codes (in the \ddd
format) if necessary so either of the following would put a tab between fields:
/DELIMS=",,&H09
/DELIMS=",,\009
See the table of hexadecimal and decimal codes at the end of this documentation.
"/BEEP" beeps when the program is finished.
"/-BEEP" reverses /BEEP. This is normally the default but you can override this
using the CONFIGWS.EXE program.
"/SKIP" says to skip ASCII-delimited records with bad data values; otherwise the
routine aborts when it runs into any. /SKIP, /MISSING, and /ABORT are mutually
exclusive.
"/MISSING" says to presume any missing fields in an ASCII-delimited record
should be filled in with blanks (for character fields) and 0 for numeric fields.
Incomplete records are written out (unlike in /SKIP). /SKIP, /MISSING, and
/ABORT are mutually exclusive.
"/ABORT" says to abort when you run into bad records. This is normally the
default but you can override this using the CONFIGWS.EXE program. /SKIP,
/MISSING, and /ABORT are mutually exclusive.
"/GAP=n" is used when printing ASCII-delimited or dBase files. It tells the
program how many spaces to print between each variable. The default is /GAP=2.
"/BLANKS" says to retain any blank lines found in the input file when writing
out the file. This is initially the default.
"/-BLANKS" removes the blank lines.
"/TALLY" says to present a count of items. If a /BREAK specification is
provided, there will be a tally for each break as well as for the grand total.
"/INMISS=val" specifies that any numeric value that has the character string
representation of "val" will be considered missing. Note that this is an exact
character string comparison so /INMISS=1 will not compare to a value of "1.00".
Defaults to /INMISS=NULL (which translates as spaces).
"/INMISSC=val" specifies that any character string value that has the value of
"val" will be considered missing. Defaults to /INMISSC=NULL (which translates
as spaces).
"/OUTMISS=val" specifies that any missing numeric input value will be translated
on output as "val". For example, "/OUTMISS=N.A." would fill in "N.A." for each
missing value. Defaults to /OUTMISS=NULL (which translates as spaces).
"/OUTMISSC=val" specifies that any missing character input value will be
translated on output as "val". Defaults to /OUTMISSC=NULL (which translates as
spaces).
"/SUM={ col_spec | var_spec }" says to summarize (add) all values in particular
columns. If ASCII-delimited or dBase input is used, you can specify variables
to be added. If a /BREAK specification is provided, there will be subtotals at
each break as well as grand total.
The "col_spec | var_spec" portion expands to "{ Cx[-x] | Vx[-x] } [, {Cx[-x] |
Vx[-x] } ]..." where "x" is the column or variable number, "-" indicates a
range, and "C" means column whereas "V" means variable. If you have an
ASCII-delimited file and you want the values of the first three variables
summarized, you'd say "/SUM=C1-3". If you want variables 2, and 4 through 6
summarized, you'd say "/SUM=C2,C4-6". If you want the values in columns 10
through 20 summarized, you'd say "/SUM=C10-20". Note that for column
specifications, you have to request the output columns, not input columns.
"/BREAK={ col_spec | var_spec }" says to present tally, total, or blank lines
based on the values in certain columns or variables. For example, if you had an
alphabetical listing and you wanted to, you could break up the listing by the
first letter of the last name. A break is generated whenever there is a change
in any character in the column or variable range specified. The
"col_spec | var_spec" specification is identical to the /SUM specification.
"/PRINT={ col_spec | var_spec }" says to print only some of the fields. For
example, if you have a dBase file with 10 variables and you only want some of
them to print out, you can say "/PRINT=V1-3,V6,V8" or something like that. Note
that the /PRINT specification works in conjunction with any 0-length output
specifications in the deffile.
"/?" or "/HELP" or "HELP" shows you the syntax for the command.
"/?&H" gives you a hexadecimal and decimal conversion table.
Return codes:
MULTICOL returns the following ERRORLEVEL codes:
0 = no problems
254 = problems with format of file
255 = syntax problems, or /? requested
Author:
This program was written by Bruce Guthrie of Wayne Software. It is free for use
and redistribution provided relevant documentation is kept with the program, no
changes are made to the program or documentation, and it is not bundled with
commercial programs or charged for separately. People who need to bundle it in
for-sale packages must pay a $50 registration fee to "Wayne Software" at the
following address.
Additional information about this and other Wayne Software programs can be found
in the file BRUCEymm.DOC which should be included in the original ZIP file.
("ymm" is replaced by the last digit of the year and the two digit month of the
release. BRUCE312.DOC came out in December 1993. This same naming convention
is used in naming the ZIP file that this program was included in.) Comments and
suggestions can also be sent to:
Bruce Guthrie
Wayne Software
113 Sheffield St.
Silver Spring, MD 20910
fax: (301) 588-8986
See BRUCEymm.DOC file for additional contact information.
Foreign users: Please provide an Internet e-mail address in all correspondence.
Decimal and hexadecimal codes:
e.g. "\066\097\116" and "&H426174" both are "Bat"
+---------------------------------------------------------------------------
| dec hex chr | dec hex chr | dec hex chr | dec hex chr | dec hex chr |
+--------------+--------------+--------------+--------------+--------------+
| \000 &H00 nul| \052 &H34 4 | \104 &H68 h | \156 &H9C £ | \208 &HD0 ╨ |
| \001 &H01 | \053 &H35 5 | \105 &H69 i | \157 &H9D ¥ | \209 &HD1 ╤ |
| \002 &H02 | \054 &H36 6 | \106 &H6A j | \158 &H9E ₧ | \210 &HD2 ╥ |
| \003 &H03 | \055 &H37 7 | \107 &H6B k | \159 &H9F ƒ | \211 &HD3 ╙ |
| \004 &H04 | \056 &H38 8 | \108 &H6C l | \160 &HA0 á | \212 &HD4 ╘ |
| \005 &H05 | \057 &H39 9 | \109 &H6D m | \161 &HA1 í | \213 &HD5 ╒ |
| \006 &H06 | \058 &H3A : | \110 &H6E n | \162 &HA2 ó | \214 &HD6 ╓ |
| \007 &H07 bel| \059 &H3B ; | \111 &H6F o | \163 &HA3 ú | \215 &HD7 ╫ |
| \008 &H08 bs | \060 &H3C < | \112 &H70 p | \164 &HA4 ñ | \216 &HD8 ╪ |
| \009 &H09 tab| \061 &H3D = | \113 &H71 q | \165 &HA5 Ñ | \217 &HD9 ┘ |
| \010 &H0A lf | \062 &H3E > | \114 &H72 r | \166 &HA6 ª | \218 &HDA ┌ |
| \011 &H0B vt | \063 &H3F ? | \115 &H73 s | \167 &HA7 º | \219 &HDB █ |
| \012 &H0C pg | \064 &H40 @ | \116 &H74 t | \168 &HA8 ¿ | \220 &HDC ▄ |
| \013 &H0D cr | \065 &H41 A | \117 &H75 u | \169 &HA9 ⌐ | \221 &HDD ▌ |
| \014 &H0E | \066 &H42 B | \118 &H76 v | \170 &HAA ¬ | \222 &HDE ▐ |
| \015 &H0F | \067 &H43 C | \119 &H77 w | \171 &HAB ½ | \223 &HDF ▀ |
| \016 &H10 | \068 &H44 D | \120 &H78 x | \172 &HAC ¼ | \224 &HE0 α |
| \017 &H11 | \069 &H45 E | \121 &H79 y | \173 &HAD ¡ | \225 &HE1 ß |
| \018 &H12 | \070 &H46 F | \122 &H7A z | \174 &HAE « | \226 &HE2 Γ |
| \019 &H13 | \071 &H47 G | \123 &H7B { | \175 &HAF » | \227 &HE3 π |
| \020 &H14 | \072 &H48 H | \124 &H7C | | \176 &HB0 ░ | \228 &HE4 Σ |
| \021 &H15 | \073 &H49 I | \125 &H7D } | \177 &HB1 ▒ | \229 &HE5 σ |
| \022 &H16 | \074 &H4A J | \126 &H7E ~ | \178 &HB2 ▓ | \230 &HE6 µ |
| \023 &H17 | \075 &H4B K | \127 &H7F | \179 &HB3 │ | \231 &HE7 τ |
| \024 &H18 | \076 &H4C L | \128 &H80 Ç | \180 &HB4 ┤ | \232 &HE8 Φ |
| \025 &H19 | \077 &H4D M | \129 &H81 ü | \181 &HB5 ╡ | \233 &HE9 Θ |
| \026 &H1A eof| \078 &H4E N | \130 &H82 é | \182 &HB6 ╢ | \234 &HEA Ω |
| \027 &H1B esc| \079 &H4F O | \131 &H83 â | \183 &HB7 ╖ | \235 &HEB δ |
| \028 &H1C | \080 &H50 P | \132 &H84 ä | \184 &HB8 ╕ | \236 &HEC ∞ |
| \029 &H1D ???| \081 &H51 Q | \133 &H85 à | \185 &HB9 ╣ | \237 &HED φ |
| \030 &H1E ???| \082 &H52 R | \134 &H86 å | \186 &HBA ║ | \238 &HEE ε |
| \031 &H1F ???| \083 &H53 S | \135 &H87 ç | \187 &HBB ╗ | \239 &HEF ∩ |
| \032 &H20 | \084 &H54 T | \136 &H88 ê | \188 &HBC ╝ | \240 &HF0 ≡ |
| \033 &H21 ! | \085 &H55 U | \137 &H89 ë | \189 &HBD ╜ | \241 &HF1 ± |
| \034 &H22 " | \086 &H56 V | \138 &H8A è | \190 &HBE ╛ | \242 &HF2 ≥ |
| \035 &H23 # | \087 &H57 W | \139 &H8B ï | \191 &HBF ┐ | \243 &HF3 ≤ |
| \036 &H24 $ | \088 &H58 X | \140 &H8C î | \192 &HC0 └ | \244 &HF4 ⌠ |
| \037 &H25 % | \089 &H59 Y | \141 &H8D ì | \193 &HC1 ┴ | \245 &HF5 ⌡ |
| \038 &H26 & | \090 &H5A Z | \142 &H8E Ä | \194 &HC2 ┬ | \246 &HF6 ÷ |
| \039 &H27 ' | \091 &H5B [ | \143 &H8F Å | \195 &HC3 ├ | \247 &HF7 ≈ |
| \040 &H28 ( | \092 &H5C \ | \144 &H90 É | \196 &HC4 ─ | \248 &HF8 ° |
| \041 &H29 ) | \093 &H5D ] | \145 &H91 æ | \197 &HC5 ┼ | \249 &HF9 ∙ |
| \042 &H2A * | \094 &H5E ^ | \146 &H92 Æ | \198 &HC6 ╞ | \250 &HFA · |
| \043 &H2B + | \095 &H5F _ | \147 &H93 ô | \199 &HC7 ╟ | \251 &HFB √ |
| \044 &H2C , | \096 &H60 ` | \148 &H94 ö | \200 &HC8 ╚ | \252 &HFC ⁿ |
| \045 &H2D - | \097 &H61 a | \149 &H95 ò | \201 &HC9 ╔ | \253 &HFD ² |
| \046 &H2E . | \098 &H62 b | \150 &H96 û | \202 &HCA ╩ | \254 &HFE ■ |
| \047 &H2F / | \099 &H63 c | \151 &H97 ù | \203 &HCB ╦ | \255 &HFF |
| \048 &H30 0 | \100 &H64 d | \152 &H98 ÿ | \204 &HCC ╠ | |
| \049 &H31 1 | \101 &H65 e | \153 &H99 Ö | \205 &HCD ═ | |
| \050 &H32 2 | \102 &H66 f | \154 &H9A Ü | \206 &HCE ╬ | |
| \051 &H33 3 | \103 &H67 g | \155 &H9B ¢ | \207 &HCF ╧ | |
+--------------+--------------+--------------+--------------+--------------+