CTITLESAIED2 -- CALCULATE ROLLING SUM OF FILE AVERAGES FOR AIED 00010000 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR RANDY PROBST 00020000 CA DESIGNER RANDY PROBST 00030000 CA LANGUAGE FORTRAN 00040000 CA SYSTEM IBM AND CRAY 00050000 CA WRITTEN 09-19-86 00060000 C REVISED 02/06/87 REP - ADD NO WINDOWING OPTION 00070004 C REVISED 06/11/87 REP - ADD ROLLING AVERAGE OF SQUARED MEANS. 00080011 CA 00090000 CA 00100000 CA CALL SAIED2 (ASF, R, S, DCBA, DA, NDA, RLEN, NT, NTAT, NW, NWAT) 00110000 CA IN ASF = ADD/SUBTRACT FLAG 0-ADD; ^0-SUBTRACT I4 00120000 CA IN/OUT R = ARRAY FOR ROLLING SUM R4 00130000 CA IN S = ARRAY FOR FILE RECORD AVERAGES R4 00140000 CA IN DCBA = DCB ADDRESS I4 00150000 CA IN/OUT DA = DIRECT ACCESS RECORD NUMBER I4 00160000 CA IN NDA = NUMBER OF RECORDS PER BUFFER I4 00170000 CA IN RLEN = LENGTH OF ONE RECORD IN WORDS I4 00180001 CA IN NT = NUMBER OF TRACES PER FILE I4 00190000 CA IN NTAT = NUMBER OF WHOLE TRACE ATTRIBUTES I4 00200000 CA IN NW = NUMBER OF WINDOWS PER TRACE I4 00210000 CA IN NWAT = NUMBER OF WINDOW ATTRIBUTES I4 00220000 CA 00230000 CA 00240000 CA THIS ROUTINE READS AND EITHER ADDS OR SUBTRACTS THE AVERAGES 00250000 CA WITHIN A FILE TO A ROLLING SUM OF AVERAGES. 00260000 CA 00270000 SUBROUTINE SAIED2 (ASF,R,S,DCBA,DA,NDA,RLEN,NT,NTAT,NW,NWAT) 00280000 C 00290000 IMPLICIT INTEGER (A-Z) 00300000 C 00310000 C REAL ARRAYS IN PARAMETER LIST. 00320000 REAL R (1) 00330000 REAL S (1) 00340000 C 00350000 C READ FILE OF AVERAGES FROM DISC FILE INTO S ARRAY 00360000 C 00370000 CALL USWFRW (1, DCBA, DA, NDA, RLEN, S) 00380001 C 00390000 C LOOP ON TRACES 00400000 C 00410000 DO 500 T = 1, NT 00420000 IS = ((T-1) * ((2*NTAT)+(NW*2*NWAT))) + 1 00430012 IR = ((T-1) * ((3*NTAT+1)+(NW*(3*NWAT+1)))) + 1 00440010 C 00450000 C TEST FOR NO ATTRIBUTES TO ADD OR SUBTRACT 00460000 IF (S(IS) .EQ. 0.0) GO TO 250 00470003 C 00480000 C INCREMENT COUNTER 00490000 IF (ASF .EQ. 0) THEN 00500000 R(IR) = R(IR) + 1 00510000 ELSE 00520000 R(IR) = R(IR) - 1 00530000 END IF 00540000 C 00550000 C ADD OR SUBTRACT IN THE NEW FILE OF AVERAGES TO THE ROLLING SUM 00560000 C FOR THE WHOLE TRACE ATTRIBUTES 00570000 J = 0 00580012 DO 200 I = 1, NTAT*3, 3 00590012 IF (ASF .EQ. 0) THEN 00600000 R(IR+I) = R(IR+I) + S(IS+J) 00610012 R(IR+I+1) = R(IR+I+1) + S(IS+J+1) 00620012 R(IR+I+2) = R(IR+I+2) + S(IS+J)**2 00630012 ELSE 00640000 R(IR+I) = R(IR+I) - S(IS+J) 00650012 R(IR+I+1) = R(IR+I+1) - S(IS+J+1) 00660012 R(IR+I+2) = R(IR+I+2) - S(IS+J)**2 00670012 END IF 00680000 J = J + 2 00690012 200 CONTINUE 00700000 C 00710000 C LOOP ON WINDOWS 00720000 C 00730000 250 CONTINUE 00740003 IF (NW .LE. 0) GO TO 500 00750005 DO 400 W = 1, NW 00760000 ISW = IS + 2*NTAT + (W-1) * (2*NWAT) 00770012 C 00780000 C TEST FOR NO ATTRIBUTES TO ADD OR SUBTRACT 00790000 IF (S(ISW) .EQ. 0.0) GO TO 400 00800000 IRW = IR + (1+3*NTAT) + (W-1) * (1+3*NWAT) 00810010 C 00820000 C INCREMENT COUNTER 00830000 IF (ASF .EQ. 0) THEN 00840000 R(IRW) = R(IRW) + 1 00850001 ELSE 00860000 R(IRW) = R(IRW) - 1 00870001 END IF 00880000 C 00890000 C ADD OR SUBTRACT IN THE NEW FILE OF AVERAGES TO THE ROLLING SUM 00900000 C FOR THE WINDOWED ATTRIBUTES 00910000 J = 0 00920012 DO 300 I = 1, NWAT*3, 3 00930010 IF (ASF .EQ. 0) THEN 00940000 R(IRW+I) = R(IRW+I) + S(ISW+J) 00950012 R(IRW+I+1) = R(IRW+I+1) + S(ISW+J+1) 00960012 R(IRW+I+2) = R(IRW+I+2) + S(ISW+J)**2 00970012 ELSE 00980000 R(IRW+I) = R(IRW+I) - S(ISW+J) 00990012 R(IRW+I+1) = R(IRW+I+1) - S(ISW+J+1) 01000012 R(IRW+I+2) = R(IRW+I+2) - S(ISW+J)**2 01010012 END IF 01020000 J = J + 2 01030012 300 CONTINUE 01040000 C 01050000 400 CONTINUE 01060000 C 01070000 500 CONTINUE 01080000 C 01090006 CDEBUG------------------------------------------------------------- 01100006 C WRITE(6,99990) ASF,DA,NDA,RLEN,NT,NTAT,NW,NWAT 01110009 C9990 FORMAT(' SAIED2 -ASF,DA,NDA,RLEN,NT,NTAT,NW,NWAT-',8Z9) 01120009 C DO 600 T = 1, NT 01130009 C IS = ((T-1) * ((2*NTAT)+(NW*2*NWAT))) 01140012 C WRITE(6,99991) T, (S(IS+J),J=1,14) 01150009 C9991 FORMAT(' S',I5, 9Z9 / 7X,5Z9) 01160012 C IR = ((T-1) * ((3*NTAT+1)+(NW*(3*NWAT+1)))) 01170010 C WRITE(6,99992) (R(IR+J),J=1,21) 01180012 C9992 FORMAT(' R',F5.0, 9Z9 / 7X,9Z9 / 7X,3Z9) 01190010 C 600 CONTINUE 01200009 CDEBUG------------------------------------------------------------- 01210006 C 01220006 RETURN 01230000 END 01240000