我想知道是否存在差异,例如,使用:
LENGTH var_1 $ 12。; INPUT var_1 $;
VS
INPUT var_1:$ 12 .;
从数据线或外部文件读取标准输入时;
答案 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有详细而好的答案