This is Info file dfa_english.doc, produced by Makeinfo-1.48 from the
input file dfa_english.texi.

   DFA(ddress), das Adress-Utility für den Amiga unter OS 2.0

   Copyright (C) 1992 Dirk Federlein

   GUI created using Gadtoolsbox (C) 1992 Jan van den Baard.

   AREXX interface created using Arexxbox (C) 1992 Michael Balzer.

   Registered trademarks are *not* marked separately.  Therefore the
missing of it doesn't mean that they are free.


DFA
****

This manual describes the installation and usage of `DFA' V1.1. Here
you'll find the explanation of all the AREXX commands as well.


General
********


Copyright
==========

`DFAddress' (`DFA' for short) is *shareware*!  You may copy and
distribute verbatim copies of the program's executable code and ASCII
documentation as you receive it.  You must not give away your keyfile
or copy it (except for your own use!).  I keep the copyright over the
whole package!  You may not sell this programm for more money than to
cover just the costs of copying!  In any case you may not charge more
than Fred Fish claims for one of his "Library Disks"!  Besides the
program itself, the documentation and all add--ons are also copyrighted
by me.

You may distribute only the whole (shareware)package!  You may not
change anything without my written permission.  However using crunchers
on it is permitted


Warranty
=========

I can and will not be held responsible for any damages which are caused
directly or indirectly by `DFA'.  I don't guaranty that `DFA' works in
the expected way.  If you find any bugs I please you to send me a bug
report.  *Note Bug Reports::.


What the hell is DFA?
======================

`DFA' is *not* just another address programm.  You can look up the
addresses quite fast; support for email addresses is given as well. Of
course - there are already some similar pieces of software which do
nearly the same - well *nearly*!

`DFA' was programmed under version 2.0 of the latest *AMIGA* operation
system!  This means you need *OS2.0* to use the programm.  If you only
have OS1.3 (or below) you won't get anything but a message, saying that
the needed system libraries (version 37 and up) could not be opened --
sorry.  All I can say to users, which don't use OS2.0 up to now is: 
Upgrade at once!

`DFA'  is  using  OS2.0.  This implements that you can use all the  new
features that the *AMIGA* is supporting now.  You not only get an
application icon, the typical 2.0 look and feel but better, you can do
all operations with the keyboard!  `DFA' is a commodity, so you can pop
it up by holding down some keys, the "hotkey".  Since Version V1.1
`DFA' offers an AREXX Port, which means that you can direct `DFA' from
within other programms.

The best idea is to copy `DFA' to the `WBStartup'-drawer, for you can
use it at once after startup.


History
========

In Spring of 1992 I was looking for an address utility, which took
advantage of the new features of OS2.0, but I didn't find one!  So I
began to program one by myself.  The complementation of `DFA' took more
time than I exspected, because I'm first a student and second a
programmer;-) Moreover I often found possibilities to improve `DFA',
which sometimes lead to a complete rewriting of large parts of the
code.  This took place for example when a friend of mine convinced me
that `DFA' should be fontsensitive (thanks Kai!).

When the program was "finished", I decided to make it "shareware", so
it should not disappear in a drawer like so many other things I had
programmed before.  This decision made it necessary to put even more
time in this project, because a manual had to be written.  This manual
was written using `TeX'; the ASCII manual was done using DVI2TTY.

A few bugfixes later it became clear that `DFA' should get some
significant improvements, e.g. additional address fields, an AREXX
Port, ...

While programming the AREXX Port of `DFA' I got to know the `TeXInfo'
package and I liked it at once!  So I translated the complete manual to
the `TeXInfo' format.  Huge expansions were made due to the
improvements of `DFA'.  The english manual got a complete redesign and
was written using `TeXInfo' as well.

The advantage the user can take out of the manual written in `TeXInfo'
can be explained shortly:  It is *easily* possible to create ASCII and
AMIGAGUIDE manuals out of a file written in `TeXInfo' (besides the
`TeX' manual of course).  However, only registered users will get the
`TeX'-- and the AMIGAGUIDE documentation.

When the implementation of the AREXX--Port was nearly done, the SAS-C
6.0 compiler arrived. Because I used the AZTEC-C compiler before, some
adaptions had to be done. Short time later this had been done as well
and I can publish `DFA' version 1.1 now...


Installation
*************

If you want to use `DFA', you have to copy some files to their correct
places:

   * *DFA, DFA.info*

     Should  be copied into a directory of your search path, e.g. `c:'.
       If you want `DFA' to be started automatically during the booting
       phase,   you   can   copy   both  files  into  the
     `SYS:WBStartup' drawer.

   * *DFA.key*

     Please copy this file to your `s:'--directory; it is recognized
     only there. It activates all the functions, which are disabled in
     the public version. Only registered users get such a key file.
     *Note Registration::.

   * *adr.file*

     This file contains one (my) address.  If you want, copy it into the
     same drawer as `DFA' and `DFA.info'.  It will be loaded, while
     `DFA' is starting up.  You may change the name of the address file
     (incl.  its path) in the preferences window.  If you don't supply
     any address file, the list of addresses will be empty.

   * *Arexx scripts*

     In the `rexx' drawer you'll find some little AREXX scripts, which
     you may find useful.  The description of every script is located
     in the beginning of every file.  All scripts have the extension
     `.DFA', which shows that they contain `DFA' AREXX commands.  Copy
     all scripts to the `rexx:' directory, so you can use them at once.

Well - that's it.  Now you can use either the shell to start `DFA'
manually by typing `DFA' or `run DFA >NIL: <NIL:', or you double click
on it from the Workbench.  As mentioned above, if you copied `DFA' to
the `WBStartup' drawer it will start automatically while booting.


Quick Start
************

When `DFA' comes up the first time, it opens its window and you can
immediately use it.  If you don't want `DFA' to open its window every
time it starts up you have to change the tool types as described below,
*Note Settings::.  The application icon will appear on the Workbench as
long as you don't switch it off in the preferences window of `DFA'. 
For details see *Note Settings::.

As `DFA' tries to follow the "User Interface Style Guide" as tight as
possible, it should be no problem (at least for advanced users) to
figure out all the functions of `DFA' according to "trial and error". 
If you don't want to get bad (?) surprises, just continue reading...


Usage of DFA
*************

You can control `DFA' by mouse as usual as well as *completely* by
keyboard.

Some notes to the usage of the keyboard:

   * *Button Gadgets*

     All Gadgets have a corresponing text.  In this text you'll find one
     character *underlined*.  This character is the "shortcut" to the
     gadget.  To use this shortcut just push the corresponding key.  You
     don't have to push any qualifier like `CONTROL' or `ALT'.  To
     simple buttons it doesn't matter if you push the "normal" or the
     capital letter.  To other gadgets it can make a difference (see
     below for details).

   * *Listviews*

     At the moment `DFA' only has one listview -- the address list in
     the main window. The usage is als follows:

            Shortcut
              or             The list rolls *up*.
           Cursor Down
          
          Shift Shortcut
              or             The list rolls *down*.
            Cursor up
          
              Space          The  current entry is selected.
                             To mark the selected entry it gets
                             a `>' in the first column.

   * *Cycle Gadgets*

     In front of a cycle gadget there is short text, which describes the
     function of the gadget. Again there is one charakter underlined.
     However, here it does matter if you use the capital letter or not.
     The "normal" letter cycles foreward, the capital letter backward.

   * *Radio Buttons*

     Only one of the buttons that belong together can be activated at
     once. You can select an entry by pushing the proper shortcut.  The
     case of the shortcut is not important.

   * *Check Boxes*

     A check box can be selected (shown by a tick) or deselected
     ("blank"). You can switch the current state by pushing the
     corresponding hotkey.

   * *String Gadgets*

     The string gadgets have the same functions as the "original" string
     gadgets.  However, I added some features, which should make them
     easier to use:

        - Hit `RETURN' to end the input to the current gadget and go to
          the next string or integer gadget.

        - Hit `SHIFT' `RETURN' to end the input to the current gadget
          and go to the *previous* gadget.

        - `CURSOR UP' or `CURSOR DOWN' brings the cursor to the
          previous or next string gadget respectively.

        - Hit `ESCAPE' to finish the input completely.  The window
          which contains the gadget is closed and all previous input is
          discarded.

        - If the cursor stands within a string gadget, the shortcuts can
          be reached by hitting `LEFT AMIGA'--`letter'.  If there is a
          shortcut that has the same letter as an original edit
          function (like `LAMIGA Q' or `LAMIGA X'), you reach the
          shortcut by pushing `SHIFT' additionally.

     You can activate a string gadget by hitting the corresponding
     shortcut.  This is not case sensitive again.


Settings
*********

There are two possibilities to configure `DFA':  First you can change
the tool types and second you can use the built--in `DFA' preferences.
You need both ways for a complete configuration!


Changing the Tool Types
========================

On the Workbench click *once* at the `DFA' icon and select the
information tool from the icons menu.  A window opens, where you can
change the following tool types:

   * *`DONOTWAIT'*

     This is a system tooltype, which forces the Workbench not to wait
     for `DFA' ending.  You should *not* remove this tool type.

   * *`CX_Priority'*

     With this tool type you can change the Priority of `DFA'.  The
     default setting of `CX_Priority=0' usually doesn't need to be
     changed.

   * *`CX_Popup'*

     If you set `CX_Popup=YES', you make `DFA' pop up immediately after
     startup.  Set `CX_Popup=NO' to keep `DFA' "quiet" until you pop it
     up by hitting the hotkey or clicking on the application icon.

   * *`CX_Popkey'*

     The default setting of the `DFA' hotkey is `LCOMMAND F5', which is
     done by `CX_Popkey=LCOMMAND F5'.  This means that `DFA' pops up as
     soon as you push `LEFT AMIGA F5'. You can change this hotkey using
     the following keywords:

          LSHIFT      left shift key
          RSHIFT      right shift key
          CAPSLOCK    caps lock key
          CONTROL     control key
          LALT        left alt key
          RALT        right alt key
          LCOMMAND    left AMIGA key
          RCOMMAND    right AMIGA key
          NUMERICPAD  numeric pad
          MIDBUTTON   middle mouse button
          RBUTTON     right mouse button
          LEFTBUTTON  left mouse button
          F1-F10      function keys 1 to 10
          UP          cursor up
          DOWN        cursor down
          LEFT        cursor left
          RIGHT       cursor right
          HELP        help key
          DEL         del key
          RETURN      return key
          ENTER       enter key on the numeric pad; notice that you have
                      to set `NUMERICPAD' as well!
          BACKSPACE   backspace key
          ESC         escape key
          SPACE       space key
          COMMA       komma key
          UPSTROKE    upstroke key
          A..Z, a..z  "usual" keys
          0..9, etc.

     You can "mix" these keys, for example:

        - LSHIFT CONTROL F1

        - LALT CONTROL D

        - CONTROL NUMERICPAD ENTER

        - RCOMMAND RSHIFT A

        - etc.

   * *`PORTNAME'*

     `DFA' uses `DFA' for the portname.  If there is another program
     with the same portname, `DFA' attaches numbers (`DFA.1', `DFA.2',
     etc.) until a definite name is found. However, if you want your
     "own" portname, you can set it using the tool type `PORTNAME'
     (e.g.  `PORTNAME=DFAddress').  Please remember that you have to
     adapt all example AREXX scripts, if you change the portname!


Changing the DFA Preferences
=============================

Select the `preferences' item in the project menu of `DFA'. Another
window opens where you can change the following settings:

   * *Address file*

     Here you can enter the name of the file (incl.  path), which
     contains the addresses (default:  `adr.file').

   * *Get*

     When you hit `Get', you can use a file requester for selecting the
     address file.  The name of the file appears in the field `Address
     file'.

   * *XPos*

     In this field you can enter the x coordinate of the application
     icon, which means the distance from the left edge of the Screen to
     the left edge of the application icon.

   * *YPos*

     In this field you can enter the y coordinate of the application
     icon, which means the distance from the top edge of the Screen to
     the top edge of the application icon.

   * *Show Appicon*

     By using this gadget you can decide if you wish to have an
     application icon on your Workbench screen or not.

   * *Baud*

     This cycle gadget allows you to select the baud rate of the serial
     port. Notice that it nearly doesn't matter which number you select,
     because all `DFA' does is to dial; no real data are transfered! The
     only thing you should make sure is that the baud rate you select is
     not higher than that of your modem (default: `1200').

   * *Init String*

     The string that you enter here will be sent to modem for
     initialisation. If you have a Hayes compatible modem, this will
     usually be `ATZ' (default: `ATZ').

   * *Predial String*

     This string will be sent to the modem just in front of the
     telephone number itself!

     Some examples for Hayes compatible modems:

             ATDP            pulse dial (default)
             ATDT            tone dial
             ATDP#W          Makes the modem wait for a dialtone after
                             sending a number (`#'). So it is possible
                             to call from a extension.
                             Just substitute `#' by the number you would
                             usually enter to get a dialtone.

   * *Serial device*

     You may enter the name of a serial device here. Usually this is the
     Commodore `serial.device', which is the default.  If you have a
     interface card with (an) additional serial interface(s), you can
     insert the new serial device here.

   * *Select device*

     Instead of typing the name of the serial device you can comfortably
     select it from a file requester. The selected device is inserted to
     the `Serial device' field.

   * *Device unit*

     You may enter the number of the serial device here. Usually this is
     `0'. However, if you have an interface card with more than one
     serial interface, they are distinguishable by their numbers (`0'
     and `1' for example).

   * *Save*

     `Save' saves the actual preferences.  Notice that besides the
     settings discribed above, the window positions are saved as well. 
     The saving of window positions is done relative to the main
     window.  If you move the preferences window exactly under the
     title bar of the main window and close it, move the main window
     and reopen the preferences window, it opens not on the same place
     as before, but just below the title bar of the main window again.

   * *Use*

     All setting are used, but *not* saved.  This means, if you reboot,
     you'll get the settings saved previously.

   * *Cancel*

     If you leave the preferences window by hitting `Cancel', the
     settings you made are not used.


DFA Step by Step
*****************


The Main Window
================

In the main window of `DFA' there are the following possibilities:

   * *The Listview*

     The address list is displayed in the listview, as soon as you have
     entered some addresses (see below for details). You can scroll the
     list and select entries using the mouse or the keyboard. Hit `a'
     to select (*not* mark) the next entry, hit `A' to select the
     previous one. The listview scrolls automatically. To mark the
     selected entry use `SPACE' (or double click with the mouse). If
     you push `RETURN', it will have the same function as if you
     selected `Full', which means that a window opens and the full
     address is shown. *Note Full::.

   * *The text fields*

     Below the listview you see four text gadgets. They show the
     telephone number and up to three email addresses of the current
     entry.

   * *The Gadget Panel, Right to the Listview*

     Right to the listview you see some gadgets, whose functions are
     described now:

        - *Full*

          Shows the current entry in another window; further
          information is shown here, such as street, city, and so on...
          for details see *Note Full::.

        - *Edit*

          If a current entry exists, you can edit it by pushing `Edit'.
          If no address is selected, none can be edited obviously.
          *Note Edit::.

        - *New*

          If you hit `New', you can enter a *new* address. The
          functions within the window that pops up are the same as in
          the `Edit' window. *Note Edit::.

        - *Kill*

          You can delete the current entry (if one exists) by selecting
          `Kill'.  There is a safety requester that makes sure that no
          address is deleted by a mistake.

        - *Search*

          Another window pops up, which allows you to enter some search
          criteria.  *Note Search::.

        - *Search Next*

          `Search Next' can be selected only, if you entered a search
          criteria before (see `Search' above). If you did so, the next
          entry that corresponds to is selected (*not* marked).

        - *Print*

          Another window pops up; in this window you have some
          possibilities to print the managed addresses. *Note Print::.

        - *Sort*

          Select `Sort' to sort the complete address list by name, first
          name and city (in *this* order).

        - *Dial*

          For owners of modems only!

          If you have a modem connected to your computer, it will be
          possible to let the computer dial the phone number(s).  If
          you have entered more than one number, it is *stricly*
          recommended that you seperate them by a `pipe' sign (`|'). 
          When you start dialing (hit `Dial'), a requester pops up that
          displays who is called.  You can cancel the dialing at every
          time (`Cancel') or skip the current number (`Skip').  The
          modem settings can be changed in the `DFA' preferences. 
          *Note Settings::.

     Just below the listview are four gadgets which can be used to
     select the entries in the listview:

        - *All*

          Selects all addresses.

        - *By name*

          A small window is opened.  Here you can enter a search
          pattern (search is *not* case sensitive).  After selecting
          `Ok' (or hit `RETURN') all matching entries will be *marked*.
           The difference to the `Search' function is 1st that you
          cannot select case sensitive search and 2nd that only those
          parts of the address are searched through that can be seen in
          the listview (name, first name and city).  Furthermore all
          matching entries are *marked* (compare:  `Search' *jumps to*
          the first matching entry).

        - *Clear*

          All entries are deselected.

        - *Jump to*

          The next selected entry becomes the current one. If there is
          no next entry, the very first entry is shown.

   * At the bottom of the main window there are the two gadgets `Hide'
     and `Quit'.

     `Hide' closes the window. The application icon stays on the
     Workbench (if you have not deselected the application icon in the
     preferences window). `DFA' can be brought to front quickly by
     double clicking the application icon or by using the "hotkey"
     (default: `Left Amiga F5'. How you can change the hotkey can be
     looked up under *Note Settings::.

     If you hit `Quit', changes are saved and `DFA' is terminated.


Full
=====

`Full' can only be selected, if there is an "active" address.  In this
case another window pops up (title:  `Full address...'), in which the
current address is displayed in more detail.

Below the address fields there is a gadget panel, which makes it
possible to move through the complete address list:

   * *First*

     The first address of the list is shown.  The shortcut is the
     underlined letter or `Cursor Up'.

   * *Last*

     The last address of the list is shown. The shortcut is the
     underlined letter or `Cursor Down'.

   * *Prev. Sel.*

     If a *marked* address exists in front of the current one, it will
     be shown.

   * *Next Sel.*

     If a *marked* address exists behind the current one, it will be
     shown.

   * *Prev.*

     The previous address is shown. The shortcut is the underlined
     letter or `Cursor Left'.

   * *Next*

     The next address is shown. The shortcut is the underlined letter
     or `Cursor Right'.

If you hit `Ok', the window is closed and you return to the main
window; if you hit `Edit', you will get the familiar `Edit' window. 
*Note Edit::.


Edit
=====

If there is a current address, a new window opens that lets you change
all parts of the address. Compared to the original string gadget
functions, there are additional features: *Note Usage of DFA::.

Hit `Ok' to confirm the changes or hit `Cancel' to abort.


New
====

Hit `New' to open a window, which is exactly the same as the `Edit'
window.  The template entries have already been copied to the
corresponding fields, *Note Edit Template (Shortcut T)::. Now you can
enter a *new* address. All functions are the same as in the `Edit'
window. (*Note Edit::.


Search
=======

In this window you can enter the search pattern and more:

   * *Search for*

     Here you enter the search pattern, for which the usual *AMIGA*
     patterns may be used.  You don't need to add a `#?' (or `*') in
     front of and behind the search string, because this is done
     automatically.

     Supported patterns and their meaning:


              ?       Matches a single character.
              #       Matches the following expression 0 or more times.
              (ab|cd) Matches anyone of the items seperated by `|'.
              ~       Negates the following expression.  It matches all
                      strings that do not match the expression
                      (aka `~(foo)' matches all strings that are not
                      exactly `foo').
              [abc]   Character class: matches any of the characters in the
                       class.
              [~bc]   Character class: matches any of the characters not in
                      the class.
              a-z     Character range (only within character classes).
              %       Matches 0 characters always (useful in `(foo|bar|%)').
              *       Synonym for `#?'.

     "Expression" in the above table means either a single character
     (ex: `#?'), or an alternation (ex: `#(ab|cd|ef)'), or a character
     class (ex: `#[a-zA-Z]').

   * *Ignore case*

     If the box is "checked", the search will not be case sensitive. If
     the box is empty however, case will be noticed.

   * *Fields to search*

     You can choose, which fields are to be searched:  `All fields' or
     special parts of it.

   * *Search*

     `Search' starts the search. If a matching entry is found, the list
     will scroll to the entry and the address will become the active
     one (it will *not* be marked).

   * *Cancel*

     `Cancel' cancels the search. The listview is updated, which means
     that the former selected entry scrolls to the first line of the
     list.


Print
======

In this window all functions are collected that print the addresses
managed by `DFA'.

   * *Print*

     You can choose between all (`All'), the marked (`Selected') and
     the active address(`Active').  If there is an active item, it will
     be shown in the `Active Item' field.

   * *Print to*

     You can either print to the printer (`PRT:') or to a file
     (`File'). If you print your addresses to a file the settings below
     don't take effect.

   * *Print style*

     You may choose, whether the addresses are to be printed in `NLQ' or
     `Condensed' style.

     If you select `Formfeed', a formfeed is performed after the *last*
     printed address entry.  To switch this off will be useful, if you
     want to print a few address labels only and you don't want to wast
     these sheets.  Please notice that the AREXX command with the same
     name doesn't take care of *this* setting!

   * *Print form*

     There are five different forms, between which you may choose:

        - Short address list

        - Full address list

        - Phonelist

        - Mailing labels

        - Address cards

   * *Print*

     If you did select `File' for output, a file requester will be
     opened, which allows you to enter the filename.  Be careful!  This
     output file is *not* compatible to the internal address file
     format; so don't overwrite this (these) file(s).  To write the
     addresses to a file may be useful if you want to export addresses,
     but don't wan't to use AREXX.

     If you send your addresses to the printer (`PRT:'), another window
     is opened that displays the progress of printing. You may stop the
     output after every complete address (`Cancel'). If only the active
     item is printed, no progress indicator is shown.

   * *Cancel*

     `Cancel' terminates the complete printing process.


The Menus of DFA
*****************

You already got to know one menu item when you changed the `DFA'
preferences, now you will learn something about the others:


About
======

In the `About' window you'll find something useful about the program
itself and the author:

   * The version number as well as a notice, if you are a registered
     user.

   * The copyright notice and the address of the author (incl.  email
     address(es)).

   * Your name, address and the serial number if you are a registered
     user.

   * The notice that the graphical user interface (GUI) is done using
     the GadToolsBox by Jan van den Baard.


Info (Shortcut I)
==================

The window which pops up as soon as you select the `Info' menu item
gives you some useful informations:

Arexx Port
     In this field you can look up the name of `DFA''s AREXX port.
     Usually this is `DFA'. However, you can change the portname by
     changing the `PORTNAME' tooltype. *Note Settings::.

     If you have already started a program that uses the portname
     `DFA', `DFA' adapts the portname by appending "numbers" (e.g.
     `DFA.1', `DFA.2',...) until a clear portname is found.

Addresses
     The number of addresses which are loaded are shown in this field.

Memory  Condition
     The three fields give a quite detailed report about the current
     memory condition.


Load (Shortcut L)
==================

Use `Load' to load another address file. The currently loaded addresses
are lost! After you selected `Load', a file requester pops up, which
lets you enter the address file. Notice that only files can be loaded,
which have the proper format -- files that have been created by `DFA'
before!  Files with the wrong format can't be loaded by `DFA', the
previously loaded addresses are lost in every case.


Append (Shortcut A)
====================

`Append' allows you to append further addresses to the existing ones.
The already loaded addresses are *not* discarded. Be careful! If you
append two identical address lists, every entry will appear twice,
which is usually not desired.


Save (Shortcut S)
==================

`Save' saves the addresses under the current name. The current name is
either the one you entered in the preferences (default: `adr.file') or
the one you selected before when loading an address file.


Save as...
===========

`Save as' saves the address as well. However, you are able to select a
filename before (a file requester pops up). This may be useful, if you
have several address files for different purposes.


Save as default
================

The addresses will be saved under the name specified in the preferences
(default: `adr.file'), if you select `Save as default', even if you
loaded another file before.


Preferences (Shortcut P)
=========================

The preferences window has already been discussed before. *Note
Settings::.


Edit Template (Shortcut T)
===========================

A window pops up that is known from the `Edit' and `New' window. Here
you can enter socalled templates that will be copied to the
corresponding fields, if you select `New'. These entries will be saved
together with the other *addresses* and *not* together with the
preferences. This makes it possible to have different templates for
every address file.


Quit (Shortcut Q)
==================

`Quit' terminates DFA.  If you did some changes to the address list
before, they will be saved.


The Arexx Port
***************

Since version 1.1 of `DFA' has been finished, there is an AREXX port. 
Because *AMIGA*OS 2.0 includes AREXX, everyone has the chance to
control `DFA' by AREXX scripts now.  This will be very useful, if you
want to export or import some addresses to or from another program for
example.


Basics
=======

`DFA' will accept AREXX commands, if the main window is open or if
`DFA' is "sleeping", which means that only the application icon (or not
even that) can be seen.  If you are just within another window (e.g. 
in the `Edit' window), `DFA' will not receive any AREXX command!  This
may be considered to be useful, because it would be very confusing if
an AREXX script deletes the address that you are just editing for
example.  As soon as you return to the main window AREXX commands can
be received.

The basics of the AREXX language can be looked up in the *AMIGA* OS 2.0
manual or in the "AREXX User's Reference Manual"(1).

The name of the AREXX port of `DFA' is `DFA', as long as you don't
change the portname using the `PORTNAME' tooltype as described in *Note
Settings::.  This should only be done, if you have another program
running that uses the portname `DFA' as well and you don't want to use
`DFA''s feature to choose its own clear portname.

When you find `ADDRESS/M' as a return value, this means that the wanted
address is returned in the given variable (or `RESULTS'). For this
reason `DFA' supports the AREXX keywords `STEM' and `VAR'.

Example:
         /* Outputs the first address of the list */
         ADDRESS "DFA"
         OPTION RESULTS
         FIRST STEM TEST.
         SAY TEST.ADDRESS.1
         EXIT
This (very) short example outputs the name of the the first entry of
the address list.

The `STEM' keyword returns the address in the form of a *list* (or
*array*); this means that the elements of the address are kept in
`TEST.ADDRESS.0' to `TEST.ADDRESS.13'. The number of entries is stored
in `TEST.ADDRESS.COUNT' (see the example above).  The `VAR' keyword
returns the *complete* address as well; however, the whole list is
stored in *one* variable, separated by spaces.  Please consult your
AREXX manual for details.

A further remark on the `Load', `Append', and `Save as' commands:

When you give a filename, you always should give the full pathname,
because this is the only way to make sure that the file can be found by
`DFA'. It wouldn't make much sense to refer to the home directory of
`DFA' or to the `Rexx:' drawer, because 1st `DFA' will often be kept in
another directory than the address files and 2nd `DFA' remembers the
last entered (or the default) pathname and uses it for loading and
saving.

Beyond the item `Syntax' the possible paramters are listed.  The
description of the parameters follows the known style given by
Commodore.  E.g.  `FORM/K' can be one out of `FORM=ALL',
`FORM=SELECTED' or `FORM=ACTIVE'.  You may leave out the `=' sign.  The
exact syntax to every command can be found below, *Note The Arexx
Commands::.

The AREXX interface of `DFA' gives you a powerful instrument to
manipulate the stored addresses. A wider range of functionality however
implements more ways of loosing your data! This could happen not only
by a malfunction of `DFA' but also by a inproper used function or
parameter.  Therefore I encourage you to make regular copies of your
databases to keep the potential damage as small as possible.

---------- Footnotes ----------

(1)  AREXX User's Reference Manual, William S. Hawes, P.O.  Box 308,
Maynard, MA 01754


The Arexx Commands
===================

Below you'll find all the AREXX commands of `DFA' in alphabetical order:


ABOUT
------

Syntax:
     ABOUT

Return value:
     Error code in RC

Function:
     The `About' window pops up.


APPEND
-------

Syntax:
     APPEND FILENAME/A, FORCE/S

Return value:
     Error code in RC

Function:
     Addresses are appended to the existing ones. If the existing
     addresses have been changed before, the new list will *not* be
     appended. If you give the keyword `FORCE', however, the new
     addresses are appended in every case!


CLEARALL
---------

Syntax:
     CLEARALL

Return value:
     Error code in RC

Function:
     All entries of the address list are deselected.


DESELECT
---------

Syntax:
     DESELECT

Return value:
     Error code in RC

Function:
     The current entry (if there is one) is deselected.


DIAL
-----

Syntax:
     DIAL

Return value:
     Error code in RC

Function:
     The current address (if there is one) is dialed.


EDIT
-----

Syntax:
     EDIT  ADDRESS/K,  FIRST/K, NAME/K, STREET/K, ZIP/K, CITY/K,
     COUNTRY/K, BIRTHDAY/K,  PHONE/K,  EMAIL1/K, EMAIL2/K, EMAIL3/K,
     FAX/K, COMMENT/K, SELECT/S
          ADDRESS         Address
          FIRST           First name
          NAME            Name
          STREET          Street/No.
          ZIP             Zip
          CITY            City
          COUNTRY         Country
          BIRTHDAY        Birthday
          PHONE           Telphone number
          EMAIL1          email address # 1
          EMAIL2          email address # 2
          EMAIL3          email address # 3
          FAX             Telefax number
          COMMENT         Comment
          SELECT          `1' if the entry is selected, `0' if it isn't.

Return value:
     Error code in RC

Function:
     The current address (if there is one) is changed in the given
     fields. The former contents of the specified fields are deleted.
     Fields that are not given are not changed and not deleted. Please
     notice that parameters that contain spaces, have to be set in
     inverted commas twice!

     Example:
              EDIT 'COMMENT="A test with spaces"'

     Please remember to use `'' for the outer and `"' for the inner
     quotation marks!


FIRST
------

Syntax:
     FIRST

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The first address of the list gets the current one.  This address
     will be returned in `ADDRESS'.


GETCURRENT
-----------

Syntax:
     GETCURRENT

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The current entry (if there ist one) is returned in `ADDRESS'.


ICONIFY
--------

Syntax:
     ICONIFY

Return value:
     Error code in RC

Function:
     If the main window of `DFA' is open, it will be closed. `DFA' is
     *not* terminated.


KILL
-----

Syntax:
     KILL

Return value:
     Error code in RC

Function:
     The current entry (if there ist one) is discarded. Be careful!
     There is no safety requester. The address will be deleted, even if
     you did some changes before.


LAST
-----

Syntax:
     LAST

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The last address of the list becomes the current one. This address
     is returned in `ADDRESS'.


LOAD
-----

Syntax:
     LOAD FILENAME/A,FORCE/S

Return value:
     Error code in RC

Function:
     The given address file is loaded, if you did no changes before. In
     such a case use `FORCE' to load the file.


NEW
----

Syntax:
     NEW  ADDRESS/K,  FIRST/K,  NAME/K, STREET/K, ZIP/K, CITY/K,
     COUNTRY/K, BIRTHDAY/K,  PHONE/K,  EMAIL1/K, EMAIL2/K, EMAIL3/K,
     FAX/K, COMMENT/K, SELECT/S
          ADDRESS         Address
          FIRST           First name
          NAME            Name
          STREET          Street/No.
          ZIP             Zip
          CITY            City
          COUNTRY         Country
          BIRTHDAY        Birthday
          PHONE           Telphone number
          EMAIL1          Email address # 1
          EMAIL2          Email address # 2
          EMAIL3          Email address # 3
          FAX             Telefax number
          COMMENT         Comment
          SELECT          `1' if the entry is selected, `0' if it isn't.

Return value:
     Error code in RC

Function:
     A new address entry is created, which contains the data given.


NEXT
-----

Syntax:
     NEXT

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The next address is selected and returned in `ADDRESS'.


NEXTSEL
--------

Syntax:
     NEXTSEL

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The next selected address becomes the current one and is returned
     in `ADDRESS'.


POPUP
------

Syntax:
     POPUP

Return value:
     Error code in RC

Function:
     If `DFA' is sleeping (no window is open), the main window will be
     opened; otherwise an error code will be returned (`10').


PREV
-----

Syntax:
     PREV

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The previous address becomes the current one and is returned in
     `ADDRESS'.


PREVSEL
--------

Syntax:
     PREVSEL

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The previous address that is selected becomes the current one and
     is returned in `ADDRESS'.


PRINT
------

Syntax:
     PRINT WHICH/K, FILE/K, NLQ/S, CONDENSED/S, FORMFEED/S, FORM/N
          WHICH         `WHICH' can get the following assignments:
          
                        ALL       All addresses are printed
                        SELECTED  Only the marked addresses are printed
                        ACTIVE    The active item (if there is one) is
                                  printed
          
          FILE          If you give `FILE' together with a filename
                        the addresses are not printed to the printer, but
                        to the file.
          NLQ           The addresses are printed in `N'ear `L'etter `Q'uality.
          CONDENSED     The addresses are printed in condensed mode
          FORMFEED      Afted the last address printed a formfeed is performed.
                        Notice that the setting from the print window is 
                        *not* used here!
          FORM          `Form' can be assigned to the numbers `0' to `4'.
                        These numbers are (nearly) the same as in the `Print' window.
                        The difference is that here the first number is `0'
                        instead of `1':
          
                        0:    Short address list
                        1:    Long address list
                        2:    Phone list
                        3:    Mailing labels
                        4:    Address cards


Return value:
     Error code in RC

Function:
     The desired addresses are printed.


SAVE
-----

Syntax:
     SAVE

Return value:
     Error code in RC

Function:
     The address list is saved using the current name.


SAVEAS
-------

Syntax:
     SAVEAS FILENAME/A, FORCE/S

Return value:
     Error code in RC

Function:
     The address list is saved using the given filename.


SAVEASDEFAULT
--------------

Syntax:
     SAVEASDEFAULT

Return value:
     Error code in RC

Function:
     The address list is saved using the default filename that is set in
     the `DFA' preferences (default: `adr.file').


SEARCH
-------

Syntax:
     SEARCH PATTERN/A, IGNORECASE/S, FIELDS/K
          PATTERN     A search pattern that follows the rules given by
                      Commodore
          IGNORECASE  `IGNORECASE' makes the search caseinsensitive.
          FIELDS      You may assign the `FIELDS' keyword to the
                      following values:
          
                      ALL       All fields are searched through.
                      FIRST     Only the `first name' fields are scanned.
                      NAME      Only the `name fields' are scanned.
                      ZIP       Only the `zip' fields are scanned.
                      CITY      Only the `city' fields are scanned.
                      COUNTRY   Only the `country' fields are scanned.
                      BIRTHDAY  Only the `birthday' fields are scanned.
                      PHONE     Only the `phone' fields are scanned.
                      EMAIL     Only the three `email' fields are scanned.
                      COMMENT   Only the `comment' fields are scanned.


Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     It is searched for the given search pattern.  If a matching item
     is found it will be returned in `ADDRESS'.  If the main window of
     DFA is open, the address list is updated occordingly.


SEARCHNEXT
-----------

Syntax:
     SEARCHNEXT

Return value:
        * Error code in RC

        * ADDRESS/M

Function:
     The next appearance of the search pattern given in `SEARCH' is
     searched for.  If there is a matching item, the entry will be
     returned in `ADDRESS'.  If the main window of DFA is open, the
     address list is updated occordingly.


SELALL
-------

Syntax:
     SELALL

Return value:
     Error code in RC

Function:
     All addresses of the list are selected.


SELBYNAME
----------

Syntax:
     SELBYNAME PATTERN/A

Return value:
     Error code in RC

Function:
     All addresses in the listview which contain the given pattern are
     *marked*.


SELECT
-------

Syntax:
     SELECT QUERY/S

Return value:
        * Error code in RC

        * SELECTED/N

Function:
     The current entry (if there is one) is selected. If you select
     `QUERY', the current address is *not* selected, but the existing
     selection status is returned (`0' or `1').


SORT
-----

Syntax:
     SORT

Return value:
     Error code in RC

Function:
     The address list is sorted by name, first name and city (in `this'
     order).


The Error Codes
================

The error code are the same as given by the AREXX manual:
     0:   No error
     5:   Warning
     10:  Error
     20:  Severe error

If something goes wrong while working on a command, `DFA' returns `10'
(`RC_ERROR') in RC! If there is a syntax error, the AREXX command
parser returns `20'.


Miscellaneous
**************

   * *`DFA' is fontsensitiv*

     `DFA'  adapts  itself  completely to the fonts you selected in the
      font  preferences program of the Workbench!  This means that  the
      window  will  become bigger, if you select a font larger  than  8
      points!  If the window becomes too large to fit into the screen,
     `DFA' uses the default topaz 8 point font.

   * *More than one `DFA' simultaneously?*

     It  is  not possible to run more than one `DFA' application at the
     same time!  If you try, the `DFA', which is already running pops
     up and comes to front.

   * *Window Positions*

     `DFA' remembers the positions of all its windows.  This means that
     the windows reopen on the same place you closed them!  Saving of
     the window positions takes place when saving the preferences.
     Remember that you have to register to be able to do this.  The
     window positions are stored relatively to the `DFA' main window! 
     This means, if you move the main window, the subwindows reopen at
     the same place as before considering the space between the main
     window and the subwindow.

   * *The Application Icon*

     The application icon can only be created, if the corresponding
     `.info' file exists.  This means that even if you start `DFA' only
     from the CLI, you should not delete this file!

   * *The Keyfile*

     On the disk that *registered* users get, there is a so called
     keyfile. You never should change anything within this file, because
     `DFA' will not recognize it if you do so!


Hints and Tips
***************

   * *Export of addresses to other programs*

     Since version 1.1 of `DFA' has been finished, the export of
     addresses to other programms can easily be done by using the AREXX
     interface.  If the other programm doesn't have an AREXX port, you
     can at least use `DFA''s AREXX port to bring the addresses to a
     format understood by the other program.

   * *Import of existing address databases into `DFA'*

     The import of addresses can also be done using the AREXX port of
     `DFA' (command:  `NEW').

   * *The format of a `DFA' address file*

     The address file of `DFA' is organized by the line.  The very
     first line contains the recognition header of `DFA', which makes
     sure that only correct databases are loaded.  The header is
     `DFAddress1.1'.  Behind this header come all the addresses.  One
     address has the format following:

        - Name

        - First name

        - Street/No.

        - Zip

        - Town

        - Country

        - Birthday

        - Phone number

        - Email address # 1

        - Email address # 2

        - Email address # 3

        - Comment

        - [ Status flag ]

        - Address

        - Telefax number

     If the status flag is set (`1') the address is selected, otherwise
     (`0') it isn't.

     The street number is saved in the same line as the street name.

     `Address' und `Telefax' are positioned in the end, because these
     entries didn't exist in version 1.0 and in this way it has been
     easier to give the version 1.1 the possibility to read V1.0 address
     files.


Registration
*************

Registered users may skip the section; all others should read it
*attentively*:

Before you register, you have the opportunity to test `DFA' in great
detail.  However, when using the unregistered version you can't save
the preferences (this feature is disabled).  So you have to use the
defaults.  The tooltypes can be changed of course.

As long as you don't register, the address file is always `adr.file' in
`DFA''s home directory. You always have an application icon on your
Workbench that can't be put to a different place on the screen. The
modem parameters can't be changed. The window positions are remembered
(during a `DFA' session), but not saved.

In spite of all this restrictions it should be possible to see if `DFA'
is what you expect. As soon as you use `DFA' regularly, please do
register!

The shareware fee amounts to German DM 15,- (US $ 10,-)

Additional payment for postage will be needed, if you live not within
the European Community (EG) (see `Registration.txt' for details).

You'll get your personal keyfile that enables the features mentioned
above and a TeX manual (in German *and* English), a AmigaGuide manual
(German *and* English) and an ASCII manual (German *and* English
again). All manual files are on the disk only and *not* printed!

In this case people who have TeX and a printer are able to print the
documentation by themselves!

The current version of `DFA' is included on the disk as well of course!

Add another DM/US$ 5,- if you would like to get a printed manual.
Please mark on the registration form as appropriate.

Please allow about two weeks for delivery. Thanks.

You'll find my address below, *Note Bug Reports::.


Bug Reports
************

The development of `DFA' already took quite a lot of time to do.
Furthermore Kai Iske has done his part to make `DFA' what it is today.
He got lots of my alpha and beta versions to test them.  Well -- it was
not always fun:-) He also pushed me to include commodity support and
the edit hooks, thus to be implemented in the version 1.0 already.

Since version 1.0 has been published, there have been many enhancements
and bug fixes (see history file for details).  All of you who made
suggestions for improvement of `DFA' or reported bugs I would like to
say thank you very much.

Unfortunately all this doesn't mean that `DFA' has no more bugs in it
(sorry).  Surely there are some of them hidden anywhere in the dephths
of the program. So I ask you to report any bugs you discover.  If you
have any ideas what should be improved in the future versions of `DFA',
please feel free to write, (mail or email, doesn't matter) giving me
any suggestions.

My address for bug reports *and registration*:

Home address:
     Dirk Federlein

     Brunnengasse 11a

     8750 Aschaffenburg

     EMail: FIDO 2:249/40.12

Study address:
     Dirk Federlein

     Am Sonnenberg 34

     8700 Wuerzburg

     EMail: FIDO 2:242/14.26

If  you  want  to  transfer  the  registration  fee via bank transfer, 
please use the following bank address.  Remember, however,  that
transfering money between different countries may be quite expensive!

Bank address:
     Bayerische Vereinsbank Aschaffenburg

     GERMANY

     BLZ: 795 200 75

     No.: 160 6 140

Email reaches me always, no matter to which of the above addresses you
write, because netmail is rerouted automatically.  If you prefer to
send "normal" mail to Wuerzburg during the holidays, it may last quite
a long time until you'll get an answer because during the holidays I'm
not in Wuerzburg quite often.  If you don't know to which address you
should write, just send the letter to Aschaffenburg, in which case it
will reach me surely.


Index
******


Function Index
===============

* Menu:

* ABOUT:                                Arexx function ABOUT.
* APPEND:                               Arexx function APPEND.
* Arexx function About:                 Arexx function ABOUT.
* Arexx function Append:                Arexx function APPEND.
* Arexx function Clearall:              Arexx function CLEARALL.
* Arexx function Deselect:              Arexx function Deselect.
* Arexx function Dial:                  Arexx function DIAL.
* Arexx function Edit:                  Arexx function Edit.
* Arexx function First:                 Arexx function FIRST.
* Arexx function Getcurrent:            Arexx function Getcurrent.
* Arexx function Iconify:               Arexx function ICONIFY.
* Arexx function Kill:                  Arexx function KILL.
* Arexx function Last:                  Arexx function LAST.
* Arexx function Load:                  Arexx function LOAD.
* Arexx function New:                   Arexx function New.
* Arexx function Next:                  Arexx function NEXT.
* Arexx function Nextsel:               Arexx function NEXTSEL.
* Arexx function Popup:                 Arexx function POPUP.
* Arexx function Prev:                  Arexx function PREV.
* Arexx function Prevsel:               Arexx function PREVSEL.
* Arexx function Print:                 Arexx function PRINT.
* Arexx function Save:                  Arexx function SAVE.
* Arexx function Saveas:                Arexx function SAVEAS.
* Arexx function Saveasdefault:         Arexx function SAVEASDEFAULT.
* Arexx function Search:                Arexx function SEARCH.
* Arexx function Searchnext:            Arexx function SEARCHNEXT.
* Arexx function Selall:                Arexx function SELALL.
* Arexx function Selbyname:             Arexx function SELBYNAME.
* Arexx function Select:                Arexx function SELECT.
* Arexx function Sort:                  Arexx function SORT.
* CLEARALL:                             Arexx function CLEARALL.
* DESELECT:                             Arexx function Deselect.
* DIAL:                                 Arexx function DIAL.
* EDIT:                                 Arexx function Edit.
* FIRST:                                Arexx function FIRST.
* GETCURRENT:                           Arexx function Getcurrent.
* ICONIFY:                              Arexx function ICONIFY.
* KILL:                                 Arexx function KILL.
* LAST:                                 Arexx function LAST.
* LOAD:                                 Arexx function LOAD.
* NEW:                                  Arexx function New.
* NEXT:                                 Arexx function NEXT.
* NEXTSEL:                              Arexx function NEXTSEL.
* POPUP:                                Arexx function POPUP.
* PREV:                                 Arexx function PREV.
* PREVSEL:                              Arexx function PREVSEL.
* PRINT:                                Arexx function PRINT.
* SAVE:                                 Arexx function SAVE.
* SAVEAS:                               Arexx function SAVEAS.
* SAVEASDEFAULT:                        Arexx function SAVEASDEFAULT.
* SEARCH:                               Arexx function SEARCH.
* SEARCHNEXT:                           Arexx function SEARCHNEXT.
* SELALL:                               Arexx function SELALL.
* SELBYNAME:                            Arexx function SELBYNAME.
* SELECT:                               Arexx function SELECT.
* SORT:                                 Arexx function SORT.


Concept Index
==============

* Menu:

* About:                                About.
* Append (Shortcut A):                  Append (Shortcut A).
* Basics:                               Basics.
* Bug Reports:                          Bug Reports.
* Changing the DFA Preferences:         Changing the DFA Preferences.
* Changing the Tool Types:              Changing the Tool Types.
* Copyright:                            Copyright.
* DFA Step by Step:                     DFA Step by Step.
* Edit:                                 Edit.
* Edit Template (Shortcut T):           Edit Template (Shortcut T).
* Full:                                 Full.
* General:                              General.
* Hints and Tips:                       Hints and Tips.
* History:                              History.
* Info (Shortcut I):                    Info (Shortcut I).
* Installation:                         Installation.
* Load (Shortcut L):                    Load (Shortcut L).
* Miscellaneous:                        Miscellaneous.
* New:                                  New.
* Preferences (Shortcut P):             Preferences (Shortcut P).
* Print:                                Print.
* Quick Start:                          Quick Start.
* Quit (Shortcut Q):                    Quit (Shortcut Q).
* Registration:                         Registration.
* Save (Shortcut S):                    Save (Shortcut S).
* Save as default:                      Save as default.
* Save as...:                           Save as....
* Search:                               Search.
* Settings:                             Settings.
* The Arexx Commands:                   The Arexx Commands.
* The Arexx Port:                       The Arexx Port.
* The Error Codes:                      The Error Codes.
* The Main Window:                      The Main Window.
* The Menus of DFA:                     The Menus of DFA.
* Usage of DFA:                         Usage of DFA.
* Warranty:                             Warranty.
* What the hell is DFA?:                What the hell is DFA?.

