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