C********************************************************************** C * C BITSET - This function returns the value of bit M of WORD * C * C********************************************************************** INTEGER FUNCTION BITSET(WORD,M) INTEGER WORD,M,T(15) DATA T/1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384/ NUWORD=WORD/T(M) BITSET=MOD(NUWORD,2) RETURN END C C********************************************************************** C * C SETBIT - This subroutine sets bit M of WORD to N * C * C********************************************************************** SUBROUTINE SETBIT(WORD,M,N) INTEGER BITSET,WORD,T(15) DATA T/1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384/ K=BITSET(WORD,M) IF(K .EQ. 0 .AND. N .EQ. 1)WORD=WORD +T(M) IF(K .EQ. 1 .AND. N .EQ. 0)WORD=WORD -T(M) RETURN END C C********************************************************************** C * C HIBIT - This function determines the most high-order bit * C in WORD which is on * C * C********************************************************************** INTEGER FUNCTION HIBIT(WORD) INTEGER BITSET,WORD HIBIT=0 DO 1 I=1,15 IF(BITSET(WORD,I) .EQ. 1)HIBIT=I 1 CONTINUE RETURN END