Sas SUBSTR(扫描(…)及其内容

Sas SUBSTR(扫描(…)及其内容,sas,Sas,我被要求在下面的程序中找到第一个定义的长度,我认为应该是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 conte

我被要求在下面的程序中找到第一个定义的长度,我认为应该是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是从哪里来的。。。我能得到一些帮助吗?

答案是错的。是15。
答案是错的。是15。
在SAS 9.4之前,从扫描函数返回的可变长度过去是200。 但是,扫描函数中给出的SAS 9.4可变长度与其操作的变量相同。因此,新的可变长度将是15,而不是@Craig所说的200。下面是有关SAS 9.4文档的信息


在数据步骤中,如果扫描函数向尚未给定长度的变量返回值,则该变量将给定第一个参数的长度。此行为与SAS早期版本中的行为不同。在以前的版本中,创建长度为200的变量的代码可能会生成长度大于预期的变量。如果您需要SCAN函数为变量指定与第一个参数长度不同的值,请使用length语句。

在SAS 9.4之前,SCAN函数返回的变量长度通常为200。 但是,扫描函数中给出的SAS 9.4可变长度与其操作的变量相同。因此,新的可变长度将是15,而不是@Craig所说的200。下面是有关SAS 9.4文档的信息


在数据步骤中,如果扫描函数向尚未给定长度的变量返回值,则该变量将给定第一个参数的长度。此行为与SAS早期版本中的行为不同。在以前的版本中,创建长度为200的变量的代码可能会生成长度大于预期的变量。如果您需要SCAN函数为变量指定不同于第一个参数长度的值,请使用length语句。

这取决于所使用的SAS版本。我怀疑OP有一些非常古老的学习材料。这取决于使用的SAS版本。我怀疑OP有一些非常古老的学习材料。这也是一个糟糕的测试题…这也是一个糟糕的测试题。。。