The Oasis Logo

FTP Site: General

Directory of: files/general

Bytes: 4,092 Date: 1995-11-13

A short text file that describes a simple fee structure for you to
include in your contract with new clients.

Bytes: 6,523 Date: 1997-02-16

Contains a true type barcode font for code 39 barcodes.

Bytes: 107,638 Date: 1994-05-29

Save Clipper Arrays to File

Bytes: 115,900 Date: 1994-09-09

AHELP5 1.42: Advanced Help & Index Library for Clipper 5.x
AHELP 1.42: Advanced Help Library for Clipper Summer '87.

AHP142.ZIP contains both AHELP and AHELP5.

Context sensitive help with popup windows for applications written
with Clipper. Key word indexes available for complete system.
Written by Capella Inc. and distrbiuted by Jim Hass.

Bytes: 5,535 Date: 1998-01-10

Andi Jahja submitted this nice routine which demonstrates a virtual

This means that you can create a thousand column tbrowse on a table
with 1000 columns by virtualizing the columns of data that are shown
on the screen. This allows us to bypass the otherwise difficult column
limit of tbrowse().


Bytes: 5,434 Date: 1998-10-19

AJSPLIT is a simple Clipper routine utilizing F*() functions to
"break", or split big files into smaller chunks so that one can make a
back up onto diskettes. This routine will create small files as
instructed at the size of nbyte bytes each.

Bytes: 4,648 Date: 1993-09-01

Alert() substitute by John Graceland

Bytes: 5,403 Date: 1995-02-07

Array print program

Bytes: 13,199 Date: 1992-07-03

Included here is the SOURCE CODE for a Clipper 5.01 ARJ format archive
file directory function.

This function is tested with various types of ARJ files and has been
found to cope with version from 2.10 up to 2.30.

If you find any problems then please feel free to fix the source but
*please* contact the author, David A Pearson.

Bytes: 7,677 Date: 1994-02-09

Save Clipper arrays to disc, also STOD() function

Bytes: 217,612 Date: 1995-08-06

A DOS, Windows or OS/2 boot configuration manager that works very

This will save many versions of AUTOEXEC and CONFIG, and allow you to
select from them very easily. Once selected, the new files are written
to disk and the computer is rebooted.

This boot manager has the ability to run your favorite editor and
flush your cache before rebooting.

Bytes: 10,472 Date: 1996-02-21

These functions use low-level fileio to write any set of files to
diskette. Their main advantage, over simple copying is that they can
split files across 2 or more diskettes. It is 100% Clipper and all
needed source is included here, including a demo calling routine. The
coding style is a little old fashioned, with mostly private variables
being used. I have replaced a few, but not disturbed most due to the
original author's use of macro compilation and memory files. Besides,
if it works, don't fix it. I did add 5.3 pushbuttons, though.

Their main weakness, compared to a commercial product such as
ProVision Backup, which I now use instead, is that this routine does
not format diskettes on the fly and does not use any compression. In
addition the estimated time display is wildly inaccurate, owing to the
substantial speed differences in disk read/write times on the array of
modern PCs out there. At the time this was written, most everything
was still a slow '386, at best. You may wish to adjust the value used
on line 324 downward or upward, depending up the target platform. On
my Pentium 90 2900 bytes per second is about a fourth of what the
computer is doing, or less.

Bytes: 4,300 Date: 1995-03-28

Base conversion program - BIN/HEX/DEC

Bytes: 7,498 Date: 1996-12-01

Summer '87 compatible barcode routines which:

- Supports Code 39
- Supports LaserJet printers
- Supports Epson Dot Matrix 9 & 24 pin printers
- Control of positioning the barcode for two or three across Laser output

Bytes: 32,637 Date: 1997-05-08

Initiating events which are running in the background has now become
very easy. Arno Tolmeijer wrote a few small programs to assign a
Clipper function to be called by the internal Clipper event-handler.
With the help of these functions I built an system in which several
Clipper-functions are called in a loop and run in the background while
the main program runs.

Events are evaluated in idle-time, when Clipper is waiting for a key,
like inkey().

See CPUFREE.ZIP below.

Bytes: 4,944 Date: 1996-05-26

SOURCE CODE that will binary search a sorted flat file. This will
allow you to find data in a sorted flat file as quickly as an indexed
seek in a .DBF!

Bytes: 3,663 Date: 1994-08-29

Searches arrays quickly

Bytes: 8,098 Date: 1994-04-18

Small utilities written in C

Bytes: 3,815 Date: 1997-06-18

Two Clipper sources to play 'Happy Birthday' song. Take your pick.

Public Domain, Source Included.

Bytes: 6,137 Date: 1995-04-30

Clipper bit manipulation routines written in C.

Bytes: 4,384 Date: 1997-04-04

Bit manipulation functions with SOURCE CODE, written in Clipper.

WARNING! Some of these functions assume that bits 1-8 run left to
right, not right to left as is normally the case. This
allows for long strings of bits to be contiguous (ie, bit 9
is next to bit 8). For instance, I store a logical value for
every day of the year in 46 bytes (1=.T., 0=.F., 366 days /
8 bits = 46 bytes).

If you wish to use the functions in a right to left context,
uncomment the #define at the start of the file.

This is an original work of Peter Townsend and is hereby placed into
the public domain. E-mail:

Bytes: 3,999 Date: 1997-08-11

Bit Manipulations, simulating the functionality of Clipper Tools
functions using 100% Clipper. Optimized for execution speed. Dual
8-bit and 16-bit operation, 8-bit is much faster.

Copyright 1997, Richard M. Mitchell, dba Bytemaster, All Rights Reserved

Bytes: 4,347 Date: 1996-04-24

An explanation of how to use both static and dynamic .DLL files with
Blinker 4.0. Includes sample code.

Bytes: 6,634 Date: 1994-07-06

Nanfor-Lib: FT_XBOX() modified

Bytes: 14,838 Date: 1994-04-06

Functions to produce ShadowBoxs extended mode Ok

Bytes: 6,308 Date: 1995-12-11

A function originally by Rick Spence used to browse text files using

Bytes: 18,575 Date: 1995-01-25

Example of radio buttons GET System

Bytes: 5,300 Date: 1996-01-16

This functions allows you to sequentially read text files one line at
a time. While many other functions of this kind have been written,
this one differs that it buffers the input from the disk to
dramatically improve performance.

This also contains OBUFREAD.PRG, which is identical in processing
power to BUFFREAD.PRG, except that it is more object like in the fact
that it can handle reading from more than one file at a time by
saving the specifics in arrays in the calling function.

If you are only operating on one text file at a time, BUFFREAD is
easier to use, since it requires no extra variables to be created.

Bytes: 5,885 Date: 1994-12-18

3 Functions for .Zip Files

Bytes: 20,276 Date: 1996-03-19

An extensive popup calender with SOURCE CODE. PUBLIC DOMAIN. This is a
very nice and well documented function.

Bytes: 95,036 Date: 1997-03-25

CDBFILE 1.0 is a C++ toolbox for programmers who wish to build
software that manipulates dBASE III "*.DBF" files. It provides
programmers with a structured object-oriented interface to DBF files.

It is licensed under the GNU public license.

Bytes: 8,766 Date: 1995-11-20

An article by Jo W. French explaining how the new .CDX indexes work in
CA-Clipper 5.3. This intended to explain how you use them and upgrade
your software from other index types to .CDX type.

Bytes: 4,189 Date: 1997-09-21

A query on CIS regarding dbseek() ( Clipper 5.3 ) performance with
LAST set to .t. (_dbfcdx rdd) induced me ( Jo French ) to put together
the following code to show results under different scenarios.

Conclusion - use last = .t. with caution.

Bytes: 5,314 Date: 1998-05-25

Change field names in a blink of an eye!

Several versions of SOURCE CODE allow you to change the name of a
field in a .DBF file without copying the entire file, by direct
editing of the header of the .DBF.

Bytes: 4,802 Date: 1996-07-22

.ASM SOURCE CODE for changing video modes. Includes object. Public

Bytes: 14,972 Date: 1994-09-10

CheckArg v1.0 - type checking based on hungarian notation

Bytes: 4,043 Date: 1991-06-10

IEEE double floating point conversion to and from Clipper numerics

Bytes: 3,578 Date: 1997-08-09

SOURCE CODE to perform a chkdsk from Clipper. Requires Blinker.

Bytes: 24,002 Date: 1997-05-29

This is a bunch of functions (SOURCE CODE). The documentation is in
Deutch, and I would appreciate it if one of you bilingual
Deutch/English programmers out there would translate the headers in
these programs so I can repost it here to make it's use more clear.

Bytes: 110,282 Date: 1988-06-27

A Norton Guide for Clipper Summer '87 version. Shareware by Greg Leif.

Bytes: 127,289 Date: 1994-12-12

Clipper 5.x ScreenSaver Library, fully functional Shareware, easy to

Bytes: 4,821 Date: 1998-05-25

A password entry routine with SOURCE CODE.

Bytes: 20,177 Date: 1989-11-05

The files included in this archive demonstrate the CODE 39 barcode
symbology and will print CODE 39 barcodes on Epson/IBM Graphic
printers as well as the HP LaserJet without font cartridges or soft


Bytes: 4,490 Date: 1995-08-24

A pure Clipper program that emulates the DOS DIR command, for learning

Bytes: 11,397 Date: 1996-03-14

Routines to write to and read from Windows Clipboard. (Works for
WIN3.1, WIN3.11 and Windows 95). Note: C .OBJs are compiled for
Clipper 5.2.

Bytes: 5,752 Date: 1996-11-06

This function converts .DBF files to Lotus .WKS files.


Bytes: 26,884 Date: 1996-05-26

A dissertation about converting from Clipper to Delphi as your
programming tool. This article tells about some of the pitfalls you
will encounter and how to handle them, and also provides some sample
code between the two languages.

Bytes: 152,727 Date: 1997-09-21

This is a very nice collection of Clipper card games. Blackjack (21),
5 card stud, 7 card stud, Between.


Bytes: 12,028 Date: 1997-06-01

This contains some alternate sorting algorithms, along with a test
platform to see how different sorting performs on different types
of data.


Bytes: 7,645 Date: 1995-08-07

A Tetris game written in Clipper. PUBLIC DOMAIN with source.

Bytes: 11,650 Date: 1996-04-22

This contains an explanation of how to use functions that were built
into clipper to create object classes without using any external class
library. Includes header files and sample code.

Bytes: 10,201 Date: 1994-12-22

Detect CPU from 8088 up to Pentium !

Bytes: 15,563 Date: 1994-08-28

Convert Clipper programs to dBase for Windows style

Bytes: 10,066 Date: 1996-05-26

Tom Leylan's excellent dissertation on Code Blocks. Tom has written
several books and articles about learning Clipper, and this is an
excellent explanation of Code Blocks by a masterful writer and Clipper

Bytes: 5,200 Date: 1997-12-20

A short course on how to reduce CPU load while running Clipper
executables under a multitasker.

See BGEV5.ZIP above.

Bytes: 9,133 Date: 1997-07-20

16 and 32 bit string CRC's, and 32 bit file CRC.

Bytes: 8,653 Date: 1993-02-09

This zip contains a Clipper function that is a 32bit CRC identical to
the one used in PKZIP, including the compiled object. PUBLIC DOMAIN.

Bytes: 184,679 Date: 1995-06-09

Utility to generate a Browse program - source included

Bytes: 21,179 Date: 1996-12-19

CauseWay Tools Package 1 Version 1.0 Documentation

The CauseWay Tools Package 1 contains three useful routines for
programmers using the CauseWay for Clipper 5 package, including
commented assembly language source. Although they are generally
self-documenting (standard weasel words to avoid having to create a
large READ.ME file), following is a short overview of what is
provided. But first, the generic legal blurboid:

All SOURCE CODE contained in CauseWay Tools Package 1, consisting of
the files FILEVIEW.ASM, GETENV.ASM, and SETENV2.ASM, is hereby
released to public domain. Michael Devore grants no warranties,
express or implied, regarding the CauseWay Tools Package 1's fitness
for any application, use, or purpose. Use of these routines is
strictly at your own risk and pleasure.

The showcase of CauseWay Tools Package 1 is the 100% assembly language
file viewer, written by Ted Means. This nifty utility allows viewing
ASCII files up to 4G in size via a Clipper-callable routine. You can
control many of the display aspects of the file viewed, via keystrokes
or other mechanisms.

A small example PRG, called CWFVDEMO.PRG that demonstrates use of the
file viewer is included. Simply compile it with Clipper's /n option
and then pass the file name you wish to view on the command line.

SETENV2.ASM is a version of the public domain SETENV.ASM by Kevin
Saffer modified by Michael Devore to work in protected mode. SETE
will add variables to the DOS master environment table.

GETENV.ASM is a small routine written by Michael Devore which behaves
the same as Clipper's internal GETENV routine. This version, however,
does not fail, disapprove, or act inappropriately if an environment
variable, such as PATH, exceeds 127 characters.

Note that linking in GETENV.OBJ probably will cause a duplicate symbol
warning because the Clipper module which defines GETENV also defines
GETE, meaning that the module still gets linked in. If you find this
particularly bothersome, you can modify GETENV.ASM to publicly list
GETE as an additional entry point (currently that's all Clipper does
anyway, force GETE to call GETENV).

Any questions, comments, bug reports, or feature enhancements, please
direct them to Michael Devore [71540,62]. He will forward on any file
viewer comments more appropriate for Ted's examination.

Bytes: 13,832 Date: 1994-04-26

Set of Blinker link scripts for Clipper,Nanfor,Netto,CT3,Six

Bytes: 10,172 Date: 1994-01-07

Conventional Edit Screen within TBrowse

Bytes: 17,069 Date: 1996-11-29

Some C source, header, object and linked executable to read the
structure and data from a .DBF.

Bytes: 6,129 Date: 1997-09-29

Translate dBase III File into Lotus 1-2-3 Format. Does not process any
Memo Fields or empty DBF files.

- corrected date problem when using SET EPOCH
- now tests for empty DBF
- reports records processed and total to process
- permits use of colour scheme of main program
- minor speed improvements
- minor additions to documentation
- restores current dbf (if any) and its order
- restores cursor shape and status
- uses functions from the now public domain SuperLib Msg(), Messyn(),
MakeBox(), UnBox(), Sls_PopCol()


Bytes: 5,835 Date: 1993-04-21

Todd MacDonald's Clipper replacement for the dBase III INSERT BEFORE

Bytes: 6,067 Date: 1997-06-19

This is the SOURCE CODE for a function to save memo files in .DBF's
instead of .DBT files, thereby eliminating many of the problems
associated with .DBT, such as file bloat and size limitations.


Bytes: 3,327 Date: 1997-05-22

This is some text by Jo French which explains how to link the DBFCDX
driver in 5.3x.

Bytes: 13,541 Date: 1997-06-17

A C++ DBF/NTX reader.

Bytes: 5,211 Date: 1996-07-22

Perl SOURCE CODE to read .DBF's.

Bytes: 6,124 Date: 1996-01-14

SOURCE CODE Generator for Database Creation

The utility allows for Function Names to be specified. Multiple
Functions (databases) can be appended to the same file. DOS Wildcard
File specifications can be used for the Database Name. For Wildcards,
a function that creates all the databases can be specified. If left
blank, then it is not created.

The S&S Computing Group, Copyright (c) 1995. This SOURCE CODE and
executable may be freely used or distributed as long as this header
remains intact. The SOURCE CODE cannot be distributed as a stand alone
utility for a profit, but can be incorporated in your applications.

Bytes: 8,221 Date: 1998-01-31

Problem: An application using several .DBF files in a set of
directories on a server. Each user or group of users has different
sets of access rights to these directories.

Solution: My special UDF that opens the file in a mode according to
each users effective rights: If the user lacks Write-access the file
is opened in ReadOnly mode. If the user does not have the required
access rights, the user is told so. All without the application
bombing him with error messages.

The reason for why I post it here is to hear others opinions on my
solution. Is this a proper way of handling this kind of problem? Do
you see any pitfalls in my SOURCE CODE? (yes, I have of course tested
it). Do you have a better solution?

If you need it, use it yourself. But please make public any major
improvements or error corrections.

Stian M. Abrahamsen 03.12.97

Bytes: 5,067 Date: 1994-09-10

Default arguments, ala C++ in function statement- include file

Bytes: 6,839 Date: 1994-07-16

Run any codeblock on a deferred basis.

Bytes: 4,599 Date: 1996-12-07

This is the missing DESCEND() function by Ted Means for Nanforum

Bytes: 9,095 Date: 1994-03-25

DBS Getsys for date GETs

Bytes: 7,274 Date: 1995-04-29

DO TO for - batch utility - source

Bytes: 4,148 Date: 1994-08-10

Echo dots when keying password.

Bytes: 7,940 Date: 1989-05-06

A small collection of Clipper '87 routines to allow you to download
soft fonts to your LaserJet + or II (or compatible) from within
Clipper. ( should be 5.x compatable )

By Mark Leavitt MD PhD, MedicaLogic, Inc., Compuserve 73270,672
Placed in the public domain...use and enjoy!
Thanks to Brad Codd who provided BINMODE which inspired IOCTL routines

Background: The HP LaserJet + and II, and compatible laser printers,
accept "soft fonts" which can be downloaded into the printer's memory.
The soft fonts are supplied as disk files. Because these files are
essentially binary, and can contain characters such as ASCII 0 (null),
ASCII 26 (eof), the recommended method for downloading has been to use
the DOS command:


(The /B causes a binary copy which ignores end-of-file characters.)

Clipper programmers hate to use DOS because of memory limitations with
the RUN command, possible cryptic DOS error messages, and such.
Attempts to download fonts using SET PRINTER TO, SET PRINT ON are
doomed as the DOS printer driver intercepts end-of-file characters.
The trick here is to place the printer driver in binary mode (called
"raw" mode) instead of character mode ("cooked" mode) using an obscure
MS-DOS call called IOCTL. That is the purpose of the assembly language
module supplied here.

Bytes: 9,343 Date: 1997-02-19

A set of functions to save and restore database information.

Assumptions: 1. That all databases are open in contiguous areas.
(that is, that all areas between the first and the
last area are used.)
2. That the first area used is area 1.
3. That no databases are opened read-only.
4. That a database name is the same as its alias.

This function depends on my SaveArry() and LoadArry() functions which
can save and restore multi-level arrays. It also uses my version of
Victor Szol's OpenMode() function. ( included )

This is an original work by Peter Townsend and is hereby placed in the
public domain.

Bytes: 4,240 Date: 1997-09-21

Process which traverses a table and checks for duplicate key
records. SOURCE CODE

Bytes: 22,113 Date: 1996-01-14

EDTA 1.1 (Extended Data Type Abstraction version 1.1) is written by
Arno Tolmeijer, Copyright (C) 1994-1995 and is freeware. EDTA is a
library to be used with CA-Clipper 5.x.

With this library it is possible to emulate hexadecimal numbers and

Bytes: 4,085 Date: 1996-06-07

How programmers hunt elephants using different languages. Humor.

Bytes: 3,408 Date: 1997-06-07

This is a global filespec version of FERASE(), which allows you to
delete multiple files with a single line of code, based on a valid DOS

Bytes: 11,362 Date: 1994-01-01

Time drive Codeblock

Bytes: 3,547 Date: 1994-07-21

Overcome Clipper's float point math comparison headaches - SOURCE CODE

Bytes: 146,929 Date: 1996-04-08

A program to dial the U.S. Naval Observatory and download the time
from the Atomic Clock.

This will set the time and date on your PC very accurately.

If you are connected to a Novell file server and you have console
operator or supervisor rights, it will set the time and date on the
file server as well.

You can place this in your autoexec.bat and set it up so that it only
dials on a periodic basis. Your choices are every 1, 2, 3, 7, 14 or 30

Bytes: 7,410 Date: 1995-05-30

Size of extended memory - needs Nanforum Lib

Bytes: 3,573 Date: 1997-06-07

Test if files are in use by other users on a network.

Bytes: 21,159 Date: 1997-10-18

FastClass by:

This product is based on ooclip15, so if you can't find some
introduction of this product, you refer to in oasis site.

FastClass supports Debug. I have found how to support Debug, but I
don't think it's neccessary, So if you're interesting in it, contact
me, I can tell you how to modify the send.asm of clipper to make it.

FastClass supports Super message. I found if I support the supper
message, such as ::super:init, the execute speed of class will much
more slow than FastClass, so I didn't include it in my product. If
you're interesting, contact me.

As to the speed, FastClass uses the fastest way for CLASS PROGRAMM
under clipper structure, while ooclip also. Because Classy and Objec1a
both use Code Block as method, so its speed must be slower than Fast
Class and OOCLIP.

(Note: In fact,Classy did some trick on that method, so it's a little
faster than Objec1A, but since it supports SUPER message, and other
complicate feature of CLASS PROGRAMM, it's speed is even slower.)

As to the size of FastClass, it's the smallest one. It modified the
send.asm of clipper, so it won't add anything to your exe file, except
a class making function, and some programm supporting clipper valtype
variables as class, which are wroten in prg.

Support Clipper Variables as Class
You can see:

x := date()
? x:size

You'll get 8.

You can add your own features for every clipper valtype bu modify the

You can get the address of functions(include static functions). This
is only available in Fastclass.

For example:

x := GETADDRESS( work )

then, at anywhere else in your programm, you can use:
to execute the function work.

Bytes: 12,361 Date: 1996-07-22

A pure Clipper virtual file browser. This is very nice and has search
capabilities, help, imbedded color capability, line preprocessing, and
more. This is a nice work by a collaboration of FIDO echo

Bytes: 15,047 Date: 1994-02-06

Clipper code for reading and writing FIDO .MSG format mail packets.


Bytes: 7,947 Date: 1994-11-08

Evaluate Codeblock on files from picklist

Bytes: 22,724 Date: 1995-05-14

Presented here as the main attraction is FileScan() which was modeled
after one that has the same name in Dirk Lesko's FUNCky II
developement library.

The primary purpose of cloning FileScan was to show a fellow
programmer how to code functions that might save them time by having a
black box routine.

Many new programmers may wonder how a function was put together in a
third party library, which does not include SOURCE CODE, and here we
can show one way which it might have been coded if done in Clipper.
I'm sure that this function (filescan) was coded with either assembler
or c and not Clipper.


Bytes: 4,438 Date: 1997-11-08

The filetran function is like the strtran function, except that it can
process any size file. PUBLIC DOMAIN with SOURCE CODE.

Bytes: 3,222 Date: 1995-08-24

This pure Clipper program will accept a file name as a parameter and
return the full dos path if it is found in the current path. PUBLIC

Bytes: 59,350 Date: 1995-05-18

A fast interactive filter on GET and TBrowse objects - SOURCE CODE

Bytes: 3,856 Date: 1998-12-31

A simple function to rename a field without doing an export and an
import. This function directly changes the .DBF header.

Bytes: 7,519 Date: 1995-06-13

Display floppy drive types + sizes - need Nanforum Lib

Bytes: 8,079 Date: 1994-03-17

FP_STRING: Convert numeric value to String

Bytes: 7,648 Date: 1997-08-16

The FREECELL card game in a linkable Clipper object.

Bytes: 6,074 Date: 1998-01-14

This demonstrates how to use Clipper to create and execute scripts and
parse return data from a remote directory, via FTP.

This does not require that Clipper itself be winsocket capable, but
leverages the FTP.EXE supplied with Windows 95 and NT.

Requires Blinker or some other swap package for swapping to the FTP


Bytes: 96,278 Date: 1995-07-23


Archive of three FiveWin tip files readable with the NoteBase viewer.

Bytes: 24,742 Date: 1994-06-02

Clipper TSR mimicing SideKick (needs Grumpfish/Switch-ASE)

Bytes: 4,868 Date: 1998-05-25

A date function which allows date input which defaults the century
onscreen, via SET EPOCH, but you only have to input the last two
digits of the year. SOURCE CODE.

Bytes: 19,115 Date: 1994-07-23

Get System Replacement - GETSYSPP.PRG by John Kaster

Bytes: 9,975 Date: 1994-05-18

GETS2.OBJ - fixes ...GET...PICT "@K"

Bytes: 10,750 Date: 1994-05-01

GETLIST jumping with & w/o GETSYS

Bytes: 8,338 Date: 1998-05-25

GETLIST jumping examples using postblock validation routines.


Bytes: 12,390 Date: 1996-12-17

So What's special about this ... well to be honest nothing, but I'd
take a guess that your a clipperhead looking at this, so it's written
100% in CA-Clipper so thats one thing going for it!!

Many people ask if Clipper can be used to write games, well this is
just a small illustration of the fact that you can. It continues my
series of programs and function that make the use of Text Mode
applications that bit more appealing to the user!

As such this has been released into PD, some ideas on the game
structure were pulled from other Tetris games i've seen, lets face it
how many different ways can tetris be written??

Thanks must go to some of the original Clipper Tetris games i've seen,
they at the very least inspired me to take a bash at it myself!!

You will also find enclosed a RANDOM function GT_RAND1(), and an
Array to Disk and Disk to Array functions GT_A2Disk() and GT_Disk2A()

So if the tetris game itself doesn't find its way onto a hidden hotkey
in your applications, perhaps the random or array functions might!

Please enjoy the code as much as I did writing it, if you have any
suggestions or comments to make about the code, then please do not
hesitate to moan, grumble or suggest! At the very least if you find
any of the code included herein of any use, please drop me a short
email to keep me informed of what you are using, and how its
benefiting you!

Bytes: 3,282 Date: 1997-08-09

This few lines of text explains what handles 1 - 5 are in a DOS
session. These handles are opened by DOS and available to all

Bytes: 4,182 Date: 1997-09-21

This is SOURCE CODE which will determine the number of available
handles, recreating the Clipper Tools functions for handle data in
pure clipper.

Bytes: -1 Date: (not available)

Due to extremely rapid development cycles, the binaries and source
for Harbour are no longer available here. A daily snapshot is
available at the following URL, as well as the last 'stable' version.

Visit for all the latest details!

Bytes: 145,884 Date: 1995-08-24

Self decompressing archive of the HCFA medical forms, including
the compiled executable and sample data tables.

Bytes: 5,352 Date: 1995-03-28

Online Help in Clipper using MemoEdit() - source

Bytes: 5,060 Date: 1994-06-27

Hilite whole line in TBrowse w s/c

Bytes: 18,171 Date: 1995-03-20

Hintp is a quite amazing program that can actually run .PPO files.

(you could store them in a memo field... hint hint)

The compiled program makes Clipper act like an interpreter.

Download this. You've got to see this. SOURCE CODE

Bytes: 153,095 Date: 1996-11-05

This is the Clipper SOURCE CODE to a variable length field Xmodem
transfer protocol.

Generally, xmodem transfers packets of 128 bytes, but this version
sends a single standard length header, and that header redefines the
length of the rest of the blocks in the transfer. Each packet includes
a CRC check, and the whole thing was created for file transfers from
handheld devices to host computers. (generally, to a PC)

When developing files on a handheld, the file format is usually just a
flat file. This protocol allows these flatfiles to be transferred to
the host a single complete record at a time, where it is generally
transferred into the file file format.

This source requires SilverClip library to compile, but the .EXE is in
there if you want to play with it. It requires a null modem cable
between the two devices.


Bytes: 46,985 Date: 1994-07-18

HelpSys v2.04 - Helpsystem

Bytes: 9,335 Date: 1997-05-07

HotPick() is a general 'picklist' way to select records in a database.
Simply provide a database name and a list of fields to display and
HotPick lets you point to the record you want.

Add index, field header names, row and column positions and you get
elegant control of your 'Pik.'

Written some time ago by Phil Barnett, this modification by Ted
Cleaver changes HotPick's 'engine' from Dbedit to TBrowse.

Returns nReturnValue := RECNO() or 0 if no record selected


1. HotPick() can work progressively through a database by returning
to the most recent record 'picked'.

2. HotPick() will work without an open index, using only cursor keys
to find a selection. With an index, HotPick() will do a
'progressive' SEEK on ascii CHR(32) through CHR(122).

3. Defaults to self centering browse box, but can be positioned
using optional row and column parameters.

Bytes: 5,613 Date: 1996-07-22

A humorous text message about different levels of programming ability.

Bytes: 6,390 Date: 1996-03-01

This function will read the serial number from an IDE drive. With C

Bytes: 10,678 Date: 1996-08-10

Internal Errors of Clipper in .NG format.

Bytes: 6,568 Date: 1996-05-26

SOURCE CODE for a data driven indexing function with progress bars.

Bytes: 13,322 Date: 1995-07-26

A function which displays the status of the current alias. Very nice
with SOURCE CODE and freeware release.

Bytes: 7,652 Date: 1997-05-07

A set of functions to load, query, and save .INI files

Assumptions: 1. That values will only be set in an .INI file after a
section header is encountered. (for example, "load="
occurs after "[windows]" in WIN.INI)

2. The .INI file is small (.INI files are supposed to be
less than 64k in size).

3. That items within sections are uniquely named.

4. That sections are uniquely named.

This is an original work by Peter Townsend and is hereby placed in the

Bytes: 4,754 Date: 1995-07-11

A table of inkey values, Header names and Descriptions in .DBF format.

Bytes: 4,025 Date: 1997-09-25

Terry Carmen has created this .ASM function to find out if your
program is running under NT.


Bytes: 3,893 Date: 1997-06-07

Clipper SOURCE CODE which validates ISBN numbers.

Bytes: 3,461 Date: 1997-06-07

Clipper SOURCE CODE to detect if DEBUG is loaded.

Bytes: 5,432 Date: 1918-12-18

Terry Carmen's ASM function for determining the existance of a
directory. This one works correctly on both local drives and networks.

Bytes: 8,556 Date: 1969-09-01

More code and .ASM to determine the existance of a directory.

Bytes: 3,757 Date: 1996-06-14

Clipper SOURCE CODE to determine if you can open a file exclusively.

Bytes: 22,724 Date: 1995-05-14

Useful File I/O routines and library

Bytes: 4,406 Date: 1992-01-20

Terry Carmen's excellent replacement for the generic Clipper function isprinter(),
that is able to correctly handle LPT1, LPT2 and LPT3, unlike the original Clipper
function which only works for LPT1.

Bytes: 5,194 Date: 1996-08-10

SOURCE CODE to determine if a drive is local or remote (network).

Bytes: 12,225 Date: 1998-08-26

Source code of simple standalone utility GENMENU.

- design menu
- generate source code
- read menu definition from file
- save menu definition to file

Bytes: 8,671 Date: 1998-09-20

JRound() is a function which may solve rounding problems as well as
inaccuracies in certain math functions.

The syntax for JRound() is:

JRound( [, ] )

JFRound is a library containing four functions:

JRound - Clipper
Mantissa - C wrapper for C function, frexp
Exponent - C wrapper for C function, frexp
frexp - C, extracted from llibca.lib
Copyright MicroSoft, Inc.

For those who prefer Clipper code, only, source for equivalent Clipper
5.2d functions for Mantissa, Exponent and frexp is contained herein.

Jo French, DBA Practical Computing

Bytes: 36,122 Date: 1995-07-11

SOURCE CODE and executables for some PUBLIC DOMAIN file maintenance
routines that are reported to detect junk in .DBF files and more.

Bytes: 4,751 Date: 1996-01-25

This is a pure Clipper collection of Julian Time/Date functions that
will allow you to perform many time and date calculations without
regard for time crossing midnight. This is a very complete library of
julian functions. PUBLIC DOMAIN. SOURCE CODE

Bytes: 16,665 Date: 1995-05-09

Several nice disk/directory I/O utilities and SOURCE CODE

Bytes: 3,896 Date: 1995-06-01

This .ASM and .OBJ code will return .t. or .f. depending on whether
Lantastic is running. PUBLIC DOMAIN. SOURCE CODE

Bytes: 5,547 Date: 1994-03-05

Call stack listing function

Bytes: 6,906 Date: 1994-07-16

Linear least-squared-error regression analysis (needs Nanfor.Lib)

Bytes: 9,454 Date: 1995-06-21

User Login, Logoff, Maintenance, Security checking. SOURCE CODE

Bytes: 4,887 Date: 1997-06-09

Translate dBase III File into Lotus 1-2-3 Format

Public Domain, Clipper Source Included.

Bytes: 4,672 Date: 1996-12-19

This Clipper code will convert a dbf to Lotus 2.01 [wk1] format.

Bytes: 4,664 Date: 1998-03-28

Replacement EXTEND.LIB Clipper module which corrects the Y2K
deficiencies in the standard Summer'87 release. This version assumes
that any DBF datestamp before 1980 (century byte less than 80h) is
actually a 21st century datestamp.

Bytes: 6,334 Date: 1996-08-10


Bytes: 3,631 Date: 1997-06-06

Tests a macro before it is executed to eliminate runtime errors.

Bytes: 31,003 Date: 1995-08-16

(Description not available)

Bytes: 50,825 Date: 1995-08-09

(Description not available)

Bytes: 7,813 Date: 1996-04-02

A routine to determine values for Manifest Constants (#defines) in a
given PRG (and, optionally, any #included files).

Ultimately intended to be incorporated into the Clipper debugger.

For now, run from the debugger's expression window, passing the
current PRG name (with or without extension) as a parameter, e.g.:


Bytes: 5,514 Date: 1996-07-22

SOURCE CODE which shows how to do a memoedit from a get.

Bytes: 3,451 Date: 1998-10-05

A short little snippet of code which shows all the parameters of the
MEMORY() function.

Bytes: 5,636 Date: 1997-05-08

A pulldown menu system with SOURCE CODE.

Bytes: 4,694 Date: 1996-08-10

A replacement for MENU TO which supports a screen saver.

Bytes: 19,526 Date: 1998-01-10

The new menu routine presented here replaces Clipper's standard menu
routine. It only requires that you add an #include line in your
program to use it instead of the standard routine. It has no
incompatibilities with old menu syntax and/or features, as it is
upward compatible both in syntax and runtime features. If the new
features aren't exploited, your program will continue to function
normally. However the new routine extends the syntax of the
abovementioned commands by offering several new optional clauses and
other facilities that will be further examined in detail.

There are a lot of new facilities with the new routine. However, it is
very easy to start using it, as one can learn to use it one feature at
a time. Also, defaults are used for every feature so that you can
achieve maximum ease of use and maximum compatibility with old
standard behaviour.

Public Domain. SOURCE CODE.

Bytes: 22,380 Date: 1997-10-04

Letter Merge 3.0


This is the third generation of this merge SOURCE CODE.

While version 2 was stable, it wasn't perfect, and it wasn't very
freindly to being inserted in existing products. Also, it printed ALL
matching records in the file.

This new product was modified to make insertion into existing products
a snap. Simply link it in. The only assumptions this code makes is
that you have a table open, and that the correct record is selected.

Letter Merge 3.0 is a letter writing editor which can imbed data from
fields and Hewlett Packard or Epson printer codes right into the text.

The print routine prints only the selected Letter combined with the
fields from the current record.

In many years of using the merge code, I found that most of the time
people wanted form letters that they could print against a single data

Select a record, hotkey to the letter menu, and print a single letter.
Letter Merge 3.0 provides that in a simple and easy to use system.

If you really need a mailmerge, it will be easier to grab the old
version 2 and use it.

In Letter Merge 3.0, Hewlett Packard LJ codes table is an exact
replacement for the older Epson FX codes in the older merge 2 product,
so if you abandoned the old one because your clients used lasers, you
can use it again with the new printer code table from version 3.0. I
renamed the original EPSON table to EPSON.DBF, and the new HP table is
HEWLPACK.DBF. Copy whichever you need to PR_CODES.DBF.

Also, the HP table makes a nice reference for any time you need HP
printer escape codes.

Another facet of Letter Merge 3.0 is that letters created for
different tables are isolated into their own directories, so there is
no possibility of merging a letter with the wrong data structure.

Also removed from the old to the new product were:

1. Headers
2. Footers
3. Lines per page coded to 66

Please feel free to modify this to your own use. If you make
improvements, and they are generic in nature, I'd like a copy to
update the code with.

Bytes: 4,595 Date: 1997-06-21

Some Clipper code to send a message via MHS message services.


Bytes: 7,938 Date: 1996-07-22

Well maybe this is just a mild shower or maybe everyone else has seen
it, but I have just hatched this idea as a result of a legacy app that
is killing me on erratic performance.

I have just implemented this and thought it would be useful to get
additional comments, testing, or ideas. So, following is some code
which intervenes in all of Clippers movement commands and attempts to
verify the results of the index movement against the actual data in
the dbf.

There is certainly some sacrifice in performance as a result of the
intervention. I tested 5928 seeks - performance time requirement
doubled - but we are talking about 1/10 of 1 second. So see what you

Tom Claffy

Bytes: 7,068 Date: 1994-03-08

Full Windows INI File access from Clipper

Bytes: 5,466 Date: 1995-06-10

SOURCE CODE which demonstrates how to create a multi line tbrowse.

Bytes: 23,626 Date: 1997-10-19

This is a multitasking friendly SOURCE CODE project, which currently
supplies pure clipper replacements for INKEY(), MENU TO and ACHOICE().

The 1.02 upgrade fixes a problem in achoice.prg.

The 1.01 upgrade fixes a recursion problem in MENU TO.

We are working on MEMOEDIT next.

This time slice releaser also detects keyboard inactivity and starts
a screen saver after three minutes.

Bytes: 11,310 Date: 1994-06-06

This is a non-oop resizable window class-type function.


Bytes: 10,716 Date: 1994-08-15

Persistent networking functions.

Includes SOURCE CODE for functions which:

Persistent attempt execute a code block.

Attempt to APPEND BLANK with optional retry.

Attempt to FLOCK() with optional retry.

Attempt to RLOCK() with optional retry.

Bytes: 5,081 Date: 1995-02-22

Clipper callable .asm and .obj function to return the handle when
given the filename. This function uses no Clipper internals and gets
the handle information from DOSs Job File Table. PUBLIC DOMAIN. SOURCE

Bytes: 20,502 Date: 1994-06-03

Clipper TSR mimicing SideKick (need Nanfor.lib/Switch-ASE)

Bytes: 4,006 Date: 1997-06-21

Modifications for GETSYS.PRG, which allow the Up arrow and Down arrow
to move up (or down) to the next line that has a GET on it, and to the
GET with the rightmost column that is less than or equal to the
current column, or the first GET on the line, if there isn't one left
of the current column.

Bytes: 18,094 Date: 1994-07-17

This is the basis for a great mailmerge. Pure Clipper (almost...there
is a C obj) This will allow you to create a form letter, and then
process it against a data file. It will also allow you to imbed
printer codes and Clipper functions into the form letter. (so you can
imbed things like «FULLDATE» and it will place the correct date like
April 20, 1994 in the form letter) It also includes basic list
processing. (very basic, but it works as a data dumper) Printer codes
and Clipper function imbedding are table driven. PUBLIC DOMAIN. SOURCE

See above for a different featured and possibly improved

Bytes: 7,005 Date: 1993-12-03

CA-Clipper NTXPos() - relative record position

Bytes: 4,607 Date: 1998-03-29

This is a small SOURCE CODE for modifying your get system for numeric
input to make numeric fields look like data entered on a calculator,
ie: whole numbers push left from the decimal.

The author says this is not completely generic. If someone will work
on this to make it generic, I'll put the generic version here. It does
look like it could be handy.

Bytes: 5,947 Date: 1997-03-19

This function converts Clipper numerics into strings suitable for

Bytes: 21,656 Date: 1994-09-11

oFgIni is an object library written 100% in Clipper 5.x using Class(y)
2.0x. It allows the Clipper programmer to create and manage .ini files
just like Windows 3.x. oFgIni will return the following types "C",
"L", "N", and "D". To use oFgIni you must own Classy 2.0b or higher.

With NG file.

Bytes: 12,827 Date: 1997-02-08

OMOUSE2 - 1.00 for Clipper 5.x


OMOUSE2 is a class for control the mouse driver. Requires Nanforum
Toolkit v3.05

Bytes: 43,365 Date: 1998-01-10

OOPS WorkShop (source needs Class(y) or compatible engine)

Bytes: 4,024 Date: 1995-08-24

This pure Clipper program, when run inside your running program, will
scan all file areas, and show you a snapshot of file and index usage
so you can easily see what is open at any given time. Mostly for
debugging and development purposes. PUBLIC DOMAIN. SOURCE CODE

Bytes: 5,120 Date: 1998-03-28

oStatus is an object created with oObject version 2.b

It features the OOP version of STATUS.PRG found in the \SAMPLES
directory, but with a few extras:

OOP architecture.

You may use alternate progress sequences other than "|/-\".

You may have as many frames per progress sequence as you wish.

You may select among 3 predefined - or "roll your own" - progress
indicator sequences.

There's an impressive sequence included, that resembles the one at
the down left corner of NETSCAPE NAVIGATOR

This is FREEWARE - SOURCE CODE included.

Bytes: 8,873 Date: 1998-03-28

Free software including SOURCE CODE for the creation of C-like
structures in Clipper.

Transparent creation of structures using OOP, not arrays.

Create NESTED structures and UNIONS of structures.

Use inline code as structure members. Combine data and code.

Fast execution.

Uses the oObject freeware class library.

Bytes: 5,985 Date: 1994-07-16

Module for sending reports to screen/file (needs Nanfor.Lib)

Bytes: 6,115 Date: 1995-03-20

dismath.obj - disable buggy Pentium math copro calls - works with S'87
and 5.x

Bytes: 4,223 Date: 1997-09-29

Simple function and preprocessor direcive, with example, of making the
GET system accept an invisible password.


Bytes: 24,247 Date: 1995-11-10

This code will allow you to create the look and feel of Norton

Bytes: 4,989 Date: 1994-07-16

Menu module allowing user to set preferences (needs Nanfor.Lib)

Bytes: 3,783 Date: 1995-08-24

This pure Clipper function will accept a wildcard DOS filespec and
present you with a list of files to pick from that match the filespec.


Bytes: 14,552 Date: 1996-07-22

A short text file on how to output postscript data and a postscript
Norton Guide.

Bytes: 6,932 Date: 1995-08-24

This pure Clipper function is a Math calculator that includes a
simulated paper tape. It has +,-,*,/,^ and memory functions, too.


Bytes: 4,998 Date: 1995-08-24

This function is primarily used in validation routines where you would
like to present a field that the user can just start typeing and the
browse jumps down through the file as you type. Hot Pick, just like

( see for a TBrowse version of this )

Bytes: 3,976 Date: 1996-08-09

A quick and effective function for flushing or commiting the printer
port. This will cause files to print immediately on networks.

Bytes: 9,732 Date: 1995-06-20

The FIDO printer project, which includes a small table of printer, and
the init and accessor functions to use them in any program. Not bad. I
use this in all of my programs, and my customers love it.

Recently updated to contain more printers, and a slip printer table
for the Epson DP-8340, and a sample program that uses both of them
from my POS system.


Bytes: 9,456 Date: 1999-08-27

This the above code with a pure Clipper sample.prg, so you can easily
get it going on your printer as a test.

Bytes: 23,107 Date: 1995-08-24

Large table of printers and codes and some sample .PRG to test it.

Bytes: 14,428 Date: 1994-11-28

Print .PCX to Laserjet (requires FUNCky)

Bytes: 5,959 Date: 1995-01-17

Read/write Windows .INI file

Bytes: 7,948 Date: 1998-03-29

Have you ever wanted to print a database stucture to a printer or file
right from DBU? Here's how, with a couple of new PRGs, some simple
changes to DBU.PRG, and recompiling.

Bytes: 308,677 Date: 1993-02-21

An old, simple, and very stable HD menuing system I wrote years ago.
Even though it's a bit old, it works like a charm, it's very small,
and it uses no memory. It also works fine on networks. SHAREWARE, and
not limited in any way.

Bytes: 25,912 Date: 1996-07-02

Clipper 5.x example SOURCE CODE for reading a QWK mail packet file and
storing the messages in a DBF. It also contains QWKLAY16.ZIP a
description of the QWK-specs.


Bytes: 12,885 Date: 1994-12-10

Radio Buttons and Checkboxes

Bytes: 4,214 Date: 1996-12-01

The Clipper code for two random number generating functions.

The first is a simple but good working random number generator for
with a period of 2^31-2. It generates uniformly distributed numbers in
the range from 0 to 1, limits included.

The second has an unknown period, and produces random numbers between
0 and 1


Bytes: 6,265 Date: 1995-10-19

PUBLIC DOMAIN Clipper SOURCE CODE for a popup calculator.

Bytes: 18,549 Date: 1994-05-03

Report Class with source

Bytes: 9,603 Date: 1998-05-24


Here's a version of your structure modifying code which you posted on
comp.lang.clipper. The 3 functions have been telescoped to 1, and a
supervisor routine has been added, allowing 1 backup to be made per
file modified, rather than 1 backup per modification made. This makes
it easier to do a total rollback if any change fails. And the creation
of backups have been placed in a sequence to ensure that the backups
have been made properly before modifications are allowed. Although it
might be seen as a radical revision of your code, it is still
basically your code (I was hard-coding every change, would you
believe), so it's up to you as to what happens to it.


And then, as I was drifting off to sleep, I thought about the times
that you actually have to convert the data from one form to another.
DBEVAL, I thought, would be a nice addition to the restructuring
functions. And having tried it, it makes sense -- a field can be
renamed by doing an ADD, a DBEVAL which copies from the old field to
the new field, then a DEL. Not to mention all of the other things
that a block can do. Sure you can do them outside of the restructure,
but allowing them inside means that: 1. as above, you can do a rename,
and 2. that only one set of backup files is needed for the whole of
the process and so a rollback to a clean situation is possible without
devouring acres of diskspace by doing a unique backup between each


And then, as I was thinking about it the next day, I thought that
there were some pretty big files out there. 3 passes of one of those
to rename a field wasn't going to get any thanks. So I re-coded it to
do a 1-pass rename, and closed some files that I had left open.


In response to your well-founded criticisms, I re-coded so that the
original files were copied, and all operations took place on the
copies. Then, when all commands had been processed successfully, the
originals were deleted and the copies were renamed to the originals'
names. If 1 command failed, the copies were deleted, and the process

Peter Townsend

Bytes: 3,757 Date: 1997-05-07

The internal clipper round() function, sometimes gives an incorrect
lower value. Str() or transform() also does but with other values.

This is a rounding routine that return the highest value (or lowest if

This routine should be a 100% equivallent of round() that gives the
RIGHT results.


Bytes: 8,195 Date: 1997-12-12

A very nice screen saver that has 16 pattern options.

SOURCE CODE. Requires NanForum library.

Bytes: 167,146 Date: 1996-04-11

Compare the .DBF file structures in two directories. Perfect for
analyzing a client directory of data files to some you brought on a
floppy, so you can see quickly which structures are out of date. This
baby will save you hours and hundreds of customer support calls, by
getting it right the first time. PUBLIC DOMAIN. SOURCE CODE

This is the new improved version of STRUCOMP.ZIP listed below. This
one allows you to redirect the output to screen, file or printer, and
presents you with an onscreen display of the progress.

Thanks to Owen Parker for the changes and update.

Bytes: 4,154 Date: 1996-08-09

Two functions. One to used to create arrays of field contents
(scatter) and one used to replace the array contents back into the

Bytes: 15,152 Date: 1995-05-21

The speed search routines allow you to search on any word within a
field. It is especially useful on large databases, since the '$'
operator and at() function could be used but becomes unacceptably slow
the larger the database becomes.

Speed search allows multiple fields to be added to the index. So, for
example, if you have 3 address fields and you want to search on any
element in these fields, you can pass all three field names.

An example of the speed search routine, working on a 'real' inventory
database with 11,500 items. The database had a 30 character
description field, which has on average 4-5 words. A search database
containing 46,000 elements was created using space and the / character
as delimiters. The combined speed search element databases and
corresponding indexes took over 1MB of space.

Performing a basic search using a 486SX-25 standalone machine took on
average less than 1/2 seconds using the speed search, and over 10
seconds using the '$' operator.

Bytes: 11,928 Date: 1995-02-25

Multi tasking scheduler State Machine - needs Class(y) and OnTick()

The idea behind this module is, to allow high level procedures and
functions to be execute in the background, no matter what your main
programm is doing. It should be easy to use without modification
to your existing applications.

Since the best result can be achieved when small pieces of code are
executed simultaneously, I'm using only objects for background
execution, calling their methods through the scheduler. I.e.,
thinking of a typical communication over the serial line, you have 4
different states: waiting for data, preparing data to be send, sending
data. (Thats why this is also called a 'state machine'). Each of
these states (at least) can be coded in a simple method of a, say,
serial class. Now you must add a method to select the appropriate
state and your background communication is ready.

Bytes: 4,613 Date: 1995-03-28

Simple screen saver in Clipper Code

Bytes: 9,508 Date: 1994-05-07

True scrolling GETs

Bytes: 8,399 Date: 1994-07-18

Scroll Get(s) from .dbf w s/c - free

Bytes: 3,388 Date: 1995-08-24

This program demonstrates how to read and write a disk serial number.
Requires NanForum library. SOURCE CODE

Bytes: 5,383 Date: 1994-07-16

Pre-Processor command to define centered box (needs Nanfor.Lib)

Bytes: 3,645 Date: 1995-05-30

This .C and .OBJ is a simple example of see through shadowing. It is

Bytes: 4,552 Date: 1995-08-24

Use to pop up a message to the user and allow them to select from an
array of choices, or simply select continue. Good for error messages.
Use instead of clipper's Alert() function which has deficiencies and
some parameters are undocumented so may not exist in future releases.
Also improves color handling. PUBLIC DOMAIN. SOURCE CODE

Bytes: 4,317 Date: 1997-10-11

This is a PUBLIC DOMAIN Clipper SOURCE CODE replacement for the
Clipper Tools III function showtime().

It also contiains two supplemental functions PUTCLOCK() and
GETCLOCK(). These two functions make it easy to turn the clock on and
off without changing the settings, or even knowing what they are.

For instance, you can set the clock in some obscure section of code,
and later anywhere in your code you can:

putclock() // stops clock but keeps settings
fbrowse( 'xxx.txt' )
getclock() // starts clock with previous settings

It requires the NanForum library FT_ONTICK() function. (PUBLIC DOMAIN)

Bytes: 5,421 Date: 1994-09-11

Shuffle - *nice* screen saver function

Bytes: 3,429 Date: 1995-08-24

My award winning, fastest in over 600 entries, Sieve of Eratosthenes.
Pure Clipper code that will find all of the prime numbers in the first
1000 integers several times per second! (4 complete sieves per second
on my 486/66) This was the winner of the Reference Clipper code
contest last year. PUBLIC DOMAIN. SOURCE CODE

Bytes: 24,550 Date: 1994-05-16

GETSYS add-ons (memo, logical, right)

Bytes: 4,208 Date: 1995-05-16

Search ASCII text (SDF) quickly

Bytes: 3,514 Date: 1995-08-24

A set of functions that push or pop all of the set key conditions.

Bytes: 4,100 Date: 1997-09-21

Two different functions which calculate Standard Deviation. The first
is an example of how to derive Standard Deviation from an array, the
second demonstrates Standard Deviation from a table.


Bytes: 4,386 Date: 1997-04-07

Str2Array() function analyze passed string and returns back array of
all separate words, based on possible delimiters. This can be quite
handy whenever you prefer to deal with array elements than with whole
string. Keep on mind Clipper's limitation of 4096 elements in array so
be careful with converting large string (e.g. whole text files)


Bytes: 10,521 Date: 1997-05-08

This is a method of declaring memory variables for your software into
an array, and generate a header file which creates manifest constants
for the field elements of the array.


- local representation of database records
- pure "memory" working
- mixing of databases with same field names
- one variable for whole database record (a_mydata)
- wide space for field names (=symbolic constants like
- FULL compiler checking (compiler parameter /es2) for field
- modification of SOURCE CODE in second: run STRU2.EXE again,
all sources will be changed (accurately - include files)

17.02.1997 Contact: Karel Zamecnik,

Bytes: 4,167 Date: 1995-08-24

Compare the .DBF file structures in two directories. Perfect for
analyzing a client directory of data files to some you brought on a
floppy, so you can see quickly which structures are out of date. This
baby will save you hours and hundreds of customer support calls, by
getting it right the first time. PUBLIC DOMAIN. SOURCE CODE

The new improved version of this is above as SC.ZIP.

Bytes: 4,083 Date: 1995-08-24

Compile this and run it against an existing .DBF, and it will write
the Clipper code needed to create that .DBF. This is a simple code

Bytes: 4,014 Date: 1998-05-25

Many people have had problems with memory low while using the Clipper
function STUFF(). This is replacement SOURCE CODE for STUFF() using
Clipper Tools III functions.

Bytes: 25,368 Date: 1994-12-24

Switch.CH v6.0 C switch and pascal Case Of structure emulator for
Clipper 5.2.

commands implemented in Clipper. Choice of exclusive SWITCH (clipper
do case) or C LIKE fall-through (case 1: case 2: do this. Simple to
use. Added support for RETURN, LOOP and EXIT from within SWITCH
control structure. Bugfix in module. Last revision date in archive:

Bytes: 7,127 Date: 1997-08-23

A graphical screen saver for Clipper 5.3.


Bytes: 7,560 Date: 1997-04-30

TB2Html() generates HTML tables based on TBrowse objects which is
passed as argument (along with target HTML file name and optional

It respects custom skip blocks, so it can be used for converting
arrays as well as standard DBF files.

TB2Html evaluates field data the same way TBrowse do (evaluating the
field code block) so works with calculated columns without any

It also respects any additional column formatting (TBColumn:picture)
and replace empty values with non-breaking spaces.

Table header is automatically generated from TBColumn:Heading with
support for multi-line headers.

Bytes: 4,664 Date: 1994-08-20

Synchronize colors of non-adjacent columns

Bytes: 10,085 Date: 1995-07-27

A class of scrolling gets via TBROWSE(). Requires Classy.

Bytes: 8,685 Date: 1995-05-18

Highlite an entire row of a TBrowse

Bytes: 6,372 Date: 1995-04-22

Formatted GETs on time values

Bytes: 5,255 Date: 1998-05-25

"How to" with function for timing out on a GET. SOURCE CODE

This allows you to exit a GET after inactivity.

Bytes: 4,759 Date: 1995-08-24

This recursive directory tree program will create graphical trees.

Bytes: 5,390 Date: 1996-12-03

This article has been prompted by some very public begging by David
Peterson. No apologies are offered if the work is detected as being
Summer '87ish. It is. But don't worry, you can rework them and
resubmit them in next month's Clippings!!!

Some years ago I had the craving to work with some heavenly bodies
.... astronomical that is :-^). I needed to calculate the arctangent
of a number associated with some solar radiation data and found that
there was a sad lack of precanned Clipper functions to suit. Whilst
some trig functions had been published, e.g by Straley, they had
limitations on their input ranges or had inherent errors. So I
massaged them and the following code resulted.

Polynomial approximations can be used to achieve many solutions with
quite high orders of accuracy as these examples demonstrate. Have you
improved on someone's code lately? Why not submit it. At least it will
keep David's begging bowl hidden.

Ross McKenzie for the CUG(M), Melbourne, Australia

CLIPPER SOURCE CODE (may not be as fast as, written in C)

Bytes: 123,339 Date: 1995-11-13

Clipper Trig functions:

TANGENT(nArgument) ==> Tangent of the angle supplied in degrees
ATANGENT(nArgument) ==> Arctangent of the argument in degrees
SINE(nArgument) ==> Sine of the angle supplied in degrees
ASINE(nArgument) ==> Arcsine of the argument in degrees
COSINE(nArgument) ==> Cosine of the angle supplied in degrees
ACOSINE(nArgument) ==> Arccosine of the argument in degrees

To use the functions, include this library, MATHFUNC.LIB and the
Microsoft floating point library LLIBCA.LIB when linking.

(Note: The floating point library must be LLIBCA.LIB for Clipper 5.2
and earlier. This library has not been tested with version 5.3)

Note from Phil: This will probably NOT work with 5.3

Bytes: 5,466 Date: 1995-06-10

Multi-line TBrowse example

Bytes: 3,878 Date: 1997-06-06

Tests all files areas for record locks.

Bytes: 5,924 Date: 1998-06-02

USCOPE.PRG is a Universal Scoping routine which should be able to
implement scopes on any RDD using either Clipper 5.x or Xbase++.

USCOPE.PRG uses base language and RDD commands to implement scopes.

Now you can have scoping functions while using generic NDX, NTX, CDX,
MDX, NSX, SIX and COMIX indexes, and use the same function names when
switching between all these RDD's. Probably even ODBC.

(of course, it makes sense to use native scoping commands whenever

With this library, you can:

somealias->( dbsetorder( n ) )
somealias->( u_setscope( 0, topkey ) )
somealias->( u_setscope( 1, bottomkey ) )
somealias->( u_dbgotop() )

// this loop is now scoped between topkey and bottomkey inclusive
do while somealias->( !u_eof() )
... perform work ...
somealias->( u_dbskip( 1 ) )

somealias->( u_clrscope( 0 ) )
somealias->( u_clrscope( 1 ) )

Scopes can be alpha, numeric or dates and must match the active index.
You can have multiple scopes set up on multiple aliases and multiple
index orders at the same time. changing alias or index order selects
the scope for that unique combination. No filters are set or used by
these generic scoping functions.

In order for these routines to work, the language/RDD combination must

& (macro command)
Static Multidimential arrays

Bytes: 10,069 Date: 1996-08-12

Replacement for Clippers' ALERT() function.


Bytes: 3,698 Date: 1997-06-21

A simple function which allows you to find out if a variable exists.

Bytes: 4,922 Date: 1997-08-27

This will allow you to set your display for any screen size your video
card and monitor support.

From Clipper call it as videomode(n) where n is a decimal number
representing the desired video mode.

It will return .T. if the mode is supported by your card, and .F. if

Bytes: 7,383 Date: 1994-05-30

Volume label and serial number routines

Bytes: 4,111 Date: 1994-08-17

Building dirtree - includes source

Bytes: 3,675 Date: 1997-08-09

SOURCE CODE to validate UPC codes.

Bytes: 3,396 Date: 1997-09-21

This is a short text which explains how to set the NET.CFG file if you
are getting index corruption while using VLM's in Netware 3.x & 4.x.

Bytes: 6,364 Date: 1998-05-25

Demonstration of modifications made to Clipper GET system to add in a
"WHILE " clause. This demo just puts a clock in the upper right
hand part of screen, but you could use the WHILE udf to do virtually
anything. SOURCE CODE.

Bytes: 8,771 Date: 1999-09-08

A group of functions used to seek keywords into data located anywhere
in a key-expression. This works equally well on table data as array

For example, searching for 'gas' might reveal:

2" Gasket
Gas Can, 2.5 Gallon
#2 Form A Gasket

You can also restrict the search to exact matches, so searching for
'gas' from the same data as above but with exact matching turned on
would reveal only:

Gas Can, 2.5 Gallon

This code does not use any locate or $ statements, so it is very fast.


Bytes: 18,741 Date: 1998-03-13

A function to search for strings which are not located at the
beginning of the key-expression in NTX-Files.

WILDSRCH is very fast. It is used it in a commercial application to
look for any substring in article names. The DBF holds more than
12,000 records, the index file is greater than 800k (40 characters
key-value), WILDSRCH returns the search-result between 0.82 and 1.42


Bytes: 5,835 Date: 1994-02-17

Access Windows-ClipBoard from Clipper

Bytes: 4,879 Date: 1997-06-18

A simple substitute for using .DBT files which uses .DBF files to
store variable length text. SOURCE CODE.

Bytes: 25,801 Date: 1997-08-13

NEW, Expanded with twice the information.

I've been looking for a simple database tool for my work with C
programming and bibliographical database systems. During my
investigation of a lot of BBS's, FTP sites, toolboxes etc. I've
discovered at lot of almost-ready-to-fly Xbase clones. This made me
wonder why no one has collected a description of Xbase files AND made
a simple package of C functions to handle this type of data files.

THAT was my goal - and THIS is the result. Erik Bachmann

Thank you, Erik. Nice job!

Bytes: 8,675 Date: 1994-04-26

See directory from DOS via Clipper - Source

Bytes: 29,102 Date: 1996-10-09

These are four articles that I (Robin Ward) wrote for the Australian
Clippings Magazine that try to explain some of the internal workings
of the Clipper class system and ways of using it without external
libraries. Sample programs are included to demonstrate the class

Bytes: 8,829 Date: 1994-03-11

xGETs - extends Clipper's GET-System

Bytes: 7,586 Date: 1996-12-17

Merry Christmas everyone!

A little present for all you fellow clipperHeads out there in NetLand.

You may do with this code as you will, it comes with but a few
guarantees :-

1. It will occupy some disk space
2. It may occupy some processor time

Beyond that there are absolutely no guarantees at all, but it is
completely written in Clipper and relies on no other 3rd party

How you hook it into your user interfaces is left as an exercise for
the reader. There are more text mode screen savers where this one
came from, if anyone is in the slightest interested!!

Anyway enjoy, have fun, and have a very merry christmas!

Bytes: 5,920 Date: 1995-03-07

Yet another GET Scroller - with SAYs

Bytes: 7,594 Date: 1997-12-16

The updated file contains two functions which can be used to get
around the S'87 lack of the SET EPOCH command as found in Clipper 5.x.

Freeware, Includes SOURCE CODE.

Bytes: 325,785 Date: 1997-12-30

This is a table of 42,410 zip codes.

Originally dated July, 1997.

It came in as a delimited flat file. I converted it to .DBF

Built with MultiEdit Fiberhosting.COM Matrix List Mirabilis ICQ ICRA Safe Surf

Terms and Conditions of Use of The Oasis Web Site

Last Oasis Maintenance: July 24, 2004

Copyright (C) 1996-2004 Phil Barnett. All Rights Reserved Worldwide.

Oasis Camels

Home Page

The Oasis FTP Site
CA-Clipper Mirror

The Reef FTP Site
Clipper Code
C Code
ASM Code
Compression Utilities