отлажена и готова для использования. При этом необязательно фактически удалять их из программы. Они просто
не будут компилироваться при окончательной компиляции готовой программы. Секции отладки - это целые
секции, включаемые в секции декларанте раздела процедур. Строки отладки выполняются каждый раз, когда им
естественным образом передается управление. Секции отладки выполняются, как только в работающей
программе происходит обращение к определенным идентификаторам файлов или процедур. Секции отладки
также не включаются при окончательной компиляции готовой программы.
Из секций отладки возможны обращения к специальному данному с именем DEBUG-ITEM (данные-отладки).
Никакие внешние по отношению к секциям отладки операторы, включая операторы строк отладки, не могут
обращаться к данному DEBUG-ITEM, а само это данное не должно описываться в разделе данных, оно
предусматривается самой системой, а не программой. Знамения DEBUG-ITEM устанавливаются автоматически
при передаче управления секции отладки. Они содержат: 1) номер, идентифицирующий конкретный оператор
исходной программы; 2) идентификатор – имя файла или имя процедуры, к которым произошло обращение,
вызвавшее передачу управления секции отладки; 3) значения индексов или имена индексов; 4) информацию о
значениях, связанных с причиной передачи управления секции отладки.
Автоматическая передача управления секции отладки и установка значений в данное DEBUG-ITEM
происходит следующим образом.
1. Для идентификатора – непосредственно после любого выполняемого оператора, за исключением оператора
WRITE, или непосредственно перед выполнением оператора WRITE.
2. Для имени процедуры - непосредственно перед операторами GO TO, PERFORM, SORT или перед
непосредственной передачей управления, или непосредственно после оператора ALTER.
3. Для имени файла - после выполнения операторов OPEN или CLOSE и любого выполнения оператора READ,
не приводящего к выполнению связанных с этим оператором повелительных операторов.
Отладка в ПЛ/1. Естественный порядок выполнения программы может быть нарушен прерыванием,
возникшим вследствие ошибок в программе и в некоторых специальных случаях. Состояния прерывания в ПЛ/1
называют исключительными. Типичным исключительным состояниям присвоены стандартные имена состояний,
указывающие причину прерывания. Программист может запретить или, наоборот, разрушить обработку
определенных исключительных состояний.
Исключительные состояния, установленные в ПЛ/1, охватывают не все причины прерываний. Для
прерываний, которым» не сопоставлены специальные исключительные состояния, создается системное состояние
ERROR (ошибка). В ряде случаев одно и то же исключительное состояние может соответствовать разным
причинам прерываний. Для уточнения причины прерывания служит встроенная функция ON CODE. Значение
этой функции - число в форме BINARY FIXED (15,0), указывающее код прерывания. Обычно функцию ON
CODE используют в утверждении ON ERROR для выдачи на печать кода прерываний, однако ее можно
использовать и для определения варианта действий по исправлению ошибки или ликвидации ее последствий.
Специально для отладки программ служат три исключительных состояния: CHECK (список имен), STRING
RANGE и SUBSCRIPT RANGE. Эти состояния по умолчанию выключены, но их можно включить префиксами
состояний.
"Список имен" в префиксе CHECK может содержать неиндексированные имена элементных и агрегатных
переменных, метки и имена входов, разделенные запятыми.
Состояние CHECK создается, если в сфере действия CHECK - префикса для имени, указанного в списке имен
этого префикса – произошло одно из следующих событий: изменилось значение переменной (прерывание
возникает после изменения значения) , встретилось утверждение с указанной меткой или произошел вызов
процедуры с указанным именем входа (прерывание возникает перед выполнением помеченного утверждения или
перед вызовом процедуры).
В ON-единице для состояния CHECK можно предусмотреть контроль присваиваемого значения или
"перехват" выполнения помеченного утверждения. В частности, "перехват" передачи управления и вызов
процедур применяется при автономной отладке отдельных модулей, которые в дальнейшем объединяются в
единую программу.
При нормальном возврате из ON-единицы выполнение программы продолжается с точки прерывания, но,
используя утверждение GO TO ON-единицы, можно перейти в любую другую точку программы.
Состояние CHECK обычно используют для печати трассы программы (последовательности меток
выполняемых утверждений и имен входов выполняемых процедур) и значений присваиваемых переменным.
Состояние STRING RANGE возникает, если в сфере действия префикса (STRING RANGE) обнаруживаются
неправильные аргументы встроенной функции SUBSTR. В ON-единице можно исправить неправильную длину
строки, после этого функция SUBSTR вычисляется повторно.
Состояние SUBSCRIPT RANGE возникает, если в сфере действия префикса (SUBSCRIPT RANGE) значение
индекса элемента массива оказалось вне установленных для него границ.
Употребление префиксов отладочных состояний замедляет выполнение программы и увеличивает
потребность в памяти, поэтому, завершив отладку, эти префиксы целесообразно удалить.
Отладка в ФОРТРАНе. Важнейшая системозависимая особенность языка ФОРТPAH-IV в ОС ЕС заключается