HDTenEightyP/NetNews huggingface dataset:
From: wolfgang@fraser.sfu.ca (Wolfgang Richter)
Subject: Re: Using Views for data presentation
Organization: Simon Fraser University, Burnaby, B.C., Canada
Date: Mon, 4 Jan 1993 19:42:31 GMT

<IDAZS@ASUACAD.BITNET> writes:


>Dear Netters,

>        We here at ASU are trying to create Views for mailing labels.

>First and last names are stored in separate fields in upper

>case. We have been partially successful in combining them to display

>in upper-lower case, using "substring" and "rtrim" functions. Names

>that have spaces or dashes, like "James Mc donald" or

>"Carol Terry-peplow" have been a problem. It seems that we cannot use

>conditionals ('if', 'else') within a view.

>       If anyone has solved this problem or has a recommendation

>please let us know. We are running SQL Server 4.8, and accessing the

>data with views through client tools such as DataPrism.

>       Thanks.

>       Ajay Surana
>       John Rome
>       Data Administration
>       Arizona State University
>       Tempe, AZ
>       (602) 965-0857

I have run into this kind of limitation myself. What is needed is an
extension to Sybase's SQL that allows one to use an IF function (such
a function exists in other non-SQL DBMS's such as dBase and FileMaker
Pro). Syntax for such a function could be:

    IIF(<condition>,<expression_if_true>,<expression_if_false>)

Since "IF" is a reserved word already, I used "IIF" to denote
"Immediate If".
-- 
-- Wolfgang Richter (e-mail: wolfgang@sfu.ca)
-- Academic Computing Services
-- Simon Fraser University
-- Burnaby, B.C.
-- Canada V5A 1S6
-- Phone: 604-291-4449
From: sommar@enea.se (Erland Sommarskog)
Newsgroups: comp.databases.sybase
Subject: Fun with isnull
Date: 5 Jan 93 17:30:12 GMT
Organization: Enea Data AB

Consider this query:

   update nisse
   set s1 = (select sum(v1)
             from pelle p
             where p.k2 = nisse.k2)

Which rows do you think it updates? Right, it updates the same rows 
as the select statement covers.

Now, consider:

   update nisse
   set s1 = (select isnull(sum(v1), 4711)
             from pelle p
             where p.k2 = nisse.k2)

Which rows do you think this query updates? The same? Wrong answer.
All rows in nisse. Not a single one saved.

Another interesting feature with isnull which is a colleague of mine
have run into, but I haven't been able to reproduce is that it sometimes
returns - NULL!

These amusements happened with a 4.2 server on AIX 3.2, and with an
SQL server on OS/2 of some version - probably a fairly old one.
-- 
Erland Sommarskog - ENEA Data, Stockholm - sommar@enea.se
Jag gav en k{ck tjeck en check.
Newsgroups: comp.databases.sybase
From: spencer@med.umich.edu (Spencer W. Thomas)
Subject: Re: Using Sybase with PPP (dp2.2) on Solaris 1.1.
Date: Tue, 12 Jan 93 09:41:18 EST
Organization: University of Michigan

My guess would be that isql has set a connection timeout that is too
short for your slow TCP connection.  Maybe someone at Sybase will know
if this can be changed.

--
=Spencer W. Thomas 		|  Info Tech and Networking, B1911 CFOB, 0704
   "Genome Informatician"	|  Univ of Michigan, Ann Arbor, MI 48109
Spencer.W.Thomas@med.umich.edu	|  313-747-2778, FAX 313-764-4133
Newsgroups: comp.databases.sybase
Subject: Re: recovery time at start up
From: Dimitri Vulis <DLVGC@CUNYVM.BITNET>
Date: Tuesday, 5 Jan 1993 21:15:22 EST
Organization: City University of New York/ University Computer Center

I've had similar long recovery periods with SQL Server under OS/2.

Use shutdown , not shutdown with nowait or 'net stop sqlserver' or the
big red switch to shut down the database.  Shutdown will perform a checkpoint
in every database. Otherwise the transactions are rolled back, or sometimes
forward, and if the transactions are large, e.g.,
if you were importing a lot (1E6+) rows using BCP and for some reason the
machine stops, there'll be an awful long recovery time :)  Actually,
I stopped using bcp altogether because I think it's flakey on SQl Server.
I use straight insert, with a checkpoint every 10K rows now.

Dimitri
Newsgroups: comp.databases.sybase
From: allenm@sfu.ca (Allen Mar)
Subject: Re: Time Zone on 4.2 on HP
Organization: Simon Fraser University, Burnaby, B.C., Canada
Date: Sat, 9 Jan 1993 07:21:20 GMT

aberkson@mbsdev41.shearson.com (Alan Berkson) writes:

>Runing getdate() on Sybase version 4.2 running on and HP gives you a different
>time then the system time on the HP. 

>Ex. Sybase says 9:00am, HP says 12:00pm

>The same is true after restarting the server.The server seems to think it's on 
>PST or something.

>Any ideas?
>-- 

I put in a trouble call to Sybase Technical a few days ago with this
very problem, although our 'getdate' replied with only a 1 hour difference.
An analyst called back and said it was a known problem (he recalled dealing
with this before) and was supposed to get back to me the next morning...
That was 2 days ago and I haven't rec'd anything yet...  We have 4.9 by
the way, and just upgraded to 4.9.1 and I'd better retest that to see if
the problem is still there...

Allen Mar
allenm@wizard.ucs.sfu.ca
From: ben@sybase.com (Benjamin von Ullrich)
Newsgroups: comp.databases.sybase
Subject: Re: Moving Sybase from one server to another
Date: 7 Jan 93 08:40:52 GMT
Organization: sybase, inc., emeryville-across-from-SF, ca

move your databases according to their current layouts in size and number of
framgements, and extend them after everything is moved.  the new devices the
segments are on may be of any total size and configuration, only the databases
need to be laid out in x chunks, each of a particular size, and as data, log,
or data & log.  in technical terms, the sysusages rows for the old and new
servers must be the same.  but the new devices may be much bigger in capacity,
if that is what your new machine affords you, and you may ALTER the databases
after all has been moved, and presumably when you need the space.  personally,
i never give a database more space unless it needs it, as once it's given,
that's it -- no shrinking!  you may find that some other database (or a new
one) will need the space you just gave away to a database that wasn't hurting..

--
..ben
------
Benjamin von Ullrich		 all words are those of the author, not Sybase.
ben@sybase.com			       {pyramid,pacbell,sun,lll-tis}!sybase!ben
From: robert@sybase.com (Robert Garvey)
Newsgroups: comp.databases.sybase
Subject: Re: Help on SQL query
Date: 6 Jan 93 20:09:10 GMT
Organization: Entities & Beer

In article <1993Jan4.164204.21989@bmw.mayo.edu>, roder@mayo.edu (Mark N. Roder) writes:
|> 
|> 	I need help on a SQL query. I am working on a application to track  
|> SMTP mail aliases and need to convert a table of aliases to "/etc/aliases"  
|> file format.
|> 
|> What I have:
|> 
|> 	an = alias name.  alphanumeric(i.e. last.first, sas_users,etc)
|> 	pn = person name. alphanumeric(i.e. login_name@host, "|lpr  
|> 
|> What I want:("/etc/aliases" format)
|> 
|> a1:	p1
|> a2:	p2,p1,p3
|> a4:	p3,p6
|> a5:	p8
|> 
|> 
|> 	Any thoughts on this?  I would like to keep this straight SQL on  
|> the Sybase server since it would make distribution of the information a  
|> lot easier.

With flow of control in Transact-SQL, it could be done like this:

	SELECT	an, pn
	FROM aliases
	ORDER BY an, pn

	 an           pn           
	 ------------ ------------ 
	 monkees      dave         
	 monkees      michael      
	 monkees      mickey       
	 monkees      peter        
	 outs         ghb          
	 outs         jdq          
	 zak_r        pauls        


	SELECT	a.an,
		last_added = MIN(a.pn),
		list = CONVERT(varchar(255), MIN(a.pn))
	INTO #exp_aliases
	FROM aliases a
	GROUP BY a.an

	DECLARE	@curr_an	varchar(30),
		@nm_addn	varchar(30)

	SELECT	@curr_an = MIN(an)
	FROM #exp_aliases

	WHILE ( @curr_an IS NOT NULL )
	BEGIN

	    SELECT @nm_addn = MIN(a.pn)
	    FROM aliases a, #exp_aliases e
	    WHERE a.pn > e.last_added
	      AND a.an = e.an
	      AND a.an = @curr_an
	      AND e.an = @curr_an

	    WHILE ( @nm_addn IS NOT NULL )
	    BEGIN

		UPDATE #exp_aliases
		SET last_added = @nm_addn,
		    list = list + ", " + @nm_addn
		WHERE an = @curr_an

		SELECT @nm_addn = MIN(a.pn)
		FROM aliases a, #exp_aliases e
		WHERE a.pn > e.last_added
		  AND a.an = e.an
		  AND a.an = @curr_an
		  AND e.an = @curr_an

	    END

	    SELECT @curr_an = MIN(an)
	    FROM #exp_aliases
	    WHERE an > @curr_an

	END

	SELECT	an, list = SUBSTRING(list, 1, 40)
	FROM #exp_aliases ORDER BY an

	 an           list                                     
	 ------------ ---------------------------------------- 
	 monkees      dave, michael, mickey, peter             
	 outs         ghb, jdq                                 
	 zak_r        pauls                                    



-- 
Robert Garvey robert@sybase.com {sun,lll-tis,pyramid,pacbell}!sybase!robert
	      Sybase, Inc   6475 Christie Ave   Emeryville, CA   94608-1010

Any opinions to be attributed solely to poster and are unrelated to Sybase.
Newsgroups: comp.databases.sybase
From: ecr2@ellis.uchicago.edu (corprew reed)
Subject: possible FAQ Question...
Keywords: count,query
Reply-To: ecr2@midway.uchicago.edu
Organization: University of Chicago Computing Organizations
Date: Fri, 8 Jan 1993 15:53:56 GMT

Hi.

	I was wondering if it was possible to find out the number of
rows that a query will return before accessing the data without using
'count(.*)' with select.  I have a large query that takes a while to
execute, and I'm hoping to keep my application reasonably interactive
by not executing it once for the count and once for the data.

Any answers or pointers would be appreciated, I think I've read all
the relevant parts of the manual.

-corp reed
reed@cshl.org



Newsgroups: comp.databases.sybase
From: wfinnert@larry.shearson.com (Warren Finnerty)
Subject: Re: Questions sbout time based queries
Organization: Lehman Brothers
Distribution: na
Date: Tue, 12 Jan 1993 20:13:50 GMT

>In article <ESH.93Jan11095641@prague.tss.com> esh@prague.tss.com (Edward S. Hirgelt) writes:

>   On 8 Jan 1993 21:54:22 GMT,
>   jimj@meaddata.com (Jim Johnstone) said:



>   Jim> We have a need to query out all rows entered by a given user since
>   Jim> a specified time.  My first thought was to use timestamp columns in
>   Jim> all tables. So (I am very new to Sybase, so please be nice) my
>   Jim> questions are:

[ stuff deleted ]

>   Jim> 2. Should I just use datetime in each table?
>   Jim> ... insert TABLE values(..., getdate(), ...) 
>   Jim> then 
>   Jim> ... select * from TABLE where date > @threshold and user = @user

>   This is what I would do. However I would define a trigger that
>   automatically set the date field to the current date when the row is
>   inserted. This ensures that no one can subvert the dating mechanism. You
>   also get to decide what to do on updates. 

>   Your select above works nicely.

>   Jim> 3. Is there some Sybase table/feature that will allow me to meet the 
>   Jim> requirement directly?

>   See above -- triggers.

>   Hope this helps.

 
If you are not too worried about people trying to subvert the timestamping...
I would create a userdatatype called time_thingy_type as datetime and bind
a default of getdate() to it. Can be much cheaper than triggers.

Just my $.02
--
warren finnerty      | 388 Greenwich St.
Lehman Brothers      | NYC NY 10013
"Back off man!"      | wfinnert@shearson.com
From: dtb@otto (David Bath)
Newsgroups: comp.databases.sybase
Subject: Re: BEST RDBMS
Date: 6 Jan 93 00:08:25 GMT
Organization: RMIT Computer Centre
NNTP-Posting-Host: otto.bf.rmit.oz.au

MARK.FARRIS@OFFICE.WANG.COM ("Mark Farris") writes:


>I'm not going to tell you ! I want you to tell me:

>1.  Where can I find a current OBJECTIVE feature matrix for the major
>    RDBMS's (Oracle,  Sysbase, Informix, Ingres, Progress)
	Basically on Oracle vs Ingres, I think that Oracle SQL
	wins hands down.
		SQL is more fully featured
			outer joins
			CONNECT BY PRIOR (tree)
			UPDATE using SUBSELECT in SET clause
		Access to tables created by various users is easier
		Nobody has writen an IngresPerl yet !!
	
>2.  This is for people experienced with most of the major DBMS's:
	Oracle experience since version 4
	Ingres experience since version 5
	Informix (a bit - forget which version)


>    If you were going to standardize on 1 UNIX based RDBMS vendor, for
>    client server computing on AIX / IBM pc's running windows, which
>    one would it be ?
	I would use Oracle as the Engine
	Use 3rd party access products (like Q&E) for users on PCs


David T. Bath	Email:dtb@otto.bf.rmit.oz.au	Phone:03-3477511
Global Technology Corporation, 179 Grattan St, CARLTON, VIC, 3153, AUSTRALIA
"Failure to emulate is the best revenge" - Marcus Aurelius
-- 
David T. Bath	Email:dtb@otto.bf.rmit.oz.au	Phone:03-3477511
Global Technology Corporation, 179 Grattan St, CARLTON, VIC, 3153, AUSTRALIA
"Failure to emulate is the best revenge" - Marcus Aurelius
Newsgroups: comp.databases
From: afc@klaatu.cc.purdue.edu (Greg Flint)
Subject: WANTED -- Recomendations for books on Paradox 4.0
Followup-To: Sender
Organization: Purdue University
Date: Fri, 8 Jan 1993 06:02:52 GMT

I'd like to learn more about the capabilities of Paradox 4.0.  A Borland staff
member suggested that I purchase a couple of books by non-Borland authors.
Given the price of most such books ($40+), I don't want to buy any more than I
have to.  :-)

What I want is a book that will help with application building (covering such
things as forms, data-entry, reports, PAL programming, and the Paradox Engine.
Access to the samples (as starting points for my own code) would be a plus.

What I *don't* want is a book that simply rehashes the manuals.

Please e-mail your suggestions to me.  I'll summarize any suggestions that I
receive.  Thank you.
===============================================================================
Greg Flint    | Purdue University Computing Center | afc@klaatu.cc.purdue.edu
Systems Pgmr, | 1408 Mathematical Science Building | flint@purccvm.bitnet
Supercomputer | West Lafayette, IN 47907-1408      | purdue!klaatu.cc!afc
 Group (Cyber205 & ETA 10P* & iPSC860) | PH: 317-494-1787 | FAX: 317-494-0566
From: csytsma@hardy.u.washington.edu (Cory Sytsma)
Newsgroups: comp.databases
Subject: Help: What app. is best/closest to online DBase systems?
Date: 7 Jan 1993 21:19:19 GMT
Organization: University of Washington
NNTP-Posting-Host: hardy.u.washington.edu

 I have a question of what application I should use. What I want to do, is
keep track of all relevant magazine articles and other text files.  I don't
want to keep the full articles saved on my system, just keywords and 
necessary info about the locations.  I would like to be able to search
with boolean strings, through all the fields of a record.  I basically want
to be able to search for a string through all my records, and any thing in those
records.  Any good suggestions?  I've perused through ACCESS and it doesn't
seem to offer what I would like.  In addition, it would be nice to include 
full text articles when it necessitates.

Thanks in advance

Cory
csytsma@u.washington.edu
From: mike@spring.wrc.unr.edu (Mike McCormick)
Newsgroups: comp.databases
Subject: oxymoron
Date: 12 Jan 93 21:19:58 GMT
Reply-To: mike@spring.wrc.unr.edu (Mike McCormick)
Organization: Desert Research Institute, Las Vegas, NV




Oxymoron - SQL Standard.
Newsgroups: comp.databases
From: weller@osiris.cso.uiuc.edu (Bonnie Weller)
Subject: FoxPro for UNIX
Organization: University of Illinois at Urbana
Date: Fri, 8 Jan 1993 20:15:50 GMT

I heard a rumor that FoxPro is coming out with a UNIX based version.
Does anyone know if this is true?  If so, when is it due to be
released?  Does anyone know if it can be used within GRASS?

Thanks for any info

Bonnie
Newsgroups: comp.databases
From: umnoor@ccu.umanitoba.ca (Nasir Ahmed Noor)
Subject: A question about Paradox Query
Organization: University of Manitoba, Winnipeg, Canada
Date: Fri, 8 Jan 1993 01:00:44 GMT


Hi,
I have to do a query on two tables. One is sales that lists sales for a given
month by date and other is customer. I want to find out sales for  customers
for the last month and for the same month from last year (e.g. Jan-93 and
Jan-92). I link customer table with sales using example elements. I want the
results of query to show up in different columns, i.e., sales for last month
should be in different column and for the same month from last year in 
different column. How can I do that. I tried to do it as following but it
gives me wrong results. I have noticed that every sale figure gets added up
more than once in result. Following is my query....
Customer:   Field [Customer #]
            Check <example element>A!,<example element>B!

Sales:   Field [Date]                  Field [Customer #]     Field [Sale]
         >=date1,<=date1a              <example element>A     calc sum
         >=date2,<=date2a              <example element>B     calc sum

I would appreciate your help,
--nasir
umnoor@ccu.umanitoba.ca
Newsgroups: comp.databases
From: KC11@calvacom.fr (Kenneth CHASE)
Subject: Re: Paradox Engine Examples - Anyone?
Organization: R.C.I. CalvaCom
Date: Fri, 08 Jan 1993 11:23:44 GMT

Dans <Yl6as*Io2@dodd.UUCP> dodd@dodd.UUCP (Mike Dodd) ecrit:

>I was hoping that somewhere in this vast universe - someone has posted
>some example code using Paradox Engine - preferably under BC++/OWL Windows
>environment.

>If anyone has anything they would like to share with the rest of the world,
>or on a more limited basis - please let me or everyone know where we might
>find it.  Borland's examples,documentation is terrible (IMHO).

>Merry Christmas, and thanks...

>			    -Mike

>+-----------------------------------------------------------------------+
>|   Michael E. Dodd		Internet:  dodd!dodd@seq.uncwil.edu     |
>|   219 Pershing Court		Voice:     919/799-9453                 |
>|   Wilmington, N.C. 28412	(Answering Machine on between 4-10PM)   |
>+-----------------------------------------------------------------------+

We too would greatly appreciate the same type of information.
We're starting on a MM database with the engine in a
BC++ environnement. Just making the .lib is a headache !

Would there be any books/articles/doc's available

Thanks,

(How about a comp.pdxengine ???)

Kenneth

KENNETH CHASE
 MediaHighTech
175 Ave JJ Rousseau
92138 Issy les Moulineaux
France
tel 33 1 41 08 11 60
fax 33 1 41 08 11 99
email kc11calvacom.fr     

Newsgroups: comp.databases
From: umnoor@ccu.umanitoba.ca (Nasir Ahmed Noor)
Subject: Re: Paradox bug/feature in query form? (3.5)
Organization: University of Manitoba, Winnipeg, Canada
Date: Fri, 8 Jan 1993 23:29:10 GMT

In <1993Jan8.084416.1@skcla.monsanto.com> jjfink@skcla.monsanto.com writes:

>For instance, I should be able to calculate age as the 
>integer of (current date - birth date)/365.25, but NOOOOOOO!
>So far as I can tell, Paradox has not changed this for 4.0.  We can only hope

Easy...do following (supposing you use Paradix 4.0 and birth date is given as
a field in table.

    in field [birth date]
    <F5>A,calc (Today - <F5>A)/365 as Age

Works on my computer...!!! (<F5>A means example element A)

--nasir
umnoor@ccu.umanitoba.ca
Newsgroups: comp.databases
From: sf2z+@andrew.cmu.edu (Stephen R Finegold)
Newsgroups: comp.databases
Subject: Labels on Foxbase+Mac
Date: 11 Jan 93 08:43:19 GMT
Article-I.D.: andrew.sfIPz7_00UhBQ2oWEy
Organization: Doctoral student, History, Carnegie Mellon, Pittsburgh, PA

I have been using the Foxreport label/report generator to try to make
three column labels.  Unfortunately or inevitably(?) I have run into two
problems.
Maybe somebody out there can help me:

1)  When I use the ";" symbol to cocatenate fields togethers and to skip
blank fields, the data skews.  In this database I have some two field
and some one field addresses, the ";" symbol avoids printing a blank
line yet across the sheet the first lines(Names) begin on different
lines.

Example:  Joe Smith
          123 Smith Street           Jim Jones    
          Univ of XYZ                234 Jones Way
          XYZ, NY  12343             Jonestwn, CA 12344

2)  The second problem with the report writer is how to set the outside
margins below .4127 inches.  When I try to create a three column label
for laser label forms, each column skews with the each other.

I have run too many times to the laser printing trying to solve these
problems. 

steve 
Stephen Finegold(sf2z@andrew.cmu.edu)
Department of History
Carnegie Mellon University
Pittsburgh, PA 15213 USA
Newsgroups: comp.databases
From: mha@Virginia.EDU ("Marty Altschul")
Subject: Re: Help on CLIPPER DBEDIT()
Organization: University of Virginia
Date: Fri, 8 Jan 1993 12:39:25 GMT

It is not an easy concept to get but the way to do a get within
a tbrowse object is as follows:

create your column object as follows:

tc:=tbColumnNew('Heading', {| dummy_var | IIF( PCOUNT() > 0, ;
                                         real_var := dummy_var,; 
                                         real_var ) } )
tb:addColumn( tc )

You will also need to create a keystroke handling function
something like the following:

FUNCTION tbrowse( tb )
LOCAL lk, browseExit := .F. 
DO WHILE !browseExit
   lk := INKEY(0)
   IF lk == K_ESC
      browseExit := .F.
   ELSEIF lk == K_UP
      tb:up()                 // same for all navigation keys
   ELSEIF lk == K_ENTER .OR. ( lk > 32 .AND. lk < 128
      IF lk <> K_ENTER
         KEYBOARD CHR( lk )
      ENDIF   
      @ ROW(), COL() GET tb:colCurrent:block
     READ
     /* I forget the exact syntax here but the idea is to do a
         normal @ GET and then an EVAL with the returned variable
         so that the code block sees this as a different
         instance than the ordinary screen write where there is 
         no parameter.
      */

    ENDIF
ENDDO

I hope this helps somewhat
Xref: sparky comp.databases:8883 comp.os.msdos.programmer:11868
From: bobk@ESD.3Com.COM (Bob Konigsberg)
Newsgroups: comp.databases,comp.os.msdos.programmer
Subject: Clipper problem
Summary: VM Swapfile creation problem
Keywords: clipper, 286
Date: 7 Jan 93 15:52:06 GMT

Hopefully this is the right distribution group, I don't normally
follow this one.  Apologies if this is the wrong place.

I have a friend with a problem.  He's got a Clipper application
running on a 3Com network.  The application runs fine from a
386 PC workstation, but when it's run from a 3Com 3Station 2E
(286 machine) it fails with the error:
"GetEntry 1800 Unrecoverable Error 5311 Cannot Create VM Swapfile"

Can anyone give me any leads as to what the problem is?

Email answers preferred.  Also if there is a Clipper newsgroup,
I'd like to know of it.  My site does not receive any.

Thanks,

BobK
From: ken.lundberg@tfd.coplex.com (Ken Lundberg) 
Newsgroups: comp.databases
Subject: 4 GL or what?
Date: 10 Jan 93 10:44:00 GMT
Distribution: world
Organization: Ky/In PC User's Group - Louisville, KY - 502-423-8654
Reply-To: ken.lundberg@tfd.coplex.com (Ken Lundberg) 

TO: anders#bc.se

 On 9 Jan 93, anders@bc.se wrote:
 -------------------------------
>Is there any other way writing apps for Btrieve-databases (using Btrieve
>or NetWare SQL) than using traditional 3 GL languages (C, Pascal), is there
>some language like that for Paradox (PAL)?

 And the answer is..........YES! But first, a bit of info.

 Btrieve in any flavor isn't a language, and CANNOT be accessed by any
 native 4GL language. It is an assembly language interface that talks to a
 TSR that must be loaded at run time. The way to talk to Btrieve is by:

 1. Writing code that can make a call to a memory address (near or far).
 2. Compiling that program.
 3. Linking that program with the proper interface provided by Novell (they
    own Btrieve).

 Common interfaces are (as you said): C and Pascal, also BASIC, Assembler,
 COBOL (yuck), and others. There are a few good (expensive) solutions for
 accessing Btrieve files. MAGIC comes to mind. They offer Btrieve access
 w/out programming. Sort of Alpha4-ish, if you have seen it.

 Hope this helps..........good luck...........ken.lundberg@tfd.coplex.com

 * SLMR 2.1a * ------------------------------------------Ken-in-Kentucky