Using AUTOEXEC.SAS to customize SAS sessions

Файл autoexec.sas включает в себя набор операторов SAS, которые будут выполнены сразу же после того, как SAS будет инициализирован (запущен) и до того, как будет принят любой пользовательский ввод.

Такой файл должен называться именно autoexec с расширением .sas - почему именно так, а также более детальное описание всех тонкостей читайте по ссылкам, указанным в “Дополнительные материалы”.

Набор операторов, содержащийся в autoexec.sas может быть использован для:

В обучающем проекте SASTrainingProject autoexec.sas включает в себя вот такой набор операторов SAS:

* Set-up project-level macro variables for:
    - project dir path,
    - paths to the project level folders;

%global root rawdata g_data g_list g_macro g_logs g_code;
%let root=%str(\\sas01\Training_Kharkhov\SASTrainingProject);
%let rawdata=%str(&root\rawdata);
%let g_data=%str(&root\data);
%let g_list=%str(&root\list);
%let g_macros=%str(&root\macros);
%let g_logs=%str(&root\logs);
%let g_code=%str(&root\code);

Вышеприведенный кусок кода инициализирует макропеременные и устанавливает значения этих переменных равными полному пути к папке проекта (root) и соответствующим папкам внутри проекта (rawdata data list macros logs code). Детально про SAS Macro Language читаем в Lesson 7.

Т.е. при каждом запуске SAS внутри SASTrainingProject вам по умолчанию будут доступны макропеременные &root, &rawdata, &g_data, &g_list, &g_macros, &g_logs и &g_code. Изначально они нам нужны для назначения default libnames для каждого урока, а также libnames для data и rawdata. Но, в дальнейшем, их можно использовать и в ваших программах.

Ниже приведен код, который объявляет каждую библиотеку:

* Assign libnames for the input data for each lesson;
libname data "&g_data";
libname rawdata "&rawdata";
libname lesson01 "&rawdata\lesson01";
libname lesson02 "&rawdata\lesson02";
libname lesson03 "&rawdata\lesson03";
libname lesson04 "&rawdata\lesson04";
libname lesson51 "&rawdata\lesson05_1";
libname lesson52 "&rawdata\lesson05_2";
libname lesson06 "&rawdata\lesson06";
libname lesson08 "&rawdata\lesson08";
libname lesson09 "&rawdata\lesson09";
libname lesson10 "&rawdata\lesson10";
libname lesson13 "&rawdata\lesson13";
libname lesson14 "&rawdata\lesson14";
libname lesson15 "&rawdata\lesson15";
libname lesson16 "&rawdata\lesson16";
libname lesson17 "&rawdata\lesson17";
libname lesson18 "&rawdata\lesson18";
libname lesson19 "&rawdata\lesson19";
libname lesson20 "&rawdata\lesson20";
libname lesson21 "&rawdata\lesson21";
libname lesson22 "&rawdata\lesson22";

Далее в файл autoexec.sas включен код, который определяет набор системных SAS опций, которые будут актуальны по умолчанию для текущей сессии SAS:

* Specify project-level session options;
options orientation = landscape ls=140 ps=45 nocenter nobyline nodate nonumber;
options nomlogic nosymbolgen missing = ''formchar = '|_---|+|---+=|-/\<>*';

Более детально ознакомиться со всеми системными опциями SAS можно по ссылкам, указанным в “Дополнительные материалы”.

Далее с помощью процедуры OPTSAVE сохраняем все указанные нами опции в реестре с кодовым именем «proj_options» (это имя в дальнейшем может быть использовано для, например, сброса текущих пользовательских опций к тем, что мы определили выше).

* Save specified options;
proc optsave key="proj_options";
run;

Дополнительные материалы: