人。我试图读取由VAX FORTRAN代码存储的科学基准文件。数据存储在结构中,其文件和代码描述如下。我用谷歌搜索FORTRAN 77可能会读取该文件,但我常用的语言不是FORTRAN。那么有人可以告诉我如何将数据读入FORTRAN或C / IDL /等。变量?例如,结构的N个单元存储在文件“pxm.mos”中,如何将数据读入我的变量? 非常感谢! 以下是说明。
c FILE name is "pxm.mos"
c FILE AND RECORD STRUCTURE
c The files were created with form='unformatted', organization='sequential',
c access='sequential', recordtype='fixed', recordsize=512.
c The following VAX FORTRAN code specifies the record structure:
structure /PXMstruc/
union
map
integer*4 buffer(512)
end map
map
integer*4 mod16
integer*4 mod60
integer*4 line
integer*4 sct
integer*4 mfdsc
integer*4 spare(3)
real*4 datamin
real*4 datamax
real*4 data(0:427)
end map
end union
end structure
record /PXMstruc/ in
答案 0 :(得分:2)
这并不难。您可以将结构视为C结构,具有联合。每条记录为2048字节(VAX术语为512“longwords”),由5个32位整数组成,3个整数用于填充,2个32位浮点数,然后是428个浮点数组。鉴于文件是固定长度的,没有元数据需要担心。与“缓冲”的联合可以忽略。
我会更关心文件如何进入您的计算机,假设它来自VMS系统。您需要验证文件大小是否为2048字节的整数倍。很可能它转移得很好,所以声明一个具有正确布局的结构并读入它,按记录记录。