## ERROR: (execution) Invalid subscript or subscript out of range.

Solved
Super Contributor
Posts: 324

# ERROR: (execution) Invalid subscript or subscript out of range.

Hi There, what is wrong with this code?

proc iml;

use kaplan;

read all var{monset Survival survival1} into DM;

close;

Survival1 = DM[,3]; Survival = DM[,2]; monset = DM[,1];                                                              /*Survivalival is second column*/  /*monset is first column*/

n = nrow(DM);                                                                              /*number of rows in the dataset = obs*/ /*THE N DOESNT NEED TO BE FIXED*/

segment = J(nrow(DM),1,1); *print segment;

do i = 2 to nrow(DM);

if monset=monset[i+1] then survival1=survival1[i+1];

if monset[i-1]=monset then survival1[i-1]=survival1;

if monset=monset[i-1] then survival1=survival1[i-1];

end;

create Mkaplan var{monset Survival survival1};

append;

quit;

ERROR: (execution) Invalid subscript or subscript out of range.

operation : [ at line 872 column 20

operands  : monset, _TEM1002

MONSET    141 rows      1 col     (numeric)

_TEM1002      1 row       1 col     (numeric)

142

Accepted Solutions
Solution
‎01-10-2014 02:51 PM
Super User
Posts: 23,237

## Re: ERROR: (execution) Invalid subscript or subscript out of range.

It's a valid error. You've told the  loop to go from 2 to the number of rows (nrow) yet reference i+1.

When i=nrow, you're asking the loop to go past the number of rows, which means your out of bounds.

Whenever you see this error you check your boundary conditions.

All Replies
Solution
‎01-10-2014 02:51 PM
Super User
Posts: 23,237

## Re: ERROR: (execution) Invalid subscript or subscript out of range.

It's a valid error. You've told the  loop to go from 2 to the number of rows (nrow) yet reference i+1.

When i=nrow, you're asking the loop to go past the number of rows, which means your out of bounds.

Whenever you see this error you check your boundary conditions.

SAS Super FREQ
Posts: 4,171

## Re: ERROR: (execution) Invalid subscript or subscript out of range.

Yes. The message tells you that the MONSET vector has 141 rows and you are trying to access element 142.

🔒 This topic is solved and locked.