Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книга Фортран Павловец 2008

.pdf
Скачиваний:
127
Добавлен:
31.05.2015
Размер:
1.55 Mб
Скачать

зованы дескрипторы преобразования Холлерита

или │

апострофы.

├─────────┼──────────────────────────────────────────────────────┤ │F6510 │ illegal character in hexadecimal input │

│ В поле входных данных содержался символ, не являющий-│

│ ся шестнадцатеричным символом. Действительными шест- │

│ надцатеричными символами являются символы 0-9 и A-F. │

├─────────┼──────────────────────────────────────────────────────┤

│F6511

│ variable name not foubd

│ Имя, которое встретилось при вводе из именого списка,│

не

было

объявлено в соответствующем

операторе│

NAMELIST.

 

├─────────┼──────────────────────────────────────────────────────┤

│F6512

invalid

NAMELIST input format

Вводная

запись задана в некорректном формате.

├─────────┼──────────────────────────────────────────────────────┤

│F6513

│ wrong number of

array dimensions

 

│ При вводе, управляемом именованным списком, имя

│ массива

было

квалифицировано с числом

индексов,

отличным

от

заданного в объявлении,

либо было

квалифицировано

имя не-массива.

 

├─────────┼──────────────────────────────────────────────────────┤

│F6514

│ array subscript

exceeds allocated area

В именованном

списке был задан индекс, значение

которого превышает объявленные измерения массива.

├─────────┼──────────────────────────────────────────────────────┤ │F6515 │ invalid subrange in namelist input │

│ Символьный элемент при вводе, управляемом именованным│

│ списком, был

квалифицирован с поддиапазоном,

который│

│ не удовлетворяет отношению 1 <=

e1 <= e2 <= len, где│

'len'

есть

длина символьного

элемента;

e1

- самая│

левая

позиция подстроки; e2 - самая правая

позиция. │

├─────────┼──────────────────────────────────────────────────────┤

│F6516

│ substring range specified on non-CHARACTER item

Несимвольный элемент в именованном списке был

квалифицирован с диапазоном подстроки.

├─────────┼──────────────────────────────────────────────────────┤

│F6600

internal file overflow

Программа либо "переполнила" запись входного файла,│

│ либо пыталась выполнить операцию записи в запись пос-│

│ │ ле маркера конца внутреннего файла. │

├─────────┼──────────────────────────────────────────────────────┤

│F6601

│ direct

record over flow

выполнить

запись

│ Программа

пыталась

│ большего

количества

байтов,

чем

было

специфицировано в параметре RECL= для конкретной

записи

файла прямого доступа.

 

 

├─────────┼──────────────────────────────────────────────────────┤

│F6602

│ list-directed number bigger

than record

size

Программа пыталась записать

элемент, не

являющийся

символьной константой, за границей записи.

├─────────┼──────────────────────────────────────────────────────┤

│F6700

│ heap space limit

exceeded

предпринята

попытка

│ В

программе

была

│ одновременно

открыть

 

слишком

много

│ файлов.

Блок

управления

файлом

(FCB)

│ должен быть размещен в управляющей части программы

│ для каждого открытого файла, однако доступной для

│ этого области памяти оказывается недостаточно.

├─────────┼──────────────────────────────────────────────────────┤ │F6701 │ scratch file name limit exceeded │

201

│ Программа исчерпала шаблон, используемый для генера- │

│ │ ции уникальных имен рабочих файлов. │

├─────────┼──────────────────────────────────────────────────────┤ │F6980 │ integer expected in format │

│ В специфицированном дескрипторе преобразования форма-│

│ │ та не указано требуемое целочисленное значение. │

├─────────┼──────────────────────────────────────────────────────┤

│F6981

│ initial left

parenthesis expected in format

круглой

Спецификация

формата не была начата с левой

скобки (().

 

 

├─────────┼──────────────────────────────────────────────────────┤

│F6982

│ positive integer

expected

in format

В спецификации

формата

было использовано нулевое и│

отрицательное целочисленное значение.

│ Отрицательные целочисленные значения могут указывать-│

│ ся

только

 

с дескриптором

преобразования P. Нулевые│

│ целочисленые

значения могут

указываться

только в по-│

лях

d и

m

цифровых дескрипторов

преобразования│

формата.

 

 

 

├─────────┼──────────────────────────────────────────────────────┤

│F6983

│ repeat count on nonrepeatable

descriptor

│ Для одного

или

более дескрипторов преобразования

│ формата, а

именно:

/, \, $,: или апост-

BN,

BZ,

S,

SS,

SP, T, TL, TR,

роф

(')

- были

указаны повторения.

├─────────┼──────────────────────────────────────────────────────┤

│F6984

│ integer expected preceding

H, X

or P edit

descriptor │

│ Дескрипторам

преобразования H,

X и

P не предшествует│

│ целое

число.

Правильными

форматами

являются следую-│

щие:

nH, nX

и kP, где n - есть положительное целое│

число, а k -

целое число с

необязательным

знаком.

├─────────┼──────────────────────────────────────────────────────┤

│F6985

│ N оr Z expected

after

B

in format

│ Был использован

ошибочный дескриптор преобразования

│ формата, начинающийся

с

буквы

"В".

Единственными

корректными

начинающимися с буквы

дескрипторами

преобразования,

│ "B", являются дескрипторы BN, и BZ, используемые для │

спецификации

интерпретации

пробелов

как пустых │

указателей или

как нулей, соответственно.

├─────────┼──────────────────────────────────────────────────────┤ │F9686 │ format nesting limit exceeded │

│ Превышен предел вложенности: внутри скобок "главного"│

(первого) уровня

указано более 16 уровней круглых│

скобок.

├─────────┼──────────────────────────────────────────────────────┤

│F6687

│ "." expected

in format

В дескрипторах преобразования D, E, F или G между

полями w и d

не была указана точка.

├─────────┼──────────────────────────────────────────────────────┤

│F6988

│ unexpected end of format

 

│ Был использован неполный формат.

соответствие

│ Данную ошибку может вызвать: неточное

│ круглых

скобок,

незавершенная

спецификация

│ дескриптора

Холлерита

(H) или другие неполные

│ описания дескрипторов преобразования формата.

├─────────┼──────────────────────────────────────────────────────┤

│F6989

│ unexpected character

in format

использован

│ В спецификации формата

был

символ,

который

как

не

может

быть интерпретирован

часть корректного

202

Маскированное действие по умолчанию
Исключительная ситуация маскирована
Результат приводится к значению 0.0
Исключительная ситуация маскирована

│ │ дескриптора преобразования формата. │

├─────────┼──────────────────────────────────────────────────────┤

│F6990

│ M field exceeds

W field in I

edit descriptor

Значение поля m, специфицированого в дескрипторе

преобразования

I, превысило

значение поля w.

├─────────┼──────────────────────────────────────────────────────┤

│F6991

integer out of range in

format

Целочисленное значение,

специфицированное в

дескрип-│

│ торе преобразования формата, было слишком большим для│

│ │ представления 4-х байтовых целых чисел. │

├─────────┼──────────────────────────────────────────────────────┤

│F6992

│ format

not set by ASSIGN

 

 

 

│ Спецификатор формата в операторах READ, WRITE или

│ PRINT

был

целочисленной переменной,

но

оператор

│ ASSIGN

не выполнил операцию присвоения

ее

значения

│ операторной

метке оператора FORMAT

в

том

же

│ программном модуле.

 

 

 

└─────────┴──────────────────────────────────────────────────────┘

2.3.2Другие сообщения об ошибках исполняющей системы

Впоследующих подразделах описаны "математические" ошибки исполняющей системы,

атакже "общие" ошибки. "Математические" ошибки подразделяются на математические ошибки "низкого уровня" и ошибки "функционального уровня".

Математические ошибки "низкого уровня"

Перечисленные ниже сообщения об ошибках соответствуют исключительным ситуациям, возникающим при функционировании сопроцессора 8087/80287.

Данные ошибки могут также быть определены эмулятором или альтернирующей математической библиотекой. Используя принимаемые по умолчанию установки управляющих слов для сопроцессора 8087/80287, следующие исключительные ситуации являются маскироваными:

Исключительная ситуация

Денормализация

"Отрицательное переполнение"

Неточность

При возникновении следующих ошибок коды ошибок, генерируемые оптимизирующим компилятором языка ФОРТРАН или стандартными библиотеками ФОРТРАНа, не отображаются:

square root stack' underflow unemulated

Сообщения о "математических" ошибках низкого уровня" отображаются в следующем формате:

[<sourcefile>(<line>:] run-time error M61xx:MATH - floating-point error:<messagetext>

203

Поля <sourcefile> и <line> присутствуют только в том случае, если при компиляции используется параметр /4Yb (или метакоманда $DEBUG).

┌─────────┬──────────────────────────────────────────────────────┐ │ Номер │ Сообщение о математической ошибке низкого уровня │

├─────────┼──────────────────────────────────────────────────────┤

│M6101

invalid

Встретился ошибочный оператор (операция).

│ При возникновении данной ошибки происходит прерывание│

│ │ выполнения программы с кодом завершения 129. │

├─────────┼──────────────────────────────────────────────────────┤

│M6102

denormal

Было сгенерировано "очень маленькое" число с

плаваю-│

│ щей точкой, которое может привести к потере значимос-│

ти. При

возникновении данной

ошибки происходит пре-│

рывание

выполнения программы с

кодом завершения 130. │

├─────────┼──────────────────────────────────────────────────────┤ │M6103 │ devide by 0 │

│ Была предпринята попытка выполнить операцию деления│

│ на 0. При возникновении данной ошибки происходит пре-│

│ рывание выполнения программы с кодом завершения 131. │

├─────────┼──────────────────────────────────────────────────────┤

│M6104

│ overflow

│ При выполнении операции с плавающей точкой произошло │

│ переполнение. При возникновении данной ошибки проис- │

│ ходит прерывание выполнения программы с кодом завер- │

│ │ шения 132. │

├─────────┼──────────────────────────────────────────────────────┤ │M6105 │ underflow │

│ При выполнении операции с плавающей точкой произошло │

"отрицательное

переполнение"

(потеря

значимости).

(Отрицательное

переполнение

обычно

маскировано,

так│

│ что полученное значение в общем случае приравнивается│

│ к нулю.

│ При возникновении данной ошибки происходит прерывание│

│ │ выполнения программы с кодом завершения 133. │

├─────────┼──────────────────────────────────────────────────────┤ │M6106 │ inexact │

│ При выполнении операции с плавающей точкой произошла │

│ потеря точности. Данная исключительная ситуация обыч-│

│ но маскирована, поскольку почти любая операция с пла-│

│ вающей точкой может вызвать потерю точности.

│ При возникновении данной ошибки происходит прерывание│

│ │ выполнения программы с кодом завершения 134. │

├─────────┼──────────────────────────────────────────────────────┤ │M6107 │ unemulated │

│ Была предпринята попытка выполнить команду сопроцес- │

сора 8087/80287, которая является ошибочной или не │

подерживается эмулятором.

│ При возникновении данной ошибки происходит прерывание│

│ │ выполнения программы с кодом завершения 135. │

├─────────┼──────────────────────────────────────────────────────┤ │M6108 │ square root │

│ В операции извлечения квадратного корня был использо-│

ван отрицательный

операнд. Встроенная функция SQRT│

данного сообщения

не генерирует; напротив, функция│

│ SQRT "выдает" ошибку DOMAIN "функционального уровня".│

│ При возникновении данной ошибки происходит прерывание│

│ выполнения программы с кодом завершения 136 (см. так-│

│ же описание сообщения об ошибке M6201).

204

├─────────┼──────────────────────────────────────────────────────┤

│M6110

│ stack overflow

операции

с плаваюей точкой произошло

│ При выполнении

переполние

стека (при

использовании сопроцессора

8087/80287

или

эмулятора).

│ При возникновении данной ошибки происходит прерывание│

│ │ выполнения программы с кодом завершения 138. │

├─────────┼──────────────────────────────────────────────────────┤ │M6111 │ stack underflow │

│ При выполнении операции с плавающей точкой произошло │

│ "отрицательное переполнение" стека (при использовании│

│ сопроцессора 8087/80287).

│ При возникновении данной ошибки происходит прерывание│

│ │ выполнения программы с кодом завершения 139. │

└─────────┴──────────────────────────────────────────────────────┘

Математические ошибки функционального уровня

Сообщения о математических ошибках функционального уровня, перечисленные ниже, появляются в тех случаях, когда ошибка возникает при использовании встроенных функций. Сообщения об ошибках отображаются в следующем формате:

[<source file>(<line>):] run-time error M62xx:MATH - <functionname>:<messagetext>

Поля <sourcefile> и <line> появляются в сообщении об ошибке только в тех случаях, когда используется параметр компиляции /4Yb (или метакоманды $DEBUG):

┌─────────┬──────────────────────────────────────────────────────┐

Номер

Сообщения о математических

ошибках функционального

 

уровня

 

├─────────┼──────────────────────────────────────────────────────┤ │M6201 │ <functionname>:DOMAIN error │

│ Аргумент заданной функции не лежит в области опреде- │

│ ления функции (т.е. находится вне

действительного

│ множества входных значений функции),

например:

SQRT

(-1.0)

 

ACOS

(-5.0)

 

├─────────┼──────────────────────────────────────────────────────┤

│M6202

<functionname>:SING error

Данная ошибка относится к вырожденности (нерегуляр- │

│ ности) аргумента. Заданная функция не была точно оп- │

│ ределена для значения ее фактического агрумента, хо- │

│ тя она могла быть определена в соседних точках,

│ например:

LOG10 (0.0)

(0.0)**(-3.0)

├─────────┼──────────────────────────────────────────────────────┤ │M6203 │ <functionname>:OVERFLOW error │

│ Результат заданной функции или один из ее промежуточ-│

ных

результатов (вычислений) оказался слишком велик│

для

его представления, например: EXP(25000.0).

├─────────┼──────────────────────────────────────────────────────┤ │M6204 │ <functionname>:UNDERFLOW error │

│ Результат заданной функции или один из ее промежуточ-│

ных

результатов (вычислений)

оказался слишком мал,│

чтобы

быть

представленным

текущей

версии│

205

│ компилятора поддержка данной

ошибки не

обеспечивает-│

ся;

напротив,

получаемое

значение

приводится к│

значению 0.0).

 

 

├─────────┼──────────────────────────────────────────────────────┤

│M6205

│ <functioname>:TLOSS error

Произошла общая потеря значимости, как в следующем

примере: COS(1.OE30).

├─────────┼──────────────────────────────────────────────────────┤

│M6206

│ <functioname>:PLOSS error

 

 

│ Произошла частичная

потеря

значимости. (Поддержка │

данной

ошибки

в

текущей

версии

компилятора

не

обеспечивается;

напротив,

значение

│ "с потерянной значимостью" передается для дальнейших │

│ │ вычислений). │

└─────────┴──────────────────────────────────────────────────────┘

Общие сообщения об ошибках исполняющей системы

Перечисленные ниже сообщения указывают на наличие "общих проблем", которые могут встретиться при запуске, прерывании и исполнении программы. Они имеют следующий формат:

[<sourcefile>(<line>):] rnn-time error R6xxx - <messagetext>

Поля <sourcefile> и <line> присутствуют в сообщении только в тех случаях, когда используется параметр компиляции /4Yb (или метакоманда $DEBUG). На этапе запуска программы для сообщений R6002, R6004, R6008, R6009 дополнительная информация не отображается.

┌─────────┬──────────────────────────────────────────────────────┐ │ Номер │ Общие сообщения об ошибках исполняющей системы │

├─────────┼──────────────────────────────────────────────────────┤ │R6000 │ stack overflow │

│ Программа пользователя "вышла"за пределы области стэ-│

│ │ ка. Это может произойти, когда программа использует │

│ область памяти большого размера для локальных данных │

│ и вренных файлов, либо использует вызовы подпрограмм,│

│ встроенные слишком глубоко.

 

 

 

│ Прерывание программы происходит с кодом завершения

│ 255.

исправления

возникшей

ошибки,

│ Для

│ следует

 

выполнить

 

процедуру

│ перекомпоновки, используя параметр /STACK для

│ выделения

стека

большого

размера,

либо

│ выполнить

процедуру

перекомпоновки

│ с использованием параметра /F <hexnum>.

 

│ Также

можно

скомпилировать

программу

с параметром│

│ компиляции

/Ge для

выполнения

процедуры проверки│

│ переполнения стэка и модификации информации о стэке в│

управляющей части исполняемого файла, используя для│

зтого программу EXEMOD.

├─────────┼──────────────────────────────────────────────────────┤ │R6001 │ null pointer assignment │

│ Содержимое сегмета NULL изменилось в процессе выпол- │

│ нения программы. Семент NULL представляет собой спе- │

│ циальную область памяти, имеющую наименьший адрес │

206

│ (начальное смещение в DGROUP равно 0), которая обычно│

│ не используется. Если при выполнении программы содер-│

│ жимое

этого

сегмента изменяется, это означает, что│

│ во

время

своей

работы программа выполняла операцию│

│ записи

в

 

эту

область.

Следует

отметить,│

│ что

 

программа

пользователя

может

содержать│

│ null-указатели и при этом

данное сообщение

генериро-│

│ ваться

не

будет; данное

сообщение появляется только│

│ в

том

случае, когда пользователь выполняет доступ к│

│ некоторой

области

памяти

посредством null-указателя.│

│ При возникновении

данной

ошибки прерывания программы│

│ не происходит; сообщение

об ошибке будет распечатано│

│ при нормальном

завершении

программы. Данная ошибка│

│ "вырабытывает" ненулевой код завершения.

│ Данное сообщение "информирует" пользователя о наличии│

│ в его программе "потенциальной серьезной ошибки". Хо-│

│ │ тя программа, которая выдает данную ошибку, может│

│ продолжать выполняться корректно, в дальнейшем при ее│

│ │ использовании могут быть получены непредвиденные ре-│

│ зультаты и программа, возможно, не сможет выполняться│

│ │ в различных операционых средах. │

├─────────┼──────────────────────────────────────────────────────┤ │R6002 │ floating point not loaded │

│ Данная ошибка имеет место при неадекватной поддержке │

операций

над числами

с

плавающей точкой. Происходит

прерывание

программы

с

кодом завершения 255. Данная

│ ошибка может возникнуть в следующих трех ситуациях: │

│ 1. Программа была скомпилирована или скомпонована с │

параметром

(например,

/FPi87), │

требующим

использования

сопроцессора │

│ 8087 или 80287, а программа "прогонялась" на компью- │

│ тере, на котором требуемый сопроцессор не инсталлиро-│

│ ван. Для разрешения этой проблемы следует перекомпи- │

│ лировать

программу с параметром /FPi, перекомпоно- │

│ вать

ее

с билиотекой эмулятора

(LLIBFORE.LIB или │

│ MLIBFORE.LIB) или

инсталлировать сопроцессор;

│ 2. В

программах,

модули

которой написаны на разных│

│ языках,

модуль,

который использует Си-функции scanf│

│ или

 

printf,

либо

их

варианты,│

│ их

варианты, в

обращение

к одной из этих функций│

│ включают спецификацию формата с плавающей точкой (на-│

│ пример f); однако в том же Си-модуле не появлялось ни│

│ одного значения

с

плавающей точкой. (Компилятор Си│

│ использует

наличие их

значений с плавающей точкой и│

│ переменных

для определения

того, когда

и где необхо-│

│ димо обеспечить

поддержку

соглашений

о выполнении│

│ операций с

плавающей точкой).

│ Для разрешения

данной проблемы следует использовать│

│ аргумент с плавающей точкой для установления соответ-│

ствия со спецификацией формата с плавающей точкой в│

вызовах функций scanf или printf.

│ 3. В программах, модули которых написаны на различных│

│ языках, (т.е. используют

и Си-модули и ФОРТРАН-моду-│

│ ли),

библиотека

Си

(LLIBC.LIB

или MLIBC.LIB)│

│ при

выполнении

процедуры

 

компоновки

 

была│

│ специфицирована прежде

библиотеки

языка

ФОРТРАН│

│ (LLIBFORx.LIB или

MLIBFORx.LIB).

проблемы

 

│ Для

разрешения

этой

следует│

│ выполнить

процедуру

 

перекомпоновки│

│ и специфицировать

библиотеки в обратном порядке.

└─────────┴──────────────────────────────────────────────────────┘

207

Справочное издание

Павловец Василий Владимирович

ИНФОРМАТИКА. Программирование на Фортране

Редактор Павловец В.В. Верстка Павловец А.В

Подписано в печать 21.06.2006. Формат 60х84/16. Бумага офсетная. Гарнитура Таймс. Усл. печ.л. 13. Тираж 1000 экз. Заказ №

Издательство ООО «Асконто» ЛИ №02330/0131629 от 30.04.04. 220113, г.Минск,

ул.Мележа, 5, 502-1. т.203-93-02.

Отпечатано в типографии

208