【发布时间】:2019-10-09 02:37:13
【问题描述】:
我正在尝试在 SAS CI 上调用 MACRO(使用节点进程),但在尝试执行时收到错误消息(1012 或 3000)。此代码在 SAS Enterprise Guide 上运行良好。
我尝试删除“调用执行”语法,但没有成功。
DATA _NULL_ ;
SET SMS_TEMP END = EOF ;
IF _N_ = 1 THEN DO UNTIL (EOF);
%build_JSON;
END ;
PUT 'Complete';
STOP ;
RUN ;
代码完整:
DATA _NULL_ ;
SET SMS_TEMP END = EOF ;
IF _N_ = 1 THEN DO UNTIL (EOF);
CALL EXECUTE('%build_JSON');
END ;
PUT 'FINAL';
STOP ;
RUN ;
%macro build_JSON;
FILENAME CODE TEMP;
DATA _NULL_;
SET SMS_TEMP;
FILE CODE ;
PUT
'WRITE VALUES "TP_SMS" ' CODSMS :$QUOTE. ';'
/ 'WRITE VALUES "NM_REMETENTESMS" ' REMETENTE :$QUOTE. ';'
/ 'WRITE VALUES "NR_TELEFONECELULARSMS" ' MOBILE :$QUOTE. ';'
/ 'WRITE VALUES "TX_MENSAGEMSMS" ' MSGTEXT :$QUOTE. ';'
/ 'WRITE VALUES "DT_PARAENVIOSMS" ' DATAPARA :$QUOTE. ';'
/ 'WRITE VALUES "DT_LIMITEENVIOSMS" ' DATALIMI :$QUOTE. ';'
/ 'WRITE VALUES "DS_CHAVEORIGEMSMS" ' RESP :$QUOTE. ';'
;
RUN;
PROC JSON OUT="%SYSFUNC(GETOPTION(WORK))/TEST.JSON" PRETTY KEYS NOSASTAGS;
WRITE OPEN OBJECT;
%INCLUDE CODE;
WRITE CLOSE;
RUN;
FILENAME CODE CLEAR;
%MEND build_JSON;
我希望在 SAS CI 上使用宏(在节点进程上使用 SAS 代码)。
我该怎么做?
我将尝试准确解释我需要什么:我有一个数据集,我需要为我的数据集中的每一行创建一个 JSON 文件。之后我将使用 API 进程调用另一个宏。我的循环应该是:读取 (1),创建 JSON 文件 (2),执行 API 宏 (3)。排除文件out(json),查找下一个寄存器;
【问题讨论】:
-
调用前需要先定义宏。
-
您只展示了第二步的部分代码,即从数据集创建 JSON 文件。您打算如何处理 JSON 文件?你用它做什么会产生你需要聚合的任何输出吗?
标签: sas