*-------------------------------------------------------------------------- * -- Program to remove character field delimiters from a set of text files. * -- Required for Website Extract - Website Sybase import program uses delimited records; * -- but can have no character field delimited. VFP can't produce this, hence this 'fix' *-------------------------------------------------------------------------- lparameter cdbfname local lntxtfiles, lcPattern, lnPos, i, lcFileName, lnSelect, ; lcSendFileName, lnFileSize, lcCurState, lcIssWeek, lcString, lni if type('oJC')='O' && oJC was properly instantiated lcCurState=oJC.CurState lcIssWeek=oJC.IssWeek else lcCurState='MA' && For stand-alone testing lcIssWeek='0015' endif set safety off lnSelect=select() wait window nowait "Running RemFldDelim Special Program" *-------------------------------------------------------------------------- * -- Calculate the list of txt file names from the cdbfname (ojc.outtable) *-------------------------------------------------------------------------- lcPath=justpath(cdbfname)+'\' lnPos=rat('\',cdbfname) lcPattern=lcPath +'???'+substr(cdbfname,lnPos+4) lcPattern=forceext(lcPattern,'txt') lntxtfiles=adir(laTxtFiles, lcPattern) && Retrieve list of text files *-------------------------------------------------------------------------- * -- loop through the array and perform string transformations in each text file *-------------------------------------------------------------------------- create cursor lcTempCursor ; (WorkField M) append blank for i=1 to lntxtfiles lcFileName=lcPath+laTxtFiles[i,1] lnFileSize=laTxtFiles[i,2] && File Size lcSendFileName = lcPath+lcCurState+'\'+left(laTxtFiles[i,1],4)+'.txt' wait window nowait 'Preparing file '+lcSendFileName if file(lcSendFileName) erase (lcSendFileName) endif if lnFileSize< 5000000 && Relatively small files <4,5MB append memo WorkField from (lcFileName) overwrite if !empty(alltrim(WorkField)) replace WorkField with strtran(WorkField,'"','') copy memo WorkField to (lcSendFileName) endif else && For huge files this technique doesn't work, let's try something different wait window nowait 'Preparing big file '+lcSendFileName+; chr(13)+'Size '+alltrim(str(round(lnFileSize/1024,0)))+' KB'+ ; chr(13)+'Please, wait...' local inFile, outFile, lcBuffer inFile= fopen(lcFileName) && Open a file outFile=fcreate(lcSendFileName) && Create a file do while !feof(inFile) lcBuffer=fgets(inFile,1000) && Get the string lcBuffer= strtran (lcBuffer,'"','') =fputs(outFile,lcBuffer) enddo =fclose(inFile) && Close In file =fclose(outFile) && Close Out file endif next use in lcTempCursor select (lnSelect)