COBOL - 了解 SET MYSELF

COBOL - Understanding SET MYSELF

在我的 COBOL 程序中,我有以下语句:

SET MYSELF (STATUS) TO -1. 

这条语句有什么作用?我不明白 MYSELF 和 STATUS 这两个词。似乎它为状态参数提供了值 -1,对吗? MYSELF 是什么意思?

MYSELF 是一个保留字,它使编译器提供的任务项能够引用其自身进程的属性。因此,您将自己进程中的 STATUS 设置为 -1。

COBOL ANSI-74 Programming Reference Manual (PDF Link)

The reserved word MYSELF is a compiler-supplied task item that enables a program to access its own task attributes. Thus, any attribute of a given task can be referenced within that task as ATTRIBUTE attribute-name OF MYSELF.

For example, CHANGE ATTRIBUTE DECLAREDPRIORITY OF MYSELF TO 90. CHANGE ATTRIBUTE DECLAREDPRIORITY OF ATTRIBUTE PARTNER OF MYSELF TO 65.

The second example illustrates another task running with a task that you are running. The PARTNER attribute refers to the other task and the example changes the DECLAREDPRIORITY of the other task.

在 "plain" COBOL 程序中,此语句无效。 MYSELF 将是 OCCURS("table cell")下方的条目,STATUS 将是要使用的索引(= 数字变量)。

但是由于SET语句只能("standard COBOL")调整POINTERINDEX类型的变量,并且两者都不能设置为负数这个语句通常会无效。

有一些实现可以使用 SET 来调整任何数字变量(如果目标是带符号的变量,-1 将有效),但正如@JerryTheGreek 指出的那样,它看起来是没有 COBOL 但 "Task-Attribute Identifiers (Extension to ANSI X3.23-1974 COBOL)".