óísr@1AÛxæ� ú> ÍY@{!€Û>2q@Ía@Ûxæœ (ÊC@:q@<þ 8è>[ÍY@Ûxæ˜ >ÙÛ€öÓ€>ñÓ˜Ãò>ÐÓxí{r@ÉÓxÛ€‡øúÓz>€ÓxÛ€‡ø0úí¢öÃ\ßÃXß COPYRIGHT (C) 1979, DIGITAL RESEARCH Ü_ÃÅÍŒÜÁÉ> Í’Ü> Ã’Ü> Ã’ÜÅ͘Üá~·È#åÍŒÜáìÜ Ã_ÃÍ2îã<ÉÃÃܯ2íãÍãÃËÜÃÃÜÃÃÜÃÃÜÍãÃßÜÃÍ·ÉÃôÜÍãÃùÜÃôÜÃÃÜÃÿ ÃÍ݇‡‡‡!ïã¶2É:ïã2ÉþaØþ{Ðæ_É:«ã·Ê–Ý:ïã·>ĽÜ¬ãÍËÜÊ–Ý:»ã=2Ìã¬ãÍùÜ–ÝÜ!€€ÍBà!ºã6#5¬ãÍÚÜÊ–Ý:ïã·Ä½Ü!ÜͬÜÍÂÝʧÝÍÝÝÂßÍÝÝÍÝ ÜÍÍ)Ý!ÜF#x·ÊºÝ~Í0ÝwëÝw!Ü"ˆÜÉ Í·ÈÍ·ÉÀÃ!«ã~·È6¯Í½Ü¬ãÍïÜ:ïãýÜ(ß!ä¾ÂÏß#ÂýÝÉ͘Ü*ŠÜ~þ Ê"Þ·Ê"ÞåÍŒÜá#ÃÞ>?ÍŒÜ͘ÜÍÝÝÂß·Èþ Ú ÞÈþ=Èþ_Èþ.Èþ:Èþ;Èþ<Èþ>ÈÉ·Èþ ÀÃOÞ…oÐ$É>!ÍãÍYÞåå¯2ðã*ˆÜëÍOÞë"ŠÜëá·Ê‰ÞÞ@Gþ:Ê�Þ:ïãwÖÞx2ðãpÍ0ÞʹÞ#þ*©Þ6?ëÞw˜ÞÍ0ÞÊÀÞïÞ#6 ¹Þþ.ÂéÞÍ0ÞÊéÞ#þ*ÂÙÞ6?ÃÛÞwÂÈÞÍ0ÞÊðÞÃßÞ#6 ÂéÞ#6ÂòÞë"ˆÜá #~þ? ß Âßx·ÉDIR ERA TYPESAVEREN USERƒ‰|!ßyþÐÎã¾ÂOß#Â<ßþ ÂTßyÉ#ÂOß Ã3߯2Ü1«ãÅyæ_ÍÝ͸Ü2«ãÁyæ2ïãͽÜ:ܷ˜ß1«ã͘ÜÍÐÝÆAÍŒÜ>>ÍŒÜÍ9Ý€ÍØÝÍÐÝ2ïãÍ^ÞÄ Þ:ðã·Â¥âÍ.ß!Áß_~#foéwàá]á­áâŽâ¥â!óv"Ü!ÜéßßçÜREAD ERRORðßçÜNO FILEÍ^Þ:ðã·Â Þ!Îã ~þ Ê3à#Ö0þ Ò ÞWxæà Þx€Ú Þ€Ú Þ‚Ú ÞG ÂàÉ~þ  Þ# Â3àxÉ~#ÂBàÉ!€�ÍYÞ~ɯ2Íã:ðã·È=!ïã¾ÈýÜ:ðã·È=!ïã¾È:ïãýÜÍ^ÞÍTà!Îã~þ Â�à 6?#ˆàÕÍéÜÌêßÊá:îãæ`O> ÍKàÚáÑ{ÕæõÂÌà͘ÜÅÍÐÝÁÆAÍ’Ü>:Í’ÜÃÔàÍ¢Ü>:Í’ÜÍ¢ÜxÍKàæþ ÂùàñõþÂ÷à> ÍKàæþ Êá> Í’Üxþ Òáþ ÂÙàÍ¢ÜÃÙàñÍÂÝÂáÍäÜØàÑÆãÍ^Þþ ÂBáRáͧÜÍ9Ý!Ü5‚ß#~þY‚ß#"ˆÜÍTàÍãÍïÜ<Ìê߯ãALL (Y/N)?Í^Þ ÞÍTàÍÐÜʧá͘Ü!ñã6ÿ!ñã~þ€Ú‡áåÍþÜá á¯w4!€ÍYÞ~þʆãÍŒÜÍÂ݆ãÃtá=ʆãÍÙßÍfàà ÞÍøßõÍ^Þ ÞÍTàÍãÕÍïÜÑÍ ÝÊûá¯2íãño&)|µÊñá+å!€åÍØÝÍãÍÝÑáÂûáÃÔáÍãÍÚÜ<ÂââͧÜÍÕÝÆãNO SPACEÍ^Þ Þ:ðãõÍTàÍéÜÂyâ!ÍãÝãÍBà*ˆÜëÍOÞþ=Ê?âþ_Âsâë#"ˆÜÍ^ÞÂsâñG!ðã~·ÊYâ¸pÂsâp¯2ÍãÍéÜÊmâÍãÍÝÆãÍê߯ãÍfàà Þ‚âͧÜÆãFILE EXISTSÍøßþÒ Þ_:Îãþ Ê ÞÍÝÉãÍõÝ:Îãþ ÂÄâ:ðã·Ê‰ã=2ïãÍ)ÝͽÜÉãÖãþ  ÞÕÍTàÑ!ƒãÍ@àÍÐÜÊkã!åëÍØÝÍãÍùÜÂãá€Ü}“|šÒqãÃáâá=ÂqãÍfàÍ^Þ!ðãå~2Íã>Í`Þá~2Ýã¯2íã\!Íã!ÍBà!Ü~·Ê>ãþ Ê>ã#Ã0ã�~·ÊOã#ÃCãx2€Í˜ÜÍÕÝÍÝÍ1«ãÍ)ÝͽÜÂßÍfàà ÞzãͧÜÆãBAD LOADCOMÍfàÍ^Þ:ÎãÖ !ðã¶Â ÞÂß$$$ SUBƒ‰|Ãä™ä¥ä«ä±äë"Cçë{2Öñ!"Eç9"ç1Aç¯2àñ2Þñ!tñåyþ)ÐK!Gä_^#V*CçëéòÈæ�åÎæòòÔæíæóæøæáåþæ~ðƒðEðœð¥ð«ðÈð×ðàðæðìðõðþðñ ññ,éññ&ñ-ñAñGñMñðSñçç›ñ!ÊäÍåäþÊÉ!Õäôä!áäôä!ÜäÍåäÃBdos Err On : $Bad Sector$Select$File R/O$åÍÉå:BçÆA2ÆäºäÍÓåÁÍÓå!ç~6·Àà òÍûäÍåØõOÍ�åñÉþ Èþ Èþ ÈþÈþ É:ç·ÂEåÍòæÈÍ òþÂBåÍ òþʯÉ2ç>É: ç·ÂbåÅÍ#åÁÅÍ òÁÅ: ç·ÄòÁy! çþÈ4þ Ð5~·ÈyþÂyå5Éþ À6ÉyÍåÒ�åõ^ÍHåñö@Oyþ ÂHå ÍHå: çæ–åÉͬå Í òà ò#ÍHåÍÉå: ç! ç¾Ð ÍHåùå ÍHå ÃHå þ$ÈÅOÍ�åÁÃÓå: ç2 ç*CçN#åÅåÍûäæáÁþ ÊÁæþ ÊÁæþÂæx·Êïå: ç2 çÃpæþÂ&æx·Êïå~+éæþÂ7æÅåÍÉå¯2 çÃñåþÂHæå! ç>–wáÃïåþÂ_æá: ç! ç¾Òáå5ͤåÃNæþÂkæÍ±åáÃáåþ¦æÅͱåÁáåÅx·ÊŠæ#NÅåÍåáÁÃxæå: ç·Êñå! ç–2 çͤå! ç5™æÃñå#wÅåOÍåáÁ~þx½æþʹÚïåáp ÃHåÍåÃçÍòÃçy<Êàæ<Êòà òÍò·Ê‘ñÍ òÃç:Ãç!qÉëMDÃÓåÍ#å2EçÉ>Ãç! ä^#Vëé Èw#ÃPç:BçOÍò|µÈ^#V#"³ñ##"µñ##"·ñ##ë"Ðñ!¹ñÍOç*»ñë!ÁñÍOç*Æñ|!Ýñ6ÿ·Ê�ç6>ÿ·ÉÍò¯*µñw#w*·ñw#wÉÍ'òûçÍ*ò·È! äÃJç*êñÍêè"åñ"ìñ!åñN#F*·ñ^#V*µñ~#foy“xšÒúçå*Áñ{•_zœWá+Ãäçå*ÁñÚèy•xœÚèëá#ÃúçáÅÕåë*ÎñDMÍòÑ*µñs#rÑ*·ñs#rÁy“OxšG*ÐñëÍ0òMDÃ!ò!ÃñN:ãñ· ÂEèG>–O:âñ Ê\è·ÃSè€É*Cç :Ýñ·Êqèn&É ^#VëÉÍ>èOÍ^è"åñÉ*åñ}´É:Ãñ*åñ)=Â�è"çñ:ÄñO:ãñ¡µo"åñÉ*Cç É*Cçë!ÉÍ®è~2ãñë~2áñͦè:Åñ¦2âñÉÍ®è:ÕñþÂÞè¯O:ãñ�wë:áñwÉ È|·g}oÃëè€*¹ñ¯†# ÂýèÉ È)ÃéÅ:BçO!ÍéÁyµox´gÉ*­ñ:BçOÍêè}æÉ!­ñN#FÍ é"­ñ*Èñ#ë*³ñs#rÉÍ^é ~Ð!äÃJçÍéÈ! äÃJç*¹ñ:éñ…oÐ$É*Cç~ÉÍié6ÉÍiéö€wÉ*êñë*³ñ{–#zžÉÍéØr+sÉ{•ozœgÉÿ*ìñë*ÌñÍ•éÐÅÍ÷è*½ñë*ìñÁ ÊÄé¾ÈÍéÐÍ,éÉwÉÍœéÍàé͸çÃÚéÍàéͲç!±ñÃãé!¹ñN#FÃ$ò*¹ñë*±ñ€ÃOç!êñ~#¾À<É!ÿÿ"êñÉ*Èñë*êñ#"êñÍ•éÒêÃþé:êñ懠ê2éñ·ÀÅÍÃçÍÔéÁÞéyæ<_WyæOx‡‡‡‡‡±OxæG*¿ñ ~ÂVêÉÕÍ5êæþÁ±ÂdêwÉÍ^éÅÑ ÈÕ:Ýñ·ÊˆêÅåNÃŽê ÅN#Fåy°Ê�ê*Æñ}‘|˜Ô\êá#ÁÃuê*ÆñÍêè#DM*¿ñ6# x±Â±ê*Êñë*¿ñs#rÍ¡ç*³ñ6#6ÍþéÿÍêÍõéÈÍ^é>å¾ÊÒê:Aç¾Âöê#~Ö$Âöê=2EçÍkêÍŒéÃÒê:ÔñÃçÅõ:Åñ/Gy Oñ ‘æÁÉ>ÿ2Ôñ!Øñq*Cç"ÙñÍþéÍ¡çÍêÍõéÊ”ë*ÙñëþåÊJëÕÍéÑÒ”ëÍ^é:ØñOy·Êƒëþ?Ê|ëxþ Ê|ëþ Êsë–æÂ-ëÃ|ëÅNÍëÁÂ-ë# ÃSë:êñæ2Eç!Ôñ~ЯwÉÍþé>ÿÃçÍTé ÍëÍõéÈÍDéÍ^é6åÍkêÍÆéÍ-ëäëPYy°ÊÑë ÕÅÍ5êÒìëÁÑ*Æñ{•zœÒôëÅÕBKÍ5êÒìëÑÁÃÀë<ÍdêáÑÉy°ÂÀë!É Õ*Cç ëÍ^éÁÍOçÍÃçÃÆéÍTé Íë*Cç~wÍõéÈÍDé ÍìÍ-ëÃ'ì ÍëÍõéÈ ÍìÍ-ëÃ@ìÍëÍõéÈͦè~õåÍ^éë*Cç ÕÍOçÍxéÑ! N!Fáñwy¾xÊ‹ì>Ú‹ì>€*CçwÉ~#¶+Àw#w+ɯ2Eç2êñ2ëñÍéÀÍi鿀ÀÍëÍõéÈÍ^é ë*Cç :Ýñ·Êèì~·ÂÛìw·Âáì~¾ÂíÃýìÍ”ìëÍ”ìë¾Âí#¾Âí # ÂÍììÿ ë ¾Úíw ë ~>ÿ2ÒñÃì!Eç5ÉÍTé*Cçå!¬ñ"CçÍëÍõéá"CçÈë!¯w# ÂFí! wÍŒéÍýëÃxé¯2ÒñÍ¢ìÍõéÈ*Cç ~<æwʃíG:Åñ !Òñ¦ÊŽíìí 4~æʶíÍëÍõé¬í:Óñ<ʶíÍ$íÍõéʶíïíÍZìÍ»è¯ÃçÍçÃxé>2Õñ>ÿ2ÓñÍ»è:ãñ!áñ¾Úæíþ€ÂûíÍZí¯2ãñ:Eç·ÂûíÍwèÍ„èÊûíÍŠèÍÑçͲçÃÒèÃç>2Õñ>2ÓñÍTé*CçÍGéÍ»è:ãñþ€ÒçÍwèÍ„èÂnîÍ>è2×ñ·Ê;îO Í^èDM;ë}´ÂHî>Ãç"åñë*Cç :Ýñ·:×ñÊdîÍdésÃlîO s#r:Eç·ÀÅÍŠè:Õñ==»îÁÅy==»îå*¹ñWw#òŒîÍàé*çñ"åñÅÍÑçÁ͸ç*åñ:ÄñG¥¸#šîá"åñÍÚéÍÑçÁÅ͸çÁ:ãñ!áñ¾ÚÒîw4!ÜõÍiéæwñþÂï:ÕñþÂïÍÒèÍZí!Eç~·Âþî=2ãñ6ÃÒè¯2ÕñÅ*Cçë!!~æõ~#~æO~æGñ#n,-.‹ï! w! y–ÂGï!x–æÊïÅÕÍ¢ìÑÁ.:Eç<Ê„ï! q!pÍQì:Eç<ÂïÁÅ. Ê„ïÍ$í.:Eç<Ê„ïÁ¯ÃçåÍié6ÀáÁ}2EçÃxéÿÍïÌÁíÉÍïÌîÉëN! ~æ€�O>ˆG~æ€G!~‡‡‡‡õ€Gõá}áµæÉ Íë*Cç!år#r#rÍõéÊ ðÍ^éÍ¥ïáå_y–#xž#{žÚðs+p+qÍ-ëÃäïáÉ*Cç Í¥ï!!q#p#wÉ*¯ñ:BçOÍêèåëÍYçáÌGç}Ø*¯ñMDÍ é"¯ñãê:Öñ!Bç¾ÈwÃ!ð>ÿ2Þñ*Cç~æ=2ÖñþÒuð:Bç2ßñ~2àñæàwÍEð:Aç*Cç¶wÉ>"Ãç!"­ñ"¯ñ¯2Bç!€"±ñÍÚéÃ!ðÍréÍQðÃQìÍQðâìë~þ?ÊÂðͦè~þ?ÄréÍQðÍëÃéé*Ùñ"CçÍQðÍ-ëÃééÍQðÍœëÃëÍQðüíÍQðÃþíÍréÍQðÃ$íÍQðÍìÃë*¯ñÃ)ñ:BçÃçë"±ñÃÚé*¿ñÃ)ñ*­ñÃ)ñÍQðÍ;ìÃë*»ñ"EçÉ:ÖñþÿÂ;ñ:AçÃçæ2AçÉÍQðÓïÍQðÜïÍQðÃÒï*Cç}/_|/*¯ñ¤W}£_*­ñë"¯ñ}£o|¢g"­ñÉ:Þñ·Ê‘ñ*Cç6:àñ·Ê‘ñw:ßñ2ÖñÍEð*çù*Eç}DÉÍQð>2ÕñÍïÌîÉå€Ã9òçòÊ÷Ãd÷Ãw÷Ã�÷Ãã÷ÃÃ÷ÃføÃløÃ½øÃÂøÃÏøÃÔøÃìøÃ°÷ÃÇø>NnN ó1€>•2ÍGóÍ:ôÍ‚üCP/M VERSION 2.2 (1.1) (C) 1981 Digital Research, Inc. Û€æ2Ûþ2Áü2¯2Èü/2ÎüÃ4ó1€ÍGó Å:ÛþOÍløͽøÍÂø€ñÍÏøÍÔø·Âó!€Û"ÌüÍYû·Âó>Á Å2ÑüÍÎú·Âó*Ìü$$"Ìü:Ñüþ Ú ó!"ÏüÍ}û·Âó¯<ÁÓÃ4óÁ ÊóïòÍ‚ü ** WARM BOOT ERRORçò€ÍÏø!×ü"Ìü:OÃÜ>Ã2!ò"2!ä"ó2!Oõ"2!Áö">É28;óûÉ:Ûþ2ÎüOÍ2ü!@"ÌüÍYû§ >2ÑüÍÎú§ Í@Í‚ü ** COLD BOOT ERRORÃxó>ÉÉ>ÿÉ:3òÓ�Ý!ñô:4òÍåóÝ!Gõ:5òÍåóÝ!?õ:6òÍåóÍôÉÝN2ô!üóí£ãã ú íxíxÉ@á~#·Â ôéOåÍ%÷ÃôÍô<!7òËŽËFÄqôÍô>[?1;7l[?8hÉÍôÍ÷þ !Í÷þ[ Í÷þ? Í÷þ1 Í÷þ2 !7òËÆþcÈÍ÷øÅÍôÁÉÅÍôÁÉÝ~§(úóÝ5Ý^Ý4Ý~ݾ0Ý6ÝÝ~ûÉYÝNÝËN {æ_þÈíxæ(úÝËF úóíxæ(ú íYûÉÝ~§È>ÿÉÝNíxæȯÝËFÀ/ÉI &&A &A &&YQYQís¿ö1¿öåÕÅõÝåÝ!ñôÍ„õÝ!õÍ„õÝ!?õÍ„õÝ!GõÍ„õÝáñÁÑáí{¿öûÉÝNí@ËHÈ íxË`(݈ËhÊ©õ!d–+|µ ûíxÃÕõËX(>ÝËNÂ,öæÊsöþ ÝËÆÃsöþ Ë` ÝËFÊ,ö݈ÃsöþÂ,öÅdÍ…öÁ >Ã,öþ[ ÅÈÍ…öÁ >[õ>Í,öñûõþE0þA8 ÖA_!�ö~Ã,öõ>Í,ö>[Í,öñûõOÝ~ݾ(#Ý4Ý^Ý4Ý~ݾ0Ý6ÝåÝÝqÝáÃsöÝËN ÚÝNíxæ(ú íY íxæ(ú>8 ÈÝNíxæ(ú>7íyÉÝNíxæ ÅšþÁòÉ íxæÉ@$$‚�@!$D ‰ ‰I $’I $õÛ�ñûÉ!7òËFÂ÷Ý!ñôËô!7òËF( ËN DËÎÍ~ôÃ%÷Ý!ñôðô!7òËFÂ,÷Ý!ñôÃÙô!7òËFÂ3÷Ý!ñôÃáôÝ!õËô!7òËF( ËN(ËŽÍqôÝ!õðôÝ!õÃÙôÝ!õÃáôÝ!GõËôÝ!GõðôÝ!GõÃÙôÝ!?õËôÝ!?õÃÙôÝ!?õðô:æÊÇöþÚ÷ÊÃ÷Ã:÷:æÊÖöþÚ÷Ê�÷ÃA÷:æÊðöþÚ,÷ÊÓ÷ÃH÷:æÀÊÖöþ€ÊÖöÚ÷úó:æÀÊÿöþ€ÊÿöÚ3÷ûó:æ ÊÇöþÚO÷÷ó:æ ÊðöþÚV÷ûó:æ0ÊÖöþ Ú]÷úóBøÜþ3ørÿ\ÿBøÜþ3ø˜ÿ‚ÿBøÜþ3ø¾ÿ¨ÿBøÜþ3øäÿÎÿ$ª?À  !"# ýø!yþÒ‚ø2Áüi))))ó÷ÉÍ‚ü INVALID DISK SELECT - CONTROL-C TO RE-BOOTÍd÷þÊxóòøíCÂüÉ!ÄüqÉë n&ÉíCÅüÉ>ÿ2ÇüÍù·À*Êüí[Åü€í°¯Éy2ÇüÍù·À*Åüí[Êü€í°:Çüþ(>2Èü¯É¯2ÈüÍúÉ:Äüæü<2Éü:Äüæo&)))))))×ü"Êü:Îü!Áü¾Â[ù*ÏüíKÂü§íBÂ[ù:Ñü!Éü¾Â[ù¯É:Èü·(¯2ÈüÍú·À:Áü2Îü*Âü"Ïü:Éü2Ñü:ÇüþÂ�ù>2Òü:Áü2Óü*Ïü"Ôü:Ñü2Öü¯ÉþÂåù:Òü·Êéù=2Òü:Öü!ìù_~2Öüþ *Ôü#"Ôü!Îü:Óü¾Âåù*ÏüíKÔü§íBÂåù!Ñü:Öü–ȯ2ÒüÍöùÉ Íú>ÀÍÎúõ·ÄTúñÉÍú>ÀÍ÷úõ·Ä`úñÉ:ÎüOÍ2üÍžû!Êú:Îü_~þÿÂ>úåÍYû·õÄ úñáÀ6:Ïü¾ÈåÍ}û·õÄ€úñáÀ:ÏüwÉÍ‚ü READ Í‚ü WRITEÍŠúÍ‚ü SECTOR :ÑüÍ‚ü SEEKÍ­úÍ‚ü TRACK :ÏüÍ’üÉÍ‚ü RESTOREÍ‚ü ERROR - DRIVE :ÎüÆAOÍw÷Éÿÿÿÿ>2×þ!àú"ØþÍàúÈà û€Í]üÛ€‡úñú0øí¢ôûÛxæœÉ>2×þ! û"ØþÍ ûÈà û Í]üÛ€‡úû0øí£ôûÛxæüÉG>ÐÓxxæ xæ >ÿÉ!×þ5>ÿÈ*ØþÍXûÈðÍ2û§ÈÍYû§ÀÍ}û§À*ØþÍXûÉéÍjûÈ>[ÍUüùÍjûÉ> ÍUüÛxOæ /§Éyæ�ÉÍŠûÈÍYû§ÀÍŠûÉ:ÏüÓ{>ÍUüͳüÛxæ˜ÉÛxæ ú>ÐÓx!@œãããã:Úþ· Ûxæ ÀÛ€öÓ€ÛxæG+|µ( Ûxæ¸ÊÅûÉÍ‚ü DRIVE :ÎüÆAOÍw÷Í‚ü NOT READY - TYPE ANY KEY TO RETRY - CONTROL-C TO RE-BOOTÍd÷þÊxóúûÛ€æ‘2ÚþÈyöÓ€æ÷Fͳü!Êú_~þÿÈÓyÉÓxÛ€‡øúÛxæ ú>ÐÓx{*Ìü:ÑüÓzããããóÛxæ { öÓxÉá~#·ÂŠüéOåÍw÷Âüþd0Ö 8ùÆ õx§Ä¨üñÆ0OÍw÷É*øÅþ0þÁ ÈòA*C*E*G*I*K*M*O*Q*S*U*W*Y*[*]*_*a*c*e*g*i*k*m*o*q*s*u*w*y*{*}**�*ƒ*…*‡*‰*‹*�*�*‘*“*•*—*™*›*�*Ÿ*¡*£*¥*§*©*«*­*¯*±*³*µ*·*¹*»*½*¿*Á*Ã*Å*Ç*É*Ë*Í*Ï*Ñ*Ó*Õ*×*Ù*Û*Ý*ß*á*ã*å*ç*é*ë*í*ï*ñ*ó*õ*÷*ù*û*ý*ÿ+++++ + + ++++++++++!+#+%+'+)+++-+/+1+3+5+7+9+;+=+?+A+C+E+G+I+K+M+O+Q+S+U+W+Y+[+]+_+a+c+e+g+i+k+m+o+q+s+u+w+y+{+}++�+ƒ+…+‡+‰+‹+�+�+‘+“+•+—+™+›+�+Ÿ+¡+£+¥+§+©+«+­+¯+±+³+µ+·+¹+»+½+¿+Á+Ã+Å+Ç+É+Ë+Í+Ï+Ñ+Ó+Õ+×+Ù+Û+Ý+ß+á+ã+å+ç+é+ë+í+ï+ñ+ó+õ+÷+ù+û+ý+ÿ,,,,, , , ,,,,,,,,,,!,#,%,',),+,-,/,1,3,5,7,9,;,=,?,A,C,E,G,I,K,M,O,Q,S,U,W,Y,[,],_,a,c,e,g,i,k,m,o,q,s,u,w,y,{,},,�,ƒ,…,‡,‰,‹,�,�,‘,“,•,—,™,›,�,Ÿ,¡,£,¥,§,©,«,­,¯,±,³,µ,·,¹,»,½,¿,Á,Ã,Å,Ç,É,Ë,Í,Ï,Ñ,Ó,Õ,×,Ù,Û,Ý,ß,á,ã,å,ç,é,ë,í,ï,ñ,ó,õ,÷,ù,û,ý,ÿMVP2-RA DEDJUDE3 BAS€ JUDE3 BASMDBM-R11BAS€ !"#$%&'(PIP COM:01234567MDBM-R11BAS>)*+,-./hMDBM-R9 BAS€89:;<=>?@ABCDEFGMDBM-R9 BASIHIJKLMNOPQMDBM-S9 BAS€RSTUVWXYZ[\]^_`aMDBM-S9 BAS*bcdefgTA-SEQ DEDjMERGE-RADEDklmMDBM-R10BAS€nopqrstuvwxyz{|}MDBM-R10BASX~€�‚ƒ„…†‡ˆåBIOTHM COMdåSWAP COMK 5500 6000 REM PRINT MAILING LIST ON LINE PRINTER IN CURRENT SORTED ORDER. PRINT ALL RECORDS WITH FIRST LETTER OF STATUS <> "F" FOR FORMER 6005 PRINT"READY TO PRINT ALIGN FORM CREASE A LITTLE BELOW TOP OF PRINT HEAD":PRINT"ANY KEY TO CONTINUE, 'P' TO APPEND PHONE #": GOSUB 102: P$ = L$ 6010 J = -1: S= 8: F$ = ".IND": GOSUB 4120: FOR J = 1 TO NR: L$ = LEFT$(ST$,1): IF L$ <> "" THEN S%(1,J) = 1 ELSE S%(1,J) = 0 6015 IF P$ <> 'P' AND L$ = D THEN S%(1,J) = 0: SET DUPLICATES TO 0 IF NOT PHONE 6020 NEååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååXT J: J = -1: GOSUB 5250: REM 132 COL PRINT 6025 FOR I = 1 TO 6: H%(I) = 1: NEXT I: K(1) = 43: K(2) = 47: K(3) = 0: REM ARGUMENT FOR SPACE$ TO FILL PAGE EVENLY 6230 S = -1: IF NR > 0 THEN N$(0,1) = "1" ELSE N$(0,1) = "0": REM INITIAL SETUP 6040 WHILE N$(0,1) <> "0" : GOSUB 4125 6045 LPRINT 6050 FOR I = 1 TO K: L = LEN(N$(I,1)) + LEN(N$(I,2)) + 1: LPRINT N$(I,1);" ";N$(I,2);: IF I < 3 THEN LPRINT SPACE$(K(I) - L);: ELSE LPRINT 6052 NEXT I 6060 FOR I = 1 TO K: L = LEN(N$(I,3)) + LEN(N$(I,4)) + 1: LPRååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååINT N$(I,3);" ";N$(I,4);: IF I < 3 THEN LPRINT SPACE$(K(I) - L);: ELSE LPRINT 6062 NEXT I 6070 FOR I = 1 TO K: L = LEN(N$(I,5)) + LEN(N$(I,6)) + LEN(N$(I,7)) + 5: LPRINT N$(I,5);",";N$(I,6);" ";N$(I,7);: IF I < 3 THEN LPRINT SPACE$(K(I) - L);: ELSE LPRINT 6075 S%(1,VAL(N$(I,0)) ) = 0: NEXT I: REM DON'T REREAD THIS RECORD 6085 IF P$ <> "P" THEN LPRINT ELSE FOR I = 1 TO 2: L = LEN(N$(I,8)): LPRINT N$(I,8); SPACE$(K(I) - L);: NEXT I : LPRINT N$(3,8):REM ADD PHONE # 6090 LPRINT: J = -1: WEND 6100 GOSUååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååB 5230: RETURN: REM REST TO 80 COL PRINT 6200 REM VERIFY ENTRIES - CHANGE FIELD 10 IF UPDATE 6210 F$ = ".IND": PRINT: INPUT "CURRENT DATE = "; DATE$ 6215 FOR I = 1 TO NH: H%(I) = 1: NEXT I 6220 FOR K = 1 TO NR: S = -1: J = K: GOSUB 4125: REM GET NEXT REC 6230 PRINT CLS$;CH$;: PP = 0: GOSUB 4580: REM PRINT REC K 6240 PRINT: PRINT "ENTRIES OK ? (N for changes) ";: GOSUB 102: PRINT: IF L$ = "N" THEN N$(B,10) = DATE$: GOSUB 2105: REM MAKE CHANGES 6250 NEXT K: RETURN 6400 REM PHONE LIST PRINTS STATUS D A 5500 REM DECICATED REPORT FORMAT CHOICES 5505 PRINT CLS$;CH$; : PRINT : PRINT : PRINT "1 RETURN TO REPORT (UNIVERSAL FORMAT)": PRINT : PRINT "2 RETURN TO MAIN MENU" 5510 PRINT "3 MAILING LIST in current order" 5512 PRINT "4 VERIFY check and/or change all": PRINT "5 PHONE LIST in current order" 5520 PRINT : INPUT "WHICH ";L$:L = VAL (L$) 5523 IF L = 1 THEN GOTO 3940 5525 IF L = 2 THEN GOTO 4810 5530 IF L = 3 THEN GOSUB 6000 5535 IF L = 4 THEN GOSUB 6200 5540 IF L = 5 THEN 6400 5599 GOTOND P BUTNOT OFFICERS = O 6410 PRINT " READY: ALIGN FORM WITH SPACE FOR OFFICERS": PRINT "ANY KEY TO START ";: GOSUB 102: PRINT 6420 F$ = ".IND": J = -1: S = 9: GOSUB 4125: FOR J = 1 TO NR: IF LEFT$(ST$(J),1) = "P" OR LEFT$(ST$(J),1) = "D" THEN S%(1,J) = 1 ELSE S%(1,J) = 0 6430 NEXT J: FOR I = 1 TO NH : H%(I) = 0: NEXT I: H%(1) = 1: H%(2) = 1: H%(8) = 1 6450 J = -1: S = -1: IF NR > 0 THEN N$(0,1) = "1" ELSE N$(0,1) = "0" 6460 GOSUB 5250: TB = B: B = 3: WHILE N$(0,1) <> "0" : GOSUB 4125 6470 LPRINT SPA) ï NPL% Ï É DISK$() ð ÿ²(): DISPL$() ð "": :¢ É DISK$() ð ÿ²(ÿ”(DISPL$())): DISPL$() ð PLACE$(ÿ”(DISPL$()))lf@‘ ESC$ "1A";:‘ " 3 " H$() ": ";DISPL$()tfB: Ž•fF� SET DISK$(4-8) FROM DISPL$ùfH DT$ ð DISPL$():� ¤: É DISK$() ð DT$: DT$ ð DISPL$(): � ¤: É DISK$() ð DT$: � SET DATES^gJÉ DISK$() ð DISPL$(): REAL! ð ÿ”(DISPL$()): É DISK$() ð ÿ³(REAL!): É DISK$() ð DISPL$(): ŽªgP � CONVERT DISK STRINGS IN DISK$ TO PRINTABLE DATA IN MEMORY LOCATION KhR DISPL$() ð TITLE$(ÿ«(DISKCE$(10);N$(1,1);" ";N$(1,2);SPACE$(40 - LEN(N$(1,1)) - LEN(N$(1,2)));N$(1,8);: IF K > 1 THEN LPRINT SPACE$(20 - LEN(N$(1,8)));N$(2,1);" ";N$(2,2);SPACE$(40 - LEN(N$(2,1)) - LEN(N$(2,2)));N$(2,8) ELSE LPRINT 6480 S%(1,VAL(N$(1,0))) = 0: IF K > 1 THEN S%(1,VAL(N$(2,0))) = 0 6490 J = -1: WEND: B = TB: REM RESTORE B 6500 GOSUB 5230: RETURN NR > 0 THEN N$(0,1) = "1" ELSE N$(0,1) = "0" 6460 GOSUB 5250: TB = B: B = 3: WHILE N$(0,1) <> "0" : GOSUB 4125 6470 LPRINT SPA$())): DISPL$() ð ÿ“(ÿ«(DISK$())): DISPL$() ð PLACE$(ÿ«(DISK$()))ShT DT$ ð DISK$(): � &: DISPL$() ð DT$: DISPL$() ð DISK$():µhV REAL! ð ÿ¬(DISK$()): DT$ ð ÿ“(ÿŸ(dô (REAL! ó ÿŸ(REAL!)))): ‹ ÿ’(DT$) ñ  Ï DT$ ð DT$ ò "0"èhX DISPL$() ð ÿ“(ÿŸ(REAL!)) ò "." ò ÿƒ(DT$,,)*iZ DISPL$() ð DISK$(): DT$ ð DISK$(): � &: DISPL$() ð DT$1i\ Žcid� SCREEN PAUSE FALLS THROUGH TO GET L$ AT 102�ie‘ "ANY KEY TO CONTINUE ";ÄifL$ ð Ý: ‹ ÿ’ (L$) ð  Ï f: :¢ Ž: � SIMULATE APPLESOFT GET L$ji‘PED OVERnd� R$(I) USED FOR SEQUENTIAL FILE DISK READ,NR # RECORDS TO BE READ,TYPE DEFINED BY FILES ENDING IN F$: .R#=REPORT FORMAT,.RFN=REPORT NAMES,.HDR=HEADERSåd � IN DIM: 1000,1050,1060,1161,1163. NH(PP) LAST HEADER ON PAGE PP+1. MP=MAX # PAGES,MH = MAX # OF HEADERS = 80Oe� SEE LINE 1061 AND SUBS AT 100-140 FOR CURSOR CONTROL,LINE 1060 AND SUBS AT 5280 FOR PRINTER CONTROLØe� LV% IS MAXIMUM DISK FIELD LENGTH, STORED AS LAST ELEMENT IN HEADER FILE ON DISK. INDEX FILE CONTAINS RECORD DATA END CH$;ESC$;ÿ‚(ÿ“(CP),ÿ’(ÿ“(CP))ó);"B";: Ž: � ABSOLUTE VERT POSITION BELOW LEFT EDGE¸jj� PRINTING ESCAPE SEQUENCE CONFUSES BASIC, IT THINKS CURSOR MOVE RIGHT BY # OF PRINTABLE CHARACTERS IN SEQUENCE-GIVE LINE FEED AFTER 80 PRINTABLE CHAR?kk� IN SUB 120 SAVE CUSOR POSITION, ISSUE LINE FEED TO CLEAR BASIC LINE COUNT THEN RESTORE CURSOR WITH ESC 7 & 8 IN LINE 124 AND 122‡kx� PRINT OLD$ THEN CHANGE TO REP$ WITH SCREEN COPY USING GET SUB 102ÖkzREP$ ð "":‹ ÿ’(OLD$) ï  Ï ‘ ÿ–();"7":‘ ÿ–();"8";:‘ OLD$:‘ÿ&b� PRETTY GOOD VERSION CORRECTED DATES AND ERROR CHECK IF ENTER RECORD AND DISK ED # > 0Wb� PRINT REPORTS STILL NEEDS WORK, CONCEPT OKÖb� HAVE LOTS OF MEMORY LEFT SO LOAD ALL GALLERY FILES INTO INTERNAL ARRAYS FOR SPEED : GAL%(GAL #, CURR% AT GAL) STORES ALLlc� SUB AT 250 AND 260 READ AND WRITE TO SEQ FILE R$(NR%) FOR PLACES AND TITLES. H$(NH%) FROM DATA STATMENT AT 45. REST IN RA FILES SEE 1000-1300Öc� SEE LINE 1061 AND SUBS AT 100-140 FOR CURSOR CONTROL,LINE 1060 AND SUBS AT 5280 FOR PRI ÿ–();"8";?l|‘ ÿ–();"7";:� f: ‘ : ‘ ÿ–();"8";: ‹ ÿ•(L$) ï  ÷ ÿ•(L$) ñ  Ï ‘ L$;: REP$ ð REP$ ò L$: ‰ |Ul~‹ ÿ•(L$) ð  Ï Ž¹l€‹ ÿ•(L$) ð  ÷ ÿ’(OLD$) ï ÿ’(REP$) Ï REP$ ð REP$ ò ÿƒ(OLD$,ÿ’(REP$) ò ,): ‘ ESC$ "1C";: ‰ ‚äl�‹ ÿ•(L$) ð  Ï REP$ ð REP$ ò " ":‘" ";—m‚‹ ÿ’(REP$) ï  Ï ‹ ÿ•(L$) ð  ø ÿ•(L$) ð  ø ÿ•(L$) ð  Ï ‘ ESC$ "1D";: L$ ð ÿ‚(REP$,): REP$ ð ÿ�(REP$,ÿ’(REP$) ó ): ‹ ÿ’(OLD$) ï ÿ’(REP$) Ï ÿƒ(OLD$,ÿ’(REP$) ò ,) ð L$¡m„‰ |åmú � READ DATA FROM SEQUENTIAL FILE F$NTER CONTROLÜc-�ÿc.� DATA FOR H$(I) HEADER LABLESnd/„ "REC # "," TITLE ","EDITION #","LOCATION ","DATE RECD"," FRAMED "," PRICE "," STATUS ","DATE TRAN"yd1 ‰ è°d2� SUB TO INSERT TITLE AND ED # IN DISK$ AND DISPL$ád4É DISK$() ð ÿ²(CURT%): ‘ " 1 " H$() ": "; e6DISPL$() ð TITLE$(CURT%): ‘ DISPL$()de8É DISK$() ð ÿ²(CURE%): ‘ " 2 " H$() ": ";: DISPL$() ð ÿ“(CURE%): ‘ DISPL$(): Ž£e<� SUB TO PRINT GALLERY NAME OVER # INOUT AND FILL DISK$(3)=f>‹ ÿ”(DISPL$()) ñ  ø ÿ”(DISPL$() ON ACTIVE DRIVE TO R$(NR%)nü NR% ð : FILE$ ð DRIVE$ ò F$:¿ "I",#,FILE$Inþ ´ò Õ ÿ¯ (): NR% ð NR% ò : … #,R$(NR%): µXn à #: Ž �n � WRITE DATA TO SEQUENTIAL FILE F$ ON ACTIVE DRIVE FROM R$(NR%)Çn FILE$ ð DRIVE$ ò F$: ¿ "O",#,FILE$ìn ‚ I ð  Î NR%: ‘ #,R$(I): ƒ Iûn  à #: Ž >o,� INPUT CURRENT TITLE, CURT%, EDITION, CURE%, AND CALC REC# L%zo1… "TITLE # = ",CURT%: ‹ CURT% ñ  ø CURT% ï NTIT% Ï 1µo6… "EDITION # = ",CURE%: ‹ CURE% ñ  ø CURE% ï d Ï 6p;L% ð (CURT% ó )ð Úw² ƒ J: Ž xí � SEARCH FOR A STRING MATCH WITH ANY FIELD CHARACTERSCxîNS ð : ‘ : ‘ S": "H$(S)" = ";: … "";Q$…xóL ð ÿ’ (Q$): ‚ J ð  Î NR%:LL ð ÿ’ (ST$(J)): ‹ L ï LL Ï ªxø ‹ L ð LL Ï ‹ Q$ ð ST$(J) Ï  çx ‚ I ð  Î LL ò  ó L: ‹ ÿƒ (ST$(J),I,L) ñ ï Q$ Ï ƒ Iy ‹ I ï LL ò  ó L Ï #y  ‹ RNG$ ð "Y" Ï S%(,J) ð ¢yNS ð NS ò S%(,J): ƒ J: ‹ RNG$ ñ ï "Y" Ï R$( ÿ” (R$())) ð R$() ò " AC MATCH, WITH " ò ÿ“ (S) ò ":" ò H$(S) ò "= " ò Q$ªy Ž Íy ‹ RNG$ ñ ï "Y" Ï S%(,J) ô d ò CURE%: ‹ NUME%(CURT%) ò NUMH%(CURT%) ïð d Ï ‘ "NO ROOM FOR HISTORY!"p@Žfp� � FORMATE DATE(MO/DAY/YR) INTO NUMBER FOR NUMERICAL SORT OF ST$(J)Äp• ‚ I ð  Î NR%:DT$ ð ST$(I): � ¤:ST$(I) ð DT$: ‹ DT$ ð "" Ï ST$(I) ð ÿ“ ( ÿ” (ST$(I)))Ípš ƒ IÛpŸL ð : Ž ˜q¤ � FORMAT DATE(MO/DAY/YR)=DT$ INTO NUMBER OF GREGORIAN CALENDAR DAYS SINCE 1/2/0000:NOTE USE OF INTEGER ARITHMETIC,NO DATES AFTER YEAR 2730 OR BEFORE 99, TWO DIGIT YEAR OK FOR 1900'SÕq® ‚ II ð  Î ÿ’ (DT$): ‹ ÿƒ (DT$,II,) ñ ï ð Øy ‰ åyè ’: ‘: ‘/zò‘ "JUDE'S PRINTS": ‘ ::‘"INSERT DISK TO BE USED IN AVAILABLE DRIVE":‘Žzü‘ "ENTER DRIVE TO BE USED (A,B,C,D) = ";: � f: ‘ L$: L ð ÿ•(L$): ‹ L ñ A ø L ï D Ï QÊz ‘: DRIVE$ ð L$ ò ":": ‘: ‘: PDB$ ð "JPRINT1": LV% ð { FILE$ ð DRIVE$ ò PDB$ ò ".IND" :¿ "R",#,FILE$,LV%: � LEAVE DATA FILE OPEN“{À #, AS DISK$(), AS DISK$(), AS DISK$(), AS DISK$(), AS DISK$(), AS DISK$(), AS DISK$(), AS DISK$() |$ESC$ ð ÿ–() ò "[": CH$ ð ESC$ ò "H": CLS$ ð ESC$"/" Ï ƒ IIr¸MO% ð ÿ” ( ÿ� (DT$,II ó )): ‹ MO% ï  Ï � X: ‰ 1r ‚ JJ ð II ò  Î ÿ’ (DT$)XrÌ ‹ ÿƒ (DT$,JJ,) ñ ï "/" Ï ƒ JJ¢rÖ ‹ JJ ï ð ÿ’ (DT$) Ï � X: ‰ : � 2ND / NOT FOUND WITHIN DT$èràYR% ð ÿ” ( ÿ‚ (DT$, ÿ’ (DT$) ó JJ)): ‹ YR% ñð c Ï YR%ðl ò YR%7sêDA% ð ÿ” ( ÿ‚ ( ÿ� (DT$,JJ ó ),JJ ó II ó )): ‹ DA% ï  Ï � X: ‰ €sô� MAKE INTO DISK ALFA STRING = 100* MONTHS SINCE 1976 + DAY OF MONTHºsùYR% ð YR% ó ¸: ‹ YR% ñ  ø YR% ï  Ï � X: ‰ äsþDT$ ð ÿ²(d ò "2J": MCU$ ð ESC$ ò "1A": MCD$ ð ESC$ ò "1B": CLL$ ð ESC$ ò "2K"Š|&� ESCAPE SEQUENCES TO MOVE CURSOR, WHEN PRINTER: CURSOR HOME, CLEAR SCREEN, MOVE CURSOR UPT OR DOWN ONE LINE, CLEAR LINEØ|8SIZE% ð d: † R$(SIZE%): NH% ð : † H$(NH%): ‚ I ð  Î NH%: ‡ H$(I): ƒ I"}= � READ IN TITLES AND GALLERY NAMES USING R$(I) DIM AT + 2 SO CAN ADD©}LF$ð"TITLES.NAM":� ú :NTIT% ð NR%: † TITLE$(NTIT% ò ),NUME%(NTIT% ò ),NUMH%(NTIT% ò ): ‚ I ð  Î NTIT%: TITLE$(I) ð R$(I): ƒ I~VF$ ð "PLACES.NAM": � ú : N ô ( ô YR% ò MO%) ò DA%) tŽ: � NOT CHANGED IF ERROR DETECTEDGt&� CONVER ALFA DISK STRING FOR # TO DATE STRING MO/DA/YRgt)‹ ÿ«(DT$) ð  Ï DT$ ð "": Žõt+MO% ð ÿŸ(ÿ«(DT$)õd): DA% ð ÿ«(DT$) ó MO% ô d: YR% ð MO%ý ò L: MO% ð MO% ü  : ‹ MO% ð  Ï MO% ð  : YR% ð YR% ó : � ACCOUNT FOR DECGu0DT$ ð ÿ‚(ÿ“(MO%),) ò "/" ò ÿ‚(ÿ“(DA%),ÿ’(ÿ“(DA%)) ó ) ò "/" ò ÿ‚(ÿ“(YR%),)Mu:ŽhuX � ERROR SUBROUTIUNE ub‹ DT$ ñï "" Ï ‘ "DATA FORMAT ERROR IN DATE = ";DT$ÔugDT$ ð ÿ²(): � STORE AS BLANK IF ERROPL% ð NR%: † PLACE$(NPL% ò ): ‚ I ð  Î NPL%: PLACE$(I) ð R$(I): ƒ I: PLACE$() ð ""T~`� FILL ARRAYS OF # ED,HIST AND REC # PER GALLERYè~eGSIZE% ð d: † GAL%(NPL% ò ,GSIZE%): � (GAL#,ITH REC #) & REC # 0 = TOTAL # AT GALLERY NOTE MIGHT USE FRE(0) HERE LATER THIS WILL WORK NOW7jFILE$ ð DRIVE$ ò PDB$ ò ".NUM": ¿ "R",#,FILE$,: À #,  AS NUM$: NR% ð ~o‚ I ð  Î NTIT%: Á #,NR%: NR% ð NR% ò : NUME%(I) ð ÿ«(NUM$): ƒ IÅt‚ I ð  Î NTIT%: Á #,NR%: NR% ð NR% ò : NUMH%(I) ð ÿ«(NUM$): ƒ Iü~R DETECTEDÜul Ž úuŠ� SELECT A RANGE OF DATESRvž ‘ CLS$;CH$; : CP ð  : � i : ‘ "INPUT RANGE OF DATES FOR:": ‘ S": "H$(S): ‘ : ‘ Ðv£ … "LOWEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$() ò " " ò ÿ“ (S) ò ":" ò H$(S) ò " = " ò DT$: � ¤:L ð ÿ” (DT$)Sw¨ ‘ : … "HIGHEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$( ÿ” (R$())) ò " TO " ò DT$: � ¤:LL ð ÿ” (DT$): ‘ : ‘ "SEARCHING"Íw­NS ð : ‚ J ð  Î NR%:DT$ ð ST$(J): � ¤: ‹ ÿ” (DT$) ï ð L ÷ ÿ” (DT$) ñ ð LL Ï NS ð NS ò S%(,J): :¢ S%(,J) ‚ I ð  Î NPL%: Á #,NR%: NR% ð NR% ò : COUNT ð ^€ƒ´ò ÿ«(NUM$) ï  : GAL%(I,COUNT) ð ÿ«(NUM$): Á #,NR%: NR% ð NR% ò : COUNT ð COUNT ò : µ×€ˆGAL%(I,) ð COUNT ó : ƒ I: � ASSUMES 0 OR NEG NUMBER AS SEPARATOR BETWEEN GROUPS SHOULD WORK WITH EMPTY GROUPS ALSOà€’à #怰�ö€º� MAIN MENU*�Ä‘ CLS$;CH$: ‘: ‘: ‘ "OPTIONS FOR JUDE'S PRINTS"q�É‘ "1 LIST (by Record, Title or Gallery)": ‘ "2 ENTER NEW PRINTS"¿�Α "3 MAKE CHANGES": ‘ "4 UTILITIES (move history,add title or gallery)"Õ�Ø‘ "5 $ ð "P" Ï � Œ :¢ � Ä ù‰È‰ x: � TRY AGAINÿ‰Ü�ŠÝ� LIST ONE RECORD BY NUMBERHŠæ‘ CLS$;CH$: ‘ "SCREEN LIST A RECORD"ÅŠð … "RECORD # (100 * (TITLE # - 1) + EDITION #) = ",CURR%: ‹ CURR% ñ  ø CURR%ýd ò  ï NTIT% Ï ð :¢ Á #,CURR%: � óŠú‘: ‘ " ANY KEY TO CONTINUE";: � f: ‘: ŽùŠ�$‹� SCREEN LIST FOR DATA ENTRY OR CHANGE†‹‘ CLS$;CH$:� P: ‘ H$();" "; CURR%: ‘: ‚ I ð  Î NH%: ‘ I;" ";H$(I);": ";DISPL$(I): ƒ I: ŽŒ‹@�¤‹J� ENTER A NEW PRINTŒT ‘ CLS$;CH$: ‘ "TO ENTER A NEW PRQUIT": ‘: ‘‚ö… "WHICH ";L%: ‹ L% ñ  ø L% ï  Ï ö&‚• L% � x,@,Ð,¸ ,: ‰ º-‚� j‚ � CLOSE ALL FILES UPDATE NUMT% AND NUMH% FILES AND QUIT²‚RESTART% ð : � DON'T RESTART JUMP TO 1310 WITH SET TO 1 TO RESTARTƒFILE$ ð DRIVE$ ò PDB$ ò ".NUM": ¿ "R",#,FILE$,: À #,  AS NUM$: NR% ð Kƒ(‚ I ð  Î NTIT%: É NUM$ ð ÿ²(NUME%(I)):  #,NR%: NR% ð NR% ò : ƒ I•ƒ2‚ I ð  Î NTIT%: É NUM$ ð ÿ²(NUMH%(I)):  #,NR%: NR% ð NR% ò : ƒ I¨ƒ<‚ I ð  Î NPL%4„F‚ J ð  Î GAL%(I,): É NUM$ ðINT:": ‘: � ,: CURR% ð L%: � INPUT PRINT AND EDITION RETURN L% AS CURRENT RECORD #³ŒYÁ #,CURR%: ‹ ÿ«(DISK$()) ï  Ï ‘ "THE RECORD CHOOSEN HAS DATA ON IT. SWITCHING TO MAKE CHANGES": ‘ "ANY KEY TO BEGIN CHANGES ";: � f: ‰ ÚðŒ^‘ CLS$;CH$: ‘ H$(); L%: ‘: � 2: � PRINT TITLE AND ED#�h ‚ I ð  Î NH%: ‘ I;" ";H$(I);": ": ƒ I��r ‘ CH$;ESC$;"5B";: ‚ I ð  Î NH%: ‘ I" "H$(I);: … ": ",DISPL$(I): ‹ I ð  Ï � <: � INSERT GALLERY NAME FOR #Ÿ�wƒ I: � FË�| � : � CONVERT, RECONVERT, AND PRIN ÿ²(GAL%(I,J)):  #,NR%: NR% ð NR% ò : ƒ J: É NUM$ ð ÿ²():  #, NR%: NR% ð NR% ò : � INSERT SEPARATOR<„Kƒ Iv„P‹ RESTART% ð  Ï Ã : �: � ADD 'SYSTEM' LATER TO QUITŸ„Z‰ è: DO « RESTART Î UPDATE ” NAMES¥„x�…y� LISTING OPTIONS DIFFERENT SUB FOR SCREEN AND PRINTER, L < 4 IF ORDERED BY TITLE AND 4 IF BY GALLERY�…}‘ CLS$;CH$: ‘ "LIST OPTIONS:": ‘: ‘ "1 LIST AN INDIVIDUAL RECORD BY #": ‘ "2 LIST CURRENT LOCATIONS FOR A GIVEN TITLE"ô…‚‘ "3 LIST PRINT HISTORY FOR A GIVEN TITLE": ‘ "4 LIST Tކ‘: … "ENTRIES OK?..Y/N/#....";L$: ‹ L$ ð "N" ø L$ ð "n" Ï ^<Ž�S% ð ÿ” (L$): ‹ S% ñ  ø S% ï NH% Ï ¤ °Ž• CP ð S% ò : � i: ‘ S%" ";H$(S%)": ";: OLD$ ð DISPL$(S%): � x: DISPL$(S%) ð REP$:‹ S% ð  Ï � < :¢ � F»Žš ‰ |÷ޤ  #,L%: ‹ CURE% ï NUME%(CURT%) Ï NUME%(CURT%) ð CURE%�®� ` : � ADD TO GALLERYb�¸ ‘ : ‘ "ENTER ANOTHER PRINT (Y/N) ";: � f: ‹ L$ ð "Y" ø L$ ð "y" Ï T ƒ� Ž: � CLOSE TO FILE AND QUITŠ�Ð �°�Ñ � SUB TO MAKE CHANGES IN A PRINTý�Õ ‘ CLS$;CH$: ‘ "TO MAPRINTS AT A GIVEN GALLERY": ‘ "5 QUIT": ‘2†‡‘ "WHICH ";: � f: L ð ÿŸ(ÿ”(L$)): ‹ L ñ  ø L ï  Ï ‡E†Œ‘: ‹ L ð  Ï Žc†Ž‘: ‹ L ð  Ï � Ü: ‰ x׆‘‘ "LIST ON PRINTER ? (Y/N) ";: � f: ‹ L$ ð "Y" ø L$ ð "y" Ï P$ ð "P" :¢ P$ ð "": � PRINTER FLAG FOR BRANCHINGü†–‹ L ð  Ï ‰ ´: � DO BY GALLERYT‡›‘: … "PRINT TITLE # = ";S%: ‹ S% ñ  ø S% ï NTIT% Ï › :¢ ‘ "TITLE = ";TITLE$(S%)•‡ ‘ "CORRECT ? (Y/N)";:� f: ‹ L$ ð "N" ø L$ ð "n" Ï ‘: ‰ ›/ˆ¥‹ L ð  Ï R$() ð ÿ²(NUME%(S%)): CURR% ð d ô (SKE CHANGES:": ‘: � ,:CURR% ð L%: � INPUT REC # L%�ב CLS$;CH$: Á #,CURR%Y�Ú GAL$ ð DISK$(): � : � READ, CONVERT TO DISPL$ AND PRINTå�ß‘ "SAVE CURRENT RECORD IN HISTORY (Y/N)";: � f: ‹ L$ ð "Y" ø L$ ð "y" Ï � 4: ‹ ÿ•(L$) ð  Ï Ž: � QUIT CHANGES NO ROOM FOR HISTORY'‘ä‘: … "CHANGE WHICH LINE # (3-8)";S%: ‹ S% ñ  ø S% ï  Ï ä‘‘é CP ð S% ò : � i: ‘ S%;" ";H$(S%);": ";: OLD$ ð DISPL$(S%):� x: DISPL$(S%) ð REP$: � MAKE CHANGE°‘î ‹ S% ð  Ï � < :¢ � F ’ø ‘ CLS$;CH$: � : ‘% ó ): ‚ I ð CURR% ò  Î CURR% ò NUME%(S%): R$(I ó CURR%) ð ÿ²(I): ƒ I: ‹ P$ ð "P" Ï � Œ :¢ � Ä Îˆª‹ L ð  Ï R$() ð ÿ²(NUMH%(S%)): CURR% ð d ô S% ó NUMH%(S%): ‚ I ð CURR% ò  Î CURR% ò NUMH%(S%): R$(I ó CURR%) ð ÿ²(I): ƒ I: ‹ P$ ð "P" Ï � Œ :¢ � Ä åˆ¯‰ x: � TRY AGAIN1‰´‘: … "GALLERY # = ";S%: ‹ S% ñ  ø S% ï NPL% Ï ´ :¢ ‘ " ";PLACE$(S%)w‰¹‘ "CORRECT ? (Y/N) ";: � f: ‘: ‹ L$ ð "N" ø L$ ð "n" Ï ‘: ‰ ¹≾R$() ð ÿ²(GAL%(S%,)): ‚ I ð  Î GAL%(S%,): R$(I) ð ÿ²(GAL%(S%,I)): ƒ I: ‹ P: ‘ "MORE CHANGES? (Y/N/#)";: � f: ‹ L$ ð "Y" ø L$ ð "y" Ï ä6’‘: S% ð ÿ”(L$): ‹ S% ï  ÷ S% ñ  Ï é–’  #,L%: ‹ GAL$ ñï DISK$() Ï CURR% ð L%: � ˜: � ` : � CALL SUBS TO UPDATE GALLERY FILESî’ ‘ : ‘ "OTHER RECORDS TO BE CHANGED (Y/N) ";: � f: ‹ L$ ð "Y" ø L$ ð "y" Ï Ð “  Ž: � CLOSE FROM AND TO FILES OUT“4�9“5� MOVE A RECORD TO HISTORYÉ“>‹ NUME%(CURT%) ò NUMH%(CURT%) ïð d Ï ‘ "NO ROOM TO STORE HISTORY IN FILE": ‘ "KEY 'RETURN' TO CONTINUE CHANGES, 'ESC' TO QUIT ";: � f: Ž: � ð : ´ò I ñð ÿ«(R$()))œª Á #,ÿ«(R$(I)): � P: T ð T ò ÿ”(DISPL$()): � CREATE DISPL$(I)¢œ´ ‹ L ð  Ï ž DISPL$();ÿ˜( ó ÿ’(DISPL$()) ó ÿ’(DISPL$())); :¢ ž DISPL$();ÿ˜( ó ÿ’(DISPL$()) ó ÿ’(DISPL$()));<�¾ ž " ";DISPL$();ÿ˜( ó ÿ’(DISPL$())) ;DISPL$();" ";DISPL$();: ž Ù "#####.## "; ÿ”(DISPL$());:ž DISPL$();ÿ˜( ó ÿ’(DISPL$()));DISPL$()Ž�Ò ‹ I ü 2 ð  Ï P% ð P% ò : ‚ J ð  Î : ž : ƒ J: � ð : � NEXT PAGE HEADINGSï�Ü I ð I ò : µ: ‹ L ð  Ï ž: ž "TOTAL VALUE OF PRINTS AT1”HS% ð CURT% ô d ó NUMH%(CURT%):  #,S%: NUMH%(CURT%) ð NUMH%(CURT%) ò : � MOVE AND UPDATE HISTORYA”RL$ ð " ": ŽG”˜�m”™� UPDATE GAL% FILE DELETING CURR%³”¢PGAL% ð ÿ«(GAL$): ‹ PGAL% ð  Ï Ž: � PREVIOUS GALLERY ENTRY = ""û”§I ð : ´ò I ñð GAL%(PGAL%,) ÷ GAL%(PGAL%,I) ñï CURR%: I ð I ò : µs•¬ ‹ CURR% ñï GAL%(PGAL%,I) Ï ‘ "RECORD # ";CURR%;" NOT FOUND IN: ";PLACE$(PGAL%): ‘ "ANY KEY TO CONTINUE";: � f: ް•À‚ K ð I Î GAL%(PGAL%,) ó : GAL%(K) ð GAL%(K ò ): ƒ K:Ù•ÊGAL%(PGAL%,) ð GAL%( GALLERY = ";ÿ˜( );: ž Ù "####.##";Tõ�æ Ž žð � LPRINT HEADINGS%žú ‚ J ð  Î : ž : ƒ J ž ‹ L ð  Ï ž "FOR PRINTS AT: ";PLACE$(S%); ÿ˜(2 ó ÿ’(PLACE$(S%))); :¢ ž "FOR : ";TITLE$(S%); ÿ˜(2 ó ÿ’(TITLE$(S%)));áž ž "PAGE ";P%: ž: ž: ž ÿ˜();: ‹ L ð  Ï ž H$(); :¢ ž H$();Ÿ ž ÿ˜( );"ED # ";H$();" ";H$();H$();H$()Ÿ" Ž!Ÿ¸ �1Ÿ¹ � UTILITIES¨ŸÂ ‘ CLS$;CH$: ‘ "UTITLITIES OPTIONS:": ‘: ‘ "1 SUMMARY OF INFORMATION ON DISK": ‘ "2 DELETE A RECORD BY IT'S NUMBER" Ì ‘ "3 ADD A GALLERY TO LIST": PGAL%,) ó : Žß•` �–a � UPDATE GAL%(NGAL%) ADDING CURR%E–j NGAL% ð ÿ«(DISK$()): ‹ NGAL% ð  Ï Ž: � NEW GALLERY = ""å–t ‹ GAL%(NGAL%,) ïð GSIZE% ó  Ï ‘ "OVER ";GSIZE% ó ;" PRINTS AT : ";PLACE$(NGAL%);" CAN NOT UPDATE": ‘ "ANY KEY TO CONTINUE WITHOUT UPDATE ";: � f: ‘: Ž1—~ GAL%(NGAL%,) ð GAL%(NGAL%,) ò : GAL%(NGAL%,GAL%(NGAL%,)) ð CURR%: Ž7—Ä �‚—Å � SCREEN LIST REPORT BY TITLE OR BY GALLERY IF L = 4 FOR RECORDS IN R$­—Î I ð : T ð : � < : ´ò I ñð ÿ«(R$())ò—â Á #,ÿ«(R$(I)): � P: T‘ "4 ADD A TITLE TO LIST": ‘ "5 MOVE HISTORY (NOT READY)": ‘ "6 QUIT"S Ö ‘: ‘"WHICH ";: � f: ‘: L ð ÿŸ(ÿ”(L$)): ‹ L ñ  ø L ï  Ï Ö c à ‹ L ð  Ï Ž� ê • L �  ,€ ,ä ,H ,¬ ‹ ô ‰ ¸ ™  � SUMMARYÇ ! ‘ CLS$;CH$: ‘ "SUMMARY FOR JUDE'S PRINTS"5¡& I ð : � v : ´ò I ñð NTIT%: ‘ I Ð);TITLE$(I) Ð2);NUME%(I) Ð<);NUMH%(I) ÐF); d ó NUMH%(I) ó NUME%(I)`¡0 ‹ I ü  ð  Ï � d:‘ CLS$;CH$: � v —¡: I ð I ò : µ: ‘ "THAT'S ALL OF THEM... ";: � d:‘Ø¡D I ð : � { : ´ò I ñð NPL%: ‘ I Ð);PLACE$(I) ð T ò ÿ”(DISPL$()): � CREATE DISPL$(I)k˜ì ‹ L ð  Ï ‘ DISPL$();ÿ˜( ó ÿ’(DISPL$()) ó ÿ’(DISPL$())); :¢ ‘ DISPL$();ÿ˜( ó ÿ’(DISPL$()) ó ÿ’(DISPL$()));™ö ‘ " ";DISPL$();ÿ˜( ó ÿ’(DISPL$())) ;DISPL$();" ";DISPL$();: ‘ Ù "#####.## "; ÿ”(DISPL$());:‘ DISPL$();ÿ˜( ó ÿ’(DISPL$()));DISPL$()™ ‹ I ü  ð  Ï � ( ™ I ð I ò : µ: ‹ L ð  Ï ‘: ‘ "TOTAL VALUE OF PRINTS AT GALLERY = ";ÿ˜( );: ‘ Ù "####.##";T¸™ ‘: ‘ "THAT'S ALL ... ANY KEY TO CONTINUE";: � f: Žæ™( � PAUSE FALLIÐ2);GAL%(I,)¢N ‹ I ü  ð  Ï � d: ‘ CLS$;CH$: � { <¢X I ð I ò : µ: ‘ "THAT'S ALL OF THEM... ";: � d: ‘n¢b Ž: � AFTER PRINTING TITLE AND GALLERY HISTORYâv ‘ "# TITLE" Ð.);"# EDITIONS # HISTORIES SPACE LEFT": Ž: � HEADER FOR TITLES £{ ‘ "# GALLERY" Ð.);"# PRINTS AT GALLERY": Ž:� HEADER FOR GALERY£€ � DELETE A RECORD½£Š ‘ CLS$;CH$: ‘ "DELETING A HISTORY CREATES MORE SPACE FOR EDITIONS":… "TO DELETE A RECORD ENTER RECORD # = ";CURR%: ‹ CURR% ñ  ø CURR% ï NTIT% ô d Ï Š 5¤” Á #,CURNG THROUGH TO PRINT HEADINGSš2 ‘ : ‘ "ANY KEY TO CONTINUE ";: � f: cš< ‘ CLS$;CH$: ‹ L ð  Ï ‘ "FOR PRINTS AT: ";PLACE$(S%) :¢ ‘ "FOR : ";TITLE$(S%)�šF ‘ ÿ˜();: ‹ L ð  Ï ‘ H$(); :¢ ‘ H$();ÄšP ‘ ÿ˜( );"ED # ";H$();" ";H$();H$();H$()ÊšZ ŽÐšŒ �›� � LINE PRINT REPORT BY TITLE OR BY GALLERY IF L = 4 FOR RECORDS IN R$²›– ‘ CLS$;CH$: ‘ "READY FOR PRINTING ON LINE PRINTER - ALIGN TOP OF FORM": ‘ " TURN ON PRINTER OR KEY 'ESC' TO QUIT": � d: ‹ ÿ•(L$) ð  Ï Ž: � QUITä›  I ð :P% ð : T ð R%: GAL$ ð DISK$(): � : ‘: ‘ "THIS RECORD TO BE DELETED ? (Y/N) ";: � f: ‘: ‹ L$ ð "N" ø L$ ð "n" Ï Ž©¤ž ‚ I ð  Î : É DISK$(I) ð ÿ²(): ƒ I: I ð CURR%ýd ò : CURE% ð CURR% ü d: ‹ CURE% ð  Ï CURE% ð d: I ð I ó ò¤¨ ‹ CURE% ð NUME%(I) Ï NUME%(I) ð NUME%(I) ó : � DELETED LAST EDITION\¥² ‹ CURE% ñ e ó NUMH%(I) Ï Â #,CURR%: � ˜: Ž:� DELETE RECORD AND GAL$ FROM GALLERY LIST ITS CURRENT�¥· � SHIFT HISTORIES TO MAKE ROOM ONE WAS DELETED$¦¼ ´ò CURE% ï e ó NUMH%(I): Á #,CURR% ó :  #,CURR%: ÿäa� MDBM-R11 ON 1/24/84Cb� NEW SYSTEM LEAVE RA OPEN ALL THE TIME & ALWAY READING K = 1 TO B FOR SEQUENCE OF RECORDS™b� REPLACE R$ AND Z$ WITH ST$: WHERE R$ WAS USED FOR TYPE OF REPORT SEARCH USE RN$çb� IN REPORT AND LIST SET S%(1,VAL(N$(J,0))) = 0 FOR SPEED NOT ALL S%(1,J).c� GETTING RID OF RN$ MEANS EXTRA DISK READ AT 3725 DELETE SUB 4440qc� MAKE CHANGES IS A SUBROUTINE POSSIBLE ALL BRANCHES SHOULD BE|c2 ‰ è²cd‘ "ANY KEY TO CONTINUE";: � FALL THROUGH TO PAUSEõcfL$ ð Ý: ‹ ÿ’ (L$) ðCURR% ð CURR% ó : CURE% ð CURE% ó : µ: � SHIFT ALL NOW DELETE LAST WHICH IS DOUBLE ENTRYu¦Æ NUMH%(I) ð NUMH%(I) ó : ‚ I ð  Î : É DISK$(I) ð ÿ²(): ƒ I:  #,CURR%: އ¦ä � ADD A TITLEá¦î … "NEW TITLE = ";T$: ‘ T$: ‘ "CORRECT ? (Y/N) ";: � f: ‹ L$ ñï "Y" ÷ L$ ñï "y" Ï Ž[§ø ‚ I ð  Î NTIT%: R$(I) ð TITLE$(I): ƒ I: NTIT% ð NTIT% ò : NR% ð NTIT%: R$(NR%) ð T$: NUME%(NR%) ð : NUMH%(NR%) ð Чý ‚ I ð  Î NH%: É DISK$(I) ð ÿ²(): ƒ I: ‚ I ð d ô (NTIT% ó ) ò  Î d ô NTIT%:  #,I: ƒ I: � INITIALIZE  Ï f: :¢ Ž: � SIMULATE APPLESOFT GET L$Ndi‘ CH$;ESC$;ÿ‚(ÿ“(CP),ÿ’(ÿ“(CP))ó);"B";: Ž: � ABSOLUTE VERT POSITION BELOW LEFT EDGEédj� PRINTING ESCAPE SEQUENCE CONFUSES BASIC, IT THINKS CURSOR MOVE RIGHT BY # OF PRINTABLE CHARACTERS IN SEQUENCE-GIVE LINE FEED AFTER 80 PRINTABLE CHARpek� IN SUB 120 SAVE CUSOR POSITION, ISSUE LINE FEED TO CLEAR BASIC LINE COUNT THEN RESTORE CURSOR WITH ESC 7 & 8 IN LINE 124 AND 122¸ex� PRINT OLD$ THEN CHANGE TO REP$ WITH SCREEN COPY USING GET SUB 102fzREP$ ð "":‹ ÿ EMPTY¨ F$ ð "TITLES.NAM": � :‰ ˜ : � DO RESTART¨H � ADD A GALLERYq¨R … "NEW GALLERY = ";T$: ‘ T$: ‘ "CORRECT ? (Y/N) ";: � f: ‹ L$ ñï "Y" ÷ L$ ñï "y" Ï ŽØ¨\ ‚ I ð  Î NPL%: R$(I) ð PLACE$(I): ƒ I: NPL% ð NPL% ò : NR% ð NPL%: R$(NR%) ð T$: GAL%(NR%,) ð õ¨f F$ ð "PLACES.NAM": � G©˜ ‘:‘:‘" PROGRAM WILL SAVE NEW NAMES AN START OVER": � d: RESTART% ð : ‰ \©¬ � MOVE HISTORIESo©­ Ž: � NOT READY쩱 � ON POSSIBILITY IS TO PRINT THEM FOR PERMANENT RECORD AND THEN DELETE THEM. SIMPLE BU’(OLD$) ï  Ï ‘ ÿ–();"7":‘ ÿ–();"8";:‘ OLD$:‘ ÿ–();"8";pf|‘ ÿ–();"7";:� f: ‘ : ‘ ÿ–();"8";: ‹ ÿ•(L$) ï  ÷ ÿ•(L$) ñ  Ï ‘ L$;: REP$ ð REP$ ò L$: ‰ |†f~‹ ÿ•(L$) ð  Ï Žêf€‹ ÿ•(L$) ð  ÷ ÿ’(OLD$) ï ÿ’(REP$) Ï REP$ ð REP$ ò ÿƒ(OLD$,ÿ’(REP$) ò ,): ‘ ESC$ "1C";: ‰ ‚g�‹ ÿ•(L$) ð  Ï REP$ ð REP$ ò " ":‘" ";Èg‚‹ ÿ’(REP$) ï  Ï ‹ ÿ•(L$) ð  ø ÿ•(L$) ð  ø ÿ•(L$) ð  Ï ‘ ESC$ "1D";: L$ ð ÿ‚(REP$,): REP$ ð ÿ�(REP$,ÿ’(REP$) ó ): ‹ ÿ’(OLD$) ï ÿ’(REP$) Ï ÿƒ(OLD$,ÿ’(REP$) ò ,) ð L$ÒT NOT WONDERFUL FOR MARKETING INFOpª¶ I GUESS A BETTER WAY WOULD BE Î MAKE ANOTHER DISK OF HISTORIES ÷ FILL IT NO EDITIONS REQUIRED SAME PROGRAM WOULD WORK (I THINK)vªˆ�‰ª‰� PRINTER SUBSÕª< � ERROR HANDLING FOR MBASIC-RESUME IF FILE NOT FOUND, ELSE PRINT ERROR*«F‹ × ð 5 ÷ ÿ�(F$,) ð "GAL." Ï © P: :¢ ‘"ERROR ";×;" AT LINE ";Ö: • ¨ ‰ : �`«PŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED Ž«nž ESC$;"1w";: Ž : � SET PRINTER TO 80 COL¼«‚ž ESC$;"4w";: Ž: � SET PRINTER TO 132 COLINT CALLIg„‰ |h� � FORMATE DATE(MO/DAY/YR) INTO NUMBER FOR NUMERICAL SORT OF ST$(J)xh• ‚ I ð  Î NR:DT$ ð ST$(I): � ¤:ST$(I) ð DT$: ‹ DT$ ð "" Ï ST$(I) ð ÿ“ ( ÿ” (ST$(I)))�hš ƒ I�hŸL ð : Ž Li¤ � FORMAT DATE(MO/DAY/YR)=DT$ INTO NUMBER OF GREGORIAN CALENDAR DAYS SINCE 1/2/0000:NOTE USE OF INTEGER ARITHMETIC,NO DATES AFTER YEAR 2730 OR BEFORE 99, TWO DIGIT YEAR OK FOR 1900'S‰i® ‚ II ð  Î ÿ’ (DT$): ‹ ÿƒ (DT$,II,) ñ ï "/" Ï ƒ IIÆi¸MO% ð ÿ” ( ÿ� (DT$,II ó )): ‹ MO% ï  Ï � X: ‰ åiÂP: ‘ "-";: ƒ I: ‘: :¢ ‚ I ð  Î P : ž "-";: ƒ I: ‹ PF ð  Ï ž: :¢ ‚ I ð Q Î „: ž "-";: ƒ I: ž¸œÙ LL% ð : ‚ I ð  Î RH: SP% ð K(ôIó) ó LL% : ‹ AC(I) ñï  Ï LL% ð K(ôIó) ò ÿ’(ÿ“(AC(I))):‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);êœÞ ‹ AC(I) ñï  Ï ‹ PF ñ Ï ‘ AC(I); :¢ ž AC(I);N�ü ƒ I: ‹ GT ñ ï  Ï SP% ð K( ô I ó ) ó LL%: ‹ SP% ï  Ï ‹ PF ñ Ï ‘ ÔSP%);GT: :¢ ž ÔSP%);GTo�‹ GT ð  Ï ‹ PF ñ  Ï ‘ :¢ žu�ŽÎ� ‘ CLS$;CH$; : ‘ RN$(NN)" REPORT FOR :": ‘ : ‚ I ð  Î ÿ” (R$()): ‘ R$(I): ƒ I ‚ JJ ð II ò  Î ÿ’ (DT$) jÌ ‹ ÿƒ (DT$,JJ,) ñ ï "/" Ï ƒ JJVjÖ ‹ JJ ï ð ÿ’ (DT$) Ï � X: ‰ : � 2ND / NOT FOUND WITHIN DT$›jàYR% ð ÿ” ( ÿ‚ (DT$, ÿ’ (DT$) ó JJ)): ‹ YR% ñ c Ï YR%ðl ò YR%êjêDA% ð ÿ” ( ÿ‚ ( ÿ� (DT$,JJ ó ),JJ ó II ó )): ‹ DA% ï  Ï � X: ‰ Bkô � CHANGE TO GREGORIAN #:REMAINDER OF #/7 IS DAY OF WEEK,REM=0 IS MON,REM=6 IS SUNokù ‹ MO% ñ  Ï MO% ð  ô (MO% ó ): ‰  µkþ ‹ YR% ð  ô ÿ… (YR% õ ) Ï MO% ð ÿ…(ÍÌt… ô MO% ó 33{…): ‰  ×kMO% ð ÿ…(ÍÌt… ôR)): † NH(),H$(NH ò ),H%(NH): ‚ I ð  Î NH:H$(I) ð ST$(I): H%(I) ð : ƒ I:NR ð : H$()ð "REC#":NH() ð NH:NH() ð : ‹ NH ñ ð  Ï NH() ð NHÀt’MP ð ÿ… ((NH ó ) õ ): ‹ NH ï ( Ï NH() ð (:NH() ð NH: ‹ NH ï < Ï NH() ð <:NH() ð NHuœMEM ð ÿ�():B ð ÿ… (MEM õ (( ò LV%) ô (NH ò ))): ‹ B ï  Ï B ð 4u¦ † N$(B,NH ò ):F$ ð ".IND": • ¨ ‰ Þ�u°FILE$ ð DRIVE$ ò PDB$ ò F$:¿ "R",#,FILE$,LV% ò : À #,LV% ò  AS IN$: � LEAVE OPENŸuº � : ‰ ʪuÎ� SORTÙuÓF$ ð ".IND":J ð ó : �  MO% ó š™†)!l DT$ ð ÿ“ (YR% ô m ò (YR% ó)ý ó YR%ýd ò YR%ý� ò MO% ò DA% ó ))l Ž DlX � ERROR SUBROUTIUNEnlb ‘ "DATA FORMAT ERROR IN DATE = ";DT$vll Ž ”lŠ� SELECT A RANGE OF DATESìlž ‘ CLS$;CH$; : CP ð  : � i : ‘ "INPUT RANGE OF DATES FOR:": ‘ S": "H$(S): ‘ : ‘ pm£ … "LOWEST DATE ACCEPTED= ";DT$:ST$( ÿ” (ST$())) ð RN$() ò " " ò STRN$ (S) ò ":" ò H$(S) ò " = " ò DT$: � ¤:L ð ÿ” (DT$)÷m¨ ‘ : … "HIGHEST DATE ACCEPTED= ";DT$:RN$( ÿ” (RN$())) ð RN$( ÿ” (RN$())) ò " TO " ò: ‘ "SORTING ";ïuÕ ‹ L ð  Ï � �=vØ ‚ I ð  Î NR:S%(,I) ð : ƒ I: ‚ I ð  Î NR: ‚ J ð  Î NR: • L ‰ ö, ovö ‹ ST$(I) ð ï ST$(J) Ï S%(,I) ð S%(,I) ò zv ‰ ¸v  ‹ ÿ” (ST$(I)) ð ï ÿ” (ST$(J)) Ï S%(,I) ð S%(,I) ò :w ƒ J: ƒ I: ‘ "SORTING ";: ‚ I ð NR Î  Ñ ó : ‚ J ð NR Î  Ñ ó : ‹ I ñ ï J Ï ‹ S%(,I) ð S%(,J) Ï S%(,J) ð S%(,J) ó \w< ƒ J: ƒ I: ‘ "SORTING ":J ð ‚wZ ‹ S%(,J) ð J Ï J ð J ò : ‰ Z™wd ‹ J ï ð NR Ï ŒÓwnZ ð S%(,S%(,J)):S%(,S%(,J)) ð S%(,J):S% DT$: � ¤:LL ð ÿ” (DT$): ‘ : ‘ "SEARCHING"pn­NS ð : ‚ J ð  Î NR:DT$ ð ST$(J): � ¤: ‹ ÿ” (DT$) ï ð L ÷ ÿ” (DT$) ñ ð LL Ï NS ð NS ò S%(,J): :¢ S%(,J) ð }n² ƒ J: Ž ºní � SEARCH FOR A STRING MATCH WITH ANY FIELD CHARACTERSænîNS ð : ‘ : ‘ S": "H$(S)" = ";: … "";Q$'oóL ð ÿ’ (Q$): ‚ J ð  Î NR:LL ð ÿ’ (ST$(J)): ‹ L ï LL Ï Loø ‹ L ð LL Ï ‹ Q$ ð ST$(J) Ï  ‰o ‚ I ð  Î LL ò  ó L: ‹ ÿƒ (ST$(J),I,L) ñ ï Q$ Ï ƒ I¥o ‹ I ï LL ò  ó L Ï Åo  ‹ RNG$ ð "Y" Ï S%(,J) ð Gp(,J) ð ZxxZ ð S%(,S%(,J)):S%(,S%(,J)) ð S%(,J):S%(,J) ð Z: ‰ ZƒxŒ ‘ "": ‘ "WANT TO SAVE THE "DB$" FILE": ‘ "SORTED BY "H$(S)" TO DISK ";: … "(Y/N)";L$: ‹ L$ ñ ï "Y" Ï Êšx–F$ ð ".IND": ‰ 3 ¬x MF ð : � (øxª … "ENTER # OF FIELD FOR SORT ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï ª]y´ ‘ : ‘ "DO YOU WANT TO SORT: ";H$(S): ‘ : ‘ "1 ALPHABETICALLY": ‘ "2 NUMERICALLY": ‘ "3 BY DATE"·yÒ ‘ : … "WHICH ";L$:L ð ÿ” (L$):‹ L ñ  ø L ï  Ï ‰ Ò: :¢ ‘ : ‘ "SORTING ";: ‰ ÓÆyð � <: � ÑyúNS ð NS ò S%(,J): ƒ J: ‹ RNG$ ñ ï "Y" Ï RN$( ÿ” (RN$())) ð RN$() ò " AC MATCH, WITH " ò ÿ“ (S) ò ":" ò H$(S) ò "= " ò Q$Op Ž rp ‹ RNG$ ñ ï "Y" Ï S%(,J) ð }p ‰ •pè Ã: ’ : ‘ CLS$;CH$;òpò MR ð È: † S%(,MR),ST$(MR): ‚ I ð  Î MR:S%(,I) ð I:S%(,I) ð : ƒ I: � SET REC SPACE7q † AC(),K(A),RN$():PDB$ ð "":F$ ð "BASENAME.RA": • ¨ ‰ 2 ³q$† PF$(): PF$() ð "OFF": PF$() ð "ON FOR 80 COLUMNS": PF$() ð "ON FOR 132 COLUMNS": � PRINTER STATUS CODES SET BY PF-r%ESC$ ð ÿ–() ò "[NR ð  z ‘ CLS$;CH$; : ‘ "PRESS 'RETURN' TO EXIT TO MENU": ‘ >z ‘ "HEADER FOR ROW NUMBER ";NR;: … ":",ST$(NR)uz" ‹ ST$(NR) ñï "" Ï NR ð NR ò : ‹ NR ñð MH Ï ‰  {@‘ CLS$;CH$: CP ð  : � i: … "MAXIMUN HEADER FIELD LENGTH = ",LV%:ST$(NR) ð ÿ“(LV%): ‹ LV% ñ  ø LV% ï P Ï ‘ "REENTER FIELD LENGTH MUST BE IN RANGE 10 - 80": ‰ @2{J � ¸: ‰ ƒ…{T ‘ CLS$;CH$:PP ð :NR ð NR ò :J ð NR:S%(,J) ð J: S%(,J) ð :N$(B,) ð ÿ“(J)Í{h‘"YOU ARE ENTERING RECORD #";NR;: ‹ NH ï  Ï ‘ " PP= ";PP": CH$ ð ESC$ ò "H": CLS$ ð ESC$ ò "2J": MCU$ ð ESC$ ò "1A": MCD$ ð ESC$ ò "1B": CLL$ ð ESC$ ò "2K"ªr&� ESCAPE SEQUENCES TO MOVE CURSOR, WHEN PRINTER: CURSOR HOME, CLEAR SCREEN, MOVE CURSOR UPT OR DOWN ONE LINE, CLEAR LINEèrL‘ CLS$;CH$:‘"INSERT DISK TO BE USED IN AVAILABLE DRIVE":‘GsQ‘ "ENTER DRIVE TO BE USED (A,B,C,D) = ";: � f: ‘ L$: L ð ÿ•(L$): ‹ L ñ A ø L ï D Ï QgsV ‘: DRIVE$ ð L$ ò ":": ‘: ‘ys` � : ‰ ¦ �stMH ð P:F$ ð ".HDR": • ¨ ‰ ð©s~ � ]tƒNH ð NR ó : LV% ð ÿ” (ST$(Nò; |j ‘ : ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);":": ƒ If|� ‘ CH$;ESC$;"3B";: ‚ I ð  ò  ô PP Î NH(PP): ‘ I" "H$(I);: … ":",N$(B,I) : ƒ I: ‘ «|š … "ENTRIES OK?..Y/N/#....";L$: ‹ L$ ð "N" Ï ‘ CLS$;CH$; : ‰ hI}¤LL ð ÿ” (L$): ‹ LL ï  ÷ LL ñ ð NH(PP) Ï ‘ CLS$;CH$; : � ä: ‘: CP ð LL ó  ô PP: � i:‘ LL" ";H$(LL)": ";: OLD$ ð N$(B,LL): � x: N$(B,LL) ð REP$‰}® ‹ LL ï  Ï CP ð NH(PP) ó  ô PP ò : � i: LL ð : ‰ š§}² ‹ PP ð  Ï PP ð : ‰ ¸Ò}³ ‹ NH ï  Ï PP ð : ‘ CLS$;CH Ï P$ ð ""/†> ‘ CLS$;CH$; : � ä: ‘ "CHANGE WHICH " ò P$: … "LINE #= ";S$: ‹ S$ ñ ï "" Ï ‰ RG†? ‹ NH ñ  Ï ‰ Rk†@PP ð PP ò : ‹ PP ï MP Ï PP ð v†B ‰ >Ÿ†RS ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï µ»†\PP ð ÿ… ((S ó ) õ )Ô†b ‘ CLS$;CH$; : � äx‡f ‘ : CP ð S ó  ô PP : � i: ‘ S;" ";H$(S);": ";: OLD$ ð N$(B,S): � x: N$(B,S) ð REP$: ‘ CLS$;CH$; : � ä: … "* MORE CHANGES (Y/N/#)";L$: ‹ L$ ð "Y" Ï >³‡h ‹ ÿ” (L$) ï  ÷ ÿ” (L$) ñð NH Ï S ð ÿ” (L$): ‰ \Pˆ˜ ‘ : … "* OTHER R$: ‰ h~¸ F$ ð ".IND": � Ì: � ¸: ‘ : … "MORE (Y/N) ";L$: ‹ L$ ð "Y" Ï T&~Ö ‰ Ê;~ôL ð :PP ð : � T~ ‘ CLS$;CH$; : � (�~:CP ð NH(O) ò : � i: ‹ CD ð  Ï ‘ Ð); NH ò ;" MAKE CHANGES";Á~N ‘ : … "WHICH ";S$:S ð ÿ” (S$)á~X ‹ S ñ  ø S ï NH ò  Ï Nb ‹ S ð NH ò  Ï �  : ‰ ʧg ‘ CLS$;CH$; : ‘: ‘ "OPTIONS FOR :";H$(S): ‘ : ‘ "KEY 'RETURN' TO MATCH FIRST CHARACTERS": ‘ "'SPACE' TO MATCH ANY CHARACTERS": ‘ "'ESC' FOR A RANGE OF DATES"éj� f:L ð ÿ• (L$): ‹ L ñ ï ECORDS TO BE CHANGED ? Y/N/#.";L$: ‹ L$ ð "Y" Ï … "* DO YOU KNOW THE REC # ? Y/N..";CD$: ‹ CD$ ð "Y" Ï … "* RECORD # = ...";L$�ˆš ‹ ÿ” (L$) ï  ÷ ÿ” (L$) ñ ð NR Ï � Ì: J ð ÿ” (L$)­ˆ¢ ‹ L$ ð "N" ø L$ ð "" Ï ¶Ɉ§‹ J ï  Ï � : ‰ 9Ûˆ¬CD ð : ‰ ô ‹ CD ð  Ï Ê9‰¶F$ ð ".IND": ‘ "** FILING CHANGES - PLEASE WAIT **": � Ì:CD ð :: ŽA‰À � X‰Å ‹ PF ï  Ï ‰ I–‰Ê ‘ " ";H$();": ";J;: ‹ NH ï  Ï ‘ Ð#) "PP= ";PP ò ;ü‰Þ ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I); ÷ L ñ ï  ÷ L ñ ï  Ï j€l ‹ ÿ• (L$) ñ ï  Ï ‘ : ‘ H$(S);: … " = ",Q$®€q ‘ : ‹ ÿ• (L$) ñ ï  Ï … "RANGE? Y/N ";RNG$: ‹ RNG$ ð "Y" Ï � (: ‘ : ‘ "RANGE FROM "S;: … " TO #= ";L$:FL ð ÿ” (L$): ‹ FL ï NH Ï qè€v ‚ J ð  Î NR:S%(,J) ð : ‹ S ð  Ï ST$(J) ð ÿ“ (J)ñ€x ƒ JP�{ ‘ CLS$;CH$; : ‘ Ð); "SEARCHING LINE "S" OF ALL RECORDS":L ð : ‹ S ï  Ï J ð ó : � |�€ ‹ ÿ• (L$) ð  Ï NS ð : � ó: ‰ ž¡�… ‹ ÿ• (L$) ð  Ï � Š: ‰ žå�ŠNS ð : ‚ J ð  Î NR: ‹ Q$ ð "" Ï ‹": ";N$(J,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PPŠ Ž 8Š$ F$ ð ".IND": � DELETE RECORDS & DISK SORT [Š& ‚ J ð  Î NR:S%(,J) ð : ƒ J»Š( ‘ CLS$;CH$; : ‘ : … "ENTER THE REC# TO BE DELETED...";DR$:DR ð ÿ” (DR$): ‹ DR$ ð "" Ï . ÙŠ* ‹ DR ñ  ø DR ï NR Ï ( 8‹, J ð DR:PP ð : � : � ä: … "** DELETE THIS ONE.?.Y/N..";DR$: ‹ DR$ ð "Y" Ï S%(,J) ð w‹. ‘ : … "DELETE ANOTHER RECORD ? Y/N ";L$: ‹ L$ ð "Y" Ï ( À‹0 NS ð : ‚ J ð  Î NR: ‹ S%(,J) ð  Ï NS ð NS ò :S%(,NS) ð S%(,J);Œ2 ƒ J: ST$(J) ñï "" Ï S%(,J) ð &‚� ‹ Q$ ñ ï "" Ï ‹ ÿ� (ST$(J), ÿ’ (Q$)) ñï Q$ Ï S%(,J) ð A‚�NS ð NS ò S%(,J): ƒ Js‚ž ‹ RNG$ ð "Y" Ï S ð S ò : ‹ S ñ FL ò  Ï {Š‚² ‹ NS ï  Ï � ™ž‚³ ‹ CD ð  Ï ¶[ƒ¼S ð S ó :RNG$ ð "N": ‘ CLS$;CH$; : CP ð  : � i : ‘ "THAT'S ALL OF THEM. SELECT:": ‘ : ‘ "1 DO MORE SEARCHES": ‘ "2 MAKE CHANGES IF YOU KNOW THE REC#": ‘ "3 RETURN TO MAIN MENU":­ƒî CP ð : � i : ‘ Ô);: … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï  Ï îă • S ‰ , ,ÊÛƒ  DR ð NR ó NS:J ð : � :NR ð NS: � ¸: ‚ J ð NR ò  Î NR ò DR:S%(,J) ð : ƒ J: � STORES NEW NR VAL ON DISK]Œ3 NS ð : � DISK SORT FOLLOWS‰Œ4 ‚ J ð  Î NR: ‹ S%(,J) ñ ï NS Ï ƒ JÆŒ5 ‹ NS ð J Ï ‰ B : � RECORD IN CORRECT DISK LOCATION�6 ‹ J ï NR Ï L ð NR ò :S%(,L) ð NS: ‰ : : � DON'T NEED TO SAVE REC S%(0,J)ƒ�8 � :L ð J: ‚ I ð  Î NH:ST$(I) ð N$(B,I): ƒ I: � TEMP STORE REC FROM DISK LOCATION J IN ST$(I) Å�: J ð NS: � :J ð L: � Ì: � STORE REC IN NEW ORDER ON DISCBŽ< ‹ PF ñ ï  Ï  „  ‹ CD ð  Ï ‘ "** RETURN=CONT **SPACE=CHANGE ** Q=QUIT": ‰ M„ ‘ "RETURN=CONT ESC=MENU SPACE=CHANGE"o„ � f: ‹ ÿ• (L$) ð  Ï >Š„ ‹ ÿ• (L$) ð Q Ï ¶¥„ ‹ ÿ• (L$) ð  Ï ÊÄ ‹ ÿ• (L$) ñ ï  Ï ß„L ð : ‘ CLS$;CH$; : Ž ç„  � …% ‘ CLS$;CH$;: ‘ ESC$;"10B"; o…* ‘ "ENTER THE NUMBER OF THE RECORD": … "YOU WANT TO CHANGE.....";J$:J ð ÿ” (J$): ‹ J$ ð "" Ï è‹…/ ‹ J ñ  ø J ï NR Ï *•…4� Ö…9PP ð :P$ ð "(KEY RETURN FOR OTHER PP)": ‹ NH ñ ‹ L ñð NR Ï ‚ I ð  Î NH: N$(B,I) ð ST$(I): ƒ I: J ð NS: � Ì:S%(,L) ð L:� PUT OTHER RECORD BACK ON DISK IN EMPTY SLOTtŽB S%(,NS) ð NS:NS ð NS ò : ‹ NS ñ ð NR Ï 4 ŽD ‰ 舎¦ � �° ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ J ð  Î NR: ‘ J;" ";ST$(J): ƒ J: ‘ : ‘ J;" CREATE A NEW DATA BASE": ‹ J ï  Ï ‘ J ò ;" DELETE A DATA BASE"(�â ‘ [�ì … "WHICH ";S$:S ð ÿ” (S$): ‹ S ð J ò  Ï d �� ‹ S ñ  ø S ï J Ï ‘ ÿ– ();: ‘ MCU$;CLL$;ESC$;"10D"; ‰ ì Å� DB$ ð ST$(S): ‹ S ñ ï NR ò  Ï P Ô� K() ð : ‰ N *˜D K(I ò ) ð ÿ” (A$): ‹ K(I ò ) ñ  ø K(I ò ) ï ƒ Ï ‘ "": ‘ MCU$;: ‰ 0 ?˜N ‹ NH ñ  Ï ‘ ·˜S ‚ I ð  Î NH:H%(I) ð : ƒ I: ‚ I ð  Î RH ô  Ñ :H%(K(I)) ð : ƒ I: � SET H%(I)=1 FOR HEADERS REQUIRED IN REPORTטX ‹ K() ð  Ï T9 ð : ‰ b ™Y ‹ K() ð  Ï K() ð :T9 ð : ‰ b J™Z ‹ K() ð  Ï … "VERTICAL TOTALS ALSO? Y/N ";L$: ‹ L$ ð "Y" Ï T9 ð q™[ ‹ K() ð  ÷ L$ ñ ï "Y" Ï T9 ð  šb ‘ "'RETURN' WILL SELECT ALL RECORDS.": … "SELECT RECORDS BY WHICH HEADER #";S$:S ð ‘ : ‰ F �2 � <:J ð : ‘ "THERE ARE NO RANDOM ACCESS DATA BASES ON THIS DISK"u�7 ‘"'RETURN' TO CREATE ONE, 'ESC' TO QUIT ";: � f: ‘ L$:‘: ‹ ÿ•(L$) ð  Ï è :¢ ‘‘F ‘"READY TO CREATE A NEW DATA BASE":‘ "FIRST 8 CHARACTERS OF NAME MUST BE UNIQUE": … "NAME FOR NEW DATA BASE FILE :",ST$(J): NR ð J: � ¸:DB$ ð ST$(NR)c‘P PDB$ ð DB$: ‹ ÿ’(DB$) ï  Ï PDB$ ð ÿ�(DB$,):� FILE NAME CAN'T EXCCED 8 CHRm‘U ‰ tu‘d � ä‘n ‘ : … "DELETE WHICH : ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï J ó  Ï ‘ ÿ– ();: ‘ M ÿ” (S$): ‹ S$ ñ ï "" Ï ‹ S ñ  ø S ï NH Ï ‘ "REENTER": ‰ b ~šg F$ ð ".IND":RN$() ð "0":RN$() ð "ALL RECORDS": ‚ J ð  Î NR:S%(,J) ð : ƒ J: ‹ S$ ð "" Ï RN$() ð "1": ‰ ” <›j ‘ CLS$;CH$;:‘:‘"SEARCH OPTIONS FOR: ";H$(S):‘:‘"KEY 'RETURN' TO MATCH FIRST CHARACTERS IN HEADER FIELD-FC":‘" 'SPACE' TO MATCH ANY CHARACTERS-AC":‘" 'ESC' FOR A RANGE OF DATES": ‘|›l � f: ‹ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  Ï ‰ j Á›n ‹ S ð  Ï ‚ J ð  Î NR:ST$(J) ð ÿ“ (J): ƒ J: :¢ J ð ó: � ÿ›p RN$(CU$;CLL$;ESC$"20D";: ‰ n ‰’‚ ‘ CLS$;CH$; : ‘ ESC$;"9B": ‘ "READY TO DELETE " ;ÿ– (");ST$(S); ÿ– (");".": ‘ : ‘ "ONCE DELETED, THIS DATA CANNOT BE": ‘ "RECOVERED. ARE YOU SURE THAT YOU"“Œ ‘ "WANT TO DELETE IT? (Y/N) ";:… "",S$: ‹ S$ ñï "Y" Ï ¦ : :¢ PDB$ ð ST$(S) : ‹ ÿ’(ST$(S)) ï  Ï PDB$ ð ÿ�(ST$(S),)h“´ PDB$ ð DRIVE$ ò PDB$: ‘ CLS$;CH$; : ‘ ESC$;"11;11H" : ‘ "[ DELETING DATABASE ]": • ¨ ‰ ð Ñ“È F$ ð ".RFN": � : ‚ I ð  Î NR: FILE$ ð PDB$ ò ".R" ò ÿ‚(ÿ“(I),ÿ’(ÿ“(I)) ó): È FILE$: ƒ I) ð ÿ“(ÿ”(RN$()) ò ): ‹ ÿ•(L$) ð  Ï � Š: ‰ ~ œr ‹ ÿ•(L$) ð  Ï � î:‰ ~ œt ‘ S;": ";H$(S);: … "= ",Q$: NS ð : ‚ J ð  Î NR: ‹ Q$ ð "" Ï ‹ ST$(J) ñï "" Ï S%(,J) ð œu ‹ Q$ ñ ï "" Ï ‹ Q$ ñ ï ÿ� (ST$(J), ÿ’ (Q$)) Ï S%(,J) ð D�v ‹ ÿ• (L$) ñ ï  Ï NS ð NS ò S%(,J): ƒ J:RN$( ÿ” (RN$())) ð RN$() ò " FC MATCH, WITH " ò ÿ“(S) ò":" ò H$(S) ò "= " ò Q$Ï�~ ‘ CLS$;CH$; : ‚ I ð  Î ÿ” (RN$()): ‘ RN$(I): ƒ I: ‘ : ‘ "WITH THE SELECTIONS ABOVE, THE REPORT": ‘ "WILL CONTAIN "NS" RECORDS: ‰ ú Þ“ð � <: ”ú FILE$ ð PDB$ ò ".IND": ¿ "O",#,FILE$: Ã: È FILE$K” FILE$ ð PDB$ ò ".RFN": ¿ "O",#,FILE$: Ã: È FILE$Ä” FILE$ ð PDB$ ò ".HDR": ¿ "O",#,FILE$: Ã: È FILE$: PDB$ ð "":F$ ð "BASENAME.RA": � : ‹ NR ð  Ï È FILE$: ‰ è •J ‚ I ð S Î NR ó :ST$(I) ð ST$(I ò ): ƒ I:NR ð NR ó : � ¸: ‰ ¦ •| � Q•† T9 ð : ‘ CLS$;CH$; :E ð : ‚ I ð  Î A:K(I) ð : ƒ I‹•¤ ‚ I ð  Î :AC(I) ð : ƒ I:HC ð :GT ð : • E ‰ N –•¸ ‰ d– ‘ : ‘ "NO MORE THAN 21 HEADERS ALLOWED": … "HO": ‘ =ž… ‘ "KEY 'RETURN' TO RUN REPORT,OR": ‘ "ANY OTHER KEY FOR ANOTHER SELECTION": � f: ‹ ÿ• (L$) ð  Ï ” µžŠ ‘ CLS$;CH$; : � (: ‘ : … "SELECT RECORDS BY HEADER # = ";L$:S ð ÿ” (L$): ‹ S ñ  ø S ï NH Ï ‘ "REENTER": ‰ … Àž� ‰ j õž’ ‹ E ð  Ï Ž : � FOR SELECT HEADERS SUB @ 3170Ÿ” J ð ó: S ð ó: � CŸž ‚ I ð  Î RH ò : ‹ K( ô I ó ) ï K Ï PF ð xŸ¨ ƒ I: • PF � n,‚, : � : ‹ K ð  Ï ‰  �Ÿ² ‚ J ð  Î K: � p ·Ÿ¼ ‹ PF ñ  Ï ‹ L ï  Ï � d: � òŸÐ ‘ : S%(,ÿ”(NW MANY HEADERS ";RH$:RH ð ÿ” (RH$): ‹ RH ñ  ø RH ï  Ï  (–Ì ‹ E ð  Ï RPTN$ ð "PRESENT"B–Ö ‚ I ð  Î RH ô  Ñ Ã–à ‘ "ENTER # OF HEADER YOU WANT IN": ‘ "POSITION #"(I ò ) õ " ";: … "";K$:K(I) ð ÿ” (K$): ‹ K(I) ñ  ø K(I) ï NH ò  Ï à )—ô ‘ "ENTER TAB FOR "H$(K(I))" ";: … "";K$:K(I ò ) ð ÿ” (K$): ‹ K(I ò ) ñ  ø K(I ò ) ï ÿ Ï ô w— ‘ "TOTAL ON "H$(K(I))" (Y/N) ";: … L$: ‹ L$ ð "Y" Ï K(I ò ) ð:K() ð •— ƒ I: ‹ K() ñ ï  Ï N Ù—0 … "ENTER TAB FOR TOTAL: ";A$: ‹ ÿ’ (A$) ð  Ï $(J,))) ð : ƒ J: ‹ N$(,) ð "0" Ï   Ú J ð ó :S ð ó : � : ‰ ² 3  • T9 � Ô : • E ‰ R W / ‹ K() ð  ÷ T9 ð  Ï K() ð Å > ‘ : ‘ "DO YOU WANT TO SAVE THE FORMAT": … "FOR THIS REPORT TO DISK (Y/N) ";L$: ‹ L$ ð "Y" Ï E ð : � ˆ)¡R ‘ : ‘ "MORE REPORTS USING THE "RPTN$" FORMAT": … "(Y/N) ";L$: ‹ L$ ð "Y" Ï � (:E ð : ‰ ¤ Q¡f ‚ I ð  Î NH:H%(I) ð : ƒ I: ‰ ʵ¡p LL% ð : ‚ I ð  Î RH: SP% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);¢u LL% ð K(ôIó) òÏ ‘ ÔLL% ó ); ª7‹ I ò  ñð NH(P) Ï ‘ " ";Iò;" ";H$(Iò);Žª< ‘ : ƒ I: ‹ NH ï ( Ï ‘ "'SPACE'=OTHER HEADERS,'RETURN'=CONTINUE ";: � f: ‹ ÿ• (L$) ð  Ï CP ð : � i : ‘ CLL$;: ‰ ZÕªF ‹ NH ï ( ÷ P ð  Ï FH ð ):P ð :LH ð NH(): ‘ CLS$;CH$; : ‰ 2êªP ‹ NH ï ( Ï -ùªZMF ð : Ž «d � #«nNS ð NR:F$ð".RFN": • ¨ ‰ æ.«Œ � §«–NN ð NR: ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ I ð  Î NR: ‘ I;" ";ST$(I): ƒ I: ‘ : ‘ I" CREATE A NEW REPORT FORMAT"µ«µI ð I ò ¬¶ ‘ : ‘ I" USE RE ÿ’(N$(J,K( ô I ó ))): ‹ PF ñ Ï ‘ N$(J,K(ôIó));: :¢ ž N$(J,K(ôIó));_¢w ‹ K(ôI) ð  Ï V ð ÿ”(N$(J,K(ôIó))): AC(I) ð AC(I) ò V: HC ð HC ò VØ¢z ƒ I: ‹ K() ð  Ï ‹ HC ñ ï  Ï GT ð GT ò HC: SP% ð K( ô I ó) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);£ ‹ K() ð  Ï ‹ PF ñ  ‘ HC; :¢ ž HC; £„ ‹ PF ñ  Ï ‘ : ‘: :¢ ž : ž:£¢ HC ð :L ð L ò : Ž ¶£Ô ‹ PF ð  Ï ‚ I ð  Î P: ‘ "-";: ƒ I: ‘: :¢ ‚ I ð  Î P : ž "-";: ƒ I: ‹ PF ð  Ï ž: :¢ ‚ I ð Q Î „: ž "-";: ƒ I: žD¤Ù LL% ð : ‚ I ð PORT FORMATS DEDICATED TO:": ‘ " "DED$" DATA BASE": ‘ :¬¾ … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï I Ï ¾]¬¿ ‹ S ñ ï I Ï I ð I ó : ‰ Ò€¬À ‹ DB$ ð DED$ Ï NR ð NS: ‰ |­Á ‘ CLS$;CH$; : ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT DESIGNED FOR": ‘ DED$" DATA BASE": ‘ "REPORT WILL PROBABLY NOT WORK WITH": ‘ DB$" DATA BASE STRUCTURE"}­Â ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT IS AT LINE 5500": ‘ "IT IS ACCESSIBLE FROM MBASIC": ‘ É­Ã ‘ "ENTER 10 IN THE MAIN MENU TO QUIT": ‘ "THEN KEY IN: GOTO 5500": ‘  Î RH: SP% ð K(ôIó) ó LL% : ‹ AC(I) ñï  Ï LL% ð K(ôIó) ò ÿ’(ÿ“(AC(I))):‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);v¤Þ ‹ AC(I) ñï  Ï ‹ PF ñ Ï ‘ AC(I); :¢ ž AC(I);Ú¤ü ƒ I: ‹ GT ñ ï  Ï SP% ð K( ô I ó ) ó LL%: ‹ SP% ï  Ï ‹ PF ñ Ï ‘ ÔSP%);GT: :¢ ž ÔSP%);GTû¤‹ GT ð  Ï ‹ PF ñ  Ï ‘ :¢ ž¥ŽZ¥ ‘ CLS$;CH$; : ‘ RPTN$" REPORT FOR :": ‘ : ‚ I ð  Î ÿ” (RN$()): ‘ RN$(I): ƒ I: ‘ ¯¥$‹ PF ï  Ï ž RN$(NN);" REPORT FOR :": ž: ‚ I ð  Î ÿ” (RN$()): ž RN$(I): ƒ I: ž¦LLL%ð: ‚ I ð  Î RH: Sú­Ä ‘ : � d: NR ð NS: ‰ Ê: � RETURN TO MAIND®Ò NR ð NS: ‹ S ñ ï I Ï RPTN$ ð ST$(S):E ð : ‰ â: :¢ � (: ‰  خæ � <: ‘ CLS$;CH$; : ‘ "NO REPORT FORMATS ON DISK...": ‘:NN ð : … "DO YOU WANT TO CREATE ONE (Y/N) ";L$: ‹ L$ ñ ï "Y" Ï Ê: :¢ � (: ‰  î®� READ WRITE SUBSø®J ð ¯ ‹ F$ ñ ï ".IND" Ï �$¯ � OLD OPENa¯" ‹ J ð  Ï À #,LV% AS NR$:Á #,: NR ð ÿ” (NR$): ‰ ^˯' ‹ J ï  Ï N$(B,) ð ÿ“ (J): ‚ I ð  Î NH:Á #,(S%(,J) ó ) ô NH ò I ò : … #,N$(B,I) : ƒ I: ‰ ^P% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%); :¢ ž ÔSP%)d¦NLL% ð K(ôIó) ò ÿ’(H$(K(ôIó))): ‹ PF ñ  Ï ‘ H$(K(ôIó)); :¢ ž H$(K(ôIó));Á¦Q ƒ I: ‹ K() ð  Ï SP% ð K( ô I ó) ó LL%: ‹ SP% ï  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);õ¦V‹ K() ð  Ï ‹ PF ñ  Ï ‘"TOTAL"; :¢ ž "TOTAL";*§tL ð  ò ÿ” (RN$()): ‹ PF ñ  Ï ‘: Ž: :¢ ž : Ž 2§ˆ � ©§�NS ð NR: ‘ : … "ENTER THE REPORT FORMAT NAME ";RPTN$:F$ ð ".RFN":‹ NN ï  Ï �  :¢ NR ð : � NN= 0 IF NO REPROTSѧŽNR ð NR ò : ST$(NR) ð RPTN$/°, ‹ S ï  ÷ S ñ ð NH Ï ‚ J ð  Î NR: Á #,(S%(,J) ó ) ô NH ò S ò : … #,ST$(J): ƒ J: ‰ ^_°6K ð : ‚ J ð  Î NR: ‹ S%(,J) ñ ï  Ï T©°@K ð K ò : ‹ K ð B Ï K ð K ó :N$(,) ð ÿ“ (J):N$(,) ð "1": ‰ ^ ±JN$(K,) ð ÿ“ (J): ‚ I ð  Î NH: ‹ H%(I) ð  Ï Á #,(S%(,J) ó ) ô NH ò I ò : … #,N$(K,I)±O ƒ I,±T ƒ J:N$(,) ð "0"5±^ Ž Š±� FILE$ ð DRIVE$ ò PDB$ ò F$:¿ "I",#,FILE$: … #,NR$: NR ð ÿ”(NR$): ‚ J ð  Î NR ±† … #,ST$(J): ƒ J®±� à #: Ž W²š� TRUNCATE AND WRITE 'R: � ¸]¨’F$ ð ".R" ò ÿ‚(ÿ“(NR),ÿ’(ÿ“(NR)) ó ):NR ð  ô RH ò : ‚ I ð  Î NR:ST$(I) ð ÿ“ (K(I)): ƒ I:ST$(I ó ) ð ÿ“ (K()): � ¸:NR ð NS: Ž e¨â � ÿ¨ìF$ ð ".R" ò ÿ‚(ÿ“(NN),ÿ’(ÿ“(NN)) ó ) : � :RH ð (NR ó ) õ : ‚ I ð  Î NR:K(I) ð ÿ” (ST$(I)): ƒ I:K() ð ÿ” (ST$(I ó )):NR ð NS: � (: ‰ N ©( � L©- ‘ CLS$;CH$;:FH ð :LH ð NH():P ð : ‹ MF ð  Ï ‘ "0 ";H$();Ù©2 ‘ " SELECT FROM:": ‚ I ð FH Î LH: ‘ I" "H$(I);: ‹ I ò  ñ ð NH(P) Ï LL% ð ÿ’(ÿ“(I)) ò ÿ’(H$(I)): ‹ LL% ï  ETURN' INTO FIELD SO CAN USE INPUT TO READ DISK, THIS WAY SHORT FIELDS ARE NOT PADDED OUT WITH SPACES AT THE END-REQUIRED FOR REPORTS SECTIONa²¸J ð }²Â ‹ F$ ñ ï ".IND" Ï �²Ì� OLD RA OPEN½²Ö ‹ J ð  Ï É IN$ ð ÿ“(NR):  #,: ‰ ô³ê ‚ I ð  Î NH: É IN$ ð ÿ�(N$(B,I),LV%) ò ÿ–( ):  #,(S%(,J) ó ) ô NH ò I ò : ƒ I!³ô Ž l³ FILE$ ð DRIVE$ ò PDB$ ò F$: ¿ "O",#,FILE$: ‘ #,ÿ“(NR): ‚ J ð  Î NR”³0 ‘ #,ST$(J): ƒ J: à #: FF ð : Ž Í³” ‚ J ð  Î NR:S%(,J) ð : ƒ J: � LIST ALL RECO "OR": ‘ : ‘ "ENTER FIRST RECORD # TO LIST EITHER A": ‘ "SINGLE RECORD OR A SEQUENTIAL RANGE"g¼Ý ‘ : … "'RETURN' OR REC # = ";L$: ‹ L$ ð "" Ï � ”: ‰ Ê ¼âL ð ÿ” (L$): ‹ L ñ  ø L ï NR Ï ‘ "REENTER": ‰ Ý÷¼ç ‘ : ‘ "KEY 'RETURN' IF # "L" IS ONLY RECORD": ‘ "INPUT LAST RECORD # FOR A RANGE"<½ì ‘ : … "'RETURN' OR LAST REC # = ";L$: ‹ L$ ð "" Ï LL ð L: ‰ ö{½ñLL ð ÿ” (L$): ‹ LL ñ ð L ø LL ï NR Ï ‘ "REENTER": ‰ 쿽ö ‚ J ð  Î NR:S%(,J) ð : ‹ J ï ð L ÷ J ñ ð LL Ï S%(,J) ð Ö½û ƒ J: RDS)´™J ð ó :S ð :L ð : ‘ CLS$;CH$; : � : ‚ J ð  Î K:PP ð : ‹ PF ï  Ï �  : ‰ Æ:´žP ð J: � î^´£ ‹ L ò NH ñ  ÷ J ñ ï K Ï Æ£´¨ ‹ NH ï  Ï PP ð PP ò : ‹ PP ï  Ï ‘ "KEY 'SPACE' TO BACK UP"Õ´­ ‘ "PRESS 'RETURN'TO CONTINUE,'ESC'FOR MENU";µ² � f: ‘ CLS$;CH$;: ‹ ÿ• (L$) ð  Ï N$(,) ð "0": ‰ ÊXµ· ‹ ÿ• (L$) ñ ï  ÷ ÿ• (L$) ñ ï  Ï ‘ "REENTER ";: ‰ ²޵¼ ‹ NH ï  ÷ PP ï  ÷ ÿ• (L$) ð  Ï PP ð PP ó °µÁ ‹ NH ï  ÷ PP ñ ð MP Ï žçµÆ S%(,ÿ”(N$(J,))) ð ÃÎÉÉ(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE) COPYRIGHT (C) 1979, DIGITAL RESEARCH, PIP VERS 1.5$$$ SUB =.:,<> _[]INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING $NOT A CHARACTER SOURCE$: ƒ J: ‹ N$(,) ð "0" Ï Ž óµÐ ‰ ™,¶ä � SCREEN DISPLAY OF 1 PAGE REPLACES OLD SUB AT 2240O¶éP ð B: ‹ PF ï  Ï J ð B: ‰  ›¶î‘ " ";H$();": ";N$(P,);: ‹ NH ï  Ï ‘ " PP= ";PP ò ;ÿ¶ó ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I" "H$(I)": "N$(P,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PP: ·ø Ž B·  � SUBROUTINE TO PRINT 2 PAGE REPORT WITH 2 COLUMNS’· • PF � n,‚, :FH ð :LH ð NH():PP ð : SP% ð (: ‹ PF ï  Ï SP% ð B¿·ž :ž " "H$()":"N$(J,): ‚ I ð FH Î LH%¸ ž I" ABORTED$BAD PARAMETER$INVALID USER NUMBER$RECORD TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z?$CHECKSUM ERROR$CORRECT ERROR, TYPE RETURN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$COM$START NOT FOUND$QUIT NOT FOUND$CANNOT CLOSE DESTINATION FILE$DESTINATION IS R/O, DELETE (Y/N)?$**NOT DELETED**$$$$$$$NOT FOUND$COPYING -$REQUIRES CP/M 2.0 OR NEWER FOR OPERATION.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$CANNOT READ$INVALID SEPARATOR$1ò€Å€ÌÍ :ÌÖÖŸ2¥ÍLë> Í„ÒýMÍ9ÍÍ "H$(I)": "N$(J,I);: LL% ð ÿ’(ÿ“(I)) ò ÿ’(H$(I)) ò ÿ’(N$(J,I)): ‹ LL% ñ SP% Ï ž ÔSP% ó LL%);i¸ ‹ I ò  ñð NH Ï ž I ò  " " H$(I ò ) ": " N$(J,I ò ) :¢ ž¨¸% ƒ I:‹ NH ï ( ÷ PP ð O Ï FH ð ):LH ð NH():PP ð : ‰ ÿ´¸* ž : Ž ¼¸Ê � ǸÔ ‰ ãÓ¸Þ � < ç¸ã ‹ CD ð  Ï ¶E¹è ‘ CLS$;CH$; : ‘ "******* DATA BASE MANAGEMENT I *******": ‘: ‘ "CURRENT DATA BASE: ";DB$œ¹é ‘ "CURRENTLY CONTAINS: ";NR;" RECORDS": ‘ "ROOM FOR ";MR ó NR;" MORE RECORDS": ‘Þ¹ò‘ "ROOM FOR ";B ó ;" IN MEMORY": ‘ "THE 2ÀÍ2ü1òÍ@:À2Á!o6+6+6!¦6#6!ó6#6þ:¥ÒG*ÍÍo Í.!N6ÿ:ÌþÂ^*üMÍ^Í!K6!6!¤6+6'Í :©þÂ�Ã$:©þÂÃ:”=2KÍ Í :©þʤÍ\:õÒ·\ÍîÍxÃÀ'ÍîͲÃÛ:©ÖÆÿŸ!õ¶ÒÖÍ\Í¢Í Í :©þÂ͈ÍÆ'Å!Í ÍßͲÃÛ:©þÂ$Í:¨þ ÊÃ$͈ͲÃÛ!N6ÿ'Í :©ÖŸ!õ¶ÒCwͯ !6:©þÂ^Í¢Íc!¨6ÿÃ{:¨ÖŸ/õ>!¨–Ÿ/ÁH±Ò{�ͯ :¨<2£þŠÍÏÍ :©ÖÆÿŸõ:¨Ö=ÆÿŸÁH±Ò®�ͯ !§6:§Ò¾:À2ÁÍ !6:©ÖÖŸõ:õ/ÁH¡Òí͈;!¨6ÿÃ:©ÖÆÿŸõ> !¨–Ÿ/õ>PRINTER IS ";PF$(PF)Vº8‘:‘"1 SELECT DATA BASE": ‘"2 SEARCH AND/OR CHANGE DATA":‘ "3 ENTER RECORDS": ‘"4 DELETE RECORDS": ‘"5 REPORTS"кB ‘ "6 SORT (TAKES APPROX. " ÿ… (nv ô NR ö  ò �Âu{ ô NR)" MIN.)": ‘ "7 TURN ON PRINTER OR CHANGE # OF COLUMNS"G»’ ‘ "8 TURN OFF PRINTER": ‘ "9 LIST RECORDS": ‘ "10 QUIT": ‘ : … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï  Ï Êz»Î • S ‰ è,ô,T,$ ,| , ,,(,Ø,2'¼Ø ‘ CLS$;CH$; : CP ð  : � i : ‘ "KEY 'RETURN' TO LIST ALL RECORDS": ‘ : ‘–ŸÁH¡ÁH±Ò°ͯ :^!¶w:¨<2¤:¨þÂ0ÍÏÃ}:¨þÂ@ÍEÃ}:¨ÖŸ!¦ÒS!W6:£þ Âz!]6:cþÂm!c6:_þÂz!_6ÍlÍÍ :©ÖÆÿŸõ:¨Ö,ÆÿŸõ:¨Ö ÆÿŸÁH¡ÁH±Ò°¼ͯ :¨Ö ÆÿŸ2§ó:£þÂÎÍEÍÏ:£þÂÛÍ1:¥2ÌÃûv!òq!òå*8éÉ!ûå*6é: É>úͦ>úͦÉÍÉÍÉ!«q:«æ_ÍÉ Í ÍÉ!­p+qÍ.*¬ë ÍÉ ÍÉ ÍÉ!¯q*¯&ëÍÉ!±p+q*°ëÍ2®É!³p+q*²ëÍ2®É!µp+q*´ëÍ2®ÉÍ2®É!·p+q*¶ëÍÉ!¹p+q*¸ëÍÉ!»p+q*ºëÍÉ!½p+q*¼ëÍ2®É!¿p+q*¾ë*�MÍÉ:�É>!ú¾Ò(:ú=2úþÂ%> É>É>!ø¾ÒF!ø5+N!Í ~2‘!÷4ÉÍ<2‘þÂT>É>!b¾Ò}*bMÍ­Òz:b2÷!b6:ù<2øé>!`¾Ò¥*`MÍ­Òž!`6!ú6> É:‘Éé:‘ÉÃ(É!’q:ù!’†wO!Í ~2“þÂÙ*’&Í :‘w>É!‘:“¾Âê!ù4Ãï!ù6>É:N<2N!̾Ú> É*N&Í NÍîÉÍò2¨þ ÂÃÉ!–p+q!õ6!©6+6 !ª6:ªþ ÒS:ªþ ÂM!¨6ÍgÃ8Í:N2M*¨MÍ8ÒpÍÁ!©6É!”6!—6>!—¾Ú•*—&P 6!—4Âz!ö6!ø6#6#6!ª6*¨MÍ8ÚÚ:ªþÚ¾É:¨þ*ÂÎ͇ÃÑÍgÍò2¨ê:¨þ:¿:”þÊëÉ:ªþÂ,Í¡ÖA<2”O>ÍÉ!Ãp+q*ÂëÍÉÿ ÍÉ!Äq*Ä&ë ÍÉ*ÀMÍ É*ÁMÍ É!Æp+q*Åë!ÍÉ!Èp+q*Çë"ÍÉ!Êp+q*Éë$ÍÉ!Ë6€Ë ÍÉ ÍÉ!kp+q*jëÍÉ> Ó>ÓÛÚª Þ ÛæÉ!qp+qÍ/ *pDMÍ9:Í Í:M2r:N!r¾Úø !Ì:r¾Òñ *r&Í NÍ!r4ÂÐ !Ì6:Í”:®þÿÊ :ͳÍ.ÃÉ!ws+p+q+ÑÁp+qÕ:w=2wþÿÊN *så*uÁ w*s#"s*u#"uÃ' É!"�*MÍ^Í7 !x6:û!x¾Ú¾ *�ë*DM͆ ÍÃ2yþÊ­ :yþÊ— ”ͯ *�"Ÿë*6:û2x÷ €*�"�!x4Âd !"�Í/ É!¡Íj}=2|þÿÂÛ É!"¡*KMÍ^'Í_ !z6:|!z¾Ú1 *¡¹ÒÉÍ*¨MÍ8Ò):¨þ[Âͱ!N5!©6Éñ:ªþÊ5É!¡6ÿ#6>!¢¾Ú°! 6: <2 O>‘Ÿ/õ: !¡†O!T å* MÍ¡á–ÖŸÁH¡Ò~ÃK: þ¡!©6Íòþ[–ͱ!N5:¢2¨É:¡Æ2¡!¢4Â=É:¨þ[¼ͱÃ4:ªþÂÈÉ!ª6:¨þ.ÂÍò2¨OÍ8Ú:ªþ ÚìÉ:¨þ*Âü ͇ÃÿÍgÃÕ:¨þ[ ͱ!N5!©6:”þÂ%:ü<2”*•6 *• 6ÉÃ¥É!šq!›6> !›¾Úd*›&I :š¾Â]>É!›4ÂA>É:ª<2ªO*• :¨w:¨þ?†!õ6É!œq!¨6?!œ:ª¾Ò ÍgÃ�É!�q*�&ë*•~É!ö6:À2ÁÍò2¨:¨Ö ÖŸõ:¨Ö]ÖŸÁH±Úº:¨ÖA2žO>¹Ò:¨þ ÂúÍò2¨Ãͯ Ê "}*}DM͆ 'ÍÓþÊ ¤ͯ €*¡"¡!z4Âó :eÒÉ !"¡€Í† !z6:|!z¾ÚÀ 'Í? ÖÖŸ2*H#"H!{6:{Ö€Ÿ!¦Ò¢ *{&€ :{¡åÍ4Ê Á –ÖŸ2!{4Ãm €*¡"¡:Ú¹ µͯ !z4ÂI 'ÍÓ2!"¡É!€q:€þ Úô !ó4>!S¾Òô :S!ó¾Òô É:2�*£M!Ý ^#Vëéÿ¡ÍŽÚ ÍÈ *¡Ê :€w*¡#"¡Ã Ã= Ã= Ã= Ã= Ã= Âͯ à *€MÍæÃ !6€Ãq à !6ÀÃq à !6€Ãq à *€&ëÍà !6à à !6 à à !60à à *€&ëÍà !6ÃÏ Ã !6ÃÏ Ã !6ÃÏ Ã *€&ëÍà . 1 4 7 : = F P [ f q  Š •   ® ¹Ã·:¨ÖSÖŸõ:¨ÖQÖŸÁH±ÒI:N<2ŸÍò2¨ÖÖŸõ:¨Ö ÖŸÁH±Ú@Ã"Íò2¨Ã�Íò2¨Ö02ŸO> ¹Òc!Ÿ6Ã�Íò2¨Ö02™O> ¹Ú�*Ÿ&ÍOå*™&Á ë!ŸsÃc*ž&P :Ÿw:žþ·>!Ÿ¾Ò±ͯ :Ÿ2ÁÃÂÍò2¨É:¨þ_ÂÎ!¨6=É!£6>'!£¾ÚéÍE!£4ÂÔÉ!©p+q*¨å0Í É!­r+s+p+q*¬~þ$Ê7*¬>¦*ªõ>¦ÁH¹Ê&>É*ª#"ª*¬#"¬Ã>ÉÍ 2¨:ÒR�ŸÍŽŸÉ:¨ÖÖŸÉ!¯6!œ6Í=2µþ:Ê™!œ6:µþ“HÍ9ÍþÂŽ>É!œ6Í-Ãe!µ6Í»2´þÂÇÍ=2´þʺÍ-é:¯ÒÄ>É>ÉÍÄ"·Í»2¶:´ÖÆÿŸ!¯¦Òð!´5Í»2³ÃÓͬ!µ†þÊ\Í Ä Ï :�2É!‚q:‚þ Ê" *‚MÍÐ Ãn :cþÂ4 *‚MÍÐ Ãn :ó2ƒ!c:ƒ¾ÚQ !c:ƒ–2ƒÃ: !ƒ:c–w>!ƒ¾Òn !ƒ5 ÍÐ ÃY :‚þ Â{ !ó6É!„q:„ÖÖŸ!l¦wÒ™  Í Ã¢ :„Æ0OÍ É!…q:…æøOÍ| :…æOÍ| É!†6:]ÖÖŸ2l:o†'2o:nÎ'2n:mÎ'2m*mMÍ£ *nMÍ£ *oMÍ£ :]þÂ:Í  Í Ã Í É*¡}æ2‰€ÿÍD"‡ÍÈ *‡Ê å*‰ëÍ *‰&"¡É!Šq:UÒY:Šþ ÂYÉ:¦Ò©:Šþ Ê©:_2‹þʘ:‹þ€!‹6<:ô<2ô!‹¾Ú˜!ô6 Í >!]¾Ò¤; !¦6:QÒÌ:ŠÖÖŸõ:£ÖÖŸÁH¡ÒÌÍÉ:Šþ ÂÙ!ô6*ŠMÍ :Šþ Âí!¦6É!Œq:ŒÖaŸ/õ>z!Œ–Í-:¯Ò>É>É!±p+q:¯Ò,!¯6*°DMÍ9É:®Ò<!®6ÍÉ:¯ÒzÍ 2²þÂW!®6ÃD*œ&L :²w:œ<2œþOÚv*Í:²É>ÉÍ=2¹Ö0O> ¹Ú’:¹Ö0É:¹ÖAO>¹Ò¤:Í:¹ÖAÆ ÉÍ}‡‡‡‡õÍ}ÁH±Éͬ!µ†wÉÍ»O`iÍdåÍ»áÍVÉÍ[2ºO>¹Ú2:ºÖÖŸ!X¦Ú!»6:œ!»¾Ú:»=O!L NÍE!»4Âü ÍE ÍE:ºþÂ/ÉÃÚÍ.*œ&L 6$LÍ9kÍ9Í.ÍþÂXÉÃÚÉ�ͯ É*KMÍ^ž0Íý20Å¤Í :0æ20:1æ21¢Íê'ͳ'Íã:®þÿ²¥ͯ !G6!"¡É!ÿÿ"ŸÍ7 *MÍ^ÍnÍ/ :a/õ:ÁH¡Òì!®6ÿ:®þÿÂú¸ͯ !&6Ÿ/ÁH¡Ò:Œæ_2Œ:ŒÉ!�q:�ÖAŸ/õ>Z!�–Ÿ/ÁH¡Ò8:�ö 2�:�É:¤=O>¹Úm:W!Q¶õÍ} ÁH¡ÒmÍþÂd>É×Í9>É!�6:2Ž*¤M!E ^#Vëéý�ÍŽÚ—ÍO *�ë*~2�*�#"�ÃmÍó2�ÃmÍ– 2�Ãm!6ÃàÃm!6ÃàÃm!6 ÃàÃmÍæ2�ÃmÃÃÃÃÃÃÃÃéͯ Ãm!6Ã2Ãm!6Ã2Ãm!6Ã2Ãm!�6Í2�Ãmˆ­¶¿ÊÕàðóöùüÿ'2:Ž2:TÒ’:£2Ž!£6*�MÍE:Ž2£:�ÒÜ:Ò²:§<2§ÖÖŸ2�ý:�Ö ÖŸ2�:�ÒÜÍ} ÒÜÍþÂÖ>Éͯ :iÒë:�æ2�:dÒú*�MÍîÉ:[Ò ÀÍý2*ý"�É>!b¾Ò!Äͯ >!`¾Ò0Ôͯ É!¼q:¼ÒE:24ÃJ!46*¡}æþÊa!44ÍEÃJÍÍÈ *KMÍ^'Í�:®þÿ‚ãͯ ¤Íê!36'Ín:®þÿÊé:0Òã:fÚÕÍ9ÍOÍîþYÊÒ#Í9Í.3Íê'ͳÉÍ.:0æ20'Í 'ͳ'Å7Í 6Íê'ÍöÉ!ÿÍj>ÿÍA+ë!ûsÉ!Ê"@ÿÍ“Ú1!€"ÿÃ<*ýë*ÿ"ÿÍÉÊÍ“åÍnÊ "ÿáÍDÍn"ý"ÿÍÉ:¤ÖÆÿŸ!Q¦2½Ò‚Í:X!W¶Ò“ÍÚäÍ:Ú¤*¨MÍEÓ:½Ò±ÍÍ@ÉÍ@:O2MÍc;!¾6#6>!¿¾Ú)*¿&P ~þÊ":¿ÖÖŸõ:¿ÖÖŸÁH±õ:¿ÖÖŸÁHPED OVERnd� R$(I) USED FOR SEQUENTIAL FILE DISK READ,NR # RECORDS TO BE READ,TYPE DEFINED BY FILES ENDING IN F$: .R#=REPORT FORMAT,.RFN=REPORT NAMES,.HDR=HEADERSåd � IN DIM: 1000,1050,1060,1161,1163. NH(PP) LAST HEADER ON PAGE PP+1. MP=MAX # PAGES,MH = MAX # OF HEADERS = 80Oe� SEE LINE 1061 AND SUBS AT 100-140 FOR CURSOR CONTROL,LINE 1060 AND SUBS AT 5280 FOR PRINTER CONTROLØe� LV% IS MAXIMUM DISK FIELD LENGTH, STORED AS LAST ELEMENT IN HEADER FILE ON DISK. INDEX FILE CONTAINS RECORD DATA END±õ:¿ÖÖŸÁH±õ:¿ÖÖŸÁH±Ú"!¾6!¿4ÂÉ:¾Ò_ÍÍjÚYÍO ÍjÒM*Ÿ"¡ÃS*ÿ"¡ÍÈ Ã3Í@ÃbÍl*¾MÍ1ÉÿÿŸÍ“µÆÿŸÉ!"À"ÄÍ7 *MÍ^€Í† \Í”!"Â:®ÖÿÆÿŸÀÂõÍŽŸÁH¡ÒÄ*Â#"ÂͧÃ�Í/ :®þÿÂå>ÄÍ›µÂá9ͯ Í.É*Â#"À:®æ‡‡‡‡‡_!€å'Í !'6!36'ÅÍ :1/!a¶ÒE*Ä#"Ä>ÍzµÂ?CÍ9ÍIͲÃ�ÉÍ.!Æ6> !ƾڇ*Æ&' ~2Çþ Ê€:Æþ Ây.Í*ÇMÍ!Æ4ÂQÉ>!”¾Ò›:”=2á:ü2É:öÒ¬Í\>!”¾Ò¿:”=2KÃÅ:ü2KÉ!À:Á¾ÊÑÉ!:K¾ÂÞÍ\ÉÍ:¨þ ÊíÍ\É!Ép+q͈ÍßÅ*ÈS IN .IND = F$tf� DATA BASE NAME=DB$ READ FROM BASENAME.RA FILE. PDB$= FIRST CHARACTERS TRUNCATED TO LENGTH <= 8 FOR FILE NAME WHICH TYPE F$ IS ADDED TO SEE 4110-4440åf � IN DISPLAY HEADERS:LINE 3885-3930. P=HEADER DISPLAY PAGE, FH AND LH ARE FIRST AND LAST HEADERS ON PAGE P5g� NEEDS DIFFERENT SEARCH SUBS TO SEARCH FOR A BLANK? START WITH S%(1,J) = 0@g1 ‰ èƒgfL$ ð Ý: ‹ ÿ’ (L$) ð  Ï f: :¢ Ž: � SIMULATE APPLESOFT GET L$Ügi‘ CH$;ESC$;ÿ‚(ÿ“(CP),ÿ’(ÿ“(CP))ó);"B";: Ž: � ABSOLUTE VERT POSITIDM!Í ÍÆÉÍ :©ÖÖŸõ:¨Ö=ÖŸÁH¡Ú-Í\:N2OÉë_ë…oŒgÉ_{¥oz¤gÉ^#Vë)å))Á É_{µoz´gÉ^#Vë) ÂdÉ^#Vë|·g}o ÂnÉ_{•ozœgÉO{‘oz˜gÉi`N#F‘o˜gÉo&•oœgÉ H ©=¨É'Í !'6!36'ÅÍ :1/!a¶ÒE*Ä#"Ä>ÍzµÂ?CÍ9ÍIͲÃ�ÉÍ.!Æ6> !ƾڇ*Æ&' ~2Çþ Ê€:Æþ Ây.Í*ÇMÍ!Æ4ÂQÉ>!”¾Ò›:”=2á:ü2É:öÒ¬Í\>!”¾Ò¿:”=2KÃÅ:ü2KÉ!À:Á¾ÊÑÉ!:K¾ÂÞÍ\ÉÍ:¨þ ÊíÍ\É!Ép+q͈ÍßÅ*ÈON BELOW LEFT EDGEwhj� PRINTING ESCAPE SEQUENCE CONFUSES BASIC, IT THINKS CURSOR MOVE RIGHT BY # OF PRINTABLE CHARACTERS IN SEQUENCE-GIVE LINE FEED AFTER 80 PRINTABLE CHARþhk� IN SUB 120 SAVE CUSOR POSITION, ISSUE LINE FEED TO CLEAR BASIC LINE COUNT THEN RESTORE CURSOR WITH ESC 7 & 8 IN LINE 124 AND 122Fix� PRINT OLD$ THEN CHANGE TO REP$ WITH SCREEN COPY USING GET SUB 102•izREP$ ð "":‹ ÿ’(OLD$) ï  Ï ‘ ÿ–();"7":‘ ÿ–();"8";:‘ OLD$:‘ ÿ–();"8";þi|‘ ÿ–();"7";:� f: ‘ : ‘ ÿ–();"8";: ‹ ÿ•(L$) I ò  ñð NH Ï ž I ò  " " H$(I ò ) ": " N$(J,I ò ) :¢ žG¼% ƒ I:‹ NH ï ( ÷ PP ð O Ï FH ð ):LH ð NH():PP ð : ‰ ÿS¼* ž : Ž [¼Ê � f¼Ô ‰ ãr¼Þ � < †¼ã ‹ CD ð  Ï ¶ä¼è ‘ CLS$;CH$; : ‘ "******* DATA BASE MANAGEMENT I *******": ‘: ‘ "CURRENT DATA BASE: ";DB$;½é ‘ "CURRENTLY CONTAINS: ";NR;" RECORDS": ‘ "ROOM FOR ";MR ó NR;" MORE RECORDS": ‘}½ò‘ "ROOM FOR ";B ó ;" IN MEMORY": ‘ "THE PRINTER IS ";PF$(PF)õ½8‘:‘"1 SELECT DATA BASE": ‘"2 SEARCH AND/OR CHANGE DATA":‘ "3 ENTER RE ï  ÷ ÿ•(L$) ñ  Ï ‘ L$;: REP$ ð REP$ ò L$: ‰ |j~‹ ÿ•(L$) ð  Ï Žxj€‹ ÿ•(L$) ð  ÷ ÿ’(OLD$) ï ÿ’(REP$) Ï REP$ ð REP$ ò ÿƒ(OLD$,ÿ’(REP$) ò ,): ‘ ESC$ "1C";: ‰ ‚£j�‹ ÿ•(L$) ð  Ï REP$ ð REP$ ò " ":‘" ";Vk‚‹ ÿ’(REP$) ï  Ï ‹ ÿ•(L$) ð  ø ÿ•(L$) ð  ø ÿ•(L$) ð  Ï ‘ ESC$ "1D";: L$ ð ÿ‚(REP$,): REP$ ð ÿ�(REP$,ÿ’(REP$) ó ): ‹ ÿ’(OLD$) ï ÿ’(REP$) Ï ÿƒ(OLD$,ÿ’(REP$) ò ,) ð L$`k„‰ |©k� � FORMATE DATE(MO/DAY/YR) INTO NUMBER FOR NUMERICAL SORT OF ST$(J)l• ‚ I ð  Î NR:DT$ ð ST$(I): ÿPb� DBMR26 UPDATED TO MBASIC 8/10/83: RANDOM ACCESS OF INDIVIDUAL FIELDS FROM RECORDS OFF THE DISK-STORAGE LIMITED BY DISK CAPACITY™b � H$(I) IS HEADER NAME, N$(K,I) IS RECORD K HEADER FIELD I IN MEMORYùb � B IS MAX # OF RECORDS MEMORY CAN HOLD. N$(B,I) RESERVED FOR TEMPERARY READ WRITE TO DISK `c � H%(I) CONTOLS DISK READ OF HEADER I, NORMALLY 1 BUT SET TO ZERO IF HEADER NOT REQUIRED IN REPORTÒc � S%(0,J) IS LOCATION OF RECORD J ON DISK S%(1,J) IS 1 IF RECORD J TO BE READ AND 0 IF ITS TO BE SKIP� ¤:ST$(I) ð DT$: ‹ DT$ ð "" Ï ST$(I) ð ÿ“ ( ÿ” (ST$(I)))lš ƒ IlŸL ð : Ž Úl¤ � FORMAT DATE(MO/DAY/YR)=DT$ INTO NUMBER OF GREGORIAN CALENDAR DAYS SINCE 1/2/0000:NOTE USE OF INTEGER ARITHMETIC,NO DATES AFTER YEAR 2730 OR BEFORE 99, TWO DIGIT YEAR OK FOR 1900'Sm® ‚ II ð  Î ÿ’ (DT$): ‹ ÿƒ (DT$,II,) ñ ï "/" Ï ƒ IITm¸MO% ð ÿ” ( ÿ� (DT$,II ó )): ‹ MO% ï  Ï � X: ‰ sm ‚ JJ ð II ò  Î ÿ’ (DT$)šmÌ ‹ ÿƒ (DT$,JJ,) ñ ï "/" Ï ƒ JJämÖ ‹ JJ ï ð ÿ’ (DT$) Ï � X: ‰ : � EAR LINEvL‘ CLS$;CH$:‘"INSERT DISK TO BE USED IN AVAILABLE DRIVE":‘ovQ‘ "ENTER DRIVE TO BE USED (A,B,C,D) = ";: � f: ‘ L$: L ð ÿ•(L$): ‹ L ñ A ø L ï D Ï Q�vV ‘: DRIVE$ ð L$ ò ":": ‘: ‘¡v` � : ‰ ¦ ÅvtMH ð P:F$ ð ".HDR": • ¨ ‰ ðÑv~ � {wƒNH ð NR ó : LV% ð ÿ” (R$(NR)): † NH(),H$(NH ò ),Z$(NH ò ): ‚ I ð  Î NH:H$(I) ð R$(I): ƒ I:NR ð : H$()ð "REC#":NH() ð NH:NH() ð : ‹ NH ñ ð  Ï NH() ð NHÞw‹MP ð ÿ… ((NH ó ) õ ): ‹ NH ï ( Ï NH() ð (:NH() ð NH: ‹ NH ï < Ï N2ND / NOT FOUND WITHIN DT$)nàYR% ð ÿ” ( ÿ‚ (DT$, ÿ’ (DT$) ó JJ)): ‹ YR% ñ c Ï YR%ðl ò YR%xnêDA% ð ÿ” ( ÿ‚ ( ÿ� (DT$,JJ ó ),JJ ó II ó )): ‹ DA% ï  Ï � X: ‰ Ðnô � CHANGE TO GREGORIAN #:REMAINDER OF #/7 IS DAY OF WEEK,REM=0 IS MON,REM=6 IS SUNýnù ‹ MO% ñ  Ï MO% ð  ô (MO% ó ): ‰  Coþ ‹ YR% ð  ô ÿ… (YR% õ ) Ï MO% ð ÿ…(ÍÌt… ô MO% ó 33{…): ‰  eoMO% ð ÿ…(ÍÌt… ô MO% ó š™†)¯o DT$ ð ÿ“ (YR% ô m ò (YR% ó)ý ó YR%ýd ò YR%ý� ò MO% ò DA% ó )·o Ž ÒoX � ERROR SUBH() ð <:NH() ð NHx�MR ð ÿ… (  ô è õ (( ò LV%) ô NH)): ‹ MR ï È Ï MR ð ÈZx’ † S%(,MR),ST$(MR),H%(NH): ‚ I ð  Î NH:H%(I) ð : ƒ I‰x— ‚ I ð  Î MR:S%(,I) ð I:S%(,I) ð : ƒ IÑxœMEM ð ÿ�():B ð ÿ… (MEM õ (( ò LV%) ô (NH ò ))): ‹ B ï  Ï B ð ýx¦ † N$(B,NH ò ):F$ ð ".IND": • ¨ ‰ Þyº � : ‰ Ê>yÓF$ ð ".IND":J ð ó : � : ‘ "SORTING ";TyÕ ‹ L ð  Ï � �¢yØ ‚ I ð  Î NR:S%(,I) ð : ƒ I: ‚ I ð  Î NR: ‚ J ð  Î NR: • L ‰ ö, Ôyö ‹ ST$(I) ð ï ST$(J) Ï S%(,I) ð SROUTIUNEüob ‘ "DATA FORMAT ERROR IN DATE = ";DT$pl Ž "pŠ� SELECT A RANGE OF DATESzpž ‘ CLS$;CH$; : CP ð  : � i : ‘ "INPUT RANGE OF DATES FOR:": ‘ S": "H$(S): ‘ : ‘ øp£ … "LOWEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$() ò " " ò ÿ“ (S) ò ":" ò H$(S) ò " = " ò DT$: � ¤:L ð ÿ” (DT$){q¨ ‘ : … "HIGHEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$( ÿ” (R$())) ò " TO " ò DT$: � ¤:LL ð ÿ” (DT$): ‘ : ‘ "SEARCHING"ôq­NS ð : ‚ J ð  Î NR:DT$ ð ST$(J): � ¤: ‹ ÿ” (DT$) ï ð L ÷ ÿ” (DT$) ñ%(,I) ò ßy ‰ z  ‹ ÿ” (ST$(I)) ð ï ÿ” (ST$(J)) Ï S%(,I) ð S%(,I) ò Ÿz ƒ J: ƒ I: ‘ "SORTING ";: ‚ I ð NR Î  Ñ ó : ‚ J ð NR Î  Ñ ó : ‹ I ñ ï J Ï ‹ S%(,I) ð S%(,J) Ï S%(,J) ð S%(,J) ó Áz< ƒ J: ƒ I: ‘ "SORTING ":J ð çzZ ‹ S%(,J) ð J Ï J ð J ò : ‰ Zþzd ‹ J ï ð NR Ï Œ8{nZ ð S%(,S%(,J)):S%(,S%(,J)) ð S%(,J):S%(,J) ð Zy{xZ ð S%(,S%(,J)):S%(,S%(,J)) ð S%(,J):S%(,J) ð Z: ‰ Zè{Œ ‘ "": ‘ "WANT TO SAVE THE "DB$" FILE": ‘ "SORTED BY "H$(S)" TO DISK ";: … " ð LL Ï NS ð NS ò S%(,J): :¢ S%(,J) ð r² ƒ J: Ž >rí � SEARCH FOR A STRING MATCH WITH ANY FIELD CHARACTERSjrîNS ð : ‘ : ‘ S": "H$(S)" = ";: … "";Q$«róL ð ÿ’ (Q$): ‚ J ð  Î NR:LL ð ÿ’ (ST$(J)): ‹ L ï LL Ï Ðrø ‹ L ð LL Ï ‹ Q$ ð ST$(J) Ï   s ‚ I ð  Î LL ò  ó L: ‹ ÿƒ (ST$(J),I,L) ñ ï Q$ Ï ƒ I)s ‹ I ï LL ò  ó L Ï Is  ‹ RNG$ ð "Y" Ï S%(,J) ð ÈsNS ð NS ò S%(,J): ƒ J: ‹ RNG$ ñ ï "Y" Ï R$( ÿ” (R$())) ð R$() ò " AC MATCH, WITH " ò ÿ“ (S) ò ":" ò H$(S) ò "= " ò Q$Ð(Y/N)";L$: ‹ L$ ñ ï "Y" Ï Êÿ{–F$ ð ".IND": ‰ 3 | MF ð : � (]|ª … "ENTER # OF FIELD FOR SORT ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï ªÂ|´ ‘ : ‘ "DO YOU WANT TO SORT: ";H$(S): ‘ : ‘ "1 ALPHABETICALLY": ‘ "2 NUMERICALLY": ‘ "3 BY DATE"}Ò ‘ : … "WHICH ";L$:L ð ÿ” (L$):‹ L ñ  ø L ï  Ï ‰ Ò: :¢ ‘ : ‘ "SORTING ";: ‰ Ó+}ð � <: � 6}úNR ð p} ‘ CLS$;CH$; : ‘ "PRESS 'RETURN' TO EXIT TO MENU": ‘ ¢} ‘ "HEADER FOR ROW NUMBER ";NR;: … ":",R$(NR)Ø}" ‹ R$(NR) ñï "" Ï NR ð NR ò : ‹ NRs Ž ós ‹ RNG$ ñ ï "Y" Ï S%(,J) ð þs ‰ tè ’ : ‘ CLS$;CH$;_t † R$(Q),AC(),K(A),RN$():PDB$ ð "":F$ ð "BASENAME.RA": • ¨ ‰ 2 Ût$† PF$(): PF$() ð "OFF": PF$() ð "ON FOR 80 COLUMNS": PF$() ð "ON FOR 132 COLUMNS": � PRINTER STATUS CODES SET BY PFUu%ESC$ ð ÿ–() ò "[": CH$ ð ESC$ ò "H": CLS$ ð ESC$ ò "2J": MCU$ ð ESC$ ò "1A": MCD$ ð ESC$ ò "1B": CLL$ ð ESC$ ò "2K"Òu&� ESCAPE SEQUENCES TO MOVE CURSOR, WHEN PRINTER: CURSOR HOME, CLEAR SCREEN, MOVE CURSOR UPT OR DOWN ONE LINE, CL ñð MH Ï ‰ ‚~@‘ CLS$;CH$: CP ð  : � i: … "MAXIMUN HEADER FIELD LENGTH = ",LV%:R$(NR) ð ÿ“(LV%): ‹ LV% ñ  ø LV% ï P Ï ‘ "REENTER FIELD LENGTH MUST BE IN RANGE 10 - 80": ‰ @”~J � ¸: ‰ ƒç~T ‘ CLS$;CH$:PP ð :NR ð NR ò :J ð NR:S%(,J) ð J: S%(,J) ð :N$(B,) ð ÿ“(J)/h‘"YOU ARE ENTERING RECORD #";NR;: ‹ NH ï  Ï ‘ " PP= ";PPò;oj ‘ : ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);":": ƒ IÈ� ‘ CH$;ESC$;"3B";: ‚ I ð  ò  ô PP Î NH(PP): ‘ I" "H$(I);: … ":",N$(B,I) : ƒ I: ‘ >é‡ ‹ ÿ• (L$) ð Q Ï ¶ˆ ‹ ÿ• (L$) ð  Ï Ê"ˆ ‹ ÿ• (L$) ñ ï  Ï >ˆL ð : ‘ CLS$;CH$; : Ž Fˆ  � gˆ% ‘ CLS$;CH$;: ‘ ESC$;"10B"; Έ* ‘ "ENTER THE NUMBER OF THE RECORD": … "YOU WANT TO CHANGE.....";J$:J ð ÿ” (J$): ‹ J$ ð "" Ï èêˆ/ ‹ J ñ  ø J ï NR Ï *ôˆ4� 5‰9PP ð :P$ ð "(KEY RETURN FOR OTHER PP)": ‹ NH ñ  Ï P$ ð ""މ> ‘ CLS$;CH$; : � ä: ‘ "CHANGE WHICH " ò P$: … "LINE #= ";S$: ‹ S$ ñ ï "" Ï ‰ R¦‰? ‹ NH ñ  Ï ‰ Rʉ@PP ð PP ò : ‹ PP ï MP Ï PP 𠀚 … "ENTRIES OK?..Y/N/#....";L$: ‹ L$ ð "N" Ï ‘ CLS$;CH$; : ‰ h³€¤LL ð ÿ” (L$): ‹ LL ï  ô PP ÷ LL ñ ð NH(PP) Ï ‘ CLS$;CH$; : ‘ : � ä: CP ð ò LL ó  ô PP: � i:‘ LL" ";H$(LL)": ";: OLD$ ð N$(B,LL): � x: N$(B,LL) ð REP$ó€® ‹ LL ï  Ï CP ð NH(PP) ó  ô PP ò : � i: LL ð : ‰ š�² ‹ PP ð  Ï PP ð : ‰ ¸<�³ ‹ NH ï  Ï PP ð : ‘ CLS$;CH$: ‰ h…�¸ F$ ð ".IND": � Ì: � ¸: ‘ : … "MORE (Y/N) ";L$: ‹ L$ ð "Y" Ï T��Ö ‰ Ê¥�ôL ð :PP ð : � ¾� ‘ CLS$;CH$; : � (‚:CP ð NHÕ‰B ‰ >þ‰RS ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï µŠ\PP ð ÿ… ((S ó ) õ )3Šb ‘ CLS$;CH$; : � ä׊f ‘ : CP ð S ó  ô PP : � i: ‘ S;" ";H$(S);": ";: OLD$ ð N$(B,S): � x: N$(B,S) ð REP$: ‘ CLS$;CH$; : � ä: … "* MORE CHANGES (Y/N/#)";L$: ‹ L$ ð "Y" Ï >‹h ‹ ÿ” (L$) ï  ÷ ÿ” (L$) ñð NH Ï S ð ÿ” (L$): ‰ \¯‹˜ ‘ : … "* OTHER RECORDS TO BE CHANGED ? Y/N/#.";L$: ‹ L$ ð "Y" Ï … "* DO YOU KNOW THE REC # ? Y/N..";CD$: ‹ CD$ ð "Y" Ï … "* RECORD # = ...";L$勚 ‹ ÿ” (L$) ï  ÷ ÿ” (O) ò : � i: ‹ CD ð  Ï ‘ Ð); NH ò ;" MAKE CHANGES";+‚N ‘ : … "WHICH ";S$:S ð ÿ” (S$)K‚X ‹ S ñ  ø S ï NH ò  Ï Nc‚b ‹ S ð NH ò  Ï  ƒg ‘ CLS$;CH$; : ‘: ‘ "OPTIONS FOR :";H$(S): ‘ : ‘ "KEY 'RETURN' TO MATCH FIRST CHARACTERS": ‘ "'SPACE' TO MATCH ANY CHARACTERS": ‘ "'ESC' FOR A RANGE OF DATES"Jƒj� f:L ð ÿ• (L$): ‹ L ñ ï  ÷ L ñ ï  ÷ L ñ ï  Ï j~ƒl ‹ ÿ• (L$) ñ ï  Ï ‘ : ‘ H$(S);: … " = ",Q$„q ‘ : ‹ ÿ• (L$) ñ ï  Ï … "RANGE? Y/N ";RNG$: ‹ RNG$ ð "Y" Ï � (:(L$) ñ ð NR Ï J ð ÿ” (L$)Œ¢ ‹ L$ ð "N" ø L$ ð "" Ï ¶'Œ§‹ J ï  Ï � Ì: � : ‰ 99Œ¬CD ð : ‰ ôMŒµ ‹ CD ð  Ï ÊšŒ¶F$ ð ".IND": ‘ "** FILING CHANGES - PLEASE WAIT **": � Ì:CD ð : ‰ Ê¢ŒÀ � ¹ŒÅ ‹ PF ï  Ï ‰ I÷ŒÊ ‘ " ";H$();": ";J;: ‹ NH ï  Ï ‘ Ð#) "PP= ";PP ò ;]�Þ ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);": ";N$(J,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PPe� Ž ™�$ F$ ð ".IND": � DELETE RECORDS & DISK SORT ¼�& ‚ J ð  Î NR:S%(,J) ð : ƒ JŽ( ‘ CLS$;C ‘ : ‘ "RANGE FROM "S;: … " TO #= ";L$:FL ð ÿ” (L$): ‹ FL ï NH Ï qI„v ‚ J ð  Î NR:S%(,J) ð : ‹ S ð  Ï ST$(J) ð ÿ“ (J)R„x ƒ J±„{ ‘ CLS$;CH$; : ‘ Ð); "SEARCHING LINE "S" OF ALL RECORDS":L ð : ‹ S ï  Ï J ð ó : � Ý„€ ‹ ÿ• (L$) ð  Ï NS ð : � ó: ‰ ž…… ‹ ÿ• (L$) ð  Ï � Š: ‰ žE…ŠNS ð : ‚ J ð  Î NR: ‹ Q$ ð "" Ï ‹ ST$(J) ð "" Ï S%(,J) ð ……� ‹ Q$ ñ ï "" Ï ‹ ÿ� (ST$(J), ÿ’ (Q$)) ð Q$ Ï S%(,J) ð  …�NS ð NS ò S%(,J): ƒ JÒ…ž ‹ RNG$ ð "Y" Ï S ð S ò : ‹ S ñ FL òH$; : ‘ : … "ENTER THE REC# TO BE DELETED...";DR$:DR ð ÿ” (DR$): ‹ DR$ ð "" Ï . :Ž* ‹ DR ñ  ø DR ï NR Ï ( ™Ž, J ð DR:PP ð : � : � ä: … "** DELETE THIS ONE.?.Y/N..";DR$: ‹ DR$ ð "Y" Ï S%(,J) ð ØŽ. ‘ : … "DELETE ANOTHER RECORD ? Y/N ";L$: ‹ L$ ð "Y" Ï ( !�0 NS ð : ‚ J ð  Î NR: ‹ S%(,J) ð  Ï NS ð NS ò :S%(,NS) ð S%(,J)œ�2 ƒ J:DR ð NR ó NS:J ð : � :NR ð NS: � ¸: ‚ J ð NR ò  Î NR ò DR:S%(,J) ð : ƒ J: � STORES NEW NR VAL ON DISK¾�3 NS ð : � DISK SORT FOLLOWSê�4 ‚ J ð  Ï {é…² ‹ NS ï  Ï � ™ý…³ ‹ CD ð  Ï ¶º†¼S ð S ó :RNG$ ð "N": ‘ CLS$;CH$; : CP ð  : � i : ‘ "THAT'S ALL OF THEM. SELECT:": ‘ : ‘ "1 DO MORE SEARCHES": ‘ "2 MAKE CHANGES IF YOU KNOW THE REC#": ‘ "3 RETURN TO MAIN MENU": ‡î CP ð : � i : ‘ Ô);: … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï  Ï î#‡ • S ‰ , ,Ê:‡  ‹ PF ñ ï  Ï ‡  ‹ CD ð  Ï ‘ "** RETURN=CONT **SPACE=CHANGE ** Q=QUIT": ‰ ¬‡ ‘ "RETURN=CONT ESC=MENU SPACE=CHANGE"· � f: ‹ ÿ• (L$) ð  Ï Î NR: ‹ S%(,J) ñ ï NS Ï ƒ J'�5 ‹ NS ð J Ï ‰ B : � RECORD IN CORRECT DISK LOCATIONz�6 ‹ J ï NR Ï L ð NR ò :S%(,L) ð NS: ‰ : : � DON'T NEED TO SAVE REC S%(0,J)â�8 � :L ð J: ‚ I ð  Î NH:Z$(I) ð N$(B,I): ƒ I: � TEMP STORE REC FROM DISK LOCATION J IN Z$(I) $‘: J ð NS: � :J ð L: � Ì: � STORE REC IN NEW ORDER ON DISC ‘< ‹ L ñð NR Ï ‚ I ð  Î NH: N$(B,I) ð Z$(I): ƒ I: J ð NS: � Ì:S%(,L) ð L:� PUT OTHER RECORD BACK ON DISK IN EMPTY SLOTÒ‘B S%(,NS) ð NS:NS ð NS ò : ‹ NS ñ ð ‘ "POSITION #"(I ò ) õ " ";: … "";K$:K(I) ð ÿ” (K$): ‹ K(I) ñ  ø K(I) ï NH ò  Ï à ˆšô ‘ "ENTER TAB FOR "H$(K(I))" ";: … "";K$:K(I ò ) ð ÿ” (K$): ‹ K(I ò ) ñ  ø K(I ò ) ï ÿ Ï ô Öš ‘ "TOTAL ON "H$(K(I))" (Y/N) ";: … L$: ‹ L$ ð "Y" Ï K(I ò ) ð:K() ð ôš ƒ I: ‹ K() ñ ï  Ï N 8›0 … "ENTER TAB FOR TOTAL: ";A$: ‹ ÿ’ (A$) ð  Ï K() ð : ‰ N ‰›D K(I ò ) ð ÿ” (A$): ‹ K(I ò ) ñ  ø K(I ò ) ï ƒ Ï ‘ "": ‘ MCU$;: ‰ 0 ž›N ‹ NH ñ  Ï ‘ œS ‚ I ð  Î NH:H%(I) ð : ƒ I: ‚ I ð  ÎNR Ï 4 Ý‘D ‰ è摦 � }’° ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ J ð  Î NR: ‘ J;" ";R$(J): ƒ J: ‘ : ‘ J;" CREATE A NEW DATA BASE": ‹ J ï  Ï ‘ J ò ;" DELETE A DATA BASE"…’â ‘ ¸’ì … "WHICH ";S$:S ð ÿ” (S$): ‹ S ð J ò  Ï d ú’ ‹ S ñ  ø S ï J Ï ‘ ÿ– ();: ‘ MCU$;CLL$;ESC$;"10D"; ‰ ì !“ DB$ ð R$(S): ‹ S ñ ï NR ò  Ï P 0“ ‘ : ‰ F y“2 � <:J ð : ‘ "THERE ARE NO RANDOM ACCESS DATA BASES ON THIS DISK"Ñ“7 ‘"'RETURN' TO CREATE ONE, 'ESC' TO QUIT ";: � f: ‘ L$:‘: ‹ ÿ•(L$) ð  Ï  RH ô  Ñ :H%(K(I)) ð : ƒ I: � SET H%(I)=1 FOR HEADERS REQUIRED IN REPORT6œX ‹ K() ð  Ï T9 ð : ‰ b _œY ‹ K() ð  Ï K() ð :T9 ð : ‰ b ©œZ ‹ K() ð  Ï … "VERTICAL TOTALS ALSO? Y/N ";L$: ‹ L$ ð "Y" Ï T9 ð М[ ‹ K() ð  ÷ L$ ñ ï "Y" Ï T9 ð i�b ‘ "'RETURN' WILL SELECT ALL RECORDS.": … "SELECT RECORDS BY WHICH HEADER #";S$:S ð ÿ” (S$): ‹ S$ ñ ï "" Ï ‹ S ñ  ø S ï NH Ï ‘ "REENTER": ‰ b Ù�g F$ ð ".IND":R$() ð "":R$() ð "ALL RECORDS": ‚ J ð  Î NR:S%(,J) ð : ƒ J: ‹ S$ ð "" Ï R$(è :¢ ‘m”F ‘"READY TO CREATE A NEW DATA BASE":‘ "FIRST 8 CHARACTERS OF NAME MUST BE UNIQUE": … "NAME FOR NEW DATA BASE FILE :",R$(J): NR ð J: � ¸:DB$ ð R$(NR)½”P PDB$ ð DB$: ‹ ÿ’(DB$) ï  Ï PDB$ ð ÿ�(DB$,):� FILE NAME CAN'T EXCCED 8 CHRÇ”U ‰ tÏ”d � >•n ‘ : … "DELETE WHICH : ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï J ó  Ï ‘ ÿ– ();: ‘ MCU$;CLL$;ESC$"20D";: ‰ n â•‚ ‘ CLS$;CH$; : ‘ ESC$;"9B": ‘ "READY TO DELETE " ;ÿ– (");R$(S); ÿ– (");".": ‘ : ‘ "ONCE DELETED, THIS DATA CANNOT BE": ‘ "RECOVERED.) ð "1": ‰ ” —žj ‘ CLS$;CH$;:‘:‘"SEARCH OPTIONS FOR: ";H$(S):‘:‘"KEY 'RETURN' TO MATCH FIRST CHARACTERS IN HEADER FIELD-FC":‘" 'SPACE' TO MATCH ANY CHARACTERS-AC":‘" 'ESC' FOR A RANGE OF DATES": ‘מl � f: ‹ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  Ï ‰ j Ÿn ‹ S ð  Ï ‚ J ð  Î NR:ST$(J) ð ÿ“ (J): ƒ J: :¢ J ð ó: � XŸp R$() ð ÿ“(ÿ”(R$()) ò ): ‹ ÿ•(L$) ð  Ï � Š: ‰ ~ xŸr ‹ ÿ•(L$) ð  Ï � î:‰ ~ ØŸt ‘ S;": ";H$(S);: … "= ",Q$: NS ð : ‚ J ð  Î NR: ‹ Q$ ð "" Ï ‹ ST$(J) ñï "" ARE YOU SURE THAT YOU"Z–Œ ‘ "WANT TO DELETE IT? (Y/N) ";:… "",S$: ‹ S$ ñï "Y" Ï ¦ : :¢ PDB$ ð R$(S) : ‹ ÿ’(R$(S)) ï  Ï PDB$ ð ÿ�(R$(S),)¾–´ PDB$ ð DRIVE$ ò PDB$: ‘ CLS$;CH$; : ‘ ESC$;"11;11H" : ‘ "[ DELETING DATABASE ]": • ¨ ‰ ð '—È F$ ð ".RFN": � : ‚ I ð  Î NR: FILE$ ð PDB$ ò ".R" ò ÿ‚(ÿ“(I),ÿ’(ÿ“(I)) ó): È FILE$: ƒ I: ‰ ú 4—ð � <: k—ú FILE$ ð PDB$ ò ".IND": ¿ "O",#,FILE$: Ã: È FILE$¡— FILE$ ð PDB$ ò ".RFN": ¿ "O",#,FILE$: Ã: È FILE$#˜ FILE$ ð PDB$ ò ".HDR": ¿ "O",#,FI Ï S%(,J) ð  u ‹ Q$ ñ ï "" Ï ‹ Q$ ñ ï ÿ� (ST$(J), ÿ’ (Q$)) Ï S%(,J) ð š v ‹ ÿ• (L$) ñ ï  Ï NS ð NS ò S%(,J): ƒ J:R$( ÿ” (R$())) ð R$() ò " FC MATCH, WITH " ò ÿ“(S) ò":" ò H$(S) ò "= " ò Q$#¡~ ‘ CLS$;CH$; : ‚ I ð  Î ÿ” (R$()): ‘ R$(I): ƒ I: ‘ : ‘ "WITH THE SELECTIONS ABOVE, THE REPORT": ‘ "WILL CONTAIN "NS" RECORDS": ‘ ‘¡… ‘ "KEY 'RETURN' TO RUN REPORT,OR": ‘ "ANY OTHER KEY FOR ANOTHER SELECTION": � f: ‹ ÿ• (L$) ð  Ï ” ¢Š ‘ CLS$;CH$; : � (: ‘ : … "SELECT RECORDS BY HEADELE$: Ã: È FILE$: PDB$ ð "":F$ ð DRIVE$ ò "BASENAME.RA": � : ‹ NR ð  Ï È FILE$: ‰ èj˜J ‚ I ð S Î NR ó :R$(I) ð R$(I ò ): ƒ I:NR ð NR ó : � ¸: ‰ ¦ r˜| � ®˜† T9 ð : ‘ CLS$;CH$; :E ð : ‚ I ð  Î A:K(I) ð : ƒ I蘤 ‚ I ð  Î :AC(I) ð : ƒ I:HC ð :GT ð : • E ‰ N ó˜¸ ‰ dd™Â ‘ : ‘ "NO MORE THAN 21 HEADERS ALLOWED": … "HOW MANY HEADERS ";RH$:RH ð ÿ” (RH$): ‹ RH ñ  ø RH ï  Ï  ‡™Ì ‹ E ð  Ï RN$(NN) ð "PRESENT"¡™Ö ‚ I ð  Î RH ô  Ñ "šà ‘ "ENTER # OF HEADER YOU WANT IN": R # = ";L$:S ð ÿ” (L$): ‹ S ñ  ø S ï NH Ï ‘ "REENTER": ‰ … ¢� ‰ j I¢’ ‹ E ð  Ï Ž : � FOR SELECT HEADERS SUB @ 3170c¢” J ð ó: S ð ó: � —¢ž ‚ I ð  Î RH ò : ‹ K( ô I ó ) ï K Ï PF ð Ì¢¨ ƒ I: • PF � n,‚, : � : ‹ K ð  Ï ‰  㢲 ‚ J ð  Î K: � p $£¼ ‹ PF ñ  Ï ‹ L ï  Ï ‘ "ANY KEY TO CONTINUE";: � f: � H£Ð ‘ : ƒ J: ‹ N$(,) ð "0" Ï  š£Ú ‚ J ð  Î ÿ” (N$(O,O)) ó :S%(,J) ð : ƒ J:J ð ó :S ð ó : � : ‰ ² ¶£ • T9 � Ô : • E ‰ R Ú£/ ‹ K() ð  ÷ TÎ NR:K(I) ð ÿ” (R$(I)): ƒ I:K() ð ÿ” (R$(I ó )):NR ð NS: � (: ‰ N ¬( � a¬- ‘ CLS$;CH$;:FH ð :LH ð NH():P ð : ‹ MF ð  Ï ‘ "0 ";H$();î¬2 ‘ " SELECT FROM:": ‚ I ð FH Î LH: ‘ I" "H$(I);: ‹ I ò  ñ ð NH(P) Ï LL% ð ÿ’(ÿ“(I)) ò ÿ’(H$(I)): ‹ LL% ï  Ï ‘ ÔLL% ó );­7‹ I ò  ñð NH(P) Ï ‘ " ";Iò;" ";H$(Iò);£­< ‘ : ƒ I: ‹ NH ï ( Ï ‘ "'SPACE'=OTHER HEADERS,'RETURN'=CONTINUE ";: � f: ‹ ÿ• (L$) ð  Ï CP ð : � i : ‘ CLL$;: ‰ Zê­F ‹ NH ï ( ÷ P ð  Ï FH ð ):P ð 9 ð  Ï K() ð H¤> ‘ : ‘ "DO YOU WANT TO SAVE THE FORMAT": … "FOR THIS REPORT TO DISK (Y/N) ";L$: ‹ L$ ð "Y" Ï E ð : � ˆ®¤R ‘ : ‘ "MORE REPORTS USING THE "RN$(NN)" FORMAT": … "(Y/N) ";L$: ‹ L$ ð "Y" Ï � (:E ð : ‰ ¤ Ö¤f ‚ I ð  Î NH:H%(I) ð : ƒ I: ‰ Ê:¥p LL% ð : ‚ I ð  Î RH: SP% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);™¥u LL% ð K(ôIó) ò ÿ’(N$(J,K( ô I ó ))): ‹ PF ñ Ï ‘ N$(J,K(ôIó));: :¢ ž N$(J,K(ôIó));ä¥w ‹ K(ôI) ð  Ï V ð ÿ”(N$(J,K(ôIó))): AC(I:LH ð NH(): ‘ CLS$;CH$; : ‰ 2ÿ­P ‹ NH ï ( Ï -®ZMF ð : Ž ®d � ^®nNN ð : ‚ I ð  Î :RN$(I) ð "": ƒ I:NS ð NR:F$ð".RFN": • ¨ ‰ æi®Œ � û®– ‚ I ð  Î NR:RN$(I) ð R$(I): ƒ I: ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ I ð  Î NR: ‘ I;" ";R$(I): ƒ I: ‘ : ‘ I" CREATE A NEW REPORT FORMAT"¯µI ð I ò :L$ ð "WALT3"b¯¶ ‘ : ‘ I" USE REPORT FORMATS DEDICATED TO:": ‘ " "L$" DATA BASE": ‘ ™¯¾ … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï I Ï ¾¼¯¿ ‹ S ñ ï I Ï I ð I ó : ‰ ÈݯÀ ‹ DB$ ð ) ð AC(I) ò V: HC ð HC ò V]¦z ƒ I: ‹ K() ð  Ï ‹ HC ñ ï  Ï GT ð GT ò HC: SP% ð K( ô I ó) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);†¦ ‹ K() ð  Ï ‹ PF ñ  ‘ HC; :¢ ž HC;¥¦„ ‹ PF ñ  Ï ‘ : ‘: :¢ ž : ž¿¦¢ HC ð :L ð L ò : Ž ;§Ô ‹ PF ð  Ï ‚ I ð  Î P: ‘ "-";: ƒ I: ‘: :¢ ‚ I ð  Î P : ž "-";: ƒ I: ‹ PF ð  Ï ž: :¢ ‚ I ð Q Î „: ž "-";: ƒ I: žÉ§Ù LL% ð : ‚ I ð  Î RH: SP% ð K(ôIó) ó LL% : ‹ AC(I) ñï  Ï LL% ð K(ôIó) ò ÿ’(ÿ“(AC(I))):‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);L$ Ï NR ð NS: ‰ |x°Á ‘ CLS$;CH$; : ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT DESIGNED FOR": ‘ L$" DATA BASE": ‘ "REPORT WILL PROBABLY NOT WORK WITH": ‘ DB$" DATA BASE STRUCTURE"Û°Â ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT IS AT LINE 5500": ‘ "IT IS ACCESSIBLE FROM APPLESOFT": ‘ -±Ã ‘ "ENTER 10 IN THE MAIN MENU FOR APPLESOFT": ‘ "THEN KEY IN: GOTO 5500": ‘ Ÿ±Ä ‘ : ‘ : ‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)": ‘ "2 RETURN TO MAIN MENU": ‘ : … "WHICH ";L$:L ð ÿ” (L$)µ±Å ‹ L ð  Ï ‰ – ‹ L ð  Ï NR ð û§Þ ‹ AC(I) ñï  Ï ‹ PF ñ Ï ‘ AC(I); :¢ ž AC(I);_¨ü ƒ I: ‹ GT ñ ï  Ï SP% ð K( ô I ó ) ó LL%: ‹ SP% ï  Ï ‹ PF ñ Ï ‘ ÔSP%);GT: :¢ ž ÔSP%);GT€¨‹ GT ð  Ï ‹ PF ñ  Ï ‘ :¢ ž†¨Žß¨ ‘ CLS$;CH$; : ‘ RN$(NN)" REPORT FOR :": ‘ : ‚ I ð  Î ÿ” (R$()): ‘ R$(I): ƒ I: ‘ 2©$‹ PF ï  Ï ž RN$(NN);" REPORT FOR :": ž: ‚ I ð  Î ÿ” (R$()): ž R$(I): ƒ I: ž’©LLL%ð: ‚ I ð  Î RH: SP% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%); :¢ ž ÔSP%)ç©NLL% ð K(ôIó) ò ÿ’(H$(K(ôIó))): ‹ PF ñ  Ï ‘ H$(NS: ‰ Êì±Ç ‘ CLS$;CH$; : ‰ Ã)²ÈNN ð S: ‹ S ñ ï I Ï RN$(S) ð R$(S):E ð :NR ð NS: ‰ â4²Ü ‰ ·²æ � <: ‘ CLS$;CH$; : ‘ "NO REPORT FORMATS ON DISK...": ‘:NN ð : … "DO YOU WANT TO CREATE ONE (Y/N) ";L$: ‹ L$ ñ ï "Y" Ï ÊѲ� (: NR ð NS: ‰  ð²  ‰ : � READ RECORD Jú²J ð ³ ‹ F$ ñ ï ".IND" Ï �M³ FILE$ ð DRIVE$ ò PDB$ ò F$:¿ "R",#,FILE$,LV% ò г" ‹ J ð  Ï À #,LV% AS NR$:Á #,: NR ð ÿ” (NR$): ‰ ^ô³' ‹ J ï  Ï N$(B,) ð ÿ“ (J): ‚ I ð  Î NH:Á #,(S%(,J) ó K(ôIó)); :¢ ž H$(K(ôIó));DªQ ƒ I: ‹ K() ð  Ï SP% ð K( ô I ó) ó LL%: ‹ SP% ï  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);xªV‹ K() ð  Ï ‹ PF ñ  Ï ‘"TOTAL"; :¢ ž "TOTAL";¬ªtL ð  ò ÿ” (R$()): ‹ PF ñ  Ï ‘: Ž: :¢ ž : Ž ´ªˆ � t«’NS ð NR: ‘ : … "ENTER THE REPORT FORMAT NAME ";RN$(NN):F$ ð ".R" ò ÿ‚(ÿ“(NN),ÿ’(ÿ“(NN)) ó ):NR ð  ô RH ò : ‚ I ð  Î NR:R$(I) ð ÿ“ (K(I)): ƒ I:R$(I ó ) ð ÿ“ (K()): � ¸: � X: Ž |«â � ¬ìF$ ð ".R" ò ÿ‚(ÿ“(NN),ÿ’(ÿ“(NN)) ó ) : � :RH ð (NR ó ) õ : ‚ I ð  ) ô NH ò I ò : … #,N$(B,I) : ƒ I: ‰ ^X´, ‹ S ï  ÷ S ñ ð NH Ï ‚ J ð  Î NR: Á #,(S%(,J) ó ) ô NH ò S ò : … #,ST$(J): ƒ J: ‰ ^ˆ´6K ð : ‚ J ð  Î NR: ‹ S%(,J) ñ ï  Ï TÒ´@K ð K ò : ‹ K ð B Ï K ð K ó :N$(,) ð ÿ“ (J):N$(,) ð "1": ‰ ^5µJN$(K,) ð ÿ“ (J): ‚ I ð  Î NH: ‹ H%(I) ð  Ï Á #,(S%(,J) ó ) ô NH ò I ò : … #,N$(K,I)>µO ƒ IUµT ƒ J:N$(,) ð "0"cµ^ à #: Ž ¸µ� FILE$ ð DRIVE$ ò PDB$ ò F$:¿ "I",#,FILE$: … #,NR$: NR ð ÿ”(NR$): ‚ J ð  Î NR͵† … #,R$(J): ½Ê � Û½Ô ‰ ãç½Þ � < û½ã ‹ CD ð  Ï ¶Y¾è ‘ CLS$;CH$; : ‘ "******* DATA BASE MANAGEMENT I *******": ‘: ‘ "CURRENT DATA BASE: ";DB$°¾é ‘ "CURRENTLY CONTAINS: ";NR;" RECORDS": ‘ "ROOM FOR ";MR ó NR;" MORE RECORDS": ‘ò¾ò‘ "ROOM FOR ";B ó ;" IN MEMORY": ‘ "THE PRINTER IS ";PF$(PF)j¿8‘:‘"1 SELECT DATA BASE": ‘"2 SEARCH AND/OR CHANGE DATA":‘ "3 ENTER RECORDS": ‘"4 DELETE RECORDS": ‘"5 REPORTS"ä¿B ‘ "6 SORT (TAKES APPROX. " ÿ… (nv ô NR ö  ò �Âu{ ô NR)" MIN.)": ‘ "7 TURN ON PRINTƒ JÛµ� à #: Ž „¶š� TRUNCATE AND WRITE 'RETURN' INTO FIELD SO CAN USE INPUT TO READ DISK, THIS WAY SHORT FIELDS ARE NOT PADDED OUT WITH SPACES AT THE END-REQUIRED FOR REPORTS SECTION޶¸J 𠪶 ‹ F$ ñ ï ".IND" Ï ø¶Ì FILE$ ð DRIVE$ ò PDB$ ò F$: ¿ "R",#,FILE$,LV% ò : À #, LV% ò  AS IN$&·Ö ‹ J ð  Ï É IN$ ð ÿ“(NR):  #,: ‰ ô�·ê ‚ I ð  Î NH: É IN$ ð ÿ�(N$(B,I),LV%) ò ÿ–( ):  #,(S%(,J) ó ) ô NH ò I ò : ƒ I�·ô à #: Ž Ú· FILE$ ð DRIVE$ ò PDB$ ò F$: ¿ "O",#,FILE$: ‘ #,ÿ“(NER OR CHANGE # OF COLUMNS"[À’ ‘ "8 TURN OFF PRINTER": ‘ "9 LIST RECORDS": ‘ "10 QUIT": ‘ : … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï  Ï ÊŽÀÎ • S ‰ è,ô,T,$ ,| , ,,(,Ø,2;ÁØ ‘ CLS$;CH$; : CP ð  : � i : ‘ "KEY 'RETURN' TO LIST ALL RECORDS": ‘ : ‘ "OR": ‘ : ‘ "ENTER FIRST RECORD # TO LIST EITHER A": ‘ "SINGLE RECORD OR A SEQUENTIAL RANGE"{ÁÝ ‘ : … "'RETURN' OR REC # = ";L$: ‹ L$ ð "" Ï � ”: ‰ Ê´ÁâL ð ÿ” (L$): ‹ L ñ  ø L ï NR Ï ‘ "REENTER": ‰ Ý Âç ‘ : ‘ "KEY 'RETUR): ‚ J ð  Î NR¸0 ‘ #,R$(J): ƒ J: à #: FF ð : Ž ¸X � V¸bNR ð NN:F$ ð ".RFN": ‚ I ð  Î NR:R$(I) ð RN$(I): ƒ I: � ¸:NR ð NS: Ž �¸” ‚ J ð  Î NR:S%(,J) ð : ƒ J: � LIST ALL RECORDS븙J ð ó :S ð :L ð : ‘ CLS$;CH$; : � : ‚ J ð  Î K:PP ð : ‹ PF ï  Ï �  : ‰ Æü¸žP ð J: � î ¹£ ‹ L ò NH ñ  ÷ J ñ ï K Ï Æe¹¨ ‹ NH ï  Ï PP ð PP ò : ‹ PP ï  Ï ‘ "KEY 'SPACE' TO BACK UP"—¹­ ‘ "PRESS 'RETURN'TO CONTINUE,'ESC'FOR MENU";Ö¹² � f: ‘CLS$;CH$;: ‹ ÿ• (L$) ð  Ï N$(,) RN' IF # "L" IS ONLY RECORD": ‘ "INPUT LAST RECORD # FOR A RANGE"PÂì ‘ : … "'RETURN' OR LAST REC # = ";L$: ‹ L$ ð "" Ï LL ð L: ‰ ö�ÂñLL ð ÿ” (L$): ‹ LL ñ ð L ø LL ï NR Ï ‘ "REENTER": ‰ ìÓÂö ‚ J ð  Î NR:S%(,J) ð : ‹ J ï ð L ÷ J ñ ð LL Ï S%(,J) ð êÂû ƒ J: � ™: ‰ ÊGÃPF ð :‘ CLS$: CP ð : � i: ‘"THE PRINTER IS ";PF$(PF): ‘" KEY 'RETURN' TO CONTINUE"yà ‘:‘ "KEY 'SPACE' TO CHANGE TO : ";PF$():‘ÁÃ"� f: L ð ÿ•(L$): ‹ L ñï  ÷ Lñï  Ï ‰ : :¢ ‹ L ð  Ï PF ð ËÃ$‰ Êð "0": ‰ ʺ· ‹ ÿ• (L$) ñ ï  ÷ ÿ• (L$) ñ ï  Ï ‘ "REENTER ";: ‰ ²Oº¼ ‹ NH ï  ÷ PP ï  ÷ ÿ• (L$) ð  Ï PP ð PP ó qºÁ ‹ NH ï  ÷ PP ñ ð MP Ï ž‘ºÆ ƒ J: ‹ N$(,) ð "0" Ï Ž ÎºË ‘ CLS$;CH$; : CP ð  : � i : ‘ "THINKING PLEASE WAIT"»Ð ‚ J ð  Î ÿ” (N$(,)) ó :S%(,J) ð : ƒ J: ‰ ™@»ä � SCREEN DISPLAY OF 1 PAGE REPLACES OLD SUB AT 2240c»éP ð B: ‹ PF ï  Ï J ð B: ‰  ¯»î‘ " ";H$();": ";N$(P,);: ‹ NH ï  Ï ‘ " PP= ";PP ò ;¼ó ‘ : ‚ I ð  ò  ô PPêÃ(PF ð : ž ESC$;"1w": ‰ Ê Ä2 ‘ CLS$;CH$; : • ¨ ‰ : � WÄ< � ERROR HANDLING FOR MBASIC-RESUME IF FILE NOT FOUND, ELSE PRINT ERROR˜ÄF‹ × ð 5 Ï © P: :¢ ‘"ERROR ";×;" AT LINE ";Ö: • ¨ ‰ : �ÎÄPŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED üÄnž ESC$;"1w";: Ž : � SET PRINTER TO 80 COL*Å‚ž ESC$;"4w";: Ž: � SET PRINTER TO 132 COLDÅ ‘" INVALID PF = 3": ŽlÅ| � DECICATED REPORT FORMAT CHOICESÐÅ� ‘ CLS$;CH$; : ‘ : ‘ : ‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)": ‘ : ‘ "2 RETURN TO MAIN Î NH(PP): ‘ I" "H$(I)": "N$(P,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PP: ¼ø Ž V¼  � SUBROUTINE TO PRINT 2 PAGE REPORT WITH 2 COLUMNS¦¼ • PF � n,‚, :FH ð :LH ð NH():PP ð : SP% ð (: ‹ PF ï  Ï SP% ð BÓ¼ž :ž " "H$()":"N$(J,): ‚ I ð FH Î LH9½ ž I" "H$(I)": "N$(J,I);: LL% ð ÿ’(ÿ“(I)) ò ÿ’(H$(I)) ò ÿ’(N$(J,I)): ‹ LL% ñ SP% Ï ž ÔSP% ó LL%);}½ ‹ I ò  ñð NH Ï ž I ò  " " H$(I ò ) ": " N$(J,I ò ) :¢ ž¼½% ƒ I:‹ NH ï ( ÷ PP ð O Ï FH ð ):LH ð NH():PP ð : ‰ ÿȽ* ž : Ž Ð MENU"ôÅ� ‘ : … "WHICH ";L$:L ð ÿ” (L$) Æ“ ‹ L ð  Ï ‰ d Æ• ‹ L ð  Ï ‰ Ê+Æß ‰ |": ‘ : ‘ "2 RETURN TO MAINE PRINT ERROR˜ÄF‹ × ð 5 Ï © P: :¢ ‘"ERROR ";×;" AT LINE ";Ö: • ¨ ‰ : �ÎÄPŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED üÄnž ESC$;"1w";: Ž : � SET PRINTER TO 80 COL*Å‚ž ESC$;"4w";: Ž: � SET PRINTER TO 132 COLDÅ ‘" INVALID PF = 3": ŽlÅ| � DECICATED REPORT FORMAT CHOICESÐÅ� ‘ CLS$;CH$; : ‘ : ‘ : ‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)": ‘ : ‘ "2 RETURN TO MAINT BY DATEh•‚ J ð  Î NR: DT$ ð N$(J,S): � ¤: N$(J,NH ò ) ð DT$4hšƒ J: OS ð S: S ð NH ò : L ð : Žðh¤ � FORMAT DATE(MO/DAY/YR)=DT$ INTO NUMBER OF GREGORIAN CALENDAR DAYS SINCE 1/2/0000:NOTE USE OF INTEGER ARITHMETIC,NO DATES AFTER YEAR 2730 OR BEFORE 99, TWO DIGIT YEAR OK FOR 1900'S-i® ‚ II ð  Î ÿ’ (DT$): ‹ ÿƒ (DT$,II,) ñ ï "/" Ï ƒ IIji¸MO% ð ÿ” ( ÿ� (DT$,II ó )): ‹ MO% ï  Ï � X: ‰ ‰i ‚ JJ ð II ò  Î ÿ’ (DT$)°iÌ ‹ ÿƒ (DT$,JJ,) ñ ï "/" Ï ƒ JJúiÖ ‹ JJ ï ð ÿ’ (DT$) ,Êç  ‹ PF ñ ï  Ï ,€  ‹ CD ð  Ï ‘ "** RETURN=CONT **SPACE=CHANGE ** Q=QUIT": ‰ Y€ ‘ "RETURN=CONT ESC=MENU SPACE=CHANGE"{€ � f: ‹ ÿ• (L$) ð  Ï >–€ ‹ ÿ• (L$) ð Q Ï ¶±€ ‹ ÿ• (L$) ð  Ï ÊÏ€ ‹ ÿ• (L$) ñ ï  Ï ë€L ð : ‘ CLS$;CH$; : Ž ó€  � �% ‘ CLS$;CH$;: ‘ESC$;"10B"; ��* ‘ "ENTER THE NUMBER OF THE RECORD": … "YOU WANT TO CHANGE.....";J$:J ð ÿ” (J$): ‹ J ñ  ø J ï NR Ï *–�4 ‹ J$ ð "" Ï è×�9PP ð :P$ ð "(KEY RETURN FOR OTHER PP)": ‹ NH ñÏ � X: ‰ : � 2ND / NOT FOUND WITHIN DT$?jàYR% ð ÿ” ( ÿ‚ (DT$, ÿ’ (DT$) ó JJ)): ‹ YR% ñ c Ï YR%ðl ò YR%ŽjêDA% ð ÿ” ( ÿ‚ ( ÿ� (DT$,JJ ó ),JJ ó II ó )): ‹ DA% ï  Ï � X: ‰ æjô � CHANGE TO GREGORIAN #:REMAINDER OF #/7 IS DAY OF WEEK,REM=0 IS MON,REM=6 IS SUNkù ‹ MO% ñ  Ï MO% ð  ô (MO% ó ): ‰  Ykþ ‹ YR% ð  ô ÿ… (YR% õ ) Ï MO% ð ÿ…(ÍÌt… ô MO% ó 33{…): ‰  {kMO% ð ÿ…(ÍÌt… ô MO% ó š™†)Åk DT$ ð ÿ“ (YR% ô m ò (YR% ó)ý ó YR%ýd ò YR%ý� ò MO% ò DA% ó )Íkÿþa � DBMW2E-7/30/82: MODIFIED FOR MBASIC 8/10/83`b � DBMW2E HAS INT SEARCH AND REPORT OPTIONS OF DBMR USING N$(J,NH+1) FOR S%(1,J) 2c� DATA BASE NAME TRUNCATED IF OVER 8 CHR- USE PDB$ AS ID WITH SUFFIX: ".IND" FOR INDEX, ".HDR" FOR HEADER, ".RFN" FOR REPORT NAMES, ".R#" FOR REPORT FORMAT WHERE # IS STRING OF # WITH LEADING SPACE DELETED=cd ‰ è€cfL$ ð Ý: ‹ ÿ’ (L$) ð  Ï f: :¢ Ž: � SIMULATE APPLESOFT GET L$Ùci‘ CH$;ESC$;ÿ‚(ÿ“(CP),ÿ’(ÿ“(CP))ó);"B";: Ž: � ABSOLUTE VERT POSITION Ž èkX � ERROR SUBROUTIUNElb‘"DATE FORMAT ERROR IN DATE = ";DT$ll Ž 5lŠ � SEL A RANGE OF DATES„lž ‘ CLS$;CH$; : ‘:‘ : ‘ "INPUT RANGE OF DATES FOR:": ‘ S": "H$(S): ‘ : ‘ m£ … "LOWEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$() ò " " ò ÿ“ (S) ò ":" ò H$(S) ò " = " ò DT$: � ¤:L ð ÿ” (DT$)…m¨ ‘ : … "HIGHEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$( ÿ” (R$())) ò " TO " ò DT$: � ¤:LL ð ÿ” (DT$): ‘ : ‘ "SEARCHING"n­NS ð : ‚ J ð  Î NR:DT$ ð N$(J,S): � ¤: ‹ ÿ” (DT$) ï ð L ÷ BELOW LEFT EDGEtdj� PRINTING ESCAPE SEQUENCE CONFUSES BASIC, IT THINKS CURSOR MOVE RIGHT BY # OF PRINTABLE CHARACTERS IN SEQUENCE-GIVE LINE FEED AFTER 80 PRINTABLE CHARûdk� IN SUB 120 SAVE CUSOR POSITION, ISSUE LINE FEED TO CLEAR BASIC LINE COUNT THEN RESTORE CURSOR WITH ESC 7 & 8 IN LINE 124 AND 122Cex� PRINT OLD$ THEN CHANGE TO REP$ WITH SCREEN COPY USING GET SUB 102’ezREP$ ð "":‹ ÿ’(OLD$) ï  Ï ‘ ÿ–();"7":‘ ÿ–();"8";:‘ OLD$:‘ ÿ–();"8";ûe|‘ ÿ–();"7";:� f: ‘ : ‘ ÿ–();"8";: ‹ ÿ•(L$) ï ÿ” (DT$) ñ ð LL Ï NS ð NS ò ÿ” (N$(J,NH ò )): :¢ N$(J,NH ò ) ð "0"n² ƒ J: Ž Znî � SEARCH FOR A STRING MATCH WITH ANY FIELD CHARACTERS†nïNS ð : ‘ : ‘ S": "H$(S)" = ";: … "";Q$çnóL ð ÿ’ (Q$): ‚ J ð  Î NR:LL ð ÿ’ (N$(J,S)): ‹ L ï LL Ï N$(J,NH ò ) ð "0": ‰   oø ‹ L ð LL Ï ‹ Q$ ð N$(J,S) Ï  To ‚ I ð  Î LL ò  ó L: ‹ ÿƒ (N$(J,S),I,L) ñ ï Q$ Ï ƒ Io ‹ I ï LL ò  ó L Ï N$(J,NH ò ) ð "0"p NS ð NS ò ÿ” (N$(J,NH ò )): ƒ J:R$( ÿ” (R$())) ð R$() ò " ÷ ÿ•(L$) ñ  Ï ‘ L$;: REP$ ð REP$ ò L$: ‰ |f~‹ ÿ•(L$) ð  Ï Žuf€‹ ÿ•(L$) ð  ÷ ÿ’(OLD$) ï ÿ’(REP$) Ï REP$ ð REP$ ò ÿƒ(OLD$,ÿ’(REP$) ò ,): ‘ ESC$ "1C";: ‰ ‚ f�‹ ÿ•(L$) ð  Ï REP$ ð REP$ ò " ":‘" ";Sg‚‹ ÿ’(REP$) ï  Ï ‹ ÿ•(L$) ð  ø ÿ•(L$) ð  ø ÿ•(L$) ð  Ï ‘ ESC$ "1D";: L$ ð ÿ‚(REP$,): REP$ ð ÿ�(REP$,ÿ’(REP$) ó ): ‹ ÿ’(OLD$) ï ÿ’(REP$) Ï ÿƒ(OLD$,ÿ’(REP$) ò ,) ð L$‡g„‰ |:� NOT BAD IF GO TOO FAST JUMPS DOWN LINE?Óg�� FORMAT (M0/DA/YR) TO # OF DAYS IN N$(NH + 1) FOR NUMERIC SOR AC MATCH WITH " ò ÿ“ (S) ò ":" ò H$(S) ò "= " ò Q$: Ž 5pè � WAS MAXFILES AND D$ STUFF WITH GOSUB 5180 ¦p ’ : † R$(A),AC(),K(A),H$(*),RN$(): † Z$(():H$() ð "REC#": PDB$ ð "":F$ ð "BASENAME.SEQ": • ¨ ‰ 2 "q$† PF$(): PF$() ð "OFF": PF$() ð "ON FOR 80 COLUMNS": PF$() ð "ON FOR 132 COLUMNS": � PRINTER STATUS CODES SET BY PFœq%ESC$ ð ÿ–() ò "[": CH$ ð ESC$ ò "H": CLS$ ð ESC$ ò "2J": MCU$ ð ESC$ ò "1A": MCD$ ð ESC$ ò "1B": CLL$ ð ESC$ ò "2K"r&� ESCAPE SEQUENCES TO MOVE CURSOR, WHEN POK?..Y/N/#....";L$: ‹ L$ ð "N" Ï ‘ CLS$;CH$; : ‰ h¨z¤LL ð ÿ” (L$): ‹ LL ï  ô PP ÷ LL ñ ð NH(PP) Ï ‘ CLS$;CH$; : ‘ : � À: CP ð  ò LL ó  ô PP: � i:‘ LL" ";H$(LL)": ";: OLD$ ð N$(NR,LL): � x: N$(NR,LL) ð REP$èz® ‹ LL ï  Ï CP ð NH(PP) ó  ô PP ò : � i: LL ð : ‰ š{² ‹ PP ð  Ï PP ð : ‰ ¸1{³ ‹ NH ï  Ï PP ð : ‘ CLS$;CH$: ‰ h_{¸ ‘ : … "MORE (Y/N) ";L$: ‹ L$ ð "Y" Ï T}{ÖF$ ð ".IND": � ¸: ‰ Ê’{ôL ð :PP ð : � «{ ‘ CLS$;CH$; : � (ó{:CP ð NH(O) ò :� i: ‹ CRINTER: CURSOR HOME, CLEAR SCREEN, MOVE CURSOR UPT OR DOWN ONE LINE, CLEAR LINEWrL‘ CLS$;CH$:‘"INSERT DISK TO BE USED IN AVAILABLE DRIVE":‘¶rQ‘ "ENTER DRIVE TO BE USED (A,B,C,D) = ";: � f: ‘ L$: L ð ÿ•(L$): ‹ L ñ A ø L ï D Ï QÖrV ‘: DRIVE$ ð L$ ò ":": ‘: ‘èr` � : ‰ ¦ stF$ ð ".HDR": • ¨ ‰ ðs~ � ƒsˆ ‚ I ð  Î NR:H$(I) ð R$(I): ƒ I:NH ð NR:NR ð :MEM ð ÿ� ():NH() ð NH:NH() ð : ‹ NH ñ ð  Ï NH() ð NHÓsœB ð ÿ… (MEM õ ( ô (NH ò ))): † N$(B,NH ò ),R(B):F$ ð ".IND": D ð  Ï ‘ Ð); NH ò ;" MAKE CHANGES";|N ‘ : … "WHICH ";S$:S ð ÿ” (S$)7|X ‹ S ñ  ø S ï NH ò  Ï NO|b ‹ S ð NH ò  Ï  ô|g ‘ CLS$;CH$; : ‘: ‘ "OPTIONS FOR :";H$(S): ‘ : ‘ "KEY 'RETURN' TO MATCH FIRST CHARACTERS": ‘ "'SPACE' TO MATCH ANY CHARACTERS": ‘ "'ESC' FOR A RANGE OF DATES"6}j� f:L ð ÿ• (L$): ‹ L ñ ï  ÷ L ñ ï  ÷ L ñ ï  Ï jd}l ‹ L ñ ï  Ï ‘ : ‘ H$(S);: … " = ",Q$ï}q ‘ : ‹ L ñ ï  Ï … "RANGE? Y/N ";RNG$: ‹ RNG$ ð "Y" Ï � (: ‘ : ‘ "RANGE FROM "S;: … " TO #• ¨ ‰ Þåsº � : ‰ ÊùsÓ‹ L ð  Ï � �DtØ ‚ I ð  Î NR:R(I) ð : ƒ I: ‚ I ð  Î NR: ‚ J ð  Î NR: • L ‰ ö, rtö ‹ N$(I,S) ð ï N$(J,S) Ï R(I) ð R(I) ò }t ‰ ·t  ‹ ÿ” (N$(I,S)) ð ï ÿ” (N$(J,S)) Ï R(I) ð R(I) ò .u ƒ J: ƒ I: ‘ "SORTING ";: ‚ I ð NR Î  Ñ ó : ‚ J ð NR Î  Ñ ó : ‹ I ñ ï J Ï ‹ R(I) ð R(J) Ï R(J) ð R(J) ó Pu< ƒ J: ƒ I: ‘ "SORTING ":J ð suZ ‹ R(J) ð J Ï J ð J ò : ‰ ZŠud ‹ J ï ð NR Ï ‡vn ‚ I ð  Î NH:Z$(I) ð N$(R(J),I):N$(R(J),I) ð N$(J,I):N$(J,= ";L$:FL ð ÿ” (L$): ‹ FL ï NH Ï q[~v ‘ CLS$;CH$; : ‘ : ‘ Ô);"SEARCHING LINE "S" OF ALL RECORDS": ‚ J ð  Î NR: ‹ S ð  Ï N$(J,) ð ÿ“ (J)w~{N$(J,NH ò ) ð "1": ƒ Jœ~€ ‹ L ð  Ï NS ð : � ó: ‰ ”¼~… ‹ L ð  Ï � Š: ‰ ” ŠNS ð : ‚ J ð  Î NR: ‹ ÿ� (N$(J,S), ÿ’ (Q$)) ñ ï Q$ Ï N$(J,NH ò ) ð "0"2�NS ð NS ò ÿ” (N$(J,NH ò )): ƒ JF” ‹ NS ð  Ï ²�žNS ð S: � •:S ð NS: ‹ L ï  Ï ‘ :‘ "ANY KEY TO CONTINUE";: � f¿² ‹ RNG$ ð "Y" Ï S ð S ò : ‹ S ñ FL ò  Ï vÓ³ ‹ CD I) ð Z$(I): ƒ I:Z ð R(R(J)):R(R(J)) ð R(J):R(J) ð Z: ‰ Zv‡ ‹ S ï NH Ï S ð OS˜vŒ ‘ ÿ–(): ‘ "WANT TO SAVE THE "DB$" FILE": ‘"SORTED BY "H$(S)" TO DISK ";: … "(Y/N)";L$: ‹ L$ ð "Y" Ï F$ ð ".IND": � ¸£v– ‰ ʵv MF ð : � (wª … "ENTER # OF FIELD FOR SORT ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï ª^w´ ‘ : ‘ "DO YOU WANT TO SORT:": ‘ : ‘ "1 ALPHABETICALLY": ‘ "2 NUMERICALLY":‘ "3 BY DATE"¹wÒ ‘ : … "WHICH ";L$:L ð ÿ” (L$): ‹ L ñ  ø L ï  Ï ‰ Ò: :¢ ‘ : ‘ "SORTING ";: ‰ ÓÈwð � <: � Óð  Ï ¶p€´S ð S ó :RNG$ ð "N": ‘ CLS$;CH$; : ‘ ESC$;"10B";: ‘"THAT'S ALL OF THEM. SELECT:": ‘ : ‘ "1 DO MORE SEARCHES": ‘ "2 MAKE CHANGES IF YOU KNOW THE REC#"×€µ ‘ "3 RETURN TO MAIN MENU": ‘ ESC$;"16;18H" : … "WHICH ";S$:S ð ÿ”(S$): ‹ S ñ  ø S ï  Ï S ð î€ • S ‰ , ,Ê�  ‹ PF ñ ï  Ï J�  ‹ CD ð  Ï ‘ "** RETURN=CONT **SPACE=CHANGE ** Q=QUIT": ‰ w� ‘ "RETURN=CONT ESC=MENU SPACE=CHANGE"™� � f: ‹ ÿ• (L$) ð  Ï >´� ‹ ÿ• (L$) ð Q Ï ¶Ï� ‹ ÿ• (L$) ð  wúNR ð  x ‘ CLS$;CH$; : ‘ "PRESS 'RETURN' TO EXIT TO MENU": ‘ [x ‘ "HEADER FOR ROW NUMBER ";NR;: … ":",R$(NR): ‹ NR ð  Ï NR ð : ‰ �x" ‹ R$(NR) ñï "" Ï NR ð NR ò : ‹ NR ñð ( Ï ­x@NR ð NR ó : � ¸: ‰ ˆ×xT ‘ CLS$;CH$:PP ð :NR ð NR ò :J ð NRyh‘"YOU ARE ENTERING RECORD #";NR;: ‹ NH ï  Ï ‘ " PP= ";PPò;_yj ‘ : ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);":": ƒ I¹y� ‘ CH$;ESC$;"3B";: ‚ I ð  ò  ô PP Î NH(PP): ‘ I" "H$(I);: … ":",N$(NR,I) : ƒ I: ‘ þyš … "ENTRIES Ï Êí� ‹ ÿ• (L$) ñ ï  Ï  ‚L ð : ‘ CLS$;CH$; : Ž ‚  � 1‚% ‘ CLS$;CH$;: ‘ESC$;"10B"; Ÿ‚* ‘ "ENTER THE NUMBER OF THE RECORD": … "YOU WANT TO CHANGE.....";J$:J ð ÿ” (J$): ‹ J ñ  ø J ï NR Ï *´‚4 ‹ J$ ð "" Ï èõ‚9PP ð :P$ ð "(KEY RETURN FOR OTHER PP)": ‹ NH ñ  Ï P$ ð ""Uƒ>PF ð : ‘ CLS$;CH$; : � À: ‘ "CHANGE WHICH " ò P$: … "LINE #= ";S$: ‹ S$ ñ ï "" Ï ‰ Rmƒ? ‹ NH ñ  Ï ‰ R�ƒ@PP ð PP ò : ‹ PP ï  Ï PP 𠛃B ‰ >ăRS ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï µÞƒ\ 8 CHRÚ‹U ‰ tâ‹d � QŒn ‘ : … "DELETE WHICH : ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï J ó  Ï ‘ ÿ– ();: ‘ MCU$;CLL$;ESC$"20D";: ‰ n õŒ‚ ‘ CLS$;CH$; : ‘ ESC$;"9B": ‘ "READY TO DELETE " ;ÿ– (");R$(S); ÿ– (");".": ‘ : ‘ "ONCE DELETED, THIS DATA CANNOT BE": ‘ "RECOVERED. ARE YOU SURE THAT YOU"m�Œ ‘ "WANT TO DELETE IT? (Y/N) ";:… "",S$: ‹ S$ ñï "Y" Ï ¦ : :¢ PDB$ ð R$(S) : ‹ ÿ’(R$(S)) ï  Ï PDB$ ð ÿ�(R$(S),)¼�´ ‘ CLS$;CH$; : ‘ ESC$;"11;11H" : ‘ "[ DELETING DATABASE ]": • ¨ ‰ ð %ŽÈ F$ ð ".R‹ S ñ ð  Ï PP ð õƒ` ‹ S ï  Ï PP ð „b ‘ CLS$;CH$; : � À¸„f ‘ : CP ð S ó  ô PP : � i: ‘ S;" ";H$(S);": ";: OLD$ ð N$(J,S): � x: N$(J,S) ð REP$: ‘ CLS$;CH$; : � À: … "* MORE CHANGES PRINT (Y/N/#)";L$: ‹ L$ ð "Y" Ï >ó„h ‹ ÿ” (L$) ï  ÷ ÿ” (L$) ñð NH Ï S ð ÿ” (L$): ‰ \¤…˜ ‘ : … "* OTHER RECORDS TO BE CHANGED ? Y/N/#.";L$: ‹ L$ ð "Y" Ï … "* DO YOU KNOW THE REC # ? Y/N..";CD$: ‹ CD$ ð "Y" Ï … "* RECORD # = ...";J$:J ð ÿ” (J$): ‰ \á…š ‹ ÿ” (L$) ï  ÷ ÿ” (L$) ñ ð NFN": � : ‚ I ð  Î NR: FILE$ ð PDB$ ò ".R" ò ÿ‚(ÿ“(I),ÿ’(ÿ“(I)) ó): È FILE$: ƒ I: ‰ ú 2Žð � <: iŽú FILE$ ð PDB$ ò ".IND": ¿ "O",#,FILE$: Ã: È FILE$ŸŽ FILE$ ð PDB$ ò ".RFN": ¿ "O",#,FILE$: Ã: È FILE$� FILE$ ð PDB$ ò ".HDR": ¿ "O",#,FILE$: Ã: È FILE$: PDB$ ð "":F$ ð "BASENAME.SEQ": � : ‹ NR ð  Ï È FILE$: ‰ è_�J ‚ I ð S Î NR ó :R$(I) ð R$(I ò ): ƒ I:NR ð NR ó : � ¸: ‰ ¦ g�| � £�† T9 ð : ‘ CLS$;CH$; :E ð : ‚ I ð  Î A:K(I) ð : ƒ IÝ�¤ ‚ I ð  Î :AC(I) ð : ƒ I:HC ð R Ï J ð ÿ” (L$): ‰ 9†¢ ‹ L$ ð "N" ø L$ ð "" Ï ¶†¬CD ð : ‰ ô'†µ ‹ CD ð  Ï Êt†¶F$ ð ".IND": ‘ "** FILING CHANGES - PLEASE WAIT **": � ¸:CD ð : ‰ Ê|†À � “†Å ‹ PF ï  Ï ‰ IцÊ ‘ " ";H$();": ";J;: ‹ NH ï  Ï ‘ Ð#) "PP= ";PP ò ;7‡Þ ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);": ";N$(J,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PP?‡ Ž G‡$ � Y‡. ‘ CLS$;CH$; ®‡8 ‘ : … "ENTER THE REC# TO BE DELETED...";DR$:DR ð ÿ” (DR$): ‹ DR$ ð "" Ï è̇9 ‹ DR ñ  ø DR ï NR Ï :GT ð : • E ‰ N è�¸ ‰ dY� ‘ : ‘ "NO MORE THAN 21 HEADERS ALLOWED": … "HOW MANY HEADERS ";RH$:RH ð ÿ” (RH$): ‹ RH ñ  ø RH ï  Ï  |�Ì ‹ E ð  Ï RN$(NN) ð "PRESENT"–�Ö ‚ I ð  Î RH ô  Ñ ‘à ‘ "ENTER # OF HEADER YOU WANT IN": ‘ "POSITION #"(I ò ) õ " ";: … "";K$:K(I) ð ÿ” (K$): ‹ K(I) ñ  ø K(I) ï NH ò  Ï à }‘ô ‘ "ENTER TAB FOR "H$(K(I))" ";: … "";K$:K(I ò ) ð ÿ” (K$): ‹ K(I ò ) ñ  ø K(I ò ) ï ÿ Ï ô Ë‘ ‘ "TOTAL ON "H$(K(I))" (Y/N) ";: … L$: ‹ L$ ð "Y" Ï K(I ò ) ð:K() ð 8 ˆ: J ð DR: � À: … "** DELETE THIS ONE.?.Y/N..";DR$: ‹ DR$ ð "" Ï è.ˆ= ‹ DR$ ñ ï "Y" Ï èÓˆL ‚ J ð DR Î NR ó : ‚ I ð  Î NH:N$(J,I) ð N$(J ò ,I): ƒ I: ƒ J:NR ð NR ó :F$ ð ".IND": � ¸: ‘ : ‘ "RECORD NUMBER "DR" DELETED!": ‘ : … "MORE (Y/N) ";L$鈒 ‹ L$ ð "Y" Ï 8 ôˆœ ‰ èýˆ¦ � ”‰° ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ J ð  Î NR: ‘ J;" ";R$(J): ƒ J: ‘ : ‘ J;" CREATE A NEW DATA BASE": ‹ J ï  Ï ‘ J ò ;" DELETE A DATA BASE"œ‰â ‘ Ï‰ì … "WHICH ";S$:S ð ÿ” (S$): ‹ S ð J ò  é‘ ƒ I: ‹ K() ñ ï  Ï N -’0 … "ENTER TAB FOR TOTAL: ";A$: ‹ ÿ’ (A$) ð  Ï K() ð : ‰ N ~’D K(I ò ) ð ÿ” (A$): ‹ K(I ò ) ñ  ø K(I ò ) ï ƒ Ï ‘ "": ‘ MCU$;: ‰ 0 “’N ‹ NH ñ  Ï ‘ ³’X ‹ K() ð  Ï T9 ð : ‰ b Ü’Y ‹ K() ð  Ï K() ð :T9 ð : ‰ b &“Z ‹ K() ð  Ï … "VERTICAL TOTALS ALSO? Y/N ";L$: ‹ L$ ð "Y" Ï T9 ð M“[ ‹ K() ð  ÷ L$ ñ ï "Y" Ï T9 ð æ“b ‘ "'RETURN' WILL SELECT ALL RECORDS.": … "SELECT RECORDS BY WHICH HEADER #";S$:S ð ÿ” (S$): ‹ S$ ñ ï "" Ï ‹ S ñ  ø Ï d Š ‹ S ñ  ø S ï J Ï ‘ ÿ– ();: ‘ MCU$;CLL$;ESC$;"10D"; ‰ ì 8Š DB$ ð R$(S): ‹ S ñ ï NR ò  Ï P GŠ ‘ : ‰ F ŒŠ2 � <:J ð : ‘ "THERE ARE NO SEQENTIAL DATA BASES ON THIS DISK"äŠ7 ‘"'RETURN' TO CREATE ONE, 'ESC' TO QUIT ";: � f: ‘ L$:‘: ‹ ÿ•(L$) ð  Ï  :¢ ‘€‹F ‘"READY TO CREATE A NEW DATA BASE":‘ "FIRST 8 CHARACTERS OF NAME MUST BE UNIQUE": … "NAME FOR NEW DATA BASE FILE :",R$(J): NR ð J: � ¸:DB$ ð R$(NR)ЋP PDB$ ð DB$: ‹ ÿ’(DB$) ï  Ï PDB$ ð ÿ�(DB$,):� FILE NAME CAN'T EXCCEDS ï NH Ï ‘ "REENTER": ‰ b Q”g R$() ð "": ‚ J ð  Î NR:N$(J,NH ò ) ð "1": ƒ J: ‹ S$ ð "" Ï R$() ð "1":R$() ð "ALL RECORDS": ‰ ’ •j ‘ CLS$;CH$;:‘:‘"SEARCH OPTIONS FOR: ";H$(S):‘:‘"KEY 'RETURN' TO MATCH FIRST CHARACTERS IN HEADER FIELD-FC":‘" 'SPACE' TO MATCH ANY CHARACTERS-AC":‘" 'ESC' FOR A RANGE OF DATES": ‘O•l � f: ‹ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  Ï ‰ j ‹•n R$() ð ÿ“(ÿ”(R$()) ò ): ‹ ÿ•(L$) ð  Ï � Š: ‰ ~ ¿•p ‹ S ð  Ï ‚ J ð  Î NR:N$(J,) ð ÿ“ (J): ƒ Jß•r ‹ ÿ•(L:¢ ž AC(I);9žü ƒ I: ‹ GT ñ ï  Ï SP% ð K( ô I ó ) ó LL%: ‹ SP% ï  Ï ‹ PF ñ Ï ‘ ÔSP%);GT: :¢ ž ÔSP%);GTZž‹ GT ð  Ï ‹ PF ñ  Ï ‘ :¢ ž`ž޹ž ‘ CLS$;CH$; : ‘ RN$(NN)" REPORT FOR :": ‘ : ‚ I ð  Î ÿ” (R$()): ‘ R$(I): ƒ I: ‘ Ÿ$‹ PF ï  Ï ž RN$(NN);" REPORT FOR :": ž: ‚ I ð  Î ÿ” (R$()): ž R$(I): ƒ I: žlŸLLL%ð: ‚ I ð  Î RH: SP% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%); :¢ ž ÔSP%)ÁŸNLL% ð K(ôIó) ò ÿ’(H$(K(ôIó))): ‹ PF ñ  Ï ‘ H$(K(ôIó)); :¢ ž H$(K(ôIó)); Q ƒ I$) ð  Ï � î:‰ ~ M–t ‘ S;": ";H$(S);: … "= ",Q$: NS ð : ‚ J ð  Î NR: ‹ Q$ ñ ï ÿ� (N$(J ,S), ÿ’ (Q$)) Ï N$(J,NH ò ) ð "0"Í–v NS ð NS ò ÿ” (N$(J,NH ò )): ƒ J:R$( ÿ” (R$())) ð R$() ò " FC MATCH, WITH " ò ÿ“ (S) ò ":" ò H$(S) ò "= " ò Q$: ‰ ~ V—~ ‘ CLS$;CH$; : ‚ I ð  Î ÿ” (R$()): ‘ R$(I): ƒ I: ‘ : ‘ "WITH THE SELECTIONS ABOVE, THE REPORT": ‘ "WILL CONTAIN "NS" RECORDS": ‘ Ä—… ‘ "KEY 'RETURN' TO RUN REPORT,OR": ‘ "ANY OTHER KEY FOR ANOTHER SELECTION": � f: ‹ ÿ• (L$) ð  Ï ’ <˜Š : ‹ K() ð  Ï SP% ð K( ô I ó) ó LL%: ‹ SP% ï  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);R V‹ K() ð  Ï ‹ PF ñ  Ï ‘"TOTAL"; :¢ ž "TOTAL";† tL ð  ò ÿ” (R$()): ‹ PF ñ  Ï ‘: Ž: :¢ ž : Ž Ž ˆ � N¡’NS ð NR: ‘ : … "ENTER THE REPORT FORMAT NAME ";RN$(NN):F$ ð ".R" ò ÿ‚(ÿ“(NN),ÿ’(ÿ“(NN)) ó ):NR ð  ô RH ò : ‚ I ð  Î NR:R$(I) ð ÿ“ (K(I)): ƒ I:R$(I ó ) ð ÿ“ (K()): � ¸: � X: Ž V¡â � î¡ìF$ ð ".R" ò ÿ‚(ÿ“(NN),ÿ’(ÿ“(NN)) ó ) : � :RH ð (NR ó ) õ : ‚ I ð  Î NR:K(I) ð ÿ” (R$(I)): ƒ I:K() ð ÿ‘ CLS$;CH$; : � (: ‘ : … "SELECT RECORDS BY HEADER # = ";L$:S ð ÿ” (L$): ‹ S ñ  ø S ï NH Ï ‘ "REENTER": ‰ … G˜� ‰ j |˜’ ‹ E ð  Ï Ž : � FOR SELECT HEADERS SUB @ 3170°˜ž ‚ I ð  Î RH ò : ‹ K( ô I ó ) ï K Ï PF ð  ™¨ ƒ I: • PF � n,‚, : � : ‚ J ð  Î NR:N$(J,) ð ÿ“ (J): ‹ Q$ ð "" Ï Q$ ð "@"-™ä ‹ N$(J,NH ò ) ñ ï "1" Ï  8™ø � p v™ ‹ PF ñ  ÷ L ï  Ï ‘"ANY KEY TO CONTINUE ";:� f: � Œ™ ‹ L ð  Ï � ­™ ƒ J: • T9 � Ô : • E ‰ R Ñ™/ ‹ K() ð  ÷ T9 ð  Ï K” (R$(I ó )):NR ð NS: � (: ‰ N ö¡( � #¢- ‘ CLS$;CH$;: ‹ MF ð  Ï ‘ "0 "; H$();—¢2‘ ÿ˜();"SELECT FROM:": ‚ I ð  Î NH(): ‘ I;" ";H$(I);: ‹ Iò  ñ ð NH() Ï ‘ Ð);" ";I ò ;" "H$(I ò );¯¢F ‘ : ƒ I:MF ð : Ž ·¢d � £nNN ð : ‚ I ð  Î :RN$(I) ð "": ƒ I:NS ð NR:F$ ð ".RFN": • ¨ ‰ æ £Œ � Ÿ£– ‚ I ð  Î NR:RN$(I) ð R$(I): ƒ I: ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ I ð  Î NR: ‘ I;" ";R$(I): ƒ I: ‘ : ‘ I" CREATE A NEW REPORT FORMAT"º£µI ð I ò :L$ ð "WALT3"¤¶ ‘ : ‘ I" U() ð ?š> ‘ : ‘ "DO YOU WANT TO SAVE THE FORMAT": … "FOR THIS REPORT TO DISK (Y/N) ";L$: ‹ L$ ð "Y" Ï E ð : � ˆ¥šR ‘ : ‘ "MORE REPORTS USING THE "RN$(NN)" FORMAT": … "(Y/N) ";L$: ‹ L$ ð "Y" Ï � (:E ð : ‰ ¤ °šf ‰ Ê›p LL% ð : ‚ I ð  Î RH: SP% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);s›u LL% ð K(ôIó) ò ÿ’(N$(J,K( ô I ó ))): ‹ PF ñ Ï ‘ N$(J,K(ôIó));: :¢ ž N$(J,K(ôIó));¾›w ‹ K(ôI) ð  Ï V ð ÿ”(N$(J,K(ôIó))): AC(I) ð AC(I) ò V: HC ð HC ò V7œz ƒ I: ‹SE REPORT FORMATS DEDICATED TO:": ‘ " "L$" DATA BASE": ‘ =¤¾ … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï I Ï ¾`¤¿ ‹ S ñ ï I Ï I ð I ó : ‰ È�¤À ‹ DB$ ð L$ Ï NR ð NS: ‰ |¥Á ‘ CLS$;CH$; : ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT DESIGNED FOR": ‘ L$" DATA BASE": ‘ "REPORT WILL PROBABLY NOT WORK WITH": ‘ DB$" DATA BASE STRUCTURE"¥Â ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT IS AT LINE 5500": ‘ "IT IS ACCESSIBLE FROM APPLESOFT": ‘ ѥà ‘ "ENTER 10 IN THE MAIN MENU FOR APPLESOFT": ‘ "THEN KEY IN: GOTO 55 K() ð  Ï ‹ HC ñ ï  Ï GT ð GT ò HC: SP% ð K( ô I ó) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);`œ ‹ K() ð  Ï ‹ PF ñ  ‘ HC; :¢ ž HC;œ„ ‹ PF ñ  Ï ‘ : ‘: :¢ ž : ž™œ¢ HC ð :L ð L ò : Ž �Ô ‹ PF ð  Ï ‚ I ð  Î P: ‘ "-";: ƒ I: ‘: :¢ ‚ I ð  Î P : ž "-";: ƒ I: ‹ PF ð  Ï ž: :¢ ‚ I ð Q Î „: ž "-";: ƒ I: ž£�Ù LL% ð : ‚ I ð  Î RH: SP% ð K(ôIó) ó LL% : ‹ AC(I) ñï  Ï LL% ð K(ôIó) ò ÿ’(ÿ“(AC(I))):‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);Õ�Þ ‹ AC(I) ñï  Ï ‹ PF ñ Ï ‘ AC(I); 00": ‘ C¦Ä ‘ : ‘ : ‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)": ‘ "2 RETURN TO MAIN MENU": ‘ : … "WHICH ";L$:L ð ÿ” (L$)Y¦Å ‹ L ð  Ï ‰ –w¦Æ ‹ L ð  Ï NR ð NS: ‰ Ê�¦Ç ‘ CLS$;CH$; : ‰ ÃͦÈNN ð S: ‹ S ñ ï I Ï RN$(S) ð R$(S):E ð :NR ð NS: ‰ âئÜ ‰ [§æ � <: ‘ CLS$;CH$; : ‘ "NO REPORT FORMATS ON DISK...": ‘:NN ð : … "DO YOU WANT TO CREATE ONE (Y/N) ";L$: ‹ L$ ñ ï "Y" Ï Êu§ � (:NR ð NS: ‰  €§FF 𠟧 ‹ F$ ñ ï ".IND" Ï FF ð ¨"FILE$ ð DRIVE$ ò PDB$ ò F$: ¿ "I",#,F;S$:S ð ÿ” (S$): ‹ S ñ  ø S ï  Ï Ê%°Î • S ‰ ,ô,T,$ ,| , ,,(,Ø,2r°Ø ‘ CLS$;CH$; : ‘: ‘: ‘ "KEY 'RETURN' TO LIST ALL RECORDS": ‘ : ‘ " OR":×°Ù ‘ : ‘ "ENTER FIRST RECORD # TO LIST EITHER A": ‘ "SINGLE RECORD OR A SEQUENTIAL RANGE" ±Ý ‘ : … "'RETURN' OR REC # = ";L$: ‹ L$ ð "" Ï � ”: ‰ Êb±âL ð ÿ” (L$): ‹ L ñ  ø L ï NR Ï ‘ "REENTER": ‰ Ý±ç ‘ : ‘ "KEY 'RETURN' IF # "L" IS ONLY RECORD": ‘ "INPUT LAST RECORD # FOR A RANGE"²ì ‘ ILE$: … #,NR$: NR ð ÿ” (NR$): ‚ J ð  Î NR: • FF ‰ †.¨T ‚ I ð  Î NH: … #, N$(J,I): ƒ I: ‰ �@¨† … #, R$(J)X¨� ƒ J: Ã: FF ð : Ž c¨¸FF 𠂨 ‹ F$ ñ ï ".IND" Ï FF ð Û¨ÌFILE$ ð DRIVE$ ò PDB$ ò F$: ¿ "O", #, FILE$: ‘ #,ÿ“(NR): ‚ J ð  Î NR: • FF ‰ &©þ ‚ I ð  Î NH: ‘ #,N$(J,I): ƒ I: ‰ 0©& ‘ #,R$(J)/©0 ƒ J: Ã: FF ð : Ž 7©X � „©bNR ð NN:F$ ð ".RFN": ‚ I ð  Î NR:R$(I) ð RN$(I): ƒ I: � ¸:NR ð NS: Ž Ã©” ‚ J ð  Î NR:N$(J,NH ò ) ð "1": ƒ J: � LIST ALL RECORDSª•PP: … "'RETURN' OR LAST REC # = ";L$: ‹ L$ ñ ï "" Ï ²ñPP ð :J ð L+²ö ‘ CLS$;CH$; : � À …²û‘"ANY KEY TO CONTINUE";: � f: ‹ PF ï  ø PP ð  ø NH ñð  Ï Ê: :¢ PP ð : ‰ öIJLL ð ÿ” (L$): ‹ LL ñ ð L ø LL ï NR Ï ‘ "REENTER": ‰ ì³ ‚ J ð  Î NR:N$(J,NH ò ) ð "0": ‹ J ï ð L ÷ J ñ ð LL Ï N$(J,NHò ) ð "1",³  ƒ J: � •: ‰ ʉ³PF ð :‘ CLS$: CP ð : � i: ‘"THE PRINTER IS ";PF$(PF): ‘" KEY 'RETURN' TO CONTINUE"»³ ‘:‘ "KEY 'SPACE' TO CHANGE TO : ";PF$():‘´"� f: L ð ð :L ð : ‘ CLS$;CH$; : ‚ J ð  Î NR: ‹ N$(J,NH ò ) ñ ï "1" Ï -ª– ‹ PF ï  Ï � I: ‰ mª¼ ‘ " ";H$(O);": ";J;: ‹ NH ï  Ï ‘ " PP= ";PP ò ;ƪ¾ ‘ :L ð L ò : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);": ";N$(J,I):L ð L ò : ƒ IÛªê ‹ NH ñ  Ï î)«ìPP ð PP ò : ‹ PP ï  Ï PP ð : ‘ : ‘ "KEY 'SPACE' FOR FIRST PAGE": ‰ 4c«î ‘ :L ð L ò : ‹ L ò NH ï  ø J ð NR ø J ð LL Ï 4p« ƒ J: Ž Å«4 ‘ "PRESS RETURN TO CONTINUE, ESC FOR MENU";: L ð :� f: ‹ ÿ• (L$) ð  Ï Ê÷«9 ÿ•(L$): ‹ L ñï  ÷ Lñï  Ï ‰ : :¢ ‹ L ð  Ï PF ð  ´$‰ Ê,´(PF ð : ž ESC$;"1w": ‰ ÊM´2 ‘ CLS$;CH$; : • ¨ ‰ : � ™´< � ERROR HANDLING FOR MBASIC-RESUME IF FILE NOT FOUND, ELSE PRINT ERRORÚ´F‹ × ð 5 Ï © P: :¢ ‘"ERROR ";×;" AT LINE ";Ö: • ¨ ‰ : �µPŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED >µnž ESC$;"1w";: Ž : � SET PRINTER TO 80 COLlµ‚ž ESC$;"4w";: Ž: � SET PRINTER TO 132 COL†µ ‘" INVALID PF = 3": Ž®µ| � DECICATED REPORT FORMAT CHOICES¶� ‘ CLS$;CH$; : ‘ : ‘ : ‘ CLS$;CH$; : ‹ ÿ• (L$) ð  Ï L ð : ‰ ¼¬> ‹ ÿ• (L$) ð  ÷ PP ð  Ï ¼6¬C ‹ ÿ• (L$) ð  Ï A¬H ‰ x¬I � SUBROUTINE TLPRINT 2 PAGE REPORT WITH 2 COLUMNS¸¬J • PF � n,‚, : ž : ž " "H$()":"J: ‚ I ð  Î NH( )#­Lž I;" ";H$(I);": ";N$(J,I);: LL% ð ÿ’(ÿ“(I)) ò ÿ’(H$(I)) ò ÿ’(N$(J,I)) ò : ‹ LL% ñ ( Ï ž Ô( ó LL%);c­N‹ I ò  ï NH Ï ž "" :¢ ž Iò;" ";H$(Iò);": ";N$(J,Iò)q­Pƒ I: ž: Ž‚­p … "";I$: Ž Š­Ê � •­Ô ‰ ã¡­Þ � < µ­ã ‹ CD ð  Ï ¶®è ‘ CLS$;CH$; : ‘‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)": ‘ : ‘ "2 RETURN TO MAIN MENU"?¶� ‘ : … "WHICH ";L$:L ð ÿ” (L$)U¶“ ‹ L ð  Ï ‰ dk¶• ‹ L ð  Ï ‰ Êv¶ß ‰ |": ‘ : ‘ "2 RETURN TO MAIN MENU"?¶� ‘ : … "WHICH ";L$:L ð ÿ” (L$)U¶“ ‹ L ð;Ö: • ¨ ‰ : �µPŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED >µnž ESC$;"1w";: Ž : � SET PRINTER TO 80 COLlµ‚ž ESC$;"4w";: Ž: � SET PRINTER TO 132 COL†µ ‘" INVALID PF = 3": Ž®µ| � DECICATED REPORT FORMAT CHOICES¶� ‘ CLS$;CH$; : ‘ : ‘ : "******* DATA BASE MANAGEMENT I *******": ‘: ‘ "CURRENT DATA BASE: ";DB$i®é ‘ "CURRENTLY CONTAINS: ";NR;" RECORDS": ‘ "ROOM FOR ";B ó NR;" MORE RECORDS": ‘‰®ò‘ "THE PRINTER IS ";PF$(PF)¯8‘:‘"1 SELECT DATA BASE": ‘"2 SEARCH AND/OR CHANGE DATA":‘ "3 ENTER RECORDS": ‘"4 DELETE RECORDS": ‘"5 REPORTS"{¯B ‘ "6 SORT (TAKES APPROX. " ÿ… (nv ô NR ö  ò �Âu{ ô NR)" MIN.)": ‘ "7 TURN ON PRINTER OR CHANGE # OF COLUMNS"ò¯’ ‘ "8 TURN OFF PRINTER": ‘ "9 LIST RECORDS": ‘ "10 QUIT": ‘ : … "WHICH "t$† PF$(): PF$() ð "OFF": PF$() ð "ON FOR 80 COLUMNS": PF$() ð "ON FOR 132 COLUMNS": � PRINTER STATUS CODES SET BY PF¾t%ESC$ ð ÿ–() ò "[": CH$ ð ESC$ ò "H": CLS$ ð ESC$ ò "2J": MCU$ ð ESC$ ò "1A": MCD$ ð ESC$ ò "1B": CLL$ ð ESC$ ò "2K";u&� ESCAPE SEQUENCES TO MOVE CURSOR, WHEN PRINTER: CURSOR HOME, CLEAR SCREEN, MOVE CURSOR UPT OR DOWN ONE LINE, CLEAR LINEMu` � : ‰ ¦ qutMH ð P:F$ ð ".HDR": • ¨ ‰ ð}u~ � 'vƒNH ð NR ó : LV% ð ÿ” (R$(NR)): † NH(),H$(NH ò ),Z$(NH ò ): ‚ I ð  Î5500 REM DECICATED REPORT FORMAT CHOICES 5505 PRINT CLS$;CH$; : PRINT : PRINT : PRINT "1 RETURN TO REPORT (UNIVERSAL FORMAT)": PRINT : PRINT "2 RETURN TO MAIN MENU" 5510 PRINT "3 UPDATE ALL GRADES FOR ONE ASSIGNMENT" 5520 PRINT"4 APPEND NAMES" 5522 PRINT:INPUT "WHICH ";L 5523 IF L = 1 THEN GOTO 3940 5525 IF L = 2 THEN GOTO 4810 5530 IF L = 3 THEN GOSUB 5600 5535 IF L = 4 THEN GOSUB 5700 5599 GOTO 5500 5600 PRINT CLS$;CH$;: REM UPDATE ALL GRADES 5610 PRINT"CHOOSE TEST TO UPDATE": MF = 1: G� ™: ‰ Ê3¾PF ð :‘ CLS$: CP ð : � i: ‘"THE PRINTER IS ";PF$(PF): ‘" KEY 'RETURN' TO CONTINUE"e¾ ‘:‘ "KEY 'SPACE' TO CHANGE TO : ";PF$():‘­¾"� f: L ð ÿ•(L$): ‹ L ñï  ÷ Lñï  Ï ‰ : :¢ ‹ L ð  Ï PF ð ·¾$‰ ÊÖ¾(PF ð : ž ESC$;"1w": ‰ Êú¾2 ‘ CLS$;CH$; : • ¨ ‰ : Ã: � F¿< � ERROR HANDLING FOR MBASIC-RESUME IF FILE NOT FOUND, ELSE PRINT ERROR‡¿F‹ × ð 5 Ï © P: :¢ ‘"ERROR ";×;" AT LINE ";Ö: • ¨ ‰ : �½¿PŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED ë¿nž ESC$;"OSUB 3880:INPUT"UPDATE ASSIGNMENT NUMBER = ",L%: IF L% < 3 OR L% > NH THEN 5600 5620 FOR I = 1 TO NR:PRINT CLS$;CH$;: PRINT N$(I,1);" ";N$(I,2):PRINT "USER: ";LEFT$(N$(I,1),1);N$(I,2):PRINT 5630 PRINT H$(L%);: INPUT " = ",N$(I,L%):NEXT I:RETURN 5700 REM APPEND ALL NAMES 5710 L2$ = " " 5720 WHILE L2$ <> "": PRINT H$(1);:INPUT " ",L1$ 5730 PRINT H$(2);:INPUT " ",L2$: PRINT 5735 IF L2$ <> "" THEN NR = NR + 1: N$(NR,1) = L1$: N$(NR,2) = L2$ 5740 WEND: RETURN 5730 PRINT H$(2);:INPUT " ",L2$: PRINT 5731w";: Ž : � SET PRINTER TO 80 COLÀ‚ž ESC$;"4w";: Ž: � SET PRINTER TO 132 COL3À ‘" INVALID PF = 3": Ž[À| � DECICATED REPORT FORMAT CHOICES¿À� ‘ CLS$;CH$; : ‘ : ‘ : ‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)": ‘ : ‘ "2 RETURN TO MAIN MENU"ED REPO;"1w": ‰ Êú¾2 ‘ CLS$;CH$; : • ¨ ‰ : Ã: � F¿< � ERROR HANDLING FOR MBASIC-RESUME IF FILE NOT FOUND, ELSE PRINT ERROR‡¿F‹ × ð 5 Ï © P: :¢ ‘"ERROR ";×;" AT LINE ";Ö: • ¨ ‰ : �½¿PŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED ë¿nž ESC$;"5500 REM DECICATED REPORT FORMAT CHOICES 5505 PRINT CLS$;CH$; : PRINT : PRINT : PRINT "1 RETURN TO REPORT (UNIVERSAL FORMAT)": PRINT : PRINT "2 RETURN TO MAIN MENU" 5510 PRINT "3 MERGE TO ANOTHER RANDOM ACCESS DATA BASE" 5520 PRINT : INPUT "WHICH ";L$:L = VAL (L$) 5523 IF L = 1 THEN GOTO 3940 5525 IF L = 2 THEN GOTO 4810 5530 IF L = 3 THEN GOSUB 6000 5599 GOTO 5500 6000 REM SUB TO MERGE CURRENT DATA BASE TO A NEW RANDOM ACCESS DATA BASE 6010 PRINT CH$;CLS$: PRINT "RANDOM ACCESS MERGE ROUTTHEN N$(0,1) = "1" ELSE N$(0,1) = "0": REM INITIAL SETUP 6040 WHILE N$(0,1) <> "0" : GOSUB 4125 6045 LPRINT 6050 FOR I = 1 TO K: L = LEN(N$(I,1)) + LEN(N$(I,2)) + 1: LPRINT N$(I,1);" ";N$(I,2);: IF I < 3 THEN LPRINT SPACE$(K(I) - L);: ELSE LPRINT 6052 NEXT I 6060 FOR I = 1 TO K: L = LEN(N$(I,3)) + LEN(N$(I,4)) + 1: LPRINT N$(I,3);" ";N$(I,4);: IF I < 3 THEN LPRINT SPACE$(K(I) - L);: ELSE LPRINT 6062 NEXT I 6070 FOR I = 1 TO K: L = LEN(N$(I,5)) + LEN(N$(I,6)) + LEN(N$(I,7)) + 5: LPRINT N$(I,5);",";N$INE": PRINT 6015 ST$(1) = PDB$: ST$(2) = DRIVE$: ST$(3) = STR$(NR): REM TEMP SAVE 6020 PRINT "APPEND EXISTING DATA BASE: ";DB$: PRINT "on drive: ";DRIVE$: PRINT : PRINT "TO A DATA BASE ON DRIVE (A,B,C,D) = ";: GOSUB 102 6030 L = ASC(L$): IF L > 68 THEN L = L - 32: REM U.C. ASCI 6035 IF L < 65 OR L > 68 THEN 6020 ELSE NDRIVE$ = CHR$(L) + ":": DRIVE$ = NDRIVE$: PDB$ = "": F$ = "BASENAME.RA": GOSUB 4110: IF NR = 0 THEN PRINT "NO DATA BASES ON THIS DRIVE" : GOTO 6020 6040 PRINT CH$;CLS$:PRINT "CHOOSE ONE (I,6);" ";N$(I,7);: IF I < 3 THEN LPRINT SPACE$(K(I) - L);: ELSE LPRINT 6075 S%(1,VAL(N$(I,0)) ) = 0: NEXT I: REM DON'T REREAD THIS RECORD 6085 IF L$ <> "P" THEN LPRINT ELSE FOR I = 1 TO 2: L = LEN(N$(I,8)): LPRINT N$(I,8); SPACE$(K(I) - L);: NEXT I : LPRINT N$(3,8):REM ADD PHONE # 6090 LPRINT: J = -1: WEND 6100 GOSUB 5230: RETURN: REM REST TO 80 COL PRINT - L);: NEXT I : - L);: ELSE LPRINT 6062 NEXT I 6070 FOR I = 1 TO K: L = LEN(N$(I,5)) + LEN(N$(I,6)) + LEN(N$(I,7)) + 5: LPRINT N$(I,5);",";N$OF FOLLOWING DATA BASES FROM DRIVE: ";DRIVE$: FOR I = 1 TO NR: PRINT I;" ";R$(I): NEXT I 6050 PRINT: INPUT "WHICH ";L%: IF L% < 1 OR L% > NR THEN 6050 6055 NDB$ = R$(L%): PDB$ = LEFT$(NDB$,8): F$ = ".HDR": GOSUB 4110: NNH = NR - 1: NLV% = VAL(R$(NR)): REM NEW HEADERS IN R$(NNH) 6060 F$ = ".IND": GOSUB 4110: NNR = NR: NPDB$ = PDB$: PDB$ = ST$(1): DRIVE$ = ST$(2): NR = VAL(ST$(3)) 6100 MF = 1: FOR K = 1 TO NNH: PRINT CLS$;CH$: GOSUB 3880: PRINT : PRINT "TRANSFER WHICH OLD HEADER FIELD ABOVE TO NEW (ENTE NO MATCH POSSIBLE TO 5500 FOR DED REPORTSzd� DBMR26 UPDATED TO MBASIC 8/10/83: RANDOM ACCESS OF INDIVIDUAL FIELDS FROM RECORDS OFF THE DISK-STORAGE LIMITED BY DISK CAPACITYÃd � H$(I) IS HEADER NAME, N$(K,I) IS RECORD K HEADER FIELD I IN MEMORY#e � B IS MAX # OF RECORDS MEMORY CAN HOLD. N$(B,I) RESERVED FOR TEMPERARY READ WRITE TO DISK Še � H%(I) CONTOLS DISK READ OF HEADER I, NORMALLY 1 BUT SET TO ZERO IF HEADER NOT REQUIRED IN REPORTüe � S%(0,J) IS LOCATION OF RECORD J ON DISK S%(1,J) IS 1 IF RR 0 FOR NONE)": PRINT K;" : ";R$(K);: INPUT " = ",L%: IF L% > NH OR L% < 0 THEN L% = 0: REM NO TRANS IF OUT OF RANGE 6110 K(K) = L%: NEXT K: REM READY FOR TRANSFER SINCE NEW MAY BE VERY DIFFERENT READ OLD COPY INTO ST$ AND WRITE TO NEW WITH SPECIAL SUB FROM ST$ 6115 FILE$ = NDRIVE$ + NPDB$ + ".IND": OPEN "R",#2,FILE$,NLV% + 2: FIELD #2,NLV% + 1 AS NIN$ 6120 N$(0,1) = "1": REM INIT SETUP 6130 WHILE N$(0,1) <> "0": J = -1: S = -1: GOSUB 4125: FOR J = 1 TO K: REM TRANS RECORDS READ 6140 FOR I = 1 TO NNHECORD J TO BE READ AND 0 IF ITS TO BE SKIPPED OVER˜f� R$(I) USED FOR SEQUENTIAL FILE DISK READ,NR # RECORDS TO BE READ,TYPE DEFINED BY FILES ENDING IN F$: .R#=REPORT FORMAT,.RFN=REPORT NAMES,.HDR=HEADERSg � IN DIM: 1000,1050,1060,1161,1163. NH(PP) LAST HEADER ON PAGE PP+1. MP=MAX # PAGES,MH = MAX # OF HEADERS = 80yg� SEE LINE 1061 AND SUBS AT 100-140 FOR CURSOR CONTROL,LINE 1060 AND SUBS AT 5280 FOR PRINTER CONTROLh� LV% IS MAXIMUM DISK FIELD LENGTH, STORED AS LAST ELEMENT IN HEADER FILE ON: IF K(I) = 0 THEN LSET NIN$ = CHR$(13) ELSE LSET NIN$ = LEFT$(N$(J,K(I)),NLV%) + CHR$(13) 6145 PUT #2,NNR * NNH + I + 1: NEXT I: NNR = NNR + 1: S%(1,VAL(N$(J,0))) = 0: NEXT J 6150 WEND 6160 LSET NIN$ = STR$(NNR): PUT #2,1: CLOSE #2: RETURN + 1: NEXTOM ST$ 6115 FILE$ = NDRIVE$ + NPDB$ + ".IND": OPEN "R",#2,FILE$,NLV% + 2: FIELD #2,NLV% + 1 AS NIN$ 6120 N$(0,1) = "1": REM INIT SETUP 6130 WHILE N$(0,1) <> "0": J = -1: S = -1: GOSUB 4125: FOR J = 1 TO K: REM TRANS RECORDS READ 6140 FOR I = 1 TO NNH DISK. INDEX FILE CONTAINS RECORD DATA ENDS IN .IND = F$žh� DATA BASE NAME=DB$ READ FROM BASENAME.RA FILE. PDB$= FIRST CHARACTERS TRUNCATED TO LENGTH <= 8 FOR FILE NAME WHICH TYPE F$ IS ADDED TO SEE 4110-4440i � IN DISPLAY HEADERS:LINE 3885-3930. P=HEADER DISPLAY PAGE, FH AND LH ARE FIRST AND LAST HEADERS ON PAGE P_i� NEEDS DIFFERENT SEARCH SUBS TO SEARCH FOR A BLANK? START WITH S%(1,J) = 0ji1 ‰ è­ifL$ ð Ý: ‹ ÿ’ (L$) ð  Ï f: :¢ Ž: � SIMULATE APPLESOFT GET L$ji‘ CH$;ESC$;ÿ‚(ÿ“(CP),ÿ’(/ŒÞ ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);": ";N$(J,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PP7Œ Ž kŒ$ F$ ð ".IND": � DELETE RECORDS & DISK SORT ŽŒ& ‚ J ð  Î NR:S%(,J) ð : ƒ JîŒ( ‘ CLS$;CH$; : ‘ : … "ENTER THE REC# TO BE DELETED...";DR$:DR ð ÿ” (DR$): ‹ DR$ ð "" Ï . �* ‹ DR ñ  ø DR ï NR Ï ( k�, J ð DR:PP ð : � : � ä: … "** DELETE THIS ONE.?.Y/N..";DR$: ‹ DR$ ð "Y" Ï S%(,J) ð ª�. ‘ : … "DELETE ANOTHER RECORD ? Y/N ";L$: ‹ L$ ð "Y" Ï ( ó�0 NS ð : ‚ J ð  Î NR: ‹ S%(ÿ“(CP))ó);"B";: Ž: � ABSOLUTE VERT POSITION BELOW LEFT EDGE¡jj� PRINTING ESCAPE SEQUENCE CONFUSES BASIC, IT THINKS CURSOR MOVE RIGHT BY # OF PRINTABLE CHARACTERS IN SEQUENCE-GIVE LINE FEED AFTER 80 PRINTABLE CHAR(kk� IN SUB 120 SAVE CUSOR POSITION, ISSUE LINE FEED TO CLEAR BASIC LINE COUNT THEN RESTORE CURSOR WITH ESC 7 & 8 IN LINE 124 AND 122pkx� PRINT OLD$ THEN CHANGE TO REP$ WITH SCREEN COPY USING GET SUB 102¿kzREP$ ð "":‹ ÿ’(OLD$) ï  Ï ‘ ÿ–();"7":‘ ÿ–();"8";:‘ OLD$:‘ ÿ–();"8";(l|‘ ÿ–(ÿKb� JAN 8,84 MOD FOR MVP: FOUND ERROR LINE 1710 PRINT SHOULD BE AFTER GOSUB 4505 AND LINES 1930-1933 SET S% TO 0 IF Q$ <> ST$!Üb� IN READ WRITE FROM S%WOULD BE FASTER IF ONLY SET REC # FOR RECORDS PRINTED TO ZERO INSTEAD OF ALL NEED WAY TO START A LAST ON SET TO ZERO!bc� 8/15/83 ERROR IN DELETE DB$ LINE 2830 EXTRA DRIVE$ BEFORE "BASENAME.RA" DELETED. SEE MERGE-RA.DED FOR IDEA ON RESETING S%(1,J)ôc� IF DEFINE DED$= DEDICATED FORMAT DATA BASE NAME LINE AT 4021 WILL CHECK IT CURRENTLY DED$ = "" SO);"7";:� f: ‘ : ‘ ÿ–();"8";: ‹ ÿ•(L$) ï  ÷ ÿ•(L$) ñ  Ï ‘ L$;: REP$ ð REP$ ò L$: ‰ |>l~‹ ÿ•(L$) ð  Ï Ž¢l€‹ ÿ•(L$) ð  ÷ ÿ’(OLD$) ï ÿ’(REP$) Ï REP$ ð REP$ ò ÿƒ(OLD$,ÿ’(REP$) ò ,): ‘ ESC$ "1C";: ‰ ‚Íl�‹ ÿ•(L$) ð  Ï REP$ ð REP$ ò " ":‘" ";€m‚‹ ÿ’(REP$) ï  Ï ‹ ÿ•(L$) ð  ø ÿ•(L$) ð  ø ÿ•(L$) ð  Ï ‘ ESC$ "1D";: L$ ð ÿ‚(REP$,): REP$ ð ÿ�(REP$,ÿ’(REP$) ó ): ‹ ÿ’(OLD$) ï ÿ’(REP$) Ï ÿƒ(OLD$,ÿ’(REP$) ò ,) ð L$Šm„‰ |Óm� � FORMATE DATE(MO/DAY/YR) INTO NUMBER FOR NUMERICAL SORT TH " ò ÿ“ (S) ò ":" ò H$(S) ò "= " ò Q$úu Ž v ‹ RNG$ ñ ï "Y" Ï S%(,J) ð (v ‰ =vè ’ : ‘ CLS$;CH$;‰v † R$(Q),AC(),K(A),RN$():PDB$ ð "":F$ ð "BASENAME.RA": • ¨ ‰ 2 w$† PF$(): PF$() ð "OFF": PF$() ð "ON FOR 80 COLUMNS": PF$() ð "ON FOR 132 COLUMNS": � PRINTER STATUS CODES SET BY PFw%ESC$ ð ÿ–() ò "[": CH$ ð ESC$ ò "H": CLS$ ð ESC$ ò "2J": MCU$ ð ESC$ ò "1A": MCD$ ð ESC$ ò "1B": CLL$ ð ESC$ ò "2K"üw&� ESCAPE SEQUENCES TO MOVE CURSOR, WHEN PRINTER: CURSOR HOME, CLEAR SCOF ST$(J)0n• ‚ I ð  Î NR:DT$ ð ST$(I): � ¤:ST$(I) ð DT$: ‹ DT$ ð "" Ï ST$(I) ð ÿ“ ( ÿ” (ST$(I)))9nš ƒ IGnŸL ð : Ž o¤ � FORMAT DATE(MO/DAY/YR)=DT$ INTO NUMBER OF GREGORIAN CALENDAR DAYS SINCE 1/2/0000:NOTE USE OF INTEGER ARITHMETIC,NO DATES AFTER YEAR 2730 OR BEFORE 99, TWO DIGIT YEAR OK FOR 1900'SAo® ‚ II ð  Î ÿ’ (DT$): ‹ ÿƒ (DT$,II,) ñ ï "/" Ï ƒ II~o¸MO% ð ÿ” ( ÿ� (DT$,II ó )): ‹ MO% ï  Ï � X: ‰ �o ‚ JJ ð II ò  Î ÿ’ (DT$)ÄoÌ ‹ ÿƒ (DT$,JJ,) ñ ï "/" Ï ƒ JJpÖ REEN, MOVE CURSOR UPT OR DOWN ONE LINE, CLEAR LINE:xL‘ CLS$;CH$:‘"INSERT DISK TO BE USED IN AVAILABLE DRIVE":‘™xQ‘ "ENTER DRIVE TO BE USED (A,B,C,D) = ";: � f: ‘ L$: L ð ÿ•(L$): ‹ L ñ A ø L ï D Ï Q¹xV ‘: DRIVE$ ð L$ ò ":": ‘: ‘Ëx` � : ‰ ¦ ïxtMH ð P:F$ ð ".HDR": • ¨ ‰ ðûx~ � ¥yƒNH ð NR ó : LV% ð ÿ” (R$(NR)): † NH(),H$(NH ò ),Z$(NH ò ): ‚ I ð  Î NH:H$(I) ð R$(I): ƒ I:NR ð : H$()ð "REC#":NH() ð NH:NH() ð : ‹ NH ñ ð  Ï NH() ð NHz‹MP ð ÿ… ((NH ó ) õ ): ‹ NH ï‹ JJ ï ð ÿ’ (DT$) Ï � X: ‰ : � 2ND / NOT FOUND WITHIN DT$SpàYR% ð ÿ” ( ÿ‚ (DT$, ÿ’ (DT$) ó JJ)): ‹ YR% ñ c Ï YR%ðl ò YR%¢pêDA% ð ÿ” ( ÿ‚ ( ÿ� (DT$,JJ ó ),JJ ó II ó )): ‹ DA% ï  Ï � X: ‰ úpô � CHANGE TO GREGORIAN #:REMAINDER OF #/7 IS DAY OF WEEK,REM=0 IS MON,REM=6 IS SUN'qù ‹ MO% ñ  Ï MO% ð  ô (MO% ó ): ‰  mqþ ‹ YR% ð  ô ÿ… (YR% õ ) Ï MO% ð ÿ…(ÍÌt… ô MO% ó 33{…): ‰  �qMO% ð ÿ…(ÍÌt… ô MO% ó š™†)Ùq DT$ ð ÿ“ (YR% ô m ò (YR% ó)ý ó YR%ýd ò YR%ý� ò ( Ï NH() ð (:NH() ð NH: ‹ NH ï < Ï NH() ð <:NH() ð NHHz�MR ð ÿ… (  ô è õ (( ò LV%) ô NH)): ‹ MR ï È Ï MR ð È„z’ † S%(,MR),ST$(MR),H%(NH): ‚ I ð  Î NH:H%(I) ð : ƒ I³z— ‚ I ð  Î MR:S%(,I) ð I:S%(,I) ð : ƒ IûzœMEM ð ÿ�():B ð ÿ… (MEM õ (( ò LV%) ô (NH ò ))): ‹ B ï  Ï B ð '{¦ † N$(B,NH ò ):F$ ð ".IND": • ¨ ‰ Þ9{º � : ‰ Êh{ÓF$ ð ".IND":J ð ó : � : ‘ "SORTING ";~{Õ ‹ L ð  Ï � �Ì{Ø ‚ I ð  Î NR:S%(,I) ð : ƒ I: ‚ I ð  Î NR: ‚ J ð  Î NR: • L ‰ ö, MO% ò DA% ó )áq Ž üqX � ERROR SUBROUTIUNE&rb ‘ "DATA FORMAT ERROR IN DATE = ";DT$.rl Ž LrŠ� SELECT A RANGE OF DATES¤rž ‘ CLS$;CH$; : CP ð  : � i : ‘ "INPUT RANGE OF DATES FOR:": ‘ S": "H$(S): ‘ : ‘ "s£ … "LOWEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$() ò " " ò ÿ“ (S) ò ":" ò H$(S) ò " = " ò DT$: � ¤:L ð ÿ” (DT$)¥s¨ ‘ : … "HIGHEST DATE ACCEPTED= ";DT$:R$( ÿ” (R$())) ð R$( ÿ” (R$())) ò " TO " ò DT$: � ¤:LL ð ÿ” (DT$): ‘ : ‘ "SEARCHING"t­NS ð : ‚ J ð  Î NR:DT$ ð ST$(J þ{ö ‹ ST$(I) ð ï ST$(J) Ï S%(,I) ð S%(,I) ò  | ‰ G|  ‹ ÿ” (ST$(I)) ð ï ÿ” (ST$(J)) Ï S%(,I) ð S%(,I) ò É| ƒ J: ƒ I: ‘ "SORTING ";: ‚ I ð NR Î  Ñ ó : ‚ J ð NR Î  Ñ ó : ‹ I ñ ï J Ï ‹ S%(,I) ð S%(,J) Ï S%(,J) ð S%(,J) ó ë|< ƒ J: ƒ I: ‘ "SORTING ":J ð }Z ‹ S%(,J) ð J Ï J ð J ò : ‰ Z(}d ‹ J ï ð NR Ï Œb}nZ ð S%(,S%(,J)):S%(,S%(,J)) ð S%(,J):S%(,J) ð Z£}xZ ð S%(,S%(,J)):S%(,S%(,J)) ð S%(,J):S%(,J) ð Z: ‰ Z~Œ ‘ "": ‘ "WANT TO SAVE THE "DB$" F): � ¤: ‹ ÿ” (DT$) ï ð L ÷ ÿ” (DT$) ñ ð LL Ï NS ð NS ò S%(,J): :¢ S%(,J) ð +t² ƒ J: Ž htí � SEARCH FOR A STRING MATCH WITH ANY FIELD CHARACTERS”tîNS ð : ‘ : ‘ S": "H$(S)" = ";: … "";Q$ÕtóL ð ÿ’ (Q$): ‚ J ð  Î NR:LL ð ÿ’ (ST$(J)): ‹ L ï LL Ï útø ‹ L ð LL Ï ‹ Q$ ð ST$(J) Ï  7u ‚ I ð  Î LL ò  ó L: ‹ ÿƒ (ST$(J),I,L) ñ ï Q$ Ï ƒ ISu ‹ I ï LL ò  ó L Ï su  ‹ RNG$ ð "Y" Ï S%(,J) ð òuNS ð NS ò S%(,J): ƒ J: ‹ RNG$ ñ ï "Y" Ï R$( ÿ” (R$())) ð R$() ò " AC MATCH, WIILE": ‘ "SORTED BY "H$(S)" TO DISK ";: … "(Y/N)";L$: ‹ L$ ñ ï "Y" Ï Ê)~–F$ ð ".IND": ‰ 3 ;~ MF ð : � (‡~ª … "ENTER # OF FIELD FOR SORT ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï ªì~´ ‘ : ‘ "DO YOU WANT TO SORT: ";H$(S): ‘ : ‘ "1 ALPHABETICALLY": ‘ "2 NUMERICALLY": ‘ "3 BY DATE"FÒ ‘ : … "WHICH ";L$:L ð ÿ” (L$):‹ L ñ  ø L ï  Ï ‰ Ò: :¢ ‘ : ‘ "SORTING ";: ‰ ÓUð � <: � `úNR ð š ‘ CLS$;CH$; : ‘ "PRESS 'RETURN' TO EXIT TO MENU": ‘ Ì ‘ "HEADER FOR ROW NUMBER ";NR;: … ":",R$(N‹ RNG$ ð "Y" Ï S ð S ò : ‹ S ñ FL ò  Ï { ˆ² ‹ NS ï  Ï � ™!ˆ³ ‹ CD ð  Ï ¶Þˆ¼S ð S ó :RNG$ ð "N": ‘ CLS$;CH$; : CP ð  : � i : ‘ "THAT'S ALL OF THEM. SELECT:": ‘ : ‘ "1 DO MORE SEARCHES": ‘ "2 MAKE CHANGES IF YOU KNOW THE REC#": ‘ "3 RETURN TO MAIN MENU":0‰î CP ð : � i : ‘ Ô);: … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï  Ï îG‰ • S ‰ , ,Ê^‰  ‹ PF ñ ï  Ï £‰  ‹ CD ð  Ï ‘ "** RETURN=CONT **SPACE=CHANGE ** Q=QUIT": ‰ Љ ‘ "RETURN=CONT ESC=MENU SPACE=CR)€" ‹ R$(NR) ñï "" Ï NR ð NR ò : ‹ NR ñð MH Ï ‰ ¬€@‘ CLS$;CH$: CP ð  : � i: … "MAXIMUN HEADER FIELD LENGTH = ",LV%:R$(NR) ð ÿ“(LV%): ‹ LV% ñ  ø LV% ï P Ï ‘ "REENTER FIELD LENGTH MUST BE IN RANGE 10 - 80": ‰ @¾€J � ¸: ‰ ƒ�T ‘ CLS$;CH$:PP ð :NR ð NR ò :J ð NR:S%(,J) ð J: S%(,J) ð :N$(B,) ð ÿ“(J)Y�h‘"YOU ARE ENTERING RECORD #";NR;: ‹ NH ï  Ï ‘ " PP= ";PPò;™�j ‘ : ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);":": ƒ Iò�� ‘ CH$;ESC$;"3B";: ‚ I ð  ò  ô PP Î NH(PPHANGE"ò‰ � f: ‹ ÿ• (L$) ð  Ï > Š ‹ ÿ• (L$) ð Q Ï ¶(Š ‹ ÿ• (L$) ð  Ï ÊFŠ ‹ ÿ• (L$) ñ ï  Ï bŠL ð : ‘ CLS$;CH$; : Ž jŠ  � ‹Š% ‘ CLS$;CH$;: ‘ ESC$;"10B"; òŠ* ‘ "ENTER THE NUMBER OF THE RECORD": … "YOU WANT TO CHANGE.....";J$:J ð ÿ” (J$): ‹ J$ ð "" Ï è‹/ ‹ J ñ  ø J ï NR Ï *‹4� Y‹9PP ð :P$ ð "(KEY RETURN FOR OTHER PP)": ‹ NH ñ  Ï P$ ð ""²‹> ‘ CLS$;CH$; : � ä: ‘ "CHANGE WHICH " ò P$: … "LINE #= ";S$: ‹ S$ ñ ï "" Ï ‰ RÊ‹? ‹ NH ñ  Ï ‰ R): ‘ I" "H$(I);: … ":",N$(B,I) : ƒ I: ‘ 7‚š … "ENTRIES OK?..Y/N/#....";L$: ‹ L$ ð "N" Ï ‘ CLS$;CH$; : ‰ hÕ‚¤LL ð ÿ” (L$): ‹ LL ï  ÷ LL ñ ð NH(PP) Ï ‘ CLS$;CH$; : � ä: ‘: CP ð LL ó  ô PP: � i:‘ LL" ";H$(LL)": ";: OLD$ ð N$(B,LL): � x: N$(B,LL) ð REP$ƒ® ‹ LL ï  Ï CP ð NH(PP) ó  ô PP ò : � i: LL ð : ‰ š3ƒ² ‹ PP ð  Ï PP ð : ‰ ¸^ƒ³ ‹ NH ï  Ï PP ð : ‘ CLS$;CH$: ‰ h§ƒ¸ F$ ð ".IND": � Ì: � ¸: ‘ : … "MORE (Y/N) ";L$: ‹ L$ ð "Y" Ï T²ƒÖ ‰ ÊǃôL ð :PP ð : � àƒî‹@PP ð PP ò : ‹ PP ï MP Ï PP ð ù‹B ‰ >"ŒRS ð ÿ” (S$): ‹ S ñ  ø S ï NH Ï µ>Œ\PP ð ÿ… ((S ó ) õ )WŒb ‘ CLS$;CH$; : � äûŒf ‘ : CP ð S ó  ô PP : � i: ‘ S;" ";H$(S);": ";: OLD$ ð N$(B,S): � x: N$(B,S) ð REP$: ‘ CLS$;CH$; : � ä: … "* MORE CHANGES (Y/N/#)";L$: ‹ L$ ð "Y" Ï >6�h ‹ ÿ” (L$) ï  ÷ ÿ” (L$) ñð NH Ï S ð ÿ” (L$): ‰ \Ó�˜ ‘ : … "* OTHER RECORDS TO BE CHANGED ? Y/N/#.";L$: ‹ L$ ð "Y" Ï … "* DO YOU KNOW THE REC # ? Y/N..";CD$: ‹ CD$ ð "Y" Ï … "* RECORD #  ‘ CLS$;CH$; : � ()„:CP ð NH(O) ò : � i: ‹ CD ð  Ï ‘ Ð); NH ò ;" MAKE CHANGES";M„N ‘ : … "WHICH ";S$:S ð ÿ” (S$)m„X ‹ S ñ  ø S ï NH ò  Ï N…„b ‹ S ð NH ò  Ï  *…g ‘ CLS$;CH$; : ‘: ‘ "OPTIONS FOR :";H$(S): ‘ : ‘ "KEY 'RETURN' TO MATCH FIRST CHARACTERS": ‘ "'SPACE' TO MATCH ANY CHARACTERS": ‘ "'ESC' FOR A RANGE OF DATES"l…j� f:L ð ÿ• (L$): ‹ L ñ ï  ÷ L ñ ï  ÷ L ñ ï  Ï j …l ‹ ÿ• (L$) ñ ï  Ï ‘ : ‘ H$(S);: … " = ",Q$1†q ‘ : ‹ ÿ• (L$) ñ ï  Ï … "RANGE? = ...";L$ Žš ‹ ÿ” (L$) ï  ÷ ÿ” (L$) ñ ð NR Ï J ð ÿ” (L$))Ž¢ ‹ L$ ð "N" ø L$ ð "" Ï ¶Kާ‹ J ï  Ï � Ì: � : ‰ 9]ެCD ð : ‰ ôq޵ ‹ CD ð  Ï Ê¾Ž¶F$ ð ".IND": ‘ "** FILING CHANGES - PLEASE WAIT **": � Ì:CD ð : ‰ ÊÆŽÀ � ÝŽÅ ‹ PF ï  Ï ‰ I�Ê ‘ " ";H$();": ";J;: ‹ NH ï  Ï ‘ Ð#) "PP= ";PP ò ;��Þ ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I;" ";H$(I);": ";N$(J,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PP‰� Ž ½�$ F$ ð ".IND": � DELETE RECORDS & DISK SORT à�& ‚ J ð Y/N ";RNG$: ‹ RNG$ ð "Y" Ï � (: ‘ : ‘ "RANGE FROM "S;: … " TO #= ";L$:FL ð ÿ” (L$): ‹ FL ï NH Ï qk†v ‚ J ð  Î NR:S%(,J) ð : ‹ S ð  Ï ST$(J) ð ÿ“ (J)t†x ƒ JÓ†{ ‘ CLS$;CH$; : ‘ Ð); "SEARCHING LINE "S" OF ALL RECORDS":L ð : ‹ S ï  Ï J ð ó : � ÿ†€ ‹ ÿ• (L$) ð  Ï NS ð : � ó: ‰ ž$‡… ‹ ÿ• (L$) ð  Ï � Š: ‰ žh‡ŠNS ð : ‚ J ð  Î NR: ‹ Q$ ð "" Ï ‹ ST$(J) ñï "" Ï S%(,J) 𠩇� ‹ Q$ ñ ï "" Ï ‹ ÿ� (ST$(J), ÿ’ (Q$)) ñï Q$ Ï S%(,J) ð ć�NS ð NS ò S%(,J): ƒ Jö‡ž Î NR:S%(,J) ð : ƒ J@�( ‘ CLS$;CH$; : ‘ : … "ENTER THE REC# TO BE DELETED...";DR$:DR ð ÿ” (DR$): ‹ DR$ ð "" Ï . ^�* ‹ DR ñ  ø DR ï NR Ï ( ½�, J ð DR:PP ð : � : � ä: … "** DELETE THIS ONE.?.Y/N..";DR$: ‹ DR$ ð "Y" Ï S%(,J) ð ü�. ‘ : … "DELETE ANOTHER RECORD ? Y/N ";L$: ‹ L$ ð "Y" Ï ( E‘0 NS ð : ‚ J ð  Î NR: ‹ S%(,J) ð  Ï NS ð NS ò :S%(,NS) ð S%(,J)À‘2 ƒ J:DR ð NR ó NS:J ð : � :NR ð NS: � ¸: ‚ J ð NR ò  Î NR ò DR:S%(,J) ð : ƒ J: � STORES NEW NR VAL ON DISKâ‘3 NS ð FILE$ ð PDB$ ò ".HDR": ¿ "O",#,FILE$: Ã: È FILE$: PDB$ ð "":F$ ð "BASENAME.RA": � : ‹ NR ð  Ï È FILE$: ‰ è…šJ ‚ I ð S Î NR ó :R$(I) ð R$(I ò ): ƒ I:NR ð NR ó : � ¸: ‰ ¦ �š| � Éš† T9 ð : ‘ CLS$;CH$; :E ð : ‚ I ð  Î A:K(I) ð : ƒ I›¤ ‚ I ð  Î :AC(I) ð : ƒ I:HC ð :GT ð : • E ‰ N ›¸ ‰ d›Â ‘ : ‘ "NO MORE THAN 21 HEADERS ALLOWED": … "HOW MANY HEADERS ";RH$:RH ð ÿ” (RH$): ‹ RH ñ  ø RH ï  Ï  ¢›Ì ‹ E ð  Ï RN$(NN) ð "PRESENT"¼›Ö ‚ I ð  Î RH ô  Ñ =œà ‘ "ENTER: � DISK SORT FOLLOWS’4 ‚ J ð  Î NR: ‹ S%(,J) ñ ï NS Ï ƒ JK’5 ‹ NS ð J Ï ‰ B : � RECORD IN CORRECT DISK LOCATIONž’6 ‹ J ï NR Ï L ð NR ò :S%(,L) ð NS: ‰ : : � DON'T NEED TO SAVE REC S%(0,J)“8 � :L ð J: ‚ I ð  Î NH:Z$(I) ð N$(B,I): ƒ I: � TEMP STORE REC FROM DISK LOCATION J IN Z$(I) H“: J ð NS: � :J ð L: � Ì: � STORE REC IN NEW ORDER ON DISCÄ“< ‹ L ñð NR Ï ‚ I ð  Î NH: N$(B,I) ð Z$(I): ƒ I: J ð NS: � Ì:S%(,L) ð L:� PUT OTHER RECORD BACK ON DISK IN EMPTY SLOTö“B S # OF HEADER YOU WANT IN": ‘ "POSITION #"(I ò ) õ " ";: … "";K$:K(I) ð ÿ” (K$): ‹ K(I) ñ  ø K(I) ï NH ò  Ï à £œô ‘ "ENTER TAB FOR "H$(K(I))" ";: … "";K$:K(I ò ) ð ÿ” (K$): ‹ K(I ò ) ñ  ø K(I ò ) ï ÿ Ï ô ñœ ‘ "TOTAL ON "H$(K(I))" (Y/N) ";: … L$: ‹ L$ ð "Y" Ï K(I ò ) ð:K() ð � ƒ I: ‹ K() ñ ï  Ï N S�0 … "ENTER TAB FOR TOTAL: ";A$: ‹ ÿ’ (A$) ð  Ï K() ð : ‰ N ¤�D K(I ò ) ð ÿ” (A$): ‹ K(I ò ) ñ  ø K(I ò ) ï ƒ Ï ‘ "": ‘ MCU$;: ‰ 0 ¹�N ‹ NH ñ  Ï ‘ 1žS ‚ I ð  Î N%(,NS) ð NS:NS ð NS ò : ‹ NS ñ ð NR Ï 4 ”D ‰ è ”¦ � ¡”° ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ J ð  Î NR: ‘ J;" ";R$(J): ƒ J: ‘ : ‘ J;" CREATE A NEW DATA BASE": ‹ J ï  Ï ‘ J ò ;" DELETE A DATA BASE"©”â ‘ Ü”ì … "WHICH ";S$:S ð ÿ” (S$): ‹ S ð J ò  Ï d • ‹ S ñ  ø S ï J Ï ‘ ÿ– ();: ‘ MCU$;CLL$;ESC$;"10D"; ‰ ì E• DB$ ð R$(S): ‹ S ñ ï NR ò  Ï P T• ‘ : ‰ F �•2 � <:J ð : ‘ "THERE ARE NO RANDOM ACCESS DATA BASES ON THIS DISK"õ•7 ‘"'RETURN' TO CREATE ONE, 'ESC' TO QUIT H:H%(I) ð : ƒ I: ‚ I ð  Î RH ô  Ñ :H%(K(I)) ð : ƒ I: � SET H%(I)=1 FOR HEADERS REQUIRED IN REPORTQžX ‹ K() ð  Ï T9 ð : ‰ b zžY ‹ K() ð  Ï K() ð :T9 ð : ‰ b ÄžZ ‹ K() ð  Ï … "VERTICAL TOTALS ALSO? Y/N ";L$: ‹ L$ ð "Y" Ï T9 ð ëž[ ‹ K() ð  ÷ L$ ñ ï "Y" Ï T9 ð „Ÿb ‘ "'RETURN' WILL SELECT ALL RECORDS.": … "SELECT RECORDS BY WHICH HEADER #";S$:S ð ÿ” (S$): ‹ S$ ñ ï "" Ï ‹ S ñ  ø S ï NH Ï ‘ "REENTER": ‰ b ôŸg F$ ð ".IND":R$() ð "":R$() ð "ALL RECORDS": ‚ J ð  Î NR:S%(,J";: � f: ‘ L$:‘: ‹ ÿ•(L$) ð  Ï è :¢ ‘‘–F ‘"READY TO CREATE A NEW DATA BASE":‘ "FIRST 8 CHARACTERS OF NAME MUST BE UNIQUE": … "NAME FOR NEW DATA BASE FILE :",R$(J): NR ð J: � ¸:DB$ ð R$(NR)á–P PDB$ ð DB$: ‹ ÿ’(DB$) ï  Ï PDB$ ð ÿ�(DB$,):� FILE NAME CAN'T EXCCED 8 CHRë–U ‰ tó–d � b—n ‘ : … "DELETE WHICH : ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï J ó  Ï ‘ ÿ– ();: ‘ MCU$;CLL$;ESC$"20D";: ‰ n ˜‚ ‘ CLS$;CH$; : ‘ ESC$;"9B": ‘ "READY TO DELETE " ;ÿ– (");R$(S); ÿ– (");".": ‘ : ‘ "ONCE DELETED,) ð : ƒ J: ‹ S$ ð "" Ï R$() ð "1": ‰ ” ² j ‘ CLS$;CH$;:‘:‘"SEARCH OPTIONS FOR: ";H$(S):‘:‘"KEY 'RETURN' TO MATCH FIRST CHARACTERS IN HEADER FIELD-FC":‘" 'SPACE' TO MATCH ANY CHARACTERS-AC":‘" 'ESC' FOR A RANGE OF DATES": ‘ò l � f: ‹ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  ÷ ÿ•(L$) ñï  Ï ‰ j 7¡n ‹ S ð  Ï ‚ J ð  Î NR:ST$(J) ð ÿ“ (J): ƒ J: :¢ J ð ó: � s¡p R$() ð ÿ“(ÿ”(R$()) ò ): ‹ ÿ•(L$) ð  Ï � Š: ‰ ~ “¡r ‹ ÿ•(L$) ð  Ï � î:‰ ~ ó¡t ‘ S;": ";H$(S);: … "= ",Q$: NS ð : ‚ J ð  Î NR: THIS DATA CANNOT BE": ‘ "RECOVERED. ARE YOU SURE THAT YOU"~˜Œ ‘ "WANT TO DELETE IT? (Y/N) ";:… "",S$: ‹ S$ ñï "Y" Ï ¦ : :¢ PDB$ ð R$(S) : ‹ ÿ’(R$(S)) ï  Ï PDB$ ð ÿ�(R$(S),)☴ PDB$ ð DRIVE$ ò PDB$: ‘ CLS$;CH$; : ‘ ESC$;"11;11H" : ‘ "[ DELETING DATABASE ]": • ¨ ‰ ð K™È F$ ð ".RFN": � : ‚ I ð  Î NR: FILE$ ð PDB$ ò ".R" ò ÿ‚(ÿ“(I),ÿ’(ÿ“(I)) ó): È FILE$: ƒ I: ‰ ú X™ð � <: �™ú FILE$ ð PDB$ ò ".IND": ¿ "O",#,FILE$: Ã: È FILE$Å™ FILE$ ð PDB$ ò ".RFN": ¿ "O",#,FILE$: Ã: È FILE$>š ‹ Q$ ð "" Ï ‹ ST$(J) ñï "" Ï S%(,J) ð 6¢u ‹ Q$ ñ ï "" Ï ‹ Q$ ñ ï ÿ� (ST$(J), ÿ’ (Q$)) Ï S%(,J) ð µ¢v ‹ ÿ• (L$) ñ ï  Ï NS ð NS ò S%(,J): ƒ J:R$( ÿ” (R$())) ð R$() ò " FC MATCH, WITH " ò ÿ“(S) ò":" ò H$(S) ò "= " ò Q$>£~ ‘ CLS$;CH$; : ‚ I ð  Î ÿ” (R$()): ‘ R$(I): ƒ I: ‘ : ‘ "WITH THE SELECTIONS ABOVE, THE REPORT": ‘ "WILL CONTAIN "NS" RECORDS": ‘ ¬£… ‘ "KEY 'RETURN' TO RUN REPORT,OR": ‘ "ANY OTHER KEY FOR ANOTHER SELECTION": � f: ‹ ÿ• (L$) ð  Ï ” $¤Š ‘ CLS$;CH$; : � (: ‘ :(ôIó))): ‹ PF ñ  Ï ‘ H$(K(ôIó)); :¢ ž H$(K(ôIó));_¬Q ƒ I: ‹ K() ð  Ï SP% ð K( ô I ó) ó LL%: ‹ SP% ï  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);“¬V‹ K() ð  Ï ‹ PF ñ  Ï ‘"TOTAL"; :¢ ž "TOTAL";ǬtL ð  ò ÿ” (R$()): ‹ PF ñ  Ï ‘: Ž: :¢ ž : Ž Ï¬ˆ � �­’NS ð NR: ‘ : … "ENTER THE REPORT FORMAT NAME ";RN$(NN):F$ ð ".R" ò ÿ‚(ÿ“(NN),ÿ’(ÿ“(NN)) ó ):NR ð  ô RH ò : ‚ I ð  Î NR:R$(I) ð ÿ“ (K(I)): ƒ I:R$(I ó ) ð ÿ“ (K()): � ¸: � X: Ž —­â � /®ìF$ ð ".R" ò ÿ‚(ÿ“(NN),ÿ’(ÿ“(NN)) ó ) : � : … "SELECT RECORDS BY HEADER # = ";L$:S ð ÿ” (L$): ‹ S ñ  ø S ï NH Ï ‘ "REENTER": ‰ … /¤� ‰ j d¤’ ‹ E ð  Ï Ž : � FOR SELECT HEADERS SUB @ 3170~¤” J ð ó: S ð ó: � ²¤ž ‚ I ð  Î RH ò : ‹ K( ô I ó ) ï K Ï PF ð 礨 ƒ I: • PF � n,‚, : � : ‹ K ð  Ï ‰  þ¤² ‚ J ð  Î K: � p ?¥¼ ‹ PF ñ  Ï ‹ L ï  Ï ‘ "ANY KEY TO CONTINUE";: � f: � c¥Ð ‘ : ƒ J: ‹ N$(,) ð "0" Ï  µ¥Ú ‚ J ð  Î ÿ” (N$(O,O)) ó :S%(,J) ð : ƒ J:J ð ó :S ð ó : � : ‰ ² Ñ¥ • T9 � Ô : • RH ð (NR ó ) õ : ‚ I ð  Î NR:K(I) ð ÿ” (R$(I)): ƒ I:K() ð ÿ” (R$(I ó )):NR ð NS: � (: ‰ N 8®( � |®- ‘ CLS$;CH$;:FH ð :LH ð NH():P ð : ‹ MF ð  Ï ‘ "0 ";H$(); ¯2 ‘ " SELECT FROM:": ‚ I ð FH Î LH: ‘ I" "H$(I);: ‹ I ò  ñ ð NH(P) Ï LL% ð ÿ’(ÿ“(I)) ò ÿ’(H$(I)): ‹ LL% ï  Ï ‘ ÔLL% ó );:¯7‹ I ò  ñð NH(P) Ï ‘ " ";Iò;" ";H$(Iò);¾¯< ‘ : ƒ I: ‹ NH ï ( Ï ‘ "'SPACE'=OTHER HEADERS,'RETURN'=CONTINUE ";: � f: ‹ ÿ• (L$) ð  Ï CP ð : � i : ‘ CLL$;: ‰ Z°F ‹ NH ïE ‰ R õ¥/ ‹ K() ð  ÷ T9 ð  Ï K() ð c¦> ‘ : ‘ "DO YOU WANT TO SAVE THE FORMAT": … "FOR THIS REPORT TO DISK (Y/N) ";L$: ‹ L$ ð "Y" Ï E ð : � ˆɦR ‘ : ‘ "MORE REPORTS USING THE "RN$(NN)" FORMAT": … "(Y/N) ";L$: ‹ L$ ð "Y" Ï � (:E ð : ‰ ¤ ñ¦f ‚ I ð  Î NH:H%(I) ð : ƒ I: ‰ ÊU§p LL% ð : ‚ I ð  Î RH: SP% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);´§u LL% ð K(ôIó) ò ÿ’(N$(J,K( ô I ó ))): ‹ PF ñ Ï ‘ N$(J,K(ôIó));: :¢ ž N$(J,K(ôIó));ÿ§w ‹ K(ôI) ð  Ï V ( ÷ P ð  Ï FH ð ):P ð :LH ð NH(): ‘ CLS$;CH$; : ‰ 2°P ‹ NH ï ( Ï -)°ZMF ð : Ž 1°d � y°nNN ð : ‚ I ð  Î :RN$(I) ð "": ƒ I:NS ð NR:F$ð".RFN": • ¨ ‰ æ„°Œ � ±– ‚ I ð  Î NR:RN$(I) ð R$(I): ƒ I: ‘ CLS$;CH$; : ‘ "SELECT FROM:": ‘ : ‚ I ð  Î NR: ‘ I;" ";R$(I): ƒ I: ‘ : ‘ I" CREATE A NEW REPORT FORMAT".±µI ð I ò :L$ ð DED$z±¶ ‘ : ‘ I" USE REPORT FORMATS DEDICATED TO:": ‘ " "L$" DATA BASE": ‘ ±±¾ … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï I Ï ¾Ô±¿ ‹ S ñ ï I Ï I ð I ð ÿ”(N$(J,K(ôIó))): AC(I) ð AC(I) ò V: HC ð HC ò Vx¨z ƒ I: ‹ K() ð  Ï ‹ HC ñ ï  Ï GT ð GT ò HC: SP% ð K( ô I ó) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%);: :¢ ž ÔSP%);¡¨ ‹ K() ð  Ï ‹ PF ñ  ‘ HC; :¢ ž HC;À¨„ ‹ PF ñ  Ï ‘ : ‘: :¢ ž : žÚ¨¢ HC ð :L ð L ò : Ž V©Ô ‹ PF ð  Ï ‚ I ð  Î P: ‘ "-";: ƒ I: ‘: :¢ ‚ I ð  Î P : ž "-";: ƒ I: ‹ PF ð  Ï ž: :¢ ‚ I ð Q Î „: ž "-";: ƒ I: žä©Ù LL% ð : ‚ I ð  Î RH: SP% ð K(ôIó) ó LL% : ‹ AC(I) ñï  Ï LL% ð K(ôIó) ò ÿ’(ÿ“(AC(I))):‹ SP% ïð  Ï ‹ PF ñó : ‰ Èõ±À ‹ DB$ ð L$ Ï NR ð NS: ‰ |�²Á ‘ CLS$;CH$; : ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT DESIGNED FOR": ‘ L$" DATA BASE": ‘ "REPORT WILL PROBABLY NOT WORK WITH": ‘ DB$" DATA BASE STRUCTURE"ó²Â ‘ : ‘ : ‘ "DEDICATED REPORT FORMAT IS AT LINE 5500": ‘ "IT IS ACCESSIBLE FROM APPLESOFT": ‘ E³Ã ‘ "ENTER 10 IN THE MAIN MENU FOR APPLESOFT": ‘ "THEN KEY IN: GOTO 5500": ‘ ·³Ä ‘ : ‘ : ‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)": ‘ "2 RETURN TO MAIN MENU": ‘ : … "WHICH ";L$:L ð ÿ” (L$)ͳÅ ‹ L ð  Ï ‰  Ï ‘ ÔSP%);: :¢ ž ÔSP%);ªÞ ‹ AC(I) ñï  Ï ‹ PF ñ Ï ‘ AC(I); :¢ ž AC(I);zªü ƒ I: ‹ GT ñ ï  Ï SP% ð K( ô I ó ) ó LL%: ‹ SP% ï  Ï ‹ PF ñ Ï ‘ ÔSP%);GT: :¢ ž ÔSP%);GT›ª‹ GT ð  Ï ‹ PF ñ  Ï ‘ :¢ ž¡ªŽúª ‘ CLS$;CH$; : ‘ RN$(NN)" REPORT FOR :": ‘ : ‚ I ð  Î ÿ” (R$()): ‘ R$(I): ƒ I: ‘ M«$‹ PF ï  Ï ž RN$(NN);" REPORT FOR :": ž: ‚ I ð  Î ÿ” (R$()): ž R$(I): ƒ I: ž­«LLL%ð: ‚ I ð  Î RH: SP% ð K( ô I ó ) ó LL%: ‹ SP% ïð  Ï ‹ PF ñ  Ï ‘ ÔSP%); :¢ ž ÔSP%)¬NLL% ð K(ôIó) ò ÿ’(H$(K–ë³Æ ‹ L ð  Ï NR ð NS: ‰ Ê´Ç ‘ CLS$;CH$; : ‰ ÃA´ÈNN ð S: ‹ S ñ ï I Ï RN$(S) ð R$(S):E ð :NR ð NS: ‰ âL´Ü ‰ Ï´æ � <: ‘ CLS$;CH$; : ‘ "NO REPORT FORMATS ON DISK...": ‘:NN ð : … "DO YOU WANT TO CREATE ONE (Y/N) ";L$: ‹ L$ ñ ï "Y" Ï Êé´� (: NR ð NS: ‰  µ  ‰ : � READ RECORD JµJ ð .µ ‹ F$ ñ ï ".IND" Ï �eµ FILE$ ð DRIVE$ ò PDB$ ò F$:¿ "R",#,FILE$,LV% ò ¢µ" ‹ J ð  Ï À #,LV% AS NR$:Á #,: NR ð ÿ” (NR$): ‰ ^ ¶' ‹ J ï  Ï N$(B,) ð ÿ“ (J): ‚ I ðó ‘ : ‚ I ð  ò  ô PP Î NH(PP): ‘ I" "H$(I)": "N$(P,I): ƒ I: ‘ :L ð L ò NH(PP) ò  ó  ô PP: 3¾ø Ž n¾  � SUBROUTINE TO PRINT 2 PAGE REPORT WITH 2 COLUMNS¾¾ • PF � n,‚, :FH ð :LH ð NH():PP ð : SP% ð (: ‹ PF ï  Ï SP% ð B뾞 :ž " "H$()":"N$(J,): ‚ I ð FH Î LHQ¿ ž I" "H$(I)": "N$(J,I);: LL% ð ÿ’(ÿ“(I)) ò ÿ’(H$(I)) ò ÿ’(N$(J,I)): ‹ LL% ñ SP% Ï ž ÔSP% ó LL%);•¿ ‹ I ò  ñð NH Ï ž I ò  " " H$(I ò ) ": " N$(J,I ò ) :¢ žÔ¿% ƒ I:‹ NH ï ( ÷ PP ð O Ï FH ð ):LH ð NH():PP  Î NH:Á #,(S%(,J) ó ) ô NH ò I ò : … #,N$(B,I) : ƒ I: ‰ ^p¶, ‹ S ï  ÷ S ñ ð NH Ï ‚ J ð  Î NR: Á #,(S%(,J) ó ) ô NH ò S ò : … #,ST$(J): ƒ J: ‰ ^ ¶6K ð : ‚ J ð  Î NR: ‹ S%(,J) ñ ï  Ï Tê¶@K ð K ò : ‹ K ð B Ï K ð K ó :N$(,) ð ÿ“ (J):N$(,) ð "1": ‰ ^M·JN$(K,) ð ÿ“ (J): ‚ I ð  Î NH: ‹ H%(I) ð  Ï Á #,(S%(,J) ó ) ô NH ò I ò : … #,N$(K,I)V·O ƒ Im·T ƒ J:N$(,) ð "0"{·^ à #: Ž Ð·� FILE$ ð DRIVE$ ò PDB$ ò F$:¿ "I",#,FILE$: … #,NR$: NR ð ÿ”(NR$): ‚ J ð ð : ‰ ÿà¿* ž : Ž è¿Ê � ó¿Ô ‰ ãÿ¿Þ � < Àã ‹ CD ð  Ï ¶qÀè ‘ CLS$;CH$; : ‘ "******* DATA BASE MANAGEMENT I *******": ‘: ‘ "CURRENT DATA BASE: ";DB$ÈÀé ‘ "CURRENTLY CONTAINS: ";NR;" RECORDS": ‘ "ROOM FOR ";MR ó NR;" MORE RECORDS": ‘ Áò‘ "ROOM FOR ";B ó ;" IN MEMORY": ‘ "THE PRINTER IS ";PF$(PF)‚Á8‘:‘"1 SELECT DATA BASE": ‘"2 SEARCH AND/OR CHANGE DATA":‘ "3 ENTER RECORDS": ‘"4 DELETE RECORDS": ‘"5 REPORTS"üÁB ‘ "6 SORT (TAKES APPROX. " ÿ… (nv ô NR ö  ò �Âu{ ô NR)" MIN Î NRå·† … #,R$(J): ƒ Jó·� à #: Ž œ¸š� TRUNCATE AND WRITE 'RETURN' INTO FIELD SO CAN USE INPUT TO READ DISK, THIS WAY SHORT FIELDS ARE NOT PADDED OUT WITH SPACES AT THE END-REQUIRED FOR REPORTS SECTION¦¸¸J ð ¸Â ‹ F$ ñ ï ".IND" Ï ¹Ì FILE$ ð DRIVE$ ò PDB$ ò F$: ¿ "R",#,FILE$,LV% ò : À #, LV% ò  AS IN$>¹Ö ‹ J ð  Ï É IN$ ð ÿ“(NR):  #,: ‰ ô™¹ê ‚ I ð  Î NH: É IN$ ð ÿ�(N$(B,I),LV%) ò ÿ–( ):  #,(S%(,J) ó ) ô NH ò I ò : ƒ I§¹ô à #: Ž ò¹ FILE$ ð DRIVE$ ò PDB$ ò F$: ¿.)": ‘ "7 TURN ON PRINTER OR CHANGE # OF COLUMNS"sÂ’ ‘ "8 TURN OFF PRINTER": ‘ "9 LIST RECORDS": ‘ "10 QUIT": ‘ : … "WHICH ";S$:S ð ÿ” (S$): ‹ S ñ  ø S ï  Ï Ê¦ÂÎ • S ‰ è,ô,T,$ ,| , ,,(,Ø,2SÃØ ‘ CLS$;CH$; : CP ð  : � i : ‘ "KEY 'RETURN' TO LIST ALL RECORDS": ‘ : ‘ "OR": ‘ : ‘ "ENTER FIRST RECORD # TO LIST EITHER A": ‘ "SINGLE RECORD OR A SEQUENTIAL RANGE"“ÃÝ ‘ : … "'RETURN' OR REC # = ";L$: ‹ L$ ð "" Ï � ”: ‰ ÊÌÃâL ð ÿ” (L$): ‹ L ñ  ø L ï NR Ï ‘ "REENTER": ‰  "O",#,FILE$: ‘ #,ÿ“(NR): ‚ J ð  Î NRº0 ‘ #,R$(J): ƒ J: à #: FF ð : Ž !ºX � nºbNR ð NN:F$ ð ".RFN": ‚ I ð  Î NR:R$(I) ð RN$(I): ƒ I: � ¸:NR ð NS: Ž §º” ‚ J ð  Î NR:S%(,J) ð : ƒ J: � LIST ALL RECORDS»™J ð ó :S ð :L ð : ‘ CLS$;CH$; : � : ‚ J ð  Î K:PP ð : ‹ PF ï  Ï �  : ‰ Æ»žP ð J: � î8»£ ‹ L ò NH ñ  ÷ J ñ ï K Ï Æ}»¨ ‹ NH ï  Ï PP ð PP ò : ‹ PP ï  Ï ‘ "KEY 'SPACE' TO BACK UP"¯»­ ‘ "PRESS 'RETURN'TO CONTINUE,'ESC'FOR MENU"; � f: ‘CLS$;CH$;: ‹ Ý#Äç ‘ : ‘ "KEY 'RETURN' IF # "L" IS ONLY RECORD": ‘ "INPUT LAST RECORD # FOR A RANGE"hÄì ‘ : … "'RETURN' OR LAST REC # = ";L$: ‹ L$ ð "" Ï LL ð L: ‰ ö§ÄñLL ð ÿ” (L$): ‹ LL ñ ð L ø LL ï NR Ï ‘ "REENTER": ‰ ìëÄö ‚ J ð  Î NR:S%(,J) ð : ‹ J ï ð L ÷ J ñ ð LL Ï S%(,J) ð Åû ƒ J: � ™: ‰ Ê_ÅPF ð :‘ CLS$: CP ð : � i: ‘"THE PRINTER IS ";PF$(PF): ‘" KEY 'RETURN' TO CONTINUE"‘Å ‘:‘ "KEY 'SPACE' TO CHANGE TO : ";PF$():‘ÙÅ"� f: L ð ÿ•(L$): ‹ L ñï  ÷ Lñï  Ï ‰ : :¢ ‹ ÿ• (L$) ð  Ï N$(,) ð "0": ‰ Ê1¼· ‹ ÿ• (L$) ñ ï  ÷ ÿ• (L$) ñ ï  Ï ‘ "REENTER ";: ‰ ²g¼¼ ‹ NH ï  ÷ PP ï  ÷ ÿ• (L$) ð  Ï PP ð PP ó ‰¼Á ‹ NH ï  ÷ PP ñ ð MP Ï ž©¼Æ ƒ J: ‹ N$(,) ð "0" Ï Ž æ¼Ë ‘ CLS$;CH$; : CP ð  : � i : ‘ "THINKING PLEASE WAIT"½Ð ‚ J ð  Î ÿ” (N$(,)) ó :S%(,J) ð : ƒ J: ‰ ™X½ä � SCREEN DISPLAY OF 1 PAGE REPLACES OLD SUB AT 2240{½éP ð B: ‹ PF ï  Ï J ð B: ‰  ǽî‘ " ";H$();": ";N$(P,);: ‹ NH ï  Ï ‘ " PP= ";PP ò ;+¾L ð  Ï PF ð ãÅ$‰ ÊÆ(PF ð : ž ESC$;"1w": ‰ Ê#Æ2 ‘ CLS$;CH$; : • ¨ ‰ : � oÆ< � ERROR HANDLING FOR MBASIC-RESUME IF FILE NOT FOUND, ELSE PRINT ERROR°ÆF‹ × ð 5 Ï © P: :¢ ‘"ERROR ";×;" AT LINE ";Ö: • ¨ ‰ : �æÆPŽ: � RETURNS TO POINT CALLING SUB ERROR CANCELED Çnž ESC$;"1w";: Ž : � SET PRINTER TO 80 COLBÇ‚ž ESC$;"4w";: Ž: � SET PRINTER TO 132 COL\Ç ‘" INVALID PF = 3": Ž„Ç| � DECICATED REPORT FORMAT CHOICESèÇ� ‘ CLS$;CH$; : ‘ : ‘ : ‘ "1 RETURN TO REPORT (UNIVERSAL FORMAT)":åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå ‘ : ‘ "2 RETURN TO MAIN MENU"Ȇ‘ "3 MAILING LIST in current order"4È� ‘ : … "WHICH ";L$:L ð ÿ” (L$)JÈ“ ‹ L ð  Ï ‰ d`È• ‹ L ð  Ï ‰ ÊtÈš‹ L ð  Ï � pÈß ‰ |Ép� PRINT MAILING LIST ON LINE PRINTER IN CURRENT SORTED ORDER. PRINT ALL RECORDS WITH FIRST LETTER OF STATUS <> "F" FOR FORMER�Éz� J = -1: S= 8: F$ = ".IND": GOSUB 4120: FOR J = 1 TO NR: L$ = LEFT$(ST$,1): IF L$ <> "" AND L$ <> "F" THEN S%(1,J) = 1 ELSE S%(1,J) = 0»É{‚ J ð  Î NR: S%(,J) ð : ƒ J: J ð óÖÉ� ‚: � 1åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå32 COL PRINTBÊ„ ‚ I ð  Î : H%(I) ð : ƒ I: K() ð +: K() ð /: K() ð : � ARGUMENT FOR SPACE$ TO FILL PAGE EVENLYÀʉ‘"READY TO PRINT ALIGN FORM CREASE A LITTLE BELOW TOP OF PRINT HEAD":‘"ANY KEY TO CONTINUE, 'P' TO APPEND PHONE #": � fËŽS ð ó: ‹ NR ï  Ï N$(,) ð "1" :¢ N$(,) ð "0": � INITIAL SETUP&˘ ´ò N$(,) ñï "0" : � ,Ë�ž˜Ë¢‚ I ð  Î K: L ð ÿ’(N$(I,)) ò ÿ’(N$(I,)) ò : ž N$(I,);" ";N$(I,);: ‹ I ñ  Ï ž ÿ˜(K(I) ó L);: :¢ ž Ë¤ƒ I ̬‚ I ð  Î K: L ð ÿ’(N$(I,)) ò ÿ’(N$(ååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååI,)) ò : ž N$(I,);" ";N$(I,);: ‹ I ñ  Ï ž ÿ˜(K(I) ó L);: :¢ žÌ®ƒ I�̶‚ I ð  Î K: L ð ÿ’(N$(I,)) ò ÿ’(N$(I,)) ò ÿ’(N$(I,)) ò : ž N$(I,);",";N$(I,);" ";N$(I,);: ‹ I ñ  Ï ž ÿ˜(K(I) ó L);: :¢ žÙÌ»S%(,ÿ”(N$(I,)) ) ð : ƒ I: � DON'T REREAD THIS RECORDFÍÅ‹ L$ ñï "P" Ï ž :¢ ‚ I ð  Î : L ð ÿ’(N$(I,)): ž N$(I,); ÿ˜(K(I) ó L);: ƒ I : ž N$(,):� ADD PHONE #XÍÊž: J ð ó: µ}ÍÔ� n: Ž: � REST TO 80 COL PRINTÿ’(N$(I,)): ž N$(I,); ÿ˜(K(I) ó L);: ƒ I : ž N$(,):� ADD PHONE #XÍÊåååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå