SUBROUTINE ZDAVE(BIG,N,M,AVE,STATUS) C C Module Number: 13.7.1 C C Module Name: ZDAVE C C Keyphrase: C ---------- C Compute average diode response C C Description: C ------------ C An average diode response for each diode is computed using a set C of responses. The worst response for each diode is rejected C C C FORTRAN Name: zdave.for C C C Keywords of Accessed Files : C -------------------------- C NONE C C Modules Called: C --------------- C SDAS: C umsput C C History: C -------- C Version Date Author Description C 1 1 MAY 86 D. Lindler Designed and coded C 2 APRIL 88 D. LINDLER new sdas i/o and standards C------------------------------------------------------------------------ C C UMSPUT DESTINATIONS -- CB, DAO, 4-SEP-87 C INTEGER STDOUT PARAMETER (STDOUT = 1) INTEGER STDERR PARAMETER (STDERR = 2) C END IRAF77.INC C C C INPUT PARAMETERS C INTEGER N C --->NUMBER OF DIODES INTEGER M C --->NUMBER OF RESPONSES DOUBLE PRECISION BIG(N,M) C --->M SETS OF RESPONSES C C OUTPUT PARAMETERS C DOUBLE PRECISION AVE(N) C --->AVERAGE RESPONSE INTEGER STATUS C --->STATUS C C LOCAL VARIABLES C CHARACTER*130 CONTXT C --->WHAT HAPPENED DOUBLE PRECISION TOT C --->TOTAL OF RESPONSES DOUBLE PRECISION RAVE C --->AVERAGE RESPONSE DOUBLE PRECISION DIF,NEWDIF C --->DIFFERENCE FROM AVERAGE INTEGER I,J,JPOS C --->INDICES INTEGER ISTAT C --->LOCAL ERROR STATUS C C-------------------------------------------------------------------- STATUS=0 IF(M.LT.2)THEN STATUS=1 CONTXT='MUST HAVE AT LEAST TWO SETS TO AVERAGE RESPONSE' GO TO 999 ENDIF C C LOOP ON DIODES C DO 100 I=1,N C C COMPUTE AVERAGE RESPONSE C TOT=0.0 DO 10 J=1,M TOT=TOT+BIG(I,J) 10 CONTINUE RAVE=TOT/M C C FIND WORST POINT C DIF=0.0 JPOS=1 DO 20 J=1,M NEWDIF=ABS(BIG(I,J)-RAVE) IF(NEWDIF.GT.DIF)THEN JPOS=J DIF=NEWDIF ENDIF 20 CONTINUE C C COMPUTE NEW AVERAGE WITH WORST POINT REJECTED C AVE(I)=(TOT-BIG(I,JPOS))/(M-1) 100 CONTINUE C GO TO 1000 999 CALL UMSPUT(CONTXT,STDOUT+STDERR,0,ISTAT) 1000 RETURN END