PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #1477)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “QIP 1 OF 4 (ALSO 1478, 1479, 1480)”

QIP is first and foremost a wordprocessor.  If you are accustomed to
using wordprocessors and text editors, you will find all the commands
found in a good wordprocessor, such as marking and copying blocks,
search and replace, etc.  A few more pleasant surprises lie in wait for
you in the form of features such as effects. Effects gives you easy and
flexible control of both display colors and printout fonts.

QIP is also a table processor.  Create tables, graphs or lists, large
and small, anywhere in your document.  These tables, graphs, or lists
are managed along with your text to help you produce attractive reports,
or to create large databases.  More than that, QIP provides many
powerful table processing functions, ranging from the simple extract and
sort commands, to the enormously versatile update and calculation
commands.

When you first start to use QIP, you'll probably view it as a
wordprocessor, and experiment with its on-screen formatting, line
drawing, color-processing, on-line help system, and printer control
capabilities. As you start to work with tables, adding simple lists or
charts to your reports, you'll see how all your data can be smoothly
collated and updated.  Before very long, you'll be using the more
powerful table processing features to generate sales summaries,
prepare work schedules, create form letters, or update stock lists.
Ultimately, QIP may become your best tool for the most critical task
of all -- turning volumes of raw data into that essential element of
modern life -- useful information.
File Descriptions:

First Disk:

MANUAL   TXT  Full documentation.
QSETUP   TXT  Setup information.

Second Disk:

QIP      ZIP  Main program in an archived format.

Third Disk:

PRINTERS TXT  Listing of printers supported by QIP.
QPROG    V01  Contains QPL programs and macros.
QPRTDEFS V01  Contains printer definitions.
TEMPLATE      Function key template.

Fourth Disk:

PKUNZIP  EXE  Unarchiving utility.
QSYSTEM  V01  Contains system.
SUPPORT       Support information.

FILE1477.TXT

Disk No: 1477
Disk Title: QIP #1 (1478-1479-1480)
PC-SIG Version: 1.1

Program Title: QIP - The Quick Information Processor
Author Version: 1.1
Author Registration: None stated.
Special Requirements: 500K free memory, hard disk drive.  286 or faster

QIP is first and foremost a wordprocessor.  If you are accustomed to
using wordprocessors and text editors, you will find all the commands
found in a good wordprocessor, such as marking and copying blocks,
search and replace, etc.  A few more pleasant surprises lie in wait for
you in the form of features such as effects. Effects gives you easy and
flexible control of both display colors and printout fonts.

QIP is also a table processor.  Create tables, graphs or lists, large
and small, anywhere in your document.  These tables, graphs, or lists
are managed along with your text to help you produce attractive reports,
or to create large databases.  More than that, QIP provides many
powerful table processing functions, ranging from the simple extract and
sort commands, to the enormously versatile update and calculation
commands.

When you first start to use QIP, you'll probably view it as a
wordprocessor, and experiment with its on-screen formatting, line
drawing, color-processing, on-line help system, and printer control
capabilities. As you start to work with tables, adding simple lists or
charts to your reports, you'll see how all your data can be smoothly
collated and updated.  Before very long, you'll be using the more
powerful table processing features to generate sales summaries,
prepare work schedules, create form letters, or update stock lists.
Ultimately, QIP may become your best tool for the most critical task
of all -- turning volumes of raw data into that essential element of
modern life -- useful information.
File Descriptions:

First Disk:

MANUAL   TXT  Full documentation.
QSETUP   TXT  Setup information.

Second Disk:

QIP      ZIP  Main program in an archived format.

Third Disk:

PRINTERS TXT  Listing of printers supported by QIP.
QPROG    V01  Contains QPL programs and macros.
QPRTDEFS V01  Contains printer definitions.
TEMPLATE      Function key template.

Fourth Disk:

PKUNZIP  EXE  Unarchiving utility.
QSYSTEM  V01  Contains system.
SUPPORT       Support information.

PC-SIG
1030D East Duane Avenue
Sunnyvale  Ca. 94086
(408) 730-9291
(c) Copyright 1988,89 PC-SIG, Inc.


GO.TXT


       ╔═══════════════════════════════════════════════════════╗
       ║              >>>> Disk #1477  QIP <<<<                ║
       ╟───────────────────────────────────────────────────────╢
       ║                                                       ║
       ║       To install program to hard drive type:          ║
       ║                    INSTALL C                          ║
       ║                                                       ║
       ║          To print out documentation type:             ║
       ║               COPY MANUAL.TXT PRN                     ║
       ║                                                       ║
       ╚═══════════════════════════════════════════════════════╝

MANUAL.TXT

  



                   T A B L E  O F   C O N T E N T S


1.0  Introduction
-----------------
    1.1  How to use this manual ..................................   1
    1.2  The QIP Information Processor ...........................   2
    1.3  Getting Started .........................................   3
    1.3  Loading Files  ..........................................   3
    1.3  Getting Help ............................................   4

2.0  Overview of QIP Concepts
-----------------------------
    2.1  The QIP Screen ..........................................   6
    2.2  System Windows ..........................................   6
    2.3  Keyboard handling, Function keys and Editing.............  10
    2.4  Mouse Handling ..........................................  18
    2.5  QIP Files ...............................................  19
    2.6  Text and Table Modes ....................................  20
    2.7  QIP Buffers .............................................  21
    2.8  Specifying Data Positions and Ranges ....................  22
    2.9  QIP Expressions .........................................  25

3.0  Command Descriptions
-------------------------
    3.1  Access Menu .............................................  27
    3.2  Block Menu ..............................................  32
    3.3  Column Menu .............................................  34
    3.4  Effects Menu ............................................  38
    3.5  File Menu ...............................................  40
    3.6  Layout Menu .............................................  44
    3.7  Output Menu .............................................  47
    3.8  Process Menu ............................................  54
    3.9  Row Menu ................................................  58
    3.10 Search Menu .............................................  61
    3.11 Table Menu ..............................................  64

Appendices
----------
    QPL and Macro programming ....................................  68
    Built-in Functions and System Variables ......................  85
    Error Codes and Messages .....................................  94
    QSETUP Utility ...............................................  98
    QIP sizes and Limits ......................................... 107

Index ............................................................ 
  
                              Page --1-- 
 
                       1. I N T R O D U C T I O N


1.1  HOW TO USE THIS MANUAL 
---------------------------
If you have not yet printed this manual, please TYPE or PRINT the file called 
README for information on how to do so.  You may prefer to browse through the
MANUAL.QIP file before printing anything, in which case simply press <PgDn> 
when you have read each screen of text (this assumes that you are already 
looking at this file from within QIP).  When you have finished, exit QIP using
<Alt>F (File) followed by Q (Quit) followed by N (No, don't save changes).

The QIP Reference Manual is organized into four sections, plus an index and 
several appendices.  Before you start using QIP, we strongly recommend that 
you read the Introduction and Overview (sections 1 and 2).  These will give 
you a general idea of just what QIP is, how it organizes and manages your 
data, and how to use it.

Section 3 is an alphabetically-ordered description of all the menus in QIP.
You should skim this section initially, then dip into it whenever you need 
more information concerning a particular menu or menu option.

Section 4 is devoted to the QIP Programming Language (QPL).  Those who wish to
program (or automate) their own text- and data-processing applications will 
probably make heavy use of this section.  However, many people will not need 
to refer to Section 4 at all.

Of the appendices, those covering the QSETUP utility and Calculation functions
are likely to be of the greatest immediate use.  Also in the appendices are 
details of how to get support, and Feedback forms so you can send us your 
suggestions for improving QIP.  We strongly encourage you to use these forms 
to let us know of any problems, limitations or discrepancies you find, whether
in this manual or in QIP itself.

QIP has a 'context-sensitive' cross-referenced HELP system, available at any 
time by pressing the <F1> key.  This means that, in practice, you may not need
to refer to the manual very much at all.  However, we still think you will 
pick up QIP more quickly if you begin by reading Sections 1 and 2 as suggested
above.

We thank you for taking an interest in QIP, and wish you every success in 
applying it to your daily needs.

Overseas Development Group,
SORD Computer Corporation.

Administrative Notes
--------------------
The contents of this manual may change without prior notice.

SORD Computer Corporation assumes no responsibility for any consequences
which may arise from the use of QIP or this manual, or for any errors it 
may contain.

QIP is a trademark of SORD Computer Corporation.
  
                              Page --2-- 
 
1.2  QIP  (INFORMATION PROCESSOR)
---------------------------------
Before you launch into the Overview in Section 2, it will help to get an idea
of what QIP was designed to do, and how to get the most out of it your 
purposes.

QIP is first and foremost a Text Processor.  If you are accustomed to using 
Word Processors and Text Editors already, you will find it easy to use QIP for
the same kind of tasks.  A few pleasant surprises lie in wait for you in the 
form of features such as Effects, which give you easy and flexible control of
both display colors and printout fonts.

QIP is also a Table Processor.  This means it allows you to create tables, 
graphs or lists, both small and large, anywhere in your document.  These are 
managed along with your text to help you produce attractive reports, or to 
create large databases.  More than that, QIP provides many powerful Table 
Processing functions, ranging from the simple Subtotal and Sort commands, to
the enormously versatile Update and Calculation commands.

QIP is an Information Processor.  By closely combining the functions of Word
Processor and Table Processor, it provides you with one, consistent environ-
ment in which you can enter, process and produce reports from raw data.

This differs significantly from 'Integrated Software' packages which are 
generally a loose connection of two or three independent systems, each 
managing your data in their own way.  With QIP, there is only one consistent
system, and one storage place for your data.  This makes QIP easy to learn 
and quick to apply, avoiding the complexity and mistakes that can arise from
using several independent systems.

When you first start to use QIP, you'll probably view it as a Word Processor,
and experiment with its on-screen formatting, line drawing, color-processing
and printer control capabilities.  As you start to work with tables, adding
simple lists or charts to your reports, you'll see how all your data can be
smoothly collated and updated.

Before very long, you'll be using the more powerful Table Processing features
to generate sales summaries, prepare work schedules, create form letters or 
update stock lists.  Ultimately QIP may become your best tool for the most 
critical task of all -- turning volumes of raw data into that essential 
element of modern life -- useful information.
  
                              Page --3-- 
 
1.3  GETTING STARTED
--------------------
This section assumes that you have successfully installed QIP in accordance 
with the notes in the file called README.  The QIP executable files must
either be in the current directory, or accessible through the defintion of 
the QIP environment variable, or by means of the DOS "PATH" variable.

QIP requires DOS 3.1 or above, and about 1 megabyte of disk space.  Also,
QIP is a large program, and while it will run in 512K, we strongly recommend
at least 640K.  The most noticeable effect of limited memory will be the
inability to execute some commands in the DOS shell.

You may also need to modify your CONFIG.SYS file to ensure that the following
minimums are met.  Remember to reboot if you do change your CONFIG.SYS

  FILES=20
  BUFFERS=8


1.4  LOADING QIP DATA FILES
---------------------------

If you type QIP filename, (e.g. QIP MYFILE) where there is a QIP format file 
in the current directory called "filename", QIP will load it for editing. If 
there is no file of that name, QIP will immediately create a new file named 
"filename" (with a .QIP extension if you didn't specify one explicitly) for 
you to edit (e.g. MYFILE.QIP).


1.4.1  LOADING ASCII TEXT FILES
-------------------------------
If, in the above instance, there is a text file (non QIP format file) called
"filename", QIP will automatically create "filename.qip" containing the same 
data, and load it ready for you to edit.  The original file will be unaltered.

Note:  The Import option on the File menu (section 3.5.6) provides another 
       way to read ASCII and Wordstar(tm) files into a QIP document.


1.4.2  LOADING QIP (NO DATA FILE)
---------------------------------
If you simply type QIP, the last file edited will automatically be loaded. 
QIP can, optionally, "remember" the name of the last file edited (this can
be activated or deactivated with the QSETUP utility, see Appendix D).  If it 
is disabled, QIP will create a new file named "UNTITLED" (you may want to 
change this name with the File menu "Write as" option, see section 3.5.6).

When a file has been loaded into memory, QIP will display the standard QIP 
screen, described in the following sections.

1.4.3  LOAD ERRORS
------------------
Each time QIP is loaded, it performs a series of startup self-tests.  If for 
some reason you get an error when QIP is loading, you should get a new copy 
of the QIP system file "QSYSTEM.V01" from the original distribution disk (you
may also want to run QSETUP to set any configuration paramters you may have 
changed).  If this does not fix the problem, support is available to 
registered users (see the "SUPPORT" file on the distribuiton disk for more
details).
  
                              Page --4-- 
 
1.5  QIP HELP
-------------
Qip's help system is both context-sensitive and cross-referenced.  It is 
accessed with the <F1> key, and controlled with the cursor movement keys, 
<Enter>, <PgUp>, <PgDn>, <F1>, <Shift><F1>, and <Esc> keys.  The Help system 
can also be navigated easily with a mouse.

QIP help is context and mode sensitive.  If you press <F1> during Text or 
Table editing, you will automatically be given help on the appropriate mode.
When you press <F1> from within any prompt or menu you will be presented with
a help screen pertaining to the current subject.

At the bottom of each HELP screen is a list of the available keys.  Pressing 
<F1> at any time will bring you back to the main HELP menu.  This is a list 
of all the principal HELP topics.  Pressing <Shift><F1> will return you to 
the top-most menu related to the current topic.  Hitting <Esc> at any time 
will exit the HELP system and return you to where you left off in QIP.

Many topics use a series of related HELP screens.  The <PgUp> and <PgDn> keys 
are used to move "UP" and "DOWN" through the screens.  If there is no previous 
screen then only <PgDn> will be available, when there are no further HELP 
screens only <PgUp> will be displayed at the bottom of the screen.

On most HELP screens certain keywords or phrases will be highlighted.  If the
cursor is moved to one of these areas and you press <F10>, <Enter>, or 
"click"it with the mouse, a help screen related to that key phrase will be 
displayed.

This cross-referencing feature combined with context-sensitivity and a
hierarchical menu system is designed to provide relevant help with the 
minimum amount of keystrokes.
  
                              Page --5-- 
 
                   2. O V E R V I E W  O F  Q I P

This section provides an introduction to several important aspects of QIP - 
how it organizes your data, its use of the screen, keyboard and mouse, 
different editing modes, and much more. If you read this first, you will find
it easy to "dip into" the Menu-by-Menu documentation in Section 3 when you 
need to check how to perform a particular operation.

Below are two diagrams showing the way QIP organizes and divides your data.
Several of the key words introduced here will be used and explained throughout
the remainder of the section.

BUFFER ------+ DOCUMENT  - Contains the particular file you are editing
 A work area |
 in memory   + WORK AREA - Temporary storage for data generated during editing
             |
             + PROGRAM   - Holds QPL (QIP Program Language) programs and macros


DOCUMENT + PAGES --+
         |         | 
         |         + LINES --+ RULERS  - Control document margins & tab 
         | The TEXT portion  |           positions.
         | of your Document  |                                               
         | is divided into   + TEXT LINES  - The actual text of your document.
         | PAGES and LINES.  | 
         |                   + PAGE BREAKS - Markers showing the end of each 
         |                                   page.
         |                   
         | 
         + TABLES +
                  |
                  + SECTIONS + TABLE HEADERS  - Title lines labeling each
           Each table has    |                  section of a Table.
           one or more       |
           sections, which   + COLUMNS  - Divisions of table rows into data
           can be spread     |            cells.  Columns are defined by their
           throughout the    |            positions, widths and attributes.         
           document.         |
                             |
                             + RULED LINE COLUMNS - One character wide
                             |                      columns containing 
                             |                      vertical ruled lines.
                             |                      Skipped during processing.
                             |
                             + COLUMN HEADER ROWS - Rows at the top of each 
                             |                      section containing a
                             |                      title for each column in
                             |                      the section.
                             |
                             + DATA ROWS  - Rows in a section containing data
                             |              cells.
                             |
                             + RULED LINE ROWS  - Rows ruled with horizontal 
                                                  lines. 
  
                              Page --6-- 
 
2.1  THE QIP SCREEN
-------------------
QIP divides the screen into a number of areas, known as System Windows, which
are visible most or all of the time.  Other windows such as Pull down menus 
and Prompt Boxes appear according to the operation you are performing.  The 
diagram below shows the standard QIP screen, and the following pages describe
each of the windows.

  + Current mode (TEXT or TABLE)
  |   + Information window                           Scale Line +
  |   |  + Menu bar                                             |
+-|---|--|------------------------------------------------------|---------+
|TEXT | File  Block  Effects  Layout  Search  Access  Output    |    SORD |
|Pg1--+ +.*....1....*....2....*....3....*...+-------------+..*.......7...+|
|Rlr .                                      | Calculator  |               |
|   2.                                      | Alarm Clock |               |
|   3.+                                     | Text mode   |  Menu         |
|   4.|                                     | Programs    |               |
|   5.+ Scale Column                        | Simulation  |               |
|   6.|                                     +-------------+               |
|   7.+                                                                   |
|   8.                                                                    |
|   9.<----------------------- Document Window -------------------------->|
|  10.                                                                    |
|  11.                                                                    |
|  12.         +--------------- QIP Calculator ------------------+        |
|  13.         | Calculation 1:                                  |        |
|  14.         | ................................................| Prompt |
|  15.         | RSLT: 0                                         | Box    |
|  16.         |                                                 |        |
|  17.         | F10:paste  SH+F10: make simulation  ESC: cancel |        |
|  18.         +-------------------------------------------------+        |
|  19.                                                                    |
|  20.          Status Line                                               |
|  21.<------------------------------>                                    |
|  <data.qip>   Page 1, Line 1, Xpos 1               10:30      D... Ins..|
|  F1:Help  F2:Calc  F3:Record  F5:Hide  F6:Paste  F7:Goto  F10:Mark  |F10|
+----|----------------------------------------------------------------|---+
     |                                                  Effect window +
     + Reminder line


2.2  SYSTEM WINDOWS
-------------------
MENU BAR
The top line on the QIP screen is the Menu bar, which changes according to 
which mode or which buffer you are using (see sections 2.6 and 2.7). At the 
far left of the window is the "TEXT" or "TABLE" mode display, which indicates
the current processing mode.

Following this are the names of the QIP menus available in the current mode 
and the current buffer.  The first letter of each is highlighted in some way
(e.g. "File") to indicate the 'hot key' used to activate that menu (see 
section 2.3.2).

The current buffer is indicated by the area at the far right - it normally 
contains the word "SORD" but changes to "PROGRAM" when you are editing a 
program.
  
                              Page --7-- 

SCALE LINE (RULER)
As its name suggests, this contains a graduated scale, with digits placed 
every 10 characters (e.g. 1 for 10, 2 for 20) and an asterisk halfway between
each pair of digits.  Normally, ruler information is superimposed on the 
scale, such as left ("+") and right ("+") margins and tab positions ("T") 
(see section 3.6.1).  In Table mode other information such as column numbers,
widths or titles can be shown. The <Alt>= keys can be used to change this 
information in table mode.


SCALE COLUMN
This five-character wide window runs down the left edge of the screen, but 
may be turned off (with the <Alt>- key) if you prefer to edit with a full 
80-character wide display.

If present, the Scale Column displays text and/or table line numbers, and 
sometimes special information about each line.  For example, a line following
a new ruler will have "Rlr" displayed in the Scale Column, and page break 
lines will be display Spb (soft page break) or Hpb (hard page break).  Table
indicators include:

  "Tnnn"      The first Table header line, where nnn is the Table number
  "THdr"      A Table Header Line
  "Snnn"      The first Column Header Line, where nnn is the Section number
  "CHdr"      A Column Header Line
  "+   "      Ruled line preceding the first data row of a table.
  "   +"      Ruled line following the last data row of a table

The last two indicators will change to up or down arrows if there is another 
section of the same table above or below the current section.

When the Scale Column displayed, a small one-line window appears at the top 
of the Scale Line.  This is the Information Window, and contains the current
page number ("Pg1") or table number ("Tb1").  It disappears if the Scale 
Column display is turned off (<Alt>-).


DOCUMENT WINDOW
All editing of your data takes place in this window, which occupies most of
the screen.  Its width is either 75 or 80 characters, depending on whether or
not the Scale Column is displayed.   In Text mode, a blinking cursor is 
displayed -- this is an underscore ("_") in Insert mode and a block in 
overwrite mode.  In Table mode, there is no blinking cursor but the current
table cell is highlighted with a block cursor the width of the cell.


STATUS LINE
Information about the current document and cursor position is shown here.  
The document name appears at the left.  This changes to "Programs" when you
are editing in the Program buffer.

Next to this is the current cursor position, expressed either as a Page/Line/
X (character) position for text mode, or as a Table/Section/Column/Row 
position for table mode. Additional information may also be displayed, 
depending on the mode:
  
                              Page --8-- 

   Text mode - the amount of free memory available, expressed in Kilobytes.
   If this value becomes less than 10K, it is advisable to stop editing the 
   current document, exit QIP and either split the document into two smaller 
   ones, or increase the amount of available memory, e.g. by removing any 
   Terminate-and-Stay-Resident programs in your system.

   Table mode - if the current column has a Numeric, Date or Time attribute
   this will be displayed (see section 3.3.7).

The current time is shown at the right-hand end of the Status Line.


REMINDER LINE
This line is sensitive to the current context and operation and will change 
to give you reminders concerning which keys to use or what to do next.  
Normally, it reminds you of the most important Function keys as shown in the
example screen in section 2.2


EFFECT WINDOW
This small window at the far right of the Status Line is used to show several
indicators concerning QIP's current editing mode and status.  The exploded 
view below will make this clearer (an indicator which is "off" is either blank
or displayed as a period):

                 Q p l   D . . .   I n s . .
                 --+--   ---+---   --+-- | +------  Table Cursor direction
                   |        |        |   |
    Qpl/Macro mode +        |        |   + Ruled line mode
                            |        |
             Current Effect +        + Insert/Overwrite mode

The Qpl/Macro mode indicator is normally blank, but changes to "Qpl" when a 
QPL program is running, "Mac" when a macro is playing, "Inp" when a macro is
in "user Input" mode, "Rec" when a macro is being recorded, or "Sim" when a
simulation program is running.

The Current Effect shows the current color ("D" for default, "R" for red 
etc.) and the on/off status of Underline ("U"), Highlight  ("H") and Expand 
("E").

Insert/Overwrite mode can be "Ins" for insert or "Ovr" for overwrite.

Ruled line mode (2.3.4) is usually off but can be single ("|") or double 
("||").

The Table Cursor movement direction (2.3.5) can be right (right arrow), down 
(down arrow) or off.


2.2.1  MENUS
------------
QIP menus are accessed from the Menu bar at the top of the screen, or from a 
menu which has already been displayed.  Each menu has a list of options which
can be selected to perform certain operations.  When an option is selected 
(section 2.3.2) the menu will usually disappear, to be replaced by another 
menu or by a Prompt Box pertaining to the operation you have selected.
  
                              Page --9-- 

Some menu options (called toggles) are provided to let you change certain 
settings which control QIP.  Usually, a toggle will have one of several 
possible values shown next to it (e.g. "On" or "Off" as in the example shown
below).
                     +-----------------+
                     | Create          |    +
                     | Goto            |    |   These are
                     | Join            |    |   all menu 
                     | Split           |    |   options
                     | Indent          |    |
  This is a toggle:  | Auto Append  On |    +                  
                     +-----------------+


2.2.2  PROMPT BOXES
-------------------
These are more complicated than menus because they allow both input of text 
and setting of toggles.  Many QIP operations will start by 
displaying a prompt box requesting the information they need to process your
data, e.g.:

       +---------------- Insert/Append Column(s) ------------------+
       | Width(s) of Column(s) to insert:                          |
       | ......................................................... |
       |                                                           |
       | Append   Off                                              |
       |                                                           |
       | F10:execute  ESC:cancel  F5:hide                          |
       +-----------------------------------------------------------+

The prompt box form is usually:
  - Any input fields (which can be entered and edited in accordance with 
    section 2.3.3)
  - Any related toggles

A reminder line on the bottom line lists useful keys including any special 
keys associated with this particular operation.

When a prompt box appears, its input fields and toggles may already be set to
show default or last-used values - these can be accepted, edited or cleared 
as required.  Refer to section 2.3.3 for more detail on editing prompt box
lines and selecting options in prompt boxes.


2.2.3  POPUP WINDOWS
--------------------
In addition to menus and prompts, several other kinds of windows may appear 
from time to time.  These include Notice windows which display messages such 
as "Sorting" while an operation is in progress, Message windows reporting the
result of an operation, Error windows which display processing or data entry 
errors, and Verify windows, which request confirmation before some operation
is carried out (see the example below).

For each of these windows, a reminder line message will be displayed if you 
are required to press a key in order to clear the window before proceeding.
  
                              Page --10-- 

                   +---------------------+
                   |Save changes? .      |
                   |                     |
                   |Yes:  No:  ESC:cancel|
                   +---------------------+

2.3  KEYBOARD HANDLING, FUNCTION KEYS and EDITING
-------------------------------------------------

FUNCTION KEYS
-------------
Below is a list of the function keys which are available in QIP.  Certain 
keys may not be available or applicable to particular operations.  Function 
key templates are provided in the document named TEMPLATE on the distribution
disk.

Refer to section 2.4 for a detailed description of MOUSE handling in QIP.

Key           Description                                           

<F1>          HELP key, also supported by <Ctrl>J.  This provides context- 
              sensitive help and access to the main HELP system at all times.

<Shift><F1>   During HELP, displays the 'topic' menu for the current help.

<F2>          QIP Calculator.  This is equivalent to the Calculator option of
              the  Access menu (3.1.1).

<Shift><F2>   During cell editing or line input, evaluate the input as a 
              numeric or string expression (2.9).

<F3>          Start or stop recording of keyboard macros (Appendix A).

<F4>          Play last macro (Appendix A).

<Shift><F4>   Display Programs menu.  This is the same as selecting the 
              Programs option on the Access menu (3.1.5).

<F5>          Hide windows (if any prompt, menu, or other popup windows are 
              showing).  The next key pressed will make the windows visible
              again.

<F6>          Paste.  Pastes contents of Work area to current position 
              in current buffer.

<Shift><F6>   Yank current line.  Copies current line to Work Area.  Note 
              this will overwrite current contents of Work Area.

<F7>          Goto.  This is the same as Goto on either the Search or Table 
              menu (3.9.4, 3.10.2).  Attempting to Goto a page past the end of
              a Document will Goto the top of the last page in the Document.

<Shift><F7>   Go directly to the Document buffer (2.7).

<F8>          Switch between Text and Table modes (2.6).
  
                              Page --11-- 

<F9>          Change ruled-line editing mode (2.3.4, 2.3.5).

<F10>         Execute and Marking key (2.3.4, 2.3.5).


CONTROL and EDITING KEYS
------------------------
Below is a list of the control and editing keys which are available in QIP.

Key           Description                                           

<Alt>X            Exit QIP  - same as Quit on the File menu (3.5.1).
<Alt>-            Toggle display of the Scale Column (2.2.1).
<Alt>=            Change Scale Line (Ruler) contents in Table Mode (2.2.1).
<Alt>Q            Display the QIP Copyright notice.

<Ins>             Change Insert/Overwrite mode.  Also supported by <Ctrl>V.

<Esc>             Exit or cancel any menu, prompt or operation.
<Shift><Esc>      Exit all menus or windows currently open.

Backspace         Delete the character to the left of the cursor.
                  <Ctrl>H also.
<Del>             Delete the character at the cursor position.
<Shift><Del>      Delete or clear to the end of the current line.
<Ctrl>Y           Delete or clear the current line.
<Ctrl>T           Delete the current word, or clear the current table cell.

<Ctrl>K char      Drop a bookmark (any single character) at the current 
                  location (a quick version of the bookmarks in 3.10.5).
<Ctrl>Q char      Goto a bookmark (any single char).  A quick version of the
                  Goto Bookmark feature explained in 3.10.4).

<Ctrl>P           Insert a hard page break.
<Ctrl>N           Insert a new line before the current line and move to it.
<Ctrl>Space       Enter a hard-space character.

<Ctrl>L           Repeat last Search (same as Search Next, 3.10.3).

<Ctrl><Break>     Halt or abort the current QIP operation, including Print, 
                  Sort, Update, and QPL programs.

<Enter>           Accept the current line, and move to start of next 
                  line (or next cell in Table mode).  Please refer to 
                  sections 2.3.5 and 2.3.7 for more information.

<Shift><Enter>    Append a new line after the current line and move to it.


CURSOR MOVEMENT and SCROLLING KEYS
----------------------------------
"Cursor" generally means the blinking text cursor or the block table cursor, 
but can also include the currently highlighted menu or prompt option.  The 
"current" window may refer to a menu or prompt window, the document window, 
or the cell editing window (2.3.9).
  
                              Page --12-- 

Many movement keys have extended forms which use the <Shift> or <Ctrl> keys 
in conjunction with the key.  In these cases, <Ctrl> will normally result in 
more movement (or movement on a larger scale) than <Shift>.

QIP TIP
-------
Some non-IBM computers (notably the Toshiba T5100 and J3100 series) do not
generate some of the shifted key combinations described below.  Specifically,
the <Shift><Home>, <Shift><End>, <Shift><PgUp>, <Shift><PgDn>, <Shift><Ins>, 
<Shift><Del>, and the four <Shift>arrow keys.  

Note that the Toshiba computers will produce these key combinations when
<Num Lock>, or <Scroll Lock> is on, but <Num Lock>, and <Scroll Lock> also 
have an affect on many other keys.

You can use the <Ctrl>O key to generate these shifted keys on those computers
that do not automatically produce them.  Pressing <Ctrl> O then a key will 
generate a <Shift>ed key.  Press <Ctrl>O then a key, DO NOT press them all
simultaneously.

Note this is only for the keys listed above, <Ctrl>O will have no effect on 
other keys.  


Key               Description                                        
------            -----------
Arrows            Move the cursor in the indicated direction.  Also supported 
                  by <Ctrl>E (up), <Ctrl>X (down), <Ctrl>S (left) and <Ctrl>D 
                  (right), but NOT in menus (2.3.2).

<Shift>Arrows     Move the current window in the indicated direction or 
                  scroll the Document buffer.

<Tab>             In Overwrite mode will move the cursor to the next tab 
                  position, table cell or menu/prompt option.  In Insert mode 
                  will insert spaces up to the next Tab position.  Also 
                  supported by <Ctrl>I.

<Shift><Tab>      Move the cursor to the previous tab position, table     
                  cell or menu/prompt option.

<Ctrl>left        In Text mode will move to the previous word.  <Ctrl>A also.
                  Refer to section 2.3.5 for Table mode usage.

<Ctrl>right       In Text mode will, move to the next word.  <Ctrl>F also.
                  Refer to section 2.3.5 for Table mode usage.
                  
<Home>            In Text mode, moves to the start of the text on the line, 
                  if already at the start of text, moves to the left margin,
                  if already at the left margin, moves to the far left edge 
                  of the Document window.

<Shift><Home>     Move to the Document left margin.

<End>             Move to end of the text on the line.  If already there, 
                  moves to the right margin, if already there moves back to
                  the end of the text line.
  
                              Page --13-- 

<Shift><End>      Move to the right margin of the Document.

<PgUp>            Move up one screen (22 lines).  <Ctrl>R also.

<PgDn>            Move down one screen (22 lines).  <Ctrl>C also.

<Shift><PgUp>     Move to the top of the current page or section.  If already 
                  there, move to the top of the previous page or section. 

<Shift><PgDn>     Move to the top of the next page or section.

<Ctrl><PgUp>      Move to the top of the document or current table.  If 
                  already at the top of the current table, move to the top of 
                  the previous table (if any).

<Ctrl><PgDn>      Move to the last line of the document or current table.  If 
                  already at the end of the current table, move to the end of 
                  the next table (if any).


2.3.2  MENU KEYS
----------------
Menus and menu options are normally accessed using the <Alt> key in 
combination with the one capitalized and highlighted letter of the option name
(known as the 'hot key'). The hot key is usually the first capitalized letter 
option name, and is also displayed in a different color.  Thus, to open the 
Access menu, simply type <Alt>A.

While a top-level menu is open, the left or right arrow keys can be used to 
move back and forth across the Menu bar.

On an open menu, one option (usually the last one executed on that menu) will 
be highlighted.  The up and down arrows, <Tab> and <Shift><Tab> and the space 
bar may be used to move from one highlighted option to another.

The <Enter> key executes the current option (whichever one is highlighted), 
or changes the value of a toggle, generally without exiting from the menu
(2.2.2).  The menu may disappear at this point, particularly if a sub-menu or
prompt box is opened.  

The <F10> key is the "Accept" or "Execute" key.  Pressing <F10> always closes
the menu and executes the option.  This is so the <F10> key can be used (as 
indeed it must be) for cases such as the Effect menu (3.4) where several
toggles may be changed (with the <Enter> key) before being "accepted" with 
the <F10> key.

The <Esc> key can be used to exit the menu -- it has the effect of restoring
any changed toggles to their previous values.

You can move directly to a particular option without executing it by pressing
the <Ctrl> key together with the option's hot key.  This is useful to
ensure the right option is selected for keystroke macros.
NOTE: A few <Ctrl> keys are equivalent to other keys. For example, <Ctrl>M is
the same as <Enter>,  <Ctrl>I is <Tab> and, in QIP, <Ctrl>J is <F1>

  
                              Page --14-- 

Typing an option's hot key will move to the option AND execute it.
The effect of the <Alt>Hotkey combination differs depending on the type of
option. If the Hotkey is for a toggle, it will change the toggle value
without moving the cursor. For other menu options, it moves the cursor and
executes the option.

Toggles may be set to a particular value with the plus (+) and minus (-)
keys (for toggles with only 2 possible values), or with the numbers 0 to 3.
For example, 
   '-' or '0' will force the toggle to its initial value, usually OFF.


2.3.3  PROMPT BOX KEYS
----------------------
Prompt boxes combine single-line text editing with toggles.  A prompt box is 
executed by pressing <F10> at any time, or pressing <Enter> on the last input
line.  The prompt box will remain open until it is either executed, or 
aborted using <Esc> or <Shift><Esc>.

Options on the prompt box have hot keys in the same way as menus (2.3.2).
Movement between options is possible using the up and down arrows, <Tab> and 
<Shift><Tab>. 

The effect of the <Alt>Hotkey combination differs depending on the type of
option. If the Hotkey is for a toggle, it will change the toggle value
without moving the cursor. For an Input line hotkey, it moves the cursor
to the required field.

Toggles can be set to a specific value (e.g. with the plus and minus keys).
Refer to the "Menu Keys" section above (2.3.2) for more details.


INPUT LINE EDITING
Each input line has a number of dots indicating the maximum number of 
characters you may enter.  While entering or editing data, you can use the 
line-based cursor movement and editing keys defined in section 2.3.1, 
including combinations such as <Ctrl>Y or <Shift><Del> to clear all or part 
of the line.

When you accept a line or prompt box with <Enter> or <F10>, it will normally 
be checked for an erroneous or missing entry.  If one is found, an Error 
window will appear and the flashing cursor will be placed at the position 
where the error is suspected.  The Error window will remain visible, and you 
will not be able to move off the input line until the error is corrected.


2.3.4 TEXT EDITING and MARKING
------------------------------
When editing text, you can use all of the keys described in 2.3.1.  More 
detail on certain keys is given below.

The behavior of the <Enter> key differs depending on whether you are in 
Insert or Overwrite mode.  If <Enter> is pressed in Overwrite mode, the 
cursor always moves to the start of the next line -- no text is moved or 
inserted. In Insert mode, the current line is broken at the cursor position - 
any text after that point will be moved with the cursor to the start of the 
next line, and a newline symbol will appear at the end of the original line.
  
                              Page --15-- 

Text which is entered in Overwrite mode (replacing existing text) will 
always keep the effect (3.4) given to the original text - it will not be 
changed. Text entered in Insert mode will be given an effect according to the 
Effect Priority (3.4.1).

When editing lines within a table in Text mode, it is best to use Overwrite 
mode so as to avoid shifting the positions of table columns -- it is possible 
to do this but not recommended, as subsequent column accesses in Table mode 
will read incorrect data.

MARKING
Many text operations apply to marked ranges of text (3.2, 3.4).  Marking of 
text areas is very straightforward:  To start marking, press the <F10> key. 
You can then move the cursor backwards or forwards to highlight the range of 
text you want to mark.  You can use any of the cursor movement keys such as 
<Home>, <End>, <Tab> and the arrow keys for this.  You may type in new text 
during marking and also use editing keys such as <Del> and <Ctrl>Y.

To finish marking, either select the operation you wish to perform (e.g. 
Copy, Move) or press <F10> again, which will leave the range marked until you 
select an operation at a later time.

Pressing <Esc> at any time will clear the marked area and abort any operation 
you have selected.

RULED-LINE EDITING
Drawing boxes, Ruled-lines, and graphic editing is possible in QIP.  The <F9>
key controls the current Ruled Line mode.  This may be off, single or double 
(see the Effect Window in section 2.2.1).  

To draw a box or line, place the cursor at the upper-left corner and press 
<Shift><F9>.  Use any cursor movement keys to move to where you want the 
lower-right corner to be then press either <Shift><F9> again or a character 
key.  A box (or line) will be drawn with either single or double ruled lines
(depending on the ruled line mode) or with the character you pressed.

When the Rule line mode is active and the <Num Lock> key is on, keys on the 
numeric keypad are redefined to generate the following characters (note the 
actual graphics characters cannot be shown in this file):

                                 Single                     Double
 7: +   8: -   9: +      *: c (cent symbol)           *: L (pound)

 4: |   5: |   6: |      -: * (block symbol 1)        -: @ (block symbol 3)

 1: +   2: -   3: +

 0: -   .: |             +: + (block symbol 2)        +: $ (block symbol 4)

If you need to generate characters which are the INTERSECTION of single and 
double ruled-lines, simply turn on the <Scroll Lock> key in addition to the 
<Num Lock> key.  This will generate characters with VERTICAL lines matching 
the CURRENT mode (e.g. vertical lines will be single when the Ruled Line mode 
is single), and HORIZONTAL lines in the OPPOSITE mode (e.g. horizontal lines 
will be double when the Ruled Line mode is single).
  
                              Page --16-- 


2.3.5  TABLE EDITING and MARKING
--------------------------------
When editing in Table mode, QIP changes the cursor to a reverse block the 
width of the cell -- this can be moved around with the normal cursor movement
keys listed in section 2.3.1, with some minor differences noted below.

<PgUp> and         These will still attempt to move the cursor one screen at 
<PgDn>             a time, but this behavior is modified so as to ensure 
                   that the cursor remains within table limits.

<Shift><PgUp> and  Move to the top or bottom of the current section.  If 
<Shift><PgDn>      already at that position, move to the top or bottom of 
                   the previous or next section (if any).

<Ctrl><PgUp> and   Move to the top or bottom of the current table.  If 
<Ctrl><PgDn>       already at that position, move to the top or bottom of 
                   the previous or next table (if any).

<Ctrl>left         Does NOT move the cursor.  Instead, it toggles automatic 
                   cursor movement on or off - this controls what occurs when
                   the <Enter> key is pressed.  The cursor movement indicator 
                   displayed in the Effect Window (2.2.1) will change to a 
                   ".", meaning "off". If you press <Ctrl>left again, it will
                   return to its previous value (right or down arrow).

<Ctrl>right        Does NOT move the cursor.  This changes the direction of 
                   automatic cursor movement.  The indicator will change from a 
                   right arrow to a down arrow or vice versa.  If the 
                   indicator was turned off using <Ctrl>left, this key will
                   turn it on.

<Enter>            Accepts the current cell (if it was being edited) and 
                   moves in the current cursor movement direction, if any.  
                   In Auto Append mode (3.11.6), a new row may be appended if
                   the cursor is at the end of the section.

Ruled Lines, Section Boundaries and Column Headers

The table cursor automatically skips all ruled lines during editing.  Thus, 
if the next column to the left is a ruled line column and you press the left 
arrow key, the cursor will move to the column BEFORE the ruled line column.

The arrows and the <Enter> key will never move the cursor outside the current
section.  The <Enter> key moves to the start of the next row or column 
(depending on the cursor movement direction) and the arrow keys will have no 
effect when the cursor is at a section boundary.  If you wish to move to 
another section, use Goto (3.10.2) or one of the <PgUp> or <PgDn> combinations
described above.

Column header rows (containing column titles) are often shared by several 
sections of the same table.  This means that if you edit one section's column 
header you will be asked if you want to replicate the changes in other 
sections sharing the same header.

MARKING
The <F10> key is used in Table mode, as in Text mode, to start and end 
marking of a range of data.  In Table mode, marking is done on a cell-by-cell
basis, and only the start and end cells in the range are highlighted.
  
                              Page --17-- 
 
It is not necessary to mark both ends of a range -- if the end cell has not 
yet been specified, the current cell (the one occupied by the cursor) is 
assumed to be the end point.  Furthermore, if you select an operation which 
expects a marked range without having first marked anything, the current 
column (or row) will always be assumed. Thus, selecting Column Delete (3.2) 
without marking anything will indicate that you wish to delete the current 
column.

Existing Marks can be cleared at any time by pressing <Esc>.  They are 
cleared automatically when an operation which uses those marks is completed. 
Marks are also cleared if you exit Table mode or move to another section 
(i.e. it is not possible to mark a range extending over more than one 
section).

When an operation has been selected, the range will be highlighted and 
subsequently processed according to the type of operation you have selected. 
Thus, Column menu operations will highlight and process the marked range as a 
group of columns, Row menu operations will work in a similar fashion for 
rows, and Effect changing will apply to the rectangular block of cells 
defined by treating the start and end cells as corner points.

The Ruled-line options on the Column and Row menus require that you mark the 
data columns or rows next to where the ruled lines are to be inserted or 
deleted.  This is necessary because it is not possible to move the cursor
onto the ruled line rows and columns themselves.  See section 3.3.1 for more
detail on this subject.


2.3.6 TABLE CELL EDITING
------------------------
When editing the contents of a cell, a small editing window covers the actual 
cell. It shows the current contents (if any), with dots filling the unused 
area. This may be edited in a similar fashion to prompt input lines (2.3.3).
Other details concerning cell editing are given below.

There are two ways to start editing the current cell:

1. Press <Shift><Ins> or <Ctrl>G to Get the existing data for editing -- it 
   will be displayed in the editing window with the cursor placed at the end,
   ready for editing.

2. Type any valid data character (i.e. not a control or cursor movement key).
   The editing window will open for input, showing the character you typed.  
   When you press <Enter> the new data will replace any previous data the 
   cell may have had.

There are several ways to end editing of a cell.  The <Esc> or <Ctrl>U keys 
will abort cell entry, restoring the previous contents of the cell, if any.  
The <F10> key will accept the new contents without cursor movement.  The 
<Enter> key will accept and move in the current cursor direction, if any.  
The UP and DOWN arrows will accept and move in their respective directions.

Incorrect data will cause an error when you try to enter it into a column 
which has a special Column attribute (3.3.5).  For example, if you try to 
enter alphabetic data into a cell with a numeric attribute, a bell will sound
and the editing window will remain open, waiting for you to correct the data.
  
                              Page --18-- 

Column attributes also provide a few shortcuts when entering data.  You can 
type expressions (2.9) in numeric, date and time attribute columns.  These 
will be evaluated and, if valid, their results stored in the cell.  For 
example, typing TODAY in a date attribute column will cause today's date to 
be stored.  It is important to note that the the evaluation takes place ONLY 
at the time you enter the data -- QIP does not store the expression for 
future recalculation like a spreadsheet.

A shortcut is provided to allow you to copy existing cells when entering data
into a cell.  If you type only a double quote (") before pressing <Enter>, 
the contents of the LAST NON-EMPTY DATA CELL above the current cell in the 
current column will be copied.  If you type "r where r is a row number in the
current section, the contents of the current column in that row will be 
copied.  Finally, you can type "c,r where c is a column number and r is a row 
number, the contents of that cell will be copied, e.g. "2,4 will copy the 
contents of the cell in column 2, row 4 into the current cell.

It is also possible to manually get data from one cell and put it into 
another -- use the <Shift>arrow keys to move the editing window to another 
cell before you press <Enter>.


2.4  MOUSE HANDLING
-------------------
QIP supports the use of a mouse if one is installed and if the mouse driver 
has been loaded before QIP is started.  Though a mouse is not always the best
tool for typing-intensive tasks such as word processing and data entry, it 
can be very useful when the work involves menu selections, cursor movement 
and data marking, which is often the case in QIP.

QIP can handle either a two-button or three-button mouse.  The left-hand 
button is used to select or execute an item (equivalent to <F10>), the right-
hand button is equivalent to pressing the <Esc> key.  On a three-button 
mouse, the middle button calls up Help just as the <F1> key does -- on a two-
button mouse you do this by depressing both buttons at once.

The mouse cursor is a blinking block which is independent of the Text or 
Table mode cursor.  To select something with the mouse, just move the mouse 
cursor to the desired location and push the left button.  Areas on the screen
which will react if you do this are called "hot areas" and are described 
below.

Menu bar:     The TEXT/TABLE label at the far left can be selected to switch 
              modes.  Menu names can be selected to display a menu, and 
              options on an open menu may also be selected.  The SORD logo or
              buffer indicator at the far right of the Menu bar can also be 
              selected -- its behavior depends on which is the current buffer.

Scale Line:   Scroll the screen left or right.  Selecting a point to the left
              of the center is the same as pressing <Shift>left.  Selecting 
              to the right of the center is the same as pressing <Shift>
              right.  Selecting the Information window (or the leftmost five 
              characters of the Scale Line if there is no Information window)
              toggles Scale Column display.

Scale Column: Scrolls the screen vertically, one screenful at a time.  
              Selecting a point above the center is the same as pressing 
              <PgUp>.  Selecting below the center is the same as pressing
              <PgDn>.
  
                              Page --19-- 

Reminder Line: If any highlighted function keys are shown, selecting one is 
               equivalent to pressing that key.  A small <F10> symbol will 
               always be available at the far right of the Reminder line
               when the mouse is active.

Effect window: The current effect, Insert/Overwrite mode, Ruled line mode and 
               table cursor direction indicator may all be selected.

Prompts:       Toggles and input lines may be selected -- the effect is the 
               same as if <Alt>hotkey was used (2.3.3).  The special keys 
               shown at the bottom of a prompt box may also be selected.

Windows:       The frames of any menu, prompt, message or help windows may be 
               selected to move that window -- for example, selecting the top 
               frame of the window will move the entire window up, (equivalent
               to <Shift>up arrow).

Help:          Highlighted phrases and special keys can be selected.

Points in the Document window can also be selected with the mouse.  In Text 
mode, selecting a point will move the cursor to that point.  If marking is 
active when this is done, the area between the original cursor position and 
the new one will be marked.  For example, to mark a range of text:
  -  select a start point with left mouse button
  -  select F10 hot area on reminder line or press <F10> key
  -  select an end point with left mouse button (as above)
  -  select F10 hot area on reminder line or press <F10> key (as above)
  -  for move and copy (not needed for "Delete", or "Yank") select a 
     destination point with left mouse button
  -  select option from BLOCK menu. e.g. Move, Copy, Delete, or Yank.

Selecting a table cell when in Table mode will mark that cell without moving
the table cursor (2.3.5).  Selecting a cell twice in succession will move 
the table cursor to that cell, clearing any existing marks.


2.5  QIP FILES
--------------
QIP uses several system files for managing its own operations and will create 
files associated with the particular data file you are using.

System Files
------------
QIP.EXE          - The QIP program.
QSYSTEM.V01      - QIP setup information, help, and error messages.  If 
                   deleted, it will be automatically re-created with default
                   setup information but with NO help or error messages -- 
                   you should re-copy the original file from the standard QIP
                   distribution disk.
QSETUP.EXE       - Setup program which reads or creates QSETUP.TXT and writes 
                   the setup information into QSYSTEM.V01.  See Appendix D.
QSETUP.TXT       - Text file containing QIP's setup information in editable 
                   form.
QPRTDEFS.V01     - Printer database for all printers in standard distribution
                   database.  

Note: The ".TXT" files are not required to run QIP, but are useful for setup.
  
                              Page --20-- 

Data and Work files
-------------------   
filename.QIP     - QIP document file, containing text, table, and effects 
                   data, plus any QPL programs for this document (Appendix A).
filename.QBK     - Backup of the previous copy of filename.QIP.  If you Quit 
                   without saving changes or Restore from the backup, the 
                   contents of this file will be used (3.5).
filename.Pnn     - nn = number from 01 to 99.  This is a PRINT TO DISK file. 
                   Each time you send print output to disk, the number will 
                   be incremented so you can easily keep track of printer
                   files.
filename.Snn     - nn = number from 01 to 99.  This is a SPOOLed file created
                   by QIP.  Each time you send output to the spooler, the 
                   number will be incremented.  Delete these files as 
                   necessary.


2.6 TEXT and TABLE MODES
------------------------
As discussed already in sections 2.2 and 2.3, many menu operations and 
editing procedures differ depending on whether you are in Text or Table mode.

Text mode menus provide editing and word processing operations such as block 
copy, ruler editing and search and replace.  Table mode menus provide many 
editing, calculating and processing operations for working with table data. 
Several 'utility' menus (such as File and Output) are available in both modes.

Text editing can be performed on any part of the document including table 
data, although it is important that you maintain the table column positions 
and overall structure in the process.  The easiest way to do this when 
editing tables in text mode is to always use Overwrite mode, with Wordwrap 
"Off" and without deleting individual characters or words.

You can use Block menu operations to work with table rows.  This is very 
useful when Importing data from a database.  You can create an empty table 
with the correct column widths then Move the (text) database rows into the 
table to allow them to be processed with any of the table operations.

Text formatting is always governed by the current Ruler (3.6.1), displayed on
the Scale Line.  Words, line and paragraphs are formatted in accordance with
the ruler.  Since it is possible to have many rulers in a document, you can
vary the layout of your text at any point.  Rulers can be altered and removed
only in the Document buffer.

Table editing is always done on a cell-by-cell basis.  The Table mode cursor
movement keys will never move past the boundaries of a table or section.  
Depending on the cursor movement keys you use (<PgUp> and <PgDn>), the cursor
may move to another section but is still within the bounds of the Table.

Tables are also special in that they always consist of 'whole' sections.  If
a section is divided by a page boundary, it is automatically split into two
sections of the same table.

Because a table can extend throughout a document (for example, with one 
section on every page), it is important to realize that many table operations
affect the entire table, especially those on the Process menu.  Some Process
  
                              Page --21-- 
 
menu options have toggles which control whether they will apply to the 
current section or to the entire table -- thus you can SORT just a few rows,
or every row in the table.

While you may have up to 50 tables in a document, each with up to 250 
sections, it is not possible to interleave sections from different tables -- 
all sections of a given table must appear in sequence.  Text, however, can be
placed between sections at will --  whether one line or one thousand lines.

Tables are always numbered in the order they appear in the document.  Thus, 
Table 1 is the first table in the document, not necessarily the first table 
you create. Sections are also numbered in ascending order (within each 
table).


2.7  QIP BUFFERS
----------------
QIP uses three work areas in memory to manage your document.  These are the 
Document buffer, Work area and Program buffer.

DOCUMENT BUFFER
This is where the actual document data is stored and processed.  The full 
range of QIP functions are available for use here, whether in Text or Table 
mode.  You can tell you are in the Document buffer in a number of ways: the 
"SORD" logo appears at right of the menu bar, the document name is displayed 
at the left of the status line, and the menu bar shows all the menus for the 
current mode.

When you save a QIP document, the data which is actually saved is the current 
contents of the Document buffer, together with all programs (see below). The 
contents of the Work area are never saved -- if you want to preserve 
its contents, paste them into the Document buffer before exiting QIP.

If you select the SORD logo with the mouse, a special notice appears (also 
displayable with <Alt>Q).


WORK AREA
The Work area is used as temporary workspace by QIP itself and is not
directly accessible to the user.  The <F6> key can be used to paste the 
contents of the Work area to the current position in the Document.

It maintains a copy of all data (text data, and rows) copied, moved or deleted
from the Document buffer with block operations involving marked areas, such as
those on the Block (3.2), and Row (3.9) menus.


PROGRAM BUFFER
There are two ways to enter the Program buffer.  One is via the Program option
of the Access menu (3.1.5), the other is the <Shift><F4> key.  If you Create 
a new program or Edit an existing one, you will be placed in the Program 
buffer with the cursor on the first line of the program.  You may also be 
placed in the Program buffer if an error occurs in an executing program, in 
which case the cursor will be on the line containing the error.  

When you are in the Program buffer, the word "PROGRAM" appears at the right 
of the menu bar, and the word "Programs" will be displayed at the left of the 
Scale line.  If you select the word "PROGRAM" with a mouse, the Program menu 
will be displayed.
  
                              Page --22-- 

The Access menu or <Shift><F7> may be used to return to the Document buffer 
when you have finished editing.

All keyboard macros which are assigned hot keys are stored as QPL programs,
these may be edited, extended or deleted in accordance with the information 
given in Appendix A.  Please refer to that section for more information on QIP 
macros and QPL programming.


2.8  SPECIFYING DATA POSITIONS and RANGES
-----------------------------------------
Many QIP operations require the entry of data positions or ranges.  For 
example, many Table operations require column numbers or column ranges, and 
Output menu options often require page and table ranges.


2.8.1  SPECIFYING DATA ITEMS
----------------------------
Any item (page, line, column etc.) in a QIP document can be specified using 
one of the prefixes given below followed by a number, e.g.  P1 for Page one.
You may also use a "C" referring to the CURRENT Page, Line, Table, Section,
or Row.  When specifying Table positions you may use the letter "E" to refer 
to the END (last) Table, Section, or Row.  

Note that that "C" and "E" may not be used by themselves, only in combination
with "P", "T", "S", "R". etc.  Also that "E" may may be used only for Table
positions, e.g:
  
  PC  -  the current page.
  CC  -  the current column.
  TE  -  the end (last) table.
  RE  -  the end (last) row.

You can also use an expression (2.9) instead of the number, so long as it is 
enclosed in parentheses, e.g.  R(E-1)  -- the next to last row, P(N1)  -- the 
page whose number is stored in the numeric variable N1 (Appendix A).


SPECIFYING TEXT ITEMS
Pages:                      P, e.g.  P1 or P6 
Lines (within a page):      L, e.g.  L1 or L(N2)
X Offset (within a line):   X, e.g.  X4


SPECIFYING TABLE ITEMS
Tables:                     T, e.g.  T5 or TC or TE
Sections (within a table):  S, e.g.  S2 or S(N5)
Columns:                    C, e.g.  C1 or CC or C(E-2)
                       or:  [title], e.g. [COST PER UNIT] -- see below.
Rows:                       R, e.g.  R1 or R15


SPECIFYING COLUMNS BY THEIR TITLES
Each section may have up to three rows of column headers containing titles for 
the columns in that section.  The example below has two column header rows:
  
                              Page --23-- 

Column Nos: 1    2    3    4    5     6     7   8  9   10  11  Note that ruled
            +---------+---------+-----------+------+--------+  line columns
Col Hdr 1:  |         | Cost Per| Price Per | Qty  |        |  are really one
Col Hdr 2:  | Product |   Unit  |   Unit    | Sold | Profit |  character wide
            +---------+---------+-----------+------+--------+  columns and 
Data        |Shoehorns|    15.23|      27.76|    13|  162.89|  are numbered 
rows:       |Umbrellas|     3.55|      12.31|   122| 1068.72|  like any other
            ~..etc    |         |           |      |        ~  column (3.3.1) 
            +---------+---------+-----------+------+--------+

Columns can be referenced by their titles by enclosing the title in square 
brackets, e.g.: [Cost Per Unit].  It is not important to have the correct 
capitalization, nor is it necessary to spell out the entire title when a 
unique abbreviation will do.  Thus: [COST], [C] and [cost per unit] all 
reference the same column.

If the title specified is NOT unique (e.g.: [PRO]), QIP will first look for a 
column title which exactly matches the entry (in the above example, there is
no column called just "PRO", but if there was, [PRO] would match that column).  
If there is no exact match, QIP uses the FIRST column (moving from left to 
right) which matches the abbreviation  -- the "PRODUCT" column in the above 
example.

You may find it best to refer to columns by name in this fashion as the 
column numbers will change whenever you insert or delete any columns in the 
table -- including ruled line columns.   Please note, however, that column 
titles themselves may change from section to section of the same table if 
you explicitly change the column headers in a new section.


2.8.2  SPECIFYING DATA POSITIONS
--------------------------------
In operations such as Goto (3.10.4) you may need to specify not just an item 
(such as a column or page number) but a specific position.  It is possible to 
specify positions in text or table mode by using the item specifications given 
above, so long as the correct order is followed.  It is usually possible to
omit (or assume 'current' values for) one or more of the entries.

TEXT:  Page  Line  X-Offset
 e.g.: P1L13X20 - page 1, line 13, x-offset 20
       PCLC     - current page, start of current line
       P5       - start of page 5
       L1X20    - Line 1 offset 20 of current page

TABLE: Table Section Column Row
 e.g.: T3S1C3R5   - Cell in table 3, at section 1, column 3, row 5
       T3C3R100   - The cell at table 3, column 3, TABLE-RELATIVE row 100. If
                    a table number is specified but NOT a section number, row
                    numbers are taken as table-relative, i.e. rows are counted 
                    starting from the first row of the TABLE not just within 
                    one current section (see next example).
      S2[ABC]R19  - The cell at section 2, column [ABC], SECTION-RELATIVE row
                    19 of the current table.
      T2          - start of table 2 (section 1, column 1, row 1)
      C3RE        - The cell at column 3, end row of the current section.
      TEC3RE      - The cell in the last table, column 3, end row
  
                              Page --24-- 

2.8.3  SPECIFYING DATA RANGES
-----------------------------
Many operations require you to specify lists or ranges of data, e.g. page 
ranges for OUTPUT options (3.7), column ranges for PROCESS options (3.8) and
cell ranges for calculations (3.1.1).

A data range consists of a start position followed by two dots ".." followed
by an end number, e.g.  P1..5  -- pages one to five (current buffer is 
assumed). 

Although the start position may be specified with great detail, the end of 
the range must be a number or numeric expression.  As a convenience, the
letter 'A' for ALL may be used instead of a numeric expression.  For example;

PA     -  PageAll, ALL Pages
RA     -  RowAll, ALL Rows -- Note that RA is all DATA rows,
                              does NOT include Column header rows.
TA     -  TableAll, ALL Tables

As a special case, used ONLY for the CALC command, the letter "X" used to 
mean eXtend, e.g. CX, RX or CXRX (automatically append a new column and/or 
row).  Note that you may only use 'X' only for Columns and Rows.
 
Some Examples of ranges are:

P1L1..5        -- Page 1, lines 1 to 5.
T2C5R9..E      -- Table 2, column 5, from row 9 to the last (table) row.
SCC2..5        -- Current section, columns 2 to 5.
S2C2R3..(C-1)  -- Section 2 column 2, between rows 3 and current row minus 1.
S1[A]..[E]R1   -- Section 1 columns [A] to [E] in row 1.  This is a special
                  case for calculations only as the R1 specification at the 
                  end is permitted, and refers to to the entire column range 
                  given.
CAR1           -- Cells from all columns in row 1.  Same as C1..ER1.
C1RA           -- Column 1, all rows (in the current section).  Same as 
                  C1R1..E.

When specifying a COLUMNS/ROWS or PAGES/LINES a range is allowed only for one
or the other, but not both.  For example, when the the COLUMN specification
contains a range the ROW specification must be a single row (and vice versa).

     C1..10RE     --  okay
     C1..10R1..5  --  incorrect
     P3L1..50     --  okay
     P1..8LA      --  incorrect ("A" is actually a range equivalent to L1..E)
     S1..EC1..3   --  SECTION/COLUMN ranges okay 
     S1..5C1RC..E --  SECTION/ROW ranges okay

A list of ranges, positions or items is constructed by separating the 
elements in the list with commas, e.g.  P1..3,P5,P9..12  -- Pages 1 to 3 and
5 and 9 to 12. If you read the dots as "TO" or "THROUGH" and read the commas 
as "AND" or "THEN" you will find it easy to understand and use QIP ranges and
lists.

  
                              Page --25-- 

2.9  QIP EXPRESSIONS
--------------------
QIP supports a wide variety of expressions dealing with numeric and alpha
numeric (string) data.  These are used in calculations, in QPL programs, in
specifying data positions and ranges, and in some PROCESS commands such as 
UPDATE (3.8.1).


2.9.1  EXPRESSION STRUCTURE
---------------------------
Expressions are constructed from OPERATORS e.g. +, -, /, *, MOD, and OPERANDS
such as the following:

OPERAND TYPE                   Examples:
CONSTANTS                      3      "hello"
FUNCTIONS (Appendix B)         INT()  LEFT$()   NOW()
SYSTEM VARIABLES (Appendix B)  CPAGE  CDOC$
VARIABLES (Appendix A)         N1     A3 
                               (N = numeric, A = Alpha, i.e. string)
DATA POSITIONS (2.8.2)         C2RE   T1[C]

QIP Expressions combine OPERANDS and OPERATORS together just as in regular
mathematics:
e.g.        3        +       5         -        7
          CHR$(34)   +      "ABC"      +    CHR$(34)
i.e.     OPERAND  operator OPERAND  operator OPERAND ...

Parentheses can be used to force certain parts of the expression to be 
evaluated before the rest -- this is important when the OPERATOR PRECEDENCE
(Appendix A) would otherwise lead to a different result, e.g.
    2+3/4         (result is 2.75 because 3/4 is evaluated first)
    (2+3)/4       (result is 1.25, i.e. 5/4)

Parentheses are also required in some data ranges when the meaning would be 
unclear unless they were used, e.g.
    C3..E-1    (subtract one from columns in the range 3 to the last  -- 
               illegal)
    C3..(E-1)  (columns in the range 3 to next-to-last  -- ok)

Assignment expressions assign the result to a variable or data position, e.g.
    C2R4 = C2R1/C3R5       or      C3R5 = LEFT$(A1,5)+RIGHT$(A1,2)


2.9.2  EXPRESSION TYPES
-----------------------
An expression can be one of three 'types' corresponding to the kind of result 
being produced:  Numeric (evaluates to a number), String (evaluates to a 
string of characters) or Logical (evaluates to a TRUE/FALSE condition).

An expression's type can usually be determined by the kind of data it
references, e.g.  3+4 is a numeric calculation returning 7; "3"+"4" is a 
string concatenation returning "34".  However, expressions involving only 
table cell references are always regarded by QIP as numeric.

For example, QIP will always evaluate C1=C2+C3 as a numeric expression.  If 
you want it to be evaluated as a string expression, a "$" suffix must be 
applied to the destination or to any one of the operands, e.g. C1$ = C2+C3 or
C1 = C2$+C3.
  
                              Page --26-- 

2.9.3  LOGICAL EXPRESSIONS
--------------------------
Logical expressions cannot be assigned -- they are only evaluated to determine
whether or not to perform a certain operation (as in UPDATE). Logical 
expressions may be optionally prefixed by "IF", and can contain the special 
logical' operators 
   "="  -  Equal                 ">"   -  Greater Than
  "<",  -  Less Than             ">="  -  Greater Than or Equal
  "<="  -  Less Than or Equal   "<>"  -  Not Equal
  "AND" -  Logical AND          "OR"  -  Logical OR
  "NOT" -  Logical NOT

For example:

 IF [NAME] = "Rob" OR [AGE] > 45  -- True if AGE is over 45 or the NAME is 
                                     "Rob"
 N1 > 3 AND (N2 = 5 OR A1="DONE") -- True if N1 is over 3 and EITHER N2 is 5 
                                     OR A1 is "DONE"
 IF C1 <> C2                  --  True if the C1 data is not equal to the C2 
                                  data in the current row.
 IF NOT [A] >= 2 OR [C] < 5   --  True if [A] is not over 2 or if [C] is under
                                  5
 IF NOT ([A] > 2 OR [C] <= 5) --  True if [A] is not over 2 and [C] is not 
                                  under 5
 IF N1 OR N2                  --  True if either N1 or N2 is non-zero
 IF C1 OR VAL(C2)             --  True if either C1 is not EMPTY or if the 
                                  value of the C2 data is not zero (in the 
                                  current row).

Note:  For assignments, as mentioned previously, expressions involving only
table cells are treated as numeric because this is the most common 
requirement.  For logical expressions the reverse holds true:  IF C2 > C1  is
treated as a string comparison because this is what is usually required.  If
you want the comparison to be numeric, use the VAL() function, e.g.  IF 
VAL(C2) > VAL(C1).

A string comparison will return the same result as a numeric comparison if 
both columns contain only numbers, but can returns a different result if one 
or the other column contains non-numeric or mixed alphabetic & numeric data.
  
                              Page --27-- 
 
                       3.1  A C C E S S  M E N U

          DOCUMENT           PROGRAM     
      +-------------+    +-------------+
      | Calculator  |    | Calculator  |
      | Alarm Clock |    | Alarm Clock |
      | Text mode   |    | Programs    |
      | Programs    |    | Document    |
      | Simulation  |    | Simulation  |
      +-------------+    +-------------+

The ACCESS menu allows you to switch between TEXT and TABLE modes, and 
between the DOCUMENT, and PROGRAM, buffers.  The PROGRAMS option lets you 
manage QPL programs.  The ACCESS menu options also provide access to the 
pop-up CALCULATOR and ALARM CLOCK features from all modes and buffers.  A
SIMULATION program may only be run while in TABLE mode.


3.1.1  CALCULATOR
-----------------
This is one of the most important and useful options in QIP.  It is 
functionally identical to the pop-up calculator (<F2> key) and gives you 
access to ALL of QIP's built-in Date/Time, String, Numeric, and Financial 
functions.  See Appendix B for a complete list of all built-in functions, and
sections 2.8 and 2.9 for a detailed explanation of QIP expressions.  

Note that all QIP numeric computations are done in a BCD representation, this
means you have 16 decimal place accuracy with NO ROUNDOFF ERROR.

           +---------------- QIP Calculator -----------------+
           | Calculation 1:                                  |
           | ......................................          |
           | RSLT: 0                                         |
           |                                                 |
           | F10:paste  SH+F10:make simulation  ESC:cancel   |
           +-------------------------------------------------+

The calculator remembers up to 20 calculations; you can move "up and down" the 
list of calculations using the UP and DOWN arrow keys.  <Shift><PgUp> takes
you to the first calculation in the list, <Shift><PgDn> goes to the last one.
You may edit any of these expressions, or press <Enter> to recalculate it as
displayed. <Shift><Enter> will copy the current calculation formula and append
it to the end of the list.

You may reference data from any Column, Row, or Cell of any Table in the 
document as part of a calculation and likewise assign the results to a Column,
Row, or Cell (see section 2.8.1 and 2.8.2 for a complete description of how 
to specify data positions).  You can also use the <F10> key to "paste" the
results of a calculation to the CURRENT cursor position (either in to Text or
a Table cell).

Note that unless specified otherwise all COLUMN and ROW references are to 
the CURRENT SECTION of the CURRENT TABLE. You may of course explicitly refer 
to any Section(s) of any Table by entering the full QIP specification (e.g.
TESA[BALANCE], or T1S2R3). 
  
                              Page --28-- 

The result of any numeric calculation which does not contain an explicit 
destination (i.e 345.78+122.4, PI*COS(60), is stored in the RSLT variable 
(displayed just below the prompt line).  The current value of RSLT may be used
in any subsequent calculations.  For example, T2S1C3R1 = RSLT / 4.
 
Pressing <F10> will paste the current RSLT value into your Document at the 
cursor position (either a Table cell or into Text).

Pressing <Shift><F10> will automatically turn the existing calculations into 
a Simulation program (3.1.6).  You will be prompted for the name for a new
program.

          +--------------- Simulation -----------------+
          | Simulation program name:.................. |
          |                                            |
          | F10:execute   ESC:cancel   F5:hide         |
          +--------------------------------------------+

Program names may be up to 10 characters long.  Simulation programs are just
like any other QPL program and may later be accessed, edited, or executed via
the Programs option on the Access menu (3.1.5).

Note that <Shift><F10> not only creates the Simulation program, but also 
turns simulation mode "On", with the newly created program.

QIP TIPS
--------
Using <Shift><F10> in the Calculator prompt to create a simulation program 
transforms each CALCulation in the calculator's stack into a CALC() command 
(see Appendix A), the syntax of which is CALC('...') with the arguments
enclosed in SINGLE quotes.  

If you have a calculation in the stack of the form C1R5 = "Hello" in
DOUBLE quotes then the CALC command created will be CALC('"Hello"'), which 
will execute correctly because there is no confusion or ambiguity with quote
marks.  If however, your calculation is of the form C1R5 = 'Hello" in SINGLE
quotes then the CALC command created will be CALC(''Hello''), and will not 
execute.
Even though C1R5 = 'Hello' in SINGLE quotes is legitimate as a stand-alone
calculation, it will not work as part of a SIMULATION.


3.1.2  ALARM CLOCK
------------------ 
The ALARM CLOCK option is a simple one-message-at-a-time reminder 
feature.  Given a date, a time, and a message, QIP will pop up a window 
with your message and beep at the specified time.  For example:

              +------------- Alarm Clock -------------+
              | Date:   ....................          |
              | Time:   ....................          |
              | Message:............................  |
              |                                       |
              | F10:execute   ESC:cancel    F5:hide   |
              +---------------------------------------+
  
                              Page --29-- 

The Date field defaults to the current day so that pressing <Enter> at the 
Date prompt will automatically use the current date.  You can enter a date in
the current date format or use date expressions such as TODAY() or DATE(). 
You may not enter an alarm date prior to the current day.

The Time prompt has no default, therefore you must enter a valid time.  Note
that the time format used for the Alarm clock (HH:MM or HHMM) is slightly 
different from the time formats used in calculations.  For convenience, 
seconds are omitted in Alarm clock time specifications (e.g. 15:16 or 1516 
will be interpreted as 15:16:00, 3:16 in the afternoon, instead of 00:15:16,
15 minutes 16 seconds past midnight). 

You may also use one of QIP's time functions to specify the alarm time such 
as MTIME(NOW,15) (15 minutes from now). You may not enter a time earlier than
the current time on the current day (the time may be earlier than the current
time if the date is later). 

Alarm messages may be up to 30 characters long.

When the alarm goes off it will pop up a window with your message and beep 
to get your attention -- you must then press <ESC> to close the window and 
clear the alarm time and message.  The ALARM CLOCK stores only one message at
a time, setting it with a new date or time overrides any existing (or pending)
alarm.  An example ALARM message is shown below.

     +-------------------------------------+
     | ALARM Date: 02/15/1990  Time: 16:45 |
     | ET Phone Home                       |
     |                                     |
     | F10:Snooze   ESC:cancel             |
     +-------------------------------------+

Pressing <F10> is similar to the snooze button on a real alarm clock.  
The Alarm Clock will wait five minutes (snooze time set in QSETUP) and notify
you again.


3.1.3  TABLE MODE / TEXT MODE
-----------------------------
This option toggles between TEXT and TABLE modes (identical to <F8> key).  
Selecting this option will switch from the current mode into the other.  See
section 2.6 for a detailed explanation of TEXT and TABLE modes. 

When you are in TEXT mode and the cursor is inside a table you will go 
directly into TABLE mode in that Table.  If the cursor was not inside a table,
The Table menu will be opened with the cursor on the "Create" option so you 
can easily enter the information needed to create a new table, or you can 
move down to the "Goto" option to move to an existing Table.  


3.1.4  DOCUMENT and PROGRAM BUFFERS
-----------------------------------
The ACCESS menu is also sensitive to the current buffer and will modify its 
displayed options to let you switch form one to the other.  When you are in 
the DOCUMENT buffer, the ACCESS menu displays the Programs option.  When you 
are in the PROGRAM buffer the menu shows the Document option.  Note that when
you are in the PROGRAM buffer, both Programs, Document are available. 
  
                              Page --30-- 

There are no restrictions on switching buffers -- you may freely switch
between the buffers in any order.  If you select the Programs option (from 
either the DOCUMENT or PROGRAM buffers) the PROGRAM menu will be opened 
automatically.

 
3.1.5  PROGRAMS
---------------
Selecting this option opens the Programs menu.  Program options include the 
creation, editing, listing, and executing of QPL programs.  QPL programs may
also be executed directly (from the Document buffer) by selecting their
"HOT KEY" (4.2).  Note that these "HOT KEYS" take precedence (override) the
normal QIP definition of those keys.

        +-----------------+
        | List            |
        | eXecute         |
        | Edit            |
        | Create          |
        +-----------------+

All Programs menu options bring up the Program List window to help you select
the name of the program you want to use.  This prompt box is functionally 
identical to a Directory listing (see section 3.5.8) except that it lists QPL
program names and their "HOT KEYS".

Example:
   +--------------- Program Titles:  EDIT ----------------+
   | Program name: *.........                             |
   |                                                      |
   | ENTER:accept  ESC:cancel  TAB:programs               |
   +------------------------------------------------------+
   +------------------------------------------------------+
   | PROG1  ()           DEMO    (~D)        FORM-1   ()  |
   | SAVE   (^S)         BACKUP  ()                       |
   |                                                      |
   +------------------------------------------------------+


LIST
Selecting List opens a Program titles window and lists all existing QPL
programs and their assigned "HOT KEY".

EXECUTE
Selecting the eXecute option lets you choose which QPL program you want to 
run.

EDIT
Choosing the Edit option lets you specify the name of an existing QPL
program you want to Edit.  Once you have selected the program you will be 
placed in the PROGRAM buffer with the cursor placed on the first line of the 
program ready for editing.

CREATE
The Create option is slightly different from the other Program Menu options 
in that the Program Titles window cannot list programs which have not yet been
Created.  For the Create option only you must specify an actual program name.
QPL program names may be a maximum of 10 characters.  Once you have entered
the program name you will be placed in the PROGRAM buffer with the cursor on 
the first line of the new program.
  
                              Page --31-- 
 
QIP TIP
-------
For the EDIT and CREATE options on the Program menu, entering a "." (period)
on the file name prompt will move you directly to the Program Buffer.

Note also that any QPL program can be "Exported" (section 3.5.7) to a disk 
file and then "Imported" (3.5.6) into another Document.


3.1.6  SIMULATION
-----------------
Simulation enables or disables the execution of a QPL program whenever a cell 
is changed during table editing.  When Simulation is "On" a QPL program will 
automatically execute whenever a table cell value changes.  If Simulation is
currently disabled, then selecting Simulation will bring up the Simulation
prompt box.

          +--------------- Simulation -----------------+
          | Simulation program name:.................. |
          |                                            |
          | F10:execute   ESC:cancel   F5:hide         |
          +--------------------------------------------+

You must enter the name of an existing program to the Simulation program name
prompt.  Simulation programs may be created and edited like any other QPL 
program (see section 3.1.5 on accessing the Program buffer) or can be created 
by pressing <Shift><F10> in the QIP Calculator.

To create a Simulation with the Calculator you first perform any series of
calculation(s) you want on your data.  Pressing the <Shift><F10> key will 
automatically turn the list of calculations you entered into a QPL program.
This program can be used as-is or edited like any QPL program.

The range of functions available to the Simulation program is the same as 
any QPL program (Appendix A) you may use any of the Date/Time, QPL system 
access functions, string, mathematical, and financial functions built into
QIP (see Appendix B).

QIP TIPS
--------
There are several shortcuts available for moving between buffers and
switching modes.
   The <F8> key can be used to switch between TEXT and TABLE modes.
   The <Ctrl>\ (Control Backslash) key also switches between TEXT and 
       TABLE modes.
   The Goto key <F7> can be used to move to any location or table in
       a buffer or to switch between TEXT and TABLE modes.
   The <Shift><F7> key will put you directly into the DOCUMENT buffer 
   The <Shift><F4> key will display the PROGRAMS menu.

  
                              Page --32-- 
 
                      3.2  B L O C K  M E N U 

       DOCUMENT            PROGRAMS
    +------------+      +------------+
    | Delete     |      | Delete     |
    | Copy       |      | Copy       |
    | Move       |      | Move       |
    | Paste      |      | Paste      |
    | Yank       |      | Yank       |
    +------------+      +------------+

The BLOCK menu is used to perform operations on marked ranges of data 
(see section 2.3.4 for more detail on marked ranges).  For all the block 
operations, with the exception of Paste, you can either mark a block 
first then choose the operation, or choose an operation first then mark 
the block.


3.2.1  DELETE
-------------
The Delete option deletes blocks of text in a single operation.  If there is
a range of text marked when you select the Delete option that text is 
immediately deleted.  If there is nothing currently marked when you select 
Delete then "Delete What?" appears on the reminder line.

The current cursor position is used as the starting position of the range.
You can use any of the cursor positioning keys to move the cursor to the end 
position.  The marked text will be highlighted so that you can easily see 
exactly what is marked.  The <F10> key finishes the marking operation and 
deletes the marked text.  As with all QIP commands pressing <Esc> at any time
aborts the operation and clears the marks.

A copy of the Deleted text is also written to the Work area and may be Pasted 
back into the Document buffer as often as you wish (with the paste key <F6>).


3.2.2  COPY
-----------
Copy will make copies of marked ranges of text anywhere within a buffer.  Like
the other Block menu options you may mark a block of text before selecting the
Copy option or select Copy first and then mark the text.  

If there is an existing marked block when you select Copy then the marked text
will be immediately copied to the current cursor position with no further 
prompting.

When you select Copy with no block marked the "Copy What?" prompt appears on 
the reminder line.  You may use any cursor movement keys to move the cursor to
a new position.  When you are finished marking text press the <F10> key, and 
the "Copy To where?" prompt will be displayed on the reminder line.  Use the 
cursor movement keys to put the cursor where you want the marked text to be 
inserted and press the <F10> key to perform the copy operation.

A copy of the marked text is also written to the Work area and may be Pasted 
back into the Document buffer as often as you wish (with the paste key <F6>).
  
                              Page --33-- 

3.2.3  MOVE
-----------
The Move option is almost identical to Copy.  The only difference between them
is that Move deletes the block of marked text from its original position after
it has been inserted into the new position.  The sequence of operations and 
use of keys is identical to Copy.


3.2.4  PASTE
------------
The Paste option is used to immediately copy a marked range of text from the 
Work area into the Document buffer.  Paste differs from Delete, Copy, and
Move in that there must be something in the Work area before you select the 
Paste option. 

Generally Paste will be used in conjunction with the "Yank" option which is
used to copy a range of text into the Work area.


3.2.5  YANK
-----------
Yank is used to write blocks of text to the Work area and leave them marked 
for subsequent use by the Paste option.  The Yank option is identical to the
Copy option with the exception that it copies ONLY to the Work area. 

Note that the Block options always OVERWRITE the current contents of the 
Work area.

Although Paste and Yank are generally used together, Paste will actually use 
whatever is in the Work area, not necessarily what was last "Yank"ed.


QIP TIP
-------
The <F6> (paste key), <Shift><F6> (yank key), and <Ctrl>Y (delete line key)
are very useful shortcuts for some of the BLOCK options.  For example, to 
quickly move or copy a single line, you can delete it or yank it (<Ctrl>Y,
or <Shift><F6>)then paste it back (<F6>) somewhere else (as many times as you
need).


VERY IMPORTANT POINT
--------------------
You may mark a range containing a table and perform any of the BLOCK options
on that range, however, a table copied as TEXT will no longer be recognized by
QIP as a TABLE.  Notice also that the table ruled-lines are NOT copied.

  
                              Page --34-- 
 
                       3.3  C O L U M N  M E N U

          DOCUMENT    
      +--------------+
      |  Lines       |
      |  Delete      |
      |  Insert      |
      |  Width       |
      |  Attributes  |
      +--------------+

The Column menu is available only in the DOCUMENT buffers and only in TABLE 
mode.  It can be used for performing block operations on Tables, setting or 
modifying table column widths and attributes, and managing ruled line columns.

Note that all Column menu options work with either the CURRENT column (by 
default) or a marked range of columns.

3.3.1  Lines
------------
Lines is used to manage the ruled-line columns in a Table.  Vertical ruled 
lines in a Table are actually one-character-wide columns and are treated as
data columns.  For example, if your original Table had column 1 as [Name] and
column 2 as [Address] and you inserted a ruled-line column between them, the
ruled line would be column 2 and [Address] would become column 3.

     +----------+
     |  Insert  |
     |  Append  |
     |  Delete  |
     +----------+

Use the Lines Insert option to insert a ruled-line column to the left of the
current (or marked) column.  Use Lines append to append a ruled-line column to
the right of a column.

For single columns the Lines Delete option will first try to delete a ruled-
line column on the left.  If there is not a ruled line on the left it will 
delete the ruled-line column on the right, if one exists. 

The Lines options work similarly on a marked range of columns.  The Insert 
option will insert ruled lines to the left of all the columns in the range.
The Append option will insert ruled lines to the right of each column in the 
range.  The Delete option will delete all ruled lines between the columns in 
the marked range.  

As a special case, if the marked range includes all the columns in a table 
the Insert, Append, and Delete options insert or delete ruled line columns 
throughout the table. including the extreme left and right edges.

 
3.3.2  DELETE
-------------
The Delete option will delete either a marked range of columns, the current
column (the default when no range is marked).  The columns which will be 
deleted are highlighted so you can see exactly what will be deleted, and a 
verify prompt will be displayed in the upper right corner of the screen.
  
                              Page --35-- 

     +-------------------------+
     |  Delete marked area: .  |
     |  YES:  NO:  ESC:cancel  |
     +-------------------------+

You must respond with either Y, N, or <Esc>.  No other keys are accepted.  A 
Y means YES, delete the marked column(s).  An N or an <Esc> means NO, do not 
delete the marked column(s), abort the Delete operation and exit the Column 
menu.


3.3.3  INSERT
-------------
The Insert option is used to insert or append new columns into a Table.  When 
you select the Insert option the INSERT/APPEND prompt box will appear.

+---------------- Insert/Append Column(s) --------------------+
| Width(s) of Column(s) to insert (Default = 10):             |
| ..........................................................  |
|                                                             |
| Append       Off                                            |
|                                                             |
| F10:execute     ESC:cancel      F5:hide                     |        
+-------------------------------------------------------------+

The INSERT/APPEND prompt box lets you specify the width(s) of the new 
column(s).  If you specify a single width value, then one column will be 
inserted or appended.  If you specify more than one width value, then more 
than one column will be inserted or appended.

If Append is "Off" then all column insertions will be to the left of the 
current or marked column(s). If Append is "On" then all insertions will be to
the right of the highlighted column(s).

If there is a range of columns marked when you select Insert then all 
INSERT/APPEND operations will apply to the entire range. The new columns will
be inserted to the left or appended to the right of each of the columns in the
range.  


3.3.4  WIDTH
------------
The Width option is used to change the width(s) of column(s) in a Table.  New
width values are entered through the CHANGE COLUMN WIDTHS prompt box.  You 
must enter at least one width value, there is no default for this prompt.

         +-------------- Change Column Widths --------------+
         | New column width(s)?:                            |
         | ................................................ |
         |                                                  |
         | F10:execute  ESC:cancel  F5:hide                 |
         +--------------------------------------------------+

The Width option will operate on the current column (by default) or on a 
marked range of columns.  If there are several columns marked and you then 
enter a series of width values, each successive width will be applied to one 
column in the range proceeding from left to right. If you specify fewer widths
than the number of columns, then the remaining columns will all use the last 
  
                              Page --36-- 
 
width value.  Entering more widths than the number of columns will cause an 
error.

For example, if columns 1, 2 and 3 are marked:

  Specify new widths: 5,10,5   -  Columns 1 and 3 will be 5 characters wide
                                  and Column 2 will be 10 characters wide.

  Specify new widths: 5   -  Columns 1, 2, and 3 will all be 5 characters 
                             wide.

VERY IMPORTANT POINT 
--------------------
If you specify a width narrower than the data currently in the column, data 
will be truncated (and lost forever) without warning.

 
3.3.5  ATTRIBUTES
-----------------
The Attributes option lets you set or change column data attributes. The 
column attributes control how data is stored and how it is displayed on the 
screen, but do not restrict how the data may later be processed.

       +---------------------+
       | Numeric             |
       | Alpha         On    |
       | Date                |
       | Time                |
       | Justify       Left  |
       +---------------------+

When you open this menu the attributes of the current column are shown on 
the menu.  If you have marked a range of columns the attributes of the first 
column in the range are used.

The Attributes menu is slightly different than most other QIP menus in that 
you use <F10> to close the menu and perform the requested operation(s).  This
is so that you can set or change more than one attribute at a time without 
having to close and re-open the Attributes menu.

You may choose any one of Numeric, Alphabetic, Date, or Time -- they are 
mutually exclusive.  Data with any of those attributes may be justified to 
the left, to the right, or centered.

Selecting the Numeric attribute opens up the NUMERIC ATTRIBUTE prompt box.

        +--------- Numeric Attribute ----------+
        |  Number of decimal places (0-15): 0. |
        |                                      |
        |  Rounding         Down               |
        |  Comma            Off                |
        |                                      |
        |  F10:execute  ESC:cancel  F5:hide    |
        +--------------------------------------+            

The Number of decimal places can be from 0 to 15 (the number of places to the
right of the decimal point).  The current column attribute values are shown
on the prompt and will be used as the default.
  
                              Page --37-- 

Rounding of decimal data can be one of "UP", "DOWN", or "NEAREST".  For 
example, if your data is 3.57 in a two decimal place column, then Rounding 
"UP" will display 3.58, Rounding "Down" will display 3.57, and Rounding 
"NEAREST" will display 3.58

The Comma toggle controls the display of commas in numeric data (e.g. 
1,000,000 vs. 1000000).

Notice that column numeric attributes are "encoded" on the Status Line.  For 
example, if Comma is set to "OFF", the word "Rounding" is displayed followed 
by one of "U", "D", or "N" and a number representing the number of decimal 
places.

   Rounding: U3   -  Rounding is "UP" with 3 decimal places
   Rounding: D10  -  Rounding is "DOWN" with 10 decimal places
   Rounding: N0   -  Rounding is "NEAREST" with 0 decimal places

When Comma is set to "ON", one of "U", "D", or "N", the number of decimal 
places, and the word "Comma" are displayed. For example:

   U0, Comma  -  Rounding is "UP" with 0 decimal places and commas
   D12, Comma -  Rounding is "DOWN" with 12 decimal places and commas
   N2, Comma  -  Rounding is "NEAREST" with 2 decimal places and commas

VERY IMPORTANT POINT
--------------------
Any "rounded off" or "truncated" digits will be lost (irretrievably) without 
warning.  Setting the attribute of high-precision data to fewer decimal place
accuracy changes the ACTUAL VALUE stores not just its displayed value,  re-
setting the attribute back to a higher number of decimal places will only pad
with zeros to the right.

The Alpha attribute signifies free-format -- the data is stored and displayed
just as it was entered.

The Date and Time attributes are used to store and display data in the current
(user settable) date and time formats.  See Appendix D on the QSETUP program 
for more detail on QIP's date and time handling. 

Examples: 01/10/1989, 89-01-10, 08:55:00, 08.55.00

Data within a cell may be right or left justified, or centered regardless 
of the data attributes assigned.  Even Numeric, Date, and Time 
data may be centered or left justified.
  
                              Page --38-- 
 
                     3.4  E F F E C T S  M E N U

                 DOCUMENT
        +-----------------------+
        |  Priority        Data |
        |  default All          |
        |  Underline       Off  |
        |  Highlight       Off  |
        |  Expand          Off  |
        |  Red                  |
        |  Green                |
        |  Yellow               |
        |  Blue                 |
        |  Magenta              |
        |  Cyan                 |
        |  Default color   On   |
        +-----------------------+

The Effects menu options control how data is displayed on the screen and on 
printouts.  The Effects options allow you to set and change characteristics 
such as Highlighting, Underlining, and color (within any limits imposed by 
your monitor).  All of the Effects options can be used to set effects for new 
data or to set attributes for marked ranges of text or tables.  The current 
effects settings are displayed in the effects window near the bottom right 
edge of the screen.

The Effects menu, like a few others in QIP, uses the <F10> key to close the 
menu and perform the specified operations.  This is so you can easily modify 
several effects at one time (e.g. turning off Underline and setting Highlight
and Red) without having to exit and re-opening the menu for each change.


3.4.1  PRIORITY
---------------
Priority is the one of the most important of all the Effects options. Setting 
Priority to "As Set" means that all text and table data entered will have 
those characteristics explicitly set from the Effects menu.  

Setting Priority to "Data" means that new text (insert mode only) will use
the effects of the data currently under the cursor.

As an example, assuming INSERT mode, with Green and Expanded as the current 
effect selected on the Effects menu, and Red text (or table) data, then any 
new data INSERTED will be Green and Expanded if Priority is "As Set", and Red
if Priority is set to "Data". 

When insert/overwrite mode is set to "overwrite" then the new text will ALWAYS
use the effect of the original data.

QIP TIP
-------
Note that Expanded effect text is displayed as two characters, the character
you typed and a special expansion character (hard space).  This is to simulate
what will actually be a double width character when printed.

Note also that when overwriting with Expanded effect text, it will overwrite
TWO characters at a time.
  
                              Page --39-- 

3.4.2  DEFAULT ALL
------------------
Selecting default All will reset all effects to their current defaults. This
is an easy way to set several variables with a single keystroke.


3.4.3  UNDERLINE / HIGHLIGHT / EXPAND
-------------------------------------
You may set any combination of these.  They are independent of each other and
of color.


3.4.4  Red/Green/Yellow/Blue/Magenta/Cyan/White/Black/Default color
--------------------------------------------------------------------
These are used to set the display color.  You may choose any one of them.  The
text color is always Default until you choose a new one. All data in QIP has 
an effect, even if it is only Default color.

The default foreground and background colors are set externally with the 
QSETUP program, the remaining six (plus default) are displayed on the menu.
The list of colors may therefore change, but there will always be seven 
available.
  
                              Page --40-- 
 
                        3.5  F I L E  M E N U 

         DOCUMENT             PROGRAM
     +---------------+    +-------------+
     |  Quit         |    |  Quit       |
     |  Open         |    |  Save       |
     |  Save         |    |  Import     |
     |  Restore      |    |  Export     |
     |  Write As     |    +-------------+
     |  Import       |
     |  Export       |
     |  Directory    |   
     |  DOS Commands |   
     +---------------+

The FILE menu options give you access to QIP's document and file handling 
features.  Document Save and Restore, Import and Export of data files in ASCII
or WORDSTAR format, and access to DOS commands are all File menu options.

Note that most File menu options which require a file name allow you to choose
a file from a directory window with a mouse or with the arrow keys.  If 
however you choose to type in the file name you must be sure to enter a valid
DOS path and file name.


3.5.1  QUIT
-----------
Use Quit to exit from QIP (or <Alt>X).  Selecting Quit brings up a verify 
prompt box that gives you the option of saving any changes as you exit.

        +-------------------------+
        |   Save changes?: ..     |
        |                         |
        |   YES: NO: ESC:cancel   |
        +-------------------------+

Answering Y means YES, save all changes and exit QIP.  Entering an N means NO,
do not save changes before exiting.  Your file will be the same as before you
began editing.  Pressing <Esc> means ABORT the Quit option and return to QIP.


3.5.2  OPEN
-----------
Open allows you to save any changes to the current document (optional) and 
open a new document.  Open first displays a directory prompt box to let you 
"browse" through your directories and files so you can easily choose the file
to open.  You can either type in a file name at the "FILE" prompt and press 
<Enter> or hit <Enter> in the file window to choose the highlighted file.  
Refer to the Section on the Directory option (3.5.8) for a detailed 
description of how to "browse" through directories and use the <Pgup>, <Pgdn>
and ARROW keys (or mouse) to select files.
 
Open will then bring up a verify prompt box.

        +-------------------------+
        |   Save changes?: ..     |
        |                         |
        |   YES: NO: ESC:cancel   |
        +-------------------------+
  
                              Page --41-- 

Answering Y means YES, save all changes to the current Document before opening
the new document.  Entering an N means NO, do not save changes before opening
the new document.Your original file will be the same as before you began 
editing.  Pressing <Esc> means ABORT the Open option and return to QIP.

3.5.3  SAVE
-----------
Save makes an immediate backup copy of your document and returns you to QIP.


3.5.4  RESTORE
--------------
Restore re-loads the document from the backup copy.  The backup copy is 
current up to the last Save.  Any changes made to the document since then 
will be lost.  After Restore has re-loaded the document it returns you to QIP.


3.5.5  WRITE AS
---------------
Write as makes a copy of your document under a new name.  Write as first 
closes the current Document without saving any changes and without prompting.
If you want the current Document to retain any changes, you must explicitly 
"Save" before selecting the "Write As" operation. 

After closing the original Document, Write As opens a copy of the CURRENT 
Document (including any changes) as a NEW file with the given name and returns
you to QIP ready for editing the NEW file.  Any changes made to the Document 
from this point onward, are made to the NEW Document.

3.5.6  IMPORT
-------------
Import allows you to read ASCII or WORDSTAR format files into QIP.  Import 
prompts for the name of the file.  The file must already exist (it cannot be 
automatically created). 
Note: The current Directory is specified as part of the prompt title.

       +------------- Import   [C:\QIP] --------------+
       |  File: ....................................  |
       |                                              |
       |  ENTER:accept      ESC:cancel                |
       +----------------------------------------------+

Note that some graphics characters (8th bit on) may not be handled correctly.

3.5.7  EXPORT
-------------
Export allows you to write QIP format files to disk in either WORDSTAR or 
ASCII format.  Export displays the following prompt box.

    +------------------ Export  [C:\QIP] ------------------+
    |  Export Filename:        ..........................  |
    |  Range (Whole Document): ..........................  |
    |                                                      |
    |  Data Type to export           Both Text and Tables  |
    |  File Format                   ASCII                 |
    |                                                      |
    |  F10:execute   ESC:cancel   F5:hide                  |
    +------------------------------------------------------+
  
                              Page --42-- 

You will first be prompted to enter a name for the Export file.  If the file 
already exists a verify window will be displayed.

      +----------------------------------------------+
      | This File already exists - overwrite it?: .  |
      |                                              |
      | YES:   NO:   ESC:cancel                      |
      +----------------------------------------------+

Answering Y means YES, overwrite the file (this will destroy its original 
contents).  Pressing an N means NO do not overwrite the file, return to the 
prompt line to enter another file name.  Hitting <Esc> means ABORT the Export
option and return to QIP.

Next you will be prompted for a range of text and/or table data to Export.  
The default range is either the "Whole Document" or a "Marked Range" if one 
exists when you select Export.  Note that the prompt text ("Whole Document",
or "Marked Range") changes accordingly.  

The ranges accepted are identical to the Print Data range specifications
(3.7.1) on the OUTPUT menu. You may enter any combination of Pages and Lines
or Tables and Sections, but you may not specify Table data by row number.

The Data type to Export toggle allows you to select or suppress the output of
certain types of data.

The Export Format toggle is used to specify either ASCII or WORDSTAR format 
output.

 
3.5.8  DIRECTORY
----------------
The Directory prompt box lets you easily list the contents of your disk 
directories.  You can enter any valid DOS path or file specification on the 
prompt line.
Note: The name of the current Directory is shown as part of the title line.

   +------------- Directory List   [C:\QIP] --------------+
   | File: *.*.......................................     |  Directory
   |                                                      |  prompt
   | ENTER:accept  ESC:cancel  TAB:file list  PGDN:       |  box
   +------------------------------------------------------+
   +------------------------------------------------------+
   | QIP.EXE       QSETUP.TXT     QSYSTEM.V01             |  File
   | QSETUP.EXE    QPROG.V01      QPRTDEFS.V01            |  window
   |                                                      |
   +------------------------------------------------------+

When you enter a valid DOS path, the file window is opened and will display a
list of the files in that directory. The default Path is *.* (settable with
QSETUP), so just hitting <Enter> on the prompt line will display a list of 
all the files in the current directory.
  
                              Page --43-- 

Pressing the <Tab> key in the directory prompt box lets you "browse" through
the file list using the 4 <Arrow> keys.  The <PgUp> and <PgDn> keys display
the previous and next pages of the file list (if any). Pressing the <Tab> key
in the file window returns you back to the directory prompt box.


3.5.9  DOS COMMANDS
-------------------
Use DOS Commands to temporarily exit QIP and use DOS.  You may enter any valid
DOS command(s), however since QIP is a large program you may be limited by the
amount of memory available.  The exact amount of memory will depend on your 
system configuration.

         +-------------- DOS Command --------------+
         | Command:............................... |
         |                                         |
         | F10:execute   ESC:cancel   F5:hide      |
         +-----------------------------------------+

Entering a DOS command on the prompt line will temporarily exit QIP, clear 
the screen, and execute the DOS command you specified.  After the DOS command
has completed hitting any key will return you to exactly where you left off 
in QIP.

Just pressing <Enter> will put you into a DOS shell where you may execute as 
many commands as you wish.  Typing "EXIT" in the DOS shell will return you to
where you left off in QIP.
  
                              Page --44-- 
 
                     3.6  L A Y O U T  M E N U

               DOCUMENT
      +-----------------------+
      |  Edit ruler           |
      |  New ruler            |
      |  Delete ruler         |
      |  Page break           |
      |  Wordwrap          On |
      +-----------------------+

The Layout menu options are used to control screen layout and document 
formatting.


3.6.1  EDIT RULER / NEW RULER
-----------------------------
Rulers control the right and left margins, paragraph margins, and tab stops.
These two options give you control over the placing and modification of ruler
lines in the document.

All documents have at least one ruler.  New documents are created with a 
default ruler but you may Edit rulers or insert New rulers anywhere within the
document.

When editing rulers the cursor will be placed at the beginning of the nearest
ruler line above the cursor position and "Edit ruler, F10 to end, ESC to 
abort, SHIFT+F10 to Save as New Default" will be highlighted on the reminder
line.  

When you press the <F10> key your document will be reformatted up to the next
ruler (if any) according to the new ruler settings.  The <Shift><F10> key will 
save the edited ruler as the new system default (for all New Rulers and New 
Documents).  Pressing <Esc> will abort ruler editing and restore the original
ruler settings.

You can use the <Tab> key, the <Left Arrow>, <Right Arrow>, <Home>, and <End> 
keys to move along the ruler line.  The L, P, R, T, [, ] characters and the 
<Enter> key have a special meaning on ruler lines. The asterisks, digits, and
dots are just to help you count column positions. 

L, or "[" are used to mark the LEFT margin, and R, or "]" marks the RIGHT 
margin. There must be a minimum of 20 characters between the LEFT and RIGHT 
margin marks.  Note that when you enter an L or an R, special margin
characters appear instead of the L, [, R, and ].

The P marks the PARAGRAPH margin. This is separate from the left margin so 
you can set up indented areas easily.  When a text line ends with an <Enter> 
(hard carriage return), the next line of text will start at the PARAGRAPH
margin.  If the text line does not end with an <Enter> (soft carriage return)
the text will "wrap around" to the LEFT margin.

Note that a "W" displayed at the right-hand end of the ruler line indicates
that wordwrapping is "ON".  If no "W" is displayed wordwrapping is "OFF".  
Please refer to section 3.6.6 for more detail on the "Wordwrap" toggle.
 
The T character marks a TAB stop.  When you are finished with ruler editing
and press <F10> or <Shift><F10>, TABS will be automatically replicated out to
  
                              Page --45-- 
 
the right margin using the same spacing as the last TAB stop entered (if any).
For example, with TABS set at columns 5, 10, and 18.  The last spacing is 8
characters so TABS will be inserted automatically EVERY 8 COLUMNS from 26 out
to the right margin.  If there are no TABS set, none will be automatically 
created.

Use the <Space Bar>, or <Del> key to erase margin or tab marks. If you erase
the LEFT margin mark it automatically moves to the left edge of the document.
Similarly if you erase the RIGHT margin mark it is automatically moved to the
maximum width of the document until you must then use the L, [, R or ] keys 
to reset them.

You should notice that when you are in TEXT mode, TABLES have their own rulers
whose RIGHT margins are exactly the same width as the Table.  If you want to 
create text to the right of a table you will need to edit the ruler which 
controls that area and extend it.


3.6.2  DELETE RULER
-------------------
Use Del ruler to delete ruler lines.  When you delete a ruler, the document 
will be reformatted according to the next PREVIOUS ruler.  You may not delete
the first (topmost) ruler.


3.6.3  PAGE BREAK
-----------------
This will insert a hard page break into your document BEFORE the current line.
Note that the <Ctrl>P key will also insert a hard page break into your 
Document, but AFTER the current line.

These can be used to override QIP's soft page breaks.  Text or Tables will not
wrap over a hard page break.  Instead the hard page break will be "pushed" 
down as text is inserted so that there will always be a new page at the point
you specified.
 
You can change soft page breaks into hard page breaks, and vice versa, with
either the <Ctrl>Y, or <Del> key.  If you change a hard page break into a
soft page break, your Document will automatically be reformatted (text will
wrap into any "empty" space before the page break line).

QIP TIP
-------
When text is deleted, lines "wrap up" from the page below one line at a time.
This is fine for Text, and adjacent Sections of a Table, but is not correct 
for the first line of a Table or Sections separated by text lines.  

Many Tables will have a header line (Table title), and all Tables will have 
column header(s), and ruled lines which should not "wrap" one line at a time 
(you would not want to ses the Table header, one ruled line, and a column 
header on one page, and the rest of the Table on another page).

In these cases (when the first line of a page is part of a Table and the lines
above it are Text), QIP will automatically insert a hard page break line above
the Table, and will not wrap the table across it as you delete text on a page
above a table.  You may, in these situations have to manually change the hard
page breaks into soft page breaks by using <Ctrl>Y, or <Del> as described in
section 3.6.3 above.
  
                              Page --46-- 

3.6.4  WORDWRAP
---------------
This is used to toggle word wrapping "ON" or "OFF".  If Wordwrap is "OFF" 
then text will wrap from line to line by characters instead of whole words.  
Conversely, when Wordwrap is "ON" text will wrap by whole words.  Wordwrapping
uses only the space character as the delimiter between words.

When wordwrapping is "ON" a capital "W" will be displayed at the right end of
the ruler line.
  
                              Page --47-- 
 
                     3.7  O U T P U T  M E N U 

           DOCUMENT                PROGRAM
     +------------------+    +------------------+
     | Print Data       |    | Print Data       |
     | Format Page      |    | Format Page      |
     | To Where         |    | To Where         |
     | Colors and Fonts |    | Colors and Fonts |
     | Merge Print      |    | Merge Print      |
     | Save as Defaults |    | Save as Defaults |
     | Restore Defaults |    | Restore Defaults |
     +------------------+    +------------------+

The Output Menu options control the printout of QIP text and table data, as 
well as Merge Printing and QPL program listings.  Most of the parameters that
affect printouts can be set here, although some may only be changed externally
with the QSETUP program.  For convenience the options have been grouped 
together and ordered with the most often changed items first.


3.7.1  PRINT DATA
-----------------
Print Data is used to do the actual printing of text, table, and QPL programs.
Controlling information is entered through the Print Data prompt box.

  +----------------------- Print Data --------------------------+
  | Range (Whole Document): ..................................  |
  | Number of copies:               1...                        |
  |                                                             |
  | Data type to print              Both Text and Tables        |
  |                                                             |
  | F10:print  SHIFT+F10:exit no print  ESC:cancel  F5:hide     |
  +-------------------------------------------------------------+

Use Range to print to specify what you want to print.  You may enter any valid
QIP range specification for PAGE, LINE, TABLE, or SECTIONS. You may not 
specify a range of ROWS as part of a TABLE range, however you can print a 
range of table rows by using their corresponding PAGE and LINE numbers.  Refer
back to the Overview section on Range Specifications for a more detailed 
explanation (section 2.8).  

When there is marked text in the current buffer, the Range to print default
changes to "Marked Range".  Pressing <F10> will print the marked block of 
text.  Note that Range to print accepts only whole lines.  Even though the
marked range may begin or end in the middle of a line, the entire line will
be printed.
 
QPL programs are printed by specifying the name of the program enclosed in 
angle brackets e.g. <PROG1>.  

The Number of copies defaults to one.  You may enter any number of copies up 
to 99.

Using the Data type to print toggle you can choose to print both the Text and
Tables within the range or you may choose to print only the Text or Table 
portions.
  
                              Page --48-- 

3.7.2  FORMAT PAGE
------------------
The parameters for controlling page layout and formatting are set from the 
Format Page prompt box.

       +-------------- Format Page --------------+
       |  Left Margin (0 to 20 chars):...        |
       |  Top Margin (0 to 20 lines): ...        |
       |  Start Page Number:          ........   |
       |                                         |
       |  Justification            Standard      |
       |  Graphics Characters     Translated    |
       |                                         |
       |  F10:execute   ESC:cancel   F5:hide     |
       +-----------------------------------------+

The Left margin value is specified in units of characters (1/10 of an inch 
per character).  The right margin is not a Layout menu option, it can be set 
to the required position using ruler lines in the document.

The Top margin is in units of lines (single spaced, about 1/6 of an inch for 
most printers).  The bottom margin is not a Layout option, it is calculated
internally by QIP (bottom margin = paper length - lines per page - top margin).  

The Start page number defaults to one, but may be set to any value (up to 
32767).  This is useful when you need to print various sections or chapters of
a document separately, and still get the page numbering in the correct order.
Note that this is the start number for PAGE NUMBERING and is not related to 
the number of pages that will be printed.
 
QIP supports left page/right page printing for document pages that will be
printed on two sides or bound together as a book.  The "Justification"
toggle can be set to "Alternating" to shift the printed text to the right
on odd-numbered (right hand) pages.

It does not change your margin settings, the whole printable area is shifted
to the right.  The distance it is shifted defaults to five characters (about
1/2 inch), and can only be set externally with the QSETUP program.

GRAPHICS CHARACTERS
------------------
IBM PC's and compatibles all support some level of screen graphics. QIP uses
this capability for the ruled lines in tables, the different shades in bar 
graphs, and other special characters displayed on the scale lines.  

Most printers also support graphics character printing, but not all printers 
use the same codes as the IBM PC for the graphics characters. The Graphics 
characters option allows for three different methods of printing graphics 
characters, at least one of which will work with your printer.

Select "As graphics" if you have a 100% IBM compatible printer which uses the
same character codes as an IBM PC.  "As graphics" means that QIP will not 
alter the output character in any way.  The character codes used to represent
the character on the screen are sent as-is to the printer.
  
                              Page --49-- 

If your printer supports graphics printing but uses different character
codes then select "Translated" and QIP will use the codes defined by you in
QSETUP.TXT.  For each IBM graphics character you will have to put in the 
equivalent code for your printer (all 56 of them, but you only have to do it
once).

The third method (and perhaps easiest to start with) is "Generic".  The
"Generic" method uses simple non-graphics characters that are the same basic 
shape as the true graphics characters and which should work on all printers.
For example ruled-lines would be printed as

         +-------+----------+-------+
         |       |          |       |
         +-------+----------+-------+
         |       |          |       |
         +-------+----------+-------+

Note that the example translation codes in QSETUP.TXT are for this generic
set.


3.7.3  TO WHERE
---------------
The To Where options allow you select a printer and configure some of its 
characteristics.  To Where parameters are entered from the prompt box.

       +-------- Printer Configuration ---------+  
       |  Printer Selection:      Generic       |
       |  Output Data to:         Printer       |
       |  Eject extra pages       0             |
       |  Color Printer           No            |
       |  Sheet Feeder            Yes           |
       |  Wait between Pages      No            |
       |                                        |
       |  F10:execute  ESC:cancel  F5:hide      |
       +----------------------------------------+

QIP allows you to access any of three different printers.  The three choices
are made externally with QSETUP.  Within QIP you choose the one you want to 
use with the Printer selection option.  It will cycle between the three 
printers until you stop on the one you want.
 

OUTPUT DATA TO
Output data to lets you choose where to send the data.  The available choices
here are "Printer", "Disk file", or "Spooler".  When you send data  to a
"Disk file" the file will have the same name as the document from which it 
was printed, but with an extension of ".Pnn" (where nn is a two digit number
from 00 to 99).  Each time you send data to a disk file the number will be 
incremented so that you will not overwrite any saved data.

The "Spooler" option allows you to make use of the DOS background printing
capability.  When you send your data to the spooler it will print in the
background while you continue to work.  Spooler files are named similarly to 
disk files except that their extension is ".Snn".  Note that spool files are 
not deleted after they are printed so you will need to manage them yourself.
  
                              Page --50-- 

DOS requires that the resident part of PRINT.COM be loaded in order for 
background spooling to work.  QIP will always create the spool file with your
data, but if PRINT.COM is not loaded QIP will notify you that the file was 
created but could not be printed.


EJECT EXTRA PAGES
This option lets you control the number of pages ejected when your printout 
is complete.  QIP will always "advance" to the bottom of the last page 
printed.  You may set Eject extra pages to "0", "1", "2", or "3" pages.  This
can be quite convenient if you have a printer which requires you to eject 
pages before tearing off the paper.


SHEET FEEDER
Sheet feeder tells QIP whether you have a sheet feeder type printer or
whether your printer uses continuous (fan fold) paper.  A "Yes" means you
have a sheet feeder and QIP will use the special control codes you define in
QSETUP.TXT to load and eject the pages.  A "No" means you are using continuous
type paper (QIP will not use the control sequences from QSETUP.TXT even if 
they are defined there).

Note that only one set of codes is defined in QSETUP.TXT.  Although QIP allows
you to access three printers, you can define control codes for only one sheet
feeder.


WAIT BETWEEN PAGES
Many printers have a manual paper feed, or a single sheet feeder.  In order to
accommodate these types of printers set this toggle to "Yes" and QIP will 
prompt you with the message

       +-----------------------------------------+
       |  Put next sheet into printer - ready?:  |
       |                                         |
       |  Press any key to continue              |
       +-----------------------------------------+
 
and wait until you press a key before loading the next sheet into the printer.


3.7.4  COLORS AND FONTS
-----------------------
Use the Colors and fonts option to assign printer fonts to screen colors. 
Your first choice will be from a colors menu (Note that this list may change
depending on the default color, but that there will always be seven available
colors).

       +-----------------+
       |  Red            |
       |  Green          |
       |  Yellow         |
       |  Blue           |
       |  Magenta        |
       |  Cyan           |
       |  Default color  |
       +-----------------+
  
                              Page --51-- 

You may assign any or all of these colors to a printer font with the 
Colors and fonts prompt.
 
       +--------------- RED --------------+
       |  Letter Style           Upright  |
       |  Typeface               Draft    |
       |  Characters per inch    10       |
       |  Proportional Spacing   No       |
       |  Use on this Pass       Yes      |
       |                                  |
       |  F10:execute ESC:cancel F5:hide  |
       +----------------------------------+

For Letter style choose one of "Upright", "Italic", "Subscript", or
"Superscript".

The Typeface can be any one of "Draft", "Prestige", or "Courier".

Characters per inch may be any one of "10", "12", or "16".

Any of these may be proportionally spaced by setting Proportional spacing to
Yes".  Proportional spacing is turned off for all printing within tables since
it would affect the alignment of column data and ruled lines.  Note that 
selecting "12" or "16" character per inch type may also affect column 
alignment.

Note that all the above choices may be limited by what capabilities of your 
printer.  If you choose a font that is not available on your printer, the
closest matching font will be used instead.


USE ON THIS PASS
This may be toggled "On" or "Off" to suppress printing for a specific color.
If set to "Off" then spaces will be printed (in the correct spacing and 
character size) so you can print in two or more passes.  This is useful for
multi-pass printing on printers that require you change ribbons or cartridges
between fonts.


3.7.5  MERGE PRINTING
---------------------
Merge printing combines Text and Table data for printout.  It can be used to
generate form letters, invoices, stock lists, and similar reports. Text and 
Table ranges are entered from the Merge print prompt box. 

        +---------------- Merge Print -----------------+
        |  Page Range: ..............................  |
        |  Table Data Range: ........................  |
        |                                              |
        |  Use Effects            From Text            |
        |                                              |
        |  F10:execute   ESC:cancel   F5:hide          |
        +----------------------------------------------+

The Page range may be any valid QIP TEXT specification, but it must be in 
terms of PAGES and/or LINES.  You may not refer to TABLES, SECTIONS, or ROWS
as part of the Page range.  Similarly, the Table data range can be entered 
only in terms of TABLES, SECTIONS, and ROWS.
  
                              Page --52-- 
 
The Page range may refer to TEXT in any part of your document and may contain 
multiple range specifications separated by commas.  For example "P1,P2..4" or 
"P3L1..10,P5".  The Table data range may contain only a single range  speci-
fication.  For example "T1", or "SA", or "T3R1..100", or "T1S2..3".  One pass
through the Page range(s) will be generated for each row in the Table data 
range.

When you specify multiple page ranges they are processed one a time from left
to right.  As an example, with a Page range of "P1..3" and a Table data range
of "T1S1R1..10" a total of 30 pages will be generated, 3 pages from row 1, 3
pages from row 2, 3 pages from row 3, etc. in that order.

The way Merge printing works can best be described by means of an example.  
Given the text and table shown below:

Dear [TITLE] [last name],
    According to our records your account in the amount of $[Amt] is
more than [D] days overdue.  Please remit as soon as possible.

                                        Sincerely yours,

  +-------+------------+------------------------+------+----------+
  | TITLE | FIRST NAME |       LAST NAME        | DAYS |   AMT    |
  +-------+------------+------------------------+------+----------+
  | Mr.   |Peter       |Wallman                 |  103 |    407.85|
  +-------+------------+------------------------+------+----------+
  | Miss  |Sally       |Bolland                 |   95 |     27.66|
  +-------+------------+------------------------+------+----------+
  | Mr.   |Michael     |Jameson                 |  134 |   1028.39|
  +-------+------------+------------------------+------+----------+

Merge print will generate three form letters.  The first will look like this:

Dear Mr. Wallman,
    According to our records your account in the amount of $407.85 is  
more than 103 days overdue.  Please remit as soon as possible

                                        Sincerely yours,
 

Wherever a [column header] enclosed in square brackets appears in the text, 
the table data from that column (of each row) will be substituted when 
printed. As can be seen from the example there may be more than one 
substitution per line and the columns may be accessed in any order (or more 
than one time for each pass).

You can control the spacing and justification of the substituted data in the
following way:

     [A]      -  If there are no spaces between the column title and the []'s
                 then the Table data will be substituted "as-is".
                 
     [A    ]  -  If there is at least one space between the column title and
                 the RIGHT bracket then the Table data will be LEFT justified
                 within the number of spaces between the brackets.
                 
     [    A]  -  If there is at least one space between the column title and
                 the LEFT bracket then the Table data will be RIGHT justified
                 within the number of spaces specified.
  
                              Page --53-- 
 
     [  A  ]  -  If there is at least one space between the column title and
                 BOTH brackets then the Table data will be CENTERED within the
                 the space.
                 
Note that if the Table data is longer than the number of spaces specified, it
will be substituted "as-is".

If you need to use "[]" square brackets within your text the opening bracket 
must be immediately preceded by the "\" backslash character (there must be no
spaces between the "\" and the "[").  Closing brackets "]" do not need to be 
preceded by a backslash, but they must not occur within a column header.

Effects, may be taken from either the original Text or the substituted Table 
data.

Note the use of abbreviations in the [column header] names.


3.7.6  SAVE AS DEFAULTS
-----------------------
Selecting Save as defaults will make all the current OUTPUT setup values 
replace the existing defaults.  The next time you use QIP (even on a different
document) Output will use these values.


3.7.7  RESTORE DEFAULTS
-----------------------
Restore defaults replaces the current Output  settings with their last-saved 
(current default) values.  This is useful if you want to temporarily change 
some values -- You can then Restore them all in one operation instead of 
having to change them back one by one.
  
                              Page --54-- 
 
                     3.8  P R O C E S S  M E N U

             DOCUMENT
         +--------------+
         |  Update      |
         |  Sort        |
         |  subTotal    |
         +--------------+

The Process menu options are available only in TABLE mode.  The Process menu 
options are all conventional, yet powerful, functions for use on table data.


3.8.1  UPDATE
-------------
Update is an extremely useful and flexible option that allows you to Update 
or modify an existing table "in place".  You may enter up to three search 
(select) conditions.  For each condition you then specify one or more 
execution functions which will be applied whenever the search condition is 
satisfied.

   +----------------------- Update --------------------------+
   | Search Condition 1:                                     |
   | ....................................................... |
   | Update Function(s) for Condition 1:                     |
   | ....................................................... |
   | Search Condition 2:                                     |
   | ....................................................... |
   | Update Function(s) for Condition 2:                     |
   | ....................................................... |
   | Search Condition 3:                                     |
   | ....................................................... |
   | Update Function(s) for Condition 3:                     |
   | ....................................................... |
   |                                                         |
   | Verify                No                                |
   | Mode                  Section only                      |
   | Ignore case           No                                |
   | Wildcards (* or ?)    No                                |
   |                                                         |
   | F10:execute     ESC:cancel     F5:hide                  |
   +---------------------------------------------------------+

The Search condition is a logical expression (2.9.3).  You may refer to
items (2.8.1) in any Table position e.g.:

   C1 < 0
   [NAME] > "A" AND [NAME] < "N"
   C3 > C4 OR [OVERDRAFT] <> 0

Note that all search expressions MUST reference a DATA item from the CURRENT
Table.  You may not use any of the built-in functions on the Lefthand side of
a search condition (but you may on the right e.g C1 = TODAY).   

You may enter one or more UPDATE functions (separated by ";" semicolons) for
each search condition, e.g.:BELL(3); EFFECT([BALANCE],RED).  Update functions
may be "mixed and matched" except for "DELETE" which must be alone, and 
"REPEAT" which must be the last function on the line.
  
                              Page --55-- 

The following is a complete list of all Update functions:

Function name     Example(s)         Description
-------------     ----------         -----------
DELETE            DELETE             Deletes the CURRENT row
EDIT              EDIT(C6..8)        The user is placed in Table editing
                  EDIT([COMMENT])    mode and allowed to edit the specified
                                     columns in the CURRENT row.
REPLACE           REPLACE(C6,"Old string","New string")
                                     Replaces "Old string" with "New 
                                     string in the column specified.
                                     Note: Replace respects column widths
                                     and will truncate strings which are
                                     too long.
CALC            C3=C5*C2R4           General calculations.  Note that 
                C7=BGRAPH$(C3,0,100) although the result(s) are stored 
                                     in the CURRENT row, references may 
                                     be made to any row(s) in the Table.
EFFECT          EFFECT(C4..7,RED+HL) Sets the effect(s) on the specified   
                                     columns. Note the compound effect 
                                     specification RED+HL.
                                     Color modifiers may be any combination of
                                       HL  -  Highlight
                                       UL  -  Underline
                                       EX  -  Expanded
                                     If a Color is specified it MUST be first.
                                     e.g.:   RED+HL+UL  --  okay
                                             HL         --  okay
                                             HL+YELLOW  --  invalid         
BELL            BELL                 Rings a bell.  Note that N must be
                BELL(N)              0, 1, 2, 3, or 4 one of the special 
                                     predefined bell tones.
REPEAT          REPEAT               This will cause ALL the other update 
                                     functions on the line to be repeated 
                                     until the search condition is no 
                                     longer true.  This can be useful in 
                                     conjunction with EDIT when searching 
                                     for incorrect entries you want the 
                                     user to correct.

Once all Search conditions and Update functions have been entered the Update 
will be performed.

If you set Verify to "Yes" then each matching row will be highlighted and the
following verification window will be displayed:

      +------------------------------------------------------+
      | Update this row with:..(update function displayed).. |
      | Skip                                                 |
      | Continue without verifying                           |
      | Quit Update (ESC)                                    |
      +------------------------------------------------------+

Pressing <F10> will execute the update functions for the row and move to the 
next matching row (if any).  Selecting Skip will NOT apply the update 
functions and move to the next matching row.  Choosing Continue without 
verifying will set Verify to "No", the update will be performed WITHOUT 
further prompting.  Selecting Quit aborts the Update and returns to document
editing.
  
                              Page --56-- 

Note that any Update functions executed BEFORE selecting Quit will not be 
"undone".
 
If mode is set to "Section only", then UPDATE will process only the CURRENT 
section of the CURRENT table.

The Ignore case toggle is used to control how conditions and data items are 
compared and matched.  If set to "Yes" then case will be ignored and both 
upper and lower case letters will be treated as matching.  If it is set to 
"No" then an upper and lower case letter will not match.
 
The Wildcards toggle may be set either "Yes" or "No".  When you set Wild 
cards to "Yes" any wildcard character(s) (* or ?) in the search condition 
will be treated much the same way in which these characters are 
interpreted by DOS.  The "*" character will match any character(s) and the 
"?" will match any single character in the same position.


3.8.2  SORT
-----------
The Sort option performs a conventional multi-key sort operation on table 
data.  Unlike most of the other table data options Sort processes the data 
"in place".  No new table is created.

       +----------------- Sort -----------------+
       |  Key column 1:  .................      |
       |  Sort Order      Ascending             |
       |  Data Type       Alpha                 |
       |                                        |
       |  Key column 2:  .................      |
       |  Sort Order      Ascending             |
       |  Data Type       Alpha                 |
       |                                        |
       |  Key column 3:  .................      |
       |  Sort Order      Ascending             |
       |  Data Type       Alpha                 |
       |                                        |
       |  Mode            Section only          |
       |  Ignore case     No                    |
       |                                        |
       |  F10:execute   ESC:cancel   F5:hide    |
       +----------------------------------------+

Sort keys must be entered in order.  You must enter Key column 1 before moving
down to Key column 2 although you may go "backwards" and modify any previously
entered Key column or toggle before executing the Sort.  You may enter less 
than three sort keys but there must be at least one.

The Sort order toggle may be set to "Ascending" or "Descending" independently
for each of the three sort keys.

The Data type toggle can be set to either "Alpha" or "Numeric" for each key.
It will override the type of the actual data attribute just for the purposes 
of sorting.  Sort does NOT use the actual column data attribute when sorting.
  
                              Page --57-- 

If mode is set to "Section only", then SORT will process only the CURRENT 
section of the CURRENT table.

The Ignore case toggle is used to control how conditions and data items are 
compared and matched.  If set to "Yes" then case will be ignored and both 
upper and lower case letters will be treated as matching.  If it is set to 
"No" then an upper and lower case letter will not match.
 
Note that any text data to the right or left of the Table will NOT be moved 
as a result of a Sort nor will any ruled line rows.

VERY IMPORTANT POINT
--------------------
Due to the constraints of limited memory, the MAXIMUM number of rows that can
be sorted is 600 (about 10 sections).  This means that a table with more than
600 lines cannot be sorted. 

3.8.3  SUBTOTAL
---------------
subTotal performs a conventional multi-key subtotal function on SORTED data.
The calculated subtotals are placed "in-line" in their correct positions in
the original table.

  +---------------------- Subtotal -----------------------+
  | Key column 1:                  ............           |
  | Key column 2:                  ............           |
  | Key column 3:                  ............           |
  | Subtotal which column(s)?:                            |
  | ..................................................... |
  |                                                       |
  | Label for key column(s)                  "Subtotal"   |
  | Ruled line after major totals            No           |
  |                                                       |
  | F10:execute   ESC:cancel   F5:hide                    |
  +-------------------------------------------------------+

You must enter at least one Key column and you may not "skip over" one.  That
is, you are required to enter Key column 1 before Key column 2, and Key column
2 before Key column 3.  Note that, like any prompt, once a Key column has been
entered and accepted you may still go back and modify it before executing.

You may subtotal any or all table column(s) except those which have been
specified as key columns.  Note that subTotal handles non-calculated and ruled
line columns in a controlled way, i.e. maintains them in the results table.

The Label for key columns toggle may be set to either "Subtotal" or "Column 
Title".  If you choose "Subtotal" then the subtotal rows will be labeled 
"Subtotal 1", "Subtotal 2", and "Subtotal 3" corresponding to the three key 
columns (if specified).

The Ruled line toggle controls whether or not a ruled line row is inserted 
AFTER the subtotal row.  This toggle may be set to either "Yes", or "No".

QIP TIPS
--------
Since the Process menu options use only COLUMN numbers or ranges, when a 
prompt specifically asks for a column or column range you may use  a "1" or
"3..6,7,9" instead of "C1" and "C3..6,C7,C9".
  
                              Page --58-- 
 
                         3.9  R O W  M E N U

          DOCUMENT     
      +--------------+ 
      |  Lines       |  
      |  Delete      | 
      |  Copy        | 
      |  Move        |
      |  Insert      |
      +--------------+    

The Row Menu is in every way analogous to the Column Menu (section 3.3).  Row
ranges for block operations are all specified in identical fashion.  The two 
exceptions are that you cannot specify ROW widths or attributes, and that you
may Move and Copy rows.

Note also that rows will wrap over soft page breaks as they are inserted or 
deleted.  If another section of the same table already exists on the page then
the rows will wrap into it (forwards or backwards).  If no section exists then
a new one will automatically be created.

The selection of ROW Insert and Delete ranges is limited to a single section.
The destinations for ROW Move and Copy however may be any Section.

 
3.9.1  LINES
------------
Lines is used to manage the ruled-line rows in a Table.  Horizontal ruled 
lines in a Table are actually one-character-wide rows and are counted as data
rows.  Note that ruled line rows are ALWAYS ignored during processing.

     +----------+
     |  Insert  |
     |  Append  |
     |  Delete  |
     +----------+

Use the Lines Insert option to insert a ruled-line row above the current (or 
marked) row.  Use Lines append to append a ruled-line below a row.

For single rows the Lines Delete option will first try to delete a ruled-line
row above.  If there is not a ruled line above it will delete the ruled-line 
row below, if one exists. 

The Lines options work similarly on a marked range of rows.  The Insert option
will insert ruled lines above all the rows in the range.  The Append option 
will insert ruled lines below each row in the range.  The Delete option will 
delete all ruled lines between the rows in the marked range.  


3.9.2  DELETE
-------------
The Delete option will delete either a marked range of rows, or the current 
row (the default when no range is marked).  The rows which will be deleted are 
highlighted so you can see exactly what will be deleted, and a verify prompt 
will be displayed in the upper right corner of the screen.
  
                              Page --59-- 

     +-------------------------+
     |  Delete marked area: .  |
     |  YES:  NO:  ESC:cancel  |
     +-------------------------+

You must respond with either Y, N, or <Esc>.  No other keys are accepted.  A 
Y means YES, delete the marked row(s).  An N or an <Esc> means NO, do not 
delete the marked row(s), abort the Delete operation and exit the Row 
menu.

The Delete option is also used to delete entire sections.  If your marked 
range includes EVERY ROW in the section when you select Delete, then the 
following verify prompt will be displayed:

     +----------------------------+
     |  Delete entire Section: .  |
     |  YES:  NO:  ESC:cancel     |
     +----------------------------+

Responding with a Y, means YES, delete the entire Section.  An N or an <Esc> 
means NO, do not delete the Section, abort the Delete operation and exit the 
Row menu.

Note that deleting the last remaining row of a section (either as part of a
block delete, or singly with <Ctrl>Y, will also delete the entire section.


3.9.3 COPY
----------
Copy will copy the current row (the default if no range is marked) or a marked
range of rows.  Once you have selected Copy, the message "Move to destination
and press F10 (SH+F10 to append)" will be displayed on the reminder line.  You
can use any of the Table mode cursor movement keys to move to the destination
row, even into another Section or Table (assuming the Table format is the
same).

Pressing F10 will copy the original row(s) above the destination row, pressing
<Shift><F10> will copy below the destination row.

Note that a copy of the original rows(s) is automatically put into the Work 
area.


3.9.4 MOVE
----------
The Move option is very similar to the Copy option above except that it 
deletes the original row(s) BEFORE copying to the destination.  Move will 
move the current row (the default if no range is marked) or a marked
range of rows.  

Once you have selected Move, the selected row(s) are copied to the Work area
and deleted from Table, then the message "Move to destination and press F10 
(SH+F10 to append)" will be displayed on the reminder line.  You can use any 
of the Table mode cursor movement keys to move to the destination row, even 
into another Section or Table (assuming the Table format is the same).
  
                              Page --60-- 

Pressing F10 will copy the original row(s) above the destination row, pressing
<Shift><F10> will copy below the destination row.

Note that the marked rows are deleted BEFORE the destination is specified. If
the move operation fails for some reason, or you press <Esc> to abort the move
option, the deleted rows are not restored.  You must restore them yourself by
pressing the <F6> key to "paste" them back into the Table.


3.9.5  INSERT
-------------
The Insert option is used to insert or append new rows into a Table.  When 
you select the Insert option the Insert/Append prompt box will appear.

     +---------------- Insert/Append Row(s) ----------------+
     | Number of Row(s) to insert (Default: 1):  .......... | 
     |                                                      |
     | Append       Off                                     |
     |                                                      |
     | F10:execute    ESC:cancel    F5:hide                 |
     +------------------------------------------------------+

The Insert/Append prompt box lets you specify the number of rows to Insert. 
You may insert up to a maximum of 60 rows at a time. 

If Append is "Off" then all row insertions will be above the current or marked
row(s). If Append is "On" then all insertions will be below the highlighted 
row(s).

If there is a range of rows marked when you select Insert then all INSERT and
APPEND operations will apply to the entire range. The new rows will be 
inserted above or appended below each of the rows in the range.  

  
                              Page --61-- 
 
                    3.10  S E A R C H  M E N U

      DOCUMENT            PROGRAM    
    +-----------+      +-----------+ 
    |  Search   |      |  Search   | 
    |  Next     |      |  Next     | 
    |  Replace  |      |  Replace  | 
    |  Goto     |      |  Goto     | 
    |  Bookmark |      |  Bookmark | 
    +-----------+      +-----------+ 

The Search Menu is available only in TEXT mode, but in both buffers.  The 
Search Menu provides access to the Search and Replace options.  The Goto and 
Bookmark options allow you to move around documents quickly and easily.


3.10.1  SEARCH
--------------
Selecting this option brings up the Search prompt box.

      +----------------- Search -------------------+
      |  Search for: ............................. |
      |                                            |
      |  Direction                 Forward         |
      |  Ignore case               Yes             |
      |  Wildcards (* or ?)        Yes             |
      |  Full words only           Yes             |
      |                                            |
      |  F10:execute   ESC:cancel    F5:hide       |
      +--------------------------------------------+

The "Search for" string may be up to 25 characters long.  The previous search
string, if any, will be displayed on the prompt line as a default.

The search Direction may be toggled to either "Forward" or "Backward". 
"Forward" will search from the current cursor position to the end of the 
document.  "Backward" searches from the cursor position towards the beginning
of the document.

Ignore case may be set to either "Yes" or "No".  If set to "Yes" then upper 
and lower case letters will be treated as equal.  If set to "No" then upper 
and lower case will be considered unique.

Setting Wildcards to "Yes" means that the "*" and "?" asterisk and question 
mark characters will be treated as wildcard characters similar to the way 
they are by DOS.  The asterisk "*" will be interpreted as matching any string
of characters.  The "?" question mark will match any single character in that
position.

Toggling Full words only to "Yes" tells QIP to match the search string only 
when it is preceded and followed by a space.  Search strings embedded inside
longer words will not be matched.


3.10.2  NEXT
------------
This option finds the Next occurrence of the search string in the current 
search direction.  <Ctrl>L is a quick way to do the same operation.
  
                              Page --62-- 
 
3.10.3  REPLACE
---------------
The Replace option is very similar to Search (section 3.10.1).  The main
difference is that Replace will substitute a new string whenever it finds a 
match for the search string.  Selecting this option brings up the Replace 
prompt box.

      +------------ Search & Replace --------------+
      |  Search for :    ......................... |
      |  Replace with :  ......................... |
      |                                            |
      |  Verify                    No              |
      |  Direction                 Forward         |
      |  Ignore case               Yes             |
      |  Wildcards (* or ?)        Yes             |
      |  Full words only           Yes             |
      |                                            |
      |  F10:execute   ESC:cancel    F5:hide       |
      +--------------------------------------------+

The search and replace strings may be up to 25 characters long.  The previous
search and replace strings, if any, will be displayed on the prompt lines as
defaults. 

If Verify is set to "Yes" then Replace will prompt for verification before 
replacing a string.

       +------------------------------+
       |  Replace                     |
       |  Skip                        |
       |  Continue without verifying  |
       |  Quit Replace (ESC)          |
       +------------------------------+

Answering R, <F10>, or <Enter> means replace the string and move to the next
match if any.  An S means do not replace this string and continue to the next
match, for convenience the cursor will remain on the Skip option.  A C means 
replace this string and continue replacing strings without pausing for further
verification.  Entering a Q or <Esc> terminates the Replace option and returns
you to editing the document.

The meanings of the  Direction, Ignore case, Wildcards, and Full words only 
toggles are identical to the Search option.


3.10.4  GOTO
------------
Goto is used to move around quickly within a document, and change between 
TEXT and TABLE modes.  Goto displays the following prompt box.

   +----------------------- Goto --------------------------+
   |  Goto where?  ......................................  |
   |                                                       |
   |  F10:execute   ESC:cancel   F5:hide                   |
   +-------------------------------------------------------+
  
                              Page --63-- 

This can be used to move to any Text position within a buffer.  You may want 
to refer to section 2.8 on specifying Text and Table positions.  You can use 
Goto in either the DOCUMENT or  PROGRAM buffers, but you may NOT use it to 
move from one buffer to the other. 

Goto accepts any valid Text or Table position in terms of PAGES, and LINES, 
TABLES, SECTIONS, and ROWS. You can use Goto to move to any Position in your
Document. To move to a Table reference (for example, "T1C3R5") however, you
must be in Table mode. Attempting to Goto a page past the end of your Document
will move only to the top line of the last page in the Document.

Goto also accepts marker names, which are prefixed with an "M".  Thus M1 (no 
space between "M" and marker name) will move to a position previously Marked 
as "1".

Goto can also be used to change between TEXT and TABLE modes by just pressing
<Enter>. 

Note that there are Goto (and Bookmark) options on BOTH the Search and Table
menus (3.11.2, 3.11.3).  The Search menu Bookmark and Goto options are used
in TEXT mode and the Table menu equivalents are used in TABLE mode.  Note 
you can move to a Table bookmark while in TEXT mode but you will remain in
TEXT mode (use <F8> to switch into TABLE mode).


3.10.5  BOOKMARK
----------------
The Search menu Bookmark is used to label TEXT positions so you can easily 
return to that position later.

         +----------- Bookmark -------------+
         |  Label: .................        |
         |                                  |
         |  F10:execute ESC:cancel F5:hide  |
         +----------------------------------+

Bookmark labels may be up to 10 characters.  You may mark any 
position in any buffer in either a Text or Table position.  Any existing 
marker of the same name (or number) will be superseded.

A Document may contain up to 10 bookmarks, if you declare more than 10
bookmarks, the oldest ones will be "re-used".

QIP TIPS
--------
There are shortcuts for many of the options on the SEARCH MENU.
   <Ctrl>L       -  search for next occurrence of the search string
   <F7>          -  pop up the Goto prompt box
   <Shift><F7>   -  go directly to the Document buffer.
   <F8>          -  switch from TABLE to TEXT modes and vice versa
   <Ctrl>K char  -  place a single character marker.  Note that bookmarks
                    placed with <Ctrl>K are counted as one of the 10 active
                    markers. 
   <Ctrl>Q char  -  move to single character marker 

  
                              Page --64-- 
 
                      3.11  T A B L E  M E N U

                DOCUMENT
        +----------------------+
        |  Create              |
        |  Goto                |
        |  Bookmark            |
        |  Join                |
        |  Indent              |
        |  Auto append     Off |
        +----------------------+

Table Menu options deal primarily with the creation, splitting, and joining 
of Tables.  If, when you change into TABLE mode, a table does not currently 
exist, or the cursor is not within one of the existing Tables, you will auto-
matically be put into the Table menu with the Create option highlighted so 
you can create a new table.  This makes it quite easy to create new Tables or
move to existing ones.


3.11.1  CREATE
--------------
This option will Create a new table BEFORE the current line or BEFORE the 
current table (if the cursor is within an existing Table).  The left edge will
be at the current cursor Xpos.

       +------------- Create Table --------------+
       |  Title:                                 |
       |  .....................................  |
       |  Column Widths:                         |
       |  .....................................  |
       |                                         |
       |  F10:execute   ESC:cancel   F5:hide     |
       +-----------------------------------------+

The Title may be up to 57 characters long if specified here, but may be 
edited in TEXT mode after the Table has been created.  Table headers may be 
a maximum of one line.

You may specify a maximum of 50 columns with widths from 1 to 75 characters,
but the total of all column widths (including ruled lines) cannot exceed 215
characters (QIP maximum Table width).  The Table will be created and the 
cursor will be placed on the leftmost column header ready for column title 
entry.  A sample table is shown below.

The default for Column widths is a table with  5 columns, each one 10 
characters wide.  When you use the default, the columns are automatically 
labeled "A" through "E"

      [   10    ][          25           ][ 5 ][      15     ]
T1   .   Table Title  
S1   .-------------------------------------------------------
CHdr .   Column Headers
    +.-------------------------------------------------------
    +.-------------------------------------------------------
 
During column header entry, any system menu may be opened so you can do things
such as insert columns, change widths and attributes (Column menu), or set new
  
                              Page --65-- 
 
effects (Effects menu).  Extra column header lines may be added (up to a 
maximum of three) by pressing <Shift><Enter>

When you move the cursor out of the column header area QIP assumes you are 
going to begin data entry and the first data row opens ready for input.

QIP TIP
-------
If you create a table on the first line of a page (the table header line is on
line 1 of the page), the only way to insert text above the table header line
(in TEXT mode) is to place the cursor on the table header line (line 1 of the 
page) and press <Ctrl>N to insert a blank line ABOVE the cursor position.  You
may then move the cursor above the Table and edit Text as normal.

You may also edit Table header lines in TEXT mode.  After you have changed a 
Table header line and move the cursor off the header line you will be asked
whether you wish to replicate the changes throughout the rest of the header
lines for that Table.

     +-------------------------------------+
     |  Replicate through rest of file: .  |
     |                                     |
     |  Yes:    No:    Esc:cancel          |
     +-------------------------------------+

Answering "Yes" will update all the following header lines for that Table with
any changes you made.  Answering "No" will not update the following header 
lines.  Answering "Esc" will undo the changes you just made to the Table
header.


3.11.2  GOTO
------------
Goto is used to move around quickly within a document, and change between 
TEXT and TABLE modes.  Goto displays the following prompt box.

   +----------------------- Goto --------------------------+
   |  Goto where?  ......................................  |
   |                                                       |
   |  F10:execute   ESC:cancel   F5:hide                   |
   +-------------------------------------------------------+

This can be used to move to any cell in any Table in the Document buffer.  You
may want to refer to section 2.8 on specifying Text and Table positions.  You
can use the Table menu Goto only in the DOCUMENT buffer.

Goto accepts any valid Text or Table position in terms of PAGES, and LINES, 
TABLES, SECTIONS, and ROWS.  You can use Goto to move to any Position in your
Document.  Attempting to Goto a page past the end of your Document will move 
only to the top line of the last page in the Document.

Goto also accepts marker names, which are prefixed with an "M".  Thus M1 (no 
space between "M" and marker name) will move to a position previously Marked 
as "1".

Goto can also be used to change between TEXT and TABLE modes by just pressing
<Enter>.
  
                              Page --66-- 

Note that there are Goto (and Bookmark) options on BOTH the Search and Table
menus (3.10.4, 3.10.5).  The Search menu Bookmark and Goto options are used
in TEXT mode and the Table menu equivalents are used in TABLE mode.  Note 
you cannot move to a Text bookmark while in Table mode.


3.11.3  BOOKMARK
----------------
This is identical to the Search menu Bookmark option (section 3.10.5).
The Table menu Bookmark is convenient for labelling TABLE positions so you
can easily return to that cell later.

         +----------- Bookmark -------------+
         |  Label: .................        |
         |                                  |
         |  F10:execute ESC:cancel F5:hide  |
         +----------------------------------+

Bookmark labels may be up to 10 characters.  You may mark any cell in any
Table.  Any existing marker of the same name (or number) will be superseded.


3.11.4  JOIN
------------
This will combine two or more separate SECTIONS of a Table (VERTICALLY).  
Note that you may not join different Tables only sections of the same Table.

SECTIONS to be joined must be exactly adjacent (have no text lines between 
them).  Only the CURRENT section and the NEXT section can be "joined".  You 
cannot join a range of sections in a single "join" operation.

If the column widths do not match exactly or if the specified sections belong
to different Tables the Join will not be executed.


3.11.4  INDENT
--------------
Indent will set the horizontal position of the current Table.

     +-------- Change Section Indent ---------+
     |  New indent position ? (max: 165): ... |
     |                                        |
     |  F10:execute  ESC:cancel  F5:hide      |
     +----------------------------------------+

The current indent value will be displayed on the prompt line.  After a new
value has been entered the current section will be moved horizontally (left or
right, to the NEW indent position) including all column and Table header 
lines.

Note that Indent does not reformat any Text which may be to the right or left
of the Table and it could be truncated.


3.11.5  AUTO APPEND
-------------------
The Auto append toggle controls what happens when the cursor is on the last 
line of a Table and you finish cell editing.  
  
                              Page --67-- 

Cursor movement, when editing in TABLE mode, is dependent on the current 
cursor movement direction (see sections 2.3.5 and 2.3.6) and whether you 
terminate cell editing by pressing the <Down Arrow> or <Enter> key.

When Auto append is "Off" the cursor will move to the first row of the next 
column, if any, and stop when it is in the last row of the last column.

If Auto append is "On" a new row will automatically be appended to the Table 
in the following way:
 
-   When editing a cell in the last row and you terminate cell editing 
    by pressing the <down arrow> key.  The cursor will be placed in the 
    same column of a new (appended) row.

-   When the cursor is in the rightmost cell of the last row.  If the 
    current cursor movement direction is RIGHT and you terminate cell 
    editing by pressing <Enter>, the cursor will be in the first column 
    of the new row.

-   When the cursor is in the leftmost cell of the last row.  If the 
    current cursor movement direction is DOWN and you terminate cell 
    editing by pressing <Enter>.  The cursor will be placed in the 
    first (leftmost) column of the new row.

QIP TIPS
--------
There are shortcuts for many of the options on the TABLE MENU.
   <F7>          -  pop up the Goto prompt box
   <F8>          -  switch from TABLE to TEXT modes and vice versa
   <Ctrl>K char  -  place a single character marker.  Note that bookmarks
                    placed with <Ctrl>K are counted as one of the 10 active
                    markers. 
   <Ctrl>Q char  -  move to single character marker 
 
  
                              Page --68-- 
 
                         A P P E N D I X  A

QPL and MACRO PROGRAMMING
-------------------------
QPL is a real programming language with access to all of QIP features, and 
functions.  It has its own local and global variables, commands, control 
statements, command syntax, and system access functions. QPL is case 
insensitive except for the contents of quoted strings.  QPL resembles and is
loosely based on BASIC. 

QIP provides two levels of automation:
  Macros, which are a recording or exact representation of a series of 
  keystrokes.

  QIP Programming Language, which is a full programming language with its own
  commands, control statements, variables, and access to the principal QIP
  options.


MACROS
-------
Macros are an exact recording or representation of key sequences which can be
saved and named, then played-back at any time.  Macros are interpreted as if
the sequence of keystrokes were coming from the keyboard, they may in fact be
"recorded" as you are actually performing an operation or created and edited
in the Program buffer (3.1.5).  Macros therefore allow you access to virtually
ALL QIP operations.


MACRO RECORDING
The <F3> key is the Macro record key.  Pressing <F3> begins recording of all
subsequent keystrokes until <F3> is pressed again to finish recording.  When
you are through recording you will be prompted for a "key" to assign the 
recorded macro to.

    +------------------------------------------------------+
    |                                                      |
    | Assign to which Key? (ENTER or F4 = temporary macro) |
    |                                                      |
    +------------------------------------------------------+

The default is the <F4> key (temporary Macro key).  Assigning a new Macro to
<F4> will override any existing macro assigned to <F4>.  This is primarily
useful as a "play last macro" feature for use with one-time, off-the-cuff
Macros.

Alternatively, you can assign the recorded Macro to any key on the keyboard 
(including <Alt>, and <Ctrl> keys), even keys normally used by QIP (with the 
EXCEPTION of <F10>, and <ESC>).  Your Macro assignment will OVERRIDE any QIP 
function(s) assigned to that key, so be careful.

  
                              Page --69-- 
 
MACRO KEY REPRESENTATION
------------------------
Most QIP operations require the use of non-printing keys (e.g <Alt>keys for
opening a menu, or <F10> to execute an option).  There is a representation
for all active keys.

Any characters that can be displayed by the editor are represented in their 
literal form.  This includes ruled-line characters, hard spaces, and others.

Special characters (e.g. ", or ~) may be "escaped" with the "\" backslash 
character (including "\" itself).  However, certain backslash sequences are
reserved for control, and function keys as shown below.

The following table shows the representation of all non-printing keys:

       Key          Representation         Comment
     -------       ----------------       ---------
     CTRL                ^                ^G   for CTRL-G
     SHIFT               _                _\1  for SHIFT-F1
     ESC                 ^[               ^[   for ESCAPE
     ALT                 ~                ~A   for ALT-A
     Literal             \                \~   for ~ character
     HOME                \h
     END                 \e
     UP arrow            \u               _\u  for SHIFT-UP arrow
     DOWN arrow          \d               note \U and \D below
     LEFT arrow          \l               
     RIGHT arrow         \r
     INS                 \i
     BACKSPACE           \b
     TAB                 \t
     BACKTAB            _\t               _\t  is SHIFT-TAB
     F1 .. F9            \1 .. \9          \1 to \9  for F1 to F9
     F10                 \0                \0  for F10
     PGUP                \U                Case is important
     PGDN                \D                for these two
     DEL                 \x
     ENTER               ^m
     SHIFT-ENTER        _^m

As a special case, when recording or editing a Macro, the <F4> key 
(represented as \4) can be used to start data input from the keyboard.  The 
keys entered at this time will not be stored as part of the Macro.  When the 
Macro is executed, it will pause at this point and wait for input from the 
user.  Exit from this manual input mode is controlled by two QPL functions:

    KBBRK()  -  defines the keys that break out of manual input mode (AND
                ALSO out of the Macro).  The default value is <Esc>.

                KBBRK("\x1b")  use <Esc> (hex 1b) as "break" key

    KBDONE() -  defines the maximum number of keys that can be entered, or
                the keys which terminate input from the keyboard.
 
                KBDONE(1,"")      - get any 1 key from keyboard, then 
                                    continue.
                KBDONE(0,"^m\0")  - get any number of keys, terminated by
                                    <Enter> or <F10>

  
                              Page --70-- 
 
MACRO() STATEMENT
-----------------
All QIP macros are written and stored in editable form as MACRO() statements
in the Program buffer.  They may be created, edited, and executed through the
"Programs" option on the ACCESS menu (3.1.5).

Optionally any Macro can be assigned to a key, so that pressing a Macro's
assigned "hot-key" will immediately playback the Macro.  Note that Macros 
assigned to the "temporary Macro key" <F4> are not saved in the Program 
buffer.


MACRO PROGRAM STRUCTURE
-----------------------
<NAME=HotKey>         defines the name of the Macro and optional hot-key. 
MACRO(".....")        ALL macros must be enclosed in " " double quotes.
  .
  .
  .
MACRO(".....")     
END                   End of macro


The following are examples of Macros created according to the above rules:

<REP>                   Macro named REP with no hot-key assignment
MACRO ("~S~R\d\4")     ~S opens Search menu, ~R selects Replace option,
END                    \d DOWN arrows past search string prompt(uses existing
                       search string), \4 starts user input of replacement 
                       string

<MAKETBL=~M>           Macro named MAKETBL assigned to <Alt>M key
MACRO("~A~T~CTest Table^M10,10,10,20^M")
END                    ~A opens Access menu, ~T selects Table Mode, ~C 
                       selects Create option, "Test Table" is title, ^M
                       terminated with <Enter>, 10,10,10,20 are column widths,
                       ^M terminated by <Enter>

QIP TIPS
--------
Many QIP commands (Search, Print Data, Calc) "remember" their last inputs.
When you open the Search prompt it "remembers" and displays the previous 
search string.  The cursor for the prompt line(s) is at the END of the input
string.  When using Macros to invoke commands that remember their previous
inputs be sure to CLEAR the input line, otherwise it will be APPENDED to the
existing string.  For example:

    Search string: "Accounts Receivable"
    MACRO("~SSPayable^M")
    The actual search string will be "Accounts ReceivablePayable"

    The correct macro is MACRO("~SS^YPayable^M")  -  The <Ctrl>Y clears the 
    input line before entering "Payable".
  
  
                              Page --71-- 
 
QPL PROGRAMMING LANGUAGE 
------------------------
QPL the QIP Programming Language provides added functionality in a more
understandable form than Macros.  Although the Macro() statement (see above) 
may be used in a QPL program, QPL programs are intended for long-term use and
ease of maintenance.


CREATING QPL PROGRAMS
---------------------
All QPL programs are created and stored in editable form in the Program 
buffer.  They may be created, edited, and executed through the "Programs" 
option on the ACCESS menu (3.1.5).

Optionally, you can assign the QPL program to any key on the keyboard 
(including <Alt>, and <Ctrl> keys), even keys normally used by QIP (with the 
EXCEPTION of <F10>, and <Esc>).  Your QPL program assignment will OVERRIDE
any QIP function(s) assigned to that key, so be careful.


QPL PROGRAM STRUCTURE
---------------------
The structure of a QPL program is almost identical to a QIP Macro.

<NAME=Hotkey>        defines name of Program and optional hot-key assignment.
.....QPL statements, commands, or functions.....
END                   End of Program

<NAME>                Program with no key assignment.
.....QPL statements, commands, or functions....
END                   End of Program


QPL programs may be up to 100 lines long.  The length of a program is measured
from the <NAME> line to the start of the next program (or last text line).  
For example: 

         <PROG1>
1        for n1 = 1 to 5
2          disp n1
3        next
4        disp "Finished", wait(0)
5        END
6         
7
         <PROG2>   

The above program (PROG1) is seven lines long.


QPL VARIABLES
-------------
There are two types of variables in a QPL program:
   Alpha (string)  -  Labeled A1 through A50

   Numeric         -  Labeled N1 through N50, each capable of 16 BCD digits 
                      of precision.
  
                              Page --72-- 

Note that it is also possible to reference, and assign Table cells and Text
elements from within QPL programs.  For example:
   C3R5 = "100"    - Column 3 Row 5 (current Table) set to "100"
   C1R1 = A10      - may assign to TABLE cells as STRING ONLY

   P10L12 = "Hello, World"  - Page 10 Line 12

                      

QPL OPERATORS and EXPRESSIONS
-----------------------------
The standard arithmetic operators (+, -, *, /) are available, evaluated in 
standard precedence (first * /, then + -).  

The highest precedence operators are ^ (exponentiation with base number > 0),
and ** (exponentiation with an INTEGER base).  

Next highest precedence are the unary plus and minus operators, which have
have higher precedence than *, or /.



PROGRAM FORMAT
--------------
All statements and commands in a QPL program must be seperated by a ';'
or by the end of a line.
e.g.   INPUT "Enter a number",N1
       CALC("C4 = C4*N1"); UPDATE("C4 > 100","EDIT(C4);REPEAT")
  

Comments may be included in your program. Anything between the /* and */
comment delimiters will be ignored when the program is executed.
e.g.   FOR N7 = 1 TO EROW   /* for every row in the current table */
       ...; NEXT            /* table now contains updated data */

  
                              Page --73-- 
 
QPL STATEMENTS
--------------
The following statements are used to control the flow of execution of QPL
programs.  They are the standard structured programming constructs.

End of Program Statements
-------------------------
STOP        Immediately halts execution of the program.

END         If a subroutine is being executed, the subroutine is stopped and
            control is returned to the parent program.
            In the main (parent) program, it immediately stops execution.


Hint:  Use an END statement to terminate all programs which you may want
       to call as subroutines or execute by themselves.
          
<Ctrl><Break> may be pressed at any stage while a program is being executed.
This will immediately halt the program.

If a fatal error occurs in the program, a message will be displayed and the
program will immediately be stopped.


Test a Condition
----------------
IF < expression > THEN < statement(s) >
    { ELSE < statement(s) > }
IEND

   If a condition is TRUE then do something ( else do something else )
   e.g.  IF N1 < 0 OR N1 > 100 THEN DISP "Invalid Number. Try again",wait
         IEND


Loops
-----
FOR numeric-variable = <expression> TO <expression> { STEP <expression> }
    <statement(s)>
NEXT

WHILE <expression> DO
    <statement(s)>
WEND

   Repeat a set of QIP commands or QPL statements a certain number of times.
   You must specify the start and end values. The increment value (step)
   defaults to 1 or -1. 
   e.g.  FOR N1 = 1 TO EROW    /* for all rows in the current table section */
            CALC("C1R(N1) = DATE(TODAY,N1)")
         NEXT
      
   Repeat a set of QIP commands or QPL statements while something is TRUE
   e.g.  WHILE N5 > 0 DO
            DISP "Loop Count: ",N5;  N5--;
         WEND

Note: There is a MAXIMUM nesting level of 5 IF's, 5 FOR's, and 5 WHILE's
  
                              Page --74-- 

Loop Control statements
-----------------------
EXIT LOOP     /* terminate the loop and continue with the program */
CONTINUE      /* skip all commands to end of loop then continue loop */

   e.g.  FOR N1 = N2 TO N3 STEP 10
            IF N1.... THEN CONTINUE
            ...
         NEXT


Program Control statements
--------------------------
GOTO <label-reference>
GOSUB <program name> 

   GOTO jumps to the specified label, ignoring all commands in between, and
   continues program execution from there.
   Note: A label must be preceded by a '$' and followed by a ':'
   The GOTO value can be the label name or the value of a string variable.
      e.g.  GOTO "FINISH"  or  GOTO A3

   GOSUB executes another program (subroutine) then returns to the current
   program and continues from after the GOSUB command. The subroutine must
   be another program in the current document.

   e.g.   <MAIN>
          IF N1 <= 0 then GOTO FINISH
          DISP "parent program"; GOSUB SUB1; DISP "returned from subroutine"
          $FINISH: DISP "end of program",wait
          END

          <SUB1>
          DISP "subroutine"
          END



Variable Handling
-----------------
LET         Assign a value to a variable   e.g.  LET A1 = "New Zealand"
            Note that the "LET" is optional in an assignment statement.
            e.g.   N5 = 10;  N6 = 25;  A2 = "America"



VCLEAR      Clear the contents of ALL QPL variables.
            Numeric variables (N1 to N50) are set to 0
            Alpha variables (A1 to A50) are set to an empty string ("")
            Note that all variables are assigned these values when you
            start running QIP. Variables retain their current value until
            they are cleared or given a new value, or you exit QIP.

  
                              Page --75-- 
 
Input and Output Control Commands
---------------------------------
PRINT  {PF (n),}  {LF (n),}  {SP (n),}  {"message string",}  {variable}

   Print a message or contents of a variable on current printer.
   e.g.  PRINT "do a page feed", PF,
               "print the contents of the variable A1", SP(5), A1



DISP   {@(x,y),}  {BELL(n),}  {CLEAR, or CLR,}  {LF (n),}  {SP (n),}
       {WAIT(n),}  {"message string",} {variable}

   Display a message or contents of a variable on the screen.
   e.g.  DISP "how does this work", LF(3), "3 lines later:  A2=", A2
              BELL(1,3), WAIT



INPUT  {@(x,y),}  {USING "format-string",}  {CLEAR, or CLR,}  {LF (n),} 
       {SP (n),}  {"prompt-string",}   variable

   Display a prompt (optional) and accept input from the keyboard. This input
   is assigned to the specified variable.
   e.g.  INPUT USING "NNN", "Enter a number up to 3 digits", N1



where:
   BELL(tone,count)  - Ring the specified bell as many times as required.
       tone values:  0 = simple beep tone  (default)
                     1 = short high-low beep 
                     2 = long high-low beep
                     3 = ascending beeps 
       Both values are optional.
       e.g.  BELL,  BELL(3),  BELL(,5),  BELL(3,5)
 

   SP(n)  -  Move 'n' spaces.
             e.g. "abc",sp(3),"def"  => "abc   def"
   LF(n)  -  Move down 'n' lines (will move to the start of the new line).
             e.g. "line 1",lf(2),"line 4"
   PF(n)  -  Do 'n' page feeds (will move to the start of the new page).
             Page Feeds are only applicable to the printer.


   CLEAR or CLR  -  Clear the screen.

   @(X,Y)  - Move the cursor to the specified position on the screen.
             X = horizontal (column) position
             Y = vertical (row) position
             The top left corner of the screen is (0,0)

   WAIT(n) - Pause for 'n' seconds, or until the next key press, before
             continuing the program.
             The default value, if 'n' is omitted, is 10 seconds.
             If 'n' is 0, QIP continues to wait until a key is pressed
             e.g.  DISP "press a key to continue",WAIT(0)
                   DISP "read this message",WAIT(30)
  
                              Page --76-- 
 
   USING  -  Control user input. The format field controls the type of
             data that can be entered and the maximum number of characters.
             e.g.  USING "NNN" accepts a number of up to 3 digits.

             Note: The user may edit the input as they are entering it
             (Delete a digit, etc) and must press <Enter> to accept it.

   Format String:
             The format string must be enclosed in quotes and may use any
             combination of the following characters.

        "<"  Left justify input data.  (default for Alpha data)        
        ">"  Right justify input data. (default for Numeric data        

             Note that the justify symbols must be the FIRST character in a
             USING format string.

        "A"  Alphabetic data only (a to z, A to Z, and spaces) 
             Note that the maximum length of an alpha string is 80 
             characters or the width of the current display window.

        "N"  Accepts only Numeric data (0 to 9, a single '.', or a
             "+" or "-" in the first position)
             Note that the maximum length of a numeric field is 16 digits.

        "S"  Accepts symbol character only  (e.g. ':',  '*'  or  '/') 
             This is useful for ensuring date or time formats, "NNSNNSNN"
             Note that any actual symbols entered at the start of the
             format string will be displayed "as is". This is useful, for
             example, to indicate money is required:  "$NNNNN"
             
        "X"  Accepts any character in this position.


        A series of '_' (underscore) characters is displayed on the screen
        for the user, showing the maximum length of the input field.
        This character may be changed using the QSETUP program  (Appendix D).

        Some examples of USING strings are:
          ">NNNNN"   -  accepts any 5 digits, right justified in 5 spaces.
          "NNSNNSNN" -  can be used to input Date, or Time format.
          "$NNNNSNN" -  for dollars and cents inputs.
          ">AAAAAA"  -  any string of up to 6 characters, right justified in
                        a six character field, no digits or symbols.
          "X"        -  ANY single character .  Note <Enter> is still
                        required to terminate input.

        Note that the PRINT and DISP parameters may occur in any order, and 
        may be repeated. They are executed in the order you specify them.
        INPUT requires one format field only (if any). You must specify
        a variable - this must be the last entry in the INPUT command.



INPUT  {@(x,y),}  {USING "format-string",}  {CLEAR, or CLR,}  {LF (n),} 
       {SP (n),}  {"prompt-string",}   variable
  
                              Page --77-- 

   Display a prompt (optional) and accept input from the keyboard. This input
   is assigned to the specified variable.
   e.g.  INPUT USING "NNN", "Enter a number up to 3 digits", N1

 
Display Window Functions
------------------------
WINDOW(width,lines)
   
   Defines a display window for use with the DISP and INPUT commands.
   e.g.  N1 = WINDOW (45,15)
   QIP will use a default window (the same size as your screen) if you do
   not specifically create one.  Creating a new window overwrites any
   previous window.


WHIDE()     Make the display window invisible. You can still write to it
            using DISP or INPUT while it is hidden. Hiding the window
            enables you to view the document underneath it.

WSHOW()     Restore the window visibility again.

WCLOSE()    Close the display window.  A new window will be created next time
            you do another DISP or INPUT command.

  
                              Page --78-- 
 
QPL SYSTEM ACCESS FUNCTIONS
---------------------------
These functions implement the major QIP operations within QPL as a controlled
alternative to using Macros.  Note that in some cases an access function is
not provided, so that a Macro is the only way to access that operation.

Parameters may be omitted by using a comma as a "placeholder", trailing commas
may be omitted completely.  Omitted parameters will take on default values
whatever they may be.

There must be NO SPACES between the function name and the opening parenthesis,
e.g:

  CREATE("Foo Bar","10,10,20,15")  is acceptable, whereas
  CREATE ("Foo Bar","10,10,20,15") will cause an "Invalid Command Name" error.

However, any spaces between the parameter(s) are okay.

VERY IMPORTANT POINTS
---------------------
ALL ARGUMENTS to QPL Functions are STRINGS and MUST be enclosed in quotation
marks, either single or double. If you need to refer to a string within the
argument, you must use the alternative set of quotation marks.
e.g.   CALC("C1R1$='hello'")

The parameters to the QPL system access functions follow the prompts for the 
corresponding command.  Refer to sections on each menu and prompt above for 
more detail on the use of each input and toggle.


Toggle Parameters can be set in one of several ways.
   "", or "-", or "0"           - will set the toggle OFF
   "Hot-Key", or, "+", or "1"   - will set the toggle ON
   "N"    - where N is 0, 1, 2, or 3 will set the a multi-valued toggle to
            value number N (when legal for that toggle, otherwise ignored)      

If Toggle parameters are ommitted, the CURRENT DEFAULT value will be used.
For example:
   REPLACE("abc","def")         -- use defaults for all toggle parameters
   REPLACE("abc","def","0")     -- set only first toggle parameter
   REPLACE("abc","def",,,"1")   -- set only last toggle parameter, ommitted 
                                   parameters must be sparated by commas

                                        
All QPL system access functions set the ERR variable with a value of 0 (zero)
for success, or a negative value for an error condition.  ERR values greater
than 99 correspond to the QIP error codes (Appendix C).  Note that ERR values
less than 100 are recoverable (or informational), and values greater than 100
are fatal.

In addition many of the System Access functions set the STATUS variable with a
value related to the command.
e.g.   SEARCH("July 22, 1990")
       IF STATUS == 0 then DISP "No matching string",WAIT
       ELSE SNEXT(); IEND
  
                              Page --79-- 

Note that because QPL programs may be executed from the either the DOCUMENT 
buffer or the PROGRAM buffer, your program should use the DOC() function to 
explicitly move to the Document buffer before any Document buffer Text or 
Table references are made (this should only need to be done once at the 
beginning of a program).

 
LIST OF QPL COMMANDS
--------------------
DOS("command")  -  Executes a DOS command. 
                   Note that DOS("") with no command exits to a DOS shell.
                   Refer to section 3.5.9 (DOS COMMANDS) for more details.

CALC("calculation-expression(s)") 
     The parameter may contain multiple expressions separated by semicolons.
     Refer to section 3.1.1  (CALCULATOR) for more details.

     A calculation-expression may also contain quoted strings such as 
     C1 = "Foo Bar".  Because the calc-expression itself is also a string,
     you must be use DIFFERENT types of quotation marks (single and double) 
     for delimiting the calc-expression and any embedded strings. Use one set
     for the calc-expression and another for the embedded string, e.g:

     e.g. CALC("C1R5$='HEAD OFFICE'; C2R5 = 800")
     e.g. CALC('C3 = SEQ$("ABC001",1)')


DELETE() -  Deletes the currently marked range  (section 3.2.1 DELETE)
            (see the MARK() command below). It puts a copy of the deleted
            data in the Work Area where it may later be retrieved by PASTE.


DOC()    -  Move to Document buffer.
            This ensures that any text or table references in your program
            use the data in the Document, while still allowing you to
            execute it from either buffer (Document or Program).


GOTO("position") 
     Immediate jump to the specified position. (3.10.4).
     Refer to section 3.10.4 (GOTO) for more details.

     Note that GOTO jumps to the given position in the current buffer.
     Therefore it is wise to use the DOC() command at the start of your
     program to ensure you go to the place you want in your document,
     regardless of where you are when you execute the program.


INSERT(string)
     Inserts the specified text at the CURRENT cursor position. 
     To force a new line (carriage return) after the inserted text, put a
     "^M" ( <Ctrl>M or <Enter> ) at the end of the string to be inserted.
     If you want to insert a quote as part of the text string, you must use
     the alternative quote marks to those surrounding the full text string.

     e.g.  GOTO("P1L5"); INSERT("enter this 'quote' into the document^M")
     e.g.  INSERT(P1L5)    /* copies the data from Page 1, Line 5 */
     e.g.  INSERT(A1)      /* insert the current contents of the variable */

  
                              Page --80-- 

     Note that INSERT() ignores the current Insert/Overwrite mode. It always
     inserts. Therefore, INSERT() may not be used to insert data into a Table.
     You must use CALC() or a Macro instead.

MACRO("macro-string")  - execute the keys recorded in the Macro-string.
     Refer to the MACRO section at the start of Appendix A for details.

 
MARK("start","end")
     Both start and end positions must be valid TEXT positions (section 2.8).
     To mark a complete line of text or a table row, you must explicitly
     specify the full cursor position.
     e.g.  MARK( "L5X1", "L5XE")   /* mark Line 5 of the current page */
     e.g.  MARK( "C1R3", "CER3")   /* mark Row 3 of the current table */

     Note that MARK refers to the data positions in the current buffer.
     Therefore it is wise to use the DOC() command at the start of your
     program to ensure you mark the data you expect from your document,
     regardless of where you are when you execute the program.


OUTPUT("Range-to-print","Number-of-copies","Data-type toggle")

     Print text or table data, or a QPL program, from within a program.
     Refer to section 3.7.1  (PRINT DATA) for more details of this command.

     Any of these parameters may be omitted.
     The "Range-to-print" defaults to the currenly marked data (if any)
     or the current buffer (Document or Programs).    
     The "Number-of-copies" defaults to 1.
     The toggle defaults to its current value. Possible settings are:
         "0" for BOTH,  "1" for TEXT ONLY,  "2" for TABLES ONLY.

     e.g.  OUTPUT("P1L1..5")
     e.g.  OUTPUT("T1","3","2")   /* print 3 copies of the table */


PASTE()  -  Pastes data from the Work area to the CURRENT cursor position.
            (section 3.2.4 PASTE).  It may be used to restore data that has
            been deleted, or with DELETE() to do a Move or Copy operation.
            e.g.   MARK("P1L5X1","P1L10XE"); DELETE()
                   GOTO("P2L1"); PASTE()
     

REPLACE("Search-string","Replace-string","Verify toggle","Direction toggle",
        "Ignore-case toggle","Wildcards toggle","Full-words-only toggle")

        Search for every occurence of a string and replace it with another.
        It can only be used for replacing text data (not tables).
        Refer to section 3.10.3  (REPLACE) for more details of this command.
 
        Any of these parameters may be omitted. The search and replace strings
        default to the values used in a previous REPLACE command.
        The toggle defaults to its current value. Possible settings are:
           Verify:       "0" for NO,       "1" for YES.
           Direction:    "1" for FORWARDS, "0" for BACKWARDS.
           Ignore case:  "0" for NO,       "1" for YES.
           Wildcards:    "0" for NO,       "1" for YES.
           Full words:   "0" for NO,       "1" for YES.
  
                              Page --81-- 

       Note that QPL mode is stopped temporarily to accept input from the
       keyboard for Verify responses.

        e.g.  REPLACE("colour","color")
        e.g.  REPLACE("abcde","test data","1",,"1",,"1")

SEARCH("Search-string","Direction toggle","Ignore-case toggle",
       "Wildcards toggle", "Full-words-only toggle")

        Search for the first occurence of a particular string. 
        Refer to section 3.10.1  (SEARCH) for more details of this command.

        Any of these parameters may be omitted. The search string defaults
        to the value used in a previous SEARCH command.
        The toggles default to current values. Possible settings are:
           Direction:    "1" for FORWARDS, "0" for BACKWARDS.
           Ignore case:  "0" for NO,       "1" for YES.
           Wildcards:    "0" for NO,       "1" for YES.
           Full words:   "0" for NO,       "1" for YES.

SNEXT() - This is used with SEARCH() to find every occurence of the string.

           SEARCH() and SNEXT() both return the STATUS variable = 1  when a 
           match is found and STATUS = 0 when it cannnot find a match.

          e.g.    <SEARCH1>
                  DOC(); GOTO("P1L1"); N1 = 0
                  SEARCH("test 'quote'",,"1")    /* find "test 'quote'" */
                  WHILE ( STATUS <> 0 ) DO
                      N1++          /* increment count */
                      SNEXT()       /* find next occurence */
                  WEND
                  DISP "Number of Matches was ", N1, WAIT(0)
                  END



SORT("Key column 1","Sort-order toggle","Data-type toggle",  
     "Key column 2","Sort-order toggle","Data-type toggle",  
     "Key column 3","Sort-order toggle","Data-type toggle",
     "Mode toggle", "Ignore-case toggle")

     Sort the data in a table. Refer to section 3.8.2  (SORT) for details.
     This command can only be executed from Table mode (see TABLE() below).
     The toggles default to current values. Possible settings are:
         Sort order:   "0" for ASCENDING, "1" for DESCENDING.
         Data type:    "0" for ALPHA,     "1" for NUMERIC.
         Mode:         "0" for SECTION,   "1" for FULL TABLE.
         Ignore case:  "0" for NO,        "1" for YES.

     e.g.  SORT("C3","1","1")
     e.g.  SORT("C1","0","0","C2","0","1",,,,"1","1")



SUBTOTAL("Key column 1","Key column 2","Key column 3","Column(s)-to-calc",
         "Label toggle","Ruled-lines-after-totals toggle")

  
                              Page --82-- 

     Calculate Subtotals for table data. Refer to section 3.8.3  (SUBTOTAL).
     This command can only be executed from Table mode (see TABLE() below).
     The toggles default to current values. Possible settings are:
         "Label:       "0" for SUBTOTAL, "1" for COLUMN TITLE
         "Ruled-lines: "0" for NO,       "1" for YES
      e.g.  SUBTOTAL("C1",,,"C4..6")
      e.g.  SUBTOTAL("C3","C4","C5","C8,C10..12","1","1")

TABLE() -  Switch to TABLE mode. You must be in the Document buffer when
           you try to change modes (see DOC() above).

           e.g.  DOC();  TABLE();  GOTO("T1");  SORT(.....)


TEXT()  -  Switch to TEXT mode. You must be in the Document buffer when
           you try to change modes (see DOC() above).

           e.g.  DOC();  TEXT();  GOTO("P1");  SEARCH(.....)


UPDATE("Condition 1","Function 1","Condition 2","Function 2",
       "Condition 3","Function 3","Verify toggle","Mode toggle",
       "Ignore-case toggle", "Wildcards toggle")

       Search for specific table data and apply the given Update function.
       Refer to section 3.8.1  (UPDATE) for details about this command.
       This command can only be executed from Table mode (see TABLE() above).
       The toggles default to current values. Possible settings are:
         Verify:       "0" for NO,      "1" for YES.
         Mode:         "0" for SECTION, "1" for FULL TABLE.
         Ignore case:  "0" for NO,      "1" for YES.
         Wildcards:    "0" for NO,      "1" for YES.

       Note that QPL mode is stopped temporarily to accept input from the
       keyboard for Verify responses and for the EDIT Update function.
 
       e.g.  UPDATE("C5 < 0", "EFFECT(C5,RED)")
       e.g.  UPDATE("C3='east' AND C4='smith'","DELETE",,,,,"1",,"1")

  
                              Page --83-- 
 
DEBUG FUNCTIONS
---------------
DEBUG is used as an aid to help find problems in your QPL program. It lets
you see what the program is doing as it executes.
The DEBUG(n) function is used to set and read the current DEBUG mode.  The 
parameter 'n' determines which of several DEBUG options are invoked.

   N1 = DEBUG(n)
   
   where n = 1  -  DUMP program variables when program terminates (either
                   normally or abnormally)
             2  -  TRACE execution of each statement or command
             4  -  PRINT the DUMP or TRACE information rather than displaying
                   on the screen
             8  -  BELL rings if non-fatal error
            16  -  STOP program execution on non-fatal errors

    special case if N = 0  -  reset DEBUG mode (no options invoked)
                       -1  -  Immediate "SNAPSHOT" DUMP of all program
                              variables.

    Note that the above values of n may be "added" to set multiple options.
      e.g.  N1 = DEBUG(3)      -  set DUMP and TRACE
            N1 = DEBUG(1+4+16) -  set DUMP, PRINT, and STOP

DUMP
----
DUMP if activated, is invoked on normal termination of a program, or if the
program terminates abnormally as a result of an error or via a SNAPSHOT.

If PRINT is on, the value of all non-zero, non-empty variables will be 
printed.  e.g.  A1 = "Test"
                A2 = "String"
                N1 = 1990
                N2 = 3

If print is off, then a SNAPSHOT Dump window will be displayed on the screen:

           +------ SNAPSHOT Dump of Testprog/14, Error = 0 -----+
           |  Expression: ...................................   |
           |                                                    |
           +----------------------------------------------------+

You can evaluate any numeric or string expression, such as LEN(A1), or 
N3 + VAL(A5).  The result will be shown on the line below the expression
line, with string values in quotes.

The window will remain open, allowing more expressions to be entered, until
you close it with <Esc>, or <F10>.  If the DUMP arose from a SNAPSHOT, then
program execution will continue.

Note the name of the QPL program, the current line number, and the error
status displayed in the window title line.

TRACE
-----
TRACE shows the line number and name of every QPL statement or command as the
program executes.  
  
                              Page --84-- 

If the PRINT option is on the output will be printed.  e.g.

   TESTPROG1/17 - DISP
   TESTPROG1/18 - IF

If the PRINT option is off the output will be displayed in a message window
for EVERY statement and will close only when you press <Esc>, or <F10>.  For
this reason, you will probably only use this combination of options on 
limited sections of your program.

PRINT
-----
PRINT is used to control the destination of other DEBUG options (DUMP, and 
TRACE).  If the currently setup printer is off-line any TRACE and DUMP 
information intended for the printer will be IGNORED.

BELL
----
This BELL option is used to check whether non-fatal calculation or 
conversion errors may be affecting your program.  An alarm will sound each 
time a non-fatal error occurs, but will not suspend or stop execution of the 
program.

STOP
----
Programmers who may want to locate non-fatal errors more precisely can turn
on the STOP option.  This will force all non-fatal errors to be treated as if
they were actual fatal, causing program execution to halt and displaying an
error window citing the line number where the error occurred.

  
                              Page --85-- 
 
                         A P P E N D I X   B

QIP SYSTEM VARIABLES
--------------------
These QIP system variables may be referenced (but not assigned) by the 
Calculator, QPL programs, most Table processing commands (e.g. UPDATE), 
and in the GOTO prompt.

   CTAB, ETAB  -  CURRENT Table number 
                  Note ETAB is not available to Calculator
   CSEC        -  CURRENT Section number
   COL,  ECOL  -  CURRENT and END Column number
   CROW, EROW  -  CURRENT and END Row number
   CTROW       -  CURRENT Table-Relative Row number
   CPAGE       -  CURRENT Page number
   CLINE       -  CURRENT Line Number
   CDOC$       -  CURRENT Document name (string)

   ERR         -  Error code
                     00 -  99 Non Fatal
                    100 - 999 Fatal 

                  ALL QIP commands set the ERR variable.  These correspond to
                  the error numbers displayed with the messages in error 
                  windows.  Refer to Appendix C for a list of error codes and
                  messages.

   STATUS      -  Exit status of last command executed, STATUS is a value 
                  representing status of the operation (e.g. the number of 
                  rows matched by UPDATE).  Note that not all commands set
                  the STATUS variable (only set where appropriate).


EXAMPLES:
   Assign the cell at Column 1 Row 1 to be the current Document name
      C1R1 = CDOC$
   As the destination of a GOTO - Move to the last Section of the Last Table
      T(ETAB)S2R(CROW)
   Used as a condition for UPDATE 
      IF CROW <> EROW AND C1RC = "YES" OR CCRE = "MAYBE"
   

Note the difference between the Item specifications CC, and RC (CONTENTS
of a cell in the current Column or current Row) and the System Variables
COL, and CROW which are the VALUES of the current Column and Row 
numbers.



QIP BUILT-IN FUNCTIONS
----------------------
The following is a list of all the functions built-in to QIP.  These functions 
can be used anywhere a number or string is required.  They may be evaluated, 
used in an expression, assigned to a table position, and assigned to a QPL 
string or numeric variable
 
ABS()         Return the absolute value of a given number.
ADD()         Add the data in the specified table column.
  
                              Page --86-- 
 
SUM()         Add       (alternative function name)
ASCII()       Return the ascii value of the first character in a string
ATN()         Arc Tangent
ATAN()        Arc Tangent  (alternative function name)
AVE()         Calculate the average value of the data in a column.
AVG()         Average   (alternative function name)
BALANCE()     Calculate a running balance.
BGRAPH$()     Generate a stacked Bar graph using column data.
CHR$()        Return the ascii character of the given number
COS()         Cosine
COUNT()       Count the number of data values in each specified column.
CNT()         Count     (alternative function name)
DATE()        Calculate the date 'n' days before or after a given date.
DAY$()        Return the day of the week on which a given date falls.
DAYS()        Calculate the number of days between 2 dates.
DEBUG()       Set the current Mode for debugging QPL Programs.
DEGREES()     Specify Radians or Degrees (for trigonometric functions).
DIV()         Divide the data values in each row.
DNUM$()       Convert a numeric date to string format.
DVAL()        Convert a date string to a numeric date.
EXP()         Calculate the exponential. The constant (e) to a specified power.
FIX()         Return the truncated integer value of a given number.
IGRAPH$()     Generate an Interval graph of the data in your table.
INKEY$()      Control input from the keyboard from within a QPL program.
INSTR()       Finds the first position of 'string 2' within 'string 1'.
INT()         Return the lowest integer value of a given number.
LEFT$()       Return the 'n' characters from the left of a string.
LEN()         Return the length of a string.
LN()          Calculate the natural logarithm (log e) of a number.
LOG()         Calculate the base 10 logarithm of a given number.
MATCH$()      Find a given string in a specified 'search' column.
MAX()         Determine the maximum data value in a column.
MID$()        Return 'n' characters from a given start position.
MIN()         Determine the minimum data value in a column.
MONTH$()      Return the name of a given month.
MTIME()       Calculate time in minutes before or after a given time.
MUL()         Multiply together the data values from each row
MLT()         Multiply  (alternative function name)
NOW()         Return the current time.
NUM$()        Convert a numeric value to string format
PGRAPH$()     Generate a Point graph of the data in your table.
PI            A variable with value 3.141592653589793
RANDOMIZE()   Initializes the random number generator.
RIGHT$()      Return the rightmost 'n' characters of a given string.
RND()         Generate pseudo-random numbers.
ROUND(        Rounds a given number to the nearest power of 10.
SECS()        Calculate the number of seconds between two times.
SEQ$()        Assign a series of sequential values to a column.
SGN()         Return the sign value of a given number.
SIN()         Sine
SQR()         Calculate the square root of a number.
STD()         Calculate the Standard deviation of data in a column.
STRING$()     Return a string of specified length using the given character
SUB()         Subtract the data values in the specified column.
SYS$()        Read relevant system information (string format).
SYS()         Read status information about the current system.
TAN()         Tangent
TIME()        Calculate time in seconds before or after a given time.
TNUM$()       Convert a numeric time to string format.
  
                              Page --87-- 
 
TODAY()       Return the current date.
TVAL()        Convert a time string to a numeric time.
VAL()         Convert a string to its numeric value
WIDTH()       Return the width of the specified column.
 
The following section is a list of the QIP built-in functions grouped by
similar functionality.  This list provides detailed information on return
values, argument syntax, and data types.

Note that there is a description of each of these functions available on QIP
Help screens.  The Help screens also include an example of the use of each 
function.

 

DATE AND TIME FUNCTIONS
-----------------------
Date formats may be either YYMMDD or YYYYMMDD.  They can be set with QSETUP. 

A NUMERIC_TIME is always specified in HHMMSS format.

A NUMERIC_DATE must be specified in YYMMDD or YYYYMMDD format regardless of 
current date format setting (assumes 20th century).
 
The format of a DATE_STRING may be YY/MM/DD, MM/DD/YY, or DD/MM/YY, where the
separator character (e.g. '/' ) and the year YY or YYYY is set with QSETUP.

The format of a TIME_STRING is always "HH:MM:SS", where the actual separator
character (e.g. ':') is set with QSETUP.    


DATE()     Calculate a new date by adding (or subtracting) a specified
           number of days to a given date.
           NUMERIC_DATE_2 = DATE( NUMERIC_DATE_1, NUMBER_OF_DAYS ) 

DAY$()     Return the day of the week on which a given date falls
           DAY_STRING - DAY$( NUMERIC_DATE )
          
DAYS()     Calculate the difference (number of days) between 2 dates.
           NUMBER_OF_DAYS = DAYS( NUMERIC_DATE_1, NUMERIC_DATE_2 )

DNUM$()    Convert a numeric date to string format
           DATE_STRING = DNUM$( NUMERIC_DATE )

DVAL()     Convert a date string to a numeric date
           NUMERIC_DATE = DVAL( DATE_STRING )

MONTH$()   Return the name of a given month
           MONTH_STRING = MONTH$( NUMERIC_MONTH )
          
MTIME()    Calculate a new time by adding or subtracting a specified
           number of minutes to a given time
           NUMERIC_TIME_2 = TIME( NUMERIC_TIME_1, NUMBER_MINUTES ) 

           This function is useful for setting the ALARM time where seconds
           are not important.
  
                              Page --88-- 

NOW()      Return the current time
           NUMERIC_TIME = NOW

           The result will always be in HHMMSS format.
 
SECS()     Calculate the difference (number of seconds) between the
           two times.
           NUMBER_SECONDS = SECS( NUMERIC_TIME_1, NUMERIC_TIME_2 )

TIME()     Calculate a new time by adding or subtracting a specified
           number of seconds to a given time
           NUMERIC_TIME_2 = TIME( NUMERIC_TIME_1, NUMBER_SECONDS ) 

TNUM$()    Convert a numeric time to string format
           TIME_STRING = TNUM$( NUMERIC_TIME )

TODAY()    Return the current date 
           NUMERIC_DATE = TODAY
           NUMERIC_DATE = TODAY()

TVAL()     Convert a time string to a numeric time
           NUMERIC_TIME = TVAL( TIME_STRING )


CONVERSION FUNCTIONS
--------------------
 
ASCII()    Return the ascii value of the first character in a string
           NUMBER = ASCII ( STRING )

CHR$()     Return the ascii character of the given number
           STRING = CHR$( NUMBER )

STRING$()  Return a string of the specified length using the given
           character.
           STRING = STRING$( LENGTH, CHARACTER )
       or  STRING = STRING$( LENGTH, ASCII_VALUE )
 
NUM$()     Convert a numeric value to string format
           STRING = NUM$( NUMBER )

VAL()      Convert a string to its numeric value
           NUMBER = VAL( STRING )


STRING FUNCTIONS
----------------

INSTR()    Finds the first position of 'string 2' within 'string 1'.
           NUMBER = INSTR( STRING_1, STRING_2 )

LEFT$()    Return the left 'n' characters of a given string.
           RESULT_STRING = LEFT$( STRING, NUMBER_CHARS )

MATCH$()   Looks for a given string in a specified 'search' column in
           the current table. When it finds a match, it returns the value 
           from the 'target' column in the same row, otherwise it returns
           an empty string.
  
                              Page --89-- 

           The 'target' column is optional - if it is not specified,
           the value from the next column in the table is returned.
           STRING = MATCH$( SEARCH_STRING, SEARCH_COLUMN, TARGET_COL )
   
MID$()     Returns a string of 'n' characters, starting from a 
           specified position of the given string.  String positions
           start from character 1.
           RESULT_STRING = MID$( STRING, POSITION, NUMBER_CHARS )

RIGHT$()   Return the right 'n' characters of a given string.
           RESULT_STRING = RIGHT$( STRING, NUMBER_CHARS )


NUMERIC FUNCTIONS
-----------------

ABS()      Return the absolute value of a given number
           RESULT_NUMBER = ABS( NUMBER )

INT()      Return the lowest integer value of a given number
           RESULT_NUMBER = INT( NUMBER )

EXP()      The exponential function  --  e to the specified power
           e.g.  N1 = EXP(2) is equivalent to  e**2
           RESULT_NUMBER = EXP( POWER )

FIX()      Return the truncated integer value of a given number
           RESULT_NUMBER = FIX( NUMBER )

LEN()      Return the length of a given string
           NUMBER = LEN( STRING )

LN()       Calculate the natural logarithm (log e) of the given number
           RESULT_NUMBER = LN( NUMBER )

LOG()      Calculate the base 10 logarithm of the given number
           RESULT_NUMBER = LOG( NUMBER )

RANDOMIZE()   Initializes the random number generator. If a value is
              not specified or is 0, a standard initial value will be
              used. This occurs automatically whenever QIP is loaded.
              Otherwise, a time-based randomizer is used to generate
              a random initial value.
              RESULT = RANDOMIZE   or   RESULT = RANDOMIZE (NUMBER)

RND()      Generate pseudo-random numbers. If a 'limit' value is not
           specified or is 0, random numbers between 0 and 1 will be
           generated. Otherwise, integers between  1 and the specified
           limit will be randomly generated.
           RESULT = RND     or    RESULT = RND( LIMIT )

ROUND()    Rounds a given number to the nearest power of 10.
           If the specified 'power' factor is negative, the number
           will be rounded to that many decimal places. If the 'power'
           is positive it will be rounded to the nearest integer value
           to the 'power' of 10. The 'mode' is used to determine the
           rounding   (-1 = round down, 0 = to nearest, 1 = round up)
           RESULT_NUMBER = ROUND( NUMBER, MODE, POWER )
  
                              Page --90-- 

SGN()      Return the sign value of a given number
            (-1 = negative,   0 = 0,   1 = positive)
           SIGN_VALUE = SGN( NUMBER )

SQR()      Return the square root of the given number.
           RESULT_NUMBER = SQR( NUMBER )


TRIGONOMETRIC FUNCTIONS
-----------------------

ATN() or ATAN()     Arc Tangent
COS()               Cosine
SIN()               Sine
TAN()               Tangent

                    RESULT = function( NUMBER )

DEGREES()  Set a switch to control whether the trigonometric
           functions use interpret their arguments as radians (switch = 0)
           or degrees (switch = 1)
           It also returns the previous setting of the switch.
           PREVIOUS_SWITCH = DEGREES( SWITCH )

PI    A system variable containing the value 3.141592653589793


TABLE BLOCK FUNCTIONS
---------------------

These calculations can be applied to any table column (or a range of rows 
within a column). Any valid table reference may be specified.  Note however
that the TABLE BLOCK Functions work only on a SINGLE SECTION at a time. Refer
to section 2.8 for a detailed explanation of Table range specifications.

ADD()     Add the data in the specified table column.
SUM()     RESULT = ADD( TABLE_RANGE )
       or RESULT = SUM( TABLE_RANGE )

AVE()     Calculate the average value of the data in a column.
AVG()     RESULT = AVE( TABLE_RANGE ) 
       or RESULT = AVG( TABLE_RANGE )

CNT()     Count the number of data values in each specified column.
COUNT()   RESULT = CNT( TABLE_RANGE )
       or RESULT = COUNT( TABLE_RANGE )

DIV()     Divide the data values in each row.
          RESULT = DIV( TABLE_RANGE )

MAX()     Determine the maximum value in the specified table column.
MIN()     Determine the minimum data value in a column.
          RESULT = MAX( TABLE_RANGE )
          RESULT = MIN( TABLE_RANGE )

MUL()     Multiply all the data values from each row in the 
MLT()     specified table column.
          RESULT = MUL( TABLE_RANGE )
       or RESULT = MLT( TABLE_RANGE )
  
                              Page --91-- 

SEQ$()    Return a sequence of values, starting from an initial value
          and incremented in regular steps.  The starting value can
          be a string (in quotes) or a number. 
          The default increment (if not specified) is 1.
          COLUMN = SEQ$( START_VALUE, INCREMENT )
       or COLUMN = SEQ$( START_VALUE )

STD()     Calculate the Standard deviation of data in a column.
          RESULT = STD( TABLE_RANGE )

SUB()     Subtract the data values in the specified column.
          RESULT = SUB( TABLE_RANGE )
 
WIDTH()   Return the width of the specified column in the current
          table. The column is specified as a number.
          RESULT = WIDTH( COLUMN_NUMBER )
 
GRAPH FUNCTIONS
---------------

BGRAPH$()  Generate a stacked Bar graph of the data in your table.
           You may graph one column of data (e.g. C2  or  [COST]) or a
           range of consecutive columns. The width of the resulting
           graph is 75 characters (if it is assigned to a string) or
           the width of the destination table column.
           DESTINATION = BGRAPH$( COLUMN_RANGE, MIN, MAX)

IGRAPH$()  Generate an Interval graph of the data in your table.
           This displays an arrow ("<------->") showing the difference
           between the start and end columns. If the value in the
            start column is greater than in the end, the arrowheads
           will be reversed (">-------<")
           Refer to BGRAPH$() above for further details
           DESTINATION = IGRAPH$( START_COL, END_COL, MIN, MAX)

PGRAPH$()  Generate a Point graph of the data in your table.
           You may graph one column of data (e.g. C2  or  [COST]) or a
           range of consecutive columns. The width of the resulting
           graph is 75 characters (if it is assigned to a string) or
           the width of the destination table column.
           DESTINATION = PGRAPH$( COLUMN_RANGE, MIN, MAX)

 
FINANCIAL FUNCTIONS
-------------------

BALANCE()  Calculate a running balance by evaluating the specified
           expression and adding the result to the previous value.
           The results are written to a table column (or a range of
           rows within a column). Any valid Table Reference may be
           specified.  A `brought_forward' value may be specified as
           the initial balance. If omitted, an initial balance of $0 is 
           assumed.
           RESULT = BALANCE( EXPRESSION )
        or RESULT = BALANCE( EXPRESSION, BROUGHT_FORWARD )
  
                              Page --92--

SYSTEM FUNCTIONS
----------------

SYS()      Return numeric status information about the current system
           depending on the value you specify.
           STATUS = SYS( VALUE )

SYS$()     Returns a string containing relevant system information
           according to the value you specify.
           STRING = SYS$( VALUE )
 
   SYS() VALUES     Return numeric system status information

           0  => QIP major Version number        e.g.  1   
           1  => Printer Status    [0 = online,  -1 = offline]
           2  => Current Buffer    [0 = Document,  1 = Program]
           3  => Current Mode      [0 = Text,      1 = Table]
           4  => Ovr/Ins Mode      [0 = Overwrite, 1 = Insert]
           5  => Table Cursor Direction [0 = Right, 1 = Down, 2 = No movement]
           6  => Table Append Row Mode  [0 = Off,   1 = On]
           7  => Effect Priority   [0 = As Set,    1 = Data]      
           8  => Executing a Simulation Program   [0 = No,  1 = Yes]

   SYS$() VALUES    Return system information in string format

           0  => QIP Version number        e.g. "V1.00" 
           1  => Current Cursor Location   e.g. "P1L5X20"  or  "T1S2C4R3"
           2  => Current Date Format       e.g. "MM/DD/YY" or  "YYYY-MM-DD"
           3  => Simulation Program Name   e.g. "SIMUL1"
           4  => Alarm Message (as set)    e.g. "Marketing Meeting"
           5  => Alarm Date (as set)       e.g. "06/05/89"
           6  => Alarm Time (as set)       e.g. "10:30:00"
           7  => Search string             e.g. "receive"
           8  => Replace string            e.g. "return"
           9  => Current Printer Name      e.g. "Toshiba P351"
          10  => Current Print Range       e.g. "P1..3"
          11  => Current File Path         e.g. "C:\ZIP\MY.QIP"
          12  => Characters (4) used for Bar Graphs        e.g. "#@*$"
          13  => Characters (4) used for Point Graphs      e.g. "*+#x"


PROGRAMMING FUNCTIONS
---------------------

DEBUG()    Set the current Mode for debugging QPL Programs. You
           may set any combination of modes by adding them together.
           DEBUG() modes can be set in advance from the Calculator
           as well as from the actual program. The only exception is
           mode -1 which has an immediate effect on the program.
           DEBUG( MODE )
        or CURRENT = DEBUG( MODE )

           Refer to "DEBUG FUNCTIONS" in Appendix A for more details.

           DEBUG MODES
             0   Turn debug mode off.
             1   Dump program variables whenever the program stops.
  
                              Page --93-- 
 
             2   Trace execution of every QPL statement or command.
             4   Print the Debug information rather than displaying it.
             8   Ring a bell whenever a non-fatal error occurs.
            16   Stop program execution if a non-fatal error occurs.
            -1   Do an IMMEDIATE snapshot dump of the program Variables
                 This option can only be set within the program, and does not 
                 change the current mode.  This cannot be combined with other 
                 modes.

INKEY$()   Control input from the keyboard in a QPL program.
           
           CHAR = INKEY$()
           Scans the keyboard buffer. If a key is waiting, it returns
           the actual key pressed, else returns an empty string.

           CHAR = INKEY$( NUM ) where NUM = 0, 1 or 2               
           0  -  Scan the keyboard buffer to test if a key has been pressed.
                 Returns CHR$(1) if a key is waiting, else an empty string.
           1  -  Wait for key input. Returns the actual key pressed.
           2  -  Returns the last key pressed. 
  
                              Page --94-- 
 
                       A P P E N D I X   C

QIP ERROR CODES
---------------

The following is a list of all QIP error codes and their associated
messages.  In most cases corrective action can be discerned from context.
In other cases suggestions or examples are included in the error message text
itself.  Note that QIP Help screens exist for all QIP commands, options,
prompts and menus.  Help screens also contain examples where appropriate.


NON-FATAL ERRORS
----------------
  1    "No numeric data in cell (empty)"
  4    "Divide by zero"
  8    "Calculation overflow"
 10    "Could not successfully converge on an IRR"
 11    "Zero or negative 'b' in a = b^c"
 12    "Number is outside legal range for function"
 13    "Numeric conversion error"
 14    "DATE() result is BC"
 15    "TIME() result is not on the same day"
 16    "Calculation underflow"
 17    "User-definable window already exists"
 18    "Reqd cursor position is outside window"
 19    "Maximum numeric length (16 digits) exceeded"
 20    "Maximum string length exceeded"
 21    "No match in LOOKUP$ statement"


QPL ERRORS
----------
100    "Syntax error"
101    "Out of memory: cannot continue program "
102    "String not terminated before end of line"
103    "Unexpected end of program"
104    "Macro syntax error"
105    "Error in program command"
106    "This command/function is not available here"
107    "Invalid command name"
108    "Invalid Assignment"
109    "Invalid loop command - No loop (FOR or WHILE) open"
110    "Invalid character for prompt switch"
111    "Text string for prompt input is too long"
112    "Invalid data in prompt"
113    "Stack overflow. Too many nested loops or subroutines"
114    "Requires an input variable (e.g. A1, N1)"
115    "String must contain a valid value"
116    "Invalid increment operator for NUM command"
117    "Invalid or missing label for GOTO"
118    "Expected a string within quote marks"
119    "Justify char must be at start of format field"
120    "Not a valid format character"
121    "Invalid format string - does not allow input "
122    "Format string is too long to fit display window"
123    "Invalid format string for Numeric variable"
124    "Expects a row reference after a column range"
  
                              Page --95-- 
 
125    "Must be the current table section"
126    "Must be the current table"
127    "Must be in the Document buffer"
128    "Variable name must be last entry in INPUT command"
129    "Cannot use nested IF statements"
130    "Cannot use NEXT or WEND inside an IF statement"
131    "Must be in Table mode"
132    "Invalid expression"
133    "Invalid effect (color and/or UL,HL,EX)"
134    "Invalid data reference"
135    "Expected a data position to be specified"
136    "Invalid data specification or variable name"
137    "Expected a data range to be specified"
138    "Expected a reference to a table position"
140    "Variable type must be numeric (N1..N50)"
141    "Variable type must be string (A1..A50)"
142    "Number too large (max=16 digits)"
143    "Invalid expression"
144    "Must be a numeric function"
145    "Not a valid string expression"
146    "Missing '('"
147    "Expected a ')' here"
148    "Missing comma"
149    "Invalid comparison"
150    "Missing command separator ';'"
151    "Missing '='"
152    "Missing keyword ("TO") in FOR loop"
153    "Missing keyword ("DO") in WHILE loop"
154    "Missing keyword ("IEND") after IF"
155    "Invalid label/label not found"
156    "Missing '<' at start of program title"
157    "Missing '>' at end of program title"
158    "Invalid program name"
159    "Invalid hot key in program title"
160    "Program already exists"
161    "Program does not exist"
162    "A program name must be entered"
163    "Cannot execute a program with more than 100 lines"
164    "Cannot Create - 100 programs already exist"
165    "More than 100 programs - Program ignored"


BUFFER and WORD PROCESSING ERRORS
---------------------------------
200    "Not enough memory - cannot insert Effects"
201    "Cannot create this Header/Footer"
202    "A Header/Footer already exists on this Page"
203    "Cannot Delete Default Ruler"
204    "This ruler cannot be reloaded"
205    "Cannot setup default Document ruler"
206    "Cannot delete soft Pagebreak"
207    "Cannot insert Pagebreak on virtual Line"
208    "Cannot add text to Pagebreak line"
209    "No data exists in the Work area"
210    "Cannot Switch buffers during a Block operation"
211    "Cannot Move or Copy into the Marked Area"
212    "Marked area is bigger than one page"
213    "Cannot Expand more than 1 line of text"
214    "No data has been Marked"
  
                              Page --96--
 
215    "Cannot find Bookmark "
216    "Must specify a Search pattern"
217    "Cannot Add or Delete lines to Table Title"
218    "Invalid string (max length = 70 chars)"


FILER ERRORS
--------------
250    "Not enough memory for the Shell"
251    "Cannot find program"
252    "Disk Space Exhausted"
253    "File Error"
254    "File already exists"
255    "File does not exist!"
257    "No Pages available - Last page truncated"
258    "Data file is damaged. Attempting to restore..."
259    "Cannot change files while in a macro"
260    "Invalid file or directory"
261    "Cannot create File "


TABLE PROCESSING ERRORS
-----------------------
300    "Can't create a table here"
301    "Too many tables - can't create another"
302    "Not enough memory to proceed!"
303    "Illegal column width entry"
304    "Cannot insert column - Table is too wide."
305    "Cannot have more than 50 columns"
306    "Illegal indent position"
307    "Illegal range entry"
308    "Can't join - tables have differing column widths"
309    "Can't join - sections are not contiguous"
310    "Illegal decimal place entry"
311    "Illegal number of rows to insert"
312    "Illegal Goto destination"
313    "Copy/Move operation already selected"
314    "Illegal Search condition"
315    "Illegal Update function"
316    "Illegal column specification"
317    "Illegal column range input"
318    "Column range must not include key column(s)"
319    "Must enter a value for this field"
320    "Invalid MAX or MIN entry"
321    "Illegal row range"
322    "Memory or Disk full - can't complete SORT!"
323    "Unable to save in Work area - aborted"
324    "Can't copy to the Work area"
325    "Can't copy to a table of differing format"
326    "Can't join tables containing multiple sections    "
327    "Range reference is not available in a Search condition"
328    "Total table width plus table indent position > 215"
329    "Cannot Copy/Move into a table header"
330    "Cannot do that operation at this point"
331    "Cannot do this to a Column Header row"
332    "There is no existing table"
333    "Too many lines to Sort"
  
                              Page --97-- 

PRINTER ERRORS
--------------
350    "Incorrect data range specification"
351    "Incorrect line number"
352    "Incorrect table number"
353    "Incorrect section number"
354    "Incorrect row number"
355    "Incorrect QPL program name"
356    "Unable to find closing delimiter "
357    "Unable to match column "
358    "Number of copies value incorrect"
359    "Start page number value incorrect"
360    "Lines per page value incorrect or out of bounds"
361    "Left margin value incorrect or out of bounds"
362    "Top margin value incorrect or out of bounds"
363    "Error loading printer or device"
364    "Printer database QPRTDEFS.V01 not found"
365    "Unable to load specified font"
366    "Incorrect file name specification"
367    "Printer open error"
368    "Page range cannot be empty"
369    "Table range cannot be empty"
370    "Data specification not valid in this context"
371    "Substitution error or Illegal characters in substitution string "
372    "Error writing to disk or spool file"
373    "Error writing to network printer"


GENERAL ERRORS
--------------
400    "Fatal error QIP ABORTING:"
401    "Keyboard initialization error"
402    "Filer initialization/loading error"
403    "Printer initialization error"
404    "Window initialization error"
405    "QPL initialization error"
406    "Menu initialization error"
407    "Editor initialization error"
410    "Out of memory"
411    "Help data is not available"
412    "Illegal date specified"
413    "Illegal time specified"
414    "Alarm date cannot be earlier than today"
415    "Alarm time must be after current time"
416    "Alarm message must be entered"
  
                              Page --98-- 
 
                       A P P E N D I X   D

QSETUP CUSTOMIZATION PROGRAM
----------------------------

This is a stand-alone utility which allows user configuration of QIP's 
display colors    " default settings, and other system parameters.  Most setup "
items may be modified within QIP    " although some cannot.  "

                    QSETUP MAIN MENU
             +-----------------------------+
             |  Load from QSETUP.TXT       |
             |  Modify SETUP               |
             |  Change Colors              |
             |  Write System File and Exit |
             |  Save to QSETUP.TXT (only)  |
             |  Exit without writing       |
             +-----------------------------+

Normally there are two versions of QIP's system setup parameters.  One is 
the QIP system file named QSYSTEM.V01, and the other is an ASCII text file 
named QSETUP.TXT.  

The usual procedure is to change a parameter value by running the QSETUP
utility to modify configuration parameters and create a new system file with 
the updated settings.

There are however a few parameters which cannot be set interactively within
QSETUP.  For these cases, you must edit the QSETUP.TXT file and manually 
change the values.

QSETUP.TXT may be edited with any editor or word processor which can read 
and write ASCII files (including QIP itself). QSETUP.TXT contains numerous 
comments and descriptions for each settable item, noting its purpose, its 
default value, and range of legal values. Reading these comments can provide
a good understanding of QSETUP and its effect on QIP.

Since the two files generally contain the same information (just in different
formats), QSETUP provides options to generate one from the other should either
of them be lost for any reason.  They also act as "backups" for each other.

    To generate a new QSYSTEM.V01 -- Run QSETUP, select "Load From 
    QSETUP.TXT", then choose "Write setup and exit", and reply with an "N" 
    (no) when it asks if you want to write a new QSETUP.TXT file.  

    Note that a system file generated this way will NOT contain either HELP
    or ERROR messages.  It is probably preferable to re-copy QSYSTEM,V01
    from the original distribution disk and then run QSETUP to update all
    settings with the current values in QSETUP.TXT.

    To generate a new QSETUP.TXT -- run QSETUP, then immediately select 
    "Write setup and exit", and reply with a "Y" (yes) when it asks if you 
    want to write a new QSETUP.TXT file.


LOAD FROM QSETUP.TXT
--------------------
This option is used to read setup values from QSETUP.TXT.  These values will
OVERRIDE all current settings in the system file QSYSTEM.V01.
  
                              Page --99-- 
 
When you have edited QSETUP.TXT you should be sure to select this option so 
that the updated values will be written to the new system file.


MODIFY SETUP
------------
This option is used to modify QIP's configuration parameters. The new values 
will OVERRIDE all current settings in the system file QSYSTEM.V01.

The MODIFY SETUP menu shows how similar items are grouped together.  Selecting
one of these categories will bring up one or more sub-menus that will lead you
through the SETUP process.

        +---------------------------------+
        |  General Items                  |
        |  Date and Time Formats          |
        |  Printer Selection              |
        |  Fonts and Colors               |
        |  Color Printer Codes            |
        |  Sheet Feeder Codes             |
        |  Translate Graphics Characters  |
        |  Key Customization              |
        +---------------------------------+

General Items
-------------
This category contains an assortment of miscellaneous items.  Selecting the
General Items option brings up the following sub-menu.

        +-----------+
        |  Misc     |
        |  Search   |
        |  Table    |
        |  Display  |
        |  Qpl      |
        |  Alarm    |
        |  Files    |
        +-----------+

Selecting any of these brings up a menu or prompt which allows you to set
various related paramters.

Date and Time Formats
---------------------
Selecting the Date and Time Formats option brings up the following sub-menu
which allows you to set Date and Time format parameters.

        +------ Date and Time ------+
        |  Date Field Separator: .. |  
        |  Time Field Separator: .. |  
        |                           |
        |  Date Order   MM/DD/YY    |
        |  Year System  YYYY        |
        +---------------------------+
  
                              Page --100-- 

Printer Selection
-----------------
This category contains several printer related items.  Selecting the Printer
Selection option brings up the following sub-menu.

        +------ Printer Setup and Select ------+
        |  Setup Printer 0                     |
        |  Setup Printer 1                     |
        |  Setup Printer 2                     |
        |  Default Printer No (0-2)   ....     |
        |  Paper Length (0-84)        ....     |
        |  Top Margin (0-20)          ....     |
        |  Left Margin (0-20)         ....     |
        |  Eject Pages at End (0-3)   ....     |
        |  Right Page Shift (1-20)    ....     |
        |                                      |
        |  Wait Between Pages         No       |
        |  Output Data to             Printer  |
        +--------------------------------------+

Selecting any of these brings up a menu or prompt which allows you to set
various related paramters.

Fonts and Colors
----------------
Selecting the Fonts and Colors option brings up the following sub-menus.  For
each color you may set any or all of the font, typeface, size, and type size
options.

        +-----------+        
        |  Red      |         +---------------------------------+
        |  Green    |         |  Letter Style           Upright | 
        |  Yellow   |         |  Typeface               Draft   |
        |  Blue     |         |  Characters Per Inch    10      |
        |  Magenta  |         |  Proportional Spacing   No      |
        |  Cyan     |         |  Use on this Pass       Yes     |
        |  Default  |         +---------------------------------+
        +-----------+

Note that fonts for BLACK and WHITE are not settable interactively, you can
set these only by editing QSETUP.TXT.

Color Printer Codes
-------------------
This category is used to input the HEXADECIMAL control code sequences for 
selecting colors on a color printer.  Selecting the Color Printer Codes 
option brings up the following sub-menus.

                                   +------- Color Codes -------+
                                   | Color On   .............. |
 +----- Color Printer -----+       | Black      1B5B33306D.... |
 |  Use Color Printer   No |       | Red        1B5B33316D.... |
 |  Setup Color Codes      |       | Green      1B5B33326D.... |
 +-------------------------+       | Yellow     1B5B33336D.... |
                                   | Blue       1B5B33346D.... |
                                   | Magenta    1B5B33356D.... |
                                   | Cyan       1B5B33366D.... |
                                   | White      1B5B33376D.... |
                                   | Color Off  .............. |
                                   +---------------------------+
  
                              Page --101-- 

Sheet Feeder Codes
------------------
This category is used to input the actual HEXADECIMAL control code sequences 
for a Cut Sheet Feeder. Selecting the Sheet Feeder Codes option brings up the 
following sub-menus.

 +------ Cut Sheet Feeder -----+     +--------- Feeder Codes ---------+
 |  Use Cut Sheet Feeder    No |     | Load First Sheet ............. |
 |  Set Feeder Codes           |     | Feed Next Sheet  912146....... |
 +-----------------------------+     | Eject Last Sheet 912147....... |
                                     +--------------------------------+

Translate Graphics Characters
-----------------------------
This category is used to input the actual HEXADECIMAL codes for graphics 
characters.  Selecting the Translate Graphics Characters option brings up the 
following sub-menus.

 +- Translate Graphics -+
 |  Map       To Setup  |       +-- R1: From --+--- Map To ---+-----+
 |  Row 1               |       |   - [ c4 ]   |  Char 1:  2D |  -  |
 |  Row 2               |       |   | [ b3 ]   |  Char 2:  7C |  |  |
 |  Row 3               |       |   + [ c0 ]   |  Char 3:  2B |  +  |
 |  Row 4               |       |   - [ c1 ]   |  Char 4:  2D |  -  |
 |  Row 5               |       |   + [ d9 ]   |  Char 5:  2B |  +  |
 |  Row 6               |       |   | [ c3 ]   |  Char 6:  7C |  |  |
 |  Row 7               |       |   + [ c5 ]   |  Char 7:  2B |  +  |
 |  Row 8               |       +--------------+--------------+-----+
 +----------------------+


Key Customization
-----------------
This option lets you assign a key to a QIP function.  Using this option you
can customize QIP so that most of the editing and word processing keys you
are familiar with can have the same meanings within QIP.  Selecting the
Key Customization option brings up the following menus:

 +----------------+     +------------------ 1:1 Keymap -------------------+
 | Clear All      |     | Mapped Key       Operation                      |
 | Reset Defaults |     +---------------+---------------------------------+
 | Print to File  |     | <Ctrl>A       | Left one word                   |
 | 1:1 Keymap     |     | <Ctrl>C       | Forward one screen              |
 | 1:2 Keymap     |     | <Ctrl>D       | Right one character             |
 | 2:1 Keymap     |     | <Ctrl>E       | Up one line                     |
 | 2:2 Keymap     |     | <Ctrl>F       | Right one word                  |
 +----------------+     | <Ctrl>G       | Delete character                |
                        | <Ctrl>J       | Help key                        |
                        | <Ctrl>R       | Back one screen                 |
                        +---------------+---------------------------------+
                        |ESC:Abort  F10:Accept  INS:Map new key  DEL:Clear|
                        +-------------------------------------------------+

Clear All      - erases all existing key mappings
Reset Defaults - loads the QIP default key mappings (Wordstar keys, etc)
Print to File  - writes a list of all existing key mappings to the file
                 QKEYBIND.TXT in your current directory.
n:n Keymap     - allows you to view existing mappings, clear an old key 
                 assignment, or add a new key (map key to operation).
  
                              Page --102-- 

When you have selected the required Keymap, a list of matching key
assignments will be displayed. You may Arrow up and down, or use <PgUp> and
<PgDn> to move through the list.  Press <Ins> to add a new key assignment,
or <Del> to clear an existing one.
When prompted to specify the "Key(s) to Insert", simply press the key(s) you
want to use for the operation. (For "Key(s) to Clear", press the key already
assigned to the operation, as shown in the displayed list). 
When asked to specify the "QIP Keycode(s)", press the key corresponding to the
required operation, as shown in the following table.
You will then be given a chance to confirm the key assignment, or deassignment.

If the selected operation is a menu option, the operation corresponding to the
first key will be shown, followed by "***".  
eg.  Map <Ctrl>S to <Alt>F S  will display the operation as "File menu ***"

QIP OPERATIONS
The following is a list of all the QIP operations and equivalent keycodes.
Key Name             Operation
---------            ---------
<Esc>                "Abort key" 
<Enter>              "Enter key" 
<Home>               "Move to beginning of line" 
<End>                "Move to end of line" 
<Ins>                "Toggle Insert/Overwrite mode" 
<Del>                "Delete character" 
Left Arrow           "Move left one character 
Right Arrow          "Right one character" 
Up Arrow             "Up one line" 
Down Arrow           "Move down one line" 
<PgUp>               "Back one screen" 
<PgDn>               "Forward one screen" 
<TAB>                "Forward tab" 

<Shift><Esc>         "Save and exit" 
<Shift><Esc>         "Exit all menus"
<Shift><Enter>       "Insert line below" 
<Shift><Home>        "Move to left margin"
<Shift><End>         "Move to right margin"
<Shift><Ins>         "Edit cell" 
<Shift>Del           "Delete to end of line" 
<Shift>Left Arrow    "Left scroll" 
<Shift>Right Arrow   "Right scroll" 
<Shift>Up Arrow      "Up scroll" 
<Shift>Down Arrow    "Scroll down one page" 
<Shift><PgUP>        "Back one Page" 
<Shift><PgDn>        "Forward one page" 
<Shift><Tab>         "Back Tab" 

<Ctrl><Home>         "Cursor to top of screen" 
<Ctrl><End>          "Cursor to bottom of screen" 
<Ctrl>Left Arrow     "Left one word" 
<Ctrl>Right Arrow    "Move right one word" 
<Ctrl><PgUp>         "Move to start of document" 
<Ctrl><PgDn>         "Move to end of document" 

<Alt>A               "Access menu" 
<Alt>B               "Block menu" 
<Alt>C               "Column menu" 
<Alt>E               "Effects menu" 
  
                              Page --103-- 

<Alt>F               "File menu" 
<Alt>L               "Layout menu" 
<Alt>O               "Output menu" 
<Alt>P               "Process menu" 
<Alt>Q               "Display SORD information" 
<Alt>R               "Row menu" 
<Alt>S               "Search menu" 
<Alt>T               "Table menu" 
<Alt>X               "Exit" 
<Alt>=               "Toggle scale line" 
<Alt>-               "Toggle scale column" 
                     
<Ctrl>B              "Reformat buffer" 
<Ctrl>C              "Cursor to middle of screen " 
<Ctrl>D              "Move line to middle of screen" 
<Ctrl>E              "Move line to to end of screen" 
<Ctrl>F              "Refresh screen" 
<Ctrl>K              "Set mark at cursor pos" 
<Ctrl>L              "Find next" 
<Ctrl>N              "Insert line above" 
<Ctrl>P              "Insert page break" 
<Ctrl>Q              "Goto previously set mark" 
<Ctrl>R              "Replace" 
<Ctrl>S              "Search" 
<Ctrl>T              "Swap next two characters" 
<Ctrl>U              "Undo Key" 
<Ctrl>W              "Delete one word" 
<Ctrl>X              "Move line to bottom of screen" 
<Ctrl>Y              "Delete line" 
<Ctrl>\              "Swap text/table modes" 
<Ctrl>_              "Swap next two characters" 
<Ctrl>^              "Temporary indent" 
           
<F1>                 "Help key" 
<F2>                 "QIP calculator" 
<F3>                 "Start/End macro recording" 
<F4>                 "Playback a macro" 
<F5>                 "Hide menus" 
<F6>                 "Paste Key" 
<F7>                 "Goto prompt" 
<F8>                 "Swap text/table modes" 
<F9>                 "Start ruled line drawing mode" 
<F10>                "Execute key" 

<Shift><F2>          "Evaluate input line" 
<Shift><F4>          "Open to program menu" 
<Shift><F6>          "Yank current line" 
<Shift><F7>          "Goto document buffer" 
<Shift><F9>          "Ruled line mode" 
<Shift><F10>         "Shifted execute Key" 


DEFAULT KEYMAPPINGS
<Ctrl>A              "Wordstar: left one word" 
<Ctrl>C              "Wordstar: forward one screen" 
<Ctrl>D              "Wordstar: right one character" 
<Ctrl>E              "Wordstar: up one line" 
<Ctrl>F              "Wordstar: right one word" 
<Ctrl>G              "Wordstar: delete character" 
  
                              Page --104-- 
                     
<Ctrl>J              "Wordstar: help key" 
<Ctrl>R              "Wordstar: move to end of screen" 
<Ctrl>S              "Wordstar: left one character" 
<Ctrl>T              "Wordstar: delete one word" 
<Ctrl>V              "Wordstar: Insert/Overwrite mode" 
<Ctrl>W              "Wordstar: scroll up" 
<Ctrl>X              "Wordstar: down one line" 
<Ctrl>Z              "Wordstar: scroll down" 

<Ctrl>O+<Del>        "Alternative: delete to end of line" 
<Ctrl>O+<PgUp>       "Alternative: move up one page" 
<Ctrl>O+<PgDn>       "Alternative: move down one page" 
<Ctrl>O+<Home>       "Alternative: move to left margin"
<Ctrl>O+<End>        "Alternative: move to right margin" 
<Ctrl>O+Left Arrow   "Alternative: scroll left" 
<Ctrl>O+Right Arrow  "Alternative: scroll right" 
<Ctrl>O+Up Arrow     "Alternative: scroll up" 
<Ctrl>O+Down Arrow   "Alternative: scroll down" 

Note: These alternative key mappings are designed for use on keyboards which
do not support Shifted Special-Function keys  eg. T5100, J3100SGT
For example:  <Shift><Del> is remapped onto <Ctrl>O+<Del>



CHANGE COLORS
--------------
The screen colors used by QIP can be chosen interactively with QSETUP.  When 
you select the Change Colors option, QSETUP will display a mockup of the QIP
screen and the following menu:

             +----------------------+
             |  Change Current Set  |
             |  First Color Set     |
             |  Second Color Set    |
             |  Monochrome Set      |
             |  LCD/Plasma Set      |
             +----------------------+

The First Color Set and Second Color Set are predefined for color monitors 
(the QIP default colors are the "First" color set).  The Monochrome Set and 
LCD/Plasma Set have also been pre-defined to be suitable for monochrome and 
plasma screens.

These pre-defined sets should provide a good match for each screen type.  If 
not, (or if you want to choose your own colors) you should select Change 
Current Set.  This will bring up another menu which has options that allow 
you to change text, menu, prompt, and system window colors.

Note that this menu and its sub-menus remain open until they are explicitly 
closed by hitting the <Esc> key.

              +----------------+
              | Text / Effects |
              | Popup Windows  |
              | System Windows |
              +----------------+
  
                              Page --105-- 

The Text / Effects option allows you to change items such as the default text
color, the color used to show underlining (which cannot be displayed on a 
color monitor), and the colors used for marked text areas and block cursors.

The Popup Windows option lets you set colors for all of QIP's menus, prompts 
(also their Hot Key, Selected, and Lowlight colors), error message windows, 
help text, and QPL windows.

The System Windows option allows you to change the colors of the system 
information windows like the status, effect and reminder lines, and the scale
line and scale column.

All of these options allow you to modify colors interactively by displaying 
sample text, windows, menus, or prompts along with a color palette.  As you 
select colors from the palette the screen colors change to illustrate the 
current foreground and background choices.  This makes it quite easy to see 
how the QIP screen will finally look.

The color palette displays as two rows of 16 colors each.  Use the UP and DOWN
arrow keys to switch between the upper and lower rows, and the RIGHT and LEFT
arrow keys to move back and forth across the row.  The current selection in 
each row is shown by the "box" cursor.

When you have finished with a section hit <F10> to accept the current settings
or <Esc> to cancel any changes and restore previous values.  In either case 
you will be returned to the menu you selected that option from.  You should 
then use the arrow keys or a hot-key to select another option from the same 
menu, or hit <Esc> to close the menu and return to the previous menu.

Note that it is possible to change colors by editing QSETUP.TXT but it is 
somewhat tedious (and difficult to visualize what the screen will actually 
look like).  The recommended method is to use QSETUP and modify them 
"interactively".


WRITE SYSTEM FILE AND EXIT
--------------------------
Use this option to exit QSETUP and write your modifications into the system 
file -- QSYSTEM.V01.  Selecting this option will unconditionally update the 
system file.  You will however, be asked if you want to write a new QSETUP.TXT
file at this time as well. 

      +-------------------------------------------+
      | Write new QSETUP.TXT file also (Y/N): ... |
      +-------------------------------------------+

Answering "Y" (yes) will write a new QSETUP.TXT file with the current 
settings for all setup parameters.  Answering "N" (no) will not write a new 
QSETUP.TXT file.

If you have just edited QSETUP.TXT and then run QSETUP to create a new system
file, you need not write QSETUP.TXT again because its values were not changed
inside QSETUP (although you may if you want to -- it won't hurt anything).

If you used QSETUP to change colors, you should answer "Y" (yes) to write 
QSETUP.TXT at this time because some values have been changed inside 
QSETUP.  It is generally a good idea to assure that both files contain the 
same (most current) information.
  
                              Page --106-- 


SAVE TO QSETUP.TXT (ONLY)
-------------------------
Use this option to exit QSETUP and write your modifications into the text file 
QSETUP.TXT.  Selecting this option will unconditionally update the text file.
This option will NOT update the system file QSYSTEM.V01.


EXIT WITHOUT WRITING
--------------------
This is an immediate EXIT from QSETUP.  No changes will be applied and no 
files will be written.  QIP and its setup parameters will be exactly as they 
were before you loaded QSETUP.



NOTES
-----
When modifying the colors of the system windows no "special example" is 
displayed on the screen, instead the actual system windows of the mockup 
screen will change to reflect the colors as you select them.

QSETUP reads and writes the QIP system file QSYSTEM.V01.  If for some 
reason this file is lost (or does not exist when you run QSETUP), a new one 
can be created by QSETUP from the information in QSETUP.TXT or its own 
internal defaults for each parameter.  

However, this new file will NOT contain the HELP and ERROR messages normally 
stored in the system file.  Therefore it is preferable to copy QSYSTEM.V01
from the original distribution disk then update it with the current values
in QSETUP.TXT if your system file should be lost.

  
                              Page --107-- 
 
                     A P P E N D I X   E

QIP SIZES and LIMITS
--------------------

The following is a list of some important QIP size limits. 


Screen Display Width             75/80 Characters
                                       5 used for Scale Column (optional)  

Screen Display Height               21 Lines 
                                    39 Lines in EGA 43-line mode


Minimum Document Width              20 Characters

Maximum Document Width             220 Characters

Maximum Document Length            100 Pages (depends on available memory)

  Note that as you approach this limit, warning messages will be displayed.
  If you exceed this limit, data will lost from the end of the Document. 

Maximum Lines per Page              84 Lines (14" legal size paper at 6 lpi)

Minimum Lines per Page              22 Lines

Maximum Tables per Document         50 Tables (depending on memory) 

Maximum Rows per Table            8000 Rows

Minimum Sections per Table           1 Section

Maximum Sections per Table         100 Sections

Minimum Table Column Width           1 Character

Maximum Table Column Width          75 Characters (1 screen width)

Maximum Columns per Table           50 Columns (including ruled-lines)

Maximum Table Width                215 Characters

Maximum Column Header Lines          3 Lines

Maximum Program Buffer Length      840 Lines - Maximum 10 pages of 84 lines

Maximum QPL Program Length         100 Lines 
  
                              Page --108-- 

                                I N D E X


ACCESS
   Menu        27 

ALARM CLOCK     6, 27, 28, 29

APPENDICES
   Built-in functions  85
   Error codes         94
   Macro programming   68
   QPL programming     68
   QSETUP              98
   Sizes and Limits   107

ASCII          
   ASCII()     86, 88
   Import      40, 41, 42
   Export      40, 41
   Files        3, 98

ATTRIBUTES      5,  8, 17, 34, 36, 37, 56, 58, 64
   Prompt      36, 37
               
BLOCK
   Menu        32

BUFFER          3,  5,  6,  7, 18, 22, 27, 30, 31, 32, 47, 61, 65,
               71, 87
   Document    10, 12, 20, 21, 29, 30, 31, 32, 33, 34, 63, 65, 79, 80
   Program      7, 21, 29, 30, 31, 63, 68, 70, 71, 79
   Switching   10, 31 

CALC()         80

CALCULATOR      6, 10, 27, 28, 31, 79, 85, 92 
   Prompt      27
   QPL         79

CELL            5,  7, 10, 11, 12, 20, 23, 24, 25, 26, 27, 28, 31, 
               37, 65, 66, 67, 72, 85, 94, 99
   Editing     16, 17, 18, 19, 20
   Marking     16, 17

COLUMN
   menu        34

DELETE()       79

DOC()          79

DOCUMENT        2,  3,  5,  6,  7,  8, 10, 11, 12,  13, 19, 20, 21, 
               22, 27, 28, 29, 30, 31, 32, 33, 34,  38, 40, 41, 42,
               44, 45, 47, 49, 52, 53, 54, 55, 58,  61, 62, 63, 64, 
               65, 74, 77, 79, 80, 82, 85, 92, 95, 107

 
DOS()          79
 
EDITING         2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 14, 15, 16,
               17, 18, 19, 20, 21, 27, 28, 30, 31, 40, 41, 44, 45, 
               55, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 76, 82, 
               97, 98, 99 
   Keys        10, 11, 14, 15, 16
   Programs    30
   Table        5,  7,  8, 11, 15, 16, 20, 31, 55
   Text         2,  7,  8, 11, 14, 16, 20

EFFECT          2,  3,  6,  8, 12, 13, 14, 15, 16, 17,  19, 20, 38, 
               39, 51, 53, 54, 55, 65, 82, 92, 95, 98, 104
   Menu        38
   Printing    50, 51

EXPRESSIONS    10, 18, 22, 24, 25, 26, 27, 29, 54, 72, 73, 79, 
               83, 85, 91, 95
   Numeric     24, 25
   Logical     25, 26, 54
   Precedence  25, 72, 73
   
FILE
   Loading      3
   Menu        40,   
   QIP         19, 20    

FILES           3, 19, 20, 40, 41, 42, 49, 96, 98, 99, 105

FUNCTIONS       2,  8, 10, 19, 21, 25, 26, 27, 29, 30, 31, 54, 55, 
               56, 57, 68, 69, 71, 77, 78, 79, 82, 83, 85, 86, 87, 
               88, 89, 90, 91, 92, 94, 95, 96
   Built-in    85
   Conversion  88
   Date        87, 88
   Financial   91, 92
   Graph       91
   Numeric     89, 90
   Progamming  92, 93
   QPL         78, 79, 80, 81, 82
   String      88, 89
   System      92
   Time        87, 88

GOTO()         79

GRAPHICS Characters
               15, 41, 48, 49, 101

INSERT()       79

KEYS           
   Control     11
   Editing     10
   Function    10, 11
   Menu        13
   Table Editing  
               16, 17, 18

KEY CUSTOMIZATION
               101, 102, 103, 104

LAYOUT
   Menu        44

LINE            2,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 
               17, 18, 19, 20, 21, 22, 23, 24, 28, 30, 32, 33, 34, 
               37, 38, 39, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 
               54, 55, 57, 58, 59, 61, 62, 63, 64, 65, 66, 69, 70, 
               71, 72, 75, 77, 79, 80, 81, 83, 84, 85, 86, 92, 94, 
               95, 96, 97, 107

LOGICAL 
   Expressions 25, 26, 54
   Operators   25, 26

MACROS          5,  8, 10, 13, 22, 68, 69, 70, 71, 78, 79, 80, 94, 96
   Keys        68, 69, 70
   Program     68, 69, 70 

MACRO()        80

MARK()         80

MARKING         5,  6, 11, 14, 15, 16, 17, 18, 19, 21, 28, 32, 33, 
               34, 35, 36, 38, 42, 44, 45, 47, 58, 59, 60, 61, 63, 
               64, 65, 66, 67, 78, 79, 80, 92, 94, 95, 96

MENUS           3, 4, 5, 6, 8,  9, 11, 12, 13, 14, 17, 18,  19,  20,
               21, 22, 27, 28, 29, 30, 31, 32, 34, 35, 36,  38,  39, 
               40, 42, 44, 47, 48, 50, 54, 57, 58, 59, 61,  63,  64, 
               65, 66, 67, 69, 70, 71, 78, 94, 97, 98, 99

MODES
   Auto Append 16 
   Insert       7,  8,  9, 11, 12, 14, 17, 18, 23, 32, 33, 34, 35, 
               38, 80 
   Overwrite    7,  8, 11, 12, 14, 18, 20, 33, 38, 80
   Ruled Line  11, 15, 18 

MOUSE           4, 5, 10, 18, 19, 21, 40

OUTPUT
   Menu        47
   QPL         80

OUTPUT()       80

PAGE            5,  6,  7, 10, 13,  20,  22, 23, 24, 25, 42, 43, 44, 
               45, 47, 48, 49, 50,  51,  52, 58, 63, 65, 72, 75, 79,
               80, 85, 95, 96, 97, 100, 107
               
PAGE BREAKS     5,  7, 11, 44, 45, 58

PASTE()        80

PROCESS
   Menu        54 


PROMPTS         4,  6,  8,  9, 10, 11, 12, 13, 14, 17, 19, 28, 29, 
               30, 31, 32, 34, 35, 36, 40, 41, 42, 43, 47, 48, 49, 
               50, 51, 55, 57, 58, 59, 60, 61, 62, 63, 65, 66, 67, 
               68, 70, 75, 76, 77, 78, 85, 94, 99
               
QPL             5,  8, 11, 20, 22, 25, 27, 28, 30, 31, 47, 68, 69, 
               71, 72, 73, 74, 78, 79, 80, 82, 83, 85, 86, 92, 93,
               94, 97, 99, 107
   Commands    75, 76, 77, 80, 81, 82, 83, 84
   Functions   79, 80, 81, 82, 83, 84
   Programs    71
   Statements  73
   Windows     77

REMINDER LINE   6,  8,  9, 18, 19, 28, 32, 44, 59

REPLACE         9, 17, 20, 53, 55, 61, 62, 70, 78, 80

REPLACE()      80

ROW
   Menu        58 

RULED LINES     5,  7,  8, 15, 16, 17, 19, 23, 34, 45, 48, 51, 57, 
               58, 64

RULERS          5,  7, 11, 20, 44, 45, 46, 48, 95
   Editing     44, 45

SCALE LINE      6,  7, 11, 12, 18, 20, 21, 48, 107

SCALE COLUMN    6,  7, 11, 18, 107
               
SEARCH
       Menu    61 
       QPL     81

SEARCH()       81
             
SECTION         3,  5,  6,   7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 
               17, 18, 20,  21, 22, 23, 24, 27, 29, 30, 31, 32, 40, 
               42, 44, 45,  47, 48, 51, 54, 56, 57, 58, 59, 62, 63,
               65, 66, 67,  73, 78, 79, 80, 81, 82, 84, 85, 87, 90, 
               95, 96, 97, 107

SNEXT()        81

SORT()         81

STATUS          6,  7,  8, 21, 37, 78, 81, 83, 85, 86, 92
   Line         6,  7,  8, 21, 37
   Variable     78, 83, 85

SUBTOTAL()     81


SYSTEM
   Menus       
      Access      27 
      Block       32 
      Column      34 
      Effects     38 
      File        40 
      Layout      44 
      Output      47 
      Process     54 
      Row         58 
      Search      61 
      Table       64 
   Variables      71, 86

TABLE()        82

TABLE           2,  3,  4,  5,  6,  7,  8, 11, 12,  13,  15,  16,  17,
               18, 19, 20, 21, 22, 23, 24, 25, 26,  27,  28,  29,  31,
               33, 34, 35, 37, 38, 41, 42, 45, 47,  48,  51,  52,  53,
               54, 55, 56, 57, 58, 59, 60, 62, 63,  64,  65,  66,  67,
               69, 70, 71, 72, 73, 78, 79, 80, 81,  82,  85,  86,  88,
               89, 90, 91, 92, 95, 96, 97, 98, 99, 100, 107
   Editing     12, 13, 15, 16, 17, 18
   Menu        64
   Mode         7,  8, 11, 12, 15, 16, 18, 19, 20, 23, 27, 29, 31, 54, 
               59, 62, 63, 64, 65, 66, 70, 78 
   Positions   22, 23
   Ranges      23, 24

TEXT()         82

TEXT            2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 14, 15, 16,
               18, 19, 20, 21, 22, 23, 27, 28, 29, 31, 32, 33, 38, 39,
               41, 42, 44, 45, 46, 47, 48, 51, 53, 57, 61, 62, 63, 64,
               65, 66, 67, 71, 72, 79, 80, 82, 92, 94, 95, 97, 98
   Editing     10, 11  12, 14, 15, 18
   Mode         6,  7,  8, 12, 14, 16, 20, 27, 29, 45, 61, 63, 64, 
               65, 67, 79
   Positions   22, 23
   Ranges      23, 24
               
TOGGLES         9, 11, 13, 14, 16, 18, 19, 21, 29, 37, 42, 44, 46, 47,
               48, 49, 50, 51, 56, 57, 61, 62, 66, 78, 80, 81, 82

UPDATE()       82

VERIFY          9, 34, 40, 42, 54, 55, 58, 59, 62, 80, 82
   Prompts     34, 40, 58, 59

WILD CARDS     54, 55, 61, 62, 80, 81, 82

WINDOWS         6,  7,   8,  9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 28,
               29,  30, 38, 40, 42, 43, 55, 76, 77, 83, 84, 85, 94, 97


WORDSTAR       4, 40, 41, 42, 103

WORDWRAP       20, 44, 46

WORK AREA      5, 10, 21, 32, 33, 59, 79, 80, 95, 96

QSETUP.TXT

# QIP -- The Quick Information Processor, V1.0
#
# QSETUP.TXT - This file contains information used to customize
#	QIP V1.0.  To use it, edit the values in this file according
#	to the information noted here, then run QSETUP.EXE and select
#	the following options:
#	         Load from QSETUP.TXT    (loads this file)
#	  then   Write setup & exit      (writes to QSYSTEM.V01)
#	  then   N                       (no need to make a new QSETUP.TXT)
#
#	If you select the 'Change Colors' option, you should probably
#	reply Y (Yes) rather than N (No) to the final prompt, as it will then
#	make a new copy of this file containing the colors you selected.
#	That will save you from having to change colors again next time you
#	run QSETUP with this file...
#
# When working with this file, you should refer to the manual for
# extra information on some of the settings made here.  If you edit this
# file using QIP, be sure to Import and Export it as an ASCII file.


#################################
#  G E N E R A L   S E T U P S  #
#################################

# The first group of values are those which can be changed inside QIP,
# but whose DEFAULT values (the values they hold when QIP is loaded),
# are decided here.  Of them all, the most important is the first,
# which controls the lines/page of new documents:
LINES PER PAGE = 60  # min 22, max 84

# The next few are 'toggles', defaulting to either 1 (ON) or 0 (OFF):
USE WILD CARDS = 0  # 1 means '*' and '?' are wildcard characters
IGNORE CASE = 0     # 1 means 'A' = 'a' in searches
INSERT MODE = 1     # Edit mode, 1 = insert, 0 = overwrite
FULL TABLE = 0      # 0 limits some processes to the current SECTION only
AUTO APPEND = 0     # 1 appends an extra row when you reach a table's end
DISPLAY SCALE COLUMN = 1    # 1 = display (Doc't window width will be 75)

# This one determines whether the default Effect handling should be
# 'As Set' priority or 'Data' priority (see the EFFECTS menu in the manual):
EFFECT PRIORITY = 0 # 0 = AS SET, 1 = DATA

# This controls where the table cursor moves when you press ENTER:
CURSOR MOVE = 0     # 0 = RIGHT, 1 = DOWN, 2 = NO MOVEMENT

# Next are a number of display controls which cannot be changed
# inside QIP.  However, the first, which selects 43-line mode if you
# have an EGA adaptor, can be overridden when QIP is loaded by
# specifying either QIP -43 or QIP -25:
EGA 43-LINE SCREEN = 0  # 1 = 43, 0 = 25
SCREEN WON'T SNOW = 1   # Use 0 if your screen snows
DISPLAY CURSOR POS = 1  # 1 = keep updated
DISPLAY REMINDERS = 1   # 1 = display them
DISPLAY CLOCK = 1       # 1 = display it

# There are several controls for the way dates and times are formatted
# by QIP.  Whatever you choose, you should stick with it henceforth as
# dates generated with one format (eg: table data) may not be automatically
# recognized if you later change to another format.
DATE ORDER = 1        # 0 = YY/MM/DD, 1 = MM/DD/YY, 2 = DD/MM/YY
YEAR SYSTEM = 0       # 0 = YYYY (eg: 1991), 1 = YY (eg: 91)
DATE SEPARATOR = '/'  # eg: 03/06/91  vs.  03.06.91
TIME SEPARATOR = ':'  # eg: 13:21:00  vs.  13-21-00

# These values give the default size of the window created by
# the QPL WINDOW() function, and the character used for filling
# the input field in the INPUT USING statement.
QPL WINDOW WIDTH = 78   # min 1, max 78
QPL WINDOW HEIGHT = 21  # min 1, max 21

# QIP's alarm function is configured with the following.  The first value
# determines how many times the ALARM function will ring the bell to try and
# get your attention.  The second determines how long it will go to sleep
# before reminding you again, should you ask it to do so.
ALARM BELL COUNT = 1   # min 0, max 10
SNOOZE TIME      = 5   # in minutes.  min 1, max 60

# The next item controls the default filespec used for directory
# listings in QIP.  You can change it at will (eg: C:\WORK\*.QIP).
DIRECTORY FILESPEC = '*.*'  # min 1, max 50 chars

# Rulers control the margins and tab positions in QIP.  The default
# ruler for every new Document can be roughly set here and also changed in
# QIP.  The tab settings for the Program buffer can only be set here.
# NB: These values count from 0, eg: 3 will give tabs every 4 characters.
DEFAULT RIGHT MARGIN = 74  # min 10, max 210
DEFAULT TAB SPACING = 7    # min 1, max 40
PROGRAM TAB SPACING = 3    # min 1, max 40


#################################
#  P R I N T E R   S E T U P S  #
#################################

# QIP has a large number of printer controls, and the DEFAULT values
# for most of them can be set here.  In addition,  the choice of printers
# provided by QIP is controlled here, as are several special control
# sequences which can be used (eg: for Color Printing or Cut Sheet Feeders).

# Many printers cannot print the 8-bit pseudo-graphic characters
# used by QIP.  If your printer cannot, choose 'Generic' output for graphic
# characters on the To Where option of the OUTPUT menu.  If your printer is
# able to print graphics characters, but uses different codes for those 
# characters (ie: not 100% IBM compatible) you should select 'Translated' 
# output.  Then edit the list below to specify which code your printer uses 
# for each of the IBM characters shown immediately beneath it.
# Note that the codes defined here are for the Generic translation...
#
# Codes can be entered in hex (0xhh, eg: 0x9b) or decimal (nnn, eg: 155).
# The default codes are 7-bit only, exactly the same as the 'Generic' map.
MAP TYPE = 0  # 0 = TRANSLATED, 1 = DIRECT (as is), 2 = GENERIC
MAP ROW 1 = 0x2d 0x7c 0x2b 0x2d 0x2b 0x7c 0x2b  # printer codes, exactly 7
#            ─    │    └    ┴    ┘    ├    ┼    # QIP display characters
MAP ROW 2 = 0x7c 0x2b 0x2d 0x2b 0x23 0x40 0x63  # printer codes, exactly 7
#            ┤    ┌    ┬    ┐    ░    ▒    ¢    # QIP display characters
MAP ROW 3 = 0x2d 0x7c 0x2b 0x2d 0x2b 0x7c 0x2b  # printer codes, exactly 7
#            ═    ║    ╚    ╩    ╝    ╠    ╬    # QIP display characters
MAP ROW 4 = 0x7c 0x2b 0x2d 0x2b 0x2a 0x24 0x4c  # printer codes, exactly 7
#            ╣    ╔    ╦    ╗    ▓    █    £    # QIP display characters
MAP ROW 5 = 0x2d 0x7c 0x2b 0x2d 0x2b 0x7c 0x2b  # printer codes, exactly 7
#            ═    │    ╘    ╧    ╛    ╞    ╪    # QIP display characters
MAP ROW 6 = 0x7c 0x2b 0x2d 0x2b 0x7c 0x7c 0x59  # printer codes, exactly 7
#            ╡    ╒    ╤    ╕    ▌    ▐    ¥    # QIP display characters
MAP ROW 7 = 0x2d 0x7c 0x2b 0x2d 0x2b 0x7c 0x2b  # printer codes, exactly 7
#            ─    ║    ╙    ╨    ╜    ╟    ╫    # QIP display characters
MAP ROW 8 = 0x7c 0x2b 0x2d 0x2b 0x22 0x3d 0x50  # printer codes, exactly 7
#            ╢    ╓    ╥    ╖    ▀    ▄    ₧    # QIP display characters

# If you have a printer with an automatic or semi-automatic Cut Sheet
# Feeder, turn the CUT SHEET FEEDER control on, and specify the codes for
# your printer. Each sequence is represented as a series of hex (0xhh)
# or decimal (nnn) values.  Enter 0 or 0x00 for an unused sequence.
# Be sure to test the result for your printer.
CUT SHEET FEEDER = 0  # 1 = yes, use the codes given below
LOAD FIRST SHEET = 0x91 0x21 0x46  # min 1, max 8 codes
FEED NEXT SHEET  = 0x91 0x21 0x46  # min 1, max 8 codes
EJECT LAST SHEET = 0x91 0x21 0x47  # min 1, max 8 codes

# If you have a color printer, you'll certainly want to turn on the
# COLOR PRINTER option and then specify the codes for your printer.
# Two special codes, COLOR SELECT and COLOR DESELECT, are provided in case
# the printer requires color mode selection/deselection.  Most don't,
# so simply put a 0 or 0x00 entry, which means 'not used'.
COLOR PRINTER  = 0   # 1 = yes, use the codes given below
COLOR SELECT   = 0x00  # min 1, max 8 codes
COLOR DESELECT = 0x00  # min 1, max 8 codes
SELECT BLACK   = 0x1b 0x5b 0x33 0x30 0x6d  # min 1, max 8 codes
SELECT RED     = 0x1b 0x5b 0x33 0x31 0x6d  # min 1, max 8 codes
SELECT GREEN   = 0x1b 0x5b 0x33 0x32 0x6d  # min 1, max 8 codes
SELECT YELLOW  = 0x1b 0x5b 0x33 0x33 0x6d  # min 1, max 8 codes
SELECT BLUE    = 0x1b 0x5b 0x33 0x34 0x6d  # min 1, max 8 codes
SELECT MAGENTA = 0x1b 0x5b 0x33 0x35 0x6d  # min 1, max 8 codes
SELECT CYAN    = 0x1b 0x5b 0x33 0x36 0x6d  # min 1, max 8 codes
SELECT WHITE   = 0x1b 0x5b 0x33 0x37 0x6d  # min 1, max 8 codes

# A few standard printer defaults follow.  The first tells QIP the
# total length (in lines) of your printer's paper so that a formfeed
# will move to the top of the next page correctly.
PAPER LENGTH = 66  # min 22, max 84
TOP MARGIN   =  3  # (lines), min 0, max 20
LEFT MARGIN   = 6  # (1/10" increments), min 0, max 20
LINE SPACING  = 0  # 0 = 1 line, 1 = double-spaced, 1 = 1.5 lines, 
EJECT EXTRA PAGES  = 0  # Eject 0, 1, 2, or 3 pages when done printing

# QIP can print in 'left-page', 'right-page' sequence if required.
# The 'right pages' will be shifted rightwards by the amount specified
# here, thus increasing their left margin by that amount.
RIGHT-PAGE SHIFT = 4     # (1/10" increments), min 0, max 20
PAUSE BETWEEN PAGES = 0  # 1 = wait for a key (for manual paper feed)
PRINT TO = 0             # 0 = Printer device, 1 = File, 2 = Spooler
PRINTER NUMBER = 0       # from choices below, 0,1,2 = PRINTER 0,1,2

# Here is where the three printers supported INSIDE QIP are specified.
# The standard QIP printer database has 20 models to choose from.  You can
# also get the extended printer database which supports over 300 printers.
# In either case, you need to specify HERE which three QIP printers will
# support with the To Where option of the OUTPUT menu.
#
# In order to do this, please refer to the file called PRINTERS.TXT.  It
# should contain a list of all the printers in the database you
# have.  If you can't find this file, refer to Appendix D of the
# manual for a listing of the PRINTERS.TXT file.
#
# Find your printer's name and model in the PRINTER.TXT file.  If you
# can't find it, choose one which you think is very similar.  You will
# need to make a note of the PTRID number for the printer, so that you can
# specify it below.  If you specify an incorrect number, or one which is
# not actually in the database, QIP will be unable to output to the
# printer when you try to print to it.
#
# Other things you specify here are the printer name (anything goes),
# the output device (parallel, serial or Novell(tm) network) and finally,
# the port number (1 is normal).
#
# Do this for any or all of the three printers below.  It is probably best
# to leave one as Generic, suitable for basic printing to almost any printer
PRINTER 0 PTRID = 1  # from PRINTERS.TXT
PRINTER 0 NAME = 'Generic'  # any name from 1 to 19 chars long
PRINTER 0 DEVICE = 0    # 0 = Parallel, 1 = Serial, 2= Network
PRINTER 0 PORT NO = 1   # eg: 1 = LPT1, max is 3
PRINTER 1 PTRID = 1027  # from PRINTERS.TXT
PRINTER 1 NAME = 'Epson MX-80'  # any name from 1 to 19 chars long
PRINTER 1 DEVICE = 0    # 0 = Parallel, 1 = Serial, 2= Network
PRINTER 1 PORT NO = 1   # eg: 1 = LPT1, max is 3
PRINTER 2 PTRID = 1550  # from PRINTERS.TXT
PRINTER 2 NAME = 'HP Laser Jet II'  # any name from 1 to 19 chars long
PRINTER 2 DEVICE = 0    # 0 = Parallel, 1 = Serial, 2= Network
PRINTER 2 PORT NO = 1   # eg: 1 = LPT1, max is 3

# Below are the COLOR --> FONT controls for each of the 8 colors.
# You will find it easier to change them inside QIP, but they are in this
# file so that you can, for example, send your font settings to someone
# else by means of this file.
BLACK STYLE = 0  # 0=Upright, 1=Italic, 2=Subscript, 3=Superscript
BLACK FACE  = 0  # 0=Draft, 1=Courier, 2=Prestige
BLACK CPI   = 0  # characters per inch, 0=10, 1=12, 2=16
BLACK PROPORTIONAL = 0  # 1=proportionally spaced, 0=not
BLACK ENABLED = 1       # 1=use this font setting, 0=ignore it
RED STYLE = 0
RED FACE  = 0
RED CPI   = 0
RED PROPORTIONAL = 0
RED ENABLED = 1
GREEN STYLE = 0
GREEN FACE  = 0
GREEN CPI   = 0
GREEN PROPORTIONAL = 0
GREEN ENABLED = 1
YELLOW STYLE = 0
YELLOW FACE  = 0
YELLOW CPI   = 0
YELLOW PROPORTIONAL = 0
YELLOW ENABLED = 1
BLUE STYLE = 0
BLUE FACE  = 0
BLUE CPI   = 0
BLUE PROPORTIONAL = 0
BLUE ENABLED = 1
MAGENTA STYLE = 0
MAGENTA FACE  = 0
MAGENTA CPI   = 0
MAGENTA PROPORTIONAL = 0
MAGENTA ENABLED = 1
CYAN STYLE = 0
CYAN FACE  = 0
CYAN CPI   = 0
CYAN PROPORTIONAL = 0
CYAN ENABLED = 1
WHITE STYLE = 0
WHITE FACE  = 0
WHITE CPI   = 0
WHITE PROPORTIONAL = 0
WHITE ENABLED = 1


#############################
#  C O L O R   S E T U P S  #
#############################

# Finally, the display color settings.  It is very easy to change
# these interactively with QSETUP, using the Change Current Set option
# of the Change Colors menu.  These are only stored here, like the
# FONT mappings above, to allow the colors to be easily conveyed
# between QIP users.
#
# Most of the color settings below consist of a Background,Foreground
# pair.  Each can be in the range 0-15 as shown below.  A couple of the
# settings use only the Background or the Foreground.  These are
# noted specifically.
#
# Value:        0    1    2     3     4     5      6     7        8-15
# BACKGROUND: BLACK RED GREEN YELLOW BLUE MAGENTA CYAN WHITE   BLINKING 0-7
# FOREGROUND:    -- as   above  --                             INTENSE 0-7

# First we have the colors used for display of data:
DEFAULT COLOR = 0,7  # Both BG and FG must be min 0, max 7 for this
FG IS BG ALTERNATIVE = 7,0  # eg: used when displaying red fg on red bg
UNDERLINE = 1,0  # Background color ONLY is used to indicate underline
FG IS UL ALTERNATIVE = 1,0  # eg: used when displaying red fg on red ul
TEXT MARKED =  7,0  # used to show marked data
TABLE CURSOR = 3,0  # used for data under the table cursor

# Now colors for Popup windows:
MENU/PROMPT TEXT = 7,1
SELECTED MENU/PROMPT TEXT = 0,7
MENU/PROMPT HOTKEYS = 7,4
MENU/PROMPT LOWLIGHTED = 7,3
HELP TEXT = 7,1
HELP KEYWORD = 7,0
SELECTED HELP KEYWORD = 0,7
NOTICE TEXT = 7,1
HIGHLIGHTED NOTICE = 15,0
ERROR MESSAGE = 4,7
HIGHLIGHTED ERROR MESSAGE = 4,0
PROGRAM WINDOW = 0,7  # Foreground used only (BG same as DEFAULT TEXT)

# To wrap it all up, colors for QIP System windows:
REMINDERS = 1,8
HIGHLIGHTED REMINDERS = 1,15
SCALE COLUMN = 0,6
SCALE ROW = 0,6
EFFECT TEXT = 0,7
HIGHLIGHTED EFFECT TEXT = 0,15
STATUS TEXT = 1,7

Directory of PC-SIG Library Disk #1477

 Volume in drive A has no label
 Directory of A:\

FILE1477 TXT      2444   9-18-89   8:56a
GO       BAT        38   1-18-88   1:38p
GO       TXT       731   9-12-89  10:23a
INSTALL  BAT       733   5-09-89  10:44a
MANUAL   TXT    276635   8-18-89   2:11p
QSETUP   TXT     14508   8-18-89   2:14p
        6 file(s)     295089 bytes
                       23552 bytes free