DFA - DFAddress

The Address utility for the AMIGA

Version 2.6

by Dirk Federlein

DFA (C) 1992--1995, Dirk Federlein

DFA is an SASG product

GUI created using Gadtoolsbox (37.300) (C) 1991--93 Jan van den Baard.

AREXX interface created using Arexxbox (V1.12) (C) 1992--93 Michael Balzer.

The MagicWB icons are (C) Copyright 1993--94 Martin Huttenloher

Installer and Installer project icon (C) Copyright 1991-93 Commodore-Amiga, Inc. All Rights Reserved. Reproduced and distributed under license from Commodore.

INSTALLER SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE; NO WARRANTIES ARE MADE. ALL USE IS AT YOUR OWN RISK. NO LIABILITY OR RESPONSIBILITY IS ASSUMED.

Registered trademarks are not marked separately. Therefore absence of a trademark does not imply they are free.


Welcome!

Welcome to the documentation of DFA! Please, do not stop here, but continue reading -- it will be to your advantage!

Only by reading this manual carefully, can learn everything about the many different features of DFA! Some of your questions -- if not all of them -- which you might have at this time, will be answered here.

Please remember that I put a lot of time and effort (`blood, sweat and tears') into this manual -- please show your acknowledgement by reading this documentation (of course, you may feel free to register)!


	 Dirk Federlein

Features

DFA supplies many outstanding features, some of them I'd like to mention here:

Installation

I strongly recommend use of the supplied install program to install DFA. It extracts the needed files from their archives and copies them to the correct places on your harddisk. It sets all needed tooltypes as well.

After the installation procedure has been completed, there exist the following files, or according to your installation, at least some of them, on your harddisk:

Quick Start

After you have installed DFA (see section Installation, for more information), the default settings are used. These settings already allow you to use DFA and take a lot of advantage out of it. Please notice that the huge amount of settings, which can be tuned in the DFA-Preferences program, can only be saved in the registered version (see section The DFA-Preferences Program and section Registration for details)!

If you copied the DFA-Server (filename `DFA') into the `WBStartup' drawer, as it is recommended by the install program, DFA will be started each time the computer starts up; futhermore, an application icon for DFA is supplied on the Workbench screen.

This behaviour of DFA can be changed as described in section Tooltypes and section The DFA-Preferences Program.

As DFA tries to follow the "User Interface Style Guide" as closely 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 any bad (?) surprises, just continue reading...

The concept of DFA

Beginning with DFA version 2.0, it is no longer a single program, but consists of several parts: The DFA-Server (see section The DFA-Server program); the DFA-Editor (see section The DFA-Editor program) and the DFA-Preferences program (see section The DFA-Preferences Program).

Certain functions that are used by more than one of these programs have been exported into a socalled "shared library", the dfa.library.

By doing so, it is possible now that DFA often uses less RAM than in former versions of DFA, even though it contains many enhancements! If DFA would still have been one single program, it would have been a size of about 300 KB and nearly noone would have copied it into the `WBStartup' drawer.

In spite of splitting the program into several parts, I tried to keep the known handling of DFA: one should think he works with one single program. To do so, the DFA-Server calls the DFA-Editor after the user hits the hotkey; the DFA-Preferences program on the other hand can be reached directly out of the DFA-Editor by selecting the corresponding menu item.

This new concept will be useful for people that start DFA on demand only and therefore don't need the AREXX and the Commodity part of DFA; these people may start the DFA-Editor directly (from the Workbench or Shell) and save the memory the DFA-Server would have taken (about 40 KB).

Usage of DFA

You can control DFA completely by mouse or by keyboard.

Some notes on the usage of the keyboard:

The DFA-Server program

The DFA-Server (filename: `DFA') supplies the commodity features (hotkey, access by the Exchange program) and contains the complete AREXX interface; furthermore it manages the application icon.

Please notice:

If you want to use any AREXX functions out of the DFA-Editor, you have to make sure that the DFA-Server is running.

Tooltypes

If you click on the icon of the DFA-Server program once and activate the information program from the Workbench menu, you may change the following tooltypes:

CLI Parameters

If you start DFA from Workbench, the tooltypes described above will be used. When you start DFA from Shell, these tooltypes are used as well, as long as the corresponding .info-File is present. You can give the following parameters to DFA that overwrite the previous settings (within the .info file). The possible arguments are described below:

ADDRESSFILE/K, CX_POPKEY/K, CX_PRIORITY/N, CX_POPUP/K, PORTNAME/K, DFAEDITOR/K

This means you may...

Commodity

By pushing the hotkey (see section Tooltypes), you may invoke the DFA-Editor. You'll get the same effect, if you start the `Exchange' program of the Workbench and select `Show Interface'.

Using the `Exchange' program, you can stop DFA (hit `Remove'), or to make it inactive (hit `Inactive'), or active respectively.

Application--Icon

The application icon supplies two functions:

Arexx

Please notice:

To use the AREXX functions of the DFA-Editor, the DFA-Server has to run simutaneously.

Important -- new features since version 1.2x

The AREXX interface has been rewritten from scratch for DFA 2.0. Some commands have been added...

... some old commands have been changed or improved regarding their syntax:

Most of all, however, I've changed the order of the fields within an address item, which is returned by several commands like `FIRST', `NEXT', `GETCURRENT', etc.

The reason for doing so is that I thought it would be a good idea to have the same order of the fields in the AREXX interface as in the DFA-Editor edit window, as this makes it much easier to remember which meaning the different numbers of an address field have (cf. section Format of the Address Field).

Basics

DFA (i.e. the DFA-Server) usually accepts AREXX commands at any time, even if the DFA-Editor and/or the DFA-Preferences program is running at the same time. It is possible, however, that the execution of an AREXX command will be delayed if someone for example is just editing an address within the Edit window of the DFA-Editor. The reason for this safety protocol can be explained easily: As the addresses are kept in memory only once, all DFA related programs have access to the same address list. By the protocol described above, I want to make sure that no part of the DFA package tries to use addresses that another part of DFA has already deleted (this would sooner or later cause the machine to crash).

The basics of the AREXX programming language can be found in the AREXX manual that comes along with AMIGA--OS 2.0 or better or in the "AREXX User's Reference Manual"(1).

The AREXX port that has to be used to address DFA is `DFA', as long as you did not change this name by the tooltype PORTNAME, as described in section Tooltypes. 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 a clear portname.

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

If you give a filename, you should always use the complete pathname, as otherwise it is very likely that the file can't be found or is written to a place you don't expect. Refering to the home directory of DFA doesn't make much sense, as DFA is often placed in another drawer than the address files and, furthermore, as DFA remembers the recently loaded filename and uses it for loading and saving.

Beyond the item Syntax, the possible parameters are listed. The description of the parameters follows the known style given by Commodore, here is its meaning:

/S -- Switch
This is considered a boolean variable. If this option is present, the corresponding option is enabled, otherwise it keeps disabled.
/K -- Keyword.
This parameter must be given in the format `keyword=<setting>'; e.g. the `PRINT' command can get FORM/K either as FORM=ALL or FORM=SELECTED or FORM=ACTIVE. The equal sign = may be left out.
/N -- Number.
This means the parameter is considered a decimal integer,
/T -- Toggle.
This is similar to the switch (/S) modifier, but one of the keywords yes, on, no or off is expected (not case sensitive). According to the keyword you provide, the option is switched on or off respectively. Please notice that you may not use the equal sign (=) between the parameter and the modifier. The following examples may give you an idea, how this switch can be used:
Examples:

	gui input off output on

	gui input yes output ON

	gui input NO output off

Important: Starting with version 2.2 of DFA the behaviour of this /T switch changed a bit, so please adopt your Arexx scripts accordingly.
/A -- Always.
This modifier means that this option is required. It must appear in the command line.

The exact syntax for every AREXX command can be found below, see section Arexx commands, for details.

Important:

The AREXX interface of DFA gives you a powerful instrument to manage 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 an improper used function or parameter. Therefore, I encourage you to make regular copies of your databases to keep the potential damage as small as possible.

Format of the Address Field

If ADDRESS/M is listed in the return code section, this means that the corresponding command returns the wanted address if it has been executed successfully. The address can be found either in the variable given together with the AREXX keyword STEM or VAR or in the default variable RESULTS.


Example:

	/* Outputs the first address */

	ADDRESS "DFA"
	OPTIONS RESULTS

	/* Please notice the full stop behind 'TEST' ! */

	FIRST STEM TEST.
	SAY TEST.ADDRESS.2
	EXIT

This short example outputs the name of the first entry of the address list.

The STEM keyword returns the address in the form of a list, i.e. the address items appear in `TEST.ADDRESS.0' through `TEST.ADDRESS.25'. In `TEST.ADDRESS.COUNT' you can find the number of entries of the address array. The VAR keyword lets DFA return the desired address as well, but the whole address is stored in one single variable, separated by spaces. Please consult your AREXX manual for further details.

The address fields correspond to the following "numbers":

0
Salutation
1
First
2
Name
3
Co
4
Street
5
Zip
6
City
7
State
8
Country
9
Birthday
10
Phone
11
Fax
12
Email1
13
Email2
14
Email3
15
Comment
16
Group1
17
Group2
18
Group3
19
Group4
20
Group5
21
Group6
22
Group7
23
Group8
24
Selected
25
External

Arexx commands

The ABOUT Command

`Syntax:'
ABOUT
`Function:'
The About window of DFA is opened

The APPEND Command

`Syntax:'
APPEND [FILENAME] <string> [FORCE] [PROMPT]
`Argument template:'
FILENAME, FORCE/S, PROMPT/S
`Function:'
New addresses are appended to the existing address database. If the existing addresses have been changed, the new addresses are not appended, as long as you don't supply the keyword FORCE additionally. It is possible to use the PROMPT parameter, which will supply a file requester to input the desired filename of the address database to append.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The ATTEMPTLOCK Command

`Syntax:'
ATTEMPTLOCK [<retries>] [<delay>]
`Argument template:'
RETRIES/N, DELAY/N
`Function:'
If you are in network mode (see section Networking), you have to get write access to the address file, before you may modify anything. To do so you have to use the `ATTEMPTLOCK' command. If someone else in the LAN keeps the write access to the desired address file, this commands returns an error code in RC and RC2 (see section The FREELOCK Command).
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The CHANGEGROUPS Command

`Syntax:'
CHANGEGROUPS [<group2>] [<group1>] [<group3>] [<group4>] [<group5>] [<group6>] [<group7>] [<group8>] [ALL]
`Argument template:'
GROUP2/T, GROUP1/T, GROUP3/T, GROUP4/T, GROUP5/T, GROUP6/T, GROUP7/T, GROUP8/T, ALL/S
`Function:'
Changes the active group selection. Commands like `PRINT' or `SEARCH' apply only to the currently active groups. To reach all addresses in all groups you have to activate them using this command before. Please notice that I have changed the syntax of this command for version 2.5. Instead of the /S switch I implemented the /T toggle switch, which is more flexible.
`Argument description:'
`Example:'

/* Activate groups 1 through 6                           */
/* The group selection for groups 7 and 8 is not changed */

ADDRESS 'DFA'

CHANGEGROUPS GROUP1 ON GROUP2 ON GROUP3 ON GROUP4 ON GROUP5 ON GROUP6 ON

The CLEARALL Command

`Syntax:'
CLEARALL
`Function:'
All items of the address list are deselected.
`Results:'
The following error codes can be returned in RC2:
`Note:'
Only addresses that correspond to the current group selection are deselected!

The DESELECT Command

`Syntax:'
DESELECT
`Function:'
The current entry (it one exists) is deselected.
`Results:'
The following error codes can be returned in RC2:

The DIAL Command

`Syntax:'
DIAL
`Function:'
The current address (if one exists) is dialed up.
`Results:'
The following error codes can be returned in RC2:

The EDIT Command

`Syntax:'
EDIT [SALUTATION <string>] [FIRST <string>] [NAME <string>] [STREET <string>] [CO <string>] [ZIP <string>] [CITY <string>] [STATE <string>] [COUNTRY <string>] [BIRTHDAY <string>] [PHONE <string>] [FAX <string>] [EMAIL1 <string>] [EMAIL2 <string>] [EMAIL3 <string>] [COMMENT <string>] [GROUP1] [GROUP2] [GROUP3] [GROUP4] [GROUP5] [GROUP6] [GROUP7] [GROUP8] [SELECT] [EXTERNAL <string>]
`Argument template:'
SALUTATION/K, FIRST/K, NAME/K, STREET/K, CO/K, ZIP/K, CITY/K, STATE/K, COUNTRY/K, BIRTHDAY/K, PHONE/K, FAX/K, EMAIL1/K, EMAIL2/K, EMAIL3/K, COMMENT/K, GROUP1/T, GROUP2/T, GROUP3/T, GROUP4/T, GROUP5/T, GROUP6/T, GROUP7/T, GROUP8/T, SELECT/T, EXTERNAL/K
`Function:'
The current address (if one exists) is modified in the given fields. The former contents of these fields is deleted. Fields that are not given as parameters are not changed and keep their former contents. Please notice that parameters that contain spaces have to be set into quotes, for example:
	EDIT 'COMMENT="A test that contains spaces"'
Please remember to use ' for the outer and " for the inner quotes! Since version 2.2 of DFA has been completed, the behavior of the /T modifiers has slightly changed. If you want to switch a /T parameter on, you have to supply a `ON' or `YES' just behind the according parameter. To switch a parameter off, use the keywords `OFF' or `NO', e.g.

	EDIT GROUP1 ON GROUP2 OFF GROUP8 ON SELECT ON

`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The EDITTEMPLATE Command

`Syntax:'
EDITTEMPLATE [SALUTATION <string>] [FIRST <string>] [NAME <string>] [STREET <string>] [CO <string>] [ZIP <string>] [CITY <string>] [STATE <string>] [COUNTRY <string>] [BIRTHDAY <string>] [PHONE <string>] [FAX <string>] [EMAIL1 <string>] [EMAIL2 <string>] [EMAIL3 <string>] [COMMENT <string>] [<group1>] [<group2>] [<group3>] [<group4>] [<group5>] [<group6>] [<group7>] [<group8>] [<select>]
`Argument template:'
SALUTATION/K, FIRST/K, NAME/K, STREET/K, CO/K, ZIP/K, CITY/K, STATE/K, COUNTRY/K, BIRTHDAY/K, PHONE/K, FAX/K, EMAIL1/K, EMAIL2/K, EMAIL3/K, COMMENT/K, GROUP1/T, GROUP2/T, GROUP3/T, GROUP4/T, GROUP5/T, GROUP6/T, GROUP7/T, GROUP8/T, SELECT/T
`Function:'
Changes the template address. This command makes most sense within the AREXX script that may be used in connection with the the New function of the DFA-Editor.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:
`Note:'
Please notice that the template address is not used by the AREXX interface, but only by the DFA-Editor.
`Example:'

/*
 * Example for an AREXX script that may be used in
 * connection with the New function of the DFAEditor.
 *
 * It sets the salutation and name fields with contents
 *
 */

address 'DFA'

edittemplate 'salutation="Mr" name="<still unknown>"'

exit

The FIRST Command

`Syntax:'
FIRST [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The first address of the address list becomes the current one and is returned in the ADDRESS variable.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The FREELOCK Command

`Syntax:'
FREELOCK
`Function:'
If you've got write access using the ATTEMPTLOCK command (cf. section The ATTEMPTLOCK Command), you should free the locked file as soon as possible using the FREELOCK command, to give other members of the LAN the chance to access this address file.
`Results:'
The following error codes can be returned in RC2:
`Note:'
Makes sense in network mode only!

The GETCURRENT Command

`Syntax:'
GETCURRENT [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The current entry (if there exists one) is returned.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The GETPREFS Command

`Syntax:'
GETPREFS [SHOWAPPICON|APPICON] [AUTOSAVE|AS] [MAKEICON] [SECRETMODE|SM] [NETWORKMODE|NWMODE] [NETWORKRETRIES|NWRETRIES] [NETWORKDELAY|NWDELAY] [GROUPNAME1] [GROUPNAME2] [GROUPNAME3] [GROUPNAME4] [GROUPNAME5] [GROUPNAME6] [GROUPNAME7] [GROUPNAME8] [GROUPRELATION|GREL] [MODEMBAUD|MBAUD] [MODEMINIT|MINIT] [MODEMEXIT|MEXIT] [MODEMPREDIAL|MPDIAL] [MODEMSUFFDIAL|MSDIAL] [MODEMSERDEV|MDEV] [MODEMSERDEVNO|MDEVNO] [MODEMUSEODU|MODU] [MODEMRETRIES|MRETRIES] [MODEMDELAY|MDELAY] [PATHSADDRESSFILE|PAFILE] [PATHSEXTERNALDIR|PEXT] [PATHSASCIIED|PASCIIED] [PATHSASCIISHOW|PASCIISHOW] [SORTBY1] [SORTBY2] [SORTBY3] [SORTBY4] [VAR <name>] [STEM <name>]
`Argument template:'
SHOWAPPICON=APPICON/S, AUTOSAVE=AS/S, MAKEICON/S, SECRETMODE=SM/S, NETWORKMODE=NWMODE/S, NETWORKRETRIES=NWRETRIES/S, NETWORKDELAY=NWDELAY/S, GROUPNAME1/S, GROUPNAME2/S, GROUPNAME3/S, GROUPNAME4/S, GROUPNAME5/S, GROUPNAME6/S, GROUPNAME7/S, GROUPNAME8/S, GROUPRELATION=GREL/S, MODEMBAUD=MBAUD/S, MODEMINIT=MINIT/S, MODEMEXIT=MEXIT/S, MODEMPREDIAL=MPDIAL/S, MODEMSUFFDIAL=MSDIAL/S, MODEMSERDEV=MDEV/S, MODEMSERDEVNO=MDEVNO/K/S, MODEMUSEODU=MODU/S, MODEMRETRIES=MRETRIES/K/S, MODEMDELAY=MDELAY/S, PATHSADDRESSFILE=PAFILE/S, PATHSEXTERNALDIR=PEXT/S, PATHSASCIIED=PASCIIED/S, PATHSASCIISHOW=PASCIISHOW/S, SORTBY1/S, SORTBY2/S, SORTBY3/S, SORTBY4/S, VAR/K, STEM/K
`Function:'
Returns the settings of DFA. Only the first argument is used. The return value can be found in RESULT or within the variable you can give together with the VAR or STEM keyword.
`Argument description:'
`Results:'
The return value depends on the argument you supply; see above.
`Note:'
-
`Example:'
-

The GETTEMPLATE Command

`Syntax:'
GETTEMPLATE [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The current template address is returned.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The GUI Command

`Syntax:'
GUI [<input>] [<output>]
`Argument template:'
INPUT/T, OUTPUT/T
`Function:'
Using this command you may lock or free the DFAEditor's output and input respectively. After you've locked the input of the DFAEditor using `GUI INPUT OFF', it is no longer possible to do any input to the DFAEditor, i.e. you cannot select any gadgets or menus. If you've used `GUI OUTPUT OFF' to lock the output of the DFAEditor, the address and teh panel listview of the DFAEditor main window are no longer updated, when you more through the address list using `NEXT' or `PREV' for example. Not before you've used the command `GUI OUTPUT ON', the displayed is "activated" again.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:
`Note:'
Please make sure that you enable input and/or output, before your Arexx script ends, if you've formerly disabled them.

The ICONIFY Command

`Syntax:'
ICONIFY
`Argument template:'
`Function:'
The DFA-Editor is stopped, if it is currently running. The DFA-Server, however, keeps running, so you still can reach the DFA-Editor by pushing the hotkey.
`Results:'
The following error codes can be returned in RC2:

The KILL Command

`Syntax:'
KILL [CURRENT] [SELECTED]
`Argument template:'
CURRENT/S, SELECTED/S
`Function:'
The current entry (CURRENT) or all selected (SELECTED) addresses are deleted! If you use the KILL command without a parameter, it has the same meaning as if you had given the CURRENT parameter, i.e. the current address (as long as there is one) is deleted.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:
`Note:'
No safety requester will pop up! The addresses are deleted even if they have been modified before!

The LAST Command

`Syntax:'
LAST [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The last address becomes the current one and is returned in ADDRESS.
`Argument description:'
`Results:'
`Results:'
The following error codes can be returned in RC2:

The LOAD Command

`Syntax:'
LOAD [FILENAME] <string> [FORCE] [PROMPT]
`Argument template:'
FILENAME, FORCE/S, PROMPT/S
`Function:'
The given address file is loaded, if the previously loaded one had not been changed. You may force the loading of the new addresses by giving the FORCE parameter. Please notice that using the FORCE option throws away any changes you applied to the former loaded addresses. Instead of giving a filename, it is possible to use the PROMPT parameter, which will supply a file requester to input the desired filename.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The LOADPREFS Command

`Syntax:'
LOADPREFS [<filename>] [RESET] [PROMPT]
`Argument template:'
FILENAME, RESET/S, PROMPT/S
`Function:'
Loads a preferences file.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:
`Note:'

The NEW Command

`Syntax:'
NEW [SALUTATION <string>] [FIRST <string>] [NAME <string>] [STREET <string>] [CO <string>] [ZIP <string>] [CITY <string>] [STATE <string>] [COUNTRY <string>] [BIRTHDAY <string>] [PHONE <string>] [FAX <string>] [EMAIL1 <string>] [EMAIL2 <string>] [EMAIL3 <string>] [COMMENT <string>] [GROUP1] [GROUP2] [GROUP3] [GROUP4] [GROUP5] [GROUP6] [GROUP7] [GROUP8] [SELECT] [EXTERNAL <string>]
`Argument template:'
SALUTATION/K, FIRST/K, NAME/K, STREET/K, CO/K, ZIP/K, CITY/K, STATE/K, COUNTRY/K, BIRTHDAY/K, PHONE/K, FAX/K, EMAIL1/K, EMAIL2/K, EMAIL3/K, COMMENT/K, GROUP1/S, GROUP2/S, GROUP3/S, GROUP4/S, GROUP5/S, GROUP6/S, GROUP7/S, GROUP8/S, SELECT/S, EXTERNAL/K
`Function:'
A new address is created using the provided data. Please notice that any templates you may have entered, will not be used by the Arexx interface.
`Argument description:'

The NEWFILE Command

`Syntax:'
NEWFILE [<filename>] [FORCE] [PROMPT]
`Argument template:'
FILENAME, FORCE/S, PROMPT/S
`Function:'
This command makes it possible to create a new address file. The command fails if the previously loaded address file has been modifed. This behaviour can be changed by giving the FORCE option additionally. Using the parameter PROMPT enables a file requester to input the new filename.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The NEXT Command

`Syntax:'
NEXT [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The next address becomes the current one and is returned.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The NEXTSEL Command

`Syntax:'
NEXTSEL [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The next selected address becomes the current one and is returned.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The OPENEDITWINDOW Command

`Syntax:'
OPENEDITWINDOW
`Argument template:'

`Function:'
The Edit window is opened and the current address is displayed, if there is one. The execution of the Arexx script is halted until the Edit window is closed.
`Argument description:'
-
`Results:'
The following error codes can be returned in RC2:
`Warning:'
The Edit window is opened only if there is a current address, otherwise an error code is returned (see above).

The POPUP Command

`Syntax:'
POPUP
`Function:'
If the DFA-Editor hasn't run up to now, it is started. Then it opens its main window. If the DFA-Editor is already running, it comes to front.

The PREV Command

`Syntax:'
PREV [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The previous address becomes the current one and is returned.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The PREVSEL Command

`Syntax:'
PREVSEL [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
The previously selected address becomes the current one and is returned.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The PRINT Command

`Syntax:'
PRINT [WHICH <string>] [FILE <string>] [NLQ] [CONDENSED] [FORMFEED] [<form>]
`Argument template:'
WHICH/K, FILE/K, NLQ/S, CONDENSED/S, FORMFEED/S, FORM/N
`Function:'
Prints the desired addresses.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The SAVE Command

`Syntax:'
SAVE
`Function:'
The addresses are saved under their current name.
`Results:'
The following error codes can be returned in RC2:

The SAVEAS Command

`Syntax:'
SAVEAS [FILENAME] <string> [FORCE] [PROMPT]
`Argument template:'
FILENAME, FORCE/S, PROMPT/S
`Function:'
The addresses are saved under the given name.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The SAVEASDEFAULT Command

`Syntax:'
SAVEASDEFAULT
`Function:'
The addresses are saved under the default name that you entered in the DFA-Preferences (default name: `s:adr.file').
`Results:'
The following error codes can be returned in RC2:
`Note:'
Please use this command very carefully! If you've just loaded another than the default address file, the default address file is overwritten by this command!

The SAVEPREFS Command

`Syntax:'
SAVEPREFS [<filename>] [PROMPT]
`Argument template:'
FILENAME, PROMPT/S
`Function:'
Saves the preferences file.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:
`Note:'
This command works only in the registered version of DFA.

The SEARCH Command

`Syntax:'
SEARCH [PATTERN] <string> [IGNORECASE] [NOWILDCARDS] [ALL] [SALUTATION] [FIRST] [NAME] [STREET] [CO] [ZIP] [CITY] [STATE] [COUNTRY] [BIRTHDAY] [PHONE] [FAX] [EMAIL1] [EMAIL2] [EMAIL3] [COMMENT] [VAR <name>] [STEM <name>]
`Argument template:'
PATTERN/A, IGNORECASE/S, NOWILDCARDS/S, ALL/S, SALUTATION/S, FIRST/S, NAME/S, STREET/S, CO/S, ZIP/S, CITY/S, STATE/S, COUNTRY/S, BIRTHDAY/S, PHONE/S, FAX/S, EMAIL1/S, EMAIL2/S, EMAIL3/S, COMMENT/S, VAR/K, STEM/K
`Function:'
The given pattern is searched for. If an address fits into the pattern, it is returned. If the DFA-Editor is currently open, the address list scrolls to the corresponding place.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:
`Example:'

/*
 * Look for all names beginning with M.
 * Make no difference between upper and lower case.
 */

ADDRESS 'DFA'

SEARCH 'M#?' IGNORECASE NAME

The SEARCHNEXT Command

`Syntax:'
SEARCHNEXT [VAR <name>] [STEM <name>]
`Argument template:'
VAR/K, STEM/K
`Function:'
Continue searching for the pattern given before in SEARCH. If the search succeeded, the found address is returned. If the DFA-Editor is currently running, the address listview is updated.
`Argument description:'
`Results:'
`Note:'
The following error codes can be returned in RC2:

The SELALL Command

`Syntax:'
SELALL
`Function:'
All addresses are selected.
`Results:'
The following error codes can be returned in RC2:
`Note:'
Only addresses that match the current group selection are selected.

The SELBYNAME Command

`Syntax:'
SELBYNAME [PATTERN] <string>
`Argument template:'
PATTERN/A
`Function:'
All addresses that match the given pattern are selected. Upper and lower case does not make a difference.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:
`Note:'
All fields of all addresses (that match the current group selection) are searched.

The SELECT Command

`Syntax:'
SELECT [QUERY] [VAR <name>] [STEM <name>]
`Argument template:'
QUERY/S, VAR/K, STEM/K
`Function:'
The current entry (if there is one) is selected. If you supply the QUERY parameter, the current address is not selected, but its selection state (0 or 1) is returned.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

The SETPREFS Command

`Syntax:'
SETPREFS [<showappicon|appicon>] [AUTOSAVE|AS <string>] [<makeicon>] [<secretmode|sm>] [<networkmode|nwmode>] [NETWORKRETRIES|NWRETRIES <figure>] [NETWORKDELAY|NWDELAY <figure>] [GROUPNAME1 <string>] [GROUPNAME2 <string>] [GROUPNAME3 <string>] [GROUPNAME4 <string>] [GROUPNAME5 <string>] [GROUPNAME6 <string>] [GROUPNAME7 <string>] [GROUPNAME8 <string>] [GROUPRELATION|GREL <string>] [MODEMBAUD|MBAUD <string>] [MODEMINIT|MINIT <string>] [MODEMEXIT|MEXIT <string>] [MODEMPREDIAL|MPDIAL <string>] [MODEMSUFFDIAL|MSDIAL <string>] [MODEMSERDEV|MDEV <string>] [MODEMSERDEVNO|MDEVNO <figure>] [<modemuseodu|modu>] [MODEMRETRIES|MRETRIES <figure>] [MODEMDELAY|MDELAY <figure>] [PATHSADDRESSFILE|PAFILE <string>] [PATHSEXTERNALDIR|PEXT <string>] [PATHSASCIIED|PASCIIED <string>] [PATHSASCIISHOW|PASCIISHOW <string>] [SORTBY1 <string>] [SORTBY2 <string>] [SORTBY3 <string>] [SORTBY4 <string>]
`Argument template:'
SHOWAPPICON=APPICON/T, AUTOSAVE=AS/K, MAKEICON/T, SECRETMODE=SM/T, NETWORKMODE=NWMODE/T, NETWORKRETRIES=NWRETRIES/K/N, NETWORKDELAY=NWDELAY/K/N, GROUPNAME1/K, GROUPNAME2/K, GROUPNAME3/K, GROUPNAME4/K, GROUPNAME5/K, GROUPNAME6/K, GROUPNAME7/K, GROUPNAME8/K, GROUPRELATION=GREL/K, MODEMBAUD=MBAUD/K, MODEMINIT=MINIT/K, MODEMEXIT=MEXIT/K, MODEMPREDIAL=MPDIAL/K, MODEMSUFFDIAL=MSDIAL/K, MODEMSERDEV=MDEV/K, MODEMSERDEVNO=MDEVNO/K/N, MODEMUSEODU=MODU/T, MODEMRETRIES=MRETRIES/K/N, MODEMDELAY=MDELAY/K/N, PATHSADDRESSFILE=PAFILE/K, PATHSEXTERNALDIR=PEXT/K, PATHSASCIIED=PASCIIED/K, PATHSASCIISHOW=PASCIISHOW/K, SORTBY1/K, SORTBY2/K, SORTBY3/K, SORTBY4/K
`Function:'
Lets you set the most important settings.
`Argument description:'
`Results:'
-

The SORT Command

`Syntax:'
SORT [SORT1 <string>] [SORT2 <string>] [SORT3 <string>] [SORT4 <string>]
`Argument template:'
SORT1/K, SORT2/K, SORT3/K, SORT4/K
`Function:'
The addresses are sorted according to the sort criteria given in the DFA-Preferences. Alternatively you may explicitly give the search criteria by which you would like your addresses be sorted.
`Argument description:'
`Results:'
The following error codes can be returned in RC2:

Error Codes

Below the usual error code that can be found in the RC variable (2) the AREXX interface of DFA returns a second return value in the variable RC2, which describes in further detail what has gone wrong.

Bolow you'll find the error numbers and their meaning:


	Symbolic Name                Meaning

10  RXERR_NONETWORKAPPEND....Could not append file,
							 as the network mode is activated
11  RXERR_MODIFIED...........The address file has been changed
12  RXERR_NOFILENAME.........No filename has been supplied
13  RXERR_NOCURRENT..........No current address available
14  RXERR_NOFIRST............No first address available
15  RXERR_NOICONIFY..........Iconifying the Editor went wrong
16  RXERR_NONETWORKKILL......Deleting addresses is not allowed
							 while in network mode
17  RXERR_NOLAST.............There is no last address
18  RXERR_NOLOAD.............The address file could not be loaded
19  RXERR_NONETWORKNEW.......It is not possible to enter new
							 addresses in network mode
20  RXERR_NONEXT.............There is no next address
21  RXERR_NONEXTSEL..........There is no next selected address
22  RXERR_NOPREV.............There is no previous address
23  RXERR_NOPREVSEL..........There is no previous selected address
24  RXERR_SYNTAX.............The AREXX command contained an syntax error
25  RXERR_WRITEALL...........The "printing" of addresses (all)
							 into a file went wrong
26  RXERR_WRITESEL...........The "printing" of addresses (selected)
							 into a file went wrong
27  RXERR_WRITECURRENT.......The "printing" of the current address
							 into a file went wrong
28  RXERR_NOSAVE.............The address file could not be saved
29  RXERR_NONETWORKSAVE......Saving your address database is not
							 allowed in network mode
30  RXERR_NOTFOUND...........The wanted address could not be found
31  RXERR_NONETWORKCLEAR.....Unselecting addresses is not allowed
							 while being in network mode
32  RXERR_NONETWORKSELECT....Selecting addresses is not allowed
							 in network mode
33  RXERR_NONETWORKSORT......Sorting addresses is not allowed
							 while being in network mode
34  RXERR_NONETWORKEDIT......Editing addresses is not allowed
							 while being in network mode
35  RXERR_OPNPRT.............Could not open printer device
36  RXERR_CRTEXTIO...........Could not reach the printer
							 (ExtIO could not be initialized)
37  RXERR_CRTPORT............Could not reach the printer
							 (Could not open message port)
38  RXERR_NOMEM..............No more RAM available
39  RXERR_NORELOAD...........Reloading the address file went wrong
40  RXERR_NOWRITELOCK........could not get write access to the
							 address file
41  RXERR_NODIR..............Could not locate the needed drawer
42  RXERR_NOFILE.............Could not find the address file
43  RXERR_APPENDFAILED.......Appending an address file went wrong
44  RXERR_ENVCHANGED.........Execution of the current AREXX command
							 has been canceled, as the environment changed
							 (e.g. new address file)
45  RXERR_NOEXTERNAL.........Trying to access the external file had no success
46  RXERR_NOSERIALDEV........Could not open serial device
47  RXERR_NOPHONENUM.........Current address doesn't have a phone number
48  RXERR_SERNOCARRIER.......Phone: No Carrier
49  RXERR_SERNODIALTONE......Phone: No dialtone
50  RXERR_SERRING............Phone: Ring
51  RXERR_SERBUSY............Phone: Line is busy
52  RXERR_SEROK..............Phone: Modem sent 'Ok'
53  RXERR_SERERROR...........Phone: Modem recognized an error
54  RXERR_SERCONNECT.........Phone: Data connect
55  RXERR_SERVOICE...........Phone: Voice connect
56  RXERR_SERUNKNOWN.........Error caused by the serial device
57  RXERR_OPNPRFS............The preferences file could not be
							 opened

The DFA-Editor program

The DFA-Editor is the graphical user interface of DFA.

It can be started seperately or may be invoked (by the hotkey for example) out of the DFA-Server.

Tooltypes

If you click once on the DFA-Editor icon and then activate the Information program of the Workbench, you may adjust the following tooltypes:

CLI Parameter

If you start the DFA-Editor from the shell (or the CLI), it uses the tooltypes of the corresponding `.info' file! However, you may overwrite these settings by giving one or more of the following CLI parameters:


PUBSCREEN/K,UPPERPUBSCREEN/K,GUIDEFILE/K,DFAPREFS/K

This means, you may use...

The Main Window

The main window of the DFA-Editor can be resized using the sizing gadget on the lower right corner of the window. The window contents automatically adapts to the new window dimensions.

As the main window is a socalled application window, you may drag the icon of an address file on this window and drop it to let the DFA-Editor load the corresponding address file.

The main window of the DFA-Editor gives you the following possibilities:

At the lower end of the main window of the DFA-Editor you can find the gadgets Quit and Remove.

If you hit Quit, the DFA-Editor is terminated! The DFA-Server, if it is currently running, is not ended however, so you can still reach the DFA-Editor by a doubleclick on the application icon and/or the hotkey (default: Left Amiga F5)

If you select Remove, not only the DFA-Editor is ended, but also any currently running DFA-Server.

If you terminate the DFA-Editor using Quit or Remove, the addresses are saved if they had been modified before. This behaviour can be customized in the DFA-Preferences however.

Tool Gadgets

It is possible reach the so called tool gadgets from the DFA-Editor. Using these gadgets, you can easily reach the following functions :

Please notice that there is a corresponding menu item for every tool gadget. All functions can, therefore, be reached by keyboard shortcuts as well!

The Menu Items

About

The About window gives you some useful information about the program and the author:

Info

The window which pops up as soon as you select the Info menu item, gives you some useful information:

New file

If you want to create a new, i.e. empty address file, you use this menu item. A new address file named unnamed.dfa is created. You may use the Save as... menu item to save this address file under another name.

Be careful:

Please, never use Save as default after you created a new file to save it, as the new address file (the empty one!) would overwrite your old "default" address file, which means that the old addresses would have been lost!

Open

Use Open to load another address file. The currently loaded addresses are not kept in memory but replaced by the loaded! After you selected Load, a file requester pops up, which lets you enter the address file. Notice that only files with the proper format can be loaded --- files that have been created by DFA before! Files with the wrong format can't be loaded by DFA and the addresses in RAM are kept unchanged!

Append

Append allows you to append further addresses to the existing ones. The addresses in RAM are not deleted before. Be careful! If you append two identical address lists, every entry will appear twice, which is usually not desired.

It is possible to set the group selection for the addresses that are to be appended in the little window that appears after you selected Append. These group selection flags are set to all addresses that shall be loaded!

Please notice that existing group flags of addresses in the file to append are not erased! This means that you may only add new group flags to the addresses but not unset existing ones!

Ok accepts the set group selection and appends the selected address file; Cancel not only cancels the group selection, but the complete appending procedure, i.e. no addresses are appended!

Save

Save saves the addresses with the current name. The current name is either the one you entered in the preferences (default: `DFA:Addressfiles/Default.dfa') 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, or you've created a new address file just before (cf. section New file) and want to enter a new name for your address file.

Save as default

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


Be careful:

If you have loaded an address file with other than the default name before (or you've created a new address file), you should not use Save as default, as the current address file would overwrite the default address file.

Quit

Quit ends the DFA-Editor! The DFA-Server, if it is currently running, is not ended, so the DFA-Editor still can be reached by a double click on the application icon or by the hotkey (Default: Left Amiga F5).

Remove

Select Remove to end not only the DFA-Editor but a currently running DFA-Server as well.

If you end the DFA-Editor using Quit or Remove DFA, the addresses are saved if they have been modified. This behaviour can be customized in the DFA-Preferences program however.

Full

Shows the current entry in a separate window. All fields of the address are displayed here; See section Full.

Edit

Using Edit gives you the chance to change the current address item, if there is one. If there is no current entry, the corresponding button is "ghosted" and can't be selected (see section Edit).

New

Select New to enter a new address. The functions inside of this window are exactly the same as within the Edit window; see section New for details.

Kill

Use Kill to delete either the current entry (if there is one) or all marked addresses. To make sure that nobody deletes precious addresses, a savety requester pops up.

Copy to Clipboard

This function makes it possible to copy the current address to the clipboard (unit 0).

Every other program that supplies clipboard support, can access these data.

Set and Unset Groups

After you have selected this menu item, another window pops up that allows you to change the group flags of one, several or all addresses fast and comfortably.

Any of the 8 cycle gadgets takes effect to the corresponding group flag. You may either keep, set or clear each flag.

Please notice that these actions take effect only to the active addresses, i.e. the addresses that can be seen within the main address listview.

Hit Active to change the current address (if there exists one), Marked to change all marked addresses and All to (un)set the group flags of all (visible) addresses.

Search

Another window pops up that allows you to enter several search criteria (cf. section Search):

Search Next

Search Next can be selected only, if there has been given a search pattern previously using the Search function. If this is the case, the next matching entry is displayed (not marked!).

Print

After you have selected Print, another window pops up, which gives you several ways to print your addresses, as it is described in section Print.

Sort

Sort sorts the complete address list. As long as you use the default setting, the list is sorted by name, first name and city (in this order). If you prefer another sort order, you may change it in the DFA-Preferences.

Dial

Another window pops up, which allows you to dial phone numbers (cf. section Dial).

Select Groups

This menu item has the two submenus All and None; accordingly all group flags are either selected or deselected.

Preferences

The DFA-Preferences program is loaded. Please notice that the tooltype DFAPREFS of the DFA-Editor has to be set correctly to enable the DFA-Editor to find the DFA-Preferences program! This has usually already been done by the install program.

Edit Template

The window that pops up will be quite familiar to you, as it is exactly the same as in section Edit or section New. You may enter several presets here, which are automatically copied into the corresponding fields, just before you enter a new address. The template strings are saved in the address file, so it is possible to have different templates for every address file.

Use Template Script

This toggle menu switches the usage of the template script on or off. As soon as the Template script is not used, the usual template address will be used (see section Edit Template.

Use PostProcess Script

This toggle menu item switches the usage of the postprocess on or off. As soon as the postprocess script is used, the AREXX script that may be selected from within the DFA-Preferences, will be executed after the input of a new address.

Dieses Umschalt-Menü schaltet die Nutzung des Nachbearbeitungs-Arexx-Skripts ein oder aus. Sobald das Nachbearbeitungs-Skript benutzt wird, wird nach der Eingabe einer neuen Adresse das in den DFA-Preferences eingestellte AREXX-Skript ausgeführt.

Write Access

This menu item can only be selected if you have activated the network mode before.

Starting with version 2.0, DFA supplies a simple network mode. This network mode has been developed to make it possible for several connected computers to use the same address file. The problem that comes up, when an address file is used by more than one user at the same time is the following:

If several users change the address file at the same time, the last saved address file overwrites the previously saved ones. The previously saved changes are lost!

DFA tries to solve this problem in the following way:

If the network mode is active, all operations that change the address database are forbidden, i.e. saving, changing, marking of addresses is not possible. It is allowed however, to view the addresses (`Full'), to scroll within the address list, to print the addresses and so on.

If you want to do some changes on the addresses, you have to obtain write access to the address file. This can be done using the AREXX command `ATTEMPTLOCK' or by selecting the menu item `Write Access' in the DFA-Editor.

If your try to get write access was successful, you may change the addresses. If you've completed your changes, you should free the write access using either the AREXX command `FREELOCK' or the menu item `Write Access' in the DFA-Editor. After you have done so, other members of the LAN can get write access to this address file.

Instead of getting permanent write access, the DFA-Editor supplies the socalled "auto lock mode". This mode is activated automatically, as soon as you've switched on the network mode. If you want to change anything, the DFA-Editor tries to get write access to the address file automatically and releases the write access as soon as the change is done.

Load Preferences

Select this menu item, if you want to load another preferences file. Using this feature of DFA makes it possible to use different settings for different purposes, i.e. for different address files.

Save Preferences

As the window coordinates and several other settings of the DFA-Editor are saved together with the preferences that can be tuned in the DFA-Preferences program, there is the opportunity to save the preferences not only from within the DFA-Preferences program, but from the DFA-Editor as well using this menu item.

Save Preferences as

If you want to save the settings with another name than the default (this makes sense, if you use different preferences files), select this menu item. A file requester pops up and you may select the wanted file name.

Arexx Commands

All AREXX scripts can be reached not only by the functions keys, but by these menu items as well.

Sorting of the Address Display

Using one of these menu items, it is possible to sort the address display of the DFA-Editor. Depending on which menu item you select (`Salutation', `Name', etc.), the addresses are sorted in the desired way.

This sorting has only effect to the displayed addresses and is not permanet, i.e. the sorting refers to the display of the addresses only, and not to the internal managment of the addresses! Because of this, the original order of the addresses is restored, as soon as you change the group selection, for example; the addresses are saved in the original order as well.

Someone may ask now by himself, what sense a sort function make that has an effect only for quite a short time. But wouldn't it be nice to sort the addresses by their ZIP on demand, just to look which people live near to each other. Or sort the display by the city and you have all addresses of a specified town listed one beyond the other.

On the long run, such a sorting doesn't make much sense. Therefore, to sort the addresses permanently, the usual sort function in connection to the DA-Preferences programm has to be used.

Please notice:

If you've just sorted your display, the Quick Search function (RSHIFT <letter>) cannot work correctly! In this case, restore the original sort order; either by changing the group selection or by selecting the "normal" sort function.

Full

Full can only be selected if there is a current address! If this is the case, another window pops up (title: Full address...), which displays all fields of the current address.

If there is an external file for the current address, you may select the View external button to start the ASCII viewer together with the corresponding external file. 7

Please notice that the ASCII viewer of your choice may be entered in the DFA-Preferences program (cf. section Edit).

The listview that displays the different fields of the current address may be scrolled as follows:

 Cursor down       The listview scrolls up.

Cursor up The listview scrolls down.

Below this listview there is a gadget panel that may be used to step through the addresses:

Ok closes the window, Edit opens the Edit window. The Edit window is described in further detail in section Edit.

Edit

If a current address exists (cf. section Full), a window pops up, where you may change any part of the address. The string gadgets have some additional features compared to the "original" ones:

As soon as no string gadget is activated, you may move through the address list using the cursor keys:


   Cursor right     Show next address
   Cursor left      Show previous address

SHIFT+Cursor right  Show next selected address
SHIFT+Cursor left   Show previous selected address

CRTL+Cursor right   Show last address
CRTL+Cursor left    Show first address

The Edit fields are:

Address         Address
First           First name
Name            Name
c/o             may be used for additional information
Street          Street/No.
Zip             Zip
City            City
State           State
Country         Country
Birthday        Birthday
Phone           Telphone number. Seperate multiple phone numbers
                by a pipe sign (|).
Fax             Telefax number
Email1          email address # 1
Email2          email address # 2
Email3          email address # 3
Comment         Comment

Please notice that it is possible to enter more than one phone number into the Phone field. These numbers can be dialed correctly as well, as long as you separate them by a pipe sign (|).

Using the Address selected checkbox you may set (or unset) the selection state of the current address.

If you hit External you activate the ASCII--Editor (default: `ed'). This makes sense if you want to enter a long text (for example: How to find the way to Joe User, living in New York City). When you have finished your input, save the file with the given name and quit the editor. The DFA-Editor remembers the file name, so it is then possible to access this external file e.g. from the Full window (cf. section Full) or from the Edit window to modify it.

As soon as there is an external file for the current address item, the Del. button can be used to delete an external file as soon as you no longer need it.

All external files get their unique file name from DFA. This file name is guaranteed to be unique within the given directory (default: `s:DFAExternals'). DFA only saves the filename -- not the file itself, so this is completely up to you. Please do not change the filename given by DFA, as if you do so, DFA will no longer be able to find this file! If you want to delete one (or more) external files, you have to use the Del. function of this window. This is the only way to make sure that not only the file itself is deleted, but the filename, which is stored by DFA as well!

You may set your favourite ASCII editor, as well as the wanted directory for the external files, in the DFA-Preferences program.

Hit Ok to use the changes; if you select Cancel instead, all changes are discarded.

New