SAS sftp使用LF分隔符而不是CRLF发送文件
我对SAS编程完全陌生,因此如果问题非常基本,请原谅。我正在尝试使用SAS sftp将文件从Linux发送到windows服务器。我可以传输文件,但目标文件有一个行分隔符LF,而我们的作业希望文件有CRLF分隔符。我尝试使用termstr选项,但失败,错误为“无效选项termstr”。下面是我的代码SAS sftp使用LF分隔符而不是CRLF发送文件,sas,Sas,我对SAS编程完全陌生,因此如果问题非常基本,请原谅。我正在尝试使用SAS sftp将文件从Linux发送到windows服务器。我可以传输文件,但目标文件有一个行分隔符LF,而我们的作业希望文件有CRLF分隔符。我尝试使用termstr选项,但失败,错误为“无效选项termstr”。下面是我的代码 filename out-file sftp 'file.txt' cd='/project/dir' host='hostname' recfm=v user
filename out-file sftp 'file.txt' cd='/project/dir'
host='hostname' recfm=v
user=user1;
data _null_;
file out-file TERMSTR=crlf;
do i=1 to i=10;
put i=;
end;
run;
TERMSTR
是infle
语句的一个选项,而FILE
语句没有相应的选项
尝试使用带有十六进制字符串的PUT
,并保持输出(@
)
来自SAS文档
(系统)选项值的十六进制值必须以数字(0–9)开头,后跟X。例如,以下OPTIONS语句使用十六进制数将行大小设置为160:
选项linesize=0a0x代码>
十六进制数字的字符指定需要引号:
选项formchar='a0'x代码>
在上的附加读数将显示
SAS字符常量可以用十六进制表示法表示。字符十六进制常量是由偶数个十六进制字符组成的字符串,用单引号或双引号括起来,后跟一个X
及
表示为十六进制值的数值常量以数字(通常为0)开头,后面可以跟更多十六进制字符,最后以字母X结尾。该常量最多可以包含16个有效十六进制字符(0到9,A到F)
您的程序使用的fileref值无效。不能在SAS名称中使用连字符
您可以在FILENAME或FILE语句中使用TERMSTR=选项来更改行尾字符
我认为SFTP总是将文件作为二进制文件移动。您可以尝试更改您的SFTP选项,以确保它正在这样做。尝试删除recfm=v
选项
注意:文本文件有行尾字符,而不是记录分隔符。如果您正在编写某种类型的专有二进制文件格式,您可能会考虑数据行之间的字符-记录分隔符,但如果您认为文本文件中的行被分隔而不是终止,则会导致混乱。P>不能使用中间有连字符的FielEF。只允许使用1到8个字符的有效SAS名称。TERMSTR=
选项在文件
语句中受支持。
PUT I= '0d0a'x @;