help-octave
[Top][All Lists]
Advanced

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

Problem calling an external program (Gretl) multiple times.


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

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.


reply via email to

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