 %**********************************************************************
 *  macro MAGESEX calculates demographic variables used in regressions.
 *  Parameters:
 *    DOB      - data of birth (SAS DATE)
 *    SEX      - SEX
 *    OREC     - original reason for entitlement from Denominator
 *  Created variables:
 *    ORIGDS  - originally disabled dummy variable
 *    DISABL  - disabled dummy variable
 *             -24 dummy agesex except for "new enrollee":
 *    F0_34  F35_44 F45_54 F55_59 F60_64 F65_69
 *    F70_74 F75_79 F80_84 F85_89 F90_94 F95_GT
 *    M0_34  M35_44 M45_54 M55_59 M60_64 M65_69
 *    M70_74 M75_79 M80_84 M85_89 M90_94 M95_GT
 *             -32 dummy agesex variables for "new enrollee"  model:
 *    NEF0_34  NEF35_44 NEF45_54 NEF55_59 NEF60_64
 *    NEF65    NEF66    NEF67    NEF68    NEF69
 *    NEF70_74 NEF75_79 NEF80_84 NEF85_89 NEF90_94
 *    NEF95_GT
 *    NEM0_34  NEM35_44 NEM45_54 NEM55_59 NEM60_64
 *    NEM65    NEM66    NEM67    NEM68    NEM69
 *    NEM70_74 NEM75_79 NEM80_84 NEM85_89 NEM90_94
 *    NEM95_GT
 ***********************************************************************;

   %MACRO MAGESEX(DOB=, SEX=, OREC=);

      DROP _:;
 ***********************************************************************;
 * declaration section;
 ***********************************************************************;
      LENGTH
              /* for score variables exept "NEW ENROLLEE" */
              F0_34  F35_44 F45_54 F55_59 F60_64 F65_69
              F70_74 F75_79 F80_84 F85_89 F90_94 F95_GT
              M0_34  M35_44 M45_54 M55_59 M60_64 M65_69
              M70_74 M75_79 M80_84 M85_89 M90_94 M95_GT
              DISABL
              ORIGDS
              /* for "NEW ENROLLEE" score variable */
              NEF0_34  NEF35_44 NEF45_54 NEF55_59 NEF60_64
              NEF65    NEF66    NEF67    NEF68    NEF69
              NEF70_74 NEF75_79 NEF80_84 NEF85_89 NEF90_94
              NEF95_GT
              NEM0_34  NEM35_44 NEM45_54 NEM55_59 NEM60_64
              NEM65    NEM66    NEM67    NEM68    NEM69
              NEM70_74 NEM75_79 NEM80_84 NEM85_89 NEM90_94
              NEM95_GT
            3.;

       /* for score variables exept "NEW ENROLLEE" */
      ARRAY   CELL(24)
              F0_34  F35_44 F45_54 F55_59 F60_64 F65_69
              F70_74 F75_79 F80_84 F85_89 F90_94 F95_GT
              M0_34  M35_44 M45_54 M55_59 M60_64 M65_69
              M70_74 M75_79 M80_84 M85_89 M90_94 M95_GT
              ;
       /* for "NEW ENROLLEE" score variable */
      ARRAY NECELL(32)
              NEF0_34  NEF35_44 NEF45_54 NEF55_59 NEF60_64
              NEF65    NEF66    NEF67    NEF68    NEF69
              NEF70_74 NEF75_79 NEF80_84 NEF85_89 NEF90_94 NEF95_GT
              NEM0_34  NEM35_44 NEM45_54 NEM55_59 NEM60_64
              NEM65    NEM66    NEM67    NEM68    NEM69
              NEM70_74 NEM75_79 NEM80_84 NEM85_89 NEM90_94 NEM95_GT
              ;
 ***********************************************************************;
 *  disabled, originally disabled variables
 ***********************************************************************;

       * disabled;
       DISABL = (AGEF < 65);
       * originally disabled ;
       ORIGDS  = (&OREC IN ('1','3'))*(AGEF  >= 65);

 ***********************************************************************;
 * variables for all models exept "new enrollee"
 ***********************************************************************;

       SELECT;
         WHEN(&SEX='2' & 0<= AGEF <=34) _AGESEX  = 1;
         WHEN(&SEX='2' & 34< AGEF <=44) _AGESEX  = 2;
         WHEN(&SEX='2' & 44< AGEF <=54) _AGESEX  = 3;
         WHEN(&SEX='2' & 54< AGEF <=59) _AGESEX  = 4;
         WHEN(&SEX='2' & 59< AGEF <=64) _AGESEX  = 5;
         WHEN(&SEX='2' & 64< AGEF <=69) _AGESEX  = 6;
         WHEN(&SEX='2' & 69< AGEF <=74) _AGESEX  = 7;
         WHEN(&SEX='2' & 74< AGEF <=79) _AGESEX  = 8;
         WHEN(&SEX='2' & 79< AGEF <=84) _AGESEX  = 9;
         WHEN(&SEX='2' & 84< AGEF <=89) _AGESEX  = 10;
         WHEN(&SEX='2' & 89< AGEF <=94) _AGESEX  = 11;
         WHEN(&SEX='2' & AGEF >94)      _AGESEX  = 12;
         WHEN(&SEX='1' & 0<= AGEF <=34) _AGESEX  = 13;
         WHEN(&SEX='1' & 34< AGEF <=44) _AGESEX  = 14;
         WHEN(&SEX='1' & 44< AGEF <=54) _AGESEX  = 15;
         WHEN(&SEX='1' & 54< AGEF <=59) _AGESEX  = 16;
         WHEN(&SEX='1' & 59< AGEF <=64) _AGESEX  = 17;
         WHEN(&SEX='1' & 64< AGEF <=69) _AGESEX  = 18;
         WHEN(&SEX='1' & 69< AGEF <=74) _AGESEX  = 19;
         WHEN(&SEX='1' & 74< AGEF <=79) _AGESEX  = 20;
         WHEN(&SEX='1' & 79< AGEF <=84) _AGESEX  = 21;
         WHEN(&SEX='1' & 84< AGEF <=89) _AGESEX  = 22;
         WHEN(&SEX='1' & 89< AGEF <=94) _AGESEX  = 23;
         WHEN(&SEX='1' & AGEF > 94)     _AGESEX  = 24;
         OTHERWISE;
       END;
       DO _I=1 TO 24;
          CELL(_I) = (_AGESEX  = _I);
       END;

 ***********************************************************************;
 * age/sex vars for "new enrollee"  model (NE- first 2 chars in var name);
 ***********************************************************************;
       SELECT;
           WHEN(&SEX='2' & 0<= AGEF <=34) NE_AGESEX = 1;
           WHEN(&SEX='2' & 34< AGEF <=44) NE_AGESEX = 2;
           WHEN(&SEX='2' & 44< AGEF <=54) NE_AGESEX = 3;
           WHEN(&SEX='2' & 54< AGEF <=59) NE_AGESEX = 4;
           WHEN(&SEX='2' & 59< AGEF <=63) NE_AGESEX = 5;
           WHEN(&SEX='2' & AGEF=64 & &OREC NE '0') NE_AGESEX = 5;
           WHEN(&SEX='2' & AGEF=64 & &OREC='0')    NE_AGESEX = 6;
           WHEN(&SEX='2' &    AGEF  =65)  NE_AGESEX = 6;
           WHEN(&SEX='2' &    AGEF  =66)  NE_AGESEX = 7;
           WHEN(&SEX='2' &    AGEF  =67)  NE_AGESEX = 8;
           WHEN(&SEX='2' &    AGEF  =68)  NE_AGESEX = 9;
           WHEN(&SEX='2' &    AGEF  =69)  NE_AGESEX = 10;
           WHEN(&SEX='2' & 69< AGEF <=74) NE_AGESEX = 11;
           WHEN(&SEX='2' & 74< AGEF <=79) NE_AGESEX = 12;
           WHEN(&SEX='2' & 79< AGEF <=84) NE_AGESEX = 13;
           WHEN(&SEX='2' & 84< AGEF <=89) NE_AGESEX = 14;
           WHEN(&SEX='2' & 89< AGEF <=94) NE_AGESEX = 15;
           WHEN(&SEX='2' & AGEF >94)      NE_AGESEX = 16;
           WHEN(&SEX='1' & 0<= AGEF <=34) NE_AGESEX = 17;
           WHEN(&SEX='1' & 34< AGEF <=44) NE_AGESEX = 18;
           WHEN(&SEX='1' & 44< AGEF <=54) NE_AGESEX = 19;
           WHEN(&SEX='1' & 54< AGEF <=59) NE_AGESEX = 20;
           WHEN(&SEX='1' & 59< AGEF <=63) NE_AGESEX = 21;
           WHEN(&SEX='1' & AGEF=64 & &OREC NE '0') NE_AGESEX = 21;
           WHEN(&SEX='1' & AGEF=64 & &OREC='0')   NE_AGESEX = 22;
           WHEN(&SEX='1' &     AGEF  =65) NE_AGESEX = 22;
           WHEN(&SEX='1' &     AGEF  =66) NE_AGESEX = 23;
           WHEN(&SEX='1' &     AGEF  =67) NE_AGESEX = 24;
           WHEN(&SEX='1' &     AGEF  =68) NE_AGESEX = 25;
           WHEN(&SEX='1' &     AGEF  =69) NE_AGESEX = 26;
           WHEN(&SEX='1' & 69< AGEF <=74) NE_AGESEX = 27;
           WHEN(&SEX='1' & 74< AGEF <=79) NE_AGESEX = 28;
           WHEN(&SEX='1' & 79< AGEF <=84) NE_AGESEX = 29;
           WHEN(&SEX='1' & 84< AGEF <=89) NE_AGESEX = 30;
           WHEN(&SEX='1' & 89< AGEF <=94) NE_AGESEX = 31;
           WHEN(&SEX='1' & AGEF >94)      NE_AGESEX = 32;
           OTHERWISE;
       END;
       DO _I=1 TO 32;
           NECELL(_I)=(NE_AGESEX=_I);
       END;

       LABEL
       ORIGDS ="originally disabled dummy variable"
       DISABL ="disabled dummy variable"
      ;

 %MEND MAGESEX;
