cursussenCBTadviezenspeurwerkdocentenwegwijzereldersHome

Dataflex 2.3b/3.01 patches & utilities

Y2K versions of Dataflex 2.3b & 3.01b in several flavors

Dataflex 2.3b Enhanced solves most of the problems connected with the year 2000 for (legacy) systems, written in Dataflex 2.3b. More information can be found on the pages of Data Access Corporation. DAC supplies a standard DF 2.3b Enhanced version. On this page other versions and several patches and utilities are available. NOTE: in all cases you need a valid license for the non-patched runtime.

The demo versions are for evaluation purposes. They perform a couple of hundred Y2K compliant operations before falling back into the non-patched state. All modified Dataflex runtimes can be tailored to your needs using DFpatch.exe from the original DF2.3b Enhanced software or from en7.zip. Try all versions of DFpatch.exe. Only one of them will work correctly with your enhanced Dataflex runtime.

Before using the Enhanced runtimes, you will have to convert all dates in your DF-files to the 4 digit year format. The quickest way to do this is to set all indexes offline, adjust the datafiles, set all indexes online and reindex the files. Conv2000.flx automates these steps for DF2.3b files. Conv99.flx reverts the changes if you want to restore the old setup after testing a demo runtime.

Low CPU version

The standard version of DF 2.3b grabs hold of all the CPU-time, even if it is idle in a background window. Especially under NT and XP this is a real performance killer. The low CPU version replaces the slow DOS keyboard polling by the much faster BIOS routines. And, even more, under NT/XT it puts the DOS box very rapidly in an idle state. Under these circumstances it is even possible to open 20-50 terminal sessions at the same time on the same server without any performance problems. The demo version will show you the difference: whenever you hit a Flexkey dflowcpu.exe toggles from low CPU state to high CPU state and vice versa.

DF Version

Date

Size

Demo

Full version

Changed or Standard

DF 2.3b

05 May 1988

150.671

-

dp23b.com

{AUTOCLEAR} option, period/comma entry, no Y2K effect

DF 2.3b

05 May 1988

150.671

df23demo.zip

on request

Y2K compliant, {AUTOCLEAR} option, period/comma entry

DF 2.3b Enh

12 Dec 1996

203.742

-

enhpatch.com

Y2K compliant, {AUTOCLEAR} option, period/comma entry

DF 2.3b Enh

12 Dec 1996

148.030

-

enhpatch.com

Y2K compliant, {AUTOCLEAR} option, period/comma entry, no graphics

DF 2.3b Enh

12 Dec 1996

148.030

dfleap.zip

on request

Augustinian dates, Y2K compliant, {AUTOCLEAR} option, period/comma entry, no graphics

DF 2.3b Enh 7

30 Jul 1999

en7.zip

-

en7patch.com

Y2K compliant, {AUTOCLEAR} option, period/comma entry, 3 versions

DF 2.3b Enh 7 (LM version)

30 Jul 1999

163.386

d7force8.com

on request

Y2K compliant, force 2 digit years on screen/paper

DF 2.3b Enh 7 (LM + low cpu)

30 Jul 1999

163.386

dflowcpu.exe

on request

Low cpu version, Y2K compliant and all the other options

 

DF Version

Date

Size

Demo

Full version

Changed or Standard

DFShade 2.3b
version 1.06

20 Jul 1995

221.492

dfsdemo.zip

on request

Y2K compliant, {AUTOCLEAR} option, period/comma entry

DFFuzzy 2.3b

17 Oct 1991

160.497

dffdemo.zip

on request

Y2K compliant, {AUTOCLEAR} option, period/comma entry, no graphics

DFCombo 2.3b

?

229.338

dfcdemo.zip

on request

Y2K compliant, {AUTOCLEAR} option, period/comma entry

DF 2.3b for
Btrieve 2.1h

01 Oct 1994

210.932

-

dfb21enh.zip

Y2K compliant, {AUTOCLEAR} option, period/comma entry, no graphics

 

DF Version

Date

Size

Demo

Full version

Changed or Standard

DF 3.01b

30 Jul 1993

465.024

df3demo.zip

on request

Y2K compliant, period/comma entry, {AUTOCLEAR} option

German DF 3.01b

15 Jan 1994

458.128

df3gdemo.zip

on request

Y2K compliant, period/comma entry, {AUTOCLEAR} option

DFCombo 3.01b

?

504.944

df3cdemo.zip

on request

Y2K compliant, period/comma entry, {AUTOCLEAR} option

DF 3.01c for
Btrieve 2.1h

01 Oct 1994

534.640

df3bdemo.zip

on request

Y2K compliant, {AUTOCLEAR} option, period/comma entry

DF 3.01c for
Btrieve 2.2

03 Nov 1998

533.808

db22demo.zip

on request

Y2K compliant, {AUTOCLEAR} option, period/comma entry

DF 3.01b

All versions

-

-

df3patch.com

period/comma entry, no Y2K effect


Augustinian dates / Leap Year bug

Dataflex uses Julian dates as standard format, which implies that 29 February 1900 and 29 February 2100 are treated as valid dates. Quod non.
DFleap.zip fixes this bug in a special way: Augustinian dates are used with an 'offset' of 15 days. This offset is needed, because the compiler assumes 1/1/2000 is 730.500 days after 1/1/0. The effect of the offset is that all dates between 1 March 1900 and 28 February 2100 are Julian.
The demo version of DFleap performs a couple of hundred Augustinian operations before falling back into the Julian state.

Period/comma entry

After applying these patches, the period and the comma will be accepted as decimal delimiters in numerical and real windows. Both the period and comma will be shown directly as a period (in DF2.3b). The same accounts for date windows: "/", "-" and "." are all valid delimiters (besides the space) and will be shown as a period (Military) or a '/' (USA or European).

Force 2 digit years on screen/paper

The standard enhanced Dataflex 2.3b runtime uses 4 digit years (10 characters) in commands like show and write. D7Force8.com forces 2 digit years when displaying or printing dates.
After applying this patch to the DFrunlm.exe from en7.zip all dates on screen and in print will be formatted with 2 digit years or 8 characters. Of course, long dates may be used in the data files.

{AUTOCLEAR} option

Add

#REPLACE AUTOCLEAR $C02D

to FMAC or your source code. And a window with the {AUTOCLEAR} option will be autocleared, even if 'Global Autoclear by Window Type' is not set for the window type.

From the description of the Dataflex 2.3b enhanced runtime:
> These enhancements are all so packaged that they can be used even
> without changing compiled code, or having any access at all to source
> code. For this reason, the suite is made up primarily of replacement
> executables and a utility for patching these executables to meet your
> specific requirements. In the event source code and compiler are
> available, more latitude in exploiting the benefits of the Enhanced
> Runtime is gained.

Reading this words I thought it would be best, if:

  • Windows are always autocleared when the global {AUTOCLEAR} for this type of window is set.
  • Windows are not autocleared when the global {AUTOCLEAR} for this type of window is not set, unless ...
  • Selected windows are autocleared when the (local) {AUTOCLEAR} option has been added to the source.

Generic period/comma patch for Dataflex 3.01b

DF3PATCH.COM is a version independent patcher for DFRUN.EXE to solve the period/comma-problem. Use: DF3PATCH DFRUN.EXE. I tested it on Dataflex 3.01b, the fast Runtime (FAST30.ZIP), the Write-verify runtime (WVRUN.ZIP) and on DF 3.01c/DF4Btrieve 2.1h.
As long as DAC doesn't change the sources for window entry, DF3PATCH should be able to patch DFRUN.
DF3PATCH ends either with 'Patch succeeded' or with 'Patch failed'. If successful, the period and the comma will be accepted as decimal delimiters in numerical windows. Both will be shown directly as the configured delimiter. The same accounts for date windows: "/", "-", "." and "," are all valid delimiters (besides the space).

DFCOPY copies locked 2.3b files

DFCOPY.COM copies Dataflex 2.3b files. Use DFCOPY from within a Dataflex-program as follows:

OPEN DF_FILE
LOCK
RUNPROGRAM WAIT 'DFCOPY {path}DF_FILE.DAT NEW_DIR'
RUNPROGRAM WAIT 'DFCOPY {path}DF_FILE.K1 NEW_DIR'
UNLOCK
CLOSE DF_FILE
OPEN 'NEW_DIR\DF_FILE' AS DF_FILE

DFCOPY creates NEW_DIR if it does not exist. If no {path} (drive and/or directory) is specified DFCOPY first searches the DFPATH-directories and then the current directory for the source file.
DFNCOPY is the version for Novell. It tries to execute a NOVELL copy file to file, which is much faster.

DFINDEX multi-user (for 2.3b files only!)

"The sort utility will not work on a file that is open by another user when the utility attempts to open the file. If another user attempts to open the file while this utility has the file open, access to the file will be denied." Dataflex User's guide p. 539.

Wouldn't the following be a better solution:

"The sort utility will work on a file that is open by another user when the utility attempts to open the file. If another user attempts to open the file while this utility has the file open, access to the file will not be denied. The sort utility locks the file while sorting, prohibiting updates by other users during the sort."

DFLOKNDX.COM does exactly this while reindexing DF2.3b files. Use it from within a program:

/*
OPEN FILE_10
OPEN FILE_20
MOVE 640000 TO |VI86 // DF3.x's MINIMUM_MEMORY
LOCK // lock files together
RUNPROGRAM WAIT 'dflokndx 10 /n' // n = no locks by dflokndx
RUNPROGRAM WAIT 'dflokndx 20 /n' // test: try it without /n
UNLOCK
ABORT

or at the DOS-prompt:

C:> dflokndx 10
or
C:> dflokndx all // lock files one by one!

DFDpack: Recovering unused space

DFDpack.exe is a shareware utility, written bij MUIS Software, that recovers unused space in DF 2.3b files by moving all records to unused records at the start of the file and then truncating the file.

Disclaimer

Using these patches and utilities is at your own risk. Neither Data Access Corp. nor Monitor nor Jan Ehrhardt personally can be held responsible for possible damages caused by the use of these patches and utilities. Nevertheless, I would like to hear from you if you experience problems.

Success,

Jan Ehrhardt


Monitor
1e Atjehstraat 132-1
NL-1094 KT Amsterdam

|

Phone: ++ 31 20 620 39 30
Email: Jan.Ehrhardt@monitor.nl
http://www.ehrhardt.nl