PROGRAM CATDOC CHARACTER*40 FNAME,DNAME CHARACTER*15 MOLNAM REAL*8 QLN(7) INTEGER*4 NLINES,NXTDIR,TAG,TOTLINES,NSPEC TAG=0 NSPEC=0 TOTLINES=0 OPEN(11,FILE='/catalog/doc/moldoc.tex') write(*,*) 'opened /catalog/doc/moldoc.tex' 1 IF(NXTDIR(TAG).GT.0) THEN CALL CATDIR(TAG,MOLNAM,NLINES,QLN,IVER) IF(NLINES.LE.0) GO TO 1 NSPEC=NSPEC+1 TOTLINES=TOTLINES+NLINES CALL CATFIL(TAG,FNAME) OPEN(12,FILE=FNAME,STATUS='OLD',ERR=11) I=INDEX(FNAME,'c0') IF(I.EQ.0) I=INDEX(FNAME,'c1') IF(I.EQ.0) GO TO 1 K=INDEX(FNAME,' ')-1 DNAME=FNAME(1:I-1)//'doc/d'//FNAME(I+1:K) K=K+4 I=I+4 WRITE(11,*) '\\docpage' WRITE(11,*) '\\tabline' WRITE(11,*) '\\input{',DNAME(I:K),'}' WRITE(11,*) '\\docend' OPEN(10,FILE=DNAME,STATUS='OLD',ERR=10) CALL CHKDOC(TAG,MOLNAM,QLN,IVER,NLINES) GO TO 1 10 OPEN(10,FILE=DNAME,ERR=1) WRITE(*,*) TAG,MOLNAM,' creating',DNAME CALL CRDOC(TAG,MOLNAM,QLN,IVER,NLINES) GO TO 1 ENDIF WRITE(*,*) NSPEC,' species',TOTLINES,' lines' STOP ' last species done' 11 WRITE(*,*) 'UNABLE TO OPEN FILE: ',FNAME GO TO 1 END SUBROUTINE CHKDOC(TAG,MOLNAM,QLN,IVER,NLINES) REAL*4 QLN(8) INTEGER TAG CHARACTER*(*) MOLNAM CHARACTER*79 LINE READ(10,100) LINE I=INDEX(LINE,'>')+2 IF(I.GT.1) THEN READ(LINE(I:I+6),'(I7)',ERR=10) ITAG IF(ITAG.NE.TAG) GO TO 10 ELSE GO TO 10 ENDIF READ(10,100) LINE I=INDEX(LINE,'>')+2 IF(I.GT.1) THEN READ(LINE(I:I+6),'(I7)',ERR=20) IV IF(IV.NE.IVER) GO TO 20 ELSE GO TO 20 ENDIF READ(12,100) LINE WRITE(*,100) LINE RETURN 10 WRITE(*,*) TAG,' BAD TAG LINE: ',LINE RETURN 20 WRITE(*,*) TAG,IVER,' BAD VER LINE: ',LINE RETURN 100 FORMAT(A) END SUBROUTINE CRDOC(TAG,MOLNAM,QLN,IVER,NLINES) REAL*4 QLN(8) CHARACTER*(*) MOLNAM INTEGER TAG,IQN(12) EMIN=1.E+30 STR0=100 STR1=100 JMAX=0 K=1 10 READ(12,99,END=11,ERR=20) : FQ,ERR,S,ID,E,IG,ITAG,IQF,IQN IF(ABS(ITAG).NE.TAG) THEN WRITE(*,*) 'TAG MISMATCH',TAG,ITAG CLOSE(10) RETURN ENDIF FQX=FQ/300000. STR0=MIN(STR0,S) STR1=MIN(STR1,S-2.*LOG10(FQX)) EMIN=MIN(EMIN,E) JMAX=MAX(IQN(1),IQN(2),JMAX) K=K+1 GO TO 10 11 K=K-1 IF(K.NE.NLINES) THEN WRITE(*,*) 'END AT ',K RETURN ENDIF IFQ=(FQ+999.999)/1000. WRITE(10,101) ' Species Tag: \\> ',TAG, : ' \\> Species Name:\\> ',MOLNAM WRITE(10,101) '\\\\ Version: \\> ',IVER,' \\> \\>' WRITE(10,101) '\\\\ Date: \\> \\> \\>' WRITE(10,100) '\\\\ Contributor:\\> ', : 'R. L. Poynter and H. M. Pickett \\> \\>' WRITE(10,100) '\\\\ \\> \\> \\>' WRITE(10,102) '\\\\ Lines Listed: \\> ',NLINES, : ' \\> Q(300.0)=\\> ',10.**QLN(1) WRITE(10,102) '\\\\ Freq. (GHz) $<$ \\> ',IFQ, : ' \\> Q(225.0)=\\> ',10.**QLN(2) WRITE(10,102) '\\\\ Max. J: \\> ',JMAX, : ' \\> Q(150.0)=\\> ',10.**QLN(3) WRITE(10,103) '\\\\ LOGSTR0= \\> ',STR0, : ' \\> Q(75.00)=\\> ',10.**QLN(4) WRITE(10,103) '\\\\ LOGSTR1= \\> ',STR1, : ' \\> Q(37.50)=\\> ',10.**QLN(5) WRITE(10,103) '\\\\ Isotope Corr.: \\> ', 0., : ' \\> Q(18.75)=\\> ',10.**QLN(6) WRITE(10,103) '\\\\ Egy. (cm$^{-1}$) $>$\\> ',EMIN, : ' \\> Q(9.375)=\\> ',10.**QLN(7) WRITE(10,100) '\\\\ $\\mu_a$ = \\> \\> A=\\>' WRITE(10,100) '\\\\ $\\mu_b$ = \\> \\> B=\\>' WRITE(10,100) '\\\\ $\\mu_c$ = \\> \\> C=\\>' WRITE(10,100) '\\end{tabbing}' CLOSE(10) RETURN 20 WRITE(*,*) 'input error at line = ',K CLOSE(10) RETURN 99 FORMAT(F13.4,F8.4,F8.4,I2,F10.4,I3,I7,I4,12I2) 100 FORMAT(A,A) 101 FORMAT(A,I7,A,A) 102 FORMAT(A,I7,A,F12.3) 103 FORMAT(A,F7.1,A,F12.3) END