伙计们。我正在尝试读取由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 发布于 2015-04-22 01:50:15
这并不难。你可以把结构想像成一个带有联合的C结构。每条记录是2048字节(在VAX术语中是512个“长字”),由5个32位整数组成,一个由3个用于填充的整数组成的数组,两个32位浮点数,然后是一个428个浮点数的数组。考虑到文件的长度是固定的,就不需要担心元数据了。可以忽略带有"buffer“的联合。
我更关心的是这个文件是如何进入你的计算机的,假设它来自VMS系统。您需要验证文件大小是否为2048字节的精确倍数。很可能它传输得很好,所以用正确的布局声明一个结构,并逐条记录地读入它。
https://stackoverflow.com/questions/29775901
复制相似问题