sas proc参数大小限制

时间:2016-01-27 15:06:57

标签: sas proc

我有以下代码:

proc export
    data=mylib.datain (
        drop=
            first_name mi last_name suffix
            addr_1 addr_2 city
            birth_dt_agg_ind
            sec_birth_dt_agg_act
            sec_first_name_agg_act
            sec_mi_agg_act
            sec_last_name_agg_act
            sec_suffix_agg_act
            ibx_nm_gender_1st_individual_pre
            ibx_nm_gender_2nd_individual_pre
        obs=2
    )
    outfile=stdout
    dbms=csv
;

run;

工作正常。但我不希望每行多个字段。出于阅读和编辑的原因,我想要每行一个字段。但是当我这样做时,它失败了。这里的代码很好地缩进 - 相同的非空白字符,但它不起作用:

proc export
    data=mylib.datain (
        drop=
            first_name 
            mi 
            last_name suffix
            addr_1 
            addr_2 
            city
            birth_dt_agg_ind
            sec_birth_dt_agg_act
            sec_first_name_agg_act
            sec_mi_agg_act
            sec_last_name_agg_act
            sec_suffix_agg_act
            ibx_nm_gender_1st_individual_pre
            ibx_nm_gender_2nd_individual_pre
        obs=2
    )
    outfile=stdout
    dbms=csv
;

run;

我怀疑是因为" drop ="中有超过256个字符。那个时候的条款。现在,我知道我可以拿出空格,或者使用制表符而不是空格 - 在这种情况下,因为我就在边缘。

但是在一般情况下,proc中的参数中的字符数是否有限制?是256吗?有没有解决的办法?我尝试使用两种不同的" drop ="参数,但是没有用。

1 个答案:

答案 0 :(得分:0)

DROP=等数据集选项的长度没有限制。但PROC EXPORT基本上是SAS编写的SCL程序。也许与此相关的界面就是造成这个问题的原因。

创建一个视图并告诉PROC EXPORT使用它。

data myview / view=myview ;
  set mylib.datain
    (
      drop=
        first_name
        mi
        last_name suffix
        addr_1
        addr_2
        city
        birth_dt_agg_ind
        sec_birth_dt_agg_act
        sec_first_name_agg_act
        sec_mi_agg_act
        sec_last_name_agg_act
        sec_suffix_agg_act
        ibx_nm_gender_1st_individual_pre
        ibx_nm_gender_2nd_individual_pre
      obs=2
    )
  ;
run;

proc export
  data=myview
  outfile=stdout
  dbms=csv
;
run;