Join Now

Juletip #16.2: Reset en SAS option, med brug af GETOPTION med defaultvalue & startupvalue

by SAS Employee JesperMusaeus on ‎12-15-2014 04:36 AM (260 Views)

SAS options bruges til at styre mange aspekter af sas systemet og ofte vil man gerne sætte den ’tilbage’ af hensyn til den kode der submittes efterfølgende.


Det kan være at man vil rette den tilbage til værdien lige før man ændrede(se ex.1),

men det kan også være tilbage til dens default værdi(se ex.2),

eller den værdi den havde da SAS sessionen startede(se ex.3).

Det kan man bruge funktionen GETOPTION til, som i SAS 9.3 har fået tilføjet muligheden for at hente defaultvalue (fra sas konfiguration) og startupvalue (fra sas startup, dvs. inkl. autoexec.sas).

Lad os bruge options FMTSEARCH=() som eksempel.

Program:

***Check nuværende værdi af FMTSEARCH;
***NB: I min sasv9.cfg fil er den sat til: WORK LIBRARY FORMATER;
***NB: I min autoexec.sas fil er APPFMT tilføjet;
%put %sysfunc(getoption(fmtsearch,keyword));

**gem nuværende tilstand (så den kan sættes tilbage hertil på et senere tidspunkt);
%let deffmtsearch=%sysfunc(getoption(fmtsearch,keyword));

**Indsætter MITLIB forrest i fmtsearch og check;
options insert=(fmtsearch=(MITLIB));
%put %sysfunc(getoption(fmtsearch,keyword));

***HER KUNNE MIT PROGRAM AFVIKLES MED DEN OPTIONVÆRDI JEG LIGE HAR SAT;

***1. Sæt den tilbage til den var umiddelbart før mit program og check;
options &deffmtsearch; run;
%put %sysfunc(getoption(fmtsearch,keyword));

***2. Hent defaultværdien (sas configuration), sæt den, og check;
%let deffmtsearch=%sysfunc(getoption(fmtsearch,keyword,defaultvalue));
options &deffmtsearch; run;
%put %sysfunc(getoption(fmtsearch,keyword));

***3. Hent startværdien (sas startup), sæt den, og check;
%let deffmtsearch=%sysfunc(getoption(fmtsearch,keyword,startupvalue));
options &deffmtsearch; run;
%put %sysfunc(getoption(fmtsearch,keyword));


LOG:
2    ***Check nuværende værdi af FMTSEARCH;
3    ***NB: I min sasv9.cfg fil den sat til: WORK LIBRARY FORMATER;
4    ***NB: I min autoexec.sas fil er APPFMT tilføjet;
5    %put %sysfunc(getoption(fmtsearch,keyword));
FMTSEARCH=(WORK LIBRARY FORMATER APPFMT)
6
7    **gem nuværende tilstand (så den kan sættes tilbage hertil på et senere tidspunkt);
8    %let deffmtsearch=%sysfunc(getoption(fmtsearch,keyword));
9
10   **Indsætter MITLIB forrest i fmtsearch og check;
11   options insert=(fmtsearch=(MITLIB));
12   %put %sysfunc(getoption(fmtsearch,keyword));
FMTSEARCH=(MITLIB WORK LIBRARY FORMATER APPFMT)
13
14   ***1. Sæt den tilbage til den var umiddelbart før og check;
15   options &deffmtsearch; run;
16   %put %sysfunc(getoption(fmtsearch,keyword));
FMTSEARCH=(WORK LIBRARY FORMATER APPFMT)
17
18   ***2. Hent defaultværdien (sas configuration), sæt den, og check;
19   %let deffmtsearch=%sysfunc(getoption(fmtsearch,keyword,defaultvalue));
20   options &deffmtsearch; run;
21   %put %sysfunc(getoption(fmtsearch,keyword));
FMTSEARCH=(WORK LIBRARY)
22
23   ***3. Hent startværdien (sas startup), sæt den, og check;
24   %let deffmtsearch=%sysfunc(getoption(fmtsearch,keyword,startupvalue));
25   options &deffmtsearch; run;
26   %put %sysfunc(getoption(fmtsearch,keyword));
FMTSEARCH=(WORK LIBRARY FORMATER)

Læs mere op GETOPTION her: SAS(R) 9.3 System Options: Reference, Second Edition

Se et eksempel på brugen i Juletip #16: https://communities.sas.com/docs/DOC-9953