SAS输入语句



我有一个autoexec文件,当我连接到不同的服务器时,它会加密我的密码。。。。代码如下:

%global wspwd ewspwd hpwd ehpwd ;
/* Enter WORKSTATION Password Below */
filename ewspwdfl "/home/&sysuserid./ewspwd.txt" ;
proc pwencode in=’XXXXXXXX’ out=ewspwdfl ; run ;
data _null_ ;
    infile ewspwdfl obs=1 length=l ;
    input @ ;
    input @1 line1 $varying1024. l ;
    call symput('ewspwd',cats(substr(line1,1,l))) ;
    call symput('wspwd',cats(‘XXXXXXXX’)) ;
run ; 

我的问题是:为什么

input @ ; 

包括以及为什么

input @1 line1 $varying1024. l ;

这还不够。

每当我使用SAS创建数据集时,我从未在声明中包含"input@;"。我只是简单地写了一些东西:

input @1 firstname $ @15 lastname $ @30 date mmddyy6.;

数据步骤不需要它。你可以把它简化为.

data _null_ ;
  infile ewspwdfl obs=1 TRUNCOVER ;
  input line1 $CHAR1024. ;
  call symputX('ewspwd',line1);
  call symputX('wspwd',‘XXXXXXXX’) ;
run ; 

使用input @是创建一个程序的好方法,在该程序中,您希望使用不同的输入语句读取不同的行。您可以测试_infile_变量的内容,并根据读取的内容执行数据步骤的不同部分。

当在INFILE语句中使用EOV=选项来检测何时开始从新文件读取时,它也很有用,因为在开始读取新文件之前不会设置它。因此,INPUT @让SAS开始读取,以便设置EOV变量,但保持该行等待稍后读取真正的INPUT语句。

如果您想将相同的列重新读取到不同的变量中,@1非常有用。例如,您可能希望将前几个字符读取为字符串,然后对它们进行测试,并根据您发现的内容重新读取为数字或日期。

相关内容

  • 没有找到相关文章

最新更新