Mam plik binarny, który chciałbym przeczytać z Fortran. Problem polega na tym, że nie został napisany przez Fortran, więc nie ma wskaźników długości rekordów. Więc zwykły niesformatowany odczyt Fortran nie zadziała.Czy Fortran odczytuje bajty bezpośrednio z pliku binarnego?
Myślałem, że mogę być sprytny i odczytać plik jako plik sformatowany, bajt po bajcie (lub 4 bajty po 4 bajty, naprawdę) do tablicy znaków, a następnie przekonwertować zawartość znaków na liczby całkowite i zmiennoprzecinkowe za pośrednictwem funkcji transferu lub oświadczenia o równoważnej przerwie. Ale to nie działa: staram się czytać 4 bajty na raz i, zgodnie z wyjściem POS z instrukcji inquire
, odczyt przeskakuje ponad 6000 bajtów, a tablica znaków zostaje załadowana śmieciami.
To nie da. Czy w tym podejściu jest jakiś szczegół, o którym zapominam? Czy jest to po prostu inny i lepszy sposób na zrobienie tego w Fortranie? (BTW, próbowałem również czytać w tablicyi tablicy bajtów. Mimo że te kody się skompilowałyby, gdy doszło do przeczytania, kod się zawiesił.)
Działa świetnie! Dzięki! Pomyślałem, że chodzi mi o to, by osiągnąć sukces w grze FORTRAN 90. A teraz więcej się uczyć! Ach tak. Wielkie dzięki. –
Bez dostępu do "strumienia" odczyt Fortran interpretował niektóre dane jako informacje o długości zapisu. Które z nich pominęły dane, które chciałeś przeczytać, i spowodowały, że długość rekordów była błędna. Poza tym plik nie ma żadnych zapisów w sensie Fortrana. –
@ M.S.B .: Jeśli, jak wskazywał OP, próbował on po raz pierwszy z odczytem sformatowanym, domyślam się, że przeskanował do przodu, aż trafi znak nowej linii. – janneb