Запись лист-ориентированных данных в неформатированный ввод-вывод


Я пытаюсь записать неформатированные данные в файл. Он должен быть простым, но во время выполнения он выдает ошибку;

Forrtl: строгий (257): форматированный ввод-вывод в модуль открыт для неформатированных передач, Модуль 1, файл ~ / destination

Мне трудно привести рабочий пример, поскольку он содержится в сложной подпрограмме климатической модели, но моя лучшая попытка представить его;

      subroutine writev(par)
      real par(x,y)
      real var(x,y)

      var = sqrt(par)
      open (unit=1,file="~/destination",form="unformatted")
      write (1,*)var
      close(1)
      end

Из того, что я могу интерпретировать, сообщение об ошибке говорит мне что данные отформатированы, но я не вижу, почему это было бы так, поскольку я не просил его отформатировать его где-либо, кроме указания, что это реальный тип. Есть ли что-то вопиюще очевидное, что я могу упустить здесь?

Полный след strack;

Forrtl: строгий (257): форматированный ввод-вывод в модуль открыт для неформатированных передач, Модуль 1, файл ~ / изображение назначения
PC Routine Line Source
джинн.exe 00000000008362B6 неизвестно неизвестно Неизвестный Джинн.exe 00000000008354B6 неизвестно
Неизвестный неизвестный Джинн.exe 00000000007E2612 неизвестно
Неизвестный неизвестный Джинн.exe 0000000000796881 неизвестно
Неизвестный неизвестный Джинн.exe 000000000079616E неизвестно
Неизвестный неизвестный Джинн.exe 00000000007D373E неизвестно
Неизвестный неизвестный Джинн.exe 0000000000467FF4 неизвестно
Неизвестный Неизвестный джинн.exe 000000000046F06F неизвестно
Неизвестный неизвестный Джинн.exe 000000000043C793 неизвестно
Неизвестный неизвестный Джинн.exe 0000000000461D73 неизвестно
Неизвестный неизвестный Джинн.exe 0000000000403816 неизвестно
Неизвестный неизвестный файл libc.так.6 000000376901D9F4 неизвестных
Неизвестный неизвестный Джинн.exe 0000000000403729 неизвестно
Неизвестный Неизвестный

Настоящий 0m1.673s пользователей 0m0.031s представление sys 0m0.Ошибка 023s : !!!!!!!!!! ОБРАБОТКА ОШИБОК !!!!!!!!!!

1 2

1 ответ:

Неформатированный ввод-вывод не требует/конфликтов со спецификатором формата *. Использование

write (1) var

Должен сделать трюк. Подробнее см. здесь.

Кстати: никогда не используйте номера единиц ниже 10, они могут иметь особое значение (например, обычно 6 является STDOUT). Если ваш компилятор поддерживает его, используйте open с newunit.