SET TALK OFF
CLEAR
CLOSE DATA
*
M.PRNFILE = SPACE(50)
M.NEWPAGE = 'Y'
M.ANS = 'Q'
*
@ 1,2 SAY 'LIST INDEX KEYS AND STRUCTURE OF DATA TABLES'
@ 2,15 SAY 'IN CURRENT DIRECTORY'
@ 4,2 SAY 'Print File Name?' GET M.PRNFILE PICTURE '@!'
@ 5,2 SAY 'Leave blank to print to current default printer'
@ 6,2 SAY 'NEW PAGE for each table listing? (Y/N)' GET M.NEWPAGE PICTURE '@!'
@ 7,2 SAY '<P>roceed or <Q>uit?' GET M.ANS PICTURE '@!'
READ
*
IF M.ANS <> 'P'
SET TALK ON
RETURN
ENDIF
*
M.PRNFILE = ALLTRIM(M.PRNFILE)
IF NOT(EMPTY(M.PRNFILE))
IF FILE(M.PRNFILE)
M.ANS = 'N'
? CHR(7)
@ 8,2 SAY 'File already exists! Overwrite? (Y/N)' GET M.ANS PICTURE '@!'
READ
IF M.ANS <> 'Y'
RETURN
ENDIF
ENDIF
ENDIF
*
SET PRINT ON
SET DEVICE TO PRINT
IF NOT EMPTY(M.PRNFILE)
SET PRINTER TO (M.PRNFILE)
ENDIF
*
DIMENSION DBFSLIST[1]
= ADIR(DBFSLIST,'*.DBF')
= ASORT(DBFSLIST)
NUMFILES = ALEN(DBFSLIST,1)
*
FOR NDX = 1 TO NUMFILES
FILENAME = ALLTRIM(DBFSLIST[NDX,1])
USE (FILENAME)
?
? FILENAME
?
DO LISTTAGS
?
LIST STRU TO PRINT
IF M.NEWPAGE = 'Y'
EJECT
ENDIF
ENDFOR
*
CLOSE DATA
*
EJECT
*
SET PRINT OFF
SET DEVICE TO SCREEN
SET PRINTER TO
SET TALK ON
*
RETURN
*
* * * * * * * * *
*
PROCEDURE LISTTAGS
*
PRIVATE NDX
*
FOR NDX = 1 TO 256
IF EMPTY(TAG(NDX))
EXIT
ENDIF
M.NDXKEY = KEY(NDX)
M.NDXTAG = TAG(NDX)
? 'INDEX ON ' + M.NDXKEY + ' TAG ' + M.NDXTAG
SET ORDER TO TAG (M.NDXTAG)
IF 'DESCENDING' $ UPPER(SET('ORDER'))
?? ' DESCENDING'
ENDIF
*
ENDFOR
*
IF EMPTY(TAG(1))
? 'NO INDEX KEY/TAG FOUND'
ENDIF
*
M.CHKFPT = SUBSTR(FILENAME,1,RAT('.',FILENAME)-1) + '.FPT'
IF FILE(M.CHKFPT)
?
? 'MEMO FILE '+M.CHKFPT+' APPEARS TO BE PRESENT'
ENDIF
*