BASIC DOCUMENTATION
?????????????
? HALCYON ?
?????????????
Version 3.0
GRIFFIN SOLUTIONS
dBase III, IV Access Routines
Using Turbo Pascal
12 August 1993
(C) Copyright 1991,1992, 1993 - All Rights reserved
Griffin Solutions
102 Molded Stone Place
Warner Robins, Georgia 31088
Voice: (912) 953-2680
Fax: (912) 953-5517
CompuServe: 75206.231
The Consultant BBS: (718) 837 3236
------
NOTICE
------
HALCYON IS COPYRIGHTED, ALL RIGHTS RESERVED. AS SHAREWARE, HALCYON MAY BE
COPIED AND SHARED WITH OTHERS. HOWEVER, TO PROTECT THE QUALITY OF THE
DISTRIBUTION OF THIS PROGRAM AND TO SUPPORT FUTURE DEVELOPMENT CERTAIN
LIMITATIONS APPLY. COPIES OF HALCYON MAY BE MADE FOR TRIAL USE BY OTHERS ON
A PRIVATE NON-COMMERCIAL BASIS ONLY. HALCYON MAY NOT BE RE-SOLD UNDER ANY
CONDITIONS. AS A REGISTERED USER, YOU MAY DISTRIBUTE COMPILED HALCYON
ROUTINES IN CONNECTION WITH ANY OTHER PRODUCT OR SERVICE.
THIS SOFTWARE WILL PERFORM AS DESCRIBED HEREIN ONLY IF PROPERLY APPLIED.
OUR LIABILITY TO YOU IS LIMITED TO REPLACING THE SOFTWARE (FOR REGISTERED
USERS). WE HAVE NO LIABILITY TO YOU FOR ANY DAMAGE OR LOSS, INCLUDING
SPECIAL, INCIDENTAL, OR CONSEQUENTIAL, CAUSED BY THIS SOFTWARE, DIRECTLY OR
INDIRECTLY. YOU AGREE TO THE TERMS OF THIS LICENSE BY YOUR DECISION TO USE
THIS SOFTWARE.
Technical support is available through the following sources:
???????????????????????????????????????????????????????????????????????????
? Mail: Griffin Solutions ? Telephone: (912) 953-2680 ?
? 102 Molded Stone Place ? Fax: (912) 953-5517 ?
? Warner Robins, Georgia 31088, USA ? CompuServe: 75206.231 ?
???????????????????????????????????????????????????????????????????????????
? The Consultant BBS, at 718-837-3236, supporting v32bis/HST at speeds ?
? from 1200 to 16.8Kbps. This 4-node ASP-approved BBS features author- ?
? direct shareware. ?
???????????????????????????????????????????????????????????????????????????
Griffin Solutions
Basic Documentation
Table of Contents
Introduction
Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Shareware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
Getting Started. . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Distribution Files. . . . . . . . . . . . . . . . . . . . . . . . . . vi
Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Creating Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Switches and Defines. . . . . . . . . . . . . . . . . . . . . . . . . viii
Numeric Fields ($N+,E+). . . . . . . . . . . . . . . . . . . . . . viii
Defining Clipper Indexes . . . . . . . . . . . . . . . . . . . . . ix
Demonstration . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Changes to Version 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . x
Order Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
High Level Functions/Procedures Functional Listing
Primary Database Handling Routines . . . . . . . . . . . . . . . . . . . 1
File Management Routines . . . . . . . . . . . . . . . . . . . . . . . . 1
dBase Index Handling Routines. . . . . . . . . . . . . . . . . . . . . . 2
dBase Memo Handling Routines . . . . . . . . . . . . . . . . . . . . . . 2
dBase Field Handling Routines. . . . . . . . . . . . . . . . . . . . . . 2
String Handling Routines . . . . . . . . . . . . . . . . . . . . . . . . 3
Date Routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Status and Error Reporting Routines. . . . . . . . . . . . . . . . . . . 4
Default Hook Routines. . . . . . . . . . . . . . . . . . . . . . . . . . 4
Technical Reference
AllCaps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
AssignMemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Alias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
ALock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Append . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
ClearRecord. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
CloseDataBases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
CopyStructure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
CopyTo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
CnvAscToStr. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
CnvStrToAsc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CTOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
CurrentArea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DateGet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DateGetN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DatePut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DatePutN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DBF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
DBFError . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
i
Griffin Solutions
dBOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Deleted. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
DeleteRec. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
dEOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
DTOC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
DTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
FieldCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
FieldDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
FieldGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
FieldGetN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
FieldLen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FieldNo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FieldPut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FieldPutN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FieldType. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FileExist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
FLock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
FlushDBF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Found. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
GoBottom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
GoTop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
IndexOn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
LogicGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
LogicGetN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
LogicPut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
LogicPutN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
MemoClear. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
MemoGet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
MemoGetLine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
MemoGetN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
MemoInsLine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
MemoLines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
MemoPut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
MemoPutN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
MemoWidth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
NumberGet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
NumberGetN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
NumberPut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
NumberPutN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
PadL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
PadR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
RecallRec. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
RecCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
RecNo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
RecSize. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Reindex. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Replace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
ii
Griffin Solutions
RLock. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SaveMemo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
SetCenturyOff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
SetCenturyOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
SetDateStyle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
SetDBFCacheOff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
SetDBFCacheOn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SetDeletedOff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SetDeletedOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SetErrorCapture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
SetExactOff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SetExactOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SetExclusiveOff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SetExclusiveOn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SetFileHandles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
SetFilterThru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
SetFlushOff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
SetFlushOnAppend . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
SetFlushOnWrite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
SetFormulaProcess. . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
SetLockOff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
SetLockOn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
SetOrderTo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
SetStatusCapture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Skip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
SortTo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
StrCompare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
StrDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
StringGet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
StringGetN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
StringPut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
StringPutN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
StripChar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Strip_Flip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
StrLogic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
StrNumber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
StrWholeNum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
SubStr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
TrimL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
TrimR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Unique_Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
UnLock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
UnLockAll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Use. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ValDate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ValLogic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
ValNumber. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
ValWholeNum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Zap. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Error Codes
Error List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
iii
Griffin Solutions
Demonstration Programs
DBase File Creator [GSDMO_01.PAS]. . . . . . . . . . . . . . 38
DBase File Lister [GSDMO_02.PAS]. . . . . . . . . . . . . . 38
DBase File Formated Lister [GSDMO_03.PAS]. . . . . . . . . . . . . . 38
DBase File Updating [GSDMO_04.PAS]. . . . . . . . . . . . . . 39
DBase File Appending [GSDMO_05.PAS]. . . . . . . . . . . . . . 39
DBase File Indexing [GSDMO_06.PAS]. . . . . . . . . . . . . . 39
DBase Memo File Lister [GSDMO_07.PAS]. . . . . . . . . . . . . . 41
DBase File Structure Lister [GSDMO_08.PAS]. . . . . . . . . . . . . . 41
DBase Index Creator [GSDMO_09.PAS]. . . . . . . . . . . . . . 41
DBase Multiple Indexes [GSDMO_10.PAS]. . . . . . . . . . . . . . 42
DBase Relational File Maker [GSDMO_11.PAS]. . . . . . . . . . . . . . 42
DBase Relational File Linkage [GSDMO_12.PAS]. . . . . . . . . . . . . . 43
DBase Relational File Linkage [GSDMO_13.PAS]. . . . . . . . . . . . . . 44
DBase File Maker [GSDMO_14.PAS]. . . . . . . . . . . . . . 44
DBase File and Memo Builder [GSDMO_15.PAS]. . . . . . . . . . . . . . 44
DBase File/Memo Editor (Ext) [GSDMO_16.PAS]. . . . . . . . . . . . . . 44
DBase Status Checker [GSDMO_17.PAS]. . . . . . . . . . . . . . 45
DBase Error Handler [GSDMO_18.PAS]. . . . . . . . . . . . . . 46
DBase File Sorting [GSDMO_19.PAS]. . . . . . . . . . . . . . 47
DBase Reindexing [GSDMO_20.PAS]. . . . . . . . . . . . . . 47
DBase Copy File & Structure [GSDMO_21.PAS]. . . . . . . . . . . . . . 47
Getting More Files Open [GSDMO_22.PAS]. . . . . . . . . . . . . . 47
DBase Filters [GSDMO_23.PAS]. . . . . . . . . . . . . . 48
DBase Editor [GSDMO_ED.PAS]. . . . . . . . . . . . . . 49
DBase Viewer [GSDMO_VU.PAS]. . . . . . . . . . . . . . 49
DBase File Display [GSDMOTV1.PAS]. . . . . . . . . . . . . . 49
DBase File Display [GSDMOTV2.PAS]. . . . . . . . . . . . . . 50
iv
Griffin Solutions
INTRODUCTION
FEATURES
Welcome to HALCYON, a series of Turbo Pascal routines for management of
dBase III and IV files. The routines are designed to do the following:
- Provide a simple user interface to read and write dBase III and IV
files in a network environment.
- Allow creation, use and updating of multiple dBase .NDX index files in
reading and updating the dBase III and IV data (DBF) files. The .MDX index
files are not supported (This may change if demand warrants).
- Allow creation, use and updating of multiple Clipper .NTX index files
in reading and updating the dBase III data (DBF) files.
- Allow reading and updating of .DBT memo file entries.
- Allow creation of new dBase III or IV files. These routines will work
with either dBase III and IV memo file structures. However, these formats
are not interchangeable.
- Provide expanded routines to display, edit, and update dBase files.
- Provide a file handler interface that provides a simple disk management
capability including file sharing for LANs.
- Allow operation under all versions of Object Oriented Turbo Pascal,
including Turbo Pascal for Windows.
- Do all of the above using only Turbo Pascal--no assembly routines are
used.
- Apply Object Oriented Programming to create easily usable modules.
One significant difference between version 3.0 and previous releases is the
elimination of Griffin Solutions unique window routines. These were mainly
included to allow demonstration of the routines and were not intended to be
central to the database engine routines. They have been eliminated to allow
better interface to MicroSoft Windows and Borland TurboVision, as well as
the many commercial, shareware, and public domain windowing packages. If
there is enough demand, the old window routines will be dusted off, polished
up, and provided as a separate package at minimal cost.
SHAREWARE
HALCYON is copyrighted. It is not a public domain program. It is being
distributed as Shareware, which means that unmodified copies of the software
and documentation may be freely copied and shared. I ask in return that
v
Griffin Solutions
should you find HALCYON to be useful, you become a registered user. You
become registered by filling out the order form at the end of this paper
and including a check for $89.95. For your convenience, the order form is
included as a separate file as well (ORDER.FRM). Alternatively, you may
order online through CompuServe. Type GO SWREG, and register Software
Registration Number 765.
By registering you will get:
o The right to use the Griffin Solutions routines in your
programs, including any commercial application. (This
right does not extend to distributing the Griffin Solutions
source code. However, executable code may be freely dis-
tributed)
o A copy of the latest version of the program.
o Automatic notification of major program updates.
o Technical support (one year).
o A printed user's manual.
The shareware philosophy is to pay smaller amounts for well-crafted and
useful software from developers who cannot spend the millions of dollars on
marketing necessary to compete with the large software development
companies. You benefit by being able to try a wider variety of software
products to find the ones that suit your particular purpose. And the trial
is free. The shareware developer benefits from being able to distribute his
work to a wider audience than would be possible through normal channels.
Your share of the responsibility for shareware to continue, and to support
the development of more and better products is to distribute your shareware
programs to others and become a registered user of those products you like
and use.
GETTING STARTED
This section will acquaint you with the files on the distribution disk and
show you a demonstration to quickly see what HALCYON can accomplish.
Distribution Files
The following programs should be on the accompanying disk:
HALCYON Units:
--------------
GS_BUILD.PAS TPU Builder
GSOBSHEL.PAS Primary user interface to HALCYON
GSOB_DBF.PAS Basic dBase file handling routines
vi
Griffin Solutions
GSOB_DBS.PAS Advanced dBase routines
GSOB_DSK.PAS Disk I/O routines
GSOB_DTE.PAS Date handling routines
GSOB_EDT.PAS Editor routines (non-Windows)
GSOB_FLP.PAS Floating point conversion
GSOB_GEN.PAS Generate test dBase files
GSOB_INX.PAS Virtual table routines
GSOB_MMO.PAS Memo file routines
GSOB_NDX.PAS Index routines (dBase .NDX)
GSOB_NTX.PAS Index routines (Clipper .NTX)
GSOB_OBJ.PAS Basic object structures
GSOB_STR.PAS String handling routines
GSOB_VAR.PAS Global variables
GSV_FLDS.PAS Field handling for TurboVision
GSXT_BRO.PAS File Browser Unit
GSXT_SCH.PAS File Searcher Unit
Text Files:
-----------
CHANGES .TXT Latest version changes
GS_HELP .ASC Basic Documentation for HALCYON
ORDER .FRM Registration Form
READ .ME Quick introduction file
TESTDATA.FIL Data to construct test files
WISDOM .FIL Quotes to construct memo records
Demonstration Files:
--------------------
GSDMO_01.PAS DBase File Creator
GSDMO_02.PAS DBase File Lister
GSDMO_03.PAS DBase File Formated Lister
GSDMO_04.PAS DBase File Updating
GSDMO_05.PAS DBase File Appending
GSDMO_06.PAS DBase File Indexing
GSDMO_07.PAS DBase Memo File Lister
GSDMO_08.PAS DBase File Structure Lister
GSDMO_09.PAS DBase Index Creator
GSDMO_10.PAS DBase Multiple Indexes
GSDMO_11.PAS DBase Relational File Maker
GSDMO_12.PAS DBase Relational File Linkage
GSDMO_13.PAS DBase Relational File Linkage
GSDMO_14.PAS DBase File Maker
GSDMO_15.PAS DBase File and Memo Builder
GSDMO_16.PAS DBase File/Memo Editor (External)
GSDMO_17.PAS DBase Status Checker
GSDMO_18.PAS DBase Error Handler
GSDMO_19.PAS DBase File Sorting
GSDMO_20.PAS DBase Reindexing
GSDMO_21.PAS DBase Copy File and Structure
GSDMO_22.PAS Getting More Files Open
GSDMO_23.PAS DBase Filters
vii
Griffin Solutions
Demonstration Files (Other Than dBase Engine):
----------------------------------------------
GSDMO_ED.PAS DBase Editor
GSDMO_VU.PAS DBase Viewer
GSDMOTV1.PAS DBase File Display
GSDMOTV2.PAS DBase File Display
SHOWOFF .EXE Demonstration program
SHOWOFF .PAS Demonstration program source
SMPLSTUF.PAS Extra screen display routines
TESTBROW.PAS File Browser Demonstration
TESTFIND.PAS Record Finder Demonstration
TESTFRM1.PAS User-assigned Formulas for Indexes (#1)
TESTFRM2.PAS User-assigned Formulas for Indexes (#2)
TESTPICK.PAS Using a Pick List for dBase Records
TESTSCH1.PAS Searching a dBase File for Key Word
TESTSCH2.PAS Searching with Progress Reporting
TUTOR1 .DBF Demonstration sample dBase File
XTRASTUF.PAS Extra dBAse field display routines
External Editor Files: (Public domain, used to show external editor call)
----------------------
TE .DOC TE 2.5 User's Guide (10 pages)
TE .EXE The actual Text Editor program
TEG .HLP TE 2.5 Command Summary (1 page)
TEMOD .EXE Utility to change TE.EXE options
TEREAD .1ST Information file
Installation
Installation consists of copying these files to your hard disk. The basic
documentation may be printed by typing 'COPY GS_HELP.ASC PRN' at the DOS
prompt. It is formatted for 8.5" X 11" paper and 10-pitch font.
Creating Files
File creation routines are not part of the shell routines. Although file
structure creation is very simple, it does require the use of an object.
An example of how to create a file is demonstrates in GSDMO_14.PAS.
Switches and Defines
Numeric Fields ($N+,E+)
Numeric fields may be read into your program as real values to allow
them to be used for calculation. Although the precision of a real value
is smaller than the extended type (11-12 significant digits vice 19-20
digits) used in dBase, it is completely sufficient for most applications.
If you need the extra precision of 19-20 digits, these routines will
adjust automatically. Routines using real numbers have been modified to
viii
Griffin Solutions
be of type FloatNum. FloatNum is in unit GSOB_VAR.PAS, and will
automatically adapt to real or extended type. To allow numbers to have
up to 20 significant digits the $N+ and $E+ switches must be set (Alt
O,C,8,E in the IDE). Otherwise, 11-12 digits will be used. The use of
the $N+,E+ switch adds 10K to program size. You must rebuild all unit
TPUs when the option is changed to cause them to be recompiled with the
new switch settings.
In the command line compiler use the /$N+/$E+ switch settings. For
example:
TPC MyProg /$N+/$E+/B
When you compile a program in the $N+,E+ state, the compiler links with
the full 80x87 emulator. The resulting .EXE file can be run on any
machine, regardless of whether that machine has an 80x87. If an 80x87 is
present, the program will use it; otherwise, the run-time library
emulates it. This gives you access to four additional real types:
Single, Double, Extended, and Comp. The $E+ directive will emulate the
80x87. This gives you access to the IEEE floating-point types without
requiring that you install an 80x87 chip.
Defining Clipper Indexes
Halcyon can handle Clipper index (.NTX) operations. The unit
GSOB_NTX.PAS will be substituted for the GSOB_NDX.pas by adding a
conditional define to the complier options. In the IDE this is done in
the Options|Compile menu, selecting Conditional Define, and adding
CLIPPER as a Define item. You must then recompile using the
Compile|Build option to force recompilation of units that will use
the index.
In the command line compiler use the /D option, for example:
TPC MyProg /DCLIPPER/B
That's the only change necessary to replace .NDX indexes with Clipper
.NTX indexes.
Demonstration
You can run SHOWOFF.EXE to get an immediate feel for the capabilities in
the HALCYON library of routines. The source is also included. This
program is a data file browser/editor that is very useful for examining the
data files that are created and modified in the remaining demonstration
programs.
1. Execute the program, and look at the screen display. You have a
choice of File, Index, Edit, Append, Browse, and Quit. You must
select File before any other choice (except Quit) can be selected.
2. By pressing Return with File highlighted, a directory of all .DBF
files will be displayed, along with the other directories and drives
ix
Griffin Solutions
that may be selected. Choose a file. If you don't have any, you
can use TUTOR1.DBF, included with these files.
3. Once a file is selected, an existing index (.NDX) file can be chosen
if it exists. This is done through the Index selection.
4. You may now Edit, Append, or Browse the file. Help information is
for these functions is available by pressing F1 in the function.
5. A new file may be opened by returning to the File menu selection.
To get the feeling of the speed and features of HALCYON, run the set of
demonstration programs starting with GSDMO_01.PAS. These are described in
the basic documentation and within the source program itself.
CHANGES
Major changes in HALCYON Version 3.0:
??????????????????????????????????????
- A new user interface is included that makes the 'object' part of
object oriented programming transparent. The programmer simply uses a
set of commands similar to the dBase commands to control the file access.
- The routines work under all versions of Turbo Pascal from 5.5 on
through 7.0. The routines work equally well in Turbo Pascal for windows.
Routines will work in real or protected mode.
- File sharing is allowed in network environments.
- More than 15 files can be used at the same time by using a command
to increase the number of files available.
- File sorting is allowed.
- File copying, and copying of the file structure only, is allowed.
- File filters are permitted by hooking user routines to file reads.
The user interface required to set up the hook is minimal.
- Index processing is much faster in version 3.0.
- Reindexing has been added to simplify Pack operations. All open
index files are reindexed automatically upon a call to Reindex.
- The number of indexes allowed per file is increased to 64. This
can be changed by the programmed.
- The user has the ability to hook status and error reports to take
whatever actions are needed.
- Routines used for conversion to/from numbers have been modified to
be of type FloatNum. This allows up to 20 significant digits.
x
Griffin Solutions
ORDER/REGISTRATION FORM
Quan. Program Unit Price Total
____ HALCYON Ver 3.0 $89.95 _______
____ HALCYON Ver 3.0 $25.00 _______
(Upgrade for Registered Users of)
(GS_dBase 2.8 and earlier )
____ GS_DBASE Ver 2.9 $25.00 _______
Overseas Shipping $5.00 _______
Total: _______
_____ I have included a check for : _______
(Canadians send Canadian POSTAL MONEY ORDER made payable in US $.)
DISK SIZE (circle one): 5.25" (360K) 3.5" (720K)
5.25" (1.2M) 3.5" (1.4M)
** Includes one year free support, current diskette w/manual on disk.
YOUR NAME: ________________________ COMPANY: _____________________
ADDRESS: __________________________________________________________
CITY: _____________________________ STATE: ____ ZIP: ____________
DAY TIME PHONE (in case of questions): ___________________________
How did you hear about this program? : ___________________________
THANK YOU FOR SUPPORTING SHAREWARE!
Griffin Solutions
102 Molded Stone Place
Warner Robins, Georgia 31088
Voice: (912) 953-2680
Fax: (912) 953-5517
CompuServe 75206.231
The Consultant BBS: (718) 837 3236
xi
Griffin Solutions
Griffin Solutions
High Level
Functions/Procedures
Functional Listing
Primary Database Handling Routines:
Function Alias : string;
Procedure Append;
Procedure ClearRecord;
Procedure CloseDataBases;
Procedure CopyStructure(filname : string);
Procedure CopyTo(filname : string);
Function CurrentArea : byte;
Function DBF : string;
Function DBFError : integer;
Function dBOF : boolean;
Function Deleted : boolean;
Procedure DeleteRec;
Function dEOF : boolean;
Procedure Go(n : longint);
Procedure GoBottom;
Procedure GoTop;
Procedure Pack;
Procedure RecallRec;
Function RecCount : longint;
Function RecNo : longint;
Function RecSize : word;
Procedure Replace;
Procedure Select(Obj : byte);
Procedure SetDBFCacheOff;
Procedure SetDBFCacheOn;
Procedure SetDeletedOff;
Procedure SetDeletedOn;
Procedure SetExactOff;
Procedure SetExactOn;
Procedure SetFilterThru(UserRoutine : FilterCheck);
Procedure SetFormulaProcess(UserRoutine1, UserRoutine2);
Procedure Skip(n : longint);
Procedure SortTo(filname, formla: string; sortseq: SortStatus);
Procedure Use(FName : string);
Procedure Zap;
File Management Routines:
Function ALock : boolean;
Function FileExist(FName : string) : boolean;
Function FLock : boolean;
1
Griffin Solutions
Procedure FlushDBF;
Function RLock : boolean;
Procedure SetExclusiveOff;
Procedure SetExclusiveOn;
Procedure SetFileHandles(hndls : byte);
Procedure SetLockOff;
Procedure SetLockOn;
Procedure SetFlushOff;
Procedure SetFlushOnAppend;
Procedure SetFlushOnWrite;
Procedure Unlock;
Procedure UnlockAll;
dBase Index Handling Routines:
Procedure Find(ss : string);
Function Found : boolean;
Procedure Index(INames : string);
Procedure IndexOn(filname, formla : string);
Procedure Reindex;
Procedure SetOrderTo(order : integer);
dBase Memo Handling Routines:
Procedure AssignMemo(st, nm : string);
Procedure MemoClear;
procedure MemoGet(st : string);
function MemoGetLine(linenum : integer) : string;
procedure MemoGetN(n : integer);
Procedure MemoInsLine(linenum : integer; st : string);
function MemoLines : integer;
procedure MemoPut(st : string);
procedure MemoPutN(n : integer);
Procedure MemoWidth(l : integer);
Procedure SaveMemo(st, nm : string);
dBase Field Handling Routines:
Function DateGet(st : string) : longint;
Function DateGetN(n : integer) : longint;
Procedure DatePut(st : string; jdte : longint);
Procedure DatePutN(n : integer; jdte : longint);
Function Field(n : byte) : string;
Function FieldCount : byte;
Function FieldDec(n : byte) : byte;
Function FieldGet(fnam : string) : string;
Function FieldGetN(fnum : integer) : string;
Function FieldLen(n : byte) : byte;
Function FieldNo(fn : string) : byte;
Procedure FieldPut(fnam, st : string);
2
Griffin Solutions
Procedure FieldPutN(fnum : integer; st : string);
Function FieldType(n : byte) : char;
Function LogicGet(st : string) : boolean;
Function LogicGetN(n : integer) : boolean;
Procedure LogicPut(st : string; b : boolean);
Procedure LogicPutN(n : integer; b : boolean);
Function NumberGet(st : string) : real;
Function NumberGetN(n : integer) : real;
Procedure NumberPut(st : string; r : real);
Procedure NumberPutN(n : integer; r : real);
Function StringGet(fnam : string) : string;
Function StringGetN(fnum : integer) : string;
Procedure StringPut(fnam, st : string);
Procedure StringPutN(fnum : integer; st : string);
String Handling Routines:
Function AllCaps(t : string) : string;
Procedure CnvAscToStr(var asc, st; lth : integer);
Procedure CnvStrToAsc(var st, asc; lth : integer);
Function PadL(strn : string; lth : integer) : string;
Function PadR(strn : string; lth : integer) : string;
Function StrCompare(var s1,s2) : integer;
Function StrDate(jul : longint) : string;
Function StrNumber(num : real; lth,dec : integer) : string;
Function StrWholeNum(num : longint; lth : integer) : string;
Function StrLogic(tf : boolean) : string;
Function Strip_Flip(st : string) : string;
Function StripChar(ch : Char; st : string) : string;
Function SubStr(s : string; b,l : integer) : string;
Function TrimL(strn : string):string;
Function TrimR(strn : string):string;
Function Unique_Field : string;
Function ValDate(strn : string) : longint;
Function ValNumber(strn : string) : real;
Function ValWholeNum(strn : string) : Longint;
Function ValLogic(strn : string) : boolean;
Date Routines
Function CTOD(strn : string) : longint;
Function Date: longint;
Function DTOC(jul : longint) : string;
Function DTOS(jul : longint) : string;
Procedure SetCenturyOff;
Procedure SetCenturyOn;
Procedure SetDateStyle(dt : DateTypes);
3
Griffin Solutions
Status and Error Reporting Routines:
Procedure SetErrorCapture(UserRoutine : CaptureError);
Procedure SetStatusCapture(UserRoutine : CaptureStatus);
Default Hook Routines
Procedure DefCapError(Code, Info : integer); (SetErrorCapture)
Procedure DefCapStatus(stat1,stat2,stat3:longint); (SetStatusCapture)
Function DefFilterCk: boolean; (SetFilterThru)
4
Griffin Solutions
Technical Reference
AllCaps Unit GSOB_Str
Function AllCaps(var t : string) : string;
Function to convert a string to uppercase. The string to be
converted is passed as an argument. A string converted to
all uppercase values is returned.
AssignMemo Unit GSOBShel
Procedure AssignMemo(st, nm : string);
Reads the memo from field st of the current record of the current
file and writes it as a text file to file nm.
Alias
Function Alias: string; Unit GSOBShel
Returnd the name of the currently selected database. This differs
from DBF() in that only the file name, with no path or extension
is returned.
ALock Unit GSOBShel
Function ALock: boolean;
Locks a file to prohibit any other user from adding new records while
the requesting user appends a record. Other users can read/write to
the rest of the file during this time.
If successful, a true will be returned. If unsuccessful, a false will
be returned and the error code will be found by a call to DBFError.
If file sharing is not on, the method will return true.
This routine uses the "dirty read" method by actually locking a record
region over one billion bytes above the actual file location. Since
all Lock calls reference this same offset, other lock requests for
the same areas will be rejected, but file reads to the true record loc-
ation will be allowed.
Append Unit GSOBShel
Procedure Append;
The procedure adds the current record to the end of the current file.
If file sharing is on the file will be locked before writing.
5
Griffin Solutions
ClearRecord Unit GSOBShel
Procedure ClearRecord;
Sets current record memory buffer to spaces for the length of the
record.
CloseDataBases Unit GSOBShel
Procedure CloseDataBases;
Closes all opened database files from each used area. The close pro-
cedure checks to see if the file was updated, and updates the header
information if required.
CopyStructure Unit GSOBShel
Procedure CopyStructure(filname: string);
Creates an 'empty' dBase file named filname that contains only the
structure information from the file (no records) in the current area.
This is useful for keeping a copy of the file structure for building
a new file. If a memo file is present, an empty image of it will be
copied as well to a DBT file of filname.
CopyTo Unit GSOBShel
Procedure CopyTo(filname: string);
Creates a dBase file named filname that is copied from the file in
the current area. Records will only be copied if they are valid
(i.e., deleted records are ignored if SetDeletedOn, and SetFilterThru
must validate the record as well). If a memo file is present, it will
be copied as well.
CnvAscToStr Unit GSOB_Str
Procedure CnvAscToStr(var asc, st; lth : integer);
Procedure to convert a ZASCII string (a string terminated by a null 0)
to a Turbo Pascal string in which the first byte contains the length.
The asc argument is the ZASCII string to be converted (terminated by
a zero). The st argument is the Turbo Pascal string to hold the
converted value. The lth argument is the maximum length of the string
to move. This should normally be sizeof(st)-1, to ensure there is no
overrun of the Turbo Pascal string size. Sizeof gets the size of the
string, including the length byte. Therefore, one must be subtracted
to adjust for actual positions available.
6
Griffin Solutions
As a result of the call to this procedure, a string of characters in
memory is moved to a Turbo Pascal string variable. If there is a null
(zero) character within the length of the moved string, that position
is used to set the string length. Otherwise, the length of the string
is set to the size argument.
CnvStrToAsc Unit GSOB_Str
Procedure CnvStrToAsc(var st, asc; lth : integer);
Procedure to convert a Turbo Pascal string in which the first byte
contains the string length to a ZASCII string (a string which is
terminated by a null (zero).
The st argument contains the Turbo Pascal string to convert. The asc
argument is the location to store the converted string (terminated by
a zero). Note that asc must be a memory location where the string is
to be actually stored (such as an array), and not a pointer to the
location.
The lth argument is the maximum length of the string to move. This
should normally be sizeof(asc)-1, to ensure there is no overrun of the
ZASCII string size. Sizeof gets the maximum size of asc. Therefore,
the programmer must ensure the actual string moved is at least one
less, to adjust for actual positions available, and still accomodate
a final null byte.
As a result of this call, a Turbo Pascal string is moved to a series of
consecutive locations in memory. A null (zero) character is inserted
as the final byte to create a ZASCII string.
CTOD Unit GSOBShel
Function CTOD(strn : string) : longint;
Function returns a Julian date as a longint value. The input value
is a string in MM/DD/YY, MM/DD/YYYY, or YYYYMMDD format. The date in
numeric Julian Date value will be returned. If the date in the
string field is invalid, less than 3 Mar 0000 or greater than
31 Dec 65536, a -1 will be returned.
CurrentArea Unit GSOBShel
Function CurrentArea: byte;
Returns the number of the currently selected work area assigned by
Select.
7
Griffin Solutions
Date Unit GSOBShel
Function Date : longint;
Function returns the current date through a system DOS call. The
value returned will be a numeric longint value representing the
Julian date value.
DateGet Unit GSOBShel
Function DateGet(st : string) : longint;
Function method that returns the date from a record date field. The
value returned will be a numeric longint value representing the Julian
Date. St is the string containing the field name for the field
desired.
The date in numeric Julian Date will be returned. If the date in the
dBase field is invalid, less than 3 March 0000, or greater than 31
December 65536, a -1 will be returned.
DateGetN Unit GSOBShel
Function DateGetN(n: integer): longint;
Returns a julian date value from the field number n. The value
returned is the same as in DateGet. However, DateGetN does not confirm
the field is a valid date field before retrieving the value. If a
valid date was not contained in the field, a 0 will be returned.
DatePut Unit GSOBShel
Procedure DatePut(st : string; jdte : longint);
Procedure method that stores a date value in a record field. The value
stored will be in numeric Julian Date format. It will be converted to
the character string YYYYMMDD to be stored in the dBase record.
St is the string containing the field name for the field desired. Jdte
is a longint Julian Date format to be converted and stored in the
record field. The date in YYYYMMDD format will be stored in the
current record in the specified field.
DatePutN Unit GSOBShel
Procedure DatePutN(n: integer; jdte: longint);
Converts and stores a date value jdte in field number n. The value
stored is the same as in DatePut. However, DatePutN does not confirm
the field is a valid date field before storing the value. If the field
was not a valid date field, the value stored will be truncated or
expanded to fit.
8
Griffin Solutions
DBF Unit GSOBShel
Function DBF: string
Returns the full path name of the current database.
DBFError Unit GSOBShel
Function DBFError: integer;
Returns the error code generated by the last file I/O request for
the current database.
dBOF Unit GSOBShel
Function dBOF: boolean;
Returns the flag set when a file read attempt is less than record
number 1. for example, the following code will read a file from the
last record to th
##### To see the rest of this file, please download it #####