--------------- FIDO MESSAGE AREA==> TOPIC: 202 CLIPPER Ref: DG400001 Date: 11/30/96 From: PAUL LAUFER Time: 01:47pm \/To: ALL (Read 1 times) Subj: dBase3 tools Greetings All: I do a lot of database file damage recovery and am wondering if anyone out there has knowledge of software tools to help. It's for dBase3 .DBF files, DBT's and NTX's. Some of the tools I currently use are dSalvage, DBTcheck, DBU and FoxPlus. I'm willing to spend the money for something that can expand my abilities beyond those utilities but I just can't find anything out there for the old format dBase3 stuff. Any ideas? Thanks, Paul --- * Origin: The Learning Curve - Torrance, CA. (310) 371-0007 (1:102/332) --------------- FIDO MESSAGE AREA==> TOPIC: 202 CLIPPER Ref: DG500000 Date: 11/25/96 From: JAN DOGGEN Time: 07:26pm \/To: DOUG VOGT (Read 1 times) Subj: 5.3 Hello Doug! DV> I've seen references here to 5.3. My latest is 5.2. Is 5.3 a free DV> upgrade or not? Nope, 5.3 costs. The 'a' is of course free, as it always is, but then you must do the work yourself ;) Bye, Jan --- FleetStreet 1.13 #857 * Origin: * Point van Lighthouse BBS * OS/2 * (2:285/324.15) --------------- FIDO MESSAGE AREA==> TOPIC: 202 CLIPPER Ref: DG500001 Date: 12/03/96 From: JAN DOGGEN Time: 06:48pm \/To: ANDRE HOONHOUT (Read 1 times) Subj: dbappend and corruption detected Hello Andre! AH> I have a problem with dbappend and indexes. Sometimes when I do AH> dbappend() I get a corruption detected DBFNTX 1210 error. When I pack AH> the dbf file and delete the index files and create new index files AH> it goes OK for a few dbappend()'s. But after 5 or 6 dbappend()'s I AH> get the same error again. This problem happens not on a stand-alone AH> machine but always on one particular fileserver. The way I handle AH> rlock and flock is the same as in other program I wrote with no AH> prblems. The problems happens on more then one workstation. Try a commit (or dbcommit) after the append. Bye, Jan --- FleetStreet 1.13 #857 * Origin: * Point van Lighthouse BBS * OS/2 * (2:285/324.15) --------------- FIDO MESSAGE AREA==> TOPIC: 202 CLIPPER Ref: DGB00000 Date: 12/05/96 From: RAYMOND PESEK Time: 09:36pm \/To: ALL (Read 1 times) Subj: December rules posting 1 CLIPPER ECHO RULES AND POLICIES Revised 01 Dec 1995 English is the official human language of this echo ALL USERS WHO HAVE ACCESS TO THIS ECHO MUST READ THIS. BY POSTING MESSAGES IN THE ECHO, YOU AGREE TO ACCEPT AND ABIDE BY THE RULES OF THIS CONFERENCE AS HERE POSTED. In compliance with FidoNet Echo Policy, the conference rules will be posted no less than once per month, and nothing in these rules will supersede or replace any valid FidoNet rule or policy. Description/Topicality This is the International FidoNet Echo mail Conference CLIPPER. Its topic: The CLIPPER language, and all software development tools, libraries, and environments that apply to CLIPPER programming. CA-Visual Objects (VO), the new windows based language that is Computer Associates newest entry into the Windows X-Base language market is now considered on topic in the CLIPPER echo. C and ASM programming insofar as it deals directly with interfacing and use with CLIPPER and VO is encouraged. Although as professionals in the database arena, we may occasionally resort to comparisons with other languages, language wars are always off topic, and will not be tolerated. CLIPPER and Visual Objects (VO) are trademarks of Computer Associates, Inc. The Fidonet Echo mail Conference CLIPPER is not owned, operated or in any way associated with Computer Associates, Inc. It is an echo mail conference provided by the Fidonet amateur e-mail network. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Moderator Policy/Continuity 1. All rules violations are to be addressed ONLY by the Moderator, or Co-Moderator. 2. Questioning or discussion of Moderator policy in the open echo is off topic, except that the Moderator reserves the right to post special messages relating to such policy and rules from time to time for the edification of all participants. I welcome, will listen to and consider, any suggestion or criticism sent by private hub or host-routed NetMail. You may contact me by voice at 1-330-225-7565, by FAX at 1-330-225-0248, or via Internet at 72270.650@compuserve.com 3. The Moderator shall have the right: a. To appoint Co-Moderator(s) or Alternate Moderator(s) b. To set the rules for and call an election for selection of his/her replacement at any time, or to appoint a successor upon his/her resignation from the position. c. If these rules do not cover dealing with a new way of being annoying, to make a new rule to fit the occasion. 4. In the event of the incapacity or unwillingness of the Moderator to continue to serve, then the Co-Moderator shall have all the rights ascribed to the Moderator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2. Message handling and restrictions 1. Messages must remain on the topic of this conference as described above and in the current Echo List. 2. English is the only language to be used in this conference. The majority of Fidonet is composed of English-speaking people, and messages posted in other languages will often be meaningless to those of us that do not speak those languages. 3. Be excellent to one another and keep your sense of humor. Personal attacks (thinly disguised or not) are prohibited. The useful exchange of information requires you to accept that people have opinions or experiences which contrast yours. The object of this conference is to learn from or help others, not argue with them. 4. Be helpful. If you can help someone with a problem, PLEASE do, but avoid blind guesses. You'd be doing a disservice. 5. Professionalism is something CLIPPER Echo users have come to expect and respect. We should not conduct ourselves in a manner that is clearly offensive as set forth in normal Fidonet Policy. Foul or obscene language, and personal invectives will not be tolerated. (Continued to next message) * 1st 2.00 #2448 * Moderator - Clipper Echo --- InterEcho 1.19 * Origin: PC-Ohio PCBoard * Cleveland, OH * 216-381-3320 (1:157/200) --------------- FIDO MESSAGE AREA==> TOPIC: 202 CLIPPER Ref: DGB00001 Date: 12/05/96 From: RAYMOND PESEK Time: 09:37pm \/To: ALL (Read 1 times) Subj: December rules posting 2 (Continued from previous message) 6. Personal messages, chit chat and nonsense are not permitted. Individual thank you messages are personal, and should be sent by NetMail. 7. Encrypted and rotated messages are forbidden. 8. Files encoded using UUENCODE, or Bryan Smith's BIN2BAT.COM are allowed here, providing they meet the following criteria: a. They take up no more than one message of 125 lines or less. This is to ensure that we don't get truncated versions. b. They are of general interest to CLIPPER programmers. c. They are unable to be sent through the echo in any other way. This means no .PRG files are to be sent using this method. d. A description is included, either in the message with the encoded file itself or in the message immediately preceding or following it. e. You explain which method of encoding was used. f. You do NOT mention the word encryption. 9. All messages in this echo are considered public domain. Be aware that when you post copyrighted code that you wrote, it will be assumed to have been donated to the public domain. It would be best if you specifically donate your posted code to public domain in the same message that you post it in. You may be violating international copyright laws if you post copyrighted code that is not your own. 10. Please try to keep the quoted portions of your messages SHORT. Excessive quoting adds to expense and overhead. Quote just enough to identify the thread of the conversation for other users. 11. Keep the Topic lines current. If your message content has wandered from the original topic, please enter a new Topic line. 12. Posting of test messages or BBS ads will be considered annoying behavior. It is always appropriate to respond to a request for a particular type or name of CLIPPER related file. Except for the Moderator(s), it is never appropriate to respond in the echo to a test message. When a person posts a request for a response because they don't believe they have an echo connection, the Moderator and/or Co-Moderator shall respond with a brief reply. We understand that not all people have NetMail priveleges and a timely response in the echo is not only courteous, but should eliminate the need for others to post responses. Please, if you feel it is your duty to respond to test messages, do it in Netmail. 13. Advertising is not permitted or tolerated. PERIOD! This means you may not advertise your shareware applications here, even if they are only useful to CLIPPER users. 14. For Sale ads of anything are off topic. No exceptions. Please use one of the many FORSALE echoes to sell or find your bargains. 15. The use of visible ASCII (control) characters ASCII 31 and below is prohibited in this echo. Use of eight bit characters above 127 will be permitted, subject to the following restriction: No use of ANY characters to create "cutesy" quote boxes, multi-line signatures, nor for purely decorative purposes in messages. You may create a short _PLAIN_TEXT_ signature that includes your internet address as well as your FIDO address, et al. This can be a maximum of three lines of text. The only exception to this rule is by use of the moderator to call attention to an important item, such as the box at the top of the CLIPPER echo rules, which is not solely decorative, but is used to gain the attention of all readers. 16. No aliases are allowed in this conference. Use your real name. 17. PGP keys and clear signed messages are allowed. 18. The Moderators reserve the right to take part in any discussions on the echo, without regard to their status as Moderator. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3. Porting, Cross Posting and Collecting. 1. This conference MAY NOT be ported to the BIX echo mail system, CompuServe or to any other network's mail system without the express written permission of the Moderator. (Continued to next message) * 1st 2.00 #2448 * Moderator - Clipper Echo --- InterEcho 1.19 * Origin: PC-Ohio PCBoard * Cleveland, OH * 216-381-3320 (1:157/200) --------------- FIDO MESSAGE AREA==> TOPIC: 202 CLIPPER Ref: DGB00002 Date: 12/05/96 From: RAYMOND PESEK Time: 09:37pm \/To: ALL (Read 1 times) Subj: December rules posting 3 (Continued from previous message) 2. Messages from this conference may not be gathered for profit for the mere act of collecting and distributing. If you wish to archive the messages from this conference, it shall be performed as a non-profit act. 3. Other moderators may feel free to use any part of these rules. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Raymond Pesek, Moderator, FidoNet Int'l Echo CLIPPER (1:157/200) Carl Zebooker, Co-Moderator, FidoNet Int'l Echo CLIPPER (1:2604/304) Raymond Pesek * 1st 2.00 #2448 * Moderator - Clipper Echo --- InterEcho 1.19 * Origin: PC-Ohio PCBoard * Cleveland, OH * 216-381-3320 (1:157/200) --------------- FIDO MESSAGE AREA==> TOPIC: 202 CLIPPER Ref: DGB00003 Date: 12/06/96 From: PIERRE FOREST Time: 08:41am \/To: PAUL LAUFER (Read 1 times) Subj: dBase3 tools Le 11-30-96 13:47, Paul Laufer crivait All: PL> I do a lot of database file damage recovery and am wondering PL> if anyone out there has knowledge of software tools to help. PL> It's for dBase3 .DBF files, DBT's and NTX's. Some of the PL> tools I currently use are dSalvage, DBTcheck, DBU and FoxPlus. PL> I'm willing to spend the money for something that can expand PL> my abilities beyond those utilities but I just can't find PL> anything out there for the old format dBase3 stuff. Any ideas? There is a small public domain program named Memopack that is quite efficient to pack DBT file and repair some pointer problems. It was written by John T. Opincar. The C source code of that program is given. You can easily recompile it. An OBJ is also available for those who don't have C compiler. Here is the C Source code: --------------------------------------------------------------------------- /* John T. Opincar, Jr. [OpinSoft] CID 71631,541 03/31/91 Donated to the public domain This module implements a "safe" and fast memo packing function. Memopack() is safe because it can tolerate a power loss at any time without leaving your database/memo file in an inconsistent state. At worst, you'll lose ONE memo field, and only if the power loss/three-finger salute occurs within a very short window. Memopack() is also fast-- in tests that I ran, it ran in about 70% of the time COPY TO required. Another benefit is that it only uses two file handles and does not require that you have enough disk space to make a temporary copy of the *.dbf file. In the worst case scenario, Memopack() will need the size of the original *.dbt file available on disk. This occurs when you pack a memo file which is already in optimal condition. To use Memopack(), simply include memopack.obj in your link file. You invoke memopack with the following syntax: memopack(sDbfName). If you are wondering how Memopack() can be "safe," (or you are skeptical by nature) then read on. Otherwise, you really don't need to know anymore to use the function. Memopack() is fault tolerant because at any stage of its execution, the memo field pointers in the database always point to a valid memo field. The validity of the pointers is preserved by using the same DBT file to store a packed copy itself. Right after each memo is copied to the end of the DBT file, the database pointer is updated. The first four bytes of the DBT file contain the block number of the next available 512 byte block in the file. This pointer is also updated after each memo is written to the bottom of the file, thus the integrity of the DBT file is preserved at all times during this process. Once all of the memos have been packed to the bottom of the DBT file, the packed memos are copied back to the beginning of the file. Since the memo pointers in the DBF are still pointing to the copies at the bottom of the file, an interruption at this stage will not cause any problems. Of course, the DBT would then be larger than before the pack was started, but you would just run memopack() again (hopefully without interruption this time) to shrink it down to the minimal size. Once the packed memos have been copied to the top of the DBT file, all of the memo pointers in the DBF file are adjusted to point to the packed copies. The final step is to reset the pointer at the top of the DBT file and then truncate the DBT file to its new, optimal size. */ /* If you need to recompile for some reason, make sure you set it up for the appropriate version of Clipper. */ #define S87 0 #ifdef S87 #include "nandef.h" #endif #include "extend.h" extern int _topen(byte *, int); extern int _tclose(int); extern int _tread(int, byte *, int); extern int _twrite(int, byte *, int); extern long _tlseek(int, long, int); /*---------------------------------READNUM----------------------------------*/ /* PURPOSE: Reads int or long from file RETURNS: Long */ long readnum(handle, bytecount) int handle, bytecount; { byte abyte; int i; long numread = 0; for (i = 0; i < bytecount; i++) { _tread(handle, &abyte, 1); numread = numread | (((long)abyte) << (i << 3)); } return( numread ); } /*---------------------------------WRITENUM---------------------------------*/ /* PURPOSE: Writes int or long to file */ void writenum(handle, number, bytecount) int handle; long number; int bytecount; { int i; byte abyte; for (i = 0; i < bytecount; i++) { abyte = (byte)(number & 0x000000FF); _twrite(handle, &abyte, 1); number = (number / 256); } return; }