A recursive macro can easily be written, but SAS is exceedingly inefficient running it.
It's fine for the very first numbers:

%macro fib(n)/minoperator;
%if &n in 0 1 %then &n ;
%else %eval( %fib(%eval(&n-1)) + %fib(%eval(&n-2)) );
%mend;
%put %fib(0);
%put %fib(1);
%put %fib(2);
%put %fib(10);

At about 20, things start to get ugly:

74 data _null_;
75 put "%fib(18)";
76 run;

2584
NOTE: DATA statement used (Total process time):
real time 0.48 seconds
user cpu time 0.48 seconds

77
78 data _null_;
79 put "%fib(20)";
80 run;

6765
NOTE: DATA statement used (Total process time):
real time 2.34 seconds
user cpu time 2.27 seconds

81
82 data _null_;
83 put "%fib(22)";
84 run;

17711
NOTE: DATA statement used (Total process time):
real time 4.53 seconds
user cpu time 4.45 seconds

85
86 data _null_;
87 put "%fib(24)";
88 run;

46368
NOTE: DATA statement used (Total process time):
real time 11.89 seconds
user cpu time 11.69 seconds

89
90 data _null_;
91 put "%fib(26)";
92 run;

121393
NOTE: DATA statement used (Total process time):
real time 33.26 seconds
user cpu time 32.65 seconds