You are on page 1of 25

DATAFLEX REVISION 3.

1 RELEASE NOTES
This Revision
DataFlex 3.1 is the revision that brings together the DataFlex language and Data Access Corporations Database Application Program Interface (API). The API was originally developed as a separate product from the DataFlex language. It provides most of the capabilities of both the runtime and the utilities, such as File Definition and Sort, through the various functions it defines in the "C" language. It also provides for nearly transparent connectivity to files produced by other database systems through the use of loadable modules called "database drivers." DataFlex programmers will have the ability to manipulate and restructure data files, both DataFlex and those from systems supported by the APIs database drivers, from within a DataFlex program. DataFlex 3.1 is also the revision in which the DataFlex Application Framework (DAF) has been fully integrated with the product. Framework is a methodology and related software that enables developers to productively design and write object-oriented programs in DataFlex in a short, easy learning period, whether they are experienced in DataFlex or new to it. It is Data Access Corporations recommended and supported way to create DataFlex applications. As you can see, the core of the DataFlex product has undergone major changes, even besides those mentioned above. The purpose of this document is not to provide detailed descriptions of the changes, improvements, and features. That information is contained in the DataFlex Update to 3.1, which, like this document, is supplied in

DataFlex Revision 3.1 Release Notes

electronic form (see the Installation Notes for more information). The most-notable DataFlex 3.1 enhancements are: Connectivity API flexibility DataFlex Application Framework Integration New Commands and Command Changes Minimum transaction control for local DataFlex databases New Utility: DFIMPORT Program specifications Optimized finds Some of these are briefly described in the following.

Connectivity
In this revision, the internal structure of the DataFlex runtime has been re-engineered to cleanly divide application-processing functions from database-management functions. The database-management functions are defined in an application programming interface (API). The application-processing functions of DataFlex access all databases, including the DataFlex database, through the API and associated database drivers. The DataFlex database driver is statically linked into the runtime executable. Drivers for other databases are dynamically linked at runtime, depending on the operating systems dynamic-link libraries. Multiple drivers can be linked and operated by a single instance of the DataFlex runtime. Other than the DataFlex database, further database-connectivity projects are underway at Data Access Corporation currently: the DataFlex Server driver, a Btrieve driver and a driver for the Intersolv DataDirect (formerly known as Q+E) ODBC libraries. The DataDirect product provides ODBC-based connectivity to Oracle, Sybase, Informix, dBASE, Paradox, and many other database environments. As we develop these and other drivers, they will be made available to you upon request.

DataFlex Revision 3.1 Release Notes

API Flexibility
DataFlex now supports direct access to the full range of database functions in the API from within a DataFlex program. With direct API access, developers are able to restructure, sort, and query attributes for any file supported by the DataFlex API. DFQUERY has also been modified to use the API, thus making it possible to run DFQUERY on any file supported by the API. Note: All constants provided by the API (e.g., DF_FILE_COMPRESS_STANDARD) are now available as reserved words in the DataFlex language. They are defined in FMAC as #REPLACE statements and should be used with API-related commands. Do not use the literal values these constants represent. Data Access reserves the right to change the values of these constants in the future without notice.

Framework Integration
DFAUTO now generates Framework-compliant code. Although you design your applications in the same way as before, the code generator in DFAUTO now calls a DataFlex program, AUTOGEN, that generates Framework-compliant code in the form of packages or a complete application. DFQUERY now generates code that uses the new Report Object package. Last, a new manual, Developing Applications with DataFlex, has been provided with new examples that are in a subdirectory called TUTORIAL\.

Minimum Transaction Control for Local DataFlex Databases


The DataFlex database now provides a simple mechanism for backing out operations done during a begin_transaction/ end_transaction or lock/unlock pair. Although this is not the type of security associated with client/server applications, its main purpose is to allow you to write your programs under the assumption that the database driver is capable, at a minimum, of backing out

DataFlex Revision 3.1 Release Notes

transactions that are in memory. Without this minimum level of functionality, you would have to write different versions of your programs depending on whether the database driver or you handle backing out transactions in the event of errors, deadlocks, etc. For more information, refer to the Begin_/End_/Abort_Transaction commands as well as the API attribute DF_FILE_TRANSACTION.

Revision Compatibility
To run a program compiled with any revision prior to 3.1, you must first recompile the program with the DataFlex 3.1 compiler. Also, .FLX files compiled in Revision 3.1 or later cannot be run by earlier revisions of DataFlex! DataFlex 3.05 source files, however, are fully compatible with 3.1 and should compile without any problems. Data Access Corporation recommends that data files modified under any utility or program under Revision 3.1 thereafter not be run with a DataFlex runtime of earlier revision. Likewise, no data file should be opened concurrently by DataFlex runtimes of different revisions, regardless of whether the data file has been modified.

Lock Command
The lock command will now time out if it cannot get a lock. The length of time before the lock command times out can be changed by setting the value of the DF_LOCK_TIMEOUT attribute, and the number of retries can be changed with the set_transaction_retry command. The defaults are 60 seconds and 15 retries, respectively. You may find that some of your existing programs may begin to generate errors or display different behaviors. In some cases, this may be a bug; however, there may be some situations in which the new error or behavior is to be expected. An example of this is that the lock command can now time out. When such behavior is undesired, you will need to make some minor modification to your existing program (such as setting the DF_LOCK_DELAY attribute to reduce the frequency of lock attempts).

DataFlex Revision 3.1 Release Notes

Command Omitted from Documentation


The get_current_output_channel was omitted from the documentation. It has the same syntax as, and performs the same functions as the get_current_input_channel command, except that it is for the output channel instead of the input.

DFINDEX Utility
The DFINDEX program has been dropped, as of this revision of DataFlex. DFSORT should be used for reindexing DataFlex files. Also, the new utility DFADMIN (the .FLX version) will handle sorting of files (DataFlex and others), both from the command line and as an interactive DataFlex program.

Windows 95 on NetWare
When running Windows 95 on a Novell network, programs that only read (do not write) data from a file may not have access to updates to that file made by other users while the program runs. You can overcome this behavior by having your read-only program perform a write to the file from time to time, which will flush the Windows VCACHE buffer. An alternative that requires no changes to your program code is to place the line ReadCaching=0 in your Windows SYSTEM.INI file in the [NWREDIR] section.

The Development Assistance Reporting (DAR) System


This section reports the current status of behavioral anomalies and bugs that have come to our attention. If you have experienced one or more of these, you can search for its description in the table below by module (the part of DataFlex) that you have experienced it in. If you have acquired knowledge of its number, you will find that the DARs have been listed by number within module. The DARs are listed below with the following items for each:
DataFlex Revision 3.1 Release Notes 5

MODULE:

The part of DataFlex in which the problem manifests itself. The tracking number. If you call in to discuss a problem in this list, please try to use one of these numbers to identify the matter. The current state of resolution, or the type of DAR, as follows: FIXED: This is a bug that has been fixed. Bugs of this status have been included only from the list of the last previous release of DataFlex. Likewise, these will not be included in the list for the next release. HINT: Information to assist in effectively setting up and using the DOS 386 Protected Mode product. IMPLEMENTED: Changes that have been made to the product since a previous revision. KNOWN_BUG: Problems in the product which we are aware of, but which could not be fixed in this revision of the product.

DAR#:

STATUS:

SUMMARY:

A description of the problem or behavior including (if appropriate) preventive or remedial steps that may be taken to avoid or reduce the undesired effects thereof.

As you encounter problems and/or develop solutions, please share them with us! You can do so by posting messages on our CompuServe Forum (GO DACCESS), or by sending a Fax or letter to Quality Control, Data Access Corporation. Again, wherever possible, please note the DAR number, even if you are not sure the problem you are experiencing is an exact match. Also on our CompuServe forum, you will from time to time find updated versions of the following list.

DataFlex Revision 3.1 Release Notes

Module

DAR# 6975

Status KNOWN_BUG

Summary Field entry prompt button option in DFAUTO is not being shadowed correctly. It always appears shadowed, even though it works correctly. Sorting array values that were set using the ARRAY_VALUE message will not sort properly.WORKAROUND: Use the VALUE message instead. Saving a file with a name longer than 11 characters in DFPDS causes a memory violation. If you put { retain } on a DEO, when the object is first instantiated, the changed_state of the object is set to TRUE for some reason. The edit object should now correctly wrap lines that end in a word followed by a space. Destroying an object may fail to release a small amount of memory. The DFINDEX utility has been dropped as of version 3.1. Users should either use the DFSORT command line utility, DFFILE, or the new DataFlex program DFADMIN instead. The Action_Bar Palette showed Color 30 as POINTED but actually was Color 15. There was the same problem with SELECTED. The codes in DFCONFIG have been corrected to 15 in Default Image. Timers now correctly restart upon return from a CHAIN WAITed to program. The make_file command creates database files having the rootname CONTAINED IN the definition in the named .DEF file. This MAY or MAY NOT be the rootname of the .DEF file itself. This behavior has always been the specification for make_file. Earlier revisions of the documentation have been incorrect in suggesting otherwise.

7927

KNOWN_BUG

8089 8095

KNOWN_BUG KNOWN_BUG

8134 8163 8360

FIXED KNOWN_BUG IMPLEMENTED

8374

FIXED

8457 8468

FIXED FIXED

DataFlex Revision 3.1 Release Notes

DAR# 8545

Status IMPLEMENTED

Summary The older 3.05 utilities (DFFILE, DFSORT, DFAUTO, and DFMAINT) will work correctly on DataFlex 3.1 files; however, they do not currently support other data formats. This will be corrected in a future revision. DF_FILE_HANDLES is not implemented in any operating system. The number of file handles cannot be set in the DataFlex database driver; it must be set in the operating system. CURRENT_ITEM property not updated by keyboard input for edit objects. In DOS, running out of file handles or exhausting SHARE resources may cause a DOS critical error "Error reading drive..." message. WORKAROUND: Increase file handles or increase SHARE resource space. When setting the value of an array element using the ARRAY_VALUE message, if the value for the item contains an expression referencing CURRENT_OBJECT, the reference will always resolve to the array even if it is not the current object. The runtime has been modified to always recognize the decimal point character (including the keypad decimal point) as a decimal separator and date delimiter in addition to the character selected in Configuration. DFCONFIG does not create any DFINI.CFG file if DFCONFIG is exited with all parameters unchanged from their defaults. This is the intended behavior. DATA_SETs may clear a system file if a error occurs during a database operation; the system file does NOT have to participate in the transaction for this to occur.

8548

SOLVED

8646 8868 Module

KNOWN_BUG KNOWN_BUG

8872

KNOWN_BUG

8894

FIXED

8897

FIXED

8934

FIXED

DataFlex Revision 3.1 Release Notes

Module

DAR# 8956

Status FIXED

Summary The value returned by the attribute DF_FILE_RECORDS_USED will now be correct for the DataFlex driver in a multiuser environment. In DFCONFIG, assigning FLEX keys causes the mouse to flicker. The help screens for DFCONFIG contain help referring to options that are no longer present such as graphics driver and power fail protection If you compile a program with errors from DFPDS and then select NEW, the file is cleared, but the edit window for the errors remains visible Installing on network drive mapped with MAP ROOT will NOT work if installing in ROOT, i.e. L:\: however, L:\FLEX WILL work. When a constraint is set in the form CONSTRAIN df_filename.field AS (expression), expression must not contain any LOCAL variables. The expression will not evaluate correctly outside the scope of the variables used in it. All variables used in expression must be global. WORKAROUND: Use global variables or avoid constrain...AS Compiled versions of dfchrmap, dfcrayon, and dfkeytst can now be found in the TESTS subdirectory under the SRC subdirectory. DFPATH may now end with a directory separator character (e.g., ";" under DOS) without any adverse affects. Previously, the last path in DFPATH was ignored. The GET_CHANNEL_SIZE command will not return the correct size of a numeric field that has been accessed using the "DBMS" mode of the DIRECT_INPUT command. Saving a file with DFPDS may append carriage return and line feed characters to the end of the file. 9

8972 8973

KNOWN_BUG FIXED

8975

KNOWN_BUG

8978

FIXED

8991

FIXED

9042

IMPLEMENTED

9102

FIXED

9135

KNOWN_BUG

9186

KNOWN_BUG

DataFlex Revision 3.1 Release Notes

Module

DAR# 9189 9358

Status KNOWN_BUG DOC/NR

Summary Dragging the calendar object around the screen may cause erratic display and flickering. A new environment variable, DFENV, has been added to DataFlex to allow users to specify a file containing ANY set of environment setting for use by DataFlex. Environment settings within this file are not subject to the limits of the operating system. Generating forms and data_sets with the same name may cause errors in code generated by AUTOGEN. AUTOGEN will generate code for a Text_Editor which has had no field assigned to it in DFAUTO. It assigns the first field in the file to the Text_Editor. The drive specifier for the filelist location only showed the current drive. DFADMIN would not show you all available drive letters; thus, you had to know your drives in advance. This has been corrected. DFADMIN created .def files with the wrong name: from a file called parent, arent.def would be produced. This has been corrected. Using the convert option under DFADMIN, converting a file to itself (same name, same database driver) may destroy the file. The "Convert" dialog doesnt provide a default database driver in the appropriate entry window and doesnt give a clear error message if the user fails to supply one. Filelist is kept in memory by dfadmin and is not currently reloaded or saved when running dfmaint so changes made to filelist in dfmaint are not recognised by dfadmin. If you delete the current item from the filelist without selecting it the selected items count is incorrectly reduced to -1 DataFlex Revision 3.1 Release Notes

AUTOGEN

9486

KNOWN_BUG

AUTOGEN

9524

KNOWN_BUG

DFADMIN

8976

FIXED

DFADMIN

8977

FIXED

DFADMIN

8984

FIXED

DFADMIN

8985

FIXED

DFADMIN

8988

FIXED

DFADMIN

8989

FIXED

10

Module DFADMIN

DAR# 8990

Status FIXED

Summary The option to delete a file cannot be undone by the option called undo all changes. This option only undoes changes to filelist itself. The procedural option for an application style in DFAUTO can give unpredictable results.When reloaded in DFAUTO following a save, they will be reset as an OOP style application. We recommend you use the OOP style only. If a user creates a prompt_list for a file that has not yet been opened via the Database/Open... Pulldown, when the code is generated, the data_set that it is attached to is named NULL. WORKAROUND: Open the datafile before creating the prompt_list. DFAUTO does not provide support for the THOUSANDS entry option. This will be considered for a future revision. Attempting to edit a file which contains a binary field may cause that fields data to be truncated. If you direct the compiler to output to a file (.PRN) and a #HEADER command happens to coincide with a pagebreak in the .PRN file, the compiler will begin to declare line number out of sequence errors from that point on. The USE command does not support a package file beginning with a digit, e.g., you cannot compile "USE 4DIGYEAR" because the 4 is converted to |C4 and generates an error. The page headings in a .PRN file generated by the compiler may have incorrect page headings. No compile time error is given when using invalid syntax for the RANGE= entry item option. Any symbol or integer definitions prior to a USE of a precompiled package will result in an invalid program. WORKAROUND: Place USE statements before any other code except comments. 11

DFAUTO

7851

KNOWN_BUG

DFAUTO

7980

KNOWN_BUG

DFAUTO

9260

KNOWN_BUG

DFBROWSE DFCOMP

9195 3262

KNOWN_BUG KNOWN_BUG

DFCOMP

3722

KNOWN_BUG

DFCOMP DFCOMP DFCOMP

5063 5564 5658

KNOWN_BUG KNOWN_BUG KNOWN_BUG

DataFlex Revision 3.1 Release Notes

Module DFCOMP

DAR# 7805

Status KNOWN_BUG

Summary Defining a class two times in source code will crash the compiler. WORKAROUND: Only define a class once. An extra end_procedure will cause the compiler to core dump. An open "" in a #COMMAND compiler directive may cause a memory violation. Increased macro expansion buffer to 128 k. Increase the number of commands to 1024. A misplace END_PROCEDURE can crash the compiler. The -ac DFCOMP option that pre-allocates memory for commands will now correctly allocate the requested memory. It was previously allocating 16 times the requested memory. The USE command has been modified to include the precompiled files for the rootname given in the command regardless of whether a rootname.PKG file can be found, provided the USE command is the first command in the program being compiled. USE has also been modified to include (and compile) the rootname AND extension given. If no extension is given, it includes and compiles the rootname.PKG file. The compiler will now delete a .FLX file if an error occured during compilation. In prior revisions, this was only done if the -K option was supplied to DFCOMP. Start DFCONFIG. From the Misc. menu, choose the Error text translation.press Alt-F1 to see list of 21 choices, Escape to return. Press alt-F1 to see list of 42 choices, Escape to return. Press Alt-F1 to see list of 63 choices, and so on.... When printing from DFCONFIG with no printer attached, no error is reported except in the OS/2 version, which returns an "out of paper" error.

DFCOMP DFCOMP DFCOMP DFCOMP DFCOMP

7812 8256 8302 8668 8789

KNOWN_BUG KNOWN_BUG IMPLEMENTED KNOWN_BUG FIXED

DFCOMP

9095

FIXED

DFCOMP

9126

IMPLEMENTED

DFCONFIG

8182

FIXED

DFCONFIG

9024

KNOWN_BUG

12

DataFlex Revision 3.1 Release Notes

Module DFIMPORT

DAR# 8968

Status FIXED

Summary When inserting fields in the mappings screen, it was not always possible to use the scroll bar on the lower list. This has been corrected. Importation of four-digit values from line-delimited ASCII files produced 00 in Date fields in the output DataFlex file. This has been corrected. CTRL+LEFTARROW may cause DFDPS to crash if it is done at the end of the current document. If you set the width of a field in DFQUERY, it will be off by 1 character. If you output a query to the printer, DFQUERY will generate two formfeeds at the end instead of one. DFQUERY may improperly load selection information in a kept query. Changing a constant used in a selection criteria may cause error 4150, attempt to reference an invalid item. DFQUERY will now correctly display the number of records processed at the bottom of every page when displaying the query to the screen. DFQUERY will now correctly display the names of fields on the output order screen. When querying a file with many records (more than 1 screen), if you run them to the screen and then press ALT+F4 after the 1st screen is full, dfquery does not exit. Instead, it goes to the next partial screen of data. APPEND_OUTPUT doesnt work when writing to a DBMS fields. WORKAROUND: Use the normal APPEND command to the text field: TRIM file.textfld; APPEND file.textfld instring; my customer said this worked fine for him without using the append_output command . . . T.M.

DFIMPORT

9062

FIXED

DFPDS

8069

KNOWN_BUG

DFQUERY DFQUERY

3893 4174

KNOWN_BUG KNOWN_BUG

DFQUERY DFQUERY

5833 7536

KNOWN_BUG KNOWN_BUG

DFQUERY

8205

FIXED

DFQUERY DFQUERY

8216 8473

FIXED KNOWN_BUG

DFRUN

3542

KNOWN_BUG

DataFlex Revision 3.1 Release Notes

13

Module DFRUN

DAR# 3905

Status KNOWN_BUG

Summary In a procedural style program (manual code or macros), a mouse click isnot ignored where user input is expected, even if the program wascompiled with the -x23 option. RUNPROGRAM BACKGROUND should do a RUNPROGRAM WAIT under DOS. Currently, it gives an error that the operation is not supported under DOS. Retting the channel position associated with a DIRECT_INPUT command that has reached the end of the file will still return SEQEOF true after the next read. Subsequent reads will work correctly. The print_wrap and output_wrap command, when used to output string variables, result in blanks being output instead of the contents of the string variable. If an image contains at signs as embedded window formatting characters, text following the window containing the at sign will not appear in an edit object via the read_image command. Example: /image; this is ____@___ a test; /*; print "doug" to image.1; object test is an edit; send read_image image.n; end_object; //Will show "this is doug" instead of "this is doug a test" In DOS, when you issue a DESPOOL, the print job is released but your output channel is still open.With DESPOOL for UNIX (and AIX), DESPOOL closes the output channel and reopens it as a default output channel. Thus, a program which outputs to a special device etc., issues a DESPOOL, will not be pointing to that device after the DESPOOL. If you set the select_mode of an object to multi_select, the auto_top_item_state property automatically gets set to true.

DFRUN

4503

KNOWN_BUG

DFRUN

5776

KNOWN_BUG

DFRUN

6695

KNOWN_BUG

DFRUN

6816

KNOWN_BUG

DFRUN

6888

KNOWN_BUG

DFRUN

7735

KNOWN_BUG

14

DataFlex Revision 3.1 Release Notes

Module DFRUN

DAR# 7894

Status KNOWN_BUG

Summary Attempting to get a value of item in an Object using an item number that does not exist will generate a Signal 5 error. The calculate key (ALT+F5 by default) will now correctly drop to the bottom of the screen allowing the user to type in an expression. Creating an empty ITEM_LIST/END_ITEM_LIST block may result in a memory violation in the runtime. Cursor disappears if program compiled with -x23 under DOS. CHAIN WAITing over 5 levels under OS/2 caused a memory violation. This has been corrected. DFMAINT.LOG file can sometimes contain garbage. Files containing redirected output of the runtime (e.g, dfrun my_prog > ouput.txt) can now be accessed immediately after the runtime exits. Previously, the DFLOCKD daemon would have the file open for around 30 seconds after the runtime exited. Setting search_case to true doesnt perform case sensitive incremental under SCO Unix. Repeatedly calling the PAD function may cause a memory violation. The Absolute_Mouse_Position only returns the proper value when the mouse is clicked. If the mouse is moved without clicking, the property does NOT return the proper value. The symbol table will be correctly restored upon returning from a CHAIN WAIT.

DFRUN

7896

FIXED

DFRUN

7906

KNOWN_BUG

DFRUN DFRUN

8084 8091

KNOWN_BUG FIXED

DFRUN DFRUN

8097 8177

KNOWN_BUG FIXED

DFRUN DFRUN DFRUN

8185 8201 8207

KNOWN_BUG KNOWN_BUG KNOWN_BUG

DFRUN

8305

FIXED

DataFlex Revision 3.1 Release Notes

15

Module DFRUN

DAR# 8314

Status IMPLEMENTED

Summary Custom compression is now allowed in a file of any size. If the file contains insufficient records to effectively compress the file, a standard compression table will be used as the custom compression table. Using an Enntry_Form object that is not attached to a Data_Set may cause error #0 to be reported. The INDEX_DEF command will generate an error when used on a non-existent index. This is a different behaivour from the previous revision. OUTFILE to CON: does not work if #COMPAT 1 used when compiling the program. Timers can now run for more than 24 hours. The DIRECT_INPUT and DIRECT_OUTPUT commands fixup the names of all devices. Fixing up the names, for example, lowercasing filenames in Unix, should only be done on files, not on all DIRECT_INPUT sources, e.g., it should not be done on text field names accessed using the DBMS: device name. Executing the DataFlex file repair will unconditionally sort the file. The reason for this is that there is currently no simple way to detect if the indexes or .VLD file is damaged, and it was felt that users would not run repair on a file that wasnt showing some type of bad behaivour, i.e., was in need of being reindexed anyway. Reindexing a file will repair bad indexes, damaged .VLD files, etc. Using DFCONFIG to change OS/2 double click speed has has no effect. Using DIRECT_INPUT without a channel defaults to the last used channel. It should default to channel 0.

DFRUN

8363

KNOWN_BUG

DFRUN

8425

FIXED

DFRUN DFRUN DFRUN

8426 8430 8452

KNOWN_BUG FIXED KNOWN_BUG

DFRUN

8459

KNOWN_BUG

DFRUN DFRUN

8526 8533

KNOWN_BUG KNOWN_BUG

16

DataFlex Revision 3.1 Release Notes

Module DFRUN

DAR# 8536

Status KNOWN_BUG

Summary At present, there is no way to translate the text associated with memory resident errors, fatal errors that occur prior to the error and file systems being initialized. Also, some of these can occur after initialization has completed. Index-based finds have been optimized to load the record buffer using the data in the index. The remaining data is loaded when a non-indexed field is referenced. This significantly increases the speed of finds when only indexed fields are referenced. Contraints by value fail with embedded " symbols. The command revision for 3.1 compatibility has been increased, i.e., 3.05 and earlier 3.x versions of DataFlex will refuse to run any programs compiled with 3.1. Using MAKE_FILE or LOAD_DEF on a damaged or invalid .DEF file may cause unpredictable results. After a UI object has been paged, the colors are different in graphics mode then if the UI object never was paged. RUNPROGRAM will now completely unload the runtime prior to executing. READLN used on the CON: device will not work properly. Constrain by expression may return incorrect results if the return type of the expression is STRING, e.g., (Eval("A EQ B")). The number of items allowed in an array is now limited only by available memory.

DFRUN

8555

IMPLEMENTED

DFRUN DFRUN

8564 8584

KNOWN_BUG IMPLEMENTED

DFRUN

8641

KNOWN_BUG

DFRUN

8700

KNOWN_BUG

DFRUN DFRUN DFRUN

8703 8704 8776

FIXED FIXED KNOWN_BUG

DFRUN

8809

IMPLEMENTED

DataFlex Revision 3.1 Release Notes

17

Module DFRUN

DAR# 8891

Status DOC/NR

Summary There have been a number of changes surrounding cursors. First, there are two new commands: SET_CURSOR_VISIBLE and GET_CURSOR_VISIBLE that control hiding or displaying the cursor. When the cursor is set to be invisible, it will not be displayed during any user input. Second, the messages GET_INSERT_MODE and SET_INSERT_MODE have moved from the editor to the DESKTOP and control a global insert mode that all objects and forms respect. Third, editors and forms will now change the cursor appearance, depending on the O/S, to be different when in insert or overstrike mode. Fourth, the default mode of DataFlex is to start in insert mode. This is configurable from DFCONFIG, which is now being modified to support setting the starting insert mode. CHAIN WAITing to a corrupt .FLX file may cause runtime to behave erratically; however, the compiler will now delete the .FLX file if an error occurs or the compilation is aborted. This should greatly reduce or eliminate the possibility of running a corrupted .FLX. Server-atomic transaction protection is provided in DataFlex 3.1 for the DOS, Windows, and OS/2 versions through Novells Transaction Tracking System (TTS). In order to use this feature, the NetWare shell must be running with TTS enabled. Use of this feature requires NO program changes. For every database file for which this protection is desired, the file must be set to SERVER_ATOMIC using the DFADMIN Utility. Server-atomic transaction control permits recovery from a hard crash in the client. User counting information display in standard about screen is incorrect.

DFRUN

8895

KNOWN_BUG

DFRUN

8915

IMPLEMENTED

DFRUN

8925

FIXED

18

DataFlex Revision 3.1 Release Notes

Module DFRUN

DAR# 8933

Status IMPLEMENTED

Summary The "Edited record not saved error" has been removed from DataFlex because modifying the record buffer no longer causes the indexes to be updated. Also, errors relating to modifying a read-only file such as "Attempt to edit a protected record" will only occur after an operation that actually attempts to modify the file; previous versions might generate this error when the record buffer was modified. The DATA_SET class now relies on the underlying database to undo a transaction. DataFlex files now default to CLIENT_ATOMIC transaction type; turning this off will cause an error report from DATA_SET database operations accompanied by cancellation of the operation. MAKE_FILE using a .DEF produced by a different database driver than the one used to create the .DEF may not work correctly. LOAD_DEF may be used to load the .DEF for one driver and then correct any driver specific information. It is generally a bad idea to mix transactional and non-transctional files within a single transaction. Transactional files are files in which the underlying database driver can undo all operations within the scope of a BEGIN/END_TRANSACTION (or REREAD/UNLOCK). Non-transactional files are not rolled back during a transaction. Mixing the two may cause some transctions to be undone during an error while others stay committed. The critical error handler for the DOS protected mode product is now functional and is similar to previous revisions, except that the (A)bort choice has been removed. Users not wishing to retry should select the (F)ail option which will cause the operation to return an error code to the DataFlex executable.

DFRUN

8935

HINT

DFRUN

8938

HINT

DFRUN

8939

HINT

DFRUN

8940

FIXED

DataFlex Revision 3.1 Release Notes

19

Module DFRUN

DAR# 8941

Status FIXED

Summary The default amount of time that DFRUN waited before declaring a lock timeout error was 15 seconds. This has been increased to 60 seconds. If timeout errors occur, it is recommended that users increase this value until the errors stop occurring. Attributes will be added to the 3.1 to allow access to the list of servers that an application is currently logged into. The runtime now supports a global insert mode which will be respected by non-UIMS forms and UIMS data entry objects. Pressing the insert key will toggle this mode between insert and overstrike; the default value is insert and my be changed through DFCONFIG. The INSERT_MODE property has been moved from the EDIT class to the UI_OBJECT class and reflects the state of the global insert mode. The dos extender used by DataFlex 3.1 is now DOS4G.EXE. The older extender, DOS4GW.EXE, is now no longer needed or supplied. If a transaction abort or retry occurs, the state of the record buffers of any file modified during the transaction was indeterminate. Any files being updated had to be re-found and updated within the transaction itself. This has been corrected to occur automatically without requirement for explicit programming. Setting find_permissive_state on a child dataset will no longer cause the parent dataset to delete all the records in main file for the child dataset. We recommend the use of BEGIN_TRANSACTION and END_TRANSACTION in place of REREAD and UNLOCK because of the additional error checking and handling associated with the transactional commands.

DFRUN

8945

FIXED

DFRUN

8946

IMPLEMENTED

DFRUN

8947

IMPLEMENTED

DFRUN

8951

FIXED

DFRUN

8955

FIXED

DFRUN

8982

HINT

20

DataFlex Revision 3.1 Release Notes

Module DFRUN

DAR# 9011

Status BUG

Summary When CURRENT_OBJECT is used in an expression that in turn is used as the argument of a SET ARRAY_VALUE message, CURRENT_OBJECT resolves to the ID of the destination array, not the ID of the object from which the message was sent. WORKAROUND: Define the desired expression in terms of an Integer variable whose value you set to CURRENT_OBJECT before the expression is evaluated (used in the SET ARRAY_VALUE message). A call_driver function named FLEX_INDEX_OPT modifies the default behavior of program usage of index data in place of record data. In the default behavior, until the program requests data not contained in a NON-case-insensitive segment of the index in use, index data is used, obviating loading of the record buffer. This is the ON value of the function. In the OFF setting, no index data is ever used - the buffer is always loaded and used. In the PERMISSIVE setting, index data is used REGARDLESS of whether the segment is case-insensitive. Data in case-insensitive segments is SOLID CAPITAL LETTERS. Timers will now fire in during an INKEY when the SCREEN_OPTIMIZE command has been used to disable the windowing system. The DELETE_DB command will not function correctly if the file to be deleted has duplicate entries in FILELIST.CFG. Database operations are no longer allowed with a CALLBACK from the API. CALLBACKs were intended only to be used to display progress information. This change affects commands such as COPY_RECORD, SORT, and STRUCTURE_END. Defining an accelerator key for a single ascii character, e.g. KEY_A, will no behave correctly; previously, only the uppercase character would send the associated message. 21

DFRUN

9016

FIXED

DFRUN

9119

FIXED

DFRUN

9204

HINT

DFRUN

9257

FIXED

DFRUN

9296

FIXED

DataFlex Revision 3.1 Release Notes

Module DFRUN

DAR# 9309

Status KNOWN_BUG

Summary If the end of a text file is reached while accessing the fields data through the DIRECT_INPUT command, SET_CHANNEL_POSITION will fail to reposition the pointer to the data. WORKAROUND: Use the GET_FIELD_VALUE command to access portions of the data. If a .DEF file does not have offset values, the runtime may crash. This format is not a legal .DEF format, and DataFlex is not prepared to handle invalid .DEF formats. In addition, fields of type OVERLAP require this value, so it cannot be arbitrarily ommitted. Single-user licenses will no longer be supported using a registration code; instead, setting the environment variable DFSINGLEUSER to any non-empty value will alert the database drivers that locks should not be performed; however, only the DataFlex database driver is guaranteed to respect this setting. The expression (date("/01/02/95")) will not evaluate correctly if compiled under a version using one date format (e.g., US date format) and run under another using a different date format (e.g., European date format). This is because the compiler partially evaluates the expression converting the string date to an acutal date at compile time. WORKAROUND: Either use a literal date in your expression or store the string in a variable prior to using it in the expression. Under certain conditions, a file which has become damaged and also contains duplicate data may not be fixed by either sorting or cleaning up the file. This will happen if the end of the file is truncated or saving a new record runs out of disk space. WORKAROUND: Save a new record to the file before attempting to sort the file. This will adjust the header to correctly reflect the number of records in the file.

DFRUN

9359

KNOWN_BUG

DFRUN

9405

FIXED

DFRUN

9410

KNOWN_BUG

DFRUN

9444

KNOWN_BUG

22

DataFlex Revision 3.1 Release Notes

Module DFRUN

DAR# 9511

Status KNOWN_BUG

Summary Using both ZERO_SUPPRESS and REQUIRED entry options on a numeric window will refuse to accept a "0" as a valid entry. In DFSETUP, when you choose the option to print the dataflex setup, the Miscellaneous section is not output properly.The Exit_code parameter does not have a value output which then causes all of the other parameters to appear next to the wrong label names. DFSORT will create corrupted indexes if it is used on an EMPTY file having its FIRST field no larger than 2 bytes (ASCII or numeric), with a unique index on this field, and with a maximum number of records LESS than 127 records. It will not be possible at this point to add more than one record to the file. WORKAROUND: Just reindex with DFSORT on the 1 record file or increase the maximum number of records in the file. When using DFSYM, the -s option will not work if "s" is capitalized. Files native to any database driver in use by DataFlex can be created from .DEF definition files with the make_file command. The target database driver must be named as the last argument of the command. Conversion details are discussed in the documentation for each individual driver. If the last argument is omitted, a DataFlex file is created. Graphics or Windows commands will generate appropriate errors if executed by a non-gui runtime. The entry option briefly known as the "COMMA" entry option has been changed to the "THOUSANDS" entry option to better describe its function. The DOS 386 product will now correctly use a numeric co-processor if present.

DFSETUP

7863

KNOWN_BUG

DFSORT

8917

KNOWN_BUG

DFSYM FMAC

6518 8411

KNOWN_BUG FIXED

FMAC

9057

HINT

FMAC

9239

ISSUE

GENERAL

6891

FIXED

DataFlex Revision 3.1 Release Notes

23

Module MENU

DAR# 8953

Status FIXED

Summary When run from the menu, the compiler clears the screen and prompts for a key to be hit when it has finished compiling. When choosing TYPE off the menu program, the screen did not scroll correctly. This has been corrected. When executed from the menu, the system command option clears the screen, so that screen output from the system command will not appear over the menu screen. The option to show a directory in the menu stops at the end of the directory display and displays a message to press a key to return to the menu. On a table with verify_save_msg set, when entering a new record, if you press up arrow or F6 before saving, the verify_save_msg gets executed twice if you choose not to save the record (press "N").Also, if you are on a field that has an ivalidate option, the ivalidate function gets executed twice if you press up arrow, F6, or SHIFT+F6. If you put an autoclear on a picture_entry_item, or set the autoclear state for that item to true, then use the mouse to enter the window, if you are in any position other than the first, it puts the mask characters in the window (ie, "###-3445", where "3" is the actual position you entered on. Ctrl+UpArrow and Ctrl+DownArrow are supposed to send Beginning_Of_Panel and End_Of_Panel respectively, but in a table object they do not. If you have an IENTRY on the first item of a DEO, the IENTRY is NOT sent when you SAVE or CLEAR and end up back at the first item. It appears that the code which resets the user to the top of the object does not send IENTRY.

MENU

8954

FIXED

MENU

8957

FIXED

MENU

8959

FIXED

PACKAGES

3912

KNOWN_BUG

PACKAGES

4027

KNOWN_BUG

PACKAGES

4633

KNOWN_BUG

PACKAGES

5324

KNOWN_BUG

24

DataFlex Revision 3.1 Release Notes

Module PACKAGES

DAR# 7913

Status KNOWN_BUG

Summary Inserting text into an edit object may add an extra carriage retrun/line feed pair at the end of the line. The character translation table in DFCONFIG is not being recognized by EDIT objects. A client object may not be dragged to a position that would make one of its children occupy an illegal location EVEN if that child object is not visible. Thus, popup objects may cause client dragging to be limited to less than the full portion of the screen. A new package, ERRORNUM.PKG, has been added to replace the ERRORNUM.INC file which was included by using the #INCLUDE ERRORNUM.INC command. You may now use the USE command to include error symbols.

PACKAGES PACKAGES

8092 8757

KNOWN_BUG HINT

PACKAGES

8942

IMPLEMENTED

DataFlex Revision 3.1 Release Notes

25

You might also like