SUBROUTINE CATNUM(A,N) 19850 INTEGER A,HOLD 20600 DIMENSION A(1) 20750 DIMENSION HOLD ( 4 ) 21250 DATA HOLD(1) /5/ 21650 CALL PUTNUM(HOLD,N) 21750 CALL CATSTR(A,HOLD) 21800 RETURN 21850 END 21900 SUBROUTINE CATSTR(A,B) 21950 INTEGER A,B 22550 DIMENSION A(1), B(1) 22700 CALL CATSUB(A,B,1,B(1)) 22800 RETURN 22850 END 22900 SUBROUTINE CPYSTR(A,B) 28400 INTEGER A,B 29000 DIMENSION A(1),B(1) 29100 A(1)=0 29150 CALL CATSUB(A,B,1,B(1)) 29200 RETURN 29250 END 29300 SUBROUTINE CPYSUB(A,B,START,LEN) 29350 INTEGER A,B,START 29950 DIMENSION A(1),B(1) 30100 A(1)=0 30200 CALL CATSUB(A,B,START,LEN) 30250 RETURN 30300 END 30350 FUNCTION HASH(A,PRIME) 34300 INTEGER A,HASH,PRIME,CHZERO,CHSPAC,CHC,CH 34950 DIMENSION A(1) 35100 COMMON /PARAM/ NCHPWD,CHZERO,CHSPAC,CHC 35250 L=(A(1)-1)/NCHPWD+2 35400 N=A(1)-(L-2)*NCHPWD 35550 HASH=A(1) 35750 I=2 35800 32759 IF(.NOT.(I.LT.L)) GO TO 32758 35850 HASH=HASH+A(I)-(A(I)/PRIME)*PRIME 35900 I=I+1 35950 GO TO 32759 36000 32758 IF(.NOT.(N.EQ.NCHPWD)) GO TO 32756 36150 HASH=HASH+A(L)-A(L)/PRIME*PRIME 36151 GO TO 32757 36152 32756 DO 32755 I=1,N 36250 CALL GETCH(A(L),I,CH) 36300 HASH=HASH+CH 36350 32755 CONTINUE 36400 32757 IF(HASH.LT.0) HASH=-HASH 36600 HASH=HASH-(HASH/PRIME)*PRIME 36650 RETURN 36700 END 36750 SUBROUTINE PUTCH(WD,POS,CH) 36800 INTEGER WD,POS,CH 37225 IF(.NOT.(POS.EQ.1)) GO TO 32758 37250 WD=(WD.AND.32512).OR.CH 37251 GO TO 32759 37252 32758 WD=(WD.AND.127).OR.(CH*256) 37275 32759 RETURN 41150 END 41200 SUBROUTINE PUTNUM(A,NUM) 41250 INTEGER A,APOS,AWD,CHC,DIGIT,CHSPAC,CHZERO 41750 DIMENSION A(1) 41900 DIMENSION DIGIT(5) 42050 COMMON /PARAM/ NCHPWD,CHZERO,CHSPAC,CHC 42200 N=NUM 42500 I=5 42550 GO TO 32758 42600 32759 IF(I.LT.1) GO TO 32757 42601 32758 N10=N/10 42650 DIGIT(I)=N-N10*10+CHZERO 42700 N=N10 42750 I=I-1 42800 GO TO 32759 42850 32757 AWD=2 42900 APOS=1 42950 DO 32756 I=1,5 43000 CALL PUTCH(A(AWD),APOS,DIGIT(I)) 43050 APOS=APOS+1 43100 IF(.NOT.(APOS.GT.NCHPWD)) GO TO 32755 43150 AWD=AWD+1 43200 APOS=1 43250 32755 CONTINUE 43350 32756 CONTINUE 43351 RETURN 43400 END 43450 FUNCTION NEWNO(N) 47750 IF(.NOT.(N.NE.0)) GO TO 32758 48300 NEWNO=N 48301 GO TO 32759 48302 32758 NEWNO=NEWNO-1 48350 32759 RETURN 48400 END 48450