Как прочитать неформатированный файл данных, сохраненный с помощью кода VAX FORTRAN с "map" и "union"

Ребята. Я пытаюсь прочитать файл научных данных, хранящихся в коде 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 

1 ответ

Это не сложно Вы можете думать о структуре как о структуре C с объединениями. Каждая запись имеет размер 2048 байт (512 "длинных слов" в терминах VAX) и состоит из пяти 32-разрядных чисел, массива из 3-х для заполнения, двух 32-разрядных чисел и затем массива из 428 чисел. Учитывая, что файл имеет фиксированную длину, метаданных не о чем беспокоиться. Объединение с "буфером" можно игнорировать.

Я был бы более обеспокоен тем, как файл попал на ваш компьютер, если предположить, что он возник в системе VMS. Вы хотите убедиться, что размер файла точно кратен 2048 байтам. Скорее всего, он передан просто отлично, поэтому объявите структуру с правильным расположением и прочитайте ее, запись за записью.

Другие вопросы по тегам