help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem calling an external program (Gretl) multiple times.


From: Werner
Subject: Re: Problem calling an external program (Gretl) multiple times.
Date: Thu, 4 Feb 2010 18:42:32 +1100

mmm... you may need to clarify that for me a little, I'm not sure on the correct use of fflush, am I supposed to be flushing the output stream? I've tried the following all to no avail, the first iteration of this code works but on the second pass through it fails (doesn't execute the first command in gretl):
-------------------------------------------------------------------------
[in,out,pid] = popen2("gretlcli","");
sleep (0.5);

for i=1:size(GretlCode,1)
fputs(in,sprintf("%s%s",GretlCode(i,:),"\n"));
fflush(in);
end
GretlOutput = readstream(out);
---------------------------------------------------------------------
------------------------------------------------------------------------
[in,out,pid] = popen2("gretlcli","");
sleep (0.5);

for i=1:size(GretlCode,1)
fputs(in,sprintf("%s%s",GretlCode(i,:),"\n"));
fflush(out);
end
GretlOutput = readstream(out);
---------------------------------------------------------------------
------------------------------------------------------------------------
[in,out,pid] = popen2("gretlcli","");
sleep (0.5);

for i=1:size(GretlCode,1)
fputs(in,sprintf("%s%s",GretlCode(i,:),"\n"));
end
fflush(in);
GretlOutput = readstream(out);
---------------------------------------------------------------------
------------------------------------------------------------------------
[in,out,pid] = popen2("gretlcli","");
sleep (0.5);

for i=1:size(GretlCode,1)
fputs(in,sprintf("%s%s",GretlCode(i,:),"\n"));
end
fflush(out);
GretlOutput = readstream(out);
---------------------------------------------------------------------


On Thu, Feb 4, 2010 at 5:56 PM, Jaroslav Hajek <address@hidden> wrote:
On Thu, Feb 4, 2010 at 12:42 AM, Werner <address@hidden> wrote:
> I am writing code which generates data, and then calls an external program
> (Gretl) to analyse that data and pass back its output which is then saved.
> The problem is that while the first call behaves as I would expect with all
> the data being produced the subsequent call gets stuck somewhere. That is to
> say the commands passed to Gretl are not all executed (beginning with the
> first line) so that when the subsequent output is passed back it contains
> none of the data that I want. My code is as follows:
>
> -----------------------------------------------------------------------------------------------------------
> for i=1:1:NumQus
>
> ## Generate Gretl script
> GretlScript = [sprintf("%s%s%s","open ", DataDirect, DataFileName);"setobs
> 12 1990:01 --time-series";"ols Y const X1 X2";"modtest  12 --autocorr"];
>
> ## Run gretl script and get output
> GretlOutput = rungretlcode(GretlScript);
>
> ## Save GretlOutput
>
> end
>
> ---------------------------------------------------------------------------------------------------------
>
> function GretlOutput = rungretlcode(GretlCode)
>
>     [in,out,pid] = popen2("gretlcli","");
>     sleep (0.5);
>
>     for i=1:size(GretlCode,1)
>         fputs(in,sprintf("%s%s",GretlCode(i,:),"\n"));
>     end
>
>     GretlOutput = readstream(out);
>
>     fclose(in);
>     fclose(out);
>
> end
>
> --------------------------------------------------------------------------------------------------------------
>
> I know that on the second iteration the command is being passed correctly,
> but it doesn't seem that Gretl is executing it for some reason.
>
> I am using GNU Octave, version 3.0.5 and Gretl version 1.8.1 on Ubuntu
> (Karmic Koala).
>
> On a side note, in my function rungretlcode I give a pause to allow gretl to
> open. Is there any way to check the system whether gretl is open and then
> begin execution rather than some arbitrary pause.
>
> Thanks for you help in advance.
>
>
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://www-old.cae.wisc.edu/mailman/listinfo/help-octave
>
>

Please go back to the answer you got from me 8 days ago, and read
carefully the second sentence, word by word:

"Don't forget to flush commands after they're written."

help fflush

regards

--
RNDr. Jaroslav Hajek, PhD
computing expert & GNU Octave developer
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz


reply via email to

[Prev in Thread] Current Thread [Next in Thread]