Hello SAS users, I have 91 data sets with 1 numeric variable and at least 26 character variables per data set. I created a macro to conduct processing of all data sets. One part of my macro is not working as intended. What I want to do is to specify an array statement that references only the character variables, then use DO LOOPS to do some processing for all other character variables listed after the first character variable. Below is my code: /*Convert fields of item responses from character to numeric variables*/ DATA Raw.&MODULE._Examinee_Data; SET Raw.&MODULE._Examinee_Data_POS; ARRAY CHAR[*] _CHARACTER_; DO I = 2 to dim(CHAR); IF CHAR[I] = 'A' THEN CHAR[I] = '1'; IF CHAR[I] = 'B' THEN CHAR[I] = '2'; IF CHAR[I] = 'C' THEN CHAR[I] = '3'; IF CHAR[I] = 'D' THEN CHAR[I] = '4'; IF CHAR[I] = 'E' THEN CHAR[I] = '5'; IF CHAR[I] = 'Z' THEN CHAR[I] = '0'; END; DO J = 2 to dim(CHAR); CHAR[J] = input(CHAR[J], 32.); END; RUN; The problem I have is that the values for the I and J indexing variables are 2 more than the actual number of array elements processed using the DO LOOP. Data I have below - the first character variable of the array contains the text of EXAM101, and the values for the remaining character variables are listed to the right of the value for the first character variable. 1228 EXAM101 A C D B Z Data I want below - the I and J indexing variables should each have values of 5, but my code results in values of 7 which is what I don't want. 1228 EXAM101 1 3 4 2 0 5 5 Can someone explain to me what I am doing wrong, and post a solution? Thanks
... View more