Подавление проверок
Присутствие прагмы SUPPRESS позволяет реализации опускать некоторые проверки во время выполнения программы. Эта прагма имеет следующий вид:
pragma SUPPRESS (идентификатор [, [ON =>] имя]);-
Проверка, указанная идентификатором, может быть опущена. Имя (если оно присутствует) должно быть простым или расширенным и обозначать объект, тип или подтип, задачный модуль или настраиваемый модуль; оно также может быть именем подпрограммы, в этом случае имя обозначает все видимые совмещенные подпрограммы.
Прагма SUPPRESS допустима непосредственно в разделе описаний или непосредственно в спецификации пакета. Во втором случае допустимо представление прагмы только с именем, которое обозначает понятие (или несколько совмещенных подпрограмм), описанное непосредственно в спецификации пакета. Действие прагмы распространяется от местоположения прагмы до конца зоны описания, связанной с самым внутренним объемлющим оператором блока или программным модулем. Если прагма задана в спецификации пакета, то ее действие распространяется до конца области действия именованного понятия.
Если в прагму включено имя, то возможность подавления проверки в дальнейшем ограничена: прагма действует только для операций над объектом с этим именем или над всеми объектами базового типа для указанного в прагме имени типа или подтипа, для вызовов подпрограмм с этим именем, для активизации задач указанного именем задачного типа и для конкретизации указанного настраиваемого модуля.
Следующие проверки соответствуют ситуациям, в которых может быть возбуждено исключение CONSTRAINT_ERROR. В этих проверках имя (если оно указано) должно обозначать объект или тип
ACCESS_CHECK | Проверяется именуемая компонента, индексируемая компонента, отрезок или атрибут объекта, указанный ссылочным значением на неравенство значению null этого ссылочного значения. |
DISCRIMINANT_CHECK | Проверяется, что дискриминант составного значения удовлетворяет ограничению дискриминанта. Также при ссылке на компоненты записи проверяется их существование для текущих значений дискриминанта. |
INDEX_CHECK | Проверяется, что границы значений индексов массива равны соответствующим границам ограничения индекса. Также при ссылке на компоненту массива по каждой размерности проверяется, что данное значение индекса находится в диапазоне, определенном границами индекса массива; при ссылке на отрезок массива проверяется, что заданный дискретный диапазон совместим с диапазоном, определенным границами индексов массива. |
LENGTH_CHECK | Проверяется, что каждой компоненте массива соответствует подходящая компонента при выполнении присваивания массиву, преобразовании типа и выполнении логических операций над массивами логических компонент. |
RANGE_CHECK | Проверяется, что некоторое значение удовлетворяет ограничению диапазона. Также при предвыполнении указания подтипа проверяется совместимость ограничения (если оно имеется) с обозначением типа. Для агрегата проверяется принадлежность индекса или дискриминанта соответствующему подтипу. Наконец, осуществляются проверки любых ограничений, создаваемых при конкретизации настройки. |
Следующие проверки соответствуют ситуациям, в которых возбуждается исключение NUMERIC_ERROR. Допустимыми именами в соответствующих прагмах являются имена числовых типов.
DIVISION_CHECK | Проверяется, что второй операнд операций /, rem и mod не равен нулю. |
OVERFLOW_CHECK | Проверяется, что в результате выполнения числовой операции не возникает переполнения. |
Следующие проверки соответствуют ситуациям, в которых возбуждается исключение PROGRAM - ERROR. Допустимыми именами в соответствующих прагмах являются имена задач-ных модулей, настраиваемых модулей или подпрограмм.
ELABORATION_CHECK | Когда вызывается подпрограмма, выполняется активизация задачи или предвыполняется конкретизация настройки, то проверяется, что тело соответствующего программного модуля уже предвыполнено. |
Следующие проверки соответствуют ситуациям, в которых возбуждается исключение STORAGE_ERROR. Допустимыми именами в соответствующих прагмах являются имена, обозначающие ссылочные типы. задачные модули или полпппгпяммм
STORAGE_ERROR | Проверяется, что выполнение генератора не потребует объема памяти, большего, чем необходимо для выбора, или что требуемый под задачу или для подпрограммы объем памяти достаточен. |
Если возникает ошибочная ситуация в отсутствие проверок во время выполнения программы, то программа считается ошибочной (результаты выполнения не определяются в языке).