      SUBROUTINE CONSTP (XD,YD,NDP)
C                                                                               
C +-----------------------------------------------------------------+           
C |                                                                 |           
C |                Copyright (C) 1986 by UCAR                       |           
C |        University Corporation for Atmospheric Research          |           
C |                    All Rights Reserved                          |           
C |                                                                 |           
C |                 NCARGRAPHICS  Version 1.00                      |           
C |                                                                 |           
C +-----------------------------------------------------------------+           
C                                                                               
C                                                                               
C
C  COMPUTE STEP SIZE IN X AND Y DIRECTION
C
C
C
      COMMON /CONRA1/ CL(30)     ,NCL        ,OLDZ       ,PV(210)    ,
     1                FINC       ,HI         ,FLO
      COMMON /CONRA2/ REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                ISCALE     ,LOOK       ,PLDVLS     ,GRD        ,
     2                CINC       ,CHILO      ,CON        ,LABON      ,
     3                PMIMX      ,SCALE      ,FRADV      ,EXTRI      ,
     4                BPSIZ      ,LISTOP
      COMMON /CONRA3/ IREC
      COMMON /CONRA4/ NCP        ,NCPSZ
      COMMON /CONRA5/ NIT        ,ITIPV
      COMMON /CONRA6/ XST        ,YST        ,XED        ,YED        ,
     1                STPSZ      ,IGRAD      ,IG         ,XRG        ,
     2                YRG        ,BORD       ,PXST       ,PYST       ,
     3                PXED       ,PYED       ,ITICK
      COMMON /CONRA7/ TITLE      ,ICNT   ,ITLSIZ
      COMMON /CONRA8/ IHIGH      ,INMAJ      ,INLAB      ,INDAT      ,
     1              LEN      ,IFMT       ,LEND       ,
     2                IFMTD      ,ISIZEP     ,INMIN
      COMMON /CONRA9/ ICOORD(500),NP         ,MXXY       ,TR         ,
     1                BR         ,TL         ,BL         ,CONV       ,
     2                XN         ,YN         ,ITLL       ,IBLL       ,
     3                ITRL       ,IBRL       ,XC         ,YC         ,
     4                ITLOC(210) ,JX         ,JY         ,ILOC       ,
     5                ISHFCT     ,XO         ,YO         ,IOC        ,NC
      COMMON /CONR10/ NT         ,NL         ,NTNL       ,JWIPT      ,
     1                JWIWL      ,JWIWP      ,JWIPL      ,IPR        ,
     2                ITPV
      COMMON /CONR11/ NREP       ,NCRT       ,ISIZEL     ,
     1                MINGAP     ,ISIZEM         ,
     2                TENS
      COMMON /CONR12/ IXMAX      ,IYMAX      ,XMAX       ,YMAX
      LOGICAL         REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                LOOK       ,PLDVLS     ,GRD        ,LABON      ,
     2                PMIMX      ,FRADV      ,EXTRI      ,CINC       ,
     3                TITLE      ,LISTOP     ,CHILO      ,CON
      COMMON /CONR15/ ISTRNG
        CHARACTER*64 ISTRNG
        COMMON /CONR16/ FORM
        CHARACTER*10 FORM
        COMMON /CONR17/ NDASH, IDASH, EDASH
        CHARACTER*10 NDASH, IDASH, EDASH
C
C
      DIMENSION       XD(1)      ,YD(1)
C
        SAVE
C
C  FIND SMALLEST AND LARGST X AND Y
C
      XST = XD(1)
      XED = XD(1)
      YST = YD(1)
      YED = YD(1)
      DO  130 I=2,NDP
         IF (XST .LE. XD(I)) GO TO  100
         XST = XD(I)
         GO TO  110
  100    IF (XED .GE. XD(I)) GO TO  110
         XED = XD(I)
  110    IF (YST .LE. YD(I)) GO TO  120
         YST = YD(I)
         GO TO  130
  120    IF (YED .GE. YD(I)) GO TO  130
         YED = YD(I)
  130 CONTINUE
C
C  COMPUTE STEP SIZE
C
      XRG = (ABS(XED-XST))
      YRG = (ABS(YED-YST))
      SQRG = XRG
      IF (SQRG .LT. YRG) SQRG = YRG
      STPSZ = SQRG/FLOAT(IGRAD-1)
C
C  COMPUTE PARAMETERS FOR SET CALL
C
      DIFX = XRG/SQRG
      DIFY = YRG/SQRG
      PXST = .5-(BORD*DIFX)/2.
      PXED = .5+(BORD*DIFX)/2.
      PYST = .5-(BORD*DIFY)/2.
      PYED = .5+(BORD*DIFY)/2.
      XRG = XRG/FLOAT(ITICK)
      YRG = YRG/FLOAT(ITICK)
C
C  TEST IF THE ASPECT RATIO FOR THE COORDINATES IS REASONABLE.
C     REASONABLE IS CURRENTLY DEFINED AS 5 TO 1.
C     IF IT IS NOT REASONABLE THEN A POOR PLOT MAY BE GENERATED
C     SO IT IS NICE THE WARN THE USER WHEN THIS HAPPENS.
C
      TEST = XRG/YRG
      IF (TEST.LE.5. .AND. TEST.GE.0.2) RETURN
C
C  WARN THE USER ON THE STANDARD OUTPUT UNIT THAT THE PLOT MAY
C  NOT BE TOO GOOD.
C
C  SET RECOVERY MODE
C
      CALL ENTSR(IROLD,IREC)
C
C  FLAG THE ERROR
C
      CALL SETER(' ASPECT RATIO OF X AND Y GREATER THAN 5 TO 1',
     1           1,1)
C
      CALL EPRIN
C
C  CLEAR THE ERROR
C
      CALL ERROF
C
C  RESET USER ERROR MODE
C
      CALL ENTSR(IDUM,IROLD)
C
      RETURN
      END
