首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取通过VAX FORTRAN代码保存的带"map“和"union”的非格式化数据文件

如何读取通过VAX FORTRAN代码保存的带"map“和"union”的非格式化数据文件
EN

Stack Overflow用户
提问于 2015-04-21 22:59:00
回答 1查看 181关注 0票数 0

伙计们。我正在尝试读取由VAX FORTRAN代码存储的科学数据文件。数据按结构存储,文件和代码描述如下。我用谷歌搜索了FORTRAN 77可能会读到这个文件,但我经常使用的语言不是FORTRAN。那么,谁能告诉我如何将数据读入FORTRAN或C/IDL/等变量?例如,N个结构单元存储在文件"pxm.mos“中,我如何将数据读取到我的变量中?非常感谢!下面是相关描述。

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

发布于 2015-04-22 01:50:15

这并不难。你可以把结构想像成一个带有联合的C结构。每条记录是2048字节(在VAX术语中是512个“长字”),由5个32位整数组成,一个由3个用于填充的整数组成的数组,两个32位浮点数,然后是一个428个浮点数的数组。考虑到文件的长度是固定的,就不需要担心元数据了。可以忽略带有"buffer“的联合。

我更关心的是这个文件是如何进入你的计算机的,假设它来自VMS系统。您需要验证文件大小是否为2048字节的精确倍数。很可能它传输得很好,所以用正确的布局声明一个结构,并逐条记录地读入它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29775901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档