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

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

.pdf
Скачиваний:
160
Добавлен:
31.05.2015
Размер:
2 Мб
Скачать
☆

│

│

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

или │

│

│

апострофы.

│

├─────────┼──────────────────────────────────────────────────────┤ │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