SUBSTR(SCAN(...))及其内容

时间:2018-10-21 16:57:26

标签: sas

我被要求找到下面程序中定义的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个来自哪里...我可以寻求帮助吗?

2 个答案:

答案 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