Incorrect or $null values generated when using Filler node in PASW Modeler 14.0.1 and error messages in Modeler 14.0.2

Technote (troubleshooting)


Problem(Abstract)

In PASW Modeler 14.0.0 or 14.0.1, when you execute a task by using OFFSET function in a Filler node, you get different results in Modeler 13 and Modeler 14. When using the @OFFSET function, it is not retrieving the correct data value when used in conjunction with an IF statement.

For example:
In Modeler 13, if I want Modeler to retrieve a value of a future case if a cell was empty, I would use the following inside a 'FILLER' node:

if <variable1> = undef and @OFFSET('<variable2>',-1)='<variable2>' then @OFFSET(<variable1>,-1)
else <variable1>
endif

I would get valid results to fill in the undefined variables. However in Modeler 14.0.0 or 14.0.1, using the same settings in the FILLER node will still return '$null' values.

Resolving the problem

This has been reported to development and due to more serious defects, this feature has been dropped from the FILLER node in Modeler 14.0.2 onwards.

Due to a number of issues regarding the @OFFSET function in Modeler, where customers were being shown incorrect data, IBM SPSS has decided to make a range of fixes that relate to the function of self-referential fillers where the old (pre-filled) values were being referenced instead of the updated values as expected. For more information on these issues, please see the following resolution ID's: 90424; 87237; 88833

IBM SPSS has decided that rather than allow our program to display incorrect data, you will be warned with an error message.

If you use the @OFFSET function, which looks ahead of the data and return back with a value, the error you'll receive reads:

"Self-referential @OFFSET function cannot use literal look-ahead"

If you use the '@LAST_NON_BLANK' function, the message reads:

"Internal Error: Impossible case in file "code_generator.cpp"

A simple workaround of using a DERIVE node instead of a FILLER node will provide the data you require.
E.g. Instead of using a FILLER node containing:
Condition:
@BLANK(@FIELD) and @OFFSET(<var>,1)=id
Replace with:
@LAST_NON_BLANK(@FIELD)

Use the following in a DERIVE node with:
If:
@BLANK(@FIELD) and @OFFSET(<var>,1)=id
Then:
@LAST_NON_BLANK(@FIELD)
Else:
@FIELD

And then use a FILTER node to remove the original fields and replace them with the newly generated ones.

IBM SPSS would like to sincerely apologise for the confusion and inconvenience this has caused

Historical Number

91080

Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

SPSS Modeler
Modeler

Software version:

14.1, 14.2, 15.0

Operating system(s):

Windows

Reference #:

1487662

Modified date:

2013-04-19

Translate my page

Machine Translation

Content navigation