- /*
- 简介:当前宏将类文本文件读取为SAS数据集,然后对其执行任意合法的SAS操作. 宏共包含5个参数:
- 参数说明:
- filein 指定输入文件, 允许使用SAS fileref
- fileout 指定输出文件, 允许使用SAS fileref, 默认为[&filein.]
- inencoding 输入文件的编码值, 默认为[%sysfunc(compress(&sysencoding.,-))]
- outencoding 输出文件的编码值, 默认为[&inencoding.]
- process 要对输入文件执行的合法SAS操作
- 其它说明:
- 宏内部对输入文件转换的数据集命名为_file_, 输入文件的内容存储在变量text中.
- 用法示例:
- %*对输入文件进行编码转换;
- %file_anyprocess(filein=D:\Download\没离开过_林志炫.lrc,inencoding=utf8,outencoding=euccn);
- %*对输入文件进行文本替换;
- %file_anyprocess(filein=D:\Download\没离开过_林志炫.lrc,process=%str(
- text=tranwrd(text,'没离开','没换气')));
- %*对输入文件增加行号;
- %file_anyprocess(filein=D:\Download\没离开过_林志炫.lrc,process=%str(
- text=put(_n_,z3.)||' '||text));
- %*完全替换输入文件的内容;
- %file_anyprocess(filein=D:\Download\没离开过_林志炫.lrc,process=%str(
- data _file_;set sashelp.class;text=cats(name,',',sex);run;));
- */
- %macro file_anyprocess(filein=,fileout=&filein.,inencoding=%sysfunc(compress(&sysencoding.,-)),outencoding=&inencoding.,process=);
- data _file_;
- infile %sysfunc(quote(%superq(filein))) lrecl=32767 truncover encoding=&inencoding.;
- input text $char32767.;
- %unquote(&process.);
- run;
- data _null_;
- file %sysfunc(quote(%superq(fileout))) encoding=&outencoding.;
- set _file_;
- _len_=lengthn(text);
- put text $varying. _len_;
- run;
- %mend;


雷达卡





京公网安备 11010802022788号







