SUBROUTINE AXES2(V0,DV,NMAJ,NFRAC) C C This subroutine annotates the axis. C COMMON /PLTR/ ILun, IDev, IsTerm, IMode, IXMax, IYMax, 1 Cnvrsn, CMag, CnvMag, IX0, IY0, KSetNo, IFancy, IBfDv3, 1 CSize, DeltaH, DeltaV, Upsiln, CosUp, SinUp, WidAdj COMMON /AXESC/ CS, SN, SGN, TX, TY, DX, DY, 1 MIN, MIDL, MAX, MIDU, UMAX, WMAX, IFORM, JUSTFY LOGICAL*1 FRMT(7),VALUE(15) C C C - CALCULATE PRINT FIELD SIZE AND GENERATE FORMAT. NTOTAL = 15 NPRINT = NTOTAL IFRAC = MIN0( MAX0(0,NFRAC), 9 ) IF( IFRAC .EQ. 0 ) NPRINT = NPRINT-1 ENCODE(7,10,FRMT) IFRAC 10 FORMAT( '(F15.',I1,')' ) UMAX = 0. WMAX = 0. ZERO = 10.**( -IFRAC-1 ) C C - ANNOTATE THE AXIS AND FIND THE MINIMUM NUMBER OF LEADING BLANKS. MINB = NPRINT V = V0 XA = 0. YA = 0. DO 2000 IMAJ=1,NMAJ+1 C IF( ABS(V) .LE. ZERO ) GO TO 1200 ENCODE(NTOTAL,FRMT,VALUE) V C C - COUNT THE NUMBER OF LEADING BLANKS. DO 1000 ICHAR=1,NPRINT IF( VALUE(ICHAR) .NE. "40 ) GO TO 1100 1000 CONTINUE 1100 IF( ABS(V) .GE. 1.-ZERO ) GO TO 1400 GO TO 1300 C C - SPECIAL CASE, V = 0. 1200 ICHAR = 14 VALUE(14) = '0' VALUE(15) = '.' GO TO 1400 C C - SPECIAL CASE, ABS(V) .LE. 1. 1300 ICHAR = ICHAR + 1 IF( V .LT. 0. ) VALUE(ICHAR) = '-' C 1400 NWIDTH = NPRINT - ICHAR + 1 C C - MOVE PRINT FIELD SO AS TO CENTER THE ANNOTATION. CALL HCSIZE(VALUE(ICHAR),NWIDTH,W,U,D) WH = W*.5 UH = U*.5 WMAX = AMAX1( WMAX, WH ) UMAX = AMAX1( UMAX, UH ) XP = XA - TX*.375 - ( 1. + SN*SGN )*WH YP = YA - TY*.375 - ( 1. - CS*SGN )*UH CALL HCGEN( XP, YP, 0, 0 ) XA = XA + DX YA = YA + DY 2000 V = V + DV C RETURN END