CTITLESAGRPH -- GRAPH ARRAY OF VALUES FOR STKP 00010017 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR P. COOPER 00020000 CA DESIGNER P. COOPER 00030000 CA LANGUAGE VS FORTRAN 00040000 CA WRITTEN 07-27-87 00050000 C RELEASED 12-24-87 00051017 C REVISED MM/DD/YY 00060000 C 00070000 CA 00080000 CA 00090000 CA CALL SAGRPH (ARRAY, LABELA, NPNTS, ARRMIN, ARRMAX, LCTN, MNLCTN, 00100009 CA HORSCL, LABEL, NCHAR, HEIGHT, LENGTH, PRTFLG, INITFL)00110010 CA INPUT ARRAY = ARRAY OF VALUES TO BE PLOTTED I4 00120000 CA INPUT LABELA = LABEL TO USE FOR VALUES IN ARRAY A4 00130000 CA INPUT NPNTS = NUMBER OF POINTS IN ARRAY I4 00140001 CA INPUT ARRMIN = MINIMUM VALUE OF PLOT I4 00150000 CA INPUT ARRMAX = MAXIMUM VALUE OF PLOT I4 00160000 CA INPUT LCTN = ARRAY OF LOCATIONS FOR ARRAY I4 00170009 CA INPUT MNLCTN = MINIMUM LOCATION I4 00180009 CA INPUT HORSCL = HORIZONTAL SCALE R4 00190009 CA INPUT LABEL = LABEL TO USE FOR GRAPH 6A4 00200000 CA INPUT NCHAR = NUMBER OF CHARACTERS IN LABEL I4 00210000 CA INPUT HEIGHT = HEIGHT OF GRAPH R4 00220000 CA INPUT LENGTH = LENGTH OF GRAPH R4 00230009 CA INPUT PRTFLG = PRINT FLAG FOR PRINTING VALUES I4 00240000 CA INPUT INITFL = INITIALIZATION FLAG FOR FIRST TIME I4 00250000 CA 00260000 CA 00270000 CA THIS SUBROUTINE PRODUCES A GRAPH OF AN ARRAY AT A SPECIFIED 00280000 CA HEIGHT AND LOCATION. 00290017 CAEND 00310000 C 00320000 C EJECT 00330000 C ===================================================================== 00340000 C LIST OF VARIABLE NAMES 00350000 C 00360000 C ARRAY = ARRAY OF INPUT VALUES 00370000 C IF ARRAY(I) = -9999 THEN VALUE IS NOT PLOTTED 00380000 C ARRMIN = MINIMUM VALUE IN INPUT ARRAY 00390000 C ARRMAX = MAXIMUM VALUE IN INPUT ARRAY 00400000 C HEIGHT = HEIGHT OF GRAPH 00410000 C HGT = STANDARD HEIGHT OF CHARACTER FOR PLOTTING 00420000 C HGT2 = HGT/2. = REDUCED HEIGHT OF CHARACTER FOR PLOTTING 00430000 C LABEL = LABEL TO USE FOR THE GRAPH 00440000 C NPNTS = NUMBER OF POINTS IN THE INPUT ARRAY 00450000 C VERSCL = VERTICAL SCALE 00460000 C LENGTH = LENGTH OF PLOT 00470010 C 00480000 C EJECT 00490000 C====================================================================== 00500000 C 00510000 SUBROUTINE SAGRPH(ARRAY, LABELA, NPNTS, ARRMIN, ARRMAX, LCTN, 00520010 * MNLCTN, HORSCL, LABEL, NCHAR, HEIGHT, LENGTH, 00530010 * PRTFLG, INITFL) 00540010 C 00550000 IMPLICIT INTEGER (A-Z) 00560000 C 00570000 C=================================================================== 00580000 C 00590000 C INTEGER AND CHARACTER VARIABLES 00600000 C 00610000 CHARACTER*4 LABEL (6) 00620000 CHARACTER*4 LABELA 00630000 INTEGER ARRAY (NPNTS) 00640001 INTEGER LCTN (NPNTS) 00650010 CHARACTER*8 CHAR 00660000 C 00670000 C REAL VARIABLES AND CONSTANTS 00680000 C 00690000 REAL HEIGHT 00700000 REAL LENGTH 00710000 REAL HORSCL 00720010 REAL VERSCL 00730000 REAL HGT 00740000 REAL HGT2 00750000 REAL X0 00760000 REAL Y0 00770000 REAL TEMP1 00780000 REAL Y1 00790000 C 00800000 C 00810000 C INITIALIZATION 00820000 C ============== 00830000 C 00840000 C 00850000 IF (INITFL .EQ. 0) GO TO 10 00860001 HGT = .14 00870000 HGT2 = HGT * .5 00880000 C 00890000 TEMP1 = ARRMAX - ARRMIN 00900000 IF (TEMP1 .EQ. 0) TEMP1 = 1. 00910000 VERSCL = HEIGHT / TEMP1 00920000 C 00980000 C PLOT BOX AROUND GRAPH 00990000 C 01000000 C CALL FACTOR TO BRING IN LINEWT 01010007 IF (1 .NE. 1) CALL FACTOR (1.0) 01020007 CALL LINEWT (0.01) 01030006 CALL PLOT (-.1, 0.0, 3) 01040000 CALL PLOT (-.1, HEIGHT, 2) 01050000 CALL PLOT (LENGTH+0.1, HEIGHT, 2) 01060000 CALL PLOT (LENGTH+0.1, 0.0, 2) 01070000 CALL PLOT (-.1, 0.0, 2) 01080000 CALL LINEWT (0.005) 01090006 C 01100000 C DIVIDE INTO HALVES AND PLOT DOTTED LINE 01110002 C 01120002 IVAL = TEMP1 / 2 01130002 IVAL = IVAL + ARRMIN 01140002 NOCHAR = 5 01150002 IF (IVAL .GE. 0) THEN 01160002 IF (IVAL .LT. 10000) NOCHAR = 4 01170002 IF (IVAL .LT. 1000) NOCHAR = 3 01180002 IF (IVAL .LT. 100) NOCHAR = 2 01190002 IF (IVAL .LT. 10) NOCHAR = 1 01200002 ELSE 01210002 IF (IVAL .GT. -10000) NOCHAR = 5 01220002 IF (IVAL .GT. -1000) NOCHAR = 4 01230002 IF (IVAL .GT. -100) NOCHAR = 3 01240002 IF (IVAL .GT. -10) NOCHAR = 2 01250002 ENDIF 01260002 CALL S1BNCV (IVAL, CHAR, 1, NOCHAR) 01270002 Y0 = (IVAL-ARRMIN) * VERSCL 01280004 Y1 = Y0 - HGT2 / 2.0 01290005 X0 = -0.23 - NOCHAR*HGT2 01300002 CALL SYMBOL (X0, Y1, HGT2, CHAR, 0.0, NOCHAR) 01310005 CALL PLOT (-0.2, Y0, 3) 01320002 CALL PLOT (-0.1, Y0, 2) 01330002 X0 = LENGTH + 0.2 01340002 CALL SYMBOL (X0+0.03, Y1, HGT2, CHAR, 0.0, NOCHAR) 01350005 CALL PLOT (LENGTH+0.1, Y0, 3) 01360002 CALL PLOT (X0, Y0, 2) 01370002 TEMP1 = LENGTH + 0.1 01380002 DO 5 X0 = -0.1, TEMP1, 0.25 01390002 CALL PLOT (X0, Y0, 3) 01400002 CALL PLOT (X0+0.2, Y0, 2) 01410002 5 CONTINUE 01420002 C 01430002 C PLOT MIN AND MAX LABELS 01440000 C 01450000 NOCHAR = 5 01460000 IF (ARRMIN .GE. 0) THEN 01470000 IF (ARRMIN .LT. 10000) NOCHAR = 4 01480000 IF (ARRMIN .LT. 1000) NOCHAR = 3 01490000 IF (ARRMIN .LT. 100) NOCHAR = 2 01500000 IF (ARRMIN .LT. 10) NOCHAR = 1 01510000 ELSE 01520000 IF (ARRMIN .GT. -10000) NOCHAR = 5 01530000 IF (ARRMIN .GT. -1000) NOCHAR = 4 01540000 IF (ARRMIN .GT. -100) NOCHAR = 3 01550000 IF (ARRMIN .GT. -10) NOCHAR = 2 01560000 ENDIF 01570000 CALL S1BNCV (ARRMIN, CHAR, 1, NOCHAR) 01580000 X0 = -0.2 - HGT2 * NOCHAR 01590000 Y0 = -HGT2 / 2 01600001 CALL SYMBOL (X0, Y0, HGT2, CHAR, 0.0, NOCHAR) 01610000 CALL PLOT (-0.2, 0.0, 3) 01620001 CALL PLOT (-0.1, 0.0, 2) 01630001 X0 = LENGTH + 0.2 01640000 CALL SYMBOL (X0+0.03, Y0, HGT2, CHAR, 0.0, NOCHAR) 01650000 CALL PLOT (LENGTH+0.1, 0.0, 3) 01660001 CALL PLOT (X0, 0.0, 2) 01670001 C 01680000 NOCHAR = 5 01690000 IF (ARRMAX .GE. 0) THEN 01700000 IF (ARRMAX .LT. 10000) NOCHAR = 4 01710000 IF (ARRMAX .LT. 1000) NOCHAR = 3 01720000 IF (ARRMAX .LT. 100) NOCHAR = 2 01730000 IF (ARRMAX .LT. 10) NOCHAR = 1 01740000 ELSE 01750000 IF (ARRMAX .GT. -10000) NOCHAR = 5 01760000 IF (ARRMAX .GT. -1000) NOCHAR = 4 01770000 IF (ARRMAX .GT. -100) NOCHAR = 3 01780000 IF (ARRMAX .GT. -10) NOCHAR = 2 01790000 ENDIF 01800000 CALL S1BNCV (ARRMAX, CHAR, 1, NOCHAR) 01810000 X0 = -0.2 - HGT2 * NOCHAR 01820000 Y0 = HEIGHT - HGT2 / 2 01830001 CALL SYMBOL (X0, Y0, HGT2, CHAR, 0.0, NOCHAR) 01840000 TEMP1 = HEIGHT 01850001 CALL PLOT (-0.2, HEIGHT, 3) 01860001 CALL PLOT (-0.1, HEIGHT, 2) 01870001 X0 = LENGTH + 0.2 01880000 CALL SYMBOL (X0+0.03, Y0, HGT2, CHAR, 0.0, NOCHAR) 01890000 CALL PLOT (LENGTH+0.1, TEMP1, 3) 01900000 CALL PLOT (X0, TEMP1, 2) 01910000 C 01920000 C PLOT LABEL 01930000 C 01940000 X0 = -0.5 - 5 * HGT2 01950000 Y0 = HEIGHT / NCHAR 01960000 IF (HGT .GT. Y0) HGT = Y0 01970000 CALL SYMBOL (X0, 0.0, HGT, LABEL, 90.0, NCHAR) 01980000 X0 = LENGTH + 5 * HGT2 + 0.5 01990000 CALL SYMBOL (X0, 0.0, HGT, LABEL, 90.0, NCHAR) 02000000 C 02010000 C PLOT ARRAY VALUES 02020001 C 02030000 10 LABELF = 0 02040010 C 02050000 DO 20 I = 1, NPNTS 02060000 IF (ARRAY(I) .EQ. -9999) GO TO 20 02070001 X0 = LCTN(I) - MNLCTN 02080010 X0 = (X0 / 100.) / HORSCL + 0.03 02090010 Y0 = ARRAY(I) - ARRMIN 02100001 Y0 = Y0 * VERSCL 02110001 Y1 = -HGT2 -0.07 02120000 CDEBUG 02130011 CD WRITE(6, 99229) LABELA, ARRAY(I), LCTN(I), X0, Y0 02140014 C9229 FORMAT(2X,A4,' ARRAY ',I5,' LCTN ',I6,' X0 ',F9.3,' Y0 ',F9.3) 02150014 CDEBUG 02160011 IF (LABELF .EQ. 0) THEN 02170000 LABELF = 1 02180000 TEMP1 = -0.12 - 4*HGT2 02190000 IF (PRTFLG .EQ. 0) THEN 02200001 CALL SYMBOL (TEMP1, Y0, HGT2, LABELA, 0.0, 4) 02210001 ELSE 02220001 CALL SYMBOL(TEMP1, Y1, HGT2, LABELA, 0.0, 4) 02230001 ENDIF 02240001 CALL PLOT (-0.1, Y0, 3) 02250000 ENDIF 02260000 IF (PRTFLG .EQ. 0) THEN 02270001 CALL PLOT (X0, Y0, 2) 02280001 ELSE 02290001 IF (ARRAY(I) .EQ. -9999) GO TO 20 02300001 IF (ARRAY(I) .LT. 10000) NOCHAR = 4 02310001 IF (ARRAY(I) .LT. 1000) NOCHAR = 3 02320001 IF (ARRAY(I) .LT. 100) NOCHAR = 2 02330001 IF (ARRAY(I) .LT. 10) NOCHAR = 1 02340001 CALL S1BNCV (ARRAY(I), CHAR, 1, NOCHAR) 02350001 TEMP1 = X0 - (NOCHAR*HGT2)/2 02360000 CALL SYMBOL (TEMP1, Y1, HGT2, CHAR, 0.0, NOCHAR) 02370000 CALL PLOT (X0, Y0, 3) 02380000 ENDIF 02390000 20 CONTINUE 02400000 C 02410000 X0 = LENGTH + 0.1 02420004 IF (PRTFLG .EQ. 0) THEN 02430004 CALL PLOT (X0, Y0, 2) 02440004 X0 = X0 + 0.07 02450004 CALL SYMBOL (X0, Y0, HGT2, LABELA, 0.0, 4) 02460004 ELSE 02470004 X0 = X0 + 0.07 02480004 CALL SYMBOL (X0, Y1, HGT2, LABELA, 0.0, 4) 02490004 ENDIF 02500004 C 02510000 C 02520000 50 RETURN 02530000 C 02540000 END 02550000