F77(1)

НАЗВАНИЕ
f77 - компилятор языка Фортран 77

СИНТАКСИС


 f77  [-c] [-p] [-O[число]] [-S] [-o вых_файл] [-g] [-onetrip] [-1]

      [-66] [-C] [-I[24s]] [-U] [-u] [-w] [-F] [-m] [-E] [-R] [-v]

      [-Ncглубина] [-Nlстепень_разветвления]

      [-Nqчисло_эквивалентностей] [-Nnразмер] [-Nsчисло_меток]

      [-Nxчисло_внешних_имен] файл ...

ОПИСАНИЕ
Команда f77 служит для вызова компилятора языка Фортран 77. Компилятор обрабатывает несколько типов файловых аргументов.

  1. Аргументы, оканчивающиеся на .f, интерпретируются как имена файлов, содержащих исходные тексты на языке f77; они компилируются, и каждый об ектный модуль помещается в текущем каталоге в файл с именем, которое образуется из имени исходного файла замещением расширения .f на .o.
  2. Аргументы, оканчивающиеся на .r или .e, интерпретируются как имена файлов, содержащих исходные тексты на языках RATFOR и EFL соответственно; сначала эти файлы обрабатываются подходящим препроцессором, а уже затем - компилятором f77 с образованием .o-файлов.
  3. Аналогично, аргументы, оканчивающиеся на .c или .s, интерпретируются как имена файлов, содержащих исходные тексты на языке C или языке ассемблера соответственно; эти файлы обрабатываются C-компилятором или ассемблером с образованием .o-файлов.
Следующие опции имеют тот же смысл, что и для команды cc(1) [см. опции редактора связей ld(1)]:

-c
Отменить редактирование связей и сгенерировать об ектный модуль для каждого исходного файла.

-p
Подготовить об ектные файлы для профилирования [см. prof(1)].

-O[число]
Вызвать оптимизатор об ектного кода. Число - это максимальное количество регистровых переменных (от 1 до 4).

-S
Скомпилировать указанные программы и результат на языке ассемблера поместить в соответствующие файлы с расширением .s (в этом случае об ектные модули не создаются).

-o вых_файл
Окончательный результат поместить в файл с именем вых_файл, а не в a.out.

-g
Сгенерировать дополнительную информацию для отладчика sdb(1).
Следующие опции специфичны для команды f77:

-onetrip
Компилировать DO-циклы так, чтобы они выполнялись по крайней мере один раз. (DO-цикл в языке Фортран 77 не выполняется ни разу, если верхняя граница значений управляющей переменной цикла меньше нижней).

-1
То же, что и -onetrip.

-66
Отменить расширения, нарушающие совместимость с языком Фортран 66.

-C
Сгенерировать команды для проверок во время выполнения, не выходят ли индексы за допустимые пределы.

-I[24s]
Изменить стандартный размер целых переменных (действует только на машинах, где "нормальный" размер целых не равен размеру действительных значений одинарной точности). Задание -I2 или -I4 (значение по умолчанию) приведет к тому, что все целые будут, соответственно, двух- или четырехбайтными. Задание -Is изменит подразумеваемый размер индексных выражений (и только их) на двухбайтный.

-U
Различать большие и малые буквы. Обычно компилятор f77 их не различает, то есть a не отличается от A.

-u
Установить тип переменной по умолчанию как неопределенный, а не использовать стандартные правила языка Фортран 77.

-w
Подавить все предупреждающие сообщения. Если опция имеет вид -w66, то подавляются только предупреждающие сообщения о нарушении совместимости с языком Фортран 66.

-F
Обработать препроцессорами efl и ratfor соответствующие файлы и результаты поместить в файлы с расширениями .f. Об ектные .o-файлы не создаются.

-m
Перед препроцессированием EFL- и RATFOR-файлов обработать их макропроцессором m4.

-E
Стоящие после этого флага символы используются как аргументы команды efl каждый раз, когда обрабатывается .e-файл.

-R
Стоящие после этого флага символы используются как аргументы команды ratfor каждый раз, когда обрабатывается .r-файл.

-v
Информационный режим. Выдавать полную диагностику во время компиляции.

-Ncглубина
Изменить максимально допустимую глубину вложенности условных операторов и DO-циклов. Подразумевается 20.

-Nlстепень_разветвления
Изменить максимально допустимое число меток в вычисляемом goto и допустимое число альтернативных точек возврата. Подразумевается 125.

-Nqчисло_эквивалентностей
Изменить максимально допустимое число связей, устанавливаемых операторами EQUIVALENCE в одной программной единице. Подразумевается 150.

-Nnразмер
Изменить размер таблицы имен. Подразумевается 401.

-Nsчисло_меток
Изменить максимально допустимое число меток у операторов одной программной единицы. Подразумевается 201.

-Nxчисло_внешних_имен
Изменить максимально допустимое число внешних имен. Подразумевается 200.

Остальные аргументы рассматриваются как опции редактора связей, имена об ектных модулей, совместимых с f77-программами (обычно эти модули получены в результате предшествующих запусков компилятора), или, возможно, библиотек f77-совместимых программ. Эти программы, вместе с результатами текущей компиляции, обрабатываются редактором связей, и созданная выполняемая программа, если не указана опция редактора связей -o, помещается в файл a.out.

ОКРУЖЕНИЕ

SHLIB
Если переменная SHLIB имеет значение YES, будут использоваться разделяемые версии библиотек libc*.

STACKCHECK
Если переменная STACKCHECK имеет значение ON, порождаются команды для контроля стека.

FP
Если переменная FP имеет значение M68881, компилятор генерирует инструкции для сопроцессора MC68881, поддерживающего арифметику вещественных чисел. Если результат какой-либо функции является вещественным, он возвращается только в регистре %fp0. Если переменная FP равна M68881u, вещественные значения возвращаются еще и в регистрах %d0/ %d1 для совместимости со старыми библиотеками.

Компилятор выбирает соответствующие версии библиотек libc и libm согласно значениям переменных окружения FP и SHLIB.

ФАЙЛЫ


  файл.[fresc]          Исходный файл.

  файл.o                Об ектный файл.

  файл.s                Ассемблерный файл.

  a.out                 Результат  работы  редактора свя-

 		        зей.

  /usr/tmp/F77*         Временные файлы.

  /lib/cpp              Препроцессор.

  /usr/bin/ratfor       Препроцессор ratfor(1).

  /usr/bin/efl          Препроцессор efl(1).

  /usr/bin/f77pass1     Компилятор, проход 1.

  /usr/bin/f77pass2     Компилятор, проход 2.

  /lib/optim            Необязательный  оптимизатор  об -

  		        ектного кода.

  /bin/as               Ассемблер as(1).

  /bin/ld               Редактор связей ld(1).

  /lib/crt1.o

  /lib/crtn.o           Стандартная программа инициализа-

		        ции.

  /lib/mcrt0.o          Программа  инициализации профили-

		        рования.

  /lib/libc.a           Стандартная библиотека, см.  раз-

		        дел 3C.

  /lib/libm.a           Математическая   библиотека,  см.

 		        раздел 3M.

  /lib/lib*_s.a         Разделяемые версии библиотек.

  /lib/lib*881.a        Версии библиотек для сопроцессора

		        арифметики вещественных чисел.

  /lib/lib*881u.a       Универсальные версии библиотек.

  /usr/lib/libp/*.a     Версии библиотек для профилирова-

		        ния.

  /usr/lib/libF77.a     Библиотека встроенных функций.

  /usr/lib/libF77_881.a Версия    библиотеки   встроенных

		        функций для сопроцессора  арифме-

		        тики вещественных чисел.

  /usr/lib/libI77.a     Библиотека ввода/вывода Фортрана.

  /usr/lib/libI77_881.a Версия   библиотеки  ввода/вывода

  		        для сопроцессора  арифметики  ве-

		        щественных чисел.

СМ. ТАКЖЕ
as(1), cc(1), efl(1), fsplit(1), ld(1), m4(1), prof(1), ratfor(1), sdb(1).

ДИАГНОСТИКА
Диагностика, выдаваемая собственно компилятором f77, не нуждается в раз яснениях. Замысловатые сообщения могут вырабатываться редактором связей ld(1).

СЮРПРИЗЫ
Компилятор f77 генерирует неправильные команды при вызове функций с результатом типа CHARACTER - неверно корректируется указатель стека. По этой же причине не работают операторы ENTRY.

При компиляции оператора INQUIRE генерируется имя L%0, которое нигде не определяется. В результате редактор связей ld(1) фиксирует фатальную ошибку.