-1

So I have this code I'm working on to validate dates

 proc format fmtlib;
   value drange
      '01JAN1900'd - '31DEC1909'd = '1900s'
      '01JAN1910'd - '31DEC1919'd = '1910s'
      '01JAN1920'd - '31DEC1929'd = '1920s'
      '01JAN1930'd - '31DEC1939'd = '1930s'
      '01JAN1940'd - '31DEC1949'd = '1940s'
      '01JAN1950'd - '31DEC1959'd = '1950s'
      '01JAN1960'd - '31DEC1969'd = '1960s'
      '01JAN1970'd - '31DEC1979'd = '1970s'
      '01JAN1980'd - '31DEC1989'd = '1980s'
      '01JAN1990'd - '31DEC1999'd = '1990s'
      '01JAN2000'd - '31DEC2009'd = '2000s'
      '01JAN2010'd - '31DEC2019'd = '2010s'
      '01JAN2020'd - '31DEC2020'd = '2020'
      '01JAN2021'd   - %sysfunc(today()) = '2021'
      %sysfunc(today())- HIGH ='FUTURE?!'
    ;
run;

  proc freq data=dm.dm;
  format brthdat drange.;
  table brthdat/missing list nopercent;
  title "CHECK DATE OF BIRTH";
  run;

However it isn't working like I'd want it to instead of the 1990s, 1980s etc it is displaying the number only. Can any eagle-eyed programmers figure out what the issue is?. I feel like it's something very simple that I'm just missing

enter image description here

1 Answers1

2

Date constants...

proc format fmtlib;
   value drange
      '01JAN1960'd - '31DEC1969'd = '60s'
      '01JAN1970'd - '31DEC1979'd = '70s'
      ;
   quit;

enter image description here

data _null_
  • 8,534
  • 12
  • 14