Page 1 of 1

for loop error

Posted: Wed Jul 17, 2013 10:43 am
by leah
Hi there! So I'm trying to create a shell program that will take a list of databases and use them in a series of programs. However, when I run it I get the error, "Next found outside of loop or IF statement." The wierd thing is, when I comment out three of the included programs, it runs until it gets an error related to the programs not being included. If I include just one of those problem programs, I'll get the same error again.

I've gone through those three programs and there are no "nexts" without matching "fors". In the actual program, I also have statements before the next that close the databases, etc. that I have opened, but they don't seem to affect anything. Any thoughts on what could be causing this error? Thanks in advance for your help.

%files = @wdir("P:\Growth\Policy\2013_Immigration_Analysis\Output\CGE")
%files = @wkeep(%files, "*hi.edb *md.edb *lo.edb")

for !i=1 to @wcount(%files)

wfcreate(wf=smallbudmod!i,page=annual) a 2004 2023
%begdat = "2006"
%enddat = "2023"

pagecreate(page=quarterly) q %begdat %enddat
pageselect quarterly
smpl %begdat %enddat

'Open the black box
dbopen p:\bbox\final\2013_1\b130114b.edb as rec

'Change working directory to the specified folder
cd "P:\Growth\Policy\2013_Immigration_Analysis\Output\CGE\"

%db = @word(%filenames,!i)
dbopen %db as recnew

include u:\SBM\dataprep.prg
include u:\SBM\snapacaid.prg
include u:\SBM\badmodelui.prg
include u:\SBM\tadmodel.prg
include u:\SBM\badmodel.prg
include u:\SBM\eitc&doccare.prg

next

Re: for loop error

Posted: Wed Jul 17, 2013 10:45 am
by leah
And this is in EViews 7.

Re: for loop error

Posted: Wed Jul 17, 2013 11:00 am
by EViews Gareth
You can't really use an include inside a loop. Use Exec instead.

Re: for loop error

Posted: Wed Jul 17, 2013 11:27 am
by leah
That solved it, thank you. Out of curiosity, why is that?

Re: for loop error

Posted: Wed Jul 17, 2013 1:31 pm
by EViews Gareth
Include simply does an in place copy and paste of the included file into the source file. When inside a for-loop the technology that performs that copy and paste sort of fails.

Also you cannot include a program more than once. Although you've only included it once, inside a for loop you're sort of including it more than once.

Includes are really meant for "library" like programs that would simply contain sub-routines that would be called by the parent program. They're not really meant for executing raw code (which is why we introduced the Exec command).