!=====================================================================
! NGSP: SPPS, An NCAR System Plot Package Simulator
!=====================================================================
!
! A. Frame
!
! B. Coordinates
!
! C. Colors
!
! D. Line and Fill
!
! E. GTX, GPL, GPM, and GFA of GKS (not recommended to use)
!
!---------------------------------------------------------------------
!
! A. Frame
!
!    SUBROUTINE NG_FRSET   ! Set NG frame size, title, and perimeter
!
!    SUBROUTINE NG_FRBGC   ! Fill NG frame with background color
!
!    SUBROUTINE NG_FRGRD   ! Draw NG frame with NDC grid lines
!
!    SUBROUTINE NG_FRAME   ! Flush, wait-to-dump, and advance NG frame
!
!    ----------
!
!    SUBROUTINE NG_SPRSET  ! Reset color indices (-1), line width (1.0),
!                            Clipping off (0), and all attributes of GKS
!                            GTX/GPL/GPM/GFA to its default
!
!---------------------------------------
!
! B. Coordinates
!
!    SUBROUTINE NG_SET     ! Set Viewport (Fractional) and Window (User) coordinates
!    SUBROUTINE NG_GETSET  ! Get Current Viewport and Window coordinates
!
!    ----------
!
!    SUBROUTINE NG_GSCLIP  ! Set clipping indicator
!    SUBROUTINE NG_GQCLIP  ! Inquire current clipping indicator
!
!    ----------
!
!    REAL ELEMENTAL FUNCTION NG_CUFX ! X - NG-user to NG-fractional
!    REAL ELEMENTAL FUNCTION NG_CUFY ! Y - NG-user to NG-fractional
!
!    REAL ELEMENTAL FUNCTION NG_CFUX ! X - NG-fractional to NG-user
!    REAL ELEMENTAL FUNCTION NG_CFUY ! Y - NG-fractional to NG-user
!
!---------------------------------------
!
! C. Colors
!
!    SUBROUTINE NG_MAPRGB  ! Get RGB data from ColorMap
!
!    ----------
!
!    SUBROUTINE NG_GSCR    ! Set color representation.
!    SUBROUTINE NG_GQCR    ! Get color representation.
!
!    ----------
!
!    SUBROUTINE NG_GSPLCI  ! Set polyline color index
!    SUBROUTINE NG_GSFACI  ! Set fill area color index
!
!    SUBROUTINE NG_GQPLCI  ! Inquire polyline color index
!    SUBROUTINE NG_GQFACI  ! Inquire fill area color index
!
!---------------------------------------
!
! D. Line and Fill
!
!    SUBROUTINE NG_GSLWSC  ! Set linewidth scale factor
!    SUBROUTINE NG_GQLWSC  ! Inquire linewidth scale factor
!
!    ----------
!
!    SUBROUTINE NG_PLOTIF  ! Pen-Up/Down move  (fractional)
!
!    ----------
!
!    SUBROUTINE NG_FRSTPT  ! Pen-up   move     (user/fractional)
!    SUBROUTINE NG_VECTOR  ! Pen-down move     (user/fractional)
!    SUBROUTINE NG_LINE    ! Draw line         (user/fractional)
!    SUBROUTINE NG_CURVE   ! Draw polyline     (user/fractional)
!
!    SUBROUTINE NG_GPL     ! Draw polyline     (user/fractional)
!
!    SUBROUTINE NG_GFA     ! Fill polygon      (user/fractional)
!
!    SUBROUTINE NG_GCA     ! Cell Array Fill   (user/fractional)
!
!---------------------------------------
!
! E. GTX, GPL, GPM, and GFA of GKS (not recommended to use)
!
!    SUBROUTINE NG_GTX     ! Text Output
!
!    SUBROUTINE NG_GSTXCI  ! Set Text color index
!    SUBROUTINE NG_GSTXP   ! Set Text path
!    SUBROUTINE NG_GSTXAL  ! Set Text alignment
!    SUBROUTINE NG_GSTXFP  ! Set Text font and precision
!    SUBROUTINE NG_GSCHH   ! Set Character height
!    SUBROUTINE NG_GSCHUP  ! Set Character up vector
!    SUBROUTINE NG_GSCHSP  ! Set Character spacing
!    SUBROUTINE NG_GSCHXP  ! Set Character expansion factor
!
!    SUBROUTINE NG_GQTXCI  ! Inquire Text color index
!    SUBROUTINE NG_GQTXP   ! Inquire Text path
!    SUBROUTINE NG_GQTXAL  ! Inquire Text alignment
!    SUBROUTINE NG_GQTXFP  ! Inquire Text font and precision
!    SUBROUTINE NG_GQCHH   ! Inquire Character height
!    SUBROUTINE NG_GQCHUP  ! Inquire Character up vector
!    SUBROUTINE NG_GQCHSP  ! Inquire Character spacing
!    SUBROUTINE NG_GQCHXP  ! Inquire Character expansion factor
!
!    ----------
!
!    SUBROUTINE NG_GPL     ! Polyline Output
!
!    SUBROUTINE NG_GSPLCI  ! Set polyline color index
!    SUBROUTINE NG_GSLN    ! Set Line type
!    SUBROUTINE NG_GSLWSC  ! Set Linewidth scale factor
!
!    SUBROUTINE NG_GQPLCI  ! Inquire polyline color index
!    SUBROUTINE NG_GQLN    ! Inquire Line type
!    SUBROUTINE NG_GQLWSC  ! Inquire Linewidth scale factor
!
!    ----------
!
!    SUBROUTINE NG_GPM     ! Polymarker Output
!
!    SUBROUTINE NG_GSPMCI  ! Set polymarker color index
!    SUBROUTINE NG_GSMK    ! Set Polymarker type
!    SUBROUTINE NG_GSMKSC  ! Set Polymarker size scale factor
!
!    SUBROUTINE NG_GQPMCI  ! Inquire polymarker color index
!    SUBROUTINE NG_GQMK    ! Inquire Polymarker type
!    SUBROUTINE NG_GQMKSC  ! Inquire Polymarker size scale factor
!
!    ----------
!
!    SUBROUTINE NG_GFA     ! Filled Area Output
!
!    SUBROUTINE NG_GSFACI  ! Set Fill Area color index
!    SUBROUTINE NG_GSFAIS  ! Set Fill Area interior style
!    SUBROUTINE NG_GSFASI  ! Set Fill Area style index
!
!    SUBROUTINE NG_GQFACI  ! Inquire Fill Area color index
!    SUBROUTINE NG_GQFAIS  ! Inquire Fill Area interior style
!    SUBROUTINE NG_GQFASI  ! Inquire Fill Area style index
!
!=====================================================================
! A. Frame
!=====================================================================
!
! SUBROUTINE NG_FRSET  ! Set NG frame size, title, and perimeter
!
! SUBROUTINE NG_FRBGC  ! Fill NG frame with background color
!
! SUBROUTINE NG_FRGRD  ! Draw NG frame with NDC grid lines
!
! SUBROUTINE NG_FRAME  ! Wait, Dump and advance NG frame
!
! ----------
!
! SUBROUTINE NG_SPRSET ! Reset color indices (-1), line width (1.0),
!                        Clipping off (0), and all attributes of GKS
!                        GTX/GPL/GPM/GFA to its default
!
!---------------------------------------------------------------------
!
! SUBROUTINE NG_FRSET( NGVP, TITLE, PERIM, GB_Encoding )
!
!   REAL,         INTENT(IN), OPTIONAL :: NGVP(4)
!   CHARACTER(*), INTENT(IN), OPTIONAL :: TITLE
!   LOGICAL,      INTENT(IN), OPTIONAL :: PERIM
!   CHARACTER(*), INTENT(IN), OPTIONAL :: GB_Encoding
!
! Routine to set NG frame size (effective NG viewport), title, and perimeter
!
! Variables:
!
!   NGVP  - Frame size (Effective NG Viewport) in fractional coordinates
!           Array elements ordered as (/xvpl, xvpr, yvpb, yvpt/)
!           Window/Poscript output display this area of graphics mainly
!
!           Default is full NG viewport, i.e., (/0.0, 1.0, 0.0, 1.0/),
!           if argument not present or present but values invalid
!
!           "invalid" means xvpl>=xvpr, 0.0<xvpl, or, xvpr>1.0, ...
!
!   TITLE : Character string of frame title to be ploted
!
!           Default is not plot, if argument not present or present
!           but zero length
!
!   PERIM - Whether draw frame perineter or not
!
!           Default is not draw, if argument not present
!
!   GB_Encoding - Encoding scheme of string characters in "TITLE"
!
!                 = 'U', for UTF-8
!                 = 'G', for GB2312
!
!                 Default value is 'U', if argument not present or invalid
!
! Note: If this routine not invoked, default NG frame is size of full
!       NG viewport (/0.0, 1.0, 0.0, 1.0/) without dwawing title/perimeter.
!
!---------------------------------------
!
! SUBROUTINE NG_FRBGC( BGCI )
!
!   INTEGER, INTENT(IN) :: CI
!
! Routine to fill NG frame with background color.
!
! Variables:
!
!   BGCI - Specified color index for background color
!
!---------------------------------------
!
! SUBROUTINE NG_FRGRD( color )
!
!   INTEGER, INTENT(IN) :: color
!
! Routine to draw NG Frame with NDC grid lines at 0.1 or 0.05 NDC
! coordinate intervals and labels them.
!
! Variables:
!
!   color - drawing/labelling color index
!
!---------------------------------------
!
! SUBROUTINE NG_FRAME( WAIT, ADVANCE, NOMES )
!
!   INTEGER, INTENT(IN), OPTIONAL :: WAIT
!   LOGICAL, INTENT(IN), OPTIONAL :: ADVANCE
!   LOGICAL, INTENT(IN), OPTIONAL :: NOMES
!
! Routine to flush display buffer unconditionally, wait-to-dump, and advance NG frame.
!
! Variables:
!
!   WAIT    - The time delay after bufferred graphics send to display
!
!             = 0  Wait-to-Dump (dump image to GIF file)
!                  Message "Press <Enter> to Continue" and
!                  Message "Hit [Q] to dump screen before leaving"
!                  are displayed at screen bottom
!
!             > 0  Delay time (no dump image to GIF), measured in number
!                  of 1/1000 seconds, After this time segment,
!                  program executed again automatically
!
!             < 0  No waiting
!
!             Default is 0, if argument not present
!
!   ADVANCE - Whether or not advancing a new frame finally
!             Default value is .TRUE., if argument not present
!
!   NOMES   - Not draw frame/dump size message
!             Default value is .FALSE., if argument not present
!
! Examples:
!
!   ! Flush display buffer, Wait to dump and then advancing frame
!   CALL NG_FRAME( ) ! "WAIT=0" and "ADVANCE=.TRUE." are default
!
!   ! Flush display buffer, delay 3 seconds and then advancing frame
!   CALL NG_FRAME( WAIT=3000 )
!
!   ! Flush display buffer, wait-to-dump, not advancing frame
!   CALL NG_FRAME( WAIT=0, ADVANCE=.FALSE. )
!
!   ! Flush display buffer, waiting 5 secdonds, not advancing frame
!   CALL NG_FRAME( WAIT=5000, ADVANCE=.FALSE.)
!
!   ! Flush display buffer only (no waiting, not advancing frame)
!   CALL NG_FRAME( WAIT=-1, ADVANCE=.FALSE. )
!
! Note: While current NG frame advanced
!
!       0. Routine NG_SPRSET invoked to reset color indices (-1),
!          line width (1.0), clipping off (0), and attributes of
!          GKS GTX/GPL/GPM/GFA to its default.
!
!       1. Next frame (if exist) will be reset to default: size of
!          full NG viewport without drawing title/perimeter.
!
!       2. NG_CLSPS() will be called automatiocally, user should
!          CALL NG_OPNPS(...) again manually for next (if exist) NG
!          frame postscript output
!
!       3. Graphics window (screen) will be cleared only (not closed),
!          user should CALL NG_CLSWIN() manually for the case of no
!          next NG frame
!
!---------------------------------------
!
! SUBROUTINE NG_SPRSET()
!
! Routine to reset color indices (-1), line width (1.0), Clipping off (0),
! and all attributes of GKS GTX/GPL/GPM/GFA to its default

!=====================================================================
! B. Coordinates
!=====================================================================
!
! SUBROUTINE NG_SET    ! Set Viewport (Fractional) and Window (User) coordinates
! SUBROUTINE NG_GETSET ! Get Current Viewport and Window coordinates
!
! ----------
!
! SUBROUTINE NG_GSCLIP ! Set clipping indicator
! SUBROUTINE NG_GQCLIP ! Inquire current clipping indicator
!
! ----------
!
! REAL ELEMENTAL FUNCTION NG_CUFX ! X - NG-user to NG-fractional
! REAL ELEMENTAL FUNCTION NG_CUFY ! Y - NG-user to NG-fractional
!
! REAL ELEMENTAL FUNCTION NG_CFUX ! X - NG-fractional to NG-user
! REAL ELEMENTAL FUNCTION NG_CFUY ! Y - NG-fractional to NG-user
!
!---------------------------------------------------------------------
!
! SUBROUTINE NG_SET( XVPL, XVPR, YVPB, YVPT, &
!                    XWDL, XWDR, YWDB, YWDT, LILS )
! or
! SUBROUTINE NG_SET( XYVP, XYWD, LILS )
!
!   REAL,    INTENT(IN) :: XVPL, XVPR, YVPB, YVPT
!   REAL,    INTENT(IN) :: XWDL, XWDR, YWDB, YWDT
!   REAL,    INTENT(IN) :: XYVP(4), XYWD(4)
!   INTEGER, INTENT(IN) :: LILS
!
! Routine to completely define the mapping from viewport (fractional,
! normalized) coordinates to window (user, world) coordinates,
! including the specification of axis scaling reversal and whether
! axes are to have linear or logarithmic scaling.
!
! Variables:
!
!   XYVP = (/XVPL, XVPR, YVPB, YVPT/) are the four numbers defining the
!   desired viewport; each of the values is between 0 and 1, inclusive;
!   the suffixes "L", "R", "B", and "T" refer to the left, right, bottom,
!   and top edges of the viewport, respectively. It must be the case that
!   XVPL is less than XVPR and that YVPB is less than YVPT. (the clipping
!   rectangle, if clipping is "on")
!
!   XYWD = (/XWDL, XWDR, YWDB, YWDT/) define the desired window in the
!   user coordinate system. Note that XWDL and XWDR specify a range of
!   values of X coordinates prior to the taking of logarithms, if any,
!   specified by LILS; similarly, YWDB and YWDT specify a range of
!   values of Y coordinates prior to the taking of logarithms, if any,
!   specified by LILS. Axis reversal (also called mirror-imaging of an
!   axis) is controlled by the order of these values. If XWDL is greater
!   than XWDR, the X coordinates are mirror-imaged. Similarly, if YWDB
!   is greater than YWDT, the Y coordinates are mirror-imaged.
!
!   LILS is the desired combination of linear or logarithmic axis scaling.
!     =1 means Linear X, Linear Y;
!     =2 means Linear X, Log Y;
!     =3 means Log X, Linear Y; and,
!     =4 means Log X, Log Y
!
!-------------------
!
! SUBROUTINE NG_GETSET( XVPL, XVPR, YVPB, YVPT, &
!                       XWDL, XWDR, YWDB, YWDT, LILS )
! or
! SUBROUTINE NG_GETSET( XYVP, XYWD, LILS )
!
!   REAL,    INTENT(OUT) :: XVPL, XVPR, YVPB, YVPT
!   REAL,    INTENT(OUT) :: XWDL, XWDR, YWDB, YWDT
!   REAL,    INTENT(OUT) :: XYVP(4), XYWD(4)
!   INTEGER, INTENT(OUT) :: LILS
!
! Routine to get current mapping informations.
!
!-------------------
!
! Note: CNCARG NOT sopport following GKS routines
!
!   GQMNTN - Get the Number of Supported Normalization Transformations
!
!   GSELNT - Select a Predefined Normalization Transformation
!
!   GSVP   - Set the Viewport Coordeinates
!
!   GSWN   - Set the Window Coordinates
!
!   GQNT   - Get the Window and Viewport Coordinates
!
!   GQCNTN - Get Current Normalization Transformation Number
!
!---------------------------------------
!
! SUBROUTINE NG_GSCLIP( ICLIP )
!
!   INTEGER, INTENT(IN) :: ICLIP
!
! Routine to set clipping indicator. The clipping indicator controls
! whether or not data are displayed outside the boundaries of your
! defined viewport. If the clipping indicator is on, the data will be
! clipped to fit your window.
!
! Variables:
!
!   ICLIP - An indicator specifying whether clipping is on or off:
!           0 - Clipping is off. Data outside of the window will be
!               plotted.
!           1 - Clipping is on. Data outside of the window will not
!               be plotted.
!           By default, clipping is off.
!
!-------------------
!
! SUBROUTINE NG_GQCLIP( IER, ICLIP, CLRECT )
! or
! SUBROUTINE NG_GQCLIP(      ICLIP, CLRECT )
!
!   INTEGER, INTENT(OUT)           :: IER
!   INTEGER, INTENT(OUT)           :: ICLIP
!   REAL,    INTENT(OUT), OPTIONAL :: CLRECT(4)
!
! Routine to inquire the clipping rectangle and clipping indicator.
!
! Variables:
!
!   IER    - Error flag. Always 0, means no erroroccurred
!
!   ICLIP  - The value of clipping indicator as set by GSCLIP
!
!   CLRECT - The four coordinates of the clipping rectangle in the order
!            XVPL, XVPR, YVPB, YVPT. The clipping rectangle is in
!            normalized device coordinates.
!
!---------------------------------------
! Routines (all are FUNCTION) to do the
! coordinate transformations
!---------------------------------------
!
! REAL ELEMENTAL FUNCTION NG_CFUX( X )
! Function to get NG user X-coordinate(s) from NG fractional X-coordinate(s).
! Argument X: REAL, INTENT(IN),  can be scalar or array
!
! REAL ELEMENTAL FUNCTION NG_CFUY( Y )
! Function to get NG user Y-coordinate(s) from NG fractional Y-coordinate(s).
! Argument Y: REAL, INTENT(IN),  can be scalar or array
!
!-------------------
!
! REAL ELEMENTAL FUNCTION NG_CUFX( X )
! Function to get NG fractional X-coordinate(s) from NG user X-coordinate(s).
! Argument X: REAL, INTENT(IN),  can be scalar or array
!
! REAL ELEMENTAL FUNCTION NG_CUFY( Y )
! to get NG fractional Y-coordinate(s) from NG user Y-coordinate(s).
! Argument Y: REAL, INTENT(IN),  can be scalar or array
!
!=====================================================================
! C. Colors
!=====================================================================
!
! SUBROUTINE NG_MAPRGB ! Get RGB data from ColorMap
!
! ----------
!
! SUBROUTINE NG_GSCR   ! Set color representation.
! SUBROUTINE NG_GQCR   ! Get color representation.
!
! ----------
!
! SUBROUTINE NG_GSPLCI ! Set polyline color index
! SUBROUTINE NG_GSFACI ! Set fill area color index
!
! SUBROUTINE NG_GQPLCI ! Inquire polyline color index
! SUBROUTINE NG_GQFACI ! Inquire fill area color index
!
!---------------------------------------------------------------------
!
! SUBROUTINE NG_MAPRGB( MAP,  RGB, NC ) ! REAL type RGB
! or
! SUBROUTINE NG_MAPRGB( MAP, iRGB, NC ) ! INTEGER type RGB
!
!   CHARACTER(*), INTENT(IN   ) :: colormap
!   REAL,         INTENT(  OUT) ::  rgb(3,256)
!   INTEGER,      INTENT(  OUT) :: irgb(3,256)
!   INTEGER,      INTENT(  OUT) :: ncolors
!
! Routine to get RGB data from the specified colormap
!
! Variables:
!
!   MAP - Name of the colormap
!
!   RGB - (R,G,B) data of colormap, values between 0.0 and 1.0
!  iRGB - (R,G,B) data of colormap, values between 0 and 255
!
!   NC  - Number of colors
!
! Note: CNCARG support following 241 NCL colormaps
!
!   3gauss                   3saw                     amwg                     amwg256
!   amwg_blueyellowred       BkBlAqGrYeOrReViWh200    BlAqGrWh2YeOrReVi22      BlAqGrYeOrRe
!   BlAqGrYeOrReVi200        BlGrYeOrReVi200          BlRe                     BlueDarkOrange18
!   BlueDarkRed18            BlueGreen14              BlueRed                  BlueRedGray
!   BlueWhiteOrangeRed       BlueYellowRed            BlWhRe                   BrownBlue12
!   Cat12                    CBR_coldhot              CBR_drywet               CBR_set3
!   CBR_wet                  cb_9step                 cb_rainbow               cb_rainbow_inv
!   circular_0               circular_1               circular_2               cmp_b2r
!   cmp_flux                 cmp_haxby                cosam                    cosam12
!   cyclic                   default                  detail                   example
!   extrema                  GHRSST_anomaly           GMT_cool                 GMT_copper
!   GMT_drywet               GMT_gebco                GMT_globe                GMT_gray
!   GMT_haxby                GMT_hot                  GMT_jet                  GMT_nighttime
!   GMT_no_green             GMT_ocean                GMT_paired               GMT_panoply
!   GMT_polar                GMT_red2green            GMT_relief               GMT_relief_oceanonly
!   GMT_seis                 GMT_split                GMT_topo                 GMT_wysiwyg
!   GMT_wysiwygcont          grads_default            grads_rainbow            GrayWhiteGray
!   GreenMagenta16           GreenYellow              gscyclic                 gsdtol
!   gsltod                   gui_default              helix                    helix1
!   hlu_default              hotcold_18lev            hotcolr_19lev            hotres
!   lithology                matlab_hot               matlab_hsv               matlab_jet
!   matlab_lines             mch_default              MPL_Accent               MPL_afmhot
!   MPL_autumn               MPL_Blues                MPL_bone                 MPL_BrBG
!   MPL_brg                  MPL_BuGn                 MPL_BuPu                 MPL_bwr
!   MPL_cool                 MPL_coolwarm             MPL_copper               MPL_cubehelix
!   MPL_Dark2                MPL_flag                 MPL_gist_earth           MPL_gist_gray
!   MPL_gist_heat            MPL_gist_ncar            MPL_gist_rainbow         MPL_gist_stern
!   MPL_gist_yarg            MPL_GnBu                 MPL_gnuplot              MPL_gnuplot2
!   MPL_Greens               MPL_Greys                MPL_hot                  MPL_hsv
!   MPL_jet                  MPL_ocean                MPL_Oranges              MPL_OrRd
!   MPL_Paired               MPL_Pastel1              MPL_Pastel2              MPL_pink
!   MPL_PiYG                 MPL_PRGn                 MPL_prism                MPL_PuBu
!   MPL_PuBuGn               MPL_PuOr                 MPL_PuRd                 MPL_Purples
!   MPL_rainbow              MPL_RdBu                 MPL_RdGy                 MPL_RdPu
!   MPL_RdYlBu               MPL_RdYlGn               MPL_Reds                 MPL_s3pcpn
!   MPL_s3pcpn_l             MPL_seismic              MPL_Set1                 MPL_Set2
!   MPL_Set3                 MPL_Spectral             MPL_spring               MPL_sstanom
!   MPL_StepSeq              MPL_summer               MPL_terrain              MPL_viridis
!   MPL_winter               MPL_YlGn                 MPL_YlGnBu               MPL_YlOrBr
!   MPL_YlOrRd               ncl_default              ncview_default           NCV_banded
!   NCV_blue_red             NCV_blu_red              NCV_bright               NCV_gebco
!   NCV_jaisnd               NCV_jet                  NCV_manga                NCV_rainbow2
!   NCV_roullet              nice_gfdl                nrl_sirkes               nrl_sirkes_nowhite
!   OceanLakeLandSnow        perc2_9lev               percent_11lev            posneg_1
!   posneg_2                 prcp_1                   prcp_2                   prcp_3
!   precip2_15lev            precip2_17lev            precip3_16lev            precip4_11lev
!   precip4_diff_19lev       precip_11lev             precip_diff_12lev        precip_diff_1lev
!   psgcap                   radar                    radar_1                  rainbow+gray
!   rainbow+white+gray       rainbow+white            rainbow                  rh_19lev
!   seaice_1                 seaice_2                 so4_21                   so4_23
!   spread_15lev             srip_reanalysis          StepSeq25                sunshine_9lev
!   sunshine_diff_12lev      SVG_bhw3_22              SVG_es_landscape_79      SVG_feb_sunrise
!   SVG_foggy_sunrise        SVG_fs2006               SVG_Gallet13             SVG_Lindaa06
!   SVG_Lindaa07             t2m_29lev                tbrAvg1                  tbrStd1
!   tbrVar1                  tbr_240-300              tbr_stdev_0-30           tbr_var_0-500
!   temp1                    temp_19lev               temp_diff_18lev          temp_diff_1lev
!   testcmap                 thelix                   topo_15lev               uniform
!   ViBlGrWhYeOrRe           wgne15                   wh-bl-gr-ye-re           WhBlGrYeRe
!   WhBlReWh                 WhiteBlue                WhiteBlueGreenYellowRed  WhiteGreen
!   WhiteYellowOrangeRed     WhViBlGrYeOrRe           WhViBlGrYeOrReWh         wind_17lev
!   wxpEnIR
!
!---------------------------------------
!
! SUBROUTINE NG_GSCR( CI, CR, CG, CB, warn ) ! REAL   (r,g,b)
! SUBROUTINE NG_GSCR( CI, IR, IG, IB, warn ) ! INTEGER(r,g,b)
! or
! SUBROUTINE NG_GSCR( CI, CN, warn )         ! Color name
!
!   INTEGER,      INTENT(IN)           :: CI
!   REAL,         INTENT(IN)           :: CR, CG, CB
!   INTEGER,      INTENT(IN)           :: IR, IG, IB
!   CHARACTER(*), INTENT(IN)           :: CN
!   LOGICAL,      INTENT(IN), OPTIONAL :: warn
!
! Routine to set, by RGB values or color name, color representation of
! color index in the current color table
!
! Variables:
!
!   CI   - A color index to be assigned a color of CR, CG, and CB.
!          Value of CI should be in the range from 0 to 255 (0<=CI<=255)
!
!          Note: color indices 253-255 are preserved for system
!          win-background, ngframe-title, and viewport-border colors use.
!
!          It is recommended "NOT" to define/set color indices 253-255
!          for the user use.
!
!   CR   - An intensity of red between a minimum of 0.0 and a maximum of
!          1.0 inclusive.
!   CG   - A green intensity between 0.0 and 1.0
!   CB   - A blue intensity between 0.0 and 1.0
!
!   IR   - An intensity of red between a minimum of 0 and a maximum of
!          255 inclusive.
!   IG   - A green intensity between 0 and 255
!   IB   - A blue intensity between 0 and 255
!
!   CN   - The name of predefinedcolor. CNCARG support NCL named colors
!
!   warn - Warn flag
!          =.TRUE., runtime warn while cI=253/254/255
!          = .FALSE., not warn
!          default is .TRUE.
!
! Note: CNCARG support following 657 NCL named colors
!       (http://www.ncl.ucar.edu/Document/Graphics/named_colors.shtml)
!
!   aliceblue       antiquewhite    antiquewhite1     antiquewhite2        antiquewhite3
!   antiquewhite4   aquamarine      aquamarine1       aquamarine2          aquamarine3
!   aquamarine4     azure           azure1            azure2               azure3
!   azure4          beige           bisque            bisque1              bisque2
!   bisque3         bisque4         black             blanchedalmond       blue
!   blue1           blue2           blue3             blue4                blueviolet
!   brown           brown1          brown2            brown3               brown4
!   burlywood       burlywood1      burlywood2        burlywood3           burlywood4
!   cadetblue       cadetblue1      cadetblue2        cadetblue3           cadetblue4
!   chartreuse      chartreuse1     chartreuse2       chartreuse3          chartreuse4
!   chocolate       chocolate1      chocolate2        chocolate3           chocolate4
!   coral           coral1          coral2            coral3               coral4
!   cornflowerblue  cornsilk        cornsilk1         cornsilk2            cornsilk3
!   cornsilk4       cyan            cyan1             cyan2                cyan3
!   cyan4           darkblue        darkcyan          darkgoldenrod        darkgoldenrod1
!   darkgoldenrod2  darkgoldenrod3  darkgoldenrod4    darkgray             darkgreen
!   darkgrey        darkkhaki       darkmagenta       darkolivegreen       darkolivegreen1
!   darkolivegreen2 darkolivegreen3 darkolivegreen4   darkorange           darkorange1
!   darkorange2     darkorange3     darkorange4       darkorchid           darkorchid1
!   darkorchid2     darkorchid3     darkorchid4       darkred              darksalmon
!   darkseagreen    darkseagreen1   darkseagreen2     darkseagreen3        darkseagreen4
!   darkslateblue   darkslategray   darkslategray1    darkslategray2       darkslategray3
!   darkslategray4  darkslategrey   darkturquoise     darkviolet           deeppink
!   deeppink1       deeppink2       deeppink3         deeppink4            deepskyblue
!   deepskyblue1    deepskyblue2    deepskyblue3      deepskyblue4         dimgray
!   dimgrey         dodgerblue      dodgerblue1       dodgerblue2          dodgerblue3
!   dodgerblue4     firebrick       firebrick1        firebrick2           firebrick3
!   firebrick4      floralwhite     forestgreen       gainsboro            ghostwhite
!   gold            gold1           gold2             gold3                gold4
!   goldenrod       goldenrod1      goldenrod2        goldenrod3           goldenrod4
!   gray            gray0           gray1             gray2                gray3
!   gray4           gray5           gray6             gray7                gray8
!   gray9           gray10          gray11            gray12               gray13
!   gray14          gray15          gray16            gray17               gray18
!   gray19          gray20          gray21            gray22               gray23
!   gray24          gray25          gray26            gray27               gray28
!   gray29          gray30          gray31            gray32               gray33
!   gray34          gray35          gray36            gray37               gray38
!   gray39          gray40          gray41            gray42               gray43
!   gray44          gray45          gray46            gray47               gray48
!   gray49          gray50          gray51            gray52               gray53
!   gray54          gray55          gray56            gray57               gray58
!   gray59          gray60          gray61            gray62               gray63
!   gray64          gray65          gray66            gray67               gray68
!   gray69          gray70          gray71            gray72               gray73
!   gray74          gray75          gray76            gray77               gray78
!   gray79          gray80          gray81            gray82               gray83
!   gray84          gray85          gray86            gray87               gray88
!   gray89          gray90          gray91            gray92               gray93
!   gray94          gray95          gray96            gray97               gray98
!   gray99          gray100         green             green1               green2
!   green3          green4          greenyellow       grey                 grey0
!   grey1           grey2           grey3             grey4                grey5
!   grey6           grey7           grey8             grey9                grey10
!   grey11          grey12          grey13            grey14               grey15
!   grey16          grey17          grey18            grey19               grey20
!   grey21          grey22          grey23            grey24               grey25
!   grey26          grey27          grey28            grey29               grey30
!   grey31          grey32          grey33            grey34               grey35
!   grey36          grey37          grey38            grey39               grey40
!   grey41          grey42          grey43            grey44               grey45
!   grey46          grey47          grey48            grey49               grey50
!   grey51          grey52          grey53            grey54               grey55
!   grey56          grey57          grey58            grey59               grey60
!   grey61          grey62          grey63            grey64               grey65
!   grey66          grey67          grey68            grey69               grey70
!   grey71          grey72          grey73            grey74               grey75
!   grey76          grey77          grey78            grey79               grey80
!   grey81          grey82          grey83            grey84               grey85
!   grey86          grey87          grey88            grey89               grey90
!   grey91          grey92          grey93            grey94               grey95
!   grey96          grey97          grey98            grey99               grey100
!   honeydew        honeydew1       honeydew2         honeydew3            honeydew4
!   hotpink         hotpink1        hotpink2          hotpink3             hotpink4
!   indianred       indianred1      indianred2        indianred3           indianred4
!   ivory           ivory1          ivory2            ivory3               ivory4
!   khaki           khaki1          khaki2            khaki3               khaki4
!   lavender        lavenderblush   lavenderblush1    lavenderblush2       lavenderblush3
!   lavenderblush4  lawngreen       lemonchiffon      lemonchiffon1        lemonchiffon2
!   lemonchiffon3   lemonchiffon4   lightblue         lightblue1           lightblue2
!   lightblue3      lightblue4      lightcoral        lightcyan            lightcyan1
!   lightcyan2      lightcyan3      lightcyan4        lightgoldenrod       lightgoldenrod1
!   lightgoldenrod2 lightgoldenrod3 lightgoldenrod4   lightgoldenrodyellow lightgray
!   lightgreen      lightgrey       lightpink         lightpink1           lightpink2
!   lightpink3      lightpink4      lightsalmon       lightsalmon1         lightsalmon2
!   lightsalmon3    lightsalmon4    lightseagreen     lightskyblue         lightskyblue1
!   lightskyblue2   lightskyblue3   lightskyblue4     lightslateblue       lightslategray
!   lightslategrey  lightsteelblue  lightsteelblue1   lightsteelblue2      lightsteelblue3
!   lightsteelblue4 lightyellow     lightyellow1      lightyellow2         lightyellow3
!   lightyellow4    limegreen       linen             magenta              magenta1
!   magenta2        magenta3        magenta4          maroon               maroon1
!   maroon2         maroon3         maroon4           mediumaquamarine     mediumblue
!   mediumorchid    mediumorchid1   mediumorchid2     mediumorchid3        mediumorchid4
!   mediumpurple    mediumpurple1   mediumpurple2     mediumpurple3        mediumpurple4
!   mediumseagreen  mediumslateblue mediumspringgreen mediumturquoise      mediumvioletred
!   midnightblue    mintcream       mistyrose         mistyrose1           mistyrose2
!   mistyrose3      mistyrose4      moccasin          navajowhite          navajowhite1
!   navajowhite2    navajowhite3    navajowhite4      navy                 navyblue
!   oldlace         olivedrab       olivedrab1        olivedrab2           olivedrab3
!   olivedrab4      orange          orange1           orange2              orange3
!   orange4         orangered       orangered1        orangered2           orangered3
!   orangered4      orchid          orchid1           orchid2              orchid3
!   orchid4         palegoldenrod   palegreen         palegreen1           palegreen2
!   palegreen3      palegreen4      paleturquoise     paleturquoise1       paleturquoise2
!   paleturquoise3  paleturquoise4  palevioletred     palevioletred1       palevioletred2
!   palevioletred3  palevioletred4  papayawhip        peachpuff            peachpuff1
!   peachpuff2      peachpuff3      peachpuff4        peru                 pink
!   pink1           pink2           pink3             pink4                plum
!   plum1           plum2           plum3             plum4                powderblue
!   purple          purple1         purple2           purple3              purple4
!   red             red1            red2              red3                 red4
!   rosybrown       rosybrown1      rosybrown2        rosybrown3           rosybrown4
!   royalblue       royalblue1      royalblue2        royalblue3           royalblue4
!   saddlebrown     salmon          salmon1           salmon2              salmon3
!   salmon4         sandybrown      seagreen          seagreen1            seagreen2
!   seagreen3       seagreen4       seashell          seashell1            seashell2
!   seashell3       seashell4       sienna            sienna1              sienna2
!   sienna3         sienna4         skyblue           skyblue1             skyblue2
!   skyblue3        skyblue4        slateblue         slateblue1           slateblue2
!   slateblue3      slateblue4      slategray         slategray1           slategray2
!   slategray3      slategray4      slategrey         snow                 snow1
!   snow2           snow3           snow4             springgreen          springgreen1
!   springgreen2    springgreen3    springgreen4      steelblue            steelblue1
!   steelblue2      steelblue3      steelblue4        tan                  tan1
!   tan2            tan3            tan4              thistle              thistle1
!   thistle2        thistle3        thistle4          tomato               tomato1
!   tomato2         tomato3         tomato4           turquoise            turquoise1
!   turquoise2      turquoise3      turquoise4        violet               violetred
!   violetred1      violetred2      violetred3        violetred4           wheat
!   wheat1          wheat2          wheat3            wheat4               white
!   whitesmoke      yellow          yellow1           yellow2              yellow3
!   yellow4         yellowgreen
!
!---------------------------------------
!
! SUBROUTINE NG_GQCR( CI, ER, CR, CG, CB ) ! REAL(r,g,b)
! SUBROUTINE NG_GQCR( CI, ER, IR, IG, IB ) ! INTEGER(r,g,b)
! or
! SUBROUTINE NG_GQCR( CI,     CR, CG, CB ) ! REAL(r,g,b)
! SUBROUTINE NG_GQCR( CI,     IR, IG, IB ) ! INTEGER(r,g,b)
! or
! SUBROUTINE NG_GQCR( CN, ER, CR, CG, CB ) ! REAL(r,g,b)
! SUBROUTINE NG_GQCR( CN, ER, IR, IG, IB ) ! INTEGER(r,g,b)
! or
! SUBROUTINE NG_GQCR( CN,     CR, CG, CB ) ! REAL(r,g,b)
! SUBROUTINE NG_GQCR( CN,     IR, IG, IB ) ! INTEGER(r,g,b)
!
!   INTEGER,      INTENT(IN   ) :: CI
!   CHARACTER(*), INTENT(IN   ) :: CN
!   INTEGER,      INTENT(  OUT) :: ER
!   REAL,         INTENT(  OUT) :: CR, CG, CB
!   INTEGER,      INTENT(  OUT) :: IR, IG, IB
!
! Routine to get, by color index or color name, color representation
!
! Variables:
!
!   CI - The color index, 0<=CI<=255, set by NG_GSCR call.
!
!   CN - The name of predefined color.
!        CNCARG support NCL 650 (657) named colors
!        (http://www.ncl.ucar.edu/Document/Graphics/named_colors.shtml)
!
!   ER - An error return value.
!        =0, no errors were detected.
!        =1, color index "CI" out of valid range [0,255]
!        =2, color index "CI" undefined for CI=253/254/255
!        =3, color name "CN" not predefined
!
!   CR - An intensity of red between a minimum of 0.0 and a maximum of 1.0 inclusive.
!        (returns -1.0 for the case of non-zero ER)
!
!   CG - A green intensity between 0.0 and 1.0
!        (returns -1.0 for the case of non-zero ER)
!
!   CB - A blue intensity between 0.0 and 1.0
!        (returns -1.0 for the case of non-zero ER)
!
!   IR - An intensity of red between a minimum of 0 and a maximum of
!        255 inclusive.
!        (returns -255 for the case of non-zero ER)
!
!   IG - A green intensity between 0 and 255
!        (returns -255 for the case of non-zero ER)
!
!   IB - A blue intensity between 0 and 255
!        (returns -255 for the case of non-zero ER)
!
!---------------------------------------------------------------------
! Routines to Set and Get PLCI/FACI Color Indices
!---------------------------------------------------------------------
!
! SUBROUTINE NG_GSPLCI( PLCI )
!
!   INTEGER, INTENT(IN) :: PLCI
!
! Routine to set polyline color index
!
! Variables:
!
!   PLCI - A color index used for for line drawing
!
!-------------------
!
! SUBROUTINE NG_GQPLCI( IER, PLCI )
! or
! SUBROUTINE NG_GQPLCI(      PLCI )
!
!   INTEGER, INTENT(OUT) :: IER
!   INTEGER, INTENT(OUT) :: PLCI
!
! Routine to inquire current polyline color index
!
! Variables:
!
!   IER  - Error flag, always 0, means no error
!
!   PLCI - The polyline color index as set by NG_GSPLCI
!
!---------------------------------------
!
! SUBROUTINE NG_GSFACI( FACI )
!
!   INTEGER, INTENT(IN) :: FACI
!
! Routine to set fill area color index
!
! Variables:
!
!   FACI - A color index used for for area filling
!
!-------------------
!
! SUBROUTINE NG_GQFACI( IER, FACI )
! or
! SUBROUTINE NG_GQFACI(      FACI )
!
!   INTEGER, INTENT(OUT) :: IER
!   INTEGER, INTENT(OUT) :: FACI
!
! Routine to inquire current fill area color index
!
! Variables:
!
!   IER  - Error flag, always 0, means no error
!
!   FACI - The fill area color index as set by NG_GSFACI
!
!=====================================================================
! D. Line and Fill
!=====================================================================
!
! SUBROUTINE NG_GSLWSC ! Set linewidth scale factor
! SUBROUTINE NG_GQLWSC ! Inquire linewidth scale factor
!
! ----------
!
! SUBROUTINE NG_PLOTIF ! Pen-Up/Down move  (fractional)
!
! ----------
!
! SUBROUTINE NG_FRSTPT ! Pen-up   move     (user/fractional)
! SUBROUTINE NG_VECTOR ! Pen-down move     (user/fractional)
! SUBROUTINE NG_LINE   ! Draw line         (user/fractional)
! SUBROUTINE NG_CURVE  ! Draw polyline     (user/fractional)
!
! SUBROUTINE NG_GPL    ! Draw polyline     (user/fractional)
!
! SUBROUTINE NG_GFA    ! Fill polygon      (user/fractional)
!
! SUBROUTINE NG_GCA    ! Cell Array Fill   (user/fractional)
!
!---------------------------------------------------------------------
!
! SUBROUTINE NG_GSLWSC( LWSC )
!
!   REAL, INTENT(IN) :: LWSC
!
! Routine to set the linewidth scale factor.
!
! Variables:
!
!   LWSC - A scale factor to control the linewidth of the polyline
!          to be drawn. It must be greater than or equal to 0.0.
!          The default value is 1.0
!
!---------------------------------------
!
! SUBROUTINE NG_GQLWSC( IER, LWSC )
! or
! SUBROUTINE NG_GQLWSC(      LWSC )
!
!   INTEGER, INTENT(OUT) :: IER
!   REAL,    INTENT(OUT) :: LWSC
!
! Routine to inquire the linewidth scale factor.
!
! Variables:
!
!   IER  - Error flag, always 0, means no error
!
!   LWSC - The linewidth scale factor as set by NG_GSLWSC
!
!---------------------------------------------------------------------
!
! SUBROUTINE NG_PLOTIF( X, Y, IP )
!
!   REAL,    INTENT(IN) :: X, Y
!   INTEGER, INTENT(IN) :: IP
!
! Routine to move the pen to the position (X,Y), in the fractional
! (normalized) coordinate system, with the pen up if IP equals zero
! and with the pen down if IP equals one (otherwise, nothing to do).
!
!---------------------------------------
!
! SUBROUTINE NG_FRSTPT( X, Y, NDC )
!
!   REAL,    INTENT(IN)           :: X, Y
!   LOGICAL, INTENT(IN), OPTIONAL :: NDC  !---> added by CNCARG
!
! Routine to generate a pen-up move to the point (X,Y), in the user
! (world) coordinate system.
!
! Variables:
!
!   X   - The X coordinate
!
!   Y   - The Y coordinate
!
!   NDC - Flag to determine the type of coordinates.
!         =.TRUE. , X and Y are fractional/normalized device coordinates
!         =.FALSE., X and Y are world/user coordinates
!
!         Default is .FALSE. (user coordinates), if argument not present
!
!---------------------------------------
!
! SUBROUTINE NG_VECTOR( X, Y, NDC )
!
!   REAL,    INTENT(IN)           :: X, Y
!   LOGICAL, INTENT(IN), OPTIONAL :: NDC  !---> added by CNCARG
!
! Routine to generate a pen-down move to the point (X,Y), in the user
! (world) coordinate system.
!
! Variables:
!
!   X   - The X coordinate
!
!   Y   - The Y coordinate
!
!   NDC - Flag to determine the type of coordinates.
!         =.TRUE. , X and Y are fractional/normalized device coordinates
!         =.FALSE., X and Y are world/user coordinates
!
!         Default is .FALSE. (user coordinates), if argument not present
!
!---------------------------------------
!
! SUBROUTINE NG_LINE( X1, Y1, X2, Y2, NDC )
!
!   REAL,    INTENT(IN)           :: X1, Y1
!   REAL,    INTENT(IN)           :: X2, Y2
!   LOGICAL, INTENT(IN), OPTIONAL :: NDC    !---> added by CNCARG
!
! Routine to draw a line from the point (X1,Y1) to the point (X2,Y2),
! in the user (world) coordinate system.
!
! Variables:
!
!   X1, Y1 - The X and Y coordinates of the starting point of the line segment
!
!   X2, Y2 - The X and Y coordinates of the endpoint of the line segment
!
!   NDC    - Flag to determine the type of coordinates.
!            =.TRUE. , X1, X2, Y1, and Y2 are fractional/normalized
!                      device coordinates
!            =.FALSE., X1, X2, Y1, and Y2 are world/user coordinates
!
!            Default is .FALSE. (user coordinates), if argument not present
!
!---------------------------------------
!
! SUBROUTINE NG_CURVE( PX, PY, NP, NDC )
!
!   INTEGER, INTENT(IN)           :: N
!   REAL,    INTENT(IN)           :: X(N), Y(N)
!   LOGICAL, INTENT(IN), OPTIONAL :: NDC        !---> added by CNCARG
!
! Routine to draw the curve defined by the points ((PX(I),PY(I)),I=1,NP),
! in the user (world) coordinate system.
!
! Variables:
!
!   PX  - The X coordibates of the points that define the curve to be drawn
!
!   PY  - The X coordibates of the points that define the curve to be drawn
!
!   NP  - The number of points defining the curve (Size of arrays PX and PY)
!
!   NDC - Flag to determine the type of coordinates.
!         =.TRUE. , PX and PY are fractional/normalized device coordinates
!         =.FALSE., PX and PY are world/user coordinates
!
!         Default is .FALSE. (user coordinates), if argument not present
!
!---------------------------------------------------------------------
!
! SUBROUTINE NG_GPL( N, X, Y, XSPV, YSPV, NDC )
!
!   INTEGER, INTENT(IN)           :: N
!   REAL,    INTENT(IN)           :: X(N), Y(N)
!   REAL,    INTENT(IN), OPTIONAL :: XSPV, YSPV !---> added by CNCARG
!   LOGICAL, INTENT(IN), OPTIONAL :: NDC        !---> added by CNCARG
!
! Routine to draw the polylines defined by the points (X(I),Y(I)),I=1,N).
!
! Variables:
!
!   N    - The number of points in the polygon. (N > 1)
!
!   X    - The X coordinates array of the polygon.
!
!   Y    - The Y coordinates array of the polygon.
!
!   XSPV - Special value of X and Y coordinates.
!   YSPV   The line segments with ending points (X==XSPV .OR. Y=YSPV)
!          will be skipped.
!
!   NDC  - Flag to determine the type of coordinates.
!          =.TRUE. , X and Y are fractional/normalized device coordinates
!          =.FALSE., X and Y are world/user coordinates
!          Default is .FALSE. (user coordinates), if argument not present
!
! Note: Default is solid-line
!
!---------------------------------------
!
! SUBROUTINE NG_GFA( N, X, Y, NDC )
!
!   INTEGER, INTENT(IN)           :: N
!   REAL,    INTENT(IN)           :: X(N), Y(N)
!   LOGICAL, INTENT(IN), OPTIONAL :: NDC        !---> added by CNCARG
!
! Routine to fill the polygon defined by the points ((X(I),Y(I)),I=1,N).
! The last point in the polygon is connected to the first point with a
! straight line segment in the case that coordinate (X(N),Y(N)) is not
! equal to coordinate (X(1),Y(1)).
!
! Variables:
!
!   N   - The number of points in the polygon. (N > 2)
!
!   X   - The X coordinates array of the polygon.
!
!   Y   - The Y coordinates array of the polygon.
!
!   NDC - Flag to determine the type of coordinates
!         =.TRUE. , X and Y are fractional/normalized device coordinates
!         =.FALSE., X and Y are world/user coordinates
!         Default is .FALSE. (user coordinates), if argument not present
!
! Note: Default is solid-fill
!
!---------------------------------------
!
! SUBROUTINE NG_GCA( XMIN, XMAX, YMIN, YMAX, CA, NX, NY, NDC )
!
!   REAL,    INTENT(IN)           :: XMIN, XMAX, YMIN, YMAX
!   INTEGER, INTENT(IN)           :: NX, NY
!   INTEGER, INTENT(IN)           :: CA(NX,NY)
!   LOGICAL, INTENT(IN), OPTIONAL :: NDC       !---> added by CNCARG
!
! Routine to fill rectangle, defined by XMIN, XMAX, YMIN, and YMAX,
! using specified cell array CA(NX,NY). This rectangle is subdivided
! into NX and NY subrectangles in the X and Y directions, each
! subrectangle (or cell) is assigned a color and drawn with that color.
!
!          YMAX +--------+--------+-----+---------+
!               | (1,NY) | (2,NY) | ... | (NX,NY) |
!               +--------+--------+-----+---------+
!               |  ...   |  ...   | ... |  ...    |
!               +--------+--------+-----+---------+
!               | (1,2)  | (2,2)  | ... | (NX,2)  |
!               +--------+--------+-----+---------+
!               | (1,1)  | (2,1)  | ... | (NX,1)  |
!          YMIN +--------+--------+-----+---------+
!              XMIN                              XMAX
!
! Variables :
!
!   XMIN - Lower-left X coordinates of rectangle
!
!   YMIN - Lower-left Y coordinates of rectangle
!
!   XMAX - Upper-reght X coordinates of rectangle
!
!   XMAX - Upper-reght Y coordinates of rectangle
!
!   NX   - X dimension of the color index array CARRAY
!
!   NY   - Y dimension of the color index array CARRAY
!
!   CA   - An array of color indices used to determine the color of
!          each cell drawn.
!
!   NDC  - Flag to determine the type of coordinates
!          =.TRUE. , X and Y are fractional/normalized device coordinates
!          =.FALSE., X and Y are world/user coordinates
!          Default is .FALSE. (user coordinates), if argument not present
!
!=====================================================================
! E. GTX, GPL, GPM, and GFA of GKS (not recommended to use)
!=====================================================================
!
! SUBROUTINE NG_GTX     ! Text Output
!
! SUBROUTINE NG_GSTXCI  ! Set Text color index
! SUBROUTINE NG_GSTXP   ! Set Text path
! SUBROUTINE NG_GSTXAL  ! Set Text alignment
! SUBROUTINE NG_GSTXFP  ! Set Text font and precision
! SUBROUTINE NG_GSCHH   ! Set Character height
! SUBROUTINE NG_GSCHUP  ! Set Character up vector
! SUBROUTINE NG_GSCHSP  ! Set Character spacing
! SUBROUTINE NG_GSCHXP  ! Set Character expansion factor
!
! SUBROUTINE NG_GQTXCI  ! Inquire Text color index
! SUBROUTINE NG_GQTXP   ! Inquire Text path
! SUBROUTINE NG_GQTXAL  ! Inquire Text alignment
! SUBROUTINE NG_GQTXFP  ! Inquire Text font and precision
! SUBROUTINE NG_GQCHH   ! Inquire Character height
! SUBROUTINE NG_GQCHUP  ! Inquire Character up vector
! SUBROUTINE NG_GQCHSP  ! Inquire Character spacing
! SUBROUTINE NG_GQCHXP  ! Inquire Character expansion factor
!
! ----------
!
! SUBROUTINE NG_GPL     ! Polyline Output
!
! SUBROUTINE NG_GSPLCI  ! Set polyline color index
! SUBROUTINE NG_GSLN    ! Set Line type
! SUBROUTINE NG_GSLWSC  ! Set Linewidth scale factor
!
! SUBROUTINE NG_GQPLCI  ! Inquire polyline color index
! SUBROUTINE NG_GQLN    ! Inquire Line type
! SUBROUTINE NG_GQLWSC  ! Inquire Linewidth scale factor
!
! ----------
!
! SUBROUTINE NG_GPM     ! Polymarker Output
!
! SUBROUTINE NG_GSPMCI  ! Set polymarker color index
! SUBROUTINE NG_GSMK    ! Set Polymarker type
! SUBROUTINE NG_GSMKSC  ! Set Polymarker size scale factor
!
! SUBROUTINE NG_GQPMCI  ! Inquire polymarker color index
! SUBROUTINE NG_GQMK    ! Inquire Polymarker type
! SUBROUTINE NG_GQMKSC  ! Inquire Polymarker size scale factor
!
! ----------
!
! SUBROUTINE NG_GFA     ! Filled Area Output
!
! SUBROUTINE NG_GSFACI  ! Set Fill Area color index
! SUBROUTINE NG_GSFAIS  ! Set Fill Area interior style
! SUBROUTINE NG_GSFASI  ! Set Fill Area style index
!
! SUBROUTINE NG_GQFACI  ! Inquire Fill Area color index
! SUBROUTINE NG_GQFAIS  ! Inquire Fill Area interior style
! SUBROUTINE NG_GQFASI  ! Inquire Fill Area style index
!
!---------------------------------------------------------------------
! GKS-GTX Text Output
!---------------------------------------------------------------------
!
! ~~~~~~~~~~~~~~~~~~~~~
! Text Output Primitive
! ~~~~~~~~~~~~~~~~~~~~~
!
! The text output primitive causes a specified text string to be drawn.
! A number of attribute setting routines are available for selecting
! the size, font, precision, and orientation of the text.
!
! -----------------------------------------------------
!           Argument | Type        |  Mode  | Dimension
! -----------------------------------------------------
! CALL GTX  (X,      | Real        |  Input |
!            Y,      | Real        |  Input |
!            STRING) | Character   |  Input |
! -----------------------------------------------------
!
! X: The X coordinate for the position point for the text string. X is
! a world coordinate value. See GSTXAL  for how a text string is
! positioned with respect to its position point.
!
! Y: The Y coordinate for the position point for the text string. Y is
! a world coordinate value. See GSTXAL for how a text string is
! positioned with respect to its position point.
!
! STRING: The string of characters to be drawn. Defaults: none
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Setting Text Output Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! The appearance of text on a workstation is controlled by a number
! of attributes including:
!
!   Text color index (see GSTXCI and GQTXCI)
!
!   Text path (see GSTXP and GQTXP)
!
!   Text alignment (see GSTXAL and GQTXAL)
!
!   Text font and precision (see GSTXFP and GQTXFP)
!
!   Text color index (see GSTXCI and GQTXCI)
!
!   Character height (see GSCHH and GQCHH)
!
!   Character spacing (see GSCHSP and GQCHSP)
!
!   Character up vector (see GSCHUP and GQCHUP)
!
!   Character expansion factor (see GSCHXP and GQCHXP)
!
!=======================================
!
! ~~~~~~~~~~~~~~~~~~~~
! Set Text Color Index
! ~~~~~~~~~~~~~~~~~~~~
!
! ---------------------------------------------------
!              Argument | Type    | Mode  | Dimension
! ---------------------------------------------------
! CALL GSTXCI  (COLI)   | Integer | Input |
! ---------------------------------------------------
!
! COLI: An index assigned an RGB (red, green, blue) color in a previous
! call to the GSCR routine, or a workstation-dependent default. Allowed
! indices are non-negative integers. Index 0 is the background color.
! Index 1 is the foreground color.
!
! All text drawn with calls to the GTX output primitive will be drawn
! with the color described by index COLI until GSTXCI is called again
! and a new index is assigned.
!
! Default: The default text color index is 1 (foreground color).
!
! ~~~~~~~~~~~~~
! Set Text Path
! ~~~~~~~~~~~~~
!
! --------------------------------------------------
!             Argument | Type    |  Mode | Dimension
! --------------------------------------------------
! CALL GSTXP  (TXP)    | Integer | Input |
! --------------------------------------------------
!
! TXP: Gives the direction in which a character string is to be drawn.
!
! Options are:
!   0 - draw character n+l to the right of character n
!   1 - draw character n+1 to the left of character n
!   2 - draw character n+1 above character n
!   3 - draw character n+1 below character n
!
! The above, below, left, and right directions are relative to the
! character up vector (see routine GSCHUP). The text path direction
! "right" is perpendicular to the up vector direction. To draw a text
! string at a 45 degree angle, an appropriate character up vector
! would be (-1.,1.), and the text path would be right.
!
! Normal text writing (horizontal direction moving toward the right)
! defaults are a character up vector of (0.,1.) and text path of right.
!
! Default: The default text path is to the right.
!
! ~~~~~~~~~~~~~~~~~~
! Set Text Alignment
! ~~~~~~~~~~~~~~~~~~
!
! ---------------------------------------------------
!              Argument | Type    |  Mode | Dimension
! ---------------------------------------------------
! CALL GSTXAL  (TXALH,  | Integer | Input |
!               TXALV)  | Integer | Input |
! ---------------------------------------------------
!
! TXALH: Determines the horizontal alignment of the text to be drawn.
!
! Options are:
!   0 - normal
!   1 - left
!   2 - center
!   3 - right
!
! TXALV: Determines the vertical alignment of the text to be drawn.
!
! Options are:
!   0 - normal
!   1 - top
!   2 - cap
!   3 - half
!   4 - base
!   5 - bottom
!
! Text alignment is used to indicate a position on the text extent
! rectangle that will be identified with the positioning point
! specified in a call to GTX. The angle of rotation at which the
! text is written is determined by the character up vector (see GSCHUP).
!
! Defaults: The default horizontal alignment is 0; the default vertical
! alignment is 0.
!
! Normal Text Alignments Relative to Text Path
! ------------------------------------------------
! Text Path |  Normal Horizontal | Normal Vertical
! ------------------------------------------------
! RIGHT     | LEFT               | BASE
! LEFT      | RIGHT              | BASE
! UP        | CENTER             | BASE
! DOWN      | CENTER             | TOP
! ------------------------------------------------
!
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Text Font and Precision
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! ---------------------------------------------------
!              Argument | Type    |  Mode | Dimension
! ---------------------------------------------------
! CALL GSTXFP  (FONT,   | Integer | Input |
!               PREC)   | Integer | Input |
! ---------------------------------------------------
!
! FONT: Specifies the text font to be used in subsequent calls to the
! GTX output primitive.
!
! Options are:
!    1 - Default ASCII font
!   -2 - Hershey cartographic Roman
!   -3 - Hershey cartographic Greek
!   -4 - Hershey simplex Roman
!   -5 - Hershey simplex Greek
!   -6 - Hershey simplex script
!   -7 - Hershey complex Roman
!   -8 - Hershey complex Greek
!   -9 - Hershey complex script
!  -10 - Hershey complex italic
!  -11 - Hershey complex Cyrillic
!  -12 - Hershey duplex Roman
!  -13 - Hershey triplex Roman
!  -14 - Hershey triplex italic
!  -15 - Hershey Gothic German
!  -16 - Hershey Gothic English
!  -17 - Hershey Gothic Italian
!  -18 - Hershey math symbols
!  -19 - Hershey symbol set 1
!  -20 - Hershey symbol set 2
!
! The Hershey fonts are not standardized by GKS but are locally
! implemented in NCAR GKS. The Hershey font description files were
! originally written by A.V. Hershey in the late 1960s and are now
! made available from the National Institute of Standards and
! Technology (NIST). All of the Hershey fonts are stroked fonts,
! that is, the characters are defined by a sequence of line draws.
! GKS requires that locally implemented fonts be assigned negative
! font numbers.
!
! When plotting to a PostScript workstation  all GKS fonts are mapped
! onto an equivalent PostScript font if possible.
!
! PREC: Gives an indication as to how faithfully text should be
! represented when it is plotted with GTX using the font specified by
! FONT.
!
! Options are:
!   0 - string precision (good)
!   1 - character precision (better)
!   2 - stroke precision (best)
!
! Defaults: FONT=1 and PREC=2 (All text output from NCAR GKS is at
! stroke precision.)
!
! ~~~~~~~~~~~~~~~~~~~~
! Set Character Height
! ~~~~~~~~~~~~~~~~~~~~
!
! ------------------------------------------------
!             Argument | Type | Mode  |  Dimension
! ------------------------------------------------
! CALL GSCHH  (CHH)    | Real | Input |
! ------------------------------------------------
!
! CHH: Gives the height in world coordinates at which a character is
! drawn using the GTX output primitive. CHH must be > 0.
!
! Default: The default character height is 0.01
!
! ~~~~~~~~~~~~~~~~~~~~~~~
! Set Character Up Vector
! ~~~~~~~~~~~~~~~~~~~~~~~
!
! -------------------------------------------------
!              Argument | Type | Mode  |  Dimension
! -------------------------------------------------
! CALL GSCHUP  (CHUX,   | Real | Input |
!               CHUY)   | Real | Input |
! -------------------------------------------------
!
! CHUX: Gives the X (horizontal) world coordinate of a vector tip.
!
! CHUY: Gives the Y (vertical) world coordinate of a vector tip.
!
! The vector tail is at (0,0). (CHUX, CHUY) cannot be (0,0).
! The coordinate (CHUX, CHUY), relative to (0,0), establishes a
! vector direction which will be perpendicular to the horizontal
! centerline of the character string to be drawn. Thus, (CHUX, CHUY)
! equals (0., 1.) implies normal character positioning in which the
! character centerline is horizontal and the top of the character is up.
!
! Defaults: The default character up vector is (0.,1.)
!
! ~~~~~~~~~~~~~~~~~~~~~
! Set Character Spacing
! ~~~~~~~~~~~~~~~~~~~~~
!
! -------------------------------------------------
!              Argument | Type | Mode  |  Dimension
! -------------------------------------------------
! CALL GSCHSP  (CHSP)   | Real | Input |
! -------------------------------------------------
!
! CHSP: Specifies how much additional white space should be inserted
! between characters drawn using the GTX output primitive. CHSP is
! specified as a fraction of the character height.
!
! A character spacing of zero concatenates character bodies contiguously.
! A positive value leaves space between the successive characters.
! A negative value causes successive characters to overlap.
!
! Default: The default character spacing is 0.0
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Character Expansion Factor
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! -------------------------------------------------
!              Argument | Type | Mode  |  Dimension
! -------------------------------------------------
! CALL GSCHXP  (CHXP)   | Real | Input |
! -------------------------------------------------
!
! CHXP: Specifies a deviation of the width to height ratio for characters
! drawn using the GTX output primitive. CHXP of 10.0 would request a
! character that is 10 times as wide as normal. CHXP of 0.1 would
! request characters that are 1/10th as wide as normal. The character
! height remains unchanged. CHXP must be greater than 0.
!
! Default: The default character expansion factor is 1.0 .
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Inquire Text/Character Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! SUBROUTINE NG_GQTXCI( ERRIND, COLI )         ! Text Color Index
!
! SUBROUTINE NG_GQTXP ( ERRIND, TXP )          ! Text Path
!
! SUBROUTINE NG_GQTXAL( ERRIND, TXALH, TXALV ) ! Text Alignment
!
! SUBROUTINE NG_GQTXFP( ERRIND, FONT, PREC )   ! Text Font and Precision
!
! SUBROUTINE NG_GQCHH ( ERRIND, CHH )          ! Character Height
!
! SUBROUTINE NG_GQCHUP( ERRIND, CHUX, CHUY )   ! Character Up Vector
!
! SUBROUTINE NG_GQCHSP( ERRIND, CHSP )         ! Character Spacing
!
! SUBROUTINE NG_GQCHXP( ERRIND, CHXP )         ! Character Expansion Factor
!
!---------------------------------------------------------------------
! GKS-GPL: Polyline Output
!---------------------------------------------------------------------
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~
! Polyline Output Primitive
! ~~~~~~~~~~~~~~~~~~~~~~~~~
!
! The polyline output primitive GPL causes a series of N-1 straight
! line segments to be drawn connecting successive points specified by
! the coordinate pairs (X(I),Y(I)) for I=1,N.
!
! ------------------------------------------------
!           Argument | Type    |  Mode | Dimension
! ------------------------------------------------
! CALL GPL  (N,      | Integer | Input |
!            X,      | Real    | Input |   N
!            Y)      | Real    | Input |   N
! ------------------------------------------------
!
! N: The number of points in the line to be drawn. (N > 1)
!
! X: An array of dimension N containing the X coordinates of N points
! to be connected by line segments. These values are in world coordinates.
!
! Y: An array of dimension N containing the Y coordinates of N points to
! be connected by line segments. These values are in world coordinates.
!
! Defaults: none
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Setting Polyline Output Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! The appearance of polyline on a workstation is controlled by a number
! of attributes including:
!
!   Polyline Color IOndex (see GSPLCI and GQPLCI)
!
!   Line Type (see GSLN and GQLN)
!
!   Linewidth Scale Factor (see GSLWSC and GQLWSC)
!
!=======================================
!
! ~~~~~~~~~~~~~~~~~~~~~~~~
! Set Polyline Color Index
! ~~~~~~~~~~~~~~~~~~~~~~~~
!
! ---------------------------------------------------
!              Argument | Type    | Mode  | Dimension
! ---------------------------------------------------
! CALL GSPLCI  (COLI)   | Integer | Input |
! ---------------------------------------------------
!
! COLI: An index assigned an RGB (red, green, blue) color in a previous
! call to the GSCR routine or a workstation dependent default. Allowed
! indices are non-negative integers. Index 0 is the background color.
! Index 1 is the foreground color. All lines drawn with calls to the
! GPL output primitive will be drawn with the color described by index
! COLI until GSPLCI is called again and a new index is assigned.
!
! Default: The default polyline color index is 1 (foreground color).
!
! ~~~~~~~~~~~~~
! Set Line Type
! ~~~~~~~~~~~~~
!
! -------------------------------------------------
!            Argument | Type    |  Mode | Dimension
! -------------------------------------------------
! CALL GSLN  (LTYPE)  | Integer | Input |
! -------------------------------------------------
!
! LTYPE: The type of polyline to be drawn. Options are:
!
! < 0 - implementation dependent (not used in NCAR GKS)
! 1 - solid line
! 2 - dashed line
! 3 - dotted line
! 4 - dashed dotted line
! >= 5 - reserved for future standardization (not used in NCAR GKS)
!
! Default: The default linetype is 1 (solid line).
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Linewidth Scale Factor
! ~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! -------------------------------------------------
!              Argument | Type | Mode  |  Dimension
! -------------------------------------------------
! CALL GSLWSC  (LWIDTH) | Real | Input |
! -------------------------------------------------
!
! LWIDTH: A scale factor to control the linewidth of the polyline
! to be drawn. It must be greater than or equal to 0.
!
! Default: The default linewidth scale factor is 1.0.
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Inquire Polyline Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! SUBROUTINE NG_GQPLCI( ERRIND, COLI   )
!
! SUBROUTINE NG_GQLN  ( ERRIND, LTYPE  )
!
! SUBROUTINE NG_GQLWSC( ERRIND, LWIDTH )
!
!---------------------------------------------------------------------
! GKS-GPM: Polymarker Output
!---------------------------------------------------------------------
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Polymarker Output Primitive
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! The polymarker output primitive GPM causes N markers to be drawn at
! the locations specified by the coordinate pairs (X(I),Y(I)) for I=1,N.
! The markers can be either a dot, a plus sign, an asterisk (the default),
! a circle, or a cross.
!
! -------------------------------------------------
!           Argument | Type    |  Mode  | Dimension
! -------------------------------------------------
! CALL GPM  (N,      | Integer |  Input |
!            X,      | Real    |  Input |   N
!            Y)      | Real    |  Input |   N
! -------------------------------------------------
!
! N: The number of markers to be drawn. (N > 0)
!
! X: An array of dimension N containing the X coordinates of the N
! markers to be drawn, in world coordinates.
!
! Y: An array of dimension N. The Y coordinates of the N markers
! to be drawn, in world coordinates.
!
! Defaults: none
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Setting Polymarker Output Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! The appearance of polymark on a workstation is controlled by a number
! of attributes including:
!
!   Polymarker Color Index (see GSPMCI and GQPMCI)
!
!   Polymarker Type (see GSMK and GQMK)
!
!   Polymarker Size Scale Factor (see GSMKSC and GQMKSC)
!
!=======================================
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Polymarker Color Index
! ~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! ----------------------------------------------------
!              Argument | Type    | Mode  |  Dimension
! ----------------------------------------------------
! CALL GSPMCI  (COLI)   | Integer | Input |
! ----------------------------------------------------
!
! COLI: An index assigned an RGB (red, green, blue) color in a previous
! call to the GSCR routine, or a workstation-dependent default. Allowed
! indices are non-negative integers. Index 0 is the background color.
! Index 1 is the foreground color. All markers drawn with calls to the
! GPM output primitive will be drawn with the color described by index
! COLI until GSPMCI is called again and a new index is assigned.
!
! Default: The default polymarker color index is 1 (foreground color).
!
! ~~~~~~~~~~~~~~~~~~~
! Set Polymarker Type
! ~~~~~~~~~~~~~~~~~~~
!
! -------------------------------------------------
!            Argument | Type    |  Mode | Dimension
! -------------------------------------------------
! CALL GSMK  (MTYPE)  | Integer | Input |
! -------------------------------------------------
!
! MTYPE: Selects the type of marker to be drawn. Options are:
!   < 0 - implementation dependent (not used in NCAR GKS)
!   1 - . (dot)
!   2 - + (plus)
!   3 - * (asterisk)
!   4 - o (circle)
!   5 - X (cross)
!   >= 6 - reserved for registration or future standardization
!
! Default: The default polymarker is an asterisk.
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Polymarker Size Scale Factor
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! -------------------------------------------------
!              Argument | Type | Mode  |  Dimension
! -------------------------------------------------
! CALL GSMKSC  (MSZSF)  | Real | Input |
! -------------------------------------------------
!
! MSZSF: A scale factor to control the size of the marker.
! It must be greater than or equal to 0.0
!
! Default: 1.0
!
! Note: The GKS standard requires that marker type 1 always be
! displayed as the smallest possible dot. For this reason a dot
! marker will not be scaled, regardless of the value of MSZSF.
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Inquire Polymarker Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! SUBROUTINE NG_GQPMCI( ERRIND, COLI  )
!
! SUBROUTINE NG_GQMK  ( ERRIND, MTYPE )
!
! SUBROUTINE NG_GQMKSC( ERRIND, MSZSF )
!
!---------------------------------------------------------------------
! GKS-GFA: Filled Area Output
!---------------------------------------------------------------------
!
! ~~~~~~~~~~~~~~~~~~~
! Fill Area Primitive
! ~~~~~~~~~~~~~~~~~~~
!
! The fill area output primitive takes a polygon as input and fills
! it with a solid color or cross hatching. The GKS standard sets hollow
! fill as the default. However, due to numerous complaints over many
! years, the default fill in the NCAR GKS implementation has been set
! to solid fill.
!
! ------------------------------------------------
!           Argument | Type    |  Mode | Dimension
! ------------------------------------------------
! CALL GFA  (N,      | Integer | Input |
!            X,      | Real    | Input |   N
!            Y)      | Real    | Input |   N
! ------------------------------------------------
!
! N: The number of points in the polygon to be filled. (N > 2)
!
! X: An array of dimension N containing the X world coordinates
! of the polygon.
!
! Y: An array of dimension N containing the Y world coordinates
! of the polygon.
!
! The area to be filled is delimited by a series of straight line
! segments  connecting the successive points represented by
! (X(1), Y(1)), (X(2), Y(2)),..., (X(N), Y(N)). The last point in
! the polygon is connected to the first point with a straight line
! segment in the case that coordinate (X(N), Y(N)) is not equal to
! coordinate (X(1), Y(1)).
!
! Defaults: none
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Setting Fill Area Output Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! The appearance of fill area on a workstation is controlled by a number
! of attributes including:
!
!   Fill Area Color Index (see GSFACI and GQFACI)
!
!   Fill Area Interior Style (see GSFAIS and GQFAIS)
!
!   Fill Area Style Index (see GSFASI and GQFASI)
!
!=======================================
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Fill Area Color Index
! ~~~~~~~~~~~~~~~~~~~~~~~~~
!
! ---------------------------------------------------
!              Argument | Type    | Mode  | Dimension
! ---------------------------------------------------
! CALL GSFACI  (COLI)   | Integer | Input |
! ---------------------------------------------------
!
! COLI: An index assigned an RGB (red, green, blue) color in a previous
! call to the GSCR routine, or a workstation dependent default. Allowed
! indices are non-negative integers. Index 0 is the background color.
! Index 1 is the foreground color.
!
! All filled areas drawn with calls to the GFA output primitive will be
! drawn with the color described by index COLI until GSFACI is called
! again and a new index is assigned.
!
! Default: The default fill area color index is 1 (foreground color).
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Fill Area Interior Style
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! ---------------------------------------------------
!              Argument | Type    |  Mode | Dimension
! ---------------------------------------------------
! CALL GSFAIS  (INTS)   | Integer | Input |
! ---------------------------------------------------
!
! INTS: Gives the style of fill to be used in subsequent calls to GFA.
! Options are:
!
! 0 - hollow fill
! 1 - solid fill
! 2 - pattern fill
! 3 - hatch fill
!
! GKS subroutine GSFASI can then be used to set the particular workstation
! dependent hatch and pattern options which may be provided.
!
! Default: The default interior style in NCAR GKS is solid fill. This is
! in exception to the default specified in the GKS Standard (which is
! hollow fill).
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~
! Set Fill Area Style Index
! ~~~~~~~~~~~~~~~~~~~~~~~~~
!
! ---------------------------------------------------
!              Argument | Type    |  Mode | Dimension
! ---------------------------------------------------
! CALL GSFASI  (STYLI)  | Integer | Input |
! ---------------------------------------------------
!
! STYLI: Allows for the selection of workstation-dependent options for
! hatch or pattern fills. Pattern fill options are not supported in
! NCAR Graphics. Hatch fill options are:
!
! 1 - horizontal lines
! 2 - vertical lines
! 3 - lines of positive slope
! 4 - lines of negative slope
! 5 - horizontal and vertical lines
! 6 - lines of positive and negative slope
!
! Default: The default hatch fill is horizontal lines.
!
! Note : using CALL NG_SFSETR('SP - Spacing of fill lines', SP)
!        to set the hatch spacing "SP"
!
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Inquire Fill Area Attributes
! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
! SUBROUTINE NG_GQFACI( ERRIND, COLI  )
!
! SUBROUTINE NG_GQFAIS( ERRIND, INTS  )
!
! SUBROUTINE NG_GQFASI( ERRIND, STYLE )
!
!=====================================================================
! Refer "NCAR menu" for interfacing SPPS in detail
!=====================================================================