5 ! CHASH -CHANGE HASH NUMBERS 6 ! WRITTEN NOV 21,1972 BY R. BRANTON 10 OPEN "**MASTER" AS FILE 1 : DIM# 1 ,M%(100) 15 OPEN "**SCLINF" AS FILE 2 : DIM# 2 ,C$( 2222 )=16 20 OPEN "**HASH" AS FILE 7 : DIM# 7 ,H( 2222 ,3),Z%(100,2) 25 OPEN "**STATUS" AS FILE 4 : DIM# 4 ,E9%( 2222 ,2) 50 DEF FNA(Z)=Z-INT(Z/10)*10 60 DIM D%(1500%) 100 H(0,0)=M%(1%) ! # OF CLASSES 200 INPUT "STARTING CLASS INDEX,ENDING CLASS INDEX OR 0,0";I1,I2 210 IF I1=0 THEN 1600 212 IF I1>I2 OR I1<1 OR I2>H(0,0) THEN PRINT "INVALID INDEXES": GOTO200 215 INPUT "ARE THESE NEW CLASSES";A9$ 217 FOR I=I1 TO I2 220 B$=LEFT(C$(I),10) 230 C9=0 : C8=0 : CHANGE B$ TO A 249 FOR I%=1 TO 4 250 IF A(I%)<>0 AND A(I%)<>32 THEN C9=C9*10+FNA(A(I%)) 251 NEXT I% 299 FOR I%=5 TO 10 300 IF A(I%)<>0 AND A(I%)<>32 THEN C8=C8*10+FNA(A(I%)) 301 NEXT I% 350 IF A9$="YES" THEN 500 400 FOR J=1 TO H(0,0) 410 IF H(J,3)<>I THEN 450 415 PRINT "OLD POSITION IS";J 420 FOR J1=J TO H(0,0)-1 430 H(J1,J2)=H(J1+1,J2) FOR J2=1 TO 3 440 NEXT J1 445 GOTO 500 450 NEXT J 500 FOR J=1 TO H(0,0) 510 IF H(J,1)"YES" THEN 3000 2020 PRINT #12,I;TAB(5);Z%(I,1);TAB(12);Z%(I,2) FOR I=0 TO 99 2030 PRINT #12,"*********************************************" 2035 N=H(0,0) 2040 PRINT #12,I;TAB(5);H(I,1);TAB(12);H(I,2);TAB(19);H(I,3);TAB(26);LEFT(C$(H(I,3)),25) FOR I=1 TO N 3000 ! ***** SORT CLASSES IN ALPHA ORDER ***** 3010 D%(I%)=I% FOR I%=1% TO N 3020 M=N 3100 M=INT(M/2) : K=N-M 3200 FOR I%=1% TO K 3210 IF C$(D%(I%)) <= C$(D%(I%+M)) THEN 3500% 3220 D1%=D%(I%) : D%(I%)=D%(I%+M) : D%(I%+M)=D1% 3300 FOR J%=I% TO 1% STEP -M 3310 IF J%-M < 1 THEN 3500% 3320 IF C$(D%(J%)) >= C$(D%(J%-M)) THEN 3500% 3330 D1%=D%(J%) : D%(J%)=D%(J%-M) : D%(J%-M)=D1% 3400 NEXT J% 3500 NEXT I% 3600 IF M >= 2 THEN 3100 ! GO MAKE ANOTHER PASS 3700 & #12,CHR$(12) : & #12 : & #12 : & #12,TAB(40);DATE$(0);" ";TIME$(0) 3710 & #12 : & #12,TAB(30);"CLASSES IN SORT ORDER" : & #12 3720 & #12,"INDEX CLASS" : & #12,"---- ---------------" 3730 M%(93%)=D%(1%) ! SET FIRST POINTER 3790 & #12,D%(1);TAB(7);C$(D%(1)) 3800 FOR I%=1% TO N-1 3810 E9%(D%(I%),2%)=D%(I%+1%) ! SET NEXT FLAG 3820 & #12,D%(I%+1%);TAB(7);C$(D%(I%+1%)) 3850 NEXT I% 9000 CLOSE 1,2,4,7,12 9999 END