LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (May 1996, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Tue, 14 May 1996 15:27:01 -0500
Reply-To:     Jamil Ibrahim <ibrahim@MAIL.UMSMED.EDU>
Sender:       "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From:         Jamil Ibrahim <ibrahim@MAIL.UMSMED.EDU>
Subject:      macro q again

dear sas users thank to those suggestion from sas group but none of the suggestions worked. may be I did not word the question right about the %let macro variables. these two let macro vars woek in this program as entered but to change %let dat= &infil; or %let dat="&infil" while %let infil=PR; so, I am including the lines that might be affected with this code.. ****** more jcl statements.....................

//FT12F001 DD SYSOUT=G,OUTPUT=*.IBM.LASER.L1118,HOLD=YES,COPIES=6 00050001 //NSGDATA DD DSN=UMC.TS58.SOURCE(NISP96),DISP=SHR //UN DD DSN=UMC.TS58.SOURCE(TXTUNCE),DISP=SHR //CL DD DSN=UMC.TS58.SOURCE(TXTCLTE),DISP=SHR //CO DD DSN=UMC.TS58.SOURCE(TXTCOTE),DISP=SHR //CE DD DSN=UMC.TS58.SOURCE(TXTCOEV),DISP=SHR //PR DD DSN=UMC.TS58.SOURCE(TXTPRCE),DISP=SHR //SYSIN DD * 00060000 ***** X IS NUMBER OF QUESTIONS, Y IS THE NUMBER OF RESPONSES+1*****; ***** NA IS THE NOT APPLICABLE RESPONSES *****; ***** FOR Y ADD 1 FOR NO RESPONSE ********************************; *************************************************************; %LET INFIL= PR; %LET X=15; %LET Y=6; %LET NA=6; %LET DAT='PR'; %LET B=1 ; %LET E=15; %LET SEM= SPRING 1996 ; **************************************************************; ***** USEID, Y OR N TO USE ID AS A BREAK FOR STATS ***************; %MACRO ID; USEID='N'; %MEND; ******************************************************************; ***** READ IN QUESTION TEXT TO BE MERGED W/STATS *****************; DATA DESC; INFILE &INFIL; Q+1; INPUT @1 DESC1 $CHAR65. / @1 DESC2 $CHAR65. / @1 DESC3 $CHAR65. / @1 DESC4 $CHAR65.; PROC SORT; BY Q; *************** BEGIN OF CONVERTING LETTERS TO NUMBERS ************; DATA WORK; INFILE NSGDATA; MISSING R;********--- FOR BLANKS OR OMITS------; ****** EVALUATION BY TYPE ********** USE NEXT 2 LINES; %MACRO TEMP; %IF &DAT='UN' %THEN %DO; INPUT @1 MONTH $CHAR43. @17 ID $CHAR3. @20 NAME $CHAR21. @45 (Q1-Q3) ($1.) @ 49 (Q4-Q6) ($1.) @53 (Q7-Q9) ($1.) @57 (Q10-Q12) ($1.) @ 61 (Q13-Q&X) ($1.) ;-- MONTH=UPCASE(MONTH); CMONTH=SUBSTR(MONTH,5,4); IF SUBSTR(MONTH,1,2)=&DAT ; MONTH=SUBSTR(MONTH,41,3); %END; %IF &DAT='CO' %THEN %DO; INPUT @1 MONTH $CHAR43. @17 ID $CHAR3. @20 NAME $CHAR21. @45 (Q1-Q3) ($1.) @ 49 (Q4-Q6) ($1.) @53 (Q7-Q9) ($1.) @57 (Q10-Q12) ($1.) @ 61 (Q13-Q&X) ($1.) ; MONTH=UPCASE(MONTH); CMONTH=SUBSTR(MONTH,5,4); IF SUBSTR(MONTH,1,2)=&DAT ; MONTH=SUBSTR(MONTH,41,3); %END; %IF &DAT='CL' %THEN %DO; INPUT @1 MONTH $CHAR43. @17 ID $CHAR3. @20 NAME $CHAR21. @45 (Q1-Q3) ($1.) @ 49 (Q4-Q6) ($1.) @53 (Q7-Q9) ($1.) @57 (Q10-Q12) ($1.) @ 61 (Q13-Q&X) ($1.) ; MONTH=UPCASE(MONTH); CMONTH=SUBSTR(MONTH,5,4); IF SUBSTR(MONTH,1,2)=&DAT ; MONTH=SUBSTR(MONTH,41,3); %END; %IF &DAT='CE' %THEN %DO; INPUT @1 MONTH $CHAR43. @17 ID $CHAR3. @20 NAME $CHAR21. @45 (Q1-Q3) ($1.) @ 49 (Q4-Q6) ($1.) @53 (Q7-Q9) ($1.) @57 (Q10-Q12) ($1.) @ 61 (Q13-Q&X) ($1.) ; MONTH=UPCASE(MONTH); CMONTH=SUBSTR(MONTH,5,4); IF SUBSTR(MONTH,1,2)=&DAT ; MONTH=SUBSTR(MONTH,41,3); %END; %IF &DAT='PR' %THEN %DO; INPUT @1 MONTH $CHAR43. @17 ID $CHAR3. @20 NAME $CHAR21. @45 (Q1-Q5) ($1.) @ 51 (Q6-Q10) ($1.) @57 (Q11-Q13) ($1.) @ 61 (Q14-Q&X) ($1.) ; MONTH=UPCASE(MONTH); CMONTH=SUBSTR(MONTH,5,4); IF SUBSTR(MONTH,1,2)=&DAT ; MONTH=SUBSTR(MONTH,41,3); %END; %MEND; %TEMP; DATA WORK; SET WORK; %MACRO FACTOR; %IF &DAT='UN' OR &DAT ='CL' OR &DAT='CO' OR &DAT='CE' %THEN %DO; IF Q >=1 AND Q <= 3 then ID='1'; IF Q >=4 AND Q <= 6 then ID='2'; IF Q >=7 AND Q <= 9 then ID='3'; IF Q >=10 AND Q <=12 then ID='4'; IF Q >=13 AND Q <=15 then ID='5'; %END; %IF &DAT='PR' %THEN %DO; IF Q >=1 AND Q <= 5 then ID='1'; IF Q >=6 AND Q <= 10 then ID='2'; IF Q >=11 AND Q <= 13 then ID='3'; IF Q >=14 AND Q <=15 then ID='4'; %END; %MEND; %FACTOR; ****** more sas statements.....................

%macro titl; %if &DAT='UN' %then %do; title4 'Undergraduate Clinical Evaluation'; %end; %if &DAT='CL' %then %do; title4 'Clinical Teaching Effectiveness'; %end; %if &DAT='CO' %then %do; title4 'Course Teaching Effectiveness'; %end; %if &DAT='CE' %then %do; title4 'Course Evaluation'; %end; %if &DAT='PR' %then %do; title4 'Preceptor Clinical Evaluation'; %end; %mend; %titl; ****** more sas statements.....................

notice the valuse of &dat changes because it is derived from the data file called nisp96 in nsgdata


Back to: Top of message | Previous page | Main SAS-L page