我被要求找到下面程序中定义的First的长度,我认为应该是15,但是答案是200。
我的想法是SCAN(Author,1,',')的值是Agatha,但是由于我没有定义其长度,因此该长度与Author相同,为15。同样,First由于其值而被定为A。 Agatha的第一个字母,但由于未指定长度,因此仍然为15。
data test;
Author='Agatha Christie';
First=substr(scan(Author,1,','),1,1);
run;
proc contents;
run;
我不知道200个来自哪里...我可以寻求帮助吗?
答案 0 :(得分:5)
在SAS 9.4之前,从Scan函数返回的可变长度以前是200。 但是SAS 9.4赋予扫描功能的变量长度与其对其操作的变量相同。因此,新的可变长度将为15,而不是@Craig所说的200。以下是SAS 9.4文档的信息。
在DATA步骤中,如果SCAN函数向尚未指定长度的变量返回值,则该变量将被赋予第一个参数的长度。此行为与SAS早期版本中的行为不同。在以前的版本中,创建长度为200的变量的代码可能生成的长度大于预期的变量。如果您需要SCAN函数来分配一个值,该值与第一个参数的长度不同,请使用LENGTH语句。
答案 1 :(得分:0)
答案是错误的。 15岁 x