<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">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" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">"run myscript.gs "args</span></font></div><div><br></div><div>and if that script returns something via the <font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">return</span></font> statement, then that string is available to the first script in the <font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">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" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">"run b.gs testing"</span></font></div><div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">say "---&gt;"result"&lt;---"</span></font></div><div><br></div><div>script b:</div><div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">function b(args)</span></font></div><div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">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" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;"><br></span></font></div><div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 13px;">----&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 type="cite"><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">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">http://www.iges.org/grads/gadoc/library</a><br>&gt;&nbsp;<a href="ftp://grads.iges.org/grads/scripts/plotskew.gs">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">gradsusr@gradsusr.org</a><br>&gt; &gt;&nbsp;<a href="http://gradsusr.org/mailman/listinfo/gradsusr">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">Charles.Seman@noaa.gov</a>&nbsp;should be considered my NOAA<br>&gt; email address, not&nbsp;<a href="mailto:cjs@gfdl.noaa.gov">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">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/">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">gradsusr@gradsusr.org</a><br>&gt;&nbsp;<a href="http://gradsusr.org/mailman/listinfo/gradsusr">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">gradsusr@gradsusr.org</a><br>&gt;&nbsp;<a href="http://gradsusr.org/mailman/listinfo/gradsusr">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">Charles.Seman@noaa.gov</a>&nbsp;should be considered my NOAA<br>email address, not&nbsp;<a href="mailto:cjs@gfdl.noaa.gov">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">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/">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">gradsusr@gradsusr.org</a><br>http://gradsusr.org/mailman/listinfo/gradsusr<br></div></blockquote></div><br></div></body></html>