1 on 1 = 3!!
------------
****************************************************************
*
*      (c) COPYRIGHT 1987 I on I Computer Solutions, Inc.
*                      All Rights Reserved
FoxBASE+ is a trademark of Fox Software.
dBASE and dBASE III PLUS are trademarks of Ashton-Tate.
*******************************************************************
X HELP
INTRODUCTION
1.                         INTRODUCTION
____________
Welcome  to   1  on  1  =  3!!'s  help  documentation.    This
documentation is meant to help you  in the  use of  1 on  1 = 3!!'s
menu  system.    It  is  not  meant  as  a manual for the dBASE III
language.
We have tried not to use computer jargon as much  as possible,
but on  the other hand have tried to use the language of dBASE.  We
are hoping that by reading descriptions  in these  terms and seeing
the results of the execution of the menu choices you make, you will
become more familiar with the dBASE type environment.
We have tried to make a menu system, to make  it easy  for you
to  take  advantage  of  the  power of  a dBASE environment without
knowing anything about  dBASE.    That  is  one  of  the  goal's of
1 on 1 = 3!!.   On the  other hand  realize that if you can in time
get beyond the menu system and learn to  use the  dBASE programming
language, you can multiply the power of 1 on 1 = 3!! ten fold.
Please write  with any  criticism you have of this part of our
system both as a manual for its use and as an on-line  help system.
We have  found that  because it  has to serve two purposes, we have
had to repeat the same idea in many places.  Is this a problem when
using this as a manual?
Good luck!!  Let us know how you make out.  We're here to help
you and can do a better job if you help us.
CONVENTIONS USED
2.               CONVENTIONS USED IN DOCUMENTATION
----------------------------------
Special characters  on the  keyboard will  be described within
{}.   When you  see these  symbols it  means you type the character
described between the {}.  An  example of  this is  {Enter} for the
Enter key.   Sometimes you will need to press two keys at once.  An
example is {Ctrl Y}.  What this means is  you hold  down the {Ctrl}
key  just  as  you  would  the shift key when you are capitalizing.
Then you press the 'Y'.  Another example where you have two special
keys is  {Ctrl {End}}.   In this case you would again hold down the
{Ctrl} first, and while still holding it down press the {End} key.
In a number of  places  you  will  see  '(see  XXXXXX)', where
'XXXXXXX' is  a description like FILE SELECTION.  This means if you
want more information about  the current  command or  option, go to
the help menu and choose this item.
In many  places when  specifying a menu item to choose we have
used the term 'command'.  The reason we have done  this is  that in
many cases  your choice of a menu item results in the corresponding
command being executed.  In those places just  substitute the words
'menu  item'  for  the  word  'command'  if  it  makes it easier to
understand.
HELP
3.                            H E L P
-------
You are provided help in a number of different ways.
TUTORIAL
3.1.                    TUTORIAL
--------
There is a file called 3!!_TUT.DOC.  This  contains a tutorial
on how to use the system.  You just need to follow it keystroke for
keystroke to get a good understanding on how to use 1 on 1 = 3!!.
DOCUMENTAT
DOCUMENTATION
3.2.                  DOCUMENTATION
-------------
One of the choices  in the  Opening Menu  of 1  on 1  = 3!! is
documentation.   This will  allow you  to print out this whole help
file in an organized manner.  'Index' will print out  the index for
this file.  'Help' will print out this document breaking it up into
pages.
If you do not have a printer, send us a  check for  $15.00 and
we  will   send  you  a  listing  of  the  tutorial  and  the  help
documentation.
NAME
STARTING IN MENU
3.3.          STARTING OUT IN THE MENU MODE
-----------------------------
Welcome! A few suggestions to help you get started.   The {F1}
key is  your   HELP key.   Pressing  the {F1} key will get you help
from anywhere in the     menu mode.   You  can use  {Page Down} and
{Page Up} to see more information.  Hitting the {ESC}  key while in
the Help Browse Mode will give you a  menu of  other items  you can
get   help on.   I  suggest you  go there and look around.  Use the
{F3} key to change the  information  shown  on  the  bottom  of the
screen.  Hit enter from here to get started.  Good luck!
If you get somewhere in 1 on 1 = 3!! and you don't know how to
get out, try hitting the {ESC} key.  This will  in most  cases back
you out from where you are to a menu item.
ON-LINE HELP
3.4.                  ON-LINE HELP
You may  also get  help at  any time by pressing the {F1} key.
The {F1} key is your key to HELP.
When you press the {F1} key you go into the  Help Browse Mode.
What appears on the screen will depend on where you called for help
from.  Our full screen help makes use of the BROWSE mode to present
the information to you.  This means you can browse through the help
file to get more information just like you  can browse  through one
of your  own databases.   You may use the {PgUP} and {PgDn} keys to
move up or down one page at a time.  You may use the  {Up Arrow} or
the {Down Arrow} to scroll one line at a time up or down.
You  leave  the  Help  Browse  Mode by pressing the {ESC} key.
When you do this you will be given  a list  of help  topics you may
choose from.
APPENDIX                AVERAGING RECORDS
BROWSE                   CHANGING COLORS         CHOICES
CHOOSING MENU ITEMS      COMMAND LIST            COMMAND MODE
CONDITIONS               CONVENTIONS USED        CONVENTIONS dBASE
COPYING RECORDS          COUNTING RECORDS        DATABASES
DISPLAYING RECORDS       DOCUMENTATION           EDITING FILES
EDITING INPUT            EXPRESSION LIST         EXPRESSIONS
EXTRA                    FIELD LIST              FIELD SELECTION
FILE SELECTION           FILTERS                 FILES
FUNCTION LIST            HELP                    WINDOWS
INDEX EXPRESSION         INDEX FILE LIST         INFORMATION
LISTING RECORDS          MACROS                  MASKS
MEMORY VARIABLE          MEMORY VARIABLE LIST    MODIFYING FILES
MOVING AROUND MENU       NUMERIC EXPRESSION      ON LINE HELP
ON-LINE HELP             ONE KEY COMMANDS        OPENING MENU
OUTPUT                   PICTURE                 POSITION CHANGE
POSITION CHANGE KEYS     PROGRAMMING LIMITATIONS QUITTING MENU
RECORD WINDOW            RELATIONSHIPS           REPORTING
SCOPE                    SET COMMANDS            SORTING RECORDS
SPECIAL KEY WINDOW       STARTING IN MENU        SUMMING RECORDS
TOP OF  PAGE              TUTORIAL                UPDATE
If you want to see information on one of these topics move the
light bar  so it  is highlighting  the topic you want and press the
{Enter} key. You will be placed back in  the Help  Browse Mode with
the new information on the screen.
You can move the light bar in the following ways:
1.   {Home} will move you to the first help topic.
2.   {End} will move you to the last help topic.
3.   Pressing a  letter will  move you  to the next help topic
that starts with that letter.
4.   {Up Arrow}, {Down Arrow}, {Right Arrow}, and {Left Arrow}
will move you in the corresponding direction.
If, when  you are  presented with the list of help topics, you
do not want any more help at this time, just  press the  {ESC} key.
You will  be returned to the same position in the program where you
requested help.
ON LINE HELP SCREENS
3.5.              ON LINE HELP SCREENS
--------------------
While you are in the Menu  Mode you  have your  choice of five
different  windows  on  the  bottom  of  your  screen that give you
useful information.  You  may easily  switch between  these windows
by pressing the {F3} key.
HELP WINDOWS
3.5.1.           HELP WINDOWS
When you  first go  into the  Menu Mode you will notice at the
bottom of the screen a window  that contains  information with some
suggestions  on  how  to  get  started.    As  you move through the
different menu items, the  information  in  this  Help  Window will
change based  on which  menu item is highlighted.  If you press the
{F1} key you will go into the Help Browse Mode.   You  will see the
same information  that you  saw in  the Help  Window plus a further
explanation if there is one.
INFORMATION WINDOWS
3.5.2.        INFORMATION WINDOWS
-------------------
When you are in the Menu Mode and  the Help  Window is  on the
screen, pressing  the {F3}  key will remove the Help Window and put
in its place one of the following Information Windows.
------------------------------------------------------------------
|Database:  STU.DBF Current Record:         29 Screen Output  ON  |
|Relation:          Number Records:         29 Printer Output OFF |
|Picture:           Last Updated On:  09/09/87 File Output    OFF |
|Report:            Record Size is:        178                    |
|Label:                                                           |
|Filter:    stu.FIL SEX='M'                                       |
|Index:     STUDENT.IDX                                           |
-------------------------------------------------------------------
|                                                                 |
|Which records   =  NEXT       15                                 |
|Field list      = ID, FN, MI, LN,, STATE, PHONE                  |
|Selection rules = STATE='CT'                                     |
|DO WHILE rules  = SEX='F'                                        |
Which one you get will depend on what part of the menu you are
in.
RECORD WINDOW
3.5.3.           RECORD WINDOW
Pressing {F3}  again will  give you  the Record  Window.  This
contain the  current record  number and  the data  from the current
record.
SPECIAL KEY WINDOW
3.5.4.        SPECIAL KEY WINDOW
------------------
Pressing {F3}  again gives  you the  Special Key Window.  This
window contains information on the special keys you can use to move
around the  menu, choose  menu items,  and execute  special one key
commands (see ONE KEY COMMANDS).
MOVING AROUND MENU
4.                    MOVING AROUND THE MENUS
-----------------------
CHOOSING MENU ITEMS
5.                      CHOOSING MENU ITEMS
When you start out in 1 on 1 = 3!!, you are  presented with an
opening menu.   The  first item  in the  menu is highlighted.   You
pick a menu item from the opening menu in one  of two  ways.  First
you can  use the  {Down Arrow} and the {Up Arrow} to move the light
bar to the item you want and then press the  {Enter} key  to select
it.    A  second  method  is  to press the first letter of the menu
description that  you want.   For  example pressing  the letter 'X'
will place you in the Execute DOS Mode.
When you  first go  into the  Menu Mode, the first item on the
top row will be highlighted.  This is a level  1 menu.   You choose
an item in this menu by moving the light bar with the {Right Arrow}
and the {Left Arrow} and then pressing {Enter}  at your  choice, or
you can  press the  first letter of the item you want.  When you do
this the corresponding menu will pull down and  the light  bar will
be placed on the first item of the pull down menu.
These are  level 2  menus.  All level 2 menus have their items
numbered.  You can  choose one  of these  by moving  with the {Down
Arrow} and  the {Up  Arrow} and  hitting {Enter} on your choice, or
you can press the corresponding number of the menu item you want.
While in the level  2 menu,  you may  move to  another level 2
menu by  using the  {Right Arrow}  and {Left Arrow} or pressing the
letter oF the corresponding level 1 menu.  For example,  if you are
in the 'Name' pull down menu and type the letter 'U', you will exit
the 'Name' menu and go to the 'Update' menu.
When you select a  level 2  menu item  you may  get a  level 3
menu, and  from there  you may  get a  level 4 menu.  Level 3 and 4
menus work the same way.  They are numbered like the level  2 menu.
You make  your selections just like you do with level 2 menus.  You
can use the {Down Arrow} and {Up Arrow}  to move  the light  bar to
the item  you want  and then  press the {Enter} key or you can type
the corresponding number of the menu item you want.   {Esc}, {Right
Arrow} and {Left Arrow} will all move you back to the previous menu
without executing the command or option under the light bar.
All this sounds a lot more complicated then  it is.   Once you
try it out you will find it very easy.  You can use the {F3} key to
get the Special Key Window on you screen any time you are at a menu
item.   This will  give you all the different keys you can use from
where you are and what they do (see SPECIAL KEY WINDOW).
6.                         OPENING MENU
Menu mode
OPENING MENU
6.1.                    MENU MODE
---------
The Menu Mode is an easy to use method of  managing your data.
All work  is done  by choosing  from menus  what you  want done and
specifying from lists the files  and  fields  you  need.    You are
helped in  its use by a tutorial in the file 3!!_tut.doc, a listing
of the help file, an on screen help window, and further help at the
touch of the {F1} key.
Command mo
6.2.                  COMMAND MODE
Using this  mode requires  you to  type in  your commands.  It
requires an understanding of dBASE III commands and  functions (see
COMMAND LIST and FUNCTION LIST).
Command Mode  puts you  where  you can execute commands or run
your dBASE programs.    You  execute  your  programs  by  typing DO
<program name>.   The  computer will first look for a file with the
extension '.FOX'.  This is a program that has been  compiled by the
FoxBASE+  compiler.    If  this  file  is not found a file with the
extension '.III' is looked for.  This is  a tokenized  copy of your
program that  1 on 1 = 3!! creates so that it can load and run your
program faster.  If it does not find this file  it will  look for a
file with  the extension  '.PRG'. If  it does not find that file it
will give you an error message.
If 1 on 1 = 3!! does find the '.PRG' file, it will read  it in
and  create  a  '.III'  file.    It  will then start executing your
program.  If you make a change in one of  your programs  you should
delete the  corresponding '.III'  file.   If you don't it will seem
like the computer didn't take the changes you made to your program.
You can return to the opening  menu from  the Command  Mode by
entering the QUIT or the RETURN commands.
Administra
6.3.                 ADMINISTRATION
--------------
This mode  allows you to tell the computer if you have a color
or monochrome monitor.  It will  also allow  you to  define whether
users can update databases or not.
First you  will be  asked to  enter M  for monochrome or C for
color.  Put in the appropriate letter.  Then you  will be  asked to
enter R  for read  only and  U for update.  If you put in 'R' users
will be restricted from using any menu items that allow updating of
databases.   Users will not be allowed to use the Command Mode.  If
you put in  'U'  then  users  will  have  unrestricted  use  of the
program.
X DOS
6.4.                      X DOS
-----
This will  allow you  to execute DOS commands.  If you need to
execute DOS commands  this is a good place to do it.  Once  you get
into the  Menu Mode the program takes a lot more memory and you may
have trouble executing DOS commands.
Your commands will be  stored.   Pressing the  {Up Arrow} will
get you back previous commands.  You may edit them and execute them
again.
Documentat
6.5.                  DOCUMENTATION
You may print out a listing of this help documentation and the
help index from this menu choice.
Choosing  'Index'  at  that  point  will let you print out the
index for the help file.  You will  be asked  how much  you want to
indent the listing from the left hand margin.  Choosing 'Help' will
allow you to specify  which pages  you want  printed from  the help
file  as  well  as  how  much  you  want  the listing indented.  We
recommend  that  you  print  a  couple  of  pages  using  different
indentations to  see what  works best  on your printer. If you want
all the pages put in a starting page number of 1 and an ending page
number of 999.  There should be between 70 to 80 pages.
Quit
Q U I T
Leave 1 on 1 = 3!! and return to DOS.
DATABASES
7.                           DATABASES
1 on  1 = 3!! uses the term database as it has come to be used
in dBASE III.   A database  is a  file that  contains related data.
This  data  is  organized  into  records.   Each record has defined
fields and all records have the same field definition.
C DATABASE
7.1.             CREATE A DATABASE FILE
----------------------
CREATE <database file name>
This command will allow  you to  create a  new database.   You
will  be  asked  for  the  name  of  your  new  database  (see FILE
SELECTION).  After entering your file  name you  will be  given  an
input screen  with four  columns to  fill in for each field in your
new database.  These columns will  be  field  name,  type  of data,
width  of  the  field,  and  number of characters after the decimal
place if you are entering a numeric field.   When  you have entered
all the fields you want type {Ctrl {End}} to finish.
The field  name can  be 1 to 10 characters and must start with
a letter A - Z.  The rest of the  name can  be made  up of letters,
numbers and the underline character '_'.
The types of data can be:
1.   Character.     It can  be from  1 to  254 characters long
and hold any character.
2.   Numeric        This field will  only  hold  numeric data.
It can  be up  to 19 characters. It can be
an integer in which case you  would put in
0  for  the  number  of decimals after the
decimal place.  It can be a decimal number
in which  case you  would enter the number
of decimal places  you  want  it  to hold.
The  number  of  decimal places must be at
least 2 less then the width of the field.
3.   Date           This will  store  you  dates  in  the form
mm/dd/yy.    You  will  be able to do date
arithmetic   on   these   date   such   as
subtracting them to get the number of days
between two  dates.   This will  take up 8
characters.
4.   Logical        This  will   hold  1  character  and  will
contain only true or  false.   The default
will be false.
5.   Memo           This  is  a  special  type  of  field.  It
allows you to use the editor to put  up to
64,000 characters  into the field.  In the
main database this field takes up  only 10
characters.    The  rest  of  the  data is
stored in a separate database.
See EDITING INPUT for an explanation of the  keys you  can use
to input your database description.
When you do a {Ctrl {End}} to save your description the system
will ask you to type {Enter} if you are sure you are  finished.  It
will then give you a chance to enter data if you want.
M DATABASE
7.2.             MODIFY A DATABASE FILE
USE <database file name>
MODIFY STRUCTURE
This  command  will  allow  you  to  make modifications to the
structure of the current database.  You may  add new fields, delete
fields, change  the type and size of old fields or change the names
of fields.  You use the same rules for modifying a database  as you
did for creating it (see DATABASES).
If you change both the name and size of a field you will loose
any data in that field.  If you need to  change  both the  name and
the size  do it  in two steps.  First change the name and save your
work.  Then use this command again and go in and change the size.
When you modify a  database the  system renames  your original
file to  file name '.BAK'.  When you finish modifying the structure
press the {Ctrl {End}} key to finish.  The  system creates  the new
structure and  then appends  the back up database.  Where it can it
saves your data.
If you decide you  do not  want to  implement the  changes you have
made press  the {Esc} key.  You will be asked if you really want to
abandon your changes.
N DATABASE
7.3.                 NAME A DATABASE
---------------
USE [<database file name>]  [INDEX <index file list>]
[ALIAS <alias name>]
This command  selects the  database you  want to  work with as
well as  any associated  index files.  This is the key command that
affects most of the other commands.  In  fact, until  you specify a
database you  cannot execute  most of the other commands.  You will
be asked to provide a database name (see  FILE SELECTION).   If you
do not  put in  a database, the current database will be closed and
all options associated with it will be cleared.
After you choose a database you will be given the same type of
choice of  index files  (see FILE  SELECTION).   If you do not want
this database to be  indexed, just  hit   {Enter} key  on the blank
line.   If you  do want  an index,  choose it by the same method as
above for choosing a database
If you do choose  an  index  file  you  will  be  prompted for
another  index  file.    The  reason  for this is a database can be
indexed in more the  one way.   If  this is  the case,  and you are
updating, then  you will  want to  assign all active indexes.  This
will keep them all current with any changes you make.  If  you want
to change the order that you access the file when you have multiple
indexes see ORDER under ARRANGE.
The system will keep on asking you for another index file
until you  enter  a blank line or seven index files.  If you put in
more then one index file, the records will be ordered  by the first
index file.
If you  have multiple indexes but are not updating, it is more
efficient to just choose the one you want  it ordered  by.   If you
want a  different order  latter you can use the INDEX command under
NAME to change the index.
INDEXES
8.                            INDEXES
An index file is a file that specifies what order the database
will  be  accessed.    It  is  also a means of quickly looking up a
record in the database based on the index key.
A INDEX
8.1.                 CREATE AN INDEX
INDEX ON <index expression> TO <index file name> [UNIQUE]
This command is used to create a new index file. You must have
an active database to use this command.   You will be asked for the
name of the file to keep the index  in (see  FILE SELECTION).   You
will then  be asked  to enter the index expression (see EXPRESSIONS
and FIELD SELECTION).  When you  have the  expression you  want hit
the {Enter}  key.   The computer  will then  create the index file.
That index will become the only  index the  database is  indexed by
even if you had declared other indexes before.
If you  change your  mind about creating this index before you
hit the {Enter} key, just press the {Esc}.
N INDEX
8.2.                NAME A INDEX FILE
-----------------
SET INDEX TO [<index file list>]
This command selects the index files that are to go along with
your  database.  You  must  have  an  active  database  to use this
command.  If your database is already indexed  the new  index files
will replace  them. If you do not put in an index the database will
become unindexed.  The first index file in the list  will determine
the order the records are accessed.  You may put in up to 7 indexes
for one database.
After you select this item you will be asked to  enter an
index file  name (see  FILE SELECTION).  If you  do choose an index
file you will be prompted for another index  file.  The  reason for
this is  a database can be indexed in more the one way.  If this is
the case, and you are updating,  then you  will want  to assign all
active indexes.   This  will keep them all current with any changes
you make.  If you want to change the order that you access the file
when you have multiple indexes see ORDER under ORGANIZE.
The  system  will  keep  on  asking you for another index file
until you enter a blank line or seven index files.
If you have multiple indexes but are not updating, it  is more
efficient to  just choose  the one  you want it ordered by.  If you
want a different order latter you  can use  this command  to change
the index at that time.
A REINDEX
8.3.                     REINDEX
REINDEX
This command  will recreate  all the  currently active indexes
for your database.  You must have an active database as well  as at
least one  active index to use this command.  Use this command when
you have added records to  the  database  without  having  all your
indexes active.  It is also a good command to use when it seems you
are not finding all the records  you think  you should  be finding.
It could  mean that you inadvertently did not have the index active
when you updated the database or that some  how the  index has been
corrupted.
A ORDER
8.4.                      ORDER
SET ORDER TO <numeric expression>
This command  is used  to specify which of your active indexes
will be the primary one.  You must have an active database  as well
as an active index to use this command.  The primary index controls
the order the database is accessed and is also the one used in look
ups.  When you originally put in the index names, the first one you
put in became the primary index.   The  order command  is a  way of
changing which  index is  the primary  index without reentering the
index names.  You will be asked to  enter the  number of  the index
you want to be primary.  The first index is number 1, the second 2,
and so on.  If you  want to  access the  database without  it being
indexed then select an order of 0.
RELATIONSHIPS
9.                         RELATIONSHIPS
Relationships  are  connections  or  links  between databases.
Relationships are made up of a master database, a key expression, a
related database  and the  related databases  index file.   The key
expression is an expression that is made up from the  fields in the
master database.   It is used to look up via the related database's
index file, the record in the related database  that is  related to
the current record in the master database.
An example  would be  using the  employee number  field from a
payroll history file to look up that employee in the  main employee
file.    Another  example  would  be  to  use the 2 character state
abbreviation in a name and address file to  look up  the full state
name in  a file that contains abbreviations and state names for all
the states.
Using 1 on 1  =  3!!  you  can  specify  what  relations exist
between different  files.   Once you do this, as the record changes
in the master database,  the  system  will  automatically  find the
corresponding record in any related databases.
1 on  1 =  3!! allows up to five relations to be set up in the
Menu Mode.  Different than dBASE  III PLUS  you may  have more than
one relationship  from the  same databases.   This  means you could
have a name and address file  related to  a state  file and  at the
same time have it related to another file such as a company file.
Also  different  then  dBASE  III  PLUS  the copy and the sort
command can specify that fields from the related  databases go into
the new database.
In the Edit Mode you may specify fields from different related
files and update them all at the same time.
C RELATION
9.1.              CREATE A RELATIONSHIP
---------------------
SET RELATIONSHIP TO [<expression> INTO <alias>] [Additive]
This command will allow  you  to  set  up  a  new relationship
between different  databases (see RELATIONSHIPS).  You must have an
active database to use  this command.   You  will be  asked for the
name of  the file  to save  the relationship  (see FILE SELECTION).
You will then be asked for the key  expression to  use in searching
the related  database to  find the  related record (see EXPRESSIONS
and FIELD SELECTION). Normally  this would  just be  a single field
name but  it could be a complex expression.  You will then be asked
for the  name of  the related  database file  (see FILE SELECTION).
This is the file you are trying to link or relate the main database
to.  Last you will be asked to  enter the  related index  file name
(see FILE  SELECTION).  This is the index file that will be uses to
look up the related record in the related database.
You will then be presented with a screen like the one below.
KEY FIELD              RELATED DATABASE FILE  RELATED INDEX
FILE
1 - STUD_ID                STUDENT.DBF            STUDENT.IDX
2 -
3 -
4 -
5 -
Enter number  to change,  0 to save, 2 to add a relation
0
At this point if this is the only  relationship you  want type
in a  zero.   If you  want to enter another relationship enter a 2.
You   will  again  be  prompted  for  the  key  expression, related
database and  related index.   Now when you come back to the screen
as above you will  have two  relationships shown.   If  you want to
change  one  of  the  relationships  just  enter it's corresponding
number.  You will  be prompted  for new  information for  the three
items.   If you want to remove a relationship, change its key field
to a blank  line.    That  relationship  will  be  removed  and any
relationships after it will be moved up on the screen.
When you  have the  relationships you want, enter a zero.  The
relationships will be saved in the file you have named  and will be
in effect.
M RELATION
9.2.              MODIFY A RELATIONSHIP
This  command  will  allow  you  to modify a relationship (see
RELATIONSHIPS).  You must have an active database  in order  to use
this command.   You  will be asked for the name of the relationship
file you want to modify.  You will then be presented with  a screen
as shown  under CREATE  A RELATIONSHIP.  You will be able to modify
or add to the relationships as described there.
N RELATION
9.3.               NAME A RELATIONSHIP
This command will allow  you to  name a  relationship file you
have saved  before.   You must  have an active database to use this
command.  You will be asked for the  name of  the relationship file
(see  FILE  SELECTION).    Once  you name a relationship file those
relationships will be put into effect.  If you put in a  blank file
name  then  any  relationships  that  had  been  in  effect will be
removed.
FILTERS
10.                           FILTERS
A filter file contains  rules for  choosing which  records you
want to access when using other commands (see CONDITIONS).  While a
filter is in effect  it will  seem like  the current  database only
contains records that pass the filter test.
C FILTER
10.1.                CREATE A FILTER
STORE <condition> TO <memory variable>
SET FILTER TO &<memory variable>
SAVE TO <memory file> ALL LIKE <memory variable>
This command  will allow  you to create a new filter file (see
FILTERS).  You must have an  active database  in order  to use this
command.   You will  be asked  for the  name of the output file you
want the filter kept  in (see  FILE SELECTION).   You  will then be
given the chance to enter a logical expression that will be used as
the filter (see CONDITIONS).  When you finish  the filter  you have
entered will become the current active filter.
M FILTER
10.2.                MODIFY A FILTER
RESTORE FROM <memory file> ADDITIVE
This command  will allow  you to modify a filter that you have
created previously (see FILTERS).  You must have an active database
to use  this command.  You will be asked for the name of the filter
file (see FILE SELECTION).   You  will then  be presented  with the
logical expression  that was  in that file and will get a chance to
modify it (see CONDITIONS  and  FIELD  SELECTION).    When  you are
finished the  filter will be saved in the same file and that filter
will become the active filter.
N FILTER
10.3.              NAME A FILTER FILE
This command selects a  filter file  (see FILTERS).   You must
have an  active database to use this command.  You will be asked to
enter the filter file name (see  FILE SELECTION).     If you choose
this command but don't enter a file name, any filter in effect will
be turned off.  If you  do choose  a filter  file then  the logical
expression in that file will become the current active filter.
C HELP
PICTURE
11.                          PICTURES
The  picture  commands  are  a  way  of saving and restoring a
snapshot  of  the  current  environment.    Information  about  the
database, indexes and all options are saved.
C PICTURE
11.1.               CREATE A PICTURE
----------------
SAVE TO <memory file name> ALL LIKE <mask>
This command  will allow you to save a snapshot of the current
environment.  You must have an active database to use this command.
You will  be asked the name of the file to keep the picture in (see
FILE  SELECTION).    It  will  then  save  the   following  current
information:      active  database,  active indexes, primary index,
relationships, filter  file,  filter,  report  control  file, label
control file, output devices, output file if one is defined.  Under
choices it will  save  any  list,  which  records  to  choose from,
selection rules, 'DO WHILE' rules.  Under browse it will save field
list, maximum width to display, fields to lock, to follow or not to
follow the index, append or no append, modify or no modify.
It will not save the current information in the databases.  It
will not save the currently active macros.
N PICTURE
11.2.                NAME A PICTURE
RESTORE FROM <memory file name> ADDITIVE
This command will  allow  you  to  name  a  previously created
picture file.   You  will be asked for the name of the picture file
(see FILE SELECTION).  This file will be loaded and the environment
just  as  it  was  when  the  file was saved will be recreated (see
PICTURE).  The data  in  the  databases  will  not  be  restored in
anyway.   No macros  will be  restored.   Any macros in memory will
remain there.
MACROS
12.                           MACROS
------
A macro is a  way of  assigning more  then one  keystroke to a
single key and playing back those keystrokes at a latter time.
After using  the Menu  Mode of  1 on  1 = 3!! for a while, you
will find that you are repeating the same operations over and over.
That is a  good time to start using macros.
I for  example, found that when I was updating a database that
was indexed, I would continually go back and forth between Seek and
Edit.   Now that's  not a  lot of  keystrokes but  I'm lazy and get
bored easily.  The answer was to create macros.
To create a macro,  you press  the {F2}  key any  time you are
positioned on  a menu item.  This will not work while you are doing
such things as entering file names, entering data,  etc.   You must
be at a menu item.
You will  be asked to enter the name of the character you want
to redefine.  If the character  you pick  already has  a definition
you will  be asked  if you  want to replace it.  If you say no, you
will be asked for a new key to redefine.  If you  say yes,  the key
will loose  it's old  values.   If you then enter a {F2} right away
the key will take on it's normal function.
After you  put in  the key  to redefine  you will  be asked to
enter the  new keystrokes.   Just  type them in the exact order you
would if you were actually doing it in the menu.  One hint.  Before
you start  putting in  the keystrokes you type the {Esc} about five
times.  This will force the light bar up to the top  menu no matter
how far  down in  menus it was.  Now you can put in your keystrokes
knowing you are always starting from the top menu.
A word about which characters to choose.   As mentioned above,
you must  be at  a menu  item when  you press  {F2} to get into the
Create Macro Mode.  The same is true  about when  you can  invoke a
macro.   You must  be at  a menu item.  Therefore it is a good idea
not to redefine keys that you use to get around  the menu  like the
numbers, the  first letters of the main category choices, the arrow
keys, etc.
You may use the function keys,  {F4} through  {F10}.   You may
use {Alt} and {Ctrl} key in combination with other keys but be very
careful with these.  Sometimes the value they  produce is  really a
letter or a special character.
Below are a list of keys to avoid redefining:
The number keys.
The special function keys like {Esc} and {Right Arrow}
These {Alt} keys: B, M, N, {F7}, {F9}
These {Ctrl} keys: C, D E J, L, M, P, R, S X, {F4], {F6}, {F8}
When I  created my  macros for  seeking and  editing it looked
like the following.  The only difference is you do not type  in the
description  of  the  special  characters  like  {Esc}.    You must
actually press the {Esc} key.
---
Enter Macro Key, F2 to End {F9}
Enter Your Macro, F2 to End {Esc}{Esc}{Esc}{Esc}{Esc}P1{F2}
First I select the {F9} key to be redefined.
After pressing the {Esc} five times I know I now have to  be in the
top  menu.    Pressing  P  puts  me in the Position pull down menu.
Pressing 1 selects Seek from the Position menu.  The  {F2} ends the
macro definition for this key.
Enter Macro Key, F2 to End {F10}
Enter Your Macro, F2 to End {Esc}{Esc}{Esc}{Esc}{Esc}U11{F2}
I then select the {F10} key to be redefined.
Again I  press the  {Esc} five  times to  make sure I am in the top
menu.  I then press the U to  get into  the Update  pull down menu.
Pressing 1  selects Edit  from that  menu and  the pressing 1 again
Executes the command.
Enter Macro Key, F2 to End {F2}
Entering {F2} returns me to the main menu.
Now when I hit the {F9} key I go right to the  computer asking
me for my look up data for the seek.  After putting this in hitting
the {F10} will put me right into the  edit mode  with the  record I
just found.   When  I am finished in the edit mode and want to look
for another record, I have to hit {Esc} to get out of the edit mode
before I  can hit {F9} to go back to seek.  Remember you must be at
a menu item to invoke a macro.
If you are using  a macro  to pick  a file  name or  a list of
variables,   you will  have to  type in the information rather then
using the arrow keys  to make  your selection.   It  is recommended
that before  typing in  your selection  you type  a {Ctrl Y}.  This
will clear anything that might already be on the line.
Macros properly used can save you  a lot  of time,  effort and
boredom.
C MACRO
12.1.              CREATE A MACRO FILE
This command  will save  all the  currently active macros to a
file (see MACROS).  You will be  asked  to  enter  the  name  of an
output  file  (see  FILE  SELECTION).    If  you  do  not  enter an
extension, '.mac' will be added to your filename.
N MACRO
12.2.               NAME A MACRO FILE
This command selects a macro file and loads all of  the macros
from the  file into  memory so that you can use then (see MACROS).
If you have any macros in memory you will be  asked if  you want to
keep those  macros.   You will  be asked  for the name of the macro
file you want (see FILE SELECTION).  If  you do  not put  in a file
name, you will end up with no macros in memory.  If you do put in a
file name you will  then have  access to  all the  macros that were
stored in the file you picked.
REPORTING
13.                          REPORTING
R OUTPUT
OUTPUT
13.1.                    OUTPUT
Choosing  this  menu  item  will present you with another menu
that will allow you to  control  where  your  output  goes  for the
following commands:   LIST,  DISPLAY, REPORT,  LABEL, SUM, AVERAGE,
COUNT, DIRECTORY and STRUCTURE.   You  will  be  able  to  send the
output to  the screen,  printer or a file you specify.  You will be
able to send the output to any combination of the three places.
D TURN ON
13.1.1.            SCREEN ON
SET CONSOLE ON
This command will turn on output to the  screen for  the LIST,
DISPLAY,  REPORT,   LABEL,  SUM,   AVERAGE,  COUNT,  DIRECTORY  and
STRUCTURE commands.  While one of those commands is printing to the
screen  you  may  temporarily  stop  it  by  pressing {Ctrl S}.  To
restart printing press any   key.    You  may  abandon  printing by
hitting the  {Esc} key.   You  will be asked if you want to restart
your output.  If you say yes you will be  restarted from  the start
of the output.
D TURN OFF
13.1.2.           SCREEN OFF
----------
SET CONSOLE OFF
This command  will turn off output to the screen for the LIST,
DISPLAY,  REPORT,  LABEL,  SUM,   AVERAGE,  COUNT,   DIRECTORY  and
STRUCTURE commands.
D PRINT ON
13.1.3.            PRINT ON
SET PRINT ON
This command  will turn on output to the printer for the LIST,
STRUCTURE commands.  If your printer is not on when you execute one
of those commands you will be  notified  and  given  the  option of
going on  or stopping.   If you press the {Esc} key while something
is printing the output  to  the  printer  will  be  stopped.   Your
printer may  keep on printing because many printers have buffers to
accept data from the computer faster then they can print.  When the
computer stops  sending output they continue to print data from the
buffer.  One way to stop this printing is to turn the print off and
then on  again.  Your data in the print buffer will be lost and you
will have to reset the top of page.  After pressing {Esc}  you will
be asked  if you  want to  restart the  output.  If you say yes the
output will be restarted from the beginning.
D PRINT OF
13.1.4.            PRINT OFF
SET PRINT OFF
This command will turn off output to the printer for the LIST,
D START FI
13.1.5.             FILE ON
SET ALTERNATE TO <output file name>
SET ALTERNATE ON
This command will turn on the printing of output to a file for
the LIST,  DISPLAY, REPORT,  LABEL, SUM,  AVERAGE, COUNT, DIRECTORY
and STRUCTURE  commands.   You will  be asked  for the  name of the
output file  (see FILE  SELECTION).   If you  do not  supply one or
press {Esc} the status of output to a file will remain the  same as
it  was  before.    If  you  give  a  file name and a file had been
previously on, the other file will be closed.
D STOP FIL
13.1.6.            FILE OFF
SET ALTERNATE TO
This command will turn off the  printing  to  a  file  for the
LIST, DISPLAY,  REPORT, LABEL,  SUM, AVERAGE,  COUNT, DIRECTORY and
STRUCTURE commands.  The file that was open will be closed.
R EJECT
TOP OF PAGE
13.2.                     EJECT
EJECT
This command is used to set a new  top of  page.   If you have
set print  on, this  will cause the printer to go to the top of the
next page.  If you have selected an output file  this will  place a
top of  page marker  in the  output file.   Some  printers will not
respond to the top of page output marker.
13.3.                    REPORTS
1 on  1 =  3!! contains  an easy  to use  capability to create
reports.    Using  input  screens  you enter the definition of your
report and save it.   You  are  then  able  to  run  the  report by
specifying the control file.
C REPORT
13.3.1.  CREATE A REPORT CONTROL FILE
----------------------------
CREATE REPORT <report file name>
This command  will allow  you to  create a  new report control
file.  You must have an active database to use  this command.   You
will be asked for the name of the output file (see FILE SELECTION).
You will then be given a chance to describe your report.   You will
input titles,  column expressions, column headings, fields to total
on, and various other information.
After you put in the name of your report control file you will
go into the Create Report Mode.  At the top of the screen will be a
help screen explaining the function of the editing  keys during the
Create Report Mode (see EDITING KEYS).
On  the  first  screen  in  the Create Report Mode you will be
given four lines for  your page  heading.   These will  be centered
over your  report.  You may change any of the other characteristics
you want to on this page.  Just enter your new information.   Plain
page means  page numbers  and the date are suppressed, and the page
heading is only printed on the first page.
On the  second screen  you have  'Group on  expression'.  This
allows you  to create  a break in the report and get totals when an
expression changes value.  An expression can be a simple field like
STATE   or   a   more   complex   item  like  STATE+CTOD(DOB)  (see
EXPRESSIONS).  The 'Group heading' is  the description  you want to
see at  the start  of each  group on  your report.  'Summary report
only' is asking if you want just the total lines or do you want the
detail also.  'Sub-group on  expression' allows  you to  break on a
sub-group with in the primary group.  This could be  something like
CITY within STATE.
The  next  screen  will  be  the  start  of  input  for column
information.  The first  item is  'Contents'.   Here it  wants what
data you  want printed in this column from your databases.  You may
put in a field  name  or  an  expression  (see  EXPRESSIONS).   The
computer will  generate a  default field width based on the size of
the expression.  You may change this size.  If  while reporting the
column width  is not large enough to print the data in that column,
the rest of the data will wrap down to the  same field  location on
the next  line.  If the expression is numeric you will be asked how
many decimal places to print.    The  next  item  'Total  (Y/N)' is
asking whether you want to total on this field.  In some cases your
numeric expression is a code and it would  not make  sense to total
on it.  Next comes column headings.  You have four lines for these.
If the width of your column  heading is  larger then  the width you
defined  for  your  column,  then  the  width  of the field will be
increased automatically.   If  it  is  a  character  expression the
headings will  be left justified over the data.  If it is a numeric
expression the headings will be right justified over the data.
You may use the editing keys to move around the  Create Report
Mode.   When finished  use the  {Ctrl {End}} or use the menu key to
save your data as described under EDITING KEYS.
M REPORT
13.3.2.  MODIFY A REPORT CONTROL FILE
MODIFY REPORT <report file name>
This command will allow  you to  modify a  report control file
which was  created before.  You must have an active database to use
this command.   You will  be  asked  for  the  name  of  the report
control file (see FILE SELECTION).  You will then be presented with
the same input screens as you  were  when  you  created  the report
except  that  now  they  will  contain  the  information you put in
before.  Follow the same  instructions  as  under  CREATE  A REPORT
CONTROL FILE to modify your control file (see REPORT).
R REPORT
13.3.3.        PRODUCE A REPORT
REPORT FORM <report file name> [<scope>] [WHILE <condition>]
[FOR <condition>] [PLAIN] [HEADING <heading expression>] [NOEJECT]
[TO PRINT] [TO FILE <output file name>] [SUMMARY]
This command  will allow  you to produce a report based on the
information you  have put  in a  report control  file (see REPORT).
You must  have an  active database to use this command.  The report
will come out in the order of the  primary index.   If  there is no
index it will come out in the order records are in the database.
You will get your choice of what records can be selected, what
rules will be used to select records, and  what rules  will be used
in  determining  when  to  stop  selection  records  to  print (see
CHOICES).  The default is that all records will be  reported unless
there is  a filter  in effect  (see FILTERS).  If there is a filter
only records that pass the filter  conditions can  be reported (see
HOW RECORDS ARE SELECTED).
You will then be asked for the name of the report control file
(see FILE SELECTION).  The report  will  then  be  produced  on the
screen, printer  or to  a file depending on what you have specified
with the OUTPUT command (see OUTPUT).
LABELS
13.4.                    LABELS
Just like with reporting, 1 on  1  =  3!!  gives  you  an easy
method of  setting up  a definition  for printing labels.  You save
this definition in a file and can then use it again and again.
C LABEL
13.4.1.   CREATE A LABEL CONTROL FILE
---------------------------
CREATE LABEL <label file name>
This command will allow you  to  create  a  new  label control
file.   You must  have an active database to use this command.  You
You will  then be  given a chance to describe your label.  You will
input the size, location, number across  and what  is to  go on the
labels.
After you  put in the name of your label control file you will
go into the Create Label Mode.  At the top of the screen will  be a
help screen  explaining the function of the editing keys during the
Create Label Mode (see EDITING KEYS).
On the second page you will put in  the information  that will
appear on the label.  On each line you may leave it blank, put in a
constant or put in an expression (see EXPRESSIONS).  If  you put in
an expression  that evaluates  to a  blank line when the labels are
run, the rest of the lines will be moved up  to fill  in the space.
This  means  for  example,  if  you  have  two lines for the street
address and one of  them is  missing, you  will not  end up  with a
blank line in the middle of your label.
Below is  an example  of how  to use functions to get flexible
output on your labels.
1. IIF(mi<>' ', TRIM(fn)+' '+mi+'. '+ln, TRIM(fn)+' '+ln)
2. addr1
3. addr2
4. TRIM(city)+', '+state+'  '+zip
5.
On the first line we check  if there  is a  middle initial, if
there is  one we put it in after removing all the blanks at the end
of the first name except one.   We  then put  a period  and a blank
after the  middle initial,  and then the last name.  If there is no
middle initial we leave one blank after the  first name  and put in
the last name.
One thing to watch out for is that you are limited to about 66
characters on a line.  This means if you use long field  names like
'first_name', you may not have room to put in the expression.
We have  put in  two street  address lines.  We know if one or
both are blank then the remaining lines will be moved up.
On line 4 we take all the blanks from after the city and add a
comma and  a blank.   We then put the state, followed by two blanks
and the zip code.
{Ctrl End} will save  your  file  as  described  under EDITING
KEYS.
M LABEL
13.4.2.   MODIFY A LABEL CONTROL FILE
MODIFY LABEL <label file name>
This command  will allow  you to  modify a  label control file
which was created before.   You must have an active database to use
this command.   You will be asked for the name of the label control
same input  screens as  you were  when you created the label except
that now they will  contain  the  information  you  put  in before.
Follow the  same instructions  as under CREATE A LABEL CONTROL FILE
to modify your control file (see LABELS).
R LABEL
13.4.3.         PRODUCE LABELS
LABEL FORM <label file name> [<scope>] [SAMPLE] [WHILE <condition>]
[FOR <condition>] [TO PRINT] [TO FILE <output file name>]
This command  will allow  you to  produce labels  based on the
information you  have put in a label control file (see LABEL).  You
must have an active database to use this command.   The labels will
come out  in the  order of the primary index.  If there is no index
it will come out in the order records are in the database.
rules will  be used  to select records, and what rules will be used
in determining when to stop selection records to create labels from
(see CHOICES).   The  default is  that all  records will be printed
unless there is a filter in effect (see  FILTERS).   If there  is a
filter only  records that pass the filter conditions can be used to
create labels (see HOW RECORDS ARE SELECTED).
(see FILE  SELECTION).   You will be asked if you want to produce a
sample.   If you  say yes  a sample  label made  up of  X's will be
printed.   You will  then be asked if you want another label.  When
you say no the labels will be produced on the screen, printer or to
a file depending on what you have specified with the OUTPUT command
(see OUTPUT).
R LIST
LISTING RECORDS
13.5.                 LIST RECORDS
LIST [OFF] [<scope>] [expression list] [WHILE <condition>]
[FOR <condition>]  [TO PRINT]
This command allows you to get a listing of the information in
your  databases.    You  must  have  an active database to use this
command.  A listing is a report with  field information  in columns
and records in rows.  The listing will come out in the order of the
primary index.  If there is no index it will come out  in the order
records are in the database.
You will  get your choice of which fields are listed including
those from related databases,  what order  the fields  appear, what
records can be selected, what rules will be used to select records,
and what rules will be used  in determining  when to  stop printing
(see  CHOICES).    The  default  is that all records will be listed
filter only  records that  pass the filter conditions can be listed
(see HOW RECORDS ARE SELECTED).  If you  do no  specify fields then
all fields will be listed from the main database.
The report  will then  be produced  on the  screen, printer or to a
file depending on what you have  specified with  the OUTPUT command
R DISPLAY
DISPLAYING RECORDS
13.6.                DISPLAY RECORDS
DISPLAY [OFF] [<scope>] [expression list] [WHILE <condition>]
This command  allows you  to display   the information in your
databases.  You must have an active database  to use  this command.
A display is a report with field information in columns and records
in rows.  You  must have  an active  database to  use this command.
The display  will come  out in  the order of the primary index.  If
there is no index it will come out in the order records  are in the
database.
You  will  get  your  choice  of  which  fields  are displayed
including those  from  related  databases,  what  order  the fields
appear, what  records can  be selected,  what rules will be used to
select records, and what rules will be used in determining  when to
stop printing  (see CHOICES).   The  default is  that only the next
record will be displayed.  If there is  a filter  only records that
pass the  filter conditions  can be  displayed (see HOW RECORDS ARE
SELECTED).  If you  do no  specify fields  then all  fields will be
displayed from the main database.
The output  will then  be produced  on the  screen, printer or to a
R SUM
SUMMING RECORDS
13.7.                  SUM RECORDS
SUM [<scope>] [expression list] [WHILE <condition>]
[FOR <condition>]  [TO <memory variable list>]
This command  allows you  to total  the numeric fields in your
You will get your choice of which fields are summed including those
from related databases, what order the fields appear,  what records
can be  selected, what  rules will  be used  to select records, and
what rules will be used in  determining when  to stop  summing (see
CHOICES).   The default  is that  all records will be summed unless
there is a filter in effect (see FILTERS).   If  there is  a filter
only records  that pass  the filter rules can be summed.  If you do
not specify fields then all numeric fields will be summed  from the
main database.
If there are no numeric fields you will get an error message.
R AVERAGE
AVERAGING RECORDS
13.8.                AVERAGE RECORDS
AVERAGE [<scope>] [expression list] [WHILE <condition>]
This command  allows you to average the numeric fields in your
You will  get your  choice of  which fields  are averaged including
and what rules will  be used  in determining  when to  stop summing
(see CHOICES).   The  default is  that all records will be averaged
filter only records that pass the filter conditions can be averaged
(see HOW RECORDS ARE SELECTED).  If you do not  specify fields then
all numeric fields will be averaged from the main database.
R COUNT
COUNTING RECORDS
13.9.                 COUNT RECORDS
COUNT [<scope>] [expression list] [WHILE <condition>]
[FOR <condition>]  [TO <memory variable>]
This command allows you to count the number of records in your
You  will  get  your  choice  of what records can be selected, what
in determining when to stop counting (see CHOICES).  The default is
that all records will be counted unless there is a filter in effect
(see FILTERS).   If  there is  a filter  only records that pass the
filter conditions can be counted.
The output will then  be produced  on the  screen, printer  or to a
file depending  on what  you have specified with the OUTPUT command
A SORT
SORTING RECORDS
14.                        SORT RECORDS
SORT TO <database file name> ON <field name> [|A][|C][|D],
[<field name> [|A][|C][|D]...] [<scope>][For <condition>]
[WHILE <condition>][FIELDS <field list>]
This command allows you to make another copy  of your database
sorted in  an order  you specify.  You must have an active database
to use this command.  You will get your choice of which  fields are
copied  including  those  from  related  databases,  what order the
fields appear, what records can be copied, what rules will  be used
to select  records, and what rules will be used in determining when
to stop copying (see  CHOICES).   The default  is that  all records
will be  copied unless  there is  a filter in effect (see FILTERS).
If there is a filter only records that  pass the  filter conditions
can  be  copied  (see  HOW  RECORDS  ARE  SELECTED).  If you do not
specify fields  then  all  fields  will  be  copied  from  the main
You will  be asked  for the name of the field you want to sort
on (see SELECTING FIELDS).  You will then be asked whether you want
to sort ascending or descending.  Just enter the appropriate letter
A or D.  If the field you have chosen is a character field you will
be asked  whether to  take case  into consideration.  This means do
you want upper and lower case to be  separated or  do you  want the
computer to treat everything as if it were upper case.
The  computer  will  keep  on  asking  you for additional sort
fields until you enter a blank one.
You will then be asked for  a name  for the  new database (see
FILE SELECTION).   You  may at  this time  if you  change your mind
about creating the new database press the {Esc} key.
A COPY
COPYING RECORDS
15.                        COPY RECORDS
COPY TO <database file name> [<scope>] [FIELDS <fields list>
[FOR <condition> [WHILE <condition>] [TYPE <file type>]
This command allows you to make another copy of your database.
You must have an active database to use this command.  You will get
your choice of which fields are copied including those from related
databases,  what  order  the  fields  appear,  what  records can be
copied, what rules will be used to select  records, and  what rules
will be  used in  determining when  to stop  copying (see CHOICES).
The default is that all records  will be  copied unless  there is a
filter in  effect (see FILTERS).  If there is a filter only records
that pass the filter conditions can be copied (see HOW  RECORDS ARE
SELECTED).   If you  do not  specify fields then all fields will be
copied from the main database.
This is a good command to use to back up your databases.
POSITION CHANGE
16.                       POSITION CHANGE
For the master database, a pointer is kept to the  last record
used.  As you execute different commands this pointer is changed to
reflect the last used record.  For many commands the record pointed
to becomes  the current  record.   As an example if you execute the
Edit command with no other options,  you will  get the  record that
this pointer  points to.  If you Display the next five records, you
will get the current record along with the next four.  If  you do a
display  again,  you  will  get  the  record  displayed last in the
previous Display command as well as  the next  four records.   Many
times you will want to start processing from a certain point in the
database, or to work on a  specific  record.    The  commands below
allow you to position the pointer to the record you want.
One thing  I ran into that you should watch out for.  I wanted
to edit a specific record.   I used  the seek  command to  find the
record.   I did  not get  any message  so I  assumed the record was
found.  Then I went and executed the Edit menu item.  It wasn't the
record I  wanted.  It  wasn't even close.  After trying a couple of
times with  the  same  results  I  realized  I  had  set  the 'All'
condition  while  using  the  display  command.   Since many of the
commands share the same options, when I did an Edit I was  doing an
Edit  All.    This  caused  me  to start at the first record in the
database instead of the one I wanted.  The same  thing could happen
if you specified a specific record number.
POSITION CHANGE KEYS
16.1.       CHANGE POSITION WITH SPECIAL KEYS
---------------------------------
Any time  you are  on a  level 2, 3 or 4 menu item in the Menu
Mode, and you have named a  database, you  can move  around in that
database using special keys.  These are:
{+}       Will move the record pointer to the next record.
{-}       Will move the record pointer to the previous record.
{End}     Will move the record pointer to the last record.
{Home}    Will move the record pointer to the first record.
P SEEK
16.2.                     SEEK
----
SEEK <expression>
This command  allows you to quickly look for a record based on
the primary index. You must have an active  database as  well as an
active index to use this command.   You will be asked to enter your
key.  If your key is character, do  not enclose  it in  quotes.  If
your  key  is  a  date  do  not  convert it to a date.  Enter it in
character form.  Example 10/11/87.  If the record is  not found you
will get  a warning  message.   You will not get any message if the
record is found.
P LOCATE
16.3.                    LOCATE
LOCATE [<scope>] [FOR <condition>] [WHILE <condition>]
This  command  allows  you  to  find  the  first  record  that
satisfies a set of rules (see CONDITIONS).  You must have an active
database to use this  command.   You will  get your  choice of what
records to  look through  and what rules to use in determining when
to stop looking.  You will  of course  get to  enter the  rules for
picking the  record to  stop at (see CHOICES).  The default is that
the search will start from the start of the database.  If  a filter
is in  effect only  those records that past the filter test will be
evaluated by the Locate rules.  If no  record is  found under those
conditions you will get a warning message.  To position at the next
record that fulfills those rules, use the CONTINUE command.
P CONTINUE
16.4.                   CONTINUE
CONTINUE
This command finds the  next record  that fits  the rules that
were specified  in the  previous LOCATE  command.  You must have an
active database to use  this  command.    You  must  execute LOCATE
before you  use this command.  If you do not you will get a warning
message.  If no more records are found that fit the rules  you will
be notified.   If  there is  a filter in effect, only those records
that pass the filter test will be checked.
P SKIP
16.5.                     SKIP
SKIP <numeric expression>
This command allows you  to move  forward or  backwards in the
database a  specified number  of records.   You must have an active
database to use this command.  If the database is  not indexed then
this will  move you  actual physical  records.   If the database is
indexed it will move you based on the primary index.   You  will be
asked to  enter the  number of  records to skip.  A positive number
will move your forward, a negative number will  move you backwards.
A 1  will move  your to the next record.  A   -2 will move you back
two records.  If there is  a filter  in effect,  only those records
that pass  the filter's  rules will be counted in determining which
records to skip.  You can execute a SKIP 1 and a  SKIP -1  from any
menu item using the {+} and {-} keys (see ONE KEY COMMANDS).
P GOTO
16.6.                     GOTO
GOTO <numeric expression>
This  command  will  allow  you  to  go to a specific physical
record.  You must have an  active  database  to  use  this command.
Having or  not having  an index has no effect on this command.  You
will be asked to enter the record number you want to go to.  If you
enter a  number greater  then the  number of records you will get a
warning message.
P TOP
16.7.                      TOP
GOTO TOP
This command will move you to  the beginning  of the database.
You  must  have  an  active  database  to use this command.  If the
database is not indexed  you will  be moved  to the  first physical
record.   If the  database is indexed you will be positioned to the
first record in the primary  index.    You  can  also  execute this
command from  any menu item by pressing the {Home} key (see ONE KEY
COMMANDS).
P BOTTOM
16.8.                    BOTTOM
GOTO BOTTOM
This command will move you to the last record in the database.
database isn't indexed you  will  be  moved  to  the  last physical
record.   If the  database is indexed you will be moved to the last
record in the primary  index.   You can  also execute  this command
from  any  menu  item  by  pressing  the  {End}  key  (see  ONE KEY
P BROWSE
16.9.                    BROWSE
BROWSE NOMODIFY [FIELDS <field list>] [LOCK <numeric expression>]
[FREEZE <field name>] [NOFOLLOW] [NOMENU] [NOAPPEND]
[WIDTH <numeric expression>]
This command will allow  you to  look through  the database to
find  the  record  or  information  that  you want.  It is the same
Browse command as that under Update.   The  only difference  is you
cannot make any changes to the database in this browse.  Look under
BROWSE for a full explanation of how to use this command.   You can
also execute  this command  from any menu item by pressing the {F5}
key (see ONE KEY COMMANDS).
UPDATE
17.                          UPDATING
The following  commands  are  used  to  make  changes  to your
database.    You  can  add  and  delete records. You can change the
information contained in records.
FORMAT FILES
Format files  allow you  to describe  for the  EDIT and APPEND
commands how  you want the input screen to look.  You specify where
you want things to appear on  the  screen  by  giving  the  row and
column coordinates.   The  screen has  24 rows and 80 columns.  The
rows are numbered from 0 to 23 and the columns from 0  to 79.   You
can  place  expressions  (see  EXPRESSIONS)  or  database variables
anywhere on the screen you want.
The command used to do all this is:
@ <coordinates> [SAY <expression>[PICTURE <format>]
[GET <variable> [PICTURE <format>]
[RANGE <numeric expression>, <numeric expression>]
[VALID <condition>]]]
EXAMPLES:
@ 12,3 SAY 'ENTER THE NAME'
This would place 'ENTER THE NAME' on the 13th row and the 4rth
column.
@ 12,3 SAY 'HIS NAME WAS '+FIRST_NAME+' '+LAST_NAME'
This would  put at  the same location 'HIS NAME WAS ' followed
by his first name and then his last name.
The assumes that FIRST_NAME and  LAST_NAME  were  part  of the
current primary database.  In the following examples we assume this
unless otherwise noted.
@ 12,3 SAY 'ENTER NAME'
@ 12,20 GET FIRST_NAME
@ 12,45 GET LAST_NAME
Again on the 13th row and  4rth column  'ENTER NAME'  would be
placed on  the screen.   This  would be followed by two highlighted
fields.  The cursor would stop in each  of these  and allow  you to
input your information.
@ 12,20 GET FIRST_NAME PICTURE '!XXXXXXXXXXXXXXXXXXX'
Use of the picture clause here would force the first character
of the name to be upper case.
The following are is a list of the different editing  keys you
can use.
A    Alphabetic characters only.
L    Logical only.
N    Letters and digits only.
X    Any characters.
Y    Logical Y,  y, N,  y.   Lower case  will be converted to upper
case.
9    Digits and sign for numeric only.
#    Digits, blanks and signs.
!    Converts lower case to upper case.
$    A dollar sign is placed in front of the number.
*    Asterisks are placed in front of the number.
.    Shows where to put the decimal place.
,    Places commas in a number to the left of the decimal place.
Besides editing characters there  are also  editing functions.
@ 12,30  GET ST_DATE PICTURE '@D'
This will prompt for input in date format mm/dd/yy.
The following is a list of the functions that can be used.
@A   Alphabetic characters only.
@B   Left-justify numbers.
@C   Place a CR after positive numbers.
@D   Edit using date format mm/dd/yy.
@S<number>     Limit the screen display to 'number' characters.  If
the field is bigger, allow scrolling of input.
@X   Place a DB after negative numbers.
@Z   Display blanks if the numeric field is zero.
@(   Enclose negative numbers in parentheses.
@!   Alphabetic characters will be  converted to  upper case.   Any
characters can be entered.
@ 12,30 GET SALARY RANGE 20000, 50000
Allow only salaries of 20000 to 50000.
@ 12,30 GET SEX VALID SEX = 'M' .OR. SEX = 'F'
This will  only allow  'M' or 'F' to be entered into the field
SEX.  A  VALID statement  can be  any expression  that evaluates to
true or false.  If no value is place in the field, the VALID clause
is not implemented.
N FORMAT
NAME A FORMAT FILE
SET FORMAT TO <format file name>
This command will allow you to choose a format file.  A format
file is  a dBASE  type program  file that contains instructions for
data input  and editing  while using  the Edit  and Append commands
(SEE FORMAT FILES).  This file must have an extension .FMT.
M FORMAT
MODIFY A FORMAT FILE
MODIFY COMMAND <format file name>.FMT
This command  is used  to create  and modify format files (see
FORMAT FILES).  You will be place in the editor just as  you are in
Modify Programs and Modify Files.  The only difference here is that
the extension will be '.FMT'.  If the  format you  are modifying is
the current  one, when  you use  it again you will get the modified
format.
U EDIT
17.1.           EDIT RECORDS IN DATABASE
------------------------
EDIT [<scope>] [FIELDS <field list>] [FOR <condition>]
[WHILE <condition>]
This command  will  allow  you  to  change  the  data  in your
databases.   You must  have an active database to use this command.
You will get your choice of which fields are edited including those
from related  databases, what order the fields appear, what records
can be selected for editing, what  rules  will  be  used  to select
records, and  what rules  will be  used in determining when to stop
selecting records to edit (see CHOICES).  The  default is  that all
records  will  be  edited  unless  there is a filter in effect (see
FILTERS).  If there is a filter only  records that  pass the filter
conditions can be edited (see HOW RECORDS ARE SELECTED).  If you do
not specify fields then  all fields  will be  edited from  the main
database.   You may  specify fields  from related databases and you
will be able to edit those databases at the same time you  edit the
master database.
After  you  execute  this  command,  if  you have not chosen a
format file,  you will  be presented  with a  screen containing the
fields you  have chosen  and the  data for the current record.  You
may edit  the  databases  using  the  different  editing  keys (see
EDITING KEYS)
If you have chosen a format file see FORMAT FILES.
U APPEND
17.2.              APPEND TO DATABASE
APPEND [BLANK]
This  command  will  allow  you  to  add  new  records to your
database (see EDITING KEYS).  You must have  an active  database to
use this  command.   As you end each record a new one will come up.
Depending on  how you  have set  carry this  will be  blank or will
contain all  the same  information as  the previous record (see SET
CARRY under SET COMMANDS).  If  you have  chosen a  format file see
FORMAT FILES.
U BROWSE
17.3.            BROWSE THROUGH DATABASE
BROWSE [FIELDS <field list>] [LOCK <numeric expression>]
[NOMODIFY] [WIDTH <numeric expression>]
This command  will allow  you to  look through your database a
page at a time  and make  changes if  you want.   You  must have an
active  database  to  use  this  command.   This is one of the most
powerful commands for accessing your data.  It gives you  access to
your data  in a  format that  is very similar to a spreadsheet.  It
is also one of the more dangerous commands because it is so easy to
change data  accidentally.  I suggest that if you are just using it
to look through your data you use the Browse under  Position or you
set 'Modify off'.
See EDIT  INPUT for  how to  use special  keys to move through
and edit your data in the Browse Mode.
There are a number of options you can set in the browse mode.
BROWSE
17.3.1.             EXECUTE
This option will cause the BROWSE COMMAND to  execute with all
the current option settings.
17.3.2.       BUILD A FIELD LIST
This  option  will  allow  you  to  build a field list for the
BROWSE COMMAND (see FIELD SELECTION).  You may  only specify fields
from  the  master  database.    You  may  not as you can with other
commands specify fields from related databases.
17.3.3.              WIDTH
This option allows you to set  the maximum  size that  a field
will be  able to take up on the screen in BROWSE MODE.  If there is
more data for a field then can fit in that  size, you  will be able
to scroll through the field to access the hidden data.
17.3.4.              LOCK
This option  will allow you to specify the number of left hand
fields to keep in place as you pan  right to  see additional fields
in the record.
17.3.5.             FOLLOW
This option  causes you  to end  up in  the same  place as the
current record when you change the  any field  that is  part of the
index.
17.3.6.            NO FOLLOW
This  option  prevents  you  from  following a record that has
changed position in the database because  you have  changed part of
the index expression.
17.3.7.             APPEND
This option  allows you  to append  to the end of the database
while in Browse Mode.
17.3.8.            NO APPEND
This option prevents you from  appending  to  the  end  of the
database while in Browse Mode.
17.3.9.             MODIFY
This option  allows you to make modifications to your database
while in the Browse Mode.
17.3.10.           NO MODIFY
This option  prevents you  from making  modifications while in
the Browse Mode.
U REPLACE
17.4.           REPLACE FIELDS IN RECORDS
-------------------------
REPLACE <field name> WITH <expression>[, <field name> WITH
<expression>...] [<scope>] [FOR <condition>] [WHILE <condition>]
This  command  will  allow  you  to  replace fields within the
database with constants or expressions (see EXPRESSIONS).  You must
have an  active database  to use  this command.   You will get your
choice of what records can be changed, what  rules will  be used to
select records,  and what rules will be used in determining when to
stop selecting records to be changed (see CHOICES).  The default is
that only the current record will be changed.
You will then be asked what field you want to replace with new
data, followed by what  expression you  want to  replace that field
with  (see  EXPRESSIONS).    This  means  if  you  are  replacing a
character field you should  enclose your  constants in  quotes.  If
you are  replacing a date field make sure you are putting in a date
expression by changing your  character  date  to  a  date  with the
CTOD() function.  Example CTOD('09/12/87').
The computer  will keep  on asking  for a field name until you
enter a blank field  name.   It will  then execute  the command and
make the replacements you have specified.
Watch out  for this  command.   You can  make a lot of changes
very quickly.  You can also make a lot of bad changes very quickly.
It might  be a good idea to back up your database before using this
command.  Of course it is  wise  to  back  up  your  database  on a
regular basis also.
U DELETE
17.5.                DELETE RECORDS
DELETE [<scope>] [FOR <condition>] [WHILE <condition>]
This command  will mark  for deletion records in the database.
You must have an active database to use this command.  It  does not
actually delete  the records it only marks them.  You will get your
choice of what records can be deleted, what  rules will  be used to
stop selecting records to be deleted (see CHOICES).  The default is
that only the current record will be deleted.
U RECALL
17.6.            RECALL DELETED RECORDS
RECALL [<scope>] [FOR <condition>] [WHILE <condition>]
This  command   will  unmark  records  that  were  marked  for
deletion.  You must have an  active database  to use  this command.
You  will  get  your  choice  of what records can be recalled, what
in determining  when to  stop selecting records to be recalled (see
CHOICES).  The default is that  only  the  current  record  will be
recalled.
U PACK
17.7.                 PACK DATABASE
PACK
This command  will remove  from the  database all records that
are marked for deletion.  You must have  an active  database to use
this command.   You will be told the number of records that will be
deleted.  You will be asked if you want a listing of those records.
You  will  then  be  asked  if  you  are  sure you want to pack the
database.  Once you  execute  this  command  you  cannot  get those
records back.  Be careful.
MODIFYING FILES & PROGRAM
18.                 MODIFYING FILES & PROGRAMS
--------------------------
M FILE
18.1.                 MODIFY A FILE
MODIFY FILE <file name>
This command  is used to edit a file.    You will be asked for
the file name (see FILE SELECTION).  If a file by the name you give
does not  exist it will be created.  You will be placed in the File
Edit Mode with that file.
The File Edit Mode  is just  like a  word processor.   You can
type  in  new  information  and  modify old information.  See under
EDITING INPUT the special keys that  you can  use to  input, modify
and save your data.
M PROGRAM
EDITING FILES & PROGRAMS
18.2.               MODIFY A PROGRAM
MODIFY COMMAND <file name>
This command  is used  to edit  a program  file.   You will be
asked for the file name (see FILE SELECTION).  If you do not put in
an extension, '.prg' will be used.  If a file by that name does not
exist it will be created.  If a file by that name with an extension
of  '.FOX'  or  '.III'  exist,  they  will be deleted.  You will be
placed in the file edit mode with that file.
See EDITING INPUT for a description of the keys you can use to
input, modify and save your program.
EXTRA
19.                            EXTRA
E COMMAND
19.1.         EXECUTE FROM THE COMMAND MODE
This command  will put you in the command execution mode.  You
may put in most dBASE commands.  You  cannot execute  programs from
here.   You must  go to the Command Mode off of the opening menu to
do this.  You can execute FoxBASE+ compiled programs from here.
Your commands will be stored as you put them in.  Pressing the
{Up  Arrow}  will  get  you  back  the  commands  you  have  put in
previously.  You may edit your commands just like you can edit your
input anywhere else in I on I = 3!! (see EDITING INPUT).
You can  return to  the Menu  Mode by using the QUIT or RETURN
commands.
E EXECUTE
19.2.             EXECUTE DOS COMMANDS
RUN <DOS command>
This command will put you in  the DOS  Command Mode.   You may
enter any  DOS commands  you like from here.  There will be a limit
on what  you can  do based  on the  amount of  free memory.   It is
possible you will not be able to execute any commands.
Just like  in the  Command Mode, your commands will be stored.
You can get them back by  pressing the  {Up Arrow}.   You  may also
edit the commands (see EDITING INPUT).
E DIRECTOR
19.3.                   DIRECTORY
DIR [<drive:][<path>][<mask>] [TO PRINT]
This command  will allow  you to  get a  directory of the your
files.  You will  be given  a menu  of the  types of  files you may
choose.   If you  want something  that is  not in  the menu  choose
'Other'.  You will be asked to enter  the mask  you want  to search
for.   If you  want to look for files in another directory, this is
the only way to do  it.  You must put in the full path name.
E CHANGE D
19.4.               CHANGE DIRECTORY
This command will allow  you to  change to  another directory.
You will  be asked  to enter the new directory path name.  You must
put the full path name in.  Changing to another disk drive will not
make that the current directory unless you also use the Set Default
to select that new drive.
E RENAME
19.5.                 RENAME A FILE
RENAME <old file name> TO <new file name>
This command will allow you to change the name of a file.  You
will be asked for the original file name (see FILE SELECTION).  You
will then be asked to enter the new name for the file.
E COPY FIL
19.6.                  COPY A FILE
-----------
COPY FILE <file name> TO <new file name>
This command will allow you to  make a  copy of  a file.   You
will be  asked for  the file you want to copy (see FILE SELECTION).
You will then be asked for the name of the file you want to copy it
to.
E ERASE
19.7.                 ERASE A FILE
ERASE <file name>
This command  will allow  you to  erase a  file.   You will be
asked to enter the name of  the file  you want  to erase  (see FILE
SELECTION).   Be careful.   Once a file is erased you cannot get it
back unless you have a backup copy.
E STRUCTUR
19.8.               DISPLAY STRUCTURE
DISPLAY STRUCTURE [TO PRINT]
LIST STRUCTURE [TO PRINT]
This command will display the fields in the  current database.
If output  to the  printer or  a file is turned on it will use LIST
STRUCTURE, otherwise it will use DISPLAY STRUCTURE
E STATUS
19.9.                DISPLAY STATUS
DISPLAY STATUS [TO PRINT]
LIST STATUS [TO PRINT]
This command will display  the current  status.   If output to
the  printer  or  a  file  is  turned  on  it will use LIST STATUS,
otherwise it will use DISPLAY STATUS
SET COMMANDS
20.                        SET COMMANDS
S SET DRIV
20.1.                   SET DRIVE
SET DEFAULT TO [<drive letter>]
This command will specify  what the  current drive  will be in
the  menu  mode.    If  you  execute  DOS commands they will not be
affected by this command.
S SET PATH
20.2.                   SET PATH
SET PATH TO [<path>]
This command will tell 1 on 1 =  3!! where  to look  for files
you specify  if they  are not  in the current directory.  To put in
more then one directory  separate the  directories by  a semi colon
(';').   If you  omit the  path then 1 on 1 = 3!! will only look in
the current directory for files.
S DELETED
20.3.                  SET DELETED
SET DELETED ON | OFF
This command  will determine  whether records  that are marked
for deletion  will by  used by  other commands.  When deleted is on
commands that use  a  scope  will  ignore  any  records  marked for
deletions.   Commands that  work just on the current record or on a
specific record will ignore the deletion  flag.   Index and reindex
ignore the  deletion flag.   RECALL ALL will not recall any records
if deleted is on.
When deleted is off then the deletion flag has no effect.
S EXACT
20.4.                   SET EXACT
SET EXACT ON | OFF
When exact is on then matches have to  be exact  character for
character including  size.  This pertains to comparisons as well as
the use of indexes.
When exact is off matching is only done as long as one  of the
matching entities  still has non blank characters. Once one of them
runs out of characters and there has been a match up to  that point
then the match succeeds.
S UNIQUE
20.5.                  SET UNIQUE
SET UNIQUE ON | OFF
This  command  determines  whether records with duplicate keys
will be included in an index.  With UNIQUE ON only the first record
of duplicate records will be included in an index.  With it off all
records in the database will be included in the index.
S CARRY
20.6.                   SET CARRY
SET CARRY ON | OFF
This command affects the append command.  When  it is  on each
new record  that is  appended initially  takes on the values of the
previous record.
S BELL
20.7.                   SET BELL
SET BELL ON | OFF
This command determines whether the  bell  will  ring  on data
input when a field is filled or when invalid data is entered.
S CONFIRM
20.8.                  SET CONFIRM
SET CONFIRM ON | OFF
This command  determines whether  when a  field is filled with
data the cursor will automatically go  to  the  next  field.   With
CONFIRM ON  you will be required to use a cursor control key at the
end of input to a field even when you fill that field.
S FIXED
20.9.                   SET FIXED
SET FIXED ON | OFF
This command will determine whether values  will print  with a
fixed number  of decimal  places as specified in the SET DECIMAL TO
command or will be variable based on the type of calculation.  With
it set  on the  number specified in the SET DECIMAL TO command will
be used for the number of decimal places.
S DECIMAL
20.10.               SET DECIMAL TO
SET DECIMAL TO <numeric expression>
This command will determine  the number  of decimal  places to
print when the SET FIXED ON command is issued.
S MARGIN
20.11.                SET MARGIN TO
SET MARGIN TO <numeric expression>
This command  will determine  the left hand margin used by all
output to the print devices.
S MEMOWIDT
20.12.              SET MEMOWIDTH TO
SET MEMOWIDTH TO <numeric expression>
This command will determine  the width  of the  print out when
displaying and listing memo fields.
S TYPEAHEA
20.13.              SET TYPEAHEAD TO
SET TYPEAHEAD TO <numeric expression>
This command will determine the size of the type ahead buffer.
If you are continually getting a beep because you are  typing in to
fast, increase the size of this.
S PRINTER
20.14.               SET PRINTER TO
SET PRINTER TO <device> | <file name>
This command allows you to specify where output to the printer
will go.  Normally it goes to device PRN:.  You can  change this to
go to  another device such as LPT2:, CON1: CON2:.  You can also set
the printer output to go to a file.
QUITTING MENU MODE
21.                     QUITTING MENU MODE
Q QUIT
21.1.              QUITTING MENU MODE
QUIT
This command will return you to the opening  menu.   All files
will be  closed.   Just going  to the Quit menu is not enough.  You
must also choose Quit.
Q REMAIN
21.2.              REMAIN IN MENU MODE
This command does absolutely nothing.  The Quit command looked
so lonely  here all  by itself  so I put in this command to keep it
company.
APPENDIX
ONE KEY COMMANDS
1.                       ONE KEY COMMANDS
You may execute certain commands by pressing one key.
1.1. {F1}      This will  place you  in the  Help Browse mode.
(see HELP).
1.2. {F2}      This will  place you  where you  can redefine a
key to  play back  a number  of keystrokes (see
MACROS).
1.3. {F3}      This  key  is  used  to  switch the information
presented on the bottom  of the  screen (see ON
LINE HELP SCREENS).
1.4. {F4)      This key  will allow you to search for a record
in the current database  based  on  a  key (see
SEEK under POSITION CHANGE).
1.5. {Home}    This key  will move  the record  pointer to the
beginning  of  the  current  database  (see TOP
under POSITION CHANGE).
1.6. {End}     This key  will move  the record  pointer to the
end of the current  database (see  BOTTOM under
POSITION CHANGE).
1.7. {+}       This key  will move  the record  pointer to the
next record in the  current database  (see SKIP
1.8. {-}       This key  will move  the record  pointer to the
previous record in  the  current  database (see
SKIP under POSITION CHANGE).
CHANGING COLORS
2.                        CHANGING COLORS
In order  to change  colors you must execute 1 on 1 = 3!! from
the \3!! directory.
2.1.                 OVERALL COLORS
On a computer with a  color  monitor  the  default  colors are
white  letters  with  a  black  background.   When highlighting the
default is the reverse of this.  In order to  change this  you must
change the  color specifications  in a database called III_SYS.FOX.
Go into the Menu Mode.  Under the Name Database command choose
the database  III_SYS.FOX.  The III_SYS.FOX file will not appear in
the list of databases  because it  does not  end with  the standard
extension '.DBF'.   You  will have to type this file name in at the
bottom of the screen.
Then go to the Update Edit  command.   You will  see two color
fields,   COLOR_STAN   for   normal   display  and  COLOR_ENHA  for
highlighted  display.    You   may  change   these  to   any  color
combinations you  desire.   After you change them do a {Ctrl {End}}
to save your changes.
If under Administration in the opening menu you  have chosen C
for  color,  this  will  only  effect  the opening menu and command
modes.  If you have chosen  M  for  monochrome  these  will  be the
colors used everywhere including the Menu Mode.
You must  exit 1 on 1 = 3!! completely and then go back in for
these color changes to take effect.
2.2.             COLORS IN THE MENU MODE
In order to change the colors  in the  Menu Mode,  go into the
Menu Mode.   Make  sure your are in the directory \3!!.  Go to Name
Picture and pick the file COLOR.PIC.  Then go to  the Update Browse
command.   You will see three fields.  III_GROUP is the group name,
III_COL1 is the standard color, and III_COL2 is  the enhanced color
used for  highlighting.   You can  use the dBASE notation to change
the colors for the different menu groups.  Be careful,  the program
does not check that these are legal dBASE notation.
After  making  your  changes,  quit  out  of  1  on  1  =  3!!
completely.  You should still be in the \3!! directory. Type in:
COLOR{Enter}
Only after you have done this will you new colors take effect.
Now when  you go  back into  1 on  1 =  3!! you should have the new
colors.
EDITING INPUT
3.                         EDITING INPUT
Any place you have to type in information in 1 on 1 = 3!!, you
can use  special editing  keys to  help you input your information.
Below is a list of the editing keys and how they are used depending
on  what  part  of  the  1  on  1  =  3!!  program you are in.  Any
description you see next  to 'Line'  are rules  that are  always in
effect.  If there are further descriptions, then those descriptions
pertain only to that section of 1 on 1 = 3!!  mentioned and  are in
addition to the description for 'Line'.
'Com' is  the abbreviation for 'Command Mode' and 'CDB' is the
abbreviation for 'Create Database'.
{F1}
Com       Put you in the help mode.
CDB
Browse
Edit
Append    Toggle back and  forth  on  the  top  of  the screen
between a help screen and full page editing.
Report
Label     Toggle  back  and  forth  on  the  top of the screen
between the help screen  and  a  list  of  the field
names in  the current  database.   While the list of
fields is on the  screen you  can use  the following
two edit keys:
{Ctrl {Right Arrow}}     Pan  the  field list to the
right so you  can  see more
field names.
{Ctrl {Left Arrow}}      Pan  the  field list to the
left so  you  can  see more
{Right Arrow}
Line      Move the  cursor to the right one character position
within a field.
Append
Label     If at the end of a field you will move  to the start
of the next field.
Browse    If at  the end  of the last field on the screen, you
will move to the start  of  the  same  field  in the
record below.
{Left Arrow}
Line      Move the  cursor to  the left one character position
CDB       If you are at the start of a field it  will move you
to the start of the previous field.  If at the start
of the field name field it will move to the start of
the previous field name field.
Append    If you  are at the start of a field it will move you
to the end of the previous field.
Browse    If you are at the start  of the  first field  on the
screen you  will move to the start of the same field
in the previous record.
Label     If you are at the start of a field it  will move you
to the start of the previous field.
{End}
Line      Move to  the start of the next word.  If on the last
word move to end of the word.  If at the end  of the
last word  in the  current field, move to the end of
the field.
Label
Append    If at the end of the field move to the  start of the
next field.
Browse    Does not  follow the  rules for  Line.   Move to the
next field.  If on the last field on the screen move
to the same field in the next record.
{Home}
Line      Move backwards to the start of the current word.  If
there is no more words in the current field, move to
the start of the field.
CDB       If at  the start  of the field, move to the start of
the previous field.   If at  the start  of the field
name field it will move to the start of the previous
field name field.
Label     If at the start of the field, move to the end of the
previous field.
Label     If at  the start  of the field, move to the start of
the previous field.
start of  the previous field.  If at the first field
on the  screen then  move to  the start  of the same
field in the previous record.
{Down Arrow}
Com       If you  have used {Up Arrow} this will make the last
command you passed the current command.
Append    Move the cursor down and to the   next field  at the
same cursor  position.  If the next field is smaller
then it will move to the end of the next field.
Label     Move the cursor down and to  the start  of the field
underneath.
{Up Arrow}
Com       The  previous   command  will   become  the  current
command.
Label     Move the  cursor up  and to  the start  of the field
above.
Append    Move the cursor up to the previous field at the same
cursor position.  If  the previous  field is smaller
then it will move to the end of the previous field.
{Page Down}
CDB       Move to the end for input of a new field name.
Label     Move to the next screen.
Append    Move to  the next  input screen.   If you are on the
last page of a record, move to the next record.   If
you are  on the  last page  of the  last record, you
will be returned to the main menu.
{Page Up}
CDB       Move to the first field name.
Label     Move to the previous screen.
Append    Move to the previous screen.    If  you  are  on the
first screen  of a  record, move to the first screen
of the  previous record.   If  you are  on the first
record in the database, return to the main menu.
{Ins}
Line      This  key  will  toggle  you  back  and  forth as to
whether characters you type will over  write what is
there or insert.
{Back Space}   Delete the  character to  the left of the cursor and
move there.  If at the  start   of a  field, move to
the start of the previous field.
{Del}          Delete the character above the cursor.
{Ctrl Y}       Delete  all   characters  starting   at  the  cursor
position and going to the end of the field.
{Enter}
Line      Accept any input data and move  to the  start of the
CDB       On last  line with  a blank field name same as {Ctrl
End} below.
Browse    If in the last field on the screen, move to the same
field in  the next  record.   If in  the last record
then ask if you want to add records.
{Ctrl U}
CDB       Delete the field at the current position.
Label     Mark a record for deletion.  If the record is marked
for deletion then unmark it.
Report    When  on  a  report  screen  where  you enter column
information this key will delete the current column.
Label     When  on  the  label  screen  where  you  enter what
information goes  on the  label this key will delete
the current line and move  the  lines  below  up one
line.
{Ctrl N}
CDB       Insert a new field at the current position.
Report    On  screen  where  you enter column information this
will insert a new column.
{Ctrl {Home}}
CDB       This key will present you  with  a  menu.    You may
choose  items  in  the  menu by moving the light bar
with the  {Right Arrow}  and {Left  Arrow} until the
one you  want is  highlighted and  then pressing the
{Enter} key.  You may also choose an  item by typing
it's first  letter.  The first three items allow you
to move to different fields.    Save  will  act like
{Ctrl  End}  below.    Abandon  will  act like {Esc}
below.
Browse    You will be presented  with a  menu.   See above for
choosing items  from this menu.  One difference, you
press N for fiNd.  Bottom  moves you  to the  end of
the database.   Top  moves you  to the  start of the
database.  Record # asks what record you  want to go
to.    fiNd  asks  for  the  key  to  find  and then
positions you at that record if it finds  one.  Skip
asks for  the number  of records to skip.  Lock asks
for the  number of  fields to  lock.   It then keeps
that number of fields on the left side of the screen
while you are panning (see bellow under {Ctrl {Right
Arrow}} and  {Ctrl {Left  Arrow}}.  Freeze asks what
field and then that becomes the  only field  you can
access.
Report    You will  be presented with a menu.  See above under
CDB for choosing items from  the  menu.    The first
five items allow you to move to different screens in
the Create Report Mode.  Append  puts you  after the
last column  so you can append another column.  Save
will save your report control file and return you to
the main  menu.   Quit will return you to where your
were in the Create Report Mode.
Label     You will be presented with a list of  standard label
sizes you can choose from.
{Ctrl {Right Arrow}}
Browse    Pan fields right.
{Ctrl {Left Arrow}}
Browse    Pan fields left.
{Ctrl {End}}
CDB       You will  be prompted  with 'Press ENTER to confirm.
Any other key to resume.'  If you press any  key but
{Enter  you  will  continue  in  the  editing of the
database control file.   If you  press {Enter}   the
control file  will be saved as it is.  If you are in
the Modify  Database as  much data  as possible from
the old database will be saved. You will be returned
to the main menu.
Label     Save any changes and return you to the main menu.
{Esc}
Com       Erase the current line.
Label     This key will abandon the change  you have  just put
in.   You will be prompted 'Are you sure you want to
abandon the operation? (Y/N)'  If you put in 'N' you
will be  returned to editing.  If you put in 'Y' any
changes  you  have  made  in  this  session  will be
abandoned and you will return to the main menu.
Append    Abandon any changes to the current record and return
X FILE SEL
FILE SELECTION
4.                        FILE SELECTION
For many of the  commands you  will be  required to  provide a
file name.   After  you select  a command that requires a file name
you will be given a screen that looks like the one below.
ATTEND.DBF       CITY.DBF         CLASS.DBF        CLASSATT.DBF
COURSE.DBF       GETDIR.DBF       IONIPROG.DBF     IONI_RUN.DBF
OFFICE.DBF       SIGNUP.DBF       STUDENT.DBF      STUDENT_.DBF
Please enter the database file name, UP arrow to select
_
The screen  will contain a list of  files you  can choose from
that were  located in  the current  directory.  These files will be
chosen based on which command you  are executing.   In  the example
above we  are doing  something with a database such as naming it or
creating one.  Because it is a database all the files that end with
'.DBF' will  be listed.   Below is a listing of the different types
of files and their default extensions.
Database       .DBF
Format         .PRG
Filter         .FIL
Picture        .PIC
Report         .FRM
Label          .LBL
Macro          .MAC
Relation       .REL
At any time, while the cursor  is on  the bottom  line, and no
file name  is entered, you may hit the {Enter} key.  This will send
a blank file name.  The result of this in  most cases  will be that
the previous file associated with this command will be cleared out.
You may  choose a  file by  pressing the  {Up Arrow} while the
cursor is on the bottom line.  This  will highlight  the first file
in the top left hand corner of the screen.
1.   {Home} will move you to the first file on the page.
2.   {End} will move you to the last file on the page.
3.   Pressing a  letter will  move you  to the  next file name
that starts with that letter.   If that  file name  is on
another page you will be positioned to that other page.
5.   {Page Down} and {Page Up} will get you more file names if
there are more then can fit on a page.
When the  file you  want is highlighted press the {Enter} key.
That file will selected.
If you have pressed the {Up Arrow} and  then decide  you don't
want any  of the  files on  the screen,  just press  the {ESC} key.
This will move you  back to  the input  line at  the bottom  of the
screen.
You may  also choose  a file by typing it's name at the cursor
when it is on the bottom line and  then   hitting the  {Enter} key.
If the  file you want is not on the screen, this is the only way to
choose it.  If the file you want to specify is in another directory
or  on  another  drive,  you  must  put in the full path name.  For
example a:\back\main.
If the cursor is any where  on the  bottom line  and you press
the {Esc} key, you will be returned to the menu and nothing will be
changed.  This is true even if you have entered a file  name on the
last line.
If the file you are selecting is one that should already exist
and the file name you enter is not found you will be given an error
message and then put back on the last line of the screen.
If you  are choosing  a file  name of  a new file that will be
created and a file with that name already exists, you will be given
a warning message  and a chance to change your mind.
FIELD SELECTION
5.                        FIELD SELECTION
For many  of the  options you  will have to enter the names of
fields from your databases.   You  will get  a screen  like the one
COURSE_ID                STUD_ID                  CLASS_NUM
DATE                     TOOK                     COMMENT
COST                     PAID                     STUDENT->ID
STUDENT->FN              STUDENT->MI              STUDENT->LN
STUDENT->SAL                STUDENT->ADDR1           STUDENT->ADDR2
STUDENT->CITY            STUDENT->STATE           STUDENT->ZIP
STUDENT->PHONE           STUDENT->SEX
Enter fields, up arrow to pick
----------------------------------------------------------------
You will need to choose fields in three different situations:
1.   To create an expression (see EXPRESSIONS).
2.   To create a condition (see CONDITIONS).
3.   To create a list of field names.
At any time while  the cursor  is on  the bottom  line and the
line is  blank, you  may press the {Enter} key.  This will return a
blank expression, condition or list.  If you are on the bottom line
and you  press {Esc}  then you will also return a blank expression,
condition or list even if there was information on the line.
While the cursor is on the bottom line  you may  press the {Up
Arrow}.   This will cause one of the field names to be highlighted.
In order to choose a field name you move the light bar to the field
you want and press {Enter}.
You may move the light bar in the following ways:
1.   {Home}  will  move  you  to  the  first field name on the
2.   {End} will move you to the last field name on the screen.
3.   Pressing a letter will  move you  to the  next field name
that starts  with that letter.  Even when a field name is
shown preceded by it's  alias, the  match will  be on the
first letter of the field name.
5.   {Page Down} and {Page Up} will  get you  more field names
when they don't all fit on one screen.
When you  choose a field what happens next will depend on what
you are doing.  If you  are creating  an expression  or a condition
the field name will be entered on the end of the bottom line of the
screen.  The cursor will also be positioned on the bottom line.
If you are choosing  a field  as part  of the  sort or replace
commands you will be returned after you choose one field.
If you  are creating  a list of fields the field name you have
chosen will again be entered on the bottom line.   If this  is your
first selection  it will  be entered  at the beginning of the line.
If it is not the first entry, a ',' will  be placed  after the last
field name  on the  bottom line  and then  a space  followed by the
field you have just chosen.  The light bar will  then be positioned
on the next field on the top of the screen.
At any  time that the cursor is highlighting a field name, you
may press {Esc}.   This will  move the  cursor to  the bottom line.
While you  are on  the bottom line you may type in any part of your
expression, condition or list.   You  do not  have to  select field
names from the top of the screen.  You can type them in.
When you have finished, press the {Enter} key while the cursor
is on the bottom line.  This will pass what you have  on the bottom
line to the command.
CHOICES
6.                            CHOICES
For some  commands you will be allowed to set certain options.
These options are listed bellow along with an explanation of each.
C EXECUTE
6.1.               EXECUTE THE COMMAND
This option will cause the current command to be executed with
all the  current options.   Some  of the commands will need further
information such  as Report  and Label  which will  ask for control
file names  while others  like List, Display and Count will execute
right away.
C BUILD A
6.2.               BUILD A FIELD LIST
This option  will allow  you to  specify which  fields will be
used and  in what order they will appear (see FIELD SELECTION).  If
you do not specify a field list the default is all fields  from the
master database except Average and Sum which is all numeric fields.
This option has no effect on the Report, Label, Count, Replace, and
Locate commands.
C SPECIFY
6.3.              SPECIFY WHICH RECORDS
This option  will allow  you to  specify which  records can be
used with the current command.   It is  only specifying  which ones
can be used, the ones actually selected can only be taken from this
group but will be further screened  by  the  other  options.   From
these  records  the  ones  actually  used will be determined by any
filter set, the selection rules and the 'DO WHILE' rules.
If you pick this option you will be given a choice of:
1.   All.  This means all records in the database.
2.   Rest.  The rest of the records in  the database including
the current record.
3.   Next.   You will  get to  specify how many records.  This
will include the current record.
4.   Record.   You will  specify a  specific record.   This is
based on record number.
C SET SELE
6.4.               SET SELECTION RULES
This  option  will  allow  you  to  specify  logical rules for
selecting which records will be used (see CONDITIONS).  You will be
put in  the Field  Selection Mode  (see FIELD SELECTION).  Here you
will enter the conditions you want evaluated in  selecting records.
When the  current command  is executed  the conditions you have set
will be evaluated for each record.  Those that evaluate  to be true
will be used, those that evaluate to false will not be used.
C SET 'DO
6.5.              SET 'DO WHILE' RULES
This option  will allow  you to specify logical rules which will be
used to determine when to stop selecting records  (see CONDITIONS).
You  will  be  place  in  the  Field  Selection  Mode    (see FIELD
SELECTION).  Here you will enter the conditions you want met.  When
the current  command is executed the first record will be tested to
see if it passes this logical  test.   If it  doesn't then  no more
records  will  be  selected.    If  it does the next record will be
tested and so on.  As soon as one record fails the  test processing
will stop.
C CLEAR
6.6.                      CLEAR
This  option  will  clear  out  any  settings  for field list,
records specified, selection rules and 'DO  WHILE' rules  that have
been set.  This option will not affect filters.
6.7.            HOW RECORDS ARE SELECTED
The first  thing that affects which records are selected is if
a filter is in effect.   If a  filter is  in effect  then the other
commands and  options will  act as if the database was only made up
of records that pass the filter's test.   The next  deciding factor
is the  records you  specify can  be selected.   If for example you
specify the next 5 records, this  will mean  the next  five records
that pass  the filters  test.   Next is  the 'DO WHILE' test.  This
will only go through  records specified  and that  pass the filters
test.   Once a  record fails  the 'DO WHILE' test processing stops.
The last factor is the selection  rules.   Those records  that pass
all  the  other  rules  must  also  past  the selection rules to be
selected.
COMMAND MO
COMMAND MODE
7.                         COMMAND MODE
You are now in the command  mode of  1 on  1 =  3!!.   You may
enter most  of the  dBASE III  commands.   Below is  the syntax for
those commands  as  well  as  notes  on  those  commands  that work
differently under  1 on  1 =  3!! or are additions to the dBASE III
command set.
CONVENTIONS dBASE SYNTAX
7.1.        CONVENTIONS USED IN dBASE SYNTAX
--------------------------------
Where we show the syntax of  dBASE type  commands and function
the conventions used in doing this are:
Words that  are capitalized  must be  entered just  as you see
them.
Anything enclosed in [] is optional.
Where you  see  '....'  it  means  the  previous  item  can be
repeated.
Descriptions that  are between  <> and are in lower case, mean
you put in that location what  is  described.      You  do not
include the  <>.   Most items are self explanatory.  Any place
you see the word 'file' this could be just a file name all the
way up  to the  full path name including the drive designator.
Example C:\MAIN\REPORT\ABC.DBF.  Some of the ones that are not
self explanatory follow:
FIELD LIST
7.1.1.           <field list>
A field  list is  a list of field names from databases.  These
names are separated by a comma and a  space.   A single  field name
can be  a field  list.  Examples: SALARY  this is a field list made
up of just one field name.  NAME,  ADDRESS, PHONE,  AGE   this is a
field  list   made  up   of  four  field  names.    NAME,  ADDRESS,
STATE->NAME.  This is a filed  list made  up of  three field names.
The third  field, NAME  comes from  a related  database that has an
alias of STATE.  An alias is a secondary name that is assigned to a
active database that can be used to identify that database.
MEMORY VARIABLE
7.1.2.         <memory variable>
A memory  variable is  a named place in memory where temporary
information is stored.
MEMORY VARIABLE LIST
7.1.3.      <memory variable list>
A memory variable list is one memory variable  or a  number of
memory variables separated by a comma and a space.
INDEX FILE LIST
7.1.4.         <index file list>
An index  file list  is either  one or  a number of index file
names separated by a comma and a space.
INDEX EXPRESSION
7.1.5.        <index expression>
An index expression is the expression that is used in creating
an index  file.  This expression determines the order the file will
be accessed when using that index.  It is also  the expression that
is  used  in  doing  a  look  up  in  an  indexed  file.  Examples:
LAST_NAME,  STATE+CITY,  RECORD_ID.
EXPRESSIONS
7.1.6.           <expressions>
An expression can be as simple  as  a  single  field,  or very
complex with  many fields  and functions.   If  it is  more the one
field the main rule  to follow  is that  all the  parts have  to be
converted to  the same  type of  data before  you can combine them.
You cannot mix numbers, dates and character expressions.  If you do
need  this  type  of  expression, convert your numbers to character
strings using the STR() function.   Convert your  date to character
strings   using   the   CTOD()   function.     Examples:  SALARY;
SALARY*1.05;   NAME+STR(SALARY,6,0)+DTOC(BIRTH).
EXPRESSION LIST
7.1.7.         <expression list>
An  expression  list  is  one  expression   or  a   number  of
expressions  separated  by  a  comma  and a space.  Examples SALARY
This  is  an  expression  list  that  is  made  up  of  one  field.
TRIM(FN)+' '+TRIM(LN)', ADDRESS, CITY, SALARY*1.05   This is a list
made up of four expressions.
NUMERIC EXPRESSION
7.1.8.       <numeric expression>
A  numeric  expression  is  an  expression  that  when  it  is
evaluated results in a number.
CONDITIONS
7.1.9.           <conditions>
A condition  in 1  on 1  = 3!! is a special type of expression
that when evaluated is either true or false.   A  condition is made
up of  field names, constants, functions and operators.  A constant
can be a number such as 45, a character string such as  'John Doe',
.T., or  .F..   The last two constants would be used by themselves.
If you put in .T. then  the condition  would be  evaluated as true.
If you  put in  .F. then the condition would be evaluated as false.
A function is any of the 1 on 1 = 3!! dBASE III type functions.
The different operators are listed bellow:
Logical
.NOT.     logical negative
.AND.     logical and
.OR.      logical or
Arithmetic
()        parentheses
**,^      exponenciation
*,/       multiplication, division
+,-       addition, subtraction
Relational
<         less than
>         greater than
=         equal
<>,#      not equal
<=        less than or equal
>=        greater than or equal
$         substring comparison
String
+         concatenation
-         trailing blanks first string  are moved  to end
of second string
Examples:
.T.  Always true
SEX = "M'  Sex equals male
SALARY *  1.05 >  40000   Salary times  1.05 greater then
$40,000
SEX = 'F' .AND.  SALARY >=  50000   Sex equal  female and
salary greater then or equal $50,000
SEX = 'M' .OR. SALARY <= 40000  All males and any females
with a salary less then or equal $40,000.
MASKS
7.1.10.             <mask>
Masks are used for two things  in 1  on 1  = 3!!.   One  is to
identify a  group of  files and the other is to identify a group of
memory variables.  In both cases the asterisk '*', is used to match
any number of characters and the question mark is used to match one
character.  Examples in  file matching  are:   *.dbf will  match an
file that  has an  extension of  '.dbf'.  a*.fox will match an file
that starts with the letter 'a' and has an extension  '.fox'.  This
includes the file 'a.fox'.  abc?.dbf  This mask will match any file
that starts with 'abc', is followed by any one character and has an
extension of '.dbf'.  This will include 'abc.dbf'.
Matching memory  variables works the same way except there are
no extensions.  a* will match all memory variables that  start with
'a'.   a?? will  match all memory variables that start with 'a' and
have no, one or two letters following it.
SCOPE
7.1.11.             <scope>
Scope indicates for the current active  database which records
to  use  in  executing  the  command.   The choices are ALL for all
records,  NEXT n for the next n records including  the current one,
RECORD n for a specific record number, and REST for the rest of the
records in the database starting with the current record.
PROGRAMMING LIMITATIONS
7.2.             PROGRAMMING LIMITATIONS
Besides any  limitations  noted  below  under  each individual
command, there  is a limit to the number of total lines of code you
can have active at one time.   1  on 1  = 3!!  treats everything as
part of  a procedure.  It loads each routine as they are name in DO
commands and keeps them all memory.    The  default  limit  is 2000
lines of  actual code.  We were able to run a program this large on
our 512K  Compaq.   This does  not mean  you will  be able  to.  It
depends on how much memory your programs uses.  If you use a lot of
character fields or create large arrays, your limit will be less.
If you have success at this limit, you  can try  raising it by
changing  the   value  for  the  field  MAX_CODE  in  the  database
III_SYS.FOX.
Do not use work areas 9 and ten, we use them.
Do not start any of your variables with 'I_', 'II_' or 'III_'.
Again we have used those names.
COMMAND LIST
7.3.                  COMMAND LIST
?[?] [<expression> [,<expression>,....]
The valid  clause is  an addition  to standard dBASE.  You are
allowed to specify a condition that  will evaluate  the input.
If that condition ends up true you proceed to the next step in
the program.  If the condition  comes  up  false  you  will be
returned to the start of the field.  If Bell is set on then it
will ring.  This will continue until the condition is true.
If no entry is made to  the variable  then the  condition will
not be checked.
@ <coordinates> [CLEAR] TO <coordinates> [DOUBLE]
@ <coordinates> PROMPT <character expression>
[MESSAGE <character expression>]
This is  an extension  to dBASE  that allows  light bar menus.
The prompts will be placed on  the screen  at their designated
coordinates.   A   MENU TO <memory variable> will activate the
light bar menu.  The user  can choose  items from  the menu by
using the  cursor to move the light bar to his choice and then
hitting {Enter} or  he  can  press  the  first  letter  of the
corresponding prompt.   As  the user  moves the  light bar the
corresponding message will be  displayed depending  on how SET
MESSAGE  TO  is  set.    When  the  user makes a selection the
relative number of that  selection  is  passed  to  the memory
variable.   If the  user hits an {Esc} a zero is passed to the
memory variable.
@ <coordinates>, <coordinates> BOX <character expression>
Extension to dBASE.  This command will create a box  using the
character expression.
ACCEPT <character expression> TO <memory variable>
APPEND FROM <file> [FIELDS <field list> [FOR <condition>]
[TYPE  <file type>]
AVERAGE [<scope>] [<expression list>] [WHILE <condition>]
The  NOMODIFY  option  is  an  addition to standard dBASE.  It
allows you to give  access  to  the  browse  mode  without the
ability to update.
CALL <file> [WITH <character expression>]
CALL <file> [WITH <memory variable>]
CANCEL
CHANGE [<scope>] [FIELDS <fields list>] [FOR <condition>]
CLEAR
* CLEAR ALL
Try not  to use  this one.   We are sharing the same work area
(remember 1 on 1  = 3!!  was written  in FoxBASE+.   You could
wipe out some thing the program needs to keep processing.
CLEAR FIELDS
CLEAR GETS
* CLEAR MEMORY
Same as CLEAR ALL.
CLEAR TYPEAHEAD
* CLOSE ALL
This will be changed to CLOSE ALL DATABASES, SET ALTERNATE TO
CLOSE ALTERNATIVE
CLOSE DATABASES
CLOSE FORMAT
CLOSE INDEX
* CLOSE PROCEDURE
PROCEDURES are not supported.  Do not use this command.
COPY STRUCTURE TO <database file name> [FIELDS <field list>]
You may include fields from related files.
COPY TO <database file name> STRUCTURE EXTENDED
COUNT [<scope>] [WHILE <condition>] [FOR <condition>]
[TO <memory variable>]
CREATE <database file name> FROM
<structure extended database file name>
DELETE FILE <file name>
DIMENSION <memory variable>(<numeric expression>
[,<numeric expression>)....,
This is  an extension to dBASE.  You may have single or double
dimension arrays.  Each  element  of  an  array  can  be  of a
different type  of data.   You may initialize a whole array in
one statement.  Example:
DIMENSION SALES(10)
SALES = 0
Extensive use of arrays will  limit  the  number  of  lines of
program code since they both share memory.
DIR [<drive:][<path>][<mask>] TO PRINT
DISPLAY [OFF] [<scope>] [<expression list>] [WHILE <condition>]
DISPLAY FILES [ON <directory>][LIKE <mask>] [TO PRINT]
* DISPLAY HISTORY [LAST <numeric expression>] [TO PRINT]
Not implemented.
* DISPLAY MEMORY [TO PRINT]
You will get all our memory variables also.
DO <program file name>
No  passing  of  arguments  to  subroutines.  [WITH <parameter
list>] is not supported.
DO CASE ... [OTHERWISE]...ENDCASE
DO WHILE <condition>...[LOOP]....[EXIT]...ENDDO
EDIT  [<scope>]  [FIELDS  <field  list>]  [FOR  <condition>] [WHILE
<condition>]
Extension to dBASE.  You may edit related databases along with
the main database.
EXIT
FIND <character string> | <number>
GATHER FROM <array> [FIELDS <fields list>]
This is an extension to dBASE.   Data  contained in  the array
are transferred  to the fields in the current database.  Array
location 1 goes into  field one  and so  on.   Memo fields are
ignored.
IF <condition>....[ELSE]....ENDIF
INPUT <character expression> TO <memory variable>
INSERT [BEFORE] [BLANK]
JOIN WITH <alias> TO <database file name> FOR <condition>
[FIELDS <field list>]
KEYBOARD <character expression>
This  is  an  extension  to  dBASE.    It  allows  you  to put
keystrokes into the keyboard  buffer.   This could  be used to
create a  demo or  as I  used it to give the ability to create
keyboard macros  in the Menu Mode.
LIST FILES [ON <directory>][LIKE <mask>] [TO PRINT]
* LIST HISTORY [LAST <numeric expression>] [TO PRINT]
* LIST MEMORY [TO PRINT]
Same as display memory.
LOAD <file name>
LOOP
MENU TO <memory variable>
Extension to dBASE.  This is one of the three commands used to
implement  light  bar  menus.    This  command  activates  the
previous @ ... PROMPTS and accepts  the users  choice from the
light bar  menu.  What will be returned in the memory variable
is the number of the item that the user selected  or 0  if the
user pressed  {Esc}.   SET MESSAGE TO will determine where the
addition messages will be printed.
MODIFY COMMAND <program file name>
You will be allowed up to 64k in file size.  '.prg' is assumed
for  the  extension.    If  there  is a '.fox' file it will be
deleted.
You will be allowed up to 64k in file size.
NOTE | *
* ON ERROR <command>
* ON ESCAPE <command>
* ON KEY <command>
PARAMETERS <parameter list>
PRIVATE <memory variable list>
* PROCEDURE <procedure name>
PUBLIC <memory variable list>
Extension to  dBASE.    This  can  contain  single  and double
dimensioned memory variables.
READ [SAVE]
* RELEASE ALL [LIKE|EXCEPT <mask>]
Do not use.
RELEASE [MODULE <file name>]
REPLACE <field name> WITH <expression>[, <field name>
WITH <expression>...] [<scope>] [FOR <condition>]
* RESTORE FROM <memory file name> [ADDITIVE]
You must use ADDITIVE.
RESTORE SCREEN [FROM <memory variable>]
Extension to  dBASE.  Allow restoring a screen saved with SAVE
SCREEN TO <memory variable>.
RESUME
* RETRY
RETURN [TO MASTER]
SAVE SCREEN [TO <memory variable name>]
Extension to dBASE.  Saves current screen in  memory variable.
See RESTORE SCREEN FROM <memory variable>
* SAVE TO <memory file name> [ALL LIKE|EXCEPT <mask>]
Watch out you don't get to many of my variables.
SCATTER [FIELDS <field list>] TO <array>
Extension  to  dBASE.    Move  values  from  fields in current
database into an array.  The first field  goes into  the first
element of the array and so on.  Memo fields are ignored.
SELECT <numeric expression>|<alias>
Extension to  dBASE.   SELECT 0 will return lowest unused work
area.
SET ALTERNATE ON|OFF*
SET BELL ON|OFF*
SET CARRY [ON|OFF*]
SET CENTURY ON|OFF*
SET CLEAR ON*|OFF
SET COLOR ON*|OFF
SET COLOR TO [<standard>[,<enhanced>[,<border>]]]
SET CONFIRM ON*|OFF
SET CONSOLE ON*|OFF
SET DATE <date type>
* SET DEBUG ON|OFF*
SET DECIMALS TO <numeric expression>
SET DEFAULT TO [<drive>]
SET DELETED ON|OFF*
SET DELIMITERS ON|OFF*
SET DELIMITERS TO <character expression>|DEFAULT
SET DEVICE TO PRINT
SET DEVICE TO SCREEN
* SET DOHISTORY ON|OFF*
Not implemented
SET ECHO ON|OFF*
SET ESCAPE ON*|OFF
SET EXACT ON|OFF*
SET FIELDS ON|OFF*
SET FIELDS TO [<field list>|ALL]
SET FILTER TO [<condition>]
SET FIXED ON|OFF*
SET FORMAT TO  [<format file name>]
SET FUNCTION <character expression> to <character string>
SET HEADING ON*|OFF
* SET HISTORY ON*|OFF
Always on.
* SET HISTORY TO <numeric expression>
Always 50.
SET INTENSITY ON*|OFF
SET MENU ON*|OFF
SET MESSAGE TO [<character expression>|<numeric expression>]
When used with a numeric expression  it is  part of  the light
bar  coding.    The  numeric  expression  determines  the line
messages will be printed on.  If set  to 0  then messages will
not be printed.
SET PATH TO [<path list>]
SET PRINT ON|OFF*
SET PRINTER TO <device>|<file>
* SET PROCEDURE TO [<procedure file name>]
SET RELATION TO [<expression>|RECNO()|<numeric expression>]
INTO <alias> [ADDITIVE]
The ADDITIVE  allows you to set more then on relation from the
same database.   This  is an  extension to  dBASE which allows
only one relation to a database.
SET SAFETY ON|OFF*
SET SCOREBOARD ON|OFF*
SET STEP ON|OFF*
SET TALK ON|OFF*
SET UNIQUE ON|OFF*
You may specify fields from related files.
STORE <expression> TO <memory variable>|
<memory variable> = <expression>
SUSPEND
TEXT ... ENDTEXT
TOTAL  TO  <database  file  name> ON <key> [<scope>] [FIELDS <field
list>] [FOR <condition>] [WHILE <condition>]
TYPE <file name> [TO PRINT]
UPDATE ON <key> FROM <alias>
WAIT [<prompt>] [TO <memory variable>]
ZAP
FUNCTION LIST
7.4.                  FUNCTION LIST
&<memory variable>[.<character expression>]
<character expression>$<character expression>
ALIAS([<numeric expression)]
Extension to dBASE.  Returns alias of the specified workarea.
ABS(<numeric expression)
ASC(<character expression>
AT(<character expression>,<character expression>)
BOF([<numeric expression>]
CDOW(<date expression>)
CHR(<numeric expression>)
CMONTH(<date expression>)
COL()
CTOD<<character expression>)
DATE()
DAY(<date expression>)
DBF([<numeric expression>])
DELETED([<numeric expression>])
DISKSPACE()
DOW(<date expression>)
DTOC(<character expression>[,<1>])  **** 1  Gives date  in form for
indexing
EOF([<numeric expression>])
ERROR()
EXP(<numeric expression>)
FCOUNT([<numeric expression>])
Extension  to  dBASE  Returns  the  number  of  fields  in the
specified database.
FIELD(<numeric expression>[,<numeric expression>])
FILE(<file name>)
FKLABEL(<numeric expression>) *F
FKMAX() *F
FOUND([<numeric expression>])
GETENV(<character expression>) *F
IIF(<condition>,<expression>,<expression>)
INKEY([<numeric expression>]) *F
INT(<numeric expression>)
ISALPHA(<character expression>)
ISCOLOR()
ISLOWER(<character expression>)
ISUPPER(<character expression>)
LEFT(<character expression>,<numeric expression>)
LEN(<character expression>)
LOG(<numeric expression>)
LOWER(<character expression>)
LTRIM(<character expression>)
LUPDATE()
MAX(<expression>,<expression>)
MESSAGE([<1>]) *F
MIN(<expression>,<expression>)
MOD(<numeric expression>,<numeric expression>)
MONTH(<date expression>)
NDX(<numeric expression>)
OS()
PCOL()
PROW()
READKEY()
RECCOUNT([<numeric expression>])
RECNO([<numeric expression>])
RECSIZE([<numeric expression>])
REPLICATE(<character expression>,<numeric expression>)
RIGHT(<character expression>,<numeric expression>)
ROW()
RTRIM(<character expression>)
SELECT()
Extension to dBASE.    Returns  the  number  of  the currently
selected workarea.
SPACE(<numeric expression>)
SQRT(<numeric expression>)
STR(<numeric expression>[,[length][,number decimal places])
STUFF(<character        expression>,<start       character>,<number
characters>,<character expression>)
SUBSTR(<character expression>,<START[,<number characters>])
SYS(<numeric expression>[,<expression>,....])
TIME()
TRANSFORM(<expression>,<character expression>)
TRIM(<character expression>)
TYPE(<character expression>)
UPDATED()
Extension to dBASE.  Returns true if the variables in the last
READ were updated.
UPPER(<character expression>)
VAL(<character expression>)
VERSION()
YEAR(<date expression>)
**********************************************************
* (c) COPYRIGHT 1987 I on I Computer Solutions, Inc.
*             All Rights Reserved