我被要求在下面的程序中找到First的长度,我认为应该是15,但答案是200.
我的想法是SCAN(作者,1,',')具有价值Agatha,但由于我没有定义它的长度,所以长度与作者相同,即15.再次,First因为它的第一个字母而被视为A阿加莎,但因为没有指定长度仍然是15.
data test;
Author='Agatha Christie';
First=substr(scan(Author,1,','),1,1);
run;
proc contents;
run;
Run Code Online (Sandbox Code Playgroud)
我不知道200来自哪里......我可以得到一些帮助吗?
Kir*_*an 5
在SAS 9.4之前,从Scan函数返回的可变长度曾经是200.但是扫描功能中的SAS 9.4可变长度给出与它操作的变量相同.因此@Craig所说的新变量长度将是15而不是200.以下是SAS 9.4文档的信息.
在DATA步骤中,如果SCAN函数将值返回给尚未给定长度的变量,则该变量将被赋予第一个参数的长度.此行为与以前版本的SAS中的行为不同.在以前的版本中,创建长度为200的变量的代码可能会生成一个长度大于预期的变量.如果需要SCAN函数来为变量赋值不同于第一个参数的长度,请使用LENGTH语句.