IMD 1.16: 29/05/2007 12:43:38 FOGCPM.046 --FOGCPM046DBINDENTCOM DBINDENTCOM+-05-00 86 DBINDENTDOC4DBINDENTHLP !"DBINDENTBASN#$%&'()*+,DBSOURCECOM-./0123456789:;<DBSOURCECOM!=>?@A-CPM046 DOCDBSOURCEDOCNBCDEFGHIJKDBSOURCEHLP*LMNOPQDBSOURCEBAS?RSTUVWXYDBSRC2 COMZ[\]^_`abcdefghiDBSRC2 COM"jklmnDBSRC2 BASAopqrstuvwENCODE COMxyz{|}~ENCODE COM2ENCODE DOCaENCODE HLPENCODE BASPThis is the disk name. Æ+"6# x+:`i* ">"/##~>;+> 6*s#r w+͊1>!zͲ !4(,_!@0 .!ͅE!ͭE!E@|/g}/o|!%! h(! 1-"*@0m/.!@ͱ+!)ͱ+! ,!)ͱ+!)ͱ+!d)ͱ+!)ͱ+!)ͱ+!?)ͱ+!$)ͱ+! )ͱ+!)ͱ+!)ͱ+!)ͱ+!)ͱ+!)ͱ+!X)ͱ+!')ͱ+!)ͱ+!)ͱ+!)ͱ+!)ͱ+!)!E(!h(!͑0 !""""" """$&!.!͌0&!ͅE!ͭE)ýͱ+!)!\!E@|‡!%!)h(ͱ+!))*,#",*,|l)8ͱ+!)ͱ+!,!h)ͱ+! ,!C)! I..!@0!.͌0)!@ !0"1!*3!/5.!50|)?go!50|)go|g}o|&!50@05.&!5m/&.5!?͌0F!"*|/g}/o|5!;͌0e!"5!7͌0v!" 5!3͌0!""*|!50|ڟ)?go!50|ڴ)go|g}o|!50"8!"*|5!/͌0*3###"*3#"3*3*1z| }|*|/g}/o|"!"8*|/g}/o*"|g}o* |/g}/o|g}o|Yͱ+! )\Ìͱ+!)! 0)ͱ+!)ͱ+!)! )û*|ڙ)ګ&*͞/&.&!/!͌0!&!'/!&0|go&!/!m0|g}o| ͱ+!)7&!m/:.ͱ+!)!&)!:Dû&!ͳ/!m0&!ͳ/!m0|g}o|vͱ+!)! )yͱ+!)! 0)ͱ+!L)! )ͱ+!A)!"@0)!&)!"@0)!#)! )û&!ͳ/!h0&!ͳ/!h0|g}o|ͱ+!) Qͱ+! 0)ͱ+! )!"@0)&!͞/)!"@0)!)ͱ+!)û*+++&͞/=.* |/g}/o|m=!m/@.=!m/C.!ͅEC!ͭE!@ͱ+!)! 0)ͱ+!,!)ͱ+!,!)ͱ+!,!)ͱ+!)ͱ+!,!C)!)ͱ+!)ͱ+!)ͱ+!v)!C)!E(&!F'F!͞/!rh0F!͞/!nh0|g}o|— !"$!ͅE&!ͭE* |ʙ!jͅE@!ͭEͱ+!)!,!L)ͱ+!)!E@|/g}/o| !"I"K!%!Mh(P!.!M0|ʞ *S#"SU!M.!U0"X! U*Z!/0"\*\|0 )5*\|@ )?go*\|R )go|g}o|x *\@0*ZU'/*K*Z}o|g|ڏ )ڛ !U0"Z*I| *\|go*\|go|g}o| *K#"K *Z"I*Z#"Z*Z*Xz| }| *K#U!/!E͌0 !"^*^|) P!M.Þ *K#U!/!>͌0F !"^*K#U!/!7͌0d *`+"`*K#U!/!0͌0 *b+"b*K#U!/!)͌0 *d+"d*K#U!/!"m0U"!/!m0*|g}o| !"f !"f*`*b*f}o|g*d"h*h)ڵ*8*h}-! 0Pm/P.*K#U!/!͌0H *`#"`*K#U!/!͌0f *b#"b*K#U!/!͌0 *d#"d*K#M!/Pm/P.*"|/g}/o|ʵ ͱ+!P)*| +!P)* | !I+!P)$j.j!͑0 ͢4 ÷!@*`|go*b|go|g}o*d|go|g}o| ͱ+! )!)! )*`|e e ͱ+!,*`)!)*b|چ ʆ ͱ+!,*b)!)*d|ڧ ʧ ͱ+!,*d)!)*`) ͱ+!,*`)!p)*b) ͱ+!,*b)!U)*d) ͱ+!,*d)!9)* | !@̀Dͱ+!%) * |/g}/o|— ͱ+!)*$|= !C̀D@ O ͱ+!)!C)ͱ+!)!&)!)!C)&!C>Cͱ+!)!@)!)!&)@!&>Cͱ+!)!E(&!m'm!͞/!rh0m!͞/!nh0|g}o| S!!@0!j͌0 !@ * | !@̀Dͱ+!)à !@0!j͌02$!͑0&͵4!@ͱ+! )ͱ+!r)! )ͱ+!>)ͱ+!)ͱ+!)ͱ+!)*S)!)!&)ͱ+!)ͱ+!)ͱ+!M)* |ʲ!@̀D× ͱ+! )ͱ+!j)! )*`)ͱ+!,!W)*b)ͱ+!,!>)*d)ͱ+!,!$)ͱ+!)*S)!)!&)ͱ+!)ͱ+!)ͱ+!M)* |S!@̀Dͱ+!) +|go+,|g}o|ʋ!@ÎÓ,m+|go+,|g}o|ʿ!@uͱ+! 0)ͱ+! )!)ͱ+!)ͱ+!w)ͱ+!I)ͱ+!)!0ͱ+!0)*3)!E(!ph(p!m0*3|=)?go|g}o|Cp!͑0 !p0|h) !p0"s!p*u!/0|ڔ)gop*u!/0|ڲ)?go|g}o|ͱ+! )!) *u#"u*u*sz|}|z*3|)! @0wm/! @0m/w.w!pm/w.*3#"3*3|@) ͱ+!)!jͅE!ͭE!I+!w)!@,+|go+,|g}o|ʡ!@äͱ+!)! 0)ͱ+! )!),+|!@&ͱ+!)! 0)ͱ+! )!"@0)!&)!"@0)!),+|go+,|g}o|R!@UÖͱ+!)! 0)ͱ+! )!"@0)!&)!"@0)!),6,S! not found - try again.  is a bad file name - try again.$DBINDENT.HLP not found on this disk.Writing CLS.DATWhole decimal numbers only.3Clear Screen character+Lentries with a to generate CLS.DAT0zone byte at a time in Decimal numbers. End your,Please enter your your clear screen sequenceCLS.DAT not found.  Which reads:# Error was on line'ENDCASE without DO CASEAENDDO without DO WHILEZENDIF without IF9m*** ABORTING *** One too many end statements were found. Which reads:of file  The error was on line+ filter the file to set the 8th bit low.- see if it is an encoded file. Otherwise,1A If this file has the extension .CMD, check to@u*** ABORTING *** This file contains bytes with the 8th bit set!<*** ABORTING *** ^C entered from keyboard, no files changed.Are you finished  to Changing Erasing (No files changed.<- ENDCASE without DO CASEX- ENDDO without DO WHILEs- ENDIF without IF- DO CASE without ENDCASE- DO WHILE without ENDDO- IF without ENDIF4*** WARNING *** This file has the following errors: DO CDO WIFOTHE%ELSE,ENDC3ENDD:ENDIATEXTHENDTO^S to pause - ^C to abortmOqyuY&yDo you wish to continue and overwrite  already exists! [] WARNING [] []=========[]BAKTMP .CMD extension - try again must have a .SRC or.CMD.SRC& is not my kind of program.Dfiles. PB "FPress to return to DBINDENT -k DBINDENT.HLP?Filename.SRC/.CMD or Drive:?  Redisplay this screen ? View the Help file  A: Displays directory of A:.* FOO.SRC Console output only indent 2 spaces0[ FOO.SRC F3 Output to file and console indent 3<Examples: B:FOO.SRC PN4 Printer output only, indent 4 spaces 0 Remove all indenting" 1-9 Value to indent (default=2) N No console output' F Send output to File"BOptions: P Send output to Printer4gTo modify the indentation of dBASE II command files.DBINDENT Version 1.00 2-19-85CLS.DATI@CHh (2<FP_Zdnx "+4FOXajs",6@JT^hr|)28OXox&&50F:vTDeNvXbl"\qz7.4 Hy *4>Qz R\EfNpcmq(: ^g$.8BLV`j dt~  # 53 x      ) F d     (: 2* <H Ff P Z n x       / D e        |# , "O 6@ ,j @s J T h r   2;DS\en&0DNXbl*v3<ES\u   &*CM4X>kHzR\fp,zL^jp& !. U j $ [[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 >8>wDM*"N1*"##"L1ø >22*^#V"##^#V" 2! !!""! " 6#6P>2 >2 >2 ^ ^ U _7ȷ!XJC@@IJ> ͉G!^JCʹGDISK FULLÅ-Æ-!9"o " !8!" !8! !t 8!!R" !O" "| !> p!6#s#r#=!>2i >2l >2k 2n !b "{ !$\"q >&2s ]46#}5!|5!4 STOC"S!"*{ .. . ........M3* |Z!: !* |!!"  s#r"  {&#w#6" *o * >2 '#M!!9N#F"~#~"~+"~#~"+^#V###!###!|"~#fo!"4 Internal Error - No Line Number b "~#ʯ"4 at line!b"">͖"<{"͏"e"͖"<{"0mK͏"w"}_|W!" L~#fo>4 at address| 5} 5"> mK> mK~#*" L~#foɆ V!9"e !"*e ""g !#*g "!E#~Input Past En?Bad Record Numbe@Bad File NamCToo Many FileUnprintable Erroo"7 !$>%A w>3|p!"}FaI6%^I`i"y !K%" !%" ʧ% ,%ʂ%ʑ%i7͔5*!M*M*M*Má%p76*Má%p7}5*!M*M K%,Z%~#°%x3á%"!>{!% 33.͡B% %%"&G{,x&PX͡BR&!(Oz"y=& r& =&O{,yı&͡BR& =&{ L&,> L&L&R&R&ͱ&͡B &"]& …&͡Bڅ& ]&,ʅ& }&͡Bڅ& ʅ&*y ( 4: ʫ&{,«&6!( 3O ʫ&+~ ʟ!(ɷw#Æ&bxN#"&!9"&"&y2&*y |&* !'" A~#*)L: '~'ʉ''i7'p7")?'K'͔5*!M*M*M*MX'6*MX'}5*!M*M*)L|'~#"),& ': '&~'!" ~,"”'#"~ʨ'ʨ'# —''"®'#")x"' '+~ ʸ'y3X'4?Redo from Start *&M3!'E(*&:&O&*&+~+)((( +w (4(++~#fo."&!&5*&~2D(#~#^#V4++C3͊ID!:("*y |‡(!( 33.* aRtQøQy;P]P+6+qR:hO!h>ͽTuT2a)T!b~5#ʕR!xʺR>)w)ҶR w=¨R|G͆SyR|GzsQͬQ P͠SW|tQzSDM!>)!S) S !S=R|SxÂS2SͬQ PͬQÊNxtQͬQO|wzS͆SDM!>cS")*"**"**")*")*"**"**"d**")í*"*í*"*í*"d*í*M*M*"M#*H~# *x2H5: *ͤ*S*>9 3< +~L*J#@**>9~O* J#V*>2H5: *F#~#foxͤ* +͛*ʒ*~#JÆ*͛*C3ͤ*>"JG: xͤ*ʁK* +~<*=*###~** ÁK!O** * ~=*/< +*=*> Jͤ*>,JW* #^ 5+/++=/+: =/+́Kz{G+{_9+"|ƒ+}Fb+^I`i"y ++" !+" !+" 2 +"p!GAH}o|gҫ+> J+| +ÁK! " !"y 2 +! " !"y 2 +! ~6#w" n&" ^#V-|#!,Q: d!^#V2 ^#V#" !" : * " n{!~!j,4Na,"i&{! +,* {<ғ,́K{ʢ,=> JÓ,|p!}* ڢ,<Ó,,}Ó,|p!}Ó,|,!* #n&8->!>!>!>!>!>^#V#!M- - Gͣ.-#S^#V#"E-"E-"z_-|_-|ST^#V--^#V#}-5T2 ""Þ-"K-͠K|p!"-"-ò--: ".!#͢OHQ-: %.!"#Q:!M2!M:"MA.K.:"M..|/g}/oHQ:"MK.!"MJ.ͣ.A.!"m!:"MgoW* M|7gg.:Mg.+>v.|/g}/o.!ڔ.G|ʐ.Ç.o& Gȯ|g}o×.ͭ.>º.~+~?~.+#.+ ."2/~##++3>L+V+^+ /+r+s 4".~,3A[Y["%/"#/*%/|p!}p! p!+3>o0>o0>o0>o0>o0>ͦ0!+>Ó0>Ó0>Ó0>Ó0>Ó0>ͦ0ʢ0~#fo##GN0y0#~#fo~#fo0#0 0 y0y<.0)0)C3C3~C3o&~p!#^#V++C3o&"~i7͔5C3C3SRR1U1SX1[1^1Ra1Sd1Sg1j1Am1Tp1As1v1y1D|1}L_!I1415*J1"J1~#N#F#11 LÒ1yxҴ1 Ò1+++6@#yw#xw+++6###!I1~611Ï1?2*J1#~#~ҏ1"g!!*L1"J1~#^#V#<22 L2|'22++~_w#~Ww#21*L1DM~#^#V#ڙ2Y2H2+zv3+{v3##{z~#q#p_H2yŽ2xŽ2DMH2~#Ž2H2YP+++"J16@###{_zW+r+sɷ2*P1|2"j!1^#V+"P1w#s#r+++r+s##!22*4{z*4? 3}|~# 3yGͳ2xLGͳ2x#N#F& $323 4*4*4Lr3F4l33 4###S3͘34 during G.C. b ͘34 b 4 Internal Error - String Space Corrup#N#F*L1yx4*N1yx4++`i+V+^L3##6+6+~6  >@++*P1"P1s#r+?2*J1#~_#~W64"v!r+s##6"N1###!P1~#foZ4LJ4<*L1"J1*N1}o|g6@#s#r#6"N1*4*4"P1}w>#w##L…4++6+6R11!t 4!9"o ^#V#!t ~w[!!9"o |p!}p!! wɧ~mK#=44~mK#4G~#5#4++50:5mK7f !mw>Âe& _& _& 2m2m|ÂeBf>ͦ>p5*M}/o|/g#"M|͡5Sp5!!M~wɯ2"Mͦ>5HQ͡5*M͡5Sͦ>5(Q>>F7~J #æ5J ?5!%M5>!%MM25# 5!%MâO!%Mͫ69M>>5>|}+!a7êNs6PT+6!!M>P2M!]7]R!Y7êN!%MêN~_#~W#~O͚UQ!*>Q͛SF6ɇ<o&͡5S*M*!Mv6"M`i"!M!M^#V#N#F#!]7R͈Ux{}U!#M6]Twg>UáUï6:H5Gw#¯666!%M6Mͦ>Mͦ>6*M||<ͦ>*M6;6!&>͸65̈́5786:!M2!M:"M҃?ͅ6:"M"7'7-7|/g}/oA7!?:"MJ7ͅ6"M>2H5>6aj@7 L}x5͞5n?>2!5`hA7~&>-ʘ7+ʘ7+͌>8.%8eʪ7E7͌>l7L7q7Q7:H57>7~%28#C8!D8d7D8M8͌>ͷ>͌>88_{_\8l88O5ͦ>!M6J7ͦ> 8M8Ø7͌>!M6!68M8͌>8}5Ĕ5ͦ>66=ͦ>658*M 5Ҵ8T])))O |8"MØ7y͋578t$>6868ì8͛56;6O6͛55ì8X6O626{ 90_7;9!!Mͦ>9:+M9y;9:#M79:!M;9:#M/;9Ã?9I96+6[96-O5#60:K5W:H5::9=!%5F :K5_ ʔ9x*”9{”9Aq͌>ʴ9Eʴ9Dʴ90ʔ9,ʔ9.·9+60{9+:q w{+p2K5!%56 X6*M*M2#5}:E~::909 #~9>DG9"M`i"M#~+e:-<:0OxGe:#~#:`xEZ:y :>2#5j:|:R::"M`i"Mh6#Wy<:#5:â::Ҧ:=60}6?=+~0ʵ:.}6:ͦ>>"w#6+:6-/</ ::#p#w#6!%5#zn; <=z<={5=-+_:q {0f;#͌>f;++w\;#;f;6%<ʊ;.>5;>9+6%>6;͢6y<;_x<=?=<+= ;_yj8;l8;{_x;<=;<:"Mҝ<>!%Mͫ6 6 Â<<ͦ><CO>6ø<>5<]8à<t#>6<>5<=60#<<+=60#=<{=;6!&>͸6556>> +=/>5h=>5p#=_=!Me6Û=86>ͅ6h6|>?+=s6/{_#zW#yO++ү=&6#h6p#ڡ=>=>>+=N#F#*M/}o|g="Mp#==+=w1_cƤ~@zZrN vH Tʚ;@B''d #~: ʌ> ʌ> ʌ>0?<=:H5ҳ>7-++͌>I?O>H>+>>A7H#?>"m!M!>>}0?)))صo>M!%?#?}I?0? ;?? ))))صo%?a{ 6ͦ>:"M:!M26:!52"52!5"m!"m!j|jjjjjjjjjjjjjjjjjjjkk+k>kQkdkokzkkkkkkkkllDl[lrlllllllllllllmm mmmm#m*m1m8m?mFmUm\mgmrm{mmmmmSTMLTMLFMLFHSWPREA"}FaI^I!' ~ʀ@ ʀ@#~u@`i\BV@>O #~goPY!' ůw͐B:VE|I=vI=´@ѯgI<|I!% ^#Vr+s"}ʽE!"<@}F A PY@!@`i>XA!' ~ċ@͐BͰF"}FaI!&'A! ~+ng"}FaI! n&*y ~[IpHDM'~̈@4N#V p|Azw w+s#r#6#6DM:ʧA!" s#r#6A! {zVA?w*y T]% N#F+q#p###6 qB͐B:VE>‰B>w+w!('B7?*y ' 6#67~yI#^#fk_BN#~:B++@yIy@yIyI@ #.C~.CC7B#B2%@C3z yIyI> CC> 3CC"ͼB?@ LͼB:@! @I@ L66͐B~&D<|I;D<;DpID!%w#w#w#w~WDYB) p# ]DͽE _"ͼB?@<pI"!@6# NED"ͼB2%@!@JE!"@JE?@pIO!?  ~#ͨJyE~ E>.ͨJ E: W: 6E> ͨJͨJܥJ@D~*6?# NEO!!4nE#4nE#4y"ƒE|I><":@>2 !H" :} <2} *{ ">@!E"{ ""<@͎C* |E##n@þE.@*>@"E"2@@G"A@G"F"2@@G"A@GaI!)tG)#uG))҃G ҂G#=jG}_}la)IҚG#xI"F! "F!) "F!}o|gLIGbk:FHLIG,HDM*F*FcH"FPY+H}o|g*F#"F¬G,HDM*F*FcH"FPYG2KI*F! ~#foLIs#rRH:KI_H!_H!& ÃA~# xdHDMHsIH! w!( V6 ʙHzwHsIH! ~!üH! ^#V! s#rDM͹HͳHLI}FaIH^I`i"y !H" )I͡B"!>{!"|p!,#I-: aI* !A " {ͳ2f$%GI!@I* 2I|}!"y >6>4>?>=>:>7>5>2>3>@>C>"o&{!#!"y !(")ÜI:D(­I4?íIpJI:J>\2JIʬIͨJ+I~ͨJI+ͨJIͨJͥJ!(2JIJOʳI:JJ>\ͨJ2JyrJ̫J7 ʙJ rJ ,JʭIrJ̫JʭIJJʭIͨJ> ͨJ>ITJ>#ImJ6ͥJ!(ͽJI Ix<>}Jyq#ͨJ I> ͨJJʊJ II:D(̥Jw"mK>^ͨJ@ͨJͥJ~ J> ͨJͨJ#ýJA &* J#~+ J~=_K* ! " J" > J> J: =ʜK> Q > Q *J!MK!M÷KMKMKw#w#w#w#Ɏ!ͺK>MK>MK ~#=K!K#~ K KɅo$ɧGw#L{z!v!C !!FF!!rF!A!nH|g}o|— !"$!͓&!͟* |ʙ!jq@!}!&!!L͚!ͬ!<|/g}/o| !"I"K!G!MMP!͍!M|ʞ *S#"SU!M!U"X! U*Z!"\6#-M]Q,MhM͡UOmM!U!!My#eM+XM͡U?éUQNqU(QÆMQNQ4N!%M]QM:"MʡU:,M/NPP2M:MRP͡Ux/F+N+=qN!%MÅN!M>q#p#=ˆN!MêN"SL|NkNWN*SL]QXU:"MXU!+MN#FASPqNGPQx NNRP!!MPNj0 TeB׳]h!I.k QNqU(Q.OQNQ!%MêNS,!"Mq#~++w+qIOáUDNn"~`35zr1{r1h!I]QʡUyO2+MèO]QʡU:"M4NҺO/<4N9ҡU:+MOPTG2$M!+MP:$M2Mx!%MM9P"PO4Q:MP!#M~++wáU!M4# P44O+6!%MM# "Pɯ# /P/PRP/!MOyw#JPG:!M{P!MVwz# `PxSPXU!M͎PsPxO!"MwXUO~w# PQNqU(QïPQNQ!%MâOQNqU(QPQNQ4N!%MÒOy2+M!!MZL~q+PqQNsY+PP W~w+ QQ!!M QS(QqU!Mw#.QáU?Q}tQHQzQtQPT!MF#^#V#N8UzQ}%M~#bQG++NyéUM`Q!MqU>ʷQҏQS,͚UQ͈UʳQ!#M6]Tg>U|T!>‰QakqUQaSQáU!"M~+>wáUSQ͒UʡU:"MzUQ/<,TҡUPTgU!M0R~_#~W#~O8U#4'U.U8UG~_#~W#~OTzTSMR͒UʡU>OQS`R͒U T͡UȯGAS"My2 MFo#T,T!D*M:!MOҝR"M4'UõRRg.*M: MOzҞRRg.*M:!MëRx<=R{_zWxG)yOHG8USR͒U}U͡UASy+F+F+Fw`h|9SgyS:MO|g}oxG-|S} SzTElaO S!"M~GxYSƀWUwPTw+ɷ'UXU͈Ux{}U!#M6]TwgSz~S >U|JU{>2"MzT/))KT =CT!!M~7w?##wy7O*M*!M"!M"MajSXTXUJS\E!"MXU/U U7>{_zW}o|g=U|g}oUCZQU o-yOzW{_xGUM*!MDM^#V#N#F#xyéU:"M:!M7|/G}/O!>U U7>{_zW}o|g=U|g}oUCZQU o-yOzWD*M:!MOҝR"M4'UõRRg.*M: MOzҞRRg.*M:!MëRx<=R{_zWxG)yOHG8USR͒U}U͡UASy+F+F+Fw`h|9SgyS:MO|g}oxG-|S} SzTElaO S!"M~GxYSƀWUwPTw+ɷ'UXU͈Ux{}U!#M6]TwgSz~S >U|JU{>2"MzT/))KT =CT!!M~7w?##wy7O*M*!M"!M"MajSXTXUJS\E!"MXU/ Line Length DBINDENT does no checking of line length, so lines longer than your console or printer will handle will be wrapped. If these lines are longer than 80 columns, you will not be able to modify the command file with dBASE II, as dBASE amputates lines at 80 columns. Make any needed changes with a word processor, if this is the case. dBASE will run programs with lines longer than 80 columns. Errors DBINDENT does check for proper closing of loops. If you have one to many END statements in the file, DBINDENT will stop and show you the line where the last ENDIF, ENDDO or ENDCASE was used along with the line count to that point. This will only happen if the END statement would call for negative indentation. DBINDENT checks for proper matching of totals of the following pairs: IF and ENDIF, DO WHILE and ENDDO, DO CASE and ENDCASE. At the end of processing you may get an error message like: *** WARNING *** This file has the following errors: 1 - DO CASE without ENDCASE 1 - ENDDO without DO WHILE No files changed This would probably mean that you used  an ENDDO where you should have used an ENDCASE. If you use the P (Print) option with a file with a termination error, it will still give you an indented printout. It will terminate early only if negative indentation is called for. If you find the error hard to locate, get another printout with an indentation value of 8. DBINDENT does not check for proper nesting of loops. If you cross loop lines and have the proper number of terminators of each type, DBINDENT will accept that as correct. Visual examination of the resulting printout should show the problem. Options P Send output to Printer F Send output to File N No console output 1-9 Value to indent (default=2) 0 Remove all indenting No option specified Without an option specified, the output will go only to the console with an indentation value of 2. No files will be generated or changed. Numbers with the options Adding a numeral with the options or as a sole option changes the default value (2) of the indentation. Values may be between 0 and 9. 0 produces a file without indentation. This might be useful if you want to produce a slightly compressed file. With heavy nesting of loops a large number of bytes can be tied up in indentation. If more than one number is included in the option field, only the first one will be used. Send output to Printer The P option sends the output to the printer. Used alone, the P option will not change any disk files. It will produce a pretty printed listing of a file for any original indentation value. Send output to File The F option produces a new, pretty printed, file with the same name as the input file. The input file is renamed with a .BAK extension. No console output The N option shuts off the normal presentation of the output file on the console. This helps speed up generation of a fi le or printing of the output. It can not be used unless the F or P options are used. Abbreviations and Case DBINDENT looks for only the first four letters of reserved words as does dBASE II. Lower case reserved words are also allowed, although this is contrary to programming standards for dBASE suggested by most authors. Help File The help file may be called from DBINDENT by entering a "?" at the title screen. Filename.SRC/.CMD or Drive:? ? LEGAL NOTICE DBINDENT is NOT "Public Domain." Copyright is held by the author: Merlin R. Null P. O. Box 9422 N. Hollywood, CA 91609 (818) 762-1429 Permission is given only for private, nonprofit use of DBINDENT. Feel free to make copies of the program for your own use or for your friends. However, DBINDENT may NOT be sold or included with any collection of programs for sale or used as an inducement to buy another product or program without the written permission of the author. Permission is also given for nonprofit computer clubs to include this program in distribution disks, provided total charges for the entire disk of programs, copying and shipping do not exceed $20.00. My vote of thanks goes to those clubs that have kept their charges under $10.00. MBASIC and BRUN are Trademarks of Microsoft dBASE II is a Trademark of Ashton-Tate rom DBINDENT by entering a "?" at the title screen. Filename.SRC/.CMD or Drive:? ? LEGAL NOTICE DBINDENT is NOT "Public Domain." Copyright is held by the author: Merlin R. Null P. O. Box 9422 N. Hollywood, CA 91609 (818) 762-1429 Permission is given only for private, nonprofit use of DBINDENT. Feel free to make copies of the program for your own use or for your friends. However, DBINDENT may NOT be sold or included with any collection of programs for sale or used as an inducement to buy another product or program without the wr DBINDENT Help File For Version 1.00 2-18-85 (C) 1985 by Merlin R. Null The purpose of DBINDENT is to change the indentation of a dBASE II command file and send the output to the screen, printer, file or any/ combination of these. Any value of indentation between 0 and 9 columns may be used. This allows more freedom of choice than is offered with most pretty printers. Usually, the author's ideas of pretty printing are imposed on the user. Calling a Directory Listing To call a directory from the title screen simply enter the drive you wish to list. Filename.SRC/.CMD or Drive:? A: This will list the directory of drive A and give the prompt again. Directory of drive A: FOO .CMD DBSOURCE.BAS DBSOURCE.COM BRUN .COM A10 .CMD ENCODE .BAS ENCODE .COM MBASIC .COM D .COM SAMPLE .CMD BOOKS .DBF BOOKS .FRM DBASE .COM CLS .DAT CLEARSET.BAS CLEARSET.COM DBASEMSG.TXT DBASEOVR.COM B4 .CMD DROID .CMD DBINDENT.BAS DBINDENT.COM NURSE .BAS A10 .SRC A10 .BAK CLONE .CMD TEST .CMD CLONE .SRC A10 .OLD Filename.SRC/.CMD or Drive:? The ZCPR like drive call of A; will also work to call the directory, even if you are not running ZCPR. The Filename may be entered here or a will redisplay the start screen. Options P Send output to Printer F Send output to File N No console output 1-9 Value to indent or undent (default=2) 0 Remove all indenting No option specified Without an option specified, the output will go only to the console with an indentation value of 2. No files will be generated or changed. Numbers with the options Adding a numeral with the options or as a sole option changes the default value of the indentation or undent. Values may be between 0 and 9. 0 produces a file without indentation. This might be useful if you want to produce a slightly compressed file. With heavy nesting of loops a large number of bytes can be tied up in indentation. Send output to Printer The P option sends the output to the printer. Used alone, the P option will not change any disk files. It will produce a pretty printed listing of a file for any original indentation value. Send output to File The F option produces a new, pretty printed, file with the same name as the input file. The input file is renamed with a .BAK extension. No console output The N option shuts off the normal presentation of the output file on the console. This helps speed up generation of a file or printing of the output. It can not be used unless the F or P options are also used. Help File This help file may be called from DBINDENT by entering a "?" at the title screen. Filename.SRC/.CMD or Drive:? ? END OF THE HELP FILE seful if you want to produce a slightly compressed file. With heavy nesting of loops a large number of bytes can be tied up in in 10 ' DBINDENT.BAS Version 1.00 (c) Copyright 1985 by Merlin R. Null 20 ' To pretty print dBASE II command files saved in ASCII. 30 ' This program may not be sold separately or as part of any collection 40 ' of programs without the written permission of the author: 50 ' Merlin R. Null, P.O. Box 9422, N. Hollywood, CA 91609, (818)762-1429 60 DEFINT A-Z 70 WIDTH LPRINT 255 80 ON ERROR GOTO 1970 'Used mostly to detect incorrect filename 90 BL$=CHR$(7) 100 OPEN "I",#1,"CLS.DAT" 110 WHILE NOT EOF(1) 120 LINE INPUT #1, A$ 130 A=VAL(A$) 140 CLS$=CLS$+CHR$(A) 150 WEND 160 CLOSE #1 170 PRINT CLS$ 180 PRINT TAB(10)"DBINDENT Version 1.00 2-19-85" 190 PRINT 200 PRINT"To modify the indentation of dBASE II command files." 210 PRINT:PRINT 220 PRINT"Options: P Send output to Printer" 230 PRINT" F Send output to File" 240 PRINT" N No console output" 250 PRINT" 1-9 Value to indent (default=2)" 260 PRINT" 0 Remove all indenting" 270 PRINT:PRINT 280 PRINT"Examples: B:FOO.SRC PN4 Printer output only, indent 4 spaces" 290 PRINT" FOO.SRC F3 Output to file and console indent 3" 300 PRINT" FOO.SRC Console output only indent 2 spaces" 310 PRINT" A: Displays directory of A:" 320 PRINT" ? View the Help file" 330 PRINT" Redisplay this screen" 340 PRINT:PRINT 'return here after directory call or error 350 LINE INPUT"Filename.SRC/.CMD or Drive:? ";NF$ 360 IF NF$="" THEN 170 'Redisplay start screen 370 NFLEN=0:OPTFLAG=0:INDFLAG=0:LINEPRINT=0:FILE=0:CONOFF=0:ERASEBAK=0 380 FULLNAME$="" 390 IF NF$="?" THEN OPEN "I",#1,"DBINDENT.HLP" ELSE 520 400 PRINT CLS$ 410 FOR LINES=1 TO 20 420 IF EOF(1) THEN 470 ELSE LINE INPUT #1,HELP$ 430 PRINT HELP$ 440 NEXT LINES 450 PRINT 460 PRINT TAB(7)"" 470 PRINT TAB(12)"Press to return to DBINDENT "; 480 FINISHED$=INPUT$(1) 490 IF FINISHED$<>CHR$(27) THEN 400 500 CLOSE #1 510 GOTO 170 520 FOR I=1 TO LEN(NF$) 'Convert lower to upper case & detect options 530 BYTE$=MID$(NF$,I,1) 540 IF ASC(BYTE$)>96 AND ASC(BYTE$)<123 THEN BYTE$=CHR$(ASC(BYTE$)-32) 550 FULLNAME$=FULLNAME$+BYTE$ 560 IF BYTE$=" " THEN OPTFLAG=-1 'Flag start of options 570 IF NOT OPTFLAG THEN 630 580 IF BYTE$="P" THEN LINEPRINT=-1 'Detect print option 590 IF BYTE$="F" THEN FILE=-1 'Detect file option 600 IF BYTE$="N" THEN CONOFF=-1 'Detect console off 610 IF INDFLAG THEN 630 620 IF ASC(BYTE$)>47 AND ASC(BYTE$)<58 THEN INDENT=ASC(BYTE$)-48:INDFLAG=-1 630 IF NFLEN THEN 650 640 IF BYTE$="." THEN NFLEN=I+3 'Find filename length 650 NEXT I 660 IF NOT INDFLAG THEN INDENT=2 'Set default indent value 670 IF CONOFF AND NOT LINEPRINT AND NOT FILE THEN PRINT BL$; ELSE 720 680 PRINT CLS$;STRING$(5,10) 690 PRINT"The N option may not be selected alone. It is used with" 700 PRINT"the print and file options as FN or PN. - try again.";BL$ 710 GOTO 340 720 IF NFLEN>3 THEN FULLNAME$=LEFT$(FULLNAME$,NFLEN)'Drop options from filename 730 IF MID$(FULLNAME$,2,1)=";" THEN MID$(FULLNAME$,2,1)=":" 'ZCPR like (A;) 740 IF LEN(FULLNAME$)=2 AND MID$(FULLNAME$,2,1)=":" THEN PRINT CLS$ ELSE 790 750 DIR$=FULLNAME$+"*.*" 760 PRINT"Directory of drive ";FULLNAME$ 770 FILES DIR$ 780 GOTO 340 790 IF RIGHT$(FULLNAME$,3)="COM" OR RIGHT$(FULLNAME$,3)="OBJ" THEN PRINT CLS$; BL$ ELSE 840 800 PRINT CLS$;STRING$(5,10) 810 PRINT"Please don't do that to me. I only work on dBASE II command";BL$ 820 PRINT"files. ";CHR$(34);FULLNAME$;CHR$(34);" is not my kind of program." ;BL$ 830 GOTO 340 840 IF RIGHT$(FULLNAME$,4)<>".SRC" AND RIGHT$(FULLNAME$,4)<>".CMD" THEN PRINT CLS$ ELSE 890 850 PRINT STRING$(5,10) 860 PRINT BL$;CHR$(34);LEFT$(FULLNAME$,15);CHR$(34);" must have a .SRC or"; 870 PRINT" .CMD extension - try again" 880 GOTO 340 890 FILENAME$=LEFT$(FULLNAME$,NFLEN-3) 900 IF NOT FILE THEN 1050 910 TMPNAME$=FILENAME$+"TMP" 920 BAKNAME$=FILENAME$+"BAK" 930 OPEN "I",#1,BAKNAME$ 'See if .BAK exists 940 CLOSE #1  'Close, if found. Else error trap gets it 950 PRINT CLS$;STRING$(8,10) 960 PRINT TAB(20)"[]=========[]" 970 PRINT TAB(20)"[] WARNING []" 980 PRINT TAB(20)"[]=========[]" 990 PRINT 1000 PRINT TAB(14) BAKNAME$;" already exists!" 1010 PRINT:PRINT:PRINT"Do you wish to continue and overwrite ";BAKNAME$; 1020 INPUT OVERWRITE$ 1030 IF LEFT$(OVERWRITE$,1)<>"Y" AND LEFT$(OVERWRITE$,1)<>"y" THEN 1630 1040 ERASEBAK=-1 1050 OPEN "I",#2,FULLNAME$ 1060 IF FILE THEN OPEN "O",#3,TMPNAME$ 1070 PRINT CLS$;TAB(20)"^S to pause - ^C to abort" 1080 PRINT 1090 WHILE NOT EOF(2) 1100 START=0:BLANK=0 1110 LINE INPUT #2,TXT$ 1120 PRN$="" 1130 IF LEN(TXT$)=0 THEN 1380 1140 LINENUM=LINENUM+1 1150 TEMP$=TXT$ 1160 FOR BYTE=1 TO LEN(TEMP$) 1170 CHAR=ASC(MID$(TEMP$,BYTE,1)) 1180 IF CHAR>127 THEN 1740 1190 IF CHAR>96 AND CHAR<123 THEN MID$(TEMP$,BYTE,1)=CHR$(CHAR-32) 1200 IF BYTE-BLANK>3 THEN BYTE=LEN(TEMP$) 1210 IF START THEN 1230 1220 IF CHAR=32 OR CHAR=9 THEN BLANK=BLAN K+1 ELSE START=BYTE 1230 NEXT BYTE 1240 IF MID$(TEMP$,BLANK+1,4)="ENDT" THEN TEXTFLAG=0 1250 IF TEXTFLAG THEN PRN$=TXT$:GOTO 1380 1260 IF MID$(TEMP$,BLANK+1,4)="TEXT" THEN TEXTFLAG=-1 1270 IF MID$(TEMP$,BLANK+1,4)="ENDI" THEN IFNUM=IFNUM-1 1280 IF MID$(TEMP$,BLANK+1,4)="ENDD" THEN DOWHILENUM=DOWHILENUM-1 1290 IF MID$(TEMP$,BLANK+1,4)="ENDC" THEN DOCASENUM=DOCASENUM-1 1300 IF MID$(TEMP$,BLANK+1,4)="ELSE" OR MID$(TEMP$,BLANK+1,4)="OTHE" THEN BACKUP=1 ELSE BACKUP=0 1310 INDLEVEL=IFNUM+DOWHILENUM+DOCASENUM-BACKUP 1320 IF INDLEVEL<0 THEN 1850 1330 PRN$=PRN$+STRING$(INDENT*INDLEVEL,32) 1340 IF MID$(TEMP$,BLANK+1,2)="IF" THEN IFNUM=IFNUM+1 1350 IF MID$(TEMP$,BLANK+1,4)="DO W" THEN DOWHILENUM=DOWHILENUM+1 1360 IF MID$(TEMP$,BLANK+1,4)="DO C" THEN DOCASENUM=DOCASENUM+1 1370 PRN$=PRN$+MID$(TXT$,BLANK+1) 1380 IF NOT CONOFF THEN PRINT PRN$ 1390 IF LINEPRINT THEN LPRINT PRN$ 1400 IF FILE THEN PRINT #3, PRN$ 1410 QUIT$=INKEY$ 1420 IF QUIT$<>"" THEN GOSUB 1680 1430 WEND 1440 CLOSE 1450 IF IFNUM=0 AND DOWHILENUM=0 AND DOCASENUM=0 THEN 1550 1460 PRINT BL$;"*** WARNING *** This file has the following errors:";BL$ 1470 IF IFNUM>0 THEN PRINT TAB(17) IFNUM;"- IF without ENDIF" 1480 IF DOWHILENUM>0 THEN PRINT TAB(17) DOWHILENUM;"- DO WHILE without ENDDO" 1490 IF DOCASENUM>0 THEN PRINT TAB(17) DOCASENUM;"- DO CASE without ENDCASE" 1500 IF IFNUM<0 THEN PRINT TAB(17) IFNUM;"- ENDIF without IF" 1510 IF DOWHILENUM<0 THEN PRINT TAB(17) DOWHILENUM;"- ENDDO without DO WHILE" 1520 IF DOCASENUM<0 THEN PRINT TAB(17) DOCASENUM;"- ENDCASE without DO CASE" 1530 IF FILE THEN KILL TMPNAME$:PRINT"No files changed." 1540 GOTO 1660 1550 IF NOT FILE THEN 1630 1560 PRINT 1570 IF ERASEBAK THEN KILL BAKNAME$ ELSE 1590 1580 PRINT"Erasing ";BAKNAME$ 1590 PRINT"Changing ";FULLNAME$;" to ";BAKNAME$ 1600 NAME FULLNAME$ AS BAKNAME$ 1610 PRINT"Changing ";TMPNAME$;" to ";FULLNAME$ 1620 NAME TMPNAME$ AS FULLNAME$ 1630 PRINT 1640 INPUT"Are you finished";ANS$ 1650 IF LEFT$(ANS$,1)<>"Y" AND LEFT$(ANS$,1)<>"y" THEN 170 1660 END 1670 'The Quit routine only works with BASCOM 1680 IF QUIT$=CHR$(3) THEN CLOSE ELSE 1720 1690 IF FILE THEN KILL TMPNAME$ 1700 PRINT"*** ABORTING *** ^C entered from keyboard, no files changed." 1710 GOTO 1640 1720 IF QUIT$=CHR$(19) THEN WHILE INKEY$="":WEND 'If ^S then hold 1730 RETURN 1740 CLOSE 1750 PRINT BL$ 1760 PRINT"*** ABORTING *** This file contains bytes with the 8th bit set!";BL$ 1770 PRINT" If this file has the extension .CMD, check to" 1780 PRINT" see if it is an encoded file. Otherwise," 1790 PRINT" filter the file to set the 8th bit low." 1800 PRINT" The error was on line";LINENUM;"of file ";FULLNAME$ 1810 PRINT" Which reads:" 1820 PRINT:PRINT TXT$ 1830 IF FILE THEN KILL TMPNAME$ 1840 GOTO 1630 1850 PRINT BL$ 1860 PRINT"*** ABORTING *** One too many end statements were found.";BL$ 1870 IF IFNUM<0 THEN PRINT TAB(19)"ENDIF without IF" 1880 IF DOWHILENUM<0 THEN PRINT TAB(19)"ENDDO without DO WHILE" 1890 IF DOCASENUM<0 THEN PRINT TAB(19)"ENDCASE without DO CASE" 1900 PRINT" Error was on line";LINENUM;"of file ";FULLNAME$; 1910 PRINT" Which reads:" 1920 PRINT 1930 PRINT TXT$ 1940 IF FILE THEN KILL TMPNAME$ 1950 PRINT 1960 GOTO 1660 1970 IF ERR=53 AND ERL=930 THEN CLOSE #1 ELSE 1990 1980 RESUME 1050 1990 IF ERR=53 AND ERL=100 THEN CLOSE #1 ELSE 2230 2000 PRINT STRING$(20,10) 2010 PRINT BL$;"CLS.DAT not found." 2020 PRINT"Please enter your your clear screen sequence" 2030 PRINT"one byte at a time in Decimal numbers. End your" 2040 PRINT"entries with a to generate CLS.DAT" 2050 PRINT 2060 FOR I=1 TO 9 2070 PRINT"Clear Screen character";I; 2080 LINE INPUT C$ 2090 IF C$="" AND I>1 THEN 2180 2100 IF C$="" THEN 2070 2110 IF LEN(C$)>3 THEN 2070 2120 FOR J=1 TO LEN(C$) 2130 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 2070 2140 NEXT J 2150 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 2160 CLR$=CLR$+C$ 2170 NEXT I 2180 PRINT"Writing CLS.DAT"; 2190 OPEN "O",#1,"CLS.DAT" 2200 PRINT #1,CLR$ 2210 CLOSE #1 2220 RESUME 100 2230 IF ERR=53 AND ERL=390 THEN CLOSE #1 ELSE 2270 2240 PRINT CLS$;STRING$(5,10) 2250 PRINT BL$;"DBINDENT.HLP not found on this disk." 2260 RESUME 340 2270 IF ERR=64 THEN CLOSE ELSE 2310 2280 PRINT CLS$;STRING$(5,10) 2290 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" is a bad file name - try again." 2300 RESUME 340 2310 IF ERR=53 AND ERL=1050 THEN CLOSE #2 ELSE 2350 2320 PRINT CLS$;STRING$(5,10) 2330 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" not found - try again." 2340 RESUME 340 2350 ON ERROR GOTO 0 TRING$(5,10) 2330 PRINT BL$;CHR$(34);FU 2180 2100 IF C$="" THEN 2070 2110 IF LEN(C$)>3 THEN 2070 2120 FOR J=1 TO LEN(C$) 2130 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 2070 2140 NEXT J 2150 IF I :+"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#w+x,!N]0:!0M& !͑+.*!@!@!͖;|/g}/o|ʸ!?!͍"!f,'"*͑+;*.*z!  %!C#! #!<#! $!*!;+!*!;+|g}o|V ! ?%!O#! $! ͏>%!C#!#!<#! $%!$!)j" !##"#!*!͹+#!*!͹+|g}o|x!͑+! + !͑+! + #!+ 0 &|go&'|g}o| !<<& &|go&'|g}o|N !<<& &|go&'|g}o|z !<} 0%! l+$%!#!$%!$%!$%!l$%!$! %!S#*#!j"!&͍"&!;+*| )?go|g}o| &!+ !&E,|# ) !&E,")!Ó &*+!!+O,|O )go&*+!!+O,|m )?go|g}o|ʏ %!#!5$ *+#"+*+*)z| }|5 *|ڸ ) ! ͑+-;*! ͑+;*-.*-!&;*-.**#"*| ) %!##!w@!@!n%!-$!<<&h &|E! to generate CLS.DAT0one byte at a time in Decimal numbers. End your'Please enter your clear screen sequence/CLS.DAT, the clear screen data file, not found.,Are you finished? to FChanging RErasing ^^S to pause - ^C to endzO~nyYqQ (Yes/No/Quit)Do you wish to overwrite  to be renamed to 4 already exists! A 'NO' here will cause the current [] WARNING [] []=========[]+BAK1SRC7TMP,= is not a dBASE II command file - try again.lCMDrDirectory of drive :*.*:;AN option may not be selected alone, only as NF or PN - try again..NFP "Press to re turn to DBSOURCE - DDBSOURCE.HLPS?WFilename.CMD or Drive:? r Redisplays this screen ? Read the HELP file A: Displays directory of A:& FOO.CMD F Output to file and console*Examples: B:FOO.CMD PN Printer output only% N No console output> F Send output to File"YOptions: P Send output to Printer#~DBSOURCE Version 1.02 - 3/1/85CLS.DATI>\wOQ QQQ(Q2Q<QFQPWZ n\dhnzx #,5>G"P,Y6b@kJ}T^hr|p: "+IXgm&0:X:D)NVlBbrva  * 4/>AHGR\\kfzpzz Iv|$. 8 B+ ~I L tY V ` jG ^ o    P         V  ( 2 < F Z d xN 0r}           @  & 5   " , 6JT%^+hH|]W(=RZ.z&0N:D[[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 nter fileDM*",* ##",>22*^#V"##^#V" 2!>!!""!"6#6P>2>2>2ÃÃz_ ND2=2=2=2=2=2=2=<2=2=Ců2x=E.>ͷE#> šD>2x=!=ͫE> 2ê'ë'!9" !]!]!]!R"!O"|1> 6#s#r#=&>2>2>22!"!$\">&2 î/6#}Z|Z70 STOhx*.. . ........͞.*|:*|  s#r  {Kw#6"**>2Lr!9N#F~#~%~++~#~%+^#V######|7~#fo!?70 Internal Error - No Line Number Ç~#70 at line͇>ͻ<ڠʹŠͻ<ڠ0;FʹҜ}_|W!]G~#fo>70 at address|[0}[0> ;F> þF~#* ]G~#fo:ZQ!9"!*"!:*!j~Input Past En?Bad Record Numbe@Bad File NamCToo Many FileUnprintable Erro\!">9fw>l.|•}cAʲD[¯D`i"!p"!" , ʧʶͺ20*rH*pH*nH*lH232*pH20*rH*pH p,Z ~#xl. !>à ].l.1*=   ") G{,x) PX=w !"Oz"yb ʗ b O{,y =w b { q ,> q q w w =. "ʂ ª =ڪ ʂ ,ʪ ¢ =ڪ ʪ *( 4: {, 6!"].O +~ #6!"ɷw#ë N#" !9" " y2 *| !*!!"A~#*#QG:)!~!ʮ!;!ͺ2>!2"#d!p!0*rH*pH*nH*lH}!32*pH}!0*rH*pH*#QGʡ!~#"#,! !:!!~!!"~,"¹!#"~!!# ¼!!"!#"#x"! !+~ !yl.}!70?Redo from Start * ͞.! "j"* : O!* +~+N"@"@" +w B"Y"++~#fo1*" ! 5* ~2i"#~#^#V)0++͔.Di:"*|¬"!"].l.1**GyOҌLҌLP{M>POx:i$%)$%4$%#%$$%)$$%4$$%͉$$%$$)$$4$$͉$$pH?$lH?$"pHH$H~# @$x20:$$x$͏4].<0%~q$*F#e$%͏4~t$ *F#{$>20:$F#~#fox$0%$ʷ$~#*Fë$$Ô.$>"*FG:x$F*+~<$=$###~$*F!t$**~= %/<0%%=%> *F$>,*FW*#^ Z%T%+=T%:=T%Fz{l%{_^%|¨%}cAʇ%¯D`i"++"!%"!%"2& ÕØ<D}o|g%> *F+|%F!"!"2&!"!"2&!~6#w n& ^#VD'|*!8&9M:ʉ^#V2^#V#"!":* nà~!&I0Nʆ& i&à +&*{<Ҹ&F{&=> *Fø&|•}*&<ø&&}ø&|•}ø&|&!*#n&]'>!>!>!>!>!>^#V#!pH%'0' G(@'*O^#V#j'j'zʄ'|ʄ'|:OaO^#VR'^#V#͢'͆O2'&G'F|Õ'''(:G(!CJ͙L(:J(!G9M:rH2rH:sHf(p(:sH>(@(|/g}/o͙L:sHp(!sHo((f(! Ò:sHgoW*qH|7gҌ(:pHŒ(+>͛(|/g}/oڤ(!ڹ(G|ʵ(ì(o& Gȯ|g}oü((>(~+~?~(+#(+ ()0pH>A))ͺ2*0lH>A))32pH>bG)~,"^)#"~u)u)# a) Õ"{)#*x"ʖ)y]G+~ •) Š)yl.1*^#V#{´)!"">2͢)N#F#*~=)}|)*))2*:̢)*QG~= ØQG~,*#"ɧ(**"+V+^" ÞF.k*~##++/>bG+V+^+^*+r+s^/1*~}.*"v*"t**v*|•}ʕ ڕ+<ڝ*{*t*ڥ*~#^#V`i#N#F bG*t*͔.ڕ.**͔.͔.~#~#fobG|•BK)+PY|•BK + o_*z•z1+ 7+_=+o}`i}.͔.DM o+~ʕ#~#fon&͔.z‹+}.~ڈ+s#~+ Õ|•!9>l.>+>+>+>+>+>+!+>+>+>+>+>+>++~#fo##GN#,y#,#~#fo~#fo,,#", , y,,y<.6,)6,)͔.͔.~͔.o&~ʕ#^#V++͔.o&~<ʕ.~#~#fobG6+9ͺ20͔.Ô.",,,,`,t,~,ʸ,,ʾ,,,,,,e_!,4,5*,",~#N#F# -, ]G,yx- ,+++6@#yw#xw+++6###!,~61-F-,͐-*,#~#~, Ì!*,",~#^#V#ڍ-l-]GS-|x-S-++~_w#~Ww#S-F-*,DM~#^#V#--Ù-+z.+{.##{z~#q#p_ʙ-y-x-DMÙ-~#-Ù-YP+++",6@###{_zW+r+sɷ9.*,|. Ï,^#V+",w#s#r+++r+s##!@.E.*/{z*/?[.}|~# a.yG.xbGG.x#N#F& u.F./^/*/*/pG.͗/ʽ./^/###ä..70 during G.C. Ç.70 Ç70 Internal Error - String Space Corrup#N#F*,yxY/*,yxY/++`i+V+^pG.##6+6+~6  >@++*,",s#r+͐-*,#~_#~W҇/ Ûr+s##6",###!,~#foʫ/pG›/<*,",*,}o|g6@#s#r#6",*/*/",}w>#w##pG/++6+6ɣ,,!4!9"^#V#!~wڀ!9"|•}ڕ!wɧ~;F#=+0=0~;F#=0G~#Y0#K0++d00:o0þFEXsOULwAMňxUaPE΀CTPTIOnRINtOK90*pH}/o|/g#"pH|0O0!rH~wɯ2sH90͙L0*pH0O90yL>>×2~o#0o0!vH1>!vHlH21# 1!vHJ!vH1͊H>>>1>|}+!2I1͡O+6!rH>6QP2:0Gw#212!vH1pH9lH91*pH||<9*pHO22!w9 2%10R2͉1:rH2rH:sH:1:sHs2x2~2|/g}/oÒ2!::sHқ21"pH>20͏1ajÑ2 L}00:>2r0`h̒2~&:-2+2+93.v3e2E%39l3L3q3Q$3:0>3>>3~%ʃ3#ʔ3!ʕ3d>3DU3͞39:9C4U3_{_33Y3̠09!1͛29 U3ܞ329!1!32U3͞39U30091k1=9e1H1DG>5"lH`i"nH#~+ʶ5-ʍ50OxGҶ5#~t5`xE«5y _5>2t0û5|_5ã5_5"lH`i"nH͹1#W7:t05555i8601͐8+~06.1869>"w#6+)66-/</ +6:#p#w#6!v0#zҿ6\7a8z=8(9{F1==84n6p#6!u0#:0~ s6*s6+69-+_:{0·6#9ҷ6++wʭ6t6ʷ66%c769+16͏4+6%͏16177_x=8T8͐8M8|8[6_yĻ3737{_x77=8T8H7=8ỳ8O=8GO͐8S7*0==8Pd60ѯi7177yĻ3OzWO377/<8M8|860#=I8{ |8/>1ҹ8>1p#=°8!lHͶ18͉1>1͹19?|81/{_#zW#yO++9w1#͹1p#8>.99>|8N#F#*pH/}o|gA9"pHp#=.9|8w1_cƤ~@zZrN vH Tʚ;@B''d #~: 9 9 90?<=:0:7-++9͚:O#:H#:+/:8:͒2H#d:>: ÒM!P:N:}0?)))صoP:M!v:t:}͚:0? ڌ:? ))))صov:a{ 329:sH:rHÃ1:r02s02r0 Ò Ò#zĸd6@#s#r6#6#*m~#@d~#fodK:md:m7~Pdd#{#~++dd!me!m~4>"~#ew^#VT]##~0#~#7#V#~@ez͸/O+#s#r~#fo~Ze>!mW}cAʲDʯD!' ~; ;#~;`iͭ=ç;>O #~goPY!' ůw=:ͧ@D=D=<ѯøD*T]% N#F+q#p###6 ==:ͧ@>=>w+w!(x=7?*' 6#67~D#^#fk_*>N#~:.>++@Dy@DDj; #>~.X>k>7D>#E>2v;͔.z DD> k>_>> „>_> >:j; bG >:j;!Z;Dj;<»DZ;*;~ʯD#N#F++͔. O?I?R¯D*;|?!";}_cA+?B{cA¾Dz > =B"#j;> bG66=~w?:j;<D!j;6# ͟@@ >2v;!k;͛@!s;͛@:j;DO!:  ~#Eyn@~ k@>.E X@: W:ڇ@> EEEj;H@~*6?# Ÿ@O!!4¿@#4¿@#4y"@D><";>2!*D":<2*";!"A"";>*| A##n<A.<*;7A2;_B";_BSA2;`B";`BʲD<ʲD=_!~#foʇA##{ʝA++sA*ͦA"q#p#s#4#5++###DM !";~#foA+V+^##*;{zګABK^#V+*;s#r! DMA*; DMm/s#r# 6# xA !T]~#foʲDx By B~#~+*"s#rEQC*;|MB! s#r#wWB2!)B)#B))B B#=»B}_}la)DB#xD"6B! "8B!) ":B!}o|g͝DCbk:à|•,tD-:ʲD*!f"{.f$%ʘD!D*ÃD|}!">6>4>?>=>:>7>5>2>3>@>C> o&à*!"!""#D:i"D70?Dp$F2E:E>\2EEDE+,E~E@E+E@EEE!"2ECE$FOE:EYE>\E2EyEE7 E E }EDEED›EDE> E>%E¥E>#,E¾E6E!"F@E @Ex<>Eyq#E @E> E$FE @ECE:i"EwɜþF>^E@EE~ F> EE#Ff* AF#~+<@F=F ̩F̬F RF4+~#<ʁF=¥F ʰFo :G~FoqF:šF<2*"(F!F" ʰFv*654> *F~=°F*!"*F"> *F> *F:=F> v> v*(F!pH G!lHGpH GlH Gw#w#w#w#ɋ 3G>lH9G>pHG ~#==G!G#~ PG PGɅo$ɧGw#fG{zMz{SSEDJz(zpH{,q{ 8o&z(zHzz{{(z(z(z(U#zEz(U+zEz(U)zEz߃pHE{,qE{$)$)$)UE' >928< )}28<(69%(s) :8<o&z(n&6#~HͮL}HʹHPOʾH!P!rHy#¶H+©HP?P͢IPyLH͢IpLͅI!vHͮLCI:sHP:}H/NF+N+=I!vHI!lH>q#p#=I!lHI"GIͼIͨI*GͮLʩP:sHʩP!|HN#F͒N%Lq8JGjKhLx !JJãK!rHDL0Jj0 TeB׳]h!I.k ͢IPyLJ͢IpL!vHIx&!sHq#~++w+qšJPDNn"~`35zr1{r1h!IͮLPyO2|HJͮLP:sHʅI K/<ͅI9P:|HO͡OG2uH!|HL W~w+]LVL!rHZLOyLP!lHw#LP͐L}L͙LLL͡O!oHF#^#V#NÉPL}vH~#³LG++NyPlHñL!pHP>MLx&PMPM!tH6ͮOg>6Q|oO!>LakP%MͲN%MP!sH~+>wP,OO?M,OñMP]OPȯG͒N"YHy2[HFotO}O!D*pH:rHOMsH4xPNNg.*YH:[HOzMNg.*pH:rHMx<=-N{_zWxG)yOHGÉP,O=NPPP͒Ny+F+F+Fw`h|ʊNgynN:pHO|g}oxG-|bN}]NOElaO\N!sH~GxNƀʨPw͡Ow+ɷxPéPPx{P!tH6ͮOwgNzN >6Q|ԛP{>2sHO/))ҜO =”O!rH~7w?##wy7O*pH*rH"rH"pHajSXPʩPJS\E!sHҩP/Q Q7>{_zW}o|g=Q|g}oEQCZQ8Q o-yOzW{_xGHQpH*rHDM^#V#N#F#xyP:sH:rH7PG~_#~W#~OiOO,OÞMPP>O?M,OñMP]OPȯG͒N"YHy2[HFotO}O!D*pH:rHOMsH4xPNNg.*YH:[HOzMNg.*pH:rHMx<=-N{_zWxG)yOHGÉP,O=NPPP͒Ny+F+F+Fw`h|ʊNgynN:pHO|g}oxG-|bN}]NOElaO\N!sH~GxNƀʨPw͡Ow+ɷxPéPPx{P!tH6ͮOwgNzN >6Q|ԛP{>2sHO/))ҜO =”O!rH~7w?##wy7O*pH*rH"rH"pHajSXPʩPJS\E!sHҩP/ CLS.DAT will then be written and you will go directly to operation of DBSOURCE. If the title screen is preceeded by a clear screen, the installation was successful. If the title screen scrolls on, it failed. If it fails, exit the program, erase CLS.DAT, and run DBSOURCE again. If you don't like the clear screen function, simply enter 10 when asked for your clear screen sequence. For each 10 you enter DBSOURCE will scroll one line in place of the clear screen. My older program, CLEARSET, will still generate a correct CLS.DAT for this version of DBSOURCE. Calling a Directory Listing To call a directory from the title screen simply enter the drive you wish to list. Filename.CMD or Drive:? A: This will list the directory of drive A and give the prompt again. Directory of drive A: FOO .CMD DBSOURCE.BAS DBSOURCE.COM BRUN .COM A10 .CMD ENCODE .BAS ENCODE .COM MBASIC .COM D .COM SAMPLE .CMD BOOKS .DBF BOOKS .FRM DBASE .COM CLS .DAT CLEARSET.BAS CLEARSET.COM DBASEMSG.TXT DBASEOVR.COM B4 .CMD R2D2 .CMD DBINDENT.BAS DBINDENT.COM ELIZA .BAS A10 .SRC A10 .BAK CLONE .CMD TEST .CMD CLONE .SRC A10 .OLD DBSRC2 .BAS DBSRC2 .COM Filename.CMD or Drive:? The ZCPR like drive call of A; will also work to call the directory, even if you are not running ZCPR. The Filename.CMD may be entered here or a will redisplay the start screen. Help File The help file may be called from DBSOURCE by entering a "?" at the title screen. It contains several screens of condensed information on how to run DBSOURCE. Filename.CMD or Drive:? ? Viewing an Encoded dBASE II File To view the encoded dBASE II command file "SAMPLE.CMD", simply type in the file name at the title screen prompt. Filename.CMD or Drive? SAMPLE.CMD Just use control S to stop the scrolling of the file or control C to quit the program. The file to be viewed must have the extension .CMD Options P Send the output to the printer. Does not generate a file. F Send the output to a file. N Turn off console output. May be used only in combination with P or F options. Options must preceded by a space. Extra spaces entered with the options do not matter. SAMPLE.CMD P F N is equivalent to SAMPLE.CMD PFN. Direct output to Printer Use the P option to direct the output to the printer: Filename.CMD or Drive? SAMPLE.CMD P This does not generate a disk file. It will only print the file and display the output on the screen. Creating a source File To generate a runnable source file from an encoded dBASE II .CMD program, use the F option: Filename.CMD or Drive? SAMPLE.CMD F This will write a file called SAMPLE.SRC. If SAMPLE.SRC already exists, you will be prompted with the message: []=========[] [] WARNING [] []=========[] SAMPLE.SRC already exists! A 'NO' here will cause the current SAMPLE.SRC to be renamed to SAMPLE.BAK Do you wish to overwrite SAMPLE.SRC (Yes/No/Quit)? The output file will be named SAMPLE.SRC. After you move this file to another disk and rename it to SAMPLE.CMD, it should run the same, only somewhat slower, as the encoded original. No console output The N option shuts off the normal presentation of the output file on the console. This helps speed up generation of a file or printing of the output. It can not be used unless the F or P options are used. I do not like it with the F option. I prefer to see that the decoding is being done correctly. How does it work? Files that have been pseudo compiled by DBCODE, ENCODE or DB-SQZ5 have the first reserved word en each line tokenized. The tokens are bytes with decimal values between 128 and 194. 128 represents IF, 129 is ELSE, 130 is ENDIF etc. Examine at the lookup table at the end of DBSOURCE, if you are curious. The space at the end of the reserved word has been removed and the rest of the line converted to high order bytes by XORing them with 255. To decode, DBSOURCE just creates a print string starting with the reserved word found in the table, adds a space and then adds to it byte by byte using XOR 255 to return to the original value. History of DBSOURCE and DBSRC2 Rev. 1.02 3/1/85 Added self installation of clear screen and the COM file is now stand alone. Rev. 1.01 2/17/85 Modified for compatibility with MBASIC 5.20 under Apple CP/M. This required changing TEXT$ to TXT$ as TEXT is a reserved word in the apple CP/M basic. Versions 1.00 released 1/6/85 ================================================================= DBSRC2 DBSRC2 was created to decode several programs that had either included some additional encoding to mix up the reserved words. Or, I ran into something that was encoded by a variation of DBCODE. If you decode a file with DBSOURCE and there are some strange placements of reserved words, you should try DBSRC2 on it. You might see something like QUIT in the middle of the file or UNLOCK in place of some other word. If you find that there are still errors in keyword translation with either DBSOURCE or DBSRC2, you may want to generate your own version of DBSOURCE. Examine the remarks just before the table of reserved words in DBSRC2 to see what I did to generate this variant. It involves substituting reserved words in the table. If you remove a word from the table and put it at the end, all reserved words located after the removal will be offset by one. This was done with DBSRC2. If you find only a single keyword is wrong, you should make a swap with the correct word in the DATA statements. Other Related Programs I have written two other programs for dBASE II that have been released in other library files. They are, ENCODE and DBINDENT. ENCODE is the reverse of DBSOURCE. It creates the tokenized command file. DBINDENT is a dBASE II pretty printer. Current versions as of the release of this library are in ENCODE4.LBR and DBINDNT1.LBR. COPYRIGHT AND LIMITATIONS All of the above programs may be copied for private, noncommercial use, provided that all copyright notices remain intact. In fact, making copies for your friends is encouraged. They may also be included in distribution disks from non-profit computer clubs, if only a nominal charge of less than $20.00 per disk is charged to cover costs of disk, copying and shipping. These programs are NOT "Public Domain". To release a program to public domain causes all control of distribution and sale to be voided. Any sale of these programs that does not comply with these conditions will be prosecuted. None of the programs named at the beginning of this library documentation may be sold for profit or used as an inducement to buy any other product or program without the written permission of the author: Merlin R. Null P. O. Box 9422 N. Hollywood, CA 91609 (818) 762-1429 A small donation, like $5.00, would help me with maintaining these programs, but is not required. These programs were written for DBASE II users and programmers, not with profit in mind. Please contact me if you have any suggestions, gripes or comments about DBSOURCE or DBSRC2. dBASE II, dBASE III, RUNTIME and DBCODE are trademarks of Ashton-Tate. MBASIC is a trademark of Microsoft. ed to cover costs of disk, copying and shipping. These programs are NOT "Public Domain". To release a program to public domain causes all control of distribution and sale to be voided. Any sale of these programs that does not comply with these conditions will be prosecuted. No DBSOURCE HELP Version 1.02 3-1-85 (C) 1985 by Merlin R. Null DBSOURCE will take a dBASE II command file that has been encoded with ENCODE , Ashton-Tates's DBCODE or with Gene Head's DB-SQZ5 and generate a runable source file. DBSOURCE can also send the output to the printer or you may view the output on your console. This type of file is encoded for one of two reasons. First, it protects the program file from being viewed or modified. Second, the encoded programs run about 30% faster. I feel that the latter reason is far more important. The level of protection that this type of encoding offers is only moderate. Programs run faster because the files are partially tokenized and all comments are removed. Encoded command files are for use with dBASE II version 2.4 or higher. A decoded file might require some translation to run on an earlier version of dBASE II. Calling a Directory Listing To call a directory from the title screen simply enter the drive you wish to list. Filename.CMD or Drive:? A: This will list the directory of drive A and give the prompt again. Directory of drive A: FOO .CMD DBSOURCE.BAS DBSOURCE.COM BRUN .COM A10 .CMD ENCODE .BAS ENCODE .COM MBASIC .COM D .COM SAMPLE .CMD BOOKS .DBF BOOKS .FRM DBASE .COM TERM .DAT CLEARSET.BAS CLEARSET.COM DBASEMSG.TXT DBASEOVR.COM B4 .CMD R2D2 .CMD INDENT4 .BAS INDENT4 .COM ELIZA .BAS A10 .SRC A10 .BAK CLONE .CMD TEST .CMD CLONE .SRC A10 .OLD DBSRC2 .BAS DBSRC2 .COM Filename.CMD or Drive:? The ZCPR like drive call of A; will also work to call the directory, even if you are not running ZCPR. Viewing an Encoded dBASE II File To view the encoded dBASE II command file "SAMPLE.CMD", simply type in the file name at the title screen prompt. Filename.CMD or Drive:? SAMPLE.CMD Just use control S to stop the scrolling of the file or control C to quit the program. The file to be viewed must have the extension .CMD Options P Send the output to the printer. Does not generate a file. F Send the output to a file. N Turn off console output. May be used only in combination with P or F options. All options must preceded by a space. Extra spaces entered with the options do not matter. SAMPLE.CMD P F N is equivalent to SAMPLE.CMD PFN. Direct output to Printer Use the P option to direct the output to the printer: Filename.CMD or Drive? SAMPLE.CMD P This does not generate a disk file. It will only print the file and display the output on the screen. Generating a Source File To generate a runnable source file from an encoded dBASE II program, use the "F" option. Filename.CMD or Drive:? SAMPLE.CMD F This will write a file called SAMPLE.SRC. If SAMPLE.SRC already exists, you will be prompted with the message: []=========[] [] WARNING [] []=========[] SAMPLE.SRC already exists! Do you wish to overwrite SAMPLE.SRC? If you answer YES, the old SAMPLE.SRC will be erased and a new SAMPLE.SRC will take it's place. If you answer NO, the old SAMPLE.SRC will be renamed to SAMPLE.BAK and you will have a new file named SAMPLE.SRC. If a file named SAMPLE.BAK is already was present on the disk, it will be erased. All of the erasing and file name changes are done after the generation of a SAMPLE.TMP file. If there are no errors, the SAMPLE.TMP file is renamed to SAMPLE.SRC and all other file changes done. This prevents the replacement of a file with a half finished one. If all goes well, you should never see the temporary file. It will be present on the disk after DBSOURCE is run only if you are running it in the MBASIC interpreter and stop the operation in mid stream with control C. In the compiled version, the temporary file is erased when a control C is entered and the entire operation is aborted. This can not be done with the interpreter as control C suspends operation of DBSOURCE. If you wish to continue with the interpreter, type in CONT. This will pick up operation where you left off and finish the file. If everything goes OK and you have a SAMPLE.BAK on the disk, you should see the following messages: Erasing SAMPLE.BAK Changing SAMPLE.SRC to SAMPLE.BAK Changing SAMPLE.TMP to SAMPLE.SRC This is just to let you know what is going on. With many programs there is a rush to check the directory after operation to see if everything went OK. Using DBSOURCE you will know what file operations have been done. The "F" option may be used with the "N" option to suppress the console output. Just enter: Filename.CMD or Drive:? SAMPLE.CMD FN This sends the output go only to the new file. The new SAMPLE.SRC file will be generated slightly faster with the "N" option. To run the source file, you mast rename it to SAMPLE.CMD. Do this only if you first either move the file to another disk, or erase the existing SAMPLE.CMD file. END OF THE HELP FILE T. This will pick up operation where you left off and finish the file. If everything goes OK and you have a SAMPLE.BAK on the disk, you should see the following messages: Erasing SAMPLE.BAK Changing SAMPLE.SRC to SAMPLE.BAK Changing SAMPLE.TMP to SAMPLE.SRC This is just to let you know what is going on. With many programs there is a rush to check the directory after operation to see if everything went OK. Using DBSOURCE you will know what file operations have been done. The "F" option may be used with the "N" option to suppress the console output. Just enter: Filename.CMD or Drive:? SAMPLE.CMD FN This sends the output go only to the new file. The new SAMPLE.SRC file will be generated slightly faster with the "N" option. To run 10 ' DBSOURCE.BAS Version 1.02 (C) Copyright 1985 by Merlin R. Null 20 ' To read or create a source file from encoded dBASE II .CMD files 30 ' This program may not be sold seperately or as part of any collection" 40 ' of programs without the written permission of the author: 50 ' Merlin R. Null, P.O. Box 9422, N. Hollywood, CA 91609, (818) 762-1429 60 DEFINT A-Z 70 DIM TOKEN$(67) 80 WIDTH LPRINT 255 90 ON ERROR GOTO 1390 'Used mostly to detect incorrect filename 100 BL$=CHR$(7) 110 OPEN "I",#1,"CLS.DAT" 120 WHILE NOT EOF(1) 130 LINE INPUT #1, A$ 140 A=VAL(A$) 150 CLS$=CLS$+CHR$(A) 160 WEND 170 CLOSE #1 180 FOR I=1 TO 67 190 READ TOKEN$(I) 200 NEXT I 210 PRINT CLS$:PRINT 220 PRINT TAB(10)"DBSOURCE Version 1.02 - 3/1/85" 230 PRINT STRING$(4,10) 240 PRINT"Options: P Send output to Printer" 250 PRINT" F Send output to File" 260 PRINT" N No console output" 270 PRINT 280 PRINT"Examples: B:FOO.CMD PN Printer output only" 290 PRINT" FOO.CMD F Output to file and console"  300 PRINT" A: Displays directory of A:" 310 PRINT" ? Read the HELP file" 320 PRINT" Redisplays this screen" 330 PRINT:PRINT 340 PRINT 'return here after directory call 350 LINE INPUT"Filename.CMD or Drive:? ";NF$ 360 CONOFF=0:LINEPRINT=0:WRITESRC=0:OPTFLAG=0:NFLEN=0:FULLNAME$="" 370 IF NF$="" THEN 210 'Redisplay start screen 380 IF NF$="?" THEN OPEN "I",#1,"DBSOURCE.HLP" ELSE 510 390 PRINT CLS$ 400 FOR LINES=1 TO 20 410 IF EOF(1) THEN 460 ELSE LINE INPUT #1,HELP$ 420 PRINT HELP$ 430 NEXT LINES 440 PRINT 450 PRINT TAB(7)"" 460 PRINT TAB(12)"Press to return to DBSOURCE "; 470 FINISHED$=INPUT$(1) 480 IF FINISHED$<>CHR$(27) THEN 390 490 CLOSE #1 500 GOTO 210 510 FOR I=1 TO LEN(NF$) 'Convert lower to upper case & detect options 520 BYTE$=MID$(NF$,I,1) 530 IF ASC(BYTE$)>96 AND ASC(BYTE$)<123 THEN BYTE$=CHR$(ASC(BYTE$)-32) 540 FULLNAME$=FULLNAME$+BYTE$ 550 IF BYTE$=" " THEN OPTFLAG=-1 'Flag start of options 560 IF NOT OPTFLAG THEN 600 570 IF BYTE$="P" THEN LINEPRINT=-1 'Detect print option 580 IF BYTE$="F" THEN WRITESRC=-1 'Detect file option 590 IF BYTE$="N" THEN CONOFF=-1 'Detect console off 600 IF NFLEN THEN 620 610 IF BYTE$="." THEN NFLEN=I+3 'Find filename length 620 NEXT I 630 IF CONOFF AND NOT LINEPRINT AND NOT WRITESRC THEN PRINT CLS$; ELSE 680 640 PRINT STRING$(5,10) 650 PRINT"N option may not be selected alone, only as NF or PN - try again."; 660 PRINT BL$ 670 GOTO 340 680 IF NFLEN>3 THEN FULLNAME$=LEFT$(FULLNAME$,NFLEN) 'Remove extra charcters 690 IF MID$(FULLNAME$,2,1)=";" THEN MID$(FULLNAME$,2,1)=":" 700 IF LEN(FULLNAME$)=2 AND MID$(FULLNAME$,2,1)=":" THEN DIR$=LEFT$(FULLNAME$,1)+":*.*" ELSE 740 710 PRINT CLS$:PRINT"Directory of drive ";LEFT$(DIR$,2) 720 FILES DIR$ 730 GOTO 340 740 IF RIGHT$(FULLNAME$,3)<>"CMD" THEN PRINT CLS$;STRING$(5,10) ELSE 780 750 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34); 760 PRINT" is not a dBASE II command file - try again." 770 GOTO 340 780 FILENAME$=LEFT$(FULLNAME$,NFLEN-3) 'Remove extension 790 IF NOT WRITESRC THEN 1020 800 TMPNAME$=FILENAME$+"TMP" 810 SRCNAME$=FILENAME$+"SRC" 820 BAKNAME$=FILENAME$+"BAK" 830 OPEN "I",#1,SRCNAME$ 'See if .SRC exists 840 CLOSE #1 'Close, if found. Else error trap gets it 850 PRINT CLS$;STRING$(8,10) 860 PRINT TAB(20)"[]=========[]" 870 PRINT TAB(20)"[] WARNING []" 880 PRINT TAB(20)"[]=========[]" 890 PRINT 900 PRINT SRCNAME$;" already exists! A 'NO' here will cause the current" 910 PRINT SRCNAME$;" to be renamed to ";BAKNAME$ 920 PRINT:PRINT 930 PRINT"Do you wish to overwrite ";SRCNAME$;" (Yes/No/Quit)"; 940 INPUT OVERWRITE$ 950 IF LEFT$(OVERWRITE$,1)="Q" OR LEFT$(OVERWRITE$,1)="q" THEN 1310 960 IF LEFT$(OVERWRITE$,1)="Y" OR LEFT$(OVERWRITE$,1)="y" THEN 1020 970 IF LEFT$(OVERWRITE$,1)<>"N" AND LEFT$(OVERWRITE$,1)<>"n" THEN 850 980 RENAMESRC=-1 'Flag to rename old source file 990 OPEN "I",#1,BAKNAME$ 'See if .BAK exists 1000 CLOSE #1 'Close, if found. Else error trap gets it 1010 ERASEBAK=-1 'Flag to erase old backup 1020 OPEN "I",#2,FULLNAME$ 1030 IF WRITESRC THEN OPEN "O",#3,TMPNAME$ 1040 PRINT CLS$;TAB(20)"^S to pause - ^C to end" 1050 WHILE NOT EOF(2) 1060 LINE INPUT #2,TXT$ 1070 PRN$="" 1080 FOR BYTE=1 TO LEN(TXT$) 1090 IF ASC(MID$(TXT$,BYTE,1))<128 THEN PRN$=PRN$+MID$(TXT$,BYTE,1): GOTO 1150 1100 IF BYTE>1 THEN 1140 1110 IF ASC(MID$(TXT$,BYTE,1))>127 AND ASC(MID$(TXT$,BYTE,1))<195 THEN PRN$=PRN$+TOKEN$(ASC(MID$(TXT$,BYTE,1))-127) 1120 IF LEN(TXT$)=1 THEN 1150 1130 PRN$=PRN$+" ":GOTO 1150 1140 IF ASC(MID$(TXT$,BYTE,1))>127 THEN PRN$=PRN$+ CHR$(ASC(MID$(TXT$,BYTE,1))XOR 255) 1150 NEXT BYTE 1160 IF NOT CONOFF THEN PRINT PRN$ 1170 IF LINEPRINT THEN LPRINT PRN$ 1180 IF WRITESRC THEN PRINT #3, PRN$ 1190 QUIT$=INKEY$ 1200 IF QUIT$<>"" THEN GOSUB 1360 1210 WEND 1220 PRINT 1230 CLOSE 1240 IF NOT WRITESRC THEN 1310 1250 PRINT 1260 IF ERASEBAK THEN KILL BAKNAME$:PRINT"Erasing ";BAKNAME$ 1270 IF RENAMESRC THEN NAME SRCNAME$ AS BAKNAME$ ELSE 1290 1280 PRINT"Changing ";SRCNAME$;" to ";BAKNAME$ 1290 IF LEFT$(OVERWRITE$,1)="Y" OR LEFT$(OVERWRITE$,1)="y" THEN KILL SRCNAME$:PRINT"Erasing ";SRCNAME$ 1300 NAME TMPNAME$ AS SRCNAME$:PRINT"Changing ";TMPNAME$;" to ";SRCNAME$ 1310 PRINT 1320 INPUT"Are you finished";ANS$ 1330 IF LEFT$(ANS$,1)<>"Y" AND LEFT$(ANS$,1)<>"y" THEN 210 1340 END 1350 'The following quit and hold routine is for BASCOM only 1360 IF QUIT$=CHR$(3) THEN 1340 'If ^C then end 1370 IF QUIT$=CHR$(19) THEN WHILE INKEY$="":WEND 'If ^S then hold 1380 RETURN 1390 IF ERR=53 AND ERL=830 THEN CLOSE #1:RESUME 1020 1400 IF ERR=53 AND ERL=990 THEN CLOSE #1:RESUME 1020 1410 IF ERR=53 AND ERL=110 THEN CLOSE #1 ELSE 1650 1420 PRINT STRING$(18,10) 1430 PRINT BL$;"CLS.DAT, the clear screen data file, not found." 1440 PRINT"Please enter your clear screen sequence" 1450 PRINT"one byte at a time in Decimal numbers. End your" 1460 PRINT"entries with a to generate CLS.DAT" 1470 PRINT 1480 FOR I=1 TO 9 1490 PRINT"Clear Screen character";I; 1500 LINE INPUT C$ 1510 IF C$="" AND I>1 THEN 1600 1520 IF C$="" THEN 1490 1530 IF LEN(C$)>3 THEN 1490 1540 FOR J=1 TO LEN(C$) 1550 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 1490 1560 NEXT J 1570 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 1580 CLR$=CLR$+C$ 1590 NEXT I 1600 PRINT"Writing CLS.DAT"; 1610 OPEN "O",#1,"CLS.DAT" 1620 PRINT #1,CLR$ 1630 CLOSE #1 1640 RESUME 110 1650 IF ERR=64 THEN CLOSE ELSE 1690 1660 PRINT CLS$;STRING$(5,10) 1670 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" is a bad file name - try again." 1680 RESUME 340 1690 IF ERR=53 AND ERL=1020 THEN CLOSE #2 ELSE 1730 1700 PRINT CLS$;STRING$(5,10) 1710 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" not found - try again." 1720 RESUME 340 1730 IF ERR=53 AND ERL=380 THEN CLOSE #1 ELSE 1770 1740 PRINT CLS$;STRING$(5,10) 1750 PRINT BL$;"The Help file, DBSOURCE.HLP, is missing from this disk!";BL$ 1760 RESUME 340 1770 ON ERROR GOTO 0 1780 DATA "IF","ELSE","ENDIF","DO","ENDDO","CASE","OTHERWISE","ENDCASE" 1790 DATA "DO WHILE","DO CASE","STORE","?","RELEASE","RETURN","SELECT","@" 1800 DATA "ACCEPT","APPEND","BROWSE","CALL","CANCEL","CHANGE","CLEAR","COPY" 1810 DATA "COUNT","CREATE","DELETE","DISPLAY","CONTINUE","EDIT","EJECT","ERASE" 1820 DATA "GOTO","FIND","HELP","INDEX","INPUT","INSERT","JOIN","LIST","LOAD" 1830 DATA "LOCATE","LOOP","MODIFY","PACK","POKE","QUIT","READ","RECALL" 1840 DATA "REINDEX","REMARK","RENAME","REPLACE","REPORT","RESET","RESTORE" 1850 DATA "SAVE","SET","SKIP","SORT","SUM","TEXT","TOTAL","UNLOCK","UPDATE" 1860 DATA "USE","WAIT" EPORT","RESET","RESTORE" 1850 DATA "SAVE","SET","SKIP","SOR PRINT CLS$;STRING$(5,10) 1710 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" not found - try again." 1720 RESUME 340 1730 IF :+"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#w+x,!NKx0:<!~0Ͳ& !+͓*!;A!cA!;|/g}/o|ʸ!ͤ!"!,P("*+#+͓*z!{ / ;&!]V$! V$!VV$! z$!T+!#,!T+!#,|g}o|q ! 6@;&!iV$! z$! >;&!]V$!V$!VV$! z$;&!z$!C"L!!#͈"#!T+!,#!T+!,|g}o|!+! G, !+! B, ͈!G, k0p&|go~&{'|g}o|; !{<͡&p&|go~&{'|g}o|i !{<͡&p&|go~&{' |g}o|ʕ !{<Ø K;&! +z$;&!V$!z$;&!z$;&!z$;&!z$;&!z$!;&!mV$*M$!"!&"&!#,*| )?go|g}o|&!G, !&ͪ,|> ) !&ͪ,")!î &*+!͆+ʹ,|j )go&*+!͆+ʹ,|ڈ )?go|g}o|ʪ ;&!V$!Oz$ *+#"+*+*)z| }|P *| ) ! +-#+! +#+-͓*-!&#+-͓**#"*|) ;&!=V$!;A!cA!%!-z$!{<͡&hp&|`!{ to generate CLS.DAT0one byte at a time in Decimal numbers. End your'Please enter your clear screen sequence/CLS.DAT, the clear screen data file, not found.FAre you finishedY to `Changing lErasing x^S to pause - ^C to endOnyYqQ (Yes/No/Quit)Do you wish to overwrite  to be renamed to 5 already exists! A 'NO' here will cause the current &[] WARNING [] 6[]=========[]FBAKLSRCRTMP,X is not a dBASE II command file - try again.CMDDirectory of drive :*.*:;AN option may not be selected alone, only as NF or PN - try again..NFP % Press to return to DBSOURCE II -2 bDBSOURCE.HLPq?uFilename.CMD or Drive:?  Redisplays this screen ? Read the HELP file A: Displays directory of A:& FOO.CMD F Output to file and console*Examples: B:FOO.CMD PN Printer output onlyC N No console output\ F Send output to File"wOptions: P Send output to Printer,A variant of DBSOURCE for different encoding'DBSOURCE II Version 1.02 - 3/1/85CLS.DATIH\|TQ QQQ(Q2Q<QFQPWZ \dhnzx #5>GP"Y,b6k@tJ}T^hr|U&=Fds&0:DUl"N3XDbq]v /|  *4,>;HJR\\bfwpz  27d$. 8 B L+ VF d ` t j t ~b y     d       /  q ( < F P Z n x; i K          T# . A P " , 6 @J"^4h@rF|cxrCXmuuuu&0:IDNXbalv[[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 X(D# DDM*"-*r##"-B>2O2R*^#V"P##^#V"S 2U!ʣ!!""V!."+6#6P>22>21>20OR_2=E4>:=D1>ͷE#>:">2~= 2}=D:x=@2x=!=ͫEy=7E 7`"ͷE"((!9"a !ae!<!!R"7!O"9a|ʖ> 6#s#r#=‹>2>2>22!"!$\">&2q06#}¿|¿͜0 STOW*.. . ......../*|:R*|RXa  s#ra  {Ͱw#6"**>2ͱ!9N#Fa~#~Ҋ~+ʐ~#~ڊ+^#V###h###h|ʜ~#fo!͜0 Internal Error - No Line Number a~#9͜0 at lineXW> < <0#G}_|W!/G~#fo>͜0 at address|0}0W> #G> #G~#*pG~#fo:Q!9"!x*~"!*W!~<=#~#÷#â0Syntax 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 Errot!>ʞw>.|t}AEE`i"!"!U "1  ,i   3J1*H*H*H*H+ &3͘2*H+ &331*H*H ,Zi ~#: x.+ ͅ!>i ..͖*W>L y i "Ž G{,xŽ PXW> !#Oz"y O{,y;!W> { ,> ;!W>ғ " !W>! ,! !W>! !*( 4:;5!{,5!6!#.O 5!+~ )!#6!#ɷw#!:>#KN#"J!!9"E!"G!y2I!*|n!*!X""A~#*$ͶG:;Ž!~X"" !3ã!&3"$!!J1*H*H*H*H!͘2*H!31*H*H*$ͶG"~#"$,v! X":;X"v!~X"!"~,""#"~2"2"# !"X""8"#"$x"M" M"+~ B"y.!͜0?Redo from Start *E!/!""*J!:I!Ou!*G!+~+ʳ"ʥ"ʥ" +w §"þ"++~#fo͖*"G!!I!5*E!L~2"#~#^#V͎0++.@E:#t*|#!#..͖**0L0? L? ))))صoL~E"#=MM~E"#M1M0:P{M>POx:i0PҕM/< P0P]PgUN|!fM5NN#4 X.|NNG~_#~W#~OANhcGyNJTeoxM2it̓$g%t͎$g%t͙$g%tY$g%t̓$É%t͎$É%t͙$É%t$É%t̓$7%t͎$7%t͙$7%t$7%Hä$Hä$"Hí$H~# ¥$x20:&^%.%$4.<͕%~$͏F#$̈́%4~$ ďF#$>20:&^%F#~#fox.%̕%%%%~#͏F%%%..%>"ÏFG:*x.%7G*++~ ÏF.%>,͏FW*+#^ ̿%ʹ%+=ڹ%:.=ʹ%7Gz{%{_%t| &}A%E`i"++"+!&"!!&"2&g&ͅ<̀D}o|g5&> ͏F+|*&7G!."+!"2&g&!1"+!"2&g&!)~6#wa n&a ^#Vͩ'|͏!&ÞM:^#V2^#V#"!":*a n~!&ͮ0N&ͅi& +V'*+{<'7G{,'=> ͏F'|}*+,'<'V'}'|}'|^'!*+#n&'>!>!>!>!>!>^#V#!HÊ'Õ' G-)ʥ'͏O^#V#t't'tz'|'|͟OO^#V÷'^#V#(O2;tt((t͋G_(VG|tV(t_(<(v(:;ʬ(!XKLÃ(:;ʯ(!͞M:H2H:H((:H£(å(|/g}/oL:H(!H(-)(!ͅ:HgoW*H|7g(:H(+>)|/g}/o )!)G|))o& Gȯ|g}o!)7)>D)~+~?~O)+#\)+ \)tM*31H>æ)tV*3l*J1H>æ)tM*͘2H>GtV*~,")#"~))# )ͅ")#l*x")yG+~ ) )y.͖*a^#V#{*!"">2*N#F#*~=H*}|H*~*3*V*&3l*:**ͶG~=ͅͶG~,z*#"ɧ**"+V+^"ͅtͫ.*~##++y/>G+V+^+*+r+s/t͖*~.ɠT~"*"***|} +<+{** +~#^#V`i#N#F G**.ti.D+D+..~#~#foGt|BK͎+PYt|BK + o_b+tzzʖ+ Ҝ+_Ң+o}`i..DMt +~#~#fon&.tz+}i.~+s#+ͅt|!9>.>%,>%,>%,>%,>%,>\,!+>I,>I,>I,>I,>I,>\,X,~#fo##GNʈ,yʈ,#~#fo~#fo‘,#ʇ, w, yʑ,y<.ڛ,)ʛ,)..~.o&~#^#V++.o&t~<i.~#~#foG6+B:3J1..%+W#- -!-W----- -#-&-)-,-V/-_2-U_!,4E-5*-"-~#N#F#څ-_- GH-yxj- H-+++6@#yw#xw+++6###!,~6ږ-ͫ-E--*-#~#~E-ͅ!*-"-~#^#V#--Gø-|-ø-++~_w#~Ww#ø-ͫ-*-DM~#^#V#O..-+z,/+{,/##{z~#q#p_-yD.xD.DM-~#D.-YP+++"-6@###{_zW+r+sɷʞ.*-||.ͅ5-^#V+"-w#s#r+++r+s##!..*T0{z*V0?.}|~# .yGi.xGGi.x#N#F& .ͫ.y//*T0*V0G(//"/y//### /N/͜0 during G.C. N/͜0 ͜0 Internal Error - String Space Corrup#N#F*-yxھ/*-yxҾ/++`i+V+^GC/##6+6+~6  >@++*-"-s#r+-*-#~_#~W/ͅr+s##6"-###!-~#fo0G0<*-"-*-}o|g6@#s#r#6"-*V0*T0"-}w>#w##G;0++6+6-5-!4!9"^#V#!~w!9"|}!2wɧ~#G#=0͢0~#G#â0G~#ʾ0#°0++00:0#GhNIGHTANDOMIZņTOvPÝPACETRINGTRWA\:&1*H}/o|/g#"H|W1O&1!H~wɯ2H\:A1LW1*HW1O\:A1L>>2~#\10!Hz1>!HH21# €1!HXK!Ha2H>>ڣ1>|}+!3`J)2P+6!H>͡L2H!3N!3`J!H`J~_#~W#~OPQáM!9ÞMQO1ɇ<o&W1O*H*H,2"H`i"H!H^#V#N#F#!3ßN>Qx{3Q!H6Pwg>͛QWQe2:0Gw#e2`2z2!Ha2H\:H\:X2*H||<\:*H2t2!9n2͊1:1÷21:H2H:H9;;2:H222|/g}/o2!9;:H3;2"H>201aj2 L}.1T1$;>20`h2~&w:-N3+N3+B:54.3e`3EŠ3B:lx3Lx3qx3Qʉ3:0ʣ3>ã3~%3#3!3dʣ3Dº34B:m:B:ڨ4º3_{_4"4¾31\:!23\: º34N3B:!2!2ú34B:ú331J1\:521=\:11DG£5"H`i"H#~+6-50OxG6#~5`xE6y 5>20 6|565"H`i"H2#W/8:0N6X6\6\6860328+~0k6.32ʝ6\:>"w#6+66-/</ Ґ6:#p#w#6!0#z$778z8͍9{̫1=8-56p#6!0#:0~ 6*6+6B:-+_:{07#B:7++w7676%7@79͐1N74+6%177X2/8s7_x8͹88IJ886_y 4~7"47{_x78͹8í7͢8y8O͢8GO8¸7*0=8P6A1ѯ7X27/8y 4OzWO"477/< 8/>w19>w1p#=9!H2Q91>;222:?8)2/{_#zW#yO++e91#2p#W9>Ó98:>8N#F#*H/}o|gҦ9"Hp#=“98w1_cƤ~@zZrN vH Tʚ;@B''d #~: B: B: B:0?<=:0i:7-++B::Oʈ:Hʈ:+͔:ڝ:2H#:ã:ͅM!͵:ڳ:}0?)))صoõ:M!::}:0? :? ))))صo:a{ 2\::H:H1:02020ͅͅ"~#ew^#VT]##~0#~#7#V#~@ez͸/O+#s#r~#fo~Ze>!mWKz!mK~e#!.g*m&ʺeʥe)ʺe#úe))ʺe#ʺe#ʺe#)*m&)g~#ft}AEE!' ~6< 6<#~+<`i> <>O #~goPY!' ůwF>:W A2E=,E=j<ѯE<2E!% ^#Vr+st}sA!";}Aʿ< PYµ=!' ~AfBt}AE!&<4N#V p2=zw w+s#r#6#6DM:U]=!" s#r#6â=! {zVʚ=?;w<˜=<2E!! {w:E¯=>!! ~?;!) =><=E~#=*~TD( ~=+~#5O ~+~ >>=7>*T]% N#F+q#p###6 '>F>:V A>?>>w+w!(=7?*' 6#67~/E#^#fk_ڏ>N#~:ʓ>++@/Ey@/E/E; #>~.½>>7é>#ª>2;.z /E/E> >>> >>tr>?;;<&E!;;> Gr>:;!;5E;< E;*;~E#N#F++. O}?I}?RE*;|}?!";}_A?fB{A#Ezr> ͢B"#;> G66F>~?<2E?) p# @sA _tr>?;;<&Et!;6# AÄ@tr>2;!;A!;A?;;&EO!@;  ~#^Fy@~ @>.^F ½@:. W:/@> ^F^F[F;­@~*6?# AO!!4$A#4$A#4y"9A2E><";>2 !D" :<2*";!A"t";D?*|ʅA##n̓!)*C)#+C))9C 8C#= C}_}la)5EPC#x5E"B! "B!) "B!}o|gECbk:BCEҔCCDM*B*BD"BPYC}o|g*B#"BbCCDM*B*BD"BPYêC2E*B! ~#foEs#rD:ED!D!& 9=~# xDDM͂D)EwD! w!( V6 ODzẁD)EwD! ~!rD! ^#V! s#rDMoDiDE}AEʢDE`i"!D" DW>ͅ!>t|,D-: E* !" {i.f$%D!D* Dz|}!">6>4>?>=>:>7>5>2>3>@>C>ͅo&͏!"!#"$RE:"cE͜0?cEp͉F×E:ZF>\2ZF}EbE^F+ʑE~^FåE+^F¥E^F[F!#2ZFèE͉FOiE:ZFʾE>\^F2ZFy(FaF7 OF (F EcE(FaFcEFcE^F> ^F>ÊE F>#ÑE#F6[F!#sFåE ڥEx<>3Fyq#^F ¥E> ^F͉F@F ʥEèE:"[Fw0W#G>^^F@^F[F~ ‚F> ^F^F#sF*+ ʦF#~+<ʥF=7G GG ڷF4+~# ͏F~=G*+!."+͏F"+> ͏F> ÏF:1=RG> > *F!HrG!HmGHrGHrGw#w#w#w#SEG>HÞG>HG ~#=¢G!G#~ ʵG ʵGɅo$ɧGw#G{zz(z(z(U#zEz(U+zEz(U)zEz߃pHE{,qE{$)$)$)UE' >928< )}28<(69%(s) :8<o&z(n&z?Hz,z>89(}9$)Њ(,ɞɅÅ(SDES(6#HMHIWQO#I!_Q!Hy#I+IWQ?_QJ'QLN͡LK2H:HLWQx/F+N+='J!H;J!H>q#p#=>J!H`J" H2J!J J* HMQ:HQ!HN#FN͊LqʝJGKLx †J}JL!HͩLÕJj0 TeB׳]h!I.k J'QLJJL!H`J&!Hq#~++w+qJWQDNn"~`35zr1{r1h!IMWQyO2H^KMWQ:HIpK/mMEM&PQ{M>QiM!H6Pg>͛Q|O!>?Mak'QMOMWQ!H~+>wWQ͑OáMHQWQ:H0QҴM/OäM͑ONHQOWQȯGN"Hy2HFoOO!D*H:HOSNH4PkN{Ng.*H:HOzTN{Ng.*H:HaNx<=N{_zWxG)yOHGP͑OâNHQ3QWQNy+F+F+Fw`h|NgyN:HO|g}oxG-|N}N0PElaON!H~GxOƀ QwPw+ɷPQ>Qx{3Q!H6Pwg5Oz4O >͛Q|Q{>2H0P/))P =O!H~7w?##wy7O*H*H"H"HajSXwPQJS\E!HQ/Qs#r#q#pPQHQ3QPQ"H`i"H*H*HDM^#V#N#F#xy_Q:H:H7|/G}/O!>ÂQ ҁQ7>{_zW}o|g=xQ|g}oڪQCZQÝQ o-yOzW{_xGíQH*HDM^#V#N#F#xy_Q:H:H7|/G}/O!>ÂQ ҁQ7HQWQ>OäM͑ONHQOWQȯGN"Hy2HFoOO!D*H:HOSNH4PkN{Ng.*H:HOzTN{Ng.*H:HaNx<=N{_zWxG)yOHGP͑OâNHQ3QWQNy+F+F+Fw`h|NgyN:HO|g}oxG-|N}N0PElaON!H~GxOƀ QwPw+ɷPQ>Qx{3Q!H6Pwg5Oz4O >͛Q|Q{>2H0P/))P =O!H~7w?##wy7O*H*H"H"HajSXwPQJS\E!HQ/ Redisplays this screen" 350 PRINT:PRINT 360 PRINT 'return here after directory call 370 LINE INPUT"Filename.CMD or Drive:? ";NF$ 380 CONOFF=0:LINEPRINT=0:WRITESRC=0:OPTFLAG=0:NFLEN=0:FULLNAME$="" 390 IF NF$="" THEN 210 'Redisplay start screen 400 IF NF$="?" THEN OPEN "I",#1,"DBSOURCE.HLP" ELSE 530 410 PRINT CLS$ 420 FOR LINES=1 TO 20 430 IF EOF(1) THEN 480 ELSE LINE INPUT #1,HELP$ 440 PRINT HELP$ 450 NEXT LINES 460 PRINT 470 PRINT TAB(7)"" 480 PRINT TAB(11)"Press to return to DBSOURCE II "; 490 FINISHED$=INPUT$(1) 500 IF FINISHED$<>CHR$(27) THEN 410 510 CLOSE #1 520 GOTO 210 530 FOR I=1 TO LEN(NF$) 'Convert lower to upper case & detect options 540 BYTE$=MID$(NF$,I,1) 550 IF ASC(BYTE$)>96 AND ASC(BYTE$)<123 THEN BYTE$=CHR$(ASC(BYTE$)-32) 560 FULLNAME$=FULLNAME$+BYTE$ 570 IF BYTE$=" " THEN OPTFLAG=-1 'Flag start of options 580 IF NOT OPTFLAG THEN 620 590 IF BYTE$="P" THEN LINEPRINT=-1 'Detect print option 600 IF BYTE$="F" THEN WRITESRC=-1 'Detect file option 610 IF BYTE$="N" THEN CONOFF=-1 'Detect console off 620 IF NFLEN THEN 640 630 IF BYTE$="." THEN NFLEN=I+3 'Find filename length 640 NEXT I 650 IF CONOFF AND NOT LINEPRINT AND NOT WRITESRC THEN PRINT CLS$; ELSE 700 660 PRINT STRING$(5,10) 670 PRINT"N option may not be selected alone, only as NF or PN - try again."; 680 PRINT BL$ 690 GOTO 360 700 IF NFLEN>3 THEN FULLNAME$=LEFT$(FULLNAME$,NFLEN) 'Remove extra charcters 710 IF MID$(FULLNAME$,2,1)=";" THEN MID$(FULLNAME$,2,1)=":" 720 IF LEN(FULLNAME$)=2 AND MID$(FULLNAME$,2,1)=":" THEN DIR$=LEFT$(FULLNAME$,1)+":*.*" ELSE 760 730 PRINT CLS$:PRINT"Directory of drive ";LEFT$(DIR$,2) 740 FILES DIR$ 750 GOTO 360 760 IF RIGHT$(FULLNAME$,3)<>"CMD" THEN PRINT CLS$;STRING$(5,10) ELSE 800 770 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34); 780 PRINT" is not a dBASE II command file - try again." 790 GOTO 360 800 FILENAME$=LEFT$(FULLNAME$,NFLEN-3) 'Remove extension 810 IF NOT WRITESRC THEN 1040 820 TMPNAME$=FILENAME$+"TMP" 830 SRCNAME$=FILENAME$+"SRC" 840 BAKNAME$=FILENAME$+"BAK" 850 OPEN "I",#1,SRCNAME$ 'See if .SRC exists 860 CLOSE #1 'Close, if found. Else error trap gets it 870 PRINT CLS$;STRING$(8,10) 880 PRINT TAB(20)"[]=========[]" 890 PRINT TAB(20)"[] WARNING []" 900 PRINT TAB(20)"[]=========[]" 910 PRINT 920 PRINT SRCNAME$;" already exists! A 'NO' here will cause the current " 930 PRINT SRCNAME$;" to be renamed to ";BAKNAME$ 940 PRINT:PRINT 950 PRINT"Do you wish to overwrite ";SRCNAME$;" (Yes/No/Quit)"; 960 INPUT OVERWRITE$ 970 IF LEFT$(OVERWRITE$,1)="Q" OR LEFT$(OVERWRITE$,1)="q" THEN 1330 980 IF LEFT$(OVERWRITE$,1)="Y" OR LEFT$(OVERWRITE$,1)="y" THEN 1040 990 IF LEFT$(OVERWRITE$,1)<>"N" AND LEFT$(OVERWRITE$,1)<>"n" THEN 870 1000 RENAMESRC=-1 'Flag to rename old source file 1010 OPEN "I",#1,BAKNAME$ 'See if .BAK exists 1020 CLOSE #1 'Close, if found. Else error trap gets it 1030 ERASEBAK=-1 'Flag to erase old backup 1040 OPEN "I",#2,FULLNAME$ 1050 IF WRITESRC THEN OPEN "O",#3,TMPNAME$ 1060 PRINT CLS$;TAB(20)"^S to pause - ^C to end" 1070 WHILE NOT EOF(2) 1080 LINE INPUT #2,TXT$ 1090 PRN$="" 1100 FOR BYTE=1 TO LEN(TXT$) 1110 IF ASC(MID$(TXT$,BYTE,1))<128 THEN PRN$=PRN$+MID$(TXT$,BYTE,1): GOTO 1170 1120 IF BYTE>1 THEN 1160 1130 IF ASC(MID$(TXT$,BYTE,1))>127 AND ASC(MID$(TXT$,BYTE,1))<195 THEN PRN$=PRN$+TOKEN$(ASC(MID$(TXT$,BYTE,1))-127) 1140 IF LEN(TXT$)=1 THEN 1170 1150 PRN$=PRN$+" ":GOTO 1170 1160 IF ASC(MID$(TXT$,BYTE,1))>127 THEN PRN$=PRN$+ CHR$(ASC(MID$(TXT$,BYTE,1))XOR 255) 1170 NEXT BYTE 1180 IF NOT CONOFF THEN PRINT PRN$ 1190 IF LINEPRINT THEN LPRINT PRN$ 1200 IF WRITESRC THEN PRINT #3, PRN$ 1210 QUIT$=INKEY$ 1220 IF QUIT$<>"" THEN GOSUB 1380 1230 WEND 1240 PRINT 1250 CLOSE 1260 IF NOT WRITESRC THEN 1330 1270 PRINT 1280 IF ERASEBAK THEN KILL BAKNAME$:PRINT"Erasing ";BAKNAME$ 1290 IF RENAMESRC THEN NAME SRCNAME$ AS BAKNAME$ ELSE 1310 1300 PRINT"Changing ";SRCNAME$;" to ";BAKNAME$ 1310 IF LEFT$(OVERWRITE$,1)="Y" OR LEFT$(OVERWRITE$,1)="y" THEN KILL SRCNAME$:PRINT"Erasing ";SRCNAME$ 1320 NAME TMPNAME$ AS SRCNAME$:PRINT"Changing ";TMPNAME$;" to ";SRCNAME$ 1330 PRINT 1340 INPUT"Are you finished";ANS$ 1350 IF LEFT$(ANS$,1)<>"Y" AND LEFT$(ANS$,1)<>"y" THEN 210 1360 END 1370 'The following quit and hold routine is for BASCOM only 1380 IF QUIT$=CHR$(3) THEN 1360 'If ^C then end 1390 IF QUIT$=CHR$(19) THEN WHILE INKEY$="":WEND 'If ^S then hold 1400 RETURN 1410 IF ERR=53 AND ERL=850 THEN CLOSE #1:RESUME 1040 1420 IF ERR=53 AND ERL=1010 THEN CLOSE #1:RESUME 1040 1430 IF ERR=53 AND ERL=110 THEN CLOSE #1 ELSE 1670 1440 PRINT STRING$(18,10) 1450 PRINT BL$;"CLS.DAT, the clear screen data file, not found." 1460 PRINT"Please enter your clear screen sequence" 1470 PRINT"one byte at a time in Decimal numbers. End your" 1480 PRINT"entries with a to generate CLS.DAT" 1490 PRINT 1500 FOR I=1 TO 9 1510 PRINT"Clear Screen character";I; 1520 LINE INPUT C$ 1530 IF C$="" AND I>1 THEN 1620 1540 IF C$="" THEN 1510 1550 IF LEN(C$)>3 THEN 1510 1560 FOR J=1 TO LEN(C$) 1570 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 1510 1580 NEXT J 1590 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 1600 CLR$=CLR$+C$ 1610 NEXT I 1620 PRINT"Writing CLS.DAT"; 1630 OPEN "O",#1,"CLS.DAT" 1640 PRINT #1,CLR$ 1650 CLOSE #1 1660 RESUME 110 1670 IF ERR=64 THEN CLOSE ELSE 1710 1680 PRINT CLS$;STRING$(5,10) 1690 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" is a bad file name - try again." 1700 RESUME 360 1710 IF ERR=53 AND ERL=1040 THEN CLOSE #2 ELSE 1750 1720 PRINT CLS$;STRING$(5,10) 1730 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" not found - try again." 1740 RESUME 360 1750 IF ERR=53 AND ERL=400 THEN CLOSE #1 ELSE 1790 1760 PRINT CLS$;STRING$(5,10) 1770 PRINT BL$;"The Help file, DBSOURCE.HLP, is missing from this disk!";BL$ 1780 RESUME 360 1790 ON ERROR GOTO 0 1800 'For this variant of DBSOURCE, INDEX and INPUT have been exchanged, 1810 'so have USE and UPDATE. HELP was removed and placed at the end of 1820 'the table. 1830 DATA "IF","ELSE","ENDIF","DO","ENDDO","CASE","OTHERWISE","ENDCASE" 1840 DATA "DO WHILE","DO CASE","STORE","?","RELEASE","RETURN","SELECT","@" 1850 DATA "ACCEPT","APPEND","BROWSE","CALL","CANCEL","CHANGE","CLEAR","COPY" 1860 DATA "COUNT","CREATE","DELETE","DISPLAY","CONTINUE","EDIT","EJECT","ERASE" 1870 DATA "GOTO","FIND",INPUT","INDEX","INSERT","JOIN","LIST","LOAD" 1880 DATA "LOCATE","LOOP","MODIFY","PACK","POKE","QUIT","READ","RECALL" 1890 DATA "REINDEX","REMARK","RENAME","REPLACE","REPORT","RESET","RESTORE" 1900 DATA "SAVE","SET","SKIP","SORT","SUM","TEXT","TOTAL","UNLOCK","USE" 1910 DATA "UPDATE","WAIT","HELP" "RESET","RESTORE" 1900 DATA "SAVE","SET","SKIP","SORT","SUM","TEXT","TOT PRINT CLS$;STRING$(5,10) 1770 PRINT BL$;"The Help file, DBSOURCE.HLP, is missing from this disk!";BL$ 1780 RESUME 360 1790 ON ERROR GOTO 0 1800 'For this variant of DBSOURCE, INDEX and INPUT have been exchanged, 1810 'so have USE and UPDATE. HELP was removed and placed at the end of 1820 'the table. 1830 DATA "IF","ELSE","ENDIF","DO","ENDDO","CASE","OTHERWISE","ENDCASE" 1840 DATA "DO WHILE","DO CASE","STORE","?","RELEASE","RETURN","SELECT","@" 1850 DATA "ACCEPT","APPEND","BROWSE","CALL","CANCEL","CHANGE","CLEAR","COPY" 1860 DATA "COUNT","CREATE","DELETE","DISPLAY","CONTINUE","EDIT","EJECT","ERASE" 1870 DATA "GOTO","FIND",INPUT","INDEX","INSERT","JOIN","LIST","LOAD" 1880 DATA "LOCATE","LOOP","MODIFY","PACK","POKE","QUIT","READ","RECALL" 1890 DATA "REINDEX","REMARK","RENAME","REPLACE","REPORT","RESET","RESTORE" 1900 DATA "SAVE","SET","SKIP","SORT","SUM","TEXT","TOT+"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#w+x,+r+s=,w>#w+Á*~7^#VE,E,!~ѧ7x1P*x1~7!~#fo~ʁ,7,#~+~w}D#wx#1]*KÄ,!9*?!3"$$#̈́.!P8!3^e2! I!5I!C|/g}/o|`!͌'!a*!a͝4"0"d*d3f2fe2"!MD!Ê*i/ ́1*i)g1*i#"i*i|ښ)l#.!fb,#.! b,#.! .!b,#.! ͣ3b,#.!b,#.! b,#.!~b,#.!Mb,#.!,b,#.!b,#.!b,#.! ͣ3b,#.! b,!ͷ*!k*!"n"p"rt! e2k! 4k!4q! I!5It#.!fb,!ç!C|!͌'!w*#.!wb,*z#"z*z|ڷ)ڃ#.! b,#.!.!b,#.! .!q>,!͑L|e2!3!|4t!MDÝ!k|4"!k*i!X3e2!͆4|:)?go!͆4|O)go|g}o|q!͆43e2t!2te2!m4!"r*r|/g}/o|°!i4!"p*n|!e4*i###"n*i#"i*i*z|}|*n|)t*n&3te2t!X3!a4,!]t!ͯ2!t|4|got!X3!]3|g}o|i#.!fb,lÓt!W2e2#.!A>,!tb,!MHt!;3!;4#.!f>,! ͣ3b,#.!^>,!t>,!b,*n+++t&3e2!2e2!2e2!2e2! I!5I!MD#.!f>,! ͣ3>,!^b,#.!.!b,#.!.!b,#.!.!b,#.! b,#.! b,#.!>,!>,!b,#.!>,!b,#.! b,#.! b,#.!{>,!>,!j>,! ͷ*4)!p*!&3!f3!&3!b3|g}o|‘!&3!^3!&3!Z3|g}o|y!&3!i3!&3!V3|g}o|/!"! I!5I!MD!"! It!5I!R I!5I*p|#.! b,#.!;b,#.!fb,#.! b,#.!b,#.! b,!"z!C|/g}/o|ʷ*z#"z!͌'!*!|4|ʛ!;3!a4S !|4+&3e2V  !͌'!*!"*z#"z!|4"! *!X3͆4"*|go*|go|g}o| *!X32e2 !|4"*#"**z| }|~ + !e2!""!|4"*"! *!X3͆4"*|H )go*|Y )?go|g}o|ʀ *3*ͯ2*| *|go*|go|g}o|ʻ *#" *"**}o|g| ) *"*#"**z| }|( *| !e2 4 *#!X3!41 !"x*#!X3!3"!X3!3*|g}o|›*#!X3!4 !e2x! e2!"*#!X3!4 !32e2 !"è *#!X3!4 !32e2 1 *#!X3!4( !". !"è *#!X3!4] !32e2` i !"è ! *#*)^#V"X3*/ 4 *32e2*"*"!C" *#!X3*/ !&34 *32e2!"*"!C"*#"*|, )o *|go*|go|g}o*|go|g}o|x*|go*|/g}/o|g}o|ʘ !"*|ڥ )**#"*"*`*!X3͆4"*| )W**}o|go*|go|g}o"*|go|g}o*|g}o|\*!X3͆4}o|g32e2*#"**z|t}| *p|/g}/o|ʏ#.!b,!ͻ-!b,p'e2! 4*8!MD#.! b,*|!H#.!>,!b,*|!F#.!>,!>,!>,!b,!f3!b3|g}o|C!HFU#.!>,!b,!F#.!>,!>,!>,!b,#.! b,!ͷ*4)!p*!&3!f3!&3!b3|g}o|#!MD#.!^b,#.!m>,!^b,#.!-b,#.!b,#.!b,#.! b,#.!>,*z5,!>,!t>,!xb,#.! b,#.!t>,!>,!tb,#.! b,!H!MD#.!^b,#.!-b,#.!^b,#.!>,*z5,!>,!t>,!xb,#.! b,#.!t>,!>,!tb,!H#.! b,#.! b,!3!4!MD#.!^>,!b,!3!4p'! 4=8B.|goP.M/|g}o|I!MDLÍ#.!f>,! ͣ3b,#.!"3>,!t>,!"3>,!>,!^b,s.B.|goP.M/|g}o|ʻ!MDs.B.|goP.M/|g}o|!MDs.B.|goP.M/|g}o|!MD#.! ͣ3b,#.!^>,!b,#.!`b,#.!-b,#.!b,#.! b,!Æ#.!>,*i5,! ͷ*!*! 3*i|ړ)?go|g}o|™! 4`!|4|ھ)`!|4"!.*!X3͆4|)go*!X3͆4|)?go|g}o|*#.!^>,!b,`*#"**z|B}|*i|S)s! 32! 32e2!2e2*i#"i*i|ږ)`#.!>,!R I!5I!ͻ-!b,!MDs.B.|goP.M/|g}o|#.!f>,! ͣ3>, ##.!^>,!>,!^b,s.B.|8!MD;|#.!f>,! ͣ3b,#.!^>,!"3>,!t>,!"3>,!ab,s.͒. "IF",2,"ELSE",4,"ENDIF",5,"DO",2,"ENDDO",5,"CASE",4,"OTHERWISE",9 "ENDCASE",7,"DO WHILE",8,"DO CASE",7,"STORE",5,"?",1,"RELEASE",7Z_ "RETURN",6,"SELECT",6,"@",1,"ACCEPT",6,"APPEND",6,"BROWSE",6,"CALL",4Þ "CANCEL",6,"CHANGE",6,"CLEAR",5,"COPY",4,"COUNT",5,"CREATE",6 "DELETE",6,"DISPLAY",7,"CONTINUE",8,"EDIT",4,"EJECT",5,"ERASE",5,1 "GO",2,"FIND",4,"HELP",4,"INDEX",5,"INPUT",5,"INSERT",6,"JOIN",4uz "LIST",4,"LOAD",4,"LOCATE",6,"LOOP",4,"MODIFY",6,"PACK",4,"POKE",4ú "QUIT",4,"READ",4,"RECALL",6,"REINDEX",7,"REMARK",6,"RENAME",6 "REPLACE",7,"REPORT",6,"RESET",5,"RESTORE",7,"SAVE",4,"SET",3GL "SKIP",4,"SORT",4,"SUM",3,"TEXT",4,"TOTAL",5,"UNLOCK",6,"UPDATE",6^# "USE",3,"WAIT",4# d is a bad file name - try again./The Help file, ENCODE.HLP, is not on this disk!Writing CLS.DATWhole decimal numbers only.Clear Screen character+entries with a to generate CLS.DAT00one byte at a time in Decimal numbers. End your'cPlease enter your clear screen sequence/CLS.DAT, the clear screen data file, not found. not found - try again.<****ABORTING**** ^C entered from keyboard. No files changedThe error was in lineD0****ABORTING**** This file contains characters with the 8th bit set!w' {, it reads:of The error was found on line? word , '*' (remark) or '&' (macro character)>[]==============[] TEXT and ENDTEXT must begin with a reserved=0[] ABORTING [] dBASE II .CMD file. All lines not between UOYn]qaQeyiYm (Yes/No/Quit)~Do you wish to overwrite will be renamed to , already exists! If you answer NO, the old [] WARNING [] []=========[]OLDCMD TMP* must have the extension .SRC - try again.>SRCDDirectory of drive Z*.*`:d;h.lNp tPress to return to ENCODE - ENCODE.HLP?Filename.SRC or Drive:?  Redisplays this screen ? Read the Help file/ A: Displays directory of A:.P FOO.SRC Output to file with console display(Examples: B:FOO.SRC N No console display,Option: N No console display of input file#ENCODE - Version 1.05 3/20/85CLS.DAT I4\^6f (2<FPZdn"x3?K]`fl", 6@$J1TF^Qhtr}|*q0&D:NX,bll{v)/JYh w *4>HR\yh@fmpsz   +  jV b h $o .~ 8 B V L ` t ~( ;      4  1 xo       1 < (. 2i Z` Ff Po d x n/ n     W \5"6,J@U^FTr|'0ENT]f&o0x:DNXblvLa' 6? H*Q4Z>`HoR|\fpz*Fs# |. ; P w$ 8 B L ZV ` j ,t u~   G [[[[ BASLIB #000000 5.30 - OWNED BY MICROSOFT, 1980 @"K~#fDM*"4*Z%##"4*#>27"2:"*^#V"8"##^#V";" 2="!ʋ"!!"">"!#"#6#6P>2#>2#>2#7"":"""_^M!ͼLںL}0?)))صoüLM!LL}0L0? L?//!9""I% !ͪ#I%M#!ͪ#$#!"ͪ#!R"#!O"!#I%|~#> #6#s#r#=s#>2">2">2"2"!"""!$\"">&2"Y"76#}§#|§#n8 STO͵$#?%*".. . ........6*"|#:":$*"|:$@$I%  s#rI%  {͘%w#6""*"*">2"͙%ÿ#!9N#FI%~#~r$~+x$~#~r$+^#V###P$###P$|ʄ$~#fo!$n8 Internal Error - No Line Number "I%~#!%n8 at line@$$?%>%<$%$%<$0N%$}_|W!%͔O~#fo>n8 at address|͒8}͒8?%> N> N~#*X%͔O~#foY!9""!`%*"f%""!%*"?%!%~<ʳ%=ʳ%#~#%ß%#t8Syntax 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 Erro\%ͩ"!o'>ʆ'ͳ"w>ͣ6|#\%}͚ILʨ'L`i""!'"#!=("#( ,Q('(:9*P*P*P*P(:j:*P(:9*P*P ½',ZQ(~#"(xͣ6(m%!>#Q(͔6ͣ6h2)F4( a(Q("v(G{,xv(PX)F(!*Oz"yʯ( ( ¯(O{,y#))F( ¯({ ʾ(,> ʾ(ʾ(((#))F{("( ()F( (,( ()F( (*"( 4:##){,)6!*͔6O )+~ )#6!*ɷw#()!S)N#"2)!9"-)"/)y21)*"|V)*#!@*""A~#*+͈O:##v)~@*)ˆ):Ë):"+ʱ)ʽ)9*P*P*P*P)j:*P)9*P*P*+͈O)~#"+,^) @*:##@*^)~@*!""~,"*#"~**# *@*" *#"+x"5* 5*+~ **yͣ6)n8?Redo from Start *-)6!m*ͷ**2):1)O])*/)+~+ʛ*ʍ*ʍ* +w *æ*++~#foh2"/)!1)5*-)X~2*#~#^#V`8++6Mڶ#:*\%*"|*!*͔6ͣ6h2*#Y+TÿT W~w+TT!hT~w# TO:sM̀O5Vq1UGܒTTx UU)T!hT)UL} :iA^U:U!lPPT:hnU2h!OͦUb!lPPͦU;Sb!lPP>ͮUͺU;S!rU=‹UͦUͦU!i5M!s>5=³U>!lN#F#=U>\%k,O-\%v,O-\%́,O-\%A,O-\%k,q-\%v,q-\%́,q-\%,q-\%k,-\%v,-\%́,-\%,-PÌ,PÌ,"PÕ,H~# ,x28:#F--,<͔6<}-~ʾ,aN#ò,l-<~, aN#,>28:#F-F#~#fox-}- --~#aN, -6->"aNG:#x- O*#+~ aN->,aNW*##^ ̧-ʡ-+=ڡ-:#=ʡ- Oz{ڹ-{_ë-\%|-}͚I-L`i""++"#!." #!-"#2#9.m%#DRL}o|g.> aN+|. O!#"#!""2#9.!#~6#wI% n&I% ^#V{/|w%!o.pU:"#^#V2"^#V#""!"":"*"I% n#~!.̀8Nʽ.m%i&# +(/*#{<. O{.=> aN.|#}*#.<.(/}.|#}.|0/!*##n&͔/>!>!>!>!>!>^#V#!P\/g/ G0w/w%QW^#V#\%͡/\%͡/\%zʻ/|ʻ/|qWW^#VÉ/^#V#/ͽW2##\%\%/\%]O10(O|#\%(0\%100H0:##~0!%*STU0:##ʁ0!%pU:P2P:Pҝ0ͧ0:Pu0w0|/g}/oT:Pڧ0!P000!m%#:PgoW*P|7g0:P0+>0|/g}/o0!0G|00o& Gȯ|g}o0 1>1~+~?~!1+#.1+ .1\%29P>x1\%(2:>29P>x1\%2j:P>͙O\%(2~,"•1#"~ʬ1ʬ1# ˜1m%#"²1#>2x"1y͔O+~ 1 1yͣ6h2I%^#V#{1!""""">2"1N#F#*"~=2}|2P22(2:>2:"1*"͈O~=m%#͈O~,L2#""ɧ_2*"""+V+^""m%#\%}6Ԣ2~##++K7>͙O+V+^+ʕ2+r+s͕7\%h2~ʹ6po"2"2*2|#}# #+<2{*22~#^#V`i#N#F ͙O*26\%#;63366~#~#fo͙O\%|#BK`3PY\%|#BK Q3 o_43\%z#zh3 n3_t3o}`iʹ66DM\% ͦ3~##~#fon&6\%z3};6~ڿ3s#õ3m%#\%|#!9>ͣ6>3>3>3>3>3>.4!+>4>4>4>4>4>.4*4~#fo##GNZ4yZ4#~#fo~#foc4#Y4 I4 yc4y<.m4)m4)66~6o&~##^#V++6o&\%~<#;6~#~#fo͙O6+B:966#r44>4S44g44#4>4S44^4455>7_!4455*4"4~#N#F#W515 ͔O5yx<5 5+++6@#yw#xw+++6###!4~6h5}555*4#~#~5m%#!*4"4~#^#V#55͔OÊ5|¯5Ê5++~_w#~Ww#Ê5}5*4DM~#^#V#!655+z6+{6##{z~#q#p_5y6x6DM5~#65YP+++"46@###{_zW+r+sɷp6*4|N6m%#5^#V+"4w#s#r+++r+s##!w6|6*&8{z*(8?Ғ6}|~# ˜6yG;6x͙OG;6x#N#F& ì6}6K7Õ7*&8*(8ͧO676K7͕7###6 7n8 during G.C. " 7n8 "n8 Internal Error - String Space Corrup#N#F*4yxڐ7*4yxҐ7++`i+V+^ͧO7##6+6+~6  >@++*4"4s#r+5*4#~_#~WҾ7m%#r+s##6"4###!4~#fo7ͧO7<*4"4*4}o|g6@#s#r#6"4*(8*&8"4}w>#w##ͧO 8++6+645!"4!9""^#V#!"~w#!9""|#}#!#wɧ~N#=b8t8~N#t8G~#ʐ8#‚8++͛80:ڦ8N_4_:K_4_: K_4_:@K_4_*m#~4.B8*P}/o|/g#"P|)9QW8!P~w2P.B9T)9*P)9QW.B9ͰT>>:~ͼ"#.9ü"8!PL9>!PP2S9# R9!P*S!P3:P>>u9>|}+!:2R9W+6!P>sT2P!:U!:2R!P2R~_#~W#~O"YsU!ApU#W9ɇ<o&)9QW*P*P9"P`i"P!P^#V#N#F#!:qVYx{Y!P6Wwg>mY)Y7::8Gw#7:2:L:!P3:P.BP.B*:*P||<.B*P:F:!A@:\9 9É:9:P2P:P C ::Pª:ï::|/g}/o:! C:P: :"P>289aj: L}9&9B>28`h:~&IB- ;+ ;+B<.ʭ;e2;E\;BlJ;LJ;qJ;Q[;:8u;>u;~%ʺ;#;!;du;DŒ;;B?BBz<Œ;_{_;;;8.B!9:.B Œ;; ;B!9!j:Ì;;BÌ;99.B:9=.B99n>Z=_A!8F :8_ =x*={=AqB<=E<=D<=0=,=.?=+60{J=+:"w{+p28!86 9*P*P28>E~ʦ=:҆=0چ= #~w=>DGu="P`i"P#~+=-=0OxG=#~«=`xE=y Җ=>28=|Җ==Ö="P`i"P9#W@:8 >*>.>.>͠@60:@+~0=>.:o>.B>"w#6+`>6-/</ b>:#p#w#6!8#z>ړ?͘@zt@_A{}9=t@<ʥ>p#6!8#:8~ ʪ>*ʪ>+>B-+_:"{0>#B>++w>ë>>6%ښ??Ab9 ?<+6%9 ?*:@E?_xt@͋@@Ą@ij@Ò>_y;P?;R?{_xn?t@͋@?t@yͷ@Ot@GO@Š?*8=t@PÛ>9ѯʠ?*:7@y;OzWO;??/<Û>կ.B%@:P%@A!P3:ͨ9 @W@.B:@CO9@@Ab9S@;(@;W@.Bi@t#9o@Ab9K@=60#u@„@ͳ@60#=À@{ ͳ@/>I9@>I9p#=@!P9#A9> :9B?ͳ@9/{_#zW#yO++7Aͮ9#9p#)A>eA B>ͳ@N#F#*P/}o|gxA"Pp#=eAͳ@w1_cƤ~@zZrN vH Tʚ;@B''d #~: B B B0?<=:8;B7-++BBOZBHZB+fBoB:H#ʛBuBm%#M!͇BڅB}0?)))صoÇBM!ͭBګB}B0? B? ))))صoíBa{ j:.B:P:Pú9:82828m%#m%#ESLESGTSNES EQSLTTGETLETGTTNET(EQTSASPOSROWLPOTABSPCIN0xPR0oIPU UMFSGFPEKPOKRSTFLDLEN\%}͚ILL!' ~D D#~C`iEC>O #~goPY!' ůwF:?"HM=L=D!' ~DF8J\%}͚IL!&¯D! ~+ng\%}͚IL! n&*"~LKDM'~D4N#V pEzw w+s#r#6#6DM:="/E!" s#r#6tE! {zVlECw*"T]% N#F+q#p###6 EF:>"H>F>w+w!(ͯE7?*"' 6#67~M#^#fk_aFN#~:eF++@My@MMC #F~.F͢F7{F#|F2C6z MM> âFʖF> »FÖF\%DFCC ͙ODF:C!CMC ͙O66F~®G<MG.0N H:# W:#ھH> 0N0N-NCH~*6?# HO!!4H#4H#4y" IM><"C>2"!aL"":"<2"*""C!YI""\%"CG*"|WI##nUDFI.PD*C\%nI\%2C–J"CÖJ\%ÊI\%2C—J"C×JL!)J)#J)) K K#=J}_}la)M"K#xM"mJ! "oJ!) "qJ!}o|gLQKbk:sJʗKLfKʹKDM*qJ*oJK"oJPYͳK}o|g*mJ#"mJ4KʹKDM*oJ*qJK"oJPY|K2L*mJ! ~#foLs#rK:LK!K!& E~# xKDMTLLIL! w!( V6 !LzwRLLIL! ~!DL! ^#V! s#rDMAL;LL}͚ILtLL`i""!L""ñL)Fm%!>#\%|#,ʫL-:"L*"!"""{;6f$%L!L*"úL"|}!"">6>4>?>=>:>7>5>2>3>@>C>m%o&#w%!""!*"+$M:*5Mn8?5Mp[NiM:,N>\2,NOM4M0N+cM~0NwM+0NwM0N-N!*2,NzM[NO;M:,NʐM>\0N2,NyM3N7 !N M ´M5MM3N5MM5M0N> 0N>\MM>#cMM6-N!*ENwM wMx<>Nyq#0N wM> 0N[NN wMzM:*-Nwo?%N>^0N@0N-N~ TN> 0N0N#ENͳ"*# xN#~+ aN~=N*#!#"#aN"#> aN> aN:#=$O> "> "*_N!PDO!P?OPDOPDOw#w#w#w# DjO>PpO>PUO ~#=tO!UO#~ ʇO ʇOɅo$ɧGw#O{z͙  *ͥ ͫ ͱ !"*"!C"*#"*|, )o *|go*|go|g}o*|go|g}o|x*|go*|/g}/o|g}o|ʘ !"*|ڥ )**#"*"*`*! 6 "*| )W**}o|6#ҵPTPP)YOP!1Y!Py#P+P)Y?1YQXͰTQQͧTͼQ!PTzQ:P)Y:P/NsTS2P:PS)Yx/F+N+=Q!P R!P>q#p#=R!P2R"ORQQ*OTX:PX!PN#FV\TqoRGܡS͟Tx XRORS!P{TgRj0 TeB׳]h!I.k QXͰTöRQͧT!P2Rͯ.!Pq#~++w+qR)YDNn"~`35zr1{r1h!IT)YyO2P0ST)Y:PʼQBS/<ͼQ9)Y:POWG2P!PsT:P2Px!PPSͪSyS4͟T:PS!P~++w)Y!P4#’S4ʼR+6!PP# ªSɯ# ·SͷSS/!POyw#SG:PT!PVwz# SxSX!PTSxyS!PwXyS~w# TQXͰT7TQͧT!P*SQXͰTSTQͧTͼQ!PSy2P!PO~q+iTqڊTNsY+TuT W~w+”TÍT!PÑTQWðTX!Pw#¶T)YT}TTUTW!PF#^#V#NXU}P~#TG++Ny1YPT!PX>?UUͯ."YMUY;U!P6Wg>mY|ԦW!>UakX\UV\U)Y!P~+>w)YcWsUY)Y:PY҆U/<ʹW)YWgmY!PU~_#~W#~OX#4ʯX.̓YXG~_#~W#~OܠWXcWUY)Y>OvUcWUYʔW)YȯGV"Py2PFoͫWʹW!D*P:PO%VP4ʯX=VMVg.*P:POz&VMVg.*P:P3Vx<=dV{_zWxG)yOHGXcWtVYY)YVy+F+F+Fw`h|VgyҥV:PO|g}oxG-|™V}”VXElaOÓV!P~GxVƀXwWw+ɷXXYx{Y!P6WwgWzW >mY|X{>2PX/W#~+~+~+~LUX)!"PܠWXWQWʹWzʔWzBW|G||W9YWͯ.O_yW!P~/woG}_}W}OWY||DM!>))W =W!P~7w?##wy7O*P*P"P"PajSXIXXJS\E!PX/TY SY7>{_zW}o|g=JY|g}o|YCZQoY o-yOzW{_xGYP*PDM^#V#N#F#xy1Y:P:P7|/G}/O!>TY SY7>{_zW}o|g=JY|g}o|YCZQoY ooͫWʹW!D*P:PO%VP4ʯX=VMVg.*P:POz&VMVg.*P:P3Vx<=dV{_zWxG)yOHGXcWtVYY)YVy+F+F+Fw`h|VgyҥV:PO|g}oxG-|™V}”VXElaOÓV!P~GxVƀXwWw+ɷXXYx{Y!P6WwgWzW >mY|X{>2PX/W#~+~+~+~LUX)!"PܠWXWQWʹWzʔWzBW|G||W9YWͯ.O_yW!P~/woG}_}W}OWY||DM!>))W =W!P~7w?##wy7O*P*P"P"PajSXIXXJS\E!PX/ CLS.DAT will then be written and you will go directly to operation of ENCODE. If the title screen is preceeded by a clear screen, the installation was successful. If the title screen scrolls on, it failed. If it fails, exit the program, erase CLS.DAT, and run ENCODE again. If you don't like the clear screen function, simply enter 10 when asked for your clear screen sequence. For each 10 you enter ENCODE will scroll one line in place of the clear screen. My older program, CLEARSET, will  still generate a correct CLS.DAT for this version of ENCODE. Calling a Directory Listing To call a directory from the title screen simply enter the drive you wish to list. Filename.SRC or Drive:? A: This will list the directory of drive A and give the prompt again. Directory of drive A: FOO .CMD DBSOURCE.BAS DBSOURCE.COM TEST2 .CMD A10 .CMD ENCODE .BAS ENCODE .COM MBASIC .COM D .COM SAMPLE .CMD BOOKS .DBF BOOKS .FRM DBASE .COM CLS .DAT CLEARSET.BAS CLEARSET.COM DBASEMSG.TXT DBASEOVR.COM B4 .CMD R2D2 .CMD DBINDENT.BAS DBINDENT.COM ELIZA .BAS A10 .SRC A10 .BAK CLONE .CMD TEST .CMD CLONE .SRC A10 .OLD DBSRC2 .BAS DBSRC2 .COM Filename.CMD or Drive:? The ZCPR like drive call of A; will also work to call the directory, even if you are not running ZCPR. The Filename.CMD may be entered here or a will redisplay the start screen. Encoding a File A file to be encoded MUST have the extension .SRC. Just rename your source file to .SRC. Then enter the .SRC at the ENCODE prompt: Filename.SRC or Drive:? SAMPLE.SRC ENCODE requires all characters in the input file have the 8th bit set low. You may have to run your source file through a filter, like UNSOFT. ENCODE creates a partially tokenized file that can not be listed with anything but DBSOURCE or a commercial decoder. It is also hard to modify a command file protected with ENCODE. The file is reduced in size as all indenting and comments preceded by * are removed. In addition comments after the END statements are removed. Example: ENDIF .NOT. green Becomes a single byte for the reserved word ENDIF. The ".NOT. green" is purely a comment that repeats the conditions that began the IF statement that should read: IF .NOT. green Such comments make a program easier to read but will slow down operation as dBASE II reads program lines from the disk as they are executed. The latest versions of Ashton-Tate's DBCODE and Gene Head's DB-SQZ5 that I have seen leave these comments in. You can label a file by enclosing a message between TEXT and ENDTEXT. This leaves all lines between TEXT and ENDTEXT as in the source file. ENDTEXT may be abbreviated to ENDT. Example: TEXT (C) 1985 by Croggle Software, Inc. ENDTEXT Caution should be taken that the ENDTEXT is included. If omitted, all of the remaining file will not be encoded. The command TEXT shuts off encoding, ENDTEXT turns it on again. Indentation within the TEXT area will be left as in the source file. Use this feature as little as you can. The extra lines will slow down the program a little for each line added. ENCODE requires that source files have initial reserved words written out in full. This insures a fully readable source file. dBASE looks for only the first four letters of a reserved word. Reserved words in any postion on a line but the first word may be abbreviated. ENCODE does not check syntax on anything but the first word in each line of dBASE command files. ENCODE also requires that you name the source file with the extension .SRC. This keeps the programmer from mistaking the pseudo compiled (.CMD) file for the source (.SRC) file. If a file is requested and the .CMD file already exists, you will be warned: []=========[] [] WARNING [] []=========[] SAMPLE.CMD already exists! If you answer NO, the old SAMPLE.CMD will be renamed to SAMPLE.OLD Do you wish to overwrite SAMPLE.CMD (Yes/No/Quit)? If you choose not to overwrite SAMPLE.CMD, the old file will be renamed SAMPLE.OLD. The .OLD extension is used to keep the encoded backup files distinct from the source backup which would have a .BAK extension. If you opt to quit, you will be taken to the end of the program and see: Are you finished? A , or any answer but yes, will return you to the start screen for another file. Macro Support Unlike Ashton-Tate's DBCODE, ENCODE provides full macro support. It is recommended that macros be used only when other means are not available. Macro operation is usually slower. A line starting with a macro will not be encoded. This will slow the program even more. You must retain the "&" as the macro symbol if you want to start a line with a macro. ENCODE will not recognize a different symbol at the start of a line, even if dBASE II can be configured to do so. If macros are confined to locations other than the start of a line, the "&" may be changed. If you do plan on using ENCODE to create a file for Ashton-Tate's RUNTIME, do not use an initial macro. RUNTIME will not accept it. Sub Files ENCODE requires separate encoding of any sub files you wish to use in a dBASE II program package. It is not required that all sub programs be encoded when operation is with dBASE II, but ! it should be done for speed. Only the command files with the extension .CMD are encoded. Continuation Lines Continuation lines will be work with ENCODE, but are not recommended. They tend to add extra bytes to the file. The usual reason for the broken line is to handle 80 columns of display. A pair of lines like the following: @ 6,0 SAY '-----------------------------------------------------------------'; +'---------------' Could be written: @ 6,0 SAY '------------------------------------------------------------------- -------------' The line is allowed to wrap (without a ) and be longer than 80 columns. This is only possible if you use a word processor to generate the CMD file. dBASE II will amputate the lines at 80 columns. This method produces the shortest output. Another way to handle it is as follows: @ 6,0 SAY '----------------------------------------' @ 6,40 SAY '----------------------------------------'  This is 14 bytes longer than the previous example and 11 bytes longer than the first, when encoded. Abbreviated Reserved Words Reserved words may be abbreviated to four letters in your source file. For example: DO WHIL = DO WHILE OTHE = OTHERWISE STOR = STORE ENDI = ENDIF This produces a source file that is a little harder to read, but it allows faster code writing. You may also want to encode files already written in this style. It is often used to produce a dBASE II command file that will run slightly faster because of the shorter length of the file. There is no gain in ENCODE to abbreviate the initial reserved word in each line. ENCODE converts it to a single byte token anyway. Please note that only the full reserved word and the four letter abbreviation are supported by ENCODE for initial reserved words. OTHE for OTHERWISE is ok, but OTHER or OTHERW will not work. Help File The help file may be called from ENCODE by entering a "?" at the title screen. Filename.SRC or Drive:? ? Option N No console display of input file. This is the only option. The N option must preceded by a space: Filename.SRC or Drive:? SAMPLE.SRC N History Rev. 1.05 3/20/85 Fixed bug that doubled encoded bytes for reserved words with a length of 4. WAIT was encoded to WAIT =. In hex: C2 C2. Bug present from version 1.02 thru 1.04. Rev. 1.04 2/28/85 Minor correction to installation routine. Rev. 1.03 2/27/85 Changed to remove comments starting with NOTE and fixed bug in abbreviations of DO WHILE and DO CASE. Rev. 1.02 2/24/85 Added the ability to recognize four letter abbreviations of initial reserved words. Clear screen self installation added. ENCODE.COM distributed as a stand alone COM file, BRUN.COM no longer required. Rev. 1.01 2/17/85 Modified for compatibility with MBASIC 5.20 under Apple CP/M. This required changing TEXT$ to TXT$ as TEXT is a reserved word in the Apple CP/M basic. Added the ability to accept initial reserved words in lower case. Also modified to handle continuation lines and remove indentation at the start of the continued line. Blank lines will no longer abort the encoding, provided they contain no spaces or tabs. ENCODE version 1.00 released 1/6/85 LEGAL NOTICE ENCODE is NOT "Public Domain." Copyright is held by the author: Merlin R. Null P. O. Box 9422 N. Hollywood, CA 91609 (818) 762-1429 Permission is given only for private, nonprofit use of ENCODE. Feel free to make copies of the program for your own use or for your friends. However, ENCODE may NOT be sold or included with any collection of programs for sale or used as an inducement to buy another product or program without the written permission of the author. Permission is also given for nonprofit computer clubs to include this program in distribution disks, provided total charges for the entire disk of programs, copying and shipping do not exceed $20.00. My vote of thanks goes to those clubs that have kept their charges under $10.00. Donation If you like the program and use it, a small donation of about $5.00 would be appreciated, though it is not required to use ENCODE. I will do my part to keep ENCODE maintained. Please report any bugs to me at the above address or phone number. I can also be reached by leaving a message on the Glendale Literaria RCP/M (818) 956-6164. Other dBASE Utilities I have two other programs that may be of interest to dBASE II users. They are: DBSOURCE, a program to return encoded dBASE II command files to source code. And DBINDENT, to pretty print dBASE II source code. The current versions are in DBSRC102.LBR and DBINDENT.LBR. MBASIC and BRUN are Trademarks of Microsoft. dBASE II, DBCODE and RUNTIME are "Trademarks of Ashton-Tate. d total charges for the entire disk of programs, copying and shipping do not exceed $20.00. My vote of thanks goes to those clubs that have kept their charges under $10.00. Donation If you like the program and use it, a small donation of about $5.00 would be appreciated, though it is not required to use ENCODE. I will do my part to keep ENCODE maintained. Please report any bugs to me at the above address or phone number. I can also be reached by leaving a message on the Glendale Literaria RCP/M (818) 956-6164. Other dBASE Utilities I have two other programs that may be of interest to dBASE II users. They are: DBSOURCE, a program to return encoded dBASE II command files to source code. And DBINDENT, to pretty print dBASE II source code. The current versions are in DBSRC102.LBR and DBINDENT.LBR. MBASIC and BRUN are Trademarks of Microsoft. dBASE II, DBCODE and RUNTIME are  ENCODE HELP version 1.05 3-20-85 (C) 1985 by Merlin R. Null ENCODE is pseudo compiler for dBASE II version 2.4 or higher command files. Programs encoded with ENCODE will run with the regular version of dBASE II version 2.4 or higher. Ashton-Tate's RUNTIME is not required, although it could be used. RUNTIME is simply an amputated version of dBASE II that only has the ability to run programs, not edit them. Calling a Directory Listing To call a directory from the title screen simply enter the drive you wish to list. Filename.SRC or Drive:? A: This will list the directory of drive A and give the prompt again. Directory of drive A: FOO .CMD DBSOURCE.BAS DBSOURCE.COM TEST2 .CMD A10 .CMD ENCODE .BAS ENCODE .COM MBASIC .COM D .COM SAMPLE .CMD BOOKS .DBF BOOKS .FRM DBASE .COM CLS .DAT TERMSET .BAS CLEARSET.COM DBASEMSG.TXT DBASEOVR.COM B4 .CMD C3P0 .CMD DBINDENT.BAS DBINDENT.COM DOCTOR .BAS A10 .SRC A10 .BAK CLONE .CMD TEST .CMD CLONE .SRC A10 .OLD DBSRC2 .COM DBSRC2 .BAS Filename.SRC or Drive:? The ZCPR like drive call of A; will also work to call the directory, even if you are not running ZCPR. The Filename.SRC may be entered here or a will redisplay the start screen. Encoding a File A file to be encoded MUST have the extension .SRC. Just rename your source file to .SRC. Then enter the .SRC at the ENCODE prompt: Filename.SRC or Drive:? Option N No console display of input file. This is the only option. The N option must preceded by a space: Filename.SRC or Drive:? SAMPLE.SRC N Help File This help file may be called from ENCODE by entering a "?" at the title screen. Filename.SRC or Drive:? ? END OF THE HELP FILE LEARSET.COM DBASEMSG.TXT DBASEOVR.COM B4 .CMD C3P0 .CMD DBINDENT.BAS DBINDENT.COM DOCTOR .BAS A10 .SRC A10 .BAK CLONE .CMD TE10 ' ENCODE.BAS Version 1.05 (C) Copyright 1985 by Merlin R. Null 20 ' To create pseudo compiled dBASE II .CMD files. 30 ' This program may not be sold separately or as part of any collection" 40 ' of programs without the written permission of the author: 50 ' Merlin R. Null, P.O. Box 9422, N. Hollywood, CA 91609, (818)762-1429 60 DEFINT A-Z 70 DIM TOKEN$(67),WORDLEN(67) 80 ON ERROR GOTO 1980 'Used mostly to detect incorrect filename 90 WIDTH LPRINT 255 100 BL$=CHR$(7) 110 OPEN "I",#1,"CLS.DAT" 120 WHILE NOT EOF(1) 130 LINE INPUT #1, A$ 140 A=VAL(A$) 150 CLS$=CLS$+CHR$(A) 160 WEND 170 CLOSE #1 180 FOR I=1 TO 67 190 READ TOKEN$(I),WORDLEN(I) 200 NEXT I 210 PRINT CLS$:PRINT 220 PRINT TAB(10)"ENCODE - Version 1.05 3/20/85" 230 PRINT STRING$(4,10) 240 PRINT"Option: N No console display of input file" 250 PRINT 260 PRINT"Examples: B:FOO.SRC N No console display" 270 PRINT" FOO.SRC Output to file with console display" 280 PRINT" A: Displays directory of A:" 290 PRINT" ? Read the Help file" 300 PRINT" Redisplays this screen" 310 PRINT STRING$(4,10) 320 PRINT 330 LINE INPUT"Filename.SRC or Drive:? ";NF$ 340 NFLEN=0:CONOFF=0:OPTFLAG=0:FULLNAME$="" 350 IF NF$="" THEN 210 'Redisplay start screen 360 IF NF$="?" THEN OPEN "I",#1,"ENCODE.HLP" ELSE 490 370 PRINT CLS$ 380 FOR LINES=1 TO 20 390 IF EOF(1) THEN 440 ELSE LINE INPUT #1,HELP$ 400 PRINT HELP$ 410 NEXT LINES 420 PRINT 430 PRINT TAB(7)"" 440 PRINT TAB(12)"Press to return to ENCODE "; 450 FINISHED$=INPUT$(1) 460 IF FINISHED$<>CHR$(27) THEN 370 470 CLOSE #1 480 GOTO 210 490 FOR I=1 TO LEN(NF$) 'Convert lower to upper case & detect options 500 BYTE$=MID$(NF$,I,1) 510 IF ASC(BYTE$)>96 AND ASC(BYTE$)<123 THEN BYTE$=CHR$(ASC(BYTE$)-32) 520 FULLNAME$=FULLNAME$+BYTE$ 530 IF BYTE$=" " THEN OPTFLAG=-1 'Flag start of options 540 IF NOT OPTFLAG THEN 560 550 IF BYTE$="N" THEN CONOFF=-1 'Detect console off #560 IF NFLEN THEN 580 570 IF BYTE$="." THEN NFLEN=I+3 'Find filename length 580 NEXT I 590 IF NFLEN>3 THEN FULLNAME$=LEFT$(FULLNAME$,NFLEN)'Drop option from filename 600 IF MID$(FULLNAME$,2,1)=";" THEN MID$(FULLNAME$,2,1)=":" 'ZCPR like (A;) 610 IF LEN(FULLNAME$)=2 AND MID$(FULLNAME$,2,1)=":" THEN PRINT CLS$ ELSE 660 620 DIR$=FULLNAME$+"*.*" 630 PRINT"Directory of drive ";FULLNAME$ 640 FILES DIR$ 650 GOTO 320 660 IF RIGHT$(FULLNAME$,3)<>"SRC" THEN PRINT CLS$;STRING$(5,10) ELSE 690 670 PRINT BL$;FULLNAME$;" must have the extension .SRC - try again." 680 GOTO 320 690 FILENAME$=LEFT$(FULLNAME$,NFLEN-3) 700 TMPNAME$=FILENAME$+"TMP" 710 CMDNAME$=FILENAME$+"CMD" 720 OLDNAME$=FILENAME$+"OLD" 730 OPEN "I",#1,CMDNAME$ 'See if .CMD exists 740 CLOSE #1 'Close, if found. Else error trap gets it 750 PRINT CLS$;STRING$(7,10);BL$ 760 PRINT TAB(20)"[]=========[]" 770 PRINT TAB(20)"[] WARNING []" 780 PRINT TAB(20)"[]=========[]" 790 PRINT:PRINT 800 PRINT CMDNAME$;" already exists! If you answer NO, the old ";CMDNAME$ 810 PRINT"will be renamed to ";OLDNAME$ 820 PRINT:PRINT 830 PRINT"Do you wish to overwrite ";CMDNAME$;" (Yes/No/Quit)"; 840 INPUT OVERWRITE$ 850 IF LEFT$(OVERWRITE$,1)="Y" OR LEFT$(OVERWRITE$,1)="y" THEN 920 860 IF LEFT$(OVERWRITE$,1)="Q" OR LEFT$(OVERWRITE$,1)="q" THEN 1640 870 IF LEFT$(OVERWRITE$,1)<>"N" AND LEFT$(OVERWRITE$,1)<>"n" THEN 750 880 RENAMECMD=-1 890 OPEN "I",#2,OLDNAME$ 'See if .OLD exists. 900 CLOSE #2 'Close, if found. Else error trap gets it 910 ERASEOLD=-1 'Flag to kill .OLD 920 OPEN "I",#3,FULLNAME$ 930 OPEN "O",#1,TMPNAME$ 940 IF CONOFF THEN PRINT:PRINT" " ELSE PRINT CLS$ 950 PRINT 960 PRINT" ^S to Pause - ^C to Abort" 970 PRINT 980 LINES=0 990 WHILE NOT EOF(3) 1000 LINES=LINES+1 1010 LINE INPUT #3,TXT$ 1020 IF LEN(TXT$)=0 THEN 1530 1030 IF RIGHT$(TXT$,1)=";" THEN TXT$=LEFT$(TXT$,LEN(TXT$)-1) ELSE 1130 1040 LINE INPUT #3,MORE$ 1050 BLANK=0 1060 LINES=LINES+1 1070 FOR CHR=1 TO LEN(MORE$) 1080 CHRVAL=ASC(MID$(MORE$,CHR,1)) 1090 IF CHRVAL<>32 AND CHRVAL<>9 THEN TXT$=TXT$+MID$(MORE$,CHR)ELSE 1110 1100 CHR=LEN(MORE$) 1110 NEXT CHR 1120 GOTO 1030 1130 TEMP$=TXT$:START=0:BLANK=0 1140 TEXTLEN=LEN(TXT$) 1150 FOR CHAR=1 TO TEXTLEN 1160 CHARVAL=ASC(MID$(TEMP$,CHAR,1)) 1170 IF CHARVAL<123 AND CHARVAL>96 THEN MID$(TEMP$,CHAR,1)=CHR$(CHARVAL-32) 1180 IF START THEN 1200 1190 IF CHARVAL=32 OR CHARVAL=9 THEN BLANK=BLANK+1 ELSE START=CHAR 1200 IF CHAR-BLANK>8 THEN CHAR=TEXTLEN 1210 NEXT CHAR 1220 IF TXT THEN PRN$=TXT$ ELSE 1250 1230 IF MID$(TEMP$,1+BLANK,4)="ENDT" THEN TXT=0 1240 GOTO 1510 1250 IF MID$(TXT$,1+BLANK,1)="*" OR MID$(TXT$,1+BLANK,4)="NOTE" THEN 1530 1260 IF MID$(TXT$,1+BLANK,1)="&" THEN PRN$=TXT$:GOTO 1510 1270 PRN$="":FOUND=0 1280 IF MID$(TEMP$,1+BLANK,4)="GOTO" THEN PRN$=PRN$+CHR$(160) ELSE 1310 1290 LENGTH=4 1300 GOTO 1440 1310 IF MID$(TEMP$,1+BLANK,7)="DO WHIL" THEN PRN$=PRN$+CHR$(136) ELSE 1340 1320 IF MID$(TEMP$,1+BLANK,8)="DO WHILE" THEN LENGTH=8 ELSE LENGTH =7 1330 GOTO 1440 1340 IF MID$(TEMP$,1+BLANK,7)="DO CASE" THEN PRN$=PRN$+CHR$(137) ELSE 1370 1350 LENGTH=7 1360 GOTO 1440 1370 FOR TOKEN=1 TO 67 1380 IF MID$(TEMP$,1+BLANK,WORDLEN(TOKEN))=TOKEN$(TOKEN) THEN PRN$=PRN$+CHR$(TOKEN+127):LENGTH=WORDLEN(TOKEN):FOUND=TOKEN:TOKEN=67 :GOTO 1400 1390 IF MID$(TEMP$,1+BLANK,4)=LEFT$(TOKEN$(TOKEN),4) THEN PRN$=PRN$+CHR$(TOKEN+127):LENGTH=4:FOUND=TOKEN:TOKEN=67 1400 NEXT TOKEN 1410 IF FOUND=3 OR FOUND=5 OR FOUND=8 THEN 1510 1420 IF NOT TXT AND FOUND=62 THEN TXT=-1 1430 IF FOUND<1 THEN 1690 1440 BEGIN=BLANK+LENGTH+1 1450 FOR BYTE=BEGIN TO TEXTLEN 1460 CHARVAL=ASC(MID$(TXT$,BYTE,1)) 1470 IF CHARVAL>128 THEN 1810 1480 IF BYTE=BEGIN AND CHARVAL=32 OR BYTE=BEGIN AND CHARVAL=9 THEN 1500 1490 PRN$=PRN$+CHR$(ASC(MID$(TXT$,BYTE,1))XOR 255) 1500 NEXT BYTE 1510 IF NOT CONOFF THEN PRINT TXT$ 1520 PRINT #1, PRN$ 1530 QUIT$=INKEY$:IF QUIT$<>"" THEN GOSUB 1930 1540 WEND 1550 CLOSE 1560 PRINT 1570 IF ERASEOLD THEN KILL OLDNAME$ ELSE 1590 1580 PRINT"Erasing ";OLDNAME$ 1590 IF RENAMECMD THEN NAME CMDNAME$ AS OLDNAME$ ELSE 1610 1600 PRINT"Changing ";CMDNAME$;" to ";OLDNAME$ 1610 IF OVERWRITE$="Y" OR OVERWRITE$="y" THEN KILL CMDNAME$ ELSE 1630 1620 PRINT"Erasing ";CMDNAME$ 1630 NAME TMPNAME$ AS CMDNAME$:PRINT"Changing ";TMPNAME$;" to ";CMDNAME$ 1640 PRINT 1650 INPUT"Are you finished";ANS$ 1660 IF LEFT$(ANS$,1)<>"Y" AND LEFT$(ANS$,1)<>"y" THEN 210 1670 END 1680 CLOSE 1690 PRINT BL$ 1700 PRINT"[]==============[] This file contains incorrect syntax for a";BL$ 1710 PRINT"[] ABORTING [] dBASE II .CMD file. All lines not between" 1720 PRINT"[]==============[] TEXT and ENDTEXT must begin with a reserved" 1730 PRINT" word , '*' (remark) or '&' (macro character) 1740 PRINT 1750 PRINT"The error was found on line";LINES;"of ";$FULLNAME$;", it reads:" 1760 PRINT 1770 PRINT "'";TXT$;"'" 1780 PRINT 1790 KILL TMPNAME$ 1800 GOTO 1670 1810 CLOSE 1820 PRINT BL$ 1830 PRINT"****ABORTING**** This file contains characters with the 8th bit set!" 1840 PRINT BL$ 1850 PRINT"The error was in line";LINES;"of ";FULLNAME$;", it reads:" 1860 PRINT 1870 PRINT"'";TXT$;"'" 1880 KILL TMPNAME$ 1890 PRINT 1900 GOTO 1670 1910 ' The ^C and ^S handling only works with BASCOM, not the interpreter. 1920 PRINT 1930 IF QUIT$=CHR$(3) THEN CLOSE ELSE 1960 1940 PRINT BL$;"****ABORTING**** ^C entered from keyboard. No files changed" 1950 GOTO 1670 1960 IF QUIT$=CHR$(19) THEN WHILE INKEY$="":WEND 1970 RETURN 1980 IF ERR=53 AND ERL=920 THEN CLOSE #3 ELSE 2020 1990 PRINT CLS$;STRING$(5,10) 2000 PRINT CHR$(34);FULLNAME$;CHR$(34);" not found - try again.";BL$ 2010 RESUME 320 2020 IF ERR=53 AND ERL=730 THEN CLOSE #1:RESUME 920 2030 IF ERR=53 AND ERL=890 THEN CLOSE #2:RESUME 920 2040 IF ERR=53 AND ERL=110 THEN CLOSE #1 ELSE 2280 2050  PRINT STRING$(18,10) 2060 PRINT BL$;"CLS.DAT, the clear screen data file, not found." 2070 PRINT"Please enter your clear screen sequence" 2080 PRINT"one byte at a time in Decimal numbers. End your" 2090 PRINT"entries with a to generate CLS.DAT" 2100 PRINT 2110 FOR I=1 TO 9 2120 PRINT"Clear Screen character";I; 2130 LINE INPUT C$ 2140 IF C$="" AND I>1 THEN 2230 2150 IF C$="" THEN 2120 2160 IF LEN(C$)>3 THEN 2120 2170 FOR J=1 TO LEN(C$) 2180 IF ASC(MID$(C$,J,1))<48 OR ASC(MID$(C$,J,1))>57 THEN PRINT BL$; "Whole decimal numbers only.":GOTO 2120 2190 NEXT J 2200 IF I>1 THEN CLR$=CLR$+CHR$(13)+CHR$(10) 2210 CLR$=CLR$+C$ 2220 NEXT I 2230 PRINT"Writing CLS.DAT"; 2240 OPEN "O",#1,"CLS.DAT" 2250 PRINT #1,CLR$ 2260 CLOSE #1 2270 RESUME 100 2280 IF ERR=53 AND ERL=360 THEN PRINT CLS$;STRING$(5,10); ELSE 2310 2290 PRINT BL$;"The Help file, ENCODE.HLP, is not on this disk!";BL$ 2300 RESUME 320 2310 IF ERR=64 THEN CLOSE ELSE 2350 2320 PRINT CLS$;STRING$(5,10) 2330 PRINT BL$;CHR$(34);FULLNAME$;CHR$(34);" is a bad file name - try again." 2340 RESUME 320 2350 ON ERROR GOTO 0 2360 DATA "IF",2,"ELSE",4,"ENDIF",5,"DO",2,"ENDDO",5,"CASE",4,"OTHERWISE",9 2370 DATA "ENDCASE",7,"DO WHILE",8,"DO CASE",7,"STORE",5,"?",1,"RELEASE",7 2380 DATA "RETURN",6,"SELECT",6,"@",1,"ACCEPT",6,"APPEND",6,"BROWSE",6,"CALL",4 2390 DATA "CANCEL",6,"CHANGE",6,"CLEAR",5,"COPY",4,"COUNT",5,"CREATE",6 2400 DATA "DELETE",6,"DISPLAY",7,"CONTINUE",8,"EDIT",4,"EJECT",5,"ERASE",5 2410 DATA "GO",2,"FIND",4,"HELP",4,"INDEX",5,"INPUT",5,"INSERT",6,"JOIN",4 2420 DATA "LIST",4,"LOAD",4,"LOCATE",6,"LOOP",4,"MODIFY",6,"PACK",4,"POKE",4 2430 DATA "QUIT",4,"READ",4,"RECALL",6,"REINDEX",7,"REMARK",6,"RENAME",6 2440 DATA "REPLACE",7,"REPORT",6,"RESET",5,"RESTORE",7,"SAVE",4,"SET",3 2450 DATA "SKIP",4,"SORT",4,"SUM",3,"TEXT",4,"TOTAL",5,"UNLOCK",6,"UPDATE",6 2460 DATA "USE",3,"WAIT",4 ,7,"SAVE",4,"SET",3 2450 DATA "SKIP",4,"SORT",4,"SU This is the release date of the disk. ENCODE DOC 0ENCODE HLP ENCODE BAS (DBSRC2 .BAS 89 E2 8320 65 ENCODE .COM 28 AC 22784 178 ENCODE .DOC 8C 56 12416 97 ENCODE .HLP 00 77 2048 16 ENCODE .BAS 22 9B 10240 80  Fog Library Disk FOG-CPM.046 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 utility programs. Filename Description -05-00 .86 This is the release date of the disk. -CPM046 %.DOC This is the description of the disk contents. DBINDENT.COM EC1A 22K ver. 1.00 [dBASE Indent 1 of 4] Clean up your dBASE II source code by aligning indentations. MBasic source and on-line help included. DBINDENT.DOC CBFF 7K ver. 1.00 [dBASE Indent 2 of 4] DBINDENT.HLP FB91 3K ver. 1.00 [dBASE Indent 3 of 4] DBINDENT.BAS 5394 10K ver. 1.00 [dBASE Indent 4 of 4] DBSOURCE.COM 31EE 21K ver. 1.02 [dBASE SourceRead 1 of 4] Read and unencode .CMD files which have been "compiled" with ENCODE, DB-SQ15, or Ashton-Tate's runtime module (DBCODE). MBasic source and on-line help included. DBSOURCE.DOC AFE1 10K ver. 1.02 [dBASE SourceRead 2 of 4] DBSOURCE.HLP 49DD 6K ver. 1.02 [dBASE SourceRead 3 of 4] DBSOURCE.BAS 2D61 8K ver. 1.02 [dBASE SourceRead 4 of 4] DBSRC2 .COM 231D 21K ver. 1.02 [dBASE SourceRead2 1 of 2] Variation of DBSOURCE with MBasic source code. DBSRC2 .BAS 89E2 9K ver. 1.02 [dBASE SourceRead2 2 of 2] ENCODE .COM 28AC 23K ver. 1.05 [Encode 1 of 4] Pseudo-compiler which shrinks and tokenizes dBASE II ver 2.4 or higher .CMD files and allows files to run under RUNTIME if necessary. MBasic source and on-line help included. ENCODE .DOC 8C56 13K ver. 1.05 [Encode 2 of 4] ENCODE .HLP 0077 2K ver. 1.05 [Encode 3 of 4] ENCODE .BAS 229B 10K ver. 1.05 [Encode 4 of 4] sic source code. DBSRC2 .BAS 89E2 9K ver&'