Dec 052017
Cross Reference program for use with Clipper 5.0 and Summer87.
File CROSS.ZIP from The Programmer’s Corner in
Category Dbase Source Code
Cross Reference program for use with Clipper 5.0 and Summer87.
File Name File Size Zip Size Zip Type
CROSS.DOC 7793 2661 deflated
CROSS.EXE 18594 10417 deflated

Download File CROSS.ZIP Here

Contents of the CROSS.DOC file

Copyright (C) 1991 Bob Hood
All Rights Reserved

This utility is released into the Public Domain by the author

What Is This Thing?

Cross was a quick (half day) solution to the problem of
cross-referencing a large government application written in Clipper
'87. The application consists of over 200 separate .PRG files, and
some method of generating a cross reference of all Procedures and
Functions declared and called within that application was needed.
While it's likely most applications you write will not be that big and
unwieldy, having a quick 'n dirty cross reference generator is always
handy (so they tell me).

What Can It Do?

Cross accepts five command line switches:

? ... Help. Prints a brief listing of these switches.

-q ... Quite mode. The on-screen status indicator is not
displayed incase output is being sent somewhere other
than the screen.

-s ... Sort output. Output is sorted alphabetically. Both
program files and Procedure/Function listings are
sorted. Omitting this flag will list files and
Procedures/Functions in linear fashion (makes it
easier to locate things!).

-p ... Printer output. Output is directed to STDPRN instead
of the screen. For large applications, I recommend
that you use a printer spooler of some sort.

-x ... External list. This will cause Cross to detected and
list all Procedure/Function calls that it could not
find a matching declaration for. This would be the
case with your own or third-party library functions.

If this switch is activated, it will scan the current
directory for a file called CROSS.EXT. If it exists,
this file should contain a listing (one per line) of
all external Procedure/Function calls that Cross is
likely to find and flag. Case is unimportant: Cross
will convert to all uppercase anyway. Omitting this
file is a good means of listing all library functions
that your application calls.

The end of this cross reference listing displays some trivial
statistics concering the files Cross has processed. Included are the
number of files, number of Procedures and Fuctions declared, total
source lines, comment/blank lines, and code lines.

I have attempted to make Cross "version independent" where Clipper is
concerned. It will properly process standard Summer '87 and 5.0 code;
meaning that it will properly recognize and ignore all 5.0-level
supported function calls (listed in the Clipper 5.0 manual), process
both "()" and "do" as Procedure/Function calls, and avoid
misunderstandings caused by several constructs such as IF and WHILE
(for those of us who program in C-like syntax, such as "while(TRUE)"
and "return(result)" ). Cross will also scan and process ALL Function
calls in a source line, like:

temp=cdow(date())+", "+cmonth(date())+" "+str(day(date()),2)

In this particular line, all Functions would be ignored after being
recognized as standard Clipper 5.0 (or xBASE) function calls.

What Can't It Do?

It can't make me rich.

It can't fix your marriage.

It can't win the Indy 500. (Actually, that's not true. It does move a
helluva lot faster than the fastest Indy car, and doesn't need gas)

It can't end world hunger or stop the arms race.

It can't make be rich. (I'm reassuring myself...)

It can't process most non-standard xBASE language extensions. It will
not properly recognize preprocessed Clipper 5.0 code, like:

__dbSelect( "0" )

and will flag all such Procedure/Function calls as external (what are
you doing using preprocessed functions anyway?). Maybe a future
version will.

It can, however, properly recognize items such as run-time code block
compilation, and Clipper 5.0-specific object methods using the send
(:) operator:

&({ ... })

With the advent of object-oriented Clipper libraries (such as
Class(y).lib), perhaps these object methods should be processed as
declared Procedures/Functions. What do you think? Maybe a command
line switch?...

Who's Going To Support This?

Microsoft. If you can't get any answers from them, then you can
contact me at one of the sources listed below.

I'd really like to know if Cross works for you. I'd also like to know
what, if any, improvements you think are worthwhile or any bugs you
come across.

Job offers must be made through my agent, and will be considered based
upon the type of work it entails, hours, and the toys it offers. Pay
is not a consideration (I'm not a Yuppie).

Who Is This Guy?

Somebody who loves Monty Python. (Why doen't PBS put it back on?)

Somebody who loved the original Saturday Night Live.

Somebody who drops everything and dives for a TV when Star Trek is on.

A brilliant programmer. (The previous was paid for by me)

An all-around nice guy. (The previous was paid for by my wife)

Direct your comments, payments, and lawsuits to:

Bob Hood
973 South Miller Way
Lakewood, CO 80226

CIS: 72330,1467

Micro Maniac! (303) 673-9470
Chatfield Armory (303) 972-9023
Denver Clipper UG (303) 973-1002

Keep your insults to yourself.

 December 5, 2017  Add comments

Leave a Reply