PROGRAM VALD_QUB *+ * * Program. * VALD_QUB * * Purpose. * Convert linelist from VALD 'extract element' to (QUB) spectrum format * * * Author. * C.S.Jeffery * * History. * 11-JUN-97: original * 14-Nov-01: change to new QUB format * 08-Dec-05: process multiple files * * Requirements. * STR: string handling library * *- INTEGER TAP_ZELEM CHARACTER ELION*10 CHARACTER REF*20 CHARACTER VALDFILE*60 CHARACTER QUBFILE*60 PARAMETER ( CC = 2.997925E18 ) PARAMETER ( FOURPI = 12.56637061 ) *. * Select output data file. 10 WRITE(*,1006) 1006 FORMAT('File to contain atomic data (New QUB format)') READ (*,'(A)',ERR=10,END=990) QUBFILE IDECK = 0 IF (QUBFILE(1:10).NE.' ') THEN WRITE (*,'(A)') QUBFILE OPEN (1,FILE=QUBFILE,STATUS='NEW',ERR=997) IDECK = 1 ELSE GOTO 10 ENDIF * Select input data file, finish with a blank line 20 WRITE (*,1005) 1005 FORMAT('File containing atomic data (VALD format)') READ (*,'(A)',ERR=999) VALDFILE IF ( VALDFILE(1:1) == '-' ) GOTO 10 WRITE (*,'(A)') VALDFILE OPEN (2,FILE=VALDFILE,STATUS='OLD',ERR=998) WRITE (*,1000) * Read the data from a synspec/atlas format file. 100 CONTINUE READ (2,*,END=992,ERR=100) : ELION, WL, EXC, GFLOG, GAMR,GAMS,GAMW, ELAN,REF * Transform the values. IZ = 0 IN = 0 * IZ = IZ * II = IN + 1 ZMULT = 0.00 REF = 'VALD: '//REF IF (GAMR.EQ.0.0) GAMR = -99.0 IF (GAMW.EQ.0.0) GAMW = -99.0 IF (GAMS.EQ.0.0) GAMS = -99.0 IZ = TAP_ZELEM ( ELION(:2) ) READ(ELION(4:5),'(I2)') II * Write out the results. WRITE (*,1001) IZ,II,WL,GFLOG,GAMS,GAMR,GAMW,EXC,ZMULT,REF IF (IDECK.EQ.1) : WRITE (1,1001) IZ,II,WL,GFLOG,GAMS,GAMR,GAMW,EXC,ZMULT, : REF 1000 FORMAT (/' Z I lambda gf Game Gamr GamW exc ') 1001 FORMAT (2I3,F9.3,F7.3,4F8.3,F7.2,2x,A20) GOTO 100 * shut down 997 WRITE(*,*) 'File exists' GOTO 10 998 WRITE(*,*) 'Input file not found' GOTO 20 999 WRITE(*,*) 'No more datafiles for this ion' CLOSE (1) GOTO 10 992 WRITE(*,*) 'End of datafile' CLOSE (2) GOTO 20 990 STOP 'no more files' END