function zplt (args)

'numargs  'args
 numargs = result

        num = 0
while ( num < numargs )
        num = num + 1

if( subwrd(args,num) = '-EXPID'   ) ; expid    = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-EXPORT'  ) ; EXPORT   = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-ALIAS'   ) ; alias    = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-QFILE'   ) ; qfile    = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-OFILE'   ) ; ofile    = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-ONAME'   ) ; obsnam   = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-OBDATE'  ) ; begdateo = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-OEDATE'  ) ; enddateo = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-NMOD'    ) ; nmod     = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-NOBS'    ) ; nobs     = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-QDESC'   ) ; qdesc    = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-ODESC'   ) ; odesc    = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-OUTPUT'  ) ; output   = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-SEASON'  ) ; season   = subwrd(args,num+1) ; endif
if( subwrd(args,num) = '-PTOP'    ) ; ptops    = subwrd(args,num+1) ; endif

endwhile

* Get PTOP Attributes
* -------------------
   Lbit  = ''
   scale = ''
     len = get_length (ptops)
     if( len>1 )
         bit = substr(ptops,len-1,1)
          if( bit = ":" )
              ptop = substr(ptops,1,len-2)
              Lbit = substr(ptops,len,1)
              if( ptop < 20 ) ; scale = 'LOG' ; endif
          else
              ptop = ptops
          endif
     endif

* Check for Contour Level Type
* ----------------------------
'run getenv "LEVTYPE"'
             LEVTYPE = result


say '-EXPID 'expid
say '-EXPORT 'EXPORT
say '-ALIAS  'alias
say '-QFILE 'qfile
say '-OFILE 'ofile
say '-ONAME 'obsnam
say '-OBDATE 'begdateo
say '-OEDATE 'enddateo
say '-NMOD 'nmod
say '-NOBS 'nobs
say '-QDESC 'qdesc
say '-ODESC 'odesc
say '-OUTPUT 'output
say '-SEASON 'season
say '-PTOP   'ptop
say '-SCALE  'scale
say '-Lbit   'Lbit

* Get Dates for Plots
* -------------------
'run getenv "BEGDATE"'
             begdate  = result
'run getenv "ENDDATE"'
             enddate  = result
if( begdate = "NULL" )
   'set dfile 'qfile
   'set t    '1
   'getinfo date'
         begdate = result
endif
if( enddate = "NULL" )
   'set dfile 'qfile
   'getinfo tdim'
            tdim     = result
   'set t  'tdim
   'getinfo date'
         enddate = result
endif

'run getenv "CLIMATE"'
             climate = result
if( begdate = begdateo & enddate = enddateo )
         climate = 'Actual'
endif

'set gxout shaded'

* Get Plotting Values from Resource File
* --------------------------------------
'run getenv "GEOSUTIL"'
             geosutil = result
PLOTRC = geosutil'/plots/grads_util/plot.rc'
 
if( EXPORT = "U"   )
    oname = "/horiz_"obsnam"_uwnd_z"
   'getresource 'PLOTRC' U_DYN_TITLE'           ; title = result
   'getresource 'PLOTRC' U_DYN_Z'scale'_CLEVS'  ; clevs = result
   'getresource 'PLOTRC' U_DYN_Z'scale'_CCOLS'  ; ccols = result
   'getresource 'PLOTRC' U_DYN_Z'scale'_DCOLS'  ; dcols = result
   'getresource 'PLOTRC' U_DYN_Z'scale'_DPCT'   ; dpct  = result
   'getresource 'PLOTRC' U_DYN_Z_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' U_DYN_Z'scale'_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' U_DYN_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' U_DYN_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.5 ; endif
endif
if( EXPORT = "V"   )
    oname = "/horiz_"obsnam"_vwnd_z"
   'getresource 'PLOTRC' V_DYN_TITLE'           ; title = result
   'getresource 'PLOTRC' V_DYN_Z_CLEVS'         ; clevs = result
   'getresource 'PLOTRC' V_DYN_Z_CCOLS'         ; ccols = result
   'getresource 'PLOTRC' V_DYN_Z_DCOLS'         ; dcols = result
   'getresource 'PLOTRC' V_DYN_Z'scale'_DPCT'   ; dpct  = result
   'getresource 'PLOTRC' V_DYN_Z_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' V_DYN_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' V_DYN_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.5 ; endif
endif
if( EXPORT = "T"   )
    oname = "/horiz_"obsnam"_tmpu_z"
   'getresource 'PLOTRC' T_DYN_TITLE'           ; title = result
   'getresource 'PLOTRC' T_DYN_Z_CLEVS'         ; clevs = result
   'getresource 'PLOTRC' T_DYN_Z_CCOLS'         ; ccols = result
   'getresource 'PLOTRC' T_DYN_Z_DPCT'          ; dpct  = result
   'getresource 'PLOTRC' T_DYN_Z_'LEVTYPE'COLS' ; dcols = result
   'getresource 'PLOTRC' T_DYN_Z_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' T_DYN_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' T_DYN_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.1 ; endif
endif
if( EXPORT = "Q"   )
    oname = "/horiz_"obsnam"_sphu_z"
   'getresource 'PLOTRC' Q_MOIST_TITLE'           ; title = result
   'getresource 'PLOTRC' Q_MOIST_Z_CLEVS'         ; clevs = result
   'getresource 'PLOTRC' Q_MOIST_Z_CCOLS'         ; ccols = result
   'getresource 'PLOTRC' Q_MOIST_Z_DCOLS'         ; dcols = result
   'getresource 'PLOTRC' Q_MOIST_Z_DPCT'          ; dpct  = result
   'getresource 'PLOTRC' Q_MOIST_Z_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' Q_MOIST_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' Q_MOIST_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.3 ; endif
endif
if( EXPORT = "QLTOT"   )
    oname = "/horiz_"obsnam"_ql_z"
   'getresource 'PLOTRC' QLTOT_AGCM_TITLE'           ; title = result
   'getresource 'PLOTRC' QLTOT_AGCM_Z_CLEVS'         ; clevs = result
   'getresource 'PLOTRC' QLTOT_AGCM_Z_CCOLS'         ; ccols = result
   'getresource 'PLOTRC' QLTOT_AGCM_Z_DCOLS'         ; dcols = result
   'getresource 'PLOTRC' QLTOT_AGCM_Z_DPCT'          ; dpct  = result
   'getresource 'PLOTRC' QLTOT_AGCM_Z_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' QLTOT_AGCM_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' QLTOT_AGCM_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.3 ; endif
endif
if( EXPORT = "QITOT"   )
    oname = "/horiz_"obsnam"_qi_z"
   'getresource 'PLOTRC' QITOT_AGCM_TITLE'           ; title = result
   'getresource 'PLOTRC' QITOT_AGCM_Z_CLEVS'         ; clevs = result
   'getresource 'PLOTRC' QITOT_AGCM_Z_CCOLS'         ; ccols = result
   'getresource 'PLOTRC' QITOT_AGCM_Z_DCOLS'         ; dcols = result
   'getresource 'PLOTRC' QITOT_AGCM_Z_DPCT'          ; dpct  = result
   'getresource 'PLOTRC' QITOT_AGCM_Z_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' QITOT_AGCM_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' QITOT_AGCM_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.3 ; endif
endif
if( EXPORT = "RH2" )
    oname = "/horiz_"obsnam"_rh_z"
   'getresource 'PLOTRC' RH2_MOIST_TITLE'           ; title = result
   'getresource 'PLOTRC' RH2_MOIST_Z_CLEVS'         ; clevs = result
   'getresource 'PLOTRC' RH2_MOIST_Z_CCOLS'         ; ccols = result
   'getresource 'PLOTRC' RH2_MOIST_Z_DCOLS'         ; dcols = result
   'getresource 'PLOTRC' RH2_MOIST_Z_DPCT'          ; dpct  = result
   'getresource 'PLOTRC' RH2_MOIST_Z_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' RH2_MOIST_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' RH2_MOIST_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.3 ; endif
endif
if( EXPORT = "ZLE"   )
    oname = "/horiz_"obsnam"_hght_z"
   'getresource 'PLOTRC' ZLE_DYN_TITLE'                  ; title = result
   'getresource 'PLOTRC' ZLE_DYN_Z'scale'_CLEVS'         ; clevs = result
   'getresource 'PLOTRC' ZLE_DYN_Z_CCOLS'                ; ccols = result
   'getresource 'PLOTRC' ZLE_DYN_Z_DPCT'                 ; dpct  = result
   'getresource 'PLOTRC' ZLE_DYN_Z'scale'_'LEVTYPE'COLS' ; dcols = result
   'getresource 'PLOTRC' ZLE_DYN_Z'scale'_'LEVTYPE'LEVS' ; dlevs = result
   'getresource 'PLOTRC' ZLE_DYN_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' ZLE_DYN_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.1 ; endif
endif
if( EXPORT = "OMEGA"   )
    oname = "/horiz_"obsnam"_omega_z"
   'getresource 'PLOTRC' OMEGA_DYN_TITLE'           ; title = result
   'getresource 'PLOTRC' OMEGA_DYN_CLEVS'           ; clevs = result
   'getresource 'PLOTRC' OMEGA_DYN_CCOLS'           ; ccols = result
   'getresource 'PLOTRC' OMEGA_DYN_DPCT'            ; dpct  = result
   'getresource 'PLOTRC' OMEGA_DYN_'LEVTYPE'COLS'   ; dcols = result
   'getresource 'PLOTRC' OMEGA_DYN_'LEVTYPE'LEVS'   ; dlevs = result
   'getresource 'PLOTRC' OMEGA_DYN_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' OMEGA_DYN_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.2 ; endif
endif
if( EXPORT = "O3"   )
    oname = "/horiz_"obsnam"_o3_z"
   'getresource 'PLOTRC' O3_CHEMISTRY_TITLE'                    ; title = result
   'getresource 'PLOTRC' O3_CHEMISTRY_Z_CCOLS'                  ; ccols = result
   'getresource 'PLOTRC' O3_CHEMISTRY_Z_DCOLS'                  ; dcols = result
   'getresource 'PLOTRC' O3_CHEMISTRY_Z_DPCT'                   ; dpct  = result
   'getresource 'PLOTRC' O3_CHEMISTRY_Z'scale'_CLEVS'           ; clevs = result
   'getresource 'PLOTRC' O3_CHEMISTRY_Z'scale'_'LEVTYPE'LEVS'   ; dlevs = result
   'getresource 'PLOTRC' O3_CHEMISTRY_FIXED_PLOT_FACTOR' ; fixpltfact = result
   'getresource 'PLOTRC' O3_CHEMISTRY_FIXED_PLOT_CINT'   ; fixpltcint = result
    if( dpct = 'NULL' ) ; dpct = 0.2 ; endif
endif


say ' TITLE: 'title
say ' CLEVS: 'clevs
say ' DLEVS: 'dlevs
say '  DPCT: 'dpct

* Make Mean Plot
* --------------
'set vpage off'
'set parea off'
'set grid  off'
'set frame on'
'set xlopts 1 3 .11'
'set ylopts 1 3 .11'
'rgbset'

'set dfile 'qfile
'setlats'
'setlons'
'getinfo  lonmin'
          lonmin = result

'set lon 'lonmin
'set lev 1000 'ptop
'set t 1'

'getinfo zfreq'
         zfreq = result
     if( zfreq = 'varying' )
         'getinfo zmin'
                  zmin = result
         'getinfo zmax'
                  zmax = result
     endif
     if( zfreq = 'fixed' )
         'getinfo zpos'
                  zmin = result
                  zmax = result
     endif

     z = zmin
'set z 'z
'minmax.simple modz'
   qmax = subwrd(result,1)
   qmin = subwrd(result,2)
        z = z + 1
 while( z <= zmax )
'set z 'z
'minmax.simple modz'
 dmax = subwrd(result,1)
 dmin = subwrd(result,2)
 if( dmax > qmax ) ; qmax = dmax ; endif
 if( dmin < qmin ) ; qmin = dmin ; endif
 z = z + 1
 endwhile

'd abs('qmin')'
        qmin = subwrd(result,4)
'd abs('qmax')'
        qmax = subwrd(result,4)
if( qmin > qmax )
    qmax = qmin
endif
say 'QMAX = 'qmax

'setlats'
'setlons'
'getinfo  lonmin'
          lonmin = result

'set lon 'lonmin
'set lev 1000 'ptop
'set t 1'


************************************************************
*                         Top Plot
************************************************************

'set vpage 0 8.5 0.0 11'
'set parea 1.5 7.0 7.70 10.50'
'set zlog  off'
if( Lbit = L ) ; 'setlevs' ; endif
'set grads off'
'set gxout shaded'
'set clevs 'clevs
'set ccols 'ccols
 'd modz'
'draw ylab Pressure (mb)'
'set gxout contour'
'set ccolor 1'
'set clevs 'clevs
 'd modz'
'set parea 0 8.5 7.0 11'
'cbarn -vert'
'set parea off'


************************************************************
*                        Middle Plot
************************************************************

'set vpage 0 8.5 0.0 11'
'set parea 1.5 7.0 4.30 7.10'
'set zlog  off'
'set dfile 'ofile
'setlats'
'set lon 'lonmin
'set lev 1000 'ptop
'set t 1'
if( Lbit = L ) ; 'setlevs' ; endif
'set grads off'
'set gxout shaded'
'set clevs 'clevs
'set ccols 'ccols
'd obsz'
'draw ylab Pressure (mb)'
'set gxout contour'
'set clevs 'clevs
'set ccolor 1'
'd obsz'
'set parea off'


************************************************************
*                        Bottom Plot
************************************************************

'run getenv "ZDIFILE"'
             zdifile = result
 'set dfile 'zdifile
*'set dfile 'qfile

'setlats'
'set lon 'lonmin
'set lev 1000 'ptop
'set t 1'
'set vpage 0 8.5 0.0 11'
'set parea 1.5 7.0 0.90 3.70'
'set zlog  off'
if( Lbit = L ) ; 'setlevs' ; endif
'set grads off'
'set gxout shaded'

 dfact = 1
'run getenv "CINTDIFF"'
             CINTDIFF  = result
if( CINTDIFF = 'NULL' & dlevs != 'NULL' & dcols != 'NULL' )
   'set clevs 'dlevs
   'set ccols 'dcols
   'd qz'
   'set gxout contour'
   'set ccolor 1'
   'set clevs 'dlevs
   'd qz'
   'cbarn -snum 0.65 -xmid 4.25 -ymid 0.4'
else
   'stats qz'
     avgdif = subwrd(result,1)
     stddif = subwrd(result,2)
      dqmax = stddif/3

     dqrel = dqmax / qmax  * 100 * 100
    'getint 'dqrel
             dqrel = result/100
             dqact = dqrel
         'd 'dpct
             dpct  = subwrd(result,4)
     say 'QMAX: 'qmax'  DQMAX: 'dqmax
     say 'Relative PCT Difference: 'dqrel' (100*DQMAX/QMAX)'
     say ' Minimum PCT for  Plots: 'dpct

     if( dqrel < dpct )
         dqrel = dpct
     endif
         dqmax = dqrel * qmax / 100
         say 'Setting CINT using DQREL: 'dqrel'%, DQMAX: 'dqmax

  if( dqmax > 0 )
      'd log10('dqmax')'
       n = subwrd(result,4)
  else
       n = 0
  endif
   say '    Log Factor: 'n
   if( n<0 ) ; n = n-2 ; endif
   'getint 'n
            n = result
   if( n>0 )
       if( n<=2 )
           n = 0
        else
           n = n+2
        endif
   endif

   if( fixpltfact != NULL )
       'd 'fixpltfact
        n =subwrd(result,4)
   endif

   say 'Diff Scaling Factor: 'n
      'd 'dqmax'/1e'n
       cint = subwrd(result,4)

       if( fixpltcint != NULL )
       'd 'fixpltcint
           fixpltcint =subwrd(result,4)
           cint = fixpltcint
       endif

      'shades 'cint
      'define qzplt = qz/1e'n
       dfact = "10**"n
      'd qzplt'
      'cbarn -snum 0.55 -xmid 4.25 -ymid 0.4'
      'set gxout contour'
      'set clevs -'cint' 'cint
      'set ccolor 1'
*     'set_clevs'
      'd qzplt'
endif

'set dfile 'qfile
'setlats'
'set lon 'lonmin
'set lev 1000 'ptop
'set t 1'

if( CINTDIFF = 'NULL' )
   'draw ylab Pressure (mb)'
endif

'set vpage off'

if( CINTDIFF != 'NULL' )
   'set string 1 l 6 90'
   'set strsiz .17'
   'draw string 0.75 1.8 Pressure (mb)'
endif

'set string 1 l 4 0'
'set strsiz .065'
'draw string 0.05 0.08 ( EXPID:  'expid' )'

'set string 1 c 6'
'set strsiz .13'
'draw string 4.25 10.85 'title

'set strsiz .10'
'draw string 4.25 10.635 'qdesc' 'season' ('nmod')'
'draw string 4.25  7.235 'odesc' 'season' ('nobs') ('climate')'


if( dfact = 1 )
  'draw string 4.25 3.850 Difference (Top-Middle)'
else
  'draw string 4.25 3.850 Difference (Top-Middle) (x 'dfact')'
endif


                date = getdate (begdate)
bmnthm = subwrd(date,1)
byearm = subwrd(date,2)
                date = getdate (enddate)
emnthm = subwrd(date,1)
eyearm = subwrd(date,2)
                date = getdate (begdateo)
bmntho = subwrd(date,1)
byearo = subwrd(date,2)
                date = getdate (enddateo)
emntho = subwrd(date,1)
eyearo = subwrd(date,2)

'set string 1 l 4'
'set strsiz .08'
'draw string 0.10 10.37 Beg: 'bmnthm' 'byearm
'draw string 0.10 10.24 End: 'emnthm' 'eyearm
'draw string 0.10  6.97 Beg: 'bmntho' 'byearo
'draw string 0.10  6.84 End: 'emntho' 'eyearo

if( CINTDIFF != 'NULL' )
   'set strsiz .07'
   'draw string 0.050 1.77 Plot represents'
   'draw string 0.050 1.62 values > 'dqrel' %'
   'draw string 0.050 1.47 Relative Difference'
   'draw string 0.050 1.32 ( DQ/QMax )'
endif

'set string 1 c 6'

if( Lbit = L )
   'myprint -name 'output'/'oname'log'ptop'.'season
else
   'myprint -name 'output'/'oname''ptop'.'season
endif

return

function getdate (date,month,year)
       num = 1
       bit = substr(date,num,1)
while( bit != '' )
       num = num+1
       bit = substr(date,num,1)
endwhile
       loc = num-7
     month = substr(date,loc  ,3)
      year = substr(date,loc+3,4)
return month' 'year

function get_length (string)
tb = ""
i = 1
while (i<=256)
blank = substr(string,i,1)
if( blank = tb )
length = i-1
i = 999
else
i = i + 1
endif
endwhile
return length
