Сначала я скажу, что код, который у вас есть, является «правильным» Fortran 90, но я согласен с желанием отойти от общих блоков.
По сути, нет ничего особенного в символьной природе объявления. Всякий раз, когда
<type> A
common /foo/ A(<size>)
используется две части объявления A, а также общая ассоциация: тип и размерность. Игнорируя ассоциацию, объявление измерения в операторе common
разрешено, и приведенное выше похоже на
<type> A
dimension A(<size>)
Это, в свою очередь, то же самое, что и
<type>, dimension(<size>) :: A
Что касается конкретного примера, тип представляет собой символ длиной 80. Ваше нестандартное объявление будет просто
character(len=80), dimension(999) :: y
Действительно, тогда y
представляет собой массив ранга 1 размером 999 и длиной 80 символов. y(10)
— это скалярная длина 80 символов (10-й элемент массива y
).
x(10)
— неправильный синтаксис, так как (10)
— индексация массива, а x
— скаляр. Для подстрок требуется другая индексация. x(10:10)
— 10-й символ символьной переменной x
; y(10)(10:10)
— это 10-й символ 10-го элемента массива символов y
.
person
francescalus
schedule
21.05.2014