Hi Ben Thanks for the follow up. The error was a 'kind of' red herring. I have a script that needs to run across 2 different data sources and the variable list doesn't quite match between them. I was wanting to use the DO IF block to execute a specific set of actions against only one of the data sources, as the block referred to a variable that was only in one of the data sources. So I suspect that it is the compilation and validation of the script that was throwing the error when it encounters a reference to a variable that isn't in the script. I had erroneously thought that the error was being thrown during execution, not validation.
Regards Stuart -----Original Message----- From: Ben Pfaff [mailto:b...@cs.stanford.edu] Sent: Monday, 3 February 2014 5:04 AM To: Stuart McKenzie Cc: pspp-users@gnu.org Subject: Re: DO IF Block appears to execute regardless On Thu, Jan 16, 2014 at 02:49:33PM +1100, Stuart McKenzie wrote: > I have a block of code > > COMPUTE PulseCheck = INDEX(UPCASE(@JobName),"PULSE") > 0. > > DO IF (PulseCheck < 1). > Recode CONT (Convert) into CONT1. > *do other stuff > END IF. > > If I include the line > LIST PulseCheck > I see that PulseCheck is being calculated correctly so that line > appears to be correct, however, the DO IF block of code currently > executes regardless of the value of PulseCheck. This script is used to > run across 2 data files, one of which has the CONT variable and the > other doesn't, so I need to skip over this block when the CONT > variable does not exist. Am I missing something stupidly obvious > here? The less preferred solution is to use 2 scripts, but that has > other implications which I would prefer not to have to deal with. I finally took a look at this. Sorry about the long delay. I can't reproduce the problem here. When I run the following, for example: DATA LIST LIST NOTABLE/input. BEGIN DATA. 1 2 3 4 5 END DATA. DO IF input < 3. RECODE input (1=2)(ELSE=COPY) INTO output. END IF. LIST. I see the expected output: Data List input output ----------------- 1.00 2.00 2.00 2.00 3.00 . 4.00 . 5.00 . which shows that indeed the RECODE isn't doing anything for input values less than 3. If you can provide a complete example of syntax that doesn't behave as you expect, I'll figure out the problem. Thanks, Ben. _______________________________________________ Pspp-users mailing list Pspp-users@gnu.org https://lists.gnu.org/mailman/listinfo/pspp-users