C 64
Anwendung des Monats

»Gut Ziel« mit dem C64

Den richtigen Treffer landete Ernst Merk aus Weißenhorn bei seinem Schützenverein mit seinem Programm zur Auswertung der Schießergebnisse.

Als Mitglied im Ausschuß unseres Schützenvereins war es mir meistens vergönnt, bei der Auswertung der Schießergebnisse zu helfen, um zum Saisonende den Schützenmeister zu ermitteln. Das war bei unserem manuellen System eine recht mühsame Arbeit und lange Rechnerei. Ich wollte deshalb die Rechenarbeit von meinem C 64 erledigen und die Ergebnisse von meinem Epson RX 80 ausdrucken lassen. Das Programm, das ich zu diesem Zweck im Sinn hatte, sollte nicht nur eine Auswertung am Saisonende ermöglichen, sondern zusätzlich einen ständigen Überblick über den Leistungsstand der einzelnen Schützen liefern. Auf den aktuellen Leistungsstand mußten wir bisher verzichten. Es hätte jedesmal einfach zu viel Zeit in Anspruch genommen.

Das Programm, das einige Feierabende an Arbeit kostete, habe ich »Meister« getauft. Seitdem wir es zur Auswertung benutzen, haben wir schon einige Zeit eingespart. Denn, sind alle Schießergebnisse eingegeben, steht einer schnellen Auswertung nichts mehr im Weg. Ermittelt wird der Vereinsmeister und die Rangfolge der Schützen in den einzelnen Disziplinen; zum Beispiel Luftgewehr und Pistole. Vereinsmeister wird, wer die größte Gesamtsumme aus den höchsten zehn Einzelergebnissen hat. Bei Summengleichheit entscheidet das höchste Einzelergebnis. Das funktioniert bei bis zu zehn gleichen Ergebnissen.

In der Gruppenauswertung wird der Vereinsmeister nicht mehr berücksichtigt. Für jedes Mitglied wird die Platznummer ermittelt, wenn die Summe der zehn besten Serien größer als 0 ist. Die Auswertung enthält, neben der Plazierung die Summe und den Durchschnitt der zehn höchsten Serien, den Durchschnitt aller Serien und die Zahl der Wettbewerbstage. Beim Ausdruck werden die zehn besten Serien in Fettdruck dargestellt, da nur diese für die Wertung von Bedeutung sind.

Gute Benutzerführung

Während des Ablaufs sagt das Programm an jeder Stelle dem Anwender, was zu tun ist. Es hat meiner Meinung nach viele Funktionen, welche die Arbeit mit dem Programm erleichtern: Es werden relative Dateien angelegt, um die Schießergebnisse von maximal 400 Schützen mit schnellem Datenzugriff verwalten zu können. Dabei können bis zu 15 Disziplinen vergeben werden. Wird die anfangs festgelegte Dateilänge überschritten, wird die Datei um 25 Datensätze erweitert. Die Zahl der freien und neu organisierten Datensätze wird angezeigt. In der Datei kann nach bestimmten Namen gesucht oder geblättert werden. Haben Sie den gewünschten Datensatz gefunden, können Sie davon eine Hardcopy ausdrucken lassen.

(Ernst Merk/hm)
So sieht die Auswertung aus.

Nach dem Start des Programmes müssen Sie erst eine Datendiskette anlegen. Das Programm fordert Sie selbsttätig dazu auf, wenn es nach RUN keine Datei auf der Diskette findet. Es werden drei Dateien angelegt: SCH.REL (REL), SCH.RELINDEX (SEQ) und GRUPPEN (SEQ).

Auf eine Anleitung kann verzichtet werden, da das Programm eine recht gute Benutzerführung hat. Es ist menügesteuert und zeigt immer die aktuelle Belegung der Funktionstasten an.

(Ernst Merk/hm)
|
10 rem #########################
11 rem #   meister (schuetze)  #
12 rem # geschr. am 24.11.1984 #
13 rem # von   merk  ernst     #
14 rem # 7912  weissenhorn     #
15 rem # kohlstattstrasse 3    #
16 rem #########################
40 goto100
50 close5:open5,4,1:print#5,chr$(27);chr$(69);:close5:open5,4,2:return
60 close5:open5,4,1:print#5,chr$(27);chr$(70);:close5:open5,4,2:return
100 printchr$(147)
140 :
150 :
160 gosub30000
170 close1:open1,8,2,fr$+",l,"+chr$(dl)
180 close3:open3,8,8,fi$+",s,r"
190 gosub10000:rem disk fehler
200 if a1<>0thenrun
210 input#3,in$:mx$=left$(in$,15)
220 mx=val(mx$)
230 :
240 in$(0)=in$
250 printchr$(147)
260 print:print:print
270 print"         Information"
280 print:print
290 print"  Bisherige Dateigroesse: ";mx
300 print:print:
310 print"       Bitte Warten"
320 i=0
330 fori=1tomx
340 :input#3,in$(i),pl%(i),te$(i)
342 :
344 :
346 :print" "itab(7)mxtab(15);in$(i)
350 next:ii=0
351 close3:open3,8,8,"@:gruppen,s,r"
352 fr$="gruppen":fi$=fr$+"index":gosub10000:fr$="sch.rel":fi$=fr$+"index"
353 iffs=1then359
354 ii=ii+1:ifii>15then359
356 input#3,gr$(ii):print"     "gr$(ii)
358 ifst<>64then354:  close3
359 close3:open3,8,8,fi$+",s,r"
360 gosub10000
365 print:print
370 print" Druecken Sie eine Taste"
380 poke198,0:wait198,1
390 rem ----------------
1000 rem  meneu
1010 rem ---------------
1020 :
1030 printchr$(147)"{rvon}      ***   Schuetzen - Datei   ***     {rvof}"
1050 print"   Haupt - Menue :   "
1055 print"  {CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}{CBM-U}"
1060 print
1080 print"   X = Programm-Ende"
1085 print
1087 print"   B = Freier Speicherplatz"
1090 print
1100 print"   G = Anzeigen ges. Datei"
1110 print
1120 print"   S = Suchen"
1122 print
1125 print"   D = Gruppen definieren"
1130 print
1140 print"   N = Neue Namen eingeben"
1142 print
1145 print"   E = Ergebnisse eingeben"
1146 print
1147 print"   A = Ausdruck d.Ergeb."
1150 print
1160 print"   ! = Neue Datei anlegen"
1170 print:print
1180 print"Waehlen Sie ";
1190 poke198,0
1200 get r$:ifr$=""then1200
1210 ifr$="x"thenclose1:gosub15000:close15:printchr$(147)chr$(142):end
1220 ifr$="g"then3500
1225 ifr$="d"then17000
1230 ifr$="s"then3000
1240 ifr$="n"then1800
1245 ifr$="e"then16000
1247 ifr$="a"then20000
1250 ifr$="!"then11000
1260 ifr$="b"thenprintchr$(147)"{rvon}{down}{down}{down}{down}Freier Speicher :{rvof}"fre(o)" Byte":forii=0to3500:next
1270 goto390
1800 rem -----------------------
1810 rem eingabe
1820 rem -----------------------
1821 nn$="":rc$=""
1822 fori=1to5:rc$=rc$+" ... ... ... ... ... ... ... ... ... ...":next
1827 printchr$(147)"{rvon}     Name u. Vorname eingeben :         {down}{rvof}"
1828 bl$="                           "
1830 inputnn$:ifnn$=""then390
1832 printchr$(147)"{rvon} Gruppe  auswaehlen < NR. 1-15 > :      {rvof}";
1833 print"{rvon} Alle anderen Nummern = << RETURN >> !!!{rvof}"
1834 printchr$(19)"{down}{down}{down}{down}{down}{down}****************************************"
1836 forii=1to15:printii,gr$(ii):next:nn$=left$(nn$,25)
1838 printchr$(19)"{down}{down}Name   :  "nn$:print
1840 input"Gruppe :";r$:
1842 te=val(r$):ifte<1orte>15then1000
1844 printchr$(145),gr$(te)
1846 nn$=nn$+left$(bl$,25-len(nn$)):
1850 rc$=nn$+rc$
1860 rem bestimmung satz nr.
1870 lz$="    ":lz=4
1880 i=0
1890 i=i+1:ifi>mxthen1980
1900 :
1910 if in$(i)<>"*"then1890
1920 i$=str$(i):te$(i)=str$(te)
1930 i$=mid$(i$,2)+left$(lz$,lz-len(i$)+1)
1940 in$(i)=i$+nn$
1950 rn$=str$(i)
1960 gosub14000
1970 gosub8000:
1980 if i>=mxthenprintchr$(147);"Datei voll !":goto11500
1990 goto1000
2000 rem -------------------
2010 rem ausgabe 1.datensatz
2020 rem -------------------
2030 printchr$(19)"{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}{down}                                                "
2040 printchr$(19);chr$(17)"{down}{down}{down}{down}{down}****************************************";
2045 print"    Anzeige Datensatz";rn
2050 print:print
2060 print" Nachname   :"nn$
2065 te=val(te$(rn)):te=abs(te)
2070 print" Gruppe     :"gr$(te)
2080 print" Ergebnisse :":print:printsr$:print
2100 print" Summe der 10 h. Ergeb.:        {left}{left}{left}{left}{left}{left}{left}{left}"pl%(i)
2130 return
2500 rem -------------
2510 rem drucken
2520 rem -------------
2530 printchr$(19);"*************** Hardcopy ***************";
2532 foru=1to4:print"                                        ";:next
2540 printchr$(18)"Ist Drucker eingeschaltet Taste druecken";chr$(146);chr$(145);
2550 getr$:ifr$=""then2550
2560 print"                                        ";
2630 close5:open5,4,0
2640 fory=1024to1984step40
2650 bz$=""
2660 forx=0to39
2670 z%=peek(y+x)
2680 ifz%<32thenz%=z%+64
2690 bz$=bz$+chr$(z%)
2700 next
2710 print#5,bz$
2720 next
2730 close5:printchr$(19);:goto3180
3000 rem -------------
3010 rem suchen
3015 rem -------------
3020 n$=""
3030 printchr$(147);
3040 print"{rvon}            ---   Suchen  ---           {rvon}"
3050 print:print
3060 input" Nachname";n$
3070 n=len(n$)
3080 s1=1
3090 fori=s1tomx
3100 :ifin$(i)="*"then3120
3110 :ifmid$(in$(i),5,n)=n$then3180
3120 next
3130 ifs1>1thenprint:printchr$(147)"{rvon} Suche beendet !!{rvof}":print:goto 3150
3140 print:printn$" nicht gefunden":print
3150 print"Druecke Taste"
3160 get r$:ifr$=""then3160
3170 goto 1000
3180 rn$=left$(in$(i),4):printchr$(147)
3185 iflen(rn$)=0then3230
3190 gosub14000 :rem satznr aufteilen
3200 gosub 9000 :rem lesen / aufteilen
3220 gosub 2000 :rem anzeigen
3225 print
3230 printchr$(19)"{rvon}         ---   Datensatz   ---          {rvof}"
3240 w$="                   {rvon} Waehle :{rvof} "
3250 print"(W)eitersuchen  (Z)urueck"
3260 print"(A)endern       (L)oeschen"
3270 print"(D)rucken"
3280 printw$
3290 get r$:ifr$=""then3290
3300 w$="                   {rvon} Warten !{rvof} "
3310 printchr$(145);w$;chr$(17)
3320 if r$="z"then3170
3330 if r$="w"thens1=i+1:goto3090
3340 if r$="a"then6000
3350 if r$="l"thenprintchr$(147);:goto4000
3360 if r$="d"thengoto2500
3370 goto3230
3500 rem ---------------------
3510 rem lesen ges. datei
3520 rem ---------------------
3530 printchr$(147):rn=0
3540 rn=rn+1:i=rn
3550 :hb=int(rn/256)
3560 :lb=rn-hb*256
3570 :gosub9000 :rem lesen
3580 :if er=50 thenprintchr$(147);"Datei-Ende !!!":print:print:print:goto3620
3590 :if f=2thenprintchr$(19)"{down}{down}{down}{down}{down}{rvon} Nicht belegt: Datensatz-Nr. ";rn;"{rvof} ":goto3540
3610 :gosub 2000:rem anzeigen
3620 :print"Druecke Taste"
3630 :get r$:ifr$=""then3630
3640 :r$=""
3650 if er<>50 then3540
3660 goto1000
4000 rem ---------------------
4010 rem loeschen datensatz
4020 rem ---------------------
4030 :
4040 in$(i)="*":pl%(i)=0
4050 rc$="~"
4060 gosub8000:rem speichern
4070 nn$=".":nv$=".":ot$=".":sr$="."
4080 :
4100 goto3220
5000 rem ------------------------------
5010 rem aufteilen datensatz in feldern
5020 rem ------------------------------
5030 :
5050 nn$=mid$(rc$,1,25)
5070 sr$=mid$(rc$,26,200)
5110 return
6000 rem ----------------------
6010 rem - eingabe neue daten
6020 rem ----------------------
6030 :
6040 printchr$(147);:nv$="":ifj=0thenj=1
6045 gosub2000
6050 print"{home}{rvon}     Eingabe - Schiessergebnisse :      {rvof}";
6060 print"                                        ";
6070 print" F7=Zurueck / Cursor ^_ =Schiesstag !!! ";
6080 print"                                        ";
6090 print"{rvon} Schiesstag : {rvof}   {left}{left}{left}"j,"{rvon}Ergebniss : {rvof}     {left}{left}{left}{left}"nv$
6100 getr$
6110 ifr$="{up}"thenj=j-1:ifj<1thenj=1
6120 ifr$="{down}"thenj=j+1:ifj>50thenj=50
6130 ifr$="{f7}"then6300
6140 ifr$=>"0"andr$<="9"thennv$=nv$+r$:iflen(nv$)>3thennv$=left$(nv$,3)
6150 ifr$=chr$(20)andlen(nv$)>0thennv$=left$(nv$,(len(nv$)-1))
6160 ifr$=chr$(13)then6200
6180 goto6050
6200 rem ergebnis einsortieren
6210 nv$=left$(bl$,4-len(nv$))+nv$
6215 ifnv$="    "thennv$=" ..."
6220 ii=(j-1)*4:ifii<1then6240
6230 sr$=mid$(sr$,1,ii)+nv$+mid$(sr$,ii+5):goto6260
6240 sr$=nv$+mid$(sr$,j+4)
6260 gosub2000:rc$=nn$+sr$
6270 nv$="":goto6050
6300 printchr$(147)
6301 print"{rvon}      Bitte haben Sie etwas Geduld !    {rvof}":print:print
6303 goto18000:rem 10 h. ergeb.
6305 gosub14000
6310 gosub8000
6990 goto16213
8000 rem ---------------------------
8010 rem daten speicher auf disk
8020 rem ---------------------------
8030 :
8080 print#15,"p"+chr$(2)+chr$(lb)+chr$(hb)+chr$(1)
8100 print#1,rc$
8110 fs=1:rem flag speichern
8170 return
8180 :
9000 rem ---------------------
9010 rem lesen von disk
9020 rem ---------------------
9030 f=0
9040 print#15,"p"+chr$(2)+chr$(lb)+chr$(hb)+chr$(1)
9050 input#15,er
9060 if er =50then9110
9070 input* 1,226,rc$
9080 ifleft$(rc$,1)="~"thenf=2:goto9110
9090 f=1:
9100 :
9110 goto5000
9999 close15:open15,8,15
10000 rem ------------------
10010 rem disketten-fehler
10020 rem ------------------
10030 printchr$(147)
10040 input#15,a1,a2$,a3,a4
10050 ifa1=0then10180
10055 ifa1=62andfr$="gruppen"thenfs=1:goto 10180
10060 ifa1=62thengosub10200:goto10180
10070 print
10080 printa1,a2$,a3,a4
10090 print:print
10100 print"        Disketten-Fehler"
10110 print:print
10120 print"    Beheben Sie den Fehler"
10130 print"    und druecken Sie"
10140 print"          << F >>"
10160 getr$:ifr$=""then10160
10170 printchr$(147)
10180 return
10190 :
10200 printchr$(147)
10210 print:print:print:print
10220 print" Die Datei        "fr$
10230 print
10240 print" oder             "fi$
10250 print
10260 print" Existieren nicht !"
10270 print:print
10280 print"  L = Datendisk einlegen"
10290 print
10300 print"  N = Datei neu anlegen"
10310 getr$:ifr$=""then10310
10320 ifr$="l"thenreturn
10330 ifr$="n"thengoto11000
10340 goto10310
11000 rem ------------------
11010 rem neue datei anlegen
11020 rem ------------------
11030 :
11040 printchr$(147):print
11050 ifa1=0then11070
11060 print" "
11070 print" Achtung,die gesamte Disk wird "
11080 print" geloescht !!!"
11090 print:print
11100 print" N = neue Datei     X = Ende"
11110 getr$:ifr$=""then11110
11120 ifr$="x"then close1:gosub15000:close15:printchr$(147):end
11130 ifr$<>"n"then11110
11140 print:print"      Bitte Warten !":
11150 print#15,"s:sch.rel"
11160 clr:gosub30000
11170 close1:open1,8,2,fr$+",l,"+chr$(dl)
11180 print"Wieviele Datensaetze soll die Datei"
11190 print"verwalten ";
11200 inputrn$:rn=abs(int(val(rn$)))
11210 ifrn<=mxthen11180
11220 hb=int(rn/256)
11230 lb=rn-hb*256
11240 print" Bitte Warten !"
11250 print#15,"p"+chr$(2)+chr$(lb)+chr$(hb)+chr$(1)
11260 print#1,chr$(255)
11270 mx=rn
11280 mx$=str$(rn)
11290 close1
11300 :
11310 print"{home}                                       "
11320 fori=am+1tomx
11330 :in$(i)="*"
11340 print"{home}     "mx;i,in$(i)
11350 next
11360 in$(0)=mx$:am=1
11380 gosub15040:rem seq datei speichern
11420 run
11430 :
11500 rem ------------------
11510 rem datei erweitern
11520 rem ------------------
11530 am=mx
11540 mx=mx+25
11550 print:print" Erweitern der Datei"
11560 print:print" Bisherige Groesse = "am
11570 print:print" Neue Groesse      = "mx
11580 rn=mx
11590 goto 11220
14000 rem --------------------------
14010 rem auteilen datensatznummer
14020 rem --------------------------
14030 :
14040 rn=abs(int(val(rn$)))
14100 hb=int(rn/256)
14110 lb=rn-hb*256
14130 return
14150 :
15000 rem -----------------------
15010 rem speichern seq datei
15020 rem -----------------------
15030 if fs<>1then15120
15040 close3:open3,8,8,"@:"+fi$+",s,w"
15050 gosub10000:rem fehlerkanal
15060 ifa1<>0then15040
15065 print#3,str$(mx)
15070 fori=1tomx
15080 :print#3,in$(i)","pl%(i)","te$(i)
15085 printchr$(147)i,"n:"in$(i),"s:"pl%(i),"gr:"te$(i)
15090 next
15092 close3:open3,8,8,"@:gruppen,s,w"
15094 fr$="gruppen":fi$="gruppen":gosub10000:fr$="sch.rel":fi$=fr$+"index"
15100 fori=1to15:print#3,gr$(i):next
15110 close3
15120 return
15130 :
15500 rem ---------------------
15510 rem lesen seq datei
15520 rem ---------------------
15530 close3:open3,8,8,"@:"+fi$+",s,r"
15540 gosub10000:rem fehlerkanal
15550 ifa1<>0then15530
15560 fori=1tomx
15570 print#3,in$(i),pl%(i),te$(i)
15580 :print" "i;mx;in$(i)
15590 next
15592 close3:open3,8,8,"gruppen,s,r"
15594 fr$="gruppen:fi$="gruppen":goS10000:fr$="sch.rel":fi$=fr$+"index"
15595 fori=1to15:input#3,gr$(i):printgr$(i):next
15600 close3
15610 return
15620 :
16000 rem -------------------
16010 rem ergebnisse eingeben
16020 rem -------------------
16022 printchr$(147)
16030 goto16250
16100 getr$
16110 ifr$="{f1}"theni=i+1:goto16201
16120 ifr$="{f2}"theni=i-1:goto16206
16130 ifr$="{f7}"andi>0andi<=mxandleft$(in$(i),1)<>"*"then6000
16140 ifr$="{f8}"then1000
16200 goto16100
16201 ifi>mxtheni=i-1:goto16100
16203 ifin$(i)<>"*"then16213
16205 i=i+1:goto16201
16206 ifi<1theni=i+1:goto16100
16208 ifin$(i)<>"*"then16213
16210 i=i-1:goto 16206
16213 printchr$(147):ifi<0ori>mxthen16100
16214 rn$=str$(i):
16215 gosub14000:rem satznr.auft
16220 gosub9000:rem lesen / aufteilen
16240 gosub2000:rem anzeigen
16250 printchr$(19);
16255 print"{rvon}        ---   Eingabe - Meneu  ---      {rvof}";
16260 print" F1 = Naechster Datensatz"
16270 print" F2 = Letzter   Datensatz"
16280 print" F7 = Datensatz aendern"
16285 print" F8 = Zurueck Hauptmenue"
16290 print"{rvon} Waehle :{rvof}"
16300 goto16100
17000 rem--------------------
17010 rem gruppen definieren
17020 rem--------------------
17030 printchr$(147);:fs=1
17040 print"{rvon}           Gruppen definieren :         {rvof}":print"{down}{down}{down}{down}";
17045 print"****************************************"
17050 forii=1to15
17060 printii,gr$(ii)
17070 next
17080 printchr$(19)"{down} F1 = Eingabe "
17090 print" F7 = Zurueck Haupt-Menue"
17095 print" F2 = Gruppe loeschen "
17098 print"{rvon} Waehle:{rvof}"
17100 getr$:ifr$=""then17100
17110 ifr$="{f7}"then1000
17120 ifr$="{f2}"then17500
17130 ifr$<>"{f1}"then17100
17140 forii=1to15:ifgr$(ii)="."then17160
17150 next:printchr$(147)"{down}{rvon} Alle Gruppen belegt !{rvof}":goto17080
17160 printchr$(147)"{down}{down} Welcher Name :":print
17170 inputgr$(ii):goto17030
17500 printchr$(19);:forii=1to6:print"                                        ";:next
17510 printchr$(19):print" Welche Gruppe soll geloescht werden :"
17520 input"{rvon} NR.: {rvof}";r$:ii=val(r$):ifii>15orii<1then17030
17530 gr$(ii)=".":goto17030
18000 rem-------------------------
18010 rem erm. 10 hoechsten serien
18020 rem-------------------------
18022 h%=0:pl%=0:
18025 forii=1to200step4
18030 ifii=1thensr$=" "+mid$(sr$,ii+1):goto18038
18031 sr$=left$(sr$,ii-1)+" "+mid$(sr$,ii+1)
18038 next
18040 fori1=1to10
18050 forii=1to200step4
18060 r%=val(mid$(sr$,ii,4))
18070 ifr%>h%thenh%=r%:hh%=ii
18080 next:ifhh%=0then18125
18090 pl%=pl%+h%
18092 h$=str$(h%)
18093 h$=left$(bl$,4-len(h$))+h$
18094 h$="-"+mid$(h$,2,3)
18100 ifhh%=1thensr$=h$+mid$(sr$,5):goto18120
18110 sr$=left$(sr$,hh%-1)+h$+mid$(sr$,hh%+4)
18120 h%=0:h$="":hh%=0
18125 next
18130 pl%(i)=pl%:rc$=nn$+sr$:
18140 goto6305
20000 rem---------
20010 rem ausdruck
20020 rem---------
20030 close1:gosub15000
20035 close1:open1,8,2,fr$+",l,"+chr$(dl)
20040 printchr$(147)"{rvon}      ###   Drucker-Ausgabe   ###       {rvof}"
20050 print:print:print"{rvon}        Bitte Warten !!!                {rvof}";
20100 printchr$(145)" Bitte waehlen Sie :                    ":print:print
20110 print" F7 = Zurueck Hauptmene":print
20120 print" 1  = Gesammt Ausdruck":print
20130 print" 2  = Ausdruck Gruppe von / bis":print
20135 print:print"{rvon} Bitte Drucker einschalten !!!        {rvof}":print
20140 getr$:ifr$=""then20140
20145 close5:open5,8,1:print#5,chr$(27);chr$(64);:close5
20150 ifr$="{f7}"then1000
20160 ifr$="1"then20260
20170 ifr$<>"2"then20140
20200 printchr$(147)"{rvon}         Ausdruck :                     {rvof}"
20210 forii=1to15:printii,gr$(ii):next:print:print
20220 input"Nr.-Von :";r$:v%=abs(int(val(r$)))
20230 input"Nr.-Bis :";r$:b%=abs(int(val(r$)))
20240 ifv%<1orv%>15orb%<1orb%>15orv%>b%then20200
20250 goto20300
20260 v%=1:b%=15:rr$="vm":rem ges. ausdruck
20300 close5:gosub50
20310 print#5,"########################################";
20320 print#5,"########################################";
20330 print#5,"#                    Schuetzenverein Obe";
20340 print#5,"rreichenbach e.V.                      #";
20350 print#5,"########################################";
20360 print#5,"########################################"
20370 gosub60:print#5,chr$(10):print:r$=""
20380 input"Datum :";r$
20390 print#5,"Schiesssaison bis : ";r$;:gosub50:print#5,chr$(10):print#5,,,
20400 ifrr$="vm"thenprint#5,"******* VEREINS-MEISTER : *******"
20410 ifrr$="vm"thengosub50:print#5,,;:close5:z%=0:gosub22000:gosub60:close5
20500 fori1=v%tob%
20510 ifgr$(i1)="."then20600
20520 close5:open5,4,7
20530 gosub50:print#5:print#5,gr$(i1);" :":gosub60:close5:open5,4,7
20535 h=len(gr$(i1))+2
20540 forii=1toh:print#5,"{CBM-U}";:next:
20550 print#5:close5:z%=i1
20560 gosub22000
20600 next:
20610 gosub50:print#5,
20620 forii=1to80:print#5,"+";:next
20630 print#5,"+  COMMODORE - COMPUTER - Sotfware von M";
20640 print#5,"ERK ERNST / geschrieben am 24.11.1984  +";
20650 forii=1to80:print#5,"+";:next:print#5,chr$(10):close5
20660 goto29999
22000 rem -----------
22010 rem platzierung
22020 rem -----------
22030 f%=1:
22040 h%=0:hh%=0:iz=0:hf=0:w=0:
22050 fori=1tomx
22060 tc%=val(te$(i))
22070 ifz%=0thentc%=0
22080 ifpl%(i)>h%andtc%=z%thenh%=pl%(i):iz=i
22085 next:
22090 ifh%=0thenreturn
22095 tt(0,0)=iz:tt(0,11)=pl%(iz):pl%(iz)=0:hh%=hh%+1
22110 forw=1tomx
22120 tc%=val(te$(w))
22130 ifz%=0thentc%=0
22140 ifpl%(w)=h%andtc%=z%thengoto22145
22141 goto22150
22145 i=w:gosub31000:hh%=hh%+1:ifhh%>9then22200
22150 next
22200 ifhh%=1theni=tt(0,0):pl%(i)=tt(0,11):gosub50000:goto22210
22205 iz=hh%:i=tt(0,0):pl%(i)=tt(0,10):hh%=0:j%=1:gosub31060:hh%=iz
22208 goto23000
22210 ifz%=0then29998
22220 f%=f%+1
22230 iff%>mxthen29998
22240 goto22040
23000 rem ---- weitere sortierstufe
23020 fory=0tohh%
23030 forx=1to8
23040 foru=x+1to9
23050 iftt(y,x)<tt(y,u)thenh%=tt(y,x):tt(y,x)=tt(y,u):tt(y,u)=h%
23060 next:next:next
23100 fory=0tohh%
23110 h%=0
23120 forx=9to1step-1
23130 s(y)=s(y)+(2^h%*tt(y,x))
23140 h%=h%+1
23150 next:next
23200 hf=0
23210 fory=0tohh%
23220 ifs(y)>hfthenhf=s(y):iz=y
23230 next:u=0
23240 i=tt(iz,0):pl%(i)=tt(iz,11):s(iz)=0
23250 gosub50000
23300 fory=0tohh%
23310 ifs(y)=hftheni=tt(y,0):pl%(i)=tt(y,11):s(y)=0:gosub50:close5:gosub50000:u=u+1
23320 next
23400 fory=0tohh%
23410 ifs(y)>0andz%=0theni=tt(y,0):pl%(i)=tt(y,11):s(y)=0:goto23430
23420 ifs(y)>0andz%>0thenf%=f%+1:goto23200
23430 next
23500 fory=0to10
23510 forx=0to10
23520 tt(y,x)=0
23530 next:next
23540 f%=f%+1:f%=f%+u
23550 ifz%<>0then22040
29998 return
29999 close1:close15:printchr$(147)chr$(142):end
30000 rem ----------------
30010 rem initialisierung
30020 rem ----------------
30040 dl=226:rem datensatzlaenge
30050 rn=1
30070 bl$="                               "
30080 bl=len(bl$)
30090 print"{red}"chr$(14):poke53281,10:poke53280,10
30100 fr$="sch.rel"
30110 fi$=fr$+"index"
30120 dimin$(400),te$(400),pl%(400),gr$(16),tt(10,12)
30125 fori=1to15:gr$(i)=".":next
30130 fori=828to922
30140 read x:pokei,x:s=s+x:next
30150 data169,71,160,3,141,8,3,140,9,3,96,32
30160 data115,0,201,133,240,6,32,121,0,76,231,167
30170 data32,115,0,201,172,240,6,32,191,171,76,174
30180 data167,32,155,183,32,30,225,32,253,174,32,158
30190 data183,138,72,32,253,174,32,139,176,133,73,132
30200 data74,32,163,182,104,32,117,180,160,2,185,97
30210 data0,145,73,136,16,248,200,32,18,225,145,98
30220 data200,196,97,208,246,32,204,255,76,174,167
30230 ifs<>11096thenprint"fehler in datas !!":end
30240 sys 828
30250 close15:open15,8,15
30330 return
31000 rem -----------
31010 rem 10 h.ergebnisse von schuetze
31020 rem -----------
31050 tt(hh%,0)=i:tt(hh%,11)=pl%(i):j%=1:pl%(i)=0
31060 rn$=left$(in$(i),4)
31065 close1:open1,8,2,fr$+",l,"+chr$(dl)
31070 gosub14000:gosub9000:gosub5000
31080 forii=1to200step4
31090 ifmid$(sr$,ii,1)<>"-"then31120
31100 tt(hh%,j%)=val(mid$(sr$,ii+1,3))
31110 j%=j%+1
31120 next
31130 return
50000 rem ---------------
50010 rem ausdruck/papier
50020 rem ---------------
50025 ds%=0:d1%=0:d2%=0:lz=0
50030 rn$=left$(in$(i),4)
50040 gosub14000
50050 gosub9000
50100 open5,4,2
50110 print#5,chr$(10)
50120 ifz%<>0thengosub50:print#5,f%;" Platz :  ";
50130 print#5,,nn$;:gosub60:print#5,chr$(10)
50240 forw=1to200step4
50250 ifw=81orw=161thenprint#5,chr$(10);
50260 w$=mid$(sr$,w,4)
50270 ifleft$(w$,1)="-"thengosub50:print#5," ";right$(w$,3);:gosub60
52280 ifleft$(w$,1)="-"thend1%=d1%+1:goto52360
52290 ifright$(w$,3)="..."thenprint#5," ";right$(w$,3);:goto52360
52300 fs=val(right$(w$,3))
52305 iffs=0thenlz=lz+1
52310 iffs>0thends%=ds%+fs:d2%=d2%+1
52320 print#5," ";right$(w$,3);
52360 next
52370 ds%=ds%+pl%(i):ii=int(pl%(i)/d1%*100+.5)/100
52380 h=int(ds%/(d1%+d2%)*100+.5)/100
52400 print#5,chr$(10)
52410 print#5,"Summe    aus den hoechsten 10 Serien :";pl%(i);chr$(10);
52420 print#5,"Durchschnitt der hoechsten 10 Serien :";ii;chr$(10);
52430 print#5,"Durchschnitt aller Serien            :";h;chr$(10);
52440 print#5,"Anzahl der Schiess-Abende            :";(d1%+d2%+lz);chr$(10);
52450 print#5,chr$(10);
52460 close5:printchr$(147);
52470 gosub2000
52480 pl%(i)=0
52490 return
 10 REM ######################### 
 11 REM #   MEISTER (SCHUETZE)  # 
 12 REM # GESCHR. AM 24.11.1984 # 
 13 REM # VON   MERK  ERNST     # 
 14 REM # 7912  WEISSENHORN     # 
 15 REM # KOHLSTATTSTRASSE 3    # 
 16 REM ######################### 
 40 GOTO 100 
 50 CLOSE 5:OPEN 5,4,1:PRINT#5,CHR$ (27);CHR$ (69);:CLOSE 5:OPEN 5,4,2:RETURN 
 60 CLOSE 5:OPEN 5,4,1:PRINT#5,CHR$ (27);CHR$ (70);:CLOSE 5:OPEN 5,4,2:RETURN 
 100 PRINTCHR$ (147) 
 140 : 
 150 : 
 160 GOSUB 30000 
 170 CLOSE 1:OPEN 1,8,2,FR$+",L,"+CHR$ (DL) 
 180 CLOSE 3:OPEN 3,8,8,FI$+",S,R" 
 190 GOSUB 10000:REM DISK FEHLER 
 200 IF A1<>0 THENRUN 
 210 INPUT#3,IN$:MX$=LEFT$ (IN$,15) 
 220 MX=VAL (MX$) 
 230 : 
 240 IN$(0)=IN$ 
 250 PRINTCHR$ (147) 
 260 PRINT:PRINT:PRINT 
 270 PRINT"{9SPACE}INFORMATION" 
 280 PRINT:PRINT 
 290 PRINT"{2SPACE}BISHERIGE DATEIGROESSE: ";MX 
 300 PRINT:PRINT: 
 310 PRINT"{7SPACE}BITTE WARTEN" 
 320 I=0 
 330 FOR I=1 TOMX 
 340 :INPUT#3,IN$(I),PL%(I),TE$(I) 
 342 : 
 344 : 
 346 :PRINT" "ITAB( 7)MXTAB( 15);IN$(I) 
 350 NEXT :II=0 
 351 CLOSE 3:OPEN 3,8,8,"@:GRUPPEN,S,R" 
 352 FR$="GRUPPEN":FI$=FR$+"INDEX":GOSUB 10000:FR$="SCH.REL":FI$=FR$+"INDEX" 
 353 IF FS=1 THEN359 
 354 II=II+1:IF II>15 THEN359 
 356 INPUT#3,GR$(II):PRINT"{5SPACE}"GR$(II) 
 358 IF ST<>64 THEN354:  CLOSE 3 
 359 CLOSE 3:OPEN 3,8,8,FI$+",S,R" 
 360 GOSUB 10000 
 365 PRINT:PRINT 
 370 PRINT" DRUECKEN SIE EINE TASTE" 
 380 POKE 198,0:WAIT 198,1 
 390 REM ---------------- 
 1000 REM  MENEU 
 1010 REM --------------- 
 1020 : 
 1030 PRINTCHR$ (147)"{RVSON,6SPACE}***{3SPACE}SCHUETZEN - DATEI{3SPACE}***{5SPACE,RVOFF}" 
 1050 PRINT"{3SPACE}HAUPT - MENUE :{3SPACE}" 
 1055 PRINT"{2SPACE}UUUUUUUUUUUUUUUUUU" 
 1060 PRINT 
 1080 PRINT"{3SPACE}X = PROGRAMM-ENDE" 
 1085 PRINT 
 1087 PRINT"{3SPACE}B = FREIER SPEICHERPLATZ" 
 1090 PRINT 
 1100 PRINT"{3SPACE}G = ANZEIGEN GES. DATEI" 
 1110 PRINT 
 1120 PRINT"{3SPACE}S = SUCHEN" 
 1122 PRINT 
 1125 PRINT"{3SPACE}D = GRUPPEN DEFINIEREN" 
 1130 PRINT 
 1140 PRINT"{3SPACE}N = NEUE NAMEN EINGEBEN" 
 1142 PRINT 
 1145 PRINT"{3SPACE}E = ERGEBNISSE EINGEBEN" 
 1146 PRINT 
 1147 PRINT"{3SPACE}A = AUSDRUCK D.ERGEB." 
 1150 PRINT 
 1160 PRINT"{3SPACE}! = NEUE DATEI ANLEGEN" 
 1170 PRINT:PRINT 
 1180 PRINT"WAEHLEN SIE "; 
 1190 POKE 198,0 
 1200 GET R$:IF R$="" THEN1200 
 1210 IF R$="X" THENCLOSE 1:GOSUB 15000:CLOSE 15:PRINTCHR$ (147)CHR$ (142):END 
 1220 IF R$="G" THEN3500 
 1225 IF R$="D" THEN17000 
 1230 IF R$="S" THEN3000 
 1240 IF R$="N" THEN1800 
 1245 IF R$="E" THEN16000 
 1247 IF R$="A" THEN20000 
 1250 IF R$="!" THEN11000 
 1260 IF R$="B" THENPRINTCHR$ (147)"{RVSON,4DOWN}FREIER SPEICHER :{RVOFF}"FRE (O)" BYTE":FOR II=0 TO3500:NEXT 
 1270 GOTO 390 
 1800 REM ----------------------- 
 1810 REM EINGABE 
 1820 REM ----------------------- 
 1821 NN$="":RC$="" 
 1822 FOR I=1 TO5:RC$=RC$+" ... ... ... ... ... ... ... ... ... ...":NEXT 
 1827 PRINTCHR$ (147)"{RVSON,5SPACE}NAME U. VORNAME EINGEBEN :{9SPACE,DOWN,RVOFF}" 
 1828 BL$="{27SPACE}" 
 1830 INPUTNN$:IF NN$="" THEN390 
 1832 PRINTCHR$ (147)"{RVSON,SPACE}GRUPPE{2SPACE}AUSWAEHLEN < NR. 1-15 > :{6SPACE,RVOFF}"; 
 1833 PRINT"{RVSON,SPACE}ALLE ANDEREN NUMMERN = << RETURN >> !!!{RVOFF}" 
 1834 PRINTCHR$ (19)"{6DOWN}****************************************" 
 1836 FOR II=1 TO15:PRINTII,GR$(II):NEXT :NN$=LEFT$ (NN$,25) 
 1838 PRINTCHR$ (19)"{2DOWN}NAME{3SPACE}:{2SPACE}"NN$:PRINT 
 1840 INPUT"GRUPPE :";R$: 
 1842 TE=VAL (R$):IF TE<1OR TE>15 THEN1000 
 1844 PRINTCHR$ (145),GR$(TE) 
 1846 NN$=NN$+LEFT$ (BL$,25-LEN (NN$)): 
 1850 RC$=NN$+RC$ 
 1860 REM BESTIMMUNG SATZ NR. 
 1870 LZ$="{4SPACE}":LZ=4 
 1880 I=0 
 1890 I=I+1:IF I>MX THEN1980 
 1900 : 
 1910 IF IN$(I)<>"*" THEN1890 
 1920 I$=STR$ (I):TE$(I)=STR$ (TE) 
 1930 I$=MID$ (I$,2)+LEFT$ (LZ$,LZ-LEN (I$)+1) 
 1940 IN$(I)=I$+NN$ 
 1950 RN$=STR$ (I) 
 1960 GOSUB 14000 
 1970 GOSUB 8000: 
 1980 IF I>=MX THENPRINTCHR$ (147);"DATEI VOLL !":GOTO 11500 
 1990 GOTO 1000 
 2000 REM ------------------- 
 2010 REM AUSGABE 1.DATENSATZ 
 2020 REM ------------------- 
 2030 PRINTCHR$ (19)"{11DOWN,48SPACE}" 
 2040 PRINTCHR$ (19);CHR$ (17)"{5DOWN}****************************************"; 
 2045 PRINT"{4SPACE}ANZEIGE DATENSATZ";RN 
 2050 PRINT:PRINT 
 2060 PRINT" NACHNAME{3SPACE}:"NN$ 
 2065 TE=VAL (TE$(RN)):TE=ABS (TE) 
 2070 PRINT" GRUPPE{5SPACE}:"GR$(TE) 
 2080 PRINT" ERGEBNISSE :":PRINT:PRINTSR$:PRINT 
 2100 PRINT" SUMME DER 10 H. ERGEB.:{8SPACE,8LEFT}"PL%(I) 
 2130 RETURN 
 2500 REM ------------- 
 2510 REM DRUCKEN 
 2520 REM ------------- 
 2530 PRINTCHR$ (19);"*************** HARDCOPY ***************"; 
 2532 FOR U=1 TO4:PRINT"{40SPACE}";:NEXT 
 2540 PRINTCHR$ (18)"IST DRUCKER EINGESCHALTET TASTE DRUECKEN";CHR$ (146);CHR$ (145); 
 2550 GET R$:IF R$="" THEN2550 
 2560 PRINT"{40SPACE}"; 
 2630 CLOSE 5:OPEN 5,4,0 
 2640 FOR Y=1024 TO1984STEP 40 
 2650 BZ$="" 
 2660 FOR X=0 TO39 
 2670 Z%=PEEK (Y+X) 
 2680 IF Z%<32 THENZ%=Z%+64 
 2690 BZ$=BZ$+CHR$ (Z%) 
 2700 NEXT 
 2710 PRINT#5,BZ$ 
 2720 NEXT 
 2730 CLOSE 5:PRINTCHR$ (19);:GOTO 3180 
 3000 REM ------------- 
 3010 REM SUCHEN 
 3015 REM ------------- 
 3020 N$="" 
 3030 PRINTCHR$ (147); 
 3040 PRINT"{RVSON,12SPACE}---{3SPACE}SUCHEN{2SPACE}---{11SPACE,RVSON}" 
 3050 PRINT:PRINT 
 3060 INPUT" NACHNAME";N$ 
 3070 N=LEN (N$) 
 3080 S1=1 
 3090 FOR I=S1 TOMX 
 3100 :IF IN$(I)="*" THEN3120 
 3110 :IF MID$ (IN$(I),5,N)=N$ THEN3180 
 3120 NEXT 
 3130 IF S1>1 THENPRINT:PRINTCHR$ (147)"{RVSON,SPACE}SUCHE BEENDET !!{RVOFF}":PRINT:GOTO 3150 
 3140 PRINT:PRINTN$" NICHT GEFUNDEN":PRINT 
 3150 PRINT"DRUECKE TASTE" 
 3160 GET R$:IF R$="" THEN3160 
 3170 GOTO 1000 
 3180 RN$=LEFT$ (IN$(I),4):PRINTCHR$ (147) 
 3185 IF LEN (RN$)=0 THEN3230 
 3190 GOSUB 14000 :REM SATZNR AUFTEILEN 
 3200 GOSUB 9000 :REM LESEN / AUFTEILEN 
 3220 GOSUB 2000 :REM ANZEIGEN 
 3225 PRINT 
 3230 PRINTCHR$ (19)"{RVSON,9SPACE}---{3SPACE}DATENSATZ{3SPACE}---{10SPACE,RVOFF}" 
 3240 W$="{19SPACE,RVSON,SPACE}WAEHLE :{RVOFF,SPACE}" 
 3250 PRINT"(W)EITERSUCHEN{2SPACE}(Z)URUECK" 
 3260 PRINT"(A)ENDERN{7SPACE}(L)OESCHEN" 
 3270 PRINT"(D)RUCKEN" 
 3280 PRINTW$ 
 3290 GET R$:IF R$="" THEN3290 
 3300 W$="{19SPACE,RVSON,SPACE}WARTEN !{RVOFF,SPACE}" 
 3310 PRINTCHR$ (145);W$;CHR$ (17) 
 3320 IF R$="Z" THEN3170 
 3330 IF R$="W" THENS1=I+1:GOTO 3090 
 3340 IF R$="A" THEN6000 
 3350 IF R$="L" THENPRINTCHR$ (147);:GOTO 4000 
 3360 IF R$="D" THENGOTO 2500 
 3370 GOTO 3230 
 3500 REM --------------------- 
 3510 REM LESEN GES. DATEI 
 3520 REM --------------------- 
 3530 PRINTCHR$ (147):RN=0 
 3540 RN=RN+1:I=RN 
 3550 :HB=INT (RN/256) 
 3560 :LB=RN-HB*256 
 3570 :GOSUB 9000 :REM LESEN 
 3580 :IF ER=50  THENPRINTCHR$ (147);"DATEI-ENDE !!!":PRINT:PRINT:PRINT:GOTO 3620 
 3590 :IF F=2 THENPRINTCHR$ (19)"{5DOWN,RVSON,SPACE}NICHT BELEGT: DATENSATZ-NR. ";RN;"{RVOFF,SPACE}":GOTO 3540 
 3610 :GOSUB 2000:REM ANZEIGEN 
 3620 :PRINT"DRUECKE TASTE" 
 3630 :GET R$:IF R$="" THEN3630 
 3640 :R$="" 
 3650 IF ER<>50  THEN3540 
 3660 GOTO 1000 
 4000 REM --------------------- 
 4010 REM LOESCHEN DATENSATZ 
 4020 REM --------------------- 
 4030 : 
 4040 IN$(I)="*":PL%(I)=0 
 4050 RC$="" 
 4060 GOSUB 8000:REM SPEICHERN 
 4070 NN$=".":NV$=".":OT$=".":SR$="." 
 4080 : 
 4100 GOTO 3220 
 5000 REM ------------------------------ 
 5010 REM AUFTEILEN DATENSATZ IN FELDERN 
 5020 REM ------------------------------ 
 5030 : 
 5050 NN$=MID$ (RC$,1,25) 
 5070 SR$=MID$ (RC$,26,200) 
 5110 RETURN 
 6000 REM ---------------------- 
 6010 REM - EINGABE NEUE DATEN 
 6020 REM ---------------------- 
 6030 : 
 6040 PRINTCHR$ (147);:NV$="":IF J=0 THENJ=1 
 6045 GOSUB 2000 
 6050 PRINT"{HOME,RVSON,5SPACE}EINGABE - SCHIESSERGEBNISSE :{6SPACE,RVOFF}"; 
 6060 PRINT"{40SPACE}"; 
 6070 PRINT" F7=ZURUECK / CURSOR ↑← =SCHIESSTAG !!! "; 
 6080 PRINT"{40SPACE}"; 
 6090 PRINT"{RVSON,SPACE}SCHIESSTAG :{SPACE,RVOFF,3SPACE,3LEFT}"J,"{RVSON}ERGEBNISS :{SPACE,RVOFF,5SPACE,4LEFT}"NV$ 
 6100 GET R$ 
 6110 IF R$="{UP}" THENJ=J-1:IF J<1 THENJ=1 
 6120 IF R$="{DOWN}" THENJ=J+1:IF J>50 THENJ=50 
 6130 IF R$="{F7}" THEN6300 
 6140 IF R$=>"0"AND R$<="9" THENNV$=NV$+R$:IF LEN (NV$)>3 THENNV$=LEFT$ (NV$,3) 
 6150 IF R$=CHR$ (20)AND LEN (NV$)>0 THENNV$=LEFT$ (NV$,(LEN (NV$)-1)) 
 6160 IF R$=CHR$ (13) THEN6200 
 6180 GOTO 6050 
 6200 REM ERGEBNIS EINSORTIEREN 
 6210 NV$=LEFT$ (BL$,4-LEN (NV$))+NV$ 
 6215 IF NV$="{4SPACE}" THENNV$=" ..." 
 6220 II=(J-1)*4:IF II<1 THEN6240 
 6230 SR$=MID$ (SR$,1,II)+NV$+MID$ (SR$,II+5):GOTO 6260 
 6240 SR$=NV$+MID$ (SR$,J+4) 
 6260 GOSUB 2000:RC$=NN$+SR$ 
 6270 NV$="":GOTO 6050 
 6300 PRINTCHR$ (147) 
 6301 PRINT"{RVSON,6SPACE}BITTE HABEN SIE ETWAS GEDULD !{4SPACE,RVOFF}":PRINT:PRINT 
 6303 GOTO 18000:REM 10 H. ERGEB. 
 6305 GOSUB 14000 
 6310 GOSUB 8000 
 6990 GOTO 16213 
 8000 REM --------------------------- 
 8010 REM DATEN SPEICHER AUF DISK 
 8020 REM --------------------------- 
 8030 : 
 8080 PRINT#15,"P"+CHR$ (2)+CHR$ (LB)+CHR$ (HB)+CHR$ (1) 
 8100 PRINT#1,RC$ 
 8110 FS=1:REM FLAG SPEICHERN 
 8170 RETURN 
 8180 : 
 9000 REM --------------------- 
 9010 REM LESEN VON DISK 
 9020 REM --------------------- 
 9030 F=0 
 9040 PRINT#15,"P"+CHR$ (2)+CHR$ (LB)+CHR$ (HB)+CHR$ (1) 
 9050 INPUT#15,ER 
 9060 IF ER =50 THEN9110 
 9070 INPUT* 1,226,RC$ 
 9080 IF LEFT$ (RC$,1)="" THENF=2:GOTO 9110 
 9090 F=1: 
 9100 : 
 9110 GOTO 5000 
 9999 CLOSE 15:OPEN 15,8,15 
 10000 REM ------------------ 
 10010 REM DISKETTEN-FEHLER 
 10020 REM ------------------ 
 10030 PRINTCHR$ (147) 
 10040 INPUT#15,A1,A2$,A3,A4 
 10050 IF A1=0 THEN10180 
 10055 IF A1=62AND FR$="GRUPPEN" THENFS=1:GOTO 10180 
 10060 IF A1=62 THENGOSUB 10200:GOTO 10180 
 10070 PRINT 
 10080 PRINTA1,A2$,A3,A4 
 10090 PRINT:PRINT 
 10100 PRINT"{8SPACE}DISKETTEN-FEHLER" 
 10110 PRINT:PRINT 
 10120 PRINT"{4SPACE}BEHEBEN SIE DEN FEHLER" 
 10130 PRINT"{4SPACE}UND DRUECKEN SIE" 
 10140 PRINT"{10SPACE}<< F >>" 
 10160 GET R$:IF R$="" THEN10160 
 10170 PRINTCHR$ (147) 
 10180 RETURN 
 10190 : 
 10200 PRINTCHR$ (147) 
 10210 PRINT:PRINT:PRINT:PRINT 
 10220 PRINT" DIE DATEI{8SPACE}"FR$ 
 10230 PRINT 
 10240 PRINT" ODER{13SPACE}"FI$ 
 10250 PRINT 
 10260 PRINT" EXISTIEREN NICHT !" 
 10270 PRINT:PRINT 
 10280 PRINT"{2SPACE}L = DATENDISK EINLEGEN" 
 10290 PRINT 
 10300 PRINT"{2SPACE}N = DATEI NEU ANLEGEN" 
 10310 GET R$:IF R$="" THEN10310 
 10320 IF R$="L" THENRETURN 
 10330 IF R$="N" THENGOTO 11000 
 10340 GOTO 10310 
 11000 REM ------------------ 
 11010 REM NEUE DATEI ANLEGEN 
 11020 REM ------------------ 
 11030 : 
 11040 PRINTCHR$ (147):PRINT 
 11050 IF A1=0 THEN11070 
 11060 PRINT" " 
 11070 PRINT" ACHTUNG,DIE GESAMTE DISK WIRD " 
 11080 PRINT" GELOESCHT !!!" 
 11090 PRINT:PRINT 
 11100 PRINT" N = NEUE DATEI{5SPACE}X = ENDE" 
 11110 GET R$:IF R$="" THEN11110 
 11120 IF R$="X" THEN CLOSE 1:GOSUB 15000:CLOSE 15:PRINTCHR$ (147):END 
 11130 IF R$<>"N" THEN11110 
 11140 PRINT:PRINT"{6SPACE}BITTE WARTEN !": 
 11150 PRINT#15,"S:SCH.REL" 
 11160 CLR :GOSUB 30000 
 11170 CLOSE 1:OPEN 1,8,2,FR$+",L,"+CHR$ (DL) 
 11180 PRINT"WIEVIELE DATENSAETZE SOLL DIE DATEI" 
 11190 PRINT"VERWALTEN "; 
 11200 INPUTRN$:RN=ABS (INT (VAL (RN$))) 
 11210 IF RN<=MX THEN11180 
 11220 HB=INT (RN/256) 
 11230 LB=RN-HB*256 
 11240 PRINT" BITTE WARTEN !" 
 11250 PRINT#15,"P"+CHR$ (2)+CHR$ (LB)+CHR$ (HB)+CHR$ (1) 
 11260 PRINT#1,CHR$ (255) 
 11270 MX=RN 
 11280 MX$=STR$ (RN) 
 11290 CLOSE 1 
 11300 : 
 11310 PRINT"{HOME,39SPACE}" 
 11320 FOR I=AM+1 TOMX 
 11330 :IN$(I)="*" 
 11340 PRINT"{HOME,5SPACE}"MX;I,IN$(I) 
 11350 NEXT 
 11360 IN$(0)=MX$:AM=1 
 11380 GOSUB 15040:REM SEQ DATEI SPEICHERN 
 11420 RUN 
 11430 : 
 11500 REM ------------------ 
 11510 REM DATEI ERWEITERN 
 11520 REM ------------------ 
 11530 AM=MX 
 11540 MX=MX+25 
 11550 PRINT:PRINT" ERWEITERN DER DATEI" 
 11560 PRINT:PRINT" BISHERIGE GROESSE = "AM 
 11570 PRINT:PRINT" NEUE GROESSE{6SPACE}= "MX 
 11580 RN=MX 
 11590 GOTO 11220 
 14000 REM -------------------------- 
 14010 REM AUTEILEN DATENSATZNUMMER 
 14020 REM -------------------------- 
 14030 : 
 14040 RN=ABS (INT (VAL (RN$))) 
 14100 HB=INT (RN/256) 
 14110 LB=RN-HB*256 
 14130 RETURN 
 14150 : 
 15000 REM ----------------------- 
 15010 REM SPEICHERN SEQ DATEI 
 15020 REM ----------------------- 
 15030 IF FS<>1 THEN15120 
 15040 CLOSE 3:OPEN 3,8,8,"@:"+FI$+",S,W" 
 15050 GOSUB 10000:REM FEHLERKANAL 
 15060 IF A1<>0 THEN15040 
 15065 PRINT#3,STR$ (MX) 
 15070 FOR I=1 TOMX 
 15080 :PRINT#3,IN$(I)","PL%(I)","TE$(I) 
 15085 PRINTCHR$ (147)I,"N:"IN$(I),"S:"PL%(I),"GR:"TE$(I) 
 15090 NEXT 
 15092 CLOSE 3:OPEN 3,8,8,"@:GRUPPEN,S,W" 
 15094 FR$="GRUPPEN":FI$="GRUPPEN":GOSUB 10000:FR$="SCH.REL":FI$=FR$+"INDEX" 
 15100 FOR I=1 TO15:PRINT#3,GR$(I):NEXT 
 15110 CLOSE 3 
 15120 RETURN 
 15130 : 
 15500 REM --------------------- 
 15510 REM LESEN SEQ DATEI 
 15520 REM --------------------- 
 15530 CLOSE 3:OPEN 3,8,8,"@:"+FI$+",S,R" 
 15540 GOSUB 10000:REM FEHLERKANAL 
 15550 IF A1<>0 THEN15530 
 15560 FOR I=1 TOMX 
 15570 PRINT#3,IN$(I),PL%(I),TE$(I) 
 15580 :PRINT" "I;MX;IN$(I) 
 15590 NEXT 
 15592 CLOSE 3:OPEN 3,8,8,"GRUPPEN,S,R" 
 15594 FR$="GRUPPEN:FI$="GRUPPEN":GOS10000:FR$="SCH.REL":FI$=FR$+"INDEX" 
 15595 FOR I=1 TO15:INPUT#3,GR$(I):PRINTGR$(I):NEXT 
 15600 CLOSE 3 
 15610 RETURN 
 15620 : 
 16000 REM ------------------- 
 16010 REM ERGEBNISSE EINGEBEN 
 16020 REM ------------------- 
 16022 PRINTCHR$ (147) 
 16030 GOTO 16250 
 16100 GET R$ 
 16110 IF R$="{F1}" THENI=I+1:GOTO 16201 
 16120 IF R$="{F2}" THENI=I-1:GOTO 16206 
 16130 IF R$="{F7}"AND I>0AND I<=MXAND LEFT$ (IN$(I),1)<>"*" THEN6000 
 16140 IF R$="{F8}" THEN1000 
 16200 GOTO 16100 
 16201 IF I>MX THENI=I-1:GOTO 16100 
 16203 IF IN$(I)<>"*" THEN16213 
 16205 I=I+1:GOTO 16201 
 16206 IF I<1 THENI=I+1:GOTO 16100 
 16208 IF IN$(I)<>"*" THEN16213 
 16210 I=I-1:GOTO 16206 
 16213 PRINTCHR$ (147):IF I<0OR I>MX THEN16100 
 16214 RN$=STR$ (I): 
 16215 GOSUB 14000:REM SATZNR.AUFT 
 16220 GOSUB 9000:REM LESEN / AUFTEILEN 
 16240 GOSUB 2000:REM ANZEIGEN 
 16250 PRINTCHR$ (19); 
 16255 PRINT"{RVSON,8SPACE}---{3SPACE}EINGABE - MENEU{2SPACE}---{6SPACE,RVOFF}"; 
 16260 PRINT" F1 = NAECHSTER DATENSATZ" 
 16270 PRINT" F2 = LETZTER{3SPACE}DATENSATZ" 
 16280 PRINT" F7 = DATENSATZ AENDERN" 
 16285 PRINT" F8 = ZURUECK HAUPTMENUE" 
 16290 PRINT"{RVSON,SPACE}WAEHLE :{RVOFF}" 
 16300 GOTO 16100 
 17000 REM -------------------- 
 17010 REM GRUPPEN DEFINIEREN 
 17020 REM -------------------- 
 17030 PRINTCHR$ (147);:FS=1 
 17040 PRINT"{RVSON,11SPACE}GRUPPEN DEFINIEREN :{9SPACE,RVOFF}":PRINT"{4DOWN}"; 
 17045 PRINT"****************************************" 
 17050 FOR II=1 TO15 
 17060 PRINTII,GR$(II) 
 17070 NEXT 
 17080 PRINTCHR$ (19)"{DOWN,SPACE}F1 = EINGABE " 
 17090 PRINT" F7 = ZURUECK HAUPT-MENUE" 
 17095 PRINT" F2 = GRUPPE LOESCHEN " 
 17098 PRINT"{RVSON,SPACE}WAEHLE:{RVOFF}" 
 17100 GET R$:IF R$="" THEN17100 
 17110 IF R$="{F7}" THEN1000 
 17120 IF R$="{F2}" THEN17500 
 17130 IF R$<>"{F1}" THEN17100 
 17140 FOR II=1 TO15:IF GR$(II)="." THEN17160 
 17150 NEXT :PRINTCHR$ (147)"{DOWN,RVSON,SPACE}ALLE GRUPPEN BELEGT !{RVOFF}":GOTO 17080 
 17160 PRINTCHR$ (147)"{2DOWN,SPACE}WELCHER NAME :":PRINT 
 17170 INPUTGR$(II):GOTO 17030 
 17500 PRINTCHR$ (19);:FOR II=1 TO6:PRINT"{40SPACE}";:NEXT 
 17510 PRINTCHR$ (19):PRINT" WELCHE GRUPPE SOLL GELOESCHT WERDEN :" 
 17520 INPUT"{RVSON,SPACE}NR.:{SPACE,RVOFF}";R$:II=VAL (R$):IF II>15OR II<1 THEN17030 
 17530 GR$(II)=".":GOTO 17030 
 18000 REM ------------------------- 
 18010 REM ERM. 10 HOECHSTEN SERIEN 
 18020 REM ------------------------- 
 18022 H%=0:PL%=0: 
 18025 FOR II=1 TO200STEP 4 
 18030 IF II=1 THENSR$=" "+MID$ (SR$,II+1):GOTO 18038 
 18031 SR$=LEFT$ (SR$,II-1)+" "+MID$ (SR$,II+1) 
 18038 NEXT 
 18040 FOR I1=1 TO10 
 18050 FOR II=1 TO200STEP 4 
 18060 R%=VAL (MID$ (SR$,II,4)) 
 18070 IF R%>H% THENH%=R%:HH%=II 
 18080 NEXT :IF HH%=0 THEN18125 
 18090 PL%=PL%+H% 
 18092 H$=STR$ (H%) 
 18093 H$=LEFT$ (BL$,4-LEN (H$))+H$ 
 18094 H$="-"+MID$ (H$,2,3) 
 18100 IF HH%=1 THENSR$=H$+MID$ (SR$,5):GOTO 18120 
 18110 SR$=LEFT$ (SR$,HH%-1)+H$+MID$ (SR$,HH%+4) 
 18120 H%=0:H$="":HH%=0 
 18125 NEXT 
 18130 PL%(I)=PL%:RC$=NN$+SR$: 
 18140 GOTO 6305 
 20000 REM --------- 
 20010 REM AUSDRUCK 
 20020 REM --------- 
 20030 CLOSE 1:GOSUB 15000 
 20035 CLOSE 1:OPEN 1,8,2,FR$+",L,"+CHR$ (DL) 
 20040 PRINTCHR$ (147)"{RVSON,6SPACE}###{3SPACE}DRUCKER-AUSGABE{3SPACE}###{7SPACE,RVOFF}" 
 20050 PRINT:PRINT:PRINT"{RVSON,8SPACE}BITTE WARTEN !!!{16SPACE,RVOFF}"; 
 20100 PRINTCHR$ (145)" BITTE WAEHLEN SIE :{20SPACE}":PRINT:PRINT 
 20110 PRINT" F7 = ZURUECK HAUPTMENE":PRINT 
 20120 PRINT" 1{2SPACE}= GESAMMT AUSDRUCK":PRINT 
 20130 PRINT" 2{2SPACE}= AUSDRUCK GRUPPE VON / BIS":PRINT 
 20135 PRINT:PRINT"{RVSON,SPACE}BITTE DRUCKER EINSCHALTEN !!!{8SPACE,RVOFF}":PRINT 
 20140 GET R$:IF R$="" THEN20140 
 20145 CLOSE 5:OPEN 5,8,1:PRINT#5,CHR$ (27);CHR$ (64);:CLOSE 5 
 20150 IF R$="{F7}" THEN1000 
 20160 IF R$="1" THEN20260 
 20170 IF R$<>"2" THEN20140 
 20200 PRINTCHR$ (147)"{RVSON,9SPACE}AUSDRUCK :{21SPACE,RVOFF}" 
 20210 FOR II=1 TO15:PRINTII,GR$(II):NEXT :PRINT:PRINT 
 20220 INPUT"NR.-VON :";R$:V%=ABS (INT (VAL (R$))) 
 20230 INPUT"NR.-BIS :";R$:B%=ABS (INT (VAL (R$))) 
 20240 IF V%<1OR V%>15OR B%<1OR B%>15OR V%>B% THEN20200 
 20250 GOTO 20300 
 20260 V%=1:B%=15:RR$="VM":REM GES. AUSDRUCK 
 20300 CLOSE 5:GOSUB 50 
 20310 PRINT#5,"########################################"; 
 20320 PRINT#5,"########################################"; 
 20330 PRINT#5,"#{20SPACE}SCHUETZENVEREIN OBE"; 
 20340 PRINT#5,"RREICHENBACH E.V.{22SPACE}#"; 
 20350 PRINT#5,"########################################"; 
 20360 PRINT#5,"########################################" 
 20370 GOSUB 60:PRINT#5,CHR$ (10):PRINT:R$="" 
 20380 INPUT"DATUM :";R$ 
 20390 PRINT#5,"SCHIESSSAISON BIS : ";R$;:GOSUB 50:PRINT#5,CHR$ (10):PRINT#5,,, 
 20400 IF RR$="VM" THENPRINT#5,"******* VEREINS-MEISTER : *******" 
 20410 IF RR$="VM" THENGOSUB 50:PRINT#5,,;:CLOSE 5:Z%=0:GOSUB 22000:GOSUB 60:CLOSE 5 
 20500 FOR I1=V% TOB% 
 20510 IF GR$(I1)="." THEN20600 
 20520 CLOSE 5:OPEN 5,4,7 
 20530 GOSUB 50:PRINT#5:PRINT#5,GR$(I1);" :":GOSUB 60:CLOSE 5:OPEN 5,4,7 
 20535 H=LEN (GR$(I1))+2 
 20540 FOR II=1 TOH:PRINT#5,"U";:NEXT : 
 20550 PRINT#5:CLOSE 5:Z%=I1 
 20560 GOSUB 22000 
 20600 NEXT : 
 20610 GOSUB 50:PRINT#5, 
 20620 FOR II=1 TO80:PRINT#5,"+";:NEXT 
 20630 PRINT#5,"+{2SPACE}COMMODORE - COMPUTER - SOTFWARE VON M"; 
 20640 PRINT#5,"ERK ERNST / GESCHRIEBEN AM 24.11.1984{2SPACE}+"; 
 20650 FOR II=1 TO80:PRINT#5,"+";:NEXT :PRINT#5,CHR$ (10):CLOSE 5 
 20660 GOTO 29999 
 22000 REM ----------- 
 22010 REM PLATZIERUNG 
 22020 REM ----------- 
 22030 F%=1: 
 22040 H%=0:HH%=0:IZ=0:HF=0:W=0: 
 22050 FOR I=1 TOMX 
 22060 TC%=VAL (TE$(I)) 
 22070 IF Z%=0 THENTC%=0 
 22080 IF PL%(I)>H%AND TC%=Z% THENH%=PL%(I):IZ=I 
 22085 NEXT : 
 22090 IF H%=0 THENRETURN 
 22095 TT(0,0)=IZ:TT(0,11)=PL%(IZ):PL%(IZ)=0:HH%=HH%+1 
 22110 FOR W=1 TOMX 
 22120 TC%=VAL (TE$(W)) 
 22130 IF Z%=0 THENTC%=0 
 22140 IF PL%(W)=H%AND TC%=Z% THENGOTO 22145 
 22141 GOTO 22150 
 22145 I=W:GOSUB 31000:HH%=HH%+1:IF HH%>9 THEN22200 
 22150 NEXT 
 22200 IF HH%=1 THENI=TT(0,0):PL%(I)=TT(0,11):GOSUB 50000:GOTO 22210 
 22205 IZ=HH%:I=TT(0,0):PL%(I)=TT(0,10):HH%=0:J%=1:GOSUB 31060:HH%=IZ 
 22208 GOTO 23000 
 22210 IF Z%=0 THEN29998 
 22220 F%=F%+1 
 22230 IF F%>MX THEN29998 
 22240 GOTO 22040 
 23000 REM ---- WEITERE SORTIERSTUFE 
 23020 FOR Y=0 TOHH% 
 23030 FOR X=1 TO8 
 23040 FOR U=X+1 TO9 
 23050 IF TT(Y,X)<TT(Y,U) THENH%=TT(Y,X):TT(Y,X)=TT(Y,U):TT(Y,U)=H% 
 23060 NEXT :NEXT :NEXT 
 23100 FOR Y=0 TOHH% 
 23110 H%=0 
 23120 FOR X=9 TO1STEP -1 
 23130 S(Y)=S(Y)+(2^H%*TT(Y,X)) 
 23140 H%=H%+1 
 23150 NEXT :NEXT 
 23200 HF=0 
 23210 FOR Y=0 TOHH% 
 23220 IF S(Y)>HF THENHF=S(Y):IZ=Y 
 23230 NEXT :U=0 
 23240 I=TT(IZ,0):PL%(I)=TT(IZ,11):S(IZ)=0 
 23250 GOSUB 50000 
 23300 FOR Y=0 TOHH% 
 23310 IF S(Y)=HF THENI=TT(Y,0):PL%(I)=TT(Y,11):S(Y)=0:GOSUB 50:CLOSE 5:GOSUB 50000:U=U+1 
 23320 NEXT 
 23400 FOR Y=0 TOHH% 
 23410 IF S(Y)>0AND Z%=0 THENI=TT(Y,0):PL%(I)=TT(Y,11):S(Y)=0:GOTO 23430 
 23420 IF S(Y)>0AND Z%>0 THENF%=F%+1:GOTO 23200 
 23430 NEXT 
 23500 FOR Y=0 TO10 
 23510 FOR X=0 TO10 
 23520 TT(Y,X)=0 
 23530 NEXT :NEXT 
 23540 F%=F%+1:F%=F%+U 
 23550 IF Z%<>0 THEN22040 
 29998 RETURN 
 29999 CLOSE 1:CLOSE 15:PRINTCHR$ (147)CHR$ (142):END 
 30000 REM ---------------- 
 30010 REM INITIALISIERUNG 
 30020 REM ---------------- 
 30040 DL=226:REM DATENSATZLAENGE 
 30050 RN=1 
 30070 BL$="{31SPACE}" 
 30080 BL=LEN (BL$) 
 30090 PRINT"{RED}"CHR$ (14):POKE 53281,10:POKE 53280,10 
 30100 FR$="SCH.REL" 
 30110 FI$=FR$+"INDEX" 
 30120 DIM IN$(400),TE$(400),PL%(400),GR$(16),TT(10,12) 
 30125 FOR I=1 TO15:GR$(I)=".":NEXT 
 30130 FOR I=828 TO922 
 30140 READ X:POKE I,X:S=S+X:NEXT 
 30150 DATA 169,71,160,3,141,8,3,140,9,3,96,32 
 30160 DATA 115,0,201,133,240,6,32,121,0,76,231,167 
 30170 DATA 32,115,0,201,172,240,6,32,191,171,76,174 
 30180 DATA 167,32,155,183,32,30,225,32,253,174,32,158 
 30190 DATA 183,138,72,32,253,174,32,139,176,133,73,132 
 30200 DATA 74,32,163,182,104,32,117,180,160,2,185,97 
 30210 DATA 0,145,73,136,16,248,200,32,18,225,145,98 
 30220 DATA 200,196,97,208,246,32,204,255,76,174,167 
 30230 IF S<>11096 THENPRINT"FEHLER IN DATAS !!":END 
 30240 SYS 828 
 30250 CLOSE 15:OPEN 15,8,15 
 30330 RETURN 
 31000 REM ----------- 
 31010 REM 10 H.ERGEBNISSE VON SCHUETZE 
 31020 REM ----------- 
 31050 TT(HH%,0)=I:TT(HH%,11)=PL%(I):J%=1:PL%(I)=0 
 31060 RN$=LEFT$ (IN$(I),4) 
 31065 CLOSE 1:OPEN 1,8,2,FR$+",L,"+CHR$ (DL) 
 31070 GOSUB 14000:GOSUB 9000:GOSUB 5000 
 31080 FOR II=1 TO200STEP 4 
 31090 IF MID$ (SR$,II,1)<>"-" THEN31120 
 31100 TT(HH%,J%)=VAL (MID$ (SR$,II+1,3)) 
 31110 J%=J%+1 
 31120 NEXT 
 31130 RETURN 
 50000 REM --------------- 
 50010 REM AUSDRUCK/PAPIER 
 50020 REM --------------- 
 50025 DS%=0:D1%=0:D2%=0:LZ=0 
 50030 RN$=LEFT$ (IN$(I),4) 
 50040 GOSUB 14000 
 50050 GOSUB 9000 
 50100 OPEN 5,4,2 
 50110 PRINT#5,CHR$ (10) 
 50120 IF Z%<>0 THENGOSUB 50:PRINT#5,F%;" PLATZ :{2SPACE}"; 
 50130 PRINT#5,,NN$;:GOSUB 60:PRINT#5,CHR$ (10) 
 50240 FOR W=1 TO200STEP 4 
 50250 IF W=81OR W=161 THENPRINT#5,CHR$ (10); 
 50260 W$=MID$ (SR$,W,4) 
 50270 IF LEFT$ (W$,1)="-" THENGOSUB 50:PRINT#5," ";RIGHT$ (W$,3);:GOSUB 60 
 52280 IF LEFT$ (W$,1)="-" THEND1%=D1%+1:GOTO 52360 
 52290 IF RIGHT$ (W$,3)="..." THENPRINT#5," ";RIGHT$ (W$,3);:GOTO 52360 
 52300 FS=VAL (RIGHT$ (W$,3)) 
 52305 IF FS=0 THENLZ=LZ+1 
 52310 IF FS>0 THENDS%=DS%+FS:D2%=D2%+1 
 52320 PRINT#5," ";RIGHT$ (W$,3); 
 52360 NEXT 
 52370 DS%=DS%+PL%(I):II=INT (PL%(I)/D1%*100+.5)/100 
 52380 H=INT (DS%/(D1%+D2%)*100+.5)/100 
 52400 PRINT#5,CHR$ (10) 
 52410 PRINT#5,"SUMME{4SPACE}AUS DEN HOECHSTEN 10 SERIEN :";PL%(I);CHR$ (10); 
 52420 PRINT#5,"DURCHSCHNITT DER HOECHSTEN 10 SERIEN :";II;CHR$ (10); 
 52430 PRINT#5,"DURCHSCHNITT ALLER SERIEN{12SPACE}:";H;CHR$ (10); 
 52440 PRINT#5,"ANZAHL DER SCHIESS-ABENDE{12SPACE}:";(D1%+D2%+LZ);CHR$ (10); 
 52450 PRINT#5,CHR$ (10); 
 52460 CLOSE 5:PRINTCHR$ (147); 
 52470 GOSUB 2000 
 52480 PL%(I)=0 
 52490 RETURN 
Listing zu »Gut Ziel« mit dem C 64
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →