Why do I get ERROR?

435 %let prodar =2023;
436 %let refar =%eval(&prodar.-1);
451
452 /* 1 Leap day for production year (prodar)
455
456 data _prodleapday_;
457 length prodday 8;
458 prodday=mdy(02,29,&prodar.);
459 if missing(prodday) then call symputx('dat',cats(&prodar.,'0228'));
460 else call symputx('dat',cats(&prodar.,'0229'));
461 run;

NOTE: Invalid argument to function MDY(2,29,2023) at line 458 column 9.
prodday=. _ERROR_=1 _N_=1
NOTE: Mathematical operations could not be performed at the following
places. The results of the operations have been set to missing values.
Each place is given by: (Number of times) at (Line):(Column).
1 at 458:9
NOTE: The data set WORK._PRODLEAPDAY_ has 1 observations and 1 variables.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.00 seconds

462 %put &dat.;
20230228

463
464 /* 2 Leap day for reference year (refar)
465
466 data _refleapday_;
467 length refday 8;
468 refday=mdy(02,29,&refar.);
469 if missing(refday) then call symputx('forradat',cats(&refar.,'0228'));
470 else call symputx('forradat',cats(&refar.,'0229'));
471 run;

NOTE: Invalid argument to function MDY(2,29,2022) at line 468 column 8.
refday=. _ERROR_=1 _N_=1
NOTE: Mathematical operations could not be performed at the following
places. The results of the operations have been set to missing values.
Each place is given by: (Number of times) at (Line):(Column).
1 at 468:8
NOTE: The data set WORK._REFLEAPDAY_ has 1 observations and 1 variables.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.00 seconds

472 %put &forradat.;
20220228