Перейти до вмісту
ГОСТ 22558-89
/ 116

имя-файла-1

имя-процедуры-1

ALL PROCEDURES

ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ ПРИ

имя-коммуникации-1

[ВСЕХ ССЫЛКАХ НА] идентификатор-1 имя-файла-1

имя-процедуры-1

ВСЕХ ПРОЦЕДУРАХ I

Синтаксические правила

Если отладочные секции указаны, то они должны следо­вать друг за другом непосредственно за заголовком DECLARA­TIVES (ДЕКЛАРАТИВЫ).

В отладочной секции в операторах, отличных от оператора USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ), нельзя обращаться к процедурам, содержащимся в недекларатив­ной части раздела процедур.

Операторы, появляющиеся вне отладочных секций, не дол­жны ссылаться на имена-процедур, определенные в отладочных секциях.

Операторы, появляющиеся в одной из отладочных секций, могут ссылаться на имена-процедур, определенные в другой отла­дочной секции, только посредством оператора PERFORM (ВЫ­ПОЛНИТЬ).

Исключение составляет только оператор USE FOR DEBUG­GING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ).

Имена-процедур, определенные в отладочных секциях, не должны появляться в операторах 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 REFEREN­CES 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 литер имени, вызвавшего выполнение отладочной секции.

Все уточнители имени отделяются в значении данного DEBUG­NAME (ИМЯ-ОТЛАДКИ) словом IN или OF (ИЗ).

Индексы при их наличии не включаются в это значение.

Если ссылка на данное, вызвавшее выполнение отла­дочной секции, индексирована, то в DEBUG-SUB-1 (ИНДЕКС- ОТЛАДКИ-1), DEBUG-SUB-2 (ИНДЕКС-ОТЛАДКИ-2), DE­BUG-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 при выполнении оператора PER­FORM (ВЫПОЛНИТЬ), то имеет место следующее:

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 (ЗНАЧЕНИЕ-ОТЛАДКИ) содер­жит значение связанной с ним области.

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →