1. Если принимающее коммуникационное устройство не обеспечивает замещения символов, | независимо от того, указа- | I на фраза REPLACING (ЗАМЕНЯЯ) или нет, | литеры, передан- г при помощи оператора SEND (ПОСЛАТЬ), могут быть нало- ^viibi на символы, предварительно переданные на ту же строку, начиная с крайней левой позиции строки.

Если принимающее коммуникационное устройство не обеспечивает наложения одного или более символов на одну и ту же позицию, I независимо от того указана фраза REPLACING | I (ЗАМЕНЯЯ) или нет, I символы, переданные при помощи опе­ратора SEND (ПОСЛАТЬ), замещают все символы, лпредваритель-но переданные на ту же строку, начиная с крайней левой позиции строки.

Часть 15. МОДУЛЬ ОТЛАДКИ

  1. ВВЕДЕНИЕ В МОДУЛЬ ОТЛАДКИ

    1. Назначение

Модуль отладки предоставляет средства для описания пользо­вателем своего алгоритма отладки, включающего условия, по кото­рым можно следить за данными или процедурами во время выпол­нения объектной программы.

Выбор объектов, подлежащих слежению, и соответствующей .' выдаваемой информации является обязанностью пользовате. , Средства отладки в Коболе обеспечивают удобный доступ к соот­ветствующей информации.

Модуль отладки является устаревшим элементом в настоящем стандарте и будет удален в следующей редакции стандарта.

  1. Характеристика уровней

Уровень 1 отладки предоставляет основные средства отладки, включающие выборочное слежение за процедурами.

Уровень 2 отладки предоставляет полные средства отладки, имеющиеся в Коболе.

  1. Понятия языка

    1. Возможности отладки

Модуль отладки в языке Кобол поддерживает следующие воз­можности:

  1. переключатель времени компиляции — фраза WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАДКИ);

  2. переключатель, действующий во время исполнения;

  3. оператор USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ);

  4. специальный регистр DEBUG-ITEM (ДАННЫЕ-ОТЛАД- КИ).

  1. Специальный регистр DEBUG-ITEM (ДАН- НЫЕ-ОТЛАДКИ)

Зарезервированное слово DEBUG-ITEM (ДАННЫЕ-ОТЛАД­КИ) является именем специального регистра, содержащего отла­дочную информацию и автоматически порождаемого реализацией. Для каждой программы порождается единственный регистр DE­BUG-ITEM (ДАННЫЕ-ОТЛАДКИ). DEBUG-ITEM (ДАННЫЕ- ОТЛАДКИ) имеет подчиненные данные, имена которых также яв­ляются зарезервированными словами.

  1. Переключатель времени компиляции

Переключатель времени компиляции управляет компиляцией отладочных строк; он устанавливается фразой WITH DEBUGGING

MODE (В РЕЖИМЕ ОТЛАДКИ), которая должна быть указана в параграфе SOURCE-COMPUTER (ИСХОДНАЯ-МАШИНА). Если эта фраза в программе указана, все отладочные строки ком­пилируются как указано в этом разделе документа. Если эта фра­за в программе не указана, все отладочные строки и секции рас­сматриваются при компиляции как строки комментариев.

  1. Переключатель, действующий во время исполнения

Переключатель, действующий во время исполнения, динами­чески активизирует отладочные коды, встроенные компилятором. К этому переключателю нельзя обращаться в Кобол-программе, он управляется вне среды Кобола. Если он «включен», разрешаются все указанные в исходной программе отладочные действия. Если этот переключатель «выключен», действия, описанные в п. 3.2 на­стоящей части, подавляются; при этом нет необходимости пере­компиляции исходной программы. Если в исходной программе фра­за WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАДКИ) не ука­зана, то переключатель, действующий во время исполнения, не ока­зывает влияния на выполнение объектной программы.

  1. РАЗДЕЛ ОБОРУДОВАНИЯ В МОДУЛЕ ОТЛАДКИ

    1. Фраза WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАД­КИ)

      1. Назначение

Фраза WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАДКИ) указывает, что все отладочные секции должны компилироваться Если эта фраза не указана, все отладочные секции компилируются так, как если бы они были строками комментариев.

  1. Общий формат

SOURCE-COMPUTER, [имя-машины [WITH DEBUGGING MODE] . ]

ИСХОДНАЯ-МАШИНА. [имя-машины [В РЕЖИМЕ ОТЛАД­КИ] .]

  1. Общие правила

  1. Если в параграфе SOURCE-COMPUTER (ИСХОДНАЯ- МАШИНА) секции конфигурации программы указана фраза WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАДКИ), компили­руются все операторы USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ).

  1. Если в секции конфигурации программы в параграфе SOURCE-COMPUTER (ИСХОДНАЯ-МАШИНА) фраза WITH DEBUGGING MODE (В РЕЖИМЕ ОТЛАДКИ) не указана, все операторы USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТ­ЛАДКИ) и все соответствующие отладочные секции рассматрива­ются при компиляции как строки комментариев.РАЗДЕЛ ПРОЦЕДУР В МОДУЛЕ ОТЛАДКИ

    1. Общее описание

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

PROCEDURE DIVISION.

DECLARATIVES.

{имя-секции SECTION.

оператор USE FOR DEBUGGING.

[имя-параграфа.

[предложение] ...]...}...

END DECLARATIVES.

{имя-секции SECTION.

[имя-параграфа.

[предложение] ...]...}...

РАЗДЕЛ ПРОЦЕДУР.

ДЕКЛАРАТИВЫ.

{СЕКЦИЯ имя-секции.

оператор ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ, [имя-параграфа.

[предложение] ... ] ...}...

КОНЕЦ ДЕКЛАРАТИВ.

{СЕКЦИЯ имя-секции.

[имя-параграфа.

[предложение] ... ] ...}...

  1. Оператор USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ)

    1. Назначение

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

  1. Общий формат

USE FOR DEBUGGING ON

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

[ALL REFERENCES OF] идентификатор-1

имя-файла-1

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

ALL PROCEDURES

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

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

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

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

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

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

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

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

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

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

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

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

  2. Каждый из I идентификаторов, имен-файлов, имен-ком- | I муникаций или । имен-процедур может появляться только в од- ' ном операторе USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) и только один раз.

  3. Фраза ALL PROCEDURES (ПРИ ВСЕХ ПРОЦЕДУРАХ) может появляться только один раз в программе.

  4. Если указана фраза ALL PROCEDURES (ПРИ ВСЕХ ’ОЦЕДУРАХ), то ни в каком другом операторе USE FOR DEBUGGING ’(ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ) не должны указываться имена-процедур.

  5. Идентификатор-1 не должен представлять данные, опре­деленные в секции отчетов, за исключением счетчиков сумм.

Если статья описания данного, представленного иден­тификатором-1, содержит фразу OCCURS (ПОВТОРЯЕТСЯ) или подчинена статье с фразой OCCURS (ПОВТОРЯЕТСЯ), то идентификатор-1 должен указываться без обычного необходимо- го индексирования..(11) Ссылки на специальный регистр DEBUG-ITEM (ДАН- НЫЕ-ОТЛАДКИ) допускаются только в пределах отладочных секций.

(12) Идентификатор-1

не должен

быть

модификацией

ссылки.




3.2.4. Общие правила

(1) Операторы, встречающиеся в секции отладки, не вызываю г автоматического выполнения секции отладки.



  1. Если в операторе USE FOR DEBUGGING (ИСПОЛЬ­ЗОВАТЬ ДЛЯ ОТЛАДКИ) задано имя-файла-1, соответствую­щая секция отладки выполняется:

  1. после выполнения операторов OPEN (ОТКРЫТЬ) или CLOSE (ЗАКРЫТЬ), ссылающихся на имя-файла-1;

  2. после выполнения оператора READ (ЧИТАТЬ) (после других указанных процедур USE (ИСПОЛЬЗОВАТЬ)), не выз­вавшего выполнения соответствующего повелительного операто­ра, указанного фразами AT END (В КОНЦЕ) или INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА);

  3. после выполнения операторов DELETE (УДАЛИТЬ) или START (ПОДВЕСТИ), ссылающихся на имя-файла-1.

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

  1. непосредственно перед каждым выполнением названной про­цедуры;

  2. непосредственно после выполнения оператора ALTER (ИЗ­МЕНИТЬ), ссылающегося на имя-процедуры-1.

  1. Фраза ALL PROCEDURES (ПРИ ВСЕХ ПРОЦЕДУРАХ) вызывает выполнение действий, указанных в общем правиле 3 для всех имен-процедур программы, кроме процедур, определенных в отладочных секциях.

  2. Если указана фраза ALL REFERENCES OF идентифика- I тор-1 (ПРИ ВСЕХ ССЫЛКАХ НА идентификатор-1), соответ ствующая отладочная секция выполняется для каждого опера тора, явно ссылающегося на идентификатор-1 в каждом из сле­дующих случаев:

  1. в случае операторов WRITE (ПИСАТЬ) или REWRITE (ОБНОВИТЬ) выполнение отладочной секции происходит до выполнения операторов WRITE (ПИСАТЬ) или REWRITE (ОБ­НОВИТЬ), но после выполнения неявных перемещений, вызван­ных наличием в указанных операторах фразы FROM (ИЗ ПО­ЛЯ);

  2. в случае оператора GO ТО (ПЕРЕЙТИ) с фразой DEPENDING ON (В ЗАВИСИМОСТИ ОТ) соответствующая ' отладочная секция выполняется непосредственно перед переда- ' чей управления и до выполнения отладочной секции, связанной

с именем-процедуры, которой передается управление;

  1. в случае оператора PERFORM (ВЫПОЛНИТЬ), ссылаю­щегося на идентификатор-1 посредством фраз VARYING (МЕ­НЯЯ), AFTER (ЗАТЕМ) или UNTIL (ДО) — непосредственно после присвоения начального значения, изменения или вычисле­ния значения данного, представленного идентификатором-1;

  2. для всех других операторов Кобола — непосредственно после выполнения оператора.

Если ссылка на идентификатор-1 производится во фразе, ко­торая не выполняется, соответствующая отладочная секция так­же не выполняется.

(6) Если указан идентификатор-1 без фразы ALL REFEREN­CES OF (ПРИ ВСЕХ ССЫЛКАХ НА), соответствующая секция отладки выполняется в следующих случаях:

а* в случае операторов WRITE (ПИСАТЬ) или REWRITE (ОБНОВИТЬ) соответствующая отладочная секция выполняет­ся непосредственно перед выполнением этих операторов и после неявных перемещений, указанных фразой FROM (ИЗ ПОЛЯ);

б) в случае оператора PERFORM (ВЫПОЛНИТЬ), ссылаю­щегося на идентификатор-1 посредством фраз VARYING (МЕ­НЯЯ), AFTER (ЗАТЕМ), UNTIL (ДО), непосредственно после присвоения начального значения, модификации и вычисления значения данного, представленного идентификатором-1;

в) для всех других операторов Кобола, явно ссылающихся на идентификатор-1, непосредственно после выполнения опера­тора, приводящего к изменению значения данного, представлен­ного идентификатором-1.

Если ссылка на идентификатор-1 производится во фразе, ко­торая не выполняется, соответствующая отладочная секция не выполняется.

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

  1. Если в операторе USE FOR DEBUGGING (ИСПОЛЬ­ЗОВАТЬ ДЛЯ ОТЛАДКИ) указано имя-коммуникации-1, соот- ватствующая отладочная секция выполняется:после выполнения операторов ENABLE (РАЗРЕШИТЬ), DISABLE (ЗАПРЕТИТЬ) и SEND (ПОСЛАТЬ), ссылающихся на имя-коммуникации-1;

  2. после выполнения ссылающегося на имя-коммуникации-1 оператора RECEIVE (ПОЛУЧИТЬ), не вызывающего выполне­ние повелительного оператора, указанного во фразе NO DATA (НЕТ ДАННЫХ);

  3. после выполнения ссылающегося на имя-коммуникации-1 оператора ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИСЛО СООБЩЕНИИ).

  1. Ссылка на идентификатор-1, имя-коммуникации-1, имя-

I файла-1 или имя-процедуры-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 ЗНАЧЕНИЕ ПРОБЕЛ.