无法创建标签大于 40 的 xpt 文件 (Sas8)
Not able to create xpt file (Sas8) label greater than 40
TS-140 记录布局不工作。
下面是大于 40 的变量的 header 部分。
HEADER 记录*****LABELV8 HEADER 记录!!!!!!!!nnnnn
其中 nnnnn 是长标签的变量数。
我们可以得到任何样本xpt (sas8) 文件吗(至少一个标签大于40)。
在 SAS Universal Viewer 的文件打开菜单中,它肯定是 V5 传输文件。 V5 格式仅支持 SAS 版本 5 中存在的限制。因此 8 个字符名称,40 个字符标签,字符变量的最大长度为 200。
但看起来它确实支持更长的值。至少在使用版本 1.42 时。
示例代码:
data v8;
attrib var1 label=
'This label is so long that it will have more than 40 characters';
input (var1 var2 ThisNameIsMoreThan8Chars) (:.);
cards;
1 2 3
4 5 6
;
%loc2xpt(libref=work,memlist=V8,filespec=xpt,format=auto);
结果文件:
305 data _null_;
306 infile xpt lrecl=80 recfm=f;
307 input;
308 list;
309 run;
NOTE: The infile XPT is:
Filename=...,
File Size (bytes)=1440
RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0
1 HEADER RECORD*******LIBV8 HEADER RECORD!!!!!!!000000000000000000000000000000
2 CHAR SAS SAS SASLIB 9.1 LIN X64. 07JUN21:11:11:51
ZONE 54522222545222225454442232322222444253302222222222222222222222223345433333333333
NUMR 3130000031300000313C92009E100000C9E0864000000000000000000000000007A5E21A11A11A51
3 07JUN21:11:11:51
4 HEADER RECORD*******MEMBV8 HEADER RECORD!!!!!!!000000000000000001600000000140
5 HEADER RECORD*******DSCPTV8 HEADER RECORD!!!!!!!000000000000000000000000000000
6 CHAR SAS V8 SASDATA 9.1 LIN X64.07JUN21:11:11:51
ZONE 54522222532222222222222222222222222222225454454232322222444253303345433333333333
NUMR 3130000068000000000000000000000000000000313414109E100000C9E0864007A5E21A11A11A51
7 07JUN21:11:11:51
8 HEADER RECORD*******NAMSTV8 HEADER RECORD!!!!!!!000000000300000000000000000000
9 CHAR ........var1 This label is so long that it will have ........
ZONE 00000000767322225667266666267276266662766726727666266762222222220000000022222222
NUMR 020001016121000048930C125C09303F0CFE704814094079CC081650000000000000000000000000
10 CHAR ........var1 .?..........................var2
ZONE 00000000767322222222222222222222222222220300000000000000000000000000767322222222
NUMR 00000000612100000000000000000000000000000F01010000000000000002000102612200000000
11 CHAR ........ ........var2
ZONE 22222222222222222222222222222222222222222222000000002222222200000000767322222222
NUMR 00000000000000000000000000000000000000000000000000000000000000000001612200000000
12 CHAR ............................ThisName
ZONE 22222222222222222222000000000000000000000000000056674666222222222222222222222222
NUMR 0000000000000000000001010100000000000000020001034893E1D5000000000000000000000000
13 CHAR ........ ........ThisNameIsMoreThan8Chars
ZONE 22222222222222222222222200000000222222220000000056674666474676566634667722222222
NUMR 0000000000000000000000000000000000000000000000024893E1D593DF25481E83812300000000
14 CHAR ....................
ZONE 00000000000000000000222222222222222222222222222222222222222222222222222222222222
NUMR 01010100000000000000000000000000000000000000000000000000000000000000000000000000
15 HEADER RECORD*******LABELV8 HEADER RECORD!!!!!!!1
16 CHAR .....?var1This label is so long that it will have more than 40 characters
ZONE 00000376735667266666267276266662766726727666266762667627666233266676676772222222
NUMR 01040F612148930C125C09303F0CFE704814094079CC081650DF250481E040038121345230000000
17 HEADER RECORD*******OBSV8 HEADER RECORD!!!!!!! 2
18 123456
NOTE: 18 records were read from the infile XPT.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
TS-140 记录布局不工作。 下面是大于 40 的变量的 header 部分。 HEADER 记录*****LABELV8 HEADER 记录!!!!!!!!nnnnn 其中 nnnnn 是长标签的变量数。
我们可以得到任何样本xpt (sas8) 文件吗(至少一个标签大于40)。
在 SAS Universal Viewer 的文件打开菜单中,它肯定是 V5 传输文件。 V5 格式仅支持 SAS 版本 5 中存在的限制。因此 8 个字符名称,40 个字符标签,字符变量的最大长度为 200。
但看起来它确实支持更长的值。至少在使用版本 1.42 时。
示例代码:
data v8;
attrib var1 label=
'This label is so long that it will have more than 40 characters';
input (var1 var2 ThisNameIsMoreThan8Chars) (:.);
cards;
1 2 3
4 5 6
;
%loc2xpt(libref=work,memlist=V8,filespec=xpt,format=auto);
结果文件:
305 data _null_;
306 infile xpt lrecl=80 recfm=f;
307 input;
308 list;
309 run;
NOTE: The infile XPT is:
Filename=...,
File Size (bytes)=1440
RULE: ----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0
1 HEADER RECORD*******LIBV8 HEADER RECORD!!!!!!!000000000000000000000000000000
2 CHAR SAS SAS SASLIB 9.1 LIN X64. 07JUN21:11:11:51
ZONE 54522222545222225454442232322222444253302222222222222222222222223345433333333333
NUMR 3130000031300000313C92009E100000C9E0864000000000000000000000000007A5E21A11A11A51
3 07JUN21:11:11:51
4 HEADER RECORD*******MEMBV8 HEADER RECORD!!!!!!!000000000000000001600000000140
5 HEADER RECORD*******DSCPTV8 HEADER RECORD!!!!!!!000000000000000000000000000000
6 CHAR SAS V8 SASDATA 9.1 LIN X64.07JUN21:11:11:51
ZONE 54522222532222222222222222222222222222225454454232322222444253303345433333333333
NUMR 3130000068000000000000000000000000000000313414109E100000C9E0864007A5E21A11A11A51
7 07JUN21:11:11:51
8 HEADER RECORD*******NAMSTV8 HEADER RECORD!!!!!!!000000000300000000000000000000
9 CHAR ........var1 This label is so long that it will have ........
ZONE 00000000767322225667266666267276266662766726727666266762222222220000000022222222
NUMR 020001016121000048930C125C09303F0CFE704814094079CC081650000000000000000000000000
10 CHAR ........var1 .?..........................var2
ZONE 00000000767322222222222222222222222222220300000000000000000000000000767322222222
NUMR 00000000612100000000000000000000000000000F01010000000000000002000102612200000000
11 CHAR ........ ........var2
ZONE 22222222222222222222222222222222222222222222000000002222222200000000767322222222
NUMR 00000000000000000000000000000000000000000000000000000000000000000001612200000000
12 CHAR ............................ThisName
ZONE 22222222222222222222000000000000000000000000000056674666222222222222222222222222
NUMR 0000000000000000000001010100000000000000020001034893E1D5000000000000000000000000
13 CHAR ........ ........ThisNameIsMoreThan8Chars
ZONE 22222222222222222222222200000000222222220000000056674666474676566634667722222222
NUMR 0000000000000000000000000000000000000000000000024893E1D593DF25481E83812300000000
14 CHAR ....................
ZONE 00000000000000000000222222222222222222222222222222222222222222222222222222222222
NUMR 01010100000000000000000000000000000000000000000000000000000000000000000000000000
15 HEADER RECORD*******LABELV8 HEADER RECORD!!!!!!!1
16 CHAR .....?var1This label is so long that it will have more than 40 characters
ZONE 00000376735667266666267276266662766726727666266762667627666233266676676772222222
NUMR 01040F612148930C125C09303F0CFE704814094079CC081650DF250481E040038121345230000000
17 HEADER RECORD*******OBSV8 HEADER RECORD!!!!!!! 2
18 123456
NOTE: 18 records were read from the infile XPT.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds