ГОСТ 22558-89 сторінка 95 з 116
имя-файла-1
имя-процедуры-1
ALL PROCEDURES
ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ ПРИ
имя-коммуникации-1
[ВСЕХ ССЫЛКАХ НА] идентификатор-1 имя-файла-1
имя-процедуры-1
ВСЕХ ПРОЦЕДУРАХ I
Синтаксические правила
Если отладочные секции указаны, то они должны следовать друг за другом непосредственно за заголовком DECLARATIVES (ДЕКЛАРАТИВЫ).
В отладочной секции в операторах, отличных от оператора USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ), нельзя обращаться к процедурам, содержащимся в недекларативной части раздела процедур.
Операторы, появляющиеся вне отладочных секций, не должны ссылаться на имена-процедур, определенные в отладочных секциях.
Операторы, появляющиеся в одной из отладочных секций, могут ссылаться на имена-процедур, определенные в другой отладочной секции, только посредством оператора PERFORM (ВЫПОЛНИТЬ).
Исключение составляет только оператор USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ).
Имена-процедур, определенные в отладочных секциях, не должны появляться в операторах USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ).
Каждый из I идентификаторов, имен-файлов, имен-ком- | I муникаций или । имен-процедур может появляться только в од- ' ном операторе USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) и только один раз.
Фраза ALL PROCEDURES (ПРИ ВСЕХ ПРОЦЕДУРАХ) может появляться только один раз в программе.
Если указана фраза ALL PROCEDURES (ПРИ ВСЕХ ’ОЦЕДУРАХ), то ни в каком другом операторе USE FOR DEBUGGING ’(ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) не должны указываться имена-процедур.
Идентификатор-1 не должен представлять данные, определенные в секции отчетов, за исключением счетчиков сумм.
Если статья описания данного, представленного идентификатором-1, содержит фразу OCCURS (ПОВТОРЯЕТСЯ) или подчинена статье с фразой OCCURS (ПОВТОРЯЕТСЯ), то идентификатор-1 должен указываться без обычного необходимо- го индексирования..
(11) Ссылки на специальный регистр DEBUG-ITEM (ДАН- НЫЕ-ОТЛАДКИ) допускаются только в пределах отладочных секций.
(12) Идентификатор-1
не должен
быть
модификацией
ссылки.
3.2.4. Общие правила
(1) Операторы, встречающиеся в секции отладки, не вызываю г автоматического выполнения секции отладки.
Если в операторе USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) задано имя-файла-1, соответствующая секция отладки выполняется:
после выполнения операторов OPEN (ОТКРЫТЬ) или CLOSE (ЗАКРЫТЬ), ссылающихся на имя-файла-1;
после выполнения оператора READ (ЧИТАТЬ) (после других указанных процедур USE (ИСПОЛЬЗОВАТЬ)), не вызвавшего выполнения соответствующего повелительного оператора, указанного фразами AT END (В КОНЦЕ) или INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА);
после выполнения операторов DELETE (УДАЛИТЬ) или START (ПОДВЕСТИ), ссылающихся на имя-файла-1.
Если в операторе USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) указано имя-процедуры-1, соответствующая отладочная секция выполняется:
непосредственно перед каждым выполнением названной процедуры;
непосредственно после выполнения оператора ALTER (ИЗМЕНИТЬ), ссылающегося на имя-процедуры-1.
Фраза ALL PROCEDURES (ПРИ ВСЕХ ПРОЦЕДУРАХ) вызывает выполнение действий, указанных в общем правиле 3 для всех имен-процедур программы, кроме процедур, определенных в отладочных секциях.
Если указана фраза ALL REFERENCES OF идентифика- I тор-1 (ПРИ ВСЕХ ССЫЛКАХ НА идентификатор-1), соответ ствующая отладочная секция выполняется для каждого опера тора, явно ссылающегося на идентификатор-1 в каждом из следующих случаев:
в случае операторов WRITE (ПИСАТЬ) или REWRITE (ОБНОВИТЬ) выполнение отладочной секции происходит до выполнения операторов WRITE (ПИСАТЬ) или REWRITE (ОБНОВИТЬ), но после выполнения неявных перемещений, вызванных наличием в указанных операторах фразы FROM (ИЗ ПОЛЯ);
в случае оператора GO ТО (ПЕРЕЙТИ) с фразой DEPENDING ON (В ЗАВИСИМОСТИ ОТ) соответствующая ' отладочная секция выполняется непосредственно перед переда- ' чей управления и до выполнения отладочной секции, связанной
с именем-процедуры, которой передается управление;
в случае оператора PERFORM (ВЫПОЛНИТЬ), ссылающегося на идентификатор-1 посредством фраз VARYING (МЕНЯЯ), AFTER (ЗАТЕМ) или UNTIL (ДО) — непосредственно после присвоения начального значения, изменения или вычисления значения данного, представленного идентификатором-1;
для всех других операторов Кобола — непосредственно после выполнения оператора.
Если ссылка на идентификатор-1 производится во фразе, которая не выполняется, соответствующая отладочная секция также не выполняется.
(6) Если указан идентификатор-1 без фразы ALL REFERENCES OF (ПРИ ВСЕХ ССЫЛКАХ НА), соответствующая секция отладки выполняется в следующих случаях:
а* в случае операторов WRITE (ПИСАТЬ) или REWRITE (ОБНОВИТЬ) соответствующая отладочная секция выполняется непосредственно перед выполнением этих операторов и после неявных перемещений, указанных фразой FROM (ИЗ ПОЛЯ);
б) в случае оператора PERFORM (ВЫПОЛНИТЬ), ссылающегося на идентификатор-1 посредством фраз VARYING (МЕНЯЯ), AFTER (ЗАТЕМ), UNTIL (ДО), непосредственно после присвоения начального значения, модификации и вычисления значения данного, представленного идентификатором-1;
в) для всех других операторов Кобола, явно ссылающихся на идентификатор-1, непосредственно после выполнения оператора, приводящего к изменению значения данного, представленного идентификатором-1.
Если ссылка на идентификатор-1 производится во фразе, которая не выполняется, соответствующая отладочная секция не выполняется.
Независимо от количества ссылок на некоторый идентификатор в пределах одного оператора, соответствующая отладочная секция выполняется для одного выполнения оператора не более одного раза. Исключение еоставляет оператор PERFORM (ВЫПОЛНИТЬ), вызывающий итеративное выполнение процедуры, для которого соответствующая отладочная секция может выполняться один раз для каждой итерации. Каждое отдельное вхождение повелительного глагола в повелительном операторе рассматривается с точки зрения отладочных действий как отдельный оператор^ ■
Если в операторе USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) указано имя-коммуникации-1, соот- ватствующая отладочная секция выполняется:
после выполнения операторов ENABLE (РАЗРЕШИТЬ), DISABLE (ЗАПРЕТИТЬ) и SEND (ПОСЛАТЬ), ссылающихся на имя-коммуникации-1;
после выполнения ссылающегося на имя-коммуникации-1 оператора RECEIVE (ПОЛУЧИТЬ), не вызывающего выполнение повелительного оператора, указанного во фразе NO DATA (НЕТ ДАННЫХ);
после выполнения ссылающегося на имя-коммуникации-1 оператора ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИСЛО СООБЩЕНИИ).
Ссылка на идентификатор-1, имя-коммуникации-1, имя-
I файла-1 или имя-процедуры-1 как на уточнитель не является ссылкой на этот элемент для отладки, описанной в вышеперечисленных общих правилах.
С каждым выполнением отладочных секций связывается специальный регистр DEBUG-ITEM (ДАННЫЕ-ОТЛАДКИ), в котором представляется информация об условиях, вызвавших данное выполнение отладочной секции.
DEBUG-ITEM (ДАННЫЕ-ОТЛАДКИ) имеет следующее неявное описание:
01 DEBUG-ITEM.
02 DEBUG-LINE PICTURE IS X(6).
02 FILLER PICTURE IS X VALUE IS SPACE.
02 DEBUG-NAME PICTURE IS X(30).
02 FILLER PICTURE IS X VALUE IS SPACE.
02 DEBUG-SUB-1 PICTURE IS S9999 SIGN IS LEADING SEPARATE CHARACTER.
02 FILLER PICTURE IS X VALUE IS SPACE.
02 DEBUG-SUB-2 PICTURE IS S9999 SIGH IS LEADING SEPARATE CHARACTER.
02 FILLER PICTURE IS X VALUE IS SPACE.
2 DEBUG-SUB-3 PICTURE IS S9999 SIGN IS LEADING SEPARATE CHARACTER.
02 FILLER PICTURE IS X VALUE IS SPACE.
02 DEBUG-CONTENTS PICTURE IS X (n).
01 ДАННЫЕ-ОТЛАДКИ.
02 СТРОКА-ОТЛАДКИ ШАБЛОН X(6).
02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.
02 ИМЯ-ОТЛАДКИ ШАБЛОН X (30).
02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.
02 ИНДЕКС-ОТЛАДКИ-1 ШАБЛОН 39999 ЗНАК ПЕРВЫЙ ОТДЕЛЬНО.
02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.
02 ИНДЕКС-ОТЛАДКИ-2 ШАБЛОН 39999 ЗНАК ПЕРВЫЙ ОТДЕЛЬНО.
02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.
02 ИНДЕКС-ОТЛАДКИ-3 ШАБЛОН 39999 ЗНАК ПЕРВЫЙ ОТДЕЛЬНО.
02 ЗАПОЛНИТЕЛЬ ШАБЛОН X ЗНАЧЕНИЕ ПРОБЕЛ.
02 ЗНАЧЕНИЕ-ОТЛАДКИ ШАБЛОН Х(п).
Перед каждым выполнением отладочной секции значения данных, соотнесенных DEBUG-ITEM (ДАННЫЕ-ОТЛАДКИ), заполняются пробелами. Затем значения подчиненных ему данных обновляются в соответствии с нижеприведенными общими правилами, непосредственно перед передачей управления этой отладочной секции. Значения данных, не указанных в нижеследующих общих правилах, представляются пробелами.
Обновление выполняется в соответствии с правилами для оператора MOVE (ПОМЕСТИТЬ), за единственным исключением, состоящим в том, что перемещение в DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) неявно рассматривается как элементарное перемещение буквенно-цифрового в буквенно-цифровое без преобразования данных из одной формы внутреннего представления в другую.
DEBUG-LINE (СТРОКА-ОТЛАДКИ) является определенным реализацией средством идентификации исходного оператора.
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит первые 30 литер имени, вызвавшего выполнение отладочной секции.
Все уточнители имени отделяются в значении данного DEBUGNAME (ИМЯ-ОТЛАДКИ) словом IN или OF (ИЗ).
Индексы при их наличии не включаются в это значение.
Если ссылка на данное, вызвавшее выполнение отладочной секции, индексирована, то в DEBUG-SUB-1 (ИНДЕКС- ОТЛАДКИ-1), DEBUG-SUB-2 (ИНДЕКС-ОТЛАДКИ-2), DEBUG-SUB-3 (ИНДЕКС-ОТЛАДКИ-3) соответственно помещаются номера вхождений каждого из необходимых уровней индек- сирования.
Размер данного . DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) должен допускать представление необходимых значений, определяемых последующими общими правилами.
Если отладочная секция вызывается вследствие первого выполнения первой процедуры программы, не принадлежащей к декларативной части, то выполняются следующие условия:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует первый оператор этой процедуры;
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя этой процедуры;
DEBUG-CONTENTS (ЗНАЧЕНИЕ ОТЛАДКИ) содержит значение ’START PROGRAM’ («НАЧАЛО ПРОГРАММЫ»),
Если выполнение отладочной секции вызвано ссылкой на имя-процедуры-1 в операторе ALTER (ИЗМЕНИТЬ), то имеет место следующее:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует этот оператор ALTER (ИЗМЕНИТЬ);
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процедуры-1;
DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит нмя процедуры, указанное фразой PROCEED ТО (ДЛЯ ПЕРЕХОДА К) оператора ALTER (ИЗМЕНИТЬ).
Если выполнение отладочной секции вызвано передачей управления при выполнении оператора GO ТО (ПЕРЕЙТИ), то имеет место следующее:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует указанный оператор GO ТО (ПЕРЕЙТИ), который передает управление нмени-процедуры-2;
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процедуры-1.
Если выполнение отладочной секции вызвано ссылкой на имя-процедуры-1, указанной во фразах INPUT (ПРОЦЕДУРА ВВОДА) или OUTPUT (ПРОЦЕДУРА ВЫВОДА) оператора SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ), то имеет место следующее:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует оператор SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ), ссылающийся на имя-процедуры-1;
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процедуры-1;
DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит:
в случае фразы INPUT (ПРОЦЕДУРА ВВОДА) оператора SORT (СОРТИРОВАТЬ) — ’SORT INPUT’ («ВВОД СОРТИРОВКИ»);
в случае фразы OUTPUT (ПРОЦЕДУРА ВЫВОДА) оператора SORT (СОРТИРОВАТЬ) — ’SORT OUTPUT’ («ВЫВОД СОРТИРОВКИ»);
в случае фразы OUTPUT (ПРОЦЕДУРА ВЫВОДА) оператора MERGE (СЛИТЬ) — ’MERGE OUTPUT’ («ВЫВОД СЛИЯНИЯ»).
Если выполнение отладочной секции вызвано передачей управления имени-процедуры-1 при выполнении оператора PERFORM (ВЫПОЛНИТЬ), то имеет место следующее:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует этот оператор;
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процедуры-1;
DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит ’PERFORM LOOP’ («ЦИКЛ ВЫПОЛНИТЬ»).
Если имя-процедуры-1 относится к процедуре, выполнение которой управляется оператором USE (ИСПОЛЬЗОВАТЬ), и наступили условия ее выполнения, то имеет место следующее:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует оператор, выполнение которого повлекло выполнение имени-процеду- ры-1;
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процедуры-1;
DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит значение ’USE PROCEDURE’ («ПРОЦЕДУРА ИСПОЛЬЗОВАТЬ»),
Если неявная передача управления из предыдущего последовательного параграфа к имени-процедуры-1 вызывает выполнение отладочной секции, имеет место следующее:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует предыдущий оператор;
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-процедуры-1;
DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит ’FALL THR0UGN’ («ПРОХОДИТ ЧЕРЕЗ»),
Если выполнение отладочной секции вызвано ссылкой на имя-файла-1 или имя-коммуникации-1, то имеет место следующее:
DEBUG-LINE (СТРОКА-ОТЛАДКИ) идентифицирует исходный оператор, ссылающийся на имя-файла-1 или имя-ком- муникации-1;
DEBUG-NAME (ИМЯ-ОТЛАДКИ) содержит имя-файла-1 или имя-коммуникацйи-1;
для оператора READ (ЧИТАТЬ) DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит прочитанную запись;
для остальных операторов, ссылающихся на имя-фай- ла-1, DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит пробелы;
для любого оператора, ссылающегося на имя-коммуника- ции-1, DEBUG-CONTENTS (ЗНАЧЕНИЕ-ОТЛАДКИ) содержит значение связанной с ним области.
Побачили розбіжність з офіційним текстом?