ЦНТТМ "Физтех" 1989 г.
Фортран-77. Краткое описание основных команд
компилятора и линкера Microsoft-Фортрана (версии 4.01-4.10)
1. Краткое описание отличий МS-фортрана от стандарта Fortran-77.
____________________________________________________________
а) отсутствует оператор "PRINT"
б) отсутствует оператор "ENTRY"
в) отсутствует z-формат ввода-вывода шестнадцатеричных переменных
г) в операторе "PARAMETER" не допускаются вещественные выражения
д) нумерация элементов массива начинается с единицы
е) ограничение на длину массива - 16384 элемента
ж) ограничение на количество продолжений в операторе "DATA" - 12 строк
2. Основные команды компилятора
____________________________
FL Command (Команды компилятора)
# Sintax (Синтаксис команд компилятора и линкера)
FL [option..][filespec..][option..][filespec..] [/link [libfield] [linkoption]]
Комментарий:
FL [опция..] [спецификация файлов..][/link [библиотека] [опции линкера]
# Oпции
/4ccstring
Производится условная компиляция исходного файла. Компилируются все
строки, начинающиеся с литер.
/4I{2|4}
Отведение 2 (/4I2) или 4 (/4I4) байт под переменные типа INTEGER и
LOGICAL. По умолчанию - /4I4.
/4{Y|N}6
Допустима (/4Y6) или недопустима (/4N6) организация циклов DO стандарта
FORTRAN - 66.
/4N6 по умолчанию.
/4{Y|N}d
Допустимы (/4Yd) или недопустимы (/4Nd) предупреждения о неописанных пе-
ременных. /4Nd по умолчанию.
/4{Y|N}
Допустим (/4Yf) или недопустим (/4Nf) свободный формат в исходной про-
грамме. /4Nf по умолчанию.
/4{Y|N}t
Разрешено (/4Yt) или не разрешено (/4Nt) использование более шести сим-
волов для описания имен переменных. /4Yt по умолчанию.
/Aletter
Установка модели памяти."letter" может принимать значения M или L,
М - для средней модели, L - для большой. По умолчанию - /AL.
/c
Компиляция без линкования.
/Fa[listfile]
Генерация листинга программы на ассемблере.
/Fc[lisfile]
Генерация смешанного объектно-ассемблерного листинга.
/Feexefile
Задание имени для сгенеренного выполняемого файла. По умолчанию зада-
ется такое же как у исходного с расширением .EXE.
/Fl[listfile]
Генерация листинга объектного файла.
/Fm[mapfile]
Генерация карты распределения памяти.
/Foobjfile
Присваивание заданного имени объектному файлу после компиляции.
По умолчанию генерится объектный файл с тем же именем, что и исходный,
с расширением .OBJ.
/Fs[listfile]
Генерация листинга исходного файла.
/G{0|1|2}
Генерация инструкций для процессора 8086/8088 (/G0), 80186/80188
(/G1),или инструкций для 80286 (/G2). По умолчанию - (/G0).
/Gr
Генерация объектных файлов совместимых с объектными файлами
FORTRANа версии 3.2.
/Gt[number]
Управление сегментацией данных. Применение опции позволяет расширить
область данных до 256К.
/HELP
Выдача на экран списка опций компилятора FL.
/Oletters
Контроль оптимизации."letter" может принимать одно из следующих
значений:
Значение Описание
x Полная оптимизация (устанавливается по умолчанию)
s Генерация наиболее компактного кода.
t Оптимизация по времени вычисления.
/Sllinesize
Установка ширины строки листинга исходного файла. Отрабатывает только
в том случае, если до того применялась опция /Fs.
/Sppagesize
Установка количества строк на страницу для листинга исходного файла.
/Ss"subtitle"
Печать подзаголовка на листинге исходного файла.
/St"title"
Печать заголовка на листинге исходного файла (печатается в левом верх-
нем углу)
/Zi
Запись в объектный файл символьной информации, необходимой для работы
символьного отладчика Microsoft CV.
/Zs
Допустим только синтаксический контроль.
# Окружение компилятора
____________________________________________________________________
Переменная Tип файлов
PATH Выполняемые (.ехе), управляющие программы
компилятора
INCLUDE Файлы, вставляемые по метакоманде $INCLUDE
TMP Временные файлы, создаваемые компилятором
LIB Библиотеки (.lib)
____________________________________________________________________
Переменные определяются с помощью команд DOS - SET и PATH
Лучше всего создать ВАТ - файл и включить в него эти команды:
PATH=C:\F77\BIN
SET LIB=C:\F77\LIB
SET TMP=C:\F77\TMP
SET INCLUDE=C:|INCLUDE
____________________________________________________________________
# Опции для чисел с плавающей точкой
Таблица 1. Основные опции
______________________________________________________________________
Использование Выбираемые
Опция Метод Преимущества копроцессора библиотеки
______________________________________________________________________
/FPi87 In-line Наиболее быст- Требуется LLIBFOR7.LIB
рая и компактная копроцессор или (1)
опция,требующая MLIBFOR7.LIB
копроцессор
/FPc87 Calls Медленнее,чем Требуется LLIBFOR7.LIB
/FPi87,но поз- копроцессор или (2)
воляет изменить MLIBFOR7.LIB
библиотеку во
время линкования
/FPi In-line Размеры кода боль- Использует LLIBFORE.LIB
ше чем при /FPi87, копроцессор или
но может работать если он есть MLIBFORE.LIB
как с копроцессором,
так и без него
/FPc Calls Медленнее чем Использует LLIBFORE.LIB
/FPi но позволяет копроцессор или
изменить библиоте- если он есть MLIBFORE.LIB
ку во время линко-
вания
/FPa Calls Самая быстрая и Копроцессор LLIBFORE.LIB
и удобная опция, игнорируется
при отсутствии MLIBFORE.LIB
копроцессора, но
возможна потеря
точности при сче-
те
______________________________________________________________________
Приложение 1. Работа со внешними файлами в MS-Fortran.
_______________________________________
Синтаксис операторов, позволяющего работать со внешними файлами:
OPEN (UNIT-spec[,FILE='fname'][,STATUS='status'][,ACCESS='access']
[,FORMAT='format'][,IOSTAT=iocheck][,RECL=rec-lengh]
unit-spec - целое число в диапазоне (-3267; +3267), требующийся
логический номер устройства (0,* - консоль и клави-
атура (открыты постоянно))
fname - имя внешнего файла
status - может принимать значения либо OLD - если файл уже
существует, либо NEW - если требуется его заведение
access - SEQUENTAL - для файла последовательного доступа,
либо DIRECT - для файла прямого доступа.
format - FORMATTED - для форматного типа записи,
UNFORMATTED - для бесформатного
iocheck - целая переменная: если 0 - то файл открыт успешно,
если целое число, большее нуля - ошибка при открытии
rec-length- целое число или выражение, определяющее длину записи
в байтах. Требуется только при работе с файлами прямо-
го доступа.
WRITE(unit-spec[,format-sec][,IOSTAT=iocheck][,ERR=slabel]
[,REC=rec-num]) IOLIST
format-spec - целая константа, указатель метки оператора FORMAT
slabel - метка, на которую будет передано управление в слу-
чае ошибки ввода - вывода
rec-num - целое число >= 1, номер рекорда,который будет за-
писан (только для файлов прямого доступа).
IOLIST - список ввода-вывода
Остальные параметры приведены в описании оператора
ОРЕN
READ(unit-spec[format-spec][,IOSTAT=iocheck][,REC=rec-num][,END=slabel1]
[,ERR=slabel]) IOLIST
slabel1 - метка, по которой будет передано управление, если
встретится конец файла.
Остальные параметры смотри в описаниях OPEN и WRITE.
BACKSPACE unit-spec
- Производится возвращение на одну запись назад для
файла с указанным unit-spec.
ENDFILE unit-spec
- В качестве записываемой информации записывается приз-
нак конца файла.
REWIND unit-spec
- Переход к началу файла записи (чтения).
3.Cимвольный отладчик Code View
_____________________________
# Синтаксис команды
CV [option] executablefile [arguments]
Комментарий:
CV [опция] ЕХЕ-файл [аргументы]
# Опции
______________________________________________________________________
Опция Действие
______________________________________________________________________
/B Запуск отладчика Code View в черно-белой моде
( при использовании графадаптера CGA)
/Ccommands Выполняемые команды при запуске
/F Запуск отладчика с переключением экрана
( замена экрана путем переключения видео-страниц)
/M Подключение "мыши"
/T Starts the Code View debugger in sequational mode
/S Запуск отладчика с экранным "своппингом"
(смена экранов путем сохранения в буфер и чтением
из него)
/W Запуск отладчика в "оконном" режиме
/43 Запуск отладчика при наличии карты EGA .
______________________________________________________________________
4. Команды линкера.
_______________
LINK Command
# Syntax
LINK objfile[,[exefile][,[mapfile][,[libfiles]]]] [options][;]
# Опции
/CO[DEVIEW]
Создание .ехе файла в специальном формате, содержащем символьную
информацию, необходимую для работы отладчика Microsoft Code View.
/HE[LP]
Показ всех опций команды LINK на экране.
/HI[GH]
Размещение команд ЕХЕ-файла с максимально возможным размером.
/I[NFORMATION]
Выдача информации во время линкования. Показ имен текущих линкуемых
модулей.
/M[AP]
Создание выходного файла, содержащего перечень всех глобальных пере-
менных входных файлов.
/NOD[EFAULTLIBRARYSEARCH]
Вызовы отсутствующих библиотек игнорируются.
/NOI[GNORECASE]
Считать большие и маленькие буквы различными.
/P[AUSE]
Сделать паузу во время процесса линкования для того, чтобы можно
было сменить диск.
/SE[GMENTS]:number
Установка числа сегментов, отводимых линкером для размещения
программы.
По умолчанию - 128.
5. Команды библиотекаря.
____________________
LIB Command (Команды библиотекаря)
# Syntax
LIB oldlib [commands][file.obj] [,newlib][;]
Комментарий:
LIB старая библиотека [команды][,новая библиотека]
# Команды
______________________________________________________________________
Символ Действие
+ Добавление OBJ-файла в новую библиотеку.
- Удаление модуля из библиотеки.
-+ Замена модуля, находящегося в библиотеке на модуль,
имеющийся в объектном файле.
* Копирование объектного модуля в .obj-файл.
-* Перемещение объектного модуля из библиотеки во
внешний файл типа .obj.
______________________________________________________________________
6.Встроенные функции в ФОРТРАНЕ.
_____________________________
Таблица, приведенная ниже, показывает значения типов переменных,
используемых в таблице 2,"Встроенные функции":
Сокращение Тип данных
gen Возможны аргументы разного типа
int INTEGER, INTEGER*1, INTEGER*2 or INTEGER*4
int1 INTEGER*1
int2 INTEGER*2
int4 INTEGER*4
real REAL, REAL*4, DOUBLE PRECISION, or REAL*8
real4 REAL*4
dbl DOUBLE PRECISION
log LOGICAL, LOGICAL*1, LOGICAL*2, or LOGICAL*4
log1 LOGICAL*1
log2 LOGICAL*2
log4 LOGICAL*4
cmp COMPLEX, COMPLEX*8, or COMPLEX*16
cmp8 COMPLEX*8
cmp16 COMPLEX*16
char CHARACTER[*n]
В тaблице 2 показаны в алфавитном порядке основные встроенные функции
Microsoft FORTRANа
______________________________________________________________________
Тип Тип
Имя Назначение Аргумента Функции
______________________________________________________________________
ABS(gen) Абсолютное int,real, Тот же,что
значение или cmp и аргумента
кроме cmp (1)
ACOS(real) Аркосинус real Тот же что
и аргумента
AIMAG(cmp8) Мнимая часть cmp8 real4
ALOG(real4) Натуральный real4 real4
логарифм
ALOG10(real4) Десятичный real4 real4
логарифм
AMAX0(intA,intB[,intC...]) Максимум int real4
AMAX1(real4A,real4B
[,real4C..] ) Максимум real4 real4
AMIN0(intA,intB[,intC...]) Минимум int real4
AMIN1(real4A,real4B
[,real4C..] ) Минимум real4 real4
AMOD(real4A,real4B) Остаток real4 real4
ASIN(real) Арксинус real (2)
ATAN(real) Арктангенс real (2)
ATAN2(realA,realB) Арктангенс real (2)
realA/realB
BTEST(intA,intB) Bit - тест int log
CABS(cmp) Абсолютное знач. cmp real1
CCOS(cmp8) Косинус cmp8 cmp8
CDABS(cmp16) Абсолютное знач. cmp16 dbl
CDCOS | | Косинус | | | |
CDEXP | | Экспонента | | | |
CDLOG | cmp16 | Натуральн. логарифм cmp16 | | cmp16 |
CDSIN | | Синус | | | |
CDSQRT | | Корень | | | |
CEXP(cmp8) Экспонента cmp8 cmp8
CHAR(int) Преобр.типа int char
CLOG(cmp8) Логарифм cmp8 cmp8
CMPLX(genA[,genB]) Преобр.типа int,real or cmp8
int
CONJG(cmp8) Комплексно- cmp8 cmp8
сопряженное
COS(gen) Косинус real or cmp (2)
COSH(real) Гиперболическ. real (2)
косинус
COTAN(real) Котангенс real (2)
CSIN(cmp8) Синус cmp8 cmp8
CSQRT(cmp8) Корень cmp8 cmp8
DABS(dbl) Абс.значение dbl dbl
DACOS(dbl) Аркосинус dbl dbl
DASIN(dbl) Арксинус dbl dbl
DATAN(dbl) Арктангенс dbl dbl
DATAN2(dblA,dblB) dbl dbl
DBLE(gen) Преоб.типа int,real or dbl
int
DCMPLX(genA[,genB]) Преоб.типа --- // --- cmp16
DCONJG(cmp16) cmp16 cmp16
DCOS | | | | | |
DCOSH | | | | | |
DCOTAN | dbl | | dbl | | dbl |
DDIM | | | | | |
DEXP | | | | | |
DFLOAT(gen) Преоб.типа int,real,cmp dbl
DIM(genA,genB) Положительная int,real (2)
разность
DIMAG(cmp16) Мнимая часть cmp16 dbl
DINT | | | | dbl
DLOG | | | |
DLOG10| dbl | | dbl |
DMAX | | | |
DMIN1 | | | |
DMOD | | | |
DREAL(cmp16) Преоб.типа cmp16 dbl
DSIGN(dblA,dblB) замена знака dbl dbl
DSIN | | | | | |
DSINH | | | | | |
DSQRT | dbl | | dbl | | dbl |
DTAN | | | | | |
DTANH | | | | | |
EOF(int) Конец файла int log
EXP(gen) Экспонента real,cmp (2)
FLOAT(int) Преобр.типа int real
HFIX(gen) Преобр.данных int,real,cmp int2
IABS(int) Абсолютное знач. int int
IBCHNG(intA,intB) Смена бита int (2)
IBCLR(intA,intB) Очистка бита int (2)
IBSET(intA,intB) Установка бита int (2)
ICHAR(char) Преоб.типа char int
IDIM(intA,intB) Положит.разность int int
IDINT(dbl) Преоб.типа dbl int
IMAG(cmp) Мнимая часть cmp real4
INT | | | int, | int
INT1 | | | real | int1
INT2 | gen | Преоб.типа | or | int2
INT4 | | | cmp | int4
INTC | | | | INTEGER
ISHA | | Арифметич. сдвиг | | | |
ISHFT | | Логический | | | |
ISHL | | сдвиг | | | |
ISIGN(intA,intB) Смена знака int int
JFIX(gen) (3) int int4
LEN(char) Длина char char int
LGE | | > | | | |
LGT | charA,charB | <= | char | | log |
LLT | | < | | | |
LOC(gen) Адрес Any int2 or int4
LOG(gen) Натуральн.логарифм real (2)
LOG10(gen) Десятичн.логарифм real (2)
MAX0(intA,intB[,..]) Максимум int int
MAX1(realA,realB[...]) Максимум real real
MIN(genA,genB[...]) Минимум real,int (2)
MOD(genA,genB) Остаток real,int (2)
REAL(gen) (3) int real4
SIGN(genA,genB) Смена знака int,real (2)
SIN(gen) Синус real,cmp (2)
SINH(real) Гиперб.синус real (2)
SNGL(dbl) Преоб.типа dbl real4
SQRT(gen) Корень real,cmp (2)
TAN(real) Тангенс real (2)
TANH(real) Гиперб.тангенс real real
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(1) если аргумент COMPLEX*8, функция REAL*4
(2) если аргумент COMPLEX*16, функция REAL*8
(3) Тип данных преобразуется.
______________________________________________________________________
Дополнительные процедуры:
В Microsoft FORTRANе имееются дополнительные процедуры, позволяющие
считывать и устанавливать системную дату и системное время.
# Процедуры работы со временем и датой.
Таблица 3.
______________________________________________________________________
Имя
______________________________________________________________________
GETTIM(ihr,imin,isec,i100th) Взять системное время INTEGER*2
SETTIM(ihr,imin,isec,i100th) Уст.системное время INTEGER*2 LOGICAL
GETDAT(iyr,imon,iday) Взять системную дату INTEGER*2
SETDAT(iyr,imon,iday) Уст.системную дату INTEGER*2 LOGICAL
______________________________________________________________________
Аргументы могут принимать следующие значения:
Аргумент Значение
ihr Часы (0-23)
imin Минуты(0-59)
isec Секунды (0-59)
i100th Десятые секунд(0-99)
iyr Год (xxxx AD)
imon Месяц (1-12)
iday День месяца (1-31)
____________________________________________________________________
7.МЕТАКОМАНДЫ
___________
Любая строка, начинающаяся с символа $ в колонке 1 интерпретируется
как метакоманда. Метакоманды и их аргументы должны быть расположены на
одной строке.
Ниже приводится список метакоманд и соответстующих им опций компиля-
тора FL.
----------------------------------------------------------------------
Метакоманда Опция
$DEBUG /4Yb
$DEBUG:string /4ccstring
$DO66 /4Y6
$DECLARE /4Yd
$FREEFORM /4Yf
$NODEBUG /4Yb(default)
$NODECLARE /4Nd(default)
$NOFREEFORM /4Nf(default)
$LINESIZE:n /Sl linesize
$NOTRUNCATE /4Nt
$NOTSTRINCT /4Ns(default)
$PAGESIZE:n /Sp pagesize
$STIRICT /4Ys
$STORAGE:2 /4I2
$STORAGE:4 /4I4
$SUBTITLE:'subtitle' /Ss"subtitle"
$TITLE:'title' /St"title"
$TRUNCATE /4Yt(default)
Приложение 2.
____________
Краткие примеры по работе с компилятором FL.
1).
FL A.FOR B.FOR C.OBJ
Компилируются исходные файлы A.FOR и B.FOR, затем они линкуются
с файлом C.OBJ и создается выполняемый файл A.EXE
2).
FL /Zs TEST*.FOR > TEST.ERR
Производится синтаксический анализ всех исходных файлов текущей
директории, начинающихся с символов TEST. Сообщения о найденных
ошибках запишутся в файл TEST.ERR.
Комментарии к книге «Фортран-77. Краткое описание основных команд компилятора и линкера Microsoft-Фортрана (версии 4.01-4.10)», Автор неизвестен -- Компьютеры
Всего 0 комментариев