使用SAS attrib语句报错Undeclared array referenced: attrib问题求助
报错产生原因
attrib是SAS DATA步的专属语句,若在DATA步范围外(如全局代码、PROC过程步内)直接执行,SAS会将attrib识别为未声明的数组名,触发对应报错。- 第二段
attrib语句使用的('SAS ETL') as CUSTOMER_ID是PROC SQL的字段赋值语法,不符合DATA步attrib语句的语法规则,会引发语法识别错误。 - 额外的语法问题:第一段代码中
PRODUCT_TYPE指定的length = 8为数值型长度,但配套了字符型格式$8.,变量类型不匹配,即使放到正确的DATA步内也会触发警告或报错。
修复方案
根据使用场景选择对应修复方式:
场景1:在DATA步中声明变量属性并赋值
data 输出数据集名; set 输入数据集名; /* 无输入数据集可省略该行 */ /* 声明PRODUCT_TYPE属性 */ attrib PRODUCT_TYPE length = $8. format = $8. label = 'PRODUCT_TYPE'; /* 声明CUSTOMER_ID属性 */ attrib CUSTOMER_ID length = $30. format = $30. label = 'CREATD_USER_ID'; /* 单独给CUSTOMER_ID赋值固定值 */ CUSTOMER_ID = 'SAS ETL'; run;
场景2:在PROC SQL中创建新字段并指定属性
不需要使用attrib语句,直接在字段定义后追加属性参数即可:
proc sql; create table 输出数据集名 as select PRODUCT_TYPE length = $8. format = $8. label = 'PRODUCT_TYPE', 'SAS ETL' as CUSTOMER_ID length = $30. format = $30. label = 'CREATD_USER_ID' from 你的输入数据集名; quit;
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

