sas内嵌数据线trunctuates为8个字符

sas内嵌数据线trunctuates为8个字符,sas,truncate,Sas,Truncate,我已经有几年没有在SAS工作了,我正在努力重新开始工作 我正在尝试使用逗号分隔的数据行读取数据。虽然有很多示例,但我无法正确导入以下数据: data h0; infile datalines delimiter=','; input kst kst_bez $ hx $ hx_bez $ hxx $ hxx_bez $ hxxx $ hxxx_bez $ ; datalines; 10000,Team 1 South,H0,Gr

我已经有几年没有在SAS工作了,我正在努力重新开始工作

我正在尝试使用逗号分隔的数据行读取数据。虽然有很多示例,但我无法正确导入以下数据:

data h0;
   infile datalines delimiter=','; 
   input
   kst
   kst_bez $
   hx $
   hx_bez $
   hxx $
   hxx_bez $
   hxxx $
   hxxx_bez $
;
   datalines;
10000,Team 1 South,H0,Group,H10,Retail,H112,Retail Germany
10001,Team 2 North & West,H0,H10,Retail Division 2,H112,Retail Germany
10003,Human Res,H0,Group,H20,HR,H112,HR Germany
;
我本以为,
delimiter=',
告诉SAS只需将我的
-字符之间的数据读入类似于
VARCHAR
-变量的内容中。。。但是,任何字母数字数据都会被截断为8个字符

我模模糊糊地记得我必须使用类似
$varying40.
,这与我找到的示例一致-但是,如果我将其添加到变量中,变量不会停止在
,而是读取整个,比如说,40个字符

有什么提示吗


非常感谢

如果您不定义它们,否则SAS将默认所有字符变量的长度为8。如果在使用变量之前使用
LENGTH
ATTRIB
语句显式定义变量,对您和SAS编译器来说可能更清楚。否则,SAS必须根据它们最初的使用方式猜测您希望如何定义它们

data h0;
  length kst 8 kst_bez $20 hx $20 hx_bez $20 hxx $20 hxx_bez $20 
         hxxx $20 hxxx_bez $20
  ;
  infile datalines dsd truncover ;
  input kst -- hxxx_bez ;
datalines;
...
您可以在第一次使用变量时向输入语句中添加行内信息规范,SAS将默认为所用信息的宽度,但请确保添加冒号前缀,以防止SAS读取超过分隔符

data h0;
  infile datalines dsd truncover ;
  input kst kst_bez :$20. hx :$20. hx_bez :$20. hxx :$20. hxx_bez :$20. 
        hxxx :$20. hxxx_bez :$20.
  ;
datalines;
...

谢谢!这两种选择都很有魅力。什么时候使用这是一个谜在这一点上,但我想我知道它一旦我回到SAS
truncover
是我明显错过的部分。