*** HANDLES.ASM Handles.ASM (December p. 26, dBASE III PLUS) Handles.ASM is an assembly language program that you LOAD and CALL allowing you to check the number of DOS file handles available at any given time from within dBASE III PLUS. It assumes your FILES setting in CONFIG.SYS is 20. If your "Too many files are open" error condition is caused by a problem with CONFIG.SYS, this utility is not useful. Additionally, if you have LOADed and CALLed ADDFILES.BIN from the dBASE Programmer's Utilities to extend the total number of file handles available under DOS 3.0 and above to over 20, you need to add five to the result of Handles. Files Needed: Handles.ASM or Handles.BIN Handles.BIN is an assembled and linked version of Handles.ASM. You can LOAD and CALL this file from within dBASE III PLUS. Handles.ASM is the assembler code that you can study and change if you like. *** SETPRINT.ASM Setprint.ASM (December p. 17, dBASE III, dBASE III PLUS) This program allows you to store up to ten sets of printer control codes in a data table and send these codes to your printer from dBASE III, dBASE III PLUS, or DOS. There are three files: Setprint.BIN, Setprint.ASM, and Patchprt.PRG. Setprint.ASM is the assembly language program that stores the printer codes in a data table and sends them to your printer. If you want to execute this program from DOS or RUN it from dBASE, assemble it to a .COM file format. Setprint.BIN is the same program assembled as a .BIN file so that you can LOAD and CALL it from within dBASE III PLUS. Patchprt.PRG is a dBASE III PLUS program that provides a way for you to add, edit, and change codes stored in the data table without having to reassemble and link Setprint.ASM. Setprint (.COM or .BIN) Setprint accepts one parameter, either a ? or a number between 0 and 9 inclusive. The number you enter (0 - 9) sends the control codes corresponding to that table position to the printer. If you are executing it as a .BIN file, the parameter is a character string. If you are executing it as a .COM file from DOS or dBASE, the parameter is a literal. For example, LOAD Setprint CALL Setprint WITH "3" or RUN Setprint 3 You can use the ? symbol as a parameter to display a list of the codes stored in the table. Patchprt.PRG When using Patchprt, enter the printer control codes as literal characters or as ASCII decimal values. ASCII decimal values must be entered as three-digit numbers delimited with braces, such as {027} for Esc. Enter each code from left to right without separating them with spaces or commas. For non-printable characters, such as Esc, always use the ASCII decimal value. For example, on an Epson printer, the code sequence for double-strike is Esc G. You can enter this in either of the following ways: {027}G or {027}{071} Each sequence is limited to 26 codes. This limitation refers to the actual number of ASCII codes sent, not to the number of characters used to send the control codes. For example, the letter "A" and its ASCII decimal equivalent {065} are both considered a single code. Files Needed: Patchprt.PRG, Setprint.ASM or Setprint.BIN -- SetPrint.ASM To use Setprint.ASM from within dBASE III or dBASE III PLUS, your computer must have at least 320K of RAM. To assemble Setprint.ASM as a .COM file, the following files must be available, either in the same subdirectory as SetPrint.ASM or through the DOS PATH command: MASM.EXE (the IBM Micorsoft Macro Assembler, version 2.0 or higher), LINK.EXE and EXE2BIN.EXE (included on the DOS Supplemental Programs disk with verison 2.0 and higher). From the DOS prompt, type: MASM Setprint.ASM; LINK Setprint; EXE2BIN Setprint.EXE Setprint.COM -- Patchprt.PRG When using Patchprt, Setprint (.BIN or .COM) must be in the same subdirectory. The DOS file DEBUG.COM must also be available. To execute the program, type DO Patchprt from within dBASE III PLUS. *** MEDIT.BAT Medit.BAT (November p. 18, dBASE III PLUS) This program is a DOS batch file that allows you to use MultiMate Advantage as the dBASE III PLUS text editor. The program makes three assumptions: 1. MultiMate Advantage is not in the dBASE III PLUS directory. 2. The conversion program, UTIL, is installed correctly and is in the same directory as MultiMate Advantage. 3. Your computer has enough RAM (320K) to run MultiMate Advantage within dBASE III PLUS. Files Needed: Medit.BAT To set up the program, copy Medit.BAT to the dBASE III PLUS directory. Then add one or both of the following command lines to your CONFIG.DB file: TEDIT = MEDIT WP = MEDIT and MEMOWIDTH = 65 In addition, install the MultiMate conversion utility, UTIL, with the following parameters: Edit ASCII Defaults To ASCII: Use Document Summary Screen for Page One ? NO Accept Extended Characters ? NO Line End Sequence ? CR/LF Page End Sequence ? No Page End Replace Tabs with Spaces No Remove Underlining ? Yes From ASCII: Remove Page One ? NO Remove Extended Characters ? YES Line End Sequence ? CR/LF Remove Returns Where Possible ? YES Lines per Page (1-150) ? 055 F9 to Edit Format Line *** MENU.BAT Menu.BAT (March p. 29, dBASE III PLUS) This program allows you to set up a front-end menu system using DOS batch files. The following three files are used: Menu.BAT, Menu.DAT, and Choose.COM. Menu.BAT is the controlling program that calls Menu.DAT and Choose.COM. Menu.DAT contains the menu screen and is TYPEd to the screen by Menu.BAT. Choose.COM waits for keyboard input before returning a DOS ERRORLEVEL back to Menu.BAT. Files Needed: Menu.BAT, Menu.DAT, Choose.COM To set up this program, modify Menu.DAT to reflect the menu options that you want. In addition, modify Menu.BAT to change the messages that display and the program paths stated. To use the program, copy Menu.BAT, Menu.DAT, and Choose.COM to the root directory of your hard disk. Then, either type MENU from the DOS prompt or include MENU as the last line in your AUTOEXEC.BAT file. *** FW.DEF FW.DEF (December p. 7, Framework II) This program allows you to interface the Microsoft Mouse with Framework II. You can, for example, navigate and select options through the Framework II pull-down menus, execute macros, and redefine the function of each mouse button. Fw.DEF is the driver program written in the Microsoft Mouse language, and Mouse.BAT is a batch file that installs the mouse driver each time you execute Framework II. Files Needed: FW.DEF, MOUSE.BAT Before using the Microsoft Mouse with Framework II, install a text mode driver (such as the IBM Color Text driver). The mouse does not work wll with a graphics screen driver. To install the Microsoft Mouse driver, follow these steps: 1. Copy the following files from the Microsoft Mouse disk to your Framework II subdirectory: MOUSE.COM, MENU.COM, and MAKEMENU.EXE. 2. Copy FW.DEF and Mouse.BAT to your Framework II subdirectory. 3. From the DOS prompt, execute MAKEMENU and convert FW.DEF to FW.MNU. *** HELP.COM Help.COM Files Needed: Help.COM, Help.REC This menu-driven help facility includes information on all the files on the TechNotes Disk. The arrow keys can be used to navigate through the menu on-screen, and pressing the RETURN key chooses a help file to display. The Home key takes the highlight to the first file, and the End key takes it to the last. The PgUp and PgDn keys take the cursor to the top and bottom of the current column. All the help files can be printed at once from the main menu, and a single file can be printed once its contents are displayed. In either case, the printing is started by pressing 'P'. Printing can be halted by pressing the F10 key. The help facility can also be started by typing HELP FILENAME from the DOS prompt. If the file is found, its help will be displayed. If not, the main menu will be displayed. Press F10 twice to return to DOS. *** PROTEAN.FW Protean.FW (February p. 38, Framework) Protean 1: This routine allows you to validate a filename and to prompt the user if the filename selected is not valid. Protean 2: This routine ensures that an existing file is not overwritten without verification. Protean 3: This routine can be used to test for the boundary of a frame (end-of-file). Any attempt to advance to a nonexistent character, frame, spreadsheet cell, or database record sets @isabend to #TRUE. Files Needed: Protean.FW Protean.FW includes three separate @isabend routines. Each routine can be incorporated in one of your programs. *** ADD.FW2 Add.FW2 (November p. 34, Framework II) This program automates the data-entry process by navigating the cursor through the fields and records for you. Once you press Return in one field, the program automatically moves the cursor to the next field or record, (depending on which field the cursor is on at the time). Esc terminates the program. Files Needed: Add.FW2 Set this up as a macro with @setmacro({Alt-A},Add.Getfields). To execute this data-entry program, create a spreadsheet with the following column headings: Date, Check No, Payee, Amount. Then, move the cursor to the first column of a blank record, press Alt-A, and follow the screen prompts to enter records. Press Esc to exit the program. *** ADDLIB.FW2 Addlib.FW2 (Framework II) Addition to the Framework II Library. To setup this addition to your Framework II Library, load ADDLIB.FW2 on the desktop, and COPY it into the Library frame. Make sure that the Alt keys defined are not already used in the Library frame. --Bold (Alt-A) Label Style: Bold Highlight a frame label and press Alt-A to style it in bold text. This macro can be used with the Ctrl- repeat key. -- Box (Alt-B) Box-drawing macro. Press Alt-B from inside a word frame. The word frame must be alligned left in order to use this macro. You'll be prompted for the width and height of the box to be drawn. Be sure to create the box before entering the text. Otherwise, the box will overwrite any text in its path. If the width chosen is greater than the right margin, the right side of the box is not drawn. -- @LString Extracts the left portion of a character string. @LString( ref , chr , logical ) ref is the character string. chr is the specified character. logical, when #TRUE, retains chr in the extracted substring and omits it when #FALSE. See also, Alt-L. -- @MString Extracts the middle portion of a character string. @MString( Ref , chr1 , chr2 , logical1 , logical2 ) ref is the full-length character string. chr1 is the character where the extraction begins. chr2 is the character where the extractions ends. logical1 and logical2 are parameters that determine whether chr1 and chr2 are retained (#TRUE) or ignored (#FALSE) in the extracted string. If "312/555-1212" resides in a Framework II database field named Phone, the line @MString( Phone , "/" , "-" , #TRUE , #FALSE ) extracts "/555" (retains chr1, ignores chr2) and the line @MString( Phone , "/" , "-" , #FALSE , #TRUE ) extracts "555-" (ignores chr1, retains chr2). See also, Alt-M. -- Normal (Alt-F) Label Style: Normal. Highlight a frame label and press Alt-? to style it in normal text. This macro can be used with the Ctrl- repeat key. -- @RString Extracts the right portion of a character string. @RString( ref , chr , logical ) ref is the character string. chr is the specified character. logical, when #TRUE, retains chr in the extracted substring and omits it when #FALSE. See also, Alt-R. -- Italic (Alt-I) Label Style: Italic. Highlight a frame label and press Alt-? to style it in italic text. This macro can be used with the Ctrl- repeat key. -- Autotype.FW2 (Alt-K) Automates the typing of keynames when using @performkeys. When programming, press Alt-K to enter a keyname. When prompted, press the key to be named and then Ctrl-Break. The macro will type the keyname for you. --Alt-L Extracts left portion of a character string in a word frame. Highlight the character string and press Alt-L. You'll be prompted to specify the rightmost character (that is, where the macro should end in selecting characters for the new string) for use in the substring and whether you want this character included in the new string. The old string will be deleted and the new string will replace it. See also, @LString. -- Alt-M Macro to extract middle portion of a character string in a word frame. Highlight the character string and press Alt-M. You'll be prompted for the rightmost character (seg2) and the leftmost character (seg1). The resulting character string will be the characters between seg1 and seg2. You'll also be prompted on whether you wish to retain the characters selected as seg1 and seg2. See also, @MString. -- Alt-N Converts a text number into a numeric value. Highlight the offending text number and press Alt-N. -- Alt-R Extracts right portion of a character string in a word frame. Highlight the character string and press Alt-R. You'll be prompted for the leftmost character (that is, where the macro should start in selecting characters for the new string) for use in the substring and whether you want this character included in the new string. The old string will be deleted and the new string will replace it. See also, @RString. -- Alt-T Converts numeric value to text. Highlight the offending numeric data and press Alt-T. See also, Alt-N. -- Underline (Alt-U) Label Style: Underline. Highlight a frame label and press Alt-U to style it in underlined text. This macro can be used with the Ctrl- repeat key. -- Alt-W Macro to widen a c h a r a c t e r s t r i n g. Highlight the character string and press Alt-W. The old string will be deleted and the new w i d e string will replace it. -- Trace.FW2 (Alt-Y) Automates the selection of @trace. Press Alt-Y from the desktop. From the menu, select ON or OFF. If you select ON, a frame called "trace" is created, which will hold the results of the trace operation, and trace is turned on. If such a trace frame already exists, the trace operation will use it. Press Alt-S again to select OFF. *** BACKUP.FW2 Backup.FW2 (Alt-V) (September p. 40, Framework II) Macro to back up a frame as a text file or frame file. Highlight the frame to be backed up. Press Alt-V and you'll be prompted for the new file type (T for text file, F for frame file) and the file extension. When the back-up file is written, you'll be returned to your work. *** CALCSIZE.FW2 Calcsize.FW2 (Alt-O) (July p. 47, Framework II) Macro to calculate the width of a spreadsheet for printing. Load the spreadsheet frame to be sized to the desktop. Press Alt-O and supply beginning and ending columns at the prompts. The width will be displayed at the bottom of the screen. *** COPYPROG.FW2 Copyprog.FW2 (Alt-C) (August p. 53,Framework II) Macro to copy highlighted frames to floppy disk from hard disk. Press Alt-C from anywhere on the desktop. You'll be prompted to highlight the frames to be copied. You can highlight a whole subdirectory. Press Return and the highlighted files will be copied to drive A:. *** ELAPSED.FW2 Elapsed.FW2 (@Elapsed_Time) (July p. 46, Framework II) Determines the elapsed time between start/end dates. @Elapsed_Time( starttime , endtime ) starttime and endtime must be date-type values created with @datetime, and can be located in a spreadsheet cell or a database record. The returned value is a character string consisting of the elapsed hours, minutes, seconds, milliseconds in the format HH:MM:SS.mm *** ENGLDATE.FW2 Engldate.FW2 (@Engldate) (August p. 52, Framework II) Compares English dates. @Engldate( ref ) where ref is the English-type date field (created with @date1 or @date4). *** ENGSCI.FW2 Engsci.FW2 (@Engsci) (October p. 39, Framework II) Formats in scientific notation with a mantissa less than one. @Engsci( , ) Because Engsci (like @scientific) returns a character-type data, use @value to convert the formatted string to a numeric value. *** FILLCHAR.FW2 Fillchar.FW2 (@Fillchar) (December p. 31, Framework II) Program to fill a region with a range of ASCII characters. To call Fillchar, use the following general syntax: @Fillchar(asc_code, inc, region) The parameter asc_code is the ASCII decimal code that you want to start with, inc (increment) is numeric, and region is standard region reference. For example, @Fillchar(65, 1, Test.Cabinet) ^------- ASCII code for letter A See also, Filldate. *** FILLDATE.FW2 Filldate.FW2 (@Filldate) (December p. 29, Framework II) Program to fill a region with a range of dates. To call Filldate, use the following general syntax: @Filldate(month, day, year, inc, region) Pass the parameters month, day, year, and inc (increment) as numerics. Pass the region parameter as a standard region reference. For example, @Filldate(12, 1, 1986, 1, Test.A1:Test.A31) See also, @Fillchar. *** FW_2_DIF.FW2 Fw_2_dif.FW2 (September p. 16, Framework II) This program converts a Framework II spreadsheet into a DIF file format. It is to be included as an Add-in to the Disk:Export submenu. Files Needed: Fw_2_dif.FW2 Through the Framework II Setup program, add this routine to the Dis:Export:Add-in submenu. For instructions on how to do this, refer to "Add-ins for Converting Other Formats," on page 10-19 of the Using Framework II manual. Once the program is included as an Export Add-in, highlight the spreadsheet frame to export, and execute the program from the Disk:Export submenu. The resultant file will have a .DIF extension. *** GO_RECNO.FW2 Go_recno.FW2 (Alt-G) (October p. 40, Framework II) Simulates a "GOTO Record Number" command. From inside a database frame, press Alt-G. You'll be prompted for the record number/row number. The macro will calculate the shortest route to the specified row and will move the cursor to that position. *** HEX.FW2 Hex.FW2 (@Hex) (April p. 37, Framework II) Calculates the hexadecimal value of a decimal number. @Hex( n ) where n is a decimal number. The formula will return the hexadecimal value of n. *** KEYSET.FW2 Keyset.FW2 (Alt-J) (October p. 38, Framework II) This macro allows you to define the length of an input string and a set of acceptable keys. Keyset uses two variables: key_count ::= length of input string key_mask ::= acceptable characters From within a frame, press Alt-J to execute and Esc to exit. *** LABELPGM.FW2 Labelpgm.FW2 (March p. 14, Framework II) This program automates the process of selecting a label-printing template and of printing mailing labels. Files Needed: Labelpgm.FW2 Load Labelpgm and your database frame to the desktop. Highlight Labelpgm and press RECALC (F5) to initialize the macros. Press Alt-L to begin. You will be asked to supply: * Height of label in lines (# should be at least 1 more than the actual # of lines you wish to print) * Width of label in characters * Number of labels across * Name of database frame After the label frame is created, the cursor is placed in the frame so that you can enter the field names within <>. When you finish, press Alt-C. The frame will be copied across, all the print attributes set, and the labels printed. *** NAMED_RA.FW2 Named_Ra.FW2 (Alt-P) (July p. 45, Framework II) Macro to name of range of cells in a spreadsheet for referencing. Within a spreadsheet frame, press Alt-P. Use cursor pointing to select the range of cells to be named. Supply the name for this range when prompted. Use the name in place of a region reference in formulas in your spreadsheet. *** PFS2FW2.FW2 Pfs2fw2.FW2 (March p. 36, Framework II) This program transfers data from a pfs:file to Framework II. However, because Framework II cannot import a pfs:file directly, you need to create a pfs print file. And, a pfs print file places all blank fields at the end of the file; so, you'll need to place data in all the blank fields so that they are placed correctly in the print file. From pfs:file: Make sure each field is no longer than one line. Add a dummy value to all blank fields (a lowercase x, for example). Select print from the pfs:file main menu, enter a "NO" for printing item names, and enter a filename for the print file. Make the number of lines per page equal to the number of fields in the file and set the number of copies to one. On the print spec menu, enter an x for every field. From Framework II: Import the pfs print file as an ASCII text file. Create a database frame with the same number of fields and records (or more). Label the database frame Db, name the first field First and the last field Last. Load Pfs to the desktop and press RECALC (F5). When prompted, highlight the ASCII text file, press Dnlevel, and then Alt-T. Make any changes and save the new database file. *** PICTURE.FW2 Picture.FW2 (@Picture) (October p. 21, Framework II) Simulates the dBASE PICTURE clause. @Picture( , , ) The format parameter defines the maximum length and data type of the spreadsheet or database cell input. The number of characters in the format determines the number of input digits accepted. Use "9" for numeric data amd "X" for character data. Any other character you use in the format parameter displays as a literal and is considered part of the data. The lower limit and upper limit parameters are used with numeric data to define a continuous range. Picture is called by your data-entry program. It assumes that the cursor is in a cell into which you wish to enter data. (If it is numeric data, it assumes you are in EDIT FORMULA.) Execute Picture to accept and format the data. Navigate to the next cell and call Picture again. The sample programs, Database.FW2 and Sheet.FW2, demonstrate how to use Picture with databases and spreadsheets. *** PROMPTCE.FW2 Promptce.FW2 (@Promptcenter) (September p. 39, Framework II) Erases the prompt area and places centered message. @Promptcenter( "Message goes here..." ) When executed, the prompt area erases and the specified character string is placed as a centered message. It includes an error-checking routine so that you'll see an error message if you fail to include the parameter ("message"), if the message is not a character string, or if the message is longer than 80 characters. You can style the message with bold or italics if it is a literal string. *** REPLACE.FW2 Replace.FW2 (November p. 43, Framework II) This macro was developed because sometimes you may want to search and replace data only within highlighted text in a word frame. Framework II supports search and replace of selected regions in spreadsheets and databases frames but not in word frames. When you execute Replace, it prompts you for the search string and the replacement string. Files Needed: Replace.FW2 To set up the program move Replace.FW2 to the Macros section of your Library and name it with the appropriate Alt- combination. To execute Replace, highlight the block of text you want to search and replace within and press Alt-. *** RUNDBASE.FW2 Rundbase.FW2 (March p. 27, Framework II) This program allows Framework II users with hard-disk systems to run dBASE from the APPS menu even though dBASE resides in a subdirectory. It also eliminates the need for the output frame, which is created by the Rundbase provided with Framework II. Instead, a local variable is created for use with the @run command. Note: If you wish to run dBASE from within Framework II, we recommend that you have at least 640K of RAM in your machine. Files Needed: Rundbase.FW2 Copy this program to your Framework II subdirectory. This program assumes that your copy of dBASE resides in a \DBASE subdirectory of your root directory on the C: drive. If it resides elsewhere or the directory has a different name or drive specifier, modify this program appropriately. When you exit dBASE, you will be returned to your desktop and current directory. *** SPACING.FW2 Spacing.FW2 (Alt-S) (October p. 43, Framework II) Allows user-defined variable line spacing within a document. The program uses a spacing flag within your document so you'll need to set up your word frame with spacing flags before you invoke the macro. The spacing flag used by the program is .SP followed by the number of the desired lined spacing (that is, .SP 1, .SP 2, or .SP 3). This flag should be placed in the left margin before each line where you wish the spacing to change. Press Alt-S to reformat the document. You can reformat the frame manually or reset the spacing flags and re-invoke the macro. *** SYM2FW2.FW2 Sym2fw2.FW2 (July p. 26, Framework II) This program allows you to transfer data from Symphony to Framework II. You'll need to be familiar with the differences between FRED and Symphony formulas. You'll have to edit some of the formulas after the data is transferred because some of the functions are different and some work differently. And, all formatting, column widths, and label alignment will be lost in the translation process and will have to be set up again in Framework II. Any repeat key cells (\) in Symphony will not repeat in Framework II; use @rept or type in the repeated information. Files Needed: Sym2fw2.FW2 From Symphony: Create a print file from your Symphony spreadsheet with these settings: F10 Range Name Reset Yes F10 Range Name Create Translate (highlight range to be transferred) F10 Range Label-Alignment Left Translate F10 Format Reset Translate F9 Print Settings Source Range Translate Destination File Tempfile Other Attributes No Page Breaks No Margins No-margins Other Format Cell-formulas Quit Align Go From Framework II: Load Sym2fw2 to the desktop. Load Tempfile to the desktop and rename it Symphony. Create a spreadsheet frame with as many rows and columns as in the Symphony (Tempfile) file and name it Frame. SIZE (F4) and DRAG (F3) both frames, Symphony and Frame, so that they are visible on the desktop. Highlight the Sym_to_F frame and press RECALC (F5). Press Alt-G. Check the data and formulas and edit them if necessary. *** TABSTOP.FW2 Tabstop.FW2 (March p. 18, Framework II) This program allows you to create variable tab stops in a word frame by redefining the Tab key with @keyfilter. Files Needed: Tabstop.FW2 Load Tabstop onto the desktop and press RECALC (F5). Press Alt-S and enter your new tab stop values (up to ten different tabs) by specifying the column numbers. To redefine your tab stops, press Alt-S. To return to normal Framework II tab operation, press Alt-Q. Note: Resetting the line width may require manual reformatting. *** TABSTRIP.FW2 Tabstrip.FW2 (January p. 34, Framework II) This program removes tab characters from word frames by retrieving the current tab size and replacing the tab characters with the same number of spaces. Files Needed: Tabstrip.FW2 Load Tabstrip onto the desktop and press RECALC (F5). You are prompted to highlight a word frame (you can load one onto the desktop at this time). Then, press Alt-S. When the tabs are stripped, you'll be returned to the desktop. *** TCMBUILD.FW2 Tcmbuild.FW2 (November p. 28, Framework II) This program creates and formats a spreadsheet called TCM Report that contains your .TCM file definitions. This program allows to view your .TCM file settings without having to navigate through the various Telecommunications menus. Once this TCM Report spreadsheet is built, you can print it with a simple print macro called Prtrepo.FW2. Files Needed: Tcmbuild.FW2, Prtrepo.FW2 To set up this program, move the file Prtrepo.FW2 to the Library, naming it with an Alt- combination. Then, load Tcmbuild.FW2 to the desktop. To build the TCM Report spreadsheet, highlight Tcmbuild.FW2 and press F5. To print the report, press Alt-. *** TCM_DIAL.FW2 Tcm_dial.FW2 (December p. 32, Framework II) This program can help you keep track of all your bulletin board listings and provide you with the same kind of fast-and-easy access available through Framework II's Telecommunications menu. There are two programs: Tcm_dial.FW2 and Update.FW2. Tcm_dial.FW2 automates the dialup process and Update.FW2 records the access date and time. It uses a macro already furnished by Framework II, Alt-F4 (time). Use this macro after you have logged off a bulletin board. Files Needed: Tcm_dial.FW2, Update.FW2 To use this program, first create a Framework II database named RBBS with the following fields: Field Description Bulletin Board RBBS/Information service City City where RBBS is located State State where RBBS is located Phone Access phone number Sysop System operator's name Board RBBS Software TCM File .TCM filename Last Access Date of last logoff Log Off Time of logoff Days Since Number of days since last logoff In the formula area of Days Since, enter the following code: @set(Days Since, @list( @if(@iserr(@sumdate(Last Access,1)), "No access", @diffdate(@datetime(@date,@time),Last Access) ) ) ) To use this program, assign the Tcm_dial.FW2 and Update.FW2 any Alt- you want. Then, position the cursor on the row (in the database) that corresponds to the name of the service you want to access and press Alt-. Once you have logged off the bulletin board, press Alt- to initiate the Update macro. *** WORDCHEC.FW2 Wordchec.FW2 (Alt-X) (July p. 48, Framework II) Macro to check spelling of single or phrase from edit line. From the desktop, press Alt-X. You'll be prompted to type a word or phrase on the edit line. The program will execute Ctrl-A S B to begin the normal Framework II spelling check. You can use all the Framework II spelling check features to get suggestions or to edit the text. After the spelling check, press a key to return to your work. *** WORDTRAP.FW2 Wordtrap.FW2 (Alt-Z) (December p. 45, Framework II) This macro was developed to work around the limitations of the @t command, which only traps for one character. It can be called from your telecomm macro to wait for a given string before proceeding, such as "tion:". To use the macro, change the value of target to equal the string you want to trap. Currently, trap := "tion". *** WRAPCELL.FW2 Wrapcell.FW2 (November p. 44, Framework II) This macro word wraps long spreadsheet labels within the column width. It works much like 1-2-3's /Range Justify command, which word wraps long spreadsheet cell labels. To set up Wrap_cell.FW2, move it to the Macros section of your Library and name it with the appropriate Alt- combination. Before executing Wrap_cell, follow these guidelines: 1. Select Locate:Allow Editing from the frame border of the spreadsheet to make sure that there are no protected cells in the spreadsheet. 2. Construct your spreadsheet from the left to right and top to bottom. This will prevent overwriting existing labels and formulas. 3. As you work on each column for the first time, size it appropriately so that when you wrap long labels you will get the correct wrapping margin. To execute the macro, highlight the spreadsheet cell that has the long label and press the Alt- for Wrap_cell. *** AGE.PRG Age.PRG (November p. 8, dBASE III PLUS) Age.PRG accepts a date passed to it and calculates and displays the person's age from the current date in the format: "x years old" where x is the calculated age. Files Needed: Age.PRG To execute the program, use the following general syntax: DO Age WITH *** AMORTIZE.PRG Amortize.PRG (December p. 36, dBASE III PLUS) This program (Amortize.PRG and Schedule.PRG) uses dBASE Tools for C to calculate and print an amortization schedule based on the following input values: * principal (initial amount of loan) * rate of interest per year * periods (number of payments per year) * payment made already * years of loan (from start) Files Needed: Amortize.PRG, Schedule.PRG Before running these programs, be sure to read your dBASE Tools for C documention. To execute the program, type DO Amortize. *** AMPM.PRG Ampm.PRG (November p. 6, dBASE III PLUS) The program displays the time in the more familiar twelve-hour format. Ampm.PRG uses the SUBSTR() function to separate the hours and minutes from the time string you pass. These elements are then converted to the twelve-hour format. Files Needed: Ampm.PRG To execute Ampm, use the following general syntax after initializing a return variable. ret_val = "" DO Ampm WITH