Category : BBS Programs+Doors
Archive   : UFM1V01.ZIP
Filename : UFM.DOC

Output of file : UFM.DOC contained in archive : UFM1V01.ZIP

User File Maintenance
A PCBoard(tm) Utility
Version 1.01
(c) 1989 by John B. Hines

Dec 89 UFM Page 2

UFM Summary

UFM is User File Maintenance, a utility to allow the PCBoard sysop to
quickly and easily maintain the user file. It also supports many
functions that PCBoard doesn't, but does not replace all the PCBoard
functions. It is designed for interactive use, not running during the
event, and provides quick and easy registration and control of your
user updates.

UFM Features
o Maintains full address of user. Two address lines and zip code are
stored, combined with the name and city/state from PCBoard gives full
mailing address. Can (optionally) use the PCBoard comment field as

o Maintains unlimited comments for each user. Comments can be 55
characters long, and are displayed in reverse chronological order.
Registrations, Contributions, Subscriptions, and Lockout or Deletes can
optionally generate a comment

o Supports subscriptions and contributions from users, and can set
security levels and length of subscription period if the subscription
exceeds a specified amount. Up to 4 types of subscriptions are allowed,
each with its own security level, length and conference registrations.
Contributions has its own levels and length and conference

o Maintains phone number database, allowing display of the locale of the
phone number, or who the number belongs to. Has auto-dial of users
phone numbers, or manually entered numbers.

o Uses script answer files for user registration. Information can be read
from scripts, and edited as needed. Visiting sysops can be registered
to different security level, and given access to a special conference.

o Optionally records message leaving and gives credit for messages left to
figure into the upload/download ratios. Sysop definable byte credit for
each message left. Processing of upload directory allows removal of
upload credits for "junk" uploads.

o Supports a request script for access to special conferences. Stores the
birthdate of the user, for age sensitive operations.

o Stores the real name of the user, for those systems that allow alias
names. Can optionally use the real name on reports instead of the

o Records contributions from users, and can set security levels and length
of subscription period if the contribution exceeds a specified amount.
Conference registrations can also be changed.

o Records a comment on lock-out or deletion of a user. Comments are stored
outside of PCBoard, if the user comes back later, previous comments
will still be there.

o Reporting program provides reports of contributions, phone number lists,
user summary, and mailing labels.

Dec 89 UFM Page 3

o Fully customizable, many options can be disabled by sysop. Colors are
configurable, monochrome supported also. Network sharing on PCBoard
files, reads file locations from PCBoard files.

o Menu driven, quick one character entries, mouse support. EGA/VGA
supported for 43/50 line modes. Desqview aware, automatic
configuration. Uses database technology, and indexed file access. Has
drop to DOS feature, or execute a single DOS command.

o Full functionality. This is freeware!

Dec 89 UFM Page 4

UFM - User File Maintenance

Change Log - In Reverse Order

Version Date Changes

1.01 27-Dec-89 A "Beta" version, to fix some problems with
lost passwords. Not fully finished and
cleaned up, but the password problem is
fixed. Added city to registration script
edit, so you can fix it then. Added message
credit to ratio display, requires UFMR to
record message activity. Added upload inquiry
on download file, and unupload function to
remove upload credits. Added UFMR to record
message and bulletin activity, ratios will
come later.

1.0 2-Dec-89 First "offical" release. Added user edit
function and search for conference

Dec 89 UFM Page 5


UFM, UFME, and UFMI are copyrighted (c) 1989, by John B. Hines.
The source code has not and will not be published or released. License
to use this program is make under the following provisions:

No modifications or patches are made to the program files.
Redistribution of these files is permitted as long as all files are

I ask that you "register" the program by informing me that you use
it. I would like to know who is using my efforts. Please provide your
name, mailing address, BBS name and number, and any Email addresses.

I also ask that you give me access on your BBS, sufficent to
upload and download files, and to your sysops conference (if any).

No fee is to be charged for distributing this program and its
associated files. I permit distribution via pay services as long as no
charge is made specifically for distributing this file.

Dec 89 UFM Page 6

* *
* This program modifies the USER file. Be sure you *
* have a backup of your file before you run this *
* program. Failure to do so may result in loss of *
* data. I am not responsible for your losing data or *
* any other problems incurred. If you have backups of *
* your data, you will not lose data from this or any *
* other program! *

Sysop Security Levels and Sysop User Record

This program has been intentionally designed NOT to process the
sysops record, record number one in the users file, and to NEVER ever
give any user a security level of one hundred or greater. This has been
done for your protection, to keep from giving anybody sysops level
access by accident.

Dec 89 UFM Page 7



I suggest putting UFM in its own directory, with the data in a
sub- directory underneath it. For example:

C:\UFM <-- For the program and help files
C:\UFM\DATA <-- For the data files and indexes

Since I am using database techniques for the configuration files
also, no changes to any of the data files will (should) be needed in
the future, so this directory structure will allow you to simply delete
all the files in the top level directory, and install new versions
without affecting the data files.


UnZip (or UnArc or Un-whatever) the files into the main program
directory. If any files with the extension DB or IDX were included,
move those files into the data directory.

Environment Variables

UFM uses a single environment variable to locate its files. Add
the following line to your autoexec, suitably adjusted for your

configuration. You can maintain multiple databases and switch between
them by changing the environment variable. Example:



The executable file can reside either in the current directory, or
in any directory in your path statement. Alternativly, it can reside
anywhere, if you use the full path when invoking it. All the examples
in this document assume UFM is in the current directory or in the


UFM supports full file sharing on all PCBoard files. This allows
UFM to run at the same time PCBoard is running. File sharing is not
implemented for the UFM databases, so only one copy of UFM can be
running at one time. Changing the information of a user that is
currently on the board is possible, but the results are undefined, and
probably undesirable. Do not try to update a user currently on the


To startup UFM simply type UFM and hit return. It will
automatically sense the type of computer you are running on, and adjust
accordingly. If you are running an unusual setup, it may make the wrong
assumptions, and produce incorrect results. You can override the
settings with the following command line switches. All switches MUST be

Dec 89 UFM Page 8

in lower case!

UFM checks for Desqview(tm), and automatically requests
an alternate screen buffer so it can do direct screen
writes and run in a small window. Use this switch if
you are running a different multitasker that confuses
UFM, or try this if the program hangs at startup for an
unknown reason.

Forces the use of BIOS routines for screen writes.
Much slower, but allows for use with non-standard video
displays, multitaskers, or redirection out a comm port.
Not needed for Desqview.

Enables snow checking for slow CGA displays. Use this
switch if you see snow in the display when it is being

These two switches force the use of monochrome
attributes. Normally color is used if a color display
is detected. This overrides the colors and forces black
and white. Use this if you have a monochrome monitor
attached to a color card, or for LCD or similar
displays. Use either switch, they are identical.

Disables the use of the mouse. UFM supports a mouse, if
one is detected, it will be used. Use this switch to
suppress the use of the mouse.

Controls the number of lines displayed. If you have EGA
or VGA displays, you can display more than 25 lines.
You can either specify using the /rows switch with the
number of lines, or use /43 or /50. VGA is required for
the 50 line mode. All displays can use the 25 line
mode, it is the default, and what you get unless you
specify otherwise.

The program will check its database files, three of them, for
consistency in the indexes, as it opens the files. If the indexes are
invalid or non-existant, they will be re-built. If the files do not
exist you will be asked if it is ok to create them. If you have already
created the files, and you get this message it means the UFM
environment variable is not set, or that the program can not access the
files in the location specified. If this is the case, you should answer
no, you will be returned back to DOS, and can fix the problem.

Dec 89 UFM Page 9

When you run the program for the first time, you will see just an
empty window, with the menu across the top. At this menu level you can
press the F1 key for help. You use the arrow keys to move thru the
menus, they are fairly standard pull down menus. You can also enter the
highlited character of the menu option to quick select it. It is
usually the first character of the option, but can be other ones. If
you have a mouse, you can use it to select the options also. You can
select the quit function at the right hand side to return to DOS.

Other keys that may be usefull, and are active at all times, is
Control-P, which performs a screen print and prints the current screen
on the default print device PRN. The Alt-P key does the same thing,
except it only prints the current window, and excludes portions of the
other windows that are visible. The other key you can use is Control-D
which dumps the current screen in binary format, including colors and
attributes. The resulting file, "UFM.BIN" can be loaded into a program
like Thedraw(tm) and manipulated if needed.

The first things you must do at this point, is configure the
program to your setup and needs. You need to configure the location of
the PCBoard files, the UFM options you need, and optionally the

PCBoard Setup

Select the Setup menu item, and the PCBoard sub-menu. You will be
prompted for the drive, and path to the PCBoard file. This is the path
to the PCBOARD.DAT configuration file. Do not specify the file name,
just the full path to it. You don't have to put the trailing backslash
either. Hit return when done entering the information. If you hit the
escape key, you will abort the update of the information, and return
back to the menu. If you are anxious to see results, you can exit the
program at this point, and re-run it. You should now have your first
user showing on the screen. Now go back into the PCBoard setup, you
should see your systems file paths and information displayed. If you
don't, check to be sure you have specified the correct path to the
PCBoard file.

UFM Setup

Select the Setup menu item, and the Options sub-menu. You will see
a screen full of choices that you can make.

Controls the use of alias names. If you allow
alias names on your board, and want UFM to keep
track of the person's real name, then enter yes
here. If you don't allow alias names then enter
no to disable the real name processing.

Use real name
If you have alias names enabled, you have the
option of using the alias name or the real name
on the reports that UFM produces. If you answer
yes here, then the real name from the database
will be used on reports, otherwise the alias name

Dec 89 UFM Page 10

from the PCBoard record will be used.

Enable or disable address processing. If yes then
UFM will store a two line address and a zip code
for each user. If no then no address information
will be stored. Note: you can also use the
PCBoard user comment as the address field, if you
do this then this field has to be no.

Registered Level
The security level given to registered users.
This can be any valid user level, that you have
defined inside of PCBoard.

New user level
The security level that is given to new users by
PCBoard. Enter whatever level they are given.
UFM uses this level to tell you if you are
re-registering an already registered user during
the registration functions.

Lock out level
The level given to users that you lock out thru
this program. Can be zero, which works like
PCBoard, or a low security level that you have
setup for these "twits" that gives low access.

Expired level
The security level set in the expired security
level field when a user is registered. This can
be the same as the registered level if you have
the subscription processing enabled, but are not
really using it. Or it can be any level you

Sysops Level
The security level given to visiting sysops. When
registered using the registration script
processing, a user identified as a visiting sysop
will be given this level. If you do not give a
higher level to visiting sysops, then set this
level equal to that of a normal registered user.

Comment on regs
Enable or disable the leaving of a comment when a
user is registered. UFM stores a comment
indicating the date and security level the user
was registered to.

Comment on $$$
Enables or disable the leaving of a comment when
a user contributes to the BBS. The date and
amount contributed, and the security level
changes are entered as the comment. This must be
on for the contributors report to function.

Dec 89 UFM Page 11

Comment on lock
Enables or disables the leaving of a comment when
a user is locked out, or deleted from the users
file. You will be prompted for the reason of the
lock out or deletion when it happens.

Your area code
Defines your area code. Used by the phone
database as a default area code for phone numbers
when a user doesn't enter one. Also used by the
dialer, which strips this area code when dialing
a number with it, as you don't need it.

Comment as addr
If yes, then the PCBoard user entered comment
will be used as the address. I suggest you answer
no, and allow UFM to maintain addresses as it can
store more data. But if you already use the
comment for this purpose, you can continue to do

Sysops conf #
The number of your sysops conf. If the user has
been identified as a visiting sysop during the
registration script processing, when registered
they will be given access to this conference. If
they are not a sysop, then they won't. Set this
to zero if you do not have a private conference
for sysops.

Info in Cmnt
If set to Yes, then the users information,
address, real name, and birthdate will show in
the comment section. This allows you to see when
that information was last updated. If you set
this switch to No, then the information is not
shown in the comments. It is always shown in the
users information section.

Dial Port
Enter the communications port your modem is on.
The modem will be used for dialing phone calls
from within UFM. There must be a phone connected
to the same line also! Enter "NONE" to disable
the dialer function.

Dial Speed
Enter the speed (baud rate) for the dialer to
use. Can be just about any speed, but shouldn't
be greater than your modem can handle.

Dial Init
The string of commands sent to the modem to
initialize it. These depend on your modem, they

are sent with no translation. A carriage return
is sent after the string automatically.

Dec 89 UFM Page 12

Dial Pre
The prefix that is inserted before the phone
number. Should contain the commands to make your
modem dial the following digits. Again a
carriage return is sent after the complete phone

LD code
These numbers or characters are added before any
phone numbers that are outside of your area code.
Normally just a "1" or "1-" will be enough, altho
you may use something different to select your
long distance service.

Enables or disables the storage of the users date
of birth. If you are interested in users ages,
for example if you have an adult conference, you
will want to use this.

Enables or disables the processing of scripts.
If enabled then you can view the answers to main
board scripts, and enables special processing for
registration scripts and request scripts.

Ask script
Enter the number of a request script. This is a
script that your users fill out to make requests
(like admission to conferences) of you. You will
have the ability to process the answers to this
script, which means that you will be shown the
answers for each user, and UFM will find the user
in the file automatically. You can then update
the users conference registrations. This script
must be a main board script.

Ask questions
Enter the number of questions on the request
script. Used to size the window that the answers
are viewed in. A size of 10 or less works best
with a 25 line screen. Larger scripts work better
with a larger screen. If you size the window too
small, the first answers will scroll off the
screen. The minimum size is 7 lines.

Reg script
Enter the number of the main board script that is
used for registration. This script is processed
like the ask script, except you can specify which
answers contain information to be automatically
entered into the database. Security level
updates are performed from within the processing
of the script.

Dec 89 UFM Page 13

Reg questions
The number of questions on the registration
script. Used to size the window that registration
processing is done within. A size of 10 or less
works best with a 25 line screen. Larger scripts
cause the window to cover up the user
information. The questions that UFM can process
are limited to numbers 1 to 16, you can have more
than 16 questions, but the ones UFM processes
have to be less than 16.

Answer w/ BBS
The question number on the register script that
contains the BBS information. If the user is a
sysop, then the information on this line is
stored as a comment, showing the user as the
sysop. Set to zero if not wanted.

Contributors Level
The security level given to users that are
processed with the contributors registration
function, and that contribute more than the
amount specified.

Contributors Expired Level
The security level given to contributors for when
their increased access period expires. Useful
only if you run subscription mode of PCBoard, or
set the same as the contributors level to
effectively disable it.

Contributors Access Period
Enter the number of days that someone who
contributes more than the specified amount will
be given special access for. Specify the time
period in days, IE 365 = one year, 183 = 6
months. The expiration date will be set to the
date that is this number of days away from
today. Subscription mode must be enabled in
PCBoard for this to be effective.

Contributors Amount
Enter the amount of money required for upgraded
access. Any user processed thru the contributors
update, that contributes this amount or more,
will be given the level specified, with an
expiration date based on the number of days
specified, at which time they will be given the
expired level. Use this if you have a policy of
"If you donate $xx or more, you will be given xx
minutes daily for 18 months". PCBoard
subscription mode must be enabled for this to
function properly.

Contributors Conferences
Defines the conference mask that will be applied
to users that contribute more than the
contributor's amount. This can be used to allow

Dec 89 UFM Page 14

access to special conferences, or remove access,
to contributors. This defaults to the public
conference string in PCBoard when UFM is first
run, if you change the public conference string
in PCBoard, you must also change it in UFM.

Subscription Level
The security level given to users that are
processed with the registration function, and
that pay more than the amount specified. There is
a level for each of the four subscription types

Subscription Expired Level
The security level given to subscribers for when
their increased access period expires. Useful
only if you run subscription mode of PCBoard, or
set the same as the subscribers level to
effectively disable it.

Subscription Access Period
Enter the number of days that someone who
subscribes for this type will be given special
access for. Specify the time period in days, IE
365 = one year, 183 = 6 months. The expiration
date will be set to the date that is this number
of days away from today. Subscription mode must
be enabled in PCBoard for this to be effective.

Subscription Amount
Enter the amount of money required for upgraded
access for each of the four subscription types.
Enter zero if you don't want to use this level.
Any user processed thru the registration update,
that pays this amount or more, will be given the
level specified, with an expiration date based on
the number of days specified, at which time they
will be given the expired level. Use this if you
have a policy of "If you pay $xx or more, you
will be given xx minutes daily for 18 months".
PCBoard subscription mode must be enabled for
this to function properly. Additionally, the
amounts need to increase for the subscription
types, as the registration process looks at level
4 to see if the amount paid is greater than the
amount for the level the user is given that
level. If not, then it checks level 3, then level
2 and last level 1. If none of the levels match,
the regular register level is used, and no
special conferences or access period is enabled.

Subscription Conferences
Defines the conference mask that will be applied
to users that subscribe with this type of
subscription. This can be used to allow access to
special conferences, or remove access, to
subscribers. This defaults to the public
conference string in PCBoard when UFM is first

Dec 89 UFM Page 15

run, if you change the public conference string
in PCBoard, you must also change it in UFM.

Help File
The path and name of the help file. If you wish
to run UFM from any directory you will need to
set the path for the help file so that UFM can
find its help file. If this path is incorrect,
then the popup help will be disabled.

For best results, exit UFM and re-execute it. This will insure
that all the functions are properly initialized.

Dec 89 UFM Page 16

Using UFM

The list of commands is shown across the top of the screen, you
can enter just the highlighted character, or use the cursor arrow keys
or mouse to move the selected item to the function, and hit enter. Most
of the functions have a sub-menu of functions that pull down. Hitting
the escape key will back up from the sub-menu, and from within most of
the processing. Hitting escape at the main menu will exit the program.
In general, it is a fairly standard pull down menu structure. You can
hit the F1 key to call up help at any point.

Use the "+" and "-" keys to advance or backup through the users
file. Hitting the plus key advances one user, hitting minus backs up
one user. I use the keys on the keypad, they are easiest to use.

The Inquire menu has the functions that you use to inquire into
the user file. You can jump to the top of the user file, record #2 the
first user in the file, or jump to the bottom of the user file, the
highest record on file, the last user. As a short cut, use Alt-T to
jump to the top, or Alt-B to jump to the bottom. You can also find a
user, searching for the user that begins with the string you enter. The
find function can be invoked with the Alt-F also. Or you can find a
user that matches a specific security level.

The Update menu has the functions to modify a user. You can enter
a comment on a user, which will be dated and stored. The users
information can be edited as needed. Registration can be performed,
updating the users security level to that specified in the setup, and
also optionally, a comment will be entered indicating the user was
registered on this date. The Income function is like the register
function, except it updates the user to the contributor security level,
and optionally prompts and records the amount of the contribution.
Conference registrations can be updated, for the regular conferences, 0
through 39. Locking out, dropping the users security level to that
specified in setup as a locked out user can be done, with optionally a
comment of why the user was locked out. A user can be deleted, security
level set to zero and the delete flag set, again with an optional
comment. The full address of the user, and their real name can be
maintained, if these options are enabled.

The Answer menu is the heart of this program. It is designed to
allow the sysop to quickly check users answers to scripts, and update
their registration. One of the scripts can be designated as the
registration script, the one new users must fill out to gain access.
This script can be processed, where each users answers will be
displayed, along with their user record, one at a time. The answers
can be picked out of the answer file, edited by you, and transfered
automatically into the database, as the users record is updated. This
allows you the sysop to process, given optimal user responses, the
entire registration script simply by pressing "Y" or "N" to register,
or not register each user. By simply entering "E" you can edit the data
before it is transfered into the database. This also includes updating
visiting sysops to a special security level, and giving access to a
special conference. The view function provides the ability to view all
the main board script answer files. The save function will append the
contents of a script to another file, and optionally delete the
original answers. This way you don't have to keep processing the same

Dec 89 UFM Page 17

answers over and over, but retain the answers in one file for permanent
storage if that is what you need.

The phone database stores descriptions for phone numbers, by
individual number, or by areas. When a users information is displayed,
the description that best matches the users phone number is retrieved.
The method used is to search for an exact match on the users phone
number, if its not found, a search on the area code and exchange and a
single zero is tried. If that fails also, then a search on just the
area code is made. If that still fails no information is returned.
This provides a rough indication of a users location, and the validity
of the users information. If a user says he lives in one state, but the
area code on their phone number is another... More relevent is that if
the users city is on the other side of town from the phone exchange,
then this users information is more suspect than if they match (or
nearly so, people on the edge of town are often served by the other
exchange). Also if you call somebody to voice verify them, and its
Joe's pizza parlor, you can enter that number into the database. If the
person calls back under another name, and leaves the same number, you
know immediately without calling that its bogus. Local BBS numbers are
also good to put in. The idea is to help narrow down the number of
users that need extra verification steps, to those that are the most
suspicous. The dialer function will use a modem to auto-dial either of
the phone numbers for the current user, or a manually entered number.

Miscellaneous functions available include a "debug" screen that
shows some of the internal variables and file paths. Also available are
the execution of a single DOS command, or a full drop to DOS shell.
After dropping to DOS, type "exit" at the DOS prompt to return to UFM.
Re-index rebuilds all the index files for the databases. Normally this
is not needed, but execute this if you have any trouble with the
database files, such as data not appearing when it should. Re-indexing
fixes most problems with the database files. The database sub-system
buffers in RAM the index and data files, the flush function forces the
writing of these buffers to disk. This flush function can also be
invoked at any time by pressing the F10 function key. Use this to
insure that any changes are written to disk, like if you just heard a
loud thunder clap, or are going to be away from the computer for a
while. The buffers are also flushed upon program exit. UnUpload will
sequentially process the upload directory, showing you each file
uploaded, and giving you the option to remove the credit from the users
record, and to optionally delete the file from disk. This allows you
to easily disallow credit for those junk uploads, if you are running

Quit does just that, flushes all the buffers, and quits the
program. If you wish to just run a few DOS commands and come back, use
the DOS command or drop to DOS functions on the miscellaneous functions

Dec 89 UFM Page 18

Inquiry Functions

The most basic inquiries are done by using the plus and minus keys
to browse thru the users. The top and bottom functions jump quickly to
the begining or end of the file. You can then browse forwards or
backwards from those users. Since PCBoard adds new users to the end of
the file, jumping to the bottom of the file makes the last user to
register the current user.

Inquiry into users can be done by name or security level. Searches
by name use the index files to locate the user. The search string is
compared to the beginning of the name, for the length of the search
string. Thus it is important to know at least the first few characters
of the name. Each name matching the search string is displayed, and
you are prompted for if this is the right user. If not, the search
continues. If it is the correct user, then that user is made the
current user and their information is displayed. If there are no users
matching the search string, control is returned to the menu, from which
you can make a new selection.

Inquiry by security level starts with the user after the current
user. This means if you want to search the whole users file, you must
jump to the top of the users file first. Since the search starts with
the next user after the current one, you can make repeated searches
though out the file. The first user on file will never match, it is up
to you to notice their security level is what you seek.

Inquiry can also be done by conference, you can search for users
registered in a specific conference. Just enter the conference number,
and it will find the next user registered in that conference.

Transfer inquiry will search the DOWNLOAD.TXT file for all file
transfers performed by the current user. You can use this function to
keep track of the users file activity.

Update Functions

The update functions allow you to update a users information. You
can maintain both UFM stored information, as well as some PCBoard
information. Information you can change in UFM is limited to that
which is of concern to the registration and user information. Things
like last message pointers are not maintained by this program.

Comment update allows for the entry of comments on a user. Each
comment is dated and stored in reverse chronological order such that
the most recent comment show first. These comments are totaly
indepentant of the PCBoard comments, and can be used for any purpose by
the sysop. Since the comments are independant of PCBoard, there is no
way for a user to see them or change them the way the PCBoard comment

Edit allows editing of the user information. It updates both the
PCBoard user file information and the UFM stored data. All the fields
displayed can be updated. If you blank out an information field, like
the address, that record will be deleted from the database (empty

Dec 89 UFM Page 19

records are not stored).

Register is a method of registering a user. It will update the
users security level, and optionally leave a comment showing that the
user was registered on this date, and the level that the user was
registered to.

The Income function is similar to the register function, except it
also records a dollar amount of the contribution or subscription fee
paid by the user. It also upgrades to the contributing user level set
in the setup function. The comment optionally recorded shows both the
amount involved, and both the before and after security levels.

Conference registration can be updated with the conference update
function. When selected you can change the registration by moving thru
the fields, placing an 'X' wherever registration is desired, and a
space where its not. The three lines are conference registered in,
conferences to scan, and the expired conferences. Expired conferences
will only show up if the subscription option is enabled in PCBoard, its
meaningless otherwise.

Security level update allows the changing of the users security
level, and the expired level, if subscription mode is enabled. The
security level can be set to any value from 0 to 99. Note that zero
locks out a user, but will not add comments as will the lockout

House address allows the updating of the users address, both the
parts stored in the database and in the PCBoard users file. This can be
disabled in the setup options functions, in which case it don't work.

Lock out does just that, it locks out a user. This sets the users
security level to that specified in the setup options section. This
allows you to use a real low level of access, allowing "locked out"
users to read a message or screen telling them they are locked out. If
the level is set to zero, then this works like PCBoard does. You can
also optionally enable a comment on lock out, which prompts you for a
reason why you locked this user out. Real handy if you can't remember
the exact reason you locked out the 1001 twits that reside in your

Delete is very much like lock out, except it sets the security
level to zero, forcing a complete lock out, and sets the positive
delete flag in the users file. This means that the users record will be
removed the next time you pack your user file. If you have enabled
comments on lock out, you will be prompted for a comment when you
delete a user also. Remember, when a user is deleted from the PCBoard
users file, their data still remains in UFM's database, and will show
up if they call back, or another user uses the same name.

Alias update, is actually real name update, but R was already
taken. If you have enabled alias processing, UFM will store the users
real name. (it is assumed that the name in the PCB users file is the

alias.) This allows you to update the name as needed. The real name can
optionally be used in the reporting functions, as you see fit.

Script Answers

Dec 89 UFM Page 20

View answers allows you to view the answers to any of the main
board script questionaires. The questions are stripped out to allow for
more information to fit on the screen. Scripts with more than 16 or so
questions are best viewed in 43 or 50 line mode, otherwise they don't
fit in the window very well. This is just a handy feature that allows
you to check on your script questionaires.

Register script processing is a major function of UFM. In the
setup options you can specify which main board script is your
registration script. Also you can specify the question numbers that
contain the information to be stored in the database. This script
should ask for the following questions:

Real Name (if you allow alias names)
Address Line 1 (if you are processing addresses)
Address Line 2
Birthdate (if you store birthdates)
Sysop Y/N
Sysop BBS info

These questions are used in the following way, real name is stored, the
address information is stored, birthdate is stored. For best results,
use a format of MM/DD/YY or MM-DD-YY or even MM/DD/YYYY as UFM can
calculate the age of the user which is handy for people like me that
can't calculate dates in their head very quickly. If the sysop Y/N
question answer has a "Y" at the beginning, then the user is registered
to the visiting sysop security level defined in the setup options, and
also given access to the sysops conference. Then the answer with the
BBS information is saved as a comment for that user, so you can keep
track of what system they are a sysop of. Since many users can't read
the directions you give them for filling out the script, you can edit
the information before it is stored. When processing the registration
script, each users answers will be displayed, and that users
information will be brought up and displayed. The data that will go
into the database is copied over to the right side of the screen, and
if the user specifies yes they are a sysop, the BBS information will be
shown on the bottom line. You will then be prompted for Update? enter
either "Y" to update the user with the current information, or "N" to
skip the user and not update, or "E" to edit the information. If "E" is
selected you will then be allowed to update the information along the
right side of the screen. Note: if the user messed up the sysops
question, you will have to edit once to turn on the sysops flag, and
edit again to edit the BBS information. You can also escape out of the
processing. The size of the window used for the registration processing
is adjustable, specified in the setup options screen. I suggest you use
as few questions as you can, so that you can shrink the registration
window down, and show more of the users information. (or use 43 or 50
line mode) I use the registration processing (thats why I wrote it) to
process registrations on my board. I usually come home from work, run

UFM, and run the registration processing. It gives me all the people
that have filled out the script, I check the information in both the
script and PCBoard files at a glance, edit it if needed, and give a Y/N
to the update. If the user is a sysop, they are given special access
automatically without my having to anything special. Takes 5 minutes on
a bad day!

Dec 89 UFM Page 21

Request script processing is similar to the register script,
except its much simpler. I have a private conference (adult conference)
that is available only by request. I require the users to fill out a
simple script, one question, for access. The request script processing
simply shows the answers to this script, one at a time, and prompts for
update? If you answer yes, then you will be put into the conference
registration update section, where you can update the users
registrations. If you answer no, then you go on to the next users
request. Once again the size of the window used is adjustable, if you
have only a few questions you can use a smaller window which shows more
of the users information. In the case of an adult conference for
example, you would not want to hide the users birthday!

Save answers appends the answers onto a file called SAVEDxx where
xx is the script number in the same place as the answer file. Then it
asks if you want to delete the original answer file. This allows you to
get rid of answers already processed, so you don't have to repeat them,
but yet save the contents for future reference. You must save the files
before you can delete them, to prevent data loss. If you really are not
interested in saving the answers for posterity, I suggest putting a
delete of the saved files in your event or other routine maintenance.

Phone Database

The phone database keeps a description for phone numbers. These
descriptions are displayed with the users phone number. Three standard
functions of add, change and delete are provided. Add lets you enter
new numbers that are not on file, and change and delete act on numbers
that are on file. All processing is done by a combined key of area
code, exchange and number, thus you need to specify all three to change
or delete. For more generic descriptions the number can be a single
zero, to allow for a description that covers an entire exchange, or the
number and exchange can both be single zeros for a description of an
entire area code. While you can use any descriptions you want, I
suggest putting in the word "area" in a generic area code description,
and "exchange" in for exchange descriptions. For example:

Chicago, Illinois area
Glen Ellyn, IL exchange
Chicago, IL Monroe exchange

Place a call invokes the auto-dialer. It needs to be set up for
your specific hardware in the setup options section, where port number,
baud rate, init strings and the like need to be setup. The defaults
should work for most Hayes "compatibles", but see your modem book for
details. While most of the settings are adjustable, the program still
assumes that a Hayes compatible is used, and uses "+++" and "ATH0" put
the modem on-hook. It also drops DTR so it may work with other modems
also, but has only been tested with my Hayes compatible. Other settings
are your area code which needs to be put in. If a phone number begins
with your area code, it will be removed before dialing as it is not
needed. Phone numbers that have an area code other than yours will
have the long distance prefix added. Normally this is just "1-" but it
can be whatever you need to get an alternative carrier, or WATTS line.
By default sound is enabled on the dialing, I recommend that you leave

Dec 89 UFM Page 22

it enabled, as there is no other way to monitor the call progress. To
actually place a call, invoke the dialer from the menu. You will be
given the choice of either the current users home/voice number, or
business/data numbers, or a manual number. If you select manual, you
will then be prompted for the phone number to dial. No matter which
number you select, it will be adjusted for the area code as needed. The
call will be placed, when you hear it ring the other end, pick up your
telephone, and hit return to have the modem hang up. You must have a
telephone on the same line, unless you just intend to annoy people by
calling and hanging up.

Color Setup

Color setup allows you to adjust the colors used for most of the
screens. I will be the first to admit, color is not real well
implemented, the colors tend to be used in real strange places. So its
an adventure, but at least you can do it.

When you select the setup colors screen, you will see a list of
the colors used by the program. Each color has a number, the
description of what the color is used by, what the color actually looks
like, what it looks like in monochrome (bold or not), and then the
component colors, foreground and background. Enter the number of the
color you wish to change and hit enter. Then you will be given a
selection box, where you can select the foreground color by using the
up and down keys, hitting return when you have the desired color. Then
you choose the background color in the same manner. You then will see
the color change on screen, and be asked to select another. Enter just
a return to save the colors and return to the menu, or escape to abort
the update and return to menu.

The use of monochrome attributes, white and bright white only, can
be selected by using the /bw or /mono switches when invoking UFM. As to
what color uses which attribute, is determined by the color selection
option, which is why the monochrome attribute is displayed. If you mess
up the colors so they are all white, or all bright white (or all black)
using the /mono switch won't help.

Options Setup

Option setup is pretty well covered earlier in the documentation,
I refer you back to it. I would suggest using the ALT-P or CTRL-P
functions to make hard copies of your setup screens, then if you loose
your settings, or mess up your colors hopelessly, you can simply delete
your setup database, and start over.

PCBoard setup

Once again PCBoard setup was covered in the configuration section
earlier in the documentation. The only thing you need to (and can)
setup is the path to your PCBoard default directory. All the other
PCBoard setups are read out of the PCBoard configuration files. They

Dec 89 UFM Page 23

are displayed on this screen so you can make sure you have selected the
correct node you wish to use.

Miscellaneous Functions

The debug screen shows the values for some of the internal
variables and settings used by UFM. This allows you to check paths and
such, if you are having problems you attribute to configuration, check
this screen to see where UFM is looking for things.

The command function allows for the execution of a single DOS
command from within UFM. Simpler and faster than a full shell out to
DOS, you should use this function when you only want to run a single

The shell to DOS invokes the current command interpreter as a
secondary shell so you can enter commands or run other programs. Entry
of "EXIT" at the DOS prompt in the secondary shell will return you back
to UFM. This function looks at the COMSPEC environment variable so it
will work properly with COMMAND.COM replacements like 4DOS(tm).

The re-index all function rebuilds the indexes on all the database
files. These indexes are normally self-maintaining, but if for some
reason they get slightly corrupted, you may need to re-build them. UFM
will normally detect corrupted indexes, and automatically re-build them
on startup, but if you notice that items in the database are not being
retrieved when they should be, try re-building the indexes, it should
clear up the problem. If it doesn't clear it up, then exit UFM, delete
the *.IDX files, and run UFM again, it will re-build the index files
from scratch. Do NOT delete the *.DB files! these contain your data!

The flush buffers function forces UFM to write all the internal
data buffers to disk. The database files are internally buffered, so if
UFM aborts for any reason without going through a normal exit, the data
in memory may be lost. Most likely the data will be index information,
so the indexes will get corrupted. By flushing the buffers you can
minimize any potential data loss. This function is mapped to the F10
key, so you can invoke it at any time by hitting F10. I would suggest
doing this after you do a bunch of updates, or if you are going to be
away from the computer for a while, or if you hear a large clap of


What can I say? The quit function flushes all buffers, and exits
to DOS. You can either select this function, or hit escape at the main
menu prompts.

Dec 89 UFM Page 24

UFMR - Message activity recorder

UFMR is a program that reads the callers log, and updates the main
UFM database with message activity information. Messages left, and
comments left, messages deleted, and bulletins read are all recorded.
The upload to download ratio will take into consideration a "credit"
for leaving messages, depending on the values you enter in setup. This
allows you to reward users for message base activity.

To implement UFMR, simply run it from your UFM directory, it uses
the same setup files as UFM. It takes one argument, that is the path
and name of the caller log. For example:


It is best if you use a daily caller log, and process it each night
during your event. There is no protection against running the UFMR
program many times against the same caller log, it will simply
duplicate the message credits. See the PCBoard documentation for how to
setup your caller log processing. UFMR needs to be run against all
nodes callers logs.

Dec 89 UFM Page 25

Multi-Field editing keys

When doing multi-field entry, like the setup screens or the user
edit functions, the following keys have special functions.

Key Action
--- ------
LeftArrow cursor left
RightArrow cursor right
UpArrow cursor up
DownArrow cursor down
Ctrl-LeftArrow word left
Ctrl-RightArrow word right
Tab field right
Shift-Tab field left
Enter process field
Ctrl-Enter process all fields
Decimal (.) move to right side of decimal point
Home beginning of field
End end of field line / end of field
Ctrl-Home beginning of first field
Ctrl-End end of last field
Ins toggle field insert mode
Del delete character at cursor
BackSpace delete character left
Ctrl-BackSpace delete word left
Ctrl-R restore field to original contents
Ctrl-T delete word right
Ctrl-U delete to end of field
Ctrl-Y delete to end of last field
Esc abort data entry

Dec 89 UFM Page 26

Subscription/Contribution Operations

UFM supports both Subscriptions and Contributions. Whats the
difference you ask? Well, I've divided BBS systems into three broad
catagories, Free boards, Contribution boards, and Subscription boards.
A free board is one that does not ask for money, and is a rare and
endangered species. A contribution board is one that asks for money,
and can give extra access to those that contribute, but does not have
specific requirements on the amounts or time given. A subscription
board is one that requires a certain amount of money for a certain
access period for a certain time.

UFM handles contributions and subscriptions in basically the same
way, just uses different terms and keeps them separate for reporting.
Thus you can use them individually or in combination. How you want to
define them or use them is up to you.

Subscriptions are broken up into 4 types, each having its own
security levels, expired levels, and time periods. This way UFM should
be able to handle the different types of subscriptions offered by
different systems. You can offer 90 day, 6 month, 1 year, 3 year

subscriptions, or basic access, extended access, premium access, or
Super Duper access subscriptions or a combination of both, with a limit
of 4 types total, in addition to a contribution type also.

In order for contributions or subscriptions to be effective, you
must enable PCBoards subscription mode. Otherwise only the security
level change will be effective, as PCBoard will ignore the expired
level and expiration dates. Also be aware that PCBoard does NOT change
the security level to that of the expired level, it checks the expired
date and uses the expired level if the account has expired. Many doors
and other third party programs do NOT correctly implement the expired
date and level processing and ignore it, giving full access at all
times. Be sure you check the doors you use before you rely on them!

Dec 89 UFM Page 27


Well thats UFM and what it does. There are two companion programs
that go with it, UFMI and UFME which do Imports and Exports
respectively. The export program, UFME, also has the reporting
functions. There is also a utility package which can do database
converts to and from dBase(tm) format, and database compression.

I am working on enhancing and improving UFM, new versions will be
posted on Scintillation BBS, as are other utilities I've written. There
is a support conference on Scintillation BBS where the updates and
companion files will be posted. I will also post a starter phone
database, hopefully others will post their phone databases with their
local phone number information.

I can be reached by any of the following means:

US Snail:

John B. Hines
11 Briar #27
Glen Ellyn, IL 60137

On BIX or GEnie as: JBHINES

On Salt Air as: John Hines

Or via the following mail systems:

Metronet MetroNet or Sysops conference
PCBmail Administrative or Sysops conference

  3 Responses to “Category : BBS Programs+Doors
Archive   : UFM1V01.ZIP
Filename : UFM.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: