Category : Databases and related files
Archive   : DATAMAGE.ZIP
Filename : MAIN.DOC

 
Output of file : MAIN.DOC contained in archive : DATAMAGE.ZIP

WARRANTY AND D I S C L A I M E R

If this program is found to operate improperly by a registered user H.C.W.P.
software will provide a corrected version of the program to that user for the
price of a suitable, postpaid diskette mailer and a PC formatted diskette
delivered to us, or $8.

NO OTHER WARRANTY IS MADE, expressed or implied. This package represents over
three years of work by a single programmer. I have done my best to make
something I'd be proud to show. If you find anything I've missed I'd really
appreciate knowing about it!



THE DATAMAGE data management system



SPECIFICATIONS:

RAM BASED PROCESSING:
RECORD CAPACITY: 8,000 (640KB) program needs 384K to execute

DISK BASED PROCESSING:
RECORD CAPACITY: 32,000 (512KB)

DATA SEGMENTS IN RECORD: UP TO 200

MAXIMUM RECORD LENGTH: 7,000 BYTES

MAXIMUM LENGTH OF STRING SEGMENT: 35 CHARACTERS
(of course, you can use more than one)

PRECISION OF NUMERIC STORAGE: 16 DIGITS (FULL FLOATING POINT)

DATAFILES ARE COMPATIBLE WITH BASIC, PASCAL, C AND ASSEMBLER



HARDWARE REQUIREMENTS:

MS-DOS COMPATIBLE COMPUTER WITH 384 KB RAM
(8088, 80286, 80386 V20, V30 or V40 microprocessor)

MS-DOS DISK OPERATING SYSTEM (P.C. DOS) VERSION 2.0 OR HIGHER
ONE DISK DRIVE (FLOPPY, FIXED, RAMDISK)

PRINTER RESPONDING TO ASCII CODE 12 BY AUTOMATIC PAGINATION

MONITOR (COLOR OR MONOCHROME)

KEYBOARD


RECOMMENDED SYSTEM CONFIGURATION: (CONFIG.SYS & AUTOEXEC.BAT FILES)

ALLOCATE 10 IOCBs (FILES = 10 & BUFFERS = 10 IN CONFIG.SYS FILE)

USE DISK I/O VERIFY OPTION (VERIFY ON IN AUTOEXEC. BAT FILE)

VIDEO DRIVER (USE DEVICE = ANSI.SYS IN CONFIG.SYS FILE IF NECESSARY)

EXPANDED RAM RECOMMENDED: ALLOWS THE SOFTWARE TO ACCESS LARGER FILES

PRINTER BUFFER RECOMMENDED: FOR FASTER PROCESSING (NO PRINTER WAIT)


FEATURES:

TOTALLY MENU-DRIVEN: NO COMMANDS TO MEMORIZE

FLEXIBILITY: NO STRUCTURE OR FORMAT TO DEAL WITH

USER FRIENDLY: LOGICAL, UNSTILTED ORGANIZATION AND OPERATION
WITH OVER 50 HELP SCREENS

DATAFILE BROWSING: RECORD NAMES AND NUMBERS ARE DISPLAYED.
USER CAN PAGE UP/DOWN OR SCROLL "THROUGH" THE FILE, AND
DISPLAY/UPDATE RECORDS BY PRESSING RETURN.


SELECTION ABILITY: DATAFILE CAN BE SELECTED TO A NUMERIC OR ALPHA-
NUMERIC VALUE. ALPHANUMERIC SELECTS CAN FIND RECORDS CONTAIN-
ING THE SEARCH STRING, AS WELL AS THOSE EQUAL TO IT.

EXTRAPOLATIONAL ABILITY: CALCULATIONS CAN BE PERFORMED ON DATA IN
DATAFILE. TWO COUNTERS ARE PROVIDED IN COMPUTER MEMORY FOR
EACH "SURVIVOR" RECORD, FOR USE BY THE OPERATOR.

MACRO OPERATION MODE: MACROS ARE RECORDED DURING EXECUTION AND
CONTAIN THE DETAILS OF ALL MULTI-RECORD FUNCTIONS PERFORMED
DURING MACRO RECORDING. THE MACRO CAN THEN BE RUN LIKE A
PROGRAM. THE RESULTS OF THE MACRO WILL VARY WITH THE DATA
RECORDED IN THE FILE.

FORMAT CONVERSION: MOVE DATA INTO ANY FILE FROM ANY FILE, PRO-
VIDED THEY HAVE A RECORD NUMBER OR SPECIFIED SEGMENT
IN COMMON TO IDENTIFY THE RECORD PAIRS.

ONE STEP OPERATION: YOU ALWAYS HAVE THE OPPORTUNITY TO SEE WHICH
RECORDS ARE TO BE AFFECTED BY ANY OPERATION, BEFORE THE
OPERATION IS EXECUTED.


LARGE MEMORY USAGE: RECORD NUMBERS SEGMENT NAMES AND TWO COUNTERS
ARE STORED IN RAM. PROGRAM HAS INSTANTANEOUS ACCESS TO
VITAL INFORMATION. COMPUTATIONS CAN BE DESIGNED TO ACCESS
THE DISK DRIVE LESS OFTEN, RESULTING IN VERY FAST CALCULA-
TIONS ON LARGE DATAFILES. (RAM-BASED PROCESSING)

INFINITE EXPANDIBILITY: DATAFILES PRODUCED ARE ACCESSIBLE FROM
BASIC. THE SOURCE CODE TO LOAD A DATAFILE IS INCLUDED
IN THIS PACKAGE. FROM THIS STARTING POINT, ANYONE WHO
HAS USED THE BASIC PROGRAMMING LANGUAGE CAN PRODUCE
EXPANSION SOFTWARE THAT INTER-ACTS WITH THE DATAFILE.

FILE INDEXING: UP TO FIVE FIELDS CAN BE INDEXED IN MEMORY.
INDEXES MAY BE UNIQUE, NON-UNIQUE, OR COMBINED TO
FORM A CROSS-INDEX THAT MUST BE UNIQUE. NO SEGMENTS
NEED BE INDEXED. THE USER-ASSIGNED RECORD NUMBERS
ARE A UNIQUE INDEX THAT IS ALWAYS PRESENT. THEREFORE,
YOU MAY HAVE UP TO SIX INDEXES INTO ANY FILE.

ALPHABETIZATION: CURRENT GROUP CAN BE ALPHA-SORTED ON ANY
ALPHA FIELD, WITH UP TO TWO "TIE-BREAKER" FIELDS.

SCREEN DUMP: YOU MAY DUMP THE CONTENTS OF THE CURRENT SCREEN
AT ANY TIME BY HOLDING THE SHIFT KEY DOWN, AND PRESSING
THE PRINT KEY. (BE SURE TO RESET THE PRINTER TO A NEW
PAGE AFTER DUMPING)


GLOSSARY: computer buzzwords as defined in this package.

DATABASE: First and foremost, a database is a disk file. All datafiles
produced by this program are called YOURDATA.RAD. A datafile is divided into
records, which are divided into data segments. A datafile can contain 8000
records, that can contain 200 data segments, each.

A datafile can contain any information. From recipes and their ingredients, to
the kilotonage of a nuclear blast produced by varying quantities of fissionable
material.

DATABASE DEFINITION: Once a user datafile has been designed, the DBSEMAKR
program will write the datafile definition to disk. To define a new datafile,
use DBSEMAKR.

DATABASE DEFINITION FILES: The diskfiles HEADINGS.SAD, KEY.SAD and
GDRECNOS.SAD comprise the datafile definition files. The file HEADINGS.SAD
holds the names you give to the data segments in the datafile. The file
KEY.SAD holds three numbers for each data segment in the datafile. The first
is the class, 1 through 3. 1=string, 2=numeric, 3=numeric dollar format The
second is the length of the data segment on disk.

The third number details if and how the segment is indexed if the field holds
string data, and the number of decimals (0-8) to record if the field is
numeric. If you specify 9 as the number of decimals the programs do not round
data going into the field.

The file GDRECNOS .SAD holds the record numbers, 1 - 32767, that you choose to
identify the records. The file extension .SAD connotes a sequentially accessed
disk file, while the file extension .RAD connotes a random access diskfile.

When the programs start, these files are read, error checked, and the datafile
file is opened according to the instructions they hold. The programs will not
operate without these files.

RECORD: A record in a datafile describes a single item, that is in some way
similar to the rest of the items in the datafile. For example, we might find
both sacked manure and ten carat diamond pendants in the same datafile. The
similarity between these two items is that both are sold by the same general
store.

DATA SEGMENT: Within records are data segments. As a record is a subset of
the datafile, and describes a unit of the datafile, so a data segment is a
subset of a record, and describes the same attribute of the record as do the
data segments in other records. Also referred to as a "field."

For example, we might have a data segment in our datafile called price. And a
data segment called cost.

So, in each record, representing each item we sell, we have a data segment
holding the items' cost, and our price. The cost is in data segment number two
and the price is in data segment number three. Making an operation such as
raising all our prices ten percent take ten seconds, not hours of shuffling
paper records.

CLASS: Data segments can have one of three formats: Numeric segments store
numbers. Numeric dollar format segments are processed as any other numeric
filed, but will appear on reports formatted with $ , commas and two decimals.
String segments store words as well as numbers, spaces, etc.

STRING: A string segment can contain both letters and numbers. If it does
contain numbers, they are available for printing or viewing only, and can not
be totaled, averaged, or used in the manner of a numeric segment.

NUMERIC: A numeric segment can hold only numbers, and the decimal point. It
can be used in all number-oriented operations, as well as to print or view.

RECORD ENTRY: The act of typing in records from the keyboard to the datafile,
whether new or established. All segments entered can be re-checked and
corrected before data is written to disk.

UPDATE: The act of changing the information stored in the datafile.

SELECT RECORDS: When records are selected a data in the record is compared to
a comparitor. The records that compare positively (true) are placed in the
survivor group, and those who compare negatively (false) are not. This process
is known as an EXCLUSIVE SORT, or just sort.

SURVIVOR GROUP: This package provides a real, rather that figurative survivor
group. After a sorting operation excludes some records from the group the
screen displays only the records now in the group, ignoring records that have
not "passed" the sorting "tests" specified by the user.

SELECT RECORDS NUMERIC: A sort that uses numeric data segments, and compares
numbers to other numbers.

SELECT RECORDS ALPHA: A sort that uses string, or alphanumeric, segments, and
compares strings to strings.

MACRO: Not a single process, but any series of multi-record operations,
recorded to disk while they were being done by the program. Once recorded, a
macro can be "replayed" and may well produce different results, if the data in
the datafile has changed.

CASE/SPACING: The string sort routine can be directed to ignore case and
spacing like the index search routine. If you direct the program to ignore
case and spacing then entering `fredjones' will include records containing FRED
JONES, Fred Jones, and Fred JONES in the survivor group. If you opt for strict
equality only those records containing an exact match of the search string will
be placed into the group.

INSTRING SEARCH: The string sort routine offers two modes of matching: Strict
equality and an instring search. If you opt for strict equality and enter FRED
as your search string only those records containing the word fred (and nothing
else) will be placed into the group. If you opt for an instring search all
records containing the word fred, along with any other data that happens to be
there, will get into the group.

SORTING PLACE MARKER: A diskfile that records the record numbers and number of
current survivors, along with their counters, if any. Sorting place markers
are useful to eliminate some records, then take some action on the remainder.
They provide the ability to re-load the previous survivor group, with counters,
from disk, and continue processing with the previous group.

COUNTER FIELD: One of sixteen thousand double precision variables provided in
RAM to hold the results of calculations done on the data in the datafile. Two
counters are provided for each survivor record.

I/O GROUP: As the survivor group is a group of records stored in memory,
the I/O group is a group of segments stored in memory. The declaration of an
I/O group tells the program which of the data segments to display on the
screen, accept from the keyboard, or print on the printer.

Using an I/O group saves you the time taken to search out relevant information
from a listing of the whole record.

MS-DOS LEGAL PATHNAME: The programs ask the user to enter a MS-DOS legal
pathname for marker and relational group diskfiles written and read. Anyone
who uses this program without a thorough, hands-on understanding of the MS-DOS
disk operating system, and its "tree" directory structure is inviting disaster.

To familiarize yourself, if you have not already, with the MS-DOS disk
operating system, review the manual that came with your computer, or acquire a
readily-available privately authored textbook. MS-DOS is by far the easiest
computer operating system ever designed.

FLAG: A coded message occupying a string segment designed to hold it. A flag
is a message left in the record, and can have any meaning you assign. Used to
reflect certain conditions in the record, and to sort for the records
containing the flag.

FILE INDEX: The purpose of a file index is to identify a record in the file by
its' contents, rather than its' record number. If a file index is not
available for a data segment each record will have to be read from disk and
checked for that value. The sort routines in this package do that, but, when
processing files with many records it takes time.

The file index fills the need for speed by producing a numeric value for each
indexed segment of each record, and placing it in the computers' memory. That
takes a lot of memory; in fact, 80,000 bytes of RAM are assigned this task when
8,000 records are loaded by the program. When the user enters a search value,
the contents of an index in a particular record, the program assigns a numeric
value to it, and compares it to the values stored in RAM for that index,
thereby bypassing the need to read the records from the disk and compare their
contents to the search value, as in a sort.

Unlike a sort, the full value contained in the record must be entered as the
search value. James Brown, JAMES BROWN, and James Brown (2 spaces) are all
the same values. The indexes can not be searched for Brown. To do that, use
select records alpha.

UNIQUE INDEX: When a data segment is declared as unique all records must hold
a different value in that segment. The advantage of this is that only one
match for a search value will be found. The dis-advantage occurs during record
entry-updating, when the computer refuses to accept a new record because of a
duplicate found in another record.

NON-UNIQUE INDEX: When a data segment is indexed as non-unique, the computer
will allow duplicate entries. When searching a non-unique index multiple
matches may, therefore, be found. The user views the record on the screen,
then decides to accept the record or to continue the search.

CROSS-INDEXING: When a data segment is declared as cross-indexed, it is
combined with all other indexes declared as cross-indexed to form a unique
index. For example, we might have a datafile compatible with the POWRMAIL
format in which we also keep our customer billing data. Realizing that we may
have two customers with the same name, and that we also might have two
customers at the same company with the same phone number, we could create a
cross index on this file that combined the name and phone number segments.

That way, the computer wouldn't balk if we tried to enter two records with the
same name, or the same phone. But, if we tried to enter a record that had
duplications in both the name and the phone number, it would be rejected.

When you are searching the datafile for a record the indexes operate
independently of each other; you may select any, all, or any combination of
the fields declared as indexed. Case/spacing can also be ignored when
searching indexes, but will be STRICTLY MATCHED when entering records.



THE PROGRAMS AND THEIR FUNCTIONS:

1. SCRNBASE.EXE is the main program of the DATAMAGE. It lists and displays
records, enters new records, updates records, and sorts the records in the
datafile, and can perform calculations to extrapolate data. This program
employs ram-based counters and indexes to provide the fastest d.m.s.
environment going.

Problem is, that uses up the PCs limited supply of chips rather quickly. So,
this program will refuse to load files containing more than 8,000 records. To
load a file that large the host machine needs to have AT LEAST 512K, and if
possible, the full 640.

2. DISKBASE.EXE is the same program. Difference is it will load files
holding up to 32,000 records, provided your machine can furnish the disk space
to hold them all.

Instead of loading the file index into ram this program reads it off the disk
when it needs the index information. The counters are also placed into
temporary files on disk. This method of using more computer than we have has a
few drawbacks; mostly speed and available disk space.

If at all possible use SCRNBASE. If your computer runs out of memory or your
files swell beyond 8,000 records use DISKBASE. Due to the constant need for
disk I/O this program is slower, and makes temporary files of outrageous
dimensions when the counters are utilized: up to 412K.

There is, however, a way to "cheat the (640K) hangman": Purchase a card having
three-four megabytes of "expanded ram" on it. Use it all as a ramdisk, and
copy the desired file into it before entering THE DATAMAGE.

Of course, you will need to copy it back before you're through, but it can
provide the ability to "fool" the computer into thinking that it is using a
disk drive when it's using ram, and thusly thwart the 640K limit. Processing
will not, however, be as rapid as it would using the ram-based program, because
of the time taken by the device-drivers and IOCBs to access the expanded ram.
But still far faster than from any H.D.

Though SCRNBASE and DISKBASE are almost exact clones when judged by what's
happening on the screen they are QUITE DIFFERENT internally. One advantage of
DISKBASE is that it will sort numeric with both counter fields active, and not
require the user to select a counter field for internal use during the sort.

When DISKBASE was first designed, the sort was done off disk. It was just too
slow, and it really gave the drive an un-necessary workout. In a 640K machine
there's RAM to spare while DISKBASE operates. So, the program reaches out and
uses it, giving you a faster sort. In fact, DISKBASE sorts NUMERIC faster than
SCRNBASE.

In order to accommodate 32,000 records the temporary array used for the sort is
SINGLE PRECISION. That means it has 7 digit capacity with full floating point.
If you are sorting dollar amounts over 1 million the sort will ignore the
change. At 10 million it will ignore the one dollar column, and so on.

A problem may be encountered when running a MACRO written by DISKBASE while
executing the SCRNBASE program. The counter field to use for the sort will not
be recorded (since DISKBASE doesn't do it that way) and the operator will, if
both counters are active, have to select a counter to use.

So, use the DISKBASE MACROS with DISKBASE, and the SCRNBASE macros with either
program. The SCRNBASE MACROS include the number of the counter to use, but it
is ignored by DISKBASE.

3. DBSEMAKR installs user-designed datafiles. Before installation, a datafile
must be carefully designed. Database design is a heading later in these
instructions.

4. POWRCOPY moves data between datafiles. It can be used to merge two or more
datafiles, or to accomplish inter-datafile updates. Real-life uses of this
program would include the moving of certain parts of a sales history or
customer file into a new datafile designed for sales mail management, or
updating the "master" datafile from details of daily transactions entered as
records on other computers.

5. POWRMAIL.EXE is what's known "in the vernacular" as a sales mail manager.
This program is not an integral part of the DATAMAGE. In fact, it is a custom
expansion program developed to meet the need of one of the first users of THE
DATAMAGE. It is included not only to provide the freebie proffered on the
box, but to show how a stand-alone, independent program can inter-act with the
DATAMAGE.

6. GO.EXE is the function selection program. It allows the user to select
multiple functions without leaving the system.



DATAMAGE FUNCTIONS:



F1 = ENTER FUNCTION: Press to enter a new record.

F2 = DELETE FUNCTION: Press to erase a record. Records can be deleted from
the current group, or erased in the datafile. The latter is irreversible.

F3 = PRINT FUNCTION: Press to output all records now in the group to the
printer. Data segments in the Input/output group will be printed, data
segments not in the I/O group will be suppressed.

F4 = PRINT FORMAT FUNCTION: When sorting or performing calculations, it's
handy to have a file format sheet. It details the file.

F5 = FIND FUNCTION: Press to access the file index, i. e. to select a record
by its' content. Please read sections covering file indexing in the glossary.
ONLY the records in the current group can be found.

To find a record, the user simply enters the exact content of the desired
record. The entry is indexed (a numeric value is extrapolated from it) and the
computer searches the numeric equivalent of the contents of the other records,
stored in RAM, for a match.

If a match is found, that record is read into the buffer and displayed.

F6 = SORT FUNCTION: Press to put the current survivor group in order. The
"key" upon which to order the records may be on disk or in a counter field.
After the sort function has completed its' task (allow 15 minutes for a 4000
record file) the browse function will display (the print function will print,
etc.) the record with the lowest value in the test field first.

This function is useful for arranging mailing lists in order on zip code, and
anywhere you wish to arrange the list by quantity.

This function can also be used to alphabetize. When a string field is targeted
the user may enter up to two "tie-breaker" fields. If duplicates are found in
the targeted field, the values stored in first, then the second tie-breaker
field will become the target of the alpha sort for those records.

F7 = ALPHANUMERIC SELECT FUNCTION: Press to select records by alpha-numeric
criterion. In a name/address file, we wish to work with only those records
"whose" title field holds the data "PRESIDENT".

First, we must define the target of the search. You may search either one
segment in the records, or all segments defined as string. In this case, we
know where the data is, in a segment called title, number three. So, we
specify number four as the target of the selection process.

We can match upper/lower case letters and ignore all spaces in our search, or
we can have the computer look for strict equality. Likewise, we can specify an
instring search, and get as survivors all those records that contain the search
string, or specify equality, and end up with those records exactly equal to the
search string. Then, we enter the search value: PRESIDENT.

Finally, we specify that we want the survivors to contain the search value. We
could reject all records containing the search value as well.

The selection crucible now loads all records in the current group, and tests
segment four to see if the search value is there. After the browse screen
returns we look in the survivor records and find a goodly number of VICE-
PRESIDENTS may have been included if an instring search was performed.

F8 = NUMERIC SELECT FUNCTION: Press to select records by numeric criterion.
In a customer file, there is a segment called amount due. If we wish to work
with a group of only those records "whose" balance is now greater that zero
(accounts with a balance outstanding) we can use the numeric select function to
reject those records "who" have a zero balance.

Like the calc routine, the num-select function first asks for the whereabouts
of the value to be tested. In this case, say, the amount due segment is number
four. So, we direct the computer to look for the test value on disk, in
segment four.

Next, we must choose a comparison mode. Since we want only the records holding
a value of greater than zero, we select the greater that option from the menu.

Finally, we must specify the whereabouts of the comparitor. In this case the
test value is the same for all records, zero. So, we specify a keyboard entry
as comparitor, and enter zero.

When the selection crucible starts each record now in the group is read into
the buffer, and its' test value compared to the comparitor. If the record
"fails" the test it will no longer appear on the browse screen, and will not be
accessed by concurrent selection processes, nor appear on reports generated by
the print function, or acted upon by the calc function. For all intents and
purposes, a non-survivor record is not in the file, at least, until the group-
reset function is used.

F9 = CODE FUNCTION: Press to write a code to any segment in all records in the
current group. The records containing the code or flag can then be identified
by its' presence. Like F10, this function is used to identify a group of
records not in memory. When records are identified in this manner, the
identification stays in the records until removed.

F10 = MARKER FUNCTION: There are times when we want to work with multiple
groups. On a mainframe, hey, no problem! You've got a couple megabytes to
work with, and virtual storage to back it up.

This program, when loaded with a file containing the full 8000 records, comes
dangerously close to "running out of chips" in a computer expanded to the full
8088 compliment of 640K. So, I've devised a little "V.S." of my own. The
current group, with its' (128 KB of) counter values, can be shuffled off to the
disk drive, to be re-loaded when needed. Thus freeing the RAM for another
group.

When re-loaded, the browse function will display only those records that were
present at the time of the write, and data in the counter fields will be
restored to the values stored at the time of the write. I do apologize for the
necessity of doing this. This computer needs more chips!

One use of the marker files is to pass a group of records to the POWRMAIL
program. The POWRMAIL program loads the marker file, and prints sticky labels
for the records included in it.

The marker files are transient, and probably won't be any good tomorrow. They
contain the INTERNAL record numbers of the group, and, tomorrow, that internal
record number may represent another record that may not meet the parameters
specified.

This happens when a record is deleted. A "hole" is created in the file. When
the next record is entered, the computer searches for "holes" before accessing
more disk space. If it finds one, it is filled with the record to be added.

F11 = GROUP RESET FUNCTION: Press to restore all records to the current group,
and reset counters to 0. To access, press Alt + F1.

F12 = INPUT/OUTPUT FUNCTION: Press to adjust the content of the I/O group (see
glossary).

F13 = CALCULATE FUNCTION: Press to perform a calculation. The entire screen
will clear, and menus will guide you through the many possible ways you may
calculate.

The calc function first asks the whereabouts of the first value, the one to be
acted upon. The data must be numeric, and may be on disk, stored in one of the
two "counter" fields provided in RAM for each current survivor record, or it
may be a keyboard entry.

Next, we enter the desired process, i. e. add, subtract, etc.

Then, depending on the process selected, we may enter the whereabouts of a
second value, which may be the sam as the first value. If we simply want to
move a value, say, from counter one to data segment eight in the file then we
enter the whereabouts of only the first value. If we want to add segments four
and eight, we must enter the whereabouts (segment eight in the file) of the
second value as well.

Finally, we are asked to specify where to place the results of the calculation.
We can write it to disk, or place it in a counter field, in RAM. Only the
records in the current survivor group will be calculated. Non-survivors are
ignored by the calc function.

F14 = TOTAL-AVERAGE FUNCTION: Press to total or average any numeric segment.
Note that only the records now in the survivor group will be totaled or
averaged.

F15 = RE-NUMBER FUNCTION: Press to change the user-assigned record number of
the record whose number is flashing.

F16 = POSITION FUNCTION: Press to enter the position in the file to which you
wish to go. If you are now at position 30, and want to go to position 4,000
that's a lot of PgDn keystrokes. This way, you move directly to the desired
position.

F17 = CHANGE MAIN DISPLAY SEGMENT: Press to see other data than the first field
in line one of the browse screen. Myself, I kind of like to leave the record
name up there, and assign the alternate display segment. The main ds will not
accept zero (be turned off).

F18 = CHANGE ALTERNATE DISPLAY SEGMENT: Press to change the alternate ds,
which is a blank line when the program starts. Some folks like it that way,
saying it makes the display easier to read. For that reason, you may turn it
off. You may also display the counters in the alternate; this can't be done
with the main ds. The alternate ds is automatically set after you do a sort,
perform a calculation or select records, displaying the target data.

F19 = LOAD FUNCTION: Press to load another file and the menu detailing the
datafiles on the target disk re-appears. Select another file and press return.

F20 = QUIT FUNCTION: Press to end the BASE program and return to the function
selection menu, from which you may exit THE DATAMAGE.

F21 = BEGIN MACRO RECORDING: (Ctrl + F1) Press to record the proceeding
multi-record functions into a re-usable macro file. If you had a datafile
detailing your customer base you might well wish to have a listing of those who
owed you, possibly broken down into states or whatever.

Next week, you need the same information from the file. After doing it
manually until you are certain of your method, use F21 to make a macro of the
operation.

F22 = EXECUTE A MACRO: (Ctrl + F2) Press to run a macro. As you will see,
DATAMAGE runs in the hammer lane.

RECORD DISPLAY/UPDATE FUNCTIONS: Press RETURN to display/update the record
whose number is flashing on the screen. The screen clears, and is filled by
the names of the segments in the file, and the data recorded in the record
accessed. The dialog box now shows more functions, accessed, this time, by the
first (CAPITAL) letter.

QUIT FUNCTION: Press to end display of current record, and return to browse.
If you have changed the data on the screen, using the QUIT will NOT write your
update(s) to disk.

WRITE FUNCTION: Press to write the data on the screen to disk in the record
number appearing on the screen. The routine will check the indexes, if any,
and refuse to write a duplicate.

RESET FUNCTION: Press to reset flashing segment to original or merge value.
Original value will appear unless another record has been merged.

PRINT FUNCTION: Press to output the current record to the printer.

MERGE FUNCTION: Press to load another record. This records' data is made
available to move into the current screen with the RESET function.

CREATE FUNCTION: Press to write the data on screen to a new record. A number
for the new record is entered, and the indexes, if any, are checked for
duplicates. The routine will refuse to write on index violations, and display
the offending index.

DATA ENTRY/UPDATE FUNCTION: Press RETURN to enter/update the flashing data
segment. The dialog box clears, and the first line details the segment
accessed, while the second line lists the cursor movement keys.

The last line has the available functions. If the segment is numeric, the Add,
Subtract, Multiply and Divide functions are present. These functions emulate a
calculator, with its' register loaded to the value stored in the segment.

When the segment contains the desired data, press RETURN to end edit.

DATE SORTING:

If todays' date is 1/2/1987 then todays' numeric date is 19870102. The year,
then the month, and then the day. In files where date sorting is applicable,
declare a numeric date right after the date in the string format of your
choice. (see sample db #1)

You get a faster sort; the data is loaded and sorted, no conversion to a
numeric format is necessary. And, again, you have "designed" a function into
your file that the program does not perform.


WRAP-UP:

In case you haven't had enough, the instructions for the other three programs
await you in their own files.

Allow me to thank you for trying THE DATAMAGE, and to apologize for these
instructions, which certainly leave something to be desired. I believe that
something is the authorship of someone skilled at communicating with people via
the written word. Don't look at me, I am only just learning to communicate
with a computer, via keyboard.

IF a few people register I will pay somebody to come up with a proper manual.