IMD 1.16: 29/05/2007 18:41:31 FOGCPM.070 --FOGCPM070DBSQUASHCOM DBSQUASHCOM-06-00 86 )DBSQUASHDOC(DBSQUASHBAS8 !"LABELPRTCMD%#$%&'LABELPRTDBF(INVCON CMD ,-INVCON DOC./0123456789:;<=INVCON DOC:>?@ABCDE-CPM070 DOC&*+INVCON IDXFGHITEMFILEDBFIITEMS CMDJKLITEMS DBFpMNOPQRSTUVWXYZLINEFILEDBF[LINES CMD\]^RATIO CMD_`abSIZEFILEDBFcSIZES CMDdefCOMPARE CMDghijMENU CMDklmUPDTREC CMDnopqCITYLST CMDrCITYLST FRMsDELREC CMDtuFULLLST CMD vwMAILADD CMDxyzMAILDEL CMD {|MAILENV CMD}~MAILINFOCMDMAILLAB CMDMAILLST CMDMAILLTTRCMD MAILUPDTCMD NAMEADDRFRMPHONE FRMUPDTSCRNFMTADDSCRN FMTDELSCRN FMT LIST FRM MAILFMT FMTNAME NDXFOGMAIL DBFPRINT TXT SAMPLE DBF(This is the disk name. .+"6# x+:`i* ">"/##~>;+> 6*s#r w+͊1>2 u+#w+>36*s#rw+6*xDM"+ڍ+s#r#À+! >2:*ã+6*x+Á*~#ʽ+#~+ҽ+~+x 6*s#rw+ɯ2,x_O:*+2,x_O6*9w#!Bþ.ͯ!" * |\!^" b!P" !4,%"![(@ %"!p"!ed %"!{d %"!p"!=d * |%"!p"![(@ !)[(@ !@ ![(@ !([(d %"!{d %"!@ ![(@ !l[(@ !@ ![(@ !m[(@ !d %"!d %"!qd %"!Rd %"!p"!@d %"!p"!,d %"!p"!d %"!d %"!d %"!vd %"!?d %"!d %"!d %"!d %"![(@ !)[(@ !y@ ![(@ !([(d %"!Ed %"!d %"!d %"!d %"!@ * "! &!{̓(*#"**z|4}|%"! [(@ !Y@ ! [(@ * "!w&!{̓(*#"**z|}|_%"![(d %"!{d %"!{d * |%"!{d %"!p"![(@ !)[(@ !2d %"! p"!@ ![(@ !([(d %"!{d %"!{d %"!d %"!"[(!͈'!"[(͈'!͈'d %"!{d %"!{d !͹!%"!{d %"!{d !m͹!!^)"!*!'h)|8)*!'h)[(*B'*#"**z|}|ғ!^)"!B*!'h)|8)>*!'h)[(*B'*#"**z|V}|!i(|zd!͈'&!i(|šd!͈'&!`(|º!Y͈'&!̓(%"!{d %"!0d %"!d A!"!"#!3, "PICTURE","PICT","STORE","STOR"<A "SELECT PRIMARY", "SELE PRIM"af "SELECT SECONDARY","SELE SECO" "SET INTENSITY","SET INTE"â "SET CONSOLE", "SET CONS"ù "RELEASE","RELE" "APPEND","APPE","DO WHILE","DO WHIL" "STRUCTURE","STRU"%* " .NOT.",".NOT.",".NOT. ",".NOT."MR " .AND.",".AND.",".AND. ",".AND."qv " .OR.",".OR.",".OR. ",".OR."Ú "DISPLAY","DISP","CONTINUE","CONT" "LOCATE","LOCA","REPLACE","REPL" "RESTORE","REST","RETURN","RETU"  "SET ALTERNATE","SET ALTE"!"%*%"!` *\$'&u&'^)"(u^)*(R*)s#r*#"**z|t }| !͕=!ͽ=!͕=!ͽ=%"![(@ !!!^)*!##"!%"![(@ !@ !"[(@ !![(@ !d %"!{d %"!{d %"!^)!R!#(͈'d !^)|8!^)"!V * !'!̓(W * #" * *z|j }|< 8*!'!̓( *+͹'!^)*R'͈'&*+"q **z| }| *!'!̓( *+͹'!^)*R'͈'&" *DM!("*|go**RC >)?go|g}o|U *Rʹ *+!'"(!̓( *++͹'!^)*R#'͈'&*("*+"a !^)*R *#!'!̓( *͹'!^)*R+'͈'&*+" *#DM!("*|go**z|E }|?go|g}o|a * !'!͈(8!^)* R#'&!"!" !"[(*DM(" * |¿ !^)" * +"!" *DM!(" * | * +*"(R >) *("!" *DM!("*|@ *+*"(R6 >)@ *("**z|Q }|Ҟ!(PYRu !&!(PYR• !&!(PYRµ !&!&q !& !& !& !& !& !& !& !& !& *%"!*\$'*DM("*|a?go"("*'^)*+*z|}|?go*(|g}o|*+͹'**u͈'**'^)*!'͈'&*)^#V*R"**z|}|9*#"**z|}|9!(|ڞʞ*DM!("*|P?go**Rc>)go|g}o|ʞ*+͹'!͈'*##!'͈'&* |go!^)+++*z|}|?go|g}o|* R!"[(&!&*##DM!("*|*#"Ï !ͽ!!d !^)*###"#%"![(@ !@ !-[(@ !#[(@ %"! p"!h@ *!7 !Xd %"! p"!@@ *#7 !Xd %"! p"!(@ *#*!R7 !d !U8|è !8%"!@ *#$#*!$0#"#~!;E% !d P PERCENT SAVING A  CHARACTERS+SAVINGS CFILE LENGTH AFTER: [ CHARACTERS kFILE LENGTH BEFORE:  TOTOINPUT><)(/-+,ENDCENDCASEENDDENDDOENDIENDIFNOTE'* LINE BEING PROCESSED IS:=OI FROM READ FILE.&3WAKE UP! WRITE FILE MUST BE DIFFERENT\.CMDc.gB:l:p FILE TO WRITE TO:  FILE TO READ FROM: + FILE IS ASSUMED TYPE .CMD UNLESS SPECIFIEDWRITE0 DRIVE B: IS ASSUMED UNLESS OTHERWISE SPECIFIEDWHICH RUNS ABOUT 2 TIMES FASTER$5ALSO AVAILABLE IN A COMPILED VERSION'\ ' Press any key to continue...1 distributed without limitation. Pass it around!/ author. However, free copies may be made and / for profit without written permission from the1H This program is copyrighted and may not be sold .| (Offer subject to change without notice)& and the name of the program you want.2 too! Be sure to specify double or single density4  the program is worth to you, and send your comments4B by the same author. Contribute as much as you feel2y and its documentation, as well as other programs 4 a diskette with the latest version of this program 3 All contributors sending $10 or more will receive Carmel, CA 93923/4050 Arroyo TrailCGregory C. DahlU contribution to the author:0t ment of new programs, you are invited to send a2 find it useful and wish to encourage the develop- If youUSER SUPPORTED SOFTWARE. This program is 'PORTIONS COPYRIGHTED BY MICROSOFT, 1981%@COPYRIGHT (C) 1983 BY GREGORY C. DAHLhDBSQUASH (ver. 1.1)~H[[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 10 PRINT#DM*")*##")õ>22*^#V"##^#V" 2!!!""!"6#6P>2>2>2[[R_)"FILE LENGTH BEFORE: "N1" CHARACTERS 1350 PRINT TAB(10)"FILE LENGTH AFTt$u$!9"l !5!5!q5!R"!O"| > m6#s#r#=>2f>2i>2h2k!_"x!$\"n>&2pÓ,6#}2|2, STO@P*x.. . ........̓+*|W:*|  s#r  {#w#6"*l*>2$J!9N#F~#~~+~#~+^#V######|~#fo!, Internal Error - No Line Number _~#ʬ, at line_>͓, at address|-}-> }C> }C~#*(D~#fo.%N!9"b!*b"d!*d!B~<>=>#~#5*#,Syntax Error in DATRETURN without GOSU Type MismatcOut of DatIllegal Function CalOverfloOut of Memor Subscript Out of Rang Division By ZerOut of String SpacString Formula Too CompleRESUME without Erro2Field Overflo3Internal Erro4Bad File Numbe5File Not Foun6Bad File Mod7File Already Ope9Disk I/O Erro:File Already Exist=Disk Ful>Input Past En?Bad Record Numbe@Bad File NamCToo Many FileUnprintable Erro4!>>w>Q+|m}">qA3nA`i"v!H"!"ʤ ,ʎy/ͤ-*=E*;E*9E*7EÞ̀/.*;EÞ̀/͍-*=E*;E H,Z~#­xQ+Þ!>xB+Q+&ͱ:ڿ "G{,xPXͱ:O!Oz"y: o :O{,yĮͱ:O :{ I,> IIOOͮͱ:"Z ‚ͱ:ڂ Z,ʂ zͱ:ڂ ʂ*v( 4:ʨ{,¨6!B+O ʨ+~ ʜ#6!ɷw#Ã~2#~#^#V,++y+͚AA:*v|!B+Q+&*=H9>=hH|}Hƀ)`iFI> I> I> I:=ʣE:=<ʈGI*9?|>I#"9?:?w;?!=>8J =FI!9>>!=FI:=ʣE:=G*7>|=kI#"7>8>w:=<ʙG'J*;A|̾I#";A=m Q!x Q!̓ Q!C Q!m s!x s!̓ s! s!m !!x !!̓ !! !!;EÎ 7EÎ ";E× H~#  x2X-:H!! N1B+<!~ B#ô n!N1~ B# >2X-:H!F#~#fox!!!!~#B !y+!>"BG:x!ʑC*+~ B!>,BW*#^ ̩!ʣ!+=ڣ!:=ʣ!͑Cz{ڻ!{_í!|!}">!nA`i"v++"!""!!"2;"mW9@}o|g"> B+|"ÑC!"!"v2;"!~6#w~!["-NR"i&x +ͽ"*{<҄"͑C{ʓ"=> BÄ"|m}*ړ"<Ä"ͽ"}Ä"|m}Ä"|"!*#n&'$^H#d#j#H#d#j#H#d#j#v#H#d#j#v#H#d#j#H#d#j#H#d#j#v#H#d#j#v#ͅ#ͣ#^#V#ͯ#""*"ͅ#N#ͅ#^###ͅ#^#V#ͩ#T#""~2"""*"*":"òC:"C:"##JfJKyJ#GGFE(D~#fo^##ͼC^##C#&)))K^#V#4$4$zN$|N$|L,L^#V$^#V#l$QL2Í$C$ͼC|mû$$á$$:%!;GdI$:%!J:=E2=E:>E0%:%:>E% %|/g}/odI:>E:%!>E9%͒%0%!j:>EgoW*e%|/g}/on%!ڃ%G|%v%o& Gȯ|g}oÆ%͜%>©%~+~?~´%+#%+ %Ͳ&͍-;E> &ͻ&y/&ͤ-7E> &Ͳ&.;E>-Dͻ&~,"(&#"~?&?&# +&m"E&#&x"`&y(D+~ _& T&yQ+&^#V#{~&!"r"t>2l&N#F#*r~=ʭ&}|ҭ&&Ø&ͻ&̀/&:l&*rD~=pD~,&#"rɧ&*t"r+V+^"tv++5'~##+++>-D+V+^+('+r+sC,&~b+ "@'">'*@'|m}m m+'o'~#^#V`i#N#F -D*>'y+m*ͩ'ͩ'y+y+~#~#fo-D|mBK'PY|mBK ' o_'zmz' (_(o}`ib+y+DM 9(~m#~#fon&y+zU(}*~R(s#H(m|m!9>Q+>Ê(>Ê(>Ê(>Ê(>Ê(>͝(ʙ(~#fo##GN(y(#~#fo~#fo(#( ¸( y(y<.()()y+y+(xmű) y<2(F~J)J)#~#foy(DO #~#foxN)>)#-)N)!(4 *)2(y+y+*(&~y+o&~m#^#V++y+o&>È)) )S)>)))))=)S)թ)S)G)S)Q_!)4)5*)")~#N#F#*) (D)yx) )+++6@#yw#xw+++6###!)~6*+*)u**)#~#~)d!*)")~#^#V#r*Q*(D8*|]*8*++~_w#~Ww#8*+**)DM~#^#V#**~*+zĬ++{Ĭ+##{z~#q#p_~*y*x*DM~*~#*~*YP+++")6@###{_zW+r+sɷ+*)|*g͵)^#V+")w#s#r+++r+s##!%+*+*,{z*,?@+}|~# F+yG*x-DG*x#N#F& Z++++C,*,*,;Dʨ+|,ʢ++C,###É++, during G.C. _+, _, Internal Error - String Space Corrup#N#F*)yx>,*)yx>,++`i+V+^;D+##6+6+~6  >@++*)")s#r+u**)#~_#~Wl,sr+s##6")###!)~#foʐ,;D€,<*)")*)}o|g6@#s#r#6")*,*,")}w>#w##;D»,++6+6Ɉ))|m}m!wɧ~}C#=,,~}C#,G~#-# -++#-0:.-}CUWeWWOs"!N}Qs" VFWÑVc"Ͷ6-*;E}/o|/g#";E|ͱ-KÀ-!=E~wɯ2>EͶ6-dIͱ-*;Eͱ-KͶ6-DI>>V/~G#ö-GO-!AE->!AE7E2-# -!AEþG!AEͻ.UE>>->|}+!q/F̓.lL+6!=E>I26E!m/yJ!i/F!AEF~_#~W#~OͶMJ!:6JͷKV.ɇ<o&ͱ-K*;E*=E͆.";E`i"=E!;E^#V#N#F#!m/KͤMx{ҙM!?E6yLwg>NýMÿ.:X-Gw#¿...!AE.;EͶ67EͶ6.*;E||<Ͷ6*;E/.!66.-͔-/H.:=E2=E:>Eғ7͕.:>E2/7/=/|/g}/oQ/!7:>EZ/͕.";E>2X-N.ajP/ L}͈-ͮ-~7>21-`hQ/~&6-ʨ/+ʨ/+͜6ڏ0.50eʺ/E/͜6l/L/q/Q/:X-/>/~%B0#S0!T0d/D0]0͜66͜610_{_l0|00_-Ͷ6!].Z/Ͷ6 0]0è/͜6!].!.0]0͜60̍-Ĥ-Ͷ6.*.=Ͷ6$..DG1"7E`i"9E#~+u2-L20OxGu2#~32`xEj2y 2>23-z2|2b22"7E`i"9Ex.#W͉4:3-2ò22Ҷ2(560̍.O5+~02.č.2Ͷ6>"w#6+26-/</ 2:#p#w#6!5-#z~34 5z45{.=4͇1-3p#6!4-#:Y-~ 23*23+F3͜6-+_:n{0v3#͜6v3++wl333v36%"4ʚ3>6-3N1+6%N.3Ͳ.ĉ43_x45O5 5;53_yz03|03{_x34544y?5O4GOO54*Y-=4P#3͛-ѯ(4Ͳ.7ĉ4yz0OzWO|0H4V4/<Eҭ46!AEͻ.0. Ò44Ͷ64CON.4&6-4m0ð4|04Ͷ64t#N.4.6-4=60#4 5;560#=5{ ;5/>-x5>-p#=o5!7Eu.ë5H.>͕.x.6?;5̓./{_#zW#yO++ҿ56.#x.p#ڱ5>56>;5N#F#*;E/}o|g6";Ep#=5;5w1_cƤ~@zZrN vH Tʚ;@B''d #~: ʜ6 ʜ6 ʜ60?<=:X-67-++͜6Y7O6H6+66Q/H##76jM!7 7}0?)))صo7M!5737}Y70? K7? ))))صo57a{ .Ͷ6:>E:=EB.:1-22-21-jj/`!m^#V#zʿaxg{‹az#ʿa/`ҿaʟaxhÿa!#~+<ʲay`ÿa͗h2Jb!,`a~]T#ab6,`W}Gz!Jbw bc"Kba*Kb/`a{#>!mmN#F#x}">qAnA!' ~ʐ8 ʐ8#~…8`il:f8>O #~goPY!' ůw͠::f=ʌA=ʆA=8ѯwA<ʌA!% ^#Vr+s}=!"L8}">9 PY9!9`i>h9!' ~ě8͠:>}">qA!&79! ~+ng}">qA! n&*v~kAʀ@DM'~̘84N#V pʌ9zw w+s#r#6#6DM:ʷ9!" s#r#69! {zV97w<9<ʌA!! {w:[A :l:!! ~7!) *:͘8*:bA~#-:*v~ʮ@( ~W:+~#5O ~+~c:i:9:7>*vT]% N#F+q#p###6 :͠::f=>™:>w+w!(7:7?*v' 6#67~ʉA#^#fk_:N#~::++@ʉAy@ډA҉A)8 #>;~.;*;7;#;258y+z ʉAډA> *;;> C;;:7)8<ʀA!8)8> -D::)8!8A)8;>{">}Az: >"v#)8> -D66͠:~6<<ʌAK<.͸B =: W:F=> ͸B͸BܵB)8=~*6?# ^=O!!4~=#4~=#4y"“=ʌA><"J8>2|!@"}:z<2z*x"N8!="x"L8͞;*|=##n8=.8*N8=2P8?"Q8?>2P8?"Q8?qA##{\>++2>*e>"q#p#s#4#5++###DM !"S8~#foʞ>+V+^##*L8{zj>BK^#V+*S8s#r! DMð>*L8 DMR,s#r# 6# x³> !T]~#foqAx>y>~#~+*"s#ri*L8| ?! s#r#w?2>}">nA! ^#V:P8A?*Q8{tA+s#r! w#w! ~#fo!\Aq?ï?BK>!)҄?)#Å?))ғ? Ғ?#=z?}_}la)ڏAҪ?#xA">! ">!) ">!}o|g\A?bk:>@\A?<@DM*>*>s@">PY;@}o|g*>#">¼?<@DM*>*>s@">PY@2[A*>! ~#fo\As#rb@:[Ao@!o@!& Ó9~# xt@DM@ʃA@! w!( V6 ʩ@zw@ʃA@! ~!@! ^#V! s#rDM@@\A}">qA@nA`i"v! A"9Aͱ:!>x|m,3A-:|qA*}!>"{*f$%WA!PA*BAS|}!"v>6>4>?>=>:>7>5>2>3>@>C>o&x!"v!"ìA:½A,?ýApBA:B>\2BAʼA͸B+A~͸BA+͸BA͸B͵B!2BBBOA:BB>\͸B2ByʂB̻B7 ʩB ʂB ͸B>AdB>#A}B6͵B!BA Ax<>ʍByq#͸B A> ͸BBʚB AB:̵Bw}C>^͸B@͸B͵B~ B> ͸B͸B#B>QJ* C#~+ B~=oC*!"B"> B> B:=ʬC> N> N*B^#V#ͼCɷ!;EC!7EC;EC7ECw#w#w#w# (C>7ED>;EC ~#=D!C#~ D DɅo$ɧGw#1D{z}o|gzRzzʀj(% $)zzˀP$)z̀E(}9o|=gz $)|g}oz(}9o|=gz $)|g}oz3pHI{,qI{0-r{8-sH{(}9o|=gz $)|g}oz%(|/g}/oz(|/g}/oz()"H %(s#r)$(%؃pH6#IEyIHEʄEͽMOʉE!M!=Ey#E+tEͽM?MmF͍MDIâEmF;IPF!AEyIF:>EʽM:HE/E5EPGD"!=EN#FlL+6EF!=E>NI!H26E:7EnHͽMx/E>F+N+=F!AEáF!7E>q#p#=¤F!7EF"oD͘F͇FsF*oDyItM:>EtM!GEN#F]KHqGG5H3Ix FFnH!=EIFj0 TeB׳]h!I.k mF͍MDIJGmF;I!AEFD"!>Eq#~++w+qeGýMDNn"~`35zr1{r1h!IyIʽMyO2GEGyIʽM:>EPFG/H H43I:6E!H!?E~++wýM!7E4#&H4PG+6!AE7E# >Hɯ# KHKHnH/!6EOyw#fHG:=E—H!6EVwz# |HxoHtM!6EͪHHx H!>EwtM H~w# ¬HmF͍MDIHmF;I!AEþGmF͍MDIHmF;IPF!AEîGy2GE!=EvD~q+HqINsY+I I W~w+(I!I!=E%IKDI͍M!7Ew#JIýM[I}͐IdIÖI͐IlL!:EF#^#V#NTM͖I}AE~#~IG++NyM7E|I!;E͍M>IҫID"ͶMIͤMI!?E6yLg>N|:L!>¥Iak͍MI}KIýM!>E~+>wýMKJͮMʽM:>EʖMJ/O JK|JͮM(LͽMȯG]K"$Ey2&EFo?LHL!D*;E:=EOҹJ>E4CMJJg.*$E:&EOzҺJJg.*;E:=EJx<=J{_zWxG)yOHGTMKKͮMʙMͽM]Ky+F+F+Fw`h|UKgy9K:;EO|g}oxG-|-K}(KÖLElaO'K!>E~GxuKƀsMwlLw+ɷCMtMͤMx{ҙM!?E6yLwgKzšK >N|fM{>2>E͖L/E4LÖĹLKHLz(LzB,L|G||,LM,LD"O_yW!?E~/woG}_}W}ÓL͙M||DM!>))gL =_L!=E~7w?##wy7O*;E*=E"=E";EajSXLtMJS\E!>EtM/Eqx!>EfMF#~怩OÖM 4GMgo";E"=EͤMs#r#q#pöMͮM͙MͶM";E`i"=E*;E*=EDM^#V#N#F#xyM:>E:=E7|/G}/O!>M M7>{_zW}o|g=M|g}oNCZQN o-yOzW{_xGN;E*=EDM^#V#N#F#xyM:>E:=E7|/G}/O!>M M7>{_zW}o|g=M|g}oMȯG]K"$Ey2&EFo?LHL!D*;E:=EOҹJ>E4CMJJg.*$E:&EOzҺJJg.*;E:=EJx<=J{_zWxG)yOHGTMKKͮMʙMͽM]Ky+F+F+Fw`h|UKgy9K:;EO|g}oxG-|-K}(KÖLElaO'K!>E~GxuKƀsMwlLw+ɷCMtMͤMx{ҙM!?E6yLwgKzšK >N|fM{>2>E͖L/E4LÖĹLKHLz(LzB,L|G||,LM,LD"O_yW!?E~/woG}_}W}ÓL͙M||DM!>))gL =_L!=E~7w?##wy7O*;E*=E"=E";EajSXLtMJS\E!>EtM/A prompt (CP/M). This is a complete machine-language program, and does not need any file with library routines. To execute DBSQUASH.BAS you need to first load MBASIC, and then type RUN "DBSQUASH. PORTABILITY DBSQUASH was written for the Osborne I (tm) and uses certain screen addressing commands which will not work on other machines. With modification to these commands (which are not essential to operation), the program should run on any CP/M machine. PROGRAMMING SUGGESTION It is useful to make the first line of your program a NOTE containing the name of the file and the date of the last update. NOTES are not removed by DBSQUASH. This line will help you to keep track of your files and their revisions. Your disk drives will be much happier if you arrange to put your two files (reading from and writing to) on separate drives, and the program will execute a little faster. Happy programming! Greg Dahl10 REM DBSQUASH.BAS Version 1.1 10/17/83 20 ' COPYRIGHT (C) 1983 BY GREGORY C. DAHL 30 ' THIS PROGRAM REDUCES THE SIZE OF A dBASE II (tm) 40 ' PROGRAM BY REMOVING ALL LEADING BLANKS AND MOST 50 ' UNNECESSARY BLANKS NOT WITHIN QUOTES, BY 60 ' SHORTENING THE MOST COMMON COMMANDS, AND BY 70 ' DELETING ALL COMMENTS AND BLANK LINES. 73 ' 75 ' DETAILED INSTRUCTIONS ARE GIVEN IN DBSQUASH.DOC 77 ' 90 DEFINT A-Z 100 COMP = 0 ' FLAG FOR COMPILED VERSION 210 IF COMP THEN N=350 ELSE N= 80 ' BLINK SPEED 220 WIDTH 52:PRINT CHR$(&H1A); 230 PRINT TAB(16)"DBSQUASH (ver. 1.1)":PRINT 240 PRINT TAB(7)"COPYRIGHT (C) 1983 BY GREGORY C. DAHL 250 IF COMP THEN PRINT TAB(6)CHR$(&H1B)CHR$(&H29)"PORTIONS COPYRIGHTED BY MICROSOFT, 1981"CHR$(&H1B)CHR$(&H28) ELSE PRINT 260 PRINT" This program is "CHR$(&H1B)CHR$(&H6C)"USER SUPPORTED SOFTWARE."CHR$(&H1B)CHR$(&H6D)" If you 270 PRINT" find it useful and wish to encourage the develop- 280 PRINT" ment of new programs, you are invited to send a 290 PRINT" contribution to the author: 300 PRINT TAB(17) "Gregory C. Dahl 310 PRINT TAB(17)"4050 Arroyo Trail 320 PRINT TAB(17)"Carmel, CA 93923 330 PRINT" All contributors sending $10 or more will receive 340 PRINT" a diskette with the latest version of this program 350 PRINT" and its documentation, as well as other programs 360 PRINT" by the same author. Contribute as much as you feel 370 PRINT" the program is worth to you, and send your comments 380 PRINT" too! Be sure to specify double or single density 390 PRINT" and the name of the program you want. 398 PRINT CHR$(&H1B)CHR$(&H29)" (Offer subject to change without notice)" CHR$(&H1B)CHR$(&H28) 410 PRINT" This program is copyrighted and may not be sold 420 PRINT" for profit without written permission from the 430 PRINT" author. However, free copies may be made and 440 PRINT" distributed without limitation. Pass it around! 450 PRINT " Press any key to continue..."; 460 FOR I=1 TO N:A$=INKEY$:IF A$<>""THEN 500 ELSE NEXT I 470 PRINT CHR $(13)" "CHR$(13); 480 FOR I=1 TO N:A$=INKEY$:IF A$<>""THEN 500 ELSE NEXT I 490 GOTO 450 500 PRINT CHR$(&H1A):PRINT:PRINT 503 IF COMP THEN PRINT ELSE PRINT TAB(8)CHR$(&H1B)CHR$(&H29)"ALSO AVAILABLE IN A COMPILED VERSION":PRINT TAB(10)"WHICH RUNS ABOUT 2 TIMES FASTER"CHR$(&H1B)CHR$(&H28) 506 PRINT 510 PRINT:PRINT" DRIVE B: IS ASSUMED UNLESS OTHERWISE SPECIFIED 520 PRINT CHR$(&H22)+"WRITE"+CHR$(&H22)+" FILE IS ASSUMED TYPE .CMD UNLESS SPECIFIED 530 PRINT:PRINT 540 LINE INPUT " FILE TO READ FROM: ";F1$ 550 PRINT:PRINT 560 LINE INPUT " FILE TO WRITE TO: ";F2$ 570 FOR I=1 TO LEN(F1$):IF ASC(MID$(F1$,I))>&H60 THEN MID$(F1$,I,1)=CHR$(ASC(MID$(F1$,I))-&H20) 580 NEXT I 590 FOR I=1 TO LEN(F2$):IF ASC(MID$(F2$,I))>&H60 THEN MID$(F2$,I,1)=CHR$(ASC(MID$(F2$,I))-&H20) 600 NEXT I 610 IF INSTR(1,F1$,":")=0 THEN F1$="B:"+F1$ 620 IF INSTR(1,F2$,":")=0 THEN F2$="B:"+F2$ 630 IF INSTR(1,F2$,".")=0 THEN F2$=F2$+".CMD" 640 IF F1$=F2$ THEN PRINT:PRINT"WAKE UP! WRITE FILE MUST BE DIFFERENT":PRINT" FROM READ FILE.":STOP 650 N1=0:N2=0 660 WIDTH 51 'SET SCREEN DISPLAY WIDTH 670 DATA "PICTURE","PICT","STORE","STOR" 680 DATA "SELECT PRIMARY", "SELE PRIM" 690 DATA "SELECT SECONDARY","SELE SECO" 700 DATA "SET INTENSITY","SET INTE" 710 DATA "SET CONSOLE", "SET CONS" 720 DATA "RELEASE","RELE" 730 DATA "APPEND","APPE","DO WHILE","DO WHIL" 740 DATA "STRUCTURE","STRU" 750 DATA " .NOT.",".NOT.",".NOT. ",".NOT." 760 DATA " .AND.",".AND.",".AND. ",".AND." 770 DATA " .OR.",".OR.",".OR. ",".OR." 780 DATA "DISPLAY","DISP","CONTINUE","CONT" 790 DATA "LOCATE","LOCA","REPLACE","REPL" 800 DATA "RESTORE","REST","RETURN","RETU" 810 DATA "SET ALTERNATE","SET ALTE" 820 NSUB=23 'NUMBER OF SUBSTITUTIONS 830 DIM SUB1$(25),SUB2$(25),SUB3(25) 840 FOR J=1 TO NSUB: READ SUB1$(J),SUB2$(J): SUB3(J)=LEN(SUB1$(J))-LEN(SUB2$(J)): NEXT J 850 OPEN "I",1,F1$ 860 OPEN "O",2,F2$ 870 PRINT CHR$(&H1A); 880 LINE INPUT#1, S$ 890 N1=N1+LEN(S$)+2 'COMMULATIVE FILE LENGTH (INCLUDING CR LF AFTER EACH LINE) 900 PRINT CHR$(27)"="CHR$(34)CHR$(33)"LINE BEING PROCESSED IS:":PRINT:PRINT:PRINT S$+STRING$(255-LEN(S$)," ") 'RESET CURSOR POSITION AND DISPLAY LINE BEING PROCESSED 910 IF LEN(S$)=0 THEN 1330 920 FOR N = 1 TO LEN(S$) : IF MID$(S$,N,1)<>" " THEN 1070 ELSE NEXT N 930 GOTO 1330 'blank line 940 ' SUBROUTINE FOR DELETING BLANKS 950 IF MID$(S$,B,1)=" " THEN S$=LEFT$(S$,B-1)+RIGHT$(S$,LEN(S$)-B):E=E-1:GOTO 950 'DELETE LEADING BLANKS 960 IF E<=B THEN RETURN 970 IF MID$(S$,E,1)=" " THEN S$=LEFT$(S$,E-1)+RIGHT$(S$,LEN(S$)-E):E=E-1:GOTO 970 'DELETE TRAILING BLANKS 980 M=INSTR(B,S$,C$) :IF M=0 OR M>=E THEN RETURN 990 ' TAKE OUT BLANKS BEFORE AND AFTER CHARACTER 1000 IF M=1 THEN 1020 1010 IF MID$(S$,M-1,1)=" " THEN S$=LEFT$(S$,M-2)+RIGHT$(S$,LEN(S$)-M+1):M=M-1:E=E-1:GOTO 1010 1020 IF M=LEN(S$) THEN RETURN 1030 IF MID$(S$,M+1,1)=" " THEN S$=LEFT$(S$,M)+RIGHT$(S$,LEN(S$)-M-1):E=E-1:GOTO 1030 1040 M=INSTR(M+1,S$,C$) :IF M<>0 AND M<=E THEN 1010 1050 RETURN 1060 ' 1070 IF MID$(S$,N,1)="*" THEN 1330 ' COMMENT LINE 1080 S$=RIGHT$(S$,LEN(S$)-N+1) 1090 B=1 'BEGINNING POINTER FOR DELETIONS 1100 QUOTE=0 'FLAG FOR PRESENCE OF " (=1) OR ' (=2) 1110 Q=INSTR(B,S$,CHR$(&H22)):IF Q=0 THEN E=LEN(S$) ELSE E=Q-1 : QUOTE=1 'ENDING POINTER FOR DELETIONS BEFORE " OR END OF LINE 1120 SQ=INSTR(B,S$,"'"):IF SQ<>0 THEN IF E>SQ-1 THEN E=SQ-1 : QUOTE=2 'SET ENDING POINTER AT SINGLE QUOTE LESS ONE 1130 RM = INSTR(B,S$,"NOTE"):IF RM<>0 THEN IF E>RM-1 THEN E=RM-1 'SET ENDING POINTER BEFORE NOTE 1140 IF E<=B THEN 1260 1150 IF INSTR(1,S$,"ENDIF")=1 THEN S$="ENDI":GOTO 1310 1160 IF INSTR(1,S$,"ENDDO")=1 THEN S$="ENDD":GOTO 1310 1170 IF INSTR(1,S$,"ENDCASE")=1 THEN S$="ENDC":GOTO 1310 1180 C$="=":GOSUB 950:C$=",":GOSUB 980:C$="+":GOSUB 980:C$="-":GOSUB 980:C$="*":GOSUB 980:C$="/":GOSUB 980:C$="(":GOSUB 980:C$=")":GOSUB 980:C$="<":GOSUB 980:C$=">":GOSUB 980 'DELETE BLANKS BEFORE AND AFTER = : , + - / * ( ) < > 1190 ' SHORTEN COMMANDS 1200 FOR J=1 TO NSUB 1210 M=INSTR(B,S$,SUB1$(J)):IF M>0 AND (M+LEN(SUB1$(J))-1)<=E THEN S$=LEFT$(S$,M-1)+SUB2$(J)+MID$(S$,M+LEN(SUB1$(J))):E=E-SUB3(J):IF E<=B THEN 1240 ELSE GOTO 1210 1220 NEXT J 1230 ' CORRECT ERROR IN dBASE WHICH REQUIRES SPACE BEFORE "TO" IN INPUT COMMAND AFTER ' 1240 IF INSTR(1,S$,"INPUT")>0 THEN M=INSTR(B,S$,"TO"): IF M>0 AND M=LEN(S$)-3 THEN 1310 1270 IF QUOTE=1 THEN QUOTE$=CHR$(&H22) ELSE QUOTE$="'" 1280 CLOSEQ=INSTR(E+2,S$,QUOTE$) 1290 IF CLOSEQ=0 THEN 1310 'NO CLOSING QUOTE 1300 B=CLOSEQ+1:GOTO 1100 1310 PRINT#2, S$ 1320 N2=N2+LEN(S$)+2 'COMMULATIVE FILE LENGTH AFTER COMPRESSION 1330 PRINT CHR$(27)"="CHR$(45)CHR$(35); 'SET CURSOR POSITION 1340 PRINT TAB(10)"FILE LENGTH BEFORE: "N1" CHARACTERS 1350 PRINT TAB(10)"FILE LENGTH AFTER: "N2" CHARACTERS 1360 PRINT TAB(10) "SAVINGS "N1-N2" CHARACTERS 1370 IF EOF(1) THEN 1380 ELSE 880 1380 CLOSE 1390 PRINT " A "(1-N2/N1)*100" PERCENT SAVING   * * * Labelprt.Cmd Label Printing Command File * * by Micheal R. Abram * 11/20/81 * (rev. 07/11/82) * * From October, 1982 Lifelines * * * This dBASE II command file will print labels several across * the page. It expects a .DBF file in USE positioned at the first * record to print, and will print to the end of the file. The * fields expected are: * Field Type Comment * Name C Name-flipping a la NAD. "Abram*Micheal R." * Last name, asterisk, first name. This * allows you to sort or index on Name. * Addr1 C Use for second name, affiliation, or * street address. * Addr2 C Second address line. If the first column * is blank, the line will not be printed * and the next lines will moved up. * City C The length of City, State, and Zip may * State C not total more than five less than the * Zip C horizontal spacing between labels, or * City will be truncated. * The horizontal increment specified must be at least one more * than the lenght of the longest field, or truncation will occure. * * SAVE TO LABELPRT SET TALK OFF SET EXACT OFF ERASE STORE ' ' TO Blanks STORE 1 TO Perrec STORE 2 TO Nwide STORE 35 TO Hinc STORE 6 TO Vinc @ 9,10 SAY ' labelprint.cmd -- Label printing Command File' @ 10,10 SAY ' How many labels for each name? ' GET Perrec PICT '9' @ 11,10 SAY ' How many labels across the form? ' GET Nwide PICT '9' @ 12,10 SAY ' What is the horizontal spacing in columns? ' GET Hinc PICT '99' @ 13,10 SAY ' What is the vertical spacing in lines? ' GET Vinc PICT '9' READ STORE Hinc-1 TO Maxname STORE Hinc-1 TO Maxaddr1 STORE Hinc-1 TO Maxaddr2 STORE Hinc-(LEN(State)+LEN(Zip)+5) TO Maxcity STORE 'Y' TO Offer DO WHILE !(Offer) = 'Y' @ 20,10 SAY 'Print a line of dummy labels? (Y or N)' GET Offer READ IF !(Offer) = 'Y' SET CONSOLE OFF  SET PRINT ON STORE Nwide TO N DO WHILE N > 0 ?? ' Name'+$(Blanks,1,Hinc-6) STORE N-1 TO N ENDDO ? ? ? STORE Nwide TO N DO WHILE N > 0 ?? ' City'+$(Blanks,1,Hinc-6) STORE N-1 TO N ENDDO STORE Vinc-4 TO N DO WHILE N > 0 ? STORE N-1 TO N ENDDO SET PRINT OFF SET CONSOLE ON ENDIF ENDDO * * labelprt.cmd STORE 0 TO Reccount STORE 0 TO Lpr DO WHILE .NOT. EOF STORE ' ' TO Mline1 STORE ' ' TO Mline2 STORE ' ' TO Mline3 STORE ' ' TO Mline4 STORE 0 TO N DO WHILE N < Nwide DO CASE CASE EOF STORE Nwide TO N CASE Lpr < Perrec STORE LEN(Mline1) TO Length IF '*' $ Name STORE Mline1; +$(TRIM($(Name,@('*',Name)+1,Hinc)); +' '+$(Name,1,@('*',Name)-1),1,Maxname); TO Mline1 ELSE STORE Mline1+$(Name,1,Maxname) TO Mline1 ENDIF STORE Mline1+$(Blanks,1,Hinc-(LEN(Mline1)-Length)); TO Mline1 STORE LEN(Mline2) TO Length STORE Mline2+$(Addr1,1,Maxaddr1) TO Mline2 STORE Mline2+$(Blanks,1,Hinc-(LEN(Mline2)-Length)); TO Mline2 IF Addr2 = ' ' STORE 'Mline3' TO Mcity STORE Mline4+$(Blanks,1,Hinc) TO Mline4 ELSE STORE LEN(Mline3) TO Length STORE Mline3+$(Addr2,1,Maxaddr2) TO Mline3 STORE Mline3+$(Blanks,1,; Hinc-(LEN(Mline3)-Length)) TO Mline3 STORE 'Mline4' TO Mcity ENDIF STORE LEN(&Mcity) TO Length STORE &Mcity+TRIM($(City,1,Maxcity))+', '+State+' '; +Zip TO &Mcity STORE &Mcity+$(Blanks,1,Hinc-(LEN(&Mcity)-Length)); TO &Mcity STORE N+1 TO N STORE Lpr+1 TO Lpr OTHERWISE SKIP STORE Reccount+1 TO Reccount STORE 0 TO Lpr ENDCASE ENDDO SET CONSOLE OFF SET PRINT ON ? Mline1 ? Mline2 ? Mline3 ? Mline4 STORE Vinc-4 TO N DO WHILE N > 0 ? STORE N-1 TO N ENDDO SET PRINT OFF SET CONSOLE ON ENDDO ERASE @ 14,10 SAY 'There were ' @ 14,22 SAY Reccount USING '99999' @ 14,28 SAY 'records processed ' @ 15,10 SAY ' and ' @ 15,22 SAY Reccount*Perrec USING '99999' @ 15,28 SAY ' labels printed. ' RESTORE FROM LABELPRT DELETE FILE LABELPRT.MEM RETURN ORE Mline3+$(Blanks,1,; Hinc-(LEN(Mline3)-Length)) TO Mline3 STORE 'Mline4' TO Mcity ENDIF STORE LEN(&Mcity) TO Length STORE &Mcity+TRIM($(City,1,Maxcity))+', '+State+' '; +Zip TO &Mcity STORE &Mcity+$(Blanks,1,Hinc-(LEN(&Mcity vNAMEClADDR1ClADDR2C mCITYC+mSTATEC?mZIPCAm Doe*John Q. 1234 Main St. Nowhere CA90000 Smith*Mary Jane Flunky Univ. 1000 College Ave. University City PA14001 Churchill*Winston 10 Downing St. London England UK Willie Nelson 1 Country Place Houston TX50001 WHILE N > 0 ?? ' Name'+$( This is the release date of the disk. RATIO CMD _SIZEFILEDBF cSIZES CMD d COMPARE CMD gMENU CMD k UPDTREC CMD nCITYLST CMD rCITYLST FRM sDELREC CMD tFULLLST CMD vMAILADD CMD x MAILDEL CMD {MAILENV CMD } MAILINFOCMD  Fog Library Disk FOG-CPM.070 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. dBASE II applications and utilities. Filename Description -06-00 .86 This is the release date of the disk. -CPM070 .DOC This is the description of the disk contents. DBSQUASH.COM AB60 20K ver. 1.1 [dBASE Squash 1 of 3] Utility to compress dBASE II command files 35 to 40%. Removes comments, indentations, etc. MBasic source code is included. DBSQUASH.DOC 696D 5K ver. 1.1 [dBASE Squash 2 of 3] DBSQUASH.BAS BF27 7K ver. 1.1 [dBASE Squash 3 of 3] LABELPRT.CMD EE13 5K [Label printing 1 of 2] A dBASE II program to print address labels. Lovely program which allow multiple print of each name/address in addition to asking user how many labels to be printed on each line. LABELPRT.DBF FE28 1K [Label printing 2 of 2] INVCON .CMD CC05 2K ver. Feb86 [Inventory Control 1 of 12] .AN ITEM='BLOUS T BL - chang th wor "BLOUSE t whateve ite yo want G o throug th nex fiv lines changin eac ite a yo nee to I isn' necessar t chang th name o th memor variables woul advis agains it i fact Now usin ^L fin th nex sectio t b changed Wher yo se th lin "COUN FO ITEM='BLOUSE .AND SELLPRICE> T blt - chang BLOUS t th ite yo want Chang th nex line ac cordingly RATIO.CMD N changes Item yo entere i Itemfile.db wil tak car o it. .PA ==================================================================  MISCELLANEOU NOTES ================================================================== PRINTE CODES THI I IMPORTANT Thes comman file wer se u fo EPSO MX-8 printer an the includ th CHR(15 t se i fo compresse type Ful siz typ won' wor o 1/2-inc pape i thi program I yo don' hav thi typ o printer yo mus chang thi cod t you printer' specifications O i you'r usin wid paper tak ou th code Fin thi cod i th com man fil b ^Q CHR(15) A th en o eac .cm file CHR(18 turns off the compressed mode. Change that, also. Al comman file hav th B:(drive designator I yo ar goin t pu th comman an dat file o drive othe tha B: thi need t b changed Us th ^Q functio o WordSta t fin al occurrence o D an USE an eithe eliminat th B o chang it to suit your needs. I al th .CM files w hav aske fo dat wher th SELL PRICE>1 instea o SELLPRICE>0 Th reaso fo thi i a fol lows Wher th owne remove clothe fro inventor fo persona use yo nee t sho th sellpric a $1.0 i you databas fil (unles yo pai fo them) s tha thes item won' sho u a missin whe yo d physica inventory Thi dolla isn' goin t mak substantia differenc i you fina figures an i save lo o confusio later.W als entere $1.0 fo item missing, to avoid having them show up in successive runs. Thi progra isn' se u fo siz S,M,L,XL Coul b done bu w jus didn' d it Lik th fello said "We'r workin o it. Yo don' hav t "D INVCON. Yo ca jus "D Th INVCOM.CM migh eve b considere superfluou b some bu th ide seeme spiff a th time. Us Wordsta Non-Documen fo an editin o comman files Becaus thes .cm file ar constantl searchin you database you drive(s hav t wor hard bough Driv becaus o this an i yo don' alread hav thi o har disk recommen tha yo sprin fo Driv C You drive an you nerve wil las longer an th program wil ru man time faster Also thi driv wil hol al th programs .cm files an .db file needed to run this program, as well as Wordstar for editing. Ther ar lo o thing i thi progra tha nee refining or a som o yo woul pu it ar "inelegant. This is the sort of thin tha happen wit novic programmers invit yo t ge i touc wit m i yo hav an problems o i yo fin solu tion t problems .pa ================================================================== HOW TO USE THIS PROGRAM ================================================================== 1. CHANGING STRUCTURES AND .CMD FILES First mak an change i th FILE STRUCTURES o COMMAND FILES whic ar necessar t you situation. 2. IS EVERYTHING ON THE DISK? Mak sur yo hav al th dat an comman file o you disk Here they are: COMPARE.CMD INVCON.CMD ITEMFILE.DBF ITEMS.CMD ITEMS.DBF LINEFILE.DBF LINES.CMD RATIO.CMD SIZEFILE.DBF SIZES.CMD Yo ma als hav INVCON.DO (th documentation an INVCON.ID (inde t th documentation o th disk sugges yo prin bot thos file fo eas reference the delet the fro th dis (o cop t anothe dis befor deleting i yo wan dis copy) Thi wil giv yo valuabl spac o you maste disk. 3. ENTERING DATA USE ITEMS APPEND Ther ar tw POSSIBL DAT source fo thi fil - Invoice (o good actuall received) o purchas orders W use purchas orders leavin th "RECEIVED fiel blank Whe th merchandis arrived w entere th wee an mont i arrive i th "RE CEIVED field Thi worke bette fo u fo reasons (1)I reduce th amoun o tim Invoice sa o th compute tabl afte th good arrived (2)B enterin dat befor yo actuall sen of th Purchas Order yo ca us th compute t evaluat wha yo pla t buy I yo hav rotte memory a do yo ca thu avoi suc mistake a buyin to man skirt o to man re blouses create separat fil calle P.O. usin th ITEM structure fiddle wit i unti go th merchandis mi wanted printe i ou an hand-copie th printou ont th Purchas Orde forms the appende th P.O fil t th ITEM file I perfec worl woul als hav figure ou wa t actuall prin th purchas order fro thi file bu i i no ye perfec world Anothe benefi o startin fro Purchas Order i tha yo ca easily fin ou whic supplier ar del iverin wha percentag o ordere good o time Afte th cancellatio date delet al undelivere good fro th databas file. Afte merchandis o orde i adde t th ITEM file Inde i o Styl (number) th bette t fin i whe i come i AN whe i i sold Whe i come in US you INDE file FIN