70 |
GOSUB 7490 :CHAIN "X:ADBCHN.PRG",70 |
260 |
POKE 12348,16:CLEAR A:B=G |
270 |
P=S(0,L):IF M$(0)<D$(P,L) LET R=0:RETURN |
280 |
R=INT ((A+B)/2) |
290 |
P=S(R,L) |
300 |
IF D$(P,L)=M$(0) GOTO 340 |
310 |
IF B-A=1 LET R=R+1:P=S(R,L):RETURN |
320 |
IF D$(P,L)<M$(0) LET A=R:GOTO 280 |
330 |
B=R:GOTO 280 |
340 |
IF R IF D$(S(R-1,L),L)=M$(0) LET R=R-1:P=S(R,L):GOTO 340 |
350 |
RETURN |
370 |
L=2:CLEAR A:B=G:IF M$(0)="" CLEAR U,V:GOTO 400 |
380 |
U=VAL LEFT$ (M$(0),2):V=VAL MID$ (M$(0),4,2):W=1900:GOSUB 490 |
390 |
IF F5 GOSUB 6510 :GOTO 360 |
400 |
W=U+V*31 |
410 |
P=S(0,2):IF W<VAL LEFT$ (D$(P,5),2)+31*VAL MID$ (D$(P,5),4,2) LET R=0:RETURN |
420 |
R=INT ((A+B)/2):P=S(R,2):H=VAL LEFT$ (D$(P,5),2)+31*VAL MID$ (D$(P,5),4,2) |
430 |
IF H=W GOTO 470 |
440 |
IF B-A=1 LET R=R+1:P=S(R,L):RETURN |
450 |
IF H<W LET A=R:GOTO 420 |
460 |
B=R:GOTO 420 |
470 |
IF R LET H=S(R-1,2):IF VAL LEFT$ (D$(H,5),2)+31*VAL MID$ (D$(H,5),4,2)=W LET P=H:R=R-1:GOTO 470 |
480 |
RETURN |
2410 |
GOSUB 7490 :CHAIN "X:PFLEGADB.CHN",2410 |
3410 |
IF F7 OR F6>=G GOTO 3690 |
3420 |
IF F6 GOTO 3470 |
3430 |
RESTORE 3450 :GOTO 7290 |
3450 |
DATA 1,"Keine neuen Daten !" |
3460 |
DATA 2,"Sortieren",3690,"DATENPFLEGE",2410,"MENU",70 |
3470 |
USING "####":PRINT 0;" % einsortiert":D=3*F6:Z=0 |
3480 |
FOR I=F6 TO 1STEP -1 |
3490 |
FOR L=0 TO 2 |
3500 |
M$(0)=D$(G-I+1,L):IF L=2 LET M$(0)=LEFT$ (D$(G-I+1,5),5):GOSUB 370 :GOTO 3520 |
3510 |
GOSUB 260 |
3520 |
ON L GOTO 3530 ,3550 |
3530 |
IF D$(P,L)=M$(0) GOTO 3630 |
3540 |
GOTO 3560 |
3550 |
IF LEFT$ (D$(P,5),5)=M$(0) GOTO 3650 |
3560 |
FOR J=G-I TO R STEP -1:S(J+1,L)=S(J,L):NEXT J |
3570 |
S(R,L)=G-I+1 |
3580 |
Z=Z+1:CURSOR 0,0:PRINT Z/D*100 |
3590 |
NEXT L:NEXT I |
3600 |
CLEAR F6:USING |
3610 |
IF F8 GOTO 4180 |
3620 |
GOTO 40 |
3630 |
IF D$(P,NOT L+2)<D$(G-I+1,NOT L+2) LET R=R+1:P=S(R,L):IF R<G GOTO 3530 |
3640 |
GOTO 3560 |
3650 |
IF D$(P,0)<D$(G-I+1,0) LET R=R+1:P=S(R,L):IF R<G GOTO 3550 |
3660 |
GOTO 3560 |
3670 |
E=0:G=-1:F9=1:GOSUB 4480 :CLEAR F6,F9 |
3680 |
CLS :PRINT "Bitte Daten eingeben !":GOSUB 6300 :GOTO 2460 |
3690 |
D=3*(G+1)^2:Z=0:USING "####.#":PRINT 0;" % sortiert |
3710 |
FOR L=0 TO 1:FOR I=0 TO G:K=0:FOR J=0 TO G |
3720 |
IF D$(J,L)<=D$(I,L) LET K=K+1:IF D$(I,L)=D$(J,L) GOSUB 3830 |
3730 |
Z=Z+1:CURSOR 0,0:PRINT Z/D*100 |
3740 |
NEXT J:S(K,L)=I:NEXT I:NEXT L |
3750 |
FOR I=0 TO G:K=0:FOR J=0 TO G |
3760 |
U=VAL MID$ (D$(I,5),4,2)*31+VAL LEFT$ (D$(I,5),2) |
3770 |
V=VAL MID$ (D$(J,5),4,2)*31+VAL LEFT$ (D$(J,5),2) |
3780 |
IF V<=U LET K=K+1:IF U=V GOSUB 3830 |
3790 |
Z=Z+1:CURSOR 0,0:PRINT Z/D*100 |
3800 |
NEXT J:S(K,2)=I:NEXT I |
3810 |
USING :CLEAR F7,F6:IF F8 GOTO 4180 |
3820 |
GOTO 40 |
3830 |
O=-1:K=K-1:IF I=J RETURN |
3840 |
O=O+1:IF O=4 GOSUB 3880 :RETURN |
3850 |
IF D$(I,O)=D$(J,O) GOTO 3840 |
3860 |
IF D$(J,O)<D$(I,O) LET K=K+1 |
3870 |
RETURN |
3880 |
IF I<J LET K=K+1 |
3890 |
IF L OR I>J RETURN |
3900 |
BEEP 1,255,200 |
3910 |
CLS :PRINT "Doppelter Datensatz:":GOSUB 6300 |
3920 |
P=I:GOSUB 690 |
3930 |
PRINT " % sortiert":CURSOR 0,0:PRINT Z/D*100 |
3940 |
RETURN |
7290 |
CLS :READ F0:IF F0 READ M$(0):PRINT M$(0) |
7300 |
X=0:Y=F0:READ N:Q=INT (N/(4-F0)):S=16-4*Q |
7310 |
FOR I=0 TO N:J=INT (I/(4-F0)):CURSOR J*S,I-(4-F0)*J+F0:READ M$(0),Z(I) |
7320 |
PRINT " ";LEFT$ (M$(0),S+6-8*SGN Q):NEXT I |
7330 |
K=Y-F0+(4-F0)*X:IF K>N LET X=Q:Y=F0+N-(4-F0)*X:K=N |
7340 |
CURSOR X*S,Y:PRINT "->" |
7350 |
T=ASC INKEY$ :IF T=0 GOTO 7350 |
7360 |
BEEP 1,1,25 |
7370 |
IF T=5 CURSOR X*S,Y:PRINT " ":Y=Y+1:IF Y>3 LET Y=F0:X=X+1:IF X>Q CLEAR X |
7380 |
IF T=4 CURSOR X*S,Y:PRINT " ":Y=Y-1:IF Y<F0 LET Y=3:X=X-1:IF -X CLEAR X |
7390 |
IF T=14 CURSOR X*S,Y:PRINT " ":X=X+1:IF X>Q CLEAR X |
7400 |
IF T=15 CURSOR X*S,Y:PRINT " ":X=X-1:IF X<0 LET X=Q |
7410 |
IF T=13 CLS :CLEAR X,Y:GOTO Z(K) |
7420 |
GOTO 7330 |
7490 |
RESTORE 7500 :GOTO 7290 |
7500 |
DATA "Externer Programmteil !",1,"CE-140F o.k.",7510,"Abbruch",7520 |
7510 |
RETURN |
7520 |
CLS :END |