sr@1Ax > Y@{!>2q@a@x (C@:q@< 8>[Y@x >ۀӀ>Ә>x{r@xۀz>xۀ0\X COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<ܯ2 ݇!2:2a{_:ʖ:>Ľʖ:=2–!B!6#5ʖ:Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ "޷"͌#>?͌͘ =_.:;<> Oޅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER|!yO#< Ty#O 3߯21y_͸2y2ͽ:ܷ˜1͘A͌>>͌92^ :¥.!_~#fow]!v"!çREAD ERRORçNO FILE^: ! ~ 3#0 Wx x ހ ނ G ~ # 3x~#B!Y~ɯ2:=!ý:=!:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ w4!Y~ʆ͌†t=ʆf ^ T 2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Ypsp2mÆÆf ͧÆFILE EXISTS _: É: :ʉ=2)ͽÉ T!@k!}|q=qf^!~2>`~22\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: ! Â$$$ SUB|"C{2!"E9"1A22!ty)K!G_^#V*C~E ,&-AGMS!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6 O͐  :E B 2>: b# : y! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: !  Hù H H $O͐: 2 *CN# x: 2 p&x~+é72 H! >w_: ! 5ͤNkͱ¦ͱxʊ#Nx: ! 2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \S*C :qn& ^#V>O^"*}:*)=":O:o"*C *C!ͮ~2~2ͦ:2ͮ:O:w:w |g}o*# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw**{#zr+s{ozg**͕** ,w͜͸Ͳ!!N#F$**O!~#:A#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x2͢*C ~<wʃG:!ʎì 4~ʶ¬:<ʶ$ʶïZͻx>2>2ͻ:!Z2:Eẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:E͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=262*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!Bw!>2*C~=2u:B2~2wE:A*Cw>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6:ʑw:2E**E}DQ>29çÊdwÝflýð>NnN 1>2G:͂CP/M VERSION 2.2 (1.1) (C) 1981 Digital Research, Inc. ۀ2222/241G :Olͽ!"Y> 2*$$": !"}<4 ï͂ ** WARM BOOT ERRORç!":O>2!"2!"2!O"2!">28;:2O2!@"Y >2 @͂ ** COLD BOOT ERRORx>>:3Ӑ!:4!G:5!?:6N2! xx@~# O%<!7ˎFq>[?1;7l[?8h ![ ? 1 2 !7c~(5^4~ݾ06~YNN {_x(F x( Y~>NxȯF/I &&A &A &&YQYQs1!̈́!̈́!?̈́!G̈́{N@H x`(hʩ!d+| xX(>N,s s ` F,s,dͅ >,[ ͅ >[>,ûE0A8 A_!~,>,>[,ûO~ݾ(#4^4~ݾ06qsN Nx( Y x(>8Nx(>7yNx  x@$$@!$D  I $I $ې!7F!Ë!7F( N D~%!ð!7F,!!7F3!!Ë!7F( N(ˎq!ð!!!GË!Gð!G!?Ë!?!?ð:::ʝA:,H:ú:3û: O÷: Vû:0 ]úB3r\B3B3B3$?  !"# ý!y҂2i))))͂ INVALID DISK SELECT - CONTROL-C TO RE-BOOTdxòC!q n&C>2*[y2*[:(>2ɯ2:<2:o&)))))))":![*KB[:![:(2:2*":2:>2:2*":2:=2:!_~2 *#"!:*KB!:ȯ2 >T>`:O2͞!:_~>YĠ6:}Ā:w͂ READ ͂ WRITE͊͂ SECTOR :͂ SEEKͭ͂ TRACK :͒͂ RESTORE͂ ERROR - DRIVE :AOw>2!" ]ۀ0x>2! " ]ۀ0xG>xx x >!5>*X2Y}*Xj>[Uj> UxO /y͊Y͊:{>Uͳxx >x!@: x ۀӀxG+|( x͂ DRIVE :AOw͂ NOT READY - TYPE ANY KEY TO RETRY - CONTROL-C TO RE-BOOTdxúۀ2yӀFͳ!_~yxۀx >x{*:zx { x~#ŠOwÂd0 8 xĨ0Ow*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 BAS89:;<=>?@ABCDEFGMDBM-R9 BASIHIJKLMNOPQMDBM-S9 BASRSTUVWXYZ[\]^_`aMDBM-S9 BAS*bcdefgTA-SEQ DEDjMERGE-RADEDklmMDBM-R10BASnopqrstuvwxyz{|}MDBM-R10BASX~BIOTHM COMdSWAP 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 NEXT 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: 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$(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 GOSUB 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 102ie "ANY KEY TO CONTINUE ";ifL$ : (L$)  f: : : SIMULATE APPLESOFT GET L$jiPED 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=HEADERSd 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 CONTROLe 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 EDGEjj 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 122kx PRINT OLD$ THEN CHANGE TO REP$ WITH SCREEN COPY USING GET SUB 102kzREP$ "": (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 OKb 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-1300c 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 CONTROLc-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): In  #: >o, INPUT CURRENT TITLE, CURT%, EDITION, CURE%, AND CALC REC# L%zo1 "TITLE # = ",CURT%: CURT%  CURT% NTIT% 1o6 "EDITION # = ",CURE%: CURE%  CURE% d 6p;L% (CURT% ) w J: x SEARCH FOR A STRING MATCH WITH ANY FIELD CHARACTERSCxNS : : S": "H$(S)" = ";: "";Q$xL (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 IpL : 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'Sq 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 Qz : 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$"/" IIrMO% ( (DT$,II )): MO%  X: 1r JJ II  (DT$)Xr (DT$,JJ,) "/" JJr JJ (DT$) X: : 2ND / NOT FOUND WITHIN DT$rYR% ( (DT$, (DT$) JJ)): YR% c YR%l YR%7sDA% ( ( (DT$,JJ ),JJ II )): DA%  X: s MAKE INTO DISK ALFA STRING = 100* MONTHS SINCE 1976 + DAY OF MONTHsYR% YR% : YR%  YR%  X: sDT$ (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 SUBROUTIUNEub 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$): It I  NTIT%: #,NR%: NR% NR% : NUMH%(I) (NUM$): I~R DETECTEDul 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"wNS : 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 PRINTT CLS$;CH$: "TO ENTER A NEW PRQUIT": :  "WHICH ";L%: L%  L%  & L% x,@,, ,: - j CLOSE ALL FILES UPDATE NUMT% AND NUMH% FILES AND QUITRESTART% : DON'T RESTART JUMP TO 1310 WITH SET TO 1 TO RESTARTFILE$ DRIVE$ PDB$ ".NUM": "R",#,FILE$,: #,  AS NUM$: NR% K( I  NTIT%: NUM$ (NUME%(I)): #,NR%: NR% NR% : I2 I  NTIT%: NUM$ (NUMH%(I)): #,NR%: NR% NR% : I< I  NPL%4F 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);": ": Ir 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 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 AT1HS% CURT% d NUMH%(CURT%): #,S%: NUMH%(CURT%) NUMH%(CURT%) : MOVE AND UPDATE HISTORYARL$ " ": Gm 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%Ej 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 FALLI2);GAL%(I,)N I   d: CLS$;CH$: { 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 LINErL 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~ ]tNH 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 vB >RS (S$): S  S NH \PP ((S ) )Ԇb CLS$;CH$; : xf : 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  9F$ ".IND": "** FILING CHANGES - PLEASE WAIT **": :CD :: A X PF  I " ";H$();": ";J;: NH  #) "PP= ";PP ; : I   PP NH(PP): I;" ";H$(I); L  L  jl (L$)  : H$(S);: " = ",Q$q : (L$)  "RANGE? Y/N ";RNG$: RNG$ "Y" (: : "RANGE FROM "S;: " TO #= ";L$:FL (L$): FL NH qv 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) ANS 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 FOLLOWS4 J  NR: S%(,J) NS Jƌ5 NS J B : RECORD IN CORRECT DISK LOCATION6 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 SLOTtB 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 JZ 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"u7 "'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)cP PDB$ DB$: (DB$)  PDB$ (DB$,): FILE NAME CAN'T EXCCED 8 CHRmU tud 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":  : "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 :  Qf 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$; : 2P 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 SUBSJ  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%)dNLL% 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 SECTIONaJ } 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  NR0 #,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 2240OP 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 :2L> ̈́M9 "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 221@: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)V8:"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": : HHͯ :^!w:<2:0}:@E}:!S!W6: z!]6:cm!c6:_z!_6l ::,: HHҰͯ : 2ó:E:1:2v!q!*8!*6: >ͦ>ͦ!q:_  !p+q.*   !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q**M:>!(:=2%> >>!F!5+N! ~2!4<2T>>!b}*bMͭz:b2!b6:<2é>!`ҥ*`MͭҞ!`6!6> :é:(!q:!wO! ~2*& :w>!:!4!6>:N<2N!> *N& N2 !p+q!6!6+6 !6: S: M!6g8:N2M*M8p!6!6!6>!ڕ*&P 6!4z!6!6#6#6!6*M8:ھ:*͇g2ê::¿::,͡A<2O>!p+q* !q*& *M *M !p+q*!!p+q*"!p+q*$!6  !kp+q*j> >ڪ Þ !qp+q/ *pDM9: :M2r:N!r !:r *r& N!r4 !6:͔: :ͳ.!ws+p+q+p+q:w=2wN *s*u w*s#"s*u#"u' !"*M^7 !x6:!xھ **DM͆ 2yʭ :yʗ ͯ *"*6:2x÷ *"!x4d !"/ !j}=2| !"*KM^'_ !z6:|!z1 **M8):[ͱ!N5!6ñ:5!6#6>!ڰ!6:<2O>/:!O!T *M͡H~K:¡!6[–ͱ!N5:2:2!4=:[¼ͱ4:!6:.2O8: :* ͇g:[ ͱ!N5!6:%:<2*6 * 6å!q!6> !d*&I :]>!4A>:<2O* :w:?†!6!q!6?!:ҠgÐ!q*&*~!6:22: :]Hں:A2O>: 2ͯ  "}*}DM͆ ' ͯ *"!z4 :e !"͆ !z6:|!z '? 2*H#"H!{6:{ր!Ң *{& :{4 2!{4m *":ڹ ͯ !z4I '2!"!q: !4>!S :S! :2*M! ^#V͎ * :w*#" = = = = = ͯ  *M !6q  !6q  !6q  *& !6à  !6 à  !60à  *& !6  !6  !6  *& . 1 4 7 : = F P [ f q  ÷:S:QHI:N<22: H@"2Í202O> c!6Í202O> ڍ*&O*& !sc*&P :w:·>!ұͯ :22:_!6=!6>'!E!4!p+q*0 !r+s+p+q*~$7*>*>H&>*#"*#"> 2:R͎:!6!6=2:ʙ!6:“H9Ž>!6-e!6ͻ2=2ʺ-é:>>"ͻ2:!!5ͻ2ͬ!\ :2!q: " *M n :c4 *M n :2!c:Q !c:2: !:cw>!n !5 Y : { !6!q:!lwҙ  â :0O !q:O| :O| !6:]2l:o'2o:n'2n:m'2m*mMͣ *nMͣ *oMͣ :]:   *}2D" * * *&"!q:UY: Y:ҩ: ʩ:_2ʘ:€!6<:<2!ژ!6 >!]Ҥ; !6:Q::H: !6*M : !6!q:a/>z!-:>>!p+q:,!6*DM9:<!6:z 2W!6D*&L :w:<2Ov*:>=20O> ڒ:0:AO>Ҥ::A }}Hͬ!wͻO`idͻV[2O>2:!X!6:!:=O!L NE!4 E E:/.*&L 6$L9k9.Xͯ *KM^020 :020:121'ͳ':²ͯ !G6!"!"7 *M^n/ :a/:H!6:ͯ !&6/H:_2:!q:A/>Z!/H8: 2::=O>m:W!Q} Hmd>9>!6:2*M!E ^#V͎ڗO **~2*#"m2m͖ 2m!6m!6m!6 m2mͯ m!62m!62m!62m!62m'2:2:TҒ:2!6*ME:2::Ҳ:<22ý: 2:} >ͯ :i:2:d*M:[ 2*">!b!ͯ >!`0ͯ !q:E:24J!46*}a!44EJ *KM^'́:‚ͯ !36'n::0:f9OY#9.3'ͳ.:020' 'ͳ'7 6'!j>A+!s!"@͓1!"<**"͓n "Dn"":!Q2҂:X!Wғä:ڤ*MEÓ:ұ@@:O2Mc;!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=HEADERSd 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 CONTROLe 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:_jYO jM*"S*" 3@bl*M1͓!""7 *M^͆ \͔!":͎H*#"ͧÝ/ :>͛9ͯ .*#":_!' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=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-4440f 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_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=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 CHARhk 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 102izREP$ "": (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 CAPACITYb H$(I) IS HEADER NAME, N$(K,I) IS RECORD K HEADER FIELD I IN MEMORYb 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 REPORTc 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 IlL : 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,) "/" IITmMO% ( (DT$,II )): MO%  X: sm JJ II  (DT$)m (DT$,JJ,) "/" JJm 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 QvV : DRIVE$ L$ ":": : v` :  vtMH P:F$ ".HDR": v~ {wNH NR : LV% (R$(NR)): NH(),H$(NH ),Z$(NH ): I  NH:H$(I) R$(I): I:NR : H$() "REC#":NH() NH:NH() : NH  NH() NHwMP ((NH ) ): NH ( NH() (:NH() NH: NH < N2ND / NOT FOUND WITHIN DT$)nYR% ( (DT$, (DT$) JJ)): YR% c YR%l YR%xnDA% ( ( (DT$,JJ ),JJ II )): DA%  X: n CHANGE TO GREGORIAN #:REMAINDER OF #/7 IS DAY OF WEEK,REM=0 IS MON,REM=6 IS SUNn 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() NHxMR (  (( LV%) NH)): MR  MR Zx S%(,MR),ST$(MR),H%(NH): I  NH:H%(I) : Ix I  MR:S%(,I) I:S%(,I) : IxMEM ():B (MEM (( LV%) (NH ))): B  B x N$(B,NH ):F$ ".IND": y : >yF$ ".IND":J : : "SORTING ";Ty L  y I  NR:S%(,I) : I: I  NR: J  NR: L , y ST$(I) ST$(J) S%(,I) SROUTIUNEob "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"qNS : 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 : Zzd 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 CHARACTERSjrNS : : S": "H$(S)" = ";: "";Q$rL (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 59PP :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$; : hLL (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 ) )3b 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$)KX S  S NH  Ncb 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"Jj 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  : : 99CD : 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 qIv J  NR:S%(,J) : S  ST$(J) (J)Rx J{ CLS$;CH$; : ); "SEARCHING LINE "S" OF ALL RECORDS":L : S  J : ݄ (L$)  NS : :  (L$)  : ENS : 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 DISK3 NS : DISK SORT FOLLOWS4 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 LOCATIONz6 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 80 "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 y2 <: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 REPORT6X K()  T9 : b _Y K()  K() :T9 : b Z K()  "VERTICAL TOTALS ALSO? Y/N ";L$: L$ "Y" T9 М[ K()  L$ "Y" T9 ib "'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$( : mF "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 : Xp R$() ((R$()) ): (L$)  : ~ xr (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$: jJ 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$;: ZF 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$; : 2P 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 JJ  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));DQ I: K()  SP% K( I ) LL%: SP%  PF  SP%);: : SP%);xV K()  PF  "TOTAL"; : "TOTAL";tL  (R$()): PF  : : : :  tNS 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": ^5JN$(K,) (J): I  NH: H%(I)  #,(S%(,J) ) NH I : #,N$(K,I)>O IUT 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)j8:"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 SECTIONJ  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  NR0 #,R$(J): J: #: FF : X VbNR 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: : GPF : 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 2240cP 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 ERRORF 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 ERRORF 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,) "/" IIjiMO% ( (DT$,II )): MO%  X: i JJ II  (DT$)i (DT$,JJ,) "/" JJi 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$?jYR% ( (DT$, (DT$) JJ)): YR% c YR%l YR%jDA% ( ( (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% )ka 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 DATESl 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"nNS : 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 CHARdk 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 102ezREP$ "": (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 CHARACTERSnNS : : S": "H$(S)" = ";: "";Q$nL (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 PFq%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$; : hzLL (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 QrV : DRIVE$ L$ ":": : r` :  stF$ ".HDR": s~ s I  NR:H$(I) R$(I): I:NH NR:NR :MEM ():NH() NH:NH() : NH  NH() NHsB (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 : Zud 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"2NS 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 OSv (): "WANT TO SAVE THE "DB$" FILE": "SORTED BY "H$(S)" TO DISK ";: "(Y/N)";L$: L$ "Y" F$ ".IND": v vMF : (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 <:  pS 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$)  wNR  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);":": Iy 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 td Qn : "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  tF$ ".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 Qg 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": Ol 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: lLLL%: 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$)  : ~ Mt 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%);RV K()  PF  "TOTAL"; : "TOTAL";tL  (R$()): PF  : : : :  NNS 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%);su 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 V7z 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$ "" : bL (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 : cFF  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 : 7X bNR NN:F$ ".RFN": I  NR:R$(I) RN$(I): I: :NR NS: é J  NR:N$(J,NH ) "1": J: LIST ALL RECORDSPP: "'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": M2 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  6C (L$)  AH xI SUBROUTINE TLPRINT 2 PAGE REPORT WITH 2 COLUMNSJ PF n,,: : " "H$()":"J: I  NH( )#L I;" ";H$(I);": ";N$(J,I);: LL% ((I)) (H$(I)) (N$(J,I)) : LL% ( ( LL%);cN I  NH "" : I;" ";H$(I);": ";N$(J,I)qP 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 PFt%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~ 'vNH 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 : 3PF : 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 ERRORF 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 ERRORF 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 CAPACITYd 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 REPORTe 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 OVERf 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 EDGEjj 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 102kzREP$ "": (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 IGnL : 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~oMO% ( (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 QxV : DRIVE$ L$ ":": : x` :  xtMH P:F$ ".HDR": x~ yNH NR : LV% (R$(NR)): NH(),H$(NH ),Z$(NH ): I  NH:H$(I) R$(I): I:NR : H$() "REC#":NH() NH:NH() : NH  NH() NHzMP ((NH ) ): NH JJ (DT$) X: : 2ND / NOT FOUND WITHIN DT$SpYR% ( (DT$, (DT$) JJ)): YR% c YR%l YR%pDA% ( ( (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() NHHzMR (  (( LV%) NH)): MR  MR z S%(,MR),ST$(MR),H%(NH): I  NH:H%(I) : Iz I  MR:S%(,I) I:S%(,I) : IzMEM ():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 DATESr 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"tNS : 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 CHARACTERStNS : : S": "H$(S)" = ";: "";Q$tL (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)Yh"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$)  bL : 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 Y9PP :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 ) )Wb 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" >6h (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";MN : "WHICH ";S$:S (S$)mX 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"lj f:L (L$): L  L  L  jl (L$)  : H$(S);: " = ",Q$1q : (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 qkv J  NR:S%(,J) : S  ST$(J) (J)tx Jӆ{ CLS$;CH$; : ); "SEARCHING LINE "S" OF ALL RECORDS":L : S  J :  (L$)  NS : : $ (L$)  : hNS : 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" ( E0 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 DISK3 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 FOLLOWS4 J  NR: S%(,J) NS JK5 NS J B : RECORD IN CORRECT DISK LOCATION6 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 SLOTB 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 S0 "ENTER TAB FOR TOTAL: ";A$: (A$)  K() : N D K(I ) (A$): K(I )  K(I )  "": MCU$;: 0 N NH  1S 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 REPORTQX K()  T9 : b zY 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 CHRU td bn : "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 7n S  J  NR:ST$(J) (J): J: : J : sp 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) 6u 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$;: ZF 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: Up 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$; : 2P NH ( -)ZMF : 1d ynNN : 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 Vxz 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$; : ANN 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 JJ . 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": ^MJN$(K,) (J): I  NH: H%(I)  #,(S%(,J) ) NH I : #,N$(K,I)VO ImT 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 SECTIONJ ¸ 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  NR0 #,R$(J): J: #: FF : !X nbNR NN:F$ ".RFN": I  NR:R$(I) RN$(I): I: :NR NS:  J  NR:S%(,J) : J: LIST ALL RECORDSJ :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 ERRORF 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 FORMERz 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  : 132 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