>*--Create a new empty table in the correct directory with no indices >PUBLIC ARRAY fieldinfo (1,1) >dbfname="AA18.DBF" >DO tblstruc WITH dbfname >CREATE TABLE ("NEWTEMP.DBF") FROM ARRAY fieldinfo >*--Create indices on new table >SELECT NEWTEMP >gnTagCount=0 >gnTagCount=tblstruc("IX_"+dbfname) >IF gnTagCount>0 > *Successfully created indices >ELSE > *Could not create indices, check what to do >ENDIF >*--Copy the temp table to a fox2x table with the correct name >SELECT NEWTEMP >COPY TO (dbfname) TYPE FOX2X WITH CDX >>
>*makefile.prg >*TRACY C HOLZER >*creates tables structures and their indices and stores >*the information in a program called tblstruc.prg >*to recreate tables and their indices, after running this program to >*to create the program tblstruc.prg, issue the following: >*DO tblstruc WITH dbfname - creates an array with field info or index info >*then process the arrays >* >*change the source directories (m.srcdir->m.srcdir4) to change the >*directory locations to document a program's structure and indices. >SET SAFETY OFF >SET TALK OFF >SET ECHO OFF >m.srcdir = '\profiler\data\' >m.srcdir2 = '\profiler\data\symbols\' >m.srcdir3 = '\profiler\data\rates\' >m.srcdir4 = '' >m.outfile = '\profiler\progs\source\tblstruc.prg' >m.choice = '' >csrcdir='' >PRIVATE lcerror, err1 >lcerror=ON('ERROR') >err1=.F. >llabeled=.F. > FOR isrc = 1 TO 4 > DO CASE > CASE isrc=1 > csrcdir = ALLTRIM(srcdir) > CASE isrc=2 > csrcdir = ALLTRIM(srcdir2) > CASE isrc=3 > csrcdir = ALLTRIM(srcdir3) > CASE isrc=4 > csrcdir = ALLTRIM(srcdir4) > ENDCASE > llabeled=.F. > IF LEN(ALLTRIM(csrcdir))=0 > LOOP > ENDIF > IF RIGHT(csrcdir,1)!="\" > csrcdir=csrcdir+"\" > ENDIF > DIMENSION dbfnames(1,1) > dbfnames(1,1) = 'None' > =ADIR(dbfnames,csrcdir+'*.DBF') > IF dbfnames(1,1) = 'None' > WAIT WINDOW 'No files found in '+csrcdir+'!' > LOOP > ENDIF > IF UPPER(TYPE('m.handle'))="U" > m.handle = fcreate(m.outfile) > ENDIF > IF m.handle < 1 > WAIT WINDOW 'Cannot open output file!' > RETURN > ENDIF > IF !llabeled > =fputs(m.handle,'****************************************************************************') > =fputs(m.handle,'* Program Name: tblstruc.prg') > =fputs(m.handle,'* Creation Date: '+DTOC(date())+' '+TIME()) > =fputs(m.handle,'* ') > =fputs(m.handle,'* USAGE:') > =fputs(m.handle,'* 1) to populate table array fieldinfo: DO tblstruc WITH <expc>') > =fputs(m.handle,'* NOTE: the array fieldinfo must exist and global in scope') > =fputs(m.handle,'* 2) to index a table already in use: gnTagCount=tblstruc([expc])') > =fputs(m.handle,'* PARAMETERS:') > =fputs(m.handle,'* [expc1] = tablename e.g. insured.dbf ') > =fputs(m.handle,'* RETURNS:') > =fputs(m.handle,'* if table name only passed: array fieldinfo is populated') > =fputs(m.handle,"* if 'ix_'+[expc] is passed: tagcount() is returned to calling program") > =fputs(m.handle,'* DIRECTORIES:') > =fputs(m.handle,'* '+m.srcdir) > =fputs(m.handle,'* '+m.srcdir2) > =fputs(m.handle,'* '+m.srcdir3) > =fputs(m.handle,'* '+m.srcdir4) > =fputs(m.handle,'****************************************************************************') > =fputs(m.handle,'PARAMETERS dbfname') > =fputs(m.handle,'DO CASE') > llabeled=.T. > ENDIF > FOR i = 1 TO ALEN(dbfnames,1) > IF UPPER(LEFT(dbfnames(i,1),3))="FOX" > LOOP > ENDIF > IF UPPER(LEFT(dbfnames(i,1),8))="LCONTROL" > LOOP > ENDIF > *--TCH 01/06/2002 > IF UPPER(LEFT(dbfnames(i,1),6))="SCANLO" > LOOP > ENDIF > IF UPPER(LEFT(dbfnames(i,1),7))="AUDITAR" > LOOP > ENDIF > IF UPPER(LEFT(dbfnames(i,1),8))="AUDITRAL" > LOOP > ENDIF > IF UPPER(LEFT(dbfnames(i,1),7))="COV9999" > LOOP > ENDIF > IF UPPER(LEFT(dbfnames(i,1),6))="POLREQ" > LOOP > ENDIF > =fwrite(m.handle,'CASE UPPER(dbfname) = '+"'"+ALLTRIM(dbfnames(i,1))+"'"+CHR(13)) > =fputs(m.handle,' DO mf_'+LEFT(dbfnames(i,1),AT('.',dbfnames(i,1))-1)) > =fputs(m.handle,'CASE UPPER(dbfname) = '+"'"+'IX_'+ALLTRIM(dbfnames(i,1))+"'") > =fputs(m.handle,' PRIVATE gnTagCount') > =fputs(m.handle,' gnTagCount='+'ix_'+LEFT(dbfnames(i,1),AT('.',dbfnames(i,1))-1)+'()') > =fputs(m.handle,' RETURN gnTagCount') > ENDFOR > ENDFOR && isrc=1 to 4 > > IF dbfnames(1,1) = 'None' .and. !llabeled > WAIT WINDOW 'No files found!' > RETURN > ENDIF > > =fputs(m.handle,'ENDCASE') > > FOR isrct = 1 TO 4 > DO CASE > CASE isrct=1 > csrcdir = ALLTRIM(srcdir) > CASE isrct=2 > csrcdir = ALLTRIM(srcdir2) > CASE isrct=3 > csrcdir = ALLTRIM(srcdir3) > CASE isrct=4 > csrcdir = ALLTRIM(srcdir4) > ENDCASE > IF LEN(ALLTRIM(csrcdir))=0 > LOOP > ENDIF > IF RIGHT(csrcdir,1)!="\" > csrcdir=csrcdir+"\" > ENDIF > DIMENSION dbfnames(1,1) > dbfnames(1,1) = 'None' > =ADIR(dbfnames,csrcdir+'*.DBF') > IF dbfnames(1,1) = 'None' > LOOP > ENDIF > FOR i = 1 TO ALEN(dbfnames,1) > IF UPPER(LEFT(dbfnames(i,1),3))="FOX" > LOOP > ENDIF > IF UPPER(LEFT(dbfnames(i,1),8))="LCONTROL" > LOOP > ENDIF > *--TCH 01/06/2002 > IF UPPER(LEFT(dbfnames(i,1),6))="SCANLO" > LOOP > ENDIF > lcerror=ON('ERROR') > ON ERROR WAIT WINDOW "ERROR!" NOWAIT > USE (csrcdir+dbfnames(i,1)) ALIAS srcefile > ON ERROR &lcerror > IF lower(alltrim(ALIAS()))<>"srcefile" > STORE .T. TO err1 > WAIT WINDOW "Could not open "+csrcdir+dbfnames(i,1) > LOOP > ENDIF > =fputs(m.handle,'') > =fputs(m.handle,REPLI('*',40)) > =fputs(m.handle,'PROCEDURE mf_'+LEFT(dbfnames(i,1),AT('.',dbfnames(i,1))-1)) > =fputs(m.handle,REPLI('*',40)) > COPY STRUC TO TEMPFILE EXTENDED > USE IN srcefile > USE TEMPFILE > =fputs(m.handle,' DIMENSION fieldinfo('+ALLTRIM(str(reccount()))+',4)') > SCAN > =fputs(m.handle,' fieldinfo('+ALLTRIM(str(RECNO()))+',1) = '+"'"+rtrim(FIELD_NAME)+"'") > =fputs(m.handle,' fieldinfo('+ALLTRIM(str(RECNO()))+',2) = '+"'"+FIELD_TYPE+"'") > =fputs(m.handle,' fieldinfo('+ALLTRIM(str(RECNO()))+',3) = '+alltrim(str(field_len))) > =fputs(m.handle,' fieldinfo('+ALLTRIM(str(RECNO()))+',4) = '+alltrim(str(field_dec))) > ENDSCAN > =fputs(m.handle,'RETURN') > USE IN TEMPFILE > lcerror=ON('ERROR') > ON ERROR WAIT WINDOW "ERROR!" NOWAIT > USE (csrcdir+dbfnames(i,1)) ALIAS srcefile > ON ERROR &lcerror > IF lower(alltrim(ALIAS()))<>"srcefile" > STORE .T. TO err1 > WAIT WINDOW "Could not open "+csrcdir+dbfnames(i,1) > LOOP > ENDIF > =fputs(m.handle,'') > =fputs(m.handle,REPLI('*',40)) > =fputs(m.handle,'PROCEDURE ix_'+LEFT(dbfnames(i,1),AT('.',dbfnames(i,1))-1)) > =fputs(m.handle,REPLI('*',40)) > =fputs(m.handle,' PRIVATE gnTagCount') > =fputs(m.handle,' gnTagCount='+ALLTRIM(STR(TAGCOUNT()))) > FOR lnTag = 1 TO tagcount() > =fputs(m.handle,' INDEX ON '; > + LOWER(SYS(14, lnTag)) +IIF(!EMPTY(FOR(lnTag)),' FOR '+FOR(lntag),''); > +IIF(UNIQUE(lnTag),' UNIQUE','') ; > +' TAG ' + LOWER(TAG(lnTag))) > ENDFOR > USE IN srcefile > =fputs(m.handle,'RETURN gnTagCount') > ENDFOR && i = 1 To ALEN(dbfnames,1) > ENDFOR && iscrct = 1 to 4 > =fputs(m.handle,'') > =fputs(m.handle,'') > =fputs(m.handle,'*!* EOF: tblstruc.prg') > =fclose(m.outfile) > *--TCH 01/06/2002 > IF FILE(m.outfile) .and. !err1 > WAIT WINDOW "Succefully Finished!" NOWAIT > ELSE > WAIT WINDOW "ERROR!" NOWAIT > ENDIF >CLOSE ALL >>HTH,