      SUBROUTINE CDCDEC(LEN,IN,OUTPUT)
C
C THIS SUBROUTINE TRANSLATES CDC 7600 FLOATING POINT WORDS (REAL) 
C READ IN OFF OF TAPE TO DEC FLOATING POINT WORDS (REAL).
C
C LEN MUST BE SET BY CALLER TO THE NUMBER OF CDC WORDS TO BE CONVERTED.
C (IF YOU'VE READ IN N BYTES THEN LEN = (N*8+59)/60 OR SO).
C INPUT IS THE ARRAY IN WHICH THE CDC WORDS ARE STORED.
C
C
      INTEGER*2 OUTPUT(LEN),IEXP,IMAN1,IMAN2,INPUT
      BYTE IN(LEN)
      LOGICAL SIGN
      INPUT(I) = IN(I)
      IBASWD = 1
      DO 20 I=1,LEN,2
         SIGN=.FALSE.
         IF((INPUT(IBASWD).AND."200).NE.0)SIGN=.TRUE.
         IEXP=ISHFT(INPUT(IBASWD),8).AND."040000
         IEXP=IEXP.OR.(ISHFT(INPUT(IBASWD),11).AND."034000)
         IEXP=IEXP.OR.(ISHFT(INPUT(IBASWD+1),3).AND."003600)
         IF(SIGN)IEXP=(.NOT.IEXP).AND."077600
         IF((IEXP.AND."040000).EQ.0)IEXP=IEXP+"000200
         IEXP=IEXP+"014000
         IEXP=IEXP.AND."077600
         IF(SIGN)IEXP=IEXP.OR."100000
         IMAN1=ISHFT(INPUT(IBASWD+1),4).AND."000160
         IMAN1=IMAN1.OR.(ISHFT(INPUT(IBASWD+2),-4).AND."000017)
         IF(SIGN)IMAN1=(.NOT.IMAN1).AND."000177
         OUTPUT(2*I-1) = IEXP.OR.IMAN1
         IMAN2=ISHFT(INPUT(IBASWD+2),12).AND."170000
         IMAN2=IMAN2.OR.(ISHFT(INPUT(IBASWD+3),4).AND."007760)
         IMAN2=IMAN2.OR.(ISHFT(INPUT(IBASWD+4),-4).AND."000017)
         IF(SIGN)IMAN2=.NOT.IMAN2
         OUTPUT(2*I)=IMAN2
         IF(I.EQ.LEN)GOTO 20
         SIGN=.FALSE.
         IF((INPUT(IBASWD+7).AND."10).NE.0)SIGN=.TRUE.
         IEXP=ISHFT(INPUT(IBASWD+7),12).AND."040000
         IEXP=IEXP.OR.(ISHFT(INPUT(IBASWD+8),7).AND."037600)
         IF(SIGN)IEXP=(.NOT.IEXP).AND."077600
         IF((IEXP.AND."040000).EQ.0)IEXP=IEXP+"000200
         IEXP=IEXP+"014000
         IEXP=IEXP.AND."077600
         IF(SIGN)IEXP=IEXP.OR."100000
         IMAN1=INPUT(IBASWD+9).AND."000177
         IF(SIGN)IMAN1=(.NOT.IMAN1).AND."000177
         OUTPUT(2*I+1)=IEXP.OR.IMAN1
         IMAN2=ISHFT(INPUT(IBASWD+10),8).AND."177400
         IMAN2=IMAN2.OR.(INPUT(IBASWD+11).AND."000377)
         IF(SIGN)IMAN2=.NOT.IMAN2
         OUTPUT(2*I+2)=IMAN2
C KEEP POINTER UP TO DATE
         IBASWD = IBASWD + 15
20    CONTINUE
      RETURN
      END
