Hey @Mick_lb ,
I'm starting out with a few pointers to help you along the way and will have a final answer at the end.
What you are running into here is a classic macro if-condition problem.
The get a better understanding of what is happening inside of the macro you should use the following options:
options symbolgen mlogic mprint;
You can deactivete them again with a e.g options nosymbolgen;
Now you can get a better look at how your variables are assigned and evaluted during the macro execution.
Next step lets assign the value of your if condition to a variable and show it in the log:
%let x = "10/&my.";
%put x=&x;
This result in x="10/01/2020" and if you take a look at the variable &_date it shows 10/01/2020 now you see a clear difference. The two enclosing ". Well they just signify you might say but it is important to note that the macro language is just generating text in and of itself and thus " is another character and now it should be clear that the if-condition can actually never be true because of the way macros in SAS work.
Now what is the solution? Just dropping the " in the if condition works perfectly.
And now a full working example - which I hope works as you intent:
options symbolgen mlogic mprint;
%macro test;
%let rc=0;
%let my = %sysfunc(today(),MMYYS.);
%put &my.; /*01/2020*/
%let _date= %sysfunc(today(),DDMMYY10.);
%let x = 10/&my.;
%put =&x;
%put ===> &_date.; /*09/01/2020*/
%if &rc=1 %then
%do;
%put GOODBYE;
%end;
%else %if &rc=0 and &_date=10/&my. %then
%do;
%put HELLO;
%end;
%mend;
%test