Statistical programming, matrix languages, and more

IML Log WARNING: Record no longer satisfies where statement

Reply
Super Contributor
Posts: 281

IML Log WARNING: Record no longer satisfies where statement

I have no idea what that means. I am performing a loop which reads portions of data from a SAS dataset, using the command

use _inline_defect_stat1_ where(lot_id=thislot & wafer_id=thiswfr);

The specific command that SAS objects to appears to be:

read all var{wafer_id} into i_wfr;

Now, the dataset itself isn't changing while I am doing this looping in IML. The values of thislot and thiswfr change during the loop, but are fixed at the time the above USE and READ command is executed.

So I am mystified by the WARNING in the SAS Log:

WARNING: Record no longer satisfies where statement.

statement : READ at line 737 column 17

Despite it being a WARNING, this causes the loop to stop executing, and large parts of my dataset aren't read at all via the looping.

Does anyone have any idea what is going on and how to fix it?
SAS Super FREQ
Posts: 3,624

Re: IML Log WARNING: Record no longer satisfies where statement

I've never seen this warning before, but you say that
"the values of thislot and thiswfr change during the loop"
which makes me think that is the cause.

Can you make it happen with SASHELP.class by modifying the following code?

proc iml;
gender = {F M};
cutoff = {60 62};
do j = 1 to ncol(gender);
s = gender;
c = cutoff;
use sashelp.class where(sex=s & height read all var {Height} into h;
print h;
end;
close sashelp.class;
Super Contributor
Posts: 281

Re: IML Log WARNING: Record no longer satisfies where statement

Perhaps I should have been more clear.

The values of thislot and thiswfr change once in the loop, before the READ statement. At the time the USE and READ statements execute, the values of thislot and thiswfr should be fixed.

Outline of code

proc iml;
do thislot=1 to 10;
do thiswfr=1 to 24;
use _inline_defect_stat1_ where(lot_id=thislot & wafer_id=thiswfr);
read all var{wafer_id} into i_wfr;
... do lots of IML things that do not change thislot or thiswfr ...
end;
end;
quit;

Your sample code doesn't cause this problem.
SAS Super FREQ
Posts: 3,624

Re: IML Log WARNING: Record no longer satisfies where statement

Yes, I know that my code doesn't have this problem, but my code DOES have the same form as your code: the WHERE condition is changing in a loop. I can't reproduce your problem, so I was hoping that you might be able to get it to happen with a data set that we both have access to.
SAS Employee
Posts: 94

Re: IML Log WARNING: Record no longer satisfies where statement

Could you do a "show contents" to see what variables are in the data set?
Super Contributor
Posts: 281

Re: IML Log WARNING: Record no longer satisfies where statement

I have examined the dataset using the SAS viewtable command, and I have examined the values being read using SHOW CONTENTS or PRINT statements, and I don't see anything that would appear to be unusual or could possibly cause this WARNING (which really should be an ERROR) message. I should point out that numerous iterations of the looping work properly (as confirmed by SHOW CONTENTS) and then one particular iteration causes this WARNING, and no more looping happens, IML just issues the WARNING and then exits. But I just don't see anything unusual about this particular iteration.

I admit since I don't fully understand the WARNING, I don't really know what to look for. This is a pretty standard data set (in my opinion) where I have multiple LOT_ID and multiple WAFER_ID, plus other variables, and I'm just looping through it in IML, using the WHERE clause to select the portion I need.

Just to clarify for Rick@SAS, I did run your code on my machine, and I did not get the WARNING message. Message was edited by: Paige
SAS Employee
Posts: 94

Re: IML Log WARNING: Record no longer satisfies where statement

I suggest that you contact SAS Technical Support with this problem. They may have seen it before, and if not you can send them your data set, Then it should be possible to reproduce the problem and diagnose the cause.
Ask a Question
Discussion stats
  • 6 replies
  • 420 views
  • 0 likes
  • 3 in conversation