Json 在SAS中,当SET没有记录时,如何在一个数据步中至少输出一行?

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.

读取包含零记录的数据集时,数据步骤不运行任何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.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和相关操作。