|
Часть 6
МЕТАКОМАНДЫ МС-ФОРТРАНА.
ОБ ЭТОЙ ЧАСТИ.
Эта часть описывает метакоманды МС-Фортрана, директивы, за-
дающие компилятору МС-Фортрана каким образом и в каком порядке
обрабатывать исходный текст на МС-Фортране.
СОДЕРЖАНИЕ.
1.МЕТАКОМАНДЫ МС-ФОРТРАНА. 1
2.СПРАВОЧНИК МЕТАКОМАНД. . 2
$DEBUG и $NODEBUG . . . . 2
$DECMATH . . . . . . . . . 3
$DO66 . . . . . . . . . . 3
$FLOATCALLS и $NOFLOATCALLS 3
$INCLUDE . . . . . . . . . 4
$LARGE и $NOLARGE . . . . 4
$LINESIZE . . . . . . . . 5
$LIST и $NOLIST . . . . . 5
$MESSAGE . . . . . . . . . 5
$PAGE . . . . . . . . . . 6
$PAGESIZE . . . . . . . . 6
$STORAGE . . . . . . . . . 6
$SUBTITLE . . . . . . . . 7
$TITLE . . . . . . . . . . 8
1.МЕТАКОМАНДЫ МС-ФОРТРАНА.
В следующей таблице приведено краткое описание метакоманд
МС-Фортрана, а их подробное описание приводится да.
ЪДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Метакоманда і Действие і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $DEBUG і Включает проверку при счете целых і
і і арифмет. операций и присваемого GO TOі
і і $NODEBUG выключает проверку. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $DECMATH і Указывает компилятору создавать і
і і действительные константы в десятичномі
і і виде с плавающей точкой. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $DO66 і Приводит исполнение операторов DO і
і і к семантике Фортрана 66. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $FLOATCALLS і Заставляет выполнять операции с плав.і
і і точкой через библиотеку подрограмм с і
і і помощью инструкции CALL, а не через і
і і прерывания. $NOFLOATCALL отменяет і
і і этот раздел. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $INCLUDE: і Заставляет компилятор считать, что і
і файл і в этой точке вставлен файл. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $LARGE [:имя [, і Помечает именованные массивы для і
і имя ]. . .] і адресации вне DGROUP. $NOTLARGE отме-і
і і няет этот раздел для именованных мас-і
і і сивов. Если имена массивов не указаныі
і і команда действует на все массивы. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $LINESIZE: n і Формирует страницы листинга шириной і
і і в n позиций. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $LIST і Посылает часть листинга в файл лист. і
і і $NOLIST останавливает генерацию лист.і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $MESSAGE:'строка'і Посылает строку в кaвычках на станд. і
і і устройство вывода при исполнении Фор-і
і і трана с начала до конца. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $PAGE і Начинает новую страницу листинга. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $PAGESIZE: n і Задает длину страницы листинга n. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $STORAGE: n і Определяет количество (n) байтов пам.і
і і для всех LOGICAL или INTEGER перемен-і
і і нных в тексте. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $STRICT і Запрещает возможности МС-Фортрана, неі
і і входящий в Фортран 77 или в полный і
і і стандарт языка. $NOTSTRICT разрешает і
і і их. і
АДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
ЪДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Метакоманда і Действие і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $SUBTITLE: і Дает подзаголовок для нескольких і
і 'подзаголовок' і страниц листинга. і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і $TITLE: і Дает заголовок для нескольких страниці
і 'заголовок' і листинга. і
АДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Метакоманды могут быть вставлены в любое место исходного
текста на МС-Фортране внутри программ; однако они не относятся к
стандарному языку Фортран. Любая строка ввода компилятора МС-Фор-
трана, начинающаяся с символа "$" в первой позиции интерпретируется
как метакоманда и должна соответствовать одному из допустимых
форматов.
Метакоманда и ее параметры (если они есть) должны занимать
одну строку текста; строки продолжения недопустимы. Пробелы не
значат, поэтому следующая пара эквивалентна:
$S TRICT
$STRICT
2.СПРАВОЧНИК МЕТАКОМАНД.
Остаток этой части - это алфавитный (по латинским буквам)
справочник допустимых метакоманд МС-ФОРТРАНА.
Для понимания синтаксиcа описания смотрите в этом руководстве
приложение А.
ЬДДДДДДДДДДДДДДДДДДДД
Ы $DEBUG и $NODEBUG
ЯДДДДДДДДДДДДДДДДДДДД
Заставляет компилятор:
1. Проверять целую арифметику на переменные и деление на нуль.
2. Проверять величины присваемого GO TO на допустимость списка
в операторе присваемое GO TO.
3. Обеспечивать функционирование системы фиксации ошибок при
счете с именами файлов и номерами строк, так что при воз-
никновении ошибки на экран выдается имя файла и номер стро-
ки.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$[NO]DEBUG
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Особенности.
$DEBUG не переключает и не подавляет поддержку реакций на
ошибки для арифметики с плавающей запятой. МС-Фортран поддерживает
стандарт IEEE при обеспечении реакций на ошибки в пяти следующих
ситуациях : неверное действие, деление на нуль, переполнение
разрядной сетки, незаполнение разрядной сетки и потеря точности.
Более подробно о поддержке реакций на ошибки смотрите приложение
Е руководства пользователя МС-Фортрана.
Метакоманда может стоять в программе где-угодно.
По умолчанию используется $NODEBUG.
ЬДДДДДДДДДДД
Ы $DECMATH
ЯДДДДДДДДДДД
Заставляет компилятор (и откомпилированную программу при
счете) применять математику с плавающей точкой, выполняемую по
основанию 10, а не в двоичном виде. Особенно $DECMATH заменяет
представление констант на формат по десятичному основанию.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$DECMATH
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Особенности.
$DESMATH должна стоять перед первым оператором программы или
подпрограммы; ей могут прешествовать только строки комментария
или другие метакоманды, и она может употребляться только однажды.
$DESMATH автоматически устанавливает $FLOATCALLS. Если в одной
и той же программе установлены $DESMATH и $NOFLOATCALLS, то ком-
пилятор выдаст ошибку.
ЬДДДДДДДД
Ы $DO66
ЯДДДДДДДД
Приводит операторы DO к семантике Фортрана 66.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$DO66
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Особенности.
$DO66 должна предшествовать первому описанию или выполняемому
оператору в файле исходного текта.
Семантика Фортрана 66 следующая:
1. Все операторы DO выполняются по крайней мере однажды.
2. Допустим расширенный диапазон; это означает, что управление
может быть передано на синтактическое тело оператора DO. Поэ-
тому диапазон оператора DO расширен логически так, чтобы вклю-
чать любой оператор, который может быть выполнен между опера-
тором DO и его последним оператором. Однако, передача управ-
ления на диапазон оператора DO до его выполнения или после
выполнения его последнего оператора не верна.
Если в программе нет метакоманды $DO66, по умолчанию реали-
зуется семантика Фортрана 77, а именно:
1. Операторы DO могут выполнять нуль раз, если начальная вели-
чина управляющей переменной превышает конечную величину управ-
ляющей переменной (что соответствует оператору DO с отрица-
тельным шагом).
2. Расширенный диапазон неверен; то есть, управление нельзя
передавать на синтаксическоетело оператора DO. (Оба стандарта
DO допускают передачу управления из тела оператора DO).
ЬДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Ы $FLOATCALLS и $NOFLOATCALLS
ЯДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Вызывает выполнение операций с плавающей точкой через вызовы
библиотечных подпограмм.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$[NO]FLOATCALLS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Особенности.
Когда Вы вставляете $FLOATCALLS в Ваш текст, Вы генерируете
вычисления над действительными числами через инструкции вызова.
$NOFLOATCALLS подавляет условие по умолчанию и заставляет компи-
лятор генерировать инструкции внутренних прерываний, а не вызовы
подпрограмм. По умолчанию действует $FLOATCALLS.
$DECMATH автоматически устанавливает $FLOATCALLS.
ЬДДДДДДДДДДД
Ы $INCLUDE
ЯДДДДДДДДДДД
Заставляет компилятор действовать так, как если бы указанный
файл был вставлен в месте употребления $INCLUDE.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$INCLUDE: 'файл'
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
файл - это имя существующего файла, как оно описывается
в Вашей опирационной системе.
Особенности.
В конце вставленного файла компилятор возобновляет обработку
файла исходного текста со строки, следующей за $INCLUDE.
У компилятора нет ограничений на вложенность уровней мета-
команд $INCLUDE. Метакоманды $INCLUDE, в частности, полезны для
гарантии того, что в разных модулях используется одно и тоже
описание COMMON-блока.
ЬДДДДДДДДДДДДДДДДДДД
Ы $LARGE и $NOLARGE
ЯДДДДДДДДДДДДДДДДДДД
Заставляет компилятор располагать массивы в менее ограниченной
области и генерировать менее эффективные последовательности кодов
для ссылки на них.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$[NOT]LARGE[:имя[,имя]. . .]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
имя -это имя массива.
Особенности.
$LARGE может быть использована без параметров, в основном
виде. Эта форма может встречаться, где угодно за исключением вы-
полняемой части подпрограммы. $LARGE воздействует на все подпро-
граммы, которые следуют за ней в текстовом файле, до тех пор пока
в тексте не встретится общая метакоманда $NOLARGE. $NOLARGE под-
чиняется тем же правилам, что и $LARGE но оказывает обратное воз-
действие.
По умолчанию установлено $NOLARGE. В области между
оператором END (или началом компилируемой единицы) и выполняемой
частью следующей подпрограммы или основной программы основная форма
$LARGE или $NOTLARGE, но не обе, может использоваться только
однажды. Например, следующий фрагмент текста ошибочен.
$LARGE
SUBROUTINE P
$NOTLARGE
A=1.0
:
$LARGE может содержать имена описанных массивов и массивов
формальных параметров, но тогда она должна стоять в описанной части
подпрограммы и будет тогда действовать на массивы или формальные
параметры этой подпрограммы. $NOTLARGE с параметром может быть
использован для исключения из действия общей команды $LARGE массива
или формального параметра. Массивы с точными размерностями, которые
показывают, что эти массивы больше допустимого предела в 64 кило-
байта, автоматически размещаются на нескольких сегментах вне сег-
мента данных по умолчанию. Вам не нужно ставить $LARGE для этих
массивов.
ЬДДДДДДДДДДДДД
Ы $LINESIZE
ЯДДДДДДДДДДДДД
Форматирует последующие страницы листинга шириной n позиций.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$LINESIZE: n
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
n - положительное целое число в диапазоне от 40 до 132
включительно.
Если в программе нет метакоманды $LINESIZE по умолчанию под-
разумевается длина строки 80 символов.
ЬДДДДДДДДДДДДДДДДДДДД
Ы $LIST и $NOLIST
ЯДДДДДДДДДДДДДДДДДДДД
Включает заполнение файла листинга, опреленного при вызове
компилятора, или запрещает его заполнение.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$[NO]LIST
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Особенности.
Если файл листинга не заказан при запуске компилятора, то
метакоманда $LIST не действует. $NOLIST указывает на отмену лис-
тинга.
$LIST и $NOLIST могут стоять где угодно в текстовом файле.
По умолчанию установлено установлено $LIST.
ЬДДДДДДДДДДД
Ы $MESSAGE
ЯДДДДДДДДДДД
Используется для посылки сообщения на стандартное устройство
вывода при выполнении Фортрана, перед его окончанием.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$MESSAGE: 'строка'
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
строка - любая действительная символьная константа.
Максимальная длина - 40 символов.
Пример
$MESSAGE: 'это высвечивается, когда вы выполняете FOR1'
ЬДДДДДДДД
Ы $PAGE
ЯДДДДДДДД
Начинает новую страницу листинга.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$PAGE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Особенности.
Если первым символом строки исходного текста является символ
ASCII перевод страницы (шестнадцатиричный код ОСh), это считается
эквивалентным использованию метакомоманды $PAGE в этой точке.
ЬДДДДДДДДДДДД
Ы $PAGESIZE
ЯДДДДДДДДДДДД
Определяет длину в n строк последующих страниц листинга.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$PAGESIZE
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
n - любое положительное целое число не меньше 15.
Особенности.
Если в программе нет метакоманды $PAGESIZE, то размер страницы
по умолчанию - 60 строк.
ЬДДДДДДДДДДД
Ы $STORAGE
ЯДДДДДДДДДДД
Определяет заданное чмсло байтов памяти для всех переменных,
объявленных в исходном файле как INTEGER или LOGICAL.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$STORAGE: n
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
n либо 2, либо 4. Использование величины 2 подразумевает
16-разрядную арифметику. Смотрите также важные замечания по пред-
ставлению данных в конце описания "Типы данных" в части 2 "Термины
и концепции".
Особенности.
$STORAGE не оказывает влияния на распределение памяти для
переменных, описанных с точным указанием длины, например, INTEGER*2
или LOGICAL*4.
Если несколько файлов текстов программ компилируются и компо-
нуются вместе, Вы должны тщательно следить за тем, чтобы переменным
(как фактическим, так и формальным параметрам), на которые ссыла-
ются более чем в одном модуле, выделялась одинаковая память.
Метакоманда $STORAGE должна предшествовать первому оператору
описания в файле текста.
Если в программе нет метакоманды $STORAGE, осуществляется
выделение 4-х байтов по умолчанию. Это умолчание соответствует
тому, что под переменные INTEGER, LOGICAL и REAL выделяется одина-
ковое количество памяти, что требуется стандартом Фортрана 77.
ЬДДДДДДДДДДДДДДДДДДДДДДД
Ы $STRICT и $NOTSTRICT
ЯДДДДДДДДДДДДДДДДДДДДДДД
$STRICT запрещает особые возможности МС-Фортрана, отсутству-
ющие в подмножестве Фортрана 77 в полном стандарте языка. Мета-
команда $NOTSTRICT разрешает эти возможности.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$[NOT]STRICT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Особенности.
Метакоманда $NOTSTRICT разрешает следующие возможности МС-
Фортрана:
1. Символьное выражение может быть присвоено несимвольной
переменной.
2. Символьное и несимвольное выражения могут быть сравнены.
3. В одном и том же символьном COMMON-блоке допустимы символь-
ные и несимвольные переменные.
4. Можно установить эквивалентность между символьными и несим-
вольными переменными.
5. В несимвольных переменных могут быть заведены символьные
данные.
По умолчанию установлена $NOTSTRICT.
ЬДДДДДДДДДДДД
Ы $SUBTITLE
ЯДДДДДДДДДДДД
Присваивает определенный подзаголовок последующим страницам
листинга исходного текста (до тех пор пока не встретится другая
метакоманда $SUBTITLE).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$SABTITLE: 'подзаголовок'
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
подзаголовок -любая определенная символьная константа. Мак-
симальная длина - 40 символов.
Особенности.
Если в программе нет метакоманды $SUBTITLE, подзаголовок -
это пустая строка.
ЬДДДДДДДДД
Ы $TITLE
ЯДДДДДДДДД
Присваивает определенный заголовок последующим страницам лис-
тинга (до тех пор пока не встретится другая метакоманда $TITLE).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
$TITLE: 'заголовок'
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
заголовок - любая определенная символьная константа.
Максимальная длина - 40 символов.
Особенности.
Если в программе нет метакоманды $TITLE, заголовок - это
пустая строка.
|