Clipper [tm] Summer '87 Replacement Disks: Fixed Anomalies Copyright (c) 1988 Nantucket Corp. All Rights Reserved. --------------------------------------------------------------------- We appreciate those users who took time to report porblems and those of you who helped us verify them as well. The following anomalies have been fixed by the replacement disks sent to all registered users of Clipper Summer '87. Those of you who opted for the new documentation should also receive the remaining chapters of documentation with your replacement disks. APPEND FROM...SDF/DELIMITED with WHILE Clause APPENDing from a text file, SDF or DELIMITED, and using the WHILE option resulted in a doubling of the size of the text file. This problem also occurred with the NEXT option. ASORT(get_array) If you DECLAREd an array, initialized it with NUMERIC data, did some GETs into some of them, then performed an ASORT() on the array, it would ASORT() the elements that were changed by the GETs independent of the other elements. ASORT(semi-filled array) If you DECLAREd an array, filled about half of it with data, and then performed an ASORT(), the unfilled elements assumed the last data and the whole array would then be sorted. CLEAR Area Greater than Screen Now, with the replacement disks, any coordinates beyond the maximum boundary will result in non-execution of that command. (This did not previously happen.) Clipper + Disk Cache + Expanded Memory A combination of Clipper, a disk caching utility and expanded memory gave an "OPEN error" error upon the opening of index files. (Note: It was also reported that the FAT table could be destroyed if this error was ignored and you typed "Y" at the "continue?" prompt.) Debug + DOS Shell Debug's DOS Shell would not be invoked once a USE file had been executed. If you insisted, the machine hung. Debug + Display Database + Indexes Option + NDX.OBJ Debug's option of the DISPLAY/DATABASE sub-menu would not show the INDEXKEY expressions of open NDX files. Debug + Display/Database + ALT-G If you "quick-keyed" from Display/Database mode in Debug with the ALT-G or ALT-S keys, and CLOSEd all open DBFs before Debug was invoked again, you fell into an endless loop. Debug + Display/Database/Structure Debug's Display/Database/Structure option would not display the structure of a file that had only one field. Debug + Display/Expression Debug's Display/Expression option returned an "" error on inquiries that included a function or variable. EMPTY(memo_field) The EMPTY() function would not operate properly with memo fields. GETting .T. into Logical Memory Variable Comparisons performed between a .T. logical memory variable and a .T. logical DBF field and/or a .T. constant, would not always return a true value. Indexing in a Network Environment In a multi-user environment, simultaneous indexing of different large DBFs by different workstations working on the same subdirectory resulted in index corruption. This was caused by the temporary file CLIPSORT.TMP, created during the indexing of a large DBF, being overwritten by each workstation INDEXing. INDEX ON An INDEX ON finished at the end of file unlike previous Clipper versions. REINDEX still returned you to the TOP of the file as designed. INPUT TO Memvar + No_entry Hitting the carriage-return without entering anything at an INPUT TO command would returned a "expression error (in macro)" error. INT() + Extra Leading Spaces The INT() function placed an extra space in front of the number being INT()ed. LABEL FORM + Blank Field 1. The LABEL FORM command, upon encountering a blank field specified in the LBL file, would hang on that record. 2. If in the LBL file, a blank CONTENT field (or a CONTENT field that had an expression that evaluated to blank), preceded other non-blank CONTENT fields, the system would hang. LOCATE FOR and SET FILTER TO Multiple Macros If you tried to LOCATE FOR multiple macros that were not dot-terminated, the system hung. The same occured with the SET FILTER TO command. MEMOEDIT(.F.) + String Greater than Window Length MEMOEDIT() with the .F. option (browse mode) would not adjust a very long string to fit within its window coordinates. MEMOEDIT(one_line) If you tried to do a one-line MEMOEDIT() window, the auto-scroll was thrown off if you typed continuously beyond the end of the window. MEMORY(0) + SET CLIPPER=X The MEMORY(0) function did not properly adjust with respect to "SET CLIPPER=Xnnn.". Now if the "X" value is raised, the MEMORY(0) function will reflect the increase by almost the same amount. MEMO_field + CHARACTER_memvar You could not concatenate a memo field with a character string without encountering a "type mismatch" error. NETNAME() NETNAME() had been completely disabled. Numeric ALIASes A field could not be referred to by its numeric alias with predictable results. PACK The PACK command could corrupt records if no index files were opened. PCOL() The PCOL() function would not reflect any horizontal changes on the ? print statements. PICTURE "@B" + Numeric Punctuations The "@B" option (left-justified numerics) for the PICTURE clause would not conform with punctuated numeric fields. PICTURE "@XC" The "@XC" option of the PICTURE clause would not display anything for a positive number, and both "CR" and "DB" for a negative number. PLINK86-Plus [tm] + LIB Overlay At link time, when trying to create internal or external overlays, if you included "OVERLAY" in the "LIB" directive, you would get a "BAD FIXUP COUNT IN SECTION" error. Any attempt to execute the resulting EXE hung the machine. Printing Incompatibility with Autumn '86 The SET DEVICE TO PRINT command did not obey "non-print exclusive" coordinates as it did with Clipper Autumn '86. RANGE + DBF Field The RANGE clause returned a "type mismatch..." error if you tried to GET into a DBF field. This occured even if the types did match. This problem occurred with DBF fields only. GETting into a memvar functioned correctly. REPORT FORM + "HEADER" Option If the HEADER option was used in the REPORT FORM command, the name of the report form file was printed in place of the specified header. REPORT FORM + Sub-sub-total The REPORT FORM command would not Sub-sub-total. RESTSCREEN()ing One Line of Screen You could not RESTSCREEN() one line of a screen that was previously saved by SAVESCREEN(). Re-routing Printer Output to File after No-printer Error If you tried to send output to the printer and the printer was not ready, the PRINT_ERROR() function would be invoked which redirects the output to a text file. This is what should happen except the function would write "garbage" to the file before the data was written. SAVE SCREEN TO Memvar to Field If you saved screens to a DBF, closed it, then re-used it and restored from that field, the restored screen would have garbage in it or hang the machine. SAVESCREEN() The SAVESCREEN() function randomly saved more of the screen than specified. SCROLL()ing One Line The SCROLL() function would not operate properly when one line was cleared or if there was only one column to be scrolled. SET CLIPPER=S1 The "S1" option of the SET CLIPPER environment setting only cleared snow from about three-fourths of the screen. The left side of the screen still got snow. Also, if you SET CLIPPER=S1 on a monochrome hardware configuration, the machine hung upon execution of a Clipper-compiled application. SET FILTER + SET RELATION A RELATION set in one area would cause an existing FILTER in the other related area to lose its expression identifier unless preceded with its alias. SET FILTER TO a Logical Field = .T. If you SET FILTER TO a "logical field = .T.", everything was screened out. SET FIXED ON + Picture Clause You would hang the machine if you did all of the following: 1) SET DECIMALS to a number greater than the decimal configuration in your DBF, 2) SET FIXED ON, 3) assign a numeric FIELD to a memvar, 4) then do a GET on that memvar with a PICTURE clause that does not accommodate for the decimals. SORT + (DBF with DBT) If you SORTed a DBF that had an associated DBT file, the target DBT file was truncated to 512 bytes. SUM 1. The SUM command ignored the DECIMAL configurations of the DBF. 2. The SUM command randomly returned numeric overflow asterisks where it should not have. TYPE() The TYPE() function was being "indeterminate" in its evaluation of functions. VAL() The VAL() function required that a decimals-only string be preceded with a "0" (zero); otherwise, a numeric overflow would be returned. -------------------- Nantucket is a registered trademark and Clipper is a trademark of Nantucket Corporation. PLINK86-Plus is a trademark of Phoenix Technologies, Ltd.