Json 在SAS中,当SET没有记录时,如何在一个数据步中至少输出一行?
读取包含零记录的数据集时,数据步骤不运行任何put语句Json 在SAS中,当SET没有记录时,如何在一个数据步中至少输出一行?,json,sas,datastep,Json,Sas,Datastep,读取包含零记录的数据集时,数据步骤不运行任何put语句 data test; set SASHELP.class end=eof; where 1=0; *output; if _N_=1 then put '['; put '"' name '",'; if eof then put name ']'; *output; run; 有可能强迫他们中的一些人吗 我这样做的原因是我用put语句创建json文件 (我正在使用SAS9.
data test;
set SASHELP.class end=eof;
where 1=0;
*output;
if _N_=1 then put '[';
put '"' name '",';
if eof then put name ']';
*output;
run;
有可能强迫他们中的一些人吗
我这样做的原因是我用put语句创建json文件(我正在使用SAS9.3,还没有访问
procJSON
)
当数据集为空时,json文件完全为空。我需要它们至少包含一个空数组[]
这意味着我需要至少运行以下两行:
if _N_=1 then put '[';
if eof then put name ']';
目前,我被迫将其分为3个数据步骤,一个是头部(
)、一个是记录,最后一个是尾部(eof=1
)。也许有一个较短的解决方案?这里发生的情况是,当SAS点击一个集合
或输入
且没有可读取的记录时,它会在该点终止数据步骤。因此,由于set
位于循环的顶部,因此它会立即终止
如果将两个需要的条件移到顶部,这将起作用,例如:
data test;
if _n_=1 then put '[';
if eof then put ']';
set SASHELP.class end=eof;
where 1=0;
*output;
put '"' name '",';
*output;
run;
然后,无论那里是否有数据,他们都会进行操作
我喜欢的另一个选项是循环数据集读取,但在这种情况下,可能需要做的工作比有用的多。在SET语句之前检查EOF和相关操作。