Компилятор MS-Фортрана производит программные единицы. Ими
могут быть основная программа, подпрограмма или функция. Вы можете откомпилировать любую из этих единиц отдельно и затем загрузить их вместе без объединения их еще до компиляции.
1.Программа.
Любая программная единица, не начинающаяся с оператора FUNCTION или SUBROUTINE. Первым оператором может быть PROGRAM, но
такой оператор не обязателен. Выполнение программы всегда начинается с первого выполняемого оператора в главной программе. Следовательно в каждой выполняемой программе должна быть единственная
главная программа.
2.Подпрограмма.
Программная единица,которая может вызваться из других программных единиц оператором CALL, будучи вызванной, подпрограмма
осуществляет набор действий, определенных ее выполняемыми операторами, и затем возвращает управление на оператор, стоящий непосредственно за оператором вызова. Подпрограмма не возвращает прямо
величины, хотя они могут быть переданы в вызывающую программную единицу через параметры или общие переменные.
3.Функция.
Программная единица, которая может быть употреблена в выражении. Функция прямо возвращает величину, которая используется
при вычислении этого выражения, и кроме того может возвращать величины через параметры. Существует три вида функций: внешние,
внутренние и функция-оператор. (Функция-оператор не может быть скомпилирована отдельно).
4.Подпрограмма блока данных.
Программная единица, обеспечивающая начальные значения переменных в COMMON-блоках. Переменные обычно заводятся оператором
DATA, но переменные в COMMON не могут быть заведены нигде кроме подпрограммы блока данных.
Подпрограммы и функции позволяет Вам создавать большие структурированные программы, которые можно делить на части. Это дает преимущества в следующих ситуациях:
Если программа большая, разделение ее на части облегчает создание, тестирование и ее сборку.
Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции.
Если Вам надо использовать некоторые процедуры во многих других программах, Вы можете создать один объектный файл из этих процедур и затем загружать его в каждую из программ, в которой нужны эти процедуры. Это будет Ваша пользовательская библиотека подпрограмм.
Если процедуру надо использовать в разных случаях разным образом, можно записать ее в отдельный файл и скомпилировать отдельно. Затем для обеспечения ее вариативности Вы можете изменить содержание и даже переписать имена Ассемблере или MS- Паскале, а остальная часть Вашей программы не изменится.
Знаете ли Вы, что в 1965 году два американца Пензиас (эмигрант из Германии) и Вильсон заявили, что они открыли излучение космоса. Через несколько лет им дали Нобелевскую премию, как-будто никто не знал работ Э. Регенера, измерившего температуру космического пространства с помощью запуска болометра в стратосферу в 1933 г.? Подробнее читайте в FAQ по эфирной физике.