Запускайте пакетные задания SAS через файлы SH: SAS-скрипт содержит экспорт в csv - где / как получить вывод?
Как персонал университета, мне разрешено запускать пакетные задания в WRDS. Я следовал инструкциям, также создал упаковщик и отправил работу.
#!/bin/bash
#$ -cwd
#$ -m abe
#$ -M myemail@email.com
echo "Starting Job at `date`"
sas my_sas_script.sas
echo "Ending Job at `date`"
Я вызвал скрипт через
qsub my_program.sh
Работа закончена очень быстро (!). В моем домашнем каталоге я получил свои лог-файлы (файлы "o" и "e").
В моем скрипте SAS есть экспорт в строку CSV, но я нигде не могу. Это потому, что скрипт SAS не запустился успешно? Нужно ли корректировать код (на самом деле это код из этого вопроса, но не в виде неработающего макроса, а в виде простого кода SAS для пошагового просмотра данных и переноса данных в макрос для цикла; сначала я начинаю со своих библиотек и затем продолжить с кодом).
редактировать: я снова запускаю my_program.sh и получаю следующий журнал (укороченный);
NOTE: Unable to open SASUSER.PROFILE. WORK.PROFILE will be opened instead.
NOTE: All profile changes will be lost at the end of the session.
.
.
.
35 data _v_&tables / view=_v_&tables;
36 set &taq_ds;
37 where symbol = &stock and
_
22
76
37 !
WARNING: Apparent symbolic reference STOCK not resolved.
ERROR 22-322: Syntax error, expecting one of the following: a name,
a quoted string, a numeric constant, a datetime constant,
a missing value, INPUT, PUT.
ERROR 76-322: Syntax error, statement will be ignored.
38 (time between '9:30:00't and '16:00:00't) and
39 mode = 12 and
40 EX = 'N';
ERROR: Syntax error while parsing WHERE clause.
41 run;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: DATA statement used (Total process time):
real time 3.39 seconds
cpu time 0.73 seconds
46 data xtemp2;
47 set _v_&tables;
47 set _v_&tables;
___
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
48 by symbol date time;
__
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
49 format itime rtime time12.;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
50 if first.symbol = 1 or first.date = 1 then do;
__
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
51
54 rtime = time;
_____
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
55 iprice = bid;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
56 oprice = ofr;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
57 itime = &start_time;
_____
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
58 end;
___
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
59
60 if time >= itime then do;
__
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
61 output;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
62 itime = itime + &interval_seconds;
_____
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
63 do while(time >= itime);
__
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
64 output;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
65 itime = itime + &interval_seconds;
_____
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
66 end;
___
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
67 end;
___
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
68 rtime = time;
_____
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
69 iprice = bid;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
70 oprice = ofr;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
71 retain itime iprice oprice;
______
180
ERROR 180-322: Statement is not valid or it is used out of proper order.
73 run;
74
75 Title "Final output -- 1min interval";
76 proc print data=work.xtemp2 (obs=100);
ERROR: File WORK.XTEMP2.DATA does not exist.
77 var symbol date itime iprice oprice;
ERROR: No data set open to look up variables.
ERROR: No data set open to look up variables.
ERROR: No data set open to look up variables.
ERROR: No data set open to look up variables.
ERROR: No data set open to look up variables.
78 run;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: SAS set option OBS=0 and will continue to check statements.
This might cause NOTE: No observations in data set.
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
NOTE: PROCEDURE EXPORT used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
WARNING: Apparent symbolic reference STOCK not resolved.
NOTE: The SAS System stopped processing this step because of errors.
81 proc export data=work.xtemp2 outfile="/home/Output/
81 ! &filename" dbms=csv;
82 run;
83
84 DM 'log; file "/home/Logs/ &filename.log" replace';
WARNING: Apparent symbolic reference STOCKLOG not resolved.
84 !
85 DM "log; clear; ";
ERROR: Errors printed on page 2.
1 ответ
Может показаться, что ваша SAS-программа работает просто отлично, она просто не может завершиться из-за синтаксических ошибок, а именно (в первом случае), что макропеременная "STOCK" не определена.
Я предлагаю сначала запустить программу в обычном (чистом) экземпляре SAS и убедиться, что она завершается без ошибок.
Если там все работает нормально, но не в пакетном режиме, то должна быть проблема с одним из следующих:
- autoexec (убедитесь, что вы используете тот же autoexec в вашем пакетном экземпляре)
- config (проверьте используемый файл sasv9.cfg)
- пользовательские разрешения (является ли учетная запись пакета той же учетной записью / имеет те же разрешения, что и "успешная" учетная запись?)