/**********************************************************************/
%macro change;
%let c1=This line is exactly 40 characters long.;
%let c2=This line is longer than the previous one.;
change "&c1" "&c2";
%mend change;
/**********************************************************************/
%macro change(dsn);
%let c1=This line is exactly 40 characters long.;
%let c2=This line is longer than the previous one.;
clear;
include "&dsn";
change "&c1" "&c2";
file;
%mend change;
/**********************************************************************/
%macro getpgm(dsn=,string=);
/* Bring a file into the PROGRAM EDITOR window */
clear;
include "&dsn";
zoom on;
/* Issue a FIND command for a character string */
%if %length(&string) gt 0 %then
%str(find "&string";);
%mend getpgm;
/**********************************************************************/
/* Example 1 */
/* Assign the catalog to contain the PMENU */
proc pmenu c=cat.pmenus;
/* Name the PMENU entry */
menu sample;
/* Define the commands available to the user */
item 'NEXT' selection=next;
item 'PREVIOUS' selection=prev;
item END;
item 'TIME' selection=time;
selection next 'forward;';
selection prev 'backward;';
selection time '%put &systime;';
run;
quit;
/**********************************************************************/
/* Example 2 */
/* Assign the catalog to contain the PMENU */
proc pmenu c=cat.pmenus;
/* Name the PMENU entry */
menu saverr;
/* Define the commands available to the user */
item 'SAVE_ERROR' selection=error;
item END;
/* Define the commands executed for SAVE_ERROR */
selection error
'PRTFILE
"userid.ERRORS.%substr(&sysdate,%length(&sysdate)-4)"
APPEND;
SPRINT';
run;
quit;
/**********************************************************************/
/* Use CALL EXECCMD to assign the customized */
/* PMENU to the next window that displays */
call execcmd('SETPMENU CAT.PMENUS.SAVERR.PMENU');
/* Invoke FSEDIT session */
call fsedit('work.costs');
/**********************************************************************/
/* Assign the catalog to contain the PMENU */
proc pmenu c=cat.pmenus;
/* Name the PMENU entry */
menu printds;
/* Define the commands available to the user */
item END;
item 'PRINT_ON_EXIT' selection=printd;
item 'CANCEL_PRINT' selection=noprint;
selection printd '%let printds = Y;';
selection noprint '%let printds = N;';
run;
quit;
/**********************************************************************/
call symput('PRINTDS','');
/**********************************************************************/
call execcmd('SETPMENU CAT.PMENUS.PRINTDS.PMENU');
/**********************************************************************/
call fsview('work.status');
/**********************************************************************/
%let printds=Y;
/**********************************************************************/
if symget('PRINTDS')='Y' then
do; /* Display Print Data Set window */
call display('PRINT.PROGRAM','WORK.STATUS');
call symput('PRINTDS','');
end; /* Display Print Data Set window */
/**********************************************************************/