如何从命令行确定Stata文件的ds_format?

时间:2013-01-02 20:36:54

标签: stata

我将这个Perl单行放在一起,以确定Stata" ds_format"一些文件...

for file in *.dta; do perl -MParse::Stata::DtaReader -e 'open my $fileHandle, "<", @ARGV; my $dta = new Parse::Stata::DtaReader($fileHandle); print "$ARGV[0] is in STATA ds_format " . $dta->{ds_format} ,"\n\n";' $file; done

...但我假设有一种方法可以使用命令行stata命令来获取相同的信息。在那儿?上面的脚本打印我的文件:

  

study1a.dta位于STATA ds_format 113

     

study1b.dta位于STATA ds_format 115

     

study2.dta位于STATA ds_format 115

另见:

1 个答案:

答案 0 :(得分:1)

现在,您只需读取文件的第一个字符即可确定版本。除了版本文件格式版本117(Stata 13的当前版本)之外,版本将存储在XML中,因此必须增强此方法。

file open fhandle using dataset.dta, read binary
file read  fhandle %1s firstbytechar
file close fhandle
if "`firstbytechar'"=="<"{
    di "Version 117"
}
else {
    mata: st_numscalar("v", ascii("`firstbytechar'"))
    di "Version " v
}