home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
database
/
disk_20.zip
/
DIFOUT.ZIP
/
DIFOUT.PRG
next >
Wrap
Text File
|
1985-11-11
|
3KB
|
149 lines
* Obtained from the July, 1985 issue of Data Based Advisor, page 22.
*
*DIF FILE OUTPUT ROUTINE
*
* <DIFOUT>
*
CLOSE DATABASES
SET TALK OFF
SET ECHO OFF
filename=' :'+SPACE(8)
indxname=filename
dblquot=CHR(34)+CHR(34)
bot='BOT'
CLEAR
? 'DIF FILE UTILITY ROUTINE'
@ 5,0 SAY 'Enter database filename ' GET filename
@ 6,0 SAY 'Enter index filename ' GET indxname
READ
CLEAR GETS
difile=TRIM(filename)+'.DIF'
@ 8,0 SAY 'Enter DIF filename ' GET difile
READ
IF FILE(TRIM(filename)+'.dbf') .AND. FILE(TRIM(indxname)+'.ndx')
SELECT A
USE &filename INDEX &indxname
? CHR(10)+'Stand by: Creating DIF file'
*
* Get file structure for field names,types,lens,decs
*
* modify drive designation for your system
COPY TO c:FLDSTRUC STRUCTURE EXTENDED
SELECT B
USE FLDSTRUC
COUNT TO vec
IF vec<10
len=1
ELSE
IF vec<100
len=2
ELSE
len=3
ENDIF vec<100
ENDIF vec<10
vectors=STR(vec,len)
SELECT A
COUNT TO tmp FOR .NOT. DELETED ()
tmp=tmp+1
IF tmp<10
len=1
ELSE
IF tmp<100
len=2
ELSE
IF tmp<1000
len=3
ELSE
len=4
ENDIF 1000
ENDIF 100
ENDIF 10
tuples=STR(tmp,len)
SELECT B
GO TOP
SET ALTERNATE TO &difile
*
* Turn on alternate, turn off screen, then print standard
* header information. Vectors=fields/rec, Tuples=records in
* file + 1 for field names
*
SET CONSOLE OFF
SET ALTERNATE ON
?? 'TABLE'
? '0 , 1'
? dblquot
? 'VECTORS'
? '0 , '+ vectors
? dblquot
? 'TUPLES'
? '0 , '+tuples
? dblquot
? 'DATA'
? '0 , 0'
? dblquot
? '-1 , 0'
? bot
*
* Save field data (name,type,len,& decimals) in variable
* array
*
DO WHILE .NOT. EOF()
? '1 , 0'
? CHR(34)+TRIM(FIELD_NAME)+CHR(34)
rec=STR(1000-RECNO(),3)
fldtyp_&rec=FIELD_TYPE
fldnam_&rec=FIELD_NAME
fldlen_&rec=FIELD_LEN
flddec_&rec=FIELD_DEC
SKIP
ENDDO EOF()
SELECT A
GO TOP
*
* Retrieve each non-deleted record from file A and print in
* DIF format
*
DO WHILE .NOT. EOF()
IF .NOT. DELETED()
? '-1 , 0'
? bot
this_rec=0
DO WHILE this_rec<vec
rec=STR(999-this_rec,3)
temp=fldnam_&rec
IF fldtyp_&rec='D'
item=DTOC(&temp)
ELSE
item=&temp
ENDIF fldtyp
IF fldtyp_&rec='N'
strval='V'
datline='0 , '+STR(item,fldlen_&rec,flddec_&rec)
ELSE
datline='1 , 0'
strval=CHR(34)+TRIM(item)+CHR(34)
ENDIF fldtyp
? datline
? strval
this_rec=this_rec+1
ENDDO this_rec
ENDIF .NOT. DELETED
SKIP
ENDDO EOF
? '-1, 0'
? 'EOD'
SET ALTERNATE OFF
SET ALTERNATE TO
SET CONSOLE ON
CLOSE DATABASES
* change drive designation to match your system
ERASE C:FLDSTRUC.DBF
? 'DONE'+CHR(7)
ELSE
*
* If file is not on disk. . .
*
?CHR(7)+'Invalid File Name - routine cancelled'
ENDIF FILE
RETURN