* Part saving tags to a table - dbftags select (dbname) for tg=1 to tagcount() insert into dbftags values ; (dbname,tag(tg,dbname),; key(tg,dbname), ; IIF(EMPTY(ALLTRIM(sys(2021,tg,dbname))),; "",ALLTRIM(sys(2021,tg,dbname))),; descending(tg,dbname),unique(tg,dbname)) endfor * Part using dbftags to recreate indexes FUNCTION db_create PARAMETERS mdbname SELECT field_name,field_type,field_len,field_dec ; from strulist ; where filename==mdbname ; into array fstruc SELECT key,tag,; iif(empty(TRIM(dbftags.filter)),space(200),"for "+dbftags.filter), ; iif(dbftags.desc,"descending"," "), ; iif(dbftags.unique,"unique"," ") ; from dbftags ; where filename==mdbname ; into array taglist ? "Creating "+mdbname CREATE table (targetdir+trim(mdbname)) from array fstruc IF type("taglist")="U" USE RETURN ENDIF FOR KXCP=1 TO ALEN(taglist,1) taglist[KXCP,3]=TRIM(taglist[KXCP,3]) taglist[KXCP,4]=TRIM(taglist[KXCP,4]) taglist[KXCP,5]=TRIM(taglist[KXCP,5]) ENDFOR FOR tgcnt=1 to alen(taglist,1) INDEX on &taglist[tgcnt,1] ; tag (trim(taglist[tgcnt,2])) ; &taglist[tgcnt,3] ; &taglist[tgcnt,4] ; &taglist[tgcnt,5] ENDFOR USECetin