Hello, I am trying to write a code to create a dummy variable for delivery admissions using an array for ICD10 codes and Procedure codes but I run into an error "Array subscript out of range at line 172 column 12. None."
data scdny2016dx;
set SCDNY2016;
/* Initialize flags and variables */
scdny2016dx = 0; /* Sickle cell diagnosis flag */
delivery_flag = 0; /* Delivery diagnosis flag */
dxpos = .; /* Diagnosis position */
/* Array for diagnosis codes */
array dx_vars {*} I10_DX1-I10_DX25;
/* Array for procedure codes */
array pr_vars {*} I10_PR1-I10PR10; /* Adjust based on how procedure variables are named */
/* Loop through diagnosis variables to check for sickle cell disease */
do i = 1 to dim(dx_vars);
if dx_vars[i] in ('D5700', 'D5701', 'D5702', 'D57211', 'D57212', 'D57219',
'D57412', 'D57419', 'D57811', 'D57812', 'D57819',
'D571', 'D5720', 'D5740', 'D5780', 'D57411') then do;
scdny2016dx = 1; /* Flag for sickle cell diagnosis */
dxpos = i;
dx = dx_vars[i];
output;
leave;
end;
end;
/* Loop through diagnosis codes to check for delivery diagnoses (ICD-10) */
if dx_vars[i] in ('O60', 'O61', 'O62', 'O63', 'O64', 'O65', 'O66', 'O67',
'O68', 'O69', 'O70', 'O71', 'O72', 'O73', 'O74', 'O75',
'O76', 'O77', 'O78', 'O79', 'O80', 'O81', 'O82', 'Z73',
'Z38') then do;
delivery_flag = 1; /* Flag for delivery diagnosis */
output; /* Output valid record */
end;
/* Loop through procedure codes to check for pregnancy-related deliveries */
do j = 1 to dim(pr_vars);
if pr_vars[j] in ('10D07Z3', '10D07Z4', '10D07Z5', '10D07Z6', '10D07Z7',
'10D07Z8', '10D00Z0', '10D00Z1', '10D00Z2', '10E0XZZ',
'0DQR0ZZ', '0HQ9XZZ', '0KQM0ZZ', '0W8NXZZ') then do;
delivery_flag = 1; /* Flag for delivery procedure code */
output; /* Output valid record */
end;
end;
drop i j; /* Drop the loop index variables */
run;
Since the variables are character, you need to use $ in the ARRAY statement. Also Array pr_vars is missing an underscore.
/* Array for diagnosis codes */
array dx_vars {*} $ I10_DX1-I10_DX25;
/* Array for procedure codes */
array pr_vars {*} $ I10_PR1-I10_PR10;
Hello @charleenjm,
@charleenjm wrote:
... I run into an error "Array subscript out of range at line 172 column 12. ..."
This error message occurred because for at least one observation in dataset SCDNY2016 the IF condition in the loop checking for sickle cell disease was never met and hence the LEAVE statement was not executed. As a consequence, the DO loop was left with the end value plus 1 in variable i, that is i=dim(dx_vars)+1=26. Indeed, the log contains "i=26" (but it would be easier to find if you posted the log as text, not as a screenshot).
It appears that you forgot the DO-END statement in (what is announced to be) the "loop ... to check for delivery diagnoses", so that no loop is executed here and only the leftover value i from the previous DO loop is used. If that value is too large (as explained above), you get the error message when referring to dx_vars[i] in the next IF statement. Otherwise, the log might be clean, but the result is likely wrong.
The missing underscore, well spotted by @Kathryn_SAS, must have caused another error message (but you didn't post the entire log of the DATA step, so we don't see it), while the dollar signs in the array definitions are optional for existing character variables.
142 ods listing close;ods html5 (id=saspy_internal) file=stdout options(bitmap_mode='inline') device=svg style=HTMLBlue; ods
142! graphics on / outputfmt=png;
NOTE: Writing HTML5(SASPY_INTERNAL) Body file: STDOUT
143
144 data scdny2016dx;
145 set SCDNY2016;
146 /* Initialize flags and variables */
147 scdny2016dx = 0; /* Sickle cell diagnosis flag */
148 delivery_flag = 0; /* Delivery diagnosis flag */
149 dxpos = .; /* Diagnosis position */
150
151 /* Array for diagnosis codes */
152 array dx_vars {*} I10_DX1-I10_DX25;
153
154 /* Array for procedure codes */
155 array pr_vars {*} I10_PR1-I10_PR14; /* Adjust based on how procedure variables are named */
156
157 /* Loop through diagnosis variables to check for sickle cell disease */
158 do i = 1 to dim(dx_vars);
159 if dx_vars[i] in ('D5700', 'D5701', 'D5702', 'D57211', 'D57212', 'D57219',
160 'D57412', 'D57419', 'D57811', 'D57812', 'D57819',
161 'D571', 'D5720', 'D5740', 'D5780', 'D57411') then do;
162 scdny2016dx = 1; /* Flag for sickle cell diagnosis */
163 dxpos = i; /* Store diagnosis position */
164 dx = dx_vars[i]; /* Store diagnosis code */
165 output; /* Output valid record */
166 leave; /* Exit loop after first match */
167 end;
168 end;
169
170 /* Loop through diagnosis codes to check for pregnancy diagnoses (ICD-10) */
171 /* This loop should no longer reference dx_vars[i] directly */
172 if dx_vars[i] in ('O60', 'O61', 'O62', 'O63', 'O64', 'O65', 'O66', 'O67',
173 'O68', 'O69', 'O70', 'O71', 'O72', 'O73', 'O74', 'O75',
174 'O76', 'O77', 'O78', 'O79', 'O80', 'O81', 'O82', 'Z73',
175 'Z38') then do;
176 delivery_flag = 1; /* Flag for delivery diagnosis */
177 output; /* Output valid record */
178 end;
179
180 /* Loop through procedure codes to check for pregnancy-related deliveries */
181 do j = 1 to dim(pr_vars);
182 if pr_vars[j] in ('10D07Z3', '10D07Z4', '10D07Z5', '10D07Z6', '10D07Z7',
183 '10D07Z8', '10D00Z0', '10D00Z1', '10D00Z2', '10E0XZZ',
184 '0DQR0ZZ', '0HQ9XZZ', '0KQM0ZZ', '0W8NXZZ') then do;
185 delivery_flag = 1; /* Flag for delivery procedure code */
186 output; /* Output valid record */
187 end;
188 end;
189
190 drop i j; /* Drop the loop index variables */
191 run;
ERROR: Array subscript out of range at line 172 column 12.
AGE=46 AGEDAY=. AGEMONTH=. AHOUR=0900 AMONTH=. ANESTH=20 ATYPE=1 AWEEKEND=0 BILLTYPE=0111 BLOOD=0 BWT=. DaysToEvent=. DHOUR=1500
DIED=0 DISP_X=01 DISPUB04=1 DISPUNIFORM=1 DMONTH=. DQTR=. DRG=974 DRG_NoPOA=974 DRGVER=33 DSHOSPID=0001 DXPOA1=Y DXPOA2=Y DXPOA3=Y
DXPOA4=Y DXPOA5=Y DXPOA6=Y DXPOA7=N DXPOA8=Y DXPOA9=N DXPOA10=Y DXPOA11=Y DXPOA12=Y DXPOA13=Y DXPOA14=Y DXPOA15=N DXPOA16=N
DXPOA17=N DXPOA18=Y DXPOA19=X DXPOA20=Y DXPOA21=Y DXPOA22= DXPOA23= DXPOA24= DXPOA25= DXVER=10 E_POA1= E_POA2= E_POA3=
E_POA4= E_POA5= E_POA6= E_POA7= E_POA8= E_POA9= FEMALE=0 HCUP_ED=1 HCUP_OS=0 HISPANIC=0 HISPANIC_X=2 Homeless=. HOSPST=NY
I10_DX_Admitting=B20 I10_DX1=B20 I10_DX2=J9601 I10_DX3=B59 I10_DX4=R6520 I10_DX5=N170 I10_DX6=A419 I10_DX7=E870 I10_DX8=N183
I10_DX9=K921 I10_DX10=B3781 I10_DX11=F329 I10_DX12=K219 I10_DX13=E785 I10_DX14=E860 I10_DX15=E222 I10_DX16=F4322 I10_DX17=E8342
I10_DX18=I129 I10_DX19=Z8572 I10_DX20=D509 I10_DX21=E872 I10_DX22= I10_DX23= I10_DX24= I10_DX25= I10_ECAUSE1= I10_ECAUSE2=
I10_ECAUSE3= I10_ECAUSE4= I10_ECAUSE5= I10_ECAUSE6= I10_ECAUSE7= I10_ECAUSE8= I10_ECAUSE9= I10_NDX=21 I10_NECAUSE=0 I10_NPR=4
I10_PR1=5A1945Z I10_PR2=0BH17EZ I10_PR3=0BBD8ZX I10_PR4=0B958ZX I10_PR5= I10_PR6= I10_PR7= I10_PR8= I10_PR9= I10_PR10=
I10_PR11= I10_PR12= I10_PR13= I10_PR14= I10_PROCTYPE=1 KEY=362016100000001 LOS=40 LOS_X=40 MDC=25 MDC_NoPOA=25 MDNUM1_R=117363
MDNUM2_R=116572 MEDINCSTQ=. OS_TIME=0 PAY1=2 PAY1_X=17 PAY2=. PAY2_X= PAY3=. PAY3_X= PAYER1_X=211 PAYER2_X= PL_CBSA=. PL_NCHS=.
PL_RUCC=. PL_UIC=. PL_UR_CAT4=. POA_Disch_Edit1=0 POA_Disch_Edit2=0 POA_Hosp_Edit1=0 POA_Hosp_Edit2=0 POA_Hosp_Edit3=0
POA_Hosp_Edit3_Value=0.01 PointOfOrigin_X=1 PointOfOriginUB04=1 PRDAY1=. PRDAY2=. PRDAY3=. PRDAY4=. PRDAY5=. PRDAY6=. PRDAY7=.
PRDAY8=. PRDAY9=. PRDAY10=. PRDAY11=. PRDAY12=. PRDAY13=. PRDAY14=. PRVER=10 PSTATE=NY PSTCO=. PSTCO2=. RACE=2 RACE_X=02
TOTCHG=356997 TOTCHG_X=356997 TRAN_IN=0 TRAN_OUT=0 VisitLink=. YEAR=2016 ZIP= ZIP3= ZIPINC_QRTL=. AYEAR=. BMONTH=. BYEAR=.
PRMONTH1=. PRMONTH2=. PRMONTH3=. PRMONTH4=. PRMONTH5=. PRMONTH6=. PRMONTH7=. PRMONTH8=. PRMONTH9=. PRMONTH10=. PRMONTH11=.
PRMONTH12=. PRMONTH13=. PRMONTH14=. PRYEAR1=. PRYEAR2=. PRYEAR3=. PRYEAR4=. PRYEAR5=. PRYEAR6=. PRYEAR7=. PRYEAR8=. PRYEAR9=.
PRYEAR10=. PRYEAR11=. PRYEAR12=. PRYEAR13=. PRYEAR14=. scdny2016dx=0 delivery_flag=0 dxpos=. i=26 dx= j=. _ERROR_=1 _N_=1
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 1 observations read from the data set WORK.SCDNY2016.
WARNING: The data set WORK.SCDNY2016DX may be incomplete. When this step was stopped there were 0 observations and 212 variables.
WARNING: Data set WORK.SCDNY2016DX was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
192
193 ods html5 (id=saspy_internal) close;ods listing;
ERROR: Array subscript out of range at line 172 column 12. None
Thank you. This was helpful. Here's the complete log:
142 ods listing close;ods html5 (id=saspy_internal) file=stdout options(bitmap_mode='inline') device=svg style=HTMLBlue; ods
142! graphics on / outputfmt=png;
NOTE: Writing HTML5(SASPY_INTERNAL) Body file: STDOUT
143
144 data scdny2016dx;
145 set SCDNY2016;
146 /* Initialize flags and variables */
147 scdny2016dx = 0; /* Sickle cell diagnosis flag */
148 delivery_flag = 0; /* Delivery diagnosis flag */
149 dxpos = .; /* Diagnosis position */
150
151 /* Array for diagnosis codes */
152 array dx_vars {*} I10_DX1-I10_DX25;
153
154 /* Array for procedure codes */
155 array pr_vars {*} I10_PR1-I10_PR14; /* Adjust based on how procedure variables are named */
156
157 /* Loop through diagnosis variables to check for sickle cell disease */
158 do i = 1 to dim(dx_vars);
159 if dx_vars[i] in ('D5700', 'D5701', 'D5702', 'D57211', 'D57212', 'D57219',
160 'D57412', 'D57419', 'D57811', 'D57812', 'D57819',
161 'D571', 'D5720', 'D5740', 'D5780', 'D57411') then do;
162 scdny2016dx = 1; /* Flag for sickle cell diagnosis */
163 dxpos = i; /* Store diagnosis position */
164 dx = dx_vars[i]; /* Store diagnosis code */
165 output; /* Output valid record */
166 leave; /* Exit loop after first match */
167 end;
168 end;
169
170 /* Loop through diagnosis codes to check for pregnancy diagnoses (ICD-10) */
171 /* This loop should no longer reference dx_vars[i] directly */
172 if dx_vars[i] in ('O60', 'O61', 'O62', 'O63', 'O64', 'O65', 'O66', 'O67',
173 'O68', 'O69', 'O70', 'O71', 'O72', 'O73', 'O74', 'O75',
174 'O76', 'O77', 'O78', 'O79', 'O80', 'O81', 'O82', 'Z73',
175 'Z38') then do;
176 delivery_flag = 1; /* Flag for delivery diagnosis */
177 output; /* Output valid record */
178 end;
179
180 /* Loop through procedure codes to check for pregnancy-related deliveries */
181 do j = 1 to dim(pr_vars);
182 if pr_vars[j] in ('10D07Z3', '10D07Z4', '10D07Z5', '10D07Z6', '10D07Z7',
183 '10D07Z8', '10D00Z0', '10D00Z1', '10D00Z2', '10E0XZZ',
184 '0DQR0ZZ', '0HQ9XZZ', '0KQM0ZZ', '0W8NXZZ') then do;
185 delivery_flag = 1; /* Flag for delivery procedure code */
186 output; /* Output valid record */
187 end;
188 end;
189
190 drop i j; /* Drop the loop index variables */
191 run;
ERROR: Array subscript out of range at line 172 column 12.
AGE=46 AGEDAY=. AGEMONTH=. AHOUR=0900 AMONTH=. ANESTH=20 ATYPE=1 AWEEKEND=0 BILLTYPE=0111 BLOOD=0 BWT=. DaysToEvent=. DHOUR=1500
DIED=0 DISP_X=01 DISPUB04=1 DISPUNIFORM=1 DMONTH=. DQTR=. DRG=974 DRG_NoPOA=974 DRGVER=33 DSHOSPID=0001 DXPOA1=Y DXPOA2=Y DXPOA3=Y
DXPOA4=Y DXPOA5=Y DXPOA6=Y DXPOA7=N DXPOA8=Y DXPOA9=N DXPOA10=Y DXPOA11=Y DXPOA12=Y DXPOA13=Y DXPOA14=Y DXPOA15=N DXPOA16=N
DXPOA17=N DXPOA18=Y DXPOA19=X DXPOA20=Y DXPOA21=Y DXPOA22= DXPOA23= DXPOA24= DXPOA25= DXVER=10 E_POA1= E_POA2= E_POA3=
E_POA4= E_POA5= E_POA6= E_POA7= E_POA8= E_POA9= FEMALE=0 HCUP_ED=1 HCUP_OS=0 HISPANIC=0 HISPANIC_X=2 Homeless=. HOSPST=NY
I10_DX_Admitting=B20 I10_DX1=B20 I10_DX2=J9601 I10_DX3=B59 I10_DX4=R6520 I10_DX5=N170 I10_DX6=A419 I10_DX7=E870 I10_DX8=N183
I10_DX9=K921 I10_DX10=B3781 I10_DX11=F329 I10_DX12=K219 I10_DX13=E785 I10_DX14=E860 I10_DX15=E222 I10_DX16=F4322 I10_DX17=E8342
I10_DX18=I129 I10_DX19=Z8572 I10_DX20=D509 I10_DX21=E872 I10_DX22= I10_DX23= I10_DX24= I10_DX25= I10_ECAUSE1= I10_ECAUSE2=
I10_ECAUSE3= I10_ECAUSE4= I10_ECAUSE5= I10_ECAUSE6= I10_ECAUSE7= I10_ECAUSE8= I10_ECAUSE9= I10_NDX=21 I10_NECAUSE=0 I10_NPR=4
I10_PR1=5A1945Z I10_PR2=0BH17EZ I10_PR3=0BBD8ZX I10_PR4=0B958ZX I10_PR5= I10_PR6= I10_PR7= I10_PR8= I10_PR9= I10_PR10=
I10_PR11= I10_PR12= I10_PR13= I10_PR14= I10_PROCTYPE=1 KEY=362016100000001 LOS=40 LOS_X=40 MDC=25 MDC_NoPOA=25 MDNUM1_R=117363
MDNUM2_R=116572 MEDINCSTQ=. OS_TIME=0 PAY1=2 PAY1_X=17 PAY2=. PAY2_X= PAY3=. PAY3_X= PAYER1_X=211 PAYER2_X= PL_CBSA=. PL_NCHS=.
PL_RUCC=. PL_UIC=. PL_UR_CAT4=. POA_Disch_Edit1=0 POA_Disch_Edit2=0 POA_Hosp_Edit1=0 POA_Hosp_Edit2=0 POA_Hosp_Edit3=0
POA_Hosp_Edit3_Value=0.01 PointOfOrigin_X=1 PointOfOriginUB04=1 PRDAY1=. PRDAY2=. PRDAY3=. PRDAY4=. PRDAY5=. PRDAY6=. PRDAY7=.
PRDAY8=. PRDAY9=. PRDAY10=. PRDAY11=. PRDAY12=. PRDAY13=. PRDAY14=. PRVER=10 PSTATE=NY PSTCO=. PSTCO2=. RACE=2 RACE_X=02
TOTCHG=356997 TOTCHG_X=356997 TRAN_IN=0 TRAN_OUT=0 VisitLink=. YEAR=2016 ZIP= ZIP3= ZIPINC_QRTL=. AYEAR=. BMONTH=. BYEAR=.
PRMONTH1=. PRMONTH2=. PRMONTH3=. PRMONTH4=. PRMONTH5=. PRMONTH6=. PRMONTH7=. PRMONTH8=. PRMONTH9=. PRMONTH10=. PRMONTH11=.
PRMONTH12=. PRMONTH13=. PRMONTH14=. PRYEAR1=. PRYEAR2=. PRYEAR3=. PRYEAR4=. PRYEAR5=. PRYEAR6=. PRYEAR7=. PRYEAR8=. PRYEAR9=.
PRYEAR10=. PRYEAR11=. PRYEAR12=. PRYEAR13=. PRYEAR14=. scdny2016dx=0 delivery_flag=0 dxpos=. i=26 dx= j=. _ERROR_=1 _N_=1
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 1 observations read from the data set WORK.SCDNY2016.
WARNING: The data set WORK.SCDNY2016DX may be incomplete. When this step was stopped there were 0 observations and 212 variables.
WARNING: Data set WORK.SCDNY2016DX was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
192
193 ods html5 (id=saspy_internal) close;ods listing;
ERROR: Array subscript out of range at line 172 column 12. None
Let's demonstrate how to read the SAS log.
You are getting this error:
ERROR: Array subscript out of range at line 172 column 12.
So looking at the log we see that line 172 is part of this statement.
172 if dx_vars[i] in ('O60', 'O61', 'O62', 'O63', 'O64', 'O65', 'O66', 'O67', 173 'O68', 'O69', 'O70', 'O71', 'O72', 'O73', 'O74', 'O75', 174 'O76', 'O77', 'O78', 'O79', 'O80', 'O81', 'O82', 'Z73', 175 'Z38') then do;
The array subscript used there is the variable I. Which from your SAS log had the value:
i=26
But your program defined that array to only have 25 variables in it.
152 array dx_vars {*} I10_DX1-I10_DX25;
As I said before you need to make sure to only use I to index into that array when it is valid.
if i in (1:25) then
if dx_vars[i] in ('O60', 'O61', 'O62', 'O63', 'O64', 'O65', 'O66', 'O67',
'O68', 'O69', 'O70', 'O71', 'O72', 'O73', 'O74', 'O75',
'O76', 'O77', 'O78', 'O79', 'O80', 'O81', 'O82', 'Z73',
'Z38') then do;
Hi Tom! Thank you and super helpful. I'm pretty new to SAS and HCUP so I appreciate it. Will give it a try.
Your problem is the IF/THEN/DO block after the first DO loop needs to only be run when the condition was found. Otherwise I will be too large.
Just add another IF/THEN.
if scdny2016dx then
if dx_vars[i] in ('O60', 'O61', 'O62', 'O63', 'O64', 'O65', 'O66', 'O67'
,'O68', 'O69', 'O70', 'O71', 'O72', 'O73', 'O74', 'O75'
,'O76', 'O77', 'O78', 'O79', 'O80', 'O81', 'O82', 'Z73'
,'Z38') then do;
/* Flag for delivery diagnosis */
delivery_flag = 1;
/* Output valid record */
output;
end;
Here is a copy of the error message:
142 ods listing close;ods html5 (id=saspy_internal) file=stdout options(bitmap_mode='inline') device=svg style=HTMLBlue; ods
142! graphics on / outputfmt=png;
NOTE: Writing HTML5(SASPY_INTERNAL) Body file: STDOUT
143
144 data scdny2016dx;
145 set SCDNY2016;
146 /* Initialize flags and variables */
147 scdny2016dx = 0; /* Sickle cell diagnosis flag */
148 delivery_flag = 0; /* Delivery diagnosis flag */
149 dxpos = .; /* Diagnosis position */
150
151 /* Array for diagnosis codes */
152 array dx_vars {*} I10_DX1-I10_DX25;
153
154 /* Array for procedure codes */
155 array pr_vars {*} I10_PR1-I10_PR14; /* Adjust based on how procedure variables are named */
156
157 /* Loop through diagnosis variables to check for sickle cell disease */
158 do i = 1 to dim(dx_vars);
159 if dx_vars[i] in ('D5700', 'D5701', 'D5702', 'D57211', 'D57212', 'D57219',
160 'D57412', 'D57419', 'D57811', 'D57812', 'D57819',
161 'D571', 'D5720', 'D5740', 'D5780', 'D57411') then do;
162 scdny2016dx = 1; /* Flag for sickle cell diagnosis */
163 dxpos = i; /* Store diagnosis position */
164 dx = dx_vars[i]; /* Store diagnosis code */
165 output; /* Output valid record */
166 leave; /* Exit loop after first match */
167 end;
168 end;
169
170 /* Loop through diagnosis codes to check for pregnancy diagnoses (ICD-10) */
171 /* This loop should no longer reference dx_vars[i] directly */
172 if dx_vars[i] in ('O60', 'O61', 'O62', 'O63', 'O64', 'O65', 'O66', 'O67',
173 'O68', 'O69', 'O70', 'O71', 'O72', 'O73', 'O74', 'O75',
174 'O76', 'O77', 'O78', 'O79', 'O80', 'O81', 'O82', 'Z73',
175 'Z38') then do;
176 delivery_flag = 1; /* Flag for delivery diagnosis */
177 output; /* Output valid record */
178 end;
179
180 /* Loop through procedure codes to check for pregnancy-related deliveries */
181 do j = 1 to dim(pr_vars);
182 if pr_vars[j] in ('10D07Z3', '10D07Z4', '10D07Z5', '10D07Z6', '10D07Z7',
183 '10D07Z8', '10D00Z0', '10D00Z1', '10D00Z2', '10E0XZZ',
184 '0DQR0ZZ', '0HQ9XZZ', '0KQM0ZZ', '0W8NXZZ') then do;
185 delivery_flag = 1; /* Flag for delivery procedure code */
186 output; /* Output valid record */
187 end;
188 end;
189
190 drop i j; /* Drop the loop index variables */
191 run;
ERROR: Array subscript out of range at line 172 column 12.
AGE=46 AGEDAY=. AGEMONTH=. AHOUR=0900 AMONTH=. ANESTH=20 ATYPE=1 AWEEKEND=0 BILLTYPE=0111 BLOOD=0 BWT=. DaysToEvent=. DHOUR=1500
DIED=0 DISP_X=01 DISPUB04=1 DISPUNIFORM=1 DMONTH=. DQTR=. DRG=974 DRG_NoPOA=974 DRGVER=33 DSHOSPID=0001 DXPOA1=Y DXPOA2=Y DXPOA3=Y
DXPOA4=Y DXPOA5=Y DXPOA6=Y DXPOA7=N DXPOA8=Y DXPOA9=N DXPOA10=Y DXPOA11=Y DXPOA12=Y DXPOA13=Y DXPOA14=Y DXPOA15=N DXPOA16=N
DXPOA17=N DXPOA18=Y DXPOA19=X DXPOA20=Y DXPOA21=Y DXPOA22= DXPOA23= DXPOA24= DXPOA25= DXVER=10 E_POA1= E_POA2= E_POA3=
E_POA4= E_POA5= E_POA6= E_POA7= E_POA8= E_POA9= FEMALE=0 HCUP_ED=1 HCUP_OS=0 HISPANIC=0 HISPANIC_X=2 Homeless=. HOSPST=NY
I10_DX_Admitting=B20 I10_DX1=B20 I10_DX2=J9601 I10_DX3=B59 I10_DX4=R6520 I10_DX5=N170 I10_DX6=A419 I10_DX7=E870 I10_DX8=N183
I10_DX9=K921 I10_DX10=B3781 I10_DX11=F329 I10_DX12=K219 I10_DX13=E785 I10_DX14=E860 I10_DX15=E222 I10_DX16=F4322 I10_DX17=E8342
I10_DX18=I129 I10_DX19=Z8572 I10_DX20=D509 I10_DX21=E872 I10_DX22= I10_DX23= I10_DX24= I10_DX25= I10_ECAUSE1= I10_ECAUSE2=
I10_ECAUSE3= I10_ECAUSE4= I10_ECAUSE5= I10_ECAUSE6= I10_ECAUSE7= I10_ECAUSE8= I10_ECAUSE9= I10_NDX=21 I10_NECAUSE=0 I10_NPR=4
I10_PR1=5A1945Z I10_PR2=0BH17EZ I10_PR3=0BBD8ZX I10_PR4=0B958ZX I10_PR5= I10_PR6= I10_PR7= I10_PR8= I10_PR9= I10_PR10=
I10_PR11= I10_PR12= I10_PR13= I10_PR14= I10_PROCTYPE=1 KEY=362016100000001 LOS=40 LOS_X=40 MDC=25 MDC_NoPOA=25 MDNUM1_R=117363
MDNUM2_R=116572 MEDINCSTQ=. OS_TIME=0 PAY1=2 PAY1_X=17 PAY2=. PAY2_X= PAY3=. PAY3_X= PAYER1_X=211 PAYER2_X= PL_CBSA=. PL_NCHS=.
PL_RUCC=. PL_UIC=. PL_UR_CAT4=. POA_Disch_Edit1=0 POA_Disch_Edit2=0 POA_Hosp_Edit1=0 POA_Hosp_Edit2=0 POA_Hosp_Edit3=0
POA_Hosp_Edit3_Value=0.01 PointOfOrigin_X=1 PointOfOriginUB04=1 PRDAY1=. PRDAY2=. PRDAY3=. PRDAY4=. PRDAY5=. PRDAY6=. PRDAY7=.
PRDAY8=. PRDAY9=. PRDAY10=. PRDAY11=. PRDAY12=. PRDAY13=. PRDAY14=. PRVER=10 PSTATE=NY PSTCO=. PSTCO2=. RACE=2 RACE_X=02
TOTCHG=356997 TOTCHG_X=356997 TRAN_IN=0 TRAN_OUT=0 VisitLink=. YEAR=2016 ZIP= ZIP3= ZIPINC_QRTL=. AYEAR=. BMONTH=. BYEAR=.
PRMONTH1=. PRMONTH2=. PRMONTH3=. PRMONTH4=. PRMONTH5=. PRMONTH6=. PRMONTH7=. PRMONTH8=. PRMONTH9=. PRMONTH10=. PRMONTH11=.
PRMONTH12=. PRMONTH13=. PRMONTH14=. PRYEAR1=. PRYEAR2=. PRYEAR3=. PRYEAR4=. PRYEAR5=. PRYEAR6=. PRYEAR7=. PRYEAR8=. PRYEAR9=.
PRYEAR10=. PRYEAR11=. PRYEAR12=. PRYEAR13=. PRYEAR14=. scdny2016dx=0 delivery_flag=0 dxpos=. i=26 dx= j=. _ERROR_=1 _N_=1
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 1 observations read from the data set WORK.SCDNY2016.
WARNING: The data set WORK.SCDNY2016DX may be incomplete. When this step was stopped there were 0 observations and 212 variables.
WARNING: Data set WORK.SCDNY2016DX was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
192
193 ods html5 (id=saspy_internal) close;ods listing;
ERROR: Array subscript out of range at line 172 column 12. None
Can you try adding the $ to your ARRAY statements as I mentioned in my previous post:
/* Array for diagnosis codes */
array dx_vars {*} $ I10_DX1-I10_DX25;
/* Array for procedure codes */
array pr_vars {*} $ I10_PR1-I10_PR10;
@Kathryn_SAS wrote:
Can you try adding the $ to your ARRAY statements as I mentioned in my previous post:
/* Array for diagnosis codes */ array dx_vars {*} $ I10_DX1-I10_DX25; /* Array for procedure codes */ array pr_vars {*} $ I10_PR1-I10_PR10;
Adding the $ will not do anything if the variables mentioned already exist.
And if they do not exist then you probably would also want to include the LENGTH so that the data step compiler knows what length to use when making the variables. Otherwise it will make them with length of $8 .
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.