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
|