使用分隔符打印所有SAS列

使用分隔符打印所有SAS列,sas,file-writing,datastep,Sas,File Writing,Datastep,我试图打印出一个带分隔符的文件,而不必指定所有列。我可以接近,但数字列总是被引用: DATA _NULL_; SET SASHELP.CARS (obs = 5 keep = Make Model EngineSize); FILE "foo.csv" DSD DLM=","; PUT (_all_) (~); RUN; foo.csv "Acura","MDX","3.5" "Acura","RSX Type S 2dr","2" "Acura","TSX 4dr","2.4"

我试图打印出一个带分隔符的文件,而不必指定所有列。我可以接近,但数字列总是被引用:

DATA _NULL_;
  SET SASHELP.CARS (obs = 5 keep = Make Model EngineSize);
  FILE "foo.csv" DSD DLM=",";
  PUT (_all_) (~);
RUN;
foo.csv

"Acura","MDX","3.5"
"Acura","RSX Type S 2dr","2"
"Acura","TSX 4dr","2.4"
"Acura","TL 4dr","3.2"
"Acura","3.5 RL 4dr","3.5"
我如何实现以下任一目标:

"Acura","MDX",3.5
"Acura","RSX Type S 2dr",2
"Acura","TSX 4dr",2.4
"Acura","TL 4dr",3.2
"Acura","3.5 RL 4dr",3.5
或:


~
要求报价。所以,你得到了报价

您可以使用
&

DATA _NULL_;
  SET SASHELP.CARS (obs = 5 keep = Make Model EngineSize);
  FILE "c:\temp\foo.csv" DSD DLM=",";
  PUT (_all_) (&);
RUN;

&
实际上对数据没有任何影响(我们曾经有过一个关于它的问题,我不记得最终的答案,但基本上它似乎主要用于这个特定的目的,尽管这不是它的目的)。

顺便说一句,也可以很好地工作。可能还有其他选择。谢谢@Joe!你有这些参考资料的链接吗?在知识库里爬了一段时间后,我找不到它。关于你是如何做到你所要求的,这里没有真正的参考资料。你基本上是在作弊。
put(a)(b)
功能的目的是对变量列表(a)中的所有变量应用通用格式/etc。通常你可以写下你的变量列表;但是因为
put\u all
有一个特殊的功能,您必须通过将其强制到另一个方法中来覆盖它。您在第二对参数中所做的并不重要:只是一些无害的东西,但允许SAS认为您正在对
\u all
中的所有变量应用某些东西。您可以使用
(+0)
作为格式列表。对我来说,这似乎总是很清楚,它不会做任何事情,因为它只是将指针移动到零个空格。我对这是否是一个dup有复杂的感觉,所以如果其他人认为是,我会关闭它,否则不会。
DATA _NULL_;
  SET SASHELP.CARS (obs = 5 keep = Make Model EngineSize);
  FILE "c:\temp\foo.csv" DSD DLM=",";
  PUT (_all_) (&);
RUN;