export sub openfile(filename$, recordlength, numberoffields) // specify the record(block) length and number of fields for the file // returns the filehandle number used for other subs static numfiles x=open(filename$, "a") if x=0 return 0 // error opening the file close x numfiles=numfiles+1 dim f$(numfiles,50,2) // f$(numfile,1-50=fieldname$ dim f(numfiles,52) f$(numfiles,0,0)=filename$ f(numfiles,51)=recordlength f(numfiles,52)=numberoffields return numfiles end sub export sub Field( filehandle,fieldnumber, fieldname$, fieldlength) //specify the field name and length for the field numbered fieldnumber if fieldnumber <= f(filehandle,52) then f$(filehandle,fieldnumber,0)=fieldname$ f(filehandle,fieldnumber)=fieldlength f$(filehandle,fieldnumber,1)=blank$(f(filehandle,fieldnumber)) return 1 endif return 0 end sub export sub lset(filehandle,fieldname$,data$) //sets data$ on the left end of the field, truncates the string if it is longer than the fieldlength //use this to prepare the record for writing l=len(data$) x=0 for x=1 to 50 b$=f$(filehandle,x,0) if (b$ = fieldname$) then lf=f(filehandle,x) dt$=data$ if( l > lf )dt$=left$(dt$,lf) a$=blank$(lf-l) if l lf )dt$=left$(dt$,lf) a$=blank$(lf-l) if l -1) then rec = recordnumber seek File, ((f(filehandle,51) +1) * (rec)) endif a$="" for z=1 to f(filehandle,51) y=peek(File) a$=a$+chr$(y) next for y=0 to f(filehandle,52) f$(filehandle,y,1)= left$(a$,f(filehandle,y)) a$=right$(a$,len(a$)-f(filehandle,y)) next rec=rec+1 return rec end sub export sub lof(filehandle) // alias for numberofrecords() local x filename$=f$(filehandle,0,0) x=open(filename$) seek #x, 0, "end" ret=tell(#x) if ret=0 return ret ret= ret/(f(filehandle,51)+1) ret=int(ret) return ret end sub export sub numberofrecords(filehandle) // alias for lof() fh=filehandle rtn=lof(fh) return rtn end sub sub blank$(num) local s$ local x s$="" for x=1 to num s$=s$+" " next return s$ end sub