`8NNNNTOp NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNO`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?AOEKO/OUWY[_a!cAeaikmoq!sAuawy{}!AaAo!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=A"$O`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?AOEKO/OUWY[_a!cAeaikmoq!sAuawy{}!AaAo!Aaǁɡ!Aaׁ١!Aa!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=A"$SHTDOC20 b!SAMP17C !BSAMP17M Ϥ!LADDRESS SHT!VpAMORT SHT!X5BESTFIT SHT!Z CAL SHT!],%CALC RSC!g΁DEPOSIT SHT! FG SHT!FTEST SHT!wINKEY SHT!INVEST SHT!LOAN SHT! LOTTERY SHT!MATRIX SHT!NUMBER SHT !DESKTOP INFt ST183 P6  RANDOM SHTP!EADME S!rREADME TXTU!qROOTS SHTY!KROSES SHT\!SHEET CFGa!SHEET20 PRGc!!STRING1 SHT|!>VT52 SHT!?WITHDRAWSHT!@ ING_DOM423. c!.. c!README TXTd!SAMPLES ARCg!]SHEET PI2l! "}SHEET PI3s!@"}SHTDOC20MANz!`O SHEET is a shareware program. If you like it, please send me $25 or whatever you think it is worth. My address is: Mr. Chor-ming Lung 330 Tremont ST, A-708 Boston, MA 02116 If you have problems or suggestions, you can email to me. My addresses for CompuServe and GEnie are: GEnie: LUNG CIS: 72740,40 You can also leave message in GEnie. On GEnie, enter the following commands to read and leave messages: m475;1 set 2 read 28 new A brief explanation for the files followed: Name Description ---------------------------------------------------------------------- SHTDOC20.MAN SHEET user manual. It is for version 2.0 of SHEET. SHEET.PI2 A medium resolution Degas file. It explains some terms I use in the manual. SHEET.PI3 A high resolution Degas file. It explains some terms I use in the manual. SAMPLES.ARC This file contains old and new SHT files. Here is a list of them. SAMPLE16.ARC This file contains files released up to version 1.6 ADDRESS.SHT This is a SHEET BASIC program for printing mailing labels. See page 52 for more information. AMORT.SHT This is Example 1 of the tuturial. BESTFIT.SHT This sample spreadsheet shows you how to do multiple regression analysis using the MATRIX functions. DEPOSIT.SHT Regular deposit analysis spreadsheet. FG.SHT FUTURE growth analysis. INVEST.SHT Investment analysis spreadsheet LOAN.SHT Loan analysis spreadsheet. LOTTERY.SHT This is Example 4 of the tutorial. MATRIX.SHT Document of the matrix functions. RANDOM.SHT This is Example 3 of the tutorial ROSES.SHT This is Example 2 of the tutorial WITHDRAW.SHT Steady withdrawal analysis spreadsheet. SAMPLE17.ARC This file contains files release for version 1.71 ROOTS.SHT This is a SHEET BASIC program for finding roots of one variable functions. See page 84 for more information. SAMP17C.ARC Color monitor version for the following files SAMP17M.ARC Monochrome monitor version for the following files. BIORTHYM.SHT This file helps you to find your biorthyms. See Page 80 for more information GRID.SHT This is Example 7 of the tutorial SINCURVE.SHT This is Example 8 of the tutorial SPLINE.SHT This is Example 9 of the tutorial SAMPLE20.ARC This file contains files release for version 2.0 CAL.SHT Calendar program. See page 82 for more information. FTEST.SHT This is Example 5 of the tutorial INKEY.SHT A program that tests the INKEY and some screen control commands. You can use the arrow keys to move the screen cursor and enter any character on the screen. To run it, enter "@run b1". To stop it, either press Esc or . NUMBER.SHT This is Example 6 of the tutorial STRING1.SHT This file generates the 256 ASCII in your worksheet. To run it, enter "@run c1" without the double quotes. VT52.SHT This SHEET BASIC program test VT52 commands in SHEET. To run it, enter "@run d1" without the double quotes. >5LJD%:'8K'B:J+5M9,;&2,O6L>ZH@6\L)=,9,K7;>,K0KJ;,<;&dMFAN'KJ;,.,?0NCFHWJM93'N2Q@??8Q<4dM>*,;&Q:Q;8+ I8K?0;>8L;?;8+ I8K'B:J+2:4L5L% j SAMPLE16.ARC0J,x0ADDRESS.SHTJ,p 1h(B2s`FL6 X6@QL$``B@@ @ $:Jt4r*Ms@U/ Bh_'_ C> |Ւ|HJӮCpѡ4Jh @ȓ85Wڱ Tג*D薬!!#83J{7rZI[i1đ0rȔqb #f( <n!oq@Hһq S: 1-85Up2 PO  , _, &@@bGtȠJx"`*~X|P}`4.hc@) `"BB(ָ$(FBI@QHxPI# ȢAMORT.SHTTJԉk5 1fA y#N=aqP H $@  . )!!D1ĜyRF;{!Ch͚EɥS61NEPÚQOM7t@a(͝2dd.HA!XR޽ ̜Y&^|"|,F HɺqS' iЖSfNZ9(@@>pEYW.)RnڢLvQc \cQ/Deۈ t6#x́FE@Q Al/:P4Mnذ9\, uiYq"Aw"ƎCꁣbPNYTєM%a!HD$L2AX ,є(J':)_Le Әy&r/\\e'R:s&(xԦ:u)}0EQ{4QG:v:bZZV@8d2؈8P{(aRChJt(/( I('PNf\QJ'W \:{:Am#07f@䜖} [!hOkװe:E2al[j!~{D ̸yl  %d_%gOp= pH QDWā Dly|%V @ 5 FwQlo \  ЁIQa!F5-9T/P!ovcamtШcRfXwF`haI$ 4B 7TR\UW 1d\ҡCKǔT ܅^=@XҝQccW`=XKr)գSzHkD~uc8qc ``J?ȷKǝNE WAasha-nbGHvER-9PTg=52<ĵ QG yfƕ[`u]ۺ8z( ,`RCK@%s&Wj. QZ㾭H@e|f`u 7ۥ3_#cJ-Qpsh:Z`btqHǫ)'rsWǖ5mܒ7 պ*`-\Y%p'@8U@%{ D3DN!$Y7NwǛ" ^ pd ouR9A0!̂|Ĵ`_Wx繀{TT:ge^]>egyC7J\\_r(GM CdV]kξ邦Dpb| ~}VG@DKw&DIG)27CpRBAApm "? fQv](@@6k u!JQ- ͒rP:Lx0hMZV)A\%i,6]d*{K/WECLE5a6B؂QA^ v~0@b 7phψW1^ĈDx8c^xMh!((җKA{@jn6qlV{٦c`G;PJ%$x*AgZ{U%! H#p@p&Sic.0Nũw@9 eqSL fr'2&kYKle-li .>ϖW1B4 @ OB#X=P#I(  P/l,^hIAI/'i&uk)A @)S_6 .CdbFG.SHT.SHT|J։ 1bpÆ/8`| oX,8@C2 ysv°H p P`  z @S JU 0`3Щe)FͩSj @l}I 1oڔI@լ.t W*,W_ ȑ&Wv27,!2lb<2ΔgL Z+iӞi,o#@e-P pHNmwď2E` hHG/V8INVEST.SHTJ։ 1bpÆ/8`| oX%G@$qc:mʸ0m)x@>8p>/0! M&$P0i@II,phc:i°M ̼" G EA̩U/ U) nvd9pA C ]6&NQ9fNƈ?&Y7dʐyL9 H:e\7 ⍙?842VF#KK/ h"MqFR_<Ƞ))rgW-@TOqWGpUT] JŠJav R@pr͉'Ԉ 0n\ߴxc;~TJUP T]EP$M%m d%^fI$aV&4wqp 0GP Ą%*§]9d|6@"SŦTnbJ`!w'TO %VG $<дRA I!Yat 1 U@}Cofqg4k5g .PM)\4!m1l1ZipFgul1J[ng-ؒ .-K[4sL+Gvּnf/Wh F~ ́Yl̛M/9\ 4A1qfPSl-n%GZ Q$MJe 3@ MH+NŖT`uJ+y 6={si ]IvP]Itg &ܹѹ1]upr=6AVV`cu\g5pzh$1jXfy?q]^EXYgv=fU QUdV 4AG E_Ш z_ _?{JT%3a +|h# (,6D/kjNHGDp) ~ ( *΅ u ٭rŒAXĂCH1b-'cB4yASd7hq- B0:lv%*XwJ#.1)2ܳ M7e,C9D@FtG9-#MF;evht5!Apo%H\P"ѝ 0}Lap8&9 EIT2 H@#J<,)!l f$FB3 pTjI(SPDs9rzWI$Ԥ89\2y4O"9!ubf BeJJy64,k9<~R`٣/ |'nbCO@!kz(IlX+?UIhY@t6IOJU80SXR$S5UAeUP.=<ȵ|xf,ؠS*΁|LOAN.SHTTJ׉IS 1bpÆ/8`| oX@$C@0y nBd6pؔn@Y$@EHDͣ Pz4NGtހ0M1+À@uJ3o  @]ZGk@1c9 fhL93 H@n!%"ysD:cЬ cge ‚&7na[ Yc&ɗd2U;~G/^03UX\@pe%]~`S@%@-QPɛQ՚% eȹgIըLP QF{pXlBA_RK EF4OH<@L PRReijꝉP+j(VP!b*07&x*!KKŹ"h"*d1W7tn "ÈqwcrgN RbE\@/yw!y.SmI%q3$̛e?dI}4" u;=|*WzK"TrKĘP* Ь6jձ^딁 P|0FG AX\d[pݺ$YEb텛W鶆L.}  q~.{_ `] `fg9cNj.A Lw!ٹ}ry\G{|3}$r/hR?S"/ Z!8NQƌd +T `3 VbLwA `>>}:vV' M>0ȐL2 !2jBZH(#ℶ:!\*(%VVu\ UUy/YkHJDJxs yAfr# 3AVӚϸ Mp̅r%al(4x  b` x JМ2@CP {N :\h9T x0,ubԎc /1U2LO^ƚx+` Xwp٨װ! 3qR7__bAs"򘕔%_W: o;@Z&'|!MxB@HZIT  @( ق^|Œf8s8@$p@A 0 1)V/IR(3H7sVRAsC ʂHd'Y@;eH͜}G`4(ҭ (*4T%)K[$ʅdLOTTERY.SHToJ x 1h(`2rpRs@pEn@^$0```pȓl@NF6(2d)37u KӸy(F )D#$%jԒ*dp>= c8\)LV!Rq)tJMa!`q$1 AQДxS E~4 a+U0$ M@Q'̙r¸! 7/hadpFeх g %J]aXb`Ѐgidfڇclyn(WmuFn@CWǞ{YD[\pVf^T1Gc,PUVsxuk8^{ 'ph1XUvPYZ( Xr'xI=ywƦYr AiD_i^xAQ1<Z*4\q'rnDq.BX+ D @ rᴣңS( *@!2h,g1x)ˡ^57d lr ZHmC$[͋v A=^@'aSN7ntT>00É;LW 6$r Թc;8(Q DOD zQ} *h1 6Q |:hB =u1ifGqg wv.% |Α .! hAB} Gr4tc G怆 g~Q la}tu1GqQ1iI.$eQt D3"  ! RP<1EI˜V!ŨGNiDJ2ЋA(+B pTY IGe8k)U'hԉdadcc1憘w [+sNX](ܢ@ߥ XǛ rQX7ReT(GQRANDOM.SHTJى| 1fA qCMnSF9tI1͘9 :HP+ `@䬹.\VӒ*L ˁ%`N>>p9/B2dBxi؅d%(@Y?PiԖQ=z,$ȄtP) 6N" kS]25@Z4iw}kNP;jw ~ѻEͻQSh^wp ~3'ۨp6 ROSES.SHTmJى{ 1fA Sfrʘ)#7 2 dq0@p0pAK-@9d(!N! H $$<0NTa*D,$ |*جnSCNyÆSk7Qpu]v [u, bxYu.v-&Q+Hܒ>aZ3.۔$ qjL& v@֙q"T4$#bhj*MR WoSD@R&U?QDN!kJ&.PG8GBA.,TET'eAR AiqP@XyO;D(ƋU8++,0WITHDRAW.SHTLJډk 1bpÆ/8`| oX@$C@\IC 9a 0m)x`@8H'@ PP)e ?):h jP 4\M5H7uqG9e`!hx LCCޤ 4r3$2(¸qS' {:`†RyC3mH ]Cz7;t2լNĞ]vwvS&cB6 R T.@N=Ꮈ}|DkO4U_yQGZB`1dq`%}B( Ġ%d獘_M&  w!-@"MLUDxV]}E^I%voFcaRp@ Q\m uUBva1csa\hswDoFC 1lnE6\8PC i cV'.TQA@>fdsha-Ѥl!G>d:k&eJ*P$IuX9e,!* .*&V҆+f:&mtrin4%Wz'M/:Vs EiGaUQea@6&\fBf%em Cֵp1*$Kܑ!w@JpUĬY%tD,MqC@!U-4$L$7!6_6)4z }AK 4Zk&ۧsD1t%zP vrmIGu4@`sP6ha5K+ `Jp[p {`E: XʆĤ!h&m+j 檲*jZRF%J4f&3RK4[P\IH`6酢%-IF}4 L4EM2Lʰ-_Qhs s2 *(68`ij6׸9yCig,: Cd ֺucE,jkJ`yv~  vC)DR4 @Cd!Kmz*D0 V2+u04lR]H@,J iSG˂(d!$6 kޕF$@I, Cj~zUfU[eWz@Sً)(T!p#Ia e DB) EA2-RC8H 3@QT(` Aʼ&-X)Nr#APO [b`3)H (:)SAMPLE17.ARCJ*#ROOTS.SHTJډM K 1fo`)oa&2e@D `@;n`0p͚n@H7 A-zԦ-ɴ@EKX$qңJA@ 4R\ ,&At];ٸs ki >mV)smѫ+6ilb i@!y\J5sܱ4%> E%#aX c-kNY2 +̔9teXSʘD`Pth .[I3 9eaSN7n@ySD 8zMAFuiF$K%)!$h([hXARD07Prav cH(!^Nõt"H h@ IPUV(bZUw@D`@MВH@-Sre%leEe"D9F@)]'h)W.}z6U3ۜ͆gzZ+gk M aVc %r*^,'kISށtmgzC~QFr$C'gh EɀHLlrh{^ۆCi`dFxa !GC;INVAVȚz."cAm,c!|rA ,efk-r;zTHL@3lum;!+211s7=3+Gh ]tG+t63-EW["\V Jz7Ҵ j~AuWUW"e)9˅'z@x( 2u"Xbb.~mTg SE ]\CN[#P\ Jo/<]\=Ę. =l-f-_;yVM Rv%n"(h5 7 4s4SAMP17C.ARCN JщN BIORTHYM.SHTLJω1 1fo`!iȡ&O &@cݹ#&@#Vo vmuPLa DXEٶ`'_nکCuMs)jjB;{@F'l j+P=ٱZ뭹bk=>@JiD z | q##a4>@~0mym<6b8TI9~[(W;PIaz0+.Sz5*{B-K5>k@3Biz4#0S-A-T}18eA/`6Cg+ф"'-k 'Z }b@3tf1gmx0)Tm0N0ҝt48/+X UD CBd lD`]-dp>|Mu(TXq%!@2 eD>B7jR=I CcHGRID.SHTSHTJЉ 1fAG$!Bp 2M &@*A>l@9 |(C3mvW% !*@fG#h@ BE jT0m83cNQf\*VU U{yj+چ3 `fF8Z}0L+M|T:R2AY+`@A]=쀥M HoӨSINCURVE.SHTfJЉ 1fA qSĐ:r4@@ pxBpz &`͚H@H#UG=p) U ERdd@U~USN>:"Z$@ 8% E wo_x;\JYaHz5f*`ƵY.Ѥ 4`1M'Ej6Dnثj@CBٮΧJ.g &`;V&f0կ{}%x@0\4'Vz UH8CE$_YہXLV@3D(H P53(V" SPLINE.SHTT@Jщ^ 1fAS0I:e28% 0QBpU NxXBHD 8`@z8#zH($($:QHN[E^t` PPD`I K&(u =&*`έ{wFM )O@\Ť=cRǐ (EAQeXieZOAUC" A@ .!8LbϽB6SO۽L88QɐE$QA%TCNxi%([X58LGyY WN/m0r؉D9#0RE!S/9eUyeDJSmBNhj&X"r&6xݡGnZj*}QIFMVk4?MJSVt%P8Jҋ :: {+0 q+aʒ~)v)}W!gZ|MlydO ]xs ˯@m\\.-D$ 3<ҤpAjq Xy1fLj wơ|`@A1|`fx|qR"n/JU_!V35_L;D=۫Q͕@YQVHwo-u0@6M|0L;"d&VT`̆-1."srcXe*n`df9SAMP17M.ARCd JӉd BIORTHYM.SHTSJщ<1 1fo`!iȡ&O@$@@62T' DH 8I!  !@, @ѦOB @4"iSF>:DH<1mҸ9IPo$j'`6)piX|M >/ؕW+3D C 7f@ \)Tܔ*b _1!`Dh@QِjWv"k!8䲥+WGrA@P " @d7 ACD^!,2SןuDUA&oF%b ,QP D@%b8P7 n@*UDH%!&LVeAy( V_ kBaE-6LxCeDE^(!nTb&nUy["q ȁ%E4I gg+$Uy1rD[&G;I:lk@3B@Ly{4#`-T`uT, ߲ΕhBt `X-žs]` k3X!І7!!n/!:*LIQ2u"}g69ʞTǢ1GRID.SHTSHTJ҉  1fo`#R0  L@ x. DH" BR& 攈@NH D@ Q !Pd5HREWn:TϦpBBFJ XW`:p@**D߼kNZ-P@C2]Y+X 4 d Mkp% ޯ~0X`QVQDi uRSINCURVE.SHTjJ҉ 1fo`SҸ)bH9v `@{dJγ-I(ab-Apd J@W/_(`卹u +TLk\Kh@c OF`Dx=-W =e `xVdT] nn=l֭T)zדCް*]'݉c5] qX1D|`b !6$@=LD坈Di42oiMD UHSPLINE.SHTTFJӉuB 1fo`)P$qR2s@; \ x& `'<,HP!$}$(`j`Ş@y$0pTQ'Q((*`6*4ϣP4@jI K&9g=&*`έ{o@аGVGQ)? ?-@U EtUH -z96KYr6tWG$ 5u\n[nv{N7G$-+D{@M<`q㥐5lp-e+ >QaDRmՕOEUC" 1@ .!8LP̽B6ȕO0A;G%D?CN4YT (;96z Yfh$)Q1j "7'uޙOA6#0RE!Sɠ(VVte[@&$D jmztѦ*DFT{DMe@m.#2,0ymۚR`S)VuOQ޹d-Ѕ7 D&L\\.-D$ 3|&Z}eV@iq 2RyigvȦ  TTq35 x[ Ȋ-T@5Xo~im`%>0Y3Ŗb:s<_niUf}3F.[o7ȅ=6 V(S$PPU_̆-2.Lh1iHX"U*m89M SAMPLE20.ARCJʟCAL.SHT JۉNV,% 1h(FN!Ip H*O&8I"E42I"D#&P&R$TTR̚1Ӡ,C°)L9 $N`hI׮`&&R@K$d ,R`aK$(6V"8d 7b   Ԫh6ٳkM m|`@oF@w@_гn>AN ҕ"E E1a @Q% +:8$GX"T86kj,$j^LQ Ik"!]y*\~XTQFȡByqEdd.$hԑ!u<~hFȑFvTz'#,DחDcb w |^_I~#l'}ǟrf)| o9 Yߡt na^LȜn0kzmĸ*q鎳^㫗+GizY^e* !.PpZ-*A\ߪ꠸-UDI &:`|40ЖamAHbf@Gn^){n n܀֪%Tx!-a aL-f;ߘn@|1rSdmhtLtLW ;S$23sK ;O1mͶj}T&I\I>+_( $PȾBϒ 4Y&Žԅ>(">+!˸ OΈX!<3LK@Sm9dlf+Hą֢&9lPvB p<$˃@ 0D@MhEx8^Eyd"ݤ`zP&Dᙤ#zQJLO40EL@Sp7j OǓ@$< 4O}Y=~{_^&@ 0u7 7M`yh&Lu#C= ?j€E~?4YBQxHGQ(wSV`*p $˫@*з#fH [H%HOe )q! % 03I,p< $˳@,7ZI)P}NcYԛ4j/@ ɻ.м m^/P%B9b h& s#, Tⅷb/aq/|Fm1O7a >OU+=eɼda)1LWd'd<I$y 2ɢdrJeS&L 3$2Bޜv ~T/31v wO 5Z O@4< 4O}K&O~X W 1^d@@+Bn=q4j7@ o6м 4t hrx8ǁqy-B.9A ;@:4}s:X @D:IG 8wA-Ї@b7PyxHyoI!a 3L4j?@>мM`0.Yb7 !P x H恠oH0 Bp$/ AB`݈"mD+è/x&{x/|?c- :JAir<\Gy"#2z-Ǟx{1lcf<3#psgTαИo#\O " ֖ jMmR~4$jI@<#H<-@Oa*B`MzDG%@C%Z%@<%p<%<%<%<%}PR>zZ~T^1Q~?G&@C&Z&@<&p<&<&<&<& &8uGf!,z@ve'@C'Z'@<'p<'<'<'<'vp[B 4ăǃɃ˃̓})@C)Z)@<)p<)<)<)<)BC*Z*@<*p<*<*<*<*y"zN3z+@C+Z+@<+p<+<+<+<+ +0D=~gT8l4,Px狍狏狑,0yXyxyyyyX,~ ؂~t-{-0{ۇ y-{GJl}Ʒ}ͷ}Է}-}-}(-PEC ye.@C.Z.@<.p<.<.<.<. . y%yIy4\_0@C0Z0@<0p<0<0<0<0 1@C1Z1@<1p<1<1<1<1 2@C2Z2@<2p<2<2<2<2 3@C3Z3@<3p<3<3<3<3 4@C4Z4@<4p<4<4<4<4 5@C5Z5@<5p<5<5<5<5 6@C6Ћya60Yy`xxxxxXxwKef7Z7@<7p<7<7<7<7 8@C8Z8@<8p<8<8<8<8 9@C9Z9@<9p<9<9<9<9 :@C:Z:@<:p<:<:<:<: ;@C;Z;@<;p<;<;<;<; <@C@C>Z>@<>p<><><><> ?@C?Z?@`O!Ip H*O&8I"E42I"D#&P&b **P)2KVhR%xguk}ɖ~ rrV-s 0ƘkX|w6V_|xs0!4Rcx͝@AF K,0jDp&DNUMBER.SHTJ܉Q 1h(pR2r0#MFҰ)6@ @ Hp0 L(@s 8 @`ۡ7A)3 :x݀P)$, [)Ө1d`A 7pn۳ Jt!0llTz]e8gKtBH`-!,(,ḒYE*%d "H ; ; 7 7 2 2 - - ' %                   / /    w w r f c c J c1cQccP "  cQcP wpwppwU33ssxx``<<``||<<88<<8888ff88ll``ff``ffffffff>ff<><>ff``|<|<<~<~f>fff~<~> 00f<>```f`fff`` xx0000`f`f>f>f`` 00000000`f`fffff``xxx|x| 0 000p|p|pp||xxxx||~<~<>>>>~~ 000000 0000  ||0000000x0x00xx||00x0x0<<<<||`0`0000 0 00 00 0 0ffffxx|||| 00xxxx||xx`<`>f~f~#" "  (ffff<`<`ffh" " (<><><<<<a<x"p({<pMr qz'" ""I<||||" "x"@hffffpG"Af|f|8|8|~~ff |f|fff||@````ff``````ff``0````6><<66)*z()DD@@13ss ss????ss 3030 DDss ?? ss̀ 00 ss>>DD p??$0DD? @D8@l?13?@D$y 8mL9?@D _EID ?8< DDPE@D?ND@?0??%'DD?a?q ">@"x DD@G"q=?DD13T8DD=?=?DD1313DDDDDD1313DD13O13qG # HDDq O1313DDDDυχ13!#DD1313DDDDDDυχ13DDϝϟx`< p DD G<Ȃp <DD13DDŏυχ%'99DDEEEP}EE@9E0DDp"p=?("I?("@hpADD13``0000DDυχ=?=?DD1313ϝϟϝϟ  `` DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDHDH ``00 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDHDH00`` ``   !!w$w$o&l&h)c)^+^+B)??BBEGGJJLOQQTVYY[[^__cceehhjjlloorrsRsRwwssr r llhhecc_^^[YYVTTQOOLJJGGEE??=;;86m6c1cQccP E= cQcP D= cQcP E=cQcP E=cQcccPc c``wpwppwU33ssx~8<8<88p|~8~8~88p<n`ff0$@f<>`8<Á< f<f<>x0?|9Af~~|8~~ `~`~~0 &@D BC ff`|fǙf`f`f`0?d&@d9Bdffp`f㙙f`f`fp0&@$ Bf~<`~񙁁f0`f`~<0|&@f b|f```f0fff`00@B D#n```f`fff`0|~|~~`<<~~`~~<~~<<~xx>|`<<><`<<<<><<||xUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU~UUUUUUUUUUUUUUUUUUUUUUUUUUUUU~UUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUUUUUUUUUUUU`|<><UUUUUUUUUUUUUU|~>~~UUUUUUr$ LUUUUUUUUUUUUUUUUUUUUUUU|f`f"?>$? LUUUUUUUUUUUUUU``>pfUUUUUUad"&&$Ɇaa!LUUUUUUUUUUUUUUUUUUUUUUU``~<~ꪪRL$22O!!<UUUUUUUUUUUUUU``f`UUUUUUr@$ RH!! UUUUUUUUUUUUUUUUUUUUUUU``f`ꪪRO$3r>O#1<UUUUUUUUUUUUUU~`~~~UUUUUURa&!&RɄa"UUUUUUUUUUUUUUUUUUUUUUU~`>|>ꪪ???UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUꪪUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUꪪUUUUUUUUUUUUUU8UUUUUUUUUUUUUUUUUUUUUUUUUUUUU8ꪪUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU<<<<ꪪUUUUUUUUUUUUUU~|>|UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUf``?ꪪUUUUUUUUUUUUUUf`>`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU~`~`UUUUUUUUUUUUUU``f`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU``f`UUUUUUUUUUUUUU~~~<~UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU>>><>UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU~8U~8UUUUUUUUUUUUUU`U8~<` `UUUUUUUUUUUUUU8~~``a `Uf``a UUUUUUUUUUUUUUf``a` U~``a`UUUUUUUUUUUUUU```a` U```a` UUUUUUUUUUUUUU<<~``a` `U<<>``a` `UUUUUUUUUUUUUUaaUaaUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUU U UUUUUUUUUUUUUUUUUUy  U  LJ`UUUUUUUUUUUUUUUUUUy  0U   UUUUUUUUUUUUUUUUUU   pU  ǃ@UUUUUUUUUUUUUUUUUUy    @U    @UUUUUUUUUUUUUUUUUUx ǏU Ǐρ<~UUUUUUUUUUUUUUUUUU`@$`Ux|9w~ 0UUUUUUUUUUUUUUUUUU D L00000 Udd9ɐI&Nt&I UUUUUUUUUUUUUUUUUUd$ 0I BD I Uxx2df &I'v 'ɐ 0UUUUUUUUUUUUUUUUUU HH "dB L 0H00H02`U s?~~~&UUUUUUUUUUUUUUUUUU@@D`d<UDs22O$UUUUUUUUUUUUUUUUUUH2>a$ Uɂ |$ UUUUUUUUUUUUUUUUUU@&DF Ad U ǀ UUUUUUUUUUUUUUUUUU U UUUUUUUUUUUUUUUUUU U$UUUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUU`??U""UUUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUU`U""UUUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUU`U""UUUUUUUUUUUUUUUUUU`U?UUUUUUUUUUUUUUUUUU`U""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ??{U ??02@NI0""UUUUUUUUUUUUUUUUUU<&I@DH0ɐU<>>'ɒ@@H&IUUUUUUUUUUUUUUUUUU<<<$ @JH&H0U<<<3'ɒ@NI I0""UUUUUUUUUUUUUUUUUU<<<3&I|JI&IU<>>02JI&IUUUUUUUUUUUUUUUUUUUp"""UUUUUUUUUUUUUUUUUU2 ULf AUUUUUUUUUUUUUUUUUU23 ""UUUUUUUUUUUUUUUUUUa"ULs2UUUUUUUUUUUUUUUUUU0O"@FHU0a2s2H""UUUUUUUUUUUUUUUUUU| >2HUL ɂ3UUUUUUUUUUUUUUUUUUpa& DF!U0??""UUUUUUUUUUUUUUUUUU0 U0UUUUUUUUUUUUUUUUUU0U0""UUUUUUUUUUUUUUUUUU0IUp*UUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUpUp""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUp""UUUUUUUUUUUUUUUUUU0U0UUUUUUUUUUUUUUUUUU0U0""UUUUUUUUUUUUUUUUUU0UpUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0U0""UUUUUUUUUUUUUUUUUU0U0UUUUUUUUUUUUUUUUUUpUp""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUpU0""UUUUUUUUUUUUUUUUUU0U0UUUUUUUUUUUUUUUUUUpUp""UUUUUUUUUUUUUUUUUU0U0UUUUUUUUUUUUUUUUUU0U0""UUUUUUUUUUUUUUUUUU0UpUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUpU0""UUUUUUUUUUUUUUUUUU0A@@U0?LOUUUUUUUUUUUUUUUUUU0HaDLO U0HLĘA`A""UUUUUUUUUUUUUUUUUU0HL0L!xO1U0LĘL! HOyUUUUUUUUUUUUUUUUUU0aDAa H@$ U0?x""UUUUUUUUUUUUUUUUUUpUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUpU0""UUUUUUUUUUUUUUUUUU0U0UUUUUUUUUUUUUUUUUU0U0""UUUUUUUUUUUUUUUUUU0U0UUUUUUUUUUUUUUUUUU0U0""UUUUUUUUUUUUUUUUUU00U8pUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUU00U00UUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUpU0""UUUUUUUUUUUUUUUUUU0U0UUUUUUUUUUUUUUUUUUpUp""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUU00U00UUUUUUUUUUUUUUUUUUU""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU08U0T""UUUUUUUUUUUUUUUUUUpUpUUUUUUUUUUUUUUUUUU<U <$A""UUUUUUUUUUUUUUUUUUpd|?~AUp|02 D 0@UUUUUUUUUUUUUUUUUU0 &Idd&I&B@U0$&Id$&I B@""UUUUUUUUUUUUUUUUUU00d'&Idf&L'aU8p 102 B&O0!UUUUUUUUUUUUUUUUUU0Ґ0x~?0~U&R0ɐ""UUUUUUUUUUUUUUUUUU&S&IU&R&H0UUUUUUUUUUUUUUUUUUq&P I0Up&Q&I""UUUUUUUUUUUUUUUUUUp0Ӑ&IUp?UUUUUUUUUUUUUUUUUUpUp""UUUUUUUUUUUUUUUUUUpUpUUUUUUUUUUUUUUUUUU0U0""UUUUUUUUUUUUUUUUUU>pU>p UUUUUUUUUUUUUUUUUU0U8""UUUUUUUUUUUUUUUUUU<U>UUUUUUUUUUUUUUUUUU0?D~?U0?&L 0 00""UUUUUUUUUUUUUUUUUU?&Id'd&IU>&L2$ |&IUUUUUUUUUUUUUUUUUUp6&O|'@&IU0#0H30@0UUUUUUUUUUUUUUUUUU0~U0UUUUUUUUUUUUUUUUUU0U0@UUUUUUUUUUUUUUUUUU00@U8p@UUUUUUUUUUUUUUUUUUpUUUUUUUUUUUUUUUUUUU 0U`UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUU`U """"""""""""""""""""""""""""""""""""""""""""""""""( UUUUUUUUUUUUUUUUUU`U4 UUUUUUUUUUUUUUUUUU`g9U""""""""""""""""""""""""""""""""""""""""""""""""""( UUUUUUUUUUUUUUUUUU` Ug9UUUUUUUUUUUUUUUUUU`4  U""""""""""""""""""""""""""""""""""""""""""""""""""(`UUUUUUUUUUUUUUUUUU`  `UUUUUUUUUUUUUUUUUUU`U""""""""""""""""""""""""""""""""""""""""""""""""""(UUUUUUUUUUUUUUUUUU`UUUUUUUUUUUUUUUUUUU_UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUNOPQRSTUVWXYZ 1234567890 -=`[];',./\ abcdefghijklmnopqrstuvwxyz !@#$%^&*() _+~{}:"<>?| x 22 point ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 -=`[];',./\ abcdefghijklmnopqrstuvwxyz !@#$%^&*() _+~{}:"<>?| x 24 point ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 -=`[];',./\ abcdefghijklmnopqrstuvwxyz !@#$%^&*() _+~{}:"<>?| x 26 point ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 -=`[];',./\ abcdefghijklmnopqrstuvwxyz !@#$%^&*() _+~{}:"<>?| x 28 point ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 -=`[];',./\ abcdefghijklmnopqrstuvwxyz !@#$%^&*() _+~{}:"<>?| x 30 point ,ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 -=`[];',./\ abcdefghijklmnopqrstuvwxyz !@#$%^&*() _+~{}:"<>?| x 32 poi SHEET -- FOR ATARI ST A BASIC interpreter in a spreadsheet environment Atari, 520 ST and ST are trademarks of Atari Corporation GEM is trademark of Digital Research, Inc. Lotus 123 is trademark of Lotus Development Corporation Copyright (C) 1988, Chor-ming Lung. All rights reserved. Table of Content ________________ Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 PART I -- TUTORIAL . . . . . . . . . . . 3 Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Example 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Example 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Example 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Example 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Example 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Example 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Example 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 PART II -- Spreadsheet operations . . . . . . . . 22 MENU SELECTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Desk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 About SHEET . . . . . . . . . . . . . . . . . . . . . . . 23 File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 New N . . . . . . . . . . . . . . . . . . . . . . . . 23 Load L . . . . . . . . . . . . . . . . . . . . . . . . 23 Load WKS . . . . . . . . . . . . . . . . . . . . . . . . 23 Load PART . . . . . . . . . . . . . . . . . . . . . . . . 23 Save S . . . . . . . . . . . . . . . . . . . . . . . . 23 Save WKS . . . . . . . . . . . . . . . . . . . . . . . . 23 Save PART . . . . . . . . . . . . . . . . . . . . . . . . 23 Print P . . . . . . . . . . . . . . . . . . . . . . . . 23 Quit Q . . . . . . . . . . . . . . . . . . . . . . . . 23 Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Erase . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Defaults . . . . . . . . . . . . . . . . . . . . . . . . 23 Options . . . . . . . . . . . . . . . . . . . . . . . . . 24 Dates . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Row/Col . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Insert I . . . . . . . . . . . . . . . . . . . . . . . . 25 Delete D . . . . . . . . . . . . . . . . . . . . . . . . 25 Col widths . . . . . . . . . . . . . . . . . . . . . . . 25 Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Reformat R . . . . . . . . . . . . . . . . . . . . . . . 25 Erase E . . . . . . . . . . . . . . . . . . . . . . . 25 Copy C . . . . . . . . . . . . . . . . . . . . . . . 25 Move M . . . . . . . . . . . . . . . . . . . . . . . 25 Adjust A . . . . . . . . . . . . . . . . . . . . . . . 25 Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 - i - MOVING AROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 EDITING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Types of cell entry . . . . . . . . . . . . . . . . . . . . . 28 Formula . . . . . . . . . . . . . . . . . . . . . . . . . 28 Constant . . . . . . . . . . . . . . . . . . . . . . . . 28 Statement . . . . . . . . . . . . . . . . . . . . . . . . 28 Command . . . . . . . . . . . . . . . . . . . . . . . . . 28 Text . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Rules for constructing formula . . . . . . . . . . . . . . . . 29 Cell input . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Move the editing cursor . . . . . . . . . . . . . . . . . 30 Modify your input . . . . . . . . . . . . . . . . . . . . 30 Terminate your input . . . . . . . . . . . . . . . . . . 30 Miscellaneous operations . . . . . . . . . . . . . . . . 30 Modify a cell . . . . . . . . . . . . . . . . . . . . . . . . 31 Editing direction . . . . . . . . . . . . . . . . . . . . . . 31 CUSTOMIZED DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . 32 Change column width . . . . . . . . . . . . . . . . . . . . . 32 Default display format . . . . . . . . . . . . . . . . . . . . 33 Display format: . . . . . . . . . . . . . . . . . . . . . . . 33 Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 De-select blocks . . . . . . . . . . . . . . . . . . . . . . . 34 Change display format . . . . . . . . . . . . . . . . . . . . 35 COPY AND MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Relative and Absolue cell reference . . . . . . . . . . . . . 37 ERASE CELLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 INSERT AND DELETE . . . . . . . . . . . . . . . . . . . . . . . . . 39 Row/Column selection . . . . . . . . . . . . . . . . . . . . . 39 LOAD, SAVE AND PRINT . . . . . . . . . . . . . . . . . . . . . . . 40 File extension . . . . . . . . . . . . . . . . . . . . . . . . 40 Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Load PART . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Save Part . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Lotus files . . . . . . . . . . . . . . . . . . . . . . . . . 41 Print . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 PART III -- SHEET BASIC . . . . . . . . . . 43 Cells and Variables . . . . . . . . . . . . . . . . . . . . . . . . 44 Cell reference with dimension . . . . . . . . . . . . . . . . 44 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Cell reference with variables . . . . . . . . . . . . . . . . 44 String . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 String operators String operators . . . . . . . . . . . . . . . . . . . . . . . 45 Flow control Statements . . . . . . . . . . . . . . . . . . . . . . 47 IF .. THEN .. ELSE .. . . . . . . . . . . . . . . . . . . . . 47 GOTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 GOSUB .. RETURN . . . . . . . . . . . . . . . . . . . . . . . 47 - ii - LOOP .. EXIT IF .. ENDLOOP . . . . . . . . . . . . . . . . . . 47 FOR .. NEXT . . . . . . . . . . . . . . . . . . . . . . . . . 48 RUN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 I/O Statements . . . . . . . . . . . . . . . . . . . . . . . . . . 49 REDIRECT TO . . . . . . . . . . . . . . . . . . . . . . . . . 49 PRINT statement . . . . . . . . . . . . . . . . . . . . . . . 49 Miscellaneous statements . . . . . . . . . . . . . . . . . . . . . 51 SAVE SCREEN . . . . . . . . . . . . . . . . . . . . . . . . . 51 RESTORE SCREEN . . . . . . . . . . . . . . . . . . . . . . . . 51 WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 DEFINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 MESSAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Text files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 GET_FILE . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 INPUT #n . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 PRINT #n . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Worksheet commands . . . . . . . . . . . . . . . . . . . . . . . . 55 COPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 ERASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 REFORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 SWAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Console commands . . . . . . . . . . . . . . . . . . . . . . . . . 57 CLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 CURSORON . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 CURSOROFF . . . . . . . . . . . . . . . . . . . . . . . . . . 57 VIDEOHIGH . . . . . . . . . . . . . . . . . . . . . . . . . . 57 VIDEONORM . . . . . . . . . . . . . . . . . . . . . . . . . . 57 GOTOXY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 INKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 UNGET . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 INPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Graphic commands . . . . . . . . . . . . . . . . . . . . . . . . . 59 Setup commands . . . . . . . . . . . . . . . . . . . . . . . . 60 WINDOW . . . . . . . . . . . . . . . . . . . . . . . . . 60 VIEWPORT . . . . . . . . . . . . . . . . . . . . . . . . 61 SCALE . . . . . . . . . . . . . . . . . . . . . . . . . . 61 CLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . 61 EXITGRAPH . . . . . . . . . . . . . . . . . . . . . . . . 61 Line/Dot commands . . . . . . . . . . . . . . . . . . . . . . 62 ATTRIBUTE . . . . . . . . . . . . . . . . . . . . . . . . 62 LINE . . . . . . . . . . . . . . . . . . . . . . . . . . 62 LINE_TO . . . . . . . . . . . . . . . . . . . . . . . . . 62 PLOT . . . . . . . . . . . . . . . . . . . . . . . . . . 63 PLOT DATA . . . . . . . . . . . . . . . . . . . . . . . . 63 SPLINE . . . . . . . . . . . . . . . . . . . . . . . . . 63 Turtlegraphics . . . . . . . . . . . . . . . . . . . . . . . . 64 - iii - FORWARD . . . . . . . . . . . . . . . . . . . . . . . . . 64 TURN . . . . . . . . . . . . . . . . . . . . . . . . . . 64 TURN_TO . . . . . . . . . . . . . . . . . . . . . . . . . 64 Axis command . . . . . . . . . . . . . . . . . . . . . . . . . 65 MARKX . . . . . . . . . . . . . . . . . . . . . . . . . . 65 MARKY . . . . . . . . . . . . . . . . . . . . . . . . . . 65 LABELX . . . . . . . . . . . . . . . . . . . . . . . . . 65 LABELY . . . . . . . . . . . . . . . . . . . . . . . . . 65 Text command . . . . . . . . . . . . . . . . . . . . . . . . . 66 PTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . 67 MOUSE_POS . . . . . . . . . . . . . . . . . . . . . . . . 67 Tips on using SHEET BASIC . . . . . . . . . . . . . . . . . . . . . 68 Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Using previous row format . . . . . . . . . . . . . . . . . . 68 Error Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Multiple statements . . . . . . . . . . . . . . . . . . . . . 68 Garbled screen . . . . . . . . . . . . . . . . . . . . . . . . 68 Adjust . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Appendix A BUILT-IN FUNCTIONS . . . . . . . . . . . . . . . . . . . 69 Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 General functions . . . . . . . . . . . . . . . . . . . . 69 ABS . . . . . . . . . . . . . . . . . . . . . . . . 69 INT . . . . . . . . . . . . . . . . . . . . . . . . 69 FRAC . . . . . . . . . . . . . . . . . . . . . . . . 69 FACT . . . . . . . . . . . . . . . . . . . . . . . . 69 SQR . . . . . . . . . . . . . . . . . . . . . . . . 69 SQRT . . . . . . . . . . . . . . . . . . . . . . . . 69 Trigo & logarithm functions . . . . . . . . . . . . . . . 69 SIN . . . . . . . . . . . . . . . . . . . . . . . . 69 COS . . . . . . . . . . . . . . . . . . . . . . . . 69 TAN . . . . . . . . . . . . . . . . . . . . . . . . 69 ASIN . . . . . . . . . . . . . . . . . . . . . . . . 69 ACOS . . . . . . . . . . . . . . . . . . . . . . . . 69 ATAN . . . . . . . . . . . . . . . . . . . . . . . . 69 LOG . . . . . . . . . . . . . . . . . . . . . . . . 69 LN . . . . . . . . . . . . . . . . . . . . . . . . . 69 EXP . . . . . . . . . . . . . . . . . . . . . . . . 69 RAD_DEG . . . . . . . . . . . . . . . . . . . . . . 69 DEG_RAD . . . . . . . . . . . . . . . . . . . . . . 69 DATE functions . . . . . . . . . . . . . . . . . . . . . 69 DATE . . . . . . . . . . . . . . . . . . . . . . . . 69 DAY . . . . . . . . . . . . . . . . . . . . . . . . 69 MONTH . . . . . . . . . . . . . . . . . . . . . . . 69 YEAR . . . . . . . . . . . . . . . . . . . . . . . . 69 Matrix functions . . . . . . . . . . . . . . . . . . . . 69 INVERSE . . . . . . . . . . . . . . . . . . . . . . 69 TRANSPOSE . . . . . . . . . . . . . . . . . . . . . 69 Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . 70 AVERAGE . . . . . . . . . . . . . . . . . . . . . . . . . 70 MEDIAN . . . . . . . . . . . . . . . . . . . . . . . . . 70 STD . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 VAR . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 SQR_SUM . . . . . . . . . . . . . . . . . . . . . . . . . 70 - iv - Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . 70 MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 SUM . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 RAND . . . . . . . . . . . . . . . . . . . . . . . . . . 70 IFF . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 ISEMPTY . . . . . . . . . . . . . . . . . . . . . . . . . 70 TRUE . . . . . . . . . . . . . . . . . . . . . . . . . . 70 FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . 70 ALERT . . . . . . . . . . . . . . . . . . . . . . . . . . 70 COL_WIDTH . . . . . . . . . . . . . . . . . . . . . . . . 71 LAST_ROW . . . . . . . . . . . . . . . . . . . . . . . . 71 LAST_COL . . . . . . . . . . . . . . . . . . . . . . . . 71 SEARCH . . . . . . . . . . . . . . . . . . . . . . . . . 71 Finance . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Future growth . . . . . . . . . . . . . . . . . . . . . . 71 GRATE . . . . . . . . . . . . . . . . . . . . . . . 71 GBASE . . . . . . . . . . . . . . . . . . . . . . . 71 GFUTURE . . . . . . . . . . . . . . . . . . . . . . 71 Investment . . . . . . . . . . . . . . . . . . . . . . . 71 INVEST_PV . . . . . . . . . . . . . . . . . . . . . 71 INVEST_FV . . . . . . . . . . . . . . . . . . . . . 72 INVEST_INTEREST . . . . . . . . . . . . . . . . . . 72 INVEST_TERM . . . . . . . . . . . . . . . . . . . . 72 Loan . . . . . . . . . . . . . . . . . . . . . . . . . . 72 LOAN_PAY . . . . . . . . . . . . . . . . . . . . . . 72 LOAN_AMOUNT . . . . . . . . . . . . . . . . . . . . 72 LOAN_TERM . . . . . . . . . . . . . . . . . . . . . 72 Withdraw . . . . . . . . . . . . . . . . . . . . . . . . 72 WDRAW_SAVE . . . . . . . . . . . . . . . . . . . . . 72 WDRAW_AMOUNT . . . . . . . . . . . . . . . . . . . . 72 WDRAW_TERM . . . . . . . . . . . . . . . . . . . . . 72 Deposit . . . . . . . . . . . . . . . . . . . . . . . . . 72 DEPOSIT_FV . . . . . . . . . . . . . . . . . . . . . 72 DEPOSIT_AMOUNT . . . . . . . . . . . . . . . . . . . 72 DEPOSIT_TERM . . . . . . . . . . . . . . . . . . . . 72 String functions: . . . . . . . . . . . . . . . . . . . . . . 72 FILENAME$ . . . . . . . . . . . . . . . . . . . . . . . . 72 BUF$ . . . . . . . . . . . . . . . . . . . . . . . . . . 72 MID$ . . . . . . . . . . . . . . . . . . . . . . . . . . 72 LEFT$ . . . . . . . . . . . . . . . . . . . . . . . . . . 73 RIGHT$ . . . . . . . . . . . . . . . . . . . . . . . . . 73 SPACE$ . . . . . . . . . . . . . . . . . . . . . . . . . 73 CHR$ . . . . . . . . . . . . . . . . . . . . . . . . . . 73 STR$ . . . . . . . . . . . . . . . . . . . . . . . . . . 73 VAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 LEN: . . . . . . . . . . . . . . . . . . . . . . . . . . 73 POS . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Appendix B CONTROL KEYS . . . . . . . . . . . . . . . . . . . . . . 74 Non-editing . . . . . . . . . . . . . . . . . . . . . . . . . 74 Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Appendix C Program specification . . . . . . . . . . . . . . . . . 75 Appendix D Lotus and SHEET . . . . . . . . . . . . . . . . . . . . 76 - v - Appendix E Recalculation . . . . . . . . . . . . . . . . . . . . . 77 Appendix F FILE FORMAT . . . . . . . . . . . . . . . . . . . . . . 78 Header for SHT . . . . . . . . . . . . . . . . . . . . . . . . 78 Cell contents for SHT format . . . . . . . . . . . . . . . . . 78 Header for PRT . . . . . . . . . . . . . . . . . . . . . . . . 78 Cell contents for PART format . . . . . . . . . . . . . . . . 78 Appendix G Problems . . . . . . . . . . . . . . . . . . . . . . . . 78 Biorthym program . . . . . . . . . . . . . . . . . . . . . . . . . 80 Calendar program . . . . . . . . . . . . . . . . . . . . . . . . . 82 Roots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 - vi - SHEET User manual By Chor-ming Lung October 9, 1988 Preface: ________ I have used spreadsheet programs for quite a while. I feel they are fantastic tools. I am quite familiar with Lotus 123. One thing that I feel terrible is its MACRO language. It is not as user-friendly as its display. I feel that BASIC is more powerful and yet easier to use than MACRO. Thinking that may be profitable to write a BASIC interpreter in a spreadsheet environment, I started to write the program on Oct. 1987. After a few months' struggle, I have created the program and named it SHEET. Making SHEET as shareware, I uploaded the first version on February 1988 to GEnie and CompuServe. Right now, SHEET can do not only numerical calculation, but also, graphic, string operations and text files access. Its growth depends on you. If you like it, please send me $25 or whatever you think it is worth. My address is: Mr. Chor-ming Lung 330 Tremont St A-708 Boston, MA 02116 U.S.A. You can also send your comments or suggestions by Email. My addresses are: GEnie: LUNG CompuServe: 72740,40 If you have access of GEnie, you can also leave your message on the bulletin board. It is Page 475, Category 2, Topic 28. Disclaimer: __________ I have made every effort to insure the accuracy of the program. However, there is no warranty either express or implied for its uses. Requirements: ____________ * Atari 520 ST or 1040 ST with disk drive(s). * Monochrome or color monitor. * SHEETxxx.PRG, CALC.RSC and SHEET.CFG on the same directory. (xxx is the version number of SHEET. Currently, it is SHEET20.PRG or version 2.0) * You must know how to operate with GEM. * Some BASIC programming experience is desirable if you want to use SHEET BASIC effectively. Page 1 SHEET User manual By Chor-ming Lung October 9, 1988 Introduction: ____________ Thank you for using SHEET. SHEET is a combination of spreadsheet and BASIC. The spreadsheet functions and commands make this BASIC interpreter a lot easier to handle data and the BASIC interpreter make the spreadsheet a lot powerful than many other spreadsheet programs commercially available. The arrangement of this manual consists of three parts. The first part consists of 9 example worksheets as a tutorial. The second part shows the details of how to use the spreadsheet commands. The last part consists of BASIC commands and their usage. If you have problems in locating cell cursor with the mouse, you should read Appendix G. You should read example 1 thoroughly. It contains informations for operating the spreadsheet. Example 3 is a trivial program but it is an important one too. If you do not understand the cell reference method in this program. You cannot understand the rest examples. I have tried my best to describe how it works. If you still have problem, you should read PART III about cell reference. There are three "big" program listings after the Appendixes. They use many commands of SHEET BASIC. You should not miss them too. Finally, I would like to thank all the users who provide suggestions to make SHEET more useful and reliable. I like to thank Mr. Donald A. Edwards and Dr. Stan Liebowitz specifically. Without their enthusiasm, I can hardly imagine some of the features found in version 2.0. If you have made suggestions but they are not implemented yet, it is not because they are being ignored. Instead, I do not have enough time to get everything done on this version. Page 2 SHEET User manual By Chor-ming Lung October 9, 1988 PART I -- TUTORIAL Example 1: "AMORT.SHT" This example shows you how to operate with SHEET. A lot of the basic ideas of how to use the mouse and your keyboard with your worksheet are being introduced. If you understand it, you can read PART II without any difficulty. Example 2: "ROSES.SHT" This example shows you some advanced feature of spreadsheet design. It introduces the idea of absolute and relative cell reference. Example 3: "RANDOM.SHT" This example is a simple SHEET BASIC program. The main idea introduces in this example is a new cell reference method. You can use the cell as a cell reference or as a BASE which you can stretch horizontally or vertically. Example 4: "LOTTERY.SHT" This example shows you how to print your output to your printer. It generates 6 different numbers from 1 to 36, and sorts those numbers in ascending order, and then prints those numbers to your printer. Example 5: "FTEST.SHT" This file shows you the commands for ASCII file accesses. Example 6: "NUMBER.SHT" This file shows you how to use the file access commands to retrieve data stored in ASCII file and then put them into individual cells. Example 7: "GRID.SHT" This first graphic program shows the basic process of using the graphic commands. Example 8: "SINCURVE.SHT" This file shows you how to draw a sine curve with the graphic commands. Example 9: "SPLINE.SHT" This file shows you how to draw graph using data stored in your worksheet. Page 3 SHEET User manual By Chor-ming Lung October 9, 1988 Example 1: _________ AMORT.SHT Amortization means killing something bit by bit. That is the way we handle loans -- we pay little by little. Suppose you are trying to borrow $100,000. Your financial company provides two options for this loan. - 30 years with annual interest rate 9% - 20 years with annual interest rate 10.5% Intuitively, you may choose option 1. Well, let us analyze this problem with SHEET and see whether it is a wise choice. First, we have to design our layout. We plan to use column A for labels, column B for option 1 and column C for option 2. Following are the steps for creating the template: Cell entry Cell cursor Menu option/Description --------------------------------------------------------- Find menu title "Sheet" and select "Defaults". Choose Text justification for Center (^) and select OK. B1 To move your cell cursor to B1, either move the mouse cursor to B1 and click the mouse button, or use the arrow keys to move the cell cursor. If you use the mouse to move your cell cursor and if the cell cursor disappears, then you should refer to Appendix F. Option 1 Type "Option 1" and terminate it with key. C1 Press the -> arrow key to move from cell B1 to C1. Option 2 B2 \- Type "\-" and terminate it with key. C2 \- Find menu title "Sheet" and choose "Defaults". Choose Text justification for Right (") A3 Amount borrowed A4 Annual interest rate A5 Total number of terms A6 Terms per year A7 Page 4 SHEET User manual By Chor-ming Lung October 9, 1988 \- B7 \- C7 \- A8 Payment "\-" means to fill up the cell with "-". You should notice that entries on column A occupy some areas of column B and C. We need to enlarge the width of column A to make rooms for entries on column B and C. To widen column A, you need to place the mouse pointer within the gap between column letter A and B. Press the mouse button and drag it to the right hand side. (Alternately, you can select the menu item "Col widths", enter the column name and your desired width.) When you press and drag you mouse, you should see the rubber box expanding. If the rubber box is large enough to cover all the characters of column A, then you can release your mouse button. Every text in column A is right justified now. Well, a template without formulas is not a template at all. The formula we need for this calculation is "LOAN_PAY". It needs four arguments -- amount borrowed, annual interest rate, total number of terms, terms per year. That is "LOAN_PAY(B3,B4,B5,B6)". If you enter the above line into cell B8, SHEET will treat it as a TEXT string instead of formula. That is because the leading character of a cell entry determines its type. A cell starts with "+", "-", digit, "(" or "." is a formula. A cell starts with alpha character is a TEXT string. A '+' symbol before "LOAN_PAY" will tell SHEET to treat it as a formula. (NOTE: If you are used to Lotus 123, you may tempt to add @ symbol before "LOAN_PAY". @ symbol in SHEET has different meaning. All the functions in SHEET does not require @ symbol.) Here is the steps for entering "+loan_pay(b3,b4,b5,b7)" on cell B8 and copy the content of B8 to C8. Entry Mouse Mouse button Editing buffer cursor display -------------------------------------------------------------- +loan_pay( +loan_pay( B3 Mouse click +loan_pay(B3 B4 + Mouse click +loan_pay(B3,B4 B5 + Mouse click +loan_pay(B3,B4,B5 B6 + Mouse click +loan_pay(B3,B4,B5,B6 ) +loan_pay(B3,B4,B5,B6) B8 Page 5 SHEET User manual By Chor-ming Lung October 9, 1988 + Mouse click C8 + Mouse click "+Mouse click" means press the Control key and left mouse button simultaneously. SHEET is case-insensitive. It will treat "loan_pay" as "LOAN_PAY". After those steps, you should see 0.1e+38 on both B8 and C8. Don't panic. You are not suppose to pay that much money even you borrow nothing. This number means calculation error. During calculation, Lotus uses 11 bytes (instead of 8 bytes) to store real number. Special bit pattern is set in these 11 bytes to represent ERR. Unfortunately, I do not have that much energy to create my own math package. So, I choose the largest number to represent error. It seems column B and column C are too close to each other. You should be able to change the column width of column B and C without any difficulty now. How wide should they be? It is up to you. It is time to enter our data to do analysis. Entry Cell cursor ----------------------------------- B3 100000 B4 0.09 B5 360 B6 12 After you have typed 100000, you terminate your input by the down arrow key. This action changes the editing direction to DOWN. Whenever you terminate your input with , the cell cursor will automatically move DOWN. B3 holds the $100,000 you want to borrow. B4 holds the annual interest rate 9%. B5 holds the total number of terms you must pay back to your financial company. It is supposed to be a monthly payment. You have to pay 12 times each year. Hence, the total number is 30*12 or 360. B6 holds the number of terms per year. It is 12. NOTE: if your payment is collected quarterly, then B6 should be 4 and B5 should be 30*4 or 120. It is an exercise for you to enter 100000, 0.105, 240 and 12 into cells C3, C4, C5, and C6 are respectively. The payment for option 1 is 804.622617 and it is 998.379887 for option 2. Probably Page 6 SHEET User manual By Chor-ming Lung October 9, 1988 your financial company will ask you to pay $804.62 and $998.38 respectively. To reflect this fact, you must reformat your display. We need to change B3..C3 and B8..C8 to DOLLAR format and B4..C4 to percent (%) format. Key Mouse button Mouse cursor position ---------------------------------------------------- B3 +Mouse click C3 + Mouse click B8 +Mouse click C8 + Mouse click Select DOLLAR The above operations define two blocks. +mouse click on a cell defines the start of a block and +Mouse click on a cell defines the end of a block. The first block is B3..C3 and the second block is B8..C8. activates the reformat dialog box. Selection DOLLAR will change cells contained in those blocks to DOLLAR format. I think it is an easy exercise for you to change B4..C4 to percent format. The payment just tells us we need to pay more for less terms. That is natural. The hidden truth is: we pay more money in option 1 than option 2. How can we find it? Well, we pay 804.62 each month, and we need to do it 360 times. So, the total amount we pay for option 1 is 360*804.62, and 240*998.38 for option 2. In cell A9, enter "Total payment". In B9, enter 360*b8 and in C9, enter 240*c8. Comparing the results on B9 and C9, you will find you pay $50,000 less in option 2. So, if you can affort $998.38 per month, you should choose option 2. Now, it is up to you whether you want to save your first worksheet. If you think you don't need it any more. Press the window close button and SHEET will give you a last chance to save it. If you want to save it for future reference, you should press and enter the file name in the file selector dialog box. You may even want to print it out to show your spouse that his/her decision is right or wrong. The following steps will print cells A1..C10. Key Mouse button Mouse cursor ---------------------------------------------------- A1 +Mouse click C10 Page 7 SHEET User manual By Chor-ming Lung October 9, 1988 + Mouse click Fill out the Print dialog box After this example, I assume you can operate this program without any difficulty. The tedious description of cell entries and mouse operations will not appear in the following examples. Page 8 SHEET User manual By Chor-ming Lung October 9, 1988 Example 2: _________ ROSES.SHT This is an inventory problem. Assume that you are selling roses. Each dozen costs 4 dollars and you are selling for 12 dollars per dozen. According to your pass experience, you know the probabilities you can sell 10 dozens, 11 dozens, 12 dozens in one day are 0.60, 0.23, 0.17. How many dozens of roses should you order to get the best profit? PROFIT= 12 * actual number of dozens sold - 4 * number of dozens ordered For example, if you order 11 dozens and you sell only 10 dozens of them, then you earn: PROFIT = 12*10-4*11=76 Here we need to create the array of profits for actual calculation. ordered/ 10 11 12 sold 10 80 76 72 11 80 88 84 12 80 88 96 You may ask what is the meaning of ordered 10 and sold 11? It means you sell all the 10 dozens of roses and still there are customers asking for roses. The number of roses sold includes actual number of dozens sold and number of dozens customers asking. If you have sold all the roses you have, you cannot give anything to the late customers. So, your profit is 12*10-4*10=80. If you are using calculator to find out those number, then you are not a good spreadsheet user. To calculate the profit table, you must use formula. Now, we assume that the numbers ordered are stored from C1..E1 and the numbers sold are stored from B3..B5. The function we need is IFF which means IF Function (I choose this name because IF is a reserved key word for BASIC). This function require 3 arguments. The first one is a conditional expression, the second one is an expression returned when the condition is true, the last one is an expression returned when the condition is false. Here is the logic: IF the number of dozens we order is greater than the number of dozens we sell, we use the following formula to calculate PROFIT: PROFIT = 12 * dozens ordered - 4 * dozens sold That is because we can sell no more than we ordered. On the other hand, if the number of dozens we order is not greater than the number of dozens we sell, then we can sell as many as we can. The PROFIT will be: PROFIT = 12 * dozens sold - 4 * dozens ordered Page 9 SHEET User manual By Chor-ming Lung October 9, 1988 So, we enter the following formula in C3: +IFF(C1 key. It should be placed before you restore your screen. SORT will not change the appearance of the updated cells. We need to refresh the screen. EXITGRAPH is a command to refresh the screen. By the way, you can update your screen manually by pressing . One thing you may notice in this program is I/O redirection. Here is a reason why you need to redirect your data to disk file. A user from Canada told me that his JUKI 6100 Daisywheel printer does not respond to the "end of line" character. So, he prints his worksheet to disk and then use 1st Word to print it. If I don't support I/O redirection in SHEET BASIC, he may need to buy another printer or stop using SHEET.. Currently, SHEET BASIC has command to redirect output only. Future version should provide input redirection. Page 14 SHEET User manual By Chor-ming Lung October 9, 1988 Example 5: _________ FTEST.SHT The file name of this example is "FTEST.SHT". A1..A5 is a program testing the output file commands. A7..A13 is a program testing the input file commands. To run it, enter "@run a1" and "@run a7" separately. A1 :! OPEN "o",#1,"test.txt" A2 :! PRINT #1,"123,456 789": PRINT #1 A3 :! PRINT #1,"5623.23,84.38 723.12" A4 :! CLOSE #1 A5 :! END A7 :! GET_FILE "\*.txt", FILENAME$ A8 :! OPEN "i",#1, FILENAME$ A9 :!R=1: SAVE SCREEN A10 :! LOOP A11 :! INPUT #1, BUF$ A12 :! PRINT BUF$ A13 :!R=R+1: ENDLOOP A14 :! END Explanation: Explanation A1: Before we can access a file, we need to open it first. Statement A1 open an output file in channel #1 and the file name is "test.txt". Channel number is in the range of 0~9. A2: Print the string "123,456 789" and a blank line to the file A3: Print another string to the file. You can output not only a string but also numeric data on the same line separated by comma or semicolon. A4: Close channel number 1. A7: Use the file selector to get the file name from user. Note: FILENAME$ is a string variable that is changed whenever you change the content of the file selector dialog box. A8: Open that file as input file on channel #1 A9: R is the counter for line being read. Save our current screen first. A10: Enter a loop to read the file line by line. A11: Read a line from the file to BUF$. BUF$ is a string variable which can be modified by INPUT statement only. A12: Print the line being read to the terminal. A13: Increase the counter of line number and repeat the loop. NOTE, there is no EXIT IF statement. There is no way to detect end of file in current SHEET BASIC. You must let it go forever until the interpreter finds end of file error and stops your program. You may have some extra "Syntax error" errors. It is normal. NOTE: After you are done, you can enter the command "@restore screen" to restore your screen. Also, program A7 can be used to read other text files. You can even read this document by choosing this file and you can stop and resume the print action by and . Page 15 SHEET User manual By Chor-ming Lung October 9, 1988 Example 6: _________ NUMBER.SHT The file name for the following program is "NUMBER.SHT". There are two programs in this spreadsheet. The first program generates data to file "test.txt". It is exactly the same program of Example 5. L7..L16 reads the data from the file "test.txt" and separate each of line into different cells. Subroutine P1..P11 is used to separate each data into different cells. L1 :! OPEN "o",#1,"test.txt" L2 :! PRINT #1,"123,456 789": PRINT #1 L3 :! PRINT #1,"5623.23,84.38 723.12" L4 :! CLOSE #1 L5 :! END L7 :! GET_FILE "*.txt", FILENAME$ L8 :! OPEN "i",#1, FILENAME$ L9 :!R=0 L10 :! LOOP L11 :! INPUT #1, BUF$ L12 :! IF ( ASC( BUF$)<>0) THEN GOSUB P1 L13 :!R=R+1 L14 :! ENDLOOP L15 :! CLOSE #1 L16 :! END P1 :!P=1:C=1 P2 :! LOOP P3 :!Q= POS(" ,", BUF$,P) P4 :! EXIT IF Q=0 P5 :!A1[C,R]= VAL( MID$( BUF$,P,Q-P)) P6 :!C=C+1 P7 :!P=Q+1 P8 :! ENDLOOP P9 :!A1[C,R]= VAL( MID$( BUF$,P,100)) P10 :! RETURN Explanation: Explanation L1~L5: It is the same code for Example 5 A1~A5. L7: Uses the file selector to get the file name L8: Open the file for INPUT. L9: R is a counter for row number. L10: We enter an infinite loop to read data lines. L11: Read a line from the data file. L12: Test whether the line being read is empty or not. If it is not, then we call subroutine P1 to separate the data into cells. L13: Increase our row number by one. L14: Repeat our loop L15 and L16 is never being executed. They are there for decoration only. P1: P is the starting search position and C is the column number. It is zero origin. C=1 means we start from column B. P2: Enter the loop to separate BUF$ into pieces. P3: We assume the number is separate by a blank space or comma. POS is a function that tries to find the position of a blank space or Page 16 SHEET User manual By Chor-ming Lung October 9, 1988 comma from BUF$ starting from P. If POS cannot find it, Q will be zero. P4: Check whether Q is zero. If it is, then we have checked the whole data line for space and comma and that is the end of our loop. P5: Store the value of BUF$ from P up to Q-1. It depends on the value of C and R. If C is 1 and R is 0, then the value will be stored in cell B1. (A1[1,0] is equivalent to B1). P6: Increase our column number by one. P7: Change our starting position for P to Q+1 P8: Repeat from P2. P9: We still have one value after the last space or comma. It is stored from P to the last character of BUF$. If the len of MID$ is larger than the length of BUF$, then it returns a string from P to the last character of BUF$. P10: End our subroutine. Page 17 SHEET User manual By Chor-ming Lung October 9, 1988 Example 7: _________ GRID.SHT This small program shows the setup and exit process for using graphics in SHEET BASIC. It just uses window 1 to draw the x and y- axis then marks them. To run it, enter the command "@run d1" D1 : ! WINDOW 1 D2 : ! SCALE -7,-2,7,2 D3 : ! CLEAR D4 : ! LINE -7,0,7,0: LINE 0,-10,0,10 D5 : ! MARKX 0,-6,6,0.1,0.5 D6 : ! MARKY 0,-2,2,0.2,1 D7 : ! EXITGRAPH D8 : ! END Explanation: Explanation: D1: The first command for graphics is WINDOW/VIEWPORT. WINDOW 1 means that we are using window 1 for output. D2: Setup the scaling factors. The minimum number for X is -7 and the maximum number is 7 and -2, 2 for Y. D3: Clear the window being used. D4: Draws the x-axis and y-axis D5: Making marks on x-axis from -6 to 6 with increment 0.1. A bigger marker on increment of 0.5. D6: Marks y-axis D7: Legal way to exit from graphics commands NOTE: ____ The first step on graphic command is WINDOW/VIEWPORT followed by SCALE. After that, you can enter any graphic commands. After the graph is done, you should use EXITGRAPH to reset the clipping area. Otherwise, your screen may seem to be locked up. Page 18 SHEET User manual By Chor-ming Lung October 9, 1988 Example 8: _________ SINCURVE.SHT This example draws a sine curve on the current window. To run it, enter the command "@run a1". A1 : ! WINDOW A2 : ! SCALE -7,-1.2,7,1.2 A3 : ! CLEAR A4 : ! PLOT -2*PI, SIN(-2*PI) A5 : ! FOR X=-2*PI TO 2*PI+0.1 STEP 0.1 A6 : ! LINE_TO X, SIN(X) A7 : ! NEXT X A8 : ! LINE -7,0,7,0: LINE 0,-1.2,0,1.2 A9 : ! MARKX 0,-7,7,0.5,1 A10 : ! MARKY 0,-1.2,1.2,0.1,0 A11 : ! LABELX 0,-7,7,1,"f0" A12 : ! LABELY 0,-1.2,1.2,0.2,"f2" A13 : ! WAIT 5: EXITGRAPH Explanation: Explanation: A1: WINDOW with no parameter means we are using current window for output. A2: SCALE for our sine curve. A3: Clear our window A4: Plot the first point of our sine curve A5: A FOR loop to generate a sine wave from -2*PI to 2*PI A6: Instead of plotting dots, we want to connect all the dots with lines. A8: Draws the x- and y-axis. A9: Marks x-axis A10: Marks y-axis A11: Draws the labels on x-axis. They are integers (f0). F means the number is displayed in fixed format. 0 means decimal place is 0. So, it has no decimal place or it is integer. A12: Draws the labels on y-axis. They are real number with 2 decimal points. A13: Waits for 5 seconds and then refreshes our window. Page 19 SHEET User manual By Chor-ming Lung October 9, 1988 Example 9: _________ SPLINE.SHT This time, we are going to use PLOT DATA and SPLINE to see how wonderful SPLINE will be. This program has a lot of subroutines. I will explain each. To run it, enter the command "@run c1". F1 : !R=0 F2 : ! FOR X=-2*PI TO 2*PI+1 STEP 2 F3 : !J1[0,R]=X:K1[0,R]= SIN(X) F4 : !R=R+1 F5 : ! NEXT X Subprogram F1 generates 7 data sets for sine curve. The data for x is stored in cells J1..J7 and data for y is stored in cells K1..K7. D1 : ! WINDOW 1 D2 : ! CLEAR : SCALE -7,-2,7,2 D3 : ! PLOT DATA J1..J7,K1..K7,0,1 D4 : ! GOSUB C13 D5 : ! RETURN Subroutine D1 plots the data stored in J1..J7,K1..K7 using no marker and solid line. The command PLOT DATA plots data stored in worksheet. J1..J7 and K1..K7 for x,y respectively. 0 means using dot instead of marker for each point and 1 means using solid line to connect points. D7 : ! WINDOW 1 D8 : ! SCALE -7,-2,7,2 D9 : ! ATTRIBUTE 1,1 D10 : ! SPLINE J1..J7,K1..K7,0.1 D11 : ! RETURN This subroutine draws the spline curve using color 1 (Black). The first argument for ATTRIBUTE sets the color to 1 (Black) and using line width 1. SPLINE uses cubic-spline method to draw smooth curve. J1..J7 and K1..K7 define the value for x,y. 0.1 defines the increment for generating data on the spline-curve. F7 : ! WINDOW 1 F8 : ! SCALE -7,-2,7,2 F9 : !X=-2*PI: PLOT X, SIN(X) F10 : ! ATTRIBUTE 3,1 F11 : ! FOR X=-2*PI TO 2*PI STEP 0.1 F12 : ! LINE_TO X, SIN(X) F13 : ! NEXT X F14 : ! RETURN Subroutine F7 draws the actual sine curve using color 3 (Green). C13 : ! LINE 0,-2,0,2: LINE -7,0,7,0: RETURN Subroutine C13 draws the x- and y-axis Page 20 SHEET User manual By Chor-ming Lung October 9, 1988 C1 : ! GOSUB D1 C2 : ! GOSUB D7 C3 : ! GOSUB F7 C4 : ! WAIT 5 C5 : ! EXITGRAPH C6 : ! END Our main program. First, draws the sine curve with PLOT DATA. Plot the sine curve with cubic spline routine, then draws the actual sine curve. The sine curve using SPLINE is closer to the actual sine curve. Actually, if you change cell F2 with "STEP 1" instead of "STEP 2" and change cells D3 and D10 for ranges J1..J14,K1..K14, then you can hardly tell the difference between the spline-curve and the actual sine-curve. NOTE: the actual sine-curve generates 126 points and spline-curve uses 14 data points! Isn't it wonderful? Page 21 SHEET User manual By Chor-ming Lung October 9, 1988 PART II -- Spreadsheet operations MENU SELECTIONS: Briefly describes all the menu selection and its usage. MOVING AROUND: This session explains how to move the working area to display different part of your worksheet. EDITING: This session discusses about cell entries for formula, constant, text, BASIC statement and command. It shows you how to use the line editor. CUSTOMIZED DISPLAY: This chapter tells you how to change the width of individual column and the display format of individual cell. Block is introduced in this _____ chapter too. Block is important to many worksheet commands. COPY AND MOVE: This chapter shows you how to reorganize your worksheet. You need to know how to select blocks. It also discusses about absolute and relative cell references. ERASE CELLS: This chapter explains to you how to erase the unnecessary cells. INSERT AND DELETE: This session discusses how to delete or insert a row or a column. Column and row selection is different from block. LOAD, SAVE, PRINT: It explains the menu items under menu title "File". Page 22 SHEET User manual By Chor-ming Lung October 9, 1988 MENU SELECTIONS The menu titles are the strings that appear on the menu bar. ____________ Menu items refer to the strings that drop down when a menu title __________ is selected. The menu titles for SHEET looks like this: Desk File Sheet Row/Col Cells Graph Help ______________________________________________ TITLE ITEM Description -------------------------------------------------------------------- Desk Desk About SHEET General information about SHEET. File File For a detail description of the following menu items, please refer to the chapter "LOAD, SAVE, PRINT" New N Open a new worksheet window. The N on the right hand side means that you can activate this menu item by pressing . You have a choice for changing your new worksheet size. The maximal number of rows can be 50 to 9999. Load L Load an old worksheet file from disk drive. You can use to activate this menu item. Load WKS Load files in the format of Lotus 123 release 1A or 2. SHEET is not a Lotus clone, so it will not translate everything. Whenever it encounters problem, the translation process will be terminated. Load PART Load SHEET files saved by using "Save PART". Its file extension is PRT. Save S Save the whole worksheet file into your diskette. Save WKS It is supposed to save your worksheet in Lotus 123 file format. It is not working right now. Save PART Save part of your worksheet into diskette. You need to select blocks of cells before you activate this menu item. Print P Print part of your worksheet to disk/printer. You need to select a block before you activate this menu item. Quit Q Quit to desktop. Sheet Sheet Erase Erase your current worksheet. Defaults Set some default states of SHEET. You can change the recalculation order which is saved with your worksheet, change the TEXT justication, change the current window name, takes 32K back for screen redraw and have a Page 23 SHEET User manual By Chor-ming Lung October 9, 1988 look of the memory remains. Options In the dialog box of Options, you have three choices. Users have suggested for a Global format for each column. "Cell format using previous row" means that whenever you enter a new element for the worksheet, it will try to find the format of previous row on the same column and uses it as default format. So, you do not need to reformat again and again. If you are moving the worksheet with arrow keys, you will find that moving up and down is a lot faster than moving left and right. "Move to left/right Fast" provides an option that you can move left and right faster than before. One drawback for this option is that the new column being displayed is truncated to its own width. Hence you may have problem in displaying BASIC program or text string which spilled over other cells. If you want to redraw the screen to display them properly, you can use the command "@exitgraph" or to redraw the screen. Two monochrome users have suggested me to give an option for using the Small font to display more rows per screen. I have make the option available but it is not working yet. Dates SHEET can display three different Date types. The Dates menu item under menu title Sheet provides you a new way to show your date data. The components for a DATE are day, month and year. Normally, day and year are displayed as digits. Month can be digit, the first three characters of the month or the whole alphabets for that month and some countries put month before day and some put day before month. To overcome these differences, the date format is configurable to your favour. dd and yy represent day and year in digit. mm represents month in digit. mmm represents month in three letters and mmmm represents month in full alphabets. Here are some examples. Assume that the date is March the first, 1988. Date format: Display: ------------------------------------------------- mmddyy 030188 dd-mmm-yy 01-Mar-88 mmmm dd,19yy March 01,1988 dd/mm/yy 01/03/88 mm/dd/yy 03/01/88 NOTE: The file SHEET.CFG holds the defnition of Date1, Date2 and Date3. It is updated whenever Page 24 SHEET User manual By Chor-ming Lung October 9, 1988 you change the Date format. If SHEET.CFG is not there when SHEET is loaded, then the default formats will be used. Row/Col Row/Col Insert I Insert a row or a column. You need to select that particular row/column first. Refer to the chapter "INSERT AND DELETE" for detail description. Delete D Delete a row or a column. You need to select that particular row/column first. Col widths You can change the column width in a more effecient way than just using mouse dragging method. For example, if you want to make the column width from column A to column O to 1,9,1,9,1,9,1,9,1,9,1,9,1,9,1, you can select the menu item "Col widths" from menu title "Row/Col", enter "A" for the leading column and 1,9,1,9,1,9,1,9,1,9,1 in the edit field "widths". Cells Cells NOTE: YOU HAVE TO SELECT BLOCKS BEFORE YOU ACTIVATE THE FOLLOWING MENU ITEMS. Reformat R Changes the format of blocks. For a detail description, please refer to "CUSTOMIZED DISPLAY" Erase E Erase cells on blocks specified. Please refer to "ERASE CELLS". Copy C Copy a block of cells to other block. Please refer to "COPY AND MOVE" Move M Move a block of cells to other place Adjust A Adjust is used for changing TEXT string to BASIC statements or changing TEXT justifications. The first step in using ADJUST is: Select the blocks being ajusted and then press or select this menu item. You MUST not change TEXT that are not supposed to be BASIC statements to BASIC statements. The program may not recognize all your characters and part of them may be truncated with a character #. Graph Graph This selections is not available yet. This selections is not available yet. Selections Layout Legend X-axis lable Data Variable A Data Variable B Data Variable C Data Variable D Data Variable E Data Variable F Page 25 SHEET User manual By Chor-ming Lung October 9, 1988 Help Help Entry Helps for entering formula, text strings, BASIC statements and commands. Formula Helps for formula, especially for calculation priority Built-in Func Helps for built-in functions. Statement Helps for BASIC statements (v1.6) Limits Helps for program limit (accuracy, maximum numbe of variables and so on) Graphic commands Helps for graphic commands for BASIC (v1.7) PTEXT Helps for the graphic command PTEXT (PLOT TEXT) (v1.7) Commands Helps on other new BASIC commands (v2.0) Console commands Helps on screen control and keyboard commands. (v2.0) Page 26 SHEET User manual By Chor-ming Lung October 9, 1988 MOVING AROUND When you start SHEET, your screen is divided into menu bar and worksheet window. The worksheet window can be divided into 5 major areas. The status line is the first line under the window title. It is ___________ used for displaying current cell's content and worksheet status. The editing buffer ,which is the line below status line, is used for ______________ entering or editing the current cell. The column bar is the line below __________ the editing buffer. The row bar is located on the left hand side of the _______ worksheet window. Both column and row bars are used for cell reference. The biggest area is the working area for current worksheet. ____________ Each column is referred by a unique letter (from A to IU). The first column is A, column B after A, C after B and so on. The one following column Z is AA and after AZ comes BA, and so on. Each row numbers are sequentially ordered from 1 to a variety of 50 to 9999 depends on the worksheet size you choose. A cell in the worksheet is referred by column letter followed by row number. For example, at the intersection of column B and row number 2 is cell B2. Each spreadsheet can hold 255 columns and a variable number of rows from 50 to 9999. It means you can access at most 2,549,745 cells. Your screen can display a very small amounts of them. Therefore, you have to view your spreadsheet by moving the working area. The following operations let you move your working area by keyboard entry or mouse button. If current cell cursor is not in row number 1, the cell cursor will be moved one row up. If current cell cursor is not in row number 1280, the cell cursor will be moved one row down. If current cell cursor is not in column A, the cell cursor will be moved one column left. If current cell cursor is not in column IU, the cell cursor will be moved one column right. If possible, the cell cursor will be moved by "page" to the direction the arrow key specified. This key moves the current cell cursor to A1. When you press the function key F5, you can enter the cell reference directly to move the cell cursor to that cell. If the cell specified is not in the working area, then the working area will be changed and the new upper left cell is the cell specified. You can use the slider bars to change the working area quite fast. Also, you can locate a cell with mouse much faster than arrow keys. To locate a cell with mouse: - use vertical and horizontal slider bars to move to the desired working area. - put the mouse cursor over the desired cell and press left button on your mouse. Page 27 SHEET User manual By Chor-ming Lung October 9, 1988 EDITING Types of cell entry: ___________________ There are 4 different types of cell entries in SHEET: numeric constant, formula, text and BASIC statement. BASIC commands will be executed immediately but it will not be stored in any cell. The leading character of each entry will differentiate one from the other. Formula: Input string starts with "+", "-", DIGIT, "." or "(" Formula Constant: Input string starts with "+", "-", DIGIT, "." or Constant "(" Statement: Input string starts with "!" Statement Command: Input string starts with "@" Command Text: Input string starts with double quote, single quote, Text "^", "\" or character other than "+", "-", DIGIT, ".", "(", "!", "@". Constant is an arithmetic expression which does not refer to Constant other cell(s) or variable(s). A constant cell will not be constant recalculated. You may notice that most of your inputs are constants. Making the distinction between formula and constant constants formula constant helps speeding up the spreadsheet recalculation time. Statement and command are for BASIC interpreter. The Statement command differences between statement and command are that command will be statement command command executed immediately but will not be stored in current cell and statement will not be executed but will be stored in the current statement cell. Text is a descriptive string. The first character of each Text text entry has special effect for display. Single quote('): The text is left justified. Double quote("): If the width of the cell is larger than the length of the text, the text is right justified. Circumflex (^): if the width of the cell is larger than the length of the text, the text is centered within the cell width. Back slash(\): The text following back slash will be used repetively filling the cell. If a text string starts with character other than single quote, double quote, circumflex or back slash, then the character selected on "TEXT justification" of menu item "Defaults" under menu title "Sheet" will be used as its leading character. There is a command which you can change the first character from one of (' " ^ \) to one of (' " ^ \ !). It is the menu item "Adjust" under menu title "Cells". Page 28 SHEET User manual By Chor-ming Lung October 9, 1988 Rules for constructing formula: ______________________________ When you are entering formula, the first character of your entry must be "+","-", "0".."9", "." or "(". The following table summarizes all such first characters and their usage. Char Usage Example ----------------------------------------------------------------- + Used when the formula begins with a cell +A1/A2 reference or calling built-in function +SIN(A1) - Used when the formula begins with -A1*20 negative constant value or negative value -12*0.2 of cell reference or negative value of -COS(A1) function call 0-9 Used when the formula begins with a 12.3*20 constant number. . Used when the formula begins with a .05*120 constant number. ( Used when the beginning part of the (A1-A2)/A3 formula's natural order of calculation must be altered through the use of a pair of parentheses. NOTE: 1. ____ Versions before 2.0 of SHEET did not know that .05 is 0.05. 2. If part of the expression returns a string, then it will treat as 0. It means you cannot do string calculation in any cell. But the BASIC interpreter can do string operations. eg. 34+chr$(12) ==>34 "test1"+"test2" ==>0 4+len("some") ==>8 Page 29 SHEET User manual By Chor-ming Lung October 9, 1988 Cell input: __________ Whenever you type some keys, the corresponding characters will be inserted into the editing buffer. You may notice the status is changed from "Ready" to "Input". Your entry must be terminated by the following method to change the status back to "Ready". While you are in "Input" mode, the menu selections and window resize function are not allowed, though you can change your working area by moving the horizontal or vertical slider bars. Whenever you terminate your input, you will get back to the working area before you do editing. Move the editing cursor: Move the editing cursor Moves the editing cursor to left by 1/2 the length of the editing buffer. Moves the editing cursor to right by 1/2 the length of the editing buffer. MOUSE cursor Moves the mouse cursor to the character you want it be and press left button on your mouse, then the editing cursor will move to that character. Modify your input: Modify your input Toggles the INSERT mode to TYPEOVER mode and vice versa. Erases the character on the left hand side of the editing cursor. Erases the character under the editing cursor. Terminate your input: Terminate your input: Terminates input and the cell content is not modified. Terminates input and the cell cursor moves to the direction specified by editing direction (see below). Terminates input and the cell cursor moves one row up if possible. Terminates input and the cell cursor moves one row down if possible. Terminates input and the cell cursor moves one column left if possible. terminates input and the cell cursor moves one column right if possible. Miscellaneous operations: Miscellaneous operations: MOUSE if the mouse cursor is inside the working area and if you press the left button on your mouse, the cell coordinate that the mouse is over will be inserted into the editing buffer. MOUSE It works as above except a comma is inserted before the cell coordinate. MOUSE Instead of comma, a through notation (..) added before the cell coordinate. Sliders You can change the working area by moving the vertical or horizontal slider bars. Any terminating key will resume the display back to the working area before editing. Page 30 SHEET User manual By Chor-ming Lung October 9, 1988 Modify a cell: _____________ To modify a cell, you have to move the cell cursor to the desired cell. Press the function key and use the above method to modify the cell content but you must terminate your change by ______________ . If you change your mind, you can always what you have done. Editing direction: _________________ When you terminate your input by any arrow key, the editing direction will be changed to the direction the arrow key specified. When you press to terminate your input, the cell cursor will move to the editing direction. If you want to change the editing direction to neutral, you have to press before your editing session. e.g. Cell Entry Cell cursor position ------------------------------------------------------------- A1 1 A2 A2 2 A3 The first entry change the editing direction to . The second entry which terminates with is similar to terminating with . Page 31 SHEET User manual By Chor-ming Lung October 9, 1988 CUSTOMIZED DISPLAY SHEET can calculate number accurate up to 17 decimal places. In most case, you need to display 2 decimal points only. For example, your monthly loan payment may be 876.54321. You will not care about the extra digits. You just want it to display as 876.54 or $876.54. That is the situation in which you need to change its default display format. There are two ways to change the appearance of your worksheets-- changing the width of individual column and changing the format of individual cells. Change column width: ___________________ The column width of a cell may affect the display. For numeric result, if the format you specify cannot fit into the width of the cell, then the cell will be filled up with "*". For text, you may not be able to do right justification or center the text. To display the result correctly, you may need to change the width of the column. There are two ways to change the width of individual column. The first way uses the mouse and the second way uses the menu item "Col widths" under menu title "Row/Col". MOUSE: - Move the desired column within the working area - Move the mouse cursor on the white gap after the column letter (e.g. if you want to change the width of column A, move the mouse cursor on the white gap after column letter A) - Press the left mouse button (do not release it) - To expand the column width, drag the mouse to right and release the button - To shrink the column width, drag the mouse to left and release the column Col widths: - Select the menu item "Col widths" under the menu title "Row/Col". - Enter the correct column letter - Enter your desired column width. - You can enter numbers separate by comma. Doing this will change the column widths beginning from the column letter specified. Note: Note if your column width is only 1 character wide, then the column letter will be pushed to the next column. Page 32 SHEET User manual By Chor-ming Lung October 9, 1988 Default display format: ______________________ Text: Text Depends on the first character for justification. Constant and Formula: Constant and Formula The number of digits after the decimal point is six. It is right justified and if possible, a blank space is added at the rightmost place. Column width: 9 characters per column. Column width Display format: _______________ There are 9 different predefined display formats for formula formula and constant types. The first one is the default format mentioned constant above. The others are %, Fixed, Scientific, Dollar, ,(comma), % Fixed Scientific Dollar , Date1, Date2, Date3. Date1 Date2 Date3 Type Usage Example -------------------------------------------------------- Default Display up to 6 decimal points 3.1234 % Use for interest rate, 0.05 will be discount, tax and so on. displayed as 5% Fixed Use for data which have 1.00 different decimal places. (eg 1.50 1,1.5. Most likely, you want it 2.00 to be 1.00, 1.50) Scienti- Use for display data which is a 3.24e12 fic big or small number. Dollar Use for data which are related $1,245.12 to money. , Comma format is similar to 1,245.12 Dollar format excep there is no dollar sign in front of it. Date1 Use for displaying date related 9-Jul-88 value. Its format is dd-MMM-yy. Date2 Its format is dd-mmm. 18-Jul Date3 Its format is mmm-yy. Jul-88 TEXT Display formula instead of its value. HIDE The information on this cell will not appear on the working area Page 33 SHEET User manual By Chor-ming Lung October 9, 1988 Block: _____ Before we reformat some cells, we need to tell SHEET which cells we intend to do that. In SHEET, those cells are called blocks. In Lotus 123, we can define only one block at one time, but SHEET can accomodate up to 18 blocks at one time. A block is part of the spreadsheet. It is a rectangle which holds at least one cell. To define a block, you need to select the starting ________ cell and stopping cell of the block. The process of defining the ____ _____________ starting cell requires mouse button and key, and stopping ______________ ________ cell requires mouse button and key. ____ Here is an example to define cell A5 as a block: - Move the mouse cursor within cell A5 - Press key and the left mouse button simultaneously You may notice that the selected block has been highlighted by reversing its color. Here is another example to show you how to define a block containing cells from B5 to C14 (B5..C14): - Move the mouse cursor within cell B5 - Press key and the left mouse button simultaneously - Move the mouse cursor within cell C14 -Press key and the left mouse button simultaneously. In summary, to define the starting cell, you have to move the _____________ mouse cursor over the first cell and press and left mouse button simultaneously. To define the stopping cell, you have _____________ to move the mouse cursor over the last cell and press and left mouse button simultaneously. If no stopping cell is provided _____________ then the stopping cell is the starting cell. Using above example, if you want to define block B5..B14 instead of B5..C14 - Move the mouse cursor within cell B14 - Press key and the left mouse button simultan- eously. If block B5..C14 is the first block you defined, there is another way to select this block: - move the mouse cursor within the cell B5 - press the left mouse button and drag until you reach cell C14 - release mouse button. De-select blocks: ________________ Selecting any cell by a mouse button click will de-select all the blocks being selected. Page 34 SHEET User manual By Chor-ming Lung October 9, 1988 Change display format: _____________________ To reformat some cells: - select blocks using above method - Press or find menu title "Sheet" and choose menu item "Reformat" under it. - A dialog box will show up. Choose the format you want from it. You can also use the command "@REFORAMT" to reformat some cells. The command should be: - @reformat FORMAT_STRING, block1, block2, .... - FORMAT_STRING consists of two part. The first part is the format being used, and the second part is the decimal places. The format of a cell can be "$", ",", "%", "F", "S" "D1", "D2" and "D3". They represent the format of "DOLLAR", ",", "PERCENT", "FIXED", "SCIENTIFIC", "Date1", "Date2" and "Date3" respectively. For example, if you want to reformat cell B2..C2 and B5..C5 to DOLLAR with decimal place of 2, you can issue the command @reformat "$2",b2..c2,b5..c5 instead of selecting blocks and press . NOTE: NOTE YOU CAN ONLY REFORMAT THOSE CELLS WHICH EXIST. That is because of Sparse Matrix. After a cell has been created, the cell possesses attributes. If you format some empty cells and insert something into those cells after that, those cells appear as default. It is not a bug. You can set the option in menu item "Options" under "Sheet" to use the format of previous row. Then, whenever you enter a new element for the worksheet, it will try to find the format of previous row on the same column and uses it as default format. So, you do not need to reformat again and again. Page 35 SHEET User manual By Chor-ming Lung October 9, 1988 COPY AND MOVE COPY and MOVE commands require two blocks. The first block is the source, and the second one is destination. You have to select those blocks before you activate COPY command by or find the menu title "Cells" and choose menu item "Copy" under it. To activate MOVE command, you press or find menu title "Range" and choose menu item "Move" under it. You can use the command "@COPY source_block, dest_block" or "@MOVE source_block, dest_block" to do the same thing. Here is an example showing you how to copy the content on cell A1 to A2..A5. Assume that the content of A1 is "1+A2". The display of cell A1 should be 1. Key Mouse button Effect Mouse cursor position ----------------------------------------------------------- A1 Control + Mouse click Cell A1 inverted A2 Control + Mouse click Cell A2 inverted A5 Shift + Mouse click Cell A2 through A5 inverted. Control C An alert box display on screen Return or Mouse click on OK. The operations prior to define two blocks. The first block consists of cell A1 only. The second block consists of cells A2 through A5. tells SHEET to copy the content of the first block to the second block. If cell A6 does not contain anything and you set the recalculation mode to Natural, your display should be: A Cell content 1 5 1+A2 2 4 1+A3 3 3 1+A4 4 2 1+A5 5 1 1+A6 Natural recalculation means formulas are calculated in their dependent order. Cell A1 depends on the result of A2 (1+A2). So, the calculation of A1 is postponed until A2 gets its result. A2 depends on A3 and A3 depends on A4 and so on. Thererfore, the first formula being computed is A5. If a formula refers to an empty cell, a zero will be returned. Hence, A5=1+A6=1+0=1, cell A4=1+A5=1+1=2 and A3=1+A4=1+2=3 ... Page 36 SHEET User manual By Chor-ming Lung October 9, 1988 One question you may ask: Why the cell reference of A2 in cell A1 has been changed to A3, A4, A5 and A6 in cell A2, A3, A4 and A5 respectively? The answer is relative cell reference. Relative and Absolue cell reference: ___________________________________ Cell reference can be absolute or relative. By adding a $ symbol before the column letter or/and row number, we designate a part of a cell address as absolute or both parts as absolute. For example: $A2 denotes column (A) is absolute and the row (2) is relative. $A$2 denotes column (A) and row (2) are both absolute. A$2 denotes column (A) is relative and the row (2) is absolute A2 denotes column (A) and row (2) are both relative. During COPY, a formula in source block which contains relative cell references will be modified. If the formula is copied down, then the relative row number will be increased. If the formula is copied to right hand side, then the relative column letter will be increased. If you intend to copy "1+A2" to A2..A5, then you must use formula "1+A$2" instead of "1+A2". NOTE: NOTE: A block can be a single cell (A2), part of a column (A2..A5),part of a row (B20..E20) or a range (A4..C10). The following describes how the program handle different types of block COPY. Source is the first block and destination is the second block. Result is the range size chosen by COPY. Source Destination Result size --------------------------------------------------------- Single cell any kind of block the largest range column reference any kind of block the largest range row reference any kind of block the largest range range reference any kind of block the source range You can use "@COPY" to copy from source to destination too. You can use "@COPY" to copy from source to destination too. Examples: - If you want to COPY C1 to C2..C20 * Control and mouse click on cell C1 * Control and mouse click on cell C2 * Shift and mouse click on cell C20 * OR: "@COPY c1,c2..c20" - If you want to COPY C1..C12 to D1..D12 * Control and mouse click on cell C1 * Shift and mouse click on cell C12 * Control and mouse click on cell D1 * OR: "@COPY c1..c12,d1" Page 37 SHEET User manual By Chor-ming Lung October 9, 1988 ERASE CELLS After some practice, you may find some data in your worksheet are no longer needed. Hence, you need the capability to erase them. Before you activate the ERASE command, you must select the desired cells as blocks. Yes, you can erase more than one block, but the total number of blocks cannot exceed 18. Here is an example showing you how to erase cells C1..D11, E5, F8 at one time. Key Mouse button Effect Mouse cursor Position ---------------------------------------------------------------- C1 Control + Mouse button C1 is inverted D11 Shift + Mouse button C1 through D11 are inverted E5 Control + Mouse button E5 is inverted F8 Control + Mouse button F8 is inverted Control E An alert box for ERASE command on screen Return or Mouse button The screen will be on OK redrawn to show the effect of erase. Note: ____ Instead of using mouse operations, you can use the command "@ERASE" to erase part of your worksheet. To do the same thing as above, you can issue the command: @erase c1..d11,e5,f8 Page 38 SHEET User manual By Chor-ming Lung October 9, 1988 INSERT AND DELETE INSERT and DELETE commands work with row and column only. The first thing before we activate INSERT or DELETE command, we must select a row/column. Row/Column selection: ____________________ Here is an example to show you how to select column D: Mouse cursor position Mouse button ------------------------------------------------------ COLUMN BAR column letter D Click the mouse button After you select column D, the whole column will be inverted. This is an example showing you how to select row 3 Mouse cursor position Mouse button ------------------------------------------------------ ROW BAR row number 3 Click the mouse button After you select row 3, the whole row will be inverted. To delete or insert a row/column, you must first select the row/column by clicking on the column or row bar with desired column letter or row number. After that, you can press or for inserting or deleting. You can choose the menu title "Row/Col" and choose menu item "Insert" or "Delete" to do the same thing. Note: ____ INSERT and DELETE commands work with row and column only. - If you intend to add some blank rows or column but you do not want to add the whole rows/columns, then you must use MOVE command instead. - If you intend to delete some cells, use ERASE instead of DELETE. Page 39 SHEET User manual By Chor-ming Lung October 9, 1988 LOAD, SAVE AND PRINT If you take a look of the menu title "File", you may notice that there are three types of load and save commands. Menu item "Load" will load the ordinary SHEET files (they have a file extension SHT). "Load WKS" will load Lotus 123 release 1A or release 2 files. "Load PART" is similar to Lotus file combine command. It is used for merging other worksheet with current worksheet. The file you "Load" with part should be saved with "Save PART" command and its file extension should be PRT. Menu item "Save" will save the current file using SHT format. "Save WKS" will save file in Lotus WKS format. "Save PART" is similar to Lotus file extract command. It is used for saving some part of the current worksheet. To activate this command, you should select blocks to hold cells being output, and activate this command. Currently, you cannot save your worksheet in Lotus release 1A format. Other than that, every thing is functional. File extension: ______________ Lotus 123 release 1A uses WKS as its file extension. SHEET uses SHT as its file extension. If you enter a file name in your file selector dialog box, you should include the file extension. The file extension for PART is PRT. If you are printing the spreadsheet to disk, the file extension for this file should be PRN. Load: ____ There are three way to load a spreadsheet: - From the menu title, choose "File" Choose menu item "Load" Select your file from the file selector box - . Press and L key simultaneously Select your file from the file selector box - @load (This is a BASIC command). Save: ____ There are three way to save a spreadsheet: - From the menu title, choose "File" Choose menu item "Save" Enter your file in the file selector dialog box - . Press and S key simultaneously Enter your file in the file selector dialog box - @save "filenmae" (This is a BASIC command.) Load PART: _________ You can merge those cells that are saved with "Save PART" into your current worksheet. To load those files, you should select the menu item "Load PART" from the menu title "File". Page 40 SHEET User manual By Chor-ming Lung October 9, 1988 Save Part: _________ You can save part of your worksheet to a file and then merge it with other worksheet. It is especially useful for BASIC programmer. They may create some BASIC routines that are needed from file to file. Save them as PART and load them back for other files. To save part of your worksheet, you need to select those cells as blocks and activate the menu item "Save PART". The file extension for this kind of file is PRT. Lotus files: ___________ In many ways, SHEET is quite similar to Lotus 123. But I must emphasize that I am not writing a Lotus clone. Instead, I am trying to write a BASIC interpreter in a spreadsheet environment. Even though, SHEET can read Lotus files, you may not be lucky enough to convert all your existing Lotus files. SHEET will convert those functions it supports. When SHEET encounters problem in function convertion, it will stop loading the file. It can read Lotus 123 release 1A or 2 files. You may also notice that the converted SHT files are normally bigger than WKS files. There are two reason for that. First, I use a single data type -- double -- for all constant number. Lotus separates number from integer to double. An integer is two bytes long while a double is eight bytes. The second reason is that Lotus stores formula in suffix order while SHEET stores formula in infix order (e.g. 3+4 is in infix order, its suffix order representation is 3 4 +). Suffix order not only saves storage (in suffix order, parenthesis can be discarded and comma between parameters can be discarded too), it also speeds up formula calculation. You may ask me why I use infix order? Well, it is not easy to write a BASIC interpreter using suffix order. Print: _____ You can print your work sheet to a file or to printer. Before Before you print, please specify the block which you want to print. The you print, please specify the block which you want to print print routine will print those columns that fits on the margins. If some columns on the print range are not print on the first pass, they will be printed on later passes. Note: Note The information you enter for the PRINT DIALOG will not be saved with your spreadsheet file. It means you have to type in your format each time you want to print it. Here is an example showing how to print the block A1..E12 Key Mouse button Effect Mouse cursor position ---------------------------------------------------------------- A1 Control + Mouse button A1 is inverted E12 Shift + Mouse button A1 through E12 are inverted Page 41 SHEET User manual By Chor-ming Lung October 9, 1988 PRINT dialog box display Change dialog box contents. or Mouse button on OK. Let us examine what the components of the print dialog box mean. If you want to print your worksheet to disk instead of printer, enter D in the box after "Print to (P)rinter/(D)isk:". Otherwise, enter P. If you want to print the formula (including BASIC statement) of each cell, then enter Y for the question "Print Formula (Y)es/(N)o"". Otherwise, enter N. NOTE: versions before 2.0 prints formula row after row. The new version prints formula column after column. It makes printing BASIC program easier. Right margin--> <---------------------- Page width ---------------------> ^ ******************************************************** | * ^ * | * | Top margin and titles * | * v * | * ************************************** * | * * * * *<------>* * * Page * Left * * * Length * Margin * * * * * * * | * * * * | * * * * | * * * * | * * * * | * * * * | * * * * | * * * * | * * * * | * ************************************** * | * ^ * | * | Bottom margin * | * v * v ******************************************************** If you want to test your output before you actually print it, you can enter the command: @redirect to "prn:" @print_block a1..g4,4,76 The commands above will print row 1 to row 4 from column A to column G using left margin 4 and right margin 76 to your printer. You can check the result before you actually print it. (That is useful because you cannot stop PRINT when it actually prints). Page 42 SHEET User manual By Chor-ming Lung October 9, 1988 PART III -- SHEET BASIC A spreadsheet is a powerful computing tool. It is also a handy environment for handling data. Yon can add, delete and change your data with ease, and the spreadsheet program modifies all the required places to reflect the changes. Let the spreadsheet handle your data and numurical calculations, and let the BASIC interpreter do the rest. SHEET BASIC can do calculations, string operations, graphics and text files. The combination of spreadsheet and BASIC provides an ideal environment for using your computer productively. The following is a brief explanation of each session of PART III. Cells, Variables, String: This chapter introduces the new cell reference method, variables and their naming convention. You cannot assign a string to a variable, but you can assign a string to a cell. The rules for accessing and operating strings are introduced too. Flow control Statements: These statements change the execution sequence of BASIC commands. The commands include: IF .. THEN .. ELSE, GOTO, GOSUB .. RETURN, LOOP .. EXIT IF .. ENDLOOP, FOR .. NEXT, and RUN I/O Statements: REDIRECT TO, PRINT Miscellaneous statements: SAVE SCREEN, RESTORE SCREEN, WAIT, DEFINE, MESSAGE Text files: GET_FILE, OPEN, CLOSE, INPUT, PRINT Worksheet commands: COPY, MOVE, ERASE, REFORMAT, SORT, SWAP Console commands: CLS, CURSORON, CURSOROFF, VIDEOHIGH, VIDEONORM, GOTOXY, INKEY, UNGET, INPUT Graphic commands: Setup commands: WINDOW, VIEWPORT, SCALE, EXITGRAPH, CLEAR Line/Dot commands: ATTRIBUTE, LINE, LINE_TO, PLOT, PLOT DATA, SPLINE Turtlegraphics: FORWARD, TURN, TURN_TO Axis commands: MARKX, MARKY, LABELX, LABELY Text command: PTEXT Miscellaneous: MOUSE_POS Page 43 SHEET User manual By Chor-ming Lung October 9, 1988 Cells and Variables Cell reference with dimension: _____________________________ A cell reference is a combination of column letter and row number. This type of access method is not enough for a programming language. In SHEET, you can use a cell as a BASE and move it horizontally or vertically by appending two numbers which are separated by comma and embraced by "[" and "]". Each column letter has its own value. Column A is 1, B is 2 and so on. For example, A2[3,4]. A2 is the BASE whose coordinate is [1,2] and A2[3,4]=[1,2]+[3,4]=[4,6]=D6. Here are some other examples: C1[4,7] which is equivalent to cell G8. C1 is equal to [3,1] and C1[4,7]=[3,1]+[4,7] = [7,8]. Column G is 7. So the combination of this cell is G8. H123[-2,4] H123=[8,123] and H123[-2,4] = [8,123]+[-2,4] = [6,127] or F127. Variables: _________ Variables must be initialized before being used. You can define up to 150 variables. A variable name starts with an alpha character which is followed by alphanumeric characters. Up to 15 characters are significant. A variable name must not be identical with reserved keywords, built-in functions and cell reference. examples: row=4 correct pi=3.1415 incorrect (PI is a predefined constant) a1=12 incorrect (it is cell A1) 1and2 incorrect (the first character is not letter) There are so many keywords and built-in functions, how can one differentiate them from the other? Keywords are embraced by leading and trailing spaces. For example, IF is a keyword and when it is displayed, it is " IF ". A built-in function has a leading space before the name. For example, SIN(x) will be displayed as " SIN(X)". Variables do not have any leading or trailing space. Cell reference with variables _____________________________ The whole worksheet can be viewed as a two dimensional array. You can access any cell by A1[c,r] where c is the column number and r is the row number. Not only you can access individual cell by using this method, you can also use it for block. For example, assume that you store your square matrix in cells a1..c3 and you want to store the inverse of this matrix to d1..f3. You can use the following program to do this. ! matrix(d1,inverse[a1..c3]) ! end Assume that you need to solve another square matrix in which you Page 44 SHEET User manual By Chor-ming Lung October 9, 1988 store it in cells a1..d4. You can easily change the argument of matrix to: ! matrix(e1,inverse[a1..d4) If you keep using this method to solve square matrix in different sizes, you may find it is clumsy and easy to make mistakes. Here is another program that makes the whole process of changing a lot easier for you and less error prone. !n=3 ! matrix(a1[n,0],invers[a1..a1[n-1,n-1]) ! end n=3 so a1[3,0]=[1,1]+[3,0]=[4,1]=d1 and a1[n-1,n-1]=[1,1][2,2]=[3,3]=c3. All you need to change is the constant n. String ______ You may store numerical data or TEXT string in a cell. To access a cell as a string, you should add the "$" at the end of each cell reference. For example: A1$, A1[i,j]$ String operators for comparisons, concatenation and string functions are added for BASIC users. REMEMBER, string functions and concatenation are available only in BASIC statements and commands. Currently, you can assign string to cells but not the 150 variables. Two predefined string variables are provided for file name and input buffer. They are FILENAME$ and BUF$. You can use them but you cannot assign new value to them. FILENAME$ is changed whenever you use the file item selector and BUF$ is changed whenever you use the command INPUT. For more details, please refer to "Text files" for GET_FILE, INPUT #n and "Console:" for INPUT. If an empty cell is referred as a string, a null string will be returned. If a cell with number is referred as a string, then a string that is exactly being displayed for that cell will be returned. If the cell is a TEXT string, a string excluding the leading character will be returned. The leading character for a TEXT string is one of ' " ^ and \. If you are assigning a string to a cell, and if the string does not contain one of those leading character, then the default character defined in "TEXT justification" of menu item "Defaults" will be used as the leading character for that cell. WARNING: DO NOT MAKE ANY STRING LONGER THAN 249 CHARACTERS. String operators: String operators +: string concatenation. For example "Thi"+"s a test" will return a string "This is a test". =: string assignment or string equal comparison. E.g. !a1$="^123": END. or !if a1$=b1$ then ... Page 45 SHEET User manual By Chor-ming Lung October 9, 1988 <>, >, <, =>, >=, =<, <= string comparisons for not equal, greater, less, equal or greater and equal or less than. Page 46 SHEET User manual By Chor-ming Lung October 9, 1988 Flow control Statements IF .. THEN .. ELSE .. Syntax: IF conditionn THEN statements:ELSE statements Description: This statement is used to make a decision regarding program flow based on the result returned by an expression. Example: IF A1=12 THEN A2=20:ELSE A2=30 NOTE: The following statements are not valid: IF A1=12 THEN G3:ELSE GOTO G4 IF A1=12 GOTO G3 If you have used traditional BASICs before, you would know that you can write "IF A1=12 THEN 120:ELSE GOTO 130" and "IF A1=12 GOTO 120" They are not valid in SHEET. Instead, you must change them to: IF A1=12 THEN GOTO G3:ELSE GOTO G4 IF A1=12 THEN GOTO G3 GOTO Syntax: GOTO cell. Description: This statement is used to branch unconditionally to a specified cell. Example: GOTO A1 GOSUB .. RETURN Syntax: GOSUB cell ... RETURN Description: These statements uses in pair for branching to, and returning from a subroutine. LOOP .. EXIT IF .. ENDLOOP Syntax: LOOP ... EXIT IF condition .... ENDLOOP Description: Those commands are used to execute a series of statements in Page 47 SHEET User manual By Chor-ming Lung October 9, 1988 a loop until some conditions are true. Condition is a logical expression which may be either TRUE or FALSE. Within the LOOP, multiple EXIT IFs are allowed. It is adviced not to use GOTO statement to break the loop. Example: The following example assigns 1 to 20 to cell A1 through A20. R=0 LOOP A1[0,R]=R+1 R = R+1 EXIT IF R=20 ENDLOOP FOR .. NEXT Syntax: FOR assignment TO expression [STEP expression] ... NEXT variable_being_assigned Description: These commands are used to execute a series of statements in a definite number of times. STEP is optional. If no STEP value being provided, it is assumed to be one. In other BASIC interpreters, NEXT I,J means: increases value of I, when the _________ FOR loop for I is done, then increases value of J. You must use NEXT I: NEXT J in SHEET BASIC. The number of nesting FOR _______________ loops is infinite. RUN Syntax: RUN cell Description: RUN is similar to GOTO. The only difference is that RUN will initialize the runtime stack and reset the symbol table. Most of the time, RUN is used to execute BASIC codes starting from a specified cell. If the cell is C1, you should enter "@run c1" in the editing buffer. Page 48 SHEET User manual By Chor-ming Lung October 9, 1988 I/O Statements REDIRECT TO Syntax: REDIRECT TO "file" Description: This statement changes the output path of subsequent PRINT commands to the specified file. There are a few predefined files. prn: is the printer, con: is your monitor ____ ____ and aux: is the rs-232 port. Otherwise, they are disk files. ____ The default file is con:. Except con:, all the file output are buffered. It means you may not get instant response. If you redirect the output to printer and if your printer is not on, an alert box will show up. If you choose "Quit", the BASIC program being executed will be stopped. If you choose "Continue", the subsequent PRINT commands will output to the file prior to REDIRECT TO command. Most likely, it is con:. You should turn your printer on before you choose "Try again". EXAMPLE: REDIRECT TO "prn:" PRINT statement Syntax: PRINT cell/cell$/number/string[,/;...] Description: This command prints numeric or string data to the file specified by REDIRECT TO command. Implicitly, it is your monitor. If no data following the PRINT command, a blank line will be printed. String data must be enclosed by double quotation marks. Each datum can be a cell reference, variable, string or number. If more than one datum is going to print, each of them should be separated by comma or semicolon. If you are using comma to separated two data, the second data will be aligned to the next TAB position. Each TAB is 10 characters wide. If you are printing cell content, the format specified in that cell is used exactly as display. If the cell you intended to print contains TEXT string, you should add "$" at the end of the cell reference. Otherwise, you will print a cell with zero. If a number is being printed, the number will be surrounded by a leading space and a trailing space. The output format of variables is similar to a number.If you are printing string, the text inside the embraced double quotation marks will be outputed. While you are printing, you can use and to suspend and resume your display. BUT don't _________ press to stop your PRINT session. If you do press _____________________________________________________________ while PRINT command is printing on console, YOU _____________________________________________________________ Page 49 SHEET User manual By Chor-ming Lung October 9, 1988 WILL GET back to desktop and you need to reboot the system to _____________________________________________________________ use SHEET. UES to stop your BASIC program. ________________________________________________ Example: PRINT a1,12;b1$;20;"This is a test" Page 50 SHEET User manual By Chor-ming Lung October 9, 1988 Miscellaneous statements If you print to console, your current display may be garbled. Therefore, you need to save your screen before printing and restore it after you are done. SAVE SCREEN Syntax: SAVE SCREEN Description: Save current display to SCREEN reserved area. That is the same area that is used for FAST screen update. If you deny to reserve 32K for fast screen update, you may crash the system when you use this command. RESTORE SCREEN Syntax: RESTORE SCREEN Description: Restore the screen to the old display. WAIT Syntax: WAIT WAIT # Description: This statement suspends the execution of BASIC commands. # means an integer number. If no number follows WAIT, it will print "Press return to continue ..." on console and you must press key to resume its operations. The printed message will damage your display. Hence, you should save your screen before calling WAIT. If WAIT followed by an integer x, then the system will wait for x seconds. Example: WAIT 5 (System suspends for 5 seconds) DEFINE Syntax: DEFINE fname(parameters) = expression Description: This statement let user define its own functions. Fname is the function name. Its naming convention follows the rule for naming variable. You can put up to 9 parameters for each user function. Each parameter is a variable separated by comma. Each DEFINE statement must occupy a single cell and user defined function is useful for numerical calculation only. Page 51 SHEET User manual By Chor-ming Lung October 9, 1988 MESSAGE Syntax: MESSAGE "text" Description: This command uses the GEM alert box to display a message. "text" can be a string of up to 5 lines. Each line is separated by "|" and the length of each line should not be bigger than 40. Example: MESSAGE "Hello|World" EXAMPLE: Address label program EXAMPLE Assume that you store your address data in the current spreadsheet. Column A holds the Last name. Column B holds the First name. Column C holds the address and D,E,F holds City, State and Zip respectively. The data starts from row 3. The following program will print the data in your address sheet to the address label for handling mails. Assume the program stores from cell G1..G10 and you run it by "@run g1". G1 : ! REDIRECT TO "prn:" G2 : !R=0: SAVE SCREEN G3 : ! LOOP G4 : ! EXIT IF ISEMPTY(A3[0,R]): PRINT G5 : ! PRINT A3[1,R]$;A3[0,R]$ G6 : ! PRINT A3[2,R]$ G7 : ! PRINT A3[3,R]$;A3[4,R]$;A3[5,R]$ G8 : ! PRINT : PRINT :R=R+1 G9 : ! ENDLOOP : WAIT G10 : ! RESTORE SCREEN Page 52 SHEET User manual By Chor-ming Lung October 9, 1988 Text files SHEET should be the first spreadsheet which has the commands for you to access any TEXT files. The command is line oriented. These commands are intended for people who need to acquire data from other sources. There are two constant strings that are related to some of the Text file commands. FILENAME$ is a constant string that can be changed by file item selecto dialog box. BUF$ is a constant string that is modified by any INPUT statement. Using the file commands and string functions, you can do some thing that is impossible for user of other spreadsheet programs. GET_FILE Syntax: GET_FILE def_search, name$ Description: Use the file item selector to find the file name. Def_search is the default search string. It can be a string with wild characters. For example "\*.SHT". name$ can be FILENAME$ or a cell reference. Example: GET_FILE "\*.*",filename$ GET_FILE "\*.txt",a1$ OPEN Syntax: OPEN "o",#n,filename$ OPEN "i",#n,a1$ Description: Open a file for input or output. "o" means output and "i" for input. #n means the channel number. N should be a number from 0 to 9. Filename can be FILENAME$ or a cell reference. Example: OPEN "o",#1,FILENAME$ OPEN "i",#2,"test.txt" CLOSE Syntax: CLOSE #n[,#m,...] Description: Close opened files. #n , #m are the channel number. They should be in the range of 0 to 9. If you try to close an unopened file, you will get an error message "Cannot close an unopened file". Example: CLOSE #1 Page 53 SHEET User manual By Chor-ming Lung October 9, 1988 INPUT #n Syntax: INPUT #n,buf$ Description: Read a line from the input file. #n is the channel number. buf$ can be BUF$ or a cell reference. If the channel number being referred is an output file or an unopened file, you will get an error message "Channel number error". Example: INPUT #1, BUF$ INPUT #1, a1$ PRINT #n Syntax: PRINT #n, cell/cell$/string/number[,/;....] Description: PRINT #n is similar to PRINT except that PRINT outputs to the file specified by REDIRECT TO (implicitly your terminal). PRINT #n outputs to the channel number being opened by OPEN command. Example: Assume that cell a1$="This is a test" and b1=12.34 and the widths of column A and B are 9. PRINT #1,a1;b1 ==> " 0 12.34 " to #1 PRINT #1,a1$;b1 ==> "This is a test 12.34 " to #1 Page 54 SHEET User manual By Chor-ming Lung October 9, 1988 Worksheet commands SHEET BASIC is part of SHEET -- the spreadsheet program. It is more convenient if you can use some of those worksheet commands to handle data in your BASIC program. This new version of SHEET provides some of the essential worksheet commands for you to incorporate with your program. They are COPY, MOVE, ERASE, REFORMAT, SORT and SWAP. SORT and SWAP are new commands for SHEET too. Currently, they can be activated by BASIC commands only. They work fine with cells whose formula do not refer to other cells. That is because the cell references in those formula are not updated when you SWAP them. Next release should remove this restriction. COPY Syntax: COPY block1, block2 Description: Copy block1 to block2. A block can be a single cell or a rectangle portion of the worksheet. The COPY command follows the rule for COPYing cells by . Example: COPY a1..b3, c1 MOVE Syntax: MOVE block1, block2 Description: Move block1 to block2. It is similar to the command . Example: MOVE a1..b3, c1 ERASE Syntax: ERASE block1[,block2,...] Description: Erase portion of the worksheet specified by the blocks. Up to 18 blocks can be erased at one time. Example: ERASE a1..b3,c1..d3 REFORMAT Syntax: REFORMAT FORMAT,block1[,block2,...] Description: Reformat portion of the worksheet. Up to 18 blocks can Page 55 SHEET User manual By Chor-ming Lung October 9, 1988 be reformat at one time. FORMAT is a string which consists of two part -- format and decimal places. A format can be "$", ",", "F", "S", "D1", "D2", "D3". "$" for DOLLAR, "," for COMMA, "F" for FIXED, "S" for SCINETIFIC and "D1", "D2", "D3" for DATE1, DATE2, and DATE3 respectively. No decimal places should follow "D1","D2" and "D3". Example: REFORMAT "$2",A1..B3 (reformat a1..b3 for dollar and 2 decimal places) REFORMAT "D1", C1..C12 (reformat C1..c12 for Date1 format) SORT Syntax: SORT "A",block, cell1[,cell2,...] SORT "D",block, cell1[,cell2,...] Description: Sort followed by "A" means sort block in ascending order and "D" for descending order. Only the block will be affected by the sort command. Cell1 points to the first column that is used for comparison. Up to 6 of these cells can be used as criteria for comparisons. In comparison, an empty cell is smaller than a cell with numerical value and a cell with numerical value is smaller than a cell contains TEXT string. If the column being compared consists of BASIC statements, SORT will be stopped. Currently, SORT does not modify the formula on each cell being affected. You may have trouble in sorting cells whose formula refers to other cells. Example: SORT "A",A1..B3,A1 SWAP Syntax: SWAP cell1, cell2 Description: This command swaps cell1 with cell2. It swaps between two cells. If you want to swap a row with other row, you should use a FOR loop to do it one by one. Again, it has problem with cell whose formula refers to other cell. Example: SWAP a1,b2 Page 56 SHEET User manual By Chor-ming Lung October 9, 1988 Console commands ________________ The Atari monitor emulates the VT52 terminal. You can use those VT52 commands to control your output. This version of SHEET provides some of the VT52 commands in the SHEET BASIC. They are CLS, CURSORON, CURSOROFF, VIDEOHIGH, VIDEONORM and GOTOXY. One function and two commands for reading keyboard entries are provided. They are INKEY, UNGET and INPUT. Screen coordinate: (1,1) is the upper left-corner, (80,1) is the upper right-corner, (1,25) is the bottom left-corner and (80,25) is the bottom right-corner. CLS Syntax: CLS Description: Clear the current screen and move the cursor to the position 1,1. CURSORON Syntax: CURSORON Description: Makes the screen cursor visible. CURSOROFF Syntax: CURSOROFF Description: Turns the screen cursor off. VIDEOHIGH Syntax: VIDEOHIGH Description: Makes the subsequent output characters in reverse color VIDEONORM Syntax: VIDEONORM Description: Makes the subsequent output characters in normal color GOTOXY Syntax: GOTOXY x,y Description: Moves the screen cursor to position x,y. x is in the Page 57 SHEET User manual By Chor-ming Lung October 9, 1988 range of 1 to 80 and y is in the range of 1 to 25. INKEY Syntax: a=INKEY Description: It is a function that returns the ASCII number of a key being pressed. If no key or special keys are being pressed -1 will be returned. Arrow keys for Up, Down, Left, Right have value of 129,130,131 and 132 respectively . Arrow keys with Shift keys for Up, Down, Left, Right have values of 133,134,135 and 136. Example: A=INKEY UNGET Syntax: UNGET x Description: Put x back to the input stream for later INPUT uses. Example: A=INKEY:.... :UNGET a INPUT Syntax: INPUT buf$ Description: buf$ can be either BUF$ or a cell reference. This routine calls the standard C function gets to get your input. If you UNGET a character before calling this command, the UNGET character cannot be altered or displayed but it will be the first character in your buf$. Page 58 SHEET User manual By Chor-ming Lung October 9, 1988 Graphic commands ________________ Your monitor can be used to display pictures. A picture is a collection of picture elements (pixels). Some people prefer to call a pixel a dot. Normal graphic commands in other BASIC languages provide you a mean to change each pixel in your display. The addressing method they used are called Raster coordinate. The left top-corner is (0,0) and the right bottom-corner is (639,399), (639,199) or (319,199) for high, medium and low resolution. In real world, we are dealing with Cartesian coordinate instead of Raster coordinate. The left bottom-corner is the minimal point we can use for display and the right top-corner is the maximal point. The graphic commands provided by SHEET BASIC use the Cartesian coordinate and those commands will translate Cartesian points to pixels. SHEET BASIC is not the first BASIC interpreter which provide scientific graphics (at least True BASIC is a few years earlier). But I think it is the first BASIC provides cubic spline curves. Cubic spline is a method scientists use to draw smooth curves. The graphic commands are highly relocatable and they work on any resolution. Hence, it is possible to use 16 colors to plot your graph in low resolution. The graphics commands are separated into the following categories: Setup commands: Setup commands: WINDOW or VIEWPORT, SCALE, EXITGRAPH, CLEAR Line/Dot commands: Line/Dot commands: ATTRIBUTE, LINE, LINE_TO, PLOT, PLOT DATA, SPLINE Turtlegraphics: Turtlegraphics FORWARD, TURN, TURN_TO Axis commands: Axis commands MARKX, MARKY, LABELX, LABELY Text command: Text command: PTEXT Miscellaneous: Miscellaneous: MOUSE_POS CONVENTION: CONVENTION Optional parameters are bracketed. # means a number. (x,y), (x1,y1) and (x2,y2) are measured in Cartesian coordinate. An r added before x or y means the point is in Raster coordinate. Page 59 SHEET User manual By Chor-ming Lung October 9, 1988 Setup commands: ______________ WINDOW or VIEWPORT defines the part of the screen being used for graphic output. They are the only commands whose parameters are in Raster coordinate. SCALE defines the scaling factors that translate the Cartesian corrdinate data into location on your display. CLEAR cleans up the area defined by WINDOW or VIEWPORT. WINDOW and VIEWPORT change the clipping area. The last command after your graph is done should be EXITGRAPH which resets the clipping area to the current window. Otherwise, you may have an illusion that your system is locked. In case you feel your system is locked, you should try first to see whether a BASIC program is running. If the system is still lock-up, enter the command "@EXITGRAPH" in blind and you should have the system back. WINDOW: ______ Syntax: WINDOW [# [,rx1,ry1,rx2,ry2] ] Description: If no parameter provides for this command, then the current window will be used for graphic output. SHEET supports up to 4 windows. Each window has its own number ranging from 1 to 4. This number corresponds to the number you press ALT-1, ALT-2, ALT-3 or ALT-4. So, you can use any window for graphics output. If raster parameters provide, then the window specified will be resized to those coordinates and the work area of that window will be used for graphics output. If a window changes it size, AES will ask SHEET to redraw it. So, you may need to run your program twice to get the graph. If the window number specified has not been opened, then you won't see the graph, but the BASIC interpreter will not stop. Examples: WINDOW using the current window WINDOW 1 using window 1 WINDOW 1,0,20,350,120 reposition and resize window 1 Hints: If your program involves a lot of calculation, and you don't want to run the program twice to get the graph, you can stop your program by key when you see the window has been resized and then enter the same run command again in blind. So, you have better to put your WINDOW command on the first line. Page 60 SHEET User manual By Chor-ming Lung October 9, 1988 VIEWPORT: ________ Syntax: VIEWPORT rx1,ry1,rx2,ry2 Description: WINDOW lets you to borrow the working area of a spreadsheet window. VIEWPORT command lets you put your picture anywhere in your screen. If the raster parameters are 0,0,0,0 then the whole screen will be used for graphic display. It is desirable if you want to test the graph on medium resolution and display the final graph on low resolution. Examples: VIEWPORT 0,0,0,0 VIEWPORT 0,0,350,120 SCALE: _____ Syntax: SCALE xmin, ymin, xmax, ymax Description: SCALE setup the scaling factors which are used for mapping Cartesian coordinate data to Raster coordinate pixels. xmin,ymin specifies the left bottom-corner coordinate and xmax,ymax the right top-corner. You should make the scale a little bit larger than what you want to leave some spaces for texts. CLEAR: _____ Syntax: CLEAR Description: This command clears the screen specified by WINDOW or VIEWPORT commands. EXITGRAPH: _________ Syntax: EXITGRAPH Description: WINDOW and VIEWPORT commands will change the clipping area. EXITGRAPH resets the clipping area to the current window and refreshes it (sometimes your graph may overwrite part of the current window). Page 61 SHEET User manual By Chor-ming Lung October 9, 1988 Line/Dot commands: _________________ Each line posseses some attributes. It has color, width and its type. A line can be a solid, or broken line. This is the type of a line and there are 6 line types defined. A dot has color and width. Instead of dot, sometimes you may want to display your data using markers. There are 6 different markers defined in SHEET BASIC graphic commands. SHEET BASIC is part of the spreadsheet SHEET. You may have your data stored in the spreadsheet. There are two special commands to plot data stored in cells. They are PLOT DATA and SPLINE. ATTRIBUTE: _________ Syntax ATTRIBUTE color#,width Description: ATTRIBUTE command changes the color and width of subsequent graphic commands. The default color is 2 which is red and the default width is 1. LINE: ____ Syntax: LINE x1,y1,x2,y2[,linetype] Description: This command draws a line from (x1,y1) to (x2,y2). If no type specified, it is supposed to be solid line. The parameter type is a number ranging from 1 to 6. linetype: 1: solid line 2: long dashes 3: dots 4: dash-dots 5: dashes 6: dash-dot-dot LINE_TO: _______ Syntax: LINE_TO x1,y1[,type] Description: This command draws a line from the previous position to (x1,y1). The last line/dot commands specified the previous position. If the program is newly executed, the previous position is (0,0). Page 62 SHEET User manual By Chor-ming Lung October 9, 1988 PLOT: ____ Syntax: PLOT x,y[,marker#] Description: If no marker number specified, PLOT command will draw a dot on the position (x,y). The markers chosen for SHEET BASIC are model after Lotus 123. MARKER: 1: square 2: + 3: diamond 4: up-triangle 5: x 6: down-triangle PLOT DATA: _________ Syntax: PLOT DATA xrange, yrange[,marker#, linetype] Description: The data are stored in the spreadsheet. PLOT DATA accesses x,y pairs from the xrange and yrange specified. It will plot data from the first row to the last row in the range. Please refers to PLOT for marker number and LINE for linetype. NOTE: if your data are quite dense, the linetype other than 1 may not break the line the way you specified. SPLINE ______ Syntax: SPLINE xrange, yrange,increment Description: Given n points (knots), mathematicians can find n- 1 different cubic polynomials that pass through the n _________ points. This curve generated by those polynomials is called spline-curve. It is a smooth curve and it may represent the data more closely than connecting the points with lines. Increment should be smaller than any subinterval of the n points. NOTE: To use SPLINE, you NOTE: To use SPLINE, you must provide at least 4 points. must provide at least 4 points. Page 63 SHEET User manual By Chor-ming Lung October 9, 1988 Turtlegraphics: ______________ Turtlegraphics is quite interesting. I add these commands just for fun. Only three commands are provided though. FORWARD: _______ Syntax: FORWARD distance Description: FORWARD command in LOGO uses pixel as measurement for distance. SHEET BASIC uses the scale factors specified by SCALE as measurement for distance. This command moves the drawing pen specified by the parameter distance. Distance can be negative which make FORWARD acts as BACK in LOGO. Example: FORWARD 5.2 TURN, TURN_TO: ____ _______ Syntax: TURN degree TURN_TO degree Description: They are the only commands in SHEET BASIC using degrees instead of radians. Degree 0 points to North. East is 90 degree, South is 180 and West is 270. TURN turns the active turtle by the amount specified in rotation. TURN is similar to LEFT if the degree is positive and RIGHT if the degree is negative. TURN_TO is similar to SETHEADING in LOGO, which sets the direction of the active turtle to a specified angle. Page 64 SHEET User manual By Chor-ming Lung October 9, 1988 Axis command: ____________ It is easy to draw the x-axis and y-axis by using LINE command, but you may also want to know where x=3 on the x-axis. MARKX and MARKY commands help you to mark your axes with measurement. LABELX and LABELY let you add the number 3 under the mark. MARKX/MARKY: ___________ Syntax: MARKX y_origin, xmin, xmax, xinc, xstep MARKY x_origin, ymin, ymax, yinc, ystep Description: An example may help me to explain better. Suppose that you are drawing an x-y graph for your income from 1970 to 1988 and your income ranges from 12,000 to 40,000. SCALE 1969, 0, 1989, 45000 Making the x-axis one year larger on both sides give you some blank spaces. You do not care about amount smaller than 12,000. The following command draws the x-axis. LINE 1969,12000,1989,12000 Your y_origin starts from 12000. xmin is 1970 and xmax is 1988. You want to mark each year and have a bigger mark on each five year. Here is the command: MARKX 12000,1970,1988,1,5 MARKY works similarly. NOTE: xstep should be a multiple of xinc. LABELX/LABELY: _____________ Syntax: LABELX y_origin, xmin, xmax, xinc, format LABELY x_origin, ymin, ymax, yinc, format Description: I am using the same example on MARKX. Now, you want to add the year 1970 to 1988 on your graph. The command to do this is: LABELX 12000,1970,1988,1,"f0" You may find some of the numbers are overlapped. Then you should adjust xinc. Format is a string that specified what kind of format we are going to use for displaying the labels. Currently, there are two formats supported by LABELX and LABELY. They are FIXED and SCIENTIFIC. The string starts with an f or F means the labels are FIXED number. The number following f/F is the decimal place. A scientific format starts with an s/S. The format string ("f0") on the example means that we are displaying integers. Page 65 SHEET User manual By Chor-ming Lung October 9, 1988 Text command: ____________ PTEXT: _____ Syntax: PTEXT x,y,string[,color, effects, rotation, height] Description: PTEXT plots string on the location (x,y). There are some special effects: 1: bold face 2: light 4: italic 8: underline 16: outline 32: shadowed If you want to use more than one special effects, you can do that by adding the number for each effects. For example, if you want to plot the string with bold face and underline, you should use 9 (1+8) for the effects. Rotation changes the direction the characters being displayed. 0: East 900: North 1800: West 2700: South Height of a font may be changed but you may not get a good result. The following height numbers provide the best result for small and normal fonts. Color monitor: small font: 4 normal font: 6 Monochrome monitor: small font: 6 normal font: 13 Page 66 SHEET User manual By Chor-ming Lung October 9, 1988 Miscellaneous: _____________ MOUSE_POS: _________ Syntax: MOUSE_POS x,y Description: x,y should be variables or cell references. MOUSE_POS will wait for you to press the left button on your mouse. If your mouse cursor is within the block specified by WINDOW or VIEWPORT, then the Cartesian of the mouse cursor will be stored on x,y. Otherwise, the Raster coordinate is stored on x,y. This command is useful for finding the value for WINDOW, VIEWPORT or PTEXT. It is also useful to find some data points from your graph. Hints: Mouse click response time varies not in a constant way (refer to problems part). You may better add a WAIT ____ 1 statement after the MOUSE_POS. So, user can press the _ button a little bit longer without causing problem. Also, MOUSE_POS will keep polling until you press your mouse button. It means your system is suspended for mouse click. You cannot break its operation by pressing . You have better add an ALERT or MESSAGE telling user to press the mouse button. Page 67 SHEET User manual By Chor-ming Lung October 9, 1988 Tips on using SHEET BASIC Interrupt: Interrupt You can stop your BASIC program by pressing key. Using previous row format: Using previous row format If your BASIC program generates a lot of data to the worksheet, you should choose "Using previous format" from menu item "Options" to non. It will speed up a little of your BASIC program. Error: Error When the BASIC interpreter encounters error, it will tell you what is wrong and where the offending code is. You can use F2 to edit that line and re-run it again. If your offending cell is for example G12, instead of re-run it, you can use "@goto g12" to continue your program. It may save you some time. Multiple statements: Multiple statements You can enter more than one statement in a cell. Each statement must be separated by colon. Entering multiple statements in one cell will save some memory, but don't enter too many because your editing buffer can hold 250 characters only. Garbled screen: Garbled screen If you output some data to your monitor, your current screen display will be garbled. In case you forget to save your screen before you print, you can rebuild your display by the following steps: - Select the menu bar and choose "About SHEET" - Press return when the dialog shown up. - If the number of windows being opened is less than 4, you can choose "New" to open up a new worksheet and then close it. - If the number is 4, then you must move your window out of the screen and move it back. Adjust: Adjust When I wrote the first SHEET BASIC program, I felt it is clumsy to enter "!" at the beginning of each statement and I forgot to enter "!" in some cells. If you have the same problems, you can use the following technique to enter BASIC statement. As we know, each BASIC statement starts with an alpha letter. SHEET will treat any cell entry starts with an alpha letter as TEXT string. You can enter your BASIC codes as text string and then adjust them to BASIC statements. The steps to adjust codes: - select blocks to cover the desired cells - Press and choose "BASIC (!)" to adjust the text string to BASIC statements. Page 68 SHEET User manual By Chor-ming Lung October 9, 1988 Appendix A BUILT-IN FUNCTIONS _____________________________ Math: ____ General functions: ABS(x): Absolute function of x INT(x): Integer part of x (e.g. +int(12.4) = 12) FRAC(x): Fraction part of x (e.g. +frac(12.4) = 0.4) FACT(x): Factorial of x. X < 34 SQR(x): Square function of x SQRT(x): Square root of x Trigo & logarithm functions: SIN(x): Sine function of x. X is measured in radian COS(x): Cosine function of x. TAN(x): Tangent function of x. ASIN(x): Arc sine function of x ACOS(x): Arc cosine function of x ATAN(x): Arc tangent of x LOG(x): Logarithm base 10 LN(x): Logarithm base e EXP(x): Exponent of x RAD_DEG(x): Radian to degree DEG_RAD(x): Degree to radian DATE functions: DATE(mm,dd,yy): Function for calculating Julian days. DAY(x): Day of x. X is Julian day MONTH(x): Month of x YEAR(x): Year of x NOTE: 1. You can use the following formula to find the weekday of the date: (date(mm,dd,yy)+1) mod 7 0 if Sunday, 1 if Monday and so on. 2. You can use the following formula to find the number of days on a specific month. case 1: mm<12 date(mm+1,1,yy)-date(mm,1,yy) case 2: mm=12 date(1,1,yy+1)-date(mm,1,yy) Matrix functions: A matrix in a worksheet is a block embraced by "[" and "]". For example, to make A1..C3 as a matrix, it should be [A1..C3]. Versions before 2.0 of SHEET restrict individual matrix size within 64K. This limit has been removed. Matrix operators include *,+ and -. There is no priority for those matrix operators. Formula is calculated from left to right. Parenthesis can be used to change the calculation order. There are only two matrix functions. They are INVERSE and TRANSPOSE. Their arguments must be a matrix or a matrix operations grouped by parenthesis. The sequence of activating matrix operations is: Page 69 SHEET User manual By Chor-ming Lung October 9, 1988 MATRIX(cell, matrix_operations) Cell: The cell reference of the MATRIX is the leading location where matrix operations put their result. Matrix_operations: Matrix operations can be matrix functions or combination of matrix operators. For example, to store the inverse of matrix [a1..c3] in matrix [d1..f3], you should store the following formula somewhere: +MATRIX(d1,inverse[a1..c3]) Statistics: __________ AVERAGE( any number of parameters ): Average of parameters. Parameters can be a single cell reference, an expression, a block of cells. MEDIAN( any number of parameters ): Median of parameters. STD( any number of parameters): Standard deviation of parameters. VAR( any number of parameters): Variance of parameters. SQR_SUM( any number of parameters): Square sum of parameters. eg. +AVERAGE(A1..F4,234,12+24.5,H2+34*sin(pi)) Miscellaneous: _____________ MAX(any number of parameters): Maximum value of parameters. MIN(any number of parameters): Minimum value of parameters. SUM(any number of parameters): Sum of all parameters. RAND: Random number between 0 and 1. IFF(condition,true_value, false_value): IF function ISEMPTY(cell): return 1 if cell is empty, otherwise 0 TRUE: it is equal to 1 FALSE: it is equal to 0 ALERT ALERT(default, "[icon#][text][exit]") Uses the alert box to get user's response. icon#: 0: no icon 1: NOTE icon (!) 2: WAIT icon (?) 3: STOP icon (stop sign) text: text string can be up to 5 lines. Each line is separated by "|". You cannot have more than 40 characters per line. If you use icon, then the number of character per line must be lesser than 40. Keep your character per line less than 30 will be safe. exit: Up to 3 exit button can be defined. Each of them is separated by "|". eg. !A3=ALERT(1,"[1][This is a test|Wow][Ok|Cancel]") Page 70 SHEET User manual By Chor-ming Lung October 9, 1988 COL_WIDTH COL_WIDTH(block) Returns the total column widths that holds the block. For example, if column width of A is 8 and B is 12 and C is 4: eg COL_WIDTH(a1) ==> 8 COL_WIDTH(b1..c1) ==> 16 LAST_ROW LAST_ROW(cell,r) Returns the value stores in the last row on the column the cell is. r tells you where the last row is. r is zero origin. For example, if the last row of column B is 12 and cell B12 has a value of 123.45: eg LAST_ROW(b20,row) ==> 123.45 and row=11 You can access the last cell by using B1[0,row] LAST_COL LAST_COL(cell,c) Returns the value stores in the last column on the row the cell is. c tells you where the last column is. c is zero origin. For example, if the last column of row 4 is H and cell H4 has a value of 456.77: eg LAST_COL(a4,col) ==> 456.77 and col=7 You can access the last cell by using a4[col,0] SEARCH SEARCH(STRING,block,r,c) A boolean function to find out whether STRING in the block and r,c tell you where the cell is. r and c are zero origin so you can access the cell by using a1[c,r]. NOTE: the comparison is case insensitive and a cell of the block which has a substring includes STRING, then the location of that cell will be stored in r and c. If search fails, r and c will not be changed. eg. Assume that cell A5$="What",b5$="is",c5$="your", d5$="name?". SEARCH("You",a5..d5,r,c) ==> 1 and r=4, c=2. To access the cell that holds a substring of "YOU", you should use a1[c,r]$ (it is c5$ in this case). Finance: _______ Future growth: GRATE(a time series data): Average growth rate. GBASE(a time series data): Adjusted base value GFUTURE(grate,gbase, predict time): Future values based on grate and gbase A time series data is data being collected in a fixed frequency of time. They may be gathered yearly, quarterly, monthly or daily. For example, you income is a time series data that is increased yearly. For a more detail example, refer to the example file "FG.SHT" Investment: INVEST_PV(final value, interest, compound frequency, terms): Present value of investment Page 71 SHEET User manual By Chor-ming Lung October 9, 1988 INVEST_FV(present value, interest, compound frequency, terms): Future value of investment INVEST_INTEREST(present value, final value, compound frequency, terms):Compound interest of investment INVEST_TERM(present value, final value, interest, compound frequency): Terms of investment. Please refer to the file "INVEST.SHT" for using those functions. Loan: LOAN_PAY(amount borrowed, interest,total terms, number of terms per year): Payment for each term. LOAN_AMOUNT(payment, interest, total terms, terms per year): Amount borrowed. LOAN_TERM(amount borrowed, payment, interest, terms per year): Total number of terms for loan. Please refer to the file "LOAN.SHT" for using those functions. Withdraw: WDRAW_SAVE(amount withdrawn, interest, terms, terms per year): Initial Investment WDRAW_AMOUNT(amount saved, interest, terms, terms per year): Amount withdrawn. WDRAW_TERM(amount saved, amount withdrawn, interest, terms per year): Total terms Please refer to the file "WITHDRAW.SHT" for using those functions. Deposit: DEPOSIT_FV(amount, interest, total terms, terms per year): Final value for deposit DEPOSIT_AMOUNT(final value, interest, total terms, terms per year): Regular deposit DEPOSIT_TERM(amount, final value, interest, terms per year): Total number of terms. Please refer to the file "DEPOSIT.SHT" for using those functions. String functions: _________________ FILENAME$ FILENAME$ is a string variable that can only be modified by file selector dialog box. BUF$ BUF$ is a string variable that can be changed by the command INPUT only. MID$: MID$(STRING,s,len) Returns a substring of STRING, starting from s with Page 72 SHEET User manual By Chor-ming Lung October 9, 1988 length len. If s is larger than the length of the string STRING, then a substring range error occur. If len+s is larger than the length of STRING, then up to the last character will be returned. eg MID$("12345678",4,3) ==> "456" MID$("12345678",14,3) ==> substring range error MID$("12345678",4,20) ==> "45678" LEFT$: LEFT$(STRING,len) Returns a substring of STRING, starting from 1 with length len. If len is larger than the actual length of STRING, the whole STRING will be returned. eg LEFT$("12345678",4) ==> "1234" LEFT$("12345678",20) ==> "12345678" RIGHT$: RIGHT$(STRING,len) Returns a substring of STRING, from the far right portion of STRING with length len. If len is larger than the length of STRING, then substring range error occurs. eg. RIGHT$("12345678",4) ==> "5678" RIGHT$("12345678",20) ==> substring range error SPACE$: SPACE$(num) Returns a string with num of blank spaces. num must be a positive integer. eg. SPACE$(4) ==> " " CHR$: CHR$(num) Returns a string with one character whose ASCII number is equal to num. num is in the range of 0 to 255. eg CHR$(82) ==> "R" STR$: STR$([FORMAT,]value) Changes a number value to a string equivalent to that value. FORMAT is optional. It is a string which consists of three part -- width, format, decimal point. It is equivalent to return a cell string with column width, format and decimal place. eg STR$(1234.5) ==> "1234.5" STR$("12$2",1234.5) ==> " $1234.50" VAL: VAL(STRING) Returns the value of STRING. This function will strip off characters other than "E", digits, "+", "-" and "." first and do the translation later. eg VAL("abc123.45") ==> 123.45 VAL(".23e-2") ==> 0.0023 VAL(".23ae-2") ==> 0.0023 LEN: LEN(STRING) Returns the length of the STRING. An empty string has a len of zero. eg LEN("") ==> 0 LEN("123456") ==> 6 Page 73 SHEET User manual By Chor-ming Lung October 9, 1988 POS: POS(STRING1,STRING2,start) Return the position of any character of STRING1 from STRING2 beginning from start. All the character of STRING1 and STRING2 will be changed to upper case first. A zero will be returned if none has been found or start is larger than the len of STRING2. eg POS(" ", "What is this?",1)==> 5 A space in position 5. POS("ts","What is this?",1)==>4 "t" is in position 4 POS("ts","What is this?",5)==>7 "s" is in position 7 POS("AT","What is this?",1)==>3 "A" is in position 3. Case insensitive. POS(",-","What is this?",1)==>0 Appendix B CONTROL KEYS _______________________ Non-editing: ___________ stops a running BASIC program. moves cell cursor one row up. moves cell cursor one row down. moves cell cursor one column left. moves cell cursor one column right. moves cell cursor to the direction specified by the arrow key by page. changes the editing direction to neutral. adjusts TEXT string to BASIC statements or text justification. creates a new sheet loads a sheet file saves current spreadsheet

prints current spreadsheet exits to desktop inserts a row or a column deletes a row or a column reformats cells erases cells copies cells moves cells defines the starting cell of a block defines the stopping cell of a block <1> switches to the first window <2> switches to the second window <3> switches to the third window <4> switches to the fourth window refreshes the current window. recalculates the spreadsheet by column recalculates the spreadsheet by natural order recalculates the spreadsheet by row Page 74 SHEET User manual By Chor-ming Lung October 9, 1988 modifies the current cell's content Goto a specified cell. Editing: _______ terminates and moves cell cursor one row up. The editing direction changes to up direction. terminates and moves cell cursor one row down. The editing direction changes to down. terminates and moves cell cursor one column left. The editing direction changes to left. terminates and moves cell cursor one column right. The editing direction changes to right. moves editing cursor to left. moves editing cursor to right. terminates and moves cell cursor to the direction specified by editing direction. if the mouse cursor is within working area, the coordinate of the cell under mouse cursor will be inserted into editing buffer; if the mouse cursor is within the editing line, the editing cursor will move to the character under the mouse cursor. if the mouse cursor is within working area, a comma and the coordinate of the cell under mouse cursor will be inserted into editing buffer. if the mouse cursor is within working area, a through symbol ".." and the coordinate of the cell under mouse cursor will be inserted into editing buffer. Appendix C Program specification: ________________________________ SHEET is written in Mark Williams C. The accuracy for real number (double) in Mark Williams C is up to 17 digits (Lotus 123 is up to 15 digits). The range of calculation is -1E-37 to 1E+37. Each spreadsheet can accomdate up to 2,549,745 (255*9999) cells and the spreadsheet is implemented by using Sparse Matrix. Any input to a cell will be tokenized before it is being inserted. This program support up to 4 windows. The BASIC interpreter can be used to handle graphics, string, and ASCII text files. Accuracy: Accuracy up to 17 digits Range: Range -1E-37 to 1E+37 (If you find 1e+37 in a cell, that means the calculation for that cell is not correct) Arithmetic operators: Arithmetic operators "+", "-", "*", "/", "^", MOD Logical operators: Logical operators: AND, OR, NOT, "=", "<>", ">", "<", ">=", "<=", "=>", "=<" Built-In functions: Built-In functions Page 75 SHEET User manual By Chor-ming Lung October 9, 1988 Math: SIN, COS, TAN, ASIN, ACOS, ATAN, LOG, EXP, LN, ABS, INT, FRAC, SQR, SQRT, DATE, FACT, RAD_DEG, DEG_RAD, PI (constant) Statistics: AVERAGE, MEDIAN, STD, VAR, SQR_SUM Miscellaneous: MAX, MIN, SUM, COUNT, TODAY, DAY, MONTH, YEAR, TRUE, FALSE (TRUE and FALSE are constant, TRUE is 1 and FALSE is 0), IFF, ISEMPTY, ALERT, LAST_ROW, LAST_COL, SEARCH. Finance: GRATE, GBASE, GFUTURE, INVEST_PV, INVEST_FV, INVEST_INTEREST, INVEST_TERM, LOAN_PAY, LOAN_AMOUNT, LOAN_TERM, WDRAW_SAVE, WDRAW_AMOUNT, WDRAW_TERM, DEPOSIT_FV, DEPOSIT_AMOUNT, DEPOSIT_TERM String: MID$, CHR$, LEFT$, RIGHT$, SPACE$, STR$, VAL, LEN, ASC, FILENAME$(a string variable used for file item selector) and BUF$(a string variable used by the command INPUT). Matrix: MATRIX, TRANSPOSE, INVERSE, *, +, - Priority: Priority Lowest: - AND, OR - "+", "-" - "*", "/", "^", MOD - number, cell reference, variable, function call, NOT, "+", "-" (unary operator) Highest:- Parenthesis Constants: Constants PI(0.31415926535897932e+01), TODAY(Julian days when you press TODAY), TRUE(1), FALSE(0). Cell reference: A cell can be referred by using its spreadsheet Cell reference coordinate (e.g. D1) If you add a "$" in front of the row number (in this example 1) or in front of the column letter (D) then you make it an absolute reference. If you add "$" at the end of the cell reference, then you are using it as a string. You can use a cell as BASE and move it vertically or horizontally by appending two numbers which are separated by comma and embraced by "[" and "]". The first number increases the BASE horizontally and the second number increases the BASE vertically. For example A2[3,4]. You can separate A2 to [1,2] (Column A has a value of 1, B has 2 and so on). A2[3,4] = [1,2]+[3,4]=[4,6]=D6. Variables: Variables Up to 150 variables can be defined. This number includes the user defined function. It is intended for BASIC usage. For the time being, you cannot use those variables to hold any string. Appendix D Lotus and SHEET __________________________ Page 76 SHEET User manual By Chor-ming Lung October 9, 1988 In Lotus, you must add a '@' symbol before every function name. In SHEET, no special symbol is required to put before the function name. However, if a function name is the first element of your formula, a '+' or '(' is required to differentiate it from TEXT. Lotus requires you to put # symbol to embrace the logical operators. For example , "+A1 #AND# A2". It is invalid in SHEET. Actually, you will get 2 bombs if you enter the above formula. You should avoid adding special character in your formula. The valid form is "+A1 AND A2". Lotus @COUNT function will count any cell containing a numeric value or a label. SHEET will count only numeric value. For example, A _ B _ 1 _ 12 This is a test @COUNT(A1..B1) will return 2 and COUNT(A1..B1) will return 1. Lotus @DATE function asks for arguments (YYYY,MM,DD) and DATE function in SHEET asks for (MM,DD,YY). The first day of @DATE is 1-Jan-1900 while the first day of DATE is 1-Jan-4712 B.C. Here is a list of Lotus functions which have equivalent SHEET functions but using different names. @FV(amount,interest,terms) = DEPOSIT_FV(amount,interest,terms,1) @RATE(fv,pv,term) = INVEST_INTEREST(pv,fv,12,term*12) @TERM(pmt,int,fv) = DEPOSIT_TERM(pmt,fv,int,12) @PMT(amount,interest,terms) = LOAN_PAY(amount,interest,terms,12) Appendix E Recalculation ________________________ Natural: Natural Recalculates each cell in the dependent order. NOTE: some spreadsheet programs use dependent list to find the dependent order and they can quickly recalculate those cells being affected. SHEET uses recursive method to recalculates cells. The effect is that, it blindly recalculate every cell which contains formula and it is slower than using dependent list. The positive side is that, you have more memory to use than those spreadsheet programs. This is a trade-off between speed and space. Row: Row: Recalculate each row in the ascending order. Column: Column: Recalculate each column in the ascending order. Manual: Manual The spreadsheet stops automatic recalculation. User has to press , or for natural, row or column recalculation, where means press key with character key simultaneously. Note: It is no longer true that natural recalculation is slower than row or column recalculation. Page 77 SHEET User manual By Chor-ming Lung October 9, 1988 Appendix F FILE FORMAT ______________________ Header for SHT: Header for SHT - 270 bytes reserved data. Currently, there are a few bytes have been used. - 2 bytes for file version number, current version is 1.4 - 1 bytes for screen type when the file saved. 1 for color monitor and 0 for monochrome monitor. - 2 bytes for maximum row number. - 40 bytes for window title. (39 characters with a null character) - 2 bytes: check-sum of the window title to make sure we are handling the right work sheet. - 256 bytes for width of each columns - 2 bytes for window type (It is useless) - 8 bytes for current window size - 4 bytes for working area top row, top column - 4 bytes for current cell cursor address - 2 bytes for current recalculation mode Cell contents for SHT format: Cell contents for SHT format - 1 bytes for cell type (use this byte with 0x23 to do bit-wise and. If it is not 0, then it is NUMBER). - 2 bytes for length - IF NUMBER: 2 bytes for row #, 1 byte for column #. 2 bytes for attribute and 1 byte for decimal place 8 bytes for calculating result. - IF NOT NUMBER (it may be TEXT or STATEMENT, its decimal place and calculating result are not needed) 2 bytes for row#, 1 byte for column #. 2 bytes for attribute (it may be blank cell) - IF length <> 0, length bytes of tokens. - The last cell type and length are 0 and 0. Header for PRT: Header for PRT - 4 bytes holding "PART" Cell contents for PART format: Cell contents for PART format - 4 bytes for cell row, column - 2 bytes for display attribute - 2 bytes for decimal place - 2 bytes for tokens length - 8 bytes for calculated result - tokens length bytes of actual tokens Appendix G Problems ___________________ A user told me his cell cursor keep flashing ans: It won't happen very often. It seems it happens when the system is newly bootup and you load SHEET right away. In Page 78 SHEET User manual By Chor-ming Lung October 9, 1988 SHEET, you can locate the cell cursor by mouse click. You can also select a block by prolonging your mouse click (drag). When you press your mouse to move the cell cursor, SHEET first moves your cell cursor to that position and inverts the color of that cell. Mouse response time seems a lot faster when the system is newly bootup. Because of the fast response time, SHEET thinks you are still pressing your mouse button. It thinks you are trying to select a block then. That is the reason why your cell cursor on and off. In case you have this problem, you should choose some of the help dialogs. 4 or 5 of them should slow down your mouse response time. Another method found by a user is provided here. After the system is booted, you type a key and then load your SHEET program. Why some of my input characters are being truncated? ans: For versions before 2.0, if you type any illegal character in your formula, you will be bombed out and you must reboot your system to use SHEET. This new version of SHEET prevents this problem but the rest characters after the illegal character will be truncated and a "#" symbol will be added at the end of the illegal formula. You should rewrite your formula. Page 79 SHEET User manual By Chor-ming Lung October 9, 1988 Biorthym program ________________ A German doctor found that our emotional, physical and intellectual conditions change in sine curves with different frequencies. Emotional condition changes in 23 days per cycle, physical 28 days, and intellectual 33 days. They are called biorthym. The following SHEET BASIC program uses the data found to generate the biorthym curves for you. You should enter your name in cell B1 and your birthday in B2 using +DATE(mm,dd,yy), then you can run it by the command "@run e1". E1 : !B3= TODAY E2 : !B4=B3-B2+1:START= DATE( MONTH( TODAY),1, YEAR( TODAY))-B2 E3 : ! IF B3<0 THEN MESSAGE "Date entry error": END E4 : !EMOTION=START MOD 23 E5 : !PHYSICAL=START MOD 28 E6 : !INTELLECTUAL=START MOD 33 E7 : ! WINDOW 1,0,11,417,199 E8 : ! SCALE -4,-1.5,33,1.1 E9 : ! CLEAR :EC=2*PI/23:PC=2*PI/28:IC=2*PI/33 E10 : ! FOR X=1 TO 31 E11 : !Z1=EMOTION*EC:EMOTION=EMOTION+1 E12 : !Z2=PHYSICAL*PC:PHYSICAL=PHYSICAL+1 E13 : !Z3=INTELLECTUAL*IC:INTELLECTUAL=INTELLECTUAL+1 E14 : ! PLOT X, SIN(Z1),1: PLOT X, SIN(Z2),2: PLOT X, SIN(Z3),3 E15 : ! NEXT X E16 : ! LINE 1,0,31,0 E17 : ! LINE 1,-1,1,1 E18 : ! MARKX 0,1,31,1 E19 : ! MARKY 1,-1,1,0.1,0 E20 : ! LABELX 0,2,30,2,"f0" E21 : ! LABELY 1,-1,1,0.1,"f1" E22 : ! PTEXT 11,-1.2,B1,1,1 E23 : ! PLOT -2,-1.35,1: PTEXT -1,-1.4,"Emotional" E24 : ! PLOT 8,-1.35,2: PTEXT 9,-1.4,"Physical" E25 : ! PLOT 20,-1.35,3: PTEXT 21,-1.4,"Intellectual" E26 : ! EXITGRAPH E27 : ! END Explanations: E1: Set the current date on cell B3. E2: B4 holds the days of your life. Variable START holds the days from your birth to the first day of current month. The plus 1 in calculating B4 means that your first day is counted as 1. But biorthym calculates the first day as 0. (Sine curve starts from 0 to 2*PI). E3: This is unnecessary. I just want to show you how to display a message. E4: Since our emotional condition changes in a cycle of 23 days, we can calculate the condition of the first day of current month by using the operator MOD. E5: Similar to E4 E6: Similar to E4 Page 80 SHEET User manual By Chor-ming Lung October 9, 1988 E7: Setup our graphic window E8: Setup the scaling factor. Making the scaling factors a little larger than what they actually are will provide some blank spaces for texts. E9: Clear the window area. EC is emotional constant. Emotional condition changes in 23 days per cycle. Each cycle is 2*PI long. PC for physical condition and IC for intellectual condition. E10: A FOR loop to draw your graph. I just assume each month have 31 days. You may want to change 31 to its actual days. E11~E13: Simple calculation for your conditions. E14: Plot emotional condition with marker 1, physical with marker 2, and intellectual with marker 3 E16~E17: Plot the x-axis and y-axis E18: Draw marks on x-axis E19: Draw marks on y-axis E20: Draw label on x-axis. It is integer. E21: Draw label on y-axis. It is real with 1 decimal place. E22: Plot your name on screen. (B1 holds your name) E23~E25: Plot texts showing the meaning for each marker. E26: Legal way to return to your current window E27: END program. Page 81 SHEET User manual By Chor-ming Lung October 9, 1988 Calendar program ________________ The file name of this program is "CAL.SHT". This program generates a month calendar and leaves some spaces for your monthly activity. Here is the listing. To run it, enter "@run q1" Q1 :!MON=10:YR=88:IBM= FALSE Q2 :!WEEKDAY=( DATE(MON,1,YR)+1) MOD 7 Q3 :! IF (MON<12) THEN TDAY= DATE(MON+1,1,YR)- DATE(MON,1,YR): ELSE TDAY= DATE(1,1,YR+1)- DATE(MON,1,YR) Q4 :! IF IBM THEN GOSUB Q34: ELSE GOSUB Q42 Q5 :! ERASE A1..O64 Q6 :!B3$="^Sun":D3$="^Mon":F3$="^Tue":H3$="^Wed" Q7 :!J3$="^Thu":L3$="^Fri":N3$="^Sat" Q8 :!LINES=(WEEKDAY+TDAY)/7 Q9 :!LINES= INT(LINES)+( FRAC(LINES)>0) Q10 :!WIDTH=60/LINES Q11 :! FOR I=0 TO 62 Q12 :! FOR J=0 TO 14 STEP 2:A2[J,I]$= CHR$(VERT): NEXT J Q13 :! NEXT I Q14 :! FOR I=0 TO 12 Q15 :! IF (I MOD 2)=0 THEN B2[I,0]$="\"+ CHR$(HOR):B4[I,0]$="\"+ CHR$(HOR): ELSE B2[I,0]$="\"+ CHR$(MDOWN):B4[I,0]$="\"+ CHR$(PLUS) Q16 :! NEXT I Q17 :!A2$= CHR$(TLEFT):O2$= CHR$(TRIGHT):A4$= CHR$(PLEFT):O4$= CHR$(PRIGHT) Q18 :! FOR I=1 TO LINES Q19 :!L=I*WIDTH: COPY A4..O4,A4[0,L] Q20 :! NEXT I Q21 :! FOR J=0 TO 12 STEP 2:C64[J,0]$= CHR$(MUP): NEXT J Q22 :!A64$= CHR$(BLEFT):O64$= CHR$(BRIGHT) Q23 :!L=1:J=1:M=WEEKDAY*2 Q24 :! FOR I=WEEKDAY TO WEEKDAY+TDAY+1 Q25 :! IF (I MOD 7)=0 THEN L=L+WIDTH:M=0 Q26 :!B4[M,L]=J:J=J+1:M=M+2: IF J=TDAY THEN I=42 Q27 :! NEXT I Q28 :! SAVE SCREEN : REDIRECT TO "prn:" Q29 :! PRINT SPACE$((80- LEN(V1$))/2);V1$: PRINT Q30 :! PRINT_BLOCK A2..O64,4,76 Q31 :! WAIT 2: RESTORE SCREEN Q32 :! END Q34 :!MDOWN=194:MUP=193 Q35 :!PLEFT=195:PRIGHT=180 Q36 :!PLUS=197:VERT=179:HOR=196 Q37 :!TLEFT=218:TRIGHT=191 Q38 :!BLEFT=192:BRIGHT=217 Q39 :! RETURN Q42 :!MDOWN=45:MUP=45 Q43 :!PLEFT=124:PRIGHT=124 Q44 :!PLUS=43:VERT=124:HOR=45 Q45 :!TLEFT=43:TRIGHT=43 Q46 :!BLEFT=43:BRIGHT=43 Q47 :! RETURN Page 82 SHEET User manual By Chor-ming Lung October 9, 1988 Explanation: Explanation Q1 Set the month and year we interest about in the variable mon and yr. You cannot use month and year for the variable names because they are names for built-in functions. IBM is TRUE if your printer can print the IBM graphic characters. If you change the month and year in cell Q1, please change the string in cell V1 at the same time. Q2: WEEKDAY stores the weekday of the first day of the month. WEEKDAY is 0 if it is Sunday and 1 for Monday and so on. Q3: TDAY is the total number of days in the specified month. It can be calculated easily by subtracting the first date of one month after mon from the first date of mon. Q4: Initializes some constants depend on whether IBM is TRUE or FALSE. Q5: Erase cells from A1 through O64 Q6: Row 2 and 4 holds the frame for the title of weekdays. Row 3 holds the title. Q8: Normally, we need 4, 5 or 6 lines to hold a monthly calendar. To calculate how many lines are need for our current month, we can do it by adding the WEEKDAY and TDAY and divides it by 7. Q9: This is a little bit tricky. FRAC is a function returns the fractional part of a numerical value. In this case, LINES from Q8 is equal to 5.285714. FRAC(LINES) returns 0.285714. It is greater than zero. TRUE is 1 and 0 is FALSE. (FRAC(LINES)>0) returns a value of 1 and the INT(LINES) returns a value of 5. So we need 6 lines to hold our current monthly calendar. Q10: The width for each line is 60/LINES. Since the value of LINES can be 4,5 or 6. So, width is an integer. Q11~Q22 Fills the frame for our calendar. TLEFT, is the TOP left- corner, TRIGHT is the TOP right-corner, BLEFT is the Bottom left- corner and BRIGHT is the Bottom right-corner. VER is a vertical bar, HOR is a horizontal bar. PLEFT is a T character turns -90 degree and PRIGHT is a T character turns 90 degrees. MDOWN is a T character and MUP is a T character turns 180 degrees. They are used to join lines in the edges. PLUS is a + character. Q23~Q27 Fills the Date into the calendar. Q28~Q31 prints the calendar to your printer. Q32: You should always end your program with END. Q34~Q39: Defines constants for IBM=TRUE Q42~Q47: Defines constants for IBM=FALSE Page 83 SHEET User manual By Chor-ming Lung October 9, 1988 Roots _____ ROOTS.SHT is a sample program which finds roots for any single variable functions. There are some techniques which are not covered in other sample programs. You should study it even you have no interest in finding roots for a function. B1 : !XMIN=-5:YMIN=-5:XMAX=5:YMAX=100:ST=0.1:ERR=0.000001 B2 : ! DEFINE F(X)=3*X*X-2 B3 : ! IF ALERT(2,"[0][Which resolution you are in?][Medium|High]")=2 THEN WINDOW 0,0,20,639,399: ELSE WINDOW 0,0,11,639,199 B4 : ! SCALE XMIN,YMIN,XMAX,YMAX B5 : ! CLEAR B6 : ! PLOT XMIN,F(XMIN) B7 : ! FOR X=XMIN TO XMAX STEP ST B8 : ! LINE_TO X,F(X) B9 : ! NEXT X B10 : ! LINE XMIN,0,XMAX,0: LINE 0,YMIN,0,YMAX B11 : !X= ALERT(1,"[0][Can you see any|root in your graph?][Yes|No]") B12 : ! IF X=2 THEN MESSAGE "Change your minimum and|maximum values and try again": EXITGRAPH B13 : ! IF X=2 THEN END B14 : ! MESSAGE "Locate mouse cursor|to the left of a|root in your graph" B15 : ! MOUSE_POS AX,AY B16 : ! MESSAGE "Locate mouse cursor|to the right of a|root in your graph" B17 : ! MOUSE_POS BX,BY B18 : ! LOOP B19 : !AY=F(AX):BY=F(BX) B20 : ! EXIT IF ( ABS(AY) key will not stop the program. B18: A loop using bi-section method to find the root of a function. B24: If we found the root, we put it in cell A1 B25: Normal exit B26 End of the program. Page 85 . !B.. !BIORTHYMSHTä!C1 GRID SHTƤ!FSINCURVESHTɤ!GSPLINE SHT̤!I^13Biorthym N    "Name: 'Chor-ming Lung B^B^Τ"Date of Birth: "KA@A@CpEH~@START2@3 B,VfeǀB,Vfeǀ Τ"Today:  K`LK`L&Date entry error B "R B "R H~"Length of Life:  G"<G"<'days rEMOTIONSTARTB rPHYSICALSTARTB  rINTELLECTUALSTARTC2@B0DЀDG*A@C@ [ρECAPIBPCAPIBICAPIC X@B 2EMOTIONECEMOTIONEMOTION@ 5PHYSICALPCPHYSICALPHYSICAL@ AINTELLECTUALICINTELLECTUALINTELLECTUAL@J FX@XAXA@X(@B)@@@@(Օ@B@3֕@@@>͊-ѕABAf0.ԕ@@@>͊f1/ؕB0@@@CA@͊@؏@@333333Emotional@B@͊AؕB@333333PhysicalDB@͊A@ؕB@333333Intellectual13GRID DZ &    @*H~AAAASH~AAB B 3HՕAA>͊@3֕AA?L͊@H~13 Sine Curve  gB  *A@A@$APIAPI7XAPIAPI>͹> –XXXSAA@@ 3ՕAA@@ 3֕@@>͊ .ѕAA@f0 .ԕ@@?L͊f2  A13SPLINE test gB '    @ R  ڢ!hڢ!h  ,ρAAAA7lXAPIAPI@A  ڢ!hڢ!h  @hǷV)@hǷV)-l    @5}H۔ R~X R~X  DBрDBр  A~A~ A RR@  ""  U敿U$X  @wz]@wz]  @}FF{ѕ@}FF{  AmJ.AmJ.  Dz Dz l@ l@  A%]ޗ@A%]ޗ@  \׾- \׾-*lAAAA*lAAAA $Ε@@  lXAPIXX "lה    > $ΕA@@ $ -XAPIAPI>  l–XX UAAAA X$. !L.. !BIORTHYMSHTѤ!M1 GRID SHTդ!PSINCURVESHTפ!QSPLINE SHTڤ!SB13Biorthym Dd N   |"Name: 'Chor-ming Lung B^B^Τ"Date of Birth: "KA@A@CpEH~@START2@3 B,VfeǀB,Vfeǀ Τ"Today:  K`PK`P&Date entry error B "R B "R H~"Length of Life:  G"@G"@'days rEMOTIONSTARTB rPHYSICALSTARTB  rINTELLECTUALSTARTC2H@BDЀDǀ*A@C@ [ρECAPIBPCAPIBICAPIC X@B 2EMOTIONECEMOTIONEMOTION@ 5PHYSICALPCPHYSICALPHYSICAL@ AINTELLECTUALICINTELLECTUALINTELLECTUAL@J FX@XAXA@X(@B)@@@@(Օ@B@3֕@@@>͊-ѕABAf0.ԕ@@@>͊f1/ؕB0@@@CA@͊@؏@@333333Emotional@B@͊AؕB@333333PhysicalDB@͊A@ؕB@333333Intellectual13GRID̐ SB&  y @*H~AAAASH~AAB B 3HՕAA>͊@3֕AA?L͊@H~13 Sine Curve N WlB }*A@A@$APIAPI7XAPIAPI>͹> –XXXSAA@@ 3ՕAA@@ 3֕@@>͊ .ѕAA@f0 .ԕ@@?L͊f2  A13SPLINE test WB '  } @ R  ڢ!hڢ!h  ,ρAAAA7lXAPIAPI@A  ڢ!hڢ!h  @hǷV)@hǷV)-l    @5}H۔ R~X R~X  DBрDBр  A~A~ RR@  ""  U敿U$X  @wz]@wz]  @}FF{ѕ@}FF{  AmJ.AmJ.  Dz Dz l@ l@  A%]ޗ@A%]ޗ@  \׾- \׾-*lAAAA*lAAAA $Ε@@  lXAPIXX "lה    > $ΕA@@ $ -XAPIAPI>  l–XX UAAAA X$14 Address label Wl/(B&   }^Last^First ^Address^City^State^Zipprn:\-\-\-\-\-\-R'Lung 'Chor-ming'33 Garden ST #3'Boston'MA'02114<R~,@R~}R~}AR~}BA@R~}AR~}AR~}RR@  13 Amortization  A    ^Option 1 ^Option 2\-\-"Amount borrowedA HPHPA HPHP"Annual interest rate >QR>QR > =p > =p "Total number of terms DD DpDp"Terms per year B@B@ B@B@\-\-\- "PaymentBEI':%BEyPoڐ% "Total payment BIpPD BIiX,Dp13 Best Least-squares Fit [    F'This spreadsheet uses MATRIX functions to find the best least-squares&'fit to the polynomial y=a+b*x+c*x^2*m 'where the x and y values are given below.m ^xm '|m ^ym \-m '|m \-m 'M: @@m '| @Gz@Gz @@@ ? @@m '| A͕A @@@ @  @@ m '|  As =pוAs =p  @@ @   A    AA m '|  AA  @@ A   A    A A m '|  A333333A333333  @@ A   A    A@A@ m '|  B B  @@ A@   B  Am 'Solve this problem by writing the above as a system of equationsm 'Y=MXC'where Y=[yi], M= [1 xi xi^2] and X=transpose[a b c] (coefficients)F'Find the solution X by using X=inverse(transpose(M)*M)*transpose(M)*Ym 'X:J@9:; ~ ~; ~ ~ '<== The matrix function in herem 'a @r ěX@r ěXm 'b @nFb@nFbm 'c @ =p ȕ@ =p 'Estimate y values:m ' Actual y values:$@d"ѐ @Gz@Gz$A"sE찶^ A͕A$Ak{<    As =pוAs =p$A uQ    AA$Aر(_J    A333333A333333$B Ҧ    B B 14#BINAUTOINCLUDELIBTMP T5.SHT T6.SHT T.SHT T1.SHT Calendar  Wl0Z         }'MONB YRCIBM5'October 1988'+\-\-\-\-\-\-\- \- \- \- \- \-\-'+8WEEKDAYMON@YR@A'|^Sun'|^Mon'|^Tue'|^Wed '| ^Thu '| ^Fri '|^Sat'|MONB@TDAYMON@@YRMON@YRTDAY@@YR@MON@YR'|\-\+\-\+\-\+\- \+ \- \+ \- \+\-'|IBM"*'|'|'|'| '| '| '|  @'| A@'|'|'|'| '| '| '|'|7}^Sun}^Mon}^Tue}^Wed'|'|'|'| '| '| '|'|) }^Thu }^Fri}^Sat'|'|'|'| '| '| '|'|$LINESWEEKDAYTDAYA '| '| '| '| '| '| '| '|+ LINESLINESLINES '| '| '| '| '| '| '| '| WIDTHCpLINES '| '| '| '| '| '| '| '| ICx '| '| '| '| '| '| '| '|B JB`AJI~}LVERTJ '| '| '| '| '| '| '| '| I'|\-\+\-\+\-\+\- \+ \- \+ \- \+\-'|IB@'|  A'|  A@'|  A'|  A '|  A '|  A '|  B'|IAI~}\LHORI~}\LHORI~}\LMDOWNI~}\LPLUS'|'|'|'| '| '| '|'|I'|'|'|'| '| '| '|'|M}LTLEFT}LTRIGHT}LPLEFT}LPRIGHT'|'|'|'| '| '| '|'|I@LINES'|'|'|'| '| '| '|'|2LIWIDTH?L~'|'|'|'| '| '| '|'|I'|'|'|'| '| '| '|'|GJB@A@J~}LMUPJ'|'|'|'| '| '| '|'|&@}LBLEFT@}LBRIGHT'|'|'|'| '| '| '|'|3L@J@MWEEKDAYA'|\-\+\-\+\-\+\- \+ \- \+ \- \+\-'|)IWEEKDAYWEEKDAYTDAY@'|  B'|  B '|  B0'|  B@ '|  BP '|  B` '|  Bp'|8IALLWIDTHM'|'|'|'| '| '| '|'|PML~JJJ@MMAJTDAYIC('|'|'|'| '| '| '|'|I'|'|'|'| '| '| '|'| prn:'|'|'|'| '| '| '|'|.OCU}A}'|'|'|'| '| '| '|'| ڔ@AC'|'|'|'| '| '| '|'| A '| '| '| '| '| '| '| '| !'|!'|!'|!'|! '|! '|! '|!'|"'|"\-"\+"\-"\+"\-"\+"\-" \+" \-" \+" \-" \+"\-"'|!"MDOWNDBMUPDA#'| # B#'| # B#'| # B#'| # B# '| # B# '| # B# '| # B#'|$#PLEFTDCPRIGHTD4$'|$'|$'|$'|$ '|$ '|$ '|$'|1$PLUSDEVERTD3HORDD%'|%'|%'|%'|% '|% '|% '|%'|$%TLEFTDZTRIGHTD?&'|&'|&'|&'|& '|& '|& '|&'|$&BLEFTD@BRIGHTDY''|''|''|''|' '|' '|' '|''|'('|('|('|('|( '|( '|( '|('|)'|)'|)'|)'|) '|) '|) '|)'|*'|*'|*'|*'|* '|* '|* '|*'|!*MDOWNC4MUPC4+'|+'|+'|+'|+ '|+ '|+ '|+'|$+PLEFTCPRIGHTC,'|,\-,\+,\-,\+,\-,\+,\-, \+, \-, \+, \-, \+,\-,'|1,PLUSC,VERTCHORC4-'| - B-'| - B-'| - B-'| - B- '| - B- '| - B- '| - B-'|$-TLEFTC,TRIGHTC,.'|.'|.'|.'|. '|. '|. '|.'|$.BLEFTC,BRIGHTC,/'|/'|/'|/'|/ '|/ '|/ '|/'|/0'|0'|0'|0'|0 '|0 '|0 '|0'|1'|1'|1'|1'|1 '|1 '|1 '|1'|2'|2'|2'|2'|2 '|2 '|2 '|2'|3'|3'|3'|3'|3 '|3 '|3 '|3'|4'|4'|4'|4'|4 '|4 '|4 '|4'|5'|5'|5'|5'|5 '|5 '|5 '|5'|6'|6\-6\+6\-6\+6\-6\+6\-6 \+6 \-6 \+6 \-6 \+6\-6'|7'| 7 B7'|7'|7'|7 '|7 '|7 '|7'|8'|8'|8'|8'|8 '|8 '|8 '|8'|9'|9'|9'|9'|9 '|9 '|9 '|9'|:'|:'|:'|:'|: '|: '|: '|:'|;'|;'|;'|;'|; '|; '|; '|;'|<'|<'|<'|<'|< '|< '|< '|<'|='|='|='|='|= '|= '|= '|='|>'|>'|>'|>'|> '|> '|> '|>'|?'|?'|?'|?'|? '|? '|? '|?'|@'+@\-@'-@\-@'-@\-@'-@\-@ '-@ \-@ '-@ \-@ '-@\-@'+F9E99$39ntp Desk File Sheet Row/Col Cells Graph Help About SHEET---------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 New N Load L Load WKS Load PART Save S Save WKS Save PART Print P -------------- Quit Q Erase Defaults Options Dates Insert I Delete D Col widths Reformat R Erase E Copy C Move M Adjust A Selections Layout------------------- Legend X-axis label Data Variable A Data Variable B Data Variable C Data Variable D Data Variable E Data Variable F Entry Formula Built-In Func Statement Limits Graphics commands PTEXT Commands Console commandsSHEET V2.0 October 1988This is a shareware program. If you like it, pleasesend me $25 or whatever you think it is worth.Any comment or suggestion concerning about this programis welcomed.330 Tremont ST, A-708Boston, MA 02116Mr. Chor-ming LungGEnie: LUNGCIS: 72740,40OKPrint to (P)rinter/(D)isk:P_aNPrint Formula (Y)es/(N)o: _a0Number of Title used: _966_Page length: ___99980_Page width: ___999Title 1 left:______________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTitle 1 right:______________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTitle 2 left:______________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTitle 2 right:______________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTitle 3 left:______________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXTitle 3 right:______________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXMargins5_Top (including titles): __995_Bottom: __990_Left: __9979_Right: ___999Cells:______Starting: ______an9999______Stopping: ______an9999OKCancel1. FORMULA: A line starts with any of the following chars:'+', '-', '(', digit2. STATEMENT:A line starts with '!'3. COMMAND:A line starts with '@'4. TEXT:A line starts with '\"','\'','^','\\', orcharacters other than the above typesStore inDisplayYesYesNoYesYesNoYesNoDouble??StringRight justifiedLeft justifiedNoneDepends on 1st char1234OKThere are four types of entries:EvaluateResultcellUser defined functions:Length of function name: 15 charsNumber of parameters: At least 1, at most 9User defined variables:Length of variable name: 15 charsNOTE:The total # of user functions and variables are 150Accuracy:This program was written in Mark Williams C usingdouble for calculation. Accurate up to 17 digits.Calculation range is -1E-37..1E+37.OKStatements:Remember Statement starts with '!'FOR .. NEXTGOSUBGOTOIF .. THEN .. ELSELOOP .. EXIT IF .. ENDLOOPMESSAGEPRINTREDIRECT TORESTORE SCREENRETURNRUNSAVE SCREENWAIT! FOR I=1 TO 10 STEP 2: A=A+I:NEXT I! GOSUB C12! GOTO A20! IF A1=20 THEN B1=30: C1=40: ELSE D1=20! LOOP:EXIT IF A1=12:A1=A1+1:ENDLOOP! MESSAGE "This is a test"! PRINT A1,12;" test ";20! REDIRECT TO "prn:"! RESTORE SCREEN! RETURN! RUN C1! SAVE SCREEN! WAIT 2OKBuilt-in Functions:1. Finance: GRATE, GBASE, GFUTURE, INVEST_PV, INVEST_FV,INVEST_INTEREST, INVEST_TERM, LOAN_PAY,LOAN_AMOUNT, LOAN_TERM, WDRAW_SAVE,WDRAW_AMOUNT, WDRAW_TERM, DEPOSIT_FVDEPOSIT_AMOUNT, DEPOSIT_TERM2. Statistics: STD, VAR, MEDIAN, AVERAGE, SQR_SUM3. Math: SIN, COS, TAN, COT, SEC, CSC, ACOS, ASIN, ATAN,LN, LOG, EXP, ABS, INT, FRAC, SQR, SQRT, DATE, FACT,RAD_DEG, DEG_RAD, RAND, MATRIX, INVERSE, TRANSPOSE4. String: MID$, CHR$, LEFT$, RIGHT$, SPACE$, STR$, VAL, LEN,5. Miscellaneous: SUM, MIN, MAX, COUNT, TODAY, DAY, MONTHYEAR, TRUE, FALSE, IFF, ISEMPTY, ALERT, LAST_ROW,LAST_COL, SEARCHASC, (FILENAME$, BUF$ : they are string constants)Calling conventions:FinanceMathStringMiscCancel1. Logical operations:logical operators: AND, OR, NOTlogical comparisons: <>, <=, =<, >=, =>, >, <, =2. Arithmetic operations:+, -, *, /, ^, MOD, (, )3. Built-in Functions:Statistics, Finance, Math, String, Miscellaneous4. User defined functionsLowest: AND, OR+, -*, /, ^, MODfunction call, Cell Reference, Identifier, number, NOTHighest: ()OKFormula:Priorities:<>, <=, =<, >=, =>, >, <, =Reformat cells2_Decimal Place: __99CancelChoose format:Example:%FIXEDSCIENTIFICDOLLAR,DATE1DATE2DATE3TEXTHIDERESET0.82% for decimal place = 23.1415 for decimal place = 43.14E0 for decimal place = 2$12,345.00 for decimal place = 212,345.00 for decimal place = 212-Jan-8812-JanJan-88Display the formula, not valueHide cells from worksheetDefault formatRowColumnNaturalManualRecalculation orderTEXT justificationLeft 'Center ^Right "0000000000bytes leftReserves 32K for fast screen redraw?Title name: ______________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOKCancelYesNoCancelOKGraph Selections:Graph type:LINEBARXYPIELine/XY graph option:SymbolLineGrid:HorizontalVerticalInterchange Column with Row:N_a______Starting: ______an9999______Stopping: ______an9999Legend range:______Starting: ______an9999______Stopping: ______an9999X-axis Label/Value range:1_______Skipping: ________XXXXXXXXRanges of Data Variables:A:______Stopping: ______an9999______Starting: ______an9999B:______Starting: ______an9999______Stopping: ______an9999C:______Stopping: ______an9999______Starting: ______an9999D:______Starting: ______an9999______Stopping: ______an9999E:______Starting: ______an9999______Stopping: ______an9999F:______Starting: ______an9999______Stopping: ______an9999OKGRATE(a time series data): average growth rate of the dataGBASE(a time series data): adjusted base value of the dataGFUTURE(grate, gbase, predict time): future values based on grate, gbaseINVEST_FV(initial,interest,compound frequency,terms): final valueINVEST_PV(final value,interest,compound frequency,terms): initial investmentINVEST_INTEREST(initial, final, compound, terms): compound interestINVEST_TERM(initial, final, interest, compound): terms of investmentLOAN_PAY(amount,interest, terms,number of terms/year): payment for each termLOAN_AMOUNT(payment,interest,terms,terms per year): amount borrowedLOAN_TERM(amount,payment,interest,terms per year): total number of termsWDRAW_SAVE(amount withdrawn,interest,terms, terms per year):initial investmentWDRAW_AMOUNT(amount saved,interest,terms, terms per year): amount withdrawnWDRAW_TERM(amount saved,amount withdrawn,interest,terms per year): total termsDEPOSIT_FV(amount,interest,total terms,number of terms/year): final value for depositDEPOSIT_AMOUNT(final value,interest,total terms,terms/year): regular depositDEPOSIT_TERM(amount,final value,interest,num_terms/year): total termsFinancial functions:Adjust TEXT string to:BASIC (!)Left (')Right (")Center (^)CancelWINDOW [# [,rx1,ry1,rx2,ry2]]VIEWPORT rx1,ry1,rx2,ry2VIEWPORT 0,0,0,0 for whole screenSCALE xmin,ymin,xmax,ymaxATTRIBUTE color, widthLINE x1,y1,x2,y2[,linetype]example line types from 1 to 6LINE_TO x1,y1 [,linetype]PLOT x,y [,marker]example markers from 1 to 6PLOT DATA xrange, yrange [,marker,linetype]SPLINE xrange,yrange,incrementFORWARD distanceTURN degreeTURN_TO degreeMARKX y_origin, xmin,xmax,xinc,xstepMARKY x_origin, ymin,ymax,yinc,ystepLABELX y_origin,xmin,xmax,xinc,formatLABELY x_origin,ymin,ymax,yinc,formatCLEAREXITGRAPHMOUSE_POS x,yformat is a string "f#"/"s#"f for FIXED, S for SCIENTIFC# specifies decimal placesGraphics commandsOKPTEXT x,y,"STRING" [,color,effects,rotation, height]Effect numbers:1: bold2: light4: italic8: underline16: outline32: shadowRotation:090018002700Height:Color:small font: 4normal font: 6Mono:small font: 6normal font: 13OKAdd the effect numbers to combine different effects.Maximum number of rows should be in the range of 50 ~ 9999The default number for earlier version is 1280.OKCancel1280Maximum number of rows: ____9999Cell format using previous:RowNoneMonochrome font:NormalSmallOKCancelFastNormalMove to left/right:Date options:You can use dd,mm,yy to represent day, month and year. There aresome variations in using month. mm means month in 2 digits.mmm means month using 3 letters and mmmm means month usingfull alphabets.For example, the date is March the first, 1988.dd-mmm-yy ==> 01-Mar-88, mmmm dd,19yy ==> March 01,1988dd/mm/yy ==> 01/03/88, mm/dd/yy ==> 03/01/88_________________Date1: _________________XXXXXXXXXXXXXXXXX_________________Date2: _________________XXXXXXXXXXXXXXXXX_________________Date3: _________________XXXXXXXXXXXXXXXXXdd-mmm-yyDefaults:dd-mmmmmm-yyOKCancel__Leading column: __XX________________________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXwidths:OKCancelASC(STRING): returns the ASCII # of the first character of STRINGMID$(STRING,s,len): returns the substring of STRING, startingfrom s with length lenOKLEFT$(STRING,len): returns the substring of STRING, startingfrom 1 with length lenRIGHT$(STRING,len): returns the substring of STRING, from thefar right portion of STRING with length lenSPACE$(num): returns a string with num of spaces.CHR$(num): returns a string with one character whose ASCII numberis equal to num.STR$(FORMAT,val): returns a string using the format defined inFORMAT. FORMAT is a string consists of three parts.width, format, decimal point. For example, if val=12345.678 andFORMAT is "12$2". The string returned will be " $12,345.68".(format: "$", ",", "%", "D1", "D2","D3", "F", "S")VAL(STRING): returns the value of STRING.LEN(STRING): returns the length of STRING.POS(STRING1,STRING2,start): find the position of any characterof STRING1 from STRING2 beginning from start.Math functions:RAND: returns a random number from 0 to 1.MATRIX(cell, matrix_ops): A boolean function to determine whetherthe matrix operations successful or not.cell: is the leading position which the matrix operations storeits result.matrix_op: (*,+,-) and INVERSE, TRANSPOSE. Each matrix is ablock embraced by '[' and ']'.EXAMPLE: matrix(e5,inverse[a1..c3]): stores the invert ofmatrix a1..c3 in cells E5..G8OKMiscellaneous functions:DAY(jday): day of julian dayOKMONTH(jday): month of julian dayYEAR(jday): year of julian dayTRUE: a constant equal to 1FALSE: a constant equal to 0IFF(condition, true_value, false_value): if function. Ifconditon holds, it returns true_value. Otherwise, false_valuewill be returnedISEMPTY(cell): 1 if the cell does not have any item.ALERT(button,"[n][text][exit]"): returns a number returnedfrom the alert box. button holds the default button.COL_WIDTH(block): column width of the blockLAST_ROW(cell,r): returns the value on the last row pointed bythe cell vertically. r is the row number for this last element.LAST_COL(cell,r): returns the value on the last col pointed bythe cell horizontally. c is the column numberSEARCH(STRING,block,r,c): a boolean function to find whether theSTRING in the block and r,c tell you where it is.Remember: r and c are zero origin.e.g. LAST_ROW(a1,r), you can access the value by a1[0,r].BASIC commands:!PRINT_BLOCK block,lmargin,rmargin!OPEN "O",#n,cell$!OPEN "I",#n,cell$!CLOSE #n,#m,...!INPUT #n,cell$!GET_FILE def_search,cell$!PRINT #n,....!PRINT_BLOCK a1..g16,4,76!OPEN "I",#1,FILENAME$!OPEN "O",#1,a1$!CLOSE #1,#2!INPUT #1,BUF$!GET_FILE "*.TXT",FILENAME$!PRINT #1,a1;c3$Worksheet commands:!COPY block1, block2!MOVE block1, block2!ERASE block1, block2, ...!REFORMAT FORMAT,block1,block2,..!SORT "A",block,cell1,cell2...!SORT "D",block,cell1,cell2...!SWAP cell1, cell2!COPY a1..e12,h1!MOVE a1..a12,c1!ERASE a1,b2..c12!REFORMAT "$2",A1..A20!SORT "A",A2..C16,b1,c2!SORT "D",A2..C16,b1,c2!SWAP a1,b2OKConsole commands:CLS: Clear the screenCURSORON: Make the screen cursor visibleCURSOROFF: Make the screen cursor invisibleVIDEONORM: Make the subsequent print characters innormal color.VIDEOHIGH: Make the subsequent print characters inreverse color.GOTOXY x,y: Move the cursor to the position x,y.x = (1..80) and y =(1..25)Console input commands:INKEY: A function returns an ASCII number of charactersbeing typed. -1 if special keys or no key pressed. 129,130131,132 for Arrow keys Up, Down, left and Right. 133, 134135 and 136 for Shift arrow Up, Down, Left and Right.UNGET x: Put the ASCII number x back to input stream.INPUT buf$: buf$ can be BUF$ or a cell reference. It isline input.OK@>p@p>p"@>x"@>x"@"|&AB~ @#Q    ~B?B!B!B!~?B!B!B!~?BBB  110?19  110?18`80 ``80 `)CDbdfhj 3((j((@((w((%M(((("%(3 69B EIT _fw~  ? @!! V n o   6 @ A    # %     )  %  9 : ; W X Y n o p         Ujk   &567:LVefgpq 12!3TU!V`a bijkrst5Z[%i((h1:M sz ,6=NU\mw~?RS*CD.l #"#,Jpq&'03_`,612^_,+ !3!4;!5!e!f0!q!v!#r#######$$)$3$4 $5$?$@ $A$H$I$J$Q$R$]$`$s$v$$))---#430(5240(6R50(7R6 827  98*  P P 0 $ + 2  :  D L# S* :P  Zh   !-9ER^m $ # !y " #  (%'&'$.)-*+,-(:/9% 0 12 344=5L6^7p89 .  ;C, <=>?@ABC : :!#:9E3y.7 E0 E0 F0     *  6* cDAG 99!99:,9   :*' [ :F'  :b'h:~' :'u:' :: ; ;& % X;B;^C% a2 *E=#  #   +# B   K)  u%     !  -                      &"% # $ % ! 'C 9(;z ) A * J  Q  <; p! +; !; 3 ;   B 1  t 1   #c J< <""        *  E  M  S   _ n  u  y   ( <>( 0 o       6 C==    7>>6CO# >R>n Ar  At  Az  A  A  A A A A A A  > > > > > ? ?2 ?N ?j ?  ? ;!5+?  1"' ?      +   * ? $\ @ )CA"' 1OA C:@.  + ! %(  0 , B I NT _ @J&  @fC  @@  ,@@@3HV# "!p"AA*'$&%&AF#Ab+(*1)*A~'A/,.-3.A+A3021t2A/B 46156B&3(BB2MC: B^ "8Bz T" w B  &   B ,  B !E/[B+ C )  C"  $- = C> r+  CZ  * ! "Cv ##1 $% %C &a0'u (C')6* +C$,2-".C /`20s 1D20 1 D,A A A A c M8Q%!sF(F  %   FJF  %FlF + +W v   $$%%8> H V.s..D:c!>4          +  ;  I    V   ` b f  k&  p x       C   4> DV:Dr/C!gA!j#(D! = 1!!!  !!! C!"  A!0   !!  !F" "@"T;":""/# 8 #D -  / D D DD E E6 ERC$Sa$V(8EnE ($C$a$ M%A%E=% C%C %<% %= &/ + &[1 & A &  & >' 3'S ?' =' 2()(.*(Y> ( - I ((*)A)C()l?) ); ) * 9 *M c*k8 J*n*C*7 * **+ + 8 +Y = +  + 4 + :, 4,M +,y>, ?,>-7 --e@- 1E" - :#I.8  ".H".k.~.. .. ) . ./ / /+/: /V/g  "/{///!/00 #") 030D0U 0g!0~"00 c0  K000(1+1;21n8 1|2 18 10 1  2   2" 72Z :2 92 5353;73s= c3 FLNQUVY[]`nbglmFp.rs.tv^vxz|.11N066_80___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________5_5_0_79_____________K] Deposit ple n   1\, MDeposit amountA CCMAnnual interest >zG>zGNTotal number of deposits CPCPNNumber of deposits/year BB BF`l, '-------------------------------------EIf you deposit $75 biweekly for 2 year, and the interest compounded/on each deposit, then you will have $4,243.57 MComment: M=========MThe actual interestMbeing compounded is for next exampleA2How much have you to deposit regularly for saving $20,000 in 101Myears. The annual interest is supposed to be 9% MFinal valueMAnnual interestMTotal number of depositsMNumber of deposits/year?2-------------------------------------------------------------A G@G@ >QQ>QQ B B  @@BEۇ۳-MDeposit amount MComment: M\Quarterly C C  AABD|q.- M\Monthly: CC B@B@BCγE- M\=========%M\Press for next example?2How long have you to deposit regularly for saving $10,000 and-2monthly deposit is $100 with interest 7.75%M\Deposit amount  M\Final value!M\Annual interest"M\Number of deposits/year#(M\--------------------------------------$M\Total number of depositsA CC A G@G@! >Q>Q" B@B@$C. !"'!M\Press for formula:* M\Formula:,A2DEPOSIT_FV = deposit_amount*((1+interest/num_deposit_per_year)^-=2 total_num_deposits) - 1)*num_deposit_per_year/.2 interest11N066_80___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________5_5_0_79_____________8 Future growth value n  " !=_YYear "Wl Income"Wl---------------------"1980"1981"1982"1983 "1984A GGA GGA GhGhA G@G@ A GG  GGrow rate:  GGrow Base: >uy  BG.6?V "WlIncome at 1992:B.HMG叐  EE@GFUTURE means "future grow"  BGBASE means adjusted initial !"WlGRATE means average growth rate#"WlYou know your past annual income.#"WlYou can use those data to predictyyour future income.$NNOTE: the time interval for GRATE," BGBASE and GFUTURE must be evenly"9)distributed (yearly, monthly,":5daily, etc). KlFormula:KlCount = number of data8KllogSum = summation( log(data[i]) ) for i= 0 to count-1:WeightSum = summation(log(data[i])*i) for i=0 to count-15GRATE = exp(6*(2*WeightSum/(Count-1)-logSum)/Count/ (Count+1)) - 1<GBASE = exp(logSum/Count-6*(2*WeightSum/(Count-1)-logSum)/) Count/(Count+1) * (Count -1)/2)2GFUTURE = GBASE * (1+GRATE) ^ (predict_time - 1) KlPress for formula14 File test txt"Y40B }ۇo|@test.txt%|@123,456 789|@"|@5623.23,84.38 723.12 |@ އ\*.txtVۇi|@V R@  |@T T RR@14zBINAUTOINCLUDELIBTMP T.SHT FTEST.SHT T7.SHT T2.SHT T4.SHT UNTITLE 2 ,Y48B }X@Y@AYA@7ADY@YY@XY3ADY@YBXY7ADYBYY@XY3ADYBY@XY7 ADX@XX@XY3 ADX@XCXY7 ADXCXX@XY3 ADXCX@XY' ADA@LA11N066_80___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________5_5_0_79_____________G Investment xample nm  &iL IbInitial amount for investment:AbAnnual interest rate:!TbTerms interest compounded/year:TbTerms of investment:FbFinal value of investment: "Wl Bank1 "Wl Bank2"Wl----------------------------A G@G@A G@G@ ? =p =? =p = ?nOߕ?nO B@B@ @@ C@C@ C@C@BG#sG!BGyX!>"Wl------------------------------------------------------------ F BYou have $10,000 to invest. Bank1 offers 4-year investments at 12.8% Embmonthly compound interest. Bank2 offers 4-year investments at 13.5% 9ybyearly compound interest. Which bank should you invest?+PbPress for next example+PbPress for next example-+PbPress for next exampleFbFinal value of investment:AbAnuual interes rate:TbTerms interest compound/year:TbTerms of investment: IbInitial amount for investment:0"&U----------------------------------------------A GPGP >GzG>GzG @@ CpCp "b (5 years)BGg!"FHbHow much have you to put into your bank for the investment to matureDibin 5 years at a value of $25,000 with annual interest 11% yearly ?! IbInitial amount for investment:"FbFinal value of investment:#TbTerms interest compound/year:$TbTerms of investment:%4"b--------------------------------------------------&AbAnnual interest rate:!A F@F@"A Gj`Gj`# @@$ CC&?.W͆h#!"#$0 IbInitial amount for investment:1FbFinal value of investment:2AbAnnual interest rate:3TbTerms interest compound/year:5TbTerms of investment:4/"&U---------------------------------------------0A F@F@1A G@G@2 >+ I>+ I3 @@5C$0123)@"&UWithin 7-years, you want your $5,000 being triple. What is the*$ininterest rate for this investment?8A"&UHow long have you to wait for your $5,000 being double at 10.6%9 "&Uyearly?5mnmonths3Klterm< KlPress for formula>,In case you are interested in the formula:@;INVEST_FV = initial_investment * exp(terms/12.0* ln(1.0 +A' interest/terms_per_year))C8KlYou can derive the INITIAL_INVESTMENT, TERMS, INTERESTDKlin terms of other variables.G8The formula uses (terms/12.0) to change terms to year,H"Klso terms is expressed as months.11N066_80___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________5_5_0_79_____________C Loan next example n  "y5 CYYou want to finance a house for $85,000. Your bank offers 30-year@loans at 10.5%. How much have you to pay monthly to your bank? LLoan_pay:AAmount borrowed:A HHIInterest rate:"FTotal number of terms:NNumber of terms pay/year: )"e--------------------------------------- > =p > =p  DD B@B@ PPayment for each term: BEBaOq% +PPress for next exampleLLoan_amount:PPayment for each term:IInterest rate:TTotal number of terms:NNumber of terms pay/year:)"e---------------------------------------AAmount borrowed:A DD ?? CC B@B@BG8&FYYou can afford a monthly payment of up to $300. You want to know howJ"fmuch you can borrow from your bank which offers a loan of 3-year at 15%. LLoan_term:AAmount borrowed: PPayment for each term:!IInterest rate:"NNumber of terms pay/year:#)"f---------------------------------------$TTotal number of terms:A Gj`Gj` A DD! >\(•>\(" B@B@$C' !"+PPress for next example$mmonthsHHHow long have you to pay $300 each month for a loan of $15,000 at 12%?"KlmonthsmmonthsKlmonths"emonths for 30 yearsKlterms' KlPress for formula)/KlIn case you are interested about the formula:+<KlLOAN_AMOUNT = payment * terms_per_year / interest * (1.0 -,@ exp(-terms * ln(1.0 + interest/terms_per_year)))19KlTerms and terms_per_year are using the same unit value..@KlYou can derive the rest variables in terms of other variables.14 Lottery Numbers Wl7B/ # } dprn:d'Redirect output to printer  B  dR@d'Loop counter  Bpdd'Start the outer loop  B/dR~+C@"d'Assign random numbers for a2..a7  BdJ@F4@d'F is a flag for increasing R or regenerate a new random number  CdBd'Inner loop, use to test whether the new random # has been picked  C dJR6d'If J=R then we have tested every old number and exit1dJ~R~F5+d'If one of the old #=new #, F set to FALSE dF55 d'If something wrong, we don't need to check the rest dJJ@ d'Otherwise, increase J d dF4RR@ d'If nothing wrong, increase R dRA d'We need 6 numbers onlyd=ad'Sort our resultsdd'Refresh our screen.dd'Save current screen$dd'Output our 6 numbersdd'Restore our screen14 Matrix  Wl7B  }"x"y\=\=\=\=  @  A^=  A@  A  A^=  A 'Solution:   A, @9;:~~ '<===5 'This cell contains the matrix functions to find the 'solution." 'The syntax for matrix functions:! '+matrix(cell,matrix operations):' cell is the leading cell for storing subsequent matrix' operations' result.0' matrix functions can be TRANSPOSE or INVERSE$' and matrix operators are +, -, *.' There is no priority for matrix operators.A'Each matrix is a block of cells starting with [ and end with ].:'( and ) can be used to group matrix operations together.14 Numbers from File llB }   ۇo|@test.txtP@C@% |@123,456 789|@" |@5623.23,84.38 723.12QP ,TP  |@Q %CR~SKTPQPCC@  އ*.txtVPQ@ ۇi|@V R' CR~SKTPC   |@T WT RR@   |@ #a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #E DB 02 #W 00 00 0A 01 1E 15 08 A:\*.*@ #W 00 00 0D 08 2A 0B 00 @ #W 00 00 0E 09 2A 0B 00 @ #W 00 00 0F 0A 2A 0B 00 @ #M 00 00 00 FF A FLOPPY DISK@ @ #M 00 01 00 FF B FLOPPY DISK@ @ #T 00 03 02 FF TRASH@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #F 03 04 *.TOS@ @ #P 03 04 *.TTP@ @ 0. @p0@Rn` nfHn/ / N2 `F nfHnHn/ / N2`& nfHnHnHnXH p=@z=yd`HylNMXO0fB@`BgHyMN\O3X @fHysN~XO`?<LHn?9XNvPO @LgHy`BnBnHnN&XOno0n(HnRn`0.ngHy`nv .0vg .1vg .2vg .3vf=|~`p?HnHn~NԲ Sn~p??.~Hn?<N =@| @g32?.?.?.?.?NҾ HnHnHnHnp?092XA3?N?n?n?n?n NKHPONdp?NtTO09213 Random number statistics     R RC}H۔R~+RR@ d d  /d ,d ,d ,d This is SHEET version 2.0 update. The new version provides STRING operators and functions, TEXT file commands and many other changes. SHEET is a shareware program. If you like it, please send me $25 or whatever you think it worth. My address is: Mr. Chor-ming Lung 330 Tremont ST, A-708 Boston, MA 02116 If you are old user of SHEET, please note that my address has been changed. SHEET is a combination of spreadsheet and BASIC. The spreadsheet functions and commands make this BASIC interpreter to handle data easily. The BASIC interpreter make the spreadsheet more powerful than many other spreadsheet commercially available. Packing list: FILES Descriptions -------------------------------------------------------------------- SHEET20.PRG Version 2.0 of SHEET CALC.RSC Resource file of SHEET SHEET.CFG Configure file for SHEET new date format. It is pure text and it will be changed whenever you change the format of DATE. CAL.SHT Calendar program for SHEET20. It draws a calendar on worksheet A2..O64 and print it out to the printer. To run this program, load it into SHEET and enter "@run q1" without the double quotes. 13Root finderVl<  | QS3QS3dXMINAYMINAXMAXAYMAXCST>́ERR67li B^B^%FXA@XXA B,VfeǀB,VfeǀG>A[0][Which resolution you are in?][Medium|High]ABEDǀB0EDG B "R B "R XMINYMINXMAXYMAXdXMINFXMINXXMINXMAXST –XFX X EXMINXMAXYMINYMAX DdX>@[0][Can you see any|root in your graph?][Yes|No] HHXAChange your minimum and|maximum values and try again @XA:HLocate mouse cursor|to the left of a|root in your graph H͖AXAY;HLocate mouse cursor|to the right of a|root in your graph H͖BXBYAYFAXBYFBX!HAYERRBYERR-NHALFAXBXAHYFHALF/AYHYBXHALFAXHALF&GAYERRAXBX13 Roses (refer to example 2) 2   'Ordered/ B B  B0B0 B@B@'Sold B B PC6B@AB@APC6B@AB@APC6B@AB@A B0B0PC6B@AB@APC6B@AB@APC6B@AB@A B@B@PC6B@AB@APC6B@AB@APC6B@AB@A&@9~~"Prob: @@ ?kQ녕?kQ ?.zG?.zG'Expected profit: CC CC CzGCzGDD-MMM-YY DD-MMM MMM-YY `+ J0*o"m #.I+I/ BBBg/ / Bg?<JNA N^ ?Nd?<LNANVH8p=@Hy NMXO0fB@`BgHyMN\O3" @fHyN~XO`Nz0gHy'`& y> g f y> (gHy6N6XOBn0.f?9"NTO`tp?HyE?<NPO=@ @f?9"NTO`@32BgBgBgBg?92NҾ HnHnHnHnp?092XA3?N?n?n?n?n NKHPONd092X3l*@0.gNz=@ |r`XHXW PN` y>fp;@R` y>fp` y> fp`p`Bn`/9>HnNPO M"y>i;`vHnHnNPOp=@ y>HhN&XO=@R@?NLTO(@0.R@? y>Hh/ NԲ BB0.R@??./ Bg?.?.N^`HnHnHnN?n NRTO-@-AHnHnNlPO0.@gHyHnN@POn /./.Bg?.B?.`vHnHnHnN `/ HnHnHnHnHnNBHnHnNlPO0.n0.@gHyHnN@PO98H=@98H=@ @g @g @g @f&?.NLTO(@?.Hy8/ NԲ `20.R@?NLTO(@?.Hy8HlNԲ Rn/./.?.?./ `?9"NTONg?92NTO0.L8N^NuNVp?Hn?9"NvPOp?Hn?9"NvPO0.g?9"NvPO0.N^NuNV y>Hh/. /.N N^NuNV y>Hh/. /.N y>Hh/.NPON^NuNVH0p=@ n (gp=@K(n ~ GlpG0@RG`.H@H>.HH@<0F@:BB-|@-|~K| F4l<H0AgHnHnN@POGHyHnNPPO0f><RRF`HyHnN@PO0o@x/Nh./Hn?.NRTO//N/A/@XON6`h0ln:-|@-|~ElHyHnNPPORG`HnHn?.NRTO//N/A/@XON n !AL0N^NuNV"n n"n nQN^NuNV y>Hh/. /.N y>Hh/.NRPON^NuNVH8p=@p=@ np0 9>*@/./. /.N y>Hh /.NPO n=P~By$0.gľnlRGH @ab(H0@8 PN`HmHnNR/n.N&PO ` np0Hm n ? n?N PO&@09$Ry$8(@pp?/ / NԲ Z`X np0Hm n ? n?N PO&@09$Ry$8(@p p?/ / NԲ ZHm n ? n?N PO&@p?/ / NԲ ` Bn`?<NTOR`HmHnN?n\ONRTO//N&POV`HmN&XO=@09$Ry$8(@0.R@?.Hm/ NԲ 0.R@`4?<`h?<``?<`X?<`P?<`H?<`@?<`8?<`0?<`(?<` ?<`?<`?<`?<`BnBn`p?p??<Nf\O`p?p`p?p`p?p`p?p`09$Ry$8(@pPpIB09$S@A8p`p?`p?p`~p?p`tp?p `jp?p ``p?p `Vp?p `L?<`0BBN&PO`(HyHy@`09$Ry$8(@pp+`09$8(@Rp09$U@A8HV@=@09$U@A8H?09$U@8// NԲ 29$UAA8H?Bg09$S@A8HR@n09$S@A8H?09$S@8// NԲ 29$SAA8H?Bg09$W@A8HT@n09$W@A8H?09$W@8// NԲ 29$WAA8H?Bg09$8(@0.HH0.R@?/ 09$W@8/NԲ Uy$`09$Ry$8(@pp`R MH=@?p??<`R MH=@?p`R MH=@?p`R MH=@?p`R MH=@?p`R MH=@?p`K8H n0-MpL8N^NuNV/ =|p??./. HnN> 0f=|Bg?. n HhHnN> 0f nf=|`=|K&p.@p?Hn/ NԲ p?HnHmNԲ <&*_N^NuNV/Bn/. /.NPO n> n (g p=@G0n n00.g n0H` n0H@H@00..N^NuNVH809$U@8*@09$S@8(@09$8&@H=@H=@ nfbT@=@?./ / NԲ 0.0.R@?09$8/09$S@8/NԲ `|0.nR@=@?./ / NԲ 0.?./ / NԲ 0.R@?09$8/09$U@8/NԲ Sy$L8N^NuNV/./.NPO nHh/. NPO nRP n RPN^NuNV/ 09$Ry$8*@p p?Hn/ NԲ *_N^NuNVH009$n =@Bn09$8(@R0.0. Bn0.n lN0.Rn8*@H=@n?/ / NԲ 0. S@ngRnRn`09$A80.X@0.Z@?09$8/09$n 8/NԲ 0. S@y$L0N^NuNV y>H@p=@ @pgjH@ n 00.f n0` nf n0` n f np@0`v n0f n0`d n@f\ n0 `R n BP y>H@=@ @f n0`* nf n0` nf n0` nBPN^NuNVN^NuNVHnBgNRTO//N 0o .". ` .". N^NuNV/ "n I0igHyZN6XO` n-h=P0.H/0.H/NPO-@/NXO-@-@fHy`#@2#2Bn0.nlJBn0.nl60.nf nP @!|` nPBBRn`Rn`-nBn0.nl-|8'Ŭ-|GG=@=n0.nl~Hn2.H0.HЁ @/(/NP/A.N 0o82.H0.HЁ @/(/NPPO-@-A=nRn`zHy/./.N 0fB2B2/.N`Z0.ngd 92"92 #2#2Bn0.nl62.HHЁ @ "(-@-A2.H0.HЁ"@2.H0.HЁ @ "("#A2.H0.HЁ @ .". !A2.H0.HЁ @ "(-@-A2.H0.HЁ"@2.H0.HЁ @ "("#A2.H0.HЁ @ .". !ARn`2.H0.HЁ @ "(-@-ABn0.ްnl2.HHЁ&@Hn2.H0.HЁ @/(/N &'A2.H0.HЁ&@Hn2.H0.HЁ @/(/N &'ARn`NHnHy2NXPOBn0.nlX0.ngD2.HHЁ @ "(-@-ABn0.ްnl2.HHЁ&@Hn2.H0.HЁ @/(/N/A/@XO2.H0.HЁ @/(/N&&'A2.H0.HЁ&@Hn2.H0.HЁ @/(/N/A/@XO2.H0.HЁ @/(/N&&'ARn`Rn`Rn`N/.N XO n!n&_N^NuNVH n:8("n 0QfT0ifL-h I-h~ElF|Dl./. n/(/N͸ n !ARFPP`RG`HyN6XOLN^NuNVH n:8("n 0QfT0ifL-h I-h~ElF|Dl./. n/(/NͰ n !ARFPP`RG`HyN6XOLN^NuNVH"n n0(Qf>=P I=P n=h I=h0.H/0.H/NPO-@/NXO-@f Hy` n-h n -h-n~nl|nlBBznlb2H0HЁЮ-@2H0HЁЮ-@/ n/(/N/A/@XOHnNx RE` nP .". !ARF`lRG`\"n n1i/.N XO n!n`Hy#N6XOLN^NuNVH n:8(-h0H/0H/NPO-@/NXO-@fHyDN6XO`b~El8|Dl.2H0HЁ"@ nP "("#ARF`RG`/.N XO n!n n1E n0LN^NuNVCZ N!!!! y frNn y f@=y =yMNn y fNnQONPOC N!!!!`p`p?N6TO y fNn`p`p?N6TO09 g, N/ / ?.?.NX HnN XO <@`HnN XOprN^NuNVH-n~n lZ|nlN n/(/Bgp ?BBg0n ?0n?N^P0n ?0n?NXORF`RG`LN^NuNV09 f CR`QONPOCA!!!!09 g y g y g y f=y NnQONPOC N!!!!0.@ @b@H0@ PN`0HnHnN`HnHnND`HnHnNPPOHnN XO`XCA$H$$N^NuNV09 gnCZA!!!!09 |r`XHXW PN`&NnQONPOCA!!!! y f Nn`p?N6TO`=y Nn y fHNnQONvPOCA!!!! y~ fHn?.NF\O`HykN6XO` y f6NnQONPOCA!!!! y gp?N6TO`Hp `NNnQONvPOCA!!!! y~ gHyx`HyN6XO09 gC`HnN XOCRA$H$$N^NuNV n;f /. N` n:f /. NXON^NuNVH09 g y f.=y =yMNn y gHyN6XONn y gHyN6XO=y =yMNn0.H/0.H R/0.H/0.H R/NPO-@/NXO-@fHyN6XOCR`Bn-n>.nn6<.nn(&nPp?Hn??N! &'ARF`RG`0.nR@=@0.nR@=@`HyN6XO09 gxCA$H$$LN^NuNV n (g /NXO nBN^NuNV/ p ?NLTO-@gF . ". n !A n*h-M f!n` -g*@`+n nBp`B@*_N^NuNVH0*n-M g(m/ NXO*L`L0N^NuNVH 0.f0. fBy <}"<H`^?. ?.?92N%,\O*@-M g:>-f fg n 0R@0 -"- `0.g n 0R@0prL N^NuNVH0 n><.nnx??. ?92N$\O*@-M gV0n mNnnH8-f fg,/- /-/.N! 0f/.N!xXOB@`RG*m`RF` n0pL0N^NuNVBnBp??<N6>XO y gp09 gf @g^09 gT y fp33h-y3=y =y =yMNn y fdNn y gp?N6TO`=y =yM?. Hn?.?.?.?.HnN"40gTNn`=n?. Hn?.?.N! -@-A0.ng`//.HnN! 0fHBgN6TO/.N!xXO nBPB`RN8-@-A//HnN! 0gRn y gp??<`Nn n0 .N^NuNV/ 0. f 0. fB`80.XC40. H @*h-M g0n l*m` *_N^NuNV/ 0. f 0. fB`<0.XC40. H @*h-M gB@-n d*m` *_N^NuNV0. f 0. fB`*?. ?. ?.N$\O-@ g n0n f N^NuNVH0*n -|K\ nB0.X/0. Hї A3H=@-M f 0.fx`-|K\0-@f0-@f 0-@ g8 -"- -@-A?-B@-??.//./.NS`40-@g,0.g(m 'fZ/ N&XOnn?.HyHnN2 `HyHnNPO mHhHn/.N2 ` "f$/ N&XOnn ?.Hy`Hy` ^f/ N&XOnn/ N&XO20.AR@H=@?.p ?/.NPOB@-? mHh0.HЮ/NԲ BA-0.AR@0@B/.N&XOnn/.N&XO20.A?Hy/.N8 ` mHhHy7` \f mHhHnNPO nBHnN&XO=@Bn0.nlHn/.NPO0.n`0.ngP2n0.A=@ NB(Hn/.NPO`& -R`"?.p ?/.NPO0nB .L0N^NuNV/ 0.f0. gp?. ?.?92N%,\O*@-M gP0-@gp`D0-@f 0-@ gp`,0-@gp`0-@gp`0-@gp`B@*_N^NuNV/./. Bgp ?BBg?. ?.N^?n ?nNXON^NuNV09 g2092R@?092y.R@Ly,S@?09.T@`0092T@?092y.R@Ly,S@?09.V@?092y.Ly,?NM8PON^NuNV0y44p 0y45B09.H4-@ @0P @0B/.?92?9,?92N N)& n0N^NuNV092y.Ly,=@=y20y24PB.Hn?.??92N N^NuNV09 g092R@??9009.T@`092T@??9009.V@??9,NLPON^NuNVBnN=@ @fB@`L0. |r `XHXW PN`*N/`$096fp`B@36`09Bg3p?N,VTON-N)`N-`N*>090H?N,TO`N*>090H`z0.@8090.y2y4o 342` 0.y2090y.y2oN)&`B090Hy.09.y2my4o094U@3.N*N)N^NuNV092gpN*>092no 0.y2`By2092y.l8090Hy.09.y2n0lBy.N*N)`N)&N^NuNVH K4094S@>n m0R@0@2GSG` M 0.L N^NuNVH 092gNN*>K4092S@>y4l0G0R@2@RG`p?N,TON*>Sy4N)L N^NuNV092X3l#J0.gNp3:p?NtTO yJ3<B3:D3DH3BF3@>3>@`By: yJ0(>y@f 0(@y>gn yJ1yB< yJ1yD: yJ1y>@ yJ1y@> yJ1yHD yJ1yFBN?92N"TONp?NtTON^NuNVH *n/ N&XO=@094S@>y2m0.G0@42G4SG`>920.o0G4SnRG`/.N&XO=@y4?N,VTON)L N^NuNVN*>By4By2By.B94N*p3:00y44BBy2By.By40< N^NuNVBnp36Hy4N&XO34090y,HL30By2By.?94N,VTON)By:3 <09:fN*=@g09:f98H0@H@g096g 0.f?9298H?N-zXO`,094S@y2f0.g0y2498H094nl>Ry2Ry4Bn090y.y2n 090Hy.N*`p=@N)`0.N^NuNVp3Bp?N.$TO0.4B95?. ?. N0:XOBgN.$TO09920.y,HL<GoN*>0G?N,V`FoN*>0F?N,TONIP`HnHn?. ?.N 0gSn0.Ho0.H@@`p @0.HH@H@A@ . f?.H?HyDHnN2 `(?..H?.H?HyIHnN2 n g n fp.@p.@Hn` n f p,@Hn`HnN/4XOLN^NuNVH0>. ByBp?N.$>?.?92N%,\O*@-M f B94`0-@g/-Hy4NPO`v0-@g&Hy5B@-?/-NO p!4`F0-@ g BgBgBg/- /-Hy4NS`Hy4B@-?/-NO Bg?<N0:XOBgN.$TO=yN)N^NuNV=y,=y0 /. N&XOLy,=@ n g/?92?9,?92N 09LP?09.T@yM.??.N4r\ON=@ @ g @af4 nBN*0. n?09.T@yM.??.N4r\O`rn0nH@gBg?.?.N1/y>TO/.NPON*0. n?09.T@yM.??.N4r\O09`HyC`HyJ`HyP`HyX/. NPON^NuNVH0*n092X3l(@p9e@@=y =y -y3B@-3 -S#3By Nn 9M"9M-@-AN8-@-A .".#M#M3 3 #3 .".L0N^NuNVp3 By*ByLp33hN8#M#M09 N^NuNVBn-|HnN y g4 y g* y g y g y g y f=y Nn ng nfN8`N-@-A09 g. y g y g y g y f=y NnN>-@-A0. |r`XHXW PN`HnHnNXPO`HyN/./.NP/A.N 0nHyfN6XO`JHnHnNP`Hn/./.N -@-AHn//Np/A.N/A/@./.N&`/./././.NN` .".N^NuNV/ 09 fBgNRTO`ByL09 |r `XHXW PN` 9 "9 -@-ANn`dNnN8-@-Ap??<N6>XO`<=y Nn?.N`=y Nn nTg nVfx nTf #Gt ` #M p3LBB`?.NpTO# `=y Nn?.N`=y Nn?.N|`x y9 gHywN6XO`p33hNnNx`Hp3L# | BB`Hn/9 |NvVPO=@`BBp33h?9M?9 ?92N%,\O*@09 g:p3L09*gp?`Bg/ ?9M?92N%n # `>09 g4-M gZ0-@f 0-@ g -"- `0-@g ybf0y3fB@-y gBA-p9e@Ag/ N7XO-@-AHn/- /-N 0g .".+@+A B@-??/ NPO`pNnN8-@-AHyF//N 0f-|@-|`HyN6`J nPf N?`f nSg nWg nUfHnNRXO-@ByL nSf /N2XO`* nWf nH`/.N&?@TONRTO-@-A .".*_N^NuNVBn y f^Nn y gH n l@09 g8N8-@-A0.RnH @ . !A?<N6fTO`Nn0.N^NuNV/ Bn y fLNn y g< n l409 g,0.RnH&@N8'@'A?<N6fTO`0.fp?N6TO`F0.A 0.33PgHyN6XO`Sn0. @o(HC20.H @ ("("#A`-y3=y =y 9M"9M-@-A=y By 0.A #3By 0.A 3 NnN8#33 3 y3B@3 3 Nn 9M"9M-@-A .".#M#M .".&_N^NuNVH0Byb092X3l(@?,@?,>NXOp?NtTOp3 ~y6l0H @T*h-M g0-@gnB@-3 -S#3By NnN8HyM/- /-N 0g( 9M"9M+@+A B@-??/ NPO09 g*m`pRG`P?,@?,>NXOp?NtTOL0N^NuNVH0Byb092X3l(@?,@?,>NXOp?NtTOp3 ~ Gl0H @T*h-M g0-@gnB@-3 -S#3By NnN8HyM/- /-N 0g( 9M"9M+@+A B@-??/ NPO09 g*m`pRG`R?,@?,>NXOp?NtTOL0N^NuNVH0p3b092X3l(@?,@?,>NXOp?NtTOp3 ~y6l0H @T*h-M g0-@gBA-p9e@Ag33B@-3 B@-3 -S#3By NnN8p9e@@HyM/- /-N 0g( 9M"9M+@+A B@-??/ NPO09 g*m`4RG`?,@?,>NXOp?NtTOL0N^NuNVtBnt n tl0.tH @p1@Rnt`p=@=nvHnxHnvHnN 0.vN^NuNVHnBg?92NPO3M3Mp?NNTO3* @lp`B@3 N^NuNV09fB?<N\Op3N^NuNV09gB?<N\OByN^NuNV/.NXO0f,/.HyHnN2 Hnp?N\OB@`pN^NuNVHn?.BgNPOHnHnHnHn/.N0.Hn=@0.Hn=@BnBn093 gNK`,?.?.?.?.?.?.?.?.BgNH?.?.?.?.?.?.?.?.p?NH?n?n?n ?n p ?Bg/.NBg/.N\O=@?.?.?.?.?.?.?.?.p?NH093 gNK`.?.?.?.?.?.?.?.?.p?NH0. @Bh 0.N^NuNV=n=n 0. nS@=@0.n S@=@Hnp??92N|PON^NuNVH0p?NNTO(@*y <90fNI*><@*SGf0fNIPL0N^NuNVH0p?NNTO(@*y ><@<90fNI*(SGf0fNIPL0N^NuNVHn?92NN\Op??92NXOBg?92NXOp??92N8XO=n=n =n =nHn?92N,?n?y2TON?n>2N?n>2N8XON^NuNV=n=n =n =n=n=n0. nn=@0.nn =@HyHyHnp??92NN^NuNVHn?92NN\O=n=n =n =np??92N6XOp??92NXOp??92NXOHn?92N>?n?y2TONXOp??92N6XON^NuNVRHy HnNPOp?NATO=@@A@0.R@?Hn\pG?NAPOHn\HnN/nXOHnNPO093 gNKHnHyNHnN 093 gNKHnHyMNPOHnHn\N/|MXON&XO=@RHM-@X /0.RHї -@T nX \g :gMe SXST`RXRTHyN/.XNPO nTBHn\p;?NA\O.\H@A?p?NAXO0.N^NuNV09ܰy3 g:093 g?<}NLTO# `/9 NXOB 33 N^NuNVH0*n .S#3By 3  09 n lXN=@I |Vr`XHXW PN`&N>/93N&XO< y3#3y ?Hy/ N2 `p? y3HhHy NԲ P3Py p?BgBg/9 /9 / NS`N3 S@L/Hy/ N2 `dN3 S@L/Hy` 93R# |// NPO y3HhN&XO>R@ y3#30R@y ` y3HhHlNPOp" y3HhN&XO>R@0@p"0T@0@B0`p? y3HhHy NԲ p? y3HhHyMNԲ X3Xy nf/ ?9M?9 Nu8PO`F nf Hl?9M?9 Nu8POp$` nfNHl?9M?9 Nu8PO,H0@H@glp$@`p$@` nfp$Hl?9M?9 Nu8POl,H0@H@glp$@`t nm@ nn8p 0.@HA/HlN/|.N`0.g$ @|m@|HA // N`Bg`BL0N^NuNVZ/ 0.f4/./. Hy/.N2?n/n N^ \O`0.@glpd?NRTO//Hn N͐?n 0.U@?HyHnN2/n/n XOHnHn`N2?n/n `:0.@g?.0.S@?Hy `0.@g?.0.S@?Hy`0.@@gl?.HyHnN2 K/./. Hn/ N2Hn^?./ NZ /0.^H S*@p$?././ `0.@ gZ?.Hy$HnN2 K/./. Hn/ N2Hn^?./ NZ /0.^H *@`0.@g&/./. Hn`BgN[?n /nPO`0.@g/./. Hn`p?`0.@g/./. Hn`p`Hy/./. N 0o*0.S@?Hy+HnN2/n/n TO`0.S@?Hy4HnN2/n/n TOHnHn`N2?nHn`N^ \OHn`N&XOno0.S@?Hy;`x?./.Hn`N] *_N^NuNVH8 nB098n092X3l*@=mF=mH>.n n0H @T(h-L g.-L gB@,n d(l`-L g B@,ncRG`?./.NxB\O&nBn /0. Hї :-@<. nn4-L f0.f$B`B@,Fg nRH`0,@f0,@f0,@@gL0,@f 0,@g8p=@HnB@,?/,NO 0.S@HЮ?Hn`r0,@f0,@f 0,@ g?,B@,?B@, M(:H?/, /,HnNS nHHnN&XOCoBn nH0.Aljp*Rn` nH?p ?/ NPOHnN&XO2 nHAHnN&?@TOHn/ Nx HnN&XOR`p=@-lBn n "ff nH/.N&XOCn/.N&XO2 nHAR@=@0.nS@HЮ? lHh /0.Hї /` n ^f: nH/.N&XOCn/.N&XO2 nHAR@H` n \fHhHnNPOA-H/N&XO=@=@p=@ nH0.Al*0.nfBn0n2nRnRn`0nB nH?Hn/ NԲ`* n 'f$0.S@HЮ? lHh/ Nx nRH(lRF`0nB0.n gz ./098Hї /0nR@M.nT@??.?92N `8 nfB@`pL8N^NuNVH0*nz/ N&XOn U@>HЍ(@|0SG0g6SRF0 @f -gRE0R@?/ HmNZ S|p,S` n0L0N^NuNVH0*n(n >.0SG0g`L0N^NuNVH8*n Bnp=@0.3*(@0.HA3=P/./.NVPOS/NXO&@?+ NRTO//?+NRTO//0+R@?NRTO//N-@-AHnHn?+NRTO//NͰ/A/@XON͸/A/@XONPO=@0.m0.4.h@=@Wn0g0.S@ @bH0@۰ PN`?+Hy`0+R@?Hy`r0+HA/0. @HhNPO0. @B(`v0+HA/0. @HhNPO`J?+ Hy0. @HhN2 0. @ ( f0. @p0@Rn` nfHn/ / N2 `F nfHnHn/ / N2`& nfHnHnHn/ / N2`BL8N^NuNVH0*n(n / N&XO=@nf/ / NPO`N0.nl*0.n=@Bn0.nl p Rn`g`Bn0.nl p*Rn`BL0N^NuNV/ *n/ N&XO=@Sn M 0g M  g M .fSn0. gS@nf0.`d0.n lR@0@p 0.T@`J0.R@0@ .g=nSn0.0@ .fn l0. S@0@p  M ` 0.R@0@B*_N^NuNVN|3 0l2Hyp ?NA/|TOp ?NA\Op?NATOp?NdTOHy Hy Hy HyLVNP3 ?NHTO32NH09gHyNItXO0f p?NdTOBBgN\OHn?92N\O3L3M.p/pH?NA\O-@ c #`6 c #` c #` #@NH09gN?92NrTONN^NuNVHy FBgBgNPOp?/9 FNX\ON^NuNVBn nlN0.HA30f40.R@?HyHy\N2 0.HA3p0`Rn` <\N^NuNVH 093"@ @7bH0@ PN`p3`p?`~N*0g0092XA4?092XA4?NXO092XA3BP`6NT`Hy$NMXO0gND0g`Ni`NlVp?p?NIXO @gN`Ne`p?p`p?p`p?p?NIXO> @g@ @bH0@`p?p `tp?p`jp?p``p?p`Vp?p`Lp?p`BNj.`BNjb`8N`.p?p ?NIXO> @g>?NlTO`Nc`Nޖ`N`Hy+p?N\O @g?92N؊>2NЂTO092X3*@~ Glp RG`NvN?92N`lp?p `bp?p`ZHydNMXO0gRNP`JHykNMXO0g8Nl`0NqJ`(Nr` Nt`p?p`p?p?NIXOp??93 /9 FNPOp?/9 FNX\OL N^NuNVBgp?NIXO=@ @gHnp?BgNPO n-h< n/NXO=@0._@ @ bH0@ܼ PN`?.?<NdXO`n?.?<`?.?<`?.p@?`?.?< `?.?<`?.?<`?.?<`?.?<@`?.?<`?.Bg`N*ByLN^NuNVH0092X3l*@:9LN*ByL09 f?-@?->NXO~El0HA=P0HA=P0HA=P0HA=P<.nnr0H @T(h-L gB@,nd(l`-L gNXOL0N^NuNV/ 092X3l*@Hnp ?BgNPO nBh: nBhR nBhj nBh0-RS@ @b>H0@ PN`. np1@:`" np1@R` np1@j` np1@N/HyrHnN2 Bn n l" N ( f0.Rn0@p0@`Hn n/(DNPO n-h/ n/NPOp?p ?NIXO @g n h:fp`" n hRfp` n hjfp`p;@R n hfp'` n hfp^` n hfp" n// N/MXOp??-(NPO n hf p33 `By3 NO2*_N^NuNVH0BnBn092X3l*@0-JmFHL:0.f^<-El H@RF`0S@;@D @mr0<;@D<I`: LSH>El LSH@SF`0S@;@<`> mDm;|D<-DI`: LSH>El LSH@SF`0E=@;F<0-Bm:R@>0-By6m;y8B096G;@:0-@mDo;mD@`0-@mNXO0.L0N^NuNV=yNIPp?p?NIXO @g0.gNI*Hnp?BgNPO n-h n/NXO=@ @'o=|'` nlp=@p??.N`^/?<N =@ @g~32BgBgBgBg?NҾ N"HnHnHnHnp?092XA3?N?n?n?n?n NKHPOp?NtTON^NuNVHyxp?N\O @fN(` N*ByLN^NuNVHyp?N\O @fN,V` N*ByLN^NuNVSn0.Ho0.H@@`p @0.HH@H@A@ . f n  n B(` n  n n n B(N^NuNV/.NXO nH@@=@(H0@H@g n(H0.A@@=@0.N^NuNVHn?.BgNPO0.  @-h n/?.Nj?n .HnN2 Hn n/NPON^NuNVHn?.BgNPO0.  @-h "n Q _gHy I/NPO0f n BP nBP`$ n/N./. n/Nw N^NuNV yLfZHnp?BgNPO n-h n/?9?9Nu8PO n-h n/?9?9Nu8PON^NuNVH0>.092X3l*@89LN*ByL?-@?->NXO|Dl20HA=P0HA=P0HA=P0HA=P:.nn0H @T(h-L gB@,nd(l`-L gB@,nb0,@gj Gf: lHhNxXOBg?98p?/93dBgB@,??N^`* Gf lp'` Gf lp"` Gf lp^B@,??NXO(l`\RE`$RF`?-@?->NXOL0N^NuNVH *n~g& n HHAf(H-HAgHRG`/.N&XOGfp`0L N^NuNVH0BnBnBnBnBnBnBnHy/.NnRPO=@Hy/.NnRPO=@Hy/.NnRPO=@ ngp=@ ngD0.T@0@ Mf0.V@0@ Mfp`0.T@0@ Mfp`p=@ ngp=@/./. NPO ng0n p%0.R@0@ ps ng0n p%0.R@0@ ps ngh nf0.HЮ *@0.T@HЮ (@f nf0.HЮ *@0.R@HЮ (@f0n p%0.R@0@ ps0.nn0.=@nn0.=@ @f nBP`0.nf0 ng(0.nfp=@`zp=@ ngzp=@`r0.nf0 ng(0.nfp=@ ngHp=@`@p=@`0.nf. ng&0.nfp=@`p=@ ngp=@6.4.k2.4.i0.4.hAC n0L0N^NuNVHnp?BgNPO n-h-h-h,HyL n/N/|LXO n/N/|LXO n/NPOp?p?NIXO @g n/NXO n/NXO n/NXO n/HyLNPO n/HyLNPO n/HyLN/|.NHPO-@gBBn nl*0.L/Hy/.Nn Rn`/.NXOBn nl@0.H3/0.3*/0.L/Nn Rn`N^NuNVHnp?BgNPO nBhR nBhj nBh nBh nBhB nBh* ydf np1@R` np1@j y6f np1@*` np1@Bp?p?NIXO @ gz n hRfp3d n hjfByd n hf BgNsTO n hf p?NsTO n hBfBy6 n h*fp36N^NuNVN^NuNVH0Hnp?BgNPO n-h$-h<092XA4=P n/?.Nj\O092X/0.Hї A3H?Hy n/N2 p?p?NIXO @g n(P n/NkXO=@ @ll092X/0.Hї 3*@/ NXO=@o( @Fl"0.Rn @l0.g ,ffBgNg>2NTOL0N^NuNV/>. SG0Ho0H@@`p @0HH@H@A@ . f?.H?Hy/. N2 `(?..H?.H?Hy/. N2.N^NuNVH *n|0. S@H*~g(//HH/N/@XONҨPOR,RGR`0L N^NuNV8/.HyHn8N2 Hn8p?N\O @fp`B@N^NuNV/.Hy NPO0f n AI!|!hNn`/.NnXO=@ @gLA 0 @g @grBgNRTO n !ANn0.A 0`/.Hy HnN2 HnN6XOBgNRTO n !ANnB@`Np33h0.A "( n !ANn`Nn?.NCH0@H@gH0A@@>0RE @l&H0@gH0 A@0<`0f0<` n 0 n00<L N^NuNVH0*n(n >.g 0SG0g`L0N^NuNV?. p ?/.NPO0n BN^NuNV09 f093@ @bH0@ PN`09:g.p??93 /9 FNPOp?/9 FNX\O`N``09:f?93 NTO=@m?NTO`t09:fj?93 NTO=@mT?N`09:f@?92N>2NlTO09 op=@ no0.XA3 PnSn` ng32092X3l-@BgBgBgBgp ? n?((N HnHnHnHnp? n?((N?n?n?n?n NKHPO n3P6096S@38`J09:fBN`:N}`2N~F`*N0`"09:fN 092XA3BPN^NuNVH 092X3l*@>-:0-BGR@<0F @l,0->m:;@>p;@:;FB0->m:mFo;m:>` m>m:mB0->m:l;m:>Bgp??92N\ON"NL N^NuNVH 092X3l*@>-B0m:R@<Gy8m:0->m:;@>098FR@;@:;y8B0->m:mmBo;mB>` m>m:mB0->mBo;mB>Bgp??92N\ON"NL N^NuNVH By8092X3l*@0-@m<:<-J0-5p:H29L0AmFo0g5p:H09L@SG`RG Gf5p:H09LFmJl5p:H09L@RG` GmD;|D<-J>-D5p:H29L0AmFo5p:H09L@SG`0R@;@<`0-DR@;@<0S@;@D0-Nz~`6N{ `.N`&Nj`N{`N|`N(`NN^NuNVH 092X3l*@0-Dm Gl~0G @m 0<FR@>m0-@m Gl~0Gy8m 098FR@>m:g>0->m:G;@>;G:0FS@;@BN"Bgp??92N\ON`0092XA4?092XA4?NXOL N^NuNVH 092X3l*@0-Dml;mB>0-Dm@l;mD@*_N^NuNVH Bn092X3l*@HnHnHnHnp??-(N?n?n?n?n NKHPO;n0;n20.S@;@40.S@;@609 g$09LHnT@;@F09M.nT@` 09LHnT@;@F09M.n;@H0.nS@;@J0.nS@;@LmHW@HM.>m:S@;@By6m096S@;@B096G;@:0->mBo ;mB>p=@<-F>-<5p:H09LFmJl5p:H09L@RG`0S@;@D @mB;|D<-J>-D5p:H29L0AmFo5p:H09L@SG`0R@;@<0-@mDo ;mD@p=@0.g?-@?->NXO0-JmFHL;@NL N^NuNV09:f092XA3?092XA3?092XA3?N4r\O092XA4?092XA4?NjXO092XA4?092XA4?NXON^NuNVNdp???92N\Op?NtTONN^NuNV/ 0.XA3 Pg320.X3l*@BgBgBgBgp ??-(N HnHnHnHnp??-(N?n?n?n?n NKHPO3P6096S@38092XA3?092XA3?092XA3?N4r\O*_N^NuNV=y232NI*p?NTO=y3"=y3$=y3&=y3(HnHnHnHnp ??93 N0.gb0.g\HnHnN PO0g?.?.?.?.NKHPONHnHnHnHnp ?092XA3?`BgNTONIP32HnHnHnHnp?092XA3?N?n?n?n?n NKHPO092XA3?092XA3?092XA3?N4r\ON^NuNV/.Hy&HnN2 Hnp?N\ON^NuNV?.Hy2HnN2 HnN~XON^NuNVH 092X3l-@pO?HnNxB\O~ n0(. nhJl`09 g 0.R@?0S@?0.yM.?0W@` 0.S@?0S@?0.yM.T@?0Y@?NLPOHL@`L N^NuNVH092X3l-@ @:(08(H0(LS@?09LHE?0R@??NLPO n<(:> nhBnB?HymHnN2 Hn0FR@M.DT@???92N RG` n0(LS@?09LHE?0R@??NM8POLN^NuNVNN092XA4?092XA4?NXON^NuNVH0092X3l(@0,:nn.0,Bnm"0,0RFn lH@`09 gp??92NXO0.l:R@M.lHT@?H0ALlFS@?0.l:M.lHX@?0LlF?NM8POp??92NXO`Z0.l:R@M.lHX@?H0ALlFS@?0.l:M.lH\@?0LlF?NM8POL0N^NuNVH0Bn092X3l*@?-@?->NXO0-@mDlRm@`0 mDl&RmD096g,<-<:980-JmFR@HL=@=mH=mLRm` HE>RF0mN?m@>>NjXOL0N^NuNVH8092X3l*@0-HyM.T@=@0.mDnmnl nRH@RF`09LmF=@`=mF?.?-:?92N$\O(@-L g=mB0m:l ,g @0nn(H-L g M(:H:>-:nn0Gf0,@f0,@g HnB@,?/,NO G`Hp?/ ?.?92N%n &@0,@#g"/ N&XOEo|El0Fp*@RF`0EB/ ?.?.?92N (l-L g0nn09M.nRG`0L8N^NuNVH Bn092X3l*@?-@?->NXO0->mBlRm>`L096S@mBo09 g,0-Bm:M.mHV@>0-HX@??-00-LU@?`&0-Bm:M.mHX@>0-HX@??-0?-L0-0m4?0-HyM.X@??-0NL 0yM.??-J??-0NL?mB/|qTOHnN2 Hn0-Bm:R@M.mHT@??-0?92N 0yM.?09LHm0???-0NM8?mB\ONTON"0.gN*?-@?->N?m@>>NjXOL N^NuNVH 092X3l*@ m@m\?-@?->NXO0-@m09L8< M<(:H09L:?-H0-FE??-L0-JE??-H0-FG?NL?mL 0-FE??-H?-FNLPOBy8N?-N?m@>>NjXOL N^NuNVH Bn092X3l*@ m>m?-@?->NXO0->m:oSm>`@ m:g6p=@N*Sm:SmBSm>09 g0-HV@>0-Bm:M.mHV@`0-HX@>0-Bm:M.mHX@<0yM.??-0?0-0m4???-0NL 0yM.??-J??-0NL?m:/|uTOHnN2 09 gHn0yM.S@`Hn0yM.U@??-0?92N 0yM.?09LHm0???-0NM8?m:\ONTON"0.gN*?-@?->N?m@>>NjXOL N^NuNVH >.<. ???92N%,\O*@-M g0GgBgBgHyy`0-@ gBgBgBg/- /-HnNS`t0-@f 0-@gHnB@-?/-NO `D0-@g"HnB@-?/-NO p!@`/-HyzHnN2 B@-??-Hn??Nl L N^NuNVH >. KHnHnHnHnp?092XA3?NUn0.yM.T@?0.n??.09Ln?NLPOSG0Ho0H@@`p 0HH@H@A@?.Hy}HmN2 p=@/ 0.yM.?0.Ln??92N/M\ON&XOn0.@g?.Hy/ N2/M\O`0.@g ?.Hy`0.@g ?.Hy`0.@@g ?.Hy`0.@ g ?.Hy`0.@gHy`F0.@gHy`40.@gHy`"0.@gHy`0.@@gPHy/ N/MXO0.yM.?0.Ln??92N/M\ON&XOT@n/. 0.yM.?0.Ln??92N L N^NuNVH8*nBnBn092X3l&@0. k:mkBn0.k0RFnlH@`0Ln`=y809 g&0.yM.T@?HLn?0.X@`$0.yM.X@?HLn?0.\@??.NLPO-M g0-@f0-@@ @@g0-@@ @@f(HnB@-?/-NO B.PA-H`"p?/ B@-??92N%n -@ .g:0.HЮ/0.yM.T@?0.Ln??92N L8N^NuNVH0>. 092X3l*@0.m:mRmBnLm.092X3l*@=mF=mH=mJ=mL09 g0.yM.=@0.R@`0.yM.T@=@0.S@=@m0onl0. no~nlv:-<0REHЍ:(@Hy8Ln<GlREHL@`0S@mDo=mD`0S@=@0. nU@HM.m:=@mBo=mB`=nno,nl&0. nonl n0 n 0p`noNnlF0. no:nl209 g0W@`0Y@=@@m0S@Gm$HL0A>09 g 09M.R@`09M.S@=@Hnp?N\OHnHn?.?9L?.?NHnBgN\O0.HLBgNgTOp?Bg?92N\ONI*?-@?->NXONIP` yLl yLf BgNrTOp3Lp33096S@33`^m0ob09LHm0T@GoP yLlF yLf BgNrTOp3L3p333BgNrTOB@L0N^NuNVHnHn?. ?.N 0gF n f09Lg4S@HA0nf09LS@HA0ng09LHA009LHA009LHA009LHA0 yLfHyN~`RyL09LS@?NrTO`r n g n fF09LgJS@?NrTO09LS@HA009LS@HA0`N*ByL?.?.NXON^NuNVH0=yfNI*092X3l*@?-@?->NXO0.m:mDmBn>0. m?. ?.Nj?m@>>NXO`X0. ;@@;@<0.;@>;@:0-LmHW@HM.m:S@;@BBy8BgNgTON"?92NTO0.fNIPL0N^NuNV/ =yfNI*p?NTO0. gN0. gN?.NXO09 f nBPB`N8#~#09Lg -y p`p=@ y f09 gNnN8#~#//NPO3z0nBnHyN6XO`vTn y f:09 g2NnRnN8//NPO3|0n BnHy`p??<N6>XO n0 .N^NuNV-|Jb nBHnNRXO-@ g/.N&XO=@`Bn09 gv0.@K @bfH0@h PN`T .g/NXO=@ ng"HH0@gR`Hn/.NJPO nHhNXO=@0.o(?.?.?/9/9~/.NS`?.?.p(?/9/9~/.NSBn0n  f n(lRn`0.HЮ`zBgBgBg` nfd09znoHyN6XO`F?9|0yzHh/.N n|` nf .g?9z//.N nz` nf0.yz=@l Hy`l .g?9z0.HЮ` nf/9/9~NPOHH n nB(`n nff/9/9~NPO0n Hy,`/9/9~N?@\Op ?/.N/y.~NPO0@B .N^NuNV"H0~Bn.*nI8 g @fpr`  fR`gBH0@f .g Eg eg -g +f` %fp=@.R`BHn8NXO-@0-A40..gpd?NRTO//Hn0N͈ .0".4L0N^NuNV/ *np=@BnBB -fp=@` +fR 0fH`H0@gNH@0?NRTO//Hnp ?NRTO//N/A/@XON-@-A` .fpR-|>-|H0@gLHnH@0?NRTO//N/A/@XOHnNx/|݈POHnNPPO`?.NRTO//HnN͐ p=@ eg EfNR -fp=@` +fR 0fH`H0@gH0. A@0=@`0.gh-|@-| nf 0.Sn0g4Hy݈HnNPPO`0.Sn0gHy݈HnNXPO`HnHnNXPO .".*_N^NuNVH0-|Fz-|Ep??<N6>XO09 g:N809Lg 9 g//.N/nXONXOp??<N6>XO09 gN809Lg 9 g//.N/nXONXOp??<N6>XO09 gN8//NPO:0nHyBN6XO`p09 ghp??<N6>XO09 gP0HЮS(@~|g&*ngHHAf|`R`0fRGR`0g0E`p?N6TOB@L0N^NuNVBn nel0.HAp0Rn`09XgBBn0.yXl2A Pf0.A /NXORn`ByXN^NuNV/.NnXO=@ @gz -@0.A 0 @g @g6`HyZNvXO=@0g n/(NXO np1@ . ". n!@!A`09X -@/./NPO np1@ . ". n!@!Ape?/.Nu\O=@HA=P n1n0.HA09XRyX0N^NuNV/.NnXO=@ @g -@0.A 0 @g @g6` n/(NXO n!n n1n n1n `HyNvXO=@0g np1@ n/(NXO n!n`09X -@ @!n n1n n1n  np1@/./.NPOpe?/.Nu\O=@HA=P n1n0.HA09XRyX0N^NuNVH *npe?/ Nu\O=@HA> Gg./ 0 /NPO0g0A `0`pL N^NuNV092XA4 PfND`>092XA4 PfNF`092XA4 PfNG2N^NuNVHyHyLN/|.LN/|.LNPOBn nl@0.H3/0.3*/0.L/Nn Rn`N^NuNVHyHyNHPO-@gBn nl/.p?HnN g|HnN&XO=@ NB(HnNXOHn0.L/NPO0.H3/0.3*/0.L/Nn `HyN~XON>Rn`F/.NXO`N>NvNj6Bn nl0.RnHA3BP`=|Np??<N`^/?.N 32 @fB@`BgBgBgBg?92NҾ BgNgTON"HnHnHnHnp?092XA3?N?n?n?n?n NKHPOp?NATO=@R@?Hy pG?NAPO0.@A p: Hnp ?BgNPO np1@ np1@p33 NO2p' NIPN`2p??92NXOp?NtTOpN^NuNVN0g092XA4=P092XA4=P ng?.?.NjXON=@=y |ݐr `XHXW PN` nfNIPp?p ?NIXO=@ @g ?NlTO nfNI*` nfNIP y grN*` nfNIPHyNMXO0gHND` nfNIPNlVp?p?NIXO @gvN`lNIPp3` y gNi` nfNIPNj.Ryd` nfNIPNjb` nfNIPN` nfNIPNc`~ nfNIPNޖ`f nfNIPN`BgNTO`Bp?`p`p`ND`*NF` RydNG2`N<`p??NXO`?.?.N?n>N3`XORydN092XA3?092XA3?092XA3?N4r\O`p?HnHy092XA3?092XA3?N4HnNXOHnHnHnNw 0.oy6l 0.o @l??.`N`Nj`N(`N`N{`N|`Nz~`N{ `3 <`0.@@H0@H@gt?.?.NXO.H?NBTO=@092XA3?092XA3?092XA3?N4r\O0.gN09gBn nl20.XA3 Po?.N>NlTORn`N^NuNVHy DHy Hy HyLHy2Hy BgBgHy3BgBgBgBgBg?9V?9T?9R?9P?9p??Bgp?N<3 @g$NIPByByPByRByTByV09 @g> y f0<` y DfHnHn?92?9 N 0g yLl yLgHnHnp???92?9 N09 n092nHnHn?.?.N 0gp3L3333BgNrTOp`09:g2?9 ?92?9 N1\OBn n>l&0.R@=@`?9 ?92?9 N*\O09 @gNxh y f0<09`N09 @gx09f2p33 P32Rp3Tp3VNI*09 N^NuNVBg?<?.N1\O=@?/9>Np\ON^NuNVH8092X3l&@=k>=k@*n na g Mf?.?.NXO` nP?.?.?92N%,\O(@09 fz-L gr0,@f 0,@g^B@,=@ /0.Hї :-@=n nH0.Ao&?.?.NXO nRHnRn`.H0@f .+g .(g .-g ..f p=@` .!f p=@R` .@f=|@=| `p=@ ."g .'g .\g .^fBg/ N&XOR@?p?/.`69 H@/.HnNPOBgHnN&XOR@?p?HnBg?.?.N^ ng n@f/ NxXO 93dS#3By 38 NnN=@Ryd nfB0f>Bg?98?./93dBg?.?.N^?n?n N3`XO`~ nf0.g y3dB@ @f4 y 8f*/9M/9MBgp ?BBg?.?.N^`X/9M/9M?98?93h/93d` nf0/ NxXOBg?98?./93dBg?.?.N^09 f nBN* n@f&?.?.N?n>NXOp`=k>=k@?.?.N?n>NXO n g:0. |Vr`XHXW PN`N`Nj`N(`N ng n@g| ngrB@L8N^NuNVBy N=@ |tr`XHXW PN`4R3 93# |/93N&XO=@ y3#3R@y `N=@S@HA2 "(# # /93N&XO=@ y3#3`p? y3HhHy NԲ P3Py `|N3 =@`hN3 `X=|p? y3HhHy NԲ p? y3HhHyMNԲ X3Xy y3 (f=y =yMNnNnN8-@-A//NPOn y gp ?N6TO`$NnN8-@-A//NPOn y~ g p ?N6TO3 3M y l009 y8o" yMl yMoHy N6XO y3 (}fR3Ry p3 3 09 N^NuNVRy By 09 y nR3 y3B@3 09 `09 gN.N^NuNV/ Ry3j y3`*h-M f By B@`X0y3jgBy p ?N6TO`0-@gB@-3 -S#3By #3`3 0<*_N^NuNVH8*y&-M g(m/ NXO*L`B&&y-K g-k/ NXO&n`BNvHyHy1Hy,N?n ?nPONb.xHy8Hy3N L8N^NuNV/ p3 3 33j3 ,?. ?.?92N%,\O*@-M gB0-@g8#3`B@-3 -S#3By NnNBy ` p ?N6TO*_N^NuNVNn @gp ?N6TO`?9M?9 NbXO09 N^NuNVNn @gp ?N6TO`?<Ndž>M?9 NbXO09 N^NuNV?<p?NȂXONn09 N^NuNV?<NdžTONn09 N^NuNV?<NTONn09 N^NuNVNn @gp ?N6TO`~NnN80fp `Hy/9M/9MN 0oJ?<BgNȂXONn y g& y fNn @fNn y fNn09 N^NuNVH0p?NLTO(@ 9&f#&`*y& -g*@`+L89y3j9y,9y 9y )y3 B)y3`L0N^NuNV/ 9&fp?N6TO``*y& -g*@`?.?N:XO0f?.?N7$XO3,33j3 3 # 3#3`*_N^NuNVH0 9&fp?N6TO`*y&(m-L f B&(M` ,g*L(@`B?. ?N:XO0f?. ?N7$XO`8 nf03,33j3 3 # 3#3`/ NXOL0N^NuNV nf n fp`" nf n g nf n gB@N^NuNVNn @f>Nn @gHy:N6XO`Hy^HyM/9 |N ` y fNn @gHyO`/9 |HyJN/|JXON.bHyJNPO0f>p?NATO f2Hygp?N\O=@ @fB@`: nfNnp`(HyxHy`Fp ?N6TONn09 N^NuNV/Hyp0./NDPO.N-@Ne.N^NuNVNn @g y g09 f2HyHyNn/|XONXON @ g"`N8//NPO=@?NʊTOpN^NuNV|/ BnNn @|fNn @gHyN6`/9 /9 NPOS@=@0m n oHy`0.A g0.A gHy`Nn @gHy/.NnPOBy `(Nnp=@0.A-P y g y g09 f,0.gHy/.NnPO`HyN`p3* y g y g09 g09 gBn09 |r `XHXW PN`?9M?9 ?92N%,\O*@p=@ByLB N8-@-A09LgN 9 gF/N&XOy 0.g/9 Hy/.Nn `/9 Hy`0.g092X/09MHї A3H=@-M gZ?-B@-??././.HnNS0.gHnHy!/.Nn ` HnHy$NPO` ?.N.TO0.y `VBgBgBg/./.HnNSHnN&XOT@y 0.gHnHy'`HnHy,NPO y fT09 H H@=@0gp n?N.TOp ny Nn`HyxNXOBy*`H y g09 g @f.0.gHy1/.NnPO`Hy3N.x` y gp ?N6TOBy*By HyxNXO09 *_N^NuNVBn0.nlHyxp ? yN\ORn`N^NuNVHyLXHyMHyMHyMp??93 NHnHnHnHn?9LX?9M?9M?9M?.p?N09Mn n 009LXn n0N^NuNVBy Bn nlJ?.NЂTO0.XA3BP0.XA3p00.XA4BRn`By3 HyLXHyMHyMHyMp??93 NN^NuNVH00.X3l*@I:~ Glp RG`p;@:p;@p;@@p;@RL0N^NuNVH( y mHy:p?N\Op`~ Gl0XA30mRG` GmHy]`0X3l*@0.@H@?NLTO+@T fHy`|0.R@Fo0H @TBRF`| Fl0H @TBRF`0XG3?9LX?9M?9M?9M?.N 60XA30l/-TN.`0.R@36380XA300XA3p00XA3BP0XA3BP0XA406/. 0X3l/NPOBgBg0X3l/p?0XA3?N Ry 0L(N^NuNV0.XA30f< y f(Bgp?/9 FN|POBgp?/9 FN|POHnHnHnHnp?0.XA3?N0.f20.f,0.f&0.f =yM=yM=yM=yLX0. f0. f 0.f0.g=n =n =n=n0.yMf:0.yMf.0.yMf"0.yLXf0.XA3p0`0.XA3BP?.?.?.?.?9 ?9 0.Hn?0.Hn?N?n?n ?n ?nPO0.XA3?NP HnHnHnHnp?0.XA3?N0.XA3p00.X3l-@ @1n0 n1n20.S@ n1@40.S@ n1@609 g(09LHnT@ n1@F09M.nT@`$09LHnT@ n1@F09M.n n1@H0.nS@ n1@J0.nS@ n1@L$n"J I0(LiHW@HM.j:S@1@B n=hF=h<"n I(:H09LniJl I(:H09LnRn`0.S@ n1@D"n I0(JiFHL1@NN^NuNV0.XA30g:HnHnHnHnp?0.XA3?N0.XA30g4Hyp?N\O @fHyRNMXO0g ND0`p ?HyY0.X3l/Nf 0f(0.X3u/NXOS@HA3BP0.XA3?N>?.?.?.?9 ?9 0.Hn?0.Hn?N0.XA3BPN^NuNV0.XA30g ?.NTO?.N؊TO0.XA4/N?nTONЂTO0.XA4B0.XA3?NTO0.XA3p0 y f,p?p?/9 FN|POp?p?/9 FN|POSy N^NuNVH0*n-M g*(m0-@ g/ ` /-N.NXO*L`L0N^NuNVH 0.X3l*@~ Gl0H @T/(NDXORG`L N^NuNV/~ Gl0XA30nf0`RG`p.N^NuNVHnHnHnHnp?092XA3?N n0 n 00.S@ n00.S@ n0N^NuNVHnHnHnHnp?092XA3?N0.n?0.n??.?.NLPON^NuNVH0092X3l-@"@0. H @T*h-M f0. H @T!n nB`x0no" n!M"n0. H @T!n`N0ngF(M-M g0nl -g(M*@`0no)n n!M` n!m+nL0N^NuNVp?NLTO-@f NB`$0.g0?NLTO n!@g?./. n/(NԲ ` nB0. n@ ydfx092XC40. H@B@H@ @-h .g @ (g @0nl n-h` .g& @0(@n n1@"n ni` n1n0. n@ .". n!@!A n00. n@p9e@ n@ .N^NuNVH0*n(n 0.f -g /NXOB`, -g*?./N\O+@?./ /-NԲ p`?.NLTO+@fNB@L0N^NuNVH0092X3l-@ @p1@8"n0.H @T*h-M fZ/./.?.?./.?. ?. ?.Nژ-@fB@`"n0.H @T!n nB`B@-n cR/./.?.?./.?. ?. ?.Nژ-@g @!M"n0.H @T!n`"B@-n fV?././ N 0gT0.@0-@n;@ .".+@+A p9e@@`(M-M gB@-n d -g(M*@`B@-n cB/./.?.?./.?. ?. ?.Nژ-@g)n n!M`NB@-n g././.?.?./.?. ?. ?.Nژ-@gh @!m+n?.?. /.NPOpL0N^NuNV yLf09yfjHyfp?N\O=@ @fBgNrTOByL` nfp?09R@?` p??9NXOBy8BgNgTO09yfDHyp?N\O=@ @g @fp?09R@?` p??9NXOByLp?Bg?92N\O092XA4?092XA4?NXO`Hyp?N\ON^NuNVH0092X3l(@~ Gl0H @T*h-M g n f 0nmRU` n fB@-neR-0-@f 0-@gB@-3 #3By 09 y g y3B@ |$r`XHXW PN`/93N&XO=@R@ y3#30.R@y ` y3 #3y  `R3Ry `vT3Ty `fp? y3HhHy NԲ p? y3HhHyMNԲ n f09 nmRy ` n f09MnmRyMHyMHy N1^PO0g -"- ` <}"<H+@+A p?Hy y3HhNԲ p?HyM y3HhNԲ Z3Zy `r*m`RG` n f`>.0H @T*h0H @TB096S@Go0R@H @T-h0R@H @T!M*nRG` n ft>.0H @T*h0H @TB4p:H:p p: Gl<4p;H<p;:0R@H @T-h0R@H @T!M*nRG`L0N^NuNV yLf~09yfp??9NXOBy8BgNgTOByLp?Bg?92N\O092XA4?092XA4?NXO`HHy p?N\O`409yfp??9NXO`~BgNrTOByLN^NuNVH0>.<. 092X3l(@z El00H @T*h-M g Ff 0GoSU` FfB@-GcS-0-@f 0-@gB@-3 #3By 09 y g y3B@ |߄r`XHXW PN`/93N&XO8R@ y3#30R@y ` y3 #3y  `R3Ry `zT3Ty `jp? y3HhHy NԲ p? y3HhHyMNԲ Ff09 Gf0fp` Ff09MGf0gB@ Ff09 GoSy ` Ff09MGoSyMHyMHy N1^PO0g -"- ` <}"<H+@+A p?Hy y3HhNԲ p?HyM y3HhNԲ Z3Zy `P*m`RE`: Ff~0H @T*h-M g-mB@-??NJXO*n`096U@Eo$0H @T0R@H"@T!iRE`096S@H @TB`z Fft0H @T*h-M g-mB@-??NJXO*n` El*0H @T0R@H"@T!iP;P:RE` lTB p @9L0N^NuNVH 092X3l*@09 fNI*N*?-@?->NXOzyLl\0HA>0HAPn60HA<0HAPn??NJXORF`RG`RE`ByL09 f,BgBg?92N?m@?m>TONXONIPL N^NuNVHy^p?N\O @fN0`N*ByLN^NuNVH8092X3l&@p7@80.H @T*h-M gB@-n bB@-n f0.H @T!m`H(M-M gB@-n d(M*m`-M gB@-n bB@-n f )m-M0. H @T*h-M gz0nnrnf0. H @T!m`6(M-M g0nl(M*m`-M g40nn,nf)m n (g /NXO/.NXOL8N^NuNVHyN~XOBy B@N^NuNV ng Am Zn < R`R`N^NuNV ng am zn < R`R`N^NuNVNn y gp?N6TO`=y =yMp??<N6XO y f=y =yM09 f0`Xp??<N6XON8//NPO=@p??<N6>XON8//NPOnR@=@-y3=y =y 9M"9M-@-A=y By =y =n0.nn`?.Hn?.?.??NV0g*?.N.TO NB(HnHyNPO`HyNXORn`#33 3 y3B@3 3 .".#M#M3 09 N^NuNV/ Nn y gp?N6TO`<-y |p??<N6XO y| g Hy`Nn @g Hy`/9 /9 NPOS@=@0m n o Hy`p??<N6XON809Lg` 9 gV-@ n og OfB0.Ap0.GHy /.NHPO&fPHy"`@0.Ap0.GHy:/.NHPO&fHyXO y g y f y f yV fBnNnNIP/.N.NMXO0g0.g9 H@B.HyMHnNPOBBHnN&XOR@?p?HnBg?.?.N^`2 y fr=y =yMp=@`Xp?N6TO09 N^NuNVNnN8-@-AHy^//N?@\ON\ON^NuNVNnN8-@-Ap??<N6>XON8-@-A/./.NPO@@/./.NPO@@09 gl .od .pl\ .oT .9lLp?p?p?NM\OpY?p?p?NM\O.H?p?p?NM\O.H?p?p?NM\Op`B@N^NuNVH/. /.NVPO*/./.NVPO(/./.NVPO, dll` , oW` Spd//NXPO.pd//NҨPO,p/Hy/NPOT/NXPO-@Hy/NPO&Hy:/NPOЃЮЄC/NhXOLN^NuNV$By nf(p*?NATO=@@=@0.@@=@0.@@@@P=@?NRTO//?.NRTO//?.NRTO//N`HHnNBXO=@fp?N6BW`0.S@ @5bH0@ PN09gb @f0.S@L/Hy`$ yf0.S@L/Hy!Hn$N2 Hn$N6XO` .".` n+fHp?NNTO/NhXO-@-A?<NRTO///./.N.`D n<f-|@-|p??<N6>XO y g p?N6TO?9M?9 N(\XO0gBBp33hp??<N6XO`*HyR/./.N 0f .".` .".`/./.NPO-@-A`p/./.ND`/./.N`/./.N`/./.N`/./.N<`/./.Nb`/./.N(`/./.N|`r/./.NP``Hn/./.N `HHyHy@/./.NN`&/./././././.N`/./.NVPO-@/NXO-@ @?( NRTO// n?(NRTO// n0(R@?NRTO//N-@-AHyZHn/./.N͸/A/@XON 0g2HyR/./.N͸/A/@XONV/@XONXO n1f n?(` n2f n0(R@?`z n?( `n/./.Np`/./.Np/A././.N&`p?NRTO-@-A .".-@-AHnBgNRTO//N 0lp?NRTO-@-AHn/./.N 0nHnHnNXPOp?NRTO//p?NRTO//HnNx/A/@XON&`HybHn?<NRTO//N/A/@XON`t?<NRTO//Hyb/./.N/A/@XON.`^BgNRTON^NuNVd/ By ng nfBgHnhN"\O-@ nhf-|}-|H` nhlp?N6TOpr` pr-@-A-@-A*nBgNRTO-@-AHn?.hNRTO//N 0o "--@z-A~*mHyZ//N 0n p?N6TON!xBgNRTO` /.~/.zNPO-@r-AvHnrHnN@POHnr/./.N/A/@XOHnNx p?NRTO//p?NRTO//HnNx/A/@XON&`0.hR@?NRTO//?.hNRTO//HyrHn0.hS@?NRTO//Hyj/./.N/A/@XON./A /@PON͸/A/@XON/A/@XON./A /@PON.-@j-An nf$HyR//N <@` nEg nFfp??<N6>XO09 f <`~ y fb>9 <9MNnp??<N6>XO y f=y =yM`p=@-y |Nnp??<N6>XO09 fp`0. @Egb @FgBgHnN"\O-@ nf-|}-|H`,09 g0.f BB`0. |r `XHXW PN`BgNRTO-@-A*n~nl/ HnN@PO*mRG` nf .".`?.NRTO///./.N.`~?.`n*n nf\-|-|H~nl8Hn/-/N 0l .".` "--@-A*mRG` .".`-|}-|H~nl8Hn/-/N 0o .".` "--@-A*mRG` .".`>.*n0H?NLTO-@-@0SG0g"-M g nP "- !A*m`-n|nl0H @ "(-@-A0S@:0HЮ//./.N 0l,0m(R@H"@0H @ "("#ASE`0R@H @ .". !ARF`j0.HH@0g 0.R@HS@H @ "(`N0.H=@HyjHЮ/0.S@H @/(/NͰ/A/@XON -@-A/.NXO`f|p??<N6>XO09 gN8//NPO>p??<N6>XO y f/9 |?N\O<`: y f"?9M?9 N1?@>NXO`Hy9N6XOp??<N6XO?NRTO` nYf Mg 9MH@H>09M<#M0@H @bZH0@ PN` F8f< F4f( XO09 gT y f09M<>Nn @f2Nn @gp?N6TO`<9Mp??<N6XOz092X/0Hї 3-@Fn nRH@RG`?`???92N$\O(@&@-L f( nfHyHy/.N ` ,g(@` nf$B@,@?N\TO///.N`&B@,@?N\TO//?.?.N( ,", `???92N$\O(@&@-L f( ngPHyHy?.?.N(`H ,g(@` nf0S@?NR`R0S@?NR`f =m@=mR?<LHnNR\O0gpp?NtTO~y6l0H @T(h-L g0,HH@?@lp?HnNR\O0gp?HnNR\O0g0,@#g=Tl=ll ,", -@-Ap?HnNR\O0g.gB@.?/,NR\O0g(l`FRG`&B.B.p?NtTOp?HnNR\O0g\p?HnNR\O0gH?9XNTOBm8p`4=Tl=lp?HnNR\O0f\p?NtTOB@L0N^NuNVXH p=@z=yd`HylNMXO0fB@`BgHyMN\O3X @fHysN~XO`?<LHn?9XNvPO @LgHy`BnBnHnN&XOno0n(HnRn`0.ngHy`nv .0vg .1vg .2vg .3vf=|~`p?HnHn~NԲ Sn~p??.~Hn?<N =@| @g32?.?.?.?.?NҾ HnHnHnHnp?092XA3?N?n?n?n?n NKHPONdp?NtTO092X3l*@?<HnHm:NԲ ;n:;n<;n>;n@NN";nR .1f( .0g .1g .2g .3fp@v`B.v .1f" .1o.H09 Ag Bm,N?<Hn/-TNԲ Byd.vg& .1g .0fBnx`Rnxp?Hn?9XNvPO=@gB0.zg: nfHyN~XOBnz`?.Hn?9XNvPOngHy`B@.=@| n f @f0.@?@ =@BnB.`n?0.@g,B@. @fp'@ N(gRn NB(/./.?.?.Hn?.?.?.N^0f`4p=@zp?Hnt?9XNvPOp?Hnr?9XNvPO.tgB@.t@#gPp?Hn?9XNvPO @g Hy`=npnn=nlnj .".-@b-Af`Dp?Hn?9XNvPO @g Hy`p=npnn=nlB.jBbBf.rg*BCB@?Hn?9XNvPOCgHy`"B./.f/.bB@.r??.lHnB@.j?B@.n??.pN^0fBnz0.zf3`d?9XNTOBm8?-@?->NXOp?NtTO0.zL N^NuNVH0BgHyMNh\O3X @fHyN6XOB@`092X3l*@:9LN*ByLp?Hy,NR\O0gp?Nt>@?->NXO~El0HA=P0HA=P0HA=P0HA=P<.nn0H @T(h-L gB@,nd(l`-L gB@,nb|=TB@,=@B@,=@ ,", -@-AB@,=@=lp?HnNR\O0fp?NtTO`0.g?/,NR\O0g(l`pRF`8RG`?-@?->N?yXTONTOp?NtTOL0N^NuNVp=@=ydBgHyMN\O3X @fHy1N~XOB@`2p?Hn?9XNvPO0gB.HyHHnNPO0gHyM`p?NtTOBydp?Hn?9XNvPO=@g0.gz nfHymN~XOBn`^0.g"?Hn?9XNvPOng Hy`B././.?.?.Hn?.?.?.N^0ff`3d?9XN>2NTOp?NtTO0.`Hy]N~XON^NuNVH8Hnp?BgNPON*ByL092X3l*@ n(h.nn??.?92N$\O&@-K fRG`-K g0nnA-HHyHnNPOHn??Nu8POHnN&XO0@p @0+@f 0+@g/.B@+?/+NO `r0+@ gBgBgBg/+ /+/.NS`J0+@g( nHhB@+?/+NO np!`/+Hy/.N2 ?.HnN#\ORn0.nf<0.ng ?.N$XTO?.?.HnHnUHn?.N"Bn&k`=n0.nnHBnBn>092X/0Hї A3Hnnl(092X/0Hї A3HnRG`0S@=@?.?.HnHnUHn?.N">.nn?.?.N$?nTOHn?.?.??NV0g?.HnN#\O?.HyN#\ORn0.nf<0.ng ?.N$XTO?.?.HnHnUHn?.N"BnRG`T0.R@=@`0.g ?.N$XTO0.f/9ZNXOp?NtTO`0.fHHyNMXO0f4B@L8N^NuNV0.n=@0.g@?./. N#\O no?./.N#\O nf?./.N#\O0.g&Bn0.nl?.HyN#\ORn`N^NuNVp?NATO gp`HyN~XOB@N^NuNV0. g ng&RH?p?NAXO`/9Z/.NPON^NuNV?. /.N#\O0. gp ?p?NAXOp ?p?NAXO`/9Zp ?N*\ON^NuNV0.Sn0g(0. gp ?p?NAXO`/9Zp ?N*\O`N^NuNV0.gp ?p?NAXO`/9Zp ?N*\ON^NuNVBn nH0@H@g nH@@=@ n(H0@H@g n(H0.A@@=@0.N^NuNVNn @gp ?N6TOB@`-y |NR0g 9M"9M-@-Ap ??<N6>XO09 gN8-@-A-|@-| y fNnN8-@-AHy/./.N 0oHn/./.N 0n8Hy/./.N 0lHn/./.N 0lnNn y g& y fNn @fNn y fNn @fV/./9 |NPO0gp?N6TO`2Nn`*?<NdžTO/././././.N'09 N^NuNVHnHnN(0PO-@Hn/NvVPOHnHnN@/n./.N/|/n.N 0oHn/./.N 0o6Hy/./.N 0l0Hn/./.N 0m?<NTO3 `JN(?<BgNȂXONn @f*/./9 |NPO0gp?N6TO`Nn09 N^NuNVH0p?NLTO(@ 9f#`*y -g*@`+L( . ".)@)A .".)@ )ABL0N^NuNV/ 9fp?N6TOB`6*y -g*@` -"- n !A - "- n !A *_N^NuNVH0 9fp?N6TO`6*y(m-L f B(M` ,g*L(@`B/ NXOL0N^NuNVH0092X3l-@ yLf 09 f NI*N*ByLHnN04XO=@=y=y=y=y=n=n=n=n @fD"n0.H @T*h-M g0nl*m`-M g0yn(M>.nn8=y=y0.n=@0.n=@ ngL"n0.H @T*h-M g0nl*m`-M g 0yoRnRnRG`~<.nn0ng RnRnRF`-g*B@-?/-HnNԲ 0-@f 0-@gB@-3 A#3By 09 y gN/8 @f y g0.y 0.yMHyMHy N1^PO0g -"- ` <}"<H+@+A y f"p?HyM y^HhNԲ `f y fp?Hy y^Hh`p?HyM y^HhNԲ `/- /-B@-??-HnB@-?p.??.N^0g|RnRn*m-M f~Rn ngRn`H*L`B09 fNXO`09 fN*ByL09 fNIPL0N^NuNVH8092X3l&@09 fN*?+@?+>NXO yLf09 fNI*09y=@09y=@~ Gl0H @T*h-M g0-@f 0-@gB@-3 #3By 09 y gN/8 @f?9M?9 HyN1.PO0g0.y 0.yMHyMHy N1^PO0g -"- ` <}"<H+@+A p?HyM y^HhNԲ p?Hy y^HhNԲ `>*m`RG`=y=y=y=y=y=y=y=y>.nn0H @T*h-M g0nl*m`-M g0noRG`-M g0nn(m0.U=@B@-n=@/- /-B@-??-/-B@-?p.??.N^0gVB@-??NJXO*L`ByL09 f,BgBg?92N?k@?k>TONXONIPByLL8N^NuNV y3B@3 =@#^09 |r`XHXW PN`/93N&XO=@R@ y3#30.R@y ` y3 #3y  `jR3Ry `\T3Ty `N=|p? y3HhHy NԲ p? y3HhHyMNԲ Z3Zy 0.N^NuNV09y=@09y=@09y=@09y=@09yfp`09yfp`p=@ n0 n1y nf "n0.Q I1@"n0.i I`B0.no"n`"n0.Q n1@0.no"n`"n0.i n1@0.N^NuNV n0. Pmhn0.hm hnp`B@N^NuNV n0o$ n 0o n0y6l n Plp` nBP n BPB@N^NuNVp??92NrXOp??92NXOp??92NXOpr# # # # By N^NuNVHyLHyM/. /.N/A/@XONͰ/A/@XONPO n0HyM/./.N/A/@.M4/9M0N&/A /@PONPO n0N^NuNVHyLHyM/. /.N/A/@XONͰ/A/@XONPO=@HyM/./.N/A/@.M4/9M0N&/A /@PONPO=@HyLHyM/./.N/A/@XONͰ/A/@XONPO=@HyM/.$/. N/A/@.M4/9M0N&/A /@PONPO=@ .".# # . ".$# # Hnp??92NPON^NuNVHyLHyM/. /.N/A/@XONͰ/A/@XONPO=@HyM/./.N/A/@.M4/9M0N&/A /@PONPO=@=n=@Hnp??92NPO .". # # .".# # N^NuNVHnHn/././. /.N2HnHn/.$/. /./.N2=n=n=n=n=n=n=n=n=n=nHnp??92NPON^NuNVHnHn/././. /.N209 g p=@p`p=@p=@ nl0.op??92NXO0.S@ @bH0@ PN`~p=@p=@0.Hn0.Hn=n=n0.n=@=n0.n=@0.n=@=n0.n=@=n=nHnp`0.n=@=n0.n=@=nHnp??92NPO=n0.n=@=n0.n=@Hnp`0.n=@=n0.n=@0.n=@0.n=@=n=n0.n=@=n=n`20.n=@=n0.Hn=@=n0.n=@0.n`0.n=@0.n=@0.n=@0.n=@Hnp??92NPO0.n=@0.n=@0.n=@0.n`0.H=@0.H=@0.n=@=n0.Hn=@=n0.n=@0.n=@=n=nHnp??92NPO nl0.o??92NXON^NuNVNn @gp?N6TO`/9 |N~XONn09 N^NuNVBnNn y gb y gX09 gP @gJ n lB09 g:N8-@-A0.RnHAM8 . !A?<N6fTO`0.fp=@0.N^NuNVN1N8 @fHyMH/9M no/9ML/9MHNPO8`x nf/9MT/9MPNPO=@`Bn nl0.o??92NXO092XC409H @*h092XC409H @(h<9-M g 0Fl*m`:9-L g 0El(l`-M f-L f 09 `N -"- -@-A ,", -@-A///./.N30SG0o-M g0Ff -"- -@-A*m`BB-L g0Ef ,", -@-A(l`BB0.g2/././././9 /9 /9 /9 N2 0g"?.?/./././.N5P` 0.f/./././.N3-M f-L gRFRE` p?N6TOp??92NXOL0N^NuNVN8=@ @ft09 mL @ZnFHyHy?NRTO//N/A/@XON/A/@.!hHy@`HHyHy?9 NRTO//N/A/@XON/A/@.JHyASN&-@-A 9M8"9M<-@-AHy Hn/./.ND/A.N/A/@XONͰ -@-AHy Hn/./.N/A.N/A/@XONͰ -@-A///././9 /9 /9 /9 N2 ` p?N6TO09 N^NuNVN8=@ @g@/9M<`N><`H><`B~@`>><`8 n (1f><`& n (2f><` n (3f><`~ n 0.N^NuNV0.@g ?.Hy`0.@g4?.Hy%HnN2/n/n TOHn/.N2N^NuNVH N8 @f 9M@"9MD-@-A 9MH"9ML-@-A 9MP"9MT-@-A09 gHnHnHnHnp`HnHnHnHnp??92N/|M/yM< /yM8PON/A/@.M4/9M0N&/A /@PONPOnX@< y f*y |Nnf =|p`"Hn/ NJPOBngHmNXO=@Hn/./.N 0nHyLHyM/./.N/A/@XONͰ/A/@XONPO>?.?././.HnNJK/ N&XOH@/ ???92N HnHnN@PO`Fp?N6TO09 gHnHnHnHnp`HnHnHnHnp ??92N09 L N^NuNVH N8 @f 9M@"9MD-@-A 9MH"9ML-@-A 9MP"9MT-@-A09 gHnHnHnHnp`HnHnHnHnp??92N/|L/|M /yM</yM8XON/A/@XONͰ/A/@XONPOY@> y f*y |Nnf =|p`"Hn/ NJPOBngHmNXO=@Hn/./.N 0n6.HÇHyM/./.N/A/@.M4/9M0N&/A /@PONPOC<?.?././.HnNJK/ N&XO20A:/ ???92N HnHnN@PO`6p?N6TO09 gHnHnHnHnp`HnHnHnHnp ??92N09 L N^NuNVN8=@ @oHyM/9M no 9MH"9ML-@-A`-|@-|?9?9?9NW\O-@fB@`?9?9?9NW\O-@f/.NXO` n/(/ n/(/N3 Go?/./.NX -@f/.N.`|0S@Fo0HЮ/0R@H @/(/N͸ -@-AHn0R@HЮ/0HЮ/p?NRTO//N/A/@XONͰ/A/@XON/A/@XOHn0HЮ/0R@H @/(/N͸/A/@XON/A/@XON&-@-A0HЮ/p?NRTO//N -@-AHn0HЮ/0R@H @/(/N͸/A/@XON -@-A0H @ "(-@-A0R@HЮ//./.N 0n80HЮ//./.N͸ -@-AHnHnHn/./.N/A/@XON/A/@XON/A/@XOHnHn/./.N/A/@XON/A/@XO0HЮ/Hn/./.N/A/@XONͰ/A/@XON/A /@PON-@-A///././9 /9 /9 /9 N2 HnHnN@PO`RF`"0S@H @/(/0S@H @/(//9 /9 /9 /9 N2/nN.N.NXOp` p?N6TOLN^NuNVH 0. nR@?NX~TO-@-@fB`092XC40. H @*h-M g0nl*m`-M f/.NXO`>.n nj-M gP0GfJ0-@f0-@f 0-@ g nP -"- !A` nPBB*m` nPBBRG` .L N^NuNV0.H?NLTO-@fBgN6TOB` .N^NuNVH?.NX~TO-@-@fB`?.NX~TO-@-@f/.NXO`?.NX~TO-@-@f/.N.`0.S@?NX~TO-@-@f/.N.N.`0.U@?NX~TO-@-@f&/.N.N.N.`^0.W@?NX~TO-@-@f0/.N.N.N.N.`~0.S@Go~&nP0HЮ/0R@H @/(/N͸/A/@XO0HЮ /0R@H @ /(/N͸/A/@XON.&'ARG`z-n~0.U@Go~&nP0HЮ/0T@H @/(/N͸/A/@XO0HЮ/0R@H @/(/N͸/A/@XON.&'ARG`z-n~0.W@Go~&nP0HЮ/0V@H @/(/N͸/A/@XO0HЮ/0R@H @/(/N͸/A/@XON.&'ARG`z-n/. n/( /(N͸ -@-A/.Hn//.N/A/@XON n !A .". n !A~0.S@Gol0HЮ/0R@H @/(/N͸ -@-A0H&@0S@HЮ/Hn/./.N/A/@XON/A/@XOHn/./.NͰ/A/@XOp?NRTO//N6/A /@PON&&'A0H&@0S@HЮ/0S@HЮ//./.N/A/@XON/A/@XO0S@HЮ/0H @/(/N͸/A/@XON&&'A .".-@-ARG`0.S@H&@0.U@HЮ/Hn/./.N/A/@XON/A/@XO .". //N&&'A0.S@H&@0.U@HЮ/0.U@HЮ//./.N/A/@XON/A/@XO0.Y@HЮ/Hn .". //N/A/@XON/A/@XON&&'ASn0.H&@0.HЮ/0.H @/(/N &'A0.S@> Go0H&@0HЮ/0R@HЮ/0HЮ/0R@H @/(/N͸/A/@XON/A/@XO0H @/(/N&/A /@PON &'ASG`\/.N.N.N.N.NXO .LN^NuNV09 ,L-@/./NPO n1n n1n pe?/.Nu\O=@HAb=P n1n0.HAb09 ,Ry ,0N^NuNVpe?/.Nu\O=@HAb=P ng6/.0.L/NPO0g0.A``0.`pN^NuNVp3fBy8/.N&XO=@0.oSn0.0@  g0.f n  fB@``RnBn0.nl0@b2@Rn`0.Rn0@bp 0nbB3bBydp hpN^NuNV0.y80.Sn0g yjRj"n R `N^NuNV yjRj0.HHRy8N^NuNVB@9h @ f09bydoNbZ`B@9hH@B@H@ @H@fB@9h @$fNb`8B@9hH@B@H@ @fB@9h @.fNe`NgN^NuNV0ydbg09dRyd0@bh`p h09bR@3dN^NuNVBnBn=|B@9h @$f$NbZ=|B@9hH@B@H@ @H@fp}?NaTO`B@9hH@B@H@ @H@g8B@9h?NTOh0.Rn0@B@9h@NbZ`B@9h @$f NbZ=|B@9hH@B@H@ @g 0.Rn0@B@9h@NbZ`B@9h @$fp=@0.Rn0@B@9h@NbZ`B@9hH@B@H@ @H@ fB@9h @_f nlB@9h?NTOh0.Rn0@B@9h@NbZB@9h @$fNbZ ng&B@9hH@B@H@ @g =|`Pp=@0.Rn0@p$@ NB(B@9hH@B@H@ @H@ fB@9h @_fNbZ`HnN`FXO=@ @gDA\ Pf0.A^?`0.A\?NaTO`0.g NB(HnHnHnNw @g6?.NaTOHnp?Naf\OHnp?Naf\O0.g>`F?<NaTOBn0.nn yjRj"NRy8Rn`N^NuNVp=@p=@B@9h @.f:Bnp0@0ydb .fNbZ?<NaTONbZ`B@9h@B@9h @0fBnB@9h @0fNbZ`NbZB@9hH@B@H@ @g0.Rn0@B@9h@`B@9h @.fXBnNbZ0.Rn0@p.@B@9hH@B@H@ @g 0.Rn0@B@9h@NbZ`B@9h @egB@9h @EfrBn0.Rn0@pE@NbZB@9h @-gB@9h @+f0.Rn0@B@9h@NbZB@9hH@B@H@ @f NB(HnNXO-@-A?<NaTOHnp?Naf\ON^NuNVB@9h@B.B@9h |Tr`XHXW PN` NbZ`NbZp`NbZp~`NbZ=|`NbZB@9h @>fNbZ=|`B@9h @fNbZ=|`ZB@9h @=g=|`BNbZB@9h @=gh=|`"NbZB@9h @}fNbZNa` =ydNbZB@9h @"g09bydn09dnS@=@?<NaTO0.Hb/?.Naf\OBgNaTONbZ`NbZ=|`zNbZ=|`lNbZ=|`^NbZ=|`PNbZ=|`BNbZ=|`4NbZ=|`&NbZ=|`NbZhByfp|=@?.NaTON^NuNV#n3dBn nel0.HAbp0Rn`By ,?<p?Hy,N_?|\Op?Hy0N_?|\Op?Hy4N_?|\Op?Hy8N_?|\Op?Hy?HyN_?|\Op??HyN_?|\Op@?HyN_?|\OpA?HyN_?|\OpB?HyN_?|\OpC?HyN_?|\OpD?HyN_?|\OpE?HyN_?|\OpF?HyN_?|\OpG?Hy N_?|\OpH?HyN_?|\OpI?HyN_?|\OpI?Hy"N_?|\OpK?Hy+N_?|\OpL?Hy0N_?|\OpM?Hy5N_?|\OpN?Hy;N_?|\OpO?HyBN_?|\OpP?HyIN_?|\OpQ?HyMN_?|\OpR?HyTN_?|\OpS?HyYN_?|\OpT?Hy]N_?|\OpU?HybN_?|\OpV?HyfN_?|\OpW?HypN_?|\OpX?HytN_?|\OpY?Hy~N_PO=y , ndlp??<HyN_PORn`p??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<Hy#N_POp??<Hy(N_POp??<Hy-N_POp??<Hy2N_POp??<Hy9N_POp??<Hy?N_POp??<HyDN_POp??<HyLN_POp??<HyQN_POp??<HyYN_POp??<HycN_POp??<HymN_POp??<HysN_POp??<Hy{N_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<HyN_POp??<Hy N_POp??<HyN_POp??<HyN_POp??<Hy&N_PON^NuNV/.N`XO0fB@`F#nj09bydo09fgNa`09fg0980@oB09fN^NuNV/ BnBnBBp-@-@-@p??<N6>XO y g y gp` y f -y |`:?9M?9 ?92N%,\O*@Bg/ ?9M?92N%n -@ .gn/NXOp??<N6XO y gp`:p33h=y =yMp??<N6XO y f=y =yM09 gp??<N6XO y g y f y f=y =yMp??<N6XO y g y f y fl=y =yMp??<N6XO=n0.ްnnR?.??92N$\O*@-M gB@-nd*m`-M gB@-neB@-nb0-@g/-/.N|PO0g .f"0S@?NRTO//?.?.N(`0S@?NRTO///.N .f(B@-@?N\TO//?.?.N(`"B@-@?N\TO///.N <@`6*m`Rn`-y |`f-y |`p ?N6TOpr*_N^NuNVH8*n(n HH?NTOCf0&MHH?NTOCfg HH`fp`*KfB@L8N^NuNVH =y=y=y=y0.ng0nR@=@ yLf33~nl=G0R@<nlzyLl0HA?0.n??92N%,\O-@0HA?0n??92N%,\O-@//.NPO8gr09 gj09,g 0l=F` 0o`RE`jRF`Z?.?.0.n?0n?N}PORG` ByL09 f?92NTO`09 fL N^NuNV0.n g*=n 0.nn??. ??.N~PORn`N^NuNV?. ?.?92N%,\O-@?.?. ?92N%,\O-@ .fR .g: @/( /(B@(??(/(B@(??. ?.N^?n?n NJ` .fF .g @/( /(B@(??(/(B@(??.?. N^?n ?n`"nCA1!r!!Q nB( nB n/( /(B@(??(/(B@(??. ?.N^/n/nB@.??./.B@.??.?. N^ .g /NXON^NuNVH0*n(n -M f-L fvB@`-L f -M f`0-@g>0,@g lHh mHhNPO`j0,@#f^Hy.N6XO`P0-@#g<0,@gp`80,@#gHl/- /-N 0n`HyP`Hyr`pL0N^NuNV09 |rA`XHXW PN`N=@`NR`09 fBn`N&`N8`p=@=y nBg n=fNn @f-y |NnNA83L nBf6Hn/.NJPO nHhNXO=@??.NdXO`4p3 n dg Df p3,`By,N|l09 f`NA83L0.@? @bH0@`N(`N,V`N0`Nn y g y fP/9 |HyMNPON*`Nn y g y f,/9 |HyMNPOND`TNn @f^?9M?9 NĴ`N`& y g09 gNn`p`N6`N`N|`NƠ`N`N`N$`N&`N@`Nx`N`By `Nn @gp ?N6TO`NK`^N>x`^N:`TN?`JNG,`@NG`6N=,`,N=`"NH`N8r`NA`NE`N<`N9<`NOx`NQ8`NJ`NM*`Nt`NR`N`NA8 @gBnp?N6TO`hp=@?9?9?9?9N~PO`>N`LN`BNB`8N$`.Nf`$p=@Nnp?p?p?NM\OpE?p?p?NM\O`p=@Nnp?p?p?NM\Ope`p=@Nnp?p?p?NM\Opf`p=@Nnp?p?p?NM\Opq`p=@Nnp?p?p?NM\Opp`nN`hN`^HyNMXO0f`. y fNKNnp`~HyNMXO0f0.f09 g p?N6TOp?p?NMXO g(p??NMXO#M fBnp?N6TO0.`Bnp ?N6TOB@N^NuNVNn=@ y g y f0.gNn`0.N^NuNVBn=y =yM y3B@( @f=y NnNnN8=@g0.f"/9M/9M?.?.N( ` 9 g @g@ 'g "g \g ^f/9 HnNPO`/9 HnNPO9 H@BgHnN&XOR@?p?HnBg?.?.N^?n?n NXO` N8=@0.N^NuNV-y | y3B@( @f4NnNnN8=@g&/9M/9M/.N ` N8=@0.N^NuNVNn @gp ?N6TOB@`-y |p??<N6XO09 gp=@ y gL09 y l>09 g6 y f0.RnH @!y |Nn @fNn`Nn @fr?9 NLTO-@09 y R@?/93/.NԲ #3=y Nn09 y l y frp=@0.°nlbH @/(/9 |NPO0f>/9 |N&XO y3|/9 |N&XO y30.HH`Rn`=y Nn @g y g 09 fNNn/.0.ƐnR@?0.S@?/.N pN^NuNVNnN8=@gHy^/9M/9MN 0fN y f*NnNn=@ y f0g Nn @f y gb09 gZNn`Nn @g y g09 f y g09 fp`"NnNn=@ y f0f0.N^NuNVN8 @fP/9M0.HA/pI?NA\O0.HAB0.HABL0N^NuNVH8*nY~ Gl\0HA(P fRG`e0HC Q̱e&T gXdb(K`B+T(?NVTOp`B@L8N^NuNVH8 .@*d(9`(~ Gl0HA gRG`p/pH?NA\O,@,lmV(0HG/pH?NA\O*@&0HA Ѝ(@)|I)L Q(BB- `BL8N^NuNVH8*n.. (U L, Pl Ќ&@(&'l*`* L8N^NuNVH8..(<| Fl20HA*P fRF`(U g*ml(&MK` L8N^NuNVH .. n~` Z@./NXO*@ f/NXO*@ fB`// NPPO*@XL N^NuNVp0./NXON^NuNVH0p0. /p0./NPO./NXO*@ g(M S gB` L0N^NuNVH0z~ Gl(0HA*P fRG`(U g,چK`p/pH?NA\O, l ` ЅL0N^NuNVH8*n~ GlN0HA(P &@ fRG`޻e0HC Q̱e(S gܹf& `G`BL8N^NuNVH8*n-L fp0. /NXO`0. f/ NXO `I .p0. Z@,n.  m Ќ&@(&HkNXO`` Ќ&@ K* o.Їm(/ NXO g Ѕ(?. / N\O`& Y/NXO(@ g/ NXO*L` L8N^NuNV/</. /.N J@m/</. /.N J@op3 <"<`>/. /.N(PO///< /. n "(-@-A .". -@-ASG|GlD0HЮ//./.N //HnNx HnHnNXPORF`0HЮ//./.N //HnNx .".LN^NuNVH~|/</. /.N J@f4/</./.N J@np3 <"<`Hn/./.Nr -@-A/</. /.N J@lJ/</./.N J@f .". -@-A /./.NPO@g~/</./.N J@l .". -@-A|/</./.N J@f/</./.N J@oL/<Hn/. /.NPO//N //N //N^PO-@-A`R-|@-|/./.N0PO:JEg,0@gHnHnNXPOHnHnNXPOM`JFg&Hnp?NRTO//N -@-AJGg .". -@-A .".LN^NuGATxKNV/<//. /.N J@o$|Hn/</<@N͸ -@-A /<F/. /.N J@o$~Hn/</#Lf B# . Fp ?NTO32LZ09LZN^NuNVp?NTOpN^NuNV32d3 2f3 2h32j32l32n32p32r32t32v32x32z3 2|3"2~#$L\3(23*2p?NTO n,02 n002 n402 n802 n<02 n@02092N^NuNV32d# L\p4?NTON^NuNV#L\p6?NTO n 02 n02 n02 n02092N^NuNV32d3 2f3 2h32j32l32n32p32r32tp3?NTON^NuNV#L\3 2dp2?NTON^NuNV#L\# L`pZ?NTO n02092N^NuNV32d3 2f3 2h32j32l32n32p32rpI?NTON^NuNVpM?NTO n02 n 02 n02 n02092N^NuNV32d# L\pN?NTON^NuNV32d3 2f3 2h32jpF?NTO n02 n02092N^NuNV32d3 2f3 2h32j32l32n32p32rpJ?NTON^NuNV#L\3 2dp?NTON^NuNV#L\3 2d32fp ?NTON^NuNV#L\3 2d32fp!?NTON^NuNV#L\3 2d32f32h32j32l32np*?NTON^NuNVH0*n(n 0m?0l?NXO:0-m?0,l?NXO8??NXO>?-?,NXO<89F0G9@0F9@GoFop`B@L0N^NuNVpo?NTON^NuNV32d3 2fpp?NTO n Lf092N^NuNV#L\pn?NTON^NuNV32d3 2f3 2h32j32l32npl?NTO n02 n02 n02 n 02092N^NuNV32dpf?NTON^NuNV32d3 2f3 2h32j32lpd?NTON^NuNV32dpg?NTON^NuNV32d3 2fph?NTO n 02 n02 n02 n02092N^NuNV32d3 2f3 2h32j32lpe?NTON^NuNV32d3 2f3 2h32j32l32npi?NTON^NuNV32dpk?NTON^NuNV0.n o0`0. N^NuNV0.n l0`0. N^Nu"/0<NBNuNV#  Rp 3Llp3LnByLrp3Lv3LxN# D RN^NuNVpe3LlByLnByLr3LxNN^Nu#Ll J"< J <sNBNuNVH *n3  D3  F~0RGHA B@0fp3Llp3LnSG03Lr3LxNL N^NuNV# N# V .Z# Zpd3LlByLnp 3Lr n 3LxN n 0Lx#  N#  V# J Z# D RN^NuNV#  Rp3Ll3 LnByLr3LxN# D RN^NuNV#  N# D R#  V . Z# Z3  pf3LlByLnp3Lr3LxN#  V# J ZN^NuNV#  Vp%3LlByLnByLr3LxN#  VN^NuNV#  V .  # Zp&3LlByLnByLr3LxN#  V# J ZN^NuNV3  /.Np.NzXO#  Rpm3Llp3Lnp3Lr3LxN# D RN^NuNV#  Rpr3Llp3LnByLr3LxN# D RN^NuNV#  R3  3Llp3Lnp3Lr3LxN# D RN^NuNV3  p3LlByLnp3Lr3LxN09 N^NuNV3  p3LlByLnp3Lr3LxN09 N^NuNV3  p3LlByLnp3Lr3LxN09 N^NuNV3  p3LlByLnp3Lr3LxN09 N^NuNV3  p3LlByLnp3Lr3LxN09 N^NuNV3  DBy Fp3Llp3LnByLr3LxN09 JN^NuNV3  p3LlByLnp3Lr3LxN09 N^NuNV3  pj3LlByLnp3Lr3LxN09 N^NuNVBy D3  Fp 3Llp3LnByLr3LxN n 0 J n0 L n0 N n0 PN^NuNV3  p 3LlByLnp3Lr3LxN09 N^NuNV3  p 3LlByLnp3Lr3LxN09 N^Nu#LzNu#L~NuNVH *nz~H< @ g F fR` F-fz` F+fRH< @0m F9n2A00 A>`JEf0D@>0L N^NuNVH *| ^..,.   QmQRBmp/ R/NҨPO;@ * #o@/<7Ipd//NPO !%Y/NXPO*p//NXPO" ЅR* (/<pd//NPO//NXPO;@ pd//<0- H/NPO/NXPO/<Q/<'/NPO/NXPO;@/<'/<Q0-H/NPO/NXPO& ;@ mm"<`r@ ;@ m op `pm mo0<l`0<km mo?- N TOJ@gRmp.<.0lp0`gH`p00SF0f0g20.gg(p.0SG0o0.ggRFlp0`gH` L0N^NuNVH Hy/./. N 0l np0 . ". -@ -A` nBPHy/./. N 0f nBP <N`Hn/./. N HnHySn0.?NRTO//N //Nr /./.NPO<?NfTO//Hn N͈ Hy/./. N 0mRFHyHn NPPO n0 neg ngf Fn 0.D@Fo0.`0.FR@=@0.nB0.f,Hy/./. N 0o nRP <P` nBP <R` nop=@*n0nctHy/./. N 0gX/./. NPO>0@0Hy?NRTO///./. N&//N -@ -A`BHy/./. N 0nS Mg 0fB` .`& MSgRH @9oB` nRP <TL N^NuNVHnHyxNPON^NuNVHn?</.ND Hn HnNPOHnBg nN\ON^NuNVHn /.NPON^NuNVH0-n n(PXH> @%g0gP/.? n hN\O`p =@p=@p=@H> G-fp=@H>`Bn G0f p0=@H> G*f& nT=Plp=@0.D@=@H>`*Bn G0m G9n0. G@0=@H>` G.fJH> G*f nT=PH>`*Bn G0m G9n0. G@0=@H>` Glf&H> Gdg Gog Gug Gxf0@> `-@*@p=@0 |2<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ NPO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ Nr `p ? n// Nr *@X`p`p`/ ?./.?N *@P`fBn n-Pf-|VX .-@*@g0.m noS`(Bn nT0` n//.NPO`n ./0.Hї =@lBn0.fL0.g0 n0f( n -f/. nRH? n hN\O0.Sn0g /.?.` nd /. nRH? n hN\O`0.g0.Sn0g/.?. n hN\O`L0N^NuNVH >. *NB%0<g"0H@H@B@H@ @<>`?Bg _<g nR` .L N^NuNVH0*n>.IB$p0//. N҈PO-@g$p0//. NPOA<-n ` n <g` L0N^NuNVH >. *nSGo"/. n hNXO< @g 0 @ fB Ff fB` .L N^NuNVH0*n(MHy^ ylNXO> @g G g`B GffB` L0N^NuNV/ *n f&+|+|Bm -;n0.`> ~f +|,` \f +|r` f +|`p*_N^NuNV/ *n+|+|Bm -0-*_N^NuNV/ *n+|~+| ;@ o -;@ -0-*_N^NuNV/ *n+|\+|jBm -0-*_N^NuNV/ *n+|/N&XOD@;@ 0-*_N^NuNVH >.*n / mNXO/ ? mN\OL N^NuNVH0*n(n g/ H? lN\OR`L0N^NuNV/ *n / ?. mN\O*_N^NuNV/ Kd. g U(fp?//. /.N*`X`B*_N^NuNV/.NXOp?/./. /.NN^NuNVH *n-fp`-H?NTO -g-f /-NXOB-0L N^NuNVH *nBm -ff >o?/--H?NPOGf$0m mAf -*+@`+UB@` 09H fBy`-pL N^NuNVH *n>.|BnBnp=@ n R pr@H @rf|pw@ n g,H @bf"BnR n gH @bf$Bn0l0.f?/.N\O>0l@0.f0.g4?</.Nh\O>m Fg?NTO?/.N\O>0m0.gp?B?NPO-M .fp?NLTO*@ f ?NTO`|p@0.g- p+@*+@Bm +|+|G `DH @wfRn`H @af&Rn`H @+g.HHAf|`BL N^NuNV/ *n .*+@+|B-0. D@;@ m l;| +|þ`+|Ö *_N^NuNV/ *n Sm lBm p` UR0.*_N^NuNV/ *n UR0.*_N^NuNV/ *nRm oBm p` URB@*_N^NuNV/ *n -f,-f?<NLTO+@f+|\+|j`j-f2-H?NTO0gxf+|~+| -`&+|~+|-H?NĪTOHЭ*+@Bm *_N^NuNV/p?B?.NPO. fB@`0H@.N^NuNV/ *n/ NXO/ mNXO*_N^NuNVH >.*n / NXO/ ? mN\OL N^NuNV/ KY Me g/NXO`*_N^NuNVN6?.NTON^NuNVH *nRm o/ NXO0f fHyxNXO -?/--H?NvPOD@;@ @fZ09H fBy`-Bm `B0- Rm m+H URB@>-g G gP Gg 0`0- f-pL N^NuNV/ *n fHyxNXOBm p?Hn-H?NvPO @g,J@gH .f-f8 . f-fB@.`(09H fBy`-`-p*_N^NuNVH >.*n G f -g/ p ?N\O @fp`0Sm l"/ N~XO0f -S@;@ UR0L N^NuNVH >.*n G G f-g/ p ?Nj\O @gZBm -fN/ N~XO0f@p?Hn-H?NPO @f0` 09H fBy`-pL N^NuNVH >.*n G f -g/ p ?N\O @fp`?NAXO/NXO`B@N^NuNV/Bg/.pB@9 pH p*@SnmSGl^pQ pB9 qHy pp ?NA\O>mp ?p?p?NM\Op pB@9 q>B@9 pH p*@0Gp H< Ff~` n R RE F ft  p p qB0`0/. 0.H/?.p??NA >B0H/NXOL N^NuNV/A#/9NJXO0gBp 3p`,/. 0.H/?.p@?NA .B/NXO.N^NuNVH >.0V@ @bH0@L PN`*pP`&pA`"pC`0m*ySGmfp`gHL N^NuNVH >.0m*ySGmfp` g0. L N^NuNVH >.0V@ @bHH0@X PN*yHGg fp`&R` ?NhTO`~C`~A`~P`pL N^NuNV .l .D3p` .N^Nu |` |ն` |֦` |H$H"o oN""LNu |` |ն` |֦` |H$H"oAN""LNu |` |ն` |֦` |H$HC o NLNu H@"HA4B|?4<68@g AgDgDgC|@e|b?H@HA()|zx)K)>HC(K(4ނF)JH@ނE(JHAނEHG4BHBBEHCCHCCD$HBHABHBBD4BHBBDBC$HBHABHBBC6AHAAkOVUT|e$JCk(2HA2|0H@0H@C_H@NuTrpNur Nu |` |ն` |֦` |H$HCA NLNur0/H`rp0/fNur /fNuj2<D|SAdHAQQQQQQQQQHAIH@AH@BANur /fNu o /"<€@HAI|0"/NuA ` o /j"j$b f$ /bfB@Nunf /bgpJ@NupJ@Nu /fprNuH@2<AAf rp∀NuHo oڰ|lHFAoAH@"/NuNV/ *nHn/. /.N n8m .". *+A <"<`00.nPHyd/. /.N 0l**+|Hyl/. /.NͰ `BB`Hyd/. /.N 0m?./ /. /.N`?./ .". //N-@-A Hyd/. /.N 0g@Hyl "- //N͸ *+AHnHyHy@N͸`2 "- *+A .". *_N^NuH<"o4/ SB6(<zQ /"/$Ą"$ą"fJg"Q6<`SCgKHCBCL.0l*0D@?NfTO//HyHy@N.`j-|@-| G mG HyHnNXPO GmGHyHnNXPO0Ht/HnNXPO ."..N^NuA`Z|dB@H@DAJjDNu0<NuA`8k2|opNuA`&k | opNuA`| epNupNur2/j| /<␒|oJNpNu o "o2/ gm H` QNu!QNuNVH >. <.*n0SF0g` .L N^NuNV0.@f, n.m 0.HdH@J@f0.HH@J@fp`B@N^Nu O$X"XHB@Nu o0/L.NuNV/?.pE?NAXO>l0H/NXO`"?.N*TO=@m?.?N̂XO0.N^Nu g @` f ")Nu(f"(Nu"(*)tvRSb fdDECH@HD,<>@D@D||H@HDNO|gVCgFDfRFgFG|8exz`Q~ۇه҅фJCjJf0Jf,prNug&~ӇчRf <r`SggNHFHBNu/246C|?IJ8<DDDg$Dg,B|o"|n &g((zQ?/~>BCHC|p0")4)zJPQ||@HBBBz?<,O`?,<HFh|(HDCHC҃Eg`B@HC(8"8` SF҃@fe򒄑E8.ƔE8.HBDHB8HDEj SFԮ6ӃBCHCHA0HB2BBSnf~2HA2 H@\<`SFo.d|btNQH@_H@`p"|_H@`Tpr,_Nu" BJZR " v ~ v ~   " * l r |   * < N ` KfA@vf4 8'ŬGG+ +ZH+zK+HK4+M+dM6+P+zR+0S+a+&b,Nr +Z+7777777777777777777:;L;;;:t:V99P>0>>>z=?6@h?T@?6@A?|??@@6B4ֿzBOQQTQTQTP"PQTPpPpPpPpPpPR\@\N\^\\\.bbbb$`ccccccccaaaXc(a`ccBac`cbacdc\cbbclcbbVbBbLb`cccccccccccccaaab.b8cc ctc|d*d<dFdPdZdddndxdddfJfVfbfnxzzzzzzzzzzzzzzzzzzxyy2z0z@zHzPzXzXy~~ ~~~$~,~4~<L**B f Z 0 4!& .p.1z12 <?GHH8KK4MM6PP2xJyXz^{bH*K:MBP2HHTxxx&xhhhhhh̼Nrrr&6fvVF@:rrrrrrrrrrrrrrrrrrrrrrrrrrrrr6hZf4 00 000  . 6 6  x/ x0 x @AIڢ!hAAB@//v/////v////////56Z67 7^7AIڢ!hD4$J<%J@,J6DJFFJ*SJ0TJ|dJFfJ*sJ0tJ|$J~"i*#h(i)i*i+i,i-i/i:h;j<h=hN>h[h&]h2^h>{i"jtj 2F <FPZdnxDNXblv2(@ ATxKB ADZOUXcd efgoRr&suBxVD0123456789ABCDEFPTX @@B CEzG@HPJt$LM Onk(QRC@ThԥV*W Yc_1uŭ+p[ɿ*.WKSCannot open input fileWKS read errorWKS read error Lotus File Matrix inversion error:| Row and column size| not equalNOT enough memory for|Matrix inversionSize error for Matrix subtractionSize error for Matrix additionInsufficient memory for|Matrix operationMatrix multiplication size errorNOT enough memory for|Matrix transpose']' expected']' expectedMATRIX syntax errorMATRIX range expectedMATRIX range errorInsufficient memory for|Matrix operationMatrix range error%%-%ds%s%%%ds%s %s 4%c%d%c%c%d!=Q]jNot enough memory'(' expectedError in rangecomma expectedCell reference expected')' expectedParameter expectedNot enough dataData must be greater than 0Identifier expectedTO expectedSyntax errorBASIC statement expectedCalculation errorRuntime stack errorString expectedFOR..NEXT|Identifier mismatchSomething wrongStopped by user%s|at cell %sStack problem|%s does not|match with %s|at cell %sLOOP FOR GOSUB NEXT RETURN ENDLOOP Division by zeroIllegal MATRIX function calledSyntax errorNumber of parameters mismatched[0][Cannot load file %s |Exiting ...] [OK]A:    "$*-/57;CDMW\chpuy}  !"#$%&0:@HOYbiou|DLU[aejov#$][PARAM:<><=<>>=LIT(),[]/*-+;... ConstId=TABLE^ANDMESSAGEREDIRECTBAR_CHARTCELLDEFINEEXITENDLOOPELSEENDFORFROMPIE_CHARTGOTOIFGOSUBLOOPLOADMODNOTNEXTORPRINTSCREENRESTORERETURNPLOTRUNSAVEDATASTEPTHENTOWINDOWSCALETURNTURN_TOWAITLINELINE_TOMOUSE_POSATTRIBUTECLEARFORWARDLABELXEXITGRAPHVIEWPORTLABELYMARKXMARKYSPLINEPTEXTSWAPPRINT_BLOCKOPENCLOSEINPUTGET_FILECLSCURSORONCURSOROFFGOTOXYVIDEONORMVIDEOHIGHUNGETparam%d %s %s %f%%%d.%df%%%% %%%d.%df %%%d.%de %%.%df%%.%df%%-%d.1e%%-%df%%-%d.1eJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember%2d%2d%2dN ***> Initialization Error. <*** Press any key to continue. CALC.RSC UNTITLE %d \*.SHT[0][Do you want to erase|the current work sheet][Yes|No]\*.PRT\*.PRT%10ld[2][Do you really want|to COPY?][Yes|No][2][Do you really want|to MOVE?][Yes|No]%dDDMMYYSHEET.CFGw%s %d%c%d%c%c%d[0][%s][ Yes | No ]PIIdentifier %s undefined[0][%s][OK]%dPQX_fReady RecalcInput Busy %4d%4d%4d%s%d: (%%%d)(F%d)(S%d)($%d)(,%d)(D1)(D2)(D3)( )(TX)Too many blocks selectedString subrange errorString subrange errorSubstring range errorSubstring range errorSubstring range errorString subrange errorWarning: redefined user function as variableWarning| redefined variable as functionDD-MMM-YYDD-MMMMMM-YYSHEET.CFGrProblem in reading SHEET.CFG\*.SHTGoto cell: Cell reference out of rangecon:wcon:wFile name expectedrFile name expectedPRN:[2][Printer is not ready ][Quit|Continue|Try Again]wPress return to continue ... Constant number expectedChannel number out of boundChannel number error %s%s%s%s %s %s [0][No more windows available][OK][0][No window records found available.][OK][0][Not enough memory for window!|Cannot continue.][OK][0][AES error opening a window.|Cannot continue.][OK][0][Current work sheet|has been modified.|Do you want to save|it before you quit?][Yes|No]\*.SHT UNTITLE [1][COLUMN insertion:][Before|After|Cancel][1][ROW insertion:][Before|After|Cancel][1][Please select row/Column to|be inserted by choosing|column/row title bar][OK][1][Please select Row/Column to|be deleted by choosing|column/row title bar][OK][2][Do you really want|to ERASE cells][Yes|No]Out of memory%s # expectedConstant number expectedChannel number out of boundwCannot open output filerCannot open input file# expectedConstant number expectedChannel number out of boundCannot close an unopened fileConstant number expectedChannel number out of boundChannel number errorEnd of fileFunction %s|Domain errorFunction %s|Range errorString expectedDisk fullCannot open output file\*.SHTCannot open input fileHeader read errorCheck sum errorCells reading errorTokens reading errorTokens reading errorTokens reading errorTokens reading errorCannot open output filePARTCannot open input filePARTWrong file typeWrong file typeCells reading errorTokens reading errorYou must setup the print range|within the print dialog first\*.PRNwCannot open output file : %s Printer is not ready%%.%df%%.%deSINCOSTANCOTSECCSCLNLOGASINACOSATANEXPFACTRAD_DEGDEG_RADSUMAVERAGECOUNTMAXMINMEDIANSTDABSINTFRACSQRSQRTDATETODAYGRATEGBASEGFUTUREINVEST_FVINVEST_PVINVEST_INTERESTINVEST_TERMLOAN_PAYLOAN_AMOUNTLOAN_TERMWDRAW_SAVEWDRAW_AMOUNTWDRAW_TERMRANDDEPOSIT_FVDEPOSIT_AMOUNTDEPOSIT_TERMVARSQR_SUMDAYMONTHYEARTRUEFALSEIFFISNAISERRMATRIXINVERSETRANSPOSEISEMPTYSORTALERTCOPYMOVEERASEREFORMATFIRST_ROWFIRST_COLLAST_ROWLAST_COLCOL_OPROW_OPSWAP_COLSWAP_ROWMID$CHR$LEFT$RIGHT$SPACE$POSSEARCHSTR$VALBUF$LENFILENAME$ASCCOL_WIDTHINKEY$$$$ANDMODORNOTDEFINEIFTHENELSEFORTOSTEPNEXTGOTOGOSUBRETURNSAVELOADPRINTMESSAGELOOPEXITENDLOOPCELLRUNENDREDIRECTFROMSCREENRESTOREWAITPLOTDATAWINDOWSCALETURNTURN_TOLINELINE_TOMOUSE_POSATTRIBUTECLEARFORWARDLABELXEXITGRAPHVIEWPORTLABELYMARKXMARKYSPLINEPTEXTBAR_CHARTPIE_CHARTSWAPPRINT_BLOCKOPENCLOSEINPUTGET_FILECLSCURSORONCURSOROFFGOTOXYVIDEONORMVIDEOHIGHUNGETBASIC statements cannot be sortedBASIC statements cannot be sortedBASIC statements cannot be sorted\*.SHT\*.SHTE7p;!F=q1*F,fwED!]`ID@F͠,B5'>"E7p;!FV-s4_Fe$ E5DӉ+>.C5&@@ k+ȂN:!bI3 EL$|![*  Mi@M.=@Mj7pAh/ o,5̬ &ݤ=BW!g} ?;CSG ?@.B:@zS$E'M*‰$P=ǟcF0T5~<@E=sMBԘ`=.BpF|:e*Di/(zA@@@@@@@@@@PPPPP@@@@@@@@@@@@@@@@@@    @e+%02ue-%02u0101{NULL}!!#^xCCAP???????????????????????? 0J(     "     & 2"  ( ( 6    ,  @ ( (&  (     ,  ^               :&$ f   4  $     4,  b >* 0  R2R2,d$\$VB4L, R  $ "      $ 2<60v(vB<   $ & 4TZ."$P. ($$ "<8                      >                    \ D                 "       .   (     "    $               B ,  $(  (.  $   4    :    8  P    6*.,0 ,X     $  T$     8   2 :          &   <>  4  0 < 4N   rl: 8`2j,>4@j   @"H $(l    "  $    &"F       l v 8: Dt <0   "    B& (  r @$L> | " ": &$   8^ 8 $      82~        &"  n B $(B $(J  H    .   8 8    4 &           : "(6 00:     ""      "    ,  &      @   ( "&$&  F 0$ ,,     $ .   *     $&0& 6 >      & B  H&$  (. R0x*      &        <.   $   "(      (       &     J    $ RD^ 2 FN        P*  * ."*$ 8   *     "    "        $           . d&     "0                              R                     4            L J   $ "< &( & 8N00*    &   4$ (8 N & "" 8 PfH:`P,      t        .  D    l         .  H0F\     ( d    ,      &                      8 H    20  ."&  H&      4* "                *     $  $  0 d (("(D\H~&* 4 2     h   *.,2"> &&&  0(H BH ( (  .B "  "V 0 "$<< :    (    ,  $$$20H.  6(* $ 24 $ , 6 &4 ( 0 & ,8          J D   ^^N&   ,    8>     J  .               0       &"N( 0   "   &  ,      " "                  (00(*  $"  *6$"&                      0  0 0   0  0&< 0&< * 84 4" 6B$& (: $ :    B0P0P0, Z8 @0R"H6Df"  $  N         "   :  &"    "          6       ^" ,: $ > :DBf6j8         0    " .         $  "       "      0   F...:Z $ >n NR  * 0& X . " h$    &",& * X*@     r$  >                 ,>          R       4$*  `>DJ *4    L(H&vFP( LD|@  &>& $"(F0",p$  .6*"  "$j:BX<$<H"846  & 6&  &(2> 0  XT6& &   ` >x^BH14 UNTITLE 1 Wl7  }IBpJBpAI~}I~}LIBJ JI14 VT52 Test 0   }d'Homed'Hdd'CurUpd'Ad}}This is a testd'CurDnd'BdA}d'CurFwdd'Cd d'CurBackd'Ddd'Clsd'Ed'CurVisd'e d'CurInvisd'f11N066_80___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________5_5_0_79_____________C Withdraw example n   "y5  DDeposit:AAmount withdrew:!"eCompound interest rate(annual):"eTotal number of withdrawals:NNumber of withdrawals/year:A DD >zG>zG CC B@B@ BF}$X( 4"--------------------------------------------------  DDeposit:J"eHow much have you to put into your saving account for a monthly withdraw0"eof $150 with annual interest 8.5% for 3 years. +PPress for next exampleJIIf you have $12,500 to save on your bank and you want to know the yearlyC"ewithdrawal that will sustain your investment for 12 years at 11%.wwdraw_amount: IInvestment:A GCPGCPIInterest rate >GzG>GzGTTotal number of withdrawals B@B@NNumber of withdrawals/year @@6"----------------------------------------------------"eAmount withdrawn:BE $)+PPress for next example wwdraw_term: IInvestment: "eAmount withdrawn each term:!IInterest rate:""eNumber of withdrawals/year:#0----------------------------------------------$"eTotal number of withdrawals:A G@G@ A DD! >Q녕>Q" AA$C * !"EM\You account has $10,000 left. You decide to withdraw $400 bimonthly"M\How long does this $10,000 last?' M\Press for formula+ Formula:,BM\WDRAW_SAVE = wdraw_amount * terms_per_year * (1- 1/((1+interest/-> terms_per_year)^total_num_withdrawal))/interest