home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh6x
/
sh62a.d64
/
adressdatei
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
6KB
|
228 lines
100 REM INDEXSEQUENTIELLE ADRESSDATEI
110 REM IDEE:1985 MARTIN HECHT,STGT
120 REM GEAENDERT F. EXBASIC LEVEL 2
130 REM 64'ER SONDERHEFT 62/H.BEILER
140 REM -------------------------------
150 REM DIMENSIONIERUNGEN
160 FORI=1TO5:READDX$(I):NEXT
170 DM=300:REM MAXIMALE DATENSATZANZAHL
190 DIM ID$(DM):REM INDEXFELD (ENTHAELT NACHNAMEN)
200 DIM IN(DM):REM ENTHAELT ZUGEHOERIGE RECORDNUMMERN
210 DIM DS$(5):REM DATENFELDER
240 GOSUB490:PRINT"[147]":GOSUB5000
241 REM *************
250 REM * HAUPTMENUE*
251 REM *************
260 1:(null)1:2:POKE650,128
270 WL=0:PRINT"[147]":XY=2:GOSUB5100
272 X=10:Y=2:GOSUB3000
280 PRINT" [193]DRESSENVERWALTUNG "
282 PRINTTAB(7)"MIT [197][216][208][193][206][196][197][196] [194][193][211][201][195] [204][197][214][197][204] [201][201]":PRINT
290 XY=10:GOSUB5100
292 X=7:Y=6:GOSUB3000
295 PRINT"<[204]> [204]ISTE DER [211]UCHBEGRIFFE"
310 PRINTTAB(7)"<1> [193]DRESSEN EINGEBEN"
320 PRINTTAB(7)"<2> [193]DRESSEN AUSGEBEN"
330 PRINTTAB(7)"<3> [196]ATEI SCHLIESSEN/[197][206][196][197]"
340 GETT$:IFT$="L"THEN2500
341 IFT$="1"THEN710
342 IFT$="2"THEN1110
343 IFT$="3"THEN1480
430 GOTO340:REM WARTESCHLEIFE TASTENDRUCK
440 :
460 REM ********************
470 REM * DATEI EROEFFNEN *
480 REM ********************
490 LF=1:SA=2:DN$="RELADR":RL=115:GOSUB1800:REM RELATIVE DATEI 'RELADR' OEFFNEN
500 :
510 OPEN2,8,3,"SEQADR,S,R":REM SEQUENTIELLE DATEI 'SEQADR' ZUM LESEN OEFFNEN
520 :
530 GOSUB 1620:REM FLOPPY-FEHLERKANAL AUSLESEN
540 IF ER<>0 THEN AD=0:GOTO 590:REM DATEI IST NOCH NICHT ANGELEGT
550 :
560 INPUT#2,AD:REM ANZAHL DER DATENSAETZE
570 FOR I=1 TO AD:INPUT#2,ID$(I),IN(I):NEXT I:REM INDEXDATEI EINLESEN
580 :
590 FL=1:REM KENNZEICHNUNG FUER 'DATEI IM RECHNER'
600 :
610 CLOSE 2:REM SEQUENTIELLE DATEI SCHLIESSEN
620 X=4:Y=17:GOSUB3000:XY=1:GOSUB5100:X=7:Y=18:GOSUB3000
630 PRINTTAB(9)"[196]ATEN EINGEBEN/LESEN"
640 :
650 RETURN
660 :
680 REM *********************
690 REM * ADRESSEN EINGEBEN *
700 REM *********************
710 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [196]ATEI NICHT GEOEFFNET ! "
712 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
720 PRINT"[147]":XY=1:GOSUB5100:X=7:Y=2:GOSUB3000:PRINT" [193]DRESSDATEN EINGEBEN"
730 REM ADRESSE EINGEBEN
740 GOSUB5200
742 X=12:Y=4
745 FORI=1TO4:Y=Y+2:GOSUB3000:(null)"";DS$(I),25:NEXT
746 Y=Y+2:GOSUB3000:(null)"";DS$(5),15
800 :
810 REM ADRESSE IN INDEXDATEI VERMERKEN
820 AD=AD+1:REM ANZAHL DER ADRESSEN UM 1 ERHOEHEN
830 ID$(AD)=DS$(1):REM NACHNAME
840 IN(AD)=RN:REM RECORDNUMMER
850 :
860 REM ADRESSFELDER AUF RICHTIGE LAENGE
880 DS$(1)=LEFT$(DS$(1)+LEFT$(LE$,ABS(25-LEN(DS$(1)))),25)
890 DS$(2)=LEFT$(DS$(2)+LEFT$(LE$,ABS(25-LEN(DS$(2)))),25)
900 DS$(3)=LEFT$(DS$(3)+LEFT$(LE$,ABS(25-LEN(DS$(3)))),25)
910 DS$(4)=LEFT$(DS$(4)+LEFT$(LE$,ABS(25-LEN(DS$(4)))),25)
920 DS$(5)=LEFT$(DS$(5)+LEFT$(LE$,ABS(15-LEN(DS$(5)))),15)
930 :
940 REM ADRESSE FUER SPEICHERUNG ZUSAMMENFASSEN
950 RC$=""
960 FOR I=1 TO 5:RC$=RC$+DS$(I):NEXT I
970 :
980 REM ADRESSE SPEICHERN
990 RN=AD:RP=1:GOSUB 1930:REM AUF RECORD (NR.=AD) POSITIONIEREN
1000 PRINT#LF,RC$:REM ADRESSE IN RECORD SCHREIBEN
1010 GOSUB 1600:REM FLOPPY-FEHLERKANAL AUSLESEN
1020 :
1030 X=7:Y=23:GOSUB3000:PRINT" [193]DRESSE IST GESPEICHERT ! ":(null)2
1040 X=0:Y=23:GOSUB3000:PRINTLE$
1050 GOTO260
1080 REM *********************
1090 REM * ADRESSEN AUSGEBEN *
1100 REM *********************
1110 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [196]ATEI NICHT GEOEFFNET ! "
1111 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
1112 PRINT"[147]":XY=1:GOSUB5100:X=7:Y=2:GOSUB3000:PRINT" [193]DRESSDATEN AUSGEBEN"
1113 GOSUB5200
1114 X=12:Y=6:GOSUB3000
1130 (null)"";NN$,25:REM INDEX ERFRAGEN
1140 :
1150 FOR I=1 TO AD:REM INDEXDATEI DURCHSUCHEN
1160 IFNN$=ID$(I)THENGN=I:I=AD:NEXTI:GOTO1220:REM INDEX GEFUNDEN
1170 NEXTI
1180 :
1190 X=4:Y=23:GOSUB3000:PRINT" [193]DRESSE IST NICHT VORHANDEN ! "
1200 (null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO1114
1210 :
1220 RN=GN:RP=1:GOSUB1930:REM AUF RECORD (NR. = IN(I)) POSITIONIEREN
1222 RC$="":FORI=1TORL
1230 GET#LF,RT$:RC$=RC$+RT$:REM RECORD EINLESEN
1240 NEXT
1250 REM RECORD AUFTEILEN
1260 DS$(1)=MID$(RC$,1,25):REM NACHNAME
1270 DS$(2)=MID$(RC$,26,25):REM VORNAME
1280 DS$(3)=MID$(RC$,51,25):REM STRASSE
1290 DS$(4)=MID$(RC$,76,25):REM WOHNORT
1300 DS$(5)=MID$(RC$,101,15):REM TELEFON
1310 :
1320 REM RECORD AUSGEBEN
1330 X=12:Y=6:FORI=2TO5:Y=Y+2:GOSUB3000:PRINTDS$(I):NEXT
1340 X=4:Y=17:GOSUB3000:XY=3:GOSUB5100
1350 X=7:Y=18:GOSUB3000
1352 PRINT"<[196]> [193]DRESSE DRUCKEN"
1354 PRINTTAB(7)"<[206]> [206]EUE [193]DRESSE SUCHEN"
1356 PRINTTAB(7)"<[200]> [200]AUPTMENUE"
1360 GETT$
1362 IFT$="D"THENGOSUB4000:REM ZUR DRUCKERROUTINE
1364 IFT$="N"THEN3100:REM NEUER DATENSATZ
1366 IFT$="H"THEN260:REM HAUPTMENUE
1430 GOTO1360
1440 :
1460 REM ***********************
1470 REM * DATEIARBEIT BEENDEN *
1471 REM ***********************
1480 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [203]EINE [196]ATEI IM [211]PEICHER! "
1482 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
1489 PRINT#15,"S:SEQADR":REM INDEXDATEI AUF DISKETTE LOESCHEN
1490 :
1500 OPEN 2,8,3,"SEQADR,S,W":REM SEQ. DATEI 'SEQADR' ZUM SCHREIBEN OEFFNEN
1510 PRINT#2,AD:REM ANZAHL DER DATENSAETZE
1520 FOR I=1 TO AD:PRINT#2,ID$(I)","IN(I):NEXT I:REM INDEXDATEI SPEICHERN
1530 :
1540 GOSUB2040:REM RELATIVE DATEI SCHLIESSEN
1550 :
1560 PRINT"[147]":END:REM PROGRAMM BEENDEN
1570 :
1580 :
1590 REM ******************************
1600 REM *FLOPPY-FEHLERKANAL AUSLESEN *
1610 REM ******************************
1620 INPUT#15,ER,ER$,TR,SK
1640 RETURN
1670 :
1680 REM UNTERPROGRAMME ZUR VERWALTUNG VON RELATIVEN DATEIEN
1700 :
1730 REM OEFFNEN EINER RELATIVEN DATEI
1740 REM -----------------------------
1750 REM LF = LOGISCHE FILENUMMER
1760 REM SA = SEKUNDAERADRESSE
1770 REM DN$= DATEINAME
1780 REM RL = RECORDLAENGE
1790 :
1800 OPEN 15,8,15:REM FLOPPY-KOMMANDOKANAL OEFFNEN
1810 OPEN LF,8,SA,DN$+",L,"+CHR$(RL):REM DATEI OEFFNEN
1820 :
1830 RETURN
1840 :
1870 REM POSITIONIEREN AUF EINEN RECORD
1880 REM ------------------------------
1890 REM SA = SEKUNDAERADRESSE
1900 REM RN = RECORDNUMMER
1910 REM RP = POSITION INNERHALB DES RECORDS
1920 :
1930 HB=INT(RN/256):LB=RN-256*HB:REM RECORDNUMMER IN LOW/HIGH AUFTEILEN
1940 PRINT#15,"P"+CHR$(SA)+CHR$(LB)+CHR$(HB)+CHR$(RP)
1950 :
1960 RETURN
1970 :
2000 REM SCHLIESSEN EINER (RELATIVEN) DATEI
2010 REM ----------------------------------
2020 REM LF = LOGISCHE FILENUMMER
2030 :
2040 CLOSE LF:REM RELATIVE DATEI SCHLIESSEN
2050 CLOSE15:REM FLOPPY-FEHLERKANAL SCHLIESSEN
2060 :
2070 RETURN
2500 IFFL=0THENX=7:Y=23:GOSUB3000:PRINT" [196]ATEI NICHT GEOEFFNET ! "
2510 IFFL=0THEN(null)2:X=0:Y=23:GOSUB3000:PRINTLE$:GOTO340
2520 PRINT"[147]"
2530 FORI=1TOAD
2540 PRINTID$(I)
2550 NEXT
2560 POKE198,0:WAIT198,1:GOTO260
3000 POKE211,X:POKE214,Y:SYS58640:RETURN
3095 REM **************************
3096 REM * NEUEN DATENSATZ SUCHEN *
3097 REM **************************
3100 X=12:Y=4:FORI=1TO5:Y=Y+2:GOSUB3000
3102 PRINTLEFT$(LE$,25):NEXT
3110 GOTO1114
3995 REM ***********************
3996 REM * ADRESSEN AUSDRUCKEN *
3997 REM ***********************
3999 REM ADRESSEN DRUCKEN
4000 OPEN4,4,7
4010 FORI=1TO5
4020 PRINT#4,DX$(I);DS$(I)
4030 NEXT
4040 PRINT#4:CLOSE4
4050 RETURN
4999 REM WINDOW
5000 OL$="":OL$=OL$+"[176][146]"
5002 LE$=" ":REM LEERSTRING
5010 FORI=1TO30:MO$=MO$+"[192]":ML$=ML$+" ":NEXT
5030 OL$=OL$+""+MO$+"[146]":OL$=OL$+"[174][146]"
5040 MM$="[221][146]"+""+ML$+"[146]"+"[221][146]"
5042 UL$="":UL$=UL$+"[173][146]"
5043 UL$=UL$+""+MO$+"[146]":UL$=UL$+"[189][146]"
5050 RETURN
5100 PRINTTAB(4)OL$
5110 FORI=1TOXY:PRINTTAB(4)MM$:NEXT
5120 PRINTTAB(4)UL$
5130 RETURN
5200 MB$=""+LEFT$(ML$,12)+"[146]"
5210 PRINT:PRINT:FORI=1TO12:PRINTMB$:NEXT
5212 Y=4:FORI=1TO5:X=2:Y=Y+2:GOSUB3000:PRINT""+DX$(I):NEXT
5220 RETURN
50000 DATA"[206][193][205][197] 1...","[206][193][205][197] 2...","[211][212][210][193][211][211][197]..","[215][207][200][206][207][210][212]..","[212][197][204][197][198][207][206].."