Dec 082017
 
This file contains the latest patch (5.2D) for Clipper.
File 52DCLIP.ZIP from The Programmer’s Corner in
Category Dbase Source Code
This file contains the latest patch (5.2D) for Clipper.
File Name File Size Zip Size Zip Type
52DDBU.LIF 70472 70415 deflated
52DERROR.LIF 1172 1172 stored
52DFISYS.LIF 1172 1172 stored
52DINC.LIF 37232 36741 deflated
52DITEM.LIF 9183 8818 deflated
52DOBJ.LIF 27321 27313 deflated
52DRL.LIF 25804 25793 deflated
52DSAMPL.LIF 81727 81119 deflated
52DSDX.LIF 26780 26716 deflated
52DSYS.LIF 24327 24236 deflated
52DUSX.TXT 27367 8272 deflated
52DVM.LIF 7672 7551 deflated
CLP52BIN.RTP 58419 56154 deflated
CLP52LIB.RTP 215701 210180 deflated
CLP52NG.RTP 98606 97435 deflated
DISK.ID 52 52 stored
EXNG-10F.RTP 40283 39775 deflated
EXO10F.RTP 314301 304433 deflated
INSTALL.DAT 19824 3429 deflated
INSTALL.EXE 97700 96970 deflated
PATCH.EXE 45928 43898 deflated

Download File 52DCLIP.ZIP Here

Contents of the 52DUSX.TXT file


Dear CA-Clipper 5.2 Developer,

The CA-Clipper 5.2d/ExoSpace 1.0f upgrade described in this file
contains latest fixes for CA-Clipper and CA-Clipper/ExoSpace.
This includes an updated version of the DBFMDX driver revised to
be compatible with the CA-Clipper/Compiler Kit. The DBFCDX driver
has not been changed. We are currently working on a separate patch
for it. It will be published as soon as it is ready.

If you have any questions, please contact your CA-Clipper
Level-1 Technical Support representative at 310-348-4400.


This file contains:

A. The instructions for applying the CA-Clipper 5.2d upgrade to any
North American version of CA-Clipper 5.2 including: 5.20, 5.2a,
5.2b or 5.2c.

It also contains instructions for applying the CA-Clipper 5.2d/
ExoSpace 1.0f upgrade. This is needed ONLY if you have a previous
version of ExoSpace installed on your system.
If you DO NOT have ExoSpace already installed, please answer NO
to the question "Do you have ExoSpace installed" during
the upgrade process and only the Clipper files will be updated.

Please review the file list below and the UPDATE PROCESS
instructions carefully before applying the upgrade.

B. The list of problems resolved by CA-Clipper 5.2d.


=============================================================================

A. Instructions for upgrading Clipper 5.2 (any rev.) to 5.2d (rev. 215) and
ExoSpace (any installed version) to 1.0f version.

REQUIRED FILE FOR PERFORMING UPDATE:

52DUSX.EXE A self extracting ZIP file that may be
downloaded from the CLIPPER forum (library 0)
on CompuServe. (GO CLIPPER).


CONTENTS OF 52DUSX.EXE:

INSTALL.DAT Installation script file.

INSTALL.EXE Installation engine required for performing the
CA-Clipper 5.2d upgrade.

PATCH.EXE Updating engine required for use with all the
*.RTPs. This file is also in Library 0 of the
CLIPPER CompuServe forum.

DISK.ID Installation identification file.

52DINC.LIF Compressed update file for CLIPPER5\INCLUDE

52DOBJ.LIF Compressed update file for CLIPPER5\OBJ

52DDBU.LIF Compressed update file for CLIPPER5\SOURCE\DBU

52DRL.LIF Compressed update file for CLIPPER5\SOURCE\RL

52DSAMPL.LIF Compressed update file for CLIPPER5\SOURCE\SAMPLE

52DSYS.LIF Compressed update file for CLIPPER5\SOURCE\SYS

52DERROR.LIF Compressed update file for CLIPPER5\SOURCE\ERROR

52DFISYS.LIF Compressed update file for CLIPPER5\SOURCE\FILESYS

52DITEM.LIF Compressed update file for CLIPPER5\SOURCE\ITEM

52DSDX.LIF Compressed update file for CLIPPER5\SOURCE\SDX

52DVM.LIF Compressed update file for CLIPPER5\SOURCE\VM

CLP52BIN.RTP Update file for CLIPPER5\BIN

CLP52LIB.RTP Update file for CLIPPER5\LIB

CLP52NG.RTP Update file for NG

52DUSX.TXT Instructions for upgrading to
CA-Clipper 5.2d/ExoSpace 1.0f and the list of
problem resolutions (This file).


THE FOLLOWING FILES ARE FOR PERFORMING EXOSPACE UPDATE:

EXO10F.RTP Update file for ExoSpace

EXNG-10F.RTP Update file for ExoSpace NG



UPDATE PROCESS:

1. Move to your CA-Clipper 5.2 directory.
EXAMPLE: C:\> CD\CLIPPER5

2. Backup your current version of CA-Clipper.
Do the same for ExoSpace IF you already have it installed.

3. If you have Clipper 5.2, 5.2a, 5.2b or 5.2c AND have any problems
installing the upgrade, please reinstall Clipper from the original
disks and reapply the upgrade.

To determine the version of Clipper that you currently have.
At the DOS prompt type

Clipper then press return


At the top of the screen, there will be the copyright header with
the version number.

4. Execute the installation program and follow the instructions.

EXAMPLE: A:\> INSTALL

- or -

EXAMPLE: C:\> A:INSTALL

NOTE: All the files that are upgraded must be on the same drive.

5. After the installation program has run successfully compare the
date and time stamps of the updated files against the
LIST OF UPDATED FILES section.

6. If you have applied the CA-Clipper 5.2d upgrade in a directory
other than the one into which you installed the original
CA-Clipper 5.2 version, you must make sure that your
PATH, INCLUDE, OBJ, and LIB environment variables have been
correctly set to point to the updated version of CA-Clipper.
Example:
(Scenario: You installed CA-Clipper 5.2 in C:\CLIPPER5
and later renamed the directory (or moved the files)
to C:\CLIP52D.)
A:\ SET PATH=C:\CLIP52D\BIN
A:\ SET INCLUDE=C:\CLIP52D\INCLUDE
A:\ SET OBJ=C:\CLIP52D\OBJ
A:\ SET LIB=C:\CLIP52D\LIB

NOTE: You should also change these settings in your AUTOEXEC.BAT file.

7. Move to your DBU directory, define RTLINK's behavior and
re-compile DBU.
EXAMPLE:
A:\> C:
C:\> CD \CLIPPER5\SOURCE\DBU
C:\CLIPPER5\SOURCE\DBU> SET RTLINKCMD=
C:\CLIPPER5\SOURCE\DBU> SET CLIPPERCMD=
C:\CLIPPER5\SOURCE\DBU> RMAKE DBU /F

Copy DBU.EXE to your BIN directory.
EXAMPLE:
C:\CLIPPER5\SOURCE\DBU> COPY DBU.EXE C:\CLIPPER5\BIN


8. Move to your RL directory, re-compile RL.
EXAMPLE:
C:\CLIPPER5\SOURCE\DBU> CD \CLIPPER5\SOURCE\RL
C:\CLIPPER5\SOURCE\RL> RMAKE RL /F

Copy RL.EXE to your BIN directory.
EXAMPLE:
C:\CLIPPER5\SOURCE\RL> COPY RL.EXE C:\CLIPPER5\BIN


9. Move to your PE directory, re-compile PE.
EXAMPLE:
C:\CLIPPER5\SOURCE\RL> CD \CLIPPER5\SOURCE\PE
C:\CLIPPER5\SOURCE\PE> RMAKE PE /F

Copy PE.EXE to your BIN directory.
EXAMPLE:
C:\CLIPPER5\SOURCE\PE> COPY PE.EXE C:\CLIPPER5\BIN


10. Move to your PLL directory, rebuild BASE52.PLL and BASE52.PLT.
EXAMPLE:
C:\CLIPPER5\SOURCE\PE> CD \CLIPPER5\PLL
C:\CLIPPER5\PLL> RTLINK @BASE52

Do not become alarmed if the message: "Undefined Symbols...
should be resolved at EXE generation" appears during this
step.


11. The update process is now complete.


LIST OF UPDATED FILES:

This is a list of all files that have changed since the
release CA-Clipper 5.2.

CA-Clipper 5.2d upgrade marks all CA-Clipper files with a
date stamp of 03-25-94 and a time stamp of 5:24am.
ExoSpace upgrade IF APPLIED marks TWO files listed below with
a date stamp of 4-21-94 and a time stamp of 1:06am.

Now it is easy to check if the upgrade applied properly.
The exception are files from \PLL and \SOURCE\PE subdirectories.
They have never been changed and have a date stamp of 02-15-93
and a time stamp of 5:20am.

The files DBU.EXE, RL.EXE, PE.EXE, BASE52.PLL and BASE52.PLT
will have the date and time stamp of when they were most
recently rebuilt.

The following subdirectories are created (if they do not exist)
under the SOURCE directory for API sample files.
SDX, ERROR, FILESYS, ITEM and VM.


Directory of C:\CLIPPER5\BIN

CLD HLP 19677
CLD EXE 54415
CLIPPER EXE 198968


Directory of C:\CLIPPER5\INCLUDE

ACHOICE CH 951
CLIPDEFS H 1703
EXTEND H 238
INKEY CH 8579
RDDSYS CH 342
STD CH 51453

Following files are added for API

ERROR API 2090 Error System API header file
EXTEND API 2194 Extend System API header file
FILESYS API 2652 File System API header file
FM API 811 Fixed Memory API header file
GT API 2734 General Terminal API header file
ITEM API 1802 Item API header file
RDD API 27716 RDD API header file
RULES RMK 2312 Common RMAKE dependencies file
VM API 1093 Virtual Memory API header file


Directory of C:\CLIPPER5\LIB

ANSITERM LIB 12321
CLD LIB 80719
CLIPPER LIB 516769
DBFCDX LIB 107993
DBFMDX LIB 90757
DBFNDX LIB 27175
DBFNTX LIB 38977
EXTEND LIB 127931
NOVTERM LIB 13857
PCBIOS LIB 14369
SAMPLES LIB 53891
TERMINAL LIB 14369


Directory of C:\CLIPPER5\OBJ

CDXLOCK OBJ 6679
CT2PATCH OBJ 4703
NTXLOCK2 OBJ 302


Directory of C:\CLIPPER5\SOURCE\DBU

DBU PRG 24063
DBUCOPY PRG 17556
DBUEDIT PRG 22484
DBUNET PRG 8931
DBUVIEW PRG 67609


Directory of C:\CLIPPER5\SOURCE\RL

RL RMK 436
RLBACK PRG 40489
RLDIALG PRG 10626
RLFRONT PRG 40165


Directory of C:\CLIPPER5\SOURCE\SAMPLE

BROWSE PRG 10294
STUFF C 2982
TBDEMO PRG 12398


Directory of C:\CLIPPER5\SOURCE\SYS

FRMBACK PRG 17716
FRMRUN PRG 28257
LBLRUN PRG 7192


Directory of C:\CLIPPER5\SOURCE\SDX:

README SDX 13564 RDD API Sample code
SDX C 43468 " "
SDX H 3876 " "
SDX RMK 951 " "
SDXDYN ASM 1944 " "
SDXINIT PRG 300 " "
SDXINTER C 7781 " "

Directory of C:\CLIPPER5\SOURCE\ERROR:

FILEOPEN C 2714 Error API Sample code

Directory of C:\CLIPPER5\SOURCE\FILESYS:

FILEOPEN C 2714 Filesys API Sample code

Directory of C:\CLIPPER5\SOURCE\ITEM:

CC C 1410 Item API Sample code
CCTST PRG 641 " "
CCTST RMK 436 " "
DFUNC C 1356 " "
DFUNCTST PRG 584 " "
DFUNCTST RMK 428 " "
ISDBL C 609 " "
ISDBLTST PRG 1229 " "
ISDBLTST RMK 475 " "
TESTBED PRG 854 " "
UACLN C 1888 " "
UACLNTST PRG 1274 " "
UACLNTST RMK 435 " "
UARRY C 1863 " "
UARRYTST PRG 1180 " "
UARRYTST RMK 443 " "
UEVAL C 893 " "
UEVALTST PRG 2121 " "
UEVALTST RMK 479 " "
YESNO C 837 " "

Directory of C:\CLIPPER5\SOURCE\VM:

BOOTREAD PRG 603 VM API Sample code
BOOTREAD RMK 245 " "
BOOTSEC C 1996 " "
CCVM C 1372 " "
CCVMTST PRG 661 " "
CCVMTST RMK 440 " "
HEXAMP C 1122 " "
TESTBED PRG 854 " "
VCOPYTST PRG 863 " "
VCOPYTST RMK 462 " "
VMCOPY C 12498 " "

ExoSpace files (if installed)

EXOSPACE EXE 642835
EXOSPACE NG 110905


=============================================================================

B. Problems resolved by CA-Clipper 5.2d:

1. Fixed a VMIF in the Object Memory Manager. This occurred in low memory
situations when the OMM took space from the VM segment that it was
attempting to expand.

2. Fixed a GPF/VMIF in the Object Memory Manager's garbage collector that
occurred when there were a large number of static variables.

3. Fixed the FIELDPOS() function so that it no longer returns misleading
results when passed an invalid argument.

4. Fixed bug in oStrDup() where an incorrect number of bytes were being
copied to an incorrect location for dedicated VM segments.

5. Fixed a VMIF in the Object Memory Manager that occurred when performing
an incremental garbage collection on an array that had just satisfied
the requirement for occupying its own dedicated VM segment.

6. Fixed a GPF that occurred when growing the class/dictionary table.
This happens when instantiating a class or creating a dictionary
when the dictionary/class table is full.

7. Fixed the RDD manager so it does not become corrupted when the VMM
swaps its data to disk. This occurred only in a very low memory
situation.

8. Panning right in a TBROWSE containing a single frozen column no
longer causes TBROWSE to go into an infinite loop when trying to
redisplay.

9. Fixed a GPF in TbrowseNew() and TbrowseDB() in certain memory
configurations.

10. Fixed a GPF in the function ALIAS([]) when
nWorkArea > 255.

11. Fixed the GPF caused by function ORDKEY() with an invalid
.

12. Fixed the SET DELETED ON command so that it does not affect record
visibility on a network.

13. Fixed the SORT command so that it deallocates the memory it allocated
before returning control to its caller.

14. Fixed internal errors 650, 775 and 999 that occurred when the compiler
did not produce correct code for statements that contained an extra
set of parentheses.
EXAMPLE: (( Test() ))

15. Fixed C3039 PHASE ERROR in the compiler that occurred when a .PRG
source file contained several static variables that were inline
initialized to a codeblock.
EXAMPLE: static Var1 := { | x | func1( x ) }
static Var2 := { | x | func2( x ) }
static Var3 := { | x | func3( x ) }

16. Fixed a lockup in the compiler that occurred when a .PRG had a large
number of STATIC variables.

17. Fixed the compiler so that /Z switch has effect on expressions that
contain constants.

18. Fixed the compiler so it will not produce the "C3050 Something
terrible has happened" error when it encounters a user defined
function whose argument is being negated.
Example: MyUDF( -X )

19. Fixed a problem in the compiler that allowed it to accept illegal
comment blocks.
EXAMPLE: /**/*/

20. Fixed the compiler so it now generates an error when it encounters
one of the following incorrect control blocks:
IF...ELSE...ELSE...ENDIF
IF...ELSE...ELSEIF...ENDIF

21. Fixed the compiler to generate an error when it encounters the
following statement: Alias->Alias->

22. Fixed the compiler so it does not generate an error when it
encounters an expression containing multiple NOTs.
EXAMPLE: iff( ! ! .t., .t., .f. )

23. Fixed the compiler so it does not generate an error when it
encounters a statement in which an aliased expression contains extra
parenthesis: (MyFunc())->DBFfield

or: ? (MyFunc())[x]

24. Fixed the compiler so it will not produce the "C2005 Statement not
recognized match failed at: '&'" error when it encounters the
following:
@ nCol, nRow SAY "string" + &(macro_expression)

25. Fixed evaluating a macro that contains an alias caused a syntax
error in the next macro evaluation.
EXAMPLE:
? &( "aTest[1]" ) //
? &( "test->( RECNO() )" )
? &( "aTest[1]" ) // Syntax error - &

26. Fixed a lockup that occurred when a memvar was created within a
macro. The scope of that memvar was incorrect, it expanded to the
upper lever procedure.
EXAMPLE: &("MEMVAR->dummy") := 666

27. Fixed a lockup that occurred when using a macro to expand an
expression, that contains an alias.
EXAMPLE: &(alias(1))->( Recno() )

28. Fixed SELECT() so it now returns 0 when passed an invalid parameter.

29. Fixed DBCREATE() so it generates a run-time error when it is passed
an unknown RDD name instead of hanging the system.

30. Fixed The USE command so it does not upper-case convert the
contents of the variable which is used in VIA clause.

31. Fixed DBCREATE() so it generates a run-time error when there is not
enough space on a drive.

32. Fixed the database/index synchronization as in the following example:
SET ORDER TO
REPLACE
SKIP()
SET ORDER TO
SKIP(-1)
? RECNO()

33. Fixed the 'INDEX ON TO WHILE ' command so it
does not create only one record in the scoped index (regardless
how many meet the WHILE condition) when the current index order
was used, and the most recent DBF movement was not an index
movement (SKIP, SEEK).

34. Fixed the updating of the conditional .NTX file when a field,
that was not in the key expression, was updated.

35. Fixed index file update failure on complex key expression when
the multiple fields were being concatenated as a key and the key
field(s) value(s) were subsequently changed.

36. Fixed the 'REPLACE WITH' command so it will not cause
a program to lock up if it attempts to write memo information to
disk with insufficient space.

37. Fixed the following commands:
COPY TO...SDF, COPY TO...DELIMITED
APPEND FROM...SDF, APPEND FROM...DELIMITED
so they do not hang the system when the DEFAULT option is chosen
from the 'cannot open/create file' error message.

38. Fixed the COPY TO [ SDF | DELIMITED ] command so it does not close
the current workarea when the DEFAULT option is chosen from the
'cannot open/create file' error message.

39. Fixed the COPY TO command when the current database is the child of
a relation and there is a pending seek.

40. Fixed CREATE FROM & COPY STRUCTURE so they work when the target is a
disk drive designator and file name without a backslash.
EXAMPLE: C:FileName

41. Fixed the APPEND FROM SDF command so it would ignore null-characters
when it reads SDF-file.

42. Fixed TBrowse so that 'hitBottom' would report .T. if an attempt
was made to go past the end of the available data when there are
not enough records to completely fill the TBrowse display and
refreshAll() is invoked prior to stabilization.

43. The decimal portion of the field definition for date, logical and
memo fields is now initialized.

44. Fixed the function ORDSETFOCUS() to ignore an invalid
as per documentation.

45. Fixed the function ORDSETFOCUS() to return an empty string when a
database has no controlling order and the DBFNDX driver is used.

46. Fixed the function INDEXKEY() to return an empty string when there
was no database opened in a workarea.

47. Fixed the functions ORDBAGNAME(), ORDNAME(), ORDNUMBER(), ORDKEY(),
ORDFOR() to provide an argument type checking. The following
run-time errors are generated when one or more of the arguments are
of the wrong type:
Error DBCMD/1021 Argument error: ORDBAGNAME
Error DBCMD/1022 Argument error: ORDFOR
Error DBCMD/1023 Argument error: ORDKEY
Error DBCMD/1024 Argument error: ORDNAME
Error DBCMD/1025 Argument error: ORDNUMBER

48. Fixed the inconsistency between OrdSetFocus("") and OrdSetFocus(0).
Now OrdSetFocus("") also restores the natural order.

49. Fixed OrdNumber("") so that it returns zero rather than the number of
orders for the workarea when DBFNDX driver is used.

50. Fixed the GO command when DBFNDX driver is used and the data
type of was DOUBLE, not LONG.

51. Fixed the OrdName(0) so it would return the name of the
current controlling order when DBFNDX driver is used.

52. Fixed the OrdNumber() when DBFNDX driver is used and
there is no in the Order List.

53. Major revisions have been made to the DBFMDX driver to rectify
the problems in the previous versions.

54. Fixed SET ALTERNATE so it generates a run-time error when there
is no space available on the disk.

55. Fixed the STRTRAN() function so it no longer goes into an infinite
loop when the cSearch parameter is a zero length string.

56. Fixed ALLTRIM() so it generates an error when given an argument
of the wrong type.

57. Fixed the function DIRECTORY (, "V") so it does not pad the
volume name with garbage, if its length is exactly 8 characters
long.

58. All commas contained in a GET's PICTURE clause are now copied into
the GET's edit buffer.

59. When a GET's PICTURE clause contains an '@R', the number of
editable positions in its edit buffer is now calculated
correctly.

60. When a GET's PICTURE clause contains an '@R', non-picture characters
beyond the last editable position are now displayed.

61. When a GET's PICTURE clause contains a paren, a leading paren in its
edit buffer now causes the value to be parsed as a negative number.

62. A bug was fixed in which GETs that had a PICTURE clause containing a
leading '$' would sometimes display negative values with multiple
'$' characters.

63. The size of a GET's edit buffer no longer increases if its PICTURE
clause contains a paren, and a negative value is entered into its
edit buffer.

64. In the #command for GET, the smart stringify result marker was
replaced by a normal stringify result marker. The previous use of
the smart stringify marker had caused parsing problems whenever an
aliased variable was used in a GET command.

65. The ALERT() function now updates the LASTKEY status.

66. Fixed ALERT() so that it no longer exhibits occasional problems
when fewer than four option strings are used.

67. Fixed FSEEK() so that it rejects requests that would cause the
resulting absolute file position to become negative. In such
cases the current file position is left unchanged and an error
flag is set; the value of this flag can be retrieved by calling
the FERROR() function.

68. Fixed the 'SET FUNCTION TO' command so that it will now
accept strings that contain only white space.

69. The SET DATE FORMAT code was modified so that the format string
must contain non-numeric delimiters between the month, day, and
year portions.

70. Fixed the DEVPOS() function so that it now immediately responds
to an error condition.

71. Fixed STUFF() so it will generate a run-time error when there is
insufficient virtual memory to create it's data buffer.

72. Fixed VAL("-.nnnn") so it does not return "******" now.

73. Fixed DBU so it does not go to an endless loop if there is a
filter set on a field and if GOTO is used and a record number is
given that is not one of the records matching the filter.

74. Fixed DBU to respond to the key when BROWSEing a
database in which none of the records match the filter condition.

75. Fixed DBU so it does not go to an endless loop if, when VIEWing
an empty database, the user presses any character key.

76. Fixed DBU to update and reopen indexes after PACKing or ZAPing
a database.

77. Fixed DBU so that BROWSE reflects the filter condition after
PACKing or ZAPing a database.

78. Fixed the REPORT FORM command's sub-grouping feature when the
name of the last subgroup in a group was the same as the name
of the next group.

79. Fixed the REPORT FORM command without the TO PRINT clause so it
produces the printer output if SET PRINT ON command was
previously issued.

80. The multi-lines per record using ";" - method is now implemented.

81. Fixed the number of lines on the first REPORT page to be the same
as the number of lines on the following pages.

82. Fixed the REPORT FORM command not to do page eject after subgroup
if page eject after group flag was set to TRUE.

83. Fixed the REPORT FORM heading not to be truncated when page width
is set to 61 or more characters.

84. Fixed the CA-Clipper Debugger so it does not display garbage in
the last line of the Monitor Window when was pressed.

85. Fixed RLOCK() and DBRLOCK() so that it would not fail if the database
was the child of a relation and there was a pending seek.

86. Fixed the failure of the RLOCK() function when invoked after a
successful FLOCK() on an open shared database.

=============================================================================
=============================================================================


 December 8, 2017  Add comments

Leave a Reply