-
Notifications
You must be signed in to change notification settings - Fork 11
/
09_Adressverwaltung.bc2
377 lines (376 loc) · 9.8 KB
/
09_Adressverwaltung.bc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
1000 A=5000:GOTO20:REM****ADRESSEN-VERWALTUNG****
1010 REM
1020 REM (C) HEIKE UND MANFRED FILLINGER , 20.5.1983
1030 REM UEBERARBEITET FUER BASICODE-2 B7.5.84
1040 REM
1050 REM INITIALISIERUNG
1060 REM
1070 REM
1080 DIMI1$(100),I2$(100),I3$(100),I4$(100)
1090 REM
1100 REM KONSTANTEN
1110 M=8:REM ADRESSEN PRO BLATT
1120 R=8:REM LINKER PAPIERRAND
1130 REM
1140 REM L,Z$,ZZ$..ZEICHENVERVIELFACHER
1150 REM A$,A,E$,E..-VON,BIS-ADRESSEN DRUCKEN
1160 REM
1170 REM
1180 REM
1500 REM VARIABLEN
1510 REM A1$....FAMILIENNAME BEI EINGABE
1520 REM A2$....VORNAME BEI EINGABE
1530 REM
1540 REM I1$()..NAMEN
1550 REM I2$()..STRASSE BZW. POSTFACH
1560 REM I3$()..PLZ , ORT
1570 REM I4$()..TELEFONNUMMER
1580 REM
1590 REM C$.....DIALOGPUFFER
1600 REM CU$....UEBERGABEPUFFER
1610 REM SM.....MAXIMALE SCHREIBLAENGE
1620 REM AW.....AUSWAHL
1630 REM N......AKTUELLE ADRESSENPOS.
1640 REM NM.....MAXIMALE ADRESSENPOS.
1650 REM T......TREFFERKENNZ. BEI SUCHEN
1660 REM RC.....RETURNCODE
1670 REM LL.....STRINGLAENGE
1680 REM
1690 REM X......HILFSVAR. FUER WARTESCHLEIFE
1700 REM H1$....HILFSVAR.SORT.
1710 REM H2$....HILFSVAR.SORT.
1720 REM I,II...LAUFVAR.
1730 REM J......LAUFVAR.
1740 REM
1750 REM
1760 REM
2000 REM---AUSWAHL-MODUL---
2010 GOSUB100
2020 PRINT
2030 PRINT"BITTE NAECHSTEN ARBEITSGANG WAEHLEN:"
2040 PRINT"------------------------------------"
2050 PRINT"ADRESSEN EINGEBEN.....................1"
2060 PRINT"ADRESSEN SUCHEN(AENDERN BZW LOESCHEN).2"
2070 PRINT
2080 PRINT"GESPEICHERTE ADRESSEN LISTEN..........3"
2090 PRINT"GESPEICHERTE ADRESSEN DRUCKEN.........4"
2100 PRINT
2110 PRINT"ADRESSEN VON KASSETTE LESEN...........5"
2120 PRINT"ADRESSEN AUF KASSETTE SCHREIBEN.......6"
2130 PRINT"KASSETTENDATEN PRUEFEN................7"
2140 PRINT
2150 PRINT"PROGRAMM BEENDEN......................8"
2160 PRINT
2170 PRINT":";:INPUTAW
2180 ONAW GOSUB3000,4000,5000,6000,7000,8000,9000,9999
2190 N=NM
2200 GOTO2010
2210 REM
2220 REM
2230 REM
3000 REM---MODUL ADRESSEN EINGEBEN---
3010 REM
3020 GOSUB100
3030 PRINT:PRINT:PRINT:PRINT
3040 N=NM+1
3050 SM=32
3060 CU$="":PRINT"FAMILIEN-,VORNAME:":GOSUB15030
3070 IFCU$="" THENGOSUB16000:RETURN
3080 I1$(N)=CU$
3090 PRINT
3100 CU$="":PRINT"STR. BZW.POSTF.:":GOSUB15030:I2$(N)=CU$
3110 PRINT
3120 CU$="":PRINT"PLZ , ORT:":GOSUB15030:I3$(N)=CU$
3130 PRINT
3140 CU$="":PRINT"TELEFONNR.:":GOSUB15030:I4$(N)=CU$
3150 PRINT
3160 N=N+1:NM=N-1
3170 L=39:Z$=".":GOSUB16500:PRINTZZ$
3180 GOTO3050
3190 REM
3200 REM
3210 REM
4000 REM---MODUL ADRESSEN SUCHEN---
4010 REM
4020 GOSUB100
4030 PRINT:PRINT:PRINT
4040 PRINT
4050 PRINT"BITTE GESUCHTEN FAMILIENNAMEN EINGEBEN :";
4060 INPUTS$
4070 T=0:LL=LEN(S$)
4080 N=0
4090 N=N+1
4100 IFLEFT$(I1$(N),LL)=S$ THENGOSUB4180
4110 IF(LEFT$(I1$(N),LL)<>S$) AND(T=1) THEN4130
4120 IFNOT(N>NM) THEN4090
4130 PRINT"---ENDE---"
4140 GOSUB15500
4150 IFRC=1 THENGOSUB16000:REM SORTIEREN
4160 RETURN
4170 REM
4180 REM AUSWAHL NACH FINDEN
4190 T=1
4200 PRINTI1$(N)
4210 PRINTI2$(N)
4220 PRINTI3$(N)
4230 PRINTI4$(N)
4240 L=39:Z$=".":GOSUB16500:PRINTZZ$
4250 PRINT"(W)EITER-(A)ENDERN-(LOE)SCHEN :";:INPUTC$
4260 RC=0
4270 IFC$="W" THENL=39:Z$=".":GOSUB16500:PRINTZZ$:RETURN
4280 IFC$="LOE" THENGOSUB4470:RETURN
4290 GOSUB4320
4300 RETURN
4310 REM
4320 REM AENDERN
4330 GOSUB100
4340 PRINT:PRINT:PRINT
4350 SM=32
4360 CU$=I1$(N):PRINT"NAME:":GOSUB15030:I1$(N)=CU$
4370 PRINT
4380 CU$=I2$(N):PRINT"STR. BZW POSTF.:":GOSUB15030
4390 PRINT
4400 CU$=I3$(N):PRINT"PLZ , ORT:":GOSUB15030:I3$(N)=CU$
4410 PRINT
4420 CU$=I4$(N):PRINT"TELEFONNR.:":GOSUB15030:I4$(N)=CU$
4430 PRINT
4440 RC=1:L=39:Z$=".":GOSUB16500:PRINTZZ$
4450 RETURN
4460 REM
4470 REM GEFUNDENE ADRESSE LOESCHEN
4480 NM=NM-1
4490 FORI=N TONM
4500 I1$(I)=I1$(I+1)
4510 I2$(I)=I2$(I+1)
4520 I3$(I)=I3$(I+1)
4530 I4$(I)=I4$(I+1)
4540 NEXTI
4550 N=N-1
4560 RETURN
4570 REM
4580 REM
4590 REM
5000 REM---MODUL ALLE GESPEICHERTEN ADRESSEN LISTEN---
5010 REM
5020 GOSUB100
5030 PRINT:PRINT:PRINT
5040 FORN=1 TONM
5050 PRINTI1$(N)
5060 PRINTI2$(N)
5070 PRINTI3$(N)
5080 PRINTI4$(N)
5090 L=39:Z$=".":GOSUB16500:PRINTZZ$
5100 IF(N/2)=INT(N/2) THENGOSUB15500:PRINTZZ$
5110 NEXTN
5120 PRINT"---ENDE---"
5130 GOSUB15500
5140 RETURN
5150 REM
5160 REM
5170 REM
6000 REM---MODUL GESPEICHERTEN ADRESSEN DRUCKEN---
6010 REM
6020 GOSUB100:L=R:Z$=" ":GOSUB16500
6030 PRINT"ALLE ADRESSEN DRUCKEN..........1"
6040 PRINT"ADRESSENBEREICHE DRUCKEN.......2"
6050 PRINT"DRUCKEN BEENDEN................3"
6060 PRINT":";:INPUTAW
6070 ONAW GOTO6090,6500,6820
6080 GOTO6000
6090 FORN=1 TONM
6100 SR$=ZZ$+I1$(N):GOSUB350:GOSUB360
6110 SR$=ZZ$+I2$(N):GOSUB350:GOSUB360
6120 SR$=ZZ$+I3$(N):GOSUB350:GOSUB360
6130 SR$=ZZ$+I4$(N):GOSUB350:GOSUB360
6140 IF(N/M)=INT(N/M) THENGOSUB6190
6150 GOSUB360:GOSUB360
6160 NEXTN
6170 RETURN
6180 REM
6190 REM SEITENWECHSEL
6200 GOSUB250
6210 PRINT"BITTE NEUES BLATT EINLEGEN !"
6220 GOSUB15500:GOSUB100
6230 GOSUB360
6240 RETURN
6250 REM
6260 REM
6270 REM
6500 REM ADRESSENBEREICH DRUCKEN
6510 PRINT
6520 PRINT"VON-ANFANGSBUCHSTABE :";:INPUTA$
6530 PRINT"BIS-ANFANGSBUCHSTABE :";:INPUTE$
6540 A=ASC(A$):E=ASC(E$):I=1
6550 IF(A>E) OR(A<ASC("A")) OR(E>ASC("Z")) THEN6500
6560 FORN=1 TONM
6570 T=ASC(LEFT$(I1$(N),1))
6580 IF(T>=A) AND(T<=E) THENGOSUB6700
6590 NEXTN
6600 GOTO6000
6700 REM GEFUNDENE ADRESSE DRUCKEN
6710 IFI>M THENGOSUB6190:I=1
6720 SR$=ZZ$+I1$(N):GOSUB350:GOSUB360
6730 SR$=ZZ$+I2$(N):GOSUB350:GOSUB360
6740 SR$=ZZ$+I3$(N):GOSUB350:GOSUB360
6750 SR$=ZZ$+I4$(N):GOSUB350:GOSUB360
6760 GOSUB360:GOSUB360
6770 I=I+1
6780 RETURN
6790 REM
6800 REM
6810 REM
6820 RETURN:REM MODUL-ENDE
7000 REM---MODUL ADRESSEN VON KASSETTE LESEN---
7010 REM
7200 PRINT"DATEINAME :";:INPUTDN$
7210 GOSUB21200
7220 GOSUB21500
7230 NM=VAL(S1$)
7240 FORN=1 TONM
7250 GOSUB21500:I1$(N)=S1$:I2$(N)=S2$
7260 GOSUB21500:I3$(N)=S1$:I4$(N)=S2$
7270 NEXTN
7280 GOSUB21700
7300 RETURN
7310 REM
7320 REM
7330 REM
8000 REM---MODUL ADRESSEN AUF KASSETTE SCHREIBEN---
8010 REM
8200 SR=NM:GOSUB300
8210 PRINT"DATEI-NAME :";:INPUTDN$
8220 GOSUB21000
8230 S1$=SR$:S2$=""
8240 GOSUB21300
8250 FORN=1 TONM
8260 S1$=I1$(N):S2$=I2$(N):GOSUB21300
8270 S1$=I3$(N):S2$=I4$(N):GOSUB21300
8280 NEXTN
8290 GOSUB21700
8300 RETURN
8310 REM
8320 REM
8330 REM
9000 REM---MODUL KASSETTENDATENPRUEFEN ---
9010 PRINT"DATEINAME :";:INPUTDN$
9020 GOSUB21200
9030 GOSUB21500
9040 IFVAL(S1$)<>NM THEN9500
9050 N=0
9060 N=N+1
9070 GOSUB21500
9080 IFI1$(N)<>S1$ THEN9500
9090 IFI2$(N)<>S2$ THEN9500
9100 GOSUB21500
9110 IFI3$(N)<>S1$ THEN9500
9120 IFI4$(N)<>S2$ THEN9500
9130 IFNOT(N>=NM) THEN9060
9140 GOSUB21700
9150 RETURN
9500 REM LESEFEHLER
9510 PRINT"LESEFEHLER !"
9520 GOSUB21700
9530 GOSUB15500
9540 RETURN
9550 REM
9560 REM
9570 REM
9999 END
15000 REM---UNTERPROGRAMM ZEILEN-EDITOR---
15010 REM
15020 REM EINGABEPARAMETER - SM (ZUL. TEXT-LAENGE)
15030 REM EINGABEPARAMETER - CU$ (ALT-TEXT)
15040 REM AUSGABEPARAMETER - CU$ (NEU-TEXT)
15050 REM
15060 PRINT">";:GOSUB120:HO=HO+SM:GOSUB110:PRINT"<";
15070 HO=HO-SM:GOSUB110:PRINTCU$;:PRINT"<";
15080 GOSUB120:GOSUB210
15090 IF(IN$="<") AND(HO>2) THENGOSUB15170
15100 IFIN$=CHR$(13) THENRETURN
15110 IFIN$="<" THEN15080
15120 IFHO>=(SM+2) THEN15080
15130 CU$=CU$+IN$
15140 GOSUB120:HO=HO-1:GOSUB110
15150 PRINTIN$;:PRINT"<";
15160 GOTO15080
15170 GOSUB120:HO=HO-1:GOSUB110
15180 IFHO<>(SM+1) THENPRINT" ";
15190 HO=HO-1:GOSUB110:PRINT"<";
15200 IFHO<=1 THENCU$="":RETURN
15210 CU$=LEFT$(CU$,HO-1)
15220 RETURN
15500 REM---UNTERPROGRAMM WARTESCHLEIFE---
15510 REM
15520 PRINT"WENN WEITER DANN 'RETURN' DRUECKEN !"
15530 GOSUB210
15540 RETURN
15550 REM
15560 REM
15570 REM
16000 REM---UNTERPROGRAMM LINSORT---
16010 REM GEMAESS MC-ZEITSCHRIFT MAI/JUNI 1981 SEITE 26
16020 REM SORTIEREN DER FELDER I1..4$ NACH DEM SCHLUESSEL
16030 REM IN DEM FELD I1$ .
16040 REM DIE UNTERE FELDGRENZE IST 1, DIE OBERE FELD-
16050 REM GRENZE STEHT IN DER VARIABLEN NM .
16060 REM
16070 IFNM<2 THENRETURN
16080 GOSUB100
16090 PRINT"-BITTE WARTEN-"
16100 FORI=2 TONM
16110 H1$=I1$(I)
16120 H2$=I2$(I):H3$=I3$(I):H4$=I4$(I)
16130 J=I-1
16140 IFH1$>=I1$(J) THEN16190
16150 I1$(J+1)=I1$(J)
16160 I2$(J+1)=I2$(J):I3$(J+1)=I3$(J):I4$(J+1)=I4$(J)
16170 J=J-1
16180 IFJ<>0 THEN16140
16190 I1$(J+1)=H1$
16200 I2$(J+1)=H2$:I3$(J+1)=H3$:I4$(J+1)=H4$
16210 NEXTI
16220 RETURN
16230 REM
16240 REM
16250 REM
16500 REM ZEICHENVERVIELFACHER
16510 ZZ$="":IFL<1 THENRETURN
16520 FORII=1 TOL
16530 ZZ$=ZZ$+Z$
16540 NEXTII
16550 RETURN
21000 REM DATEIVERWALTUNG
21010 REM GILT FUER C64
21100 REM DATEI OEFFNEN ZUM SCHREIBEN
21110 REM OPEN 1,1,1,DN$:RETURN
21200 REM DATEI OEFFNEN ZUM LESEN
21210 REM OPEN 1,1,0,DN$:RETURN
21300 QP$=S1$:GOSUB21400:S1$=QZ$:QP$=S2$:GOSUB21400
21310 S2$=QZ$
21320 REM DATEN (S1$,S2$) AUF KASSETTE SCHREIBEN
21330 REM PRINT#1,S1$:REM PRINT#1,S2$:RETURN
21400 REM UMWANDELN VON DOPPELPUNKT,KOMMA
21410 REM ANFUEHRUNGSZEICHEN USW.
21420 QZ$="":IFQP$="" THENQP$=" "
21430 FORQP=1 TOLEN(QP$)
21440 QQ$=MID$(QP$,QP,1):IFQQ$=" " THENQQ$=CHR$(252)
21450 IFQQ$="," THENQQ$=CHR$(250)
21460 IFQQ$=CHR$(34) THENQQ$=CHR$(253)
21470 IFQQ$=":" THENQQ$=CHR$(251)
21480 QZ$=QZ$+QQ$:NEXTQP:RETURN
21500 REM DATEN (S1$,S2$) VON KASSETTE LESEN
21510 REM INPUT#1,S1$:REM INPUT#1,S2$
21520 QP$=S1$:GOSUB21600:S1$=QZ$:QP$=S2$
21530 GOSUB21600:S2$=QZ$:RETURN
21600 REM UMWANDELN VON DOPPELPUNKT,KOMMA
21610 REM ANFUEHRUNGSZEICHEN USW.
21620 QZ$=""
21630 FORQP=1 TOLEN(QP$)
21640 QQ$=MID$(QP$,QP,1):IFQQ$=CHR$(252) THENQQ$=" "
21650 IFQQ$=CHR$(250) THENQQ$=","
21660 IFQQ$=CHR$(251) THENQQ$=":"
21670 IFQQ$=CHR$(253) THENQQ$=CHR$(34)
21680 QZ$=QZ$+QQ$
21690 NEXTQP:RETURN
21700 REM DATEI SCHLIESSEN
21710 REM CLOSE 1:RETURN