SAS LENGTH vs INPUT用于定义变量

时间:2018-03-15 04:32:05

标签: sas

我想知道是否存在差异,例如,使用:

LENGTH var_1 $ 12。; INPUT var_1 $;

VS

INPUT var_1:$ 12 .;

从数据线或外部文件读取标准输入时;

2 个答案:

答案 0 :(得分:3)

只要LENGTH或INPUT语句是SAS编译器看到VAR_1引用的第一个位置并且需要决定分配给它的类型和长度,它们就是相同的。两者都会导致VAR_1被定义为长度为12的字符变量.LENGTH语句将显式执行,INPUT语句将作为副作用执行。 SAS假设您希望类型为字符,因为您使用了字符信息。它还假设您希望长度与信息中的宽度相同。 (请注意,您可以事先在RETAIN语句中引用该变量,SAS将不会决定当时的类型和长度。)

两个INPUT语句都将在列表模式下读取VAR_1,因为第二个INPUT语句在信息规范之前包含:修饰符。因此,即使下一个单词超过12个字符,SAS也会将它看到的下一个单词(取决于DSD和TRUNCOVER选项的设置以及是否使用&修饰符)读入VAR_1。当您使用列表模式而不是格式化模式读取数据时,SAS实际上会忽略信息的宽度并读取下一个字中的字符数。因此,如果下一个单词超过12个字符,则会忽略多余的字符。

请注意,如果您已将VAR_1定义为字符变量,那么在第一种情况下,您不需要在INPUT语句中添加$

答案 1 :(得分:0)

两者都做同样的工作。 @tom有详细而好的答案