/**********************************************************************/


edit test.program
source


/**********************************************************************/


file tempfile
end
end


/**********************************************************************/


edit test.scl
include tempfile


/**********************************************************************/


compile
end


/**********************************************************************/


   /* Define the macro and the parameter                  */
%macro pgmtoscl(pgm=);
      /* Edit the PROGRAM entry.                          */
   edit &pgm..program;
      /* Open the SOURCE window.                          */
   source;
      /* File source code to external file.               */
   file tempfile;
      /* Exit the SOURCE window.                          */
   end;
      /* Exit the PROGRAM entry.                          */
   end;
      /* Create the SCL entry.                            */
   edit &pgm..scl;
      /* Include source code from external file.          */
   include tempfile;
      /* Compile the SCL entry.                           */
   compile;
      /* Exit the SCL entry.                              */
   end;
   /* End the macro definition.                           */
%mend pgmtoscl;


/**********************************************************************/


%pgmtoscl(pgm=test)


/**********************************************************************/


data _null_;
infile datalines eof=lastrec;
input pgmname $;
call symput('PGMÕ||left(put(_n_,5.)),pgmname);
return;
lastrec:
   call symput('N',left(put(_n_-1,5.)));
datalines;
   program1
   program2
   program3
   more data lines
;


/**********************************************************************/


%macro convert;
   %do i=1 %to &n;
      %pgmtoscl(pgm=&&pgm&i);
   %end;
%mend convert;


/**********************************************************************/


file tempfile;


/**********************************************************************/


file tempfile replace;


/**********************************************************************/