Автоматичні масиви
У процедурі може бути заданий локальний масив, розміри якого можутьзмінюватися при різних виклики процедури.
Такі масиви, так само як і локальні рядки змінної довжини (розд. 10.4),відносяться до автоматичних об'єктам. p>
Рекурсивні процедури p>
Фортран підтримує рекурсивні виклики зовнішніх, модульних і внутрішніхпроцедур.
Процедура називається рекурсивної, якщо вона звертається сама до себе абовикликає іншу процедуру, яка, в свою чергу,викликає першу процедуру. У першому випадку рекурсія називається прямим, піддругий - непрямої.
Оператор оголошення рекурсивної процедури має передувати префіксом
RECURSIVE. Всередині рекурсивної процедури інтерфейс до цієї процедури є явним (див. розд. 16.4.3).
Приклад. Розробити підпрограму subst, яка в цьому рядку замінюєвсі входження рядка sub1 на підрядок sub2. Так, якщо дана рядок 'abc1abc2abc3' і sub1 = 'abc', asub2 = 'd', то результатом має бути рядок 'dl d2 d3'.program stgo character (len = 20):: st = 'abc1abc2abc3'call subst (st, 'abc', d ') p>
! subst містить прямуwrite (*, *) st p>
! рекурсію d1 d2 d3endrecursive subroutine subst (st, subl, sub2)character (len = *) st, sub1, sub2 p>
! Довжина кожного рядка визначається p>
integer ip! довжиною відповідного p>
ip = index (st, sub1) p>
! фактичного параметра p>
if (ip> 0) then st = st (: ip - 1)// sub2// st (ip + len (subl):)call subst (st, subl, sub2)! Рекурсивний виклик підпрограми p>
endif p>
! виконується до тих пір,покиend! не виконані всі заміни subl на sub2
Якщо функція містить пряму рекурсії, тобто безпосередньо викликаєсама себе, результату необхідно дати ім'я,відмінне від імені Опції. Це виконується шляхом додавання в заголовокфункції пропозиції RESULT.
У разі непрямої рекурсії ім'я результуючої пе-Ременнрд і ім'я функціїможуть збігатися.
Символьні типи даних
Символьний тип даних дозволяє задати об'єкт, що складається зпослідовності символів.
Таку послідовність ми будемо рядком. Символьний тип даних можутьмати об'єкти: змінні,константи та функції. Символьний тип є вбудованим типом даних длянього існує одна вбудована операція - операція конкатенації (позначається двома слеш
/ /), Що дозволяє виконувати об'єднання окремих рядків або підрядка символів. Оголошеннясімвольних.данних виконується оператором CHARACTER, наприклад:character:: ch = 'а'! Символьна мінлива довжиною в 1 символcharacter (len = 20) st! Символьна мінлива з 20 символівst = 'Example'! Привласнимо значення символьної змінноїst == st// '_'// ch! Повертає: Example_a
Оператор CHARACTER містить в дужках дані про довжину символьного об'єкта.
Якщо довжина не задана, то за умовчанням вона приймається рівній одиниці. P>