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, заголовок - это пустая строка.