home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib02.dsk / PIP.bas < prev    next >
BASIC Source File  |  2023-02-26  |  18KB  |  201 lines

  1. 3  REM  *************************
  2. 4  REM  ** PERSONAL INVTY PROG **
  3. 5  REM  **  BY RICK CONNOLLY   **
  4. 6  REM  ** COPYRIGHT (C) 1980  **
  5. 7  REM  ** BY MICRO-SPARC INC. **
  6. 8  REM  ** LINCOLN, MASS 01773 **
  7. 9  REM  *************************
  8. 10  SPEED= 255: NORMAL : NOTRACE : TEXT : HOME : GOTO 3200
  9. 20  FOR I = 1 TO G:U%(I) = I: NEXT :M = G: REM  BEGIN SHELL - METZNER SORT OF MAIN ARRAY I$()
  10. 30 M =  INT(M/2): IF M = 0  THEN 110
  11. 40 L = 1:K = G -M
  12. 50 I = L
  13. 60 J = I +M: IF I$(I) <I$(J)  THEN 90
  14. 70 T$ = I$(I):I$(I) = I$(J):I$(J) = T$:T = U%(I):U%(I) = U%(J):U%(J) = T:I = I -M: IF I <1  THEN 90
  15. 80  GOTO 60
  16. 90 L = L +1: IF L >K  THEN 30
  17. 100  GOTO 50
  18. 110  FOR I = 1 TO G -1:M = U%(I): IF M >I  THEN 160: REM  ALIGN SUBSIDIARY ARRAYS TO NEW I$() ORDER
  19. 120  IF M = 1  THEN 180
  20. 130 M = U%(M): IF M >I  THEN 160
  21. 140  IF M = I  THEN 180
  22. 150  GOTO 130
  23. 160 T$ = S$(M):S$(M) = S$(I):S$(I) = T$:T = DA%(M):DA%(M) = DA%(I):DA%(I) = T:T = CO(M):CO(M) = CO(I):CO(I) = T:T = CA%(M):CA%(M) = CA%(I):CA%(I) = T:T = CV(M):CV(M) = CV(I):CV(I) = T
  24. 170 T = RC(M):RC(M) = RC(I):RC(I) = T:T$ = C$(I):C$(I) = C$(M):C$(M) = T$
  25. 180  NEXT 
  26. 190 J = 1: FOR I = 1 TO G: IF I$(I) < >I$(I +1)  THEN 260: REM  SERIAL NUMBER SORT
  27. 200 J = J +1: IF I$(I) = I$(I +J)  THEN 200
  28. 210 J = J -1: FOR K = I TO I +J: FOR L = K +1 TO I +J: IF L >I +J  THEN I = I +J:J = 1: GOTO 260
  29. 220  IF S$(K) < = S$(L)  THEN 250
  30. 230 T$ = I$(K):I$(K) = I$(L):I$(L) = T$:T$ = S$(K):S$(K) = S$(L):S$(L) = T$:T = DA%(K):DA%(K) = DA%(L):DA%(L) = T:T = CO(K):CO(K) = CO(L):CO(L) = T
  31. 240 T = CA%(K):CA%(K) = CA%(L):CA%(L) = T:T = CV(K):CV(K) = CV(L):CV(L) = T:T = RC(K):RC(K) = RC(L):RC(L) = T:T$ = C$(K):C$(K) = C$(L):C$(L) = T$
  32. 250  NEXT L,K:I = I +J:J = 1
  33. 260  NEXT I
  34. 280  VTAB 8: HTAB 16: PRINT  CHR$(7)" SORTED ": GOTO 3450
  35. 300 T$ = I$(N): IF  LEN(T$) < = TL -TI  THEN  HTAB TI: PRINT T$;: RETURN : REM  FORMAT FOR SCREEN (40 COL) AND PRINTER (40 OR 80 COL)
  36. 310 LN =  LEN(T$): FOR J = TL -TI TO 1  STEP  -1:BP$ =  MID$ (T$,J,1): IF BP$ = " "  OR BP$ = "-"  OR BP$ = "/"  OR BP$ = ","  THEN 330
  37. 320  NEXT J: HTAB TI: PRINT  LEFT$(T$,TL -TI -1);: PRINT "-";:J = TL -TI -1: GOTO 340
  38. 330  HTAB TI: PRINT  LEFT$(T$,J);: IF LN < = TL -TI  THEN  RETURN 
  39. 340  PRINT :TI = TI +2: IF CH = 6  OR CH = 8  THEN TI = 5:TL = 40: IF W = 8  THEN TL = 80
  40. 350 D$ =  RIGHT$(T$,LN -J)
  41. 360  IF  LEFT$(D$,1) = " "  THEN LN =  LEN(D$) -1:D$ =  RIGHT$(D$,LN): GOTO 360
  42. 370 LN =  LEN(D$): FOR J = TL -TI TO 1  STEP  -1:BP$ =  MID$ (D$,J,1): IF BP$ = " "  OR BP$ = ","  OR BP$ = "/"  OR BP$ = "-"  OR LN < = TL -TI  THEN 390
  43. 380  NEXT J: HTAB TI: PRINT  LEFT$(D$,TL -TI -1);: PRINT "-";:J = TL -TI -1:LN =  LEN(D$): GOTO 400
  44. 390  HTAB TI: PRINT  LEFT$(D$,J);:
  45. 400  IF LN < = TL -TI  THEN  RETURN 
  46. 410  PRINT :D$ =  RIGHT$(D$,LN -J): GOTO 360
  47. 800  HOME : VTAB 4: HTAB 15: INVERSE : PRINT "CATEGORIES": NORMAL : VTAB 8
  48. 810  FOR I = 1 TO 9: PRINT I;: HTAB 5: PRINT CA$(I): NEXT 
  49. 820  VTAB 21: HTAB 7: PRINT "PLEASE SELECT THE CATEGORY ";: POKE  -16368,0: GET Z$: PRINT Z$:TI = 1:TL = 20:Z =  VAL(Z$): IF Z <1  THEN 820
  50. 830  HOME : HTAB 20 -( LEN(CA$(Z))/2): PRINT CA$(Z): PRINT : PRINT "                    ACQ     CURR   REPL": PRINT "       ITEM         COST    VAL    COST": PRINT 
  51. 840 C = 0:CV = 0:RC = 0
  52. 850 K = 5: POKE 34,5: FOR N = 1 TO G: IF CA%(N) < >Z  THEN 890
  53. 860 TI = 1:K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q =  INT(CO(N)): GOSUB 920: HTAB 24 -D: PRINT Q;
  54. 870 Q =  ABS(CV(N)): GOSUB 920: HTAB 32 -D: PRINT Q;:Q =  ABS(RC(N)): GOSUB 920: HTAB 39 -D: PRINT Q
  55. 880 C = C +(CO(N)):CV = CV + ABS(CV(N)):RC = RC + ABS(RC(N)): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 5
  56. 890  NEXT : POKE 34,0: IF  PEEK(37) >19  THEN  HOME : VTAB 10: PRINT "CATEGORY ";CA$(Z): PRINT 
  57. 900  PRINT : PRINT "TOTAL ACQUISITION COST:";:Q = C: GOSUB 920: HTAB 35 -D: PRINT Q: PRINT "TOTAL CURRENT VALUE:";:Q = CV: GOSUB 920: HTAB 35 -D: PRINT Q
  58. 910  PRINT "TOTAL REPLACEMENT COST:";:Q = RC: GOSUB 920: HTAB 35 -D: PRINT Q: GOSUB 3260: GOTO 3800
  59. 920 Q =  INT(Q +.5):D = (Q > = 10) +(Q > = 100) +(Q > = 1000) +(Q > = 10000) +(Q > = 100000): RETURN 
  60. 1000  HOME : HTAB 6: PRINT "LISTING BY ACQUISITION COST": PRINT : PRINT "            ITEM                  COST": POKE 34,4: PRINT 
  61. 1010 T = 0:K = 4:TX = 0:TI = 1:TL = 30:QH = HQ: FOR I = 1 TO G: FOR N = 1 TO G: IF CO(N) <QH  THEN 1050
  62. 1020  IF CS%(N)  THEN 1060
  63. 1030 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q = CO(N): GOSUB 920: HTAB 38 -D: PRINT Q:T = T +CO(N): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  64. 1040 TI = 1:TL = 30:CS%(N) = 1: GOTO 1060
  65. 1050  IF CO(N) >TX  THEN TX = CO(N)
  66. 1060  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT :I = G +1:N = G +1
  67. 1070  NEXT I: PRINT : PRINT "TOTAL ACQUISITION COST IS $"; INT(T +.5): GOSUB 3260: POKE 34,0: GOTO 3800
  68. 1200  HOME : HTAB 6: PRINT "LISTING BY REPLACEMENT COST": PRINT : PRINT "            ITEM                  COST": POKE 34,4: PRINT 
  69. 1210 T = 0:K = 4:TX = 0:TI = 1:TL = 30:QH = HR: FOR I = 1 TO G: FOR N = 1 TO G: IF  ABS(RC(N)) <QH  THEN 1250
  70. 1220  IF CS%(N)  THEN 1260
  71. 1230 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q =  ABS(RC(N)): GOSUB 920: HTAB 38 -D: PRINT Q:T = T + ABS(RC(N)): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  72. 1240 TI = 1:TL = 30:CS%(N) = 1: GOTO 1260
  73. 1250  IF  ABS(RC(N)) >TX  THEN TX =  ABS(RC(N))
  74. 1260  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT :I = G +1:N = G +1
  75. 1270  NEXT I: PRINT : PRINT "TOTAL REPLACEMENT COST IS $"; INT(T +.5): GOSUB 3260: POKE 34,0: GOTO 3800
  76. 1400  HOME : HTAB 8: PRINT "LISTING BY CURRENT VALUE": PRINT : PRINT "            ITEM                  COST": POKE 34,4: PRINT 
  77. 1410 T = 0:K = 4:TX = 0:TI = 1:TL = 30:QH = HV: FOR I = 1 TO G: FOR N = 1 TO G: IF  ABS(CV(N)) <QH  THEN 1450
  78. 1420  IF CS%(N)  THEN 1460
  79. 1430 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1:Q =  ABS(CV(N)): GOSUB 920: HTAB 38 -D: PRINT Q:T = T + ABS(CV(N)): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  80. 1440 TI = 1:TL = 30:CS%(N) = 1: GOTO 1460
  81. 1450  IF  ABS(CV(N)) >TX  THEN TX =  ABS(CV(N))
  82. 1460  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT :I = G +1:N = G +1
  83. 1470  NEXT I: PRINT : PRINT "TOTAL CURRENT VALUE IS $"; INT(T +.5): GOSUB 3260: POKE 34,0: GOTO 3800
  84. 1600  HOME : HTAB 5: PRINT "LISTING BY YEAR OF ACQUISITION": PRINT : PRINT "            ITEM                  YEAR": POKE 34,4: PRINT 
  85. 1610 K = 4:TX = 0:TI = 1:TL = 30:QH = HY: FOR I = 1 TO G: FOR N = 1 TO G: IF DA%(N) <QH  THEN 1650
  86. 1620  IF CS%(N)  THEN 1660
  87. 1630 K2 = K: GOSUB 300:K3 =  PEEK(37): VTAB K2 +1: HTAB 35: PRINT DA%(N): POKE 37,K3: PRINT :K =  PEEK(37): IF K > = 20  THEN  GOSUB 3260: HOME :K = 4
  88. 1640 TI = 1:TL = 30:CS%(N) = 1: GOTO 1660
  89. 1650  IF DA%(N) >TX  THEN TX = DA%(N)
  90. 1660  NEXT N:QH = TX:TX = 0: FOR Q3 = 1 TO G: IF CS%(Q3)  THEN  NEXT : GOSUB 3260: POKE 34,0: GOTO 3800
  91. 1670  NEXT I: PRINT : PRINT : GOSUB 3260: POKE 34,0: GOTO 3800
  92. 1800  HOME : PRINT : PRINT "PLEASE ENTER THE KEYWORD.  ENTER " CHR$(34)"F" CHR$(34): PRINT "FIRST IF YOU WANT THE FIRST MATCHING": PRINT "KEYWORD TO LIST.  PRESS RETURN FOR MENU"
  93. 1810  INPUT K$:LO =  LEN(K$): IF K$ = ""  THEN 3800
  94. 1820 FL = 0: IF K$ < >"F"  THEN 1850
  95. 1830  PRINT : INPUT "ENTER THE KEYWORD: ";K$:LO =  LEN(K$): IF K$ = ""  THEN 3800
  96. 1840 FL = 1
  97. 1850  FOR I = 1 TO G:CS%(I) = 0: NEXT :TQ = 1: FOR I = 1 TO G: IF  LEFT$(I$(I),LO) = K$  THEN CS%(TQ) = I:TQ = TQ +1
  98. 1860  IF FL  AND CS%(1)  THEN TQ = 2:I = G
  99. 1870  NEXT I: IF TQ = 2  THEN N = CS%(1): GOTO 1920
  100. 1880  IF TQ = 1  THEN  PRINT : PRINT  CHR$(7)"KEYWORD NOT FOUND.  TRY AGAIN.": GOTO 1810
  101. 1890  POKE 34,0: HOME :Z$ = K$ +" WAS FOUND IN:": HTAB 20 -( LEN(Z$)/2): PRINT Z$: PRINT : PRINT "CODE         ITEM//SERIAL NUMBER": POKE 34,4: PRINT 
  102. 1900 TI = 5:TL = 40: FOR I = 1 TO TQ -1:I$(0) = I$(CS%(I)) +"//" +S$(CS%(I)):N = 0: PRINT CS%(I);: GOSUB 300: PRINT "": IF  PEEK(37) > = 21  THEN  GOSUB 3260: HOME 
  103. 1910  NEXT : PRINT : INPUT "SELECT YOUR CHOICE BY CODE NO. ";Z$: POKE 34,0:N =  VAL(Z$): IF N <1  OR N >G  THEN 3800
  104. 1920  POKE 34,0: HOME :TI = 7:TL = 39: PRINT "ITEM: ";: GOSUB 300: PRINT : PRINT : PRINT "SERIAL NUMBER: ";S$(N);: IF S$(N) = ""  THEN  PRINT "NONE";
  105. 1930  PRINT : PRINT : PRINT "YEAR ACQUIRED: ";DA%(N): PRINT : PRINT "ACQUISITION COST: $"; INT(CO(N) +.5): PRINT : PRINT "CURRENT VALUE: $"; ABS( INT(CV(N) +.5));: IF CV(N) <0  THEN  PRINT " *";
  106. 1940  PRINT : PRINT : PRINT "REPLACEMENT COST: $" ABS( INT(RC(N) +.5));: IF RC(N) <0  THEN  PRINT " #";
  107. 1950  PRINT : PRINT : PRINT "COMMENTS: ";: IF C$(N) = ""  THEN  PRINT "NONE": GOTO 1970
  108. 1960 TI = 11:TL = 40:Z$ = I$(N):I$(N) = C$(N): GOSUB 300: PRINT "":I$(N) = Z$
  109. 1970  PRINT : IF CV(N) <0  THEN  PRINT "* CURRENT VALUE AT "(DL *100)"% DEPRECIATION."
  110. 1980  IF RC(N) <0  THEN  PRINT "# REPLACEMENT COST AT "(IL *100)"% INFLATION."
  111. 1990  PRINT : PRINT "ITEM AT DATA STATEMENT "3990 +10 *U%(N): GOSUB 3260: GOTO 3800
  112. 2200  HOME : VTAB 2: HTAB 13: PRINT "CURRENT STATUS": PRINT : PRINT : PRINT "  CATEGORY         ACQ     REP     CURR                    COST    COST    VAL": PRINT 
  113. 2210 C1 = 0:R1 = 0:V1 = 0: FOR I = 1 TO 9: PRINT CA$(I);:C = 0:CV = 0:RC = 0: FOR J = 1 TO G: IF CA%(J) = I  THEN C = C +CO(J):CV = CV + ABS(CV(J)):RC = RC + ABS(RC(J))
  114. 2220  NEXT 
  115. 2230 C1 = C1 +C:R1 = R1 +RC:V1 = V1 +CV
  116. 2240 Q = C: GOSUB 920: HTAB 23 -D: PRINT Q;:Q = RC: GOSUB 920: HTAB 31 -D: PRINT Q;:Q = CV: GOSUB 920: HTAB 39 -D: PRINT Q: NEXT 
  117. 2250  PRINT : PRINT : PRINT "GRAND TOTAL";:Q = C1: GOSUB 920: HTAB 23 -D: PRINT Q;:Q = R1: GOSUB 920: HTAB 31 -D: PRINT Q;:Q = V1: GOSUB 920: HTAB 39 -D: PRINT Q: GOSUB 3260: GOTO 3800
  118. 2400  HOME : PRINT "  THIS OPTION REQUIRES A 40 OR 80 COLUMNPRINTER.  TO PRINT, PRESS 'P'.  IF YOU  DO NOT WANT TO PRINT, PRESS 'R' TO RE-"
  119. 2410  PRINT "TURN TO THE MENU, OR PRESS 'S' TO LIST  ON THE SCREEN.  PRESSING 'P' WITHOUT A  PRINTER TURNED ON AT PR#1 WILL CAUSE"
  120. 2420  PRINT "THE PROGRAM TO HANG.  PLEASE ENTER YOUR CHOICE: ";: POKE  -16368,0: GET Z$: PRINT Z$: IF Z$ < >"S"  AND Z$ < >"P"  THEN 3800
  121. 2430  IF Z$ = "S"  THEN  SPEED= 175:W = 40: GOTO 2500
  122. 2440  PRINT : PRINT "PLEASE ENTER THE PRINTING WIDTH (40 OR": INPUT "80 COLUMN) ";W: PRINT : IF W < >40  AND W < >80  THEN 2440
  123. 2450  PRINT "ENTER THE MONTH AS JANUARY, FEBRUARY,": INPUT "MARCH, ETC ";M$
  124. 2460  PRINT : INPUT "ENTER TODAY'S DATE ";D$
  125. 2470  HOME : PR# 1: FOR I = 1 TO 8: PRINT : NEXT : GOTO 2480
  126. 2480  HTAB (9 +((W -40)/2)): PRINT "PROPERTY INVENTORY OF": PRINT :TL = (W - LEN(ME$))/2: HTAB TL: PRINT ME$: PRINT :Z$ = "CURRENT AS OF " +M$ +" " +D$ +", " + STR$(Y%):TL = (W - LEN(Z$))/2
  127. 2490  HTAB TL: PRINT Z$: PRINT : PRINT : PRINT 
  128. 2500  HOME : FOR I = 1 TO 6:CS(I) = 0: NEXT : FOR I = 1 TO 9
  129. 2510  PRINT : PRINT : PRINT :TL = (W - LEN(CA$(I)))/2: FOR K = 1 TO TL -1: PRINT "*";: NEXT : PRINT CA$(I);: FOR L = K + LEN(CA$(I)) TO W: PRINT "*";: NEXT : PRINT : PRINT : PRINT 
  130. 2520  FOR N = 1 TO G: IF CA%(N) < >I  THEN 2590
  131. 2530 TI = 1:TL = W -1: GOSUB 300: PRINT : PRINT "  SERIAL NUMBER: ";: PRINT S$(N);: IF S$(N) = ""  THEN  PRINT "NONE";
  132. 2540  PRINT : PRINT "  ACQUIRED: ";DA%(N): PRINT "  ACQUISITION COST: $";:Q = CO(N): GOSUB 920: HTAB 28 -D: PRINT Q
  133. 2550  PRINT "  CURRENT VALUE:    $";:Q =  ABS(CV(N)): GOSUB 920: HTAB 28 -D: PRINT Q;: IF CV(N) <0  THEN  PRINT " *";
  134. 2560  PRINT : PRINT "  REPLACEMENT COST: $";:Q =  ABS(RC(N)): GOSUB 920: HTAB 28 -D: PRINT Q;: IF RC(N) <0  THEN  PRINT " #";
  135. 2570  PRINT : PRINT "  COMMENTS: ";:TI = 13:TL = W -1:I$(0) = I$(N):I$(N) = C$(N): GOSUB 300:I$(N) = I$(0): IF C$(N) = ""  THEN  PRINT "NONE";
  136. 2580  PRINT : PRINT : PRINT :CS(1) = CS(1) +CO(N):CS(2) = CS(2) + ABS(CV(N)):CS(3) = CS(3) + ABS(RC(N))
  137. 2590  NEXT N: PRINT : PRINT : PRINT "* INDICATES CURRENT VALUE ESTIMATED AT ";: IF W = 40  THEN  PRINT 
  138. 2600  PRINT DL *100"% ANNUAL DEPRECIATION.": PRINT 
  139. 2610  PRINT "# INDICATES CURRENT REPLACEMENT COST ";: IF W = 40  THEN  PRINT 
  140. 2620  PRINT "ESTIMATED AT "IL *100"% ANNUAL INFLATION.": PRINT : PRINT : PRINT 
  141. 2630  PRINT : PRINT : PRINT "FOR THE CATEGORY "; CHR$(34);CA$(I); CHR$(34);":": PRINT 
  142. 2640  PRINT "TOTAL ACQUISITION COST: $";:Q = CS(1): GOSUB 920: HTAB 35 -D: PRINT Q
  143. 2650  PRINT "TOTAL CURRENT VALUE     $";:Q = CS(2): GOSUB 920: HTAB 35 -D: PRINT Q
  144. 2660  PRINT "TOTAL REPLACEMENT COST: $";:Q = CS(3): GOSUB 920: HTAB 35 -D: PRINT Q
  145. 2670  PRINT : PRINT : PRINT  CHR$(12):CS(4) = CS(4) +CS(1):CS(1) = 0:CS(5) = CS(5) +CS(2):CS(2) = 0:CS(6) = CS(6) +CS(3):CS(3) = 0: NEXT I: PRINT : PRINT : PRINT 
  146. 2680  FOR I = 1 TO W: PRINT "X";: NEXT : PRINT : PRINT : PRINT "GRAND TOTAL ACQUISITION COST: $";:Q = CS(4): GOSUB 920: HTAB 40 -D: PRINT Q
  147. 2690  PRINT "GRAND TOTAL CURRENT VALUE:    $";:Q = CS(5): GOSUB 920: HTAB 40 -D: PRINT Q: PRINT "GRAND TOTAL REPLACEMENT COST: $";:Q = CS(6): GOSUB 920: HTAB 40 -D: PRINT Q
  148. 2700  PRINT : PRINT : PRINT "  THE INFORMATION CONTAINED IN THIS ";: IF W = 40  THEN  PRINT 
  149. 2710  PRINT "DOCUMENT IS A TRUE REPRESENTATION OF MY": PRINT "PERSONAL PROPERTY.  THE DATES OF ";: IF W = 40  THEN  PRINT 
  150. 2720  PRINT "ACQUISITION AND THE ORIGINAL VALUES ARE": PRINT "AS ACCURATE AS POSSIBLE."
  151. 2730  PRINT : PRINT : PRINT : HTAB W -20: PRINT "SIGNED": PRINT : PRINT : PRINT : PRINT : PRINT :L = W -1 - LEN(ME$): IF L >(W -1)/2  THEN L =  INT((W -1)/2)
  152. 2740  HTAB L: PRINT ME$: PRINT : PRINT : PRINT : FOR I = 1 TO W: PRINT "X";: NEXT : FOR I = 1 TO 6: PRINT : NEXT : PRINT  CHR$(12): PRINT  CHR$(12): PR# 0: SPEED= 255: GOTO 3800
  153. 2750  REM  CHR$(12) IS A FORM FEED ON SOME PRINTERS
  154. 3000  TEXT : HOME : VTAB 9: FLASH : PRINT "<<<CAUTION--END PROGRAM OPTION CALLED>>>": NORMAL : VTAB 11: PRINT " PRESS 'E' TO END AND 'C' TO CONTINUE ";: POKE  -16368,0: GET Z$: PRINT Z$: IF Z$ < >"E"  THEN 3800
  155. 3010  HOME : GOSUB 3310: PRINT : PRINT "  CHANGE STATEMENT 3310 SO THAT THE     FIRST LIST NUMBER AGREES WITH THE LAST  DATA STATEMENT NUMBER.  STATEMENT 3290"
  156. 3020  PRINT "MAY BE REDUCED, BUT D MUST NOT BE LESS  THAN THE NUMBER OF ENTRIES (NOW ";G;")."
  157. 3030  PRINT : INVERSE : PRINT "IF YOU CHANGED OR ADDED DATA, ";: FLASH : PRINT "SAVE!": NORMAL : POKE 32,1: LIST 3310: POKE 37, PEEK(37) -1: LIST 3290: POKE 32,0: POKE 37, PEEK(37) -5: END 
  158. 3200  FOR I = 1 TO 9: READ CA$(I): NEXT : DATA  PHOTOGRAPHIC,ELECTRONIC,ANTIQUES,JEWELRY,FURNITURE,CLOTHING,HOUSEHOLD,AUTOMOTIVE,MISCELLANEOUS
  159. 3210  HOME : VTAB 10: HTAB 2: PRINT "PERSONAL INVENTORY CONTROL PROGRAM": VTAB 12: HTAB 9: PRINT "COPYRIGHT (C) 1980 BY"
  160. 3220  VTAB 14: HTAB 8: PRINT "MAURICE R. CONNOLLY JR.": VTAB 16: HTAB 10: PRINT "ALL RIGHTS RESERVED": FOR I = 1 TO 2500: NEXT 
  161. 3230  HOME : PRINT : PRINT : PRINT "DO YOU HAVE NEW DATA TO ENTER? ";: POKE  -16368,0: GET Z$: PRINT Z$: IF Z$ = "N"  THEN 3270
  162. 3240  HOME : GOSUB 3310: PRINT "DATA ENTRY FORMAT IS:": PRINT : PRINT "ITEM,SERIAL,DATE ACQ,COST,CATEGORY,CUR  VAL,REPL COST,COMMENT"
  163. 3250  PRINT : PRINT "NUMBER YOUR NEXT DATA STATEMENT TEN A-  BOVE THE LAST ONE ABOVE.  DON'T FORGET  QUOTATION MARKS!": END 
  164. 3260  POKE  -16368,0: VTAB 24: PRINT "       PRESS ANY KEY TO CONTINUE ";: GET Z$: PRINT Z$: RETURN 
  165. 3270  PRINT : INPUT "PLEASE ENTER THE YEAR ";Y%:IL = .1:DL = .1: IF Y% <1000  THEN Y% = Y% +1900
  166. 3280 ME$ = "YOUR NAME GOES HERE"
  167. 3290 D = 150
  168. 3300 D = D +1: GOTO 3330
  169. 3310  LIST 4000,9999
  170. 3320  RETURN 
  171. 3330  DIM I$(D),S$(D),DA%(D),CO(D),CA%(D),CV(D),RC(D),C$(D),U%(D),CS%(D)
  172. 3340  PRINT : PRINT "IS  A 10% APPRECIATION/DEPRECIATION RATEO.K.? ";: POKE  -16368,0: GET Z$: PRINT Z$: IF Z$ = "Y"  THEN 3360
  173. 3350  PRINT : PRINT "PLEASE ENTER RATES AS PERCENTAGES,      E.G. 8, 8.5, 9,ETC.": PRINT : INPUT "APPRECIATION RATE? ";IL: PRINT : INPUT "DEPRECIATION RATE? ";DL: PRINT :IL = IL *.01:DL = DL *.01
  174. 3360  HOME : VTAB 4: PRINT "I WILL NOW READ THE DATA.  ";:HQ = 0:HR = 0:HV = 0:HY = 0: FOR I = 1 TO D -1: READ I$(I): IF I$(I) = "DONE"  THEN 3380
  175. 3370  READ S$(I),DA%(I),CO(I),CA%(I),CV(I),RC(I),C$(I): NEXT 
  176. 3380 G = I -1: PRINT "THERE ARE": PRINT G;" ITEMS ON FILE.": PRINT : READ I$(D): IF G <D -1  OR G = D -1  AND I$(D) = "DONE"  THEN 3430
  177. 3390  PRINT  CHR$(7); CHR$(7)"CORRECTION.  THERE ARE MORE THAN ";G: PRINT "DATA ITEMS, BUT I AM ONLY DIMENSIONED   TO STORE ";G;" OF THEM.  IF I CONTINUE,": PRINT "I WIL HAVE TO IGNORE THE REST."
  178. 3400  PRINT "SHOULD I CONTINUE? ";: GET Z$: PRINT Z$: IF Z$ = "Y"  THEN 3430
  179. 3410  HOME : GOSUB 3310: PRINT "  I CAN STORE "D -1" ITEMS.  THE LAST": PRINT "ONE SUCCESSFULLY STORED WAS:": PRINT  CHR$(34)I$(G) CHR$(34): PRINT "THE ONE I COULD NOT STORE WAS:": PRINT  CHR$(34)I$(D) CHR$(34)
  180. 3420  PRINT "PLEASE ADJUST STATEMENT 3290 FOR ME, SO I CAN READ AND STORE ALL THE DATA.": LIST 3290: END 
  181. 3430 I$(D) = "": VTAB 7: HTAB 1: FOR I = 1 TO 200: PRINT " ";: NEXT : PRINT : FOR I = 1 TO G: IF DA%(I) <1000  THEN DA%(I) = DA%(I) +1900
  182. 3440 : NEXT : FLASH : VTAB 8: HTAB 16: PRINT "SORTING": NORMAL : GOTO 20
  183. 3450  PRINT : PRINT : PRINT "I AM NOW COMPUTING CURRENT VALUE AND    CURRENT REPLACEMENT COSTS WHERE YOU     HAVE NOT SPECIFIED THEM.":J = 1 -DL:K = 1 +IL:N1 = 1:N2 = G: GOSUB 3460: GOTO 3800
  184. 3460  FOR I = N1 TO N2:Y1 = Y% -DA%(I): IF CV(I) >0  THEN 3490
  185. 3470  IF Y1 = 0  THEN CV(I) = CO(I) * -1: GOTO 3490
  186. 3480 CV(I) = CO(I) *J ^Y1 * -1
  187. 3490  IF RC(I) >0  THEN 3520
  188. 3500  IF Y1 = 0  THEN RC(I) = CO(I) * -1: GOTO 3520
  189. 3510 RC(I) = CO(I) *K ^Y1 * -1
  190. 3520  NEXT 
  191. 3530  FOR I = 1 TO G: IF CO(I) >HQ  THEN HQ = CO(I)
  192. 3540  IF  ABS(RC(I)) >HR  THEN HR =  ABS(RC(I))
  193. 3550  IF  ABS(CV(I)) >HV  THEN HV =  ABS(CV(I))
  194. 3560  IF DA%(I) >HY  THEN HY = DA%(I)
  195. 3570  NEXT :RC = 0: RETURN 
  196. 3800  HOME : VTAB 4: INVERSE : HTAB 16: PRINT "OPTIONS": NORMAL : VTAB 8: FOR I = 1 TO G:CS%(I) = 0: NEXT : PRINT "1.  LIST ALPHABETICALLY BY CATEGORY"
  197. 3810  PRINT "2.  LIST BY DECREASING ACQUISITION COST": PRINT "3.  LIST BY DECREASING REPLACEMENT COST": PRINT "4.  LIST BY DECREASING CURRENT VALUE"
  198. 3820  PRINT "5.  LIST BY YEAR OF PURCHASE": PRINT "6.  DISPLAY FULL DATA ON ANY ITEM": PRINT "7.  DISPLAY CURRENT STATUS": PRINT "8.  PRINT CURRENT STATUS": PRINT "9.  ";: FLASH : PRINT "EXIT": NORMAL 
  199. 3830  VTAB 21: HTAB 7: PRINT "PLEASE SELECT YOUR OPTION ";: POKE  -16368,0: GET Z$: PRINT Z$:CH =  VAL(Z$): IF CH <1  THEN 3830
  200. 3840  ON CH GOTO 800,1000,1200,1400,1600,1800,2200,2400,3000
  201. 10000  DATA  DONE,DONE