MEMBER.COM Version 1.4 Kaypro w/ graphics November, 1985 Program By : Joseph L. Fall 8031 Regency Drive Nashville, TN 37221 CIS 76555,37 MEMBER is written in Turbo pascal (tm.). It was intended to be a database manager for our Kaypro Users Group. We wanted to have access to the demographic data of our members, and search for members that had similar interests or knowledge in particular fields. As I coded the program, I added a number of options that members of our club said would be 'nice to have'. This version will initialize and operate any Hayes (tm.) compatible external modem to dial the telephone numbers for you with the option for continuous re-dial of busy numbers. It will also allow you to print labels for mailings to members, non- members, etc. The program is started by typing the word MEMBER, followed by a space, followed by the name of the datafile you wish to search or create. Ex: A0> MEMBER KUG will start the program and let the user search the database KUG.DTA (The program adds the .DTA for you, don't add it yourself). If the datafile does not exist, it will be created the first time you enter someone into it. If you try to search a non-existent datafile, an error occurs and you are returned to the A0> prompt to try again. Begin by typing MEMBER DATAFILE (Or any other name you choose for the file to hold the data). This will take you to the main menu. Menu selections are made by moving the highlighted block up or down the menu with the space bar or the back-space key until the option you want is highlighted. A carriage return executes that option. You can move the block directly to any option by pressing the first letter of that option. Press 'e' to highlight 'Enter New Member' (Or use the space bar to get there) followed by a carriage return. The program will create a .DTA file using the name of the datafile specified on the command line when the program was started. You will then be asked to enter the necessary information for that member. The maximum length of the input field is indicated by a mask of underscores. The program will not accept input longer than this mask. Tabs are set at every 8th. position. Typing mistakes can be corrected before you leave the line by erasing with the bask-space or DEL key. A Ctrl-X will erase what you have typed and let you start that line over. Entry can be terminated with a carriage return, a line-feed, or a Ctrl-Z. Enter the information the way you want it to appear on the display. You may freely mix upper and lower case to make the display look better. There are two address fields before the city, state, and zip-code fields. This is to accommodate longer addresses and business names. If not needed, skip the second address field by entering a carriage return. The state is entered as the two letter code the post office uses. The program will convert it to uppercase if you forget. The zip-code field is 10 spaces long to accept the extended 'Zip + Four' codes. Telephone numbers need to be entered exactly the way you would dial them if you want the modem to dial the number for you. You may use punctuation as needed. Commas in the number will cause the dialer to pause 1 second for each comma if extra time is needed to reach an outside line. Ex: 9,,1-234-5678 will dial a 9, wait 2 seconds for an outside line, then dial the number. Remember the 1, 0 or area code if necessary. Areas of expertise are those areas in which you would be willing to share your knowledge. There can be multiple entries on this line separated any way you prefer. Ex: Pascal/Basic/WordStar. The expiration date is used in the generate labels option. While printing labels, if the expiration date is within 1 month of the current date, '* RENEW *' prints on the top line of the label along with the expiration date. If the entry is for someone that is not a member, leave this field blank. Labels for these non-members can also be printed separately. We exchange newsletters with a number of other clubs and customarily enter them as non-members. The last entry is for miscellaneous comments. When all the data has been entered, you will be asked if it is correct. Answering 'y' will write the data to the disk. Changes can still be made later when the data is being displayed during a search operation. Next you will be asked if you wish to enter another member. Answering 'n' will take you back to the main menu. The search operations prompt you for a word to search for in the area you have chosen. Enter as much as you are sure of and the program will find all partial matches. For example, if searching for last name, you will be asked to enter the last name to search for. Entering an 'f' will find all members whose last name begins with an 'F' or an 'f' (Case is ignored). Entering 'fa' will find all members whose last name begins with 'fa', 'Fa', etc. The only exception to this is when using the Topic search option. This will search for the entered string anywhere on the 'Areas of Expertise' line, not just at the beginning. The Generate Labels option first prompts you for the current date. As mentioned earlier, this date is used to figure out if the membership has expired or is about to expire. Labels can be printed for everyone in the database, only those who are paid-up, only those who are expired, or only those who are non-members. If the second address field is left blank, it does not generate a blank line. Instead the remaining lines are moved up. The 'Test Label' option prints two labels for printer alignment. Label printing can be aborted by holding the space bar down. The option to purge the database is used only if you have an entry that you would like to completely remove from the database. After awhile you may end up with a number of old members that have let their membership expire and do not intend to renew. They just take up useless space in the datafile and increase the amount of time needed to search the database. To remove them from the database, call each entry up in the search mode and when their data is displayed, use the option to (C)hange. When prompted for the first and last names, use the ESC key to blank out both of them. When you have blanked out the first and last names of all the people you want to remove from the file, use the purge option from the main menu. It will rename the original datafile to a .BAK file and create a new database with the name of the original datafile. Then it will read each member from the backup file and write it to the new file, leaving out those members with no first and last names. If there is not enough room on the disk, the program will return an error message and warm boot. Once you have entered some people into the database, you can search for them with any of the search options. If a match for the search string is found, that member's data displays on the screen with an option line at the bottom. The option line has provisions for changing the data, dialing one of the telephone numbers, printing the data, quitting the search operation, or continuing to search for another match. If you have made a mistake while entering the data, or if something about that member has changed, you may change any of the fields displayed during a search option. Just press 'c' and the option line will prompt you for changes in each of the fields. To leave them unchanged, enter a carriage return. To change one, enter the whole field again at the 'CHANGE TO:' prompt. If you have entered data into the wrong field, or simply wish to blank out an entry in a field, hit the ESC key when prompted for that field. After the last field, if you have made any changes, they will be written to the disk. If you want to have your modem dial the number for you, press 'd'. The option line will prompt you to choose the home or business number. If this is the first number that you have dialed, the program will first initialize the modem, then dial the number. The initialization step will be skipped if it is not the first number you have dialed. Be sure to have the volume on the modem speaker turned up loud enough to hear if the number is ringing, or busy. At this point, if the number is ringing, you can pick up the phone to talk. The other options are to have the program hang up the phone, or continuously re-dial the number. (Handy if the number is busy.) It is a good idea to also have the program hang up when you take the phone off the hook so that you won't get feedback through the modem speaker. Since the internal modem has no speaker to monitor calls, routines for the internal modem have been left out of the program . If you want a hard-copy of the data, press 'p' and the program will print the data on the parallel printer. If the printer is not connected or is off-line, the program will tell you that the printer is not ready and return you to the status line. If a match has been found, and you don't wish to continue searching the database for another match to the same search string, press 'q' to quit and return to the main menu. Pressing any other key than 'c', 'd', 'p' or 'q' will start the program searching for another match. If one is not found, you will be returned to the main menu, otherwise the next match will be displayed. Exit the program with the 'Quit - Go to CP/M' option on the main menu. Exiting by turning the power off is never a good idea and can result in a loss of data. I hope you will find this program useful. I have used a slightly more business oriented version for a number of months and have found no resident 'bugs'. If you should find any, or you would like to see any modifications, please contact me through Compuserve (tm.) CIS# 76555,37 or write me direct at the above address. This is public domain software but if you like the program, you may send a donation to the above address. This will really impress my wife who would then not mind so much when I sit at the computer for hours, writing programs like this one.