Sas 从多行读入单行,直到遇到分隔符为止

Sas 从多行读入单行,直到遇到分隔符为止,sas,sas-macro,Sas,Sas Macro,我一直在尝试读取一个文本文件,该文件的行如下,分隔符为分号: Sun rises in the east and; sets in the west ; 我正在尝试从一个分隔符到另一个分隔符读取数据,如下所示 变量名称 1 Sun rises in the east and 2 sets in the west 我尝试了infle选项中几乎所有可用的选项,但都没有成功。可以这样读吗?怎么做?任何线索/帮助都将不胜感激。逐字阅读并连成较长的行 data want ; infile

我一直在尝试读取一个文本文件,该文件的行如下,分隔符为分号:

Sun rises
 in the east
  and;
sets in the 
west
;
我正在尝试从一个分隔符到另一个分隔符读取数据,如下所示 变量名称

1 Sun rises in the east and
2 sets in the west

我尝试了
infle
选项中几乎所有可用的选项,但都没有成功。可以这样读吗?怎么做?任何线索/帮助都将不胜感激。

逐字阅读并连成较长的行

data want ;
  infile mydat end=eof  ;
  length word $200 line $2000 ;
  drop word;
  do while (^eof and ^index(word,';'));
    input word @ ;
    line = catx(' ',line,compress(word,';'));
  end;
  if _n_ > 1 or line ne ' ' then output;
run;

recfm=n
是告诉SAS不要有“换行符”的方法。因此:

data want;
  infile "c:\temp\test.txt" recfm=n dsd dlm=';';
  length text $1024;
  input text $;
run;

请注意,换行符将被读取为另外两个字符,因此如果要删除这些字符,可以使用
compress
c
选项删除控制字符(包括LF/FF)

张贴您尝试过的内容使用lrecl、linesize、@@all尝试过很多方法,但都没有给出正确的结果。看起来您不在乎是否将多个空格压缩为一个空格?这样,
'east and'
就变成了
'east and'
。如果是这样的话,那就用这个词逐字读,当这个词包含分隔符时就停下来。谢谢乔。这很有帮助。使用compress,也删除了所需的字符,我使用tranward删除了“0D”x和“0A”x。这当然是一个合理的解决方案
transtrn
可能是最好的翻译功能,但任何一个都可以。感谢Tom抽出时间。这也是一个很好的黑客解决方案。