PROGRAM HUNDSCVT C PROGRAM TO TAKE CATALOG FORMAT AND CONVERT HUND'S CASE CHARACTER*36 INFIL,OUTFIL CHARACTER*51 LINE CHARACTER*2 QN(12),QJ,Q2L,Q2H,QONE,QOMEGA CHARACTER*1 XCHR INTEGER ICV(5),NLINE,I,IQFMT,NQN DATA ICV/0,0,10,20,40/ QONE=' 1' WRITE(*,*) 'ENTER CATALOG INPUT FILE NAME' READ(*,102) INFIL OPEN(10,FILE=INFIL,STATUS='OLD') WRITE(*,*) 'ENTER OUTPUT FILE NAME' READ(*,102) OUTFIL OPEN(11,FILE=OUTFIL,STATUS='UNKNOWN') WRITE(*,*) 'ENTER negative number if A is negative' I=0 READ(*,*) I IF(I.LT.0) THEN Q2L=' 2' Q2H=' 1' ELSE Q2L=' 1' Q2H=' 2' ENDIF NLINE=0 1 READ(10,100,END=90) LINE,IQFMT,QN,XCHR 100 FORMAT(A51,I4,12A2,1A1) NQN=MOD(IQFMT,10) IF(NQN.LT.3.OR.NQN.GT.5) GO TO 1 NQN=600-ICV(NQN) IF(IQFMT/100.EQ.2) THEN C convert from case b to a IF(NLINE.EQ.0) WRITE(*,*) 'convert from case b to a' IQFMT=IQFMT+NQN DO 10 I=0,6,6 QJ=QN(I+3) QN(I+3)=QN(I+2) IF(QN(I+1).EQ.QJ) THEN QN(I+2)=Q2H IF(QJ.EQ.QONE) QN(I+2)=QONE ELSE QN(I+2)=Q2L QN(I+1)=QJ ENDIF 10 CONTINUE ELSE C convert from case a to b IF(NLINE.EQ.0) WRITE(*,*) 'convert from case a to b' IQFMT=IQFMT-NQN DO 20 I=0,6,6 QOMEGA=QN(I+2) QN(I+2)=QN(I+3) QJ=QN(I+1) QN(I+3)=QJ IF(QOMEGA.EQ.Q2L) THEN C subtract 1 from J to get N IF(QJ(2:2).EQ.'0') THEN QJ(1:1)=CHAR(ICHAR(QJ(1:1))-1) QJ(2:2)='9' IF(QJ.EQ.'09') QJ=' 9' ELSE IF(QJ.NE.QONE) THEN QJ(2:2)=CHAR(ICHAR(QJ(2:2))-1) ENDIF QN(I+1)=QJ ENDIF 20 CONTINUE ENDIF NLINE=NLINE+1 WRITE(11,100) LINE,IQFMT,QN,XCHR GO TO 1 90 STOP 102 FORMAT(A) END