[ A B Y TEXT C }cA  An Overview of dB Help!~ ======================= The Control Center in dBASE IV gives the user an effective interface for using dBASE's data management capabilities. You may have had the opportunity to dig deep into the Control Center and use some of its more powerful features; but the real power of dBASE lies in its programming language. My experience as a phone technician has given me a pretty good idea about what kinds of things some users have a need for that go beyond the Control Center's capability. These are the kinds of things that come up now and then, and require a degree of proficiency with dBASE programming. Basically, dB Help! is a group of these kinds of utilities that have been programmed for you. In addition, dB Help! packages these utilities in an attractive, easy-to-use, modifiable interface with many useful tools to help accomplish these tasks. Among these tasks are: * Importing or exporting dBASE data to or from an unusual text format * Importing or exporting dBASE data to include memo field data * Converting mixed case or all upper case data to lower case data with the first letter of each word capitalized * Splitting multi-word fields into smaller fields - each containing a word OR extracting words from a character field to place them in smaller fields * Purging duplicate records based on a key expression * Globally Search and Replace text in a memo field * Recovering data from a database with a damaged header or a bad end-of-file marker * Backing up dBASE data without the hassle of DOS's BACKUP/ RESTORE Among the Tools to help accomlish these tasks: * Ability to modify the structure and data of a database * Ability to create User-Defined Operations within dB Help! to automate repetitive tasks or to include the assistance of an external PRG * Ability to create PRG's for user-defined operations or to otherwise modify text files Among the interface features to enhance ease-of-use: * On-line documentation for extensive Help * Limited mouse support * Limited ability to customize screen * Ability to save and re-use screen configurations * Supports Color or Monochrome monitors dB Help! Interface Features~ =========================== One of the many unique aspects of dB Help! is its interface. In addition to being easy to use, dB Help!'s interface is virtually free-form. Button Windows:~~ In dB Help!, the user selects options with "Button Windows". A Button Window is a box that appears on the screen containing "Buttons" that are labeled with their respective operation. To select an option, highlight the appropriate button and press ENTER. The button will appear to have been pressed and the selection will have been made. Button Windows can be moved to any location on the screen as long as no part of the window exceeds a screen boundary. To move the current Button Window, press SPACE. When SPACE is pressed, the window will appear highlighted. Use the arrow keys to move the window to the new position and press ENTER. Save Environment Option:~~ You can save screen configurations with the "Save Environ" option on the main menu. When you select this option, you will be prompted to either Save or Load an environment. In either case, a prompt will follow requesting an environment name. To save the current environment, enter a name at the prompt that you wish to call the current configuration. To load an environment, enter the name of the desired environment. Press Shift-F1 at the prompt for a pick-list of available environments. A saved environment includes Button Window positions, current set of User Defined Operations, (see "User Defined Operations",) and highlighted button choices. dB Help! automatically saves the current environment upon quitting so that next time it is used, it will appear the same as when you quit the previous time. Entry Windows:~~ An "Entry Window" is a box that appears on the screen containing prompts requesting information. This information includes file names and parameters for an option selected from a Button Window. If you are in an Entry Window and your cursor is at a prompt requesting a file name, in most cases you can press Shift-F1 to pop up a pick-list of applicable files, (based on file extension.) If you choose to type the file name, dB Help! will add a default extension if none is specified. For other prompts, consult documentation for instructions. If dB Help! cannot find the file, it will search the DOS PATH for it, and if the file is in the PATH, you will be prompted to accept the file. If you cannot remember the exact spelling of a file name, you can enter the file name surrounded with {}'s to pop up a list of similar spellings. Progress Gauge:~~ For most operations in dB Help!, a "Progress Gauge" will appear in the middle of the screen to give the user an idea of how far along the process has gone and how much left there is to do. Help:~~ dB Help!'s on-line documentation can be activated with the F1 key in most areas of the program. Mouse Support:~~ dB Help! offers a form of mouse support for your Microsoft mouse. To use a mouse, you must have CPANEL.COM and QM.COM. CPANEL comes with the Microsoft mouse or is available through Microsoft. QM is a mouse definition for QEdit and is available through Ashton-Tate's Bulletin Board System. Before executing dBASE to run dB Help!, type the following command at the DOS prompt, (or include it in your AUTOEXEC.BAT file): SET MOUSEMENU=ON Run CPANEL and adjust the sensitivity of the mouse to 15, (once CPANEL is loaded into memory, it can be activated with Ctrl-Alt-LeftMouseKey.) Run QM, load dBASE, and run dB Help!. Once inside dB Help!, use the mouse to move the highlight from left to right in a Button Window. Use LeftMouseKey for ENTER and RightMouseKey for ESCape. In an Entry Window, pick-lists will automatically appear when appropriate. If the pick-list does not contain a desired file name, press the RightMouseKey while in the pick-list for the "Word-Builder". The Word-Builder allows you to use the mouse to select letters and characters to build a file name. Hot Keys:~~ In most areas of the program, you can press F1 to activate the internal documentation system for on-line help. In most areas, F5 will pop up a "Video Calculator". In most file entry areas as well as other areas, Shift-F1 will pop up a pick list of pertinant choices. During most operations, you can press ESCape to abort the operation. In some cases, you may have to press ESCape repeatedly to abort. Other Options:~~ If you have an older computer, dB Help!'s expanding boxes and sound responses may become an annoying obstacle when trying to select an option. You can use the following SET command in DOS before running dBASE to control these aspects of dB Help!'s interface: SET BLOWBOX=OFF to pop up windows without expanding them, and... SET ANNOY=OFF to disable sound responses in dB Help!. Importing from or Exporting to a Text File~ ========================================== Before importing/exporting a dBASE DBF file from/to a text file, you must first have an idea of what the text file is supposed to look like by answering the following questions: 1. What character DELIMITs each character field? Typically, a text file will contain a special character that surrounds, or DELIMITs, each character value. 2. What character(s) SEPARATE each value? This is usually a comma; however, some applications - WordPerfect for example - expect to see a character and a carriage return/line-feed. If the character or characters you want do not exist on the keyboard, you must know what their ASCII values are. 3. What character(s) are used to indicate the end of a record? Almost always a carriage return/line-feed. Some applications expect other characters in addition. When you are ready to export, choose the Import/Export option from the Main Menu. A sub-menu will appear with three options. Choose "Import" if you are importing your database, or "Export" if you are exporting your database. The third option, "Custom", will be discussed later in this section. After choosing the appropriate option, an Entry Window will appear requesting a DBF file, a text file, and other information. Shown below are the requests made by dB Help! and how to respond to them... Import/Export File:~~ This is the name of the data file which will receive imported data or send exported data. You can type in the file name or use Shift-F1 for a pick list, (or if you have set up your mouse to work with dB Help!, the pick list appears automatically - see the "dB Help! Interface Features" section.) If you are importing, this file must have been created before using dB Help!. The file structure must be able to accommodate the incoming data. Text File:~~ This is the name of the text file which is being imported or the text file you wish to export data to. As with the first entry, a Shift-F1 pick list of TXT files is available. Fields List :~~ If you are exporting to a text file, you can include a list of fields that are to be written. Specify each field in the order which they appear in the database file structure and separate each with a comma. Leave this entry blank if all fields are to be included in the export. Filter Exp :~~ If you are exporting to a text file, you can specify a filter to determine which records to copy out based on a condition. If you choose to specify a condition, type in a valid dBASE IV expression, optionally delimited with "{" and "}". If you do not need a filter, leave this entry blank. Delimiter:~~ When you enter this field, a menu will appear. This menu contains pre-defined formats which are customizable, (discussed in the "Customizing the Import/Export Menu" section.) If you select an option from this menu, you can press ENTER and go or edit the other entries before continuing. Press ESCape to remove the menu if it does not apply. If you do not use the menu, enter the character that delimits each character value in the text file, (as discussed earlier.) If there is no character delimiter, leave this entry blank. If you are exporting, you can optionally enter "SDF" if you want data to be exported in System Data Format. Separator:~~ Type in the character or characters that separate each value in the text file. If you delimit the entry with "{" and "}", dB Help! will evaluate the entry as a dBASE IV expression. This allows you to use characters that cannot be entered from the keyboard. If you use this option, you can use the dB Help! reserved word RETURN in place of CHR(10)+CHR(13), (carriage return/line-feed.) End Record:~~ Enter the character or characters that indicate the end of a record. As with the Separator entry, you can delimit the entry with "{" and "}" to cause dB Help! to evaluate the entry as a dBASE IV expression. You can also use the RETURN keyword as described in the Separator explanation. Overwrite :~~ Use the Space Bar to change to YES if you want any current records in the Import File to be erased before Importing. Leave this option at NO if you wish to append the imported records to the bottom of this file. When all of the entries have been made, you can press ENTER from the last entry field to start the process. Respond accordingly to any warning prompts. A Progress Gauge will appear and dB Help! will attemp to Import/Export your text file, (see the "dB Help! Interface Features" section.) Customizing the Import/Export Menu~ ================================== When entering Import/Export parameters, a menu of pre-defined formats appear when you enter into the Delimiter entry field. The purpose of this menu is to alleviate the process of having to enter a delimiter, separator, and end-of-record character for an often-used Import/Export format. dB Help! comes with a comma- delimited definition and a sample definition that works with some versions of WordPerfect. You can remove these and/or add your own and give your format a name which will appear on the Import/Export menu. To do this, select the "Custom" option from the Import/Export sub-menu. A browse style screen will appear. Find a blank entry and type in the desired name of the Import/Export format, (this is the name that will appear in the popup menu.) Using TAB and SHIFT-TAB to move from field to field, enter the Import/Export parameters as labeled in each field. Press Ctrl-End to save chenges and additions you have made in the menu. Converting Mixed-Case Data~ ========================== This option allows you to convert data in a character field from all upper-case or mixed case data so that the resulting data is all lower-case with the first letter of each word capitalized. To use this option, select "Data Modify" from the main menu, and "UpToLow Case" from the ensuing menu. Before using this option, you must identify the desired Split Characters. A "Split Character" determines when the end of a word in the field has occurred. The character that is encountered after the Split Character will be capitalized. After choosing the appropriate option from the menus, an Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... File Name:~~ Enter the name of the database which this operation is to be performed on. Field Name:~~ The name of the field in the requested database which this operation is to be performed on. Split Chars:~~ Enter the Split Characters, (as discussed above,) surrounded with brackets. dB Help! provides several defaults so that it may be unnecessary to add anything to this field. After these entries have been correctly made, dB Help! will display a Progress Gauge and perform this task. Splitting Character Fields~ ========================== This option allows you to extract words from a character field and place them into their own fields on the same record. You also have the option of splitting from Left to Right or from Right to Left, (or "Forward" and "Reverse", respectively.) As a example, suppose you have the following record in a database: NAME Daniel Stewart Madoni NAME would be divided into: NAME FIRST MIDDLE LAST Daniel Stewart Madoni Daniel Stewart Madoni Or with the REVERSE option: NAME FIRST MIDDLE LAST Daniel Stewart Madoni Madoni Stewart Daniel Choosing to split only two of the three words would result: NAME FIRST MIDDLE Daniel Stewart Madoni Daniel Stewart Or with the REVERSE option: NAME FIRST MIDDLE Daniel Stewart Madoni Madoni Stewart Before using this option, you must modify the structure of the database to contain the new fields, (in the above example, you would add FIRST, MIDDLE, and LAST.) You must also identify the desired Split Characters. A "Split Character" determines when the end of a word in the field has occurred. To implement this task, choose "Data Modify" from the main menu, and "Field Split" from the sub-menu. At this point, another Button Window appears with "Forward" and "Reverse" options. Choose the direction that dB Help! should split data to the receiving fields, (as discussed earlier.) At this point, an Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... File Name:~~ This is the name of the database that the task will be performed on. Master Field:~~ The field conatining the data to be split. In the above example the Master Field would be NAME. Receiving Fields:~~ These are the field(s) that will receive the split data. Enter the fields in the order that they should receive the split and separate them with commas. Split Chars:~~ Enter the Split Characters, (as discussed above,) surrounded with brackets. dB Help! provides several defaults so that it may be unnecessary to add anything to this field. After these entries have been correctly made, dB Help! will display a Progress Gauge and perform this task. Purging Duplicate Records~ ========================= This option gives you the capability of deleting duplicate records from your database. You can delete duplicate records based on a field or on an expression. For example, if you want to delete based on a field: NAME Dan Madoni Dan Madoni Dan Madoni Mary Dunn Mary Dunn would result: NAME Dan Madoni Mary Dunn based on the field, NAME. But if you have the following: NAME Dan MADONI Dan Madoni mary dunn Mary Dunn you would have to use the expression, UPPER(NAME) to achieve similar results since the values are mixed case. If you had the following and you wanted to delete duplicates based on NAME and ADDRESS: NAME ADDRESS Dan Madoni 18101 Elm St., Torrance, CA Dan Madoni 18101 Elm St., Torrance, CA Dan Madoni 299 Magnolia, Los Angeles, CA Mary Dunn 1919 Big Rocks Lane, Beaumont, CA Mary Dunn 1919 Big Rocks, Beaumont, CA would result: NAME ADDRESS Dan Madoni 18101 Elm St., Torrance, CA Dan Madoni 299 Magnolia, Los Angeles, CA Mary Dunn 1919 Big Rocks Lane, Beaumont, CA Mary Dunn 1919 Big Rocks, Beaumont, CA with the expression, NAME + ADDRESS. From the main menu, select "Data Handling", then select "Purge Dups" from the sub-menu. After choosing the appropriate option from the menus, an Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... File Name:~~ Enter the name of the database which this operation is to be performed on. Expression:~~ Character Field Name or Character Expression which determines a duplicate record, (as discussed above.) Search and Replace Text in Memo Fields~ ====================================== You can use this option to globally search a memo field for an occurrence of a specified character string, and replace that string with a different string, similar to the way it is done in an editor or word-processor. To use this option, select "Data Modify" from the main menu, and "Search/Replace" from the ensuing menu. After choosing the appropriate option from the menus, an Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... File Name:~~ Enter the name of the database which this operation is to be performed on. Memo Name:~~ The name of the memo field which this operation will be performed on. Search:~~ The text to search for. If you delimit this entry with {}'s, dB Help! will evaluate the entry as a dBASE expression. Otherwise, it will be evaluated as a literal expression. Replace:~~ This is the text that will take the place of the text you are Searching for. You can use {}'s for a dBASE expression as mentioned in the Search entry description. When all the entries have been made, a Progress Gauge will appear in the middle of the screen and the task will begin. A second Progress Gauge will appear under the first for each memo that is processed. Stripping EOF Characters/Fixing a Database Header~ ================================================= Because computer hardware is not foolproof, you may experience data corruption from time to time. It is because of this that Ashton-Tate recommends making frequent backups of your databases. dB Help! may be able to recover data from a corrupted data file if the corruption falls under one of two categories: 1. There is an End-of-File (EOF) character in the wrong place in the DBF file. If, for example, you are BROWSEing a database that bottoms out at record 10 even though the Status Bar indicates that there are more than 10 records in the file, you may be encountering this kind of corruption. 2. The database header is damaged. If you consistently get the error message "Not a dBASE database" when you try to open the file, then the header has been damaged. Before attempting to recover your data, you must create a new database with the EXACT same structure as the damaged database. This new database will receive the recovered data so that the original database is not modified. You must also make sure that the damaged database is no larger than 64,000 bytes since dB Help! cannot accommodate such a large file. To recover the data, choose "Data Recover" from the main menu. If you have determined that the database has a bad EOF character, choose "Strip EOF". Otherwise, choose "Header Fix" if the header is damaged. After choosing the appropriate option from the menus, an Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... Load File:~~ This is the new database file with the same structure as the damaged file that will receive the recovered data. From DBF:~~ Enter the name of the damaged database file. After entering this information, dB Help! will begin attempting data recovery. This process may be time-consuming if the damaged database is large. Pressing ESCape during the operation will NOT add to the damage of the original database. Once the process has completed, the new database will contain the data from the damaged database, (if all has gone successfully.) Dumping Database Header Information~ =================================== If you have the capability to edit the DBF header directly and if you understand the mechanics of a dBASE IV DBF header, the "Header Dump" feature may be very useful. This option creates and optionally prints a text file listing of the decimal value of each byte in the header. Suppose you have a database with the following structure: Structure for database: C:\DBHELP\TEST.DBF Number of data records: 0 Date of last update : 02/07/91 Field Field Name Type Width Dec Index 1 FIRSTNAME Character 15 N 2 LASTNAME Character 20 N ** Total ** 36 Using this option, a header dump from dB Help! with the above structure would result: dB Help! Version 3.0 Database Header Dump: TEST.DBF 旼컴컴컴컴컴쩡컴컴컴컴컴쩡컴컴컴컴컴쩡컴컴컴컴컴쩡컴컴컴컴컴� � 0: 3 � 1: 91 � 2: 2 � 3: 7 � 4: 0 � � 5: 0 � 6: 0 � 7: 0 � 8: 97 � 9: 0 � � 10: 36 � 11: 0 � 12: 0 � 13: 0 � 14: 0 � � 15: 0 � 16: 0 � 17: 0 � 18: 0 � 19: 0 � � 20: 0 � 21: 0 � 22: 0 � 23: 0 � 24: 0 � � 25: 0 � 26: 0 � 27: 0 � 28: 0 � 29: 0 � � 30: 145 � 31: 0 � 32: 70 � 33: 73 � 34: 82 � � 35: 83 � 36: 84 � 37: 78 � 38: 65 � 39: 77 � � 40: 69 � 41: 0 � 42: 0 � 43: 67 � 44: 0 � � 45: 0 � 46: 0 � 47: 0 � 48: 15 � 49: 0 � � 50: 0 � 51: 0 � 52: 0 � 53: 0 � 54: 0 � � 55: 0 � 56: 0 � 57: 0 � 58: 0 � 59: 0 � � 60: 0 � 61: 0 � 62: 0 � 63: 0 � 64: 76 � � 65: 65 � 66: 83 � 67: 84 � 68: 78 � 69: 65 � � 70: 77 � 71: 69 � 72: 0 � 73: 0 � 74: 0 � � 75: 67 � 76: 0 � 77: 0 � 78: 0 � 79: 0 � � 80: 20 � 81: 0 � 82: 0 � 83: 0 � 84: 0 � � 85: 0 � 86: 0 � 87: 0 � 88: 0 � 89: 0 � � 90: 0 � 91: 0 � 92: 0 � 93: 0 � 94: 0 � � 95: 0 � 96: 13 � 97: 26 � If the database header is damaged, dB Help! defaults to a 50-field interpretation of the header. You can modify the default with dB Help!'s DUMP environmental variable which is SET in DOS before loading dBASE IV. For example, to set the field-size default to 70, you would use the following SET command: SET DUMP=70 If the header is not damaged, dB Help! automatically calculates the header size. Choose "Data Recover" from the main menu and "Header Dump" from the sub-menu. After choosing the appropriate option from the menus, an Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... File Name:~~ The name of the file which is to have its header dumped to a text file. Output to:~~ The name of the text file which will contain the header dump. When the information has been entered and accepted, dB Help! will display a Progress Gauge to indicate that the text file is being written. Modify the Structure of a Database ================================== dB Help! allows you to modify the structure of a database similar to the way that dBASE IV does. From the "Handy Tools" sub-menu, choose "Modify Struct". Enter the name of the database file in the ensuing Entry Window. dB Help! will display a scrollable field list along with a Button Window. You can scroll the fields list up and down with the UpArrow/DownArrow keys and you can highlight the buttons with the LeftArrow/RightArrow keys. Once you have positioned the desired field to the highlight, you can use the buttons in the following manner: Edit Field:~~ To change the type and size of the field. You cannot change the field name. Add Field:~~ To add a new field to the database. The new field will be placed just before the highlighted field. Delete Field:~~ To delete the highlighted field from the database. Save:~~ To save the modified structure. The changes to the structure of your database will not take effect unless you choose "Save" from the menu. Upon choosing "Save", dB Help! will create a database with the modified structure. WARNING: Index tags may be lost. To abort making any changes to the structure, press ESCape. Back Up and Restore Data~ ======================== Having a backup of your data is crucial if your business relies on DBF information for its continued operation. Backing up data can be a tedious task using DOS's BACKUP/RESTORE commands. dB Help! includes a Backup/Restore utility that is designed especially for backing up DBF information. Before using Backup, you must prepare several formatted disks, (they do not need to be blank, but they must not contain any files with the same name as the database.) You must also determine an average Memo Size. This is an estimate of the average size, (in number of characters,) that a memo can be if you have a memo field. If the estimated memo size is too small, you may get a Disk Full error if your database requires more than one disk to back up to. If the estimated memo size is too big, there will be a large amount of wasted space on the backup disks should your database require more than one disk to back up to. If you do not have a memo field, the average Memo Size would be 0. To use this utility, select "Handy Tools" from the main menu and "Backup Data" from the ensuing menu. Upon making this selection, dB Help! will display another Button Window displaying a "Backup" choice and a "Restore" choice. Choose "Backup" to back up DBF data to disk(s), or "Restore" to restore data backed up by dB Help!. An Entry Window will appear with the following prompts: If you are Backing Up... File Name:~~ Name of the database that is being backed up to disk. Copy to:~~ Either A: or B:. Toggle the choices by pressing "A" or "B" or by pressing the Space Bar. Memo Size:~~ This is an estimated average Memo Size as discussed above. Once the entries have been made, dB Help! will proceed to copy the database on to as many disks as are needed - prompting for a new disk to be inserted each time one is needed. Be sure to label the disks accordingly or the resulting restore operation may place the data out of natural order. If you are Restoring... File Name: The name of the database file that is being Restored. Location:~~ Either A: or B:. Toggle the choices by pressing "A" or "B" or by pressing the Space Bar. dB Help! will proceed to prompt for disks in the selected drive. When there are no more disks to restore, press ESCape. Editing Data, Text, and Programs~ ================================ To view/edit a Database File, Text File, or Program File, select "Handy Tools from the main menu and "Edit Types" from the menu that follows. Another Button Window will appear with the choice "Data", "Text", and "Program". Select the desired editing type and enter the File Name in the ensuing Entry Window. If you choose to edit a database, a BROWSE screen will appear after speciying the file name. Otherwise, the dBASE IV editor will appear. What Time is It?~ ================ To display the current time, choose "Handy Tools" from the main menu and "Show Clock" from the ensuing menu. A clock will appear. The clock disappears with any key except for the Space Bar, (which puts the clock window in move mode as with Button Windows.) User-Defined Operations~ ======================= You may find that the tasks that are performed with dB Help! may be a required part of your data-processing needs. In order to prevent the necessity to duplicate the same process every time it is needed, dB Help! provides User-Defined Operations, (UDO's.) A UDO can be one of two types: 1. A dBASE IV program. 2. A dB Help! key sequence, (similar to a macro.) Once a UDO has been defined, it can be activated from a Button Window. The button that activates the UDO can be labeled to the user's liking. Defining a dB Help! UDO as a dBASE IV Program:~~ Before defining a UDO as a program, the program must first be written. The program can consist of any sequence of commands as long as it does not CLEAR MEMORY, RELEASE ALL, or in any way erase memory variables that are currently being used by dB Help!. To assign the program to a UDO button, select "Handy Tools" from the main menu and "User Define" from the ensuing menu. dB Help! will display a Button Window with three buttons labeled as "Undefined Operation". Highlight the desired button and press ENTER. Another Button Window will appear with the choices, "Execute", "Define", "Save", and "Load". From this menu, select "Define". An Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... Type:~~ Either "Program" or "Macro", toggled by Space Bar. Choose "Program". Specify (This prompt changes depending on the previous prompt):~~ Enter the name of the program that is to be executed for this button. Label 1:~~ The first line to appear as a label on the button. Label 2:~~ The second line to appear as a label on the button. Executing the UDO is discussed later in this section. Defining a dB Help! UDO as a Key Sequence:~~ You must know ahead of time what keystrokes are needed to accomplish the desired task. A Key Sequence UDO begins from the main menu and ends wherever the Key Sequence takes it. When determining what keystrokes will be needed, always assume a HOME keystroke when entering a new menu to start the highlight at the first button in that menu. To assign a Key Sequence to a UDO button, select "Handy Tools" from the main menu and "User Define" from the ensuing menu. dB Help! will display a Button Window with three buttons labeled as "Undefined Operation". Highlight the desired button and press ENTER. Another Button Window will appear with the choices, "Execute", "Define", "Save", and "Load". From this menu, select "Define". An Entry Window will appear requesting pertinent information. Shown below are the requests made by dB Help! and how to respond to them... Type: Either "Program" or "Macro", toggled by Space Bar. Choose "Macro". Specify (This prompt changes depending on the previous prompt): Enter the keystrokes by choosing them from a Shift-F1 pick-list. If the keystroke is a literal character on the keyboard, type the character as-is from the keyboard. The entry area will scroll to the left up to 200 characters. Label 1: The first line to appear as a label on the button. Label 2: The second line to appear as a label on the button. Executing a UDO:~~ To execute a defined UDO, choose "Handy Tools" from the main menu, "User Define" from the subsequent menu, and then the button with the deired UDO label from the ensuing menu. Upon doing this, another Button Window will appear with the choices, "Execute", "Define", "Save", and "Load". From this menu, select "Execute". The UDO will be implemented. Loading and Saving UDO's:~~ You can Load and Save the current set of UDO's to a specified file name. To do this, choose "Handy Tools" from the main menu, "User Define" from the subsequent menu, and then any of the UDO buttons. Upon doing this, another Button Window will appear with the choices, "Execute", "Define", "Save", and "Load". From this menu, select "Save" or "Load". At the Entry Box, enter the file name to Save/Load. Accessing DOS~ ============= To access DOS while inside dB Help!, choose "Handy Tools" from the main menu and "DOS" from the menu that follows. When you have made these selections, you will be in the operating system until you type EXIT and press enter. Many programs that are normally run from DOS may not run in dB Help!'s DOS access because of the memory taken up by dBASE IV and dB Help!.