>>> @...CLEAR TO @...CLEAR TO does not erase a single line from the screen, although the @...TO draws a single line on the screen. The minimum vertical area @...CLEAR TO erases is two lines. For example, @ 2,0 TO 2,79 @ 2,5 CLEAR TO 2,25 draws a line from 2,0 to 2,79 but does not erase from 2,5 to 2,25. >>> @...GET...READ Performing an @...GET on a PRIVATE memory variable created in a lower program and RETURNing to the calling program and issuing a READ will cause the GET to display on screen, but will not allow input. For example, DO WHILE .T. DO Test READ && Test.PRG sets up a PRIVATE variable. ENDDO * ---Test.PRG mem1 = SPACE(2) @ 12,41 GET mem1 && This GET will never be READ. RETURN Under certain circumstances, this will cause the PICTURE template of some @...GET commands to be read into the GET as a literal value. This occurs if the command @...SAY DATE() is executed before READing the PRIVATE memory variable and if the PICTURE template meets its own criteria as valid input. For example, a "9" is valid input to the PICTURE template "9." Once this occurs, every PICTURE template that meets its own criteria will be read as a literal value. The READ ignores the GET and the value of the field or memory variable is not changed. The only way to stop this is to reload dBASE III PLUS. For example, DO WHILE .T. mem = SPACE(6) @ 10,41 SAY DATE() @ 11,41 GET mem PICTURE "999999" READ DO Test READ && Test.PRG sets up a PRIVATE variable. ENDDO mem will always be read as "999999" until dBASE III PLUS is reloaded. >>> ASSIST When in ASSIST, performing any full-screen edit on a record found with Position/Locate will disable the Continue option. Upon returning from a full-screen operation, the Continue option will not be highlighted and may not be accessed. >>> ASSIST In ASSIST, whenever a drive is chosen from any menu of available drives, that drive becomes the default drive. >>> CREATE REPORT In CREATE REPORT, if Return is pressed twice while highlighting the contents area of the Columns menu, an empty column is created in the report form. This causes a "Syntax error in field expression." when the REPORT FORM is executed. The blank column is represented in the REPORT FORM with a question mark, which is documented as representing a memo field in the column contents. >>> CREATE SCREEN When on the blackboard in CREATE/MODIFY SCREEN, pressing Ctrl-T with the cursor on a line to the left of a special character (!,?,.,@) will lock the computer requiring a warm boot. >>> CREATE SCREEN When using CREATE/MODIFY SCREEN to draw a box, if SET STATUS is ON, terminating a box at column 79 and at a row greater than 21 and then pressing the PgUp key will break the box into two sections, overwriting the menu line. Line zero is now inaccessible. Saving the screen and re-issuing CREATE/MODIFY SCREEN will not correct the problem. If a box must terminate at this location, SET STATUS OFF before entering CREATE/MODIFY SCREEN. >>> FIND Using the FIND command with a macro (&) and in-line comments (&&) may return "No find." even though there are matching records in the index file. This works correctly if the variable contains the entire key value or if the key contains an embedded space and the variable contains key information up to the embedded space. For example, if the key field contains "FIRST" or "FIRST LAST", the commands x = "FIRST" FIND &x && This is a comment. execute correctly. If, however, the variable contains "FIR", the example above returns "No find." Terminating the macro with a period does not change the result. To include in-line comments with a FIND and macro, the comment must begin flush against the macro or terminator. For example, x = "FIR" FIND &x && This will not work. No find. FIND &x. && This will not work either. No find. FIND &x&& This will work. FIND &x.&& This will work, as well. >>> INDEX/REINDEX The INDEX and REINDEX commands may produce "File is not accessible." and damage the index files in use. This occurs when the length of the key field and the length of the path to the .NDX file exceed 100 characters. This does not occur with very small files, but adding records will eventually produce the error. For example, if the key length is 85 characters, INDEX ON TO \Division\Three will return the "File is not accessible." error message. INDEX ON TO \Division\Four will create the index file as expected. The first path name is 15 characters in length, the second path name is 14 characters. The length of the filenames and directory names do not matter individually, so long as their combined length in the path name does not exceed 14 characters. Further, not all key expression and path name combinations that exceed 100 characters produce the error. Occasionally, SET INDEX TO will work, but a subsequent REINDEX will return the "File is not accessible." error message. Other times, SET INDEX TO will appear to work, though a GOTO will return "Record is not in index." SET PATH TO \Division\Recorder followed by SET INDEX TO Three will also work. In this case, a subsequent REINDEX will execute properly because it follows the path previously set. SET TALK has been shown to affect the REINDEX command used with large files. REINDEXing with SET TALK OFF returns the error message "File is not accessible." USEing the file and index returns "Index damaged. REINDEX should be done before using data." REINDEX may work properly, however, if SET TALK is ON. >>> READ A READ command with no active GETs will stop execution of dBASE III PLUS until any key is pressed. dBASE III PLUS will not return to the dot prompt until any key is pressed. In a command file, execution will stop at the READ statement until the next key is pressed. The cursor is positioned to the right of its last screen position. >>> SET CATALOG TO Attempting to SET CATALOG TO when the maximum number of files is already open will delete all entries from the catalog, except those referring to files currently open. >>> SET CATALOG TO If a path to the root directory of any drive is specified with the SET PATH TO command, the SET CATALOG TO command will return the error message "File is not accessible." if it must create a CATALOG file on a directory other than the default directory. For example, SET PATH TO B:\ * ---dBASE III PLUS is not on the root directory. * ---C:\Test.CAT does not already exist. SET CATALOG TO C:\Test File is not accessible. <---Error message. >>> SET HISTORY TO SETting HISTORY TO a number greater than the default of 20 will interfere with the DISPLAY HISTORY command. The message "Press any key to continue..." will appear, sometimes repeatedly, before the commands in HISTORY are displayed. This message will also appear intermittently as HISTORY scrolls. >>> SET MESSAGE TO SET MESSAGE TO will accept any length message although only the first 79 characters display. >>> SET PRINT ON There are a number of reported instances of the "Printer not ready." error message appearing on parallel as well as serial printers. This occurs whenever SET PRINT ON, SET DEVICE TO PRINT, TO PRINT, or SET PRINTER TO is used. Printing from DOS or other software packages works properly, but dBASE III PLUS returns an error message whenever printing is attempted. >>> SET PRINTER TO A serial communication port usually cannot be specified with the SET PRINTER TO command, although this will work intermittently. An attempt to SET PRINTER TO COM1 or SET PRINTER TO COM2 may return the "Printer not ready" error message even though the printer is on-line and ready to print. The work-around is to use the RUN command to load the resident portion of PC-DOS MODE into memory. For example, RUN MODE LPT1=COM1 This work-around may fail, however, if MODE is loaded from COMPAQ DOS. If MODE is used to redirect LPT1 to COM1, it is unnecessary to SET PRINTER TO COM1 from within dBASE III PLUS. This will return "Printer not ready." >>> SET PRINTER TO Issuing SET PRINTER TO with no parameters will inhibit all output to the printer. Commands such as LIST TO PRINT and REPORT FORM TO PRINT will echo to the screen but will not print. SET PRINT ON will not allow output to the printer. In fact, while DISPLAY STATUS shows that output has been assigned to LPT1, the default, it has not been assigned to any device at all, therefore no printing can occur. If a SET DEVICE TO PRINT is issued, dBASE III PLUS will not output to the screen or printer. It may appear to be frozen at this point, but it is fully functional, except that it is not outputting any data. It is necessary to SET PRINTER TO to resume printing. >>> SET PRINTER TO With a serial printer properly configured with MODE, if a SET PRINT ON command is issued, a later SET PRINT ON or SET DEVICE TO PRINT command will return the "Printer not ready." error message. SET PRINT OFF must be issued first. SET DEVICE TO PRINT followed by SET PRINT ON works as expected. This problem does not occur with a parallel printer. >>> SET UNIQUE ON Indexing with SET UNIQUE ON or INDEX ON TO UNIQUE will work with small files (less than 100 records), but will fail in one of several ways when indexing larger database files. 1. INDEX with UNIQUE may seem to execute properly, but create an index file that is neither unique nor a complete index. 2. INDEXing a database file with the UNIQUE clause or with SET UNIQUE ON can lock the computer causing one lost cluster on the disk. This leaves behind two files, an .NDX file containing 0 bytes and a larger file with the extension .W44. This file is a temporary file created during the indexing procedure. Under normal circumstances, it is deleted when INDEX terminates. 3. The INDEX command with UNIQUE sometimes will not lock the computer but continue to create the index until an Esc key is pressed (if SET ESCAPE is ON) or the available disk storage is consumed, generating a "Disk is full" error message. >>> TOTAL TOTALing ON TO while using a database file that has no numeric fields may produce an "Internal error: EVAL work area overflow" or "Internal error: Illegal opcode" error message. The resultant file will be created and control is returned to the dot prompt. Occasionally, this will display "Internal error: EVAL work area overflow" and "Divide overflow" then lock the computer, requiring a cold boot. >>> TRANSFORM() Using the TRANSFORM() function with an argument combining the @( and @B functions will display extraneous characters following the output. For example, ? TRANSFORM(-10,'@(B9999') (10.00 )) <---Result. The extra characters may be another parenthesis, a field name, or the argument from a previous function.