У меня есть небольшой скрипт fortran, записывающий данные в файл vtk. В некоторых случаях оператор записи будет делать именно то, что я намереваюсь сделать при компиляции скрипта с ifort. Однако с gfortran он вводит нежелательные пробелы, где строка прерывается продолжением строки (&) в скрипте. В результате записанная строка становится длиннее, чем предполагалось, и ее части не записываются, поскольку они выходят за рамки формата. Один из примеров:
write(21,'(A112)')'<VTKFile type = "vtkMultiBlockDataSet"
&version = "1.0" byte_order = "LittleEndian"
&compressor = "vtkZLibDataCompressor">"'
с ifort это дает
<VTKFile type = "vtkMultiBlockDataSet" version = "1.0" byte_order = "LittleEndian" compressor = "vtkZLibDataCompressor">
чего я хочу. Гфортран производит:
<VTKFile type = "vtkMultiBlockDataSet" version = "1.0" byte_order= "LittleEndian"
Таким образом, проблема заключается в лишних пробелах после "vtkMultiBlockDataSet" и "LittleEndian", которые приводят к утверждению, длина которого превышает 112 символов, указанных в формате. Требуются ли какие-либо дополнительные флаги при компиляции с помощью gfortran или в чем проблема. Спасибо за вашу помощь!!
Да, это так. Но все & находятся в правильном положении (6), которое я, к сожалению, не вставил здесь должным образом.
Для источника фиксированной формы я обращаюсь к вопросу о том, как правильно выполнить продолжение, в своем ответе на связанный вопрос. Проблема здесь в том, что, поскольку вы не отмечаете конец строки в продолжаемых строках, все пробелы до столбца 72 включаются в строку. Если ifort игнорирует их, что ж ... Вы можете добавить '//
в конец строки, добавив '
в начало следующей.
Используется ли это источник в фиксированной форме? Если да, обратите внимание, как вы форматируете фрагмент кода.