【发布时间】:2016-07-20 16:11:12
【问题描述】:
我有一个自动执行文件,当我连接到不同的服务器时,它会加密我的密码......代码如下所示:
%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.;
【问题讨论】:
-
您认为为什么需要它?您是否尝试删除它并使其不起作用?在什么情况下它不起作用?
-
我已经设置好了...我以为我不需要它,但我不确定依赖这个 autoexec 文件的所有意外情况,所以我没有更改任何内容。我与之交谈的人不知道它的目的......
-
您需要它来填充某些 INFILE 选项。如 FILENAME= 选项或 EOV= 选项。但我认为您的代码使用的 LENGTH= 选项不需要它。
-
我很困惑你为什么需要这个。 SAS不会明白你有一个变量并且它的值以@1开头吗???我从来不用单独使用“Input @;”然后再次输入状态..
-
仅供参考 - pwencode 不安全。见stackoverflow.com/questions/8157160/…
标签: encryption passwords sas