function plt(args)

pl=subwrd(args,1)
if (pl='-h')
  say ' '
  say '  Plots the Vertical Modes Structures (VMS) for the Reference Case csvm'
  say ' '
  say ' Usage:'
  say ' pltf [pl] [stlp]'
  say ' '
  say ' Default: pl = 1 ; stlp = yes'
  say ' '
  say ' Must be runned under grads -p (portrait)'
  say ' '
  say ' args meaning:'
  say ' '
  say ' pl : to stop (=1) or not (!=1) between frames'
  say ' stlp : to put (yes) or not (no) the label A, B, C ... at the figures'
  say ' '
  say ' Obs: Four VMS Frames by Figure'
  say ' '
  return
endif
* To stop (pl=1) or not (pl!=1) between screens
if (pl='') ; pl=1 ; endif
* To put (yes) or Not (no) the label A, B, C ... at the figures.
stlp=subwrd(args,2)
if (stlp='') ; stlp='yes' ; endif

rec=chkmdpt()
if (rec!=0)
  return
endif

* Getting Kmax (number of pressure levels) and csvm (reference case)
'run ../../Config/Case_Dates.gs 'MONAN' 1 'ZCAS' 'no
filecsdt='./Case_Dates.dgs'
rec=read(filecsdt)
lrec=sublin(rec,2)
Kmax=subwrd(lrec,1)
csvm=subwrd(lrec,5)
rec=close(filecsdt)
'!rm -f 'filecsdt
if (Kmax < 100)
  _ResVer='L0'Kmax
else
  _ResVer='L'Kmax
endif

say ' '
say ' csvm = 'csvm' Kmax = 'Kmax'  pl = 'pl'  stlp = 'stlp
say ' '

fcg='dir.cfg'
rec=read(fcg)
lrec=sublin(rec,1)
lrec=sublin(rec,2)
diri=subwrd(lrec,1)
rec=read(fcg)
lrec=sublin(rec,2)
_dirfig=subwrd(lrec,1)%'png_'csvm'/'
rec=close(fcg)

filei='Vertical_Functions_'csvm'.'_ResVer'.ctl'

say ' '
say '  diri = 'diri
say ' filei = 'filei
say ' '

'reinit'

dfilei=diri''filei
rec=chkopfl(dfilei)
if (rec!=0)
  return
endif

'open 'dfilei

'set display color white'
'clear'

vrgn=-0.55 ; vrgx=0.65 ; xli=0.1 ; zlg='on' ; leg='dw' ; legx='rg'
rrcc=pltfn (csvm, Kmax, 1, 2, 3, 4, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'A')

vrgn=-0.51 ; vrgx=0.51 ; xli=0.1 ; zlg='on' ; leg='dw' ; legx='rg'
rrcc=pltfn (csvm, Kmax, 5, 6, 7, 8, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'B')

vrgn=-0.81 ; vrgx=0.61 ; xli=0.2 ; zlg='on' ; leg='dw' ; legx='rg'
rrcc=pltfn (csvm, Kmax,9, 10, 11, 12, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'C')

vrgn=-0.61 ; vrgx=0.61 ; xli=0.2 ; zlg='on' ; leg='up' ; legx='lf'
rrcc=pltfn (csvm, Kmax, 13, 14, 15, 16, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'D')

vrgn=-0.61 ; vrgx=0.61 ; xli=0.2 ; zlg='on' ; leg='up' ; legx='lf'
rrcc=pltfn (csvm, Kmax, 17, 18, 19, 20, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'E')

vrgn=-0.71 ; vrgx=0.71 ; xli=0.2 ; zlg='off' ; leg='up' ; legx='lf'
rrcc=pltfn (csvm, Kmax, 21, 22, 23, 24, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'F')

vrgn=-0.55 ; vrgx=0.55 ; xli=0.1 ; zlg='off' ; leg='up' ; legx='lf'
rrcc=pltfn (csvm, Kmax, 25, 26, 27, 28, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'G')

vrgn=-0.61 ; vrgx=0.55 ; xli=0.1 ; zlg='off' ; leg='up' ; legx='lf'
rrcc=pltfn (csvm, Kmax, 29, 30, 31, 32, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'H')

vrgn=-0.5 ; vrgx=0.55 ; xli=0.1 ; zlg='off' ; leg='up' ; legx='lf'
rrcc=pltfn (csvm, Kmax, 33, 34, 35, 35, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, 'I')

vrgn=-0.61 ; vrgx=0.55 ; xli=0.1 ; zlg='off' ; leg='up' ; legx='lf'
rrcc=pltfn1 (csvm, Kmax, 37, vrgn, vrgx, xli, zlg, pl, stlp, 'J')

return

function pltfn (csvm, Kmax,k1, k2, k3, k4, vrgn, vrgx, xli, zlg, leg, legx, pl, stlp, stl)

k1b=k1-1
k2b=k2-1
k3b=k3-1
k4b=k4-1
if (k1b<10)
  k1a='0'k1b
else
  k1a=k1b
endif
if (k2b<10)
  k2a='0'k2b
else
  k2a=k2b
endif
if (k3b<10)
  k3a='0'k3b
else
  k3a=k3b
endif
if (k4b<10)
  k4a='0'k4b
else
  k4a=k4b
endif

say ' 'k1' 'k2' 'k3' 'k4' 'vrgn' 'vrgx' 'xli' 'zlg' 'leg' 'legx' 'stl

if (k1=1)
say ' '
  say ' 'k1a' - 'k4a'   'stl
else
  if (pl=1)
    say ' '
    say '<ENTER> for next figure'
    pull frame
  endif
  say ' '
  say ' pull : 'k1a' - 'k4a'   'stl
endif
'clear'

'set grads off'
'set xlopts 1 8 0.175'
'set ylopts 1 8 0.175'
if (zlg='on')
  'set ylevs 1000 750 500 300 200 100 50 20 10 3 1 0.3 0.1 0.03 0.01'
endif
'set cthick 8'
'set z 1 'Kmax
'set zlog 'zlg
xp=1.5
xq=8.25
yp=0.75
yq=10.25
say ' set parea 'xp' 'xq' 'yp' 'yq
'set parea 'xp' 'xq' 'yp' 'yq

'set xlint 'xli
'set vrange 'vrgn' 'vrgx
'set x 'k1
'display fn'
'set x 'k2
'display fn'
'set x 'k3
'display fn'
'set x 'k4
'display fn'

if (stlp='yes')
  xr=xq-0.5
  yr=yq-0.5
  'set line 0 1 6'
  'draw recf 'xr' 'yr' 'xq' 'yq
  'set line 1 1 6'
  'draw rec 'xr' 'yr' 'xq' 'yq
  xs=0.5*(xr+xq)
  ys=0.5*(yr+yq)
  'set string 1 c 6'
  'set strsiz 0.175'
  'draw string 'xs' 'ys' `1'stl
endif

'set z 1'
'set x 'k1
'display dn'
dn=subwrd(result,4)
d1=gethn(dn)
say ' 'd1
'set x 'k2
'display dn'
dn=subwrd(result,4)
d2=gethn(dn)
say ' 'd2
'set x 'k3
'display dn'
dn=subwrd(result,4)
d3=gethn(dn)
say ' 'd3
'set x 'k4
'display dn'
dn=subwrd(result,4)
d4=gethn(dn)
say ' 'd4
say ' '

strz=0.175
ds=2.0*strz
if (legx='lf')
xa=xp
xb=xa+11.5*strz
endif
if (legx='rg')
xb=xq
xa=xb-11.5*strz
endif
xl=0.5*(xa+xb)
if (leg='up')
  yb=yq
  y1=yb-strz
  y2=y1-ds
  y3=y2-ds
  y4=y3-ds
  ya=y4-strz
endif
if (leg='md')
  dy=3.0*ds+2.0*strz
  ym=0.5*(yp+yq)
  yb=ym+0.5*dy
  y1=yb-strz
  y2=y1-ds
  y3=y2-ds
  y4=y3-ds
  ya=y4-strz
  yb=yb+ds
  y1=y1+ds
  y2=y2+ds
  y3=y3+ds
  y4=y4+ds
  ya=ya+ds
endif
if (leg='dw')
  ya=yp
  y4=ya+strz
  y3=y4+ds
  y2=y3+ds
  y1=y2+ds
  yb=y1+strz
endif
'set line 0 1 6'
'draw recf 'xa' 'ya' 'xb' 'yb
'set line 1 1 6'
'draw rec 'xa' 'ya' 'xb' 'yb
'set strsiz 'strz
'set string 1 c 6'
'draw string 'xl' 'y1' `1H'k1a'='d1
'set string 3 c 6'
'draw string 'xl' 'y2' `1H'k2a'='d2
'set string 7 c 6'
'draw string 'xl' 'y3' `1H'k3a'='d3
'set string 2 c 6'
'draw string 'xl' 'y4' `1H'k4a'='d4

'draw title `1Vertical Structure: 'csvm''
'draw xlab `1'Kmax' Levels: Modes from 'k1a' to 'k4a
'draw ylab `1Pressure (hPa)'
figname='Vertical_Modes_'k1a'_'k4a'_'csvm'_'_ResVer'.png'
say ' 'figname
fig=_dirfig''figname
'printim 'fig' png white'

return

function pltfn1 (csvm, Kmax, k1, vrgn, vrgx, xli, zlg, pl, stlp, stl)

k1b=k1-1
if (k1b<10)
  k1a='0'k1b
else
  k1a=k1b
endif

say ' 'k1' 'vrgn' 'vrgx' 'xli' 'zlg' 'stl

if (pl=1)
  say ' '
  say '<ENTER> for next figure'
  pull frame
  say ' pull : 'k1a' - 'k1a'   'stl
endif
'clear'

'set grads off'
'set xlopts 1 8 0.175'
'set ylopts 1 8 0.175'
if (zlg='on')
  'set ylevs 1000 750 500 300 200 100 50 20 10 3 1 0.3 0.1 0.03 0.01'
endif
'set cthick 8'
'set z 1 'Kmax
'set zlog 'zlg
if (gmode = 'ls')
  xp=2.0
  xq=8.5
  yp=0.75
  yq=7.75
else
  xp=1.5
  xq=8.25
  yp=0.75
  yq=10.25
endif
'set parea 'xp' 'xq' 'yp' 'yq

'set xlint 'xli
'set vrange 'vrgn' 'vrgx
'set x 'k1
'display fn'

if (stlp='yes')
  xr=xq-0.5
  yr=yq-0.5
  'set line 0 1 6'
  'draw recf 'xr' 'yr' 'xq' 'yq
  'set line 1 1 6'
  'draw rec 'xr' 'yr' 'xq' 'yq
  xs=0.5*(xr+xq)
  ys=0.5*(yr+yq)
  'set string 1 c 6'
  'set strsiz 0.175'
  'draw string 'xs' 'ys' `1'stl
endif

'set z 1'
'set x 'k1
'display dn'
dn=subwrd(result,4)
d1=gethn(dn)
say ' 'd1
say ' '

strz=0.175
ds=2.0*strz
xa=xp
xb=xa+12.5*strz
xl=0.5*(xa+xb)
yb=yq
y1=yb-strz
ya=y1-strz
'set line 0 1 6'
'draw recf 'xa' 'ya' 'xb' 'yb
'set line 1 1 6'
'draw rec 'xa' 'ya' 'xb' 'yb
'set strsiz 'strz
'set string 1 c 6'
'draw string 'xl' 'y1' `1H'k1a' = 'd1

'draw title `1Vertical Structure: 'csvm''
'draw xlab `1'Kmax' Levels: Mode 'k1a
'draw ylab `1Pressure (hPa)'
figname='Vertical_Modes_'k1a'_'k1a'_'csvm'_'_ResVer'.png'
say ' 'figname
fig=_dirfig''figname
'printim 'fig' png white'
return

function gethn(hh)
if (hh>=1000)
fmt='%6.1f'
endif
if (hh>=100 & hh<1000)
fmt='%6.2f'
endif
if (hh>=10 & hh<100)
fmt='%6.3f'
endif
if (hh>=1 & hh<10)
fmt='%6.4f'
endif
if (hh<1)
fmt='%6.4f'
endif
hn=math_format(fmt,hh)
return hn

function chkmdpt()
'query gxinfo'
lm=sublin(result,2)
xb=subwrd(lm,4)
yb=subwrd(lm,6)
rec=0
if (yb < xb)
  say ' '
  say ' Error: must use grads -p (portrait)'
  say ' '
  rec=1
endif
return rec

function chkopfl(file)
res=read(file)
rec=sublin(res,1)
if (rec=0)
   lrec=sublin(res,2)
   dst=subwrd(lrec,1)
   if (dst!='dset') ; rec=1 ; endif
endif
if (rec!=0)
  say ' '
  say ' Error : 'file' does not exist or is not a ctl file'
  say ' '
endif
if (rec=0)
  res=close(file)
endif
return rec
