Please provide exactly what happens that makes you think the macro is broken.
And paste the result of the Log into a code box opened using the forum {I} menu icon. It is important to paste into a code box as the message window reformats some of the error and warning messages and those often provide something that points to offending code errors.
The Input function wants an informat to apply when attempting to do what ever to the variable data_yr so you should have gotten an error.
Other possible problems may exist but we need to see the log for that.
MACRO language isn't broken Rather, your SAS language program is broken. The INPUT function requires two arguments, and you have only supplied one. It is best to follow the usual rule: Get the program working without any macro language, and then turn the working code into a macro.
The only thing broken is your data step coding skills, as others have already mentioned 😉
Since no SAS/STAT procedures are involved, I moved this thread to Base SAS Programming, where it belongs.
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.