INTRO: Bulletin Board Mail Program (GMAIL) Written By: Matthew W. Goheen Date: June 8, 1983 USAGE. This uses a keyed file for the storage of messages. This file is stored in the directory defined by the LOGICAL name. GML$DIR. If the file does not exist then the program will attempt to create the file in that directory. The user account that creates the data base file will be considered the MASTER gmail account and will be authorized to perform master account operations within GMAIL. (deleting other users messages, BROADCASTing a header message, and no message limits) To compile gml: $ fortran/nodeb/nocheck=all gml $ link gml/nodeb/notrace if you do not have fortran then the .EXE supplied should work... To start GMAIL up do the following: From a Privileged account issue the following command $ define /system GML$DIR disk:[gmaildir] ! wherever you put it then: log on to the account which will be the master GMAIL account and will have write access to the gmail directory (this account does not need any special vms privileges) $ set prot=(g:e,w:e) disk:[000000]gmaildir.dir $ run gml$dir:gml BROADCAST GENERAL MAIL IS NOW UP { or whatever } EXIT $ set protection=(w:rw) gml$dir:gmail.dat $ set prot=w:e gml$dir:gml.exe Put the following line in you system startup routine $ define /system GML$DIR disk:[gmaildir] ! wherever you put it users can now access gml and post messages by typing: $ RUN GML$DIR:GML PURPOSE: This program was written to try to take some of the strain off of the regular MAIL program (strain meaning wasted disk blocks sending general MAIL to users who don't want or need it). My thanks to Andy for his helpful hints and ideas that made this a better (looking) program. To all of you out there who are snickering at this code, let me say just two things: 1) I DON'T CARE!! 2) Go ahead and make it better. GENERAL: Currently, this program uses a keyed file with two keys defined. The first key (primary key) is simply a (hopefully) unique integer that each message is assigned. The second key is USERNAME which is used mainly for two procedures (CHECK and LIST). There are three SPECIAL records. The primary keys for these records are, 1, 0, and -1. Each of these records has a special function, described as follows: 1: Contains the broadcast message, see section on special commands for the MASTER account. 0: Contains information about the data base. Most of this information may or may not be actually correct. When I began to write this program, it was my idea to store all critical information in this record. This turns out to be very problematic. As it stands now, record zero contains the MASTER account name and that's about it. It USED to contain the date and time of the most recently sent massage along with the primary key to that record. This proved to be very difficult to main- tain during muli-user operation. Therefore, it was replaced by two procedures (INIT and GETCURR). These seem to work much more reliably although quite a bit slower.