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.
>
>