! ! MAKSRC Generate ANDI equivalent file i/o statements ! Copyright 1989, 1990 by Jim-Barry Behar ! ALL RIGHTS RESERVED ! program maksrc,1.0(2) ! ! Created on 28-Aug-89 at 10:49 AM by Jim-Barry Behar [001] ! Updated on 31-Jan-90 at 7:18 PM by Jim-Barry Behar [002] ! ! All commercial rights are reserved. ! This program is placed in the public domain without any ! warranties, or guarranties of any kind. ! Neither the author, nor Florida Datatek, Inc. shall be held ! responsible for damages resulting from the use of this program. ! Florida Datatek, Inc. has nothing to do with this program. ! ! Edit History: ! ! [001] Created ! [002] Cleaned up for d/STUFF release ! ! Future enhancements: Read ".DEF" file and generate code based on contents ! Generate "FETCH'KEY" routine using d/BASIC for ! right justification, and zero filling etc. ! ! ! def main'dbs'name="xxxxxx" ! replace xxxxxx with main file name ! def max'slots=32 ! replace with maximum number of ! data or key files ! map1 dbs(max'slots),s,32 map1 key(max'slots),s,32 ! packet name map1 kyn(max'slots),s,32 ! key file name map1 kyf(max'slots),s,32 ! data file key is index for map1 loop,f ! def num'dbs= ! insert number of active dbs files def num'key= ! insert number of active key files ! ! ! dbs() slots hold data file names ! kyn() slots hold key file names ! kyf() slots hold the name of the owner data base that kyn() references ! ! dbs( 1)=" " : kyn( 1)=" " : kyf( 1)=" " dbs( 2)=" " : kyn( 2)=" " : kyf( 2)=" " dbs( 3)=" " : kyn( 3)=" " : kyf( 3)=" " dbs( 4)=" " : kyn( 4)=" " : kyf( 4)=" " dbs( 5)=" " : kyn( 5)=" " : kyf( 5)=" " dbs( 6)=" " : kyn( 6)=" " : kyf( 6)=" " dbs( 7)=" " : kyn( 7)=" " : kyf( 7)=" " dbs( 8)=" " : kyn( 8)=" " : kyf( 8)=" " dbs( 9)=" " : kyn( 9)=" " : kyf( 9)=" " dbs(10)=" " : kyn(10)=" " : kyf(10)=" " dbs(11)=" " : kyn(11)=" " : kyf(11)=" " dbs(12)=" " : kyn(12)=" " : kyf(12)=" " dbs(13)=" " : kyn(13)=" " : kyf(13)=" " dbs(14)=" " : kyn(14)=" " : kyf(14)=" " dbs(15)=" " : kyn(15)=" " : kyf(15)=" " dbs(16)=" " : kyn(16)=" " : kyf(16)=" " dbs(17)=" " : kyn(17)=" " : kyf(17)=" " dbs(18)=" " : kyn(18)=" " : kyf(18)=" " dbs(19)=" " : kyn(19)=" " : kyf(19)=" " dbs(20)=" " : kyn(20)=" " : kyf(20)=" " dbs(21)=" " : kyn(21)=" " : kyf(21)=" " dbs(22)=" " : kyn(22)=" " : kyf(22)=" " dbs(23)=" " : kyn(23)=" " : kyf(23)=" " dbs(24)=" " : kyn(24)=" " : kyf(24)=" " dbs(25)=" " : kyn(25)=" " : kyf(25)=" " dbs(26)=" " : kyn(26)=" " : kyf(26)=" " dbs(27)=" " : kyn(27)=" " : kyf(27)=" " dbs(28)=" " : kyn(28)=" " : kyf(28)=" " dbs(29)=" " : kyn(29)=" " : kyf(29)=" " dbs(30)=" " : kyn(30)=" " : kyf(30)=" " dbs(31)=" " : kyn(31)=" " : kyf(31)=" " dbs(32)=" " : kyn(32)=" " : kyf(32)=" " ! for loop=1 to num'key key(loop)=main'dbs'name+"'KEY'"+str(loop) next loop ! open #1,main'dbs'name+".fio",output print #1,"!" print #1,"!!!!! All Key File Manipulation Calls" print #1,"!" print #1,"!" print #1,"!!!!! Retrieve next key from key file KEY'FIL" print #1,"!" print #1,"NXT'KEY:" when num'key>1 print #1," on KEY'FIL goto "; for loop=1 to num'key-1 print #1,"T"+str(loop)+","; next loop print #1,"T"+str(num'key) print #1," W'STR="+chr(34)+"NXT'KEY"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'key if num'key>1 print #1,"T"+str(loop)+": "; else print #1,chr(9); print #1,"next.key in "+rtrim(key(loop))+" using KEY'STR" print #1," FLAG(1)="+rtrim(key(loop))+"_FLAG1" print #1," return" next loop print #1,"!" print #1,"!!!!! Find key KEY'STR in key file KEY'FIL" print #1,"!" print #1,"FND'KEY:" when num'key>1 print #1," on KEY'FIL goto "; for loop=1 to num'key-1 print #1,"U"+str(loop)+","; next loop print #1,"U"+str(num'key) print #1," W'STR="+chr(34)+"FND'KEY"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'key if num'key>1 print #1,"U"+str(loop)+": "; else print #1,chr(9); print #1,"find.key in "+rtrim(key(loop))+" using KEY'STR" print #1," FLAG(1)="+rtrim(key(loop))+"_FLAG1" print #1," return" next loop print #1,"!" print #1,"!!!!! Add key KEY'STR to key file KEY'FIL" print #1,"!" print #1,"ADD'KEY:" when num'key>1 print #1," on KEY'FIL goto "; for loop=1 to num'key-1 print #1,"V"+str(loop)+","; next loop print #1,"V"+str(num'key) print #1," W'STR="+chr(34)+"ADD'KEY"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'key if num'key>1 print #1,"V"+str(loop)+": "; else print #1,chr(9); print #1,"add.key to "+rtrim(key(loop))+" using KEY'STR"; print #1," of "+rtrim(kyf(loop)) print #1," FLAG(1)="+rtrim(key(loop))+"_FLAG1" print #1," return" next loop print #1,"!" print #1,"!!!!! Delete key KEY'STR from key file KEY'FIL" print #1,"!" print #1,"DEL'KEY:" when num'key>1 print #1," on KEY'FIL goto "; for loop=1 to num'key-1 print #1,"X"+str(loop)+","; next loop print #1,"X"+str(num'key) print #1," W'STR="+chr(34)+"DEL'KEY"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'key if num'key>1 print #1,"X"+str(loop)+": "; else print #1,chr(9); print #1,"delete.key from "+rtrim(key(loop))+" using KEY'STR"; print #1," of "+rtrim(kyf(loop)) print #1," FLAG(1)="+rtrim(key(loop))+"_FLAG1" print #1," return" next loop print #1,"!" print #1,"!!!!! Retrieve previouskey from key file KEY'FIL" print #1,"!" print #1,"PRE'KEY:" when num'key>1 print #1," on KEY'FIL goto "; for loop=1 to num'key-1 print #1,"W"+str(loop)+","; next loop print #1,"W"+str(num'key) print #1," W'STR="+chr(34)+"PRE'KEY"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'key if num'key>1 print #1,"W"+str(loop)+": "; else print #1,chr(9); print #1,"previous.key in "+rtrim(key(loop))+" using KEY'STR" print #1," FLAG(1)="+rtrim(key(loop))+"_FLAG1" print #1," return" next loop print #1,"!" print #1,"!!!!! All File Manipulation Calls" print #1,"!" print #1,"!" print #1,"!!!!! Fetch a field for display" print #1,"!" print #1,"FET'FLD:" print #1," call RET'FLD" print #1," if FLAG(4)=3 FIL'STR=str(FIL'FLT)" print #1," if FLAG(4)=6 FIL'STR=str(FIL'BIN)" print #1," return" print #1,"!" print #1,"!!!!! Prepare a field for writing to file" print #1,"!" print #1,"SET'FLD:" print #1," call FLD'PAR" print #1," if FLAG(4)=3 FIL'FLT=val(FIL'STR)" print #1," if FLAG(4)=6 FIL'BIN=val(FIL'STR)" print #1," call PUT'FLD" print #1," return" print #1,"!" print #1,"!!!!! Read record without locking it" print #1,"!" print #1,"READ'REC:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"J"+str(loop)+","; next loop print #1,"J"+str(num'dbs) print #1," W'STR="+chr(34)+"READ'REC"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"J"+str(loop)+": "; else print #1,chr(9); print #1,dbs(loop)+"_RECDNO=RECDNO("+str(loop)+")" print #1," read.record from "+dbs(loop) print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Extract record from file" print #1,"!" print #1,"EXT'REC:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"K"+str(loop)+","; next loop print #1,"K"+str(num'dbs) print #1," W'STR="+chr(34)+"EXT'REC"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"K"+str(loop)+": "; else print #1,chr(9); print #1,dbs(loop)+"_RECDNO=RECDNO("+str(loop)+")" print #1," lock.record from "+dbs(loop) print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Read record only if it's unlocked" print #1,"!" print #1,"RIU'REC:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"L"+str(loop)+","; next loop print #1,"L"+str(num'dbs) print #1," W'STR="+chr(34)+"RIU'REC"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"L"+str(loop)+": "; else print #1,chr(9); print #1,dbs(loop)+"_RECDNO=RECDNO("+str(loop)+")" print #1," read.unlocked from "+dbs(loop) print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Write record" print #1,"!" print #1,"WRITE'REC:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"M"+str(loop)+","; next loop print #1,"M"+str(num'dbs) print #1," W'STR="+chr(34)+"WRITE'REC"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"M"+str(loop)+": "; else print #1,chr(9); print #1,dbs(loop)+"_RECDNO=RECDNO("+str(loop)+")" print #1," write.record to "+dbs(loop) print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Add record to file" print #1,"!" print #1,"ADD'REC:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"N"+str(loop)+","; next loop print #1,"N"+str(num'dbs) print #1," W'STR="+chr(34)+"ADD'REC"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"N"+str(loop)+": "; else print #1,chr(9); print #1,"add.record to "+dbs(loop) print #1," RECDNO("+str(loop)+")="+dbs(loop)+"_RECDNO" print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Delete record from file" print #1,"!" print #1,"DEL'REC:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"O"+str(loop)+","; next loop print #1,"O"+str(num'dbs) print #1," W'STR="+chr(34)+"DEL'REC"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"O"+str(loop)+": "; else print #1,chr(9); print #1,dbs(loop)+"_RECDNO=RECDNO("+str(loop)+")" print #1," delete.record from "+dbs(loop) print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Release lock on record" print #1,"!" print #1,"REL'REC:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"P"+str(loop)+","; next loop print #1,"P"+str(num'dbs) print #1," W'STR="+chr(34)+"REL'REC"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"P"+str(loop)+": "; else print #1,chr(9); print #1,dbs(loop)+"_RECDNO=RECDNO("+str(loop)+")" print #1," unlock.record of "+dbs(loop) print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Retrieve field named "+chr(34)+"FLD'STR"+chr(34) print #1,"!" print #1,"RET'FLD:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"Q"+str(loop)+","; next loop print #1,"Q"+str(num'dbs) print #1," W'STR="+chr(34)+"RET'FLD"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"Q"+str(loop)+": "; else print #1,chr(9); print #1,"FIL'BIN=0" print #1," get.field of "+dbs(loop)+" named FLD'STR into FIL'STR" print #1," if "+dbs(loop)+"_FLAG2=0 goto FLD'NOT'FND" print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Put field named "+chr(34)+"FLD'STR"+chr(34)+" to record" print #1,"!" print #1,"PUT'FLD:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"R"+str(loop)+","; next loop print #1,"R"+str(num'dbs) print #1," W'STR="+chr(34)+"PUT'FLD"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"R"+str(loop)+": "; else print #1,chr(9); print #1,"put.field to "+dbs(loop)+" named FLD'STR from FIL'STR" print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Retrieve field parameters" print #1,"!" print #1,"FLD'PAR:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"Z"+str(loop)+","; next loop print #1,"Z"+str(num'dbs) print #1," W'STR="+chr(34)+"FLD'PAR"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"Z"+str(loop)+": "; else print #1,chr(9); print #1,"field.info in "+dbs(loop)+" about FLD'STR " print #1," goto SET'FLAGS" next loop print #1,"!" print #1,"!!!!! Set status flags" print #1,"!" print #1,"SET'FLAGS:" when num'dbs>1 print #1," on DBS'FIL goto "; for loop=1 to num'dbs-1 print #1,"S"+str(loop)+","; next loop print #1,"S"+str(num'dbs) print #1," W'STR="+chr(34)+"SET'FLAGS"+chr(34)+" : goto I'ERR" print #1 wend for loop=1 to num'dbs if num'dbs>1 print #1,"S"+str(loop)+":"; print #1," FLAG(1)="+dbs(loop)+"_FLAG1" print #1," FLAG(2)="+dbs(loop)+"_FLAG2" print #1," FLAG(3)="+dbs(loop)+"_FLAG3" print #1," FLAG(4)="+dbs(loop)+"_FLAG4" print #1," FLAG(5)="+dbs(loop)+"_FLAG5" print #1," return" next loop close #1 open #2,main'dbs'name+".str",output print #2,"structure dbms'packet" print #2," 1 BUFFER" print #2," 2 RECDNO,b,4" print #2," 2 FLAG1,b,4" print #2," 2 FLAG2,b,4" print #2," 2 FLAG3,b,4" print #2," 2 FLAG4,b,4" print #2," 2 FLAG5,b,4" print #2," 2 ERTN,b,4" print #2," 2 PORT,b,2" print #2," 2 FILLER,x,330" print #2," 2 FIELDS(128)" print #2," 3 FNAME,x,6" print #2," 3 FTYPE,x,1" print #2," 3 FSIZE,b,1" print #2,"end structure" print #2 print #2,"structure key'packet" print #2," 1 BUFFER" print #2," 2 RECDNO,b,4" print #2," 2 FLAG1,b,4" print #2," 2 FLAG2,b,4" print #2," 2 FLAG3,b,4" print #2," 2 FLAG4,b,4" print #2," 2 FLAG5,b,4" print #2," 2 ERTN,b,4" print #2," 2 PORT,b,2" print #2," 2 FILLER,x,330" print #2,"end structure" print #2 for loop=1 to num'dbs print #2,"dbms'packet "+dbs(loop) next loop for loop=1 to num'key print #2,"key'packet "+key(loop) next loop print #2,"!" for loop=1 to num'dbs print #2,"map1 "+dbs(loop)+",@"+dbs(loop)+"_BUFFER" next loop for loop=1 to num'key print #2,"map1 "+key(loop)+",@"+key(loop)+"_BUFFER" next loop close #2 open #3,main'dbs'name+".opn",output for loop=1 to num'dbs print #3," open.file "+dbs(loop)+" named "; print #3,chr(34)+lcs(dbs(loop))+chr(34) next loop print #3,"!" for loop=1 to num'key print #3," open.key.file "+key(loop)+" named "; print #3,chr(34)+lcs(kyn(loop))+chr(34) next loop close #3