      PROGRAM CALBAK
C PROGRAM TO TAKE CATALOG FORMAT AND CREATE FILE OF EXP. LINES FOR CALPAR
      INTEGER*4 ID,IQFMT
      INTEGER IQ(12),NQN,NQNX,I
      REAL*8  FQ,ERRX,STR
      CHARACTER*36 INFIL,OUTFIL
      CHARACTER*24 QNBUF,QNSTR
      WRITE(*,*) 'ENTER CATALOG NAME'
      READ(*,102) INFIL
      OPEN(50,FILE=INFIL,STATUS='OLD')
      WRITE(*,*) 'ENTER OUTPUT FILE NAME'
      READ(*,102) OUTFIL
      OPEN(60,FILE=OUTFIL,STATUS='UNKNOWN')
1     READ(50,100,END=90,ERR=1) FQ,ERRX,STR,ID,IQFMT,QNBUF
100   FORMAT(F13.4,2F8.4,15X,I7,I4,A)
      IF(ID.GT.0) GO TO 1
      NQN=MOD(IQFMT,10)
      NQNX=NQN+NQN
      QNSTR=QNBUF(1:NQNX)//QNBUF(13:24)
      CALL READQN(QNSTR,IQ,NQNX)
      WRITE(OUTFIL,'(12I3)') (IQ(I),I=1,NQNX)
      STR=10.**STR
      IF(ERRX.GE.0.0001) THEN
         WRITE(60,101) OUTFIL,FQ,ERRX,STR
      ELSE
         WRITE(60,103) OUTFIL,FQ,ERRX,STR
      ENDIF
      GO TO 1
101   FORMAT(A,F15.4,F10.4,E10.3)
103   FORMAT(A,F15.6,F10.5,E10.3)
90    STOP
102   FORMAT(A)
      END
      SUBROUTINE READQN(QNSTR,IQN,N)
      CHARACTER*(*) QNSTR
      INTEGER IQN(*),N,I,II,K
      CHARACTER*1 ,CH
      II=0
      DO 1 I=1,N
         II=II+1
         CH=QNSTR(II:II)
         II=II+1
         K=ICHAR(QNSTR(II:II))-ICHAR('0')
         IF(K.LT.0.OR.K.GT.9) K=0
         IF(CH.NE.' ') THEN
           IF(CH.EQ.'-') THEN
               K=-K
           ELSE IF(CH.GE.'0'.AND.CH.LE.'9') THEN
               K= K+10*(ICHAR(CH)-ICHAR('0'))
           ELSE IF(CH.GE.'a'.AND.CH.LE.'z') THEN
               K=-K-10*(ICHAR(CH)-ICHAR('a')+1)
           ELSE IF(CH.GE.'A'.AND.CH.LE.'Z') THEN
               K= K+10*(ICHAR(CH)-ICHAR('A')+10)
           ELSE     
               K=999
           ENDIF
         ENDIF
         IQN(I)=K
  1      CONTINUE
      RETURN
      END
