C PGM: PLTDAT C OLD PGM NAME: RDDATA C MOD TO PLOT PHASE DATA ADDED TO END OF FILE LOGICAL PHA/.FALSE./,LAST/.FALSE./,FIRST/.TRUE./ DIMENSION P1(60),P2(60) DIMENSION NAME(10),NAME2(8),PHASE(500),FREQ(500),THRE(500) EQUIVALENCE (NAME(2),NAME2) DATA FMIN/100./,FMAX/2.5E4/,ICN/11/,NUM/97/ ACCEPT "FLAT DELY REMOVED (MS)=",TFLAT 500 CONTINUE IF(ICN.EQ.1)CALL GCHAR(ICH,IER) CALL INITT(0) CALL SWINDO(200,675,50,325) CALL DWINDO(FMIN,FMAX,1E-4,10.) CALL LOGTRN(3) CALL GRIDR(10,10,0,"FREQ"," THRE") CALL SVSTAT(P1) CALL SWINDO(200,675,425,325) CALL DWINDO(FMIN,FMAX,-10.,1.) CALL LOGTRN(1) CALL GRIDR(6,14,0,"FREQ","PHASE/PI") CALL SVSTAT(P2) WRITE(10,5)TFLAT 5 FORMAT("#; CF :FILENAME OR COMMAND:RE,ST,TT,B=filename)" . ," FLAT DELY=",F5.2) 1 CONTINUE CALL PCHAR(NUM,IER) CALL PCHAR(":",IER) CALL ALPHCUR(IX1,IY1) WRITE(10,4) 4 FORMAT(" :",Z) READ(ICN,3,ERR=500)NAME(1) IF(ICN.EQ.1)WRITE(10,3)NAME(1) 3 FORMAT(S10) IF(NAME(1).EQ."ST")STOP IF(NAME(1).EQ."RE")GO TO 500 IF(NAME(1).EQ."TT")ICN=11 IF(NAME(1).EQ."TT")GO TO 1 IF(NAME(1).NE."B=")GO TO 95 C OPEN BATCH FILE WITH NAME=NAME(2) AND GET COMMANDS FROM FILE ICN=1 CALL CLOSE(1,IER) OPEN 1,NAME2,ATT="I",ERR=500 GO TO 1 95 CONTINUE CALL ALPHCUR(IX0,IY0) CALL CLOSE(0,IER) ;CLOSE 0 IF OPEN OPEN 0,NAME,ATT="I",ERR=1 LAST=.FALSE. READ FREE(0,ERR=1) READ FREE(0,ERR=1)ATT,TMIL GAIN=10.**(-ATT/20.) FIRST=.TRUE. II=1 100 CONTINUE PHA=.FALSE. READ FREE(0,ERR=50,END=48)FREQ(II),THRE(II),PHASE(II) II=II+1 GO TO 100 110 CONTINUE PHA=.TRUE. ;PLOT IS OF PHASE ONLY READ FREE(0,ERR=50,END=48)FREQ(1),FREQ(2),THRE(1),THRE(2) II=3 115 CONTINUE C READ IN PHASE DATA READ FREE(0,ERR=50,END=48)FREQ(II),PHASE(II) II=II+1 GO TO 115 48 CONTINUE C LAST PASS HAS BEEN MADE ON PRESENT FILE LAST=.TRUE. 50 CONTINUE NWDS=II-1 C SET UP PLOT CALL RESTAT(P1) TMIN=10 JMAX=1 NW=NWDS IF(PHA)NW=2 FIRST=.TRUE. DO 10 J=1,NW I=NW-J+1 IF(THRE(I).GE.8.5)FIRST=.TRUE. IF(THRE(I).GE.8.5)GO TO 10 TH=GAIN*THRE(I) TMIN=AMIN1(TMIN,TH) IF(TMIN.EQ.TH)ICF=I IF(FIRST)CALL MOVEA(FREQ(I),TH) CALL DRAWA(FREQ(I),TH) FIRST=.FALSE. JMAX=J 10 CONTINUE IF(PHA)ICF=1 CALL MOVEA(FREQ(ICF),.8*GAIN*THRE(ICF)) CALL ANMODE CALL PCHAR(NUM,IER) IF(PHA)GO TO 13 CALL MOVABS(IX1,IY1) CALL ANMODE WRITE(10,12)IFIX(FREQ(ICF)) 12 FORMAT(I5) 13 CONTINUE C PLOT PHASE IF(PHA)NWDS=3 IF(PHA)JMAX=II-NWDS FEE=0 F1=PHASE(NWDS) ;LOAD LOW FREQ PHASE CALL RESTAT(P2) TBM=0 TBM=TFLAT/1000. DELY= TMIL/1000. - TBM ;CORRECT FOR NEURAL,ACOUSTIC,TMIL,&BM FLAT DELY FIRST=.TRUE. DO 20 J=1,JMAX I=NWDS-J+1 IF(PHA)I=J-1+NWDS DF=PHASE(I)-F1 ;DELTA PHASE IF(ABS(DF).GT.ABS(DF+2.))DF=DF+2. IF(ABS(DF).GT.ABS(DF-2.))DF=DF-2. FEE=FEE+DF ;ACCUM PHASE F1=PHASE(I) ;SAVE PRESENT PHASE FOR NEXT LOOP PHASE(I)=FEE-2*DELY*FREQ(I) ;CORRECT FOR DELAY AND STORE IF(FIRST)CALL MOVEA(FREQ(I),PHASE(I)) IF(DF.NE.0.)FIRST=.FALSE. IF(DF.EQ.0.)CALL MOVEA(FREQ(I),PHASE(I)) C PLOT ONLY IF PHASE HAS CHANGED FROM LAST VALUE C THIS STOPS PLOT WHEN PHASE WAS NO LONGER MEASURED!!!!! IF(DF.NE.0.)CALL DRAWA(FREQ(I),PHASE(I)) 20 CONTINUE CALL ANMODE IF(.NOT.FIRST)CALL PCHAR(NUM,IER) CALL MOVABS(IX0,IY0) CALL ANMODE IF(.NOT.LAST)GO TO 110 C INCREMENT OUTPUT CODE LETTER (a,b,...) NUM=NUM+1 CALL ANMODE CALL PCHAR("",IER) NUM=NUM+1 IF(NUM.EQ.123)NUM=65 IF(NUM.EQ.91)NUM=97 IF(ICN.EQ.1)CALL GCHAR(ICH,IER) GO TO 1 35 CONTINUE STOP END