ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

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





Яндекс цитирования