SUBROUTINE BARPLT( X, Y, NPTS, DIA, ISYMB, ILINE ) C C This subroutine generates a bar (step) plot from the C following input parameters, where C C X, Y Arrays in units of the axes which define the curve. C NPTS Number of points. C DIA Diameter of the symbols in scale inches. C ISYMB Symbol type, see SUBROUTINE SYMBOL. C ILINE Line type, see SUBROUTINE DSHPLT. C C Note: If either DIA .LE. 0. or ISYMB .LE. 0 then only lines C will be drawn. If ILINE .LE. 0 then only symbols will be plotted. C COMMON /PSTN/ XZero, XScale, LogX, 1 YZero, YScale, LogY, YMin DIMENSION X(NPTS), Y(NPTS) LOGICAL LogX, LogY C C - CHECK TO SEE IF ONLY A SINGLE POINT OR JUST SYMBOLS. IF( ( NPTS .EQ. 1 ) .OR. ( ILINE .LE. 0 ) ) GO TO 300 C C - CHECK TO SEE IF ONLY LINES. IF( ( DIA .LE. 0. ) .OR. ( ISYMB .LE. 0 ) ) GO TO 1100 C C - DO FIRST SEGMENT. RAD = 0.75*DIA CALL PSTN( X(1), AMAX1( Y(1), YMin ), X0, Y0 ) CALL PSTN( X(2), AMAX1( Y(2), YMin ), XN, YN ) XP = X0 - 0.5*( XN-X0 ) CALL DSHPLT(XP,Y0,3,ILINE) CALL DSHPLT(X0-RAD,Y0,2,ILINE) CALL SYMBOL(X0,Y0,DIA,ISYMB) C C - DO TO NPTS-1 SEGMENT. IPT = 2 100 CALL DSHPLT(X0+RAD,Y0,3,ILINE) C CALL PSTN( X(IPT), AMAX1( Y(IPT), YMin ), XN, YN ) XP = 0.5*( XN+X0 ) CALL DSHPLT(XP,Y0,2,ILINE) CALL DSHPLT(XP,YN,2,ILINE) CALL DSHPLT(XN-RAD,YN,2,ILINE) CALL SYMBOL(XN,YN,DIA,ISYMB) C IF( IPT .EQ. NPTS ) GO TO 200 X0 = XN Y0 = YN IPT = IPT+1 GO TO 100 C C - DO LAST SEGMENT. 200 CALL DSHPLT(XN+RAD,YN,3,ILINE) XP = XN + 0.5*( XN-X0 ) CALL DSHPLT(XP,YN,2,ILINE) RETURN C C - DO ONLY POINTS. 300 DO 1000 I=1,NPTS CALL PSTN( X(I), AMAX1( Y(I), YMin ), XP, YN ) 1000 CALL SYMBOL(XP,YN,DIA,ISYMB) RETURN C C - DO ONLY LINES. 1100 CALL PSTN( X(1), AMAX1( Y(1), YMin ), X0, Y0 ) CALL PSTN( X(2), AMAX1( Y(1), YMin ), XN, YN ) XP = X0 - 0.5*( XN-X0 ) CALL DSHPLT(XP,Y0,3,ILINE) C IPT = 2 1200 CALL PSTN( X(IPT), AMAX1( Y(IPT), YMin ), XN, YN ) XP = 0.5*( X0+XN ) CALL DSHPLT(XP,Y0,2,ILINE) CALL DSHPLT(XP,YN,2,ILINE) IF( IPT .EQ. NPTS ) GO TO 1300 X0 = XN Y0 = YN IPT = IPT+1 GO TO 1200 C 1300 XP = XN + 0.5*( XN-X0 ) CALL DSHPLT(XP,YN,2,ILINE) RETURN END