That makes sense.  Thanks for the follow-up, and let us know if you
suspect that there is anything wrong with PSPP.

On Mon, Feb 03, 2014 at 09:23:35AM +1100, Stuart McKenzie wrote:
> 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

Reply via email to