10 WIDTH 64:PR=0:BL$=STRING$(64,32):PRINT CHR$(12);:GOTO 1000 100 PRINT:PRINT"Druk op een toets.";:A$=INPUT$(1):PRINT CHR$(12);:RETURN 390 FR$="Het antwoord moet 'J' of 'N' zijn!!! Nog eens...." 460 PRINT:FOR I=1 TO 4:PRINT FR$ 470 FOR J=1 TO 300:NEXT J:PRINT CHR$(23);BL$ 480 FOR J=1 TO 100:NEXT J:PRINT CHR$(23);:NEXT I 490 FOR I=1 TO 3:PRINT CHR$(23);:NEXT I:PRINT:RETURN 610 IF PR=1 THEN POKE 3,129 620 RETURN 650 POKE 3,0 660 RETURN 1000 FOR I=1 TO 5:PRINT:NEXT I:PRINT TAB(23);"KASSA DOCUMENTATIE.":PRINT TAB(23);"===================" 1010 FOR I=1 TO 4:PRINT:NEXT I 1020 PRINT"Wilt u de tekst afdrukken op een printer (J/N)? ";:A$=INPUT$(1):PRINT A$ 1030 IF A$="J" OR A$="j" THEN PR=1:GOTO 1050 1040 IF A$<>"N" THEN IF A$<>"n" THEN GOSUB 390:GOTO 1020 1050 PRINT CHR$(12):PRINT:PRINT:PRINT:GOSUB 610 1060 PRINT TAB(23);"KASSA DOCUMENTATIE.":PRINT TAB(23);"===================":PRINT 1070 PRINT" Inleiding":PRINT" ---------":PRINT 1080 PRINT"Het programma KASSA is geschreven naar een idee, zoals het op een casette stond van de ESGG. Dit programma is heel erg beperkt" 1090 PRINT"in zijn mogelijkheden. 1100 PRINT"Daarom is een volledig nieuw programma geschreven (versie 2.0). In dit programma werden t.b.v. de snelheid verschillende gege-" 1110 PRINT"vens, zoals de datum, wel/niet gebruik van een printer etc. met PEEK en POKE via het geheugen aan de verschillende programmaon-" 1120 PRINT"derdelen doorgegeven.":PRINT 1130 PRINT"Voor de wedstrijd werd t.b.v. de overdraagbaarheid het programmaaangepast (versie 2.1). Op twee na zijn alle PEEK's en POKE's" 1140 PRINT"uit het programma verdwenen. De twee overgebleven POKE's zijn voor het aanzetten van een printer (regelnr. 610) en het uit-" 1150 PRINT"zetten van de printer (regelnr. 650)." 1160 IF PR=0 THEN GOSUB 100 ELSE PRINT 1170 PRINT" Werking":PRINT" -------" 1175 IF PR=1 THEN PRINT 1180 PRINT"De gebruiker zal nadat CP/M is gestart MBASIC laden. Vervolgens wordt RUN ''KASSA'' ingetikt. Als eerste wordt nu de programma-" 1190 PRINT"kop getoond. Daarna wordt om de datum gevraagd. Hier kan de ge- bruiker kiezen of hij de datum intikt of 'Help'. Wordt 'Help'" 1200 PRINT"ingetikt dan wordt er enige uitleg over het programma gegeven. Daarna wordt weer naar het programma teruggesprongen. Wordt de" 1210 PRINT"datum ingetikt, dan wordt naar het MENU gegaan. Hier kan optie 8 worden gekozen om uitleg van het hele programma te krijgen." 1220 PRINT"De diverse mogelijkheden van KASSA zijn:" 1230 PRINT TAB(5);"1. Invoer inkomsten.":PRINT TAB(5);"2. Invoer uitgaven." 1240 PRINT TAB(5);"3. Printen inkomsten/uitgaven.":PRINT TAB(5);"4. Printen inkomsten/uitgaven gespecificeerd per rubriek." 1250 PRINT TAB(5);"5. Printen vergelijking inkomsten/uitgaven lopende en vori-":PRINT TAB(8);"ge maand." 1260 PRINT TAB(5);"6. Printen vergelijking uitgaven met een uitgaven plan." 1270 PRINT TAB(5);"7. Printen vergelijking uitgaven vanaf januari met een uit-":PRINT TAB(8);"gaven plan." 1280 PRINT TAB(5);"8. Veranderen/invoeren uitgaven plan.":PRINT TAB(5);"9. Bewaren eindbedragen van de rubrieken bij einde maand." 1290 PRINT TAB(4);"10. Veranderen/invoeren rubrieken zoals Auto, Gas, Water etc." 1300 PRINT"Tijdens het lopen van het KASSA kan zodra de computer om invoer vraagt (ook bij bijv. 'J' of 'N') altijd 'Help' worden ingetypt." 1310 PRINT"De reeds ingetikte gegevens worden bewaard en er wordt uitleg van het lopende stukje programma gegeven, waarna de computer te-" 1320 PRINT"rug gaat naar het programmaonderdeel, waar hij mee bezig was." 1330 IF PR=0 THEN GOSUB 100 ELSE PRINT 1340 PRINT" Listing":PRINT" -------":PRINT 1350 PRINT"KASSA bestaat uit een 16-tal programma's waarvan de opzet van deprogrammaonderdelen gelijk is. Als eerste volgt de initialisa-" 1360 PRINT"tie, daarna de subroutines en daarna het hoofdprogramma. Het hoofdprogramma heeft regelnummers die hoger zijn dan 1000. De" 1370 PRINT"regelnummers hoger dan 100 en lager dan 1000 zijn subroutines enzijn als volgt ingedeeld:" 1380 PRINT" 1. Regelnr. 10 - 90 Initialisatie en sprong naar het":PRINT TAB(28);"hoofdprogramma 1390 PRINT" 2. Regelnr. 200 - 240 Subroutine die de datum ophaalt." 1400 PRINT" 3. Regelnr. 250 - 270 Subroutine die kijkt of er 'Help' is":PRINT TAB(28);"ingetoetst." 1410 PRINT" 4. Regelnr. 300 - 490 Subroutines t.b.v. foutmeldingen." 1420 PRINT" 5. Regelnr. 500 - 550 Subroutine wel/niet gebruik printer." 1430 PRINT" 6. Regelnr. 600 - 620 Subroutine die bij wel gebruik prin-":PRINT TAB(28);"ter de printer activeert." 1440 PRINT" 7. Regelnr. 650 - 660 Subroutine die de printer afschakelt." 1450 PRINT" 8. Regelnr. 800 - 810 Subroutine die een pagina tekst vast-":PRINT TAB(28);"houdt totdat er een toets wordt inge-":PRINT TAB(28);"drukt." 1460 PRINT" 9. Regelnr. 900 - 940 Vaste data bij het programma." 1470 PRINT"Na de programmanaam wordt tussen haakjes aangegeven op welke bladen de listing is afgedrukt. Tussen de apostroph's staat aan-" 1480 PRINT"gegeven onder welke naam het programma wordt aangeroepen (CP/M laat 8 karakters toe)." 1490 IF PR=0 THEN GOSUB 100 ELSE PRINT 1500 PRINT"Programma 1: KASSA (blad 1, 'KASSA'). 1510 PRINT" Dit programma verzorgt de kop en bestaat geheel uit PRINT sta- tements.":PRINT 1520 PRINT"Programma 2: KASSA - DATUM (blad 2, 'DATUM'). 1530 PRINT" Dit is een aangepast programma van Bob Hilderink (zie ESGG 2e jaargang nr. 8 blz. 14). In dit programma wordt de datum inge-" 1540 PRINT" voerd, waarmee gewerkt gaat worden. Er wordt getest op juiste invoer. Ook laat het programma zien, wanneer er voor het" 1550 PRINT" laatst met het programma is gewerkt." 1560 PRINT" Regelnr. 1000 - 1040 Subroutine bereken ingevoerde dag." 1570 PRINT" Regelnr. 1080 - 1110 Inlezen data." 1580 PRINT" Regelnr. 1120 Invoer datum." 1590 PRINT" Regelnr. 1130 - 1190 Controle juiste invoer." 1600 PRINT" Regelnr. 1200 - 1220 Schrijf ingevoerde datum naar schijf." 1610 PRINT" Regelnr. 1290 Bereken weeknummer." 1620 PRINT" Regelnr. 1300 - 1320 Afdrukken datum, weeknummer en de datum":PRINT TAB(24);"van de vorige run.":PRINT 1630 PRINT"Programma 3: KASSA - MENU (blad 3, 'MENU'). 1640 PRINT" Dit programma produceert het menu van KASSA.":PRINT" Het programma bestaat voornamelijk uit PRINT statements." 1650 PRINT" Regelnr. 2100 - 2120 Invoer en controle opdracht.":PRINT 1660 IF PR=0 THEN GOSUB 100 1670 PRINT"Programma 4: KASSA - INVOER INKOMSTEN (blad 4,5, 'INVOERIN')." 1680 PRINT" Met dit programma worden de inkomsten ingevoerd." 1690 PRINT" Regelnr. 3000 - 3020 Afdrukken kop. 1700 PRINT" Regelnr. 3030 - 3070 Afdrukken totaal bedrag aan inkomsten die":PRINT TAB(24);"reeds zijn ingevoerd." 1710 PRINT" Regelnr. 3080 - 3340 Invoer inkomsten. 1720 PRINT" Regelnr. 3350 - 3370 Wegschrijven totaal aan inkomsten naar":PRINT TAB(24);"schijf." 1730 PRINT" Regelnr. 3450 - 3840 Veranderen ingevoerde gegevens.":PRINT 1740 PRINT"Programma 5: KASSA - INVOER UITGAVEN (blad 6,7,8, 'INVOERUI')." 1750 PRINT" Dit programma behandelt de uitgaven." 1760 PRINT" Regelnr. 4000 Afdrukken van de kop." 1770 PRINT" Regelnr. 4010 - 4080 De verschillende rubrieken van schijf le-":PRINT TAB(24);"zen met de bijbehorende uitgaven." 1780 PRINT" Regelnr. 4090 - 4140 Afdrukken van de verschillende rubrieken." 1790 PRINT" Regelnr. 4150 - 4190 Invoer en controle rubriek." 1800 PRINT" Regelnr. 4200 - 4540 Invoer uitgaven bij gekozen rubriek." 1810 PRINT" Regelnr. 4550 - 4600 Wegschrijven naar schijf van de bedragen":PRINT TAB(24);"per rubriek tot nu toe." 1820 PRINT" Regelnr. 4620 - 5050 Veranderen ingevoerde gegevens.":PRINT 1830 PRINT"Programma 6: KASSA - PRINT (blad 9, 'PRINT')." 1840 PRINT" Dit programma produceert een sub-menu waarmee een keuze ge- maakt kan worden op welke manier er geprint gaat worden." 1850 PRINT" De eerste helft van het programma bestaat uit PRINT state- ment's." 1860 PRINT" Regelnr. 5100 - 5150 Invoer en controle welke print opdracht." 1870 IF PR=0 THEN GOSUB 100 ELSE PRINT 1880 PRINT"Programma 7: KASSA - BOEKMAAND (blad 10, 'BOEKM')." 1890 PRINT" Het programma drukt rubrieken af met daar achter eindbedragen." 1900 PRINT" Regelnr. 5200 - 5210 Afdrukken van de kop." 1910 PRINT" Regelnr. 5229 - 5290 Afdrukken rubrieken en de uitgaven." 1920 PRINT" Regelnr. 5300 - 5360 Afdrukken inkomsten en saldo.":PRINT 1930 PRINT"Programma 8: KASSA - UITGAVEN PER RUBRIEK (blad 11, 'UITGRUBR')." 1940 PRINT" Dit programma drukt de inkomsten/uitgaven gespecificeerd af." 1950 PRINT" Regelnr. 5400 - 5410 Afdrukken van de kop." 1960 PRINT" Regelnr. 5420 - 5520 Adrukken inkomsten." 1970 PRINT" Regelnr. 5530 - 5590 Inlezen rubrieken vanaf schijf." 1980 PRINT" Regelnr. 5600 - 5740 Afdrukken van de uitgaven.":PRINT 1990 PRINT"Programma 9: KASSA - BOEK/VORIGE MAAND (blad 12, 'BOEKVOOR'). 2000 PRINT" Het programma drukt een overzicht af van de uitgaven van de lopende en de vorige maand." 2010 PRINT" Regelnr. 5700 - 5730 Afdrukken van de kop." 2020 PRINT" Regelnr. 5740 - 6050 Inlezen, vergelijken en afdrukken van de":PRINT TAB(24);"rubrieken.":PRINT 2030 PRINT"Programma 10: KASSA - BOEKMAAND/PLANNING (blad 13, 'BOEKPLAN')." 2040 PRINT" Met dit programma wordt een overzicht afgedrukt van de uitga- ven van de lopende maand en een uitgaven plan." 2050 PRINT" Regelnr. 6100 - 6120 Afdrukken van de kop." 2060 PRINT" Regelnr. 6130 - 6440 Inlezen rubrieken en geplande rubrieken,":PRINT TAB(24);"vergelijken rubrieken en geplande rubrie-" 2070 PRINT TAB(24);"ken en afdrukken van de werkelijk uitge-":PRINT TAB(24);"geven en de geplande bedragen." 2080 IF PR=0 THEN GOSUB 100 ELSE PRINT 2090 PRINT"Programma 11: KASSA - MAANDEN EN PLANNING (blad 14, 'PLANTOT')." 2100 PRINT" Dit programma produceert een overzicht van de uitgaven vanaf januari tot en met de laatst afgesloten maand." 2110 PRINT" Regelnr. 6500 - 6530 Afdrukken van de kop." 2120 PRINT" Regelnr. 6540 - 6560 Inlezen van de rubrieken." 2130 PRINT" Regelnr. 6580 - 6640 Inlezen planrubrieken met de bedragen en":PRINT TAB(24);"het berekenen van het totale geplande be-" 2140 PRINT TAB(24);"drag over het aantal ingevoerde maanden." 2150 PRINT" Regelnr. 6660 - 6760 Inlezen bedragen rubrieken per maand." 2160 PRINT" Regelnr. 6770 - 6810 Berekenen totaal uitgegeven bedrag per":PRINT TAB(24);"rubriek" 2170 PRINT" Regelnr. 6820 - 6880 Afdrukken gegevens.":PRINT 2180 PRINT"Programma 12: KASSA - VERANDEREN PLANNING (blad 15, 'VERAPLAN')." 2190 PRINT" Met dit programma kan een uitgavenplan ingevoerd of veranderd worden." 2200 PRINT" Regelnr. 7000 Afdrukkken van de kop." 2210 PRINT" Regelnr. 7030 - 7080 Inlezen planrubrieken en geplande bedra-":PRINT TAB(24);"gen." 2220 PRINT" Regelnr. 7100 Afdrukken gepland bedrag en invoer nieuw":PRINT TAB(24);"bedrag." 2230 PRINT" Regelnr. 7120 - 7220 Afdrukken nieuw bedrag en wegschrijven":PRINT TAB(24);"bedrag naar schijf." 2240 IF PR=0 THEN GOSUB 100 ELSE PRINT 2250 PRINT"Programma 13: KASSA - AFSLUITEN MAAND (blad 16,'AFSLUIT')." 2260 PRINT" Het doel van dit programma is de eindbedragen van de rubrieken aan het einde van de maand op schijf te bewaren onder maand-" 2270 PRINT" naam. Deze eindbedragen worden weer bij de verschillende PRINT-programma's gebruikt. Tevens wordt de inhoud van de ru-" 2280 PRINT" brieken gereset voor de invoer van de volgende maand." 2290 PRINT" Regelnr. 8000 Afdrukken van de kop." 2300 PRINT" Regelnr. 8030 - 8120 Inlezen rubrieken en eindbedragen en weg-":PRINT TAB(24);"schrijven rubrieken met eindbedragen on-" 2310 PRINT TAB(24);"der maandnaam." 2320 PRINT" Regelnr. 8130 - 8220 Resetten rubrieken." 2330 PRINT" Regelnr. 8230 - 8290 Resetten inkomsten.":PRINT 2340 PRINT"Programma 14: KASSA - VERANDEREN RUBRIEKEN (blad 17, 18,":PRINT TAB(15);"'VERARUBR')." 2350 PRINT" Met dit programma kunnen er namen van rubrieken toegevoegd of verwijderd worden. Ook worden ze op naam gesorteerd." 2360 PRINT" Regelnr. 9000 Afdrukken van de kop." 2370 PRINT" Regelnr. 9010 - 9080 Rubrieken toevoegen, ja/nee." 2380 PRINT" Regelnr. 9090 - 9160 Inlezen rubrieken van schijf." 2390 PRINT" Regelnr. 9170 - 9210 Tonen rubrieken." 2400 PRINT" Regelnr. 9230 - 9270 Toevoegen, verwijderen of stoppen en con-":PRINT TAB(24);"trole van de invoer." 2410 PRINT" Regelnr. 9280 - 9380 Toevoegen van rubrieken." 2420 PRINT" Regelnr. 9390 - 9480 Verwijderen van rubrieken." 2430 PRINT" Regelnr. 9490 - 9520 Sorteren." 2440 PRINT" Regelnr. 9530 - 9580 Wegschrijven rubrieken naar schijf." 2450 PRINT" Regelnr. 9590 - 9700 Aanpassen rubrieken uitgavenplan." 2460 IF PR=0 THEN GOSUB 100 ELSE PRINT 2470 PRINT"Programma 15: KASSA - EINDE PROGRAMMA (blad 19, 'EIND')." 2480 PRINT" Dit programma maakt aan het einde een zgn. 'back-up' schijf." 2490 PRINT" Regelnr. 10000 Afdrukken van de kop." 2500 PRINT" Regelnr. 10050 - 10190 Inlezen rubrieken met bijbehorende be-":PRINT TAB(26);"dragen en wegschrijven naar de 'back-" 2510 PRINT TAB(26);"up' schijf." 2520 PRINT" Regelnr. 10200 - 10280 Inlezen en wegschrijven naar 'back-up'":PRINT TAB(26);"schijf van de inhoud rubrieken." 2530 PRINT" Regelnr. 10290 - 10350 Inlezen en wegschrijven naar 'back-up'":PRINT TAB(26);"schijf van de inhoud inkomsten." 2540 PRINT" Regelnr. 10360 - 10420 Inlezen en wegschrijven naar 'back-up'":PRINT TAB(26);"schijf van de inkomsten." 2550 PRINT" Regelnr. 10430 - 10490 Inlezen en wegschrijven naar 'back-up'":PRINT TAB(26);"schijf van de planrubrieken en geplan-" 2560 PRINT TAB(26);"de bedragen.":PRINT 2570 PRINT"Programma 16: KASSA - HELP (blad 20,21, 'HELP')." 2580 PRINT" Dit programma geeft uitleg van het programma KASSA. Het wordt door bij MENU 8 te kiezen, in zijn geheel aangeroepen. Wordt" 2590 PRINT" tijdens het lopen van het programma ergens HELP ingetypt dan wordt het gedeelte aangeroepen dat betrekking heeft op het dan" 2600 PRINT" draaiende programma gedeelte." 2610 PRINT" Het programma bestaat uit PRINT statements." 2620 IF PR=0 THEN GOSUB 100 ELSE PRINT 2630 PRINT"Overzicht van de in de programma's gebruikte variabelen.":PRINT 2640 PRINT" A Teller/aantal rubrieken." 2650 PRINT" A$ String bij invoer." 2660 PRINT" AD Aantal dagen in een maand." 2670 PRINT" B Teller." 2680 PRINT" BED Bedrag." 2690 PRINT" BL$ Blanco lijn." 2700 PRINT" BS$ Korte streepjes lijn." 2710 PRINT" D Dag." 2720 PRINT" D$ Naam van de dag." 2730 PRINT" DA Datum 2740 PRINT" DA$ Hulpstring bij DA." 2750 PRINT" DAG Hulpvariabele bij datuminvoer." 2760 PRINT" DAT$ String die de datum bevat na het lezen van schijf." 2770 PRINT" DATUM$ String bij invoer datum." 2780 PRINT" DNR Dag nummer." 2790 PRINT" FR$ String met foutboodschap." 2800 PRINT" HE Variabele t.b.v. HELP." 2810 PRINT" HE$ String t.b.v. HELP." 2820 PRINT" I Teller." 2830 PRINT" IT Hulpvariabele bij invoer." 2840 PRINT" IT$ Hulpstring bij IT." 2850 PRINT" INK Totaal bedrag aan inkomsten." 2860 PRINT" J Teller/Jaar." 2870 PRINT" JA$ Hulpstring bij DATUM$." 2880 PRINT" K Teller." 2890 IF PR=0 THEN GOSUB 100 2900 PRINT" M Maandnummer." 2910 PRINT" MA$ Hulpstring bij DATUM$." 2920 PRINT" MND$ Naam van de maand." 2930 PRINT" N Hulpvariabele bij M." 2940 PRINT" NR Variabele bij invoer (MENU)." 2950 PRINT" NU$ Hulpstring bij datum invoer." 2960 PRINT" OMS$ Omschrijving." 2970 PRINT" PDAG$ Hulpstring bij datum." 2980 PRINT" PLAN$ Naam rubriek bij plannen uitgaven." 2990 PRINT" PLANBED Gepland uit te geven bedrag 3000 PRINT" PR Variabele bij printen (1 wel, 0 niet)." 3010 PRINT" R Regelnummer." 3020 PRINT" R$ Hulpstring bij R." 3030 PRINT" RUBR$ Naam rubriek." 3040 PRINT" RUBR1$ Hulpstring bij RUBR$." 3050 PRINT" RUBR2$ Hulpstring bij RUBR$." 3060 PRINT" RUBRBED Rubriekbedrag." 3070 PRINT" RUBRBED1 Hulpvariabele bij RUBRBED." 3080 PRINT" RUBRBED2 Hulpvariabele bij RUBRBED." 3090 PRINT" ST$ Streepjes lijn." 3100 PRINT" T Hulpteller." 3110 PRINT" T1 Hulpvariabele bij T." 3120 PRINT" TOT Totaal bedrag bij optellingen." 3130 PRINT" TOT1 Totaal bedrag bij meerdere optellingen." 3140 PRINT" TOT2 Totaal bedrag bij meerdere optellingen." 3150 PRINT" U(I,J) Matrix bij berekenen uitgaven bij meerdere maanden." 3160 IF PR=0 THEN GOSUB 100 3170 PRINT" VBED Hulpvariabele bij BED (veranderen)." 3180 PRINT" VBED$ Hulpstring bij VBED." 3190 PRINT" VDA Hulpvariabele bij DA (veranderen)." 3200 PRINT" VDA$ Hulpstring bij VDA." 3210 PRINT" VDAG Hulpvariabele bij datum." 3220 PRINT" VOMS$ Hulpstring bij OMS$ (veranderen)." 3230 PRINT" WNR Weeknummer." 3240 PRINT" X Hulpvariabele bij boekmaand/planning." 3250 PRINT:PRINT 3260 PRINT"Overzicht van de files die door het programma worden gebruikt.":PRINT 3270 PRINT" DAT File voor bewaren van de datum." 3280 PRINT" HLP File voor HELP functie." 3290 PRINT" HULP Hulpfile." 3300 PRINT" INKOMST File voor bewaren eindbedrag inkomsten." 3310 PRINT" INKSPE File voor bewaren inkomsten gespecificeerd." 3320 PRINT" PRNT File voor PRINT functie." 3330 PRINT" RUBRIEK File die de rubrieken bevat." 3340 PRINT 3350 PRINT"Het programma produceert zelf ook files. De namen van deze filesbestaan geheel of gedeeltelijk uit 'onderkast' letters." 3360 PRINT:PRINT 3370 PRINT"S. Hoekstra.":PRINT"Akkersplein 46":PRINT"8443 AP Heerenveen.":PRINT:PRINT 3380 GOSUB 650 s." 3360 PRINT:PRINT 3370 PRINT"S. Hoekstra.":PRINT"Akkersplein 46":PRINT"8443 AP Heere