<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: Arial; font-size: 10pt; color: #000000'><P>Brian,</P>
<P>Excellent addtional examples.&nbsp; I am using gfsallow right now, and it works fine if the 'b' script is in the same directory as the 'a' script.&nbsp;</P>
<P>But now I'm kinda stuck because I want the b script to be&nbsp;in a different directory.&nbsp;I'm&nbsp;trying to set up&nbsp;a bunch&nbsp;of common scripts in a standalone directory, so they can be accessed from any grads script elswhere on the drive.&nbsp;So pathing is now the issue.</P>
<P>&nbsp;</P>
<P>I'm trying to&nbsp;locate 'script b' using gfspath.</P>
<P>&nbsp;</P>
<P>Say 'script a' is here: c:/grib/a&nbsp;&nbsp;&nbsp;(and executed from that location), &nbsp;and 'script b' (the .gsf script) is here: c:/grib/b</P>
<P>&nbsp;</P>
<P>I can't seem to figure out how to get gfspath to go 'up' one directory, then down into directory b &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR></P>
<P>I tried </P>
<P><FONT face="Courier New">rc = gsfpath("./b") but the scripts hangs on the gfspath command. </FONT></P>
<P><FONT face="Courier New"></FONT>&nbsp;</P>
<P><FONT face="Courier New">I'm on a Windows build of Grads.&nbsp;</FONT></P>
<P><BR></P>
<DIV><FONT size=2>Thanks,<BR>Mark</FONT></DIV><BR><BR>----- Original Message -----<BR>From: "Brian Doty" &lt;doty@cola.iges.org&gt;<BR>To: "GrADS Users Forum" &lt;gradsusr@gradsusr.org&gt;<BR>Sent: Thursday, April 22, 2010 7:42:56 PM GMT -08:00 US/Canada Pacific<BR>Subject: Re: [gradsusr] Pass Data via the 'Return' Expression<BR><BR>The "gsfallow" stuff is usually the better solution, but I will also note that if you have a main script that issues the run command to grads, ie:
<DIV><BR></DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>"run myscript.gs "args</SPAN></FONT></DIV>
<DIV><BR></DIV>
<DIV>and if that script returns something via the <FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>return</SPAN></FONT> statement, then that string is available to the first script in the <FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>result&nbsp;</SPAN></FONT>variable.&nbsp;</DIV>
<DIV><BR></DIV>
<DIV>Example:</DIV>
<DIV><BR></DIV>
<DIV>script a:</DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span><BR></SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>"run b.gs testing"</SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>say "---&gt;"result"&lt;---"</SPAN></FONT></DIV>
<DIV><BR></DIV>
<DIV>script b:</DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span><BR></SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>function b(args)</SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>return(subwrd(args,1))</SPAN></FONT></DIV>
<DIV><BR></DIV>
<DIV>If you run a.gs from within grads, you should see the following line output:</DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span><BR></SPAN></FONT></DIV>
<DIV><FONT class=Apple-style-span size=3 face="'Courier New'"><SPAN style="FONT-SIZE: 13px" class=Apple-style-span>----&gt;testing&lt;----</SPAN></FONT></DIV>
<DIV><BR></DIV>
<DIV>...Brian</DIV>
<DIV><BR></DIV>
<DIV>
<DIV>
<DIV>On Apr 21, 2010, at 8:42 PM, Mark Sponsler wrote:</DIV><BR>
<BLOCKQUOTE>
<DIV>Charles,<BR>It works perfectly now.&nbsp; Excellent example you provided. I had previous read the tutorial provided, but never really understood the implications of it all&nbsp;until I saw your example.&nbsp;It makes perfect sense now.&nbsp; Thanks so much for taking the time to help.&nbsp; &nbsp;Would have never figured it out on my own. &nbsp;&nbsp;<BR><BR>
<DIV>Thanks again,<BR>Mark</DIV><BR><BR>----- Original Message -----<BR>From: Charles Seman&nbsp;<BR>To: GrADS Users Forum&nbsp;<BR>Sent: Wed, 21 Apr 2010 23:47:00 +0000 (UTC)<BR>Subject: Re: [gradsusr] Pass Data via the 'Return' Expression<BR><BR>Hi Mark,<BR><BR>Please find attached main.gs (calling script) and add1.gsf (GrADS script&nbsp;<BR>function).<BR><BR>***********************<BR>* Main script<BR>***********************<BR><BR>rc = gsfallow("on")<BR><BR>iVal = 1<BR><BR>&nbsp;&nbsp;say 'iVal = 'iVal<BR>&nbsp;&nbsp;say 'Making Call to GrADS script function "add1"'<BR><BR>oVal = add1(iVal)<BR><BR>&nbsp;&nbsp;say 'Call Made - Checking for Answer'<BR><BR>&nbsp;&nbsp;say 'oVal = 'oVal<BR><BR>Try using GrADS main script as follows:<BR><BR>ga-&gt; main.gs<BR>iVal = 1<BR>Making Call to GrADS script function "add1"<BR>input val = 1<BR>new val = 2<BR>Passing Variable Back to Main Script<BR>Call Made - Checking for Answer<BR>oVal = 2<BR><BR><BR>in main.gs, a call is made to an external user-defined script function&nbsp;<BR>"add1.gsf" (<A href="http://grads.iges.org/grads/gadoc/gsf.html" target=_blank>http://grads.iges.org/grads/gadoc/gsf.html</A>) and can be&nbsp;<BR>called from *outside* of main.gs because of "rc = gsfallow("on")" in&nbsp;<BR>main.gs and because of the suffix "gsf" for "add1.gsf"...<BR><BR>first, if only the line "rc = gsfallow("on")" is commented out (add1.gsf&nbsp;<BR>exists), the result (you can try this):<BR>ga-&gt; main.gs<BR>iVal = 1<BR>Making Call to GrADS script function "add1"<BR>Function not found: add1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Error occurred on line 12<BR>&nbsp;&nbsp;In file main.gs<BR><BR>next, if the line "rc = gsfallow("on")" is active, but add1.gsf is&nbsp;<BR>renamed to add1.gs (you can try this):<BR>ga-&gt; main.gs<BR>iVal = 1<BR>Making Call to GrADS script function "add1"<BR>Function not found: add1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;Error occurred on line 12<BR>&nbsp;&nbsp;In file main.gs<BR><BR>Hope this helps,<BR>Chuck<BR><BR>Mark Sponsler wrote:<BR>&gt;<BR>&gt; Hi Chales,<BR>&gt; I took a look at the script you referenced and was similar to others&nbsp;<BR>&gt; I've seen where the main script and the subscripts are all encased in&nbsp;<BR>&gt; the same physical file.&nbsp;&nbsp;What I'm trying to accomplish is to have a&nbsp;<BR>&gt; main script in one directory and a bunch of scripts of comomonly used&nbsp;<BR>&gt; routines in a separate directory. The idea is to have the main script&nbsp;<BR>&gt; call one of the common routines, then have the common routine pass&nbsp;<BR>&gt; some variable data back to the main script for additional processing.&nbsp;<BR>&gt;<BR>&gt; Below is a simple example with both scripts in the same directory. The&nbsp;<BR>&gt; problem is the value&nbsp;&nbsp;_val1&nbsp;&nbsp;never gets returned to the main script.&nbsp;&nbsp;<BR>&gt; I'm using Grads 1.9 on WinXP.<BR>&gt;<BR>&gt; Any thoughts or ideas would be welcome!<BR>&gt;<BR>&gt; ***********************<BR>&gt; * Main script<BR>&gt; ***********************<BR>&gt;<BR>&gt; rc = gsfallow("on")<BR>&gt;<BR>&gt; val = 1<BR>&gt;<BR>&gt;&nbsp;&nbsp; say 'Val = 'val<BR>&gt;&nbsp;&nbsp; say 'Making Call to Test_Call'<BR>&gt;<BR>&gt; 'run test_call.gs 1'<BR>&gt;<BR>&gt;&nbsp;&nbsp; say 'Call Made - Checking for Answer'<BR>&gt;<BR>&gt;&nbsp;&nbsp; say 'New val = '_val1<BR>&gt;<BR>&gt;<BR>&gt; Here's the called script<BR>&gt; ************************<BR>&gt; * Seconadry Script<BR>&gt; ************************<BR>&gt; function main (args)<BR>&gt; if (args='')<BR>&gt;&nbsp;&nbsp; say 'No argument provided.&nbsp;&nbsp;Argument must be a value 1-10'<BR>&gt;&nbsp;&nbsp; return<BR>&gt; else<BR>&gt;&nbsp;&nbsp; val = subwrd(args,1)<BR>&gt; endif<BR>&gt;<BR>&gt;&nbsp;&nbsp;say 'Val = 'val<BR>&gt;<BR>&gt; _val1 = (val + 1)<BR>&gt;<BR>&gt;&nbsp;&nbsp;say 'New Val = '_val1<BR>&gt;<BR>&gt;&nbsp;&nbsp;say 'Passing Variable Back to Main Script'<BR>&gt;<BR>&gt;&nbsp;&nbsp; return(_val1)<BR>&gt;<BR>&gt; Thanks,<BR>&gt; Mark<BR>&gt;<BR>&gt;<BR>&gt; ----- Original Message -----<BR>&gt; From: Charles Seman<BR>&gt; To: GrADS Users Forum<BR>&gt; Sent: Tue, 20 Apr 2010 21:21:12 +0000 (UTC)<BR>&gt; Subject: Re: [gradsusr] Pass Data via the 'Return' Expression<BR>&gt;<BR>&gt; Mark,<BR>&gt;<BR>&gt; Don't know if you have resolved this yet, but Bob Hart's "plotskew.gs"<BR>&gt; script has examples of what it appears that you want to do:<BR>&gt;&nbsp;<A href="http://www.iges.org/grads/gadoc/library" target=_blank>http://www.iges.org/grads/gadoc/library</A><BR>&gt;&nbsp;<A href="about:blank" target=_blank>ftp://grads.iges.org/grads/scripts/plotskew.gs</A><BR>&gt;<BR>&gt; Hope this helps,<BR>&gt; Chuck<BR>&gt;<BR>&gt; Mark Sponsler wrote:<BR>&gt; &gt;<BR>&gt; &gt; I have a script that calls a second script (and passes some arguments<BR>&gt; &gt; to it). That works fine. I'm trying to get the second script to return<BR>&gt; &gt; some data back to the first script, but am having difficulty.&nbsp;&nbsp;I use<BR>&gt; &gt; the 'return' command to have the second script return control back the<BR>&gt; &gt; first script, but cannot seem to get any variable data to pass with<BR>&gt; &gt; it. It seems this is possible per the Grads documentation:<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt; &gt;<BR>&gt; &gt; To return from a function, use the |return| command:<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; |return /expression/|<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; The |/expression/| is optional; if not provided, a NULL string<BR>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; will be returned. (A null string is: '') The result of the<BR>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; function is the result of the expression specified on the return<BR>&gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp; command.<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt; &gt;<BR>&gt; &gt; In the second script, the last line is:<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt; &gt;<BR>&gt; &gt; return val1<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt; &gt;<BR>&gt; &gt; Where val1 is a variable string<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt; &gt;<BR>&gt; &gt; Just can't seem to get the first script to read the contents of<BR>&gt; &gt; val1. Could always write the data to a file, but am looking for<BR>&gt; &gt; something a little more elegant.<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt; &gt;<BR>&gt; &gt; Any help would be appreciated,<BR>&gt; &gt; Mark<BR>&gt; &gt;<BR>&gt; &gt; ------------------------------------------------------------------------<BR>&gt; &gt;<BR>&gt; &gt; _______________________________________________<BR>&gt; &gt; gradsusr mailing list<BR>&gt; &gt;&nbsp;<A href="mailto:gradsusr@gradsusr.org" target=_blank>gradsusr@gradsusr.org</A><BR>&gt; &gt;&nbsp;<A href="http://gradsusr.org/mailman/listinfo/gradsusr" target=_blank>http://gradsusr.org/mailman/listinfo/gradsusr</A><BR>&gt; &gt;&nbsp;&nbsp;<BR>&gt;<BR>&gt; --&nbsp;<BR>&gt;<BR>&gt; Please note that&nbsp;<A href="mailto:Charles.Seman@noaa.gov" target=_blank>Charles.Seman@noaa.gov</A>&nbsp;should be considered my NOAA<BR>&gt; email address, not&nbsp;<A href="mailto:cjs@gfdl.noaa.gov" target=_blank>cjs@gfdl.noaa.gov</A>.<BR>&gt;<BR>&gt; ********************************************************************<BR>&gt; Charles Seman&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="mailto:Charles.Seman@noaa.gov" target=_blank>Charles.Seman@noaa.gov</A><BR>&gt; U.S. Department of Commerce / NOAA / OAR<BR>&gt; Geophysical Fluid Dynamics Laboratory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voice: (609) 452-6547<BR>&gt; 201 Forrestal Road&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fax: (609) 987-5063<BR>&gt; Princeton, NJ&nbsp;&nbsp;08540-6649&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="http://www.gfdl.noaa.gov/~cjs/" target=_blank>http://www.gfdl.noaa.gov/~cjs/</A><BR>&gt; ********************************************************************<BR>&gt;<BR>&gt; "The contents of this message are mine personally and do not reflect any<BR>&gt; official or unofficial position of the United States Federal Government,<BR>&gt; the United States Department of Commerce, or NOAA."<BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; gradsusr mailing list<BR>&gt;&nbsp;<A href="mailto:gradsusr@gradsusr.org" target=_blank>gradsusr@gradsusr.org</A><BR>&gt;&nbsp;<A href="http://gradsusr.org/mailman/listinfo/gradsusr" target=_blank>http://gradsusr.org/mailman/listinfo/gradsusr</A><BR>&gt; ------------------------------------------------------------------------<BR>&gt;<BR>&gt; _______________________________________________<BR>&gt; gradsusr mailing list<BR>&gt;&nbsp;<A href="mailto:gradsusr@gradsusr.org" target=_blank>gradsusr@gradsusr.org</A><BR>&gt;&nbsp;<A href="http://gradsusr.org/mailman/listinfo/gradsusr" target=_blank>http://gradsusr.org/mailman/listinfo/gradsusr</A><BR>&gt;&nbsp;&nbsp;&nbsp;<BR><BR>--&nbsp;<BR><BR>Please note that&nbsp;<A href="mailto:Charles.Seman@noaa.gov" target=_blank>Charles.Seman@noaa.gov</A>&nbsp;should be considered my NOAA<BR>email address, not&nbsp;<A href="mailto:cjs@gfdl.noaa.gov" target=_blank>cjs@gfdl.noaa.gov</A>.<BR><BR>********************************************************************<BR>Charles Seman&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="mailto:Charles.Seman@noaa.gov" target=_blank>Charles.Seman@noaa.gov</A><BR>U.S. Department of Commerce / NOAA / OAR<BR>Geophysical Fluid Dynamics Laboratory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; voice: (609) 452-6547<BR>201 Forrestal Road&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fax: (609) 987-5063<BR>Princeton, NJ&nbsp;&nbsp;08540-6649&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="http://www.gfdl.noaa.gov/~cjs/" target=_blank>http://www.gfdl.noaa.gov/~cjs/</A><BR>********************************************************************<BR><BR>"The contents of this message are mine personally and do not reflect any<BR>official or unofficial position of the United States Federal Government,<BR>the United States Department of Commerce, or NOAA."<BR><BR>_______________________________________________<BR>gradsusr mailing list<BR><A href="mailto:gradsusr@gradsusr.org" target=_blank>gradsusr@gradsusr.org</A><BR>http://gradsusr.org/mailman/listinfo/gradsusr<BR></DIV></BLOCKQUOTE></DIV><BR></DIV><BR>_______________________________________________ gradsusr mailing list gradsusr@gradsusr.org http://gradsusr.org/mailman/listinfo/gradsusr </div></body></html>