## Problems with numeric array

Solved
Occasional Contributor
Posts: 5

# Problems with numeric array

Hi All thanks for your help with this. I did not originally create this program, but changes have been made to the incoming data that are causing this array to error out. I've tried about everything that I can think which means it's probably the easiest solution. The planname used to be numeric, but it is now alphanumeric, which is causing the error. Is there a way to use the alphanumeric planname?. This isn't the entire code just a small portion of it. Thanks again for your help.

data set1 set2;

array old_hsp_id {999999} \$ 1 _temporary_ (999999*'N');

set combine   (in=a)

incomingset_1(in=b rename=(start=planname)

where=(put(left(trim(planname)),\$unq2_1.) = 'N' and

put(left(trim(planname)),\$opn_1. ) = 'Y'))

incomingset_2(in=c rename=(start=planname)

where=(put(left(trim(planname)),\$opnhspva. ) = 'Y')) end=eof;

* Check for duplicates ;

if (old_hsp_id (input(left(trim(planname)),6.)) = 'N') then old_hsp_id (input(left(trim(planname)),6.)) = 'Y';

else do;

error 'Hospital id is duplicated';

put _all_;

Terminate = 'Y';

end;

run;

Accepted Solutions
Solution
‎04-18-2018 03:22 PM
Super User
Posts: 8,114

## Re: Problems with numeric array

@bzimmermann wrote:

The array is being used to identify duplicates within the planname field. The planname field used to be all numerical but it is now alpha-numeric which appears to be causing the problem. I was hoping to make the existing logic work rather than rewriting the process.

Does that give you the additional information you need?

Looks like your old code was making a giant temporary array to check for duplicates.

You probably will want to switch to using a HASH instead.

Or just sort the data and check for duplicates that way.

All Replies
Super User
Posts: 23,728

## Re: Problems with numeric array

Can you post the error and include one line of the data from the log with it?

@bzimmermann wrote:

Hi All thanks for your help with this. I did not originally create this program, but changes have been made to the incoming data that are causing this array to error out. I've tried about everything that I can think which means it's probably the easiest solution. The planname used to be numeric, but it is now alphanumeric, which is causing the error. Is there a way to use the alphanumeric planname?. This isn't the entire code just a small portion of it. Thanks again for your help.

data set1 set2;

array old_hsp_id {999999} \$ 1 _temporary_ (999999*'N');

set combine   (in=a)

incomingset_1(in=b rename=(start=planname)

where=(put(left(trim(planname)),\$unq2_1.) = 'N' and

put(left(trim(planname)),\$opn_1. ) = 'Y'))

incomingset_2(in=c rename=(start=planname)

where=(put(left(trim(planname)),\$opnhspva. ) = 'Y')) end=eof;

* Check for duplicates ;

if (old_hsp_id (input(left(trim(planname)),6.)) = 'N') then old_hsp_id (input(left(trim(planname)),6.)) = 'Y';

else do;

error 'Hospital id is duplicated';

put _all_;

Terminate = 'Y';

end;

run;

Super Contributor
Posts: 266

## Re: Problems with numeric array

" The planname used to be numeric, but it is now alphanumeric, which is causing the error. "

What error is that?

If you had a field you were using as a unique identifier it should have been character to begin with- you aren't going to add or subtract it, it isn't numeric even if it was all numbers.

Maybe you could explain more about what the problem is?

Occasional Contributor
Posts: 5

## Re: Problems with numeric array

Here is the piece of the log

Super Contributor
Posts: 266

## Re: Problems with numeric array

I don't open strange files from people I don't know.

Just post text or code.

Occasional Contributor
Posts: 5

## Re: Problems with numeric array

NOTE: Invalid argument to function INPUT at line 203 column 150. ERROR: Array subscript out of range at line 203 column 138. first_rec1=0 first_rec2=1 first_rec3=0 first_rec4=0 first_rec5=0 Terminate=N abort_flag=N abort_count=0 start_Quarter=1Q2017 start_date=01/01/2017 end_Quarter=4Q2017 end_date=12/31/2017 H_NUMB_COMP_RANGE= H_NUMB_COMP= H_RESP_RATE_P= H_COMP_1_SN_P= H_COMP_1_U_P= H_COMP_1_A_P= H_COMP_1_LIN= H_COMP_1_STAR= H_COMP_2_SN_P= H_COMP_2_U_P= H_COMP_2_A_P= H_COMP_2_LIN= H_COMP_2_STAR= H_COMP_3_SN_P= H_COMP_3_U_P= H_COMP_3_A_P= H_COMP_3_LIN= H_COMP_3_STAR= H_COMP_4_SN_P= H_COMP_4_U_P= H_COMP_4_A_P= H_COMP_4_LIN= H_COMP_4_STAR= H_COMP_5_SN_P= H_COMP_5_U_P= H_COMP_5_A_P= H_COMP_5_LIN= H_COMP_5_STAR= H_CLEAN_HSP_SN_P= H_CLEAN_HSP_U_P= H_CLEAN_HSP_A_P= H_CLEAN_HSP_LIN= H_CLEAN_HSP_STAR= H_QUIET_HSP_SN_P= H_QUIET_HSP_U_P= H_QUIET_HSP_A_P= H_QUIET_HSP_LIN= H_QUIET_HSP_STAR= H_COMP_6_Y_P= H_COMP_6_N_P= H_COMP_6_LIN= H_COMP_6_STAR= H_HSP_RATING_0_6= H_HSP_RATING_7_8= H_HSP_RATING_9_10= H_HSP_RATING_LIN= H_HSP_RATING_STAR= H_RECMND_DN= H_RECMND_PY= H_RECMND_DY= H_RECMND_LIN= H_RECMND_STAR= H_COMP_7_SD_P= H_COMP_7_A_P= H_COMP_7_SA_P= H_COMP_7_LIN= H_COMP_7_STAR= H_STAR_RATING= H_NUMB_COMP_F= M_ID_01=Composite 1 M_ID_02=Composite 2 M_ID_03=Composite 3 M_ID_04=Composite 4 M_ID_05=Composite 5 M_ID_06=Composite 6 M_ID_07=Composite 7 M_ID_08=Q8 M_ID_09=Q9 M_ID_10=Q 21 M_ID_11=Q 22 M_ID_12=Star Rating M_ID_desc_01=Communication with nurses M_ID_desc_02=Communication with doctors M_ID_desc_03=Responsiveness of hospital staff M_ID_desc_04=Pain management M_ID_desc_05=Communication about medicines M_ID_desc_06=Discharge information M_ID_desc_07=Care Transition M_ID_desc_08=Cleanliness of hospital environment M_ID_desc_09=Quietness of hospital environment M_ID_desc_10=Overall rating of hospital M_ID_desc_11=Willingness to recommend this hospital M_ID_desc_12=HCAHPS Summary Star Rating foot_c= a=1 b=0 eof=0 c=0 planname=01014F months_data=12 surveys=1134 eligibles=4672 ineligibles=25 completes=325 state_code=AL nur_bout_avg=7 nur_mid_avg=24 nur_tout_avg=69 nur_lout_avg=87 doc_bout_avg=4 doc_mid_avg=16 doc_tout_avg=80 doc_lout_avg=92 res_bout_avg=13 res_mid_avg=27 res_tout_avg=60 res_lout_avg=81 pai_bout_avg=17 pai_mid_avg=35 pai_tout_avg=48 pai_lout_avg=76 com_bout_avg=20 com_mid_avg=19 com_tout_avg=61 com_lout_avg=76 dis_bout_avg=21 dis_tout_avg=79 dis_lout_avg=79 cle_bout_avg=14 cle_mid_avg=26 cle_tout_avg=60 cle_lout_avg=81 qui_bout_avg=9 qui_mid_avg=32 qui_tout_avg=59 qui_lout_avg=82 ovr_bout_avg=9 ovr_mid_avg=27 ovr_tout_avg=64 ovr_lout_avg=87 rec_bout_avg=8 rec_mid_avg=26 rec_tout_avg=66 rec_lout_avg=86 ctm_bout_avg=5 ctm_mid_avg=47 ctm_tout_avg=48 ctm_lout_avg=81 nur_star=1 doc_star=3 res_star=2 pai_star=1 com_star=3 cle_star=1 qui_star=3 dis_star=1 ovr_star=3 rec_star=3 ctm_star=3 env_star=2 global_star=3 summary_star=2 fmtname= label= i=. foot_10=. foot_15=. foot_6=. foot_3a=. foot_3b=. foot_3=. foot_5a=. foot_5c=. foot_DR=. foot_5=. foot_1a=. foot_1b=. foot_1=. foot_11a=. foot_11b=. foot_HW=. foot_RR=. foot_1c=. foot_11z=. resp_perc=. SEQN=. PROVIDER_ID= H_FOOTNOTE= S_FOOTNOTE= err_count=0 no_avg=. foot_5b= j=. k=. x= Blank= Resp_rate= aa= bb= cc= dd= ee= _ERROR_=1 _N_=78
Super User
Posts: 23,728

## Re: Problems with numeric array

You have two errors:

NOTE: Invalid argument to function INPUT at line 203 column 150.
ERROR: Array subscript out of range at line 203 column 138.

What is the code from line 203 IN YOUR LOG?

Occasional Contributor
Posts: 5

## Re: Problems with numeric array

The weird thing it's just a let statement 202 %let mac_path = &Root.SAS_Code\Macro_lib\base\; 203 %let Reports = &Root.Data_From_Unix_for_Reports\&year._&qtr_no.\; 204 %let Raw = &Root.Quarterly\1_Download\&year._&qtr_no.\Raw_data; 205 %let Srce = &Root.Quarterly\1_Download\&year._&qtr_no.\Source;
Super User
Posts: 23,728

## Re: Problems with numeric array

Then it's probably above those lines, the error isn't always exactly at the line indicated, but where it causes issues.

Occasional Contributor
Posts: 5

## Re: Problems with numeric array

The array is being used to identify duplicates within the planname field. The planname field used to be all numerical but it is now alpha-numeric which appears to be causing the problem. I was hoping to make the existing logic work rather than rewriting the process.

Does that give you the additional information you need?

Solution
‎04-18-2018 03:22 PM
Super User
Posts: 8,114

## Re: Problems with numeric array

@bzimmermann wrote:

The array is being used to identify duplicates within the planname field. The planname field used to be all numerical but it is now alpha-numeric which appears to be causing the problem. I was hoping to make the existing logic work rather than rewriting the process.

Does that give you the additional information you need?

Looks like your old code was making a giant temporary array to check for duplicates.

You probably will want to switch to using a HASH instead.

Or just sort the data and check for duplicates that way.

☑ This topic is solved.