Массив, созданный с несколькими 50
s, является ожидаемым.
Часть текста вопроса не соответствует тому, что происходит с кодом:
размещение скаляра перед конструкцией do внутри конструктора массива
В [(50,i,i=1,2)]
(для ясности используется Fortran 2003 [...]
) скалярное значение 50
не "до" подразумеваемого do, а является его явной частью. Это можно сравнить с
a = [50, (i,i=1,3)]
, что приведет к созданию массива [50, 1, 2, 3]
.
Формальный синтаксис для подразумеваемого do конструктора массива:
( список значений AC , AC-Implied-Do-Control )
, поэтому можно видеть, что несколько значений могут быть частью диапазона подразумеваемого управления do, даже если оно является обычным для использования только одного значения. С такими множественными значениями все они оцениваются для каждой итерации подразумеваемого do (и 50
оценивает одно и то же каждый раз) и используются в конструкции массива.