[gradsusr] GrADS help, plotting shaded contour precip/ptype products over a basemap/background

Stephen McMillan smcmillan at planalytics.com
Mon Nov 8 16:39:06 EST 2010


Jeff,
An examination of your sample GIF image shows your "white" as not perfectly
white (rgb 252 254 252).  I may be wrong, but I don't think GrADS will
recognize it unless defined as such.

Instead of using the default 0 for black/white in your "set ccols...", try
doing it with the black/white defined then use the defined color index as
the transparent color. I've attached an example "precip" map (without a
background) that had white defined 'set rgb 16 255 255 255' then added "-t
16" to the printim string.  The amounts <=0 within the plot area are
transparent.

Stephen Mc

On Mon, Nov 8, 2010 at 2:41 PM, Jeff Chabot <jsc219 at gmail.com> wrote:

> I am using two separate color tables.  For precip:
>
> *Categorical Rain
> set rgb 30 210 180 140
> set rgb 16 107 159 91
> set rgb 17 90 142 75
> set rgb 18 74 125 60
> set rgb 19 58 109 45
> set rgb 20 41 92 19
> set rgb 21 25 75 14
> set rgb 22 253 248 2
> set rgb 23 229 188 0
> set rgb 24 253 149 0
> set rgb 25 253 0 0
> set rgb 26 212 0 0
> set rgb 27 255 0 153
>
> set clevs 0.01 0.05 0.10 0.25 0.50 1.00 2.00 3.00 4.00 5.00
> set ccols 0 16 18 19 20 22 23 24 25 26 27
>
> For precip type:
>
> *Categorical Rain
> set rgb 16 107 159 91
> set rgb 17 90 142 75
> set rgb 18 74 125 60
> set rgb 19 58 109 45
> set rgb 20 41 92 19
> set rgb 21 25 75 14
> set rgb 22 253 248 2
> set rgb 23 229 188 0
> set rgb 24 253 149 0
> set rgb 25 253 0 0
> set rgb 26 212 0 0
> set rgb 27 255 0 153
>
> *Categorical Freezing Rain
> set rgb 28 255 188 188
> set rgb 29 255 172 172
> set rgb 30 255 156 156
> set rgb 31 253 140 140
> set rgb 32 255 124 124
> set rgb 33 255 108 108
> set rgb 34 255 96 96
> set rgb 35 255 80 80
> set rgb 36 255 64 56
> set rgb 37 240 32 128
> set rgb 38 240 16 255
>
> *Categorical Ice Pellets / Mix
> set rgb 39 255 200 0
> set rgb 40 255 180 0
> set rgb 41 255 160 0
> set rgb 42 255 140 0
> set rgb 43 255 124 0
> set rgb 44 255 108 0
> set rgb 45 255 96 0
> set rgb 46 255 80 0
> set rgb 47 255 64 0
> set rgb 48 255 32 0
> set rgb 49 255 16 0
>
> *Categorical Snow
> set rgb 50 4 233 231
> set rgb 51 0 173 255
> set rgb 52 0 148 255
> set rgb 53 0 123 255
> set rgb 54 0 104 255
> set rgb 55 0 85 255
> set rgb 56 4 67 245
> set rgb 57 0 38 255
> set rgb 58 0 14 255
> set rgb 59 0 0 255
> set rgb 60 0 0 223
> set rgb 61 255 255 255
>
> set clevs 0.01 0.05 0.1 0.25 0.5 1 2 3 4 5 10 10.01 10.05 10.1 10.25 10.5
> 11 12
> 13 14 15 20 20.01 20.05 20.1 20.25 20.5 21 22 23 24 25 30 30.01 30.05 30.1
> 30.25
>  30.5 31 32 33 34 35
> set ccols 0 16 18 19 20 22 23 24 25 26 27 0 39 40 41 42 43 44 45 46 47 0 0
> 28 29
>  30 31 32 33 34 35 36 0 0 50 51 52 53 54 55 56 57 58 59
>
> So, Jeff, I believe that I am using #0 correctly.  But, when I do, it just
> uses white or black as the background as in this example:
>
> http://jeffsweatherservice.com/grads/nam/ptype_NE_2.gif
>
> Thanks,
>
>
> Jeff
>
>
>
> On Mon, Nov 8, 2010 at 10:18 AM, <gradsusr-request at gradsusr.org> wrote:
>
>> Send gradsusr mailing list submissions to
>>        gradsusr at gradsusr.org
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>>        http://gradsusr.org/mailman/listinfo/gradsusr
>> or, via email, send a message with subject or body 'help' to
>>        gradsusr-request at gradsusr.org
>>
>> You can reach the person managing the list at
>>        gradsusr-owner at gradsusr.org
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of gradsusr digest..."
>>
>>
>> Today's Topics:
>>
>>   1. GrADS help,       plotting shaded contour precip/ptype products
>>      over a    basemap/background (Jeff Chabot)
>>   2. Re: GrADS help, plotting shaded contour precip/ptype products
>>      over a basemap/background (Jeffrey Duda)
>>   3. Problem with skewt plot using WRF output (Cristian ...)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Mon, 8 Nov 2010 13:51:33 -0500
>> From: Jeff Chabot <jsc219 at gmail.com>
>> Subject: [gradsusr] GrADS help, plotting shaded contour precip/ptype
>>        products over a basemap/background
>> To: gradsusr at gradsusr.org
>> Message-ID:
>>        <AANLkTinKn=eTr6myE00LdycRWRxdyy5e8hpBtf+FgLPz at mail.gmail.com<eTr6myE00LdycRWRxdyy5e8hpBtf%2BFgLPz at mail.gmail.com>
>> >
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Dear GrADS Users,
>> I have been trying to apply a basemap to my precip/ptype shaded contour
>> products on my personal website for some time now.  I have brainstormed
>> and
>> searched the GrADS online documents and have come up with ideas, but they
>> have never worked.  My latest idea was to use Google Maps terrain data as
>> a
>> background to the map.  I thought it was a good idea, but I discovered
>> that
>> I still cannot resolve the issue in that precip = 0 shows either all white
>> or all black depending on what I choose for the background, covering up my
>> basemap.  I really thought the following command would have resolved that
>> issue, but it did not:
>>
>> printim precip_NE_1.png png x570 y435 -b NE.png -t 0 Versions:GrADS: 2.0a9
>> OS: Fedora 13
>> Sample: http://jeffsweatherservice.com/grads/nam/ptype_NE_2.png
>>
>> I know this can be done because of the example:
>>
>> http://wxmaps.org/pix/ez.east.html
>>
>> Any assistance here would be much appreciated.Sincerely,
>>
>>
>> Jeff Chabot
>> Email: jsc219 at gmail.com
>> Web: http://jeffsweatherservice.com
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> http://gradsusr.org/pipermail/gradsusr/attachments/20101108/93f97642/attachment-0001.html
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Mon, 8 Nov 2010 12:57:30 -0600
>> From: Jeffrey Duda <jdduda at iastate.edu>
>> Subject: Re: [gradsusr] GrADS help, plotting shaded contour
>>        precip/ptype products over a basemap/background
>> To: GrADS Users Forum <gradsusr at gradsusr.org>
>> Message-ID:
>>        <AANLkTikPmH-Og0-6uNAi4tpUMCoZbAZ3YTqm_HXkndpV at mail.gmail.com>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Jeff,
>> What color table are you using?  Are you sure you have a #0 color?  I know
>> that's supposed to be the background, but perhaps you are overwriting it
>> with some other color that has the same color as your background but a
>> different color number.
>>
>> Jeff Duda
>>
>
>
>
>>
>> On Mon, Nov 8, 2010 at 12:51 PM, Jeff Chabot <jsc219 at gmail.com> wrote:
>>
>> > Dear GrADS Users,
>> > I have been trying to apply a basemap to my precip/ptype shaded contour
>> > products on my personal website for some time now.  I have brainstormed
>> and
>> > searched the GrADS online documents and have come up with ideas, but
>> they
>> > have never worked.  My latest idea was to use Google Maps terrain data
>> as a
>> > background to the map.  I thought it was a good idea, but I discovered
>> that
>> > I still cannot resolve the issue in that precip = 0 shows either all
>> white
>> > or all black depending on what I choose for the background, covering up
>> my
>> > basemap.  I really thought the following command would have resolved
>> that
>> > issue, but it did not:
>> >
>> > printim precip_NE_1.png png x570 y435 -b NE.png -t 0 Versions:GrADS:
>> 2.0a9
>> > OS: Fedora 13
>> > Sample: http://jeffsweatherservice.com/grads/nam/ptype_NE_2.png
>> >
>> > I know this can be done because of the example:
>> >
>> > http://wxmaps.org/pix/ez.east.html
>> >
>> > Any assistance here would be much appreciated. Sincerely,
>> >
>> >
>> > Jeff Chabot
>> > Email: jsc219 at gmail.com
>> > Web: http://jeffsweatherservice.com
>> >
>> >
>> > _______________________________________________
>> > gradsusr mailing list
>> > gradsusr at gradsusr.org
>> > http://gradsusr.org/mailman/listinfo/gradsusr
>> >
>> >
>>
>>
>> --
>> Jeff Duda
>> Iowa State University
>> Meteorology Graduate Student
>> 3134 Agronomy Hall
>> www.meteor.iastate.edu/~jdduda <http://www.meteor.iastate.edu/%7Ejdduda>
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> http://gradsusr.org/pipermail/gradsusr/attachments/20101108/159827b2/attachment-0001.html
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Mon, 8 Nov 2010 16:23:09 -0300
>> From: "Cristian ..." <galenso85 at hotmail.com>
>> Subject: [gradsusr] Problem with skewt plot using WRF output
>> To: <gradsusr at gradsusr.org>
>> Message-ID: <SNT112-W63DF5D09C452E1C6FB44FBF4F0 at phx.gbl>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>>
>> Hello,
>>
>> My name is Cristian. I am having some troubles to perform some skewt
>> graphics using WRF output.
>> I have created a binary and .ctl archives using ARWpost.
>> The file is OK, and no troubles are expected.
>>
>> The problem starts when I want to create a skewt graphic.
>> The temperature and dewpoint profiles are OK, but no information about
>> wind is shown. Neither the Hodograpf, nor the wind speed and direction
>> profiles are shown.
>>
>> No message of an error apears, and i have no idea what is happening.
>> Even the undef value is th same as the .ctl archive.
>>
>> I am using Grads version 1.a8, in UBUNTU 9.04.
>>
>> Here is the script. I only changed parameters at the top of the archive.
>>
>> I really appreciate your help.
>>
>> Thanks
>>
>>
>> -----------------------------------------------------------------------------------------------------------------------------------------
>> * Script para construir radiosondeos
>>
>> 'reinit'
>> 'run /home/cristian/Escritorio/Experimentos/lib/jaecol'
>> 'set display color white'
>> 'reset'
>>
>> * Defino el archivo a utilizar
>>
>> 'open 20081004_YSU.ctl'
>> *path=''
>>
>> * Latitud Longitud y tiempo
>>
>> lat=-46
>> lon=-68
>> time=12z04Oct2008
>>
>>
>> 'set time 'time
>> 'set lon 'lon
>> 'set lat 'lat
>>
>> *Entre que niveles hace el perfil hacerlo entre 1000 y 600
>>
>> levmax=925
>> levmin=500
>>
>> 'set lev  'levmax ' ' levmin
>>
>> *calculo Td a partir de HR, P y T
>> *'define et=(-2937.4/(t))-(4.9283*log10(t))+22.5518'
>> *'define es=pow(10,et)*10'
>> *'define e=es*0.01*hr'
>> *'define q=0.622*e/(lev-e)'
>> *'define aux1=q*1000*(1.+0.81*q)'
>> *'define aux2=0.2854*(1.-0.28*q)'
>> *'define aux3=(1000/lev)'
>> *'define td=243.5/((17.67/(log(e/6.11)))-1)'
>> *'define tc=t-273'
>>
>> 'set ylopts 1 5 0.18'
>>
>> plotskew(tc,td,u,v)
>>
>> 'q dims'
>> line1=sublin(result,4)
>> line2=sublin(result,5)
>> itime1=subwrd(line1,6)
>> itit=substr(itime1,1,6)
>> itime1=subwrd(line2,6)
>> itime=substr(itime1,1,12)
>> d=substr(itime1,4,2)
>> m=substr(itime1,6,3)
>> y=substr(itime1,9,4)
>> h=substr(itime1,1,2)
>> lati=-1*lat
>> loni=-1*lon
>>
>> 'draw title Perfil vertical de T y Td en 'lati'S y 'loni'W\'itime
>> 'printim 'd'.'h'sondeo.png png x600 y800 white'
>>
>> function plotskew(sndtemp,snddewp,u,v)
>>
>> *El valor Undef que se coloca ac? debe coincidir con el valor undef del
>> CTL, sin? hay problemas
>> *en la construcci?n de la hod?grafa y del perfil vertical de viento.
>> undef=1.e30
>> *************************************************************************
>> *
>> * GrADS Script to Plot a SkewT/LogP Diagram
>> *
>> * Bob Hart
>> * Penn State University / Dept of Meteorology
>> * Last Update:  January 23, 2001
>> *
>> * Recent Changes:
>> *
>> * 01/23/01 - Fixed a small bug in the theta-e calculation.
>> *            Errors averaged 0.5-3K.  Thank you George Bryan.
>> *
>> * 11/10/99 - Change in calculation method for CAPE/CIN.  Trapezoid
>> *            integration method is now used.  Speeds up execution
>> *            by 25%, and increases accuracy by 5-10%.
>> *
>> * 10/18/99 - Minor glitch fixed that occasionally caused crash.
>> *
>> *  8/26/99 - Datasets with missing data can now be used.
>> *
>> * Features:
>> *   - All features of standard skewt/logp plot
>> *   - RH sounding
>> *   - LCL location
>> *   - Parcel trajectory for both sfc based convection and elevated from
>> *     most unstable level (highest theta-e level reported)
>> *   - Stability indices and precipitable water calculations
>> *   - CAPE & CIN Calculations
>> *   - Wind Profile
>> *   - Hodograph / Hodograph scaling
>> *   - Helicity and SR Helicity Calculations and Display
>> *   - Color aspects of output
>> *   - Line Thickness, style aspects of output
>> *   - Can be run in either PORTRAIT or LANDSCAPE mode.
>> *
>> * There are numerous tunable parameters below to change the structure
>> * and output for the diagram.
>> *
>> * Function Arguments:
>> *    sndtemp - temperature data (Celsius) as a function of pressure
>> *    snddewp - dewpoint data (Celsius) as a function of pressure
>> *    sndspd  - wind speed data (knots) as a function of pressure
>> *    snddir  - wind direction data as a function of pressure
>> *
>> * Use '-1' for any of the above 4 arguments to indicate that you
>> * are not passing that variable.  The appropriate options will
>> * be ignored based on your specifying '-1' for that variable.
>> *
>> * NOTE:  Make sure to set the vertical range of the plot before running.
>> *        I.e., "SET LEV 1050 150", for example.   This does not have to
>> *        be limited to the pressure range of your data.
>> *
>> * Labelling:  Pressure/Height is labelled along left side.  Temperature is
>> *             labelled along bottom.  Mixing ratio is labelled along right
>> *             side/top.
>> *
>> *
>> * PROBLEMS:  First check out the web page for the script (which also
>> *            has a link to a FAQ with answers to many common questions
>> *            about using the script):
>> *            http://www.ems.psu.edu/~hart/skew.html<http://www.ems.psu.edu/%7Ehart/skew.html>
>> *
>> * Please send any further problems, comments, or suggestions to
>> * <hart at ems.psu.edu>
>> *
>> * ACKNOWLEDGMENTS:  Thanks go to the innumerable users who have helped
>> * fine tune the script from the horrible mess from which it began.
>> * In particular, thanks go out to Steve Lord (NCEP), Mike Fiorino (ECMWF),
>> * George Bryan (PSU), Davide Sacchetti (CMIRL), and Enrico Minguzzi
>> (CMIRL).
>> *
>> **************************************************************************
>> *           !!!!!   BEGINNING OF USER-SPECIFIED OPTIONS  !!!!!!
>> **************************************************************************
>> *
>> * --------------------- Initialization options  ----------------------
>> *
>> * ClrScrn = Whether to clear the screen before drawing diagram
>> *           [1 = yes, 0 = no]
>>
>> ClrScrn = 1
>>
>> *
>> * ------------------- Define Skew-T Diagram Shape/Slope-----------------
>> *
>> * (P1,T1) = Pres, Temp of some point on left-most side
>> * (P2,T2) = Pres, Temp of some point on right-most side
>> * (P3,T3) = Pres, Temp of some point in diagram which is mid-point
>> *           in the horizontal between 1 and 2.
>> *
>> * P1, P2, P3 are in mb ; T1, T2, T3 are in Celsius
>> *
>> * These define the SLOPE and WIDTH of the diagram as you see it but DO NOT
>> * DEFINE THE HEIGHT of the diagram as you see it.  In other words,
>> * 1 and 2 do NOT necessarily need to be at the bottom of the diagram and
>> * 3 does NOT necessarily need to be at the top.  THE VERTICAL PRESSURE
>> * RANGE OF THE SKEWT AS YOU SEE IT IS DETERMINED BY YOUR 'SET Z ...'
>> * COMMAND OR THE 'SET LEV ...' COMMAND BEFORE RUNNING THIS SCRIPT.
>> *
>> *    _______________________
>> *   |                       |
>> *   |                       |
>> *   |           3           |
>> *   |                       |
>> *   |                       |
>> *   |                       |
>> *   |                       |
>> *   |                       |
>> *   |                       |
>> *   |                       |
>> *   |                       |
>> *   |1                     2|
>> *   |                       |
>> *   |_______________________|
>> *
>> *
>> * A good set of defining points are given below.   Feel free
>> * to experiment with variations.
>>
>>
>> *P1 = 1000
>> *T1 = -40
>>
>> *P2 = 1000
>> *T2 = 40
>>
>> *P3 = 200
>> *T3 = 0
>>
>> * Another good set of defining points suggested by Juan Ruiz (Emagrama)
>> * are:
>> *
>>  P1 = 1000
>>  T1 = -80
>> *
>>  P2 = 1000
>>  T2 = 40
>> *
>>  P3 = 500
>>  T3 = -20
>>
>> * ------------------- Contour Intervals / Levels
>> --------------------------
>> *
>> * All variables below are contour intervals/levels for diagram
>> *
>> * Thetaint = interval for potential temperature lines
>> * Thetwint = interval for moist pseudo adiabats
>> * tempint  = interval for temperature lines
>> * wsclevs  = contour LEVELS for mixing ratio lines
>> *
>> *
>> thetaint= 20
>> thetwint= 10
>> tempint = 10
>> wsclevs = ".1 .5 1 3 6 10 15 20 25 30"
>> *
>> *
>> * ------------------------ Output Options --------------------------------
>> *
>> * All variables below are logical .. 1=yes, 0=no, unless otherwise
>> * specified.
>> *
>> * DrawBarb = Draw wind barbs along right side of plot
>> * DrawThet = Draw dry adiabats
>> * DrawThtw = Draw moist pseudo-adiabats
>> * DrawTemp = Draw temperature lines
>> * DrawMix  = Draw mixing ratio lines
>> * DrawTSnd = Draw temperature sounding
>> * DrawDSnd = Draw dewpoint sounding
>> * DrawRH   = Draw relative humidity sounding
>> * DrawPrcl = Draw parcel path from surface upward
>> * DrawPMax = Draw parcel path from most unstable level upward
>> * DrawIndx = Display stability indices & CAPE
>> * DrawHeli = Calculate and display absolute and storm-relative helicity
>> * DrawHodo = Draw hodograph
>> * DrawPLev = Draw Pressure Levels
>> * DrawZLev = Draw height levels and lines
>> *            0 = no lines
>> *            1 = above ground level (AGL)
>> *            2 = above sea level (ASL)
>> * DrawZSTD = Draw Height levels using standard atm lapse rate
>> * LblAxes  = Label the x,y axes (temperature, pressure,mixing ratio)
>> *
>> * ThtwStop = Pressure level at which to stop drawing Theta-w lines
>> * MixStop  = Pressure level at which to stop drawing Mixratio lines
>>
>> DrawBarb= 1
>> DrawThet= 1
>> DrawThtw= 1
>> DrawTemp= 1
>> DrawMix = 1
>> DrawTSnd= 1
>> DrawDSnd= 1
>> DrawRH  = 0
>> DrawPrcl= 1
>> DrawPMax= 1
>> DrawIndx= 1
>> DrawHeli= 0
>> DrawHodo= 1
>> DrawPLev= 1
>> DrawZLev= 0
>> DrawZSTD= 0
>> LblAxes = 1
>>
>> ThtwStop = 200
>> MixStop  = 400
>>
>>
>> *
>> * -----------------  Sounding Geography options ------------------------
>> *
>> * SfcElev = Elevation above sea-level (meters) of lowest level reported
>> *           in sounding.  Used only if DrawZLev = 2
>>
>> SfcElev = 0
>>
>>
>> *
>> * ------------------ Thermodynamic Index Options --------------------
>> *
>> * All variables here are in inches.  Use -1 for the default values.
>> *
>> *  Text1XC = X-location of midpoint of K,TT,PW output box
>> *  Text1YC = Y-location of midpoint of K,TT,PW output box
>> *  Text2XC = X-Location of midpoint of surface indices output box
>> *  Text2YC = Y-location of midpoint of surface indices output box
>> *  Text3XC = X-Location of midpoint of most unstable level-based indices
>> *            output box
>> *  Text3YC = Y-location of midpoint of most unstable level-based indices
>> *            output box
>>
>> Text1XC = -1
>> Text1YC = -1
>> Text2XC = -1
>> Text2YC = -1
>> Text3XC = -1
>> Text3YC = -1
>>
>> *
>> * ----------------- Wind Barb Profile Options ----------------------------
>> *
>> * All variables here are in units of inches, unless otherwise specified
>> *
>> *  barbint = Interval for plotting barbs (in units of levels)
>> *  poleloc = X-Location of profile.  Choose -1 for the default.
>> *  polelen = Length of wind-barb pole
>> *  Len05   = Length of each 5-knot barb
>> *  Len10   = Length of each 10-knot barb
>> *  Len50   = Length of each 50-knot flag
>> *  Wid50   = Width of base of 50-knot flag
>> *  Spac50  = Spacing between 50-knot flag and next ror occurred on
>> libarb/flag
>> *  Spac10  = Spacing between 10-knot flag and next flag
>> *  Spac05  = Spacing between 5-knot flag and next flag
>> *  Flagbase= Draw flagbase (filled circle) for each windbarb [1=yes, 0
>> =no]
>> *  Fill50  = Solid-fill 50-knot flag [1=yes, 0=no]
>> *  barbline= Draw a vertical line connecting all the wind barbs [1=yes,
>> 0=no]
>> *
>> barbint = 1
>> poleloc = -1
>> polelen = 0.35
>> len05   = 0.07
>> len10   = 0.15
>> len50   = 0.15
>> wid50   = 0.06
>> spac50  = 0.07
>> spac10  = 0.05
>> spac05  = 0.05
>> Fill50  = 1
>> flagbase= 1
>> barbline= 1
>>
>> *
>> *
>> *---------------- Hodograph Options -------------------------------------
>> *
>> * All variables here are in units of inches, unless otherwise specified
>> *
>> * HodXcent= x-location of hodograph center.  Use -1 for default location.
>> * HodYcent= y-location of hodograph center.  Use -1 for default location.
>> * HodSize = Size of hodograph in inches
>> * NumRing = Number of rings to place in hodograph (must be at least 1)
>> * HodRing = Wind speed increment of each hodograph ring
>> * HodoDep = Depth (above lowest level in mb) of end of hodograph trace
>> * TickInt = Interval (in kts) at which tick marks are drawn along the axes
>> *           Use 0 for no tick marks.
>> * TickSize= Size of tick mark in inches
>> * Text4XC = X-location of midpoint of hodograph text output. Use -1 for
>> default.
>> * Text4YC = Y-location of midpoint of hodograph text output. Use -1 for
>> default.
>>
>> HodXcent= 6
>> HodYcent= 9
>> HodSize = 2
>> NumRing = 3
>> HodRing = 10
>> HodoDep = 500
>> TickInt = 5
>> TickSize= 0.1
>> Text4XC = -1
>> Text4YC = -1
>>
>> *--------------- Helicity Options ---------------------------------------
>> *
>> * MeanVTop = Top pressure level (mb) of mean-wind calculation
>> * MeanVBot = Bottom pressure level (mb) of mean-wind calculation
>> * HelicDep = Depth in mb (above ground) of helicity integration
>> * StormMot = Type of storm motion estimation scheme.  Use following:
>> *            0 = No departure from mean wind.
>> *            1 = Davies-Jones (1990) approach
>> * FillArrw = Whether to fill the arrowhead of the storm motion vector
>> *            [1 = yes, 0 = no]
>>
>> MeanVTop= 300
>> MeanVBot= 850
>> HelicDep= 300
>> StormMot= 0
>> FillArrw= 1
>>
>> *
>> *---------------- Color Options ------------------------------------------
>> *
>> * ThetCol = Color of dry adiabats
>> * TempCol = Color of temperature lines
>> * MixCol  = Color of mixing ratio lines
>> * ThtwCol = Color of moist adiabats
>> * TSndCol = Color of Temperature Sounding
>> * DSndCol = Color of Dewpoint Sounding
>> * RHCol   = Color of RH Sounding
>> * PrclCol = Color of parcel trace
>> * BarbCol = Color of wind barbs (choose -1 for color according to speed)
>> * HodoCol = Color of hodograph trace
>>
>> ThetCol = 23
>> TempCol = 79
>> MixCol  = 38
>> ThtwCol = 39
>> TSndCol = 29
>> DSndCol = 49
>> RHCol   = 3
>> PrclCol = 1
>> BarbCol = 1
>> HodoCol = 2
>>
>> *
>> *-------------------- Line Style Options
>> ------------------------------------
>> *
>> * GrADS Styles: 1=solid;2=long dash;3=short dash;4=long,short dashed;
>> *               5=dotted;6=dot dash;7=dot dot dash
>> *
>> * ThetLine = Line Style of dry adiabats
>> * TempLine = Line Style of temperature lines
>> * MixLine  = Line Style of mixing ratio lines
>> * ThtwLine = Line Style of moist adiabats
>> * TSndLine = Line Style of Temperature Sounding
>> * DSndLine = Line Style of Dewpoint Sounding
>> * RHLine   = Line Style of RH sounding
>> * PrclLine = Line Style of parcel trace
>> * HodoLine = Line Style of hodograph trace
>> *
>>
>> ThetLine = 1
>> TempLine = 1
>> MixLine  = 5
>> ThtwLine = 2
>> TSndLine = 1
>> DSndLine = 2
>> RHLine   = 1
>> PrclLine = 3
>> HodoLine = 1
>>
>> *
>> *------------------- Line Thickness
>> Options---------------------------------
>> * GrADS Line Thickness: increases with increasing number. Influences
>> *                       hardcopy output more strongly than screen output.
>> *
>> *
>> * ThetThk = Line Thickness of dry adiabats
>> * TempThk = Line Thickness of temperature lines
>> * MixThk  = Line Thickness of mixing ratio lines
>> * ThtwThk = Line Thickness of moist adiabats
>> * TSndThk = Line Thickness of temperature sounding
>> * DSndThk = Line thickness of dewpoint sounding
>> * RHThk   = Line thickness of RH sounding
>> * PrclThk = Line thickness of parcel trace
>> * HodoThk = Line thickness of hodograph trace
>> * BarbThk = Line thickness of wind barbs
>>
>> ThetThk = 3
>> TempThk = 1
>> MixThk  = 7
>> ThtwThk = 3
>> TSndThk = 12
>> DSndThk = 12
>> RHThk   = 8
>> PrclThk = 6
>> HodoThk = 6
>> BarbThk = 2
>>
>> *
>> *------------------- Data Point Marker Options
>> -----------------------------
>> * GrADS Marker Types: 0 = none ; 1 = cross ; 2 = open circle ;
>> *                     3 = closed circle ; 4 = open square ; 5 = closed
>> square
>> *                     6 = X ; 7 = diamond ; 8 = triangle ; 9 = none
>> *                    10 = open circle with vertical line ; 11 = open oval
>> *
>> * TSndMrk = Mark type of data point marker for temperature sounding
>> * DSndMrk = Mark type of data point marker for dewpoint sounding
>> * RHMrk   = Mark type of data point marker for relative humidity sounding
>> * MrkSize = Mark size (inches) of each data marker
>>
>> TSndMrk = 3
>> DSndMrk = 3
>> RHMrk   = 0
>> MrkSize = 0.1
>>
>>
>> * !!!!! YOU SHOULD NOT NEED TO CHANGE ANYTHING BELOW HERE !!!!!
>>
>> ****************************************************************************
>>
>> *-------------------------------------------
>> * grab user-specified environment dimensions
>> *-------------------------------------------
>>
>> "q dims"
>> rec=sublin(result,2)
>> _xtype=subwrd(rec,3)
>> _xval=subwrd(rec,9)
>> rec=sublin(result,3)
>> _yval=subwrd(rec,9)
>> _ytype=subwrd(rec,3)
>> rec=sublin(result,4)
>> _ptype=subwrd(rec,3)
>> _pmax=subwrd(rec,6)
>> _pmin=subwrd(rec,8)
>> _zmin=subwrd(rec,11)
>> _zmax=subwrd(rec,13)
>> rec=sublin(result,5)
>> _ttype=subwrd(rec,3)
>> _tval=subwrd(rec,9)
>>
>> "q file"
>> rec=sublin(result,5)
>> _zmaxfile=subwrd(rec,9)
>>
>> *-------------------------------------------------------------
>> * Check to ensure that dimensions are valid.  Warn & exit if not.
>> *--------------------------------------------------------------
>>
>> dimrc=0
>> If (_xtype != "fixed")
>>  say "X-Dims Error:  Not fixed.  Use 'set lon' or 'set x' to specify a
>> value."
>>  dimrc=-1
>> Endif
>>
>> If (_ytype != "fixed")
>>  say "Y-Dims Error:  Not fixed.  Use 'set lat' or 'set y' to specify a
>> value"
>>  dimrc=-1
>> Endif
>>
>> If (_ptype != "varying")
>>   say "Z-Dims Error:  Not varying.  Use 'set lev' or 'set z' to specify a
>> range."
>>   dimrc=-1
>> Endif
>>
>> If (_ttype != "fixed")
>>  say "Time Error:     Not fixed.  Use 'set time' or 'set t' to specify a
>> value"
>>  dimrc=-1
>> Endif
>>
>>
>> If (dimrc < 0)
>>  Return(-1)
>> Endif
>>
>>
>> *
>> * A few global variables used in units conversion
>> *
>>
>> _pi=3.14159265
>> _dtr=_pi/180
>> _rtd=1/_dtr
>> _ktm=0.514444
>> _mtk=1/_ktm
>>
>> * A few global constants used in thermo calcs
>>
>> _C0=0.99999683
>> _C1=-0.90826951/100
>> _C2= 0.78736169/10000
>> _C3=-0.61117958/1000000
>> _C4= 0.43884187/pow(10,8)
>> _C5=-0.29883885/pow(10,10)
>> _C6= 0.21874425/pow(10,12)
>> _C7=-0.17892321/pow(10,14)
>> _C8= 0.11112018/pow(10,16)
>> _C9=-0.30994571/pow(10,19)
>>
>> *Calculo la direcci?n e intensidad del viento usando las funciones GetWdir
>> y GetWsp
>>
>>
>>
>>
>>
>>
>> * A pressure array of power calculations which should be performed
>> * only once to reduce execution time.
>>
>> zz=1100
>> while (zz > 10)
>>    subscr=zz/10
>>    _powpres.subscr=pow(zz,0.286)
>>    zz=zz-10
>> endwhile
>>
>> *
>> * Turn off options not available due to user data limitations
>> *
>>
>> If (ClrScrn = 1)
>>  "clear"
>> Endif
>>
>> If (sndspd = -1 | snddir = -1)
>>  DrawBarb = 0
>>  DrawHodo = 0
>>  DrawHeli = 0
>> Endif
>>
>> If (snddewp = -1)
>>  DrawDSnd = 0
>>  DrawRH   = 0
>>  DrawPrcl = 0
>>  DrawPMax = 0
>>  DrawIndx = 0
>> Endif
>>
>> If (sndtemp = -1)
>>  DrawTSnd = 0
>>  DrawRH   = 0
>>  DrawPrcl = 0
>>  DrawPMax = 0
>>  DrawIndx = 0
>>  DrawZLev = 0
>> Endif
>>
>> If (NumRing < 1)
>>  DrawHodo = 0
>> Endif
>>
>> "q gxinfo"
>> rec=sublin(result,2)
>> xsize=subwrd(rec,4)
>>
>> If (xsize = 11)
>>   PageType = "Landscape"
>> Else
>>   PageType = "Portrait"
>> Endif
>>
>> *------------------------------------------------------
>> * calculate constants determining slope/shape of diagram
>> * based on temp/pressure values given by user
>> *-------------------------------------------------------
>>
>> "set x 1"
>> "set y 1"
>> "set z 1"
>> "set t 1"
>> _m1=(T1+T2-2*T3)/(2*log10(P2/P3))
>> _m2=(T2-T3-_m1*log10(P2/P3))/50
>> _m3=(T1-_m1*log10(P1))
>>
>> "set z "_zmin" "_zmax
>> "set zlog on"
>> "set xlab off"
>>
>> *-------------------------------------------------
>> * perform coordinate transformation to Skew-T/LogP
>> *-------------------------------------------------
>>
>> "set gxout stat"
>> "set x "_xval
>> "set y "_yval
>> "set t "_tval
>> "define tempx=("sndtemp"-"_m1"*log10(lev)-"_m3")/"_m2
>> "define dewpx=("snddewp"-"_m1"*log10(lev)-"_m3")/"_m2
>>
>> If (PageType = "Portrait")
>>   "set parea 0.7 7 0.75 10"
>> Else
>>   "set parea 0.7 6.5 0.5 8"
>> Endif
>>
>> "set axlim 0 100"
>> "set lon 0 100"
>> "set grid on 1 1"
>>
>> "set z "_zmin " " _zmax
>> "set lon 0 100"
>> "set clevs -900"
>> "set gxout contour"
>>
>> *-------------------------------------
>> * Draw pressure lines
>> *-------------------------------------
>>
>> If (DrawPLev = 0)
>>   "set ylab off"
>> Else
>>   "set ylab on"
>>   "set ylopts 1 5 0.18"
>>   "set xlopts 1 3 0.18"
>> Endif
>>
>> "d lon"
>>
>> *--------------------------------------
>> * Determine corners of skewt/logp frame
>> *--------------------------------------
>>
>> "q w2xy 100 "_pmin
>> rxloc=subwrd(result,3)
>> tyloc=subwrd(result,6)
>> "q w2xy 0 "_pmax
>> lxloc=subwrd(result,3)
>> byloc=subwrd(result,6)
>>
>> If (DrawPLev = 1 & LblAxes = 1)
>>   "set strsiz 0.15"
>>   "set string 1 c 3 0"
>>   If (PageType = "Portrait")
>> * "draw string 0.5 10.5 hPa."
>>   Else
>>      "draw string 0.5 8.35 hPa."
>>   Endif
>> Endif
>>
>> *---------------------------------------------------
>> * Calculate & draw actual height lines using temp data
>> *---------------------------------------------------
>>
>> If (DrawZLev > 0)
>>   say "Calculating observed height levels from temp/pressure data."
>>   zz=1
>>   "set gxout stat"
>>   "set x "_xval
>>   "set y "_yval
>>   "set t "_tval
>>   count=0
>>   while (zz < _zmax)
>>      "set z "zz
>>      pp.zz=subwrd(result,4)
>>      lpp.zz=log(pp.zz)
>>      "d "sndtemp
>>      rec=sublin(result,8)
>>      tt=subwrd(rec,4)
>>      if (tt > -900)
>>         tk=tt+273.15
>>         count=count+1
>>         zzm=zz-1
>>         If (count = 1)
>>            If (DrawZLev = 2)
>>               htlb="ASL"
>>               height.zz=SfcElev
>>            Else
>>               htlb="AGL"
>>               height.zz=0
>>            Endif
>>            sfcz=height.zz
>>         Else
>>
>>  DZ=29.2857*(lpp.zzm-lpp.zz)*(lpp.zz*tk+lpp.zzm*tkold)/(lpp.zz+lpp.zzm)
>>            height.zz=height.zzm+DZ
>>            highz=height.zz
>>         Endif
>>      else
>>         height.zz = -9999
>>      endif
>>      tkold=tk
>>      zz=zz+1
>>   endwhile
>>
>>   maxht=int(highz/1000)
>>   if (int(sfcz/1000) = sfcz/1000)
>>      minht=int(sfcz/1000)
>>   else
>>      minht=1+int(sfcz/1000)
>>   endif
>>
>>   ht=minht
>>   "set line 1 3 1"
>>   "set strsiz 0.10"
>>   "set string 1 l 3 0"
>>   while (ht <= maxht)
>>       zz=1
>>       while (height.zz/1000 <= ht)
>>          zz=zz+1
>>       endwhile
>>       zzm=zz-1
>>       PBelow=pp.zzm
>>       PAbove=pp.zz
>>       HBelow=height.zzm
>>       HAbove=height.zz
>>       DZ=HAbove-HBelow
>>       DP=PAbove-PBelow
>>       Del=ht*1000-HBelow
>>       Est=PBelow+Del*DP/DZ
>>       If (Est >= _pmin & Est <= _pmax)
>>          "q w2xy 1 " Est
>>          yloc=subwrd(result,6)
>>          "draw line " lxloc " " yloc " " rxloc " " yloc
>>          "draw string 0.22 "yloc-0.05" "ht
>>       Endif
>>       ht=ht+1
>>   endwhile
>>   "set strsiz 0.10"
>>   "set string 1"
>>   If (LblAxes = 1)
>>      If (PageType = "Portrait")
>>         "draw string 0.25 10.85 km"
>>         "draw string 0.25 10.75 "htlb
>>         "draw string 0.25 10.65 OBS"
>>      Else
>>         "draw string 0.25 8.35 km"
>>         "draw string 0.25 8.25 "htlb
>>         "draw string 0.25 8.15 OBS"
>>      Endif
>>   Endif
>> Endif
>>
>>
>> *---------------------------------------------------
>> * Draw height levels (height above MSL using Std Atm)
>> *---------------------------------------------------
>>
>> If (DrawZSTD = 1)
>>   "set strsiz 0.10"
>>   minht=30.735*(1-pow(_pmax/1013.26,0.287))
>>   minht=int(minht+0.5)
>>   maxht=30.735*(1-pow(_pmin/1013.26,0.287))
>>   maxht=int(maxht)
>>   "set gxout stat"
>>   zcount=minht
>>   while (zcount <= maxht)
>>      plev=1013.26*pow((1-zcount/30.735),3.4843)
>>      "q w2xy 0 "plev
>>      yloc=subwrd(result,6)
>>      "draw string 0 "yloc-0.05" "zcount
>>      zcount=zcount+1
>>   endwhile
>>   "set strsiz 0.10"
>>   If (LblAxes = 1)
>>      If (PageType = "Portrait")
>>         "draw string 0 10.85 km"
>>         "draw string 0 10.75 ASL"
>>         "draw string 0 10.65 STD"
>>      Else
>>         "draw string 0 8.35 km"
>>         "draw string 0 8.25 ASL"
>>         "draw string 0 8.15 STD"
>>      Endif
>>  Endif
>> Endif
>>
>>
>> *-----------------------
>> * Plot temperature lines
>> *-----------------------
>>
>> If (DrawTemp = 1)
>>   "set strsiz 0.1"
>>   "set z "_zmin " " _zmax
>>   "set line "TempCol " " TempLine " "TempThk
>>   "set string 1 c 3 0"
>>   "set gxout stat"
>>   maxtline=GetTemp(100,_pmax)
>>   mintline=GetTemp(0,_pmin)
>>
>>   maxtline=tempint*int(maxtline/tempint)
>>   mintline=tempint*int(mintline/tempint)
>>
>>   tloop=mintline
>>   While (tloop <= maxtline)
>>       Botxtemp=GetXLoc(tloop,_pmax)
>>       "q w2xy "Botxtemp " " _pmax
>>       Botxloc=subwrd(result,3)
>>       Botyloc=byloc
>>       Topxtemp=GetXLoc(tloop,_pmin)
>>        "q w2xy "Topxtemp " " _pmin
>>       Topxloc=subwrd(result,3)
>>       Topyloc=tyloc
>>       If (Botxtemp <= 100 | Topxtemp <= 100)
>>          If (Topxtemp > 100)
>>             Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)
>>             b=Topyloc-Slope*Topxtemp
>>             Topyloc=Slope*100+b
>>             Topxloc=rxloc
>>          Endif
>>          If (Botxtemp < 0)
>>             Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)
>>             b=Botyloc-Slope*Botxtemp
>>             Botyloc=b
>>             Botxloc=lxloc
>>          Else
>>             "set strsiz 0.15"
>>             "draw string " Botxloc-0.05 " " Botyloc-0.15 " " tloop
>>          Endif
>>          "draw line "Botxloc " " Botyloc " " Topxloc " " Topyloc
>>       Endif
>>       tloop=tloop+tempint
>>   EndWhile
>>   If (LblAxes = 1)
>>      "set strsiz 0.15"
>>      "set string 1 c"
>>      If (PageType = "Portrait")
>>         "draw string 4.0 0.35 Temperatura (`3.`0C)"
>>         "draw string 7.7 0.35 Viento m/s "
>>      Else
>>         "draw string 3.5 0.15 Temperatura (`3.`0C)"
>>      Endif
>>   Endif
>> Endif
>>
>>
>> *------------------
>> * Plot dry adiabats
>> *------------------
>>
>> If (DrawThet = 1)
>>   temp=GetTemp(100,_pmin)
>>   maxtheta=GetThet2(temp,-100,_pmin)
>>   maxtheta=thetaint*int(maxtheta/thetaint)
>>   temp=GetTemp(0,_pmax)
>>   mintheta=GetThet2(temp,-100,_pmax)
>>   mintheta=thetaint*int(mintheta/thetaint)
>>
>>   "set lon 0 100"
>>   "set y 1"
>>   "set z 1"
>>   tloop=mintheta
>>   "set line "ThetCol" "ThetLine " "ThetThk
>>   While (tloop <= maxtheta)
>>     PTemp=LiftDry(tloop,1000,_pmin,1,_pmin,_pmax)
>>     tloop=tloop+thetaint
>>   Endwhile
>> Endif
>>
>> *------------------------
>> * Plot mixing ratio lines
>> *------------------------
>>
>> If (DrawMix = 1)
>>   If (MixStop < _pmin)
>>      MixStop = _pmin
>>   Endif
>>   "set string 1 l"
>>   "set z "_zmin " " _zmax
>>   "set cint 1"
>>   "set line "MixCol" " MixLine " "MixThk
>>   cont = 1
>>   mloop=subwrd(wsclevs,1)
>>   count = 1
>>   While (cont = 1)
>>       BotCoef=log(mloop*_pmax/3801.66)
>>       BotTval=-245.5*BotCoef/(BotCoef-17.67)
>>       Botxtemp=GetXLoc(BotTval,_pmax)
>>       "q w2xy "Botxtemp " " _pmax
>>       Botxloc=subwrd(result,3)
>>       Botyloc=byloc
>>       TopCoef=log(mloop*MixStop/3801.66)
>>       TopTval=-245.5*TopCoef/(TopCoef-17.67)
>>       Topxtemp=GetXLoc(TopTval,MixStop)
>>       "q w2xy "Topxtemp " " MixStop
>>       Topxloc=subwrd(result,3)
>>       Topyloc=subwrd(result,6)
>>       "set string "MixCol" l 3"
>>       "set strsiz 0.09"
>>       If (Botxtemp <= 100 | Topxtemp <= 100)
>>          If (Topxtemp > 100)
>>             Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)
>>             b=Topyloc-Slope*Topxtemp
>>             Topyloc=Slope*100+b
>>             Topxloc=rxloc
>>             "draw string " Topxloc+0.05 " " Topyloc  " " mloop
>>          Else
>>             "draw string " Topxloc " " Topyloc+0.1 " " mloop
>>          Endif
>>          If (Botxtemp < 0)
>>             Slope=(Topyloc-Botyloc)/(Topxtemp-Botxtemp)
>>             b=Botyloc-Slope*Botxtemp
>>             Botyloc=b
>>             Botxloc=lxloc
>>          Endif
>>          "draw line "Botxloc " " Botyloc " " Topxloc " " Topyloc
>>       Endif
>>       count=count+1
>>       mloop=subwrd(wsclevs,count)
>>       If (mloop = "" | count > 50)
>>          cont = 0
>>       Endif
>>   EndWhile
>>   If (LblAxes = 1)
>>      "set strsiz 0.15"
>>      "set string 1 c 3 90"
>>      If (PageType = "Portrait")
>> *         "draw string 7.40 4.75 Relacion de Mezcla (g/kg)"
>>      Else
>> *         "draw string 6.90 4.25 Mixing Ratio (g/kg)"
>>      Endif
>>      "set string 1 c 3 0"
>>   Endif
>> Endif
>>
>> *-----------------------------
>> * Plot moist (pseudo) adiabats
>> *-----------------------------
>>
>> If (DrawThtw = 1)
>>   "set lon 0 100"
>>   "set y 1"
>>   "set z 1"
>>   "set gxout stat"
>>   tloop=80
>>   "set line "ThtwCol" "ThtwLine " "ThtwThk
>>   While (tloop > -80)
>>     PTemp=LiftWet(tloop,1000,ThtwStop,1,_pmin,_pmax)
>>     tloop=tloop-thetwint
>>   Endwhile
>> Endif
>>
>>
>> *-----------------------------------------------------
>> * Plot transformed user-specified temperature sounding
>> *-----------------------------------------------------
>>
>> If (DrawTSnd = 1)
>>   say "Drawing temperature sounding."
>>   "set gxout line"
>>   "set x "_xval
>>   "set y "_yval
>>   "set z "_zmin" "_zmax
>>   "set ccolor "TSndCol
>>   "set cstyle "TSndLine
>>   "set cmark "TSndMrk
>>   "set digsiz "MrkSize
>>   "set cthick "TSndThk
>>   "set missconn on"
>>   "d tempx"
>> Endif
>>
>> *---------------------------------------------------
>> * Plot transformed user-specified dewpoint sounding
>> *---------------------------------------------------
>>
>> If (DrawDSnd = 1)
>>   say "Drawing dewpoint sounding."
>>   "set gxout line"
>>   "set x "_xval
>>   "set y "_yval
>>   "set z "_zmin" "_zmax
>>   "set cmark "DSndMrk
>>   "set digsiz "MrkSize
>>   "set ccolor "DSndCol
>>   "set cstyle "DSndLine
>>   "set cthick "DSndThk
>>   "set missconn on"
>>   "d dewpx"
>> Endif
>>
>> *----------------------------------------
>> * Determine lowest level of reported  data
>> *----------------------------------------
>>
>> If (DrawTSnd = 1)
>>   field=sndtemp
>> Else
>>   field=sndspd
>> Endif
>>
>> "set gxout stat"
>> "set x "_xval
>> "set y "_yval
>> "set t "_tval
>> "set lev " _pmax " " _pmin
>> "d maskout(lev,"field"+300)"
>> rec=sublin(result,1)
>> check=substr(rec,1,6)
>> If (check = "Notice")
>>    rec=sublin(result,9)
>> Else
>>    rec=sublin(result,8)
>> Endif
>> SfcPlev=subwrd(rec,5)
>>
>> If (DrawTSnd = 1 & DrawDSnd = 1)
>>   "set lev "SfcPlev
>>   "d "sndtemp
>>   rec=sublin(result,8)
>>   Sfctemp=subwrd(rec,4)
>>   "d "snddewp
>>   rec=sublin(result,8)
>>   Sfcdewp=subwrd(rec,4)
>>   SfcThee=Thetae(Sfctemp,Sfcdewp,SfcPlev)
>>
>> *------------------------------------------
>> * Calculate temperature and pressure of LCL
>> *------------------------------------------
>>
>>   TLcl=Templcl(Sfctemp,Sfcdewp)
>>   PLcl=Preslcl(Sfctemp,Sfcdewp,SfcPlev)
>> Endif
>>
>> *----------------------------------------------------------
>> * Plot parcel path from surface to LCL and up moist adiabat
>> *----------------------------------------------------------
>>
>> If (DrawPrcl = 1)
>>   say "Drawing parcel path from surface upward."
>>   If (PageType = "Portrait")
>>      xloc=7.15
>>   Else
>>      xloc=6.65
>>   Endif
>>   "q w2xy 1 "PLcl
>>   rec=sublin(result,1)
>>   yloc=subwrd(rec,6)
>>   "set strsiz 0.1"
>>   If (PLcl < _pmax)
>>      "set string 1 l"
>>      "draw string "xloc" "yloc" LCL"
>>      "set line 1 1 1"
>>      "draw line "xloc-0.15" "yloc" "xloc-0.05" "yloc
>>   Endif
>>   "set lon 0 100"
>>   "set gxout stat"
>>   "set line "PrclCol" "PrclLine " " PrclThk
>>   PTemp=LiftDry(Sfctemp,SfcPlev,PLcl,1,_pmin,_pmax)
>>   Ptemp=LiftWet(TLcl,PLcl,_pmin,1,_pmin,_pmax)
>> Endif
>>
>> *-------------------------------------------------------
>> * Determine level within lowest 250mb having highest
>> * theta-e value
>> *-------------------------------------------------------
>>
>> If (DrawTSnd = 1 & DrawDSnd = 1)
>>  "set x "_xval
>>  "set y "_yval
>>  "set t "_tval
>>   zz=1
>>   MaxThee=-999
>>   "set gxout stat"
>>   while (zz <= _zmax & pp > _pmax-250)
>>       "set z "zz
>>       pp=subwrd(result,4)
>>       "d "sndtemp
>>       rec=sublin(result,8)
>>       tt=subwrd(rec,4)
>>       "d "snddewp
>>       rec=sublin(result,8)
>>       dd=subwrd(rec,4)
>>       If (abs(tt) < 130 & abs(dd) < 130)
>>          Thee=Thetae(tt,dd,pp)
>>          If (Thee > MaxThee)
>>             MaxThee=Thee
>>             TMaxThee=tt
>>             DMaxThee=dd
>>             PMaxThee=pp
>>          Endif
>>       endif
>>       zz=zz+1
>>   Endwhile
>>   If (PMaxThee = SfcPlev-250)
>>      PMaxThee = SfcPlev
>>   Endif
>> *------------------------------------------------------
>> * Calculate temperature and pressure of LCL from highest
>> * theta-e level
>> *------------------------------------------------------
>>   If (SfcPlev != PMaxThee)
>>      TLclMax=Templcl(TMaxThee,DMaxThee)
>>      PLclMax=Preslcl(TMaxThee,DMaxThee,PMaxThee)
>>   Endif
>> Endif
>>
>> *----------------------------------------------------------
>> * Plot parcel path from highest theta-e level to LCL and up
>> * moist adiabat
>> *----------------------------------------------------------
>>
>> If (DrawPMax = 1 & SfcPlev != PMaxThee)
>>   say "Drawing parcel path from most unstable level upward."
>>   If (PageType = "Portrait")
>>      xloc=7.15
>>   Else
>>      xloc=6.65
>>   Endif
>>   "q w2xy 1 "PLclMax
>>   rec=sublin(result,1)
>>   yloc=subwrd(rec,6)
>>   "set strsiz 0.1"
>>   If (PLclMax < _pmax)
>>      "set string 1 l"
>>      "draw string "xloc" "yloc" LCL"
>>      "set line 1 1 1"
>>      "draw line "xloc-0.15" "yloc" "xloc-0.05" "yloc
>>   Endif
>>   "set lon 0 100"
>>   "set gxout stat"
>>   "set line "PrclCol" "PrclLine " " PrclThk
>>   PTemp=LiftDry(TMaxThee,PMaxThee,PLclMax,1,_pmin,_pmax)
>>   Ptemp=LiftWet(TLclMax,PLclMax,_pmin,1,_pmin,_pmax)
>> Endif
>>
>> *--------------------------------
>> * Draw thermodynamic indices
>> *--------------------------------
>>
>> If (DrawIndx = 1)
>>   "set string 1 l"
>>   "set strsiz 0.10"
>>   "set x "_xval
>>   "set y "_yval
>>   "set t "_tval
>>   say "Calculating precipitable water."
>>   pw=precipw(sndtemp,snddewp,_pmax,_pmin)
>>   say "Calculating thermodynamic indices."
>>   Temp850=interp(sndtemp,850)
>>   Temp700=interp(sndtemp,700)
>>   Temp500=interp(sndtemp,500)
>>   Dewp850=interp(snddewp,850)
>>   Dewp700=interp(snddewp,700)
>>   Dewp500=interp(snddewp,500)
>>   If (Temp850>-900 & Dewp850>-900 & Dewp700>-900 & Temp700>-900 &
>> Temp500>-900)
>>      K=Temp850+Dewp850+Dewp700-Temp700-Temp500
>>   Else
>>      K=-999
>>   Endif
>>   If (Temp850 > -900 & Dewp850 > -900 & Temp500 > -900)
>>      tt=Temp850+Dewp850-2*Temp500
>>   Else
>>      tt=-999
>>   Endif
>>   Temp500V=virtual2(Temp500+273.15,Dewp500+273.15,500)-273.15
>>   PclTemp=LiftWet(TLcl,PLcl,500,0)
>>   PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,500)-273.15
>>   SLI=Temp500V-PclTempV
>>   rec=CAPE(TLcl,PLcl,200,sndtemp,snddewp)
>>   Pos=subwrd(rec,1)
>>   CIN=subwrd(rec,2)
>>
>>   If (SfcPlev != PMaxThee)
>>      PclTemp=LiftWet(TLclMax,PLclMax,500,0)
>>      PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,500)-273.15
>>      LIMax=Temp500V-PclTempV
>>      rec=CAPE(TLclMax,PLclMax,100,sndtemp,snddewp)
>>      PosMax=subwrd(rec,1)
>>      CINMax=subwrd(rec,2)
>>   Else
>>      LIMax=SLI
>>      PosMax=Pos
>>      CINMax=CIN
>>      MaxThee=SfcThee
>>   Endif
>>
>>   If (PageType = "Portrait")
>>      If (Text1XC = -1)
>>         Text1XC=rxloc-0.75
>>      Endif
>>      If (Text1YC = -1)
>>         Text1YC=tyloc-2.25
>>      Endif
>>      If (Text2XC = -1)
>>         Text2XC=rxloc-0.75
>>      Endif
>>      If (Text2YC = -1)
>>         Text2YC=tyloc-3.25
>>      Endif
>>      If (Text3XC = -1)
>>          Text3XC=rxloc-0.75
>>      Endif
>>      If (Text3YC = -1)
>>         Text3YC=tyloc-4.40
>>      Endif
>>   Else
>>      If (Text1XC = -1)
>>         Text1XC=rxloc+2.50
>>      Endif
>>      If (Text1YC = -1)
>>         Text1YC=tyloc-3.00
>>      Endif
>>      If (Text2XC = -1)
>>         Text2XC=rxloc+2.50
>>      Endif
>>      If (Text2YC = -1)
>>         Text2YC=tyloc-4.00
>>      Endif
>>      If (Text3XC = -1)
>>         Text3XC=rxloc+2.50
>>      Endif
>>      If (Text3YC = -1)
>>         Text3YC=tyloc-5.10
>>      Endif
>>   Endif
>>   "set string 1 l 3"
>>   "set line 0 1 3"
>>   "draw recf  "Text1XC-0.75 " " Text1YC-0.40 " " Text1XC+0.75 " "
>> Text1YC+0.25
>>   "set line 1 1 3"
>>   "draw rec  "Text1XC-0.75 " " Text1YC-0.40 " " Text1XC+0.75 " "
>> Text1YC+0.25
>>   "draw string "Text1XC-0.70 " " Text1YC+0.10"  K"
>>   "draw string "Text1XC+0.25 " " Text1YC+0.10" " int(K)
>>   "draw string "Text1XC-0.70 " " Text1YC-0.10 "  TT"
>>   "draw string "Text1XC+0.25 " " Text1YC-0.10 " " int(tt)
>>   "draw string "Text1XC-0.70 " " Text1YC-0.25 "  AP(cm)"
>>   "draw string "Text1XC+0.25 " " Text1YC-0.25 " " int(pw*100)/100
>>   "set line 0 1 3"
>>   "draw recf  "Text2XC-0.75 " " Text2YC-0.60 " " Text2XC+0.75 " "
>> Text2YC+0.60
>>   "set line 1 1 3"
>>   "draw rec  "Text2XC-0.75 " " Text2YC-0.60 " " Text2XC+0.75 " "
>> Text2YC+0.60
>>   "draw string "Text2XC-0.35 " " Text2YC+0.50 " Superficie"
>>   "draw string "Text2XC-0.70 " " Text2YC+0.30 "  Temp(`3.`0C)"
>>   "draw string "Text2XC+0.25 " " Text2YC+0.30 " " int(Sfctemp*10)/10
>>   "draw string "Text2XC-0.70 " " Text2YC+0.15 "  Dewp(`3.`0C)"
>>   "draw string "Text2XC+0.25 " " Text2YC+0.15 " " int(Sfcdewp*10)/10
>>   "draw string "Text2XC-0.70 " " Text2YC "   `3z`0`bE`n(K)"
>>   "draw string "Text2XC+0.25 " " Text2YC " " int(SfcThee)
>>   "draw string "Text2XC-0.70 " " Text2YC-0.15 "  LI"
>>   "draw string "Text2XC+0.25 " " Text2YC-0.15 " " round(SLI)
>>   "draw string "Text2XC-0.70 " " Text2YC-0.30 "  CAPE(J)"
>>   "draw string "Text2XC+0.25 " " Text2YC-0.30 " " int(Pos)
>>   "draw string "Text2XC-0.70 " " Text2YC-0.45 "  CIN(J)"
>>   "draw string "Text2XC+0.25 " " Text2YC-0.45 " " int(CIN)
>>   "set line 0 1 3"
>>   "draw recf  "Text3XC-0.75 " " Text3YC-0.55 " "  Text3XC+0.75 " "
>> Text3YC+0.55
>>   "set line 1 1 3"
>>   "draw rec  "Text3XC-0.75 " " Text3YC-0.55 " "  Text3XC+0.75 " "
>> Text3YC+0.55
>>   "draw string "Text3XC-0.60 " " Text3YC+0.45 " Mas inestable"
>>   "draw string "Text3XC-0.70 " " Text3YC+0.20 "  Pres(hPa)"
>>   "draw string "Text3XC+0.25 " " Text3YC+0.20 " " int(PMaxThee)
>>   "draw string "Text3XC-0.70 " " Text3YC+0.05 " `3z`0`bE`n(K)"
>>   "draw string "Text3XC+0.25 " " Text3YC+0.05 " " int(MaxThee)
>>   "draw string "Text3XC-0.70 " " Text3YC-0.10 " LI"
>>   "draw string "Text3XC+0.25 " " Text3YC-0.10 " "round(LIMax)
>>   "draw string "Text3XC-0.70 " " Text3YC-0.25 " CAPE(J)"
>>   "draw string "Text3XC+0.25 " " Text3YC-0.25 " "int(PosMax)
>>   "draw string "Text3XC-0.70 " " Text3YC-0.40 " CIN(J)"
>>   "draw string "Text3XC+0.25 " " Text3YC-0.40 " " int(CINMax)
>> Endif
>>
>> *-----------------------------
>> * Draw wind profile along side
>> *-----------------------------
>>
>> If (DrawBarb = 1)
>>   say "Drawing Wind Profile."
>>   If (poleloc = -1)
>>      If (PageType = "Portrait")
>>         poleloc = 8.0
>>      Else
>>         poleloc = 7.5
>>      Endif
>>   Endif
>>   If (barbline = 1)
>>      "set line 1 1 3"
>>      "draw line "poleloc " " byloc " " poleloc " " tyloc
>>   Endif
>>   If (BarbCol = -1)
>>      'set rgb 41 255 0 132'
>>      'set rgb 42 255 0 168'
>>      'set rgb 43 255 0 204'
>>      'set rgb 44 255 0 240'
>>      'set rgb 45 255 0 255'
>>      'set rgb 46 204 0 255'
>>      'set rgb 47 174 0 255'
>>      'set rgb 48 138 0 255'
>>      'set rgb 49 108 0 255'
>>      'set rgb 50 84 0 255'
>>      'set rgb 51 40 0 255'
>>      'set rgb 52 0 0  255'
>>      'set rgb 53 0 42 255'
>>      'set rgb 54 0 84 255'
>>      'set rgb 55 0 120 255'
>>      'set rgb 56 0 150 255'
>>      'set rgb 57 0 192 255'
>>      'set rgb 58 0 240 255'
>>      'set rgb 59 0 255 210'
>>      'set rgb 60 0 255 160'
>>      'set rgb 61 0 255 126'
>>      'set rgb 62 0 255 78'
>>      'set rgb 63 84 255 0'
>>      'set rgb 64 138 255 0'
>>      'set rgb 65 188 255 0'
>>      'set rgb 66 236 255 0'
>>      'set rgb 67 255 255 0'
>>      'set rgb 68 255 222 0'
>>      'set rgb 69 255 192 0'
>>      'set rgb 70 255 162 0'
>>      'set rgb 71 255 138 0'
>>      'set rgb 72 255 108 0'
>>      'set rgb 73 255 84 0'
>>      'set rgb 74 255 54 0'
>>      'set rgb 75 255 12 0'
>>      'set rgb 76 255 0 34'
>>      'set rgb 77 255 0 70'
>>      'set rgb 78 255 0 105'
>>      'set rgb 79 255 0 140'
>>      'set rgb 80 255 0 175'
>>      'set rgb 81 255 0 215'
>>      'set rgb 82 255 0 255'
>>      'set rgb 83 255 255 255'
>>
>>      col1='83 83 83 83 83 83 83 83 83 83 82 81 80 79 78'
>>      col2='77 76 75 74 73 72 71 70 69 68 67 66 65 64 63'
>>      col3='62 61 60 59 58 57 56 55 54 53 52 51 50 49 48'
>>      'set rbcols 'col1' 'col2' 'col3
>>   Endif
>>   "set z "_zmin" "_zmax
>>   "set gxout stat"
>>   zz=1
>>   wspd=-999
>>   cont=1
>>   While (cont = 1 & zz < _zmax)
>>      "set z "zz
>>      pres=subwrd(result,4)
>>      "d "u
>>      rec=sublin(result,8)
>>      uwnd=subwrd(rec,4)
>>
>>      "d "v
>>      rec=sublin(result,8)
>>      vwnd=subwrd(rec,4)
>>
>>      wspd=GetWSpd(uwnd,vwnd)
>>
>>      if (wspd < 0 | pres > _pmax)
>>          zz=zz+1
>>      else
>>          cont=0
>>      Endif
>>   Endwhile
>>   While (zz <= _zmax)
>>
>>      "d "u"(z="zz")"
>>      rec=sublin(result,8)
>>      uwnd=subwrd(rec,4)
>>
>>      "d "v"(z="zz")"
>>      rec=sublin(result,8)
>>      vwnd=subwrd(rec,4)
>>
>>      wspd=GetWSpd(uwnd,vwnd)
>>
>>      If (BarbCol >= 0)
>>         "set line "BarbCol " 1 "BarbThk
>>      Else
>>         tempbcol=55+wspd/5
>>         If (tempbcol > 83)
>>            tempbcol = 83
>>         Endif
>>         "set line "tempbcol " 1 "BarbThk
>>      Endif
>>
>>      "d "u"(z="zz")"
>>      rec=sublin(result,8)
>>      uwnd=subwrd(rec,4)
>>
>>      "d "v"(z="zz")"
>>      rec=sublin(result,8)
>>      vwnd=subwrd(rec,4)
>>      if(vwnd != undef)
>>      wspd=GetWSpd(uwnd,vwnd)
>>      wdir=GetWDir(uwnd,vwnd)
>>      Else
>>      wspd=0
>>      wdir=0
>>      Endif
>>
>>      xwind=GetUWnd(wspd,wdir)
>>      ywind=GetVWnd(wspd,wdir)
>>      "query gr2xy 5 "zz
>>      y1=subwrd(result,6)
>>      if (wspd > 0)
>>         cc=polelen/wspd
>>         xendpole=poleloc-xwind*cc
>>         yendpole=y1-ywind*cc
>>      endif
>>      if (xendpole>0 & wspd >= 0.5)
>>        if (flagbase = 1)
>>           "draw mark 3 "poleloc " " y1 " 0.05"
>>        endif
>>        "draw line " poleloc " " y1 "  " xendpole " " yendpole
>>        flagloop=wspd/10
>>        windcount=wspd
>>        flagcount=0
>>        xflagstart=xendpole
>>        yflagstart=yendpole
>>        dx=cos((180-wdir)*_dtr)
>>        dy=sin((180-wdir)*_dtr)
>>        while (windcount > 47.5)
>>           flagcount=flagcount+1
>>           dxflag=-len50*dx
>>           dyflag=-len50*dy
>>           xflagend=xflagstart+dxflag
>>           yflagend=yflagstart+dyflag
>>           windcount=windcount-50
>>           x1=xflagstart+0.5*wid50*xwind/wspd
>>           y1=yflagstart+0.5*wid50*ywind/wspd
>>           x2=xflagstart-0.5*wid50*xwind/wspd
>>           y2=yflagstart-0.5*wid50*ywind/wspd
>>           If (Fill50 = 1)
>>              "draw polyf "x1" "y1" "x2" "y2" "xflagend" "yflagend" "x1"
>> "y1
>>           Else
>>              "draw line "x1 " "y1 " " xflagend " " yflagend " "
>>              "draw line "x2 " "y2 " " xflagend " " yflagend
>>              "draw line "x1 " "y1 " " x2 " " y2
>>           Endif
>>           xflagstart=xflagstart+spac50*xwind/wspd
>>           yflagstart=yflagstart+spac50*ywind/wspd
>>        endwhile
>>        while (windcount > 7.5 )
>>           flagcount=flagcount+1
>>           dxflag=-len10*dx
>>           dyflag=-len10*dy
>>           xflagend=xflagstart+dxflag
>>           yflagend=yflagstart+dyflag
>>           windcount=windcount-10
>>           "draw line " xflagstart " " yflagstart " " xflagend " " yflagend
>>           xflagstart=xflagstart+spac10*xwind/wspd
>>           yflagstart=yflagstart+spac10*ywind/wspd
>>        endwhile
>>        if (windcount > 2.5)
>>           flagcount=flagcount+1
>>           if (flagcount = 1)
>>              xflagstart=xflagstart+spac05*xwind/wspd
>>              yflagstart=yflagstart+spac05*ywind/wspd
>>           endif
>>           dxflag=-len05*dx
>>           dyflag=-len05*dy
>>           xflagend=xflagstart+dxflag
>>           yflagend=yflagstart+dyflag
>>           windcount=windcount-5
>>           "draw line " xflagstart " " yflagstart " " xflagend " " yflagend
>>        endif
>>      else
>>        if (wspd < 0.5 & wspd >= 0)
>>           "draw mark 2 " poleloc " " y1 " 0.08"
>>        endif
>>      endif
>>      zz=zz+barbint
>>   endwhile
>> Endif
>>
>> *----------------
>> * Draw Hodograph
>> *----------------
>>
>> If (DrawHodo = 1)
>>   say "Drawing Hodograph."
>>
>>   If (HodXcent = -1 | HodYcent = -1)
>>      If (PageType = "Portrait")
>>         HodXcent=6
>>         HodYcent=9.5
>>      rec=sublin(result,8)
>>      uwnd=subwrd(rec,4)
>>      Else
>>         HodXcent=9
>>         HodYcent=7.0
>>      Endif
>>   Endif
>>   HodL=HodXcent-HodSize/2.0
>>   HodR=HodXcent+HodSize/2.0
>>   HodT=HodYcent+HodSize/2.0
>>   HodB=HodYcent-HodSize/2.0
>>   RingSpac=HodSize/(NumRing*2)
>>   "set line 0"
>>   "draw recf "HodL" "HodB" "HodR" "HodT
>>   "set line "HodoCol" 1 6"
>>   "draw rec "HodL" "HodB" "HodR" "HodT
>>   "set line 1 1 3"
>>   "set string 1 c"
>>   "draw mark 1 "HodXcent " "HodYcent " " HodSize
>>   i=1
>>   While (i <= NumRing)
>>     "set strsiz 0.10"
>>     "set string 1 c 3 45"
>>     uwnd=-i*HodRing*cos(45*_dtr)
>>     xloc=HodXcent+uwnd*RingSpac/HodRing
>>     yloc=HodYcent+uwnd*RingSpac/HodRing
>>
>>     "draw mark 2 "HodXcent " " HodYcent " " i*HodSize/NumRing
>>     "draw string "xloc " " yloc " " HodRing*i
>>     i=i+1
>>   Endwhile
>>   "set string 1 l 3 0"
>>   If (TickInt > 0)
>>      i=0
>>      while (i < HodRing*NumRing)
>>         dist=i*RingSpac/HodRing
>>         hrxloc=HodXcent+dist
>>         hlxloc=HodXcent-dist
>>         htyloc=HodYcent+dist
>>         hbyloc=HodYcent-dist
>>         "set line 1 1 3"
>>         "draw line "hrxloc " " HodYcent-TickSize/2 " " hrxloc " "
>> HodYcent+TickSize/2
>>         "draw line "hlxloc " " HodYcent-TickSize/2 " " hlxloc " "
>> HodYcent+TickSize/2
>>         "draw line "HodXcent+TickSize/2 " " htyloc " " HodXcent-TickSize/2
>> " " htyloc
>>         "draw line "HodXcent+TickSize/2 " " hbyloc " " HodXcent-TickSize/2
>> " " hbyloc
>>         i=i+TickInt
>>      endwhile
>>   Endif
>>   "set line "HodoCol " " HodoLine " "HodoThk
>>   "draw string "HodL+0.05 " " HodT-0.1 " m/s"
>>   zloop=_zmin
>>   xold=-999
>>   yold=-999
>>   count=0
>>   Depth=0
>>   While (zloop < _zmax & Depth < HodoDep)
>>      "set z "zloop
>>      pres=subwrd(result,4)
>>
>>      "d "u
>>      rec=sublin(result,8)
>>      uwnd=subwrd(rec,4)
>>      "d "v
>>      rec=sublin(result,8)
>>      vwnd=subwrd(rec,4)
>>      if (uwnd = undef)
>>      uwnd=0
>>      vwnd=0
>>      endif
>>
>>      If (wspd >= 0)
>>         xloc=HodXcent+uwnd*RingSpac/HodRing
>>         yloc=HodYcent+vwnd*RingSpac/HodRing
>>         If (xloc > 0 & yloc > 0 & xold > 0 & yold > 0)
>>            Depth=Depth+pold-pres
>>            count=count+1
>>            If (count = 1)
>>               "draw mark 3 "xold " " yold " 0.05"
>>            Endif
>>            "draw line "xold" "yold" "xloc" "yloc
>>         Endif
>>         xold=xloc
>>         yold=yloc
>>      Endif
>>      zloop=zloop+1
>>      pold=pres
>>   EndWhile
>>
>>   If (count > 0)
>>      "draw mark 3 "xold " " yold " 0.05"
>>   Endif
>> Endif
>>
>> *----------------------------------------------
>> * Calculate and Display Absolute & S-R Helicity
>> *----------------------------------------------
>>
>> If (DrawHeli = 1)
>>   say "Calculating Helicity & SR Helicity."
>>   delp=10
>>   UTotal=0
>>   VTotal=0
>>
>> * First, calculate mass-weighted mean wind
>> * Since delp is a constant, and mass is proportional to
>> * delp, this is a simple sum.
>>
>>   "set lev "_pmax " " _pmin
>>   "define uwndarr="sndspd"*cos((270-"snddir")*"_dtr")"
>>   "define vwndarr="sndspd"*sin((270-"snddir")*"_dtr")"
>>
>>   pres=MeanVBot
>>   While (pres >= MeanVTop)
>>      uwnd=interp(uwndarr,pres)*_ktm
>>      vwnd=interp(vwndarr,pres)*_ktm
>>      If (uwnd > -900 & vwnd > -900)
>>         UTotal=UTotal+uwnd
>>         VTotal=VTotal+vwnd
>>      Endif
>>      pres=pres-delp
>>   EndWhile
>>   vcount=1+(MeanVBot-MeanVTop)/delp
>>   Umean=UTotal/vcount
>>   Vmean=VTotal/vcount
>>   Spdmean=GetWSpd(Umean,Vmean)
>>   MeanDir=GetWDir(Umean,Vmean)
>>
>> * Now, rotate and reduce mean wind to get storm motion
>>
>>   If (StormMot = 1)
>>      If (Spdmean < 15)
>>         Reduct=0.25
>>         Rotate=30
>>      Else
>>         Reduct=0.20
>>         Rotate=20
>>      Endif
>>   Else
>>      Reduct=0.0
>>      Rotate=0.0
>>   Endif
>>
>>   UReduce=(1-Reduct)*Umean
>>   VReduce=(1-Reduct)*Vmean
>>   StormSpd=GetWSpd(UReduce,VReduce)
>>
>>   StormDir=GetWDir(UReduce,VReduce)+Rotate
>>   If (StormDir >= 360)
>>      StormDir=StormDir-360
>>   Endif
>>
>>   StormU=GetUWnd(StormSpd,StormDir)
>>   StormV=GetVWnd(StormSpd,StormDir)
>>
>> * Draw Storm Motion Vector
>>
>>   xloc=HodXcent+_mtk*StormU*RingSpac/HodRing
>>   yloc=HodYcent+_mtk*StormV*RingSpac/HodRing
>>
>>   "set line 1 1 4"
>>   "draw line "HodXcent " " HodYcent " " xloc " " yloc
>>   Arr1U=GetUWnd(HodRing/10,StormDir+30)
>>   Arr1V=GetVWnd(HodRing/10,StormDir+30)
>>   Arr2U=GetUWnd(HodRing/10,StormDir-30)
>>   Arr2V=GetVWnd(HodRing/10,StormDir-30)
>>
>>   xloc2=xloc-Arr1U/HodRing
>>   xloc3=xloc-Arr2U/HodRing
>>   yloc2=yloc-Arr1V/HodRing
>>   yloc3=yloc-Arr2V/HodRing
>>
>>   "set line 1 1 3"
>>
>>   If (FillArrw = 0)
>>      "draw line "xloc" "yloc" "xloc2" "yloc2
>>      "draw line "xloc" "yloc" "xloc3" "yloc3
>>   Else
>>      "draw polyf "xloc" "yloc" "xloc2" "yloc2" "xloc3" "yloc3" "xloc"
>> "yloc
>>   Endif
>>
>>
>> * Now, calculate SR and Environmental Helicity
>>
>>   helic=0
>>   SRhelic=0
>>   MinP=SfcPlev-HelicDep
>>   pres=SfcPlev
>>   uwndold=-999
>>   vwndold=-999
>>   While (pres >= MinP)
>>      uwnd=interp(uwndarr,pres)*_ktm
>>      vwnd=interp(vwndarr,pres)*_ktm
>>      If (uwnd > -900 & uwndold > -900)
>>          du=uwnd-uwndold
>>          dv=vwnd-vwndold
>>          ubar=0.5*(uwnd+uwndold)
>>          vbar=0.5*(vwnd+vwndold)
>>          uhelic=-dv*ubar
>>          vhelic=du*vbar
>>          SRuhelic=-dv*(ubar-StormU)
>>          SRvhelic=du*(vbar-StormV)
>>          SRhelic=SRhelic+SRuhelic+SRvhelic
>>          helic=helic+uhelic+vhelic
>>      Endif
>>      uwndold=uwnd
>>      vwndold=vwnd
>>      pres=pres-delp
>>   EndWhile
>>
>>   "set strsiz 0.1"
>>   "set string 1 l 3"
>>   If (PageType = "Portrait")
>>      If (Text4XC = -1)
>>         Text4XC=rxloc-0.75
>>      Endif
>>      If (Text4YC = -1)
>>         Text4YC=tyloc-5.45
>>      Endif
>>   Else
>>      If (Text4XC = -1)
>>         Text4XC=rxloc+2.50
>>      Endif
>>      If (Text4YC = -1)
>>         Text4YC=tyloc-6.10
>>      Endif
>>   Endif
>>   "set line 0 1 3"
>>   "draw recf  "Text4XC-0.75 " "Text4YC-0.5 " " Text4XC+0.75 " "
>> Text4YC+0.5
>>   "set line 1 1 3"
>>   "draw rec  "Text4XC-0.75 " "Text4YC-0.5 " " Text4XC+0.75 " " Text4YC+0.5
>>   "draw string "Text4XC-0.45 " " Text4YC+0.40 " Hodograph"
>>   "draw string "Text4XC-0.70 " " Text4YC+0.20 " EH"
>>   "draw string "Text4XC+0.25 " " Text4YC+0.20 " "int(helic)
>>   "draw string "Text4XC-0.70 " " Text4YC+0.05 " SREH"
>>   "draw string "Text4XC+0.25 " " Text4YC+0.05 " " int(SRhelic)
>>   "draw string "Text4XC-0.70 " " Text4YC-0.20 " StmDir"
>>   "draw string "Text4XC+0.25 " " Text4YC-0.20 " " int(StormDir)"`3.`0"
>>   "draw string "Text4XC-0.70 " " Text4YC-0.35 " StmSpd(kt)"
>>   "draw string "Text4XC+0.25 " " Text4YC-0.35 " " int(_mtk*StormSpd)
>> Endif
>>
>> *---------------------------------------------------
>> * Plot RH profile.
>> *---------------------------------------------------
>>
>> If (DrawRH = 1)
>>  "set z "_zmin" "_zmax
>>  "set x "_xval
>>  "set y "_yval
>>  "set t "_tval
>>  "set zlog on"
>>  "set gxout line"
>>  "set ccolor "RHCol
>>  "set cstyle "RHLine
>>  "set cmark "RHMrk
>>  "set digsiz "MrkSize
>>  "set missconn on"
>>  "set xlab on"
>>  "set frame off"
>>  "set vrange 0 350"
>>  "set xlpos 0 t"
>>  "set xlevs 25 50 75 100"
>>  "set grid vertical 5"
>>  "define
>> rh=100*exp((17.2694*"snddewp")/("snddewp"+237.3)-(17.2694*"sndtemp")/("sndtemp"+237.3))"
>>  "d rh"
>>   If (LblAxes = 1)
>>     "set string 1 c 3 0"
>>     "set strsiz 0.125"
>>     If (PageType = "Portrait")
>>       "draw string 1.5 10.85 RH (%)"
>>     Else
>>       "draw string 1.75 8.35 RH (%)"
>>     Endif
>>   Endif
>> Endif
>>
>> *------------------------------------------
>> * Reset environment to original dimensions
>> *------------------------------------------
>>
>> "set t "_tval
>> "set x "_xval
>> "set y "_yval
>> "set z "_zmin " "_zmax
>>
>> say "Done."
>>
>> *Return(0)
>>
>> *************************************************************************
>> function Templcl(temp,dewp)
>>
>> *------------------------------------------------------
>> * Calculate the temp at the LCL given temp & dewp in C
>> *------------------------------------------------------
>>
>> tempk=temp+273.15
>> dewpk=dewp+273.15
>> Parta=1/(dewpk-56)
>> Partb=log(tempk/dewpk)/800
>> Tlcl=1/(Parta+Partb)+56
>> return(Tlcl-273.15)
>>
>> **************************************************************************
>>
>> function Preslcl(temp,dewp,pres)
>>
>> *-------------------------------------------------------
>> * Calculate press of LCL given temp & dewp in C and pressure
>> *-------------------------------------------------------
>>
>> Tlclk=Templcl(temp,dewp)+273.15
>> tempk=temp+273.15
>> theta=tempk*pow(1000/pres,0.286)
>> plcl=1000*pow(Tlclk/theta,3.48)
>> return(plcl)
>>
>> **************************************************************************
>> function LiftWet(startt,startp,endp,display,Pmin,Pmax)
>>
>> *--------------------------------------------------------------------
>> * Lift a parcel moist adiabatically from startp to endp.
>> * Init temp is startt in C.  If you wish to see the parcel's
>> * path plotted, display should be 1.  Returns temp of parcel at endp.
>> *--------------------------------------------------------------------
>>
>> temp=startt
>> pres=startp
>> cont = 1
>> delp=10
>> While (pres >= endp & cont = 1)
>>    If (display = 1)
>>       xtemp=GetXLoc(temp,pres)
>>       "q w2xy "xtemp" "pres
>>       xloc=subwrd(result,3)
>>       yloc=subwrd(result,6)
>>       If (xtemp < 0 | xtemp > 100)
>>          cont=0
>>       Else
>>          If (pres >= Pmin & pres < Pmax & pres < startp)
>>             "draw line "xold" "yold" "xloc" "yloc
>>          Endif
>>       Endif
>>    Endif
>>    xold=xloc
>>    yold=yloc
>>    temp=temp-100*delp*gammaw(temp,pres-delp/2,100)
>>    pres=pres-delp
>> EndWhile
>> return(temp)
>>
>>
>> **************************************************************************
>> function LiftDry(startt,startp,endp,display,Pmin,Pmax)
>>
>> *--------------------------------------------------------------------
>> * Lift a parcel dry adiabatically from startp to endp.
>> * Init temp is startt in C.  If you wish to see the parcel's
>> * path plotted, display should be 1.  Returns temp of parcel at endp.
>> *--------------------------------------------------------------------
>>
>> starttk=startt+273.15
>> cont = 1
>> delp=10
>> round=int(startp/10)*10
>> subscr=0.1*round
>> powstart=pow(startp,-0.286)
>> temp=starttk*_powpres.subscr*powstart-273.15
>> pres=round-10
>> While (pres >= endp & cont = 1)
>>    subscr=0.1*pres
>>    temp=starttk*_powpres.subscr*powstart-273.15
>>    If (display = 1)
>>       xtemp=GetXLoc(temp,pres)
>>       "q w2xy "xtemp" "pres
>>       xloc=subwrd(result,3)
>>       yloc=subwrd(result,6)
>>       If (xtempold > 0 & xtempold < 100 & xtemp > 0 & xtemp < 100)
>>          If (pres >= Pmin & pres < Pmax & pres < startp)
>>             "draw line "xold" "yold" "xloc" "yloc
>>          Endif
>>       Endif
>>    Endif
>>    xold=xloc
>>    xtempold=xtemp
>>    yold=yloc
>>    pres=pres-delp
>> EndWhile
>> return(temp)
>>
>> **************************************************************************
>> function CAPE(startt,startp,endp,sndtemp,snddewp)
>>
>> *---------------------------------------------------------------------
>> * Returns all postive area and convective inhibition above LCL.
>> * Parcel is lifted from LCL at startt,startp and is halted
>> * at endp.   Integration method used is trapezoid method.
>> *---------------------------------------------------------------------
>>
>> pres=startp
>> PclTemp=startt
>> PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,pres)-273.15
>> delp=10
>> Pos=0
>> Neg=0
>> Neg2=0
>>
>> count=0
>> While (pres >= endp)
>>   EnvTemp=interp(sndtemp,pres)
>>   EnvDewp=interp(snddewp,pres)
>>   EnvTempV=virtual2(EnvTemp+273.15,EnvDewp+273.15,pres)-273.15
>>   DelT=PclTempV-EnvTempV
>>   If (abs(EnvTempV) < 130 & abs(PclTempV) < 130)
>>     count=count+1
>>     If (count > 1)
>>       Val=DelT/pres+Prev
>>       If (Val > 0)
>>          Pos=Pos+Val
>>          Neg2=0
>>       Else
>>          Neg=Neg+abs(Val)
>>          Neg2=Neg2+abs(Val)
>>       Endif
>>     Endif
>>     Prev=DelT/pres
>>   Endif
>>   pres=pres-delp
>>   PclTemp=PclTemp-100*delp*gammaw(PclTemp,pres,100)
>>   PclTempV=virtual2(PclTemp+273.15,PclTemp+273.15,pres)-273.15
>> Endwhile
>>
>> Pos=0.5*Pos*287*delp
>> CIN=0.5*(Neg-Neg2)*287*delp
>>
>> return(Pos" "CIN)
>>
>>
>> ***************************************************************************
>> function gammaw(tempc,pres,rh)
>>
>> *-----------------------------------------------------------------------
>> * Function to calculate the moist adiabatic lapse rate (deg C/Pa) based
>> * on the temperature, pressure, and rh of the environment.
>> *----------------------------------------------------------------------
>>
>> tempk=tempc+273.15
>> es=satvap2(tempc)
>> ws=mixratio(es,pres)
>> w=rh*ws/100
>> tempv=virtual(tempk,w)
>> latent=latentc(tempc)
>>
>> A=1.0+latent*ws/(287*tempk)
>> B=1.0+0.622*latent*latent*ws/(1005*287*tempk*tempk)
>> Density=100*pres/(287*tempv)
>> lapse=(A/B)/(1005*Density)
>> return(lapse)
>>
>> *************************************************************************
>> function latentc(tempc)
>>
>> *-----------------------------------------------------------------------
>> * Function to return the latent heat of condensation in J/kg given
>> * temperature in degrees Celsius.
>> *-----------------------------------------------------------------------
>>
>> val=2502.2-2.43089*tempc
>>
>> return(val*1000)
>>
>> *************************************************************************
>> function precipw(sndtemp,snddewp,startp,endp)
>>
>> *-----------------------------------------------------------------------
>> * Function to calculate the precipitable water (cm) in a sounding
>> * starting at pressure level startp and ending at pressure level endp.
>> *-----------------------------------------------------------------------
>>
>> ppold=-999
>> ttold=-999
>> ddold=-999
>> delp=10
>> Int=0
>> mix=0
>> pres=startp
>> logpp=log(pres)
>> logppm=log(pres-delp)
>> while (pres >= endp)
>>   tt=interp(sndtemp,pres)
>>   dd=interp(snddewp,pres)
>>   if (tt>-900 & ttold>-900 & dd>-900 & ddold>-900)
>>      e=satvap2(dd)
>>      mix=mixratio(e,pres)
>>      mixavg=(logpp*mix+logppm*mixold)/(logpp+logppm)
>>      Int=Int+1.020408*mixavg*delp
>>   endif
>>   ttold=tt
>>   ddold=dd
>>   ppold=pp
>>   mixold=mix
>>   pres=pres-delp
>>   logpp=logppm
>>   logppm=log(pres-delp)
>> endwhile
>>
>> return(Int)
>>
>> *************************************************************************
>>
>> function virtual(temp,mix)
>>
>> *------------------------------------------------------------
>> * Function to return virtual temperature given temperature in
>> * kelvin and mixing ratio in g/g.
>> *-------------------------------------------------------------
>>
>> tempv=temp*(1.0+0.6*mix)
>>
>> return (tempv)
>>
>> ************************************************************************
>>
>> function virtual2(temp,dewp,pres)
>>
>> *------------------------------------------------------------
>> * Function to return virtual temperature in kelvin given temperature in
>> * kelvin and dewpoint in kelvin and pressure in mb
>> *-------------------------------------------------------------
>>
>> if (temp > 0 & dewp > 0)
>>  vap=satvap2(dewp-273.15)
>>  mix=mixratio(vap,pres)
>>  tempv=virtual(temp,mix)
>> else
>>  tempv=-9999
>> endif
>>
>> return (tempv)
>>
>> ************************************************************************
>>
>> function satvapor(temp)
>>
>> *---------------------------------------------------------------
>> * Given temp in Celsius, returns saturation vapor pressure in mb
>> *---------------------------------------------------------------
>>
>>
>> pol=_C0+temp*(_C1+temp*(_C2+temp*(_C3+temp*(_C4+temp*(_C5+temp*(_C6+temp*(_C7+temp*(_C8+temp*(_C9)))))))))
>>
>> return(6.1078/pow(pol,8))
>>
>> ************************************************************************
>>
>> function satvap2(temp)
>>
>> *---------------------------------------------------------------
>> * Given temp in Celsius, returns saturation vapor pressure in mb
>> *---------------------------------------------------------------
>>
>> es=6.112*exp(17.67*temp/(temp+243.5))
>>
>> return(es)
>>
>> *************************************************************************
>>
>> function mixratio(e,p)
>>
>> *------------------------------------------------------
>> * Given vapor pressure and pressure, return mixing ratio
>> *-------------------------------------------------------
>>
>> mix=0.622*e/(p-e)
>>
>> return(mix)
>>
>> ************************************************************************
>>
>> function getrh(temp,dewp,pres)
>>
>> tempk=temp+273.15
>> dewpk=dewp+273.15
>>
>> es=satvap2(temp)
>>
>> If (temp > 0)
>>   A=2.53*pow(10,9)
>>   B=5420
>> Else
>>   A=3.41*pow(10,10)
>>   B=6130
>> Endif
>>
>> w=A*0.622*exp(-B/dewpk)/pres
>> ws=mixratio(es,pres)
>>
>> return(100*w/ws)
>>
>> ************************************************************************
>> function interp(array,pres)
>>
>> *------------------------------------------------------------------------
>> * Interpolate inside array for pressure level pres.
>> * Returns estimated value of array at pressure pres.
>> *------------------------------------------------------------------------
>>
>> "set gxout stat"
>> "set lev "pres
>> altpres=subwrd(result,4)
>> "q dims"
>> rec=sublin(result,4)
>> zlev=subwrd(rec,9)
>>
>> If (zlev < 2 | zlev > _zmaxfile)
>>  Vest = -9999.0
>> Else
>>  If (altpres > pres)
>>    zlev=zlev+1
>>  Endif
>>  "set z "zlev
>>  PAbove=subwrd(result,4)
>>  "d "array"(lev="PAbove")"
>>  rec=sublin(result,8)
>>  VAbove=subwrd(rec,4)
>>  "set z "zlev-1
>>  PBelow=subwrd(result,4)
>>  "d "array"(lev="PBelow")"
>>  rec=sublin(result,8)
>>  VBelow=subwrd(rec,4)
>>
>> * Now if we are in a region of missing data, find next good level.
>>
>>  If (abs(VAbove) > 130 & zlev > 1 & zlev < _zmaxfile)
>>     zz=zlev
>>     While (abs(VAbove) > 130 & zz < _zmaxfile)
>>       zz=zz+1
>>       "set z "zz
>>       PAbove=subwrd(result,4)
>>       "d "array"(lev="PAbove")"
>>       rec=sublin(result,8)
>>       VAbove=subwrd(rec,4)
>>     EndWhile
>>  Endif
>>
>>  If (abs(VBelow) > 130 & zlev > 1 & zlev < _zmaxfile)
>>      zz=zlev-1
>>      While (abs(VBelow) > 130 & zz > 1)
>>        zz=zz-1
>>        "set z "zz
>>        PBelow=subwrd(result,4)
>>        "d "array"(lev="PBelow")"
>>        rec=sublin(result,8)
>>        VBelow=subwrd(rec,4)
>>      EndWhile
>>  Endif
>>
>>  If (abs(VAbove) < 130 & abs(VBelow) < 130)
>>     Vest=VBelow+log(PBelow/pres)*(VAbove-VBelow)/log(PBelow/PAbove)
>>  Else
>>     Vest=-9999.0
>>  Endif
>>
>> Endif
>>
>> Return(Vest)
>>
>>
>> ****************************************************************************
>>
>> function GetUWnd(wspd,wdir)
>>
>> *------------------------
>> * Get x-component of wind.
>> *------------------------
>>
>>
>> If (wspd >= 0)
>>   xwind=wspd*cos((270-wdir)*_dtr)
>> Else
>>   xwind = -9999.0
>> Endif
>> return(xwind)
>>
>> **************************************************************************
>>
>> function GetVWnd(wspd,wdir)
>>
>> *-----------------------
>> * Get y-component of wind
>> *------------------------
>>
>> If (wspd >= 0)
>>   ywind=wspd*sin((270-wdir)*_dtr)
>> Else
>>   ywind = -9999.0
>> Endif
>> return(ywind)
>>
>>
>> *************************************************************************
>>
>> function GetWSpd(xwind,ywind)
>>
>>
>> "set gxout stat"
>> "d mag("xwind","ywind")"
>> rec=sublin(result,8)
>> val=subwrd(rec,4)
>>
>> return (val)
>>
>> *************************************************************************
>>
>> function GetWDir(xwind,ywind)
>>
>> * Return wind direction given x and y components
>>
>> "set gxout stat"
>> "define theta=270-"_rtd"*atan2("ywind","xwind")"
>> "d theta"
>> rec=sublin(result,8)
>> Dir=subwrd(rec,4)
>>
>> If (Dir > 360)
>>   Dir=Dir-360
>> Endif
>>
>> If (Dir < 0)
>>   Dir=360+Dir
>> Endif
>>
>> return(Dir)
>>
>> *************************************************************************
>>
>> function GetXLoc(temp,pres)
>>
>> *-------------------------------------------------
>> * Get x-location on skew-t based on temp, pressure
>> *-------------------------------------------------
>>
>> xloc=(temp-_m1*log10(pres)-_m3)/_m2
>> return(xloc)
>>
>> *************************************************************************
>>
>> function GetTemp(xloc,pres)
>>
>> *-------------------------------------------------
>> * Return temperature at location given by xloc,pres
>> *-------------------------------------------------
>>
>> tempval=_m1*log10(pres)+_m2*xloc+_m3
>> return(tempval)
>>
>> **************************************************************************
>>
>> function GetTheta(temp,pres)
>>
>> *---------------------------------------------------
>> * Calculate theta for a given temperature and pressure
>> *---------------------------------------------------
>>
>> theta=(temp+273.15)*pow(1000/pres,0.286)-273.15
>> return(theta)
>>
>>
>> *************************************************************************
>>
>> function GetThet2(temp,dewp,pres)
>>
>> *---------------------------------------------------
>> * Calculate theta for a given temperature,dewp, and pressure
>> *---------------------------------------------------
>>
>> tempk=273.15+temp
>> dewpk=273.15+dewp
>>
>> es=satvap2(temp)
>> ws=mixratio(es,pres)
>>
>> mix=10*getrh(temp,dewp,pres)*ws
>>
>> exponent=0.2854*(1.0-0.00028*mix)
>> theta=(temp+273.15)*pow(1000/pres,exponent)-273.15
>> return(theta)
>>
>> *************************************************************************
>>
>> function Thetae(temp,dewp,pres)
>>
>> *--------------------------------------------------------------
>> * Return equiv. pot. temp in Kelvin given temp, dewp in celsius
>> * From Bolton (1980) Mon Wea Rev
>> *--------------------------------------------------------------
>>
>> es=satvap2(temp)
>> ws=mixratio(es,pres)
>> mix=10*getrh(temp,dewp,pres)*ws
>> theta=GetThet2(temp,dewp,pres)+273.15
>> TLcl=Templcl(temp,dewp)+273.15
>> thetae=theta*exp((3.376/TLcl-0.00254)*mix*(1.0+0.00081*mix))
>>
>> return(thetae)
>>
>> **************************************************************************
>>
>>
>> function int(i0)
>>
>> *--------------------------
>> * Return integer of i0
>> *--------------------------
>>  i=0
>>  while(i<12)
>>    i=i+1
>>    if(substr(i0,i,1)='.')
>>      i0=substr(i0,1,i-1)
>>      break
>>    endif
>>  endwhile
>> return(i0)
>>
>> *************************************************************************
>>
>> function abs(i)
>>
>> *----------------------------
>> * return absolute value of i
>> *----------------------------
>>
>>  if (i < 0)
>>     absval=-i
>>  else
>>     absval=i
>>  endif
>>
>> return(absval)
>>
>> *************************************************************************
>>
>> function log(i)
>>
>> *---------------------------
>> * return natural log of i
>> *---------------------------
>>
>> "set gxout stat"
>> "d log("i")"
>> rec=sublin(result,8)
>> val=subwrd(rec,4)
>> return(val)
>>
>> *************************************************************************
>>
>> function log10(i)
>>
>> *--------------------------
>> * return log base 10 of i
>> *--------------------------
>>
>> "set gxout stat"
>> "d log10("i")"
>> rec=sublin(result,8)
>> val=subwrd(rec,4)
>> return(val)
>>
>> *************************************************************************
>>
>> function pow(i,j)
>>
>> *-------------------------------
>> * return power of i raised to j
>> *-------------------------------
>>
>> "set gxout stat"
>> "d pow("i","j")"
>> rec=sublin(result,8)
>> val=subwrd(rec,4)
>> return(val)
>>
>> ************************************************************************
>>
>> function cos(i)
>>
>> *-----------------------------------------
>> * return cosine of i, where i is in radians
>> *------------------------------------------
>>
>> "set gxout stat"
>> "d cos("i")"
>> rec=sublin(result,8)
>> val=subwrd(rec,4)
>> return(val)
>>
>> ************************************************************************
>>
>> function sin(i)
>>
>> *------------------------------------------
>> * return sine of i, where i is in radians
>> *------------------------------------------
>>
>> "set gxout stat"
>> "d sin("i")"
>> rec=sublin(result,8)
>> val=subwrd(rec,4)
>> return(val)
>>
>> ************************************************************************
>>
>> function exp(i)
>>
>> *------------------------------------------
>> * return exponential of i
>> *------------------------------------------
>>
>> "set gxout stat"
>> "d exp("i")"
>> rec=sublin(result,8)
>> val=subwrd(rec,4)
>> return(val)
>>
>> ***********************************************************************
>> function round(i)
>>
>> rr=abs(1.0*i)
>> rr=int(rr+0.5)
>> if (i < 0)
>>   rr=-1*rr
>> endif
>> return(rr)
>>
>>
>>
>> -------------- next part --------------
>> An HTML attachment was scrubbed...
>> URL:
>> http://gradsusr.org/pipermail/gradsusr/attachments/20101108/1c1328b3/attachment.html
>>
>> ------------------------------
>>
>> _______________________________________________
>> gradsusr mailing list
>> gradsusr at gradsusr.org
>> http://gradsusr.org/mailman/listinfo/gradsusr
>>
>>
>> End of gradsusr Digest, Vol 9, Issue 13
>> ***************************************
>>
>
>
> _______________________________________________
> gradsusr mailing list
> gradsusr at gradsusr.org
> http://gradsusr.org/mailman/listinfo/gradsusr
>
>

***************************************************
The information contained in this e-mail message 
is intended only for the use of the recipient(s) 
named above and may contain information that is 
privileged, confidential, and/or proprietary. 
If you are not the intended recipient, you may not
review, copy or distribute this message. If you have
received this communication in error, please notify 
the sender immediately by e-mail, and delete the original message.
***************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20101108/7d548be7/attachment-0003.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.png
Type: image/png
Size: 49594 bytes
Desc: not available
Url : http://gradsusr.org/pipermail/gradsusr/attachments/20101108/7d548be7/attachment-0003.png 


More information about the gradsusr mailing list