<div dir="ltr"><div class="gmail_default" style="font-size:small">Ashwin,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I&#39;m posting this back to ncl-talk so they know there was a resolution to this problem, and also because I think people will be interested in your error handling question.</div>
<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">I have to be honest and say that NCL doesn&#39;t have the best error handling, but it does provide quite a few &quot;query&quot; functions to try to catch things that might be an issue.  </div>
<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">For example, in the case of your issue with all missing values, you could have caught this issue before calling gsn_polyxxxx by using a combination of the &quot;all&quot; and &quot;ismissing&quot; functions:</div>
<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small"><font face="courier new, monospace">  if(all(ismissing(x)).or.all(ismissing(y))) then</font></div><div class="gmail_default" style="font-size:small">
<font face="courier new, monospace">     print(&quot;Error encountered, either x and/or y is all missing&quot;)</font></div><div class="gmail_default" style="font-size:small"><font face="courier new, monospace">  else</font></div>
<div class="gmail_default" style="font-size:small"><font face="courier new, monospace">     gsn_polyxxxx(wks,plot,x,y,res)</font></div><div class="gmail_default" style="font-size:small"><font face="courier new, monospace">  end if</font></div>
<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">The URL you pointed to is a bit old, but I believe it could still apply. The basic gist is that if you write your own NCL function to calculate something, then you can add your own error checking by creating, say, an &quot;error&quot; attribute that will allow the code that&#39;s calling this function to know whether the function was successful.</div>
<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">For example, if the above code was going to be put in a function, then you can create your own &quot;error&quot; attribute and attach it to the return value:</div>
<div class="gmail_default" style="font-size:small"><span style="font-family:&#39;courier new&#39;,monospace"><br></span></div><div class="gmail_default" style="font-size:small"><span style="font-family:&#39;courier new&#39;,monospace">; Assume &quot;ret&quot; is the return value for this function</span><br>
</div><div class="gmail_default" style="font-size:small"><div class="gmail_default"><font face="courier new, monospace">  if(all(ismissing(x)).or.all(ismissing(y))) then</font></div><div class="gmail_default"><font face="courier new, monospace">     print(&quot;Error encountered, either x and/or y is all missing&quot;)</font></div>
<div class="gmail_default"><font face="courier new, monospace">     ret@error = 1   ; Anything not equal to 0 implies an error</font></div><div class="gmail_default"><font face="courier new, monospace">  else</font></div>
<div class="gmail_default"><font face="courier new, monospace">     gsn_polyxxxx(wks,plot,x,y,res)</font></div><div class="gmail_default"><font face="courier new, monospace">     ret@error = 0</font></div><div class="gmail_default">
<font face="courier new, monospace">  end if</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">If you have a procedure instead, then you can attach &quot;error&quot; as an attribute of one of the input arguments, but this is a bit kludgy.</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">In general, to catch errors:</font></div><div class="gmail_default">
<ul><li><span style="font-family:arial,helvetica,sans-serif">Use &quot;if statements&quot; along with the &quot;any&quot;, &quot;all&quot;, and &quot;ismissing&quot; functions to catch &quot;bad&quot; data before you call a function.<br>
<br></span></li><li><span style="font-family:arial,helvetica,sans-serif">Use &quot;isnan_ieee&quot; and &quot;replace_ieeenan&quot; to catch and fix NaNs in your data (&quot;ismissing&quot; won&#39;t work on these).<br><br>
</span></li><li><span style="font-family:arial,helvetica,sans-serif">Use &quot;isfilepresent&quot; to test for a valid supported file before trying to open it with &quot;addfile&quot;.<br></span><br></li><li><span style="font-family:arial,helvetica,sans-serif">Use &quot;typeof&quot; or one of the &quot;isxxxx&quot; (isfloat, isdouble, etc) functions if you need to check the type of a variable before passing it to a function that might be strict about the type of variable being passed to it.<br>
<br></span></li><li><span style="font-family:arial,helvetica,sans-serif">Use &quot;dimsizes&quot; to check the dimension sizes and/or rank of a variable before passing it to a function.<br><br></span></li><li><span style="font-family:arial,helvetica,sans-serif">Use &quot;isatt&quot; to check for the presence of a required attribute, like &quot;units&quot; before calling a routine that might expect data to come in with a particular units, like &quot;mb&quot;.</span></li>
</ul><div><font face="arial, helvetica, sans-serif">This is a good question, and I&#39;ll try to see that this information gets added somewhere in our documentation. We have plans to overhaul the very old &quot;Getting Started Using NCL&quot; document, and this would be a good candidate for that.</font></div>
<div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">--Mary</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div></div></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Sun, Aug 10, 2014 at 4:33 AM, ashwinD12 . <span dir="ltr">&lt;<a href="mailto:winash12@gmail.com" target="_blank">winash12@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div><div>Thanks Mary for your response. As soon as I printed out what the values were  I knew where I went wrong.<br><br>As a general NCL question - what are best practices for error handling other than printVarSummary(); ?<br>

</div><br>Is this a template ? <br><br><a href="https://www.ncl.ucar.edu/Support/talk_archives/2006/0799.html" target="_blank">https://www.ncl.ucar.edu/Support/talk_archives/2006/0799.html</a><br><br></div>Regards,<br>Ashwin.<br>
</div><div class="HOEnZb"><div class="h5"><div class="gmail_extra">
<br><br><div class="gmail_quote">On Sun, Aug 10, 2014 at 10:46 AM, Mary Haley <span dir="ltr">&lt;<a href="mailto:haley@ucar.edu" target="_blank">haley@ucar.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div class="gmail_default" style="font-size:small">Ashwin,</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">You were correct to post this kind of question to ncl-talk and not wrfhelp, because this is indeed an NCL error.</div>


<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">The error is coming out of some internal code that attaches primitives to a plot, like polylines, polygons, or polymarkers.  From what I can see from the internal code, it looks like you might be passing an array of all missing values to a routine like gsn_polyline, gsn_polymarker, or similar.</div>


<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">What is on line 200 of your util/plotgrids_new.ncl file?  If it is a call to one of these routines, then I suggest that you print out the x and y arrays that you are passing to it to make sure they are valid values.</div>


<div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">--Mary</div><div class="gmail_default" style="font-size:small"><br></div></div><div class="gmail_extra"><br>

<br>
<div class="gmail_quote"><div><div>On Fri, Aug 8, 2014 at 6:02 AM, ashwinD12 . <span dir="ltr">&lt;<a href="mailto:winash12@gmail.com" target="_blank">winash12@gmail.com</a>&gt;</span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div>
<div dir="ltr"><div><div>Hello,<br></div>           Although this is a file you encounter in WRF it is still a NCL error so I thought I would post here first. <br><br></div>NCL version is 6.2.0. I used the following binary ncl_ncarg-6.2.0.Linux_Debian7.4_x86_64_nodap_gcc472.tar<br>



<br><div>I get this error when I type ncl util/plotgrids_new.ncl<br>fatal:Subscript out of range, error in subscript #0<br> fatal:An error occurred reading xf<br> fatal:[&quot;Execute.c&quot;:8567]:Execute: Error occurred at or near line 4363 in file $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl<br>



<br> fatal:[&quot;Execute.c&quot;:8567]:Execute: Error occurred at or near line 4578 in file $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl<br><br>fatal:[&quot;Execute.c&quot;:8567]:Execute: Error occurred at or near line 200 in file util/plotgrids_new.ncl<br>



<br></div><div>I also tried with the plotgrids_old.ncl and got similar errors.<br></div><div><br></div><div>There was a posting on a earlier message related to the setting of the DISPLAY variable. When I unset that I get OS related errors. <br>



<br></div><div>Any suggestions would be appreciated.<br></div><div>Regards,<br>Ashwin.<br></div><div><br></div></div>
<br></div></div>_______________________________________________<br>
ncl-talk mailing list<br>
List instructions, subscriber options, unsubscribe:<br>
<a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" target="_blank">http://mailman.ucar.edu/mailman/listinfo/ncl-talk</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>