Как прочитать неформатированный файл данных, сохраненный с помощью кода 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 байтам. Скорее всего, он передан просто отлично, поэтому объявите структуру с правильным расположением и прочитайте ее, запись за записью.