Alexander Vogt explains смысл (I5)
части. Этот ответ также указывает на некоторые другие проблемы и устраняет основную проблему. В нем не совсем четко указано решение, поэтому я напишу это здесь.
У вас есть две ошибки, но обе имеют ту же причину. Я переформулирую ваш оператор записи, явно указывая что-то, что неявно.
Write(unit=Array(i,j),'(I5)') Myarray(i,j)
Эта неявная вещь unit=
. Затем вы просите написать переменную символов Myarray(i,j)
файлу, подключенному к блоку, заданному целочисленной переменной Array(i,j)
.
Для некоторых значений целочисленного элемента файл не предварительно подключен. Вы можете прочитать об этом. Когда вы не получите первую ошибку:
Unit has neither been opened not preconnected
Для некоторых значений Array(i,j)
, скажем, 5, 6 или некоторое другое значение в зависимости от компилятора, блок будет предварительно подключен. Тогда, что первая ошибка не приходит о, и вы получите
Format/data mismatch
, потому что вы пытаетесь записать переменные символы с дескриптором числа редактирования.
Этот ответ, то есть длинный способ сказать, что вы хотите сделать
Write(Myarray(i,j),'(I5)') array(i,j)
Вы хотите записать целое значение символьной переменной.
Наконец, обратите внимание, что если вы сделали ту же ошибку с реальной переменной array
вместо целого, вы бы получили a different error message. В одном случае вам просто не повезло, что ваш синтаксис верен, но намерение было неправильным.
Похоже на все вопросы, которые вы рассматривали до этого, и правильно пометить свой вопрос на языке, который вы используете. «integer» никоим образом не помогает. –
Как написано, ваша строка кода пытается написать символ (из 'myarray (i, j)') в целое число (в 'array (i, j)'), вы заменили цель и пункт назначения. Вам может потребоваться не больше, чем обменять этих двух. –