我是SAS新手,我正在尝试通过SAS程序创建批处理文件。代码如下:
data new;
enddate=date();
getdate=date()+1;
flname1=compress("d:\temp\file"||year(enddate)||put(month(enddate),z2.)||
put(day(enddate),z2.)||".txt");
begdate=enddate-&days;
dtline1=compbl(compress("00:00_"||put(begdate,mmddyy10.))||" "||
compress("00:00_"||put(getdate,mmddyy10.)));
file 'h:\programs\daily_file';
put 'LOGIN abc xyz';
put 'FILE(C:\temp\list.txt)
dtline1 "script.pl("flname1")";
put 'LOGOUT';
Script.pl是一个perl脚本,在生成的批处理文件中,flname1
后面有一个额外的空格。它打印的内容如下:
script.pl(d:\ temp \ file_date)。
我不希望这个额外的空间在日期之后。我该怎么办?
答案 0 :(得分:3)
让它正常工作的最简单方法就是将整个命令(put "script.pl(" flname1 +(-1) ")";
)放入一个变量中,然后放入该变量。
你也可以使用put中的+( - 1)将线指针向后移动一个,如果它一直偏离一个(尽管大部分时间不需要)。
public, max-age=3600
答案 1 :(得分:0)
在写入文件之前,您似乎很难创建字符串变量。您应该能够使用PUT语句的功能编写您想要的内容。从问题不清楚你想要文件的格式,但我认为这段代码模仿你的程序。
%let days=7 ;
data new;
enddate=date();
getdate=date()+1;
begdate=enddate-&days;
file 'h:\programs\daily_file';
put 'LOGIN abc xyz'
/ 'FILE(C:\temp\list.txt) 00:00_' begdate mmddyy10.
' 00:00_' getdate mmddyy10.
' script.pl(d:\temp\file' enddate yymmddn8. '.txt)'
/ 'LOGOUT'
;
run;
它产生:
LOGIN abc xyz
FILE(C:\temp\list.txt) 00:00_08/14/2015 00:00_08/22/2015 script.pl(d:\temp\file20150821.txt)
LOGOUT