Решение задач по ТОЭ, ОТЦ, Высшей математике, Физике, Программированию... |
[an error occurred while processing the directive] |
Теория / Фортран / 6. Метакоманды МS-Фортрана |
6. МЕТАКОМАНДЫ MS-Фортрана.ОБ ЭТОЙ ЧАСТИ. Эта часть описывает метакоманды МS-Фортрана, директивы, задающие компилятору МS-Фортрана каким образом и в каком порядке обрабатывать исходный текст на МS-Фортране.Содержание: 1.МЕТАКОМАНДЫ MS-Фортрана.В следующей таблице приведено краткое описание метакоманд МS-Фортрана, а их подробное описание приводится да.-------------------T--------------------------------------¬ | Метакоманда | Действие | +------------------+--------------------------------------+ | $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 | Запрещает возможности МS-Фортрана, не| | | входящий в Фортран 77 или в полный | | | стандарт языка. $NOTSTRICT разрешает | | | их. | +------------------+--------------------------------------+ | $SUBTITLE: | Дает подзаголовок для нескольких | | 'подзаголовок' | страниц листинга. | +------------------+--------------------------------------+ | $TITLE: | Дает заголовок для нескольких страниц| | 'заголовок' | листинга. | L------------------+--------------------------------------- Метакоманды могут быть вставлены в любое место исходного текста на МS-Фортране внутри программ; однако они не относятся к стандарному языку Фортран. Любая строка ввода компилятора МS-Фортрана, начинающаяся с символа "$" в первой позиции интерпретируется как метакоманда и должна соответствовать одному из допустимых форматов. Метакоманда и ее параметры (если они есть) должны занимать одну строку текста; строки продолжения недопустимы. Пробелы не значат, поэтому следующая пара эквивалентна: $S TRICT $STRICT 2.СПРАВОЧНИК МЕТАКОМАНД.Остаток этой части - это алфавитный (по латинским буквам) справочник допустимых метакоманд MS-Фортрана. Для понимания синтаксиcа описания смотрите в этом руководстве приложение А.--------------------- - $DEBUG и $NODEBUG ---------------------Заставляет компилятор:
--------------------------------------------------------------- $[NO]DEBUG ---------------------------------------------------------------Особенности. $DEBUG не переключает и не подавляет поддержку реакций на ошибки для арифметики с плавающей запятой. МS-Фортран поддерживает стандарт IEEE при обеспечении реакций на ошибки в пяти следующих ситуациях : неверное действие, деление на нуль, переполнение разрядной сетки, незаполнение разрядной сетки и потеря точности. Более подробно о поддержке реакций на ошибки смотрите приложение Е руководства пользователя МS-Фортрана. Метакоманда может стоять в программе где-угодно. По умолчанию используется $NODEBUG. ------------ - $DECMATH ------------Заставляет компилятор (и откомпилированную программу при счете) применять математику с плавающей точкой, выполняемую по основанию 10, а не в двоичном виде. Особенно $DECMATH заменяет представление констант на формат по десятичному основанию.----------------------------------------------------------- $DECMATH -----------------------------------------------------------Особенности. $DESMATH должна стоять перед первым оператором программы или подпрограммы; ей могут прешествовать только строки комментария или другие метакоманды, и она может употребляться только однажды. $DESMATH автоматически устанавливает $FLOATCALLS. Если в одной и той же программе установлены $DESMATH и $NOFLOATCALLS, то компилятор выдаст ошибку. --------- - $DO66 ---------Приводит операторы DO к семантике Фортрана 66.----------------------------------------------------------- $DO66 -----------------------------------------------------------Особенности. $DO66 должна предшествовать первому описанию или выполняемому оператору в файле исходного текта. Семантика Фортрана 66 следующая:
Если в программе нет метакоманды $DO66, по умолчанию реализуется семантика Фортрана 77, а именно:
------------------------------- - $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 запрещает особые возможности МS-Фортрана, отсутствующие в подмножестве Фортрана 77 в полном стандарте языка. Метакоманда $NOTSTRICT разрешает эти возможности.----------------------------------------------------------- $[NOT]STRICT -----------------------------------------------------------Особенности. Метакоманда $NOTSTRICT разрешает следующие возможности МS- Фортрана:
По умолчанию установлена $NOTSTRICT. ------------- - $SUBTITLE -------------Присваивает определенный подзаголовок последующим страницам листинга исходного текста (до тех пор пока не встретится другая метакоманда $SUBTITLE).----------------------------------------------------------- $SUBTITLE: 'подзаголовок' ----------------------------------------------------------- Где подзаголовок - любая определенная символьная константа. Максимальная длина - 40 символов.Особенности. Если в программе нет метакоманды $SUBTITLE, подзаголовок - это пустая строка. ---------- - $TITLE ----------Присваивает определенный заголовок последующим страницам листинга (до тех пор пока не встретится другая метакоманда $TITLE).----------------------------------------------------------- $TITLE: 'заголовок' ----------------------------------------------------------- Где заголовок - любая определенная символьная константа. Максимальная длина - 40 символов.Особенности. Если в программе нет метакоманды $TITLE, заголовок - это пустая строка. [an error occurred while processing the directive] [an error occurred while processing the directive] [an error occurred while processing the directive] [an error occurred while processing the directive] |