$MAIN AUTODEFINE "OFF" DEF pDB:POINTER DEF sDB:STRING DEF iDB:INT DEF ifile,ofile:FILE DEF subname:STRING DEF cline:INT DEF code:STRING DEF temp:STRING DEF filename[260],nfile[260]:ISTRING DEF filter:STRING DEF pos:int filter = "Program files (*.IWB)|*.IWB||" DELETEFILE GETSTARTPATH+"TempDB.mdb" OPENCONSOLE filename = filerequest("Select a Program",0,1,filter,"iwb",0,GETSTARTPATH) PRINT "File: ",filename iDB=NULL pDB=dbConnect("Microsoft Access Driver (*.mdb)",GETSTARTPATH+"TempDB.mdb","",0) IF pDB=NULL 'Couldn't open so try creating dbCreateMDB(GETSTARTPATH+"TempDB.mdb") pDB=dbConnect("Microsoft Access Driver (*.mdb)",GETSTARTPATH+"TempDB.mdb","",0) ENDIF IF pDB<>NULL 'Create subs table sDB="CREATE TABLE subs (subname char(30), lineno int, code char(120))" iDB=dbExecSQL(pDB,sDB) IF LEN(dbGetErrorCode(iDB)) PRINT "("+STR$(__LINE__)+") ",dbGetErrorText(iDB),"\n",sDB,"\n",dbGetErrorCode(iDB) ENDIF dbFreeSQL(iDB) iDB=NULL 'Load subs info sDB="INSERT INTO subs (subname, lineno, code) VALUES(?,?,?)" iDB=dbPrepareSQL(pdb,sDB) IF iDB dbBindParameter(iDB,1,subname,30) dbBindParameter(iDB,2,cline) dbBindParameter(iDB,3,code,120) IF (OPENFILE(ifile,filename,"R")=0) cline=0 subname="!!MAIN" 'PRINT "Subname ",subname WHILE READ(ifile,code)=0 'PRINT "Code: ",code IF MID$(code,1,4)="SUB " 'PRINT "Subname ",subname cline=0 pos=INSTR(code,"(") subname=MID$(code,5,pos-5) ENDIF cline++ dbExecute(iDB) 'PRINT subname,cline,code ENDWHILE ENDIF CLOSEFILE ifile dbFreeSQL(iDB) iDB=NULL ENDIF ENDIF nfile=MID$(filename,1,LEN(filename)-4)+"-s.iwb" IF (OPENFILE(ofile,nfile,"w")=0) sDB="SELECT subname, lineno, code from subs ORDER BY 1,2" iDB=DBEXECSQL(pDB,sDB) temp=DBGETERRORCODE(iDB) IF LEN(temp) MESSAGEBOX 0,"("+STR$(__LINE__)+") "+DBGETERRORTEXT(iDB)+"\n"+sDB,temp ELSE 'Load Data WHILE DBGET(iDB) DBGETDATA(iDB,1,subname) DBGETDATA(iDB,2,cline) DBGETDATA(iDB,3,code) code=RTRIM$(code) WRITE (ofile,code) ENDWHILE ENDIF DBFREESQL(iDB) iDB=NULL ENDIF dbDisconnect(pDB) pDB=NULL PRINT "Done" WAITCON CLOSECONSOLE END