SAS Macro does not permit DATALINES, nor even PARMCARDS - they don't survive macro compilation.

However, thanks to a SAS-L post by Richard DeVenezia it was discovered that you CAN create datasets using SAS Macro using a 'trick' in the compilation process!

TLDR; - stick your datalines UNDERNEATH the macro definition and it will run during compilation. If your definition deletes itself, then it will compile each time :-)

Full code:

 * setup temporary autocall location 
 * - yours may be permanent 
%let loc=%sysfunc(pathname(work))/myloc;
options dlcreatedir;
libname _ "&loc";
libname _ clear;
options insert=(sasautos=("&loc"));

 * put a macro there 
 *  - yours can be written directly
filename FT15F001 "&loc/";
%macro richardyoulegend();
  proc catalog catalog=work.sasmac1;
    delete richardyoulegend.macro;
  quit /* NOTE - missing semicolon */

 * put your datalines here!
 *  - they will execute on compilation 
data _data_; /* DATA1 / DATA2 / DATA3 */
input name $ age $;
John 42
Mary 104

You can now call your macro multiple times, to create multiple datasets! NOTE - you will need to include the semicolon to trigger the macro deletion OUTSIDE the macro.