COBOL — Понимание SET MYSELF

В моей программе COBOL у меня есть следующее утверждение:

SET MYSELF (STATUS) TO -1. 

Что делает это утверждение? Я не понимаю слов СЕБЯ и СТАТУС. Кажется, что он дает параметру состояния значение -1, я прав? Что значит САМ?


person jguilhermemv    schedule 09.12.2019    source источник


Ответы (2)


MYSELF — это зарезервированное слово, которое позволяет элементу задачи, предоставленному компилятором, ссылаться на атрибуты своего собственного процесса. Таким образом, вы устанавливаете STATUS в своем собственном процессе на -1.

Справочное руководство по программированию COBOL ANSI-74 (ссылка в формате PDF)

Зарезервированное слово MYSELF — это предоставляемый компилятором элемент задачи, который позволяет программе получить доступ к собственным атрибутам задачи. Таким образом, на любой атрибут данной задачи в этой задаче можно ссылаться как на АТРИБУТ имя-атрибута МЕНЯ.

Например, ИЗМЕНИТЕ АТРИБУТ, ЗАЯВЛЕННЫЙ ПРИОРИТЕТОМ СЕБЯ НА 90. ИЗМЕНИТЕ АТРИБУТ, ЗАЯВЛЕННЫЙ ПРИОРИТЕТОМ АТРИБУТА ПАРТНЕРА СЕБЯ, НА 65.

Второй пример иллюстрирует выполнение другой задачи вместе с выполняемой вами задачей. Атрибут PARTNER относится к другой задаче, и пример изменяет DECLAREDPRIORITY другой задачи.

person JerryTheGreek    schedule 09.12.2019
comment
Спасибо за дополнительный фон. Следует знать, что это не COBOL, а расширение Unisys, как отмечалось выше. - person Simon Sobisch; 09.12.2019
comment
Просто примечание: это не обычное расширение для COBOL74, например, Справочное руководство по языку VAX-11 COBOL-74 не упоминает ничего подобного. - person Simon Sobisch; 09.12.2019

В «простой» программе на языке COBOL это утверждение недействительно. MYSELF будет записью ниже OCCURS ("ячейка таблицы"), а STATUS будет используемым индексом (= числовая переменная).

Но поскольку оператор SET может только ("стандартный COBOL") корректировать переменные типа POINTER или INDEX, и оба не могут быть установлены отрицательными, этот оператор обычно недействителен.

В некоторых реализациях вы можете использовать SET для настройки любой числовой переменной (где -1 будет допустимым, если целью является переменная со знаком), но, как указал @JerryTheGreek, это выглядит как NO COBOL но «Идентификаторы атрибутов задач (расширение ANSI X3.23-1974 COBOL)».

person Simon Sobisch    schedule 09.12.2019