home *** CD-ROM | disk | FTP | other *** search
Wrap
1 REM ********************** 2 REM * INVEST * 3 REM * DI ROBERT DOELLING * 4 REM * (C)1986 EDITRONICA * 5 REM * E MICROSPARC * 6 REM ********************** 10 GOTO 5270 20 REM * SUBROUTINES * 30 CV = PEEK(37) 40 VTAB CV +1: PRINT : CALL -958: HTAB 10: INPUT "DATI OK? (S/N)";Q$ 50 IF Q$ = "S" OR Q$ = "N" THEN RETURN 60 PRINT B$: GOTO 40 70 VTAB 22: PRINT "PREMI <RETURN> PER CONTINUARE ";: GET Q$: RETURN 80 VTAB 20: PRINT "PREMI";: HTAB 8: INVERSE : PRINT "RETURN";: NORMAL : PRINT " SE I DATI SONO ESATTI" 90 HTAB 8: INVERSE : PRINT "ESC ";: NORMAL : PRINT " PER IL MENU' PRINCIPALE" 100 HTAB 8: INVERSE : PRINT "<- ";: NORMAL : PRINT " PER RISCRIVERE I DATI": RETURN 110 REM * ROUTINE D'IMMISSIONE DELLA DATA * 120 VTAB 16: HTAB 30: INVERSE : PRINT "00";: NORMAL : PRINT "/00/00";: CALL -958 130 PRINT : PRINT : HTAB 4: INPUT "SCRIVI IL GIORNO (1-31) ";Q$ 140 X = INT( VAL(Q$)): IF X <1 OR X >31 THEN PRINT B$: GOTO 120 150 VTAB 16: HTAB 30: PRINT X;"/";Y;"/";: INVERSE : PRINT "00";: NORMAL : CALL -958 160 PRINT : PRINT : HTAB 4: INPUT "SCRIVI IL MESE (1-12) ";Q$ 170 Y = INT( VAL(Q$)): IF Y <1 OR Y >12 THEN PRINT B$: GOTO 150 180 VTAB 16: HTAB 30: PRINT X;"/";Y;"/";: INVERSE : PRINT "00";: NORMAL : CALL -958 190 PRINT : PRINT : INPUT "SCRIVI ULTIME DUE CIFRE ANNO (ES.86) ";Q$ 200 Z = INT( VAL(Q$)): IF Z >99 THEN PRINT B$: GOTO 180 210 Z$ = Q$: IF Z <10 THEN Z$ = "0" + RIGHT$(Z$,1) 220 V$ = STR$(X) +"/" + STR$(Y) +"/" +Z$ 230 VTAB 16: HTAB 30: PRINT V$ 240 GOSUB 30: IF Q$ = "N" THEN 120 250 V = INT((365 *Z +30 *Y +X) +.5) 260 RETURN 270 REM * ROUTINE FORMATTAZIONE $ * 280 IF X <0 THEN X = -X:W$ = "-":AF = 1 300 X$ = STR$(X) 320 IF LEN(X$) >9 THEN Z$ = LEFT$(X$,1) +"." + MID$ (X$,2,3) +"." + MID$ (X$,5,3) + RIGHT$(V$,3): GOTO 370 330 IF LEN(X$) >6 THEN Z$ = LEFT$(X$, LEN(X$) -6) +"." + MID$ (X$, LEN(X$) -5,3) +"." + RIGHT$(X$,3): GOTO 370 340 IF LEN(X$) >3 THEN Z$ = LEFT$(X$, LEN(X$) -3) +"." + RIGHT$(X$,3): GOTO 370 360 Z$ = X$ 370 IF AF THEN AF = 0:Z$ = "-" +Z$ 380 RETURN 390 REM * $ ROUTINE IMMISSIONE * 400 GOSUB 80 410 Z$ = " ":L = 9:V$ = "": REM 13 SPAZI 420 NORMAL : VTAB 18: HTAB 1: PRINT "SCRIVI QUI -> ";: INVERSE : PRINT Z$ 430 VTAB 18: HTAB 15 + LEN(Z$): GET Q$ 440 IF Q$ = CHR$(8) THEN 410 450 IF Q$ = CHR$(13) AND VAL(V$) = O THEN PRINT B$: GOTO 410 460 IF Q$ = CHR$(13) THEN X = VAL(V$): NORMAL : RETURN 470 IF Q$ = CHR$(27) THEN NORMAL : GOTO 1120 480 IF LEN(V$) = L THEN 570 490 IF ASC(Q$) <48 OR ASC(Q$) >57 THEN PRINT B$: GOTO 420 500 IF VAL(Q$) = 0 AND LEN(V$) = 0 THEN PRINT B$: GOTO 410 510 V$ = V$ +Q$ 520 IF LEN(V$) >9 THEN Z$ = LEFT$(V$,1) +"." + MID$ (V$,2,3) +"." + MID$ (V$,5,3) + RIGHT$(V$,3): GOTO 420 530 IF LEN(V$) >6 THEN X$ = LEFT$(V$, LEN(V$) -6) +"." + MID$ (V$, LEN(V$) -5,3) +"." + RIGHT$(V$,3): GOTO 560 540 IF LEN(V$) >3 THEN X$ = LEFT$(V$, LEN(V$) -3) +"." + RIGHT$(V$,3): GOTO 560 550 X$ = V$ 560 Z$ = LEFT$(Z$,( LEN(Z$) - LEN(X$))) +X$: GOTO 420 570 VTAB 18: HTAB 1: CALL -868: PRINT "E' LA LUNGHEZZA MASSIMA D'IMMISSIONE!": PRINT B$: FOR PS = 1 TO 1000: NEXT 580 VTAB 18: HTAB 1: CALL -868:Q$ = "": GOTO 420 590 REM * ROUTINE IMMISSIONE NOME DEL TITOLO * 600 GOSUB 80 610 VTAB 13: HTAB 1: PRINT "NON PUOI SCRIVERE PIU' DI 15 CARATTERI" 620 PRINT "NON INSERIRE SPAZI BIANCHI": PRINT "USA INVECE PUNTI PER SEPARARE LE PAROLE" 630 Z$ = " ":L = 15:V$ = "": REM 15 SPAZI 640 NORMAL : VTAB 18: HTAB 4: PRINT "SCRIVI QUI -> ";: INVERSE : PRINT Z$ 650 VTAB 18: HTAB 33: GET Q$ 660 IF Q$ = CHR$(8) THEN 630 670 IF Q$ = CHR$(13) AND V$ = "" THEN PRINT B$: GOTO 630 680 IF Q$ = CHR$(13) THEN NORMAL : GOTO 770 690 IF Q$ = CHR$(27) THEN 1120 700 IF (Q$ <"0" AND Q$ < >".") OR (Q$ >"9" AND Q$ <"A") OR Q$ >"Z" OR (Q$ <"A" AND V$ = "") THEN PRINT B$: GOTO 640 710 IF LEN(V$) = L THEN NORMAL : GOTO 750 720 V$ = V$ +Q$ 730 IF LEN(V$) = L THEN Z$ = V$: GOTO 640 740 Z$ = LEFT$(Z$,( LEN(Z$) - LEN(V$))) +V$: GOTO 640 750 VTAB 18: HTAB 1: CALL -868: PRINT "E' LA LUNGHEZZA D'IMMISSIONE MASSIMA!": PRINT B$;: FOR PS = 1 TO 1000: NEXT 760 VTAB 18: HTAB 1: CALL -868:Q$ = "": GOTO 640 770 IF S = 0 THEN RETURN 780 FOR X = 1 TO S 790 IF V$ = ST$(X) THEN VTAB 13: HTAB 1: CALL -958: INVERSE : PRINT V$;" E' GIA' STATO IMMESSO": NORMAL : PRINT : GOSUB 70: VTAB 13: CALL -958: GOTO 600 800 NEXT X: RETURN 810 REM * IMMISSIONE VALORE DELL'INVESTIMENTO * 820 VTAB 16: HTAB 1: CALL -958: PRINT "DOVE VUOI SCRIVERE?: 830 PRINT " 1) PREZZO SINGOLO": PRINT " 2) PREZZO TOTALE" 840 VTAB 20: INPUT "FAI LA TUA SCELTA -> ";Q$ 850 Q = VAL(Q$) 860 IF Q <1 OR Q >2 THEN 840 870 IF Q = 1 AND AF = 1 THEN AF = 0: GOSUB 920 880 IF AF THEN AF = 0 890 VTAB 16: HTAB 1: CALL -958: IF Q = 1 THEN PRINT "SCRIVI IL PREZZO SINGOLO": GOTO 910 900 PRINT "SCRIVI IL PREZZO TOTALE" 910 GOSUB 400: RETURN 920 VTAB 16: HTAB 1: CALL -958: PRINT "SCRIVI IL NUMERO DEI TITOLI ACQUISTATI": PRINT "IN DATA ";ID$ 930 GOSUB 950:IS = X: RETURN 940 REM * IMMISSIONE VALORE PER QUANTITA' * 950 GOSUB 80 960 Z$ = "" 970 VTAB 18: HTAB 1: CALL -868: PRINT "SCRIVI QUI -> ";Z$;: GET Q$ 980 IF Q$ = CHR$(8) THEN Z$ = "": GOTO 970 990 IF Q$ = CHR$(27) THEN 1120 1000 IF Q$ = CHR$(13) AND VAL(Z$) = 0 THEN PRINT B$: GOTO 960 1010 IF Q$ = CHR$(13) THEN X = VAL(Z$): VTAB 16: HTAB 1: CALL -958: RETURN 1020 IF Q$ = CHR$(46) THEN Z$ = Z$ +Q$: GOTO 970 1030 IF ASC(Q$) <48 OR ASC(Q$) >57 THEN PRINT B$: GOTO 970 1040 Z$ = Z$ +Q$: GOTO 970 1050 HOME 1060 VTAB 3: HTAB 14: PRINT "INVEST" 1070 HTAB 10: PRINT "DI R.F.DOELLING" 1080 HTAB 2: PRINT "(C)1986 EDITRONICA E MICROSPARC" 1090 VTAB 16: PRINT "SCRIVI LA DATA DI OGGI" 1100 GOSUB 120:CD$ = V$:CD = V 1110 REM * MENU' PRINCIPALE * 1120 IF S = 0 THEN 5430 1130 IF S = 96 THEN GOSUB 5480 1140 HOME : HTAB 9: INVERSE : PRINT " MENU' PRINCIPALE ": HTAB 9: PRINT " LISTA INVESTIMENTI ": NORMAL 1150 GOSUB 1570: IF S <25 THEN 1170 1160 VTAB 17: HTAB 1: INVERSE : PRINT "L";: NORMAL : PRINT "ISTA SCHERMATA SEGUENTE" 1170 VTAB 18: HTAB 1: INVERSE : PRINT "A";: NORMAL : PRINT "GG.INVESTIMENTO";: HTAB 20: INVERSE : PRINT "D";: NORMAL : PRINT "EPENNA INVESTIMENTO" 1180 INVERSE : PRINT "T";: NORMAL : PRINT "ASSO DI REDDITO";: HTAB 20: INVERSE : PRINT "M";: NORMAL : PRINT "ODIFICA UNA VOCE" 1190 INVERSE : PRINT "I";: NORMAL : PRINT "MMETTI UTILE";: HTAB 20: INVERSE : PRINT "F";: NORMAL : PRINT "INE PROGRAMMA" 1200 VTAB 22: HTAB 1: PRINT "SCRIVI LA LETTERA CORRISPONDENTE": PRINT "ALL'OPZIONE SCELTA ";: GET Q$ 1210 IF Q$ = "F" AND CF = 1 THEN GOSUB 4770 1220 IF Q$ = "F" THEN HOME : VTAB 12: HTAB 1: INPUT "SEI CERTO DI VOLER FINIRE? (S/N)";YY$: IF YY$ = "S" THEN GOSUB 5700: HOME : VTAB 13: HTAB 12: PRINT "ARRIVEDERCI!!!": END 1230 IF (Q$ = "F") AND (YY$ < >"S") THEN GOTO 1120 1240 IF Q$ = "A" AND CF = 1 THEN GOSUB 4770 1250 IF Q$ = "A" THEN Q1 = 1: ON S <96 GOTO 2280: GOTO 1120 1260 IF Q$ = "D" THEN 1320 1270 IF Q$ = "I" THEN 1370 1280 IF Q$ = "T" THEN 1420 1290 IF Q$ = "M" THEN 1470 1300 IF Q$ = "L" THEN 1150 1310 PRINT B$: GOTO 1200 1320 VTAB 18: HTAB 1: CALL -958: PRINT "SCRIVI IL NUMERO DELLA VOCE" 1330 INPUT "CHE VUOI DEPENNARE -> ";Z$: IF Z$ = "L" THEN GOSUB 1570: GOTO 1320 1340 ZZ = VAL(Z$): GOSUB 1530: IF AF THEN 1320 1350 IF ZZ = I THEN 4460 1360 I = ZZ: GOSUB 4650: GOTO 4460 1370 VTAB 18: HTAB 1: CALL -958: PRINT "SCRIVI IL NUMERO DELL'INVESTIMENTO" 1380 INPUT "CHE DA' L'UTILE -> ";Z$: IF Z$ = "L" THEN GOSUB 1570: GOTO 1370 1390 ZZ = VAL(Z$): GOSUB 1530: IF AF THEN 1370 1400 IF ZZ = I THEN 2510 1410 GOSUB 4770:I = ZZ: GOSUB 4650: GOTO 2510 1420 VTAB 18: HTAB 1: CALL -958: PRINT "SCRIVI IL NUMERO DELL'INVESTIMENTO" 1430 INPUT "CHE VUOI ANALIZZARE -> ";Z$: IF Z$ = "L" THEN GOSUB 1570: GOTO 1420 1440 ZZ = VAL(Z$): GOSUB 1530: IF AF THEN 1420 1450 IF ZZ = I THEN GOSUB 3350: GOTO 1120 1460 GOSUB 4770:I = ZZ: GOSUB 4650: GOSUB 3350: GOTO 1120 1470 VTAB 18: HTAB 1: CALL -958: PRINT "SCRIVI IL NUMERO DELLA VOCE" 1480 INPUT "CHE VUOI MODIFICARE -> ";Z$: IF Z$ = "L" THEN GOSUB 1570: GOTO 1470 1490 ZZ = VAL(Z$): GOSUB 1530: IF AF THEN 1470 1500 IF ZZ = I THEN 1730 1510 GOSUB 4770:I = ZZ: GOSUB 4650: GOTO 1730 1520 REM * CONTROLLA INPUT * 1530 IF ZZ >0 AND ZZ = <S THEN AF = 0: RETURN 1540 INVERSE : PRINT "IMMISSIONE ERRATA": NORMAL : PRINT B$ 1550 AF = 1: GOSUB 70: RETURN 1560 REM * LISTA TITOLO * 1570 POKE 34,3: POKE 35,16: CALL -936 1580 IF L1 = 49 AND S >72 THEN L1 = 73:L2 = S: GOTO 1650 1590 IF L1 = 25 AND S >72 THEN L1 = 49:L2 = 72: GOTO 1650 1600 IF L1 = 25 AND S >48 THEN L1 = 49:L2 = S: GOTO 1650 1610 IF L1 = 1 AND S >48 THEN L1 = 25:L2 = 48: GOTO 1650 1620 IF L1 = 1 AND S >24 THEN L1 = 25:L2 = S: GOTO 1650 1630 L1 = 1: IF S >24 THEN L2 = 24: GOTO 1650 1640 L2 = S 1650 VTAB 4: HTAB 1: FOR X = L1 TO L2 STEP 2 1660 IF X >L2 THEN 1710 1670 HTAB (3 - LEN( STR$(X))): PRINT X;") ";ST$(X); 1680 IF X +1 >L2 THEN 1710 1690 HTAB (22 - LEN( STR$(X +1))): PRINT X +1;") ";ST$(X +1) 1700 NEXT 1710 POKE 34,0: POKE 35,24: RETURN 1720 REM * ROUTINE MODIFICA VOCE TITOLO * 1730 HOME : INVERSE : HTAB 3: PRINT "ROUTINE MODIFICA VOCE INVESTIMENTO" 1740 NORMAL : PRINT : HTAB 6: PRINT "INVESTIMENTO: ";ST$(I) 1750 X = PP: GOSUB 280:PP$ = Z$:X = IW: GOSUB 280:IW$ = Z$ 1760 VTAB 7 1770 PRINT M$;" DATA D'ACQUISTO"; TAB( 38 - LEN(PD$));PD$ 1780 PRINT M$;" BASE INVESTIMENTO"; TAB( 38 - LEN(PP$));PP$ 1790 PRINT M$;" N.TITOLI POSSEDUTI"; TAB( 38 - LEN( STR$(NS)));NS 1800 PRINT M$;" DATA BASE INT."; TAB( 38 - LEN(ID$));ID$ 1810 PRINT M$;" VALORE DATA INT."; TAB( 38 - LEN(IW$));IW$ 1820 PRINT M$;" TUTTE LE IMMISSIONI ESATTE-RETURN" 1830 VTAB 18: HTAB 1: CALL -958: PRINT "SELEZIONA CON LE FRECCE, POI PREMI": PRINT "<RETURN> PER SCEGLIERE L'OPZIONE." 1840 CV = 12: POKE -16368,0 1850 VTAB CV: HTAB 2: GET Q$ 1860 IF Q$ = CHR$(13) THEN 1920 1870 IF Q$ = CHR$(21) OR Q$ = CHR$(10) THEN CV = CV +1: IF CV >12 THEN CV = 7: GOTO 1850 1880 IF Q$ = CHR$(8) OR Q$ = CHR$(11) THEN CV = CV -1: IF CV <7 THEN CV = 12: GOTO 1850 1890 QW = ASC(Q$): IF NOT ((QW = 21) +(QW = 10) +(QW = 8) +(QW = 11)) THEN FOR TT = 1 TO 20:QW = PEEK( -16336): NEXT TT 1900 GOTO 1850 1910 REM * CF=CAMBIA FLAG * 1920 IF CV < >12 THEN CF = 1 1930 ON (CV -6) GOTO 1940,1970,2020,2040,2090,2140 1940 VTAB 16: HTAB 1: CALL -958: PRINT "NUOVA DATA DI ACQUISTO": GOSUB 120: GOSUB 2220: IF AF THEN AF = 0: GOTO 1940 1950 VTAB 16: HTAB 1: CALL -958 1960 PD$ = V$:PV = V: VTAB 7: HTAB 20: CALL -868: HTAB (38 - LEN(PD$)): PRINT PD$: GOTO 1830 1970 VTAB 15: HTAB 1: CALL -958: PRINT "SCRIVI PREZZO D'ACQUISTO + PROVVIGIONE" 1980 GOSUB 820: IF Q = 1 THEN PP = NS *X: GOTO 2000 1990 PP = X 2000 VTAB 14: HTAB 1: CALL -958:X = PP: GOSUB 280:PP$ = Z$ 2010 VTAB 8: HTAB 23: CALL -868: HTAB (38 - LEN(PP$)): PRINT PP$: GOTO 1830 2020 VTAB 16: HTAB 1: CALL -958: PRINT "CORREGGI IL NUMERO DEI TITOLI": GOSUB 950:NS = X 2030 VTAB 9: HTAB 23: CALL -868: HTAB (38 - LEN( STR$(NS))): PRINT NS: GOTO 1830 2040 VTAB 15: HTAB 1: CALL -958: PRINT "SCRIVI UNA DATA DI BASE INTERMEDIA" 2050 IF IV = 0 THEN PRINT "COMPRESA NELL'ANNO DECORSO": GOTO 2070 2060 PRINT "DA ";ID$;" A ";CD$ 2070 GOSUB 120: GOSUB 2170: IF AF THEN AF = 0: GOTO 2040 2080 ID$ = V$:IV = V:AF = 1: GOSUB 4770: IF IW < >0 THEN 1730 2090 VTAB 15: HTAB 1: CALL -958: IF IV = 0 THEN GOSUB 2240: VTAB 15: HTAB 1: CALL -958: GOTO 2040 2100 PRINT "VALORE DELL'INVESTIMENTO AL ";ID$:AF = 1: GOSUB 820 2110 VTAB 15: HTAB 1: CALL -958: IF Q = 1 THEN IW = X *IS: GOTO 2130 2120 IW = X 2130 X = IW: GOSUB 280:IW$ = Z$: GOTO 1730 2140 IF CF THEN CF = 0: GOSUB 5010: IF Q1 = 1 THEN GOSUB 5140:Q1 = 0 2150 GOTO 1120 2160 REM * CONTROLLA DATA INT. * 2170 VTAB 18: HTAB 1: CALL -958 2180 IF V < = PV THEN PRINT "LA DATA DEV'ESSERE SUCCESSIVA AL ";PD$: PRINT "DATA DI ACQUISTO":AF = 1: PRINT : GOSUB 70: RETURN 2190 IF V <IV THEN PRINT "LA DATA DEV'ESSERE SUCCESSIVA AL ";ID$: PRINT "DATA BASE ATTUALE":AF = 1: PRINT : GOSUB 70: RETURN 2200 IF CD -V >365 THEN PRINT "LA DATA RISALE A OLTRE UN ANNO PRIMA!":AF = 1: PRINT : GOSUB 70: RETURN 2210 VTAB 18: HTAB 1: CALL -958 2220 IF V >CD THEN PRINT : PRINT "LA DATA DEVE PRECEDERE QUELLA ODIERNA!":AF = 1: PRINT : GOSUB 70: RETURN 2230 AF = 0: RETURN 2240 PRINT "NON E' STATA IMMESSA UNA DATA INTERMEDIA" 2250 PRINT : PRINT "DEVI IMMETTERNE UNA PRIMA DI SCRIVERE ": PRINT "IL VALORE INTERMEDIO ";: PRINT "DEL TITOLO" 2260 GOSUB 70: RETURN 2270 REM * ROUTINE DI AGGIUNTA DI UN TITOLO * 2280 HOME : VTAB 5: HTAB 7: PRINT "NUOVA VOCE D'INVESTIMENTO": HTAB 7: PRINT "-------------------------": REM 25 TRATTINI 2290 VTAB 10: HTAB 7: PRINT "SCRIVI IL NOME DEL TITOLO" 2300 GOSUB 600:I = S +1:ST$(I) = V$ 2310 CH = 20 -.5 * LEN(ST$(I)) 2320 VTAB 7: HTAB CH: PRINT ST$(I) 2330 HTAB CH: FOR X = 1 TO LEN(ST$(I)): PRINT "-";: NEXT 2340 VTAB 10: HTAB 1: CALL -958: PRINT "SCRIVI LA DATA IN CUI E' STATO FATTO": PRINT "L'INVESTIMENTO" 2360 GOSUB 120: GOSUB 2220: IF AF THEN AF = 0: GOTO 2340 2370 PD$ = V$:PV = V 2380 VTAB 10: HTAB 1: CALL -958: PRINT "QUANTI TITOLI HAI ACQUISTATO?": GOSUB 940:NS = X 2390 VTAB 10: HTAB 1: CALL -958: PRINT "SCRIVI PREZZO D'ACQUISTO": PRINT "SPESE E PROVVIGIONI COMPRESE" 2400 GOSUB 820 2410 IF Q = 1 THEN PP = NS *X: GOTO 2430 2420 PP = X 2430 VTAB 10: HTAB 1: CALL -958: PRINT "VUOI SCRIVERE LA DATA IN CUI L'INVESTIMENTO PAGHERA' DIVIDENDI O INTERESSI? (S/N) -> ";: GET Q$ 2440 S = S +1: IF Q$ = "N" THEN ND$ = "": GOTO 2490 2450 IF Q$ < >"S" THEN 2430 2460 VTAB 10: HTAB 1: CALL -958: PRINT "SCRIVI LA DATA DEL PROSSIMO PAGAMENTO DIDIVIDENDO": GOSUB 120 2470 ND$ = V$ 2480 REM * Q1=ADD FLAG * 2490 IW = 0:IV = 0:ID$ = "NON IMMESSA":CF = 1:CF = 1:TI = 0:NI = 0:CG = 0:D = 0: GOTO 1730 2500 REM *IMMISSIONE DELL'UTILE * 2510 IF D = 0 THEN 2550 2520 FOR X = 1 TO D 2530 IF DT(X) = 1 THEN UU$ = "DA " +ST$(I) +" NELL'ANNO DECORSO": GOSUB 3230: GOTO 2580 2540 NEXT 2550 IF CD -PV >365 AND IV = 0 THEN UU$ = "DA " +ST$(I) +" NELL'ANNO DECORSO": GOSUB 3230: GOTO 2580 2560 IF IV = 0 THEN UU$ = "DA QUANDO " +ST$(I): GOSUB 3230: GOTO 2580 2570 UU$ = "DA " +ST$(I) +" DA QUANDO " +ID$: GOSUB 3230 2580 VTAB 19: HTAB 1: CALL -958: IF ND$ < >"" THEN 2650 2590 PRINT "NON C'E' ALCUNA DATA DI PAGAMENTO DI DIVIDENDO IMMESSA" 2600 INPUT "VUOI SCRIVERNE UNA? (S/N) -> ";Q$ 2610 IF Q$ = "N" THEN 2700 2620 IF Q$ < >"S" THEN PRINT B$: GOTO 2580 2630 VTAB 19: HTAB 1: CALL -958: PRINT "SCRIVI LA DATA DEL PROSSIMO PAGAMENTO" 2640 GOSUB 120:ND$ = V$:CF = 1: GOTO 2700 2650 VTAB 19: HTAB 1: CALL -958: PRINT "DATA DEL PROSS. PAG. DI DIV.: ";ND$: INPUT "VUOI CAMBIARLA? (S/N) ";Q$ 2660 IF Q$ = "N" THEN 2700 2670 IF Q$ < >"S" THEN PRINT B$: GOTO 2650 2680 VTAB 20: HTAB 1: CALL -958: PRINT "SCRIVI LA DATA DEL PROSSIMO PAGAMENTO" 2690 GOSUB 70: GOSUB 120:ND$ = V$:CF = 1 2700 VTAB 16: HTAB 1: CALL -958: IF D = 0 THEN PRINT "E' STATO PAGATO UN UTILE?": GOTO 2720 2710 PRINT "E' STATO PAGATO QUALCHE ALTRO UTILE?" 2720 INPUT " (S/N) -> ";Q$ 2730 IF Q$ = "N" THEN 1120 2740 IF Q$ < >"S" THEN PRINT B$: GOTO 2700 2750 VTAB 16: HTAB 1: CALL -958: PRINT "SCRIVI LA DATA DEL PAGAMENTO" 2760 GOSUB 120: GOSUB 2210 2770 IF AF THEN AF = 0: GOTO 2750 2780 DV = V:DD$ = V$ 2790 VTAB 16: HTAB 1: CALL -958: PRINT "SCRIVI L'IMPORTO PAGATO" 2800 GOSUB 400:DA = X 2810 T$(1) = "DIVIDENDO DI AZIONE" 2820 T$(2) = "REDDITO DI CAPITALE":T$(3) = "UTILE NON TASSABILE" 2830 VTAB 15: HTAB 1: CALL -958: PRINT "L'UTILE E' STATO": PRINT 2840 FOR X = 1 TO 3 2850 PRINT X;") ";T$(X) 2860 NEXT 2870 PRINT : INPUT "SCEGLI IL N. -> ";DT$:DT = VAL(DT$) 2880 IF DT <1 OR DT >3 THEN PRINT B$;: GOTO 2830 2900 VTAB 15: HTAB 1: CALL -958: PRINT "L'UTILE E' STATO REINVESTITO? (S/N) ";: INPUT "";Y$ 2910 VTAB 15: HTAB 1: CALL -958:X = DA: GOSUB 280 2920 PRINT Z$;" PAGATE IL ";DD$: PRINT "COME ";T$(DT) 2940 IF Y$ = "S" THEN PRINT "L'UTILE E' STATO REINVESTITO": GOTO 2960 2950 PRINT "L'UTILE NON E' STATO REINVESTITO" 2960 GOSUB 80: VTAB 22: HTAB 36: GET Q$ 2970 IF Q$ = CHR$(27) THEN 1120 2980 IF Q$ = CHR$(8) THEN 2700 2990 IF Q$ = CHR$(13) THEN GOSUB 3020: GOSUB 3230: GOTO 2700 3000 PRINT B$: GOTO 2960 3010 REM * GESTIONE DEL TIPO DI UTILE * 3020 VTAB 16: HTAB 1: CALL -958 3030 IF DT = 1 AND CD -DV >365 THEN RETURN 3040 CF = 1 3050 IF DT = 1 AND Y$ = "S" THEN DT = 2: GOTO 3120 3060 IF DT = 1 THEN DT = 3: GOTO 3120 3070 IF DT = 2 AND Y$ = "S" THEN DT = 4: GOTO 3120 3080 IF DT = 2 THEN DT = 5: GOTO 3120 3100 IF DT = 3 AND Y$ = "S" THEN DT = 7: GOTO 3120 3110 DT = 8 3120 D = D +1:DD$(D) = DD$:DV(D) = DV:DT(D) = DT:DA(D) = DA:CF = 1:AF = 1 3130 IF D = 1 THEN 3210 3140 FOR X = D TO 1 STEP -1 3150 IF DV(X) >DV(X -1) THEN 3210 3160 DD$ = DD$(X):DD$(X) = DD$(X -1):DD$(X -1) = DD$ 3170 DV = DV(X):DV(X) = DV(X -1):DV(X -1) = DV 3180 DT = DT(X):DT(X) = DT(X -1):DT(X -1) = DT 3190 DA = DA(X):DA(X) = DA(X -1):DA(X -1) = DA 3200 NEXT X 3210 GOTO 4770 3220 REM * LISTA L'UTILE * 3230 HOME : HTAB 7: INVERSE : PRINT " ROUTINE D'IMMISSIONE ": HTAB 7: PRINT " DELL'UTILE ": NORMAL 3240 PRINT : IF D = 0 THEN HTAB 5: PRINT "NON E' STATO PAGATO ALCUN UTILE": HTAB 5: PRINT UU$: HTAB 5: PRINT "E' STATO ACQUISTATO.": RETURN 3250 HTAB 5: PRINT "E' STATO PAGATO IL SEGUENTE UTILE": HTAB 5: PRINT UU$ 3260 PRINT : HTAB 4: PRINT "DATA"; TAB( 14);"IMPORTO"; TAB( 24);"DATA"; TAB( 34);"IMPORTO": PRINT 3270 FOR Y = 1 TO 11 STEP 2 3280 X = DA(Y): GOSUB 280 3290 HTAB (9 - LEN(DD$(Y))): PRINT DD$(Y);: HTAB (20 - LEN(Z$)): PRINT Z$; 3300 IF Y = D THEN RETURN 3310 X = DA(Y +1): GOSUB 280 3320 HTAB (29 - LEN(DD$(Y +1))): PRINT DD$(Y +1);: HTAB (40 - LEN(Z$)): PRINT Z$ 3330 IF Y +1 = D THEN RETURN 3340 NEXT : RETURN 3350 HOME : INVERSE : HTAB 9: PRINT " ANALISI DEL " 3360 HTAB 9: PRINT " TASSO DI REDDITO ": NORMAL : VTAB 5: HTAB 8 3370 PRINT "QUESTA ANALISI E' PER ";NS 3380 HTAB 8: PRINT "TITOLI DI ";ST$(I) 3390 VTAB 10: HTAB 1: PRINT "SCRIVI IL PREZZO CORRENTE": GOSUB 820 3400 IF Q = 1 THEN CW = X *NS: GOTO 3420 3410 CW = X 3420 VTAB 10: HTAB 1: CALL -958: PRINT "SCRIVI LA TUA ALIQUOTA D'IMPOSTA (0-50%)": PRINT : HTAB 8: INPUT "-> ";TX$:TX = VAL(TX$) 3430 IF TX <0 OR TX >50 THEN PRINT B$: GOTO 3420 3440 VTAB 10: HTAB 1: CALL -958: HTAB 9: PRINT "LA TUA ALIQUOTA D'IMPOSTA E' ";TX;"%": PRINT : GOSUB 30 3450 IF Q$ = "N" THEN 3420 3460 TX = TX/100 3470 VTAB 10: HTAB 1: CALL -958: PRINT "VUOI LA STAMPA DELL'";: INPUT "ANALISI? (S/N) -> ";Q$ 3480 IF Q$ = "N" THEN CF = 0: GOTO 3510 3490 IF Q$ < >"S" THEN PRINT B$: GOTO 3470 3500 CF = 1 3510 EV = CD:SV = PV:EW = CW:QP = TI:I2 = NI:BW = PP:SD$ = PD$:ED$ = CD$ 3520 IF D = 0 THEN 3620 3530 FOR X = 1 TO D 3540 IF DT(X) = 2 OR DT(X) = 3 OR DT(X) = 4 OR DT(X) = 5 THEN QP = QP +DA(X): REM TASSABILE 3550 IF DT(X) = 2 OR DT(X) = 4 OR DT(X) = 7 THEN BW = BW +DA(X): REM REINVESTITO 3590 IF DT(X) = 7 OR DT(X) = 8 THEN I2 = I2 +DA(X): REM NON TASSABILE 3610 NEXT X 3620 GOSUB 4210 3630 IF CF = 0 AND IV = 0 THEN GOSUB 4050: GOSUB 70: RETURN 3640 IF CF = 0 THEN GOSUB 4050: GOSUB 70: GOTO 3670 3650 GOSUB 3910 3660 IF (IV = A) THEN 3900 3670 EV = IV:SV = PV:EW = IW:BW = PP:QP = TI:I2 = NI:I3 = CG:SD$ = PD$:ED$ = ID$ 3680 IF D = 0 THEN 3720 3720 GOSUB 4210 3730 IF CF = 0 THEN GOSUB 4050: GOSUB 70: GOTO 3750 3740 GOSUB 4440: GOSUB 3970 3750 EV = CD:SV = IV:EW = CW:BW = IW:QP = 0:I2 = 0:I3 = 0:SD$ = ID$:ED$ = CD$ 3760 IF D = 0 THEN 3870 3770 FOR X = 1 TO D 3790 IF DT(X) = 2 OR DT(X) = 3 OR DT(X) = 4 OR DT(X) = 5 THEN QP = QP +DA(X): REM TASSABILE 3840 IF DT(X) = 7 OR DT(X) = 8 THEN I2 = I2 +DA(X) 3860 NEXT X 3870 GOSUB 4210 3880 IF CF = 0 THEN GOSUB 4050: GOSUB 70: RETURN 3890 GOSUB 4440: GOSUB 3970 3900 GOSUB 4440: HTAB 5: PRINT UL$:CF = 0: PRINT D$"PR#0": RETURN 3910 GOSUB 4440 3920 HTAB (26 -.5 *( LEN(ST$(I)) + LEN( STR$(NS)) + LEN(PD$))): PRINT NS;" TITOLI DI ";ST$(I);" ACQUISTATI IL ";PD$ 3930 HTAB 32: PRINT "ALIQUOTA D'IMPOSTA ";TX$ 3940 HTAB 32: FOR X = 1 TO (10 + LEN( STR$(TX))): PRINT "-";: NEXT : PRINT 3950 IF IV < >0 THEN 3970 3960 PRINT : HTAB 1: PRINT "NON C'E' ALCUNA DATA INTERMEDIA IMMESSA" 3970 PRINT : HTAB 1: PRINT "**** PER IL PERIODO DAL ";SD$;" AL ";ED$;"****" 3980 HTAB 16: PRINT "LA BASE D'INVESTIMENTO IL ";SD$;" ERA ";BW$ 3990 HTAB 11: PRINT "IL VALORE DELL'INVESTIMENTO IL ";ED$;" ERA ";EW$ 4000 HTAB 2: PRINT "DIV/INT. TASSABILE"; SPC( ((12 - LEN(QP$)) > -1) *(12 - LEN(QP$)));;QP$; SPC( 10);"DIV/INT. ESENTE"; SPC( ((12 - LEN(I2$)) > -1) *(12 - LEN(I2$)));I2$ 4010 HTAB 2: PRINT "PLUSV. SU CAPITALE"; SPC( ((12 - LEN(CG$)) > -1) *(12 - LEN(CG$)));CG$ 4020 HTAB 2: PRINT "REDDITO LORDO"; SPC( ((12 - LEN(TR$)) > -1) *(12 - LEN(TR$)));TR$; SPC( 10);"REDDITO LORDO IN %"; SPC( ((12 - LEN(Y1$)) > -1) *(12 - LEN(Y1$)));Y1$ 4030 HTAB 2: PRINT "REDDITO NETTO"; SPC( ((12 - LEN(AX$)) > -1) *(12 - LEN(AX$)));AX$; SPC( 10);"REDDITO NETTO IN %"; SPC( ((12 - LEN(Y2$)) > -1) *(12 - LEN(Y2$)));Y2$ 4040 PRINT D$"PR#0": PRINT D$: RETURN 4050 HOME : PRINT NS;" TITOLI DI ";ST$(I) 4060 PRINT : PRINT "ACQUISTATI IL ";PD$;". L'ALIQUOTA": PRINT "D'IMPOSTA E' ";TX$ 4070 IF IV < >0 THEN 4090 4080 PRINT : PRINT "NON C'E' ALCUNA DATA INTERMEDIA IMMESSA" 4090 PRINT : PRINT "PER IL PERIODO ";SD$;" AL ";ED$ 4100 PRINT : PRINT SD$;" BASE=";BW$ 4110 PRINT ED$;" VALORE=";EW$ 4120 PRINT : PRINT "DIV/INT. TASSABILE"; TAB( 35 - LEN(QP$));QP$ 4130 PRINT "DIV/INT. ESENTE" TAB( 35 - LEN(I2$));I2$ 4150 PRINT "PLUSVAL. SU CAPITALE"; TAB( 35 - LEN(CG$));CG$ 4160 PRINT "REDDITO LORDO"; TAB( 35 - LEN(TR$));TR$ 4170 PRINT "REDDITO LORDO IN %"; TAB( 35 - LEN(Y1$));Y1$ 4180 PRINT "REDDITO NETTO"; TAB( 35 - LEN(AX$));AX$ 4190 PRINT "REDDITO NETTO IN %"; TAB( 35 - LEN(Y2$));Y2$ 4200 RETURN 4210 IF (CD -PV) <365 THEN CT = 1: GOTO 4230 4230 TR = EW -BW +QP 4240 TA = TX *TR 4250 AX = TR -TA:Y = 365/(EV -SV) 4260 X = (TR +BW)/BW: GOSUB 4400:Y1$ = Z$ 4270 X = (AX +BW)/BW: GOSUB 4400:Y2$ = Z$ 4280 X = PP: GOSUB 280:PP$ = Z$ 4290 X = IW: GOSUB 280:IW$ = Z$ 4300 X = QP: GOSUB 280:QP$ = Z$ 4310 X = (EW -BW): GOSUB 280:CG$ = Z$ 4320 X = TR: GOSUB 280:TR$ = Z$ 4330 X = AX: GOSUB 280:AX$ = Z$ 4340 X = BW: GOSUB 280:BW$ = Z$ 4350 X = I2: GOSUB 280:I2$ = Z$ 4370 X = EW: GOSUB 280:EW$ = Z$ 4380 TX$ = STR$(TX *100) +"%" 4390 RETURN 4400 IF X <1 THEN DF = 1 4410 V = (X ^Y) -1:Z = INT(1000 *(V +.0005))/10 4420 IF DF THEN DF = 0:Z$ = "(" + STR$(Z) +"%)": RETURN 4430 Z$ = STR$(Z) +"%": RETURN 4440 PRINT D$"PR#1": PRINT CHR$(9)"80N": RETURN 4450 REM * DEPENNA VOCE TITOLO * 4460 HOME : INVERSE : VTAB 5: HTAB 10: PRINT "ROUTINE ELIMINAZIONE VOCE": NORMAL 4470 VTAB 8: PRINT "VUOI ";: INVERSE : PRINT "DEPENNARE ";ST$(I): NORMAL 4480 PRINT : PRINT : INPUT "E' GIUSTO COSI'? (S/N) ";Q$ 4490 IF Q$ = "N" THEN 1120 4500 IF Q$ < >"S" THEN PRINT B$: GOTO 4460 4510 VTAB 10: HTAB 1: CALL -958: PRINT "VUOI UN'ANALISI FINALE PRIMA CHE LA VOCE SIA DEPENNATA? ";: INPUT "";Q$ 4520 IF Q$ = "N" THEN 4570 4530 IF Q$ < >"S" THEN PRINT B$: GOTO 4510 4540 GOSUB 3350 4550 HOME : PRINT "VUOI CONTINUARE A DEPENNARE" 4560 PRINT "IL ";ST$(I);" FILE? ";: INPUT "";Q$: IF Q$ < >"S" THEN 1120 4570 PRINT DE$;ST$(I): PRINT DE$;"LISTA.TITOLI": IF (S -1) = 0 THEN S = 0: GOTO 5430 4580 FOR X = I TO S 4590 ST$(X) = ST$(X +1) 4600 NEXT 4610 S = S -1 4620 GOSUB 5140:CF = 0:I = 0: GOTO 1120 4630 IW = 0 4640 REM * LEGGE I FILE DEI TITOLI * 4650 HOME : VTAB 10: HTAB 5: PRINT "STO LEGGENDO IL FILE ";ST$(I) 4660 PRINT OP$;ST$(I) 4670 PRINT RD$;ST$(I) 4680 INPUT PD$,PV,NS,PP,ID$,IV,IW,D,ND$,TI,NI,CG 4690 IF D = 0 THEN 4730 4700 FOR X = 1 TO D 4710 INPUT DT(X),DD$(X),DV(X),DA(X) 4720 NEXT 4730 PRINT CL$;ST$(I) 4740 AF = 1: IF IV = 0 THEN 4770 4750 IF CD -IV >365 THEN IV = 0:ID$ = "NON CE N'E' ALCUNO IMMESSO":IW = 0 4760 REM *CONTROLLO DATA DIV. * 4770 IF D = 0 THEN 4970 4780 IF IV = 0 AND CD -DV(1) <365 THEN 4970 4790 X = 1 4800 IF X >D THEN 4970 4810 IF IV = 0 THEN 4840 4820 IF DV(X) >IV THEN 4970 4840 CF = 1: REM IF DT(X) = 1 THEN 4920 4850 IF DT(X) = 2 THEN PP = PP +DA(X):TI = TI +DA(X): GOTO 4920 4860 IF DT(X) = 3 THEN TI = TI +DA(X): GOTO 4920 4870 IF DT(X) = 4 THEN CG = CG +DA(X):PP = PP +DA(X): GOTO 4920 4880 IF DT(X) = 5 THEN CG = CG +DA(X): GOTO 4920 4890 IF DT(X) = 6 THEN PP = PP -DA(X): GOTO 4920 4900 IF DT(X) = 7 THEN PP = PP +DA(X):NI = NI +DA(X): GOTO 4920 4910 NI = NI +DA(X) 4920 FOR Y = X TO D 4930 Z = Y +1 4940 DT(Y) = DT(Z):DD$(Y) = DD$(Z):DV(Y) = DV(Z):DA(Y) = DA(Z) 4950 NEXT 4960 D = D -1: GOTO 4770 4970 IF AF THEN AF = 0: RETURN 4980 IF CF THEN CF = 0: GOSUB 5010 4990 RETURN 5000 REM * SCRIVE I FILE DEI TITOLI * 5010 HOME : VTAB 10: HTAB 5: PRINT "STO SCRIVENDO IL FILE ";ST$(I) 5020 PRINT OP$;ST$(I) 5030 PRINT CL$;ST$(I) 5040 PRINT DE$;ST$(I) 5050 PRINT OP$;ST$(I) 5060 PRINT WR$;ST$(I) 5070 PRINT PD$: PRINT PV: PRINT NS: PRINT PP: PRINT ID$: PRINT IV: PRINT IW: PRINT D: PRINT ND$: PRINT TI: PRINT NI: PRINT CG 5080 IF D = 0 THEN 5120 5090 FOR W = 1 TO D 5100 PRINT DT(W): PRINT DD$(W): PRINT DV(W): PRINT DA(W) 5110 NEXT 5120 PRINT CL$;ST$(I): RETURN 5130 REM * SCRIVE LA LISTA DEI TITOLI * 5140 HOME : VTAB 10: HTAB 5: PRINT "STO SCRIVENDO LISTA.TITOLI" 5150 PRINT OP$;"LISTA.TITOLI" 5160 PRINT CL$;"LISTA.TITOLI" 5170 PRINT DE$;"LISTA.TITOLI" 5180 PRINT OP$;"LISTA.TITOLI" 5190 PRINT WR$;"LISTA.TITOLI" 5200 PRINT S 5210 FOR X = 1 TO S 5220 PRINT ST$(X) 5230 NEXT 5240 PRINT CL$;"LISTA.TITOLI" 5250 RETURN 5260 REM * INIZIALIZZAZIONE * 5270 ONERR GOTO 5510 5280 D$ = CHR$(4):B$ = CHR$(7) + CHR$(7) + CHR$(7):M$ = CHR$(91) +" " + CHR$(93) 5290 OP$ = D$ +"OPEN ":RD$ = D$ +"READ ":WR$ = D$ +"WRITE ":CL$ = D$ +"CLOSE ":DE$ = D$ +"DELETE " 5300 DIM ST$(96),DD$(13),DV(13),DA(13),DT(13) 5310 PRINT D$;"VERIFY LISTA.TITOLI" 5320 PRINT OP$;"LISTA.TITOLI" 5330 PRINT RD$;"LISTA.TITOLI" 5340 INPUT S 5350 IF S = 0 THEN 5390 5360 FOR I = 1 TO S 5370 INPUT ST$(I) 5380 NEXT 5390 PRINT CL$;"LISTA.TITOLI" 5400 FOR X = 1 TO 65:UL$ = UL$ +"-": NEXT 5410 I = 0: GOTO 1050 5420 REM * NESSUN TITOLO IMMESSO * 5430 HOME : VTAB 5: HTAB 1: INVERSE : PRINT "NON CI SONO TITOLI IMMESSI. " 5440 PRINT "TRASFERISCO ALLA ROUTINE D'IMMISSIONE.": NORMAL 5450 Q1 = 1: GOSUB 70 5460 GOTO 2280 5470 REM * AVVERTIMENTO DI LISTA DI TITOLI LUNGA * 5480 HOME : VTAB 5: PRINT "NELLA TUA LISTA CI SONO 96 TITOLI": PRINT "E' IL MASSIMO CHE SI PUO' IMMAGAZZINARE" 5490 PRINT "DOVRAI DEPENNARE UN TITOLO DALLA ": PRINT "LISTA PRIMA DI POTERNE AGGIUNGERE": PRINT "UN ALTRO" 5500 PRINT : GOSUB 70: RETURN 5510 REM * INIZIALIZZA FILE LISTA TITOLI * 5520 IF PEEK(222) < >6 THEN 5580 5530 IF PEEK(222) = 6 THEN PRINT D$;"OPEN LISTA.TITOLI" 5540 PRINT D$;"WRITE LISTA.TITOLI" 5550 PRINT 0 5560 PRINT D$;"CLOSE LISTA.TITOLI" 5570 GOTO 5320 5580 VTAB 20: HTAB 1: CALL -958: PRINT "L'ERRORE N. "; PEEK(222);" E' AVVENUTO" 5590 PRINT "ALLA LINEA N. ";( PEEK(218) +( PEEK(219) *256)) 5600 GOSUB 70:I = 0: GOTO 1120 5700 CALL -936: VTAB 10: HTAB 11: INVERSE : PRINT "1";: NORMAL : PRINT " - MENU APPLEDISK" 5710 PRINT : HTAB 11: INVERSE : PRINT "2";: NORMAL : PRINT " - FINE" 5720 VTAB 15: HTAB 18: PRINT "< >"; 5730 VTAB 15: HTAB 19: GET A$: PRINT A$: IF A$ < >"1" AND A$ < >"2" THEN 5730 5740 IF A$ = "1" THEN PRINT CHR$(4)"RUN HELLO2": END 5750 RETURN