* Last processed by NICE on 12-Jun-2000 15:53:00 * Customized for : IEEE, LINUX, UNIX, MOTIF, F77 SUBROUTINE PARAM (LINE,ERROR) CHARACTER*(*) LINE LOGICAL ERROR,REFRAC INTEGER IANT * INCLUDE 'setup.inc' INCLUDE 'size.inc' INCLUDE 'data.inc' * CHARACTER*36 ARGUM,KEYWOR CHARACTER*80 CHAIN INTEGER NKEY,L,I,IER,NA INTEGER SIC_NARG, LENC REAL VALUE * PI is defined with more digits than necessary to avoid losing * the last few bits in the decimal to binary conversion REAL*8 PI,SFAC PARAMETER (PI=3.14159265358979323846D0) PARAMETER (SFAC = PI/180D0/3600D0) INTEGER IARG,JARG,NARG,IVIR,NVIR * NARG = SIC_NARG(0) DO IARG=1,NARG,2 CALL SIC_CH (LINE,0,IARG,ARGUM,NA,.TRUE.,ERROR) IF (ERROR) RETURN CALL SIC_AMBIGS('PARAMETER',ARGUM,KEYWOR,NKEY, $ NOMPAR,KVAR,ERROR) IF (ERROR) RETURN ENDDO * DO IARG=1,NARG,2 CALL SIC_CH (LINE,0,IARG,ARGUM,NA,.TRUE.,ERROR) IF (ERROR) RETURN CALL SIC_AMBIGS('PARAMETER',ARGUM,KEYWOR,NKEY, $ NOMPAR,KVAR,ERROR) JARG = IARG+1 VALUE = COEF(NKEY)/SFAC CALL SIC_CH (LINE,0,JARG,ARGUM,NA,.TRUE.,ERROR) IF (ERROR) RETURN IF (ARGUM.EQ.'*') THEN FREE(NKEY) = .TRUE. ELSE FREE(NKEY) = .FALSE. IVIR = INDEX(ARGUM,',') IF (IVIR.EQ.0) THEN CALL SIC_R4 (LINE,0,JARG,VALUE,.FALSE.,ERROR) IF (ERROR) RETURN COEF (NKEY) = VALUE*SFAC ELSE CALL SIC_MATH(ARGUM(1:IVIR),IVIR-1,VALUE,ERROR) IF (ERROR) RETURN COEF (NKEY) = VALUE*SFAC VALUE = VALPRE(NKEY)/SFAC NVIR = LENC(ARGUM)-IVIR CALL SIC_MATH(ARGUM(IVIR+1:),NVIR,VALUE,ERROR) IF (ERROR) RETURN VALPRE(NKEY) = VALUE*SFAC ENDIF ENDIF ENDDO FITTED = .FALSE. GOTO 50 * ENTRY SET_RADIO(IANT) * DO I=1,3 FREE(I) = .TRUE. COEF(I) = 0.0 VALPRE(I) = 0.0 ENDDO DO I=4,MVAR FREE(I) = .FALSE. COEF(I) = 0.0 VALPRE(I) = 0.0 ENDDO * WRITE(CHAIN,'(A,I1)') 'INTER_BASE:GENERAL.AN',IANT OPEN(UNIT=1,FILE=CHAIN,STATUS='OLD', C+VMS+ULTRIX+HPUX c $READONLY, C-VMS-ULTRIX-HPUX $IOSTAT=IER) IF (IER.NE.0) THEN WRITE(6,*) 'W-READ, Error opening '//CHAIN(1:LENC(CHAIN)) CALL PUTIOS('W-READ, ',IER) ELSE READ(1,*) ! Comment READ(1,*) ! IAZ READ(1,*) ! IEL READ(1,*) VALUE COEF(3) = VALUE*SFAC FREE(3) = .FALSE. WRITE(6,'(1x,A,F6.1,A)') 'I-READ, COH set to ',VALUE,'"' ENDIF CLOSE(UNIT=1) GOTO 50 * ENTRY SET_OPTICAL (REFRAC) DO I=1,5 FREE(I) = .TRUE. COEF(I) = 0.0 VALPRE(I) = 0.0 ENDDO DO I=6,MVAR FREE(I) = .FALSE. COEF(I) = 0.0 VALPRE(I) = 0.0 ENDDO IF (.NOT.REFRAC) THEN COEF(7) = 42.0*SFAC COEF(8) = 0.04*SFAC ENDIF GOTO 50 * 50 NPF =0 NFIX=0 DO L=1,KVAR IF (FREE(L)) THEN NPF=NPF+1 IPAR(NPF)=L ELSE NFIX=NFIX+1 IFIXED(NFIX)=L ENDIF ENDDO END * BLOCKDATA NOM_PARAM * INCLUDE 'setup.inc' INCLUDE 'size.inc' INCLUDE 'data.inc' * * DATA NOMPAR / $'IAZ Zero azimuth', $'IEL+COV Zero elevation', $'COH Azimuth collimation', $'MVE East Inclination ', $'MVN North Inclination', $'NPE Non perpendicularity', $'REF1 1st order refraction', $'REF2 2nd order refraction', $'ELES grav.+exc. coder ele. (sin)', $'ELEC grav.+exc. coder ele. (cos)', $'AZES excen. coder az. (sin)', $'AZEC excen. coder az. (cos)', $'incl. coder az. (sin)', $'incl. coder az. (cos)', $'incl. coder ele. (sin)', $'incl. coder ele. (cos)'/ END