CTITLESADCNP -- DECON PRINTER PLOT OF AUTOCORRELATIONS & OPERATOR 00000100 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR J. MENDEKE 00000200 CA DESIGNER J. MENDEKE 00000300 CA LANGUAGE VSFORTRAN 00000401 CA SYSTEM IBM AND CRAY 00000501 CA WRITTEN 03-29-78 00000600 C REVISED 05-12-78 MENDEKE ADD ONE CHAR TO PLOT WIDTH 00000700 C REVISED 04-01-85 KNIGHT--DUAL CRAY/VS FORTRAN. 00000800 C REVISED 11-13-89 KNIGHT--CRAY CFT77 COMPATIBILITY. 00000902 C 00001000 CA 00001100 CA 00001200 CA CALL SADCNP (X,NEL,NARRAY,MAXLN,ANST,ANINCR,LAB,NORM,IPR) 00001300 CA INPUT X = INPUT DATA ARRAY. (UP TO 4 SEPARATE SETS)R4 00001400 CA INPUT NEL = NUMBER OF ELEMENTS IN EACH ARRAY. I4 00001500 CA INPUT NARRAY = NUMBER OF ARRAYS IN X. (MAX = 3). I4 00001600 CA INPUT MAXLN = MAXIMUM NUMBER OF POINTS TO PRINT. I4 00001700 CA (LESS THAN OR EQUAL TO NEL). 00001800 CA INPUT ANST = ANNOTATION START VALUE. R4 00001900 CA INPUT ANINCR = ANNOTATION INCREMENT. R4 00002000 CA INPUT LAB = ARRAY WITH SP, TRACE NO., CDP, TRACE NO.,I4 00002100 CA DISTANCE, START AND END TIMES FOR EACH 00002200 CA ARRAY IN X. 00002300 CA INPUT NORM = 0 DO NOT NORMALIZE INDIVIDUAL GRAPH. I4 00002400 CA = 1 NORMALIZE INDIVIDUAL GRAPH. 00002500 CA INPUT IPR = PRINT UNIT. I4 00002600 CA 00002700 CA 00002800 CA THIS SUBROUTINE PRODUCES A PRINTER PLOT OF AUTOCORRELATION 00002900 CA FUCNTIONS AND OPERATORS GENERATED BY PROCESS 'DCON'. 00003000 CA THE CALLING ROUTINE SHOULD SPACE TO THE TOP OF A PAGE AND 00003100 CA PRINT A HEADING IF DESIRED. 00003200 CAEND 00003300 C EJECT 00003400 C 00003500 C LOCAL ARRAYS (INTERNAL TO SUBROUTINE). 00003600 C 00003700 C LINE ( 125) = HOLDS ONE LINE OF PRINT. L1 00003800 C MAX ( 3) = MAXIMUM VALUE FOR EACH ARRAY. R4 00003900 C MIN ( 3) = MINIMUM VALUE FOR EACH ARRAY. R4 00004000 C SYM ( 3) = SYMBOLS USED FOR THE DIFFERENT FUNCTIONS L1 00004100 C 00004200 C 00004300 C LOCAL VARIABLES AND CONSTANTS (INTERNAL TO SUBROUTINE). 00004400 C 00004500 C BLNK = CHARACTER BLANK. L1 00004600 C IND = USED AS INDEX FOR SEPARATE ARRAYS IN X. I4 00004700 C N = NUMBER OF ARRAYS TO BE PLOTTED. (NARRAY). I4 00004800 C POS = LINE POSITION FOR NEXT SYMBOL. I4 00004900 C TMAX = MAXIMUM VALUE FOR ALL ARRAYS. R4 00005000 C TMIN = MINIMUM VALUE FOR ALL ARRAYS. R4 00005100 C 00005200 C EJECT 00005300 SUBROUTINE SADCNP (X,NEL,NARRAY,MAXLN,ANST,ANINCR,LAB,NORM,IPR) 00005400 C 00005500 IMPLICIT INTEGER (A-Z) 00005600 C 00005700 C 00005800 C REAL ARRAYS IN PARAMETER LIST. 00005900 REAL X (1) 00006000 C 00006100 C 00006200 C INTEGER ARRAYS IN PARAMETER LIST. 00006300 INTEGER LAB (21) 00006400 C 00006500 C 00006600 C REAL VARIABLES IN PARAMETER LIST 00006700 REAL ANST 00006800 REAL ANINCR 00006900 C 00007000 C 00007100 C REAL ARRAYS--LOCAL (INTERNAL TO SUBROUTINE). 00007200 REAL MAX ( 3) 00007300 REAL MIN ( 3) 00007400 C 00007500 C 00007600 C REAL VARIABLES AND CONSTANTS--LOCAL (INTERNAL TO SUBROUTINE). 00007700 REAL AA 00007800 REAL TMAX 00007900 REAL TMIN 00008000 REAL AMAX 00008100 C 00008200 C 00008300 C REAL FUNCTION SUBPROGRAMS 00008400 COUT REAL ABS 00008500 C 00008600 C 00008700 C LOGICAL ARRAYS--LOCAL (INTERNAL TO SUBROUTINE). 00008800 CHARACTER* 1 LINE ( 125) 00008900 CHARACTER* 1 SYM ( 3) 00009000 C 00009100 C 00009200 C LOGICAL VARIABLES--LOCAL (INTERNAL TO SUBROUTINE). 00009300 CHARACTER* 1 BLNK 00009400 C 00009500 C INITIALIZATION 00009600 C 00009700 DATA SYM /'B','A','*'/ 00009800 DATA BLNK /' '/ 00009900 C 00010000 C 00010100 N = NARRAY 00010200 IF (N.LE.0) GO TO 100 00010300 IF (N.GT.3) N = 3 00010400 M = MAXLN 00010500 IF (M.GT.NEL) M = NEL 00010600 C 00010700 C GET MAX AND MIN VALUES 00010800 C 00010900 DO 20 00011000 * I = 1, N 00011100 MAX(I) = -7.0E+75 00011200 MIN(I) = +7.0E+75 00011300 C 00011400 DO 10 00011500 * J = 1, M 00011600 K = (I-1) * NEL + J 00011700 IF (X(K).GT.MAX(I)) MAX(I) = X(K) 00011800 IF (X(K).LT.MIN(I)) MIN(I) = X(K) 00011900 C 00012000 10 CONTINUE 00012100 C 00012200 IF (MAX(I) .EQ. 0.) MAX(I) = 1. 00012300 20 CONTINUE 00012400 C 00012500 TMAX = MAX(1) 00012600 TMIN = MIN(1) 00012700 C 00012800 DO 30 00012900 * I = 2,3 00013000 IF (MAX(I).GT.TMAX) TMAX = MAX(I) 00013100 IF (MIN(I).LT.TMIN) TMIN = MIN(I) 00013200 C 00013300 30 CONTINUE 00013400 C 00013500 C WRITE LEGEND 00013600 C 00013700 WRITE (IPR, 9000 ) (LAB(I),I=1,5),LAB(6),LAB(7) 00013800 C 00013900 C WRITE AXES 00014000 C 00014100 WRITE (IPR, 9010 ) 00014200 C 00014300 C SCAN FOR ABSOLUTE MAXIMUM 00014400 C 00014500 DO 35 00014600 * I = 1, N 00014700 AMAX = ABS(MIN(I)) 00014800 IF ( AMAX .GT. MAX(I) ) MAX(I) = AMAX 00014900 35 CONTINUE 00015000 IF ( ABS(TMIN) .GT. TMAX ) TMAX = ABS(TMIN) 00015100 C 00015200 AA = ANST 00015300 C 00015400 DO 90 00015500 * I = 1, M 00015600 C 00015700 DO 40 00015800 * L = 1, 125 00015900 40 LINE(L) = BLNK 00016000 C 00016100 DO 80 00016200 * J = 1, N 00016300 K = (J-1) * 42 + 21 00016400 IND = (J-1) * NEL 00016500 IF (NORM.NE.0) POS = INT((X(IND+I)/MAX(J)) * 20.) + K 00016601 IF (NORM.EQ.0) POS = INT((X(IND+I)/TMAX) * 20.) + K 00016701 IF (POS.LT.K) GO TO 60 00016800 C 00016900 DO 50 00017000 * L = K, POS 00017100 50 LINE(L) = SYM(J) 00017200 C 00017300 GO TO 80 00017400 C 00017500 60 DO 70 00017600 * L = POS, K 00017700 70 LINE(L) = SYM(J) 00017800 C 00017900 80 CONTINUE 00018000 C 00018100 IF (ANINCR.LT.1.) WRITE (IPR, 9050 ) AA,LINE 00018200 IF (ANINCR.GE.1.) WRITE (IPR, 9060 ) AA,LINE 00018300 C 00018400 AA = AA + ANINCR 00018500 C 00018600 90 CONTINUE 00018700 C 00018800 100 RETURN 00018900 C 00019000 9000 FORMAT ('0',22X,' SHOTPOINT',I5,' TRACE',I4,' CDP NO.', 00019100 * I5,' TRACE',I4,' OFFSET',I6, 00019200 * ' TRACE WINDOW ',I6, ' TO ', I6) 00019300 C 00019400 9010 FORMAT ('-',6X,'-1',18('-'),'0',19('-'),'1', 00019500 * 1X,'-1',18('-'),'0',19('-'),'1', 00019600 * 1X,'-1',18('-'),'0',19('-'),'1') 00019700 C 00019800 9050 FORMAT (1X,F5.3,1X,125A1) 00019900 C 00020000 9060 FORMAT (1X,F5.0,1X,125A1) 00020100 C 00020200 END 00020300