F77(1) 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) фиксирует фатальную ошибку.