home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!stanford.edu!lll-winken!elroy.jpl.nasa.gov!usc!wupost!darwin.sura.net!paladin.american.edu!auvm!NIEHS.BITNET!WHITMIR1
- From: WHITMIR1@NIEHS.BITNET
- Newsgroups: bit.listserv.sas-l
- Subject: Including macros into SAS program
- Message-ID: <01GNKNSBOEGG8ZE3T6@NIEHS.BITNET>
- Date: 14 Aug 92 18:38:00 GMT
- Sender: "SAS(r) Discussion" <SAS-L@UGA.BITNET>
- Reply-To: WHITMIR1@NIEHS.BITNET
- Lines: 49
- Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
- X-Envelope-to: SAS-L@VTVM2.BITNET
- X-VMS-To: IN%"SAS-L@VTVM2.BITNET"
- X-VMS-Cc: WHITMIR1
-
- Hello ,
-
- I have large nested IF THEN ELSE in my program. I wanted to know if there is a
- way to write section of the code in macro to make the program more efficient.
- I know a little about macro but not enough to write one on my own!
- I looked at the section "Including macros into sas program" of SAS guide to
- macro processing. The problem is I don't know how to write a macro.
- Could anybody help me on that. I included part of the sample program below.
- Thanks in advance.
-
- DATA ALL;
- MERGE ONE(IN=IN1) TWO(IN=IN2);
- BY ID;
- IF IN1 AND IN2;
-
- TSTREFMO = .; TSTREFYR = .;
- IF (RC33 ^= 997 AND RC33 ^= 998) AND (RC46 ^= 997 AND RC46 ^= 998) THEN
- DO;
- IF RC33 = 1 THEN
- DO;
- TSTREFMO = TESTMO;
- TSTREFYR = TESTYR;
- END;
- IF RC33 = 2 THEN
- DO;
- IF TESTMO IN (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) THEN
- DO;
- TSTREFMO = TESTMO - 1;
- TSTREFYR = TESTYR;
- END;
- ELSE IF TESTMO = 1 THEN
- DO;
- TSTREFMO = 12;
- TSTREFYR = TESTYR - 1;
- END;
- END;
- END;
- IF (TSTRF_DT NE . AND RC33_DT NE .) THEN
- DO;
- IF (RC33_DT NE TSTRF_DT) THEN
- DO;
- VAR1 = 'RC33 = ' || PUT(RC33,Z3.);
- VAR2 = 'RC33_DT = ' || PUT(RC33MO,Z2.) || PUT(RC33YR,Z2.);
- VAR3 = 'TSTRF_DT = ' || PUT(TSTREFMO,Z2.) || PUT(TSTREFYR,Z2.);
- VAR4 = 'RC32_DT = ' || PUT(RC32MO,Z2.) || PUT(RC32YR,Z2.);
- VAR5 = 'RC32A_DT = ' || PUT(RC32AMO,Z2.) || PUT(RC32AYR,Z2.);
- OUTPUT;
- END;
- END;
-