The SET Statement

The SET statement is used to alter the status of external switches.

ANSI 85 The SET statement is used to alter the value of conditional variables.

VS COBOL II Micro Focus Enterprise COBOL for z/OS The SET statement is used to assign the address of a data item to a pointer data item. It is also used to adjust the contents of a pointer data item.

Enterprise COBOL for z/OS or pointer-32

Enterprise COBOL for z/OS or pointer-32

The SET statement establishes reference points for table handling operations by setting indices associated with table elements.

Micro Focus The SET statement is used to assign the address of a program or an entry-point in a program to a procedure-pointer data item.

ISO 2002 Micro Focus The SET statement is used to assign the address of a pointer to a program-pointer data item.

ISO 2002 Micro Focus The SET statement is used to assign object references.

Micro Focus The SET statement is used to alter the value of a synchronization data item.

Micro Focus The SET statement is used to assign the address of a synchronization data item to another synchronization data item.

.NET JVM  The SET statement is used to alter the size of a native array.

.NET JVM  The SET statement is used to initialize the contents of a native array and to set the array size based on those contents.

.NET JVM  The SET statement is used to alter the value of a boolean data item with usage CONDITION-VALUE.

.NET JVM  The SET statement is used to alter the value of a data item with a native type.

Micro Focus Enterprise COBOL for z/OS The SET statement is used to set the dynamic length of a receiving item to the value of the sending item.

ANSI 85 

General Formats for Format 1 (Switch-setting)


Syntax for General Format for Format 1 (Switch-setting) for the SET statement
ANSI 85 

General Formats for Format 2 (Condition-setting)

Syntax for General Format for Format 2 (Condition-setting) for the SET statement

VS COBOL II 

General Formats for Format 3 (Data pointer assignment)


Syntax for General Format for Format 3 (Data-pointer-assignment) for the SET statement
ISO 2002 Micro Focus 

General Formats for Format 5 (Data pointer arithmetic)


Syntax for General Format for Format 5 (Data-pointer-arithmetic) for the SET statement

General Formats for Format 6 (Index-assignment)


Syntax for General Format for Format 1 (Index-assignment) for the SET statement

General Formats for Format 7 (Index-arithmetic)


Syntax for General Format for Format 7 (Index-arithmetic) for the SET statement
Micro Focus 

General Formats for Format 8 (Procedure-pointer-assignment)


Syntax for General Format for Format 8 (Procedure-pointer-assignment) for the SET statement
ISO 2002 Micro Focus 

General Formats for Format 9 (Object-reference-assignment)


Syntax for General Format for Format 9 (Object-reference-assignment) for the SET statement
Micro Focus 

General Formats for Format 10 (Value-of-Event-pointer)


Syntax for General Format for Format 10 (Value-of-Event-pointer) for the SET statement
Micro Focus 

General Formats for Format 11 (Address-of-Event-pointer)


Syntax for General Format for Format 11 (Address-of-Event-pointer) for the SET statement
Micro Focus 

General Formats for Format 12 (Value-of-Monitor-pointer)


Syntax for General Format for Format 12 (Value-of-Monitor-pointer) for the SET statement
Micro Focus 

General Formats for Format 13 (Address-of-Monitor-pointer)


Syntax for General Format for Format 13 (Address-of-Monitor-pointer) for the SET statement
Micro Focus 

General Formats for Format 14 (Value-of-Mutex-pointer)


Syntax for General Format for Format 14 (Value-of-Mutex-pointer) for the SET statement
Micro Focus 

General Formats for Format 15 (Address-of-Mutex-pointer)


Syntax for General Format for Format 15 (Address-of-Mutex-pointer) for the SET statement
Micro Focus 

General Formats for Format 16 (Value-of-Semaphore-pointer)


Syntax for General Format for Format 16 (Value-of-Semaphore-pointer) for the SET statement
Micro Focus 

General Formats for Format 17 (Address-of-Semaphore-pointer)


Syntax for General Format for Format 17 (Address-of-Semaphore-pointer) for the SET statement
.NET JVM 

General Formats for Format 18 (Size-of-array)

Syntax for General Format for Format 18 (Size-of-Array) for the SET statement

.NET JVM 

General Formats for Format 19 (Content-of-array)

Syntax for General Format for Format 19 (Value-of-Array) for the SET statement

.NET JVM 

General Formats for Format 20 (CONDITION-VALUE setting)

Syntax for General Format for Format 20 (CONDITION-VALUE setting) for the SET statement

.NET JVM 

General Formats for Format 21 (data-setting)

Syntax for General Format for Format 21 (data-setting) for the SET statement

Micro Focus Enterprise COBOL for z/OS .NET JVM 

General Formats for Format 22 (dynamic length)

SET Statement FORMAT 22 Dynamic Length

Directives

  1. In addition to Compiler directives which provide flagging and modify the reserved word list, the following directives may impact either the syntax or the semantics described in this section.
    • STICKY-LINKAGE - determines whether addresses of data items placed in pointer data items by the SET statement are retained between invocations of a subprogram.

Syntax Rules for All Formats

  1. The figurative constant NULL or NULLS or the data item referenced by pointer-name-2 or procedure-pointer-name-2 represents the sending area. ADDRESS OF identifier-2, ENTRY identifier-8, ENTRY literal-1 or the value held in the sending area, represents the sending value.

    The data item referenced by pointer-name-1, pointer-name-3 or procedure-pointer-name-1 or the COBOL system area implied by ADDRESS OF identifier-1 represents the receiving area.

    Identifier-3, integer-1 or LENGTH OF identifier-4 represents the increment value.

Syntax Rules for Format 1

  1. ANSI 85 Mnemonic-name-1 must be associated with an external switch, the status of which can be altered.

    Micro Focus See the topic The Special-Names Paragraph for details of which external switches can be referenced in the SET statement.

Syntax Rules for Format 2

  1. ANSI 85 Condition-name-1 and condition-name-2 must be associated with a conditional variable.
  2. Micro Focus Enterprise COBOL for z/OS ISO 2002 If the FALSE phrase is specified, the FALSE phrase must be specified in the VALUE clause of the Data Description entry for condition-name-1 or condition-name-2.
  3. Micro Focus Each FALSE or TRUE phrase applies to the occurrences of condition-name-1 or condition-name-2 that precede that phrase and follow a previous FALSE or TRUE phrase, if any.

Syntax Rules for Format 3

  1. VS COBOL II Micro Focus Identifier-1 must reference a level 01 or level 77 data item that is declared in the Linkage Section.

    COBOL for OS/390 Identifier-1 must be declared in the Linkage Section, the Local-Storage Section or the Working-Storage Section

  2. Micro Focus Enterprise COBOL for z/OS .NET JVM Identifier-1 must not be a dynamic-length group item or a dynamic-length elementary item.
  3. ISO 2002 VS COBOL II Micro Focus COBOL for OS/390 Identifier-2 must reference a data item with a level of 77 or between 01 and 49 inclusive.

    VS COBOL II ISO 2002 Identifier-2 must be declared in the Linkage Section.

  4. VS COBOL II Micro Focus Enterprise COBOL for z/OS Pointer-name-1, pointer-name-2 must each be an identifier that references an elementary data item with USAGE IS POINTER.

    Enterprise COBOL for z/OS  or USAGE IS POINTER-32

Syntax Rules for Format 5

  1. Micro Focus Pointer-name-3 must be an identifier that references an elementary data item with USAGE IS POINTER or USAGE IS POINTER-32.
  2. Micro Focus Identifier-3 must be an elementary numeric integer.
  3. Micro Focus Integer-1 may be signed.

Syntax Rules for Format 6

  1. Identifier-5 and identifier-6 must each reference an index data item or an elementary item described as an integer. If both are specified, they must not both reference an elementary item.

Syntax Rules for Formats 6 and 7

  1. Integer-2 and integer-3 may be signed. Integer-2 must be positive.

Syntax Rules for Format 7

  1. Identifier-7 must reference an elementary numeric integer.

Syntax Rules for Format 8

  1. Micro Focus  Procedure-pointer-name-1 and procedure-pointer-name-2 must each be an identifier that references an elementary data item with USAGE IS PROCEDURE-POINTER.
  2. Micro Focus Identifier-8 must be defined as an alphanumeric data item such that its value can be a COBOL or a non-COBOL program name.
  3. Micro Focus Literal-1 must be a nonnumeric literal.

Syntax Rules for Format 9

  1. ISO 2002 Micro Focus Identifier-9 must be any item of class object that is permitted as a receiving item.
  2. ISO 2002 Micro Focus Identifier-10 must be a class-name or an object reference; the predefined object reference SUPER must not be specified.
  3. ISO 2002 Micro Focus If the data item referenced by identifier-9 is a universal object reference, the only predefined object references that may be specified for identifier-10 are SELF and NULL.
  4. ISO 2002 Micro Focus If the data item referenced by identifier-9 is described with an interface-name that identifies the interface int-1, the data item referenced by identifier-10 must be one of the following:
    1. An object reference described with an interface-name that identifies int-1 or an interface inheriting from int-1.
    2. An object reference described with a class-name, subject to the following rules:
      1. If described with a FACTORY phrase, the factory object of the specified class must implement int-1
      2. If described without a FACTORY phrase, the instance objects of the specified class must implement int-1.
    3. An object reference described with an ACTIVE-CLASS phrase, subject to the following rules:
      1. If described with a FACTORY phrase, the factory object of the class containing the data item referenced by identifier-10 must implement int-1.
      2. If described without a FACTORY phrase, the instance objects of the class containing the data item referenced by identifier-10 must implement int-1.
    4. A class-name whose factory object implements int-1.
    5. The predefined object reference SELF, subject to the following rules:
      1. If the SET statement is contained in a method within the factory definition of the class, that factory definition must be described with an IMPLEMENTS clause that references int-1.
      2. If the SET statement is contained in a method within the instance definition of the class, that instance definition must be described with an IMPLEMENTS clause that references int-1.
    6. The predefined object reference NULL
  5. ISO 2002 Micro Focus If the data item referenced by identifier-9 is described with a class-name, the data item referenced by identifier-10 must be one of the following:
    1. An object reference described with a class-name, subject to the following rules:
      1. If the data item referenced by identifier-9 is described with an ONLY phrase, the data item referenced by identifier-10 must be described with the ONLY phrase, and the class-name specified in the description of the data item referenced by identifier-10 must be the same as the class-name specified in the description of the data item referenced by identifier-9
      2. If the data item referenced by identifier-9 is described without an ONLY phrase, the class-name specified in the description of the data item referenced by identifier-10 must reference the same class or a subclass of the class specified in the description of the data item referenced by identifier-9
      3. The presence or absence of the FACTORY phrase must be the same as in the description of the data item referenced by identifier-9
    2. An object reference described with an ACTIVE-CLASS phrase, subject to the following rules:
      1. The data item referenced by identifier-9 must not be described with the ONLY phrase
      2. The class containing the data item referenced by identifier-10 must be the same class or a subclass of the class specified in the description of the data item referenced by identifier-9
      3. The presence or absence of the FACTORY phrase must be the same as in the description of the data item referenced by identifier-9
    3. The predefined object reference SELF, subject to the following rules:
      1. The data item referenced by identifier-9 must not be described with the ONLY phrase
      2. The class of the object containing the SET statement must be the same class or a subclass of the class specified in the description of the data item referenced by identifier-9
      3. If the data item referenced by identifier-9 is described without a FACTORY phrase, the object containing the SET statement must be an instance object
      4. If the data item referenced by identifier-9 is described with a FACTORY phrase, the object containing the SET statement must be a factory object
    4. A class-name, provided the data item referenced by identifier-9 is described with the FACTORY phrase, and class-name references the same class or a subclass of the class specified in the description of the data item referenced by identifier-9
    5. The predefined object reference NULL
  6. ISO 2002 Micro Focus If the data item referenced by identifier-9 is described with an ACTIVE-CLASS phrase, the data item referenced by identifier-10 must be one of the following:
    1. An object reference described with the ACTIVE-CLASS phrase, where the presence or absence of the FACTORY phrase is the same as in the data item referenced by identifier-9
    2. The predefined object reference SELF, subject to the following rules:
      1. If the data item referenced by identifier-9 is described without a FACTORY phrase, the object containing the SET statement must be an instance object
      2. If the data item referenced by identifier-9 is described with a FACTORY phrase, the object containing the SET statement must be a factory object
    3. The predefined object reference NULL
  7. ISO 2002 Micro Focus If identifier-9 is of type String, then identifier-10 may be of any type.

Syntax Rules for Format 10 (Value of Event-pointer)

  1. Micro Focus  Event-pointer-1 must be defined as a data item with USAGE EVENT-POINTER.

Syntax Rules for Format 11 (Address of Event-pointer)

  1. Micro Focus Event-pointer-1 and event-pointer-2 must be defined as data items with USAGE EVENT-POINTER.

Syntax Rules for Format 12 (Value of Monitor-pointer)

  1. Micro Focus  Monitor-pointer-1 must be defined as a data item with USAGE MONITOR-POINTER.
  2. Micro Focus If the NOT phrase is specified, then the CONVERTING phrase must not be specified.

Syntax Rules for Format 13 (Address of Monitor-pointer)

  1. Micro Focus Monitor-pointer-1 and monitor-pointer-2 must be defined as data items with USAGE MONITOR-POINTER.

Syntax Rules for Format 14 (Value of Mutex-pointer)

  1. Micro Focus  Mutex-pointer-1 must be defined as a data item with USAGE MUTEX-POINTER.

Syntax Rules for Format 15 (Address of Mutex-pointer)

  1. Micro Focus Mutex-pointer-1 and mutex-pointer-2 must be defined as data items with USAGE MUTEX-POINTER.

Syntax Rules for Format 16 (Value of Semaphore-pointer)

  1. Micro Focus  Semaphore-pointer-1 must be defined as a data item with USAGE SEMAPHORE-POINTER.
  2. Micro Focus Identifier-11 must reference an integer.

Syntax Rules for Format 17 (Address of Semaphore-pointer)

  1. Micro Focus Semaphore-pointer-1 and semaphore-pointer-2 must be defined as data items with USAGE SEMAPHORE-POINTER.

Syntax Rules for Format 18 (Size-of-Array)

  1. .NET JVM Identifier-12 must be described with a format 3 OCCURS clause.
  2. .NET JVM Identifier-13 must describe an integer.
  3. .NET JVM The number of operands after the TO phrase must not exceed the number of dimensions specified for identifier-12.

Syntax Rules for Format 19 (Content-of-Array)

  1. .NET JVM Identifier-14 must be described with a format 3 OCCURS clause as either a one-dimensional array or a rectangular array.
  2. .NET JVM Literal-2 must be a valid literal for a VALUE clause describing the subject of the entry.
  3. .NET JVM Parentheses may be used within the repetitions of literal-2 or identifier-15 to separate the values into subarrays.

Syntax Rules for Format 20 (CONDITION-VALUE setting)

  1. .NET JVM Identifier-16 and identifier-17 must have usage CONDITION-VALUE.
  2. .NET JVM Condition-name-3 must be associated with a conditional variable.

Syntax Rules for Format 21 (.NET-data-setting)

  1. .NET JVM Identifier-18 and Identifier-19 are the receiving items.
  2. .NET JVM Identifier-20, literal-3 or arithmetic-expression-1 is the sending item.
  3. .NET JVM The SET statement is legal if any of the following are true:
    • Both the sending item and the receiving item are numeric
    • Identifier-18, identifier-19 and identifier-20 are objects of the same class.
    • The class of identifier-20 inherits directly or indirectly from the class of identifier-18 and identifier-19.
    • Identifier-18 and identifier-19 conform are of an interface type and identifier-20 implements that interface.
    • There is an implicit conversion operator for an item with the class of identifier-20 to the class of identifier-18 and identifier-19.
    • Identifier-18 and identifier-19 are alphanumeric or national.
Micro Focus Enterprise COBOL for z/OS 

Syntax Rules for Format 22 (Dynamic Length)

  1. identifier-21 must be a dynamic-length elementary item.
  2. identifier-22 must be an elementary numeric integer item.
  3. integer-6 must be an integer greater than or equal to zero.

General Rules for Format 1

  1. ANSI 85 The status of each external switch associated with the specified mnemonic-name-1 is modified such that the truth value resulting from evaluation of a condition-name associated with that switch reflects an on status if the ON phrase is specified, or an off status if the OFF phrase is specified. (See the topic in the chapter .) Switch-Status ConditionProcedure Division

General Rules for Format 2

  1. ANSI 85 The literal in the VALUE clause associated with condition-name-1 or condition-name-2 is placed in the conditional variable according to the rules of the VALUE clause (see the section .) If more than one literal is specified in the VALUE clause, the conditional variable is set to the value of the first literal that appears in the VALUE clause. The VALUE Clause
  2. ANSI 85 If multiple condition-names are specified, the results are the same as if a separate SET statement had been written for each condition-name-1 or condition-name-2 in the same order as specified in the SET statement.
  3. Micro Focus Enterprise COBOL for z/OS ISO 2002 If the FALSE phrase is specified, the literal in the FALSE phrase of the VALUE clause associated with condition-name-1 or condition-name-2 is placed in the conditional variable according to the rules for the VALUE clause. (See the topic .) The VALUE Clause

General Rules for Format 3

  1. VS COBOL II Micro Focus The sending value represents the address of a data item. If pointer-name-2 is specified, the sending value is the value contained with the data item referenced by pointer-name-2. If ADDRESS OF identifier-2 is specified, the sending value represents the address of identifier-2.
  2. VS COBOL II Micro Focus If pointer-name-1 is specified, the sending value is moved to the data name referenced by pointer-name-1.
  3. VS COBOL II Micro Focus If ADDRESS OF identifier-1 is specified, the sending value is moved to a COBOL system area and the runtime element subsequently operates such that the area of storage referenced by identifier-1 is located at the address represented by the sending value.

    Micro Focus Whether or not the link is retained between invocations of a subprogram is dependent on the STICKY-LINKAGE Compiler directive.

  4. Micro Focus Enterprise COBOL for z/OS  If the AMODE"64" directive is specified and if:
    • pointer-name-1 is a USAGE IS POINTER data item or;
    • ADDRESS OF identifier-1 is specified

    and pointer-name-2 is a USAGE IS POINTER-32 data item, then the sending value is zero-extended to 64-bits.

  5. Micro Focus Enterprise COBOL for z/OS  If the AMODE"64" directive is specified and if pointer-name-1 is a USAGE IS POINTER-32 data item and:
    • pointer-name-2 is a USAGE IS POINTER data item or;
    • ADDRESS OF identifier-2 is specified

    then the sending value is truncated to 32-bits.

General Rules for Format 5

  1. Micro Focus Before execution of the SET statement, the value of the data item referenced by pointer-name-3 must represent the address of a data item within a logical record, the original address. After execution of the SET statement, the value of the data item referenced by pointer-name-3 represents the new address. If the original address and the new address do not both lie within the same logical record, (or, for environments in which address space is segmented, within the same segment) then the results of using the value of the data item referenced by pointer-name-3 are undefined.
  2. Micro Focus If the UP clause is specified, the new address is formed by adding the number of bytes given by the increment value to the original address.
  3. Micro Focus If the DOWN clause is specified, the new address is formed by subtracting the number of bytes given by the increment value from the original address.

General Rules for Format 5

  1. The following steps are repeated for each recurrence of index-name-1 or identifier-5. Each time, the value of index-name-2 or identifier-6 is used as it was at the beginning of the execution of the statement. Any subscripting or indexing associated with identifier-5 is evaluated immediately before the value of that data item is changed.
    1. If index-name-1 is specified, index-name-1 is set to a value causing it to refer to the table element that corresponds in occurrence number to the table element referenced by index-name-2, identifier-6, or integer-2. If identifier-6 references an index data item, or if index-name-2 is related to the same table as index-name-1, no conversion takes place.
    2. If identifier-5 references an index data item, it can be set equal to either the contents of index-name-2 or identifier-6 where identifier-6 also references an index item; no conversion takes place in either case.
    3. If identifier-5 does not reference an index data item, it can be set only to an occurrence number that corresponds to the value of index-name-2. Neither identifier-6 nor integer-2 can be used in this case.
  2. The following table represents the validity of various operand combinations in the SET statement. The general rule reference indicates the applicable general rule.
    Table 1. SET Index Statement Valid Operand Combinations
    Sending Item Receiving Item
    Integer Data Item Index-Name Index Data Item
    Integer Literal No/11c Valid/11a No/11b
    Integer Data Item No/11c Valid/11a No/11b
    Index-Name Valid/11c Valid/11a Valid/11b1
    Index Data Item No/11c Valid/11a1 Valid/11b1

    1 = No conversion takes place.

General Rules for Formats 6 and 7

  1. Index-names are associated with a given table by being specified in the INDEXED BY phrase of the OCCURS clause for that table.
  2. If index-name-1 is specified, the value of the index after the execution of the SET statement must correspond to an occurrence number of an element in the table associated with index-name-1. The value of the index associated with an index-name after the execution of a PERFORM or SEARCH statement may be set to an occurrence number that is outside the range of its associated table. (See the topic The PERFORM Statement and the topic The SEARCH Statement.)

    If index-name-2 is specified, the value of the index before the execution of the SET statement must correspond to an occurrence number of an element in the table associated with index-name-1.

    If index-name-3 is specified, the value of the index both before and after the execution of the SET statement must correspond to an occurrence number of an element in the table associated with index-name-3.

General Rules for Format 7

  1. The contents of index-name-3 are incremented (UP BY) or decremented (DOWN BY) by a value that corresponds to the number of occurrences represented by the value of integer-3 or the data item referenced by identifier-7; thereafter, the process is repeated for each recurrence of index-name-3. For each repetition, the value of the data item referenced by identifier-7 is used as it was at the beginning of the execution of the statement.

General Rules for Format 8

  1. Micro Focus The sending value represents the address of the start of a procedure within a COBOL or non-COBOL program.
  2. Micro Focus The sending value is moved to the data item referenced by procedure-pointer-name-1.
  3. Micro Focus If procedure-pointer-name-2 is specified, the sending value is the value contained within the data item referenced by procedure-pointer-name-2.
  4. Micro Focus Literal-1 or the content of the data item referenced by identifier-8 is the name of the referenced procedure. If the referenced procedure is a COBOL procedure, the name of the referenced procedure must contain the program-name contained in the Program-ID paragraph of the referenced program or the entry-name contained in the ENTRY statement of the referenced procedure.

    Micro Focus If the program being called is not a COBOL program, the rules for the formation of the program or procedure name are given in your COBOL system documentation on interfacing.

    Micro Focus If the referenced procedure has been previously made available and remains available at the time of execution of the SET statement, then the sending value represents the address of the referenced procedure.

    Micro Focus If the referenced procedure is not available at the time of execution of the SET statement, then the sending value represents the address of a COBOL system error procedure.

General Rules for Format 9

  1. ISO 2002 Micro Focus If identifier-10 is an object reference, a reference to the object identified by identifier-10 is placed into each data item referenced by identifier-9 in the order specified.
  2. ISO 2002 Micro Focus If identifier-10 is a class-name, a reference to the factory object of the class identified by identifier-10 is placed into each data item referenced by identifier-9 in the order specified.
  3. ISO 2002 Micro Focus If identifier-9 is of type String, and identifier-10 is of any type, and no implicit conversion exists between the type of identifier-10 and String, then the ToString method is applied to identifier-10 to convert it to a string, and the result is placed in identifier-9.

General Rules for Formats 10 and 11

  1. Micro Focus If more than one event-pointer-1 is specified, the results are the same as if a separate SET statement had been written for each event-pointer-1 in the same order as specified in the SET statement.

General Rules for Format 10 (Value of Event-pointer)

  1. Micro Focus The execution of the SET statement sets the value of the event referenced by event-pointer-1 to TRUE or FALSE.
    Note:
    When an event is set to FALSE, the execution of any thread which executes a WAIT statement which references that event suspends until the event is set to TRUE in another thread.

General Rules for Format 11 (Address of Event-pointer)

  1. Micro Focus Event-pointer-1 is set to reference the same event data item that event-pointer-2 references.

General Rules for Formats 12 and 13

  1. Micro Focus If more than one monitor-pointer-1 is specified, the results are the same as if a separate SET statement had been written for each monitor-pointer-1 in the same order as specified in the SET statement.

General Rules for Format 12 (Value of Monitor-pointer)

  1. Micro Focus If the NOT phrase is not specified, the value of the monitor referenced by monitor-pointer-1 is set to one of BROWSING, READING, or WRITING, thus establishing the corresponding form of lock. This specific lock type for this specific monitor must be eventually released by a SET statement either with a matching NOT phrase or a matching CONVERTING FROM phrase.

    For example, the lock established by

    can be cleared by

     SET mon-1 TO READING 
     SET mon-1 TO NOT READING
  2. Micro Focus The CONVERTING phrase is used to change the current type of lock established on a monitor. The lock type specified in the FROM phrase must be currently established by that thread and upon successful execution of the statement, that lock will have been changed, in one atomic operation, to the lock type specified in the TO phrase.
  3. Micro Focus Nested locks can be obtained by the execution of successive SET monitor statements with no intervening SET statement that releases the lock. Once a READING lock is established, no BROWSING or WRITING lock is allowed to nest within that thread. Once a BROWSING lock or a WRITING lock is established, any other level of lock is allowed to nest within that thread.

General Rules for Format 13 (Address of Monitor-pointer)

  1. Micro Focus Monitor-pointer-1 is set to reference the same monitor data item that monitor-pointer-2 references.

General Rules for Formats 14 and 15

  1. Micro Focus If more than one mutex-pointer-1 is specified, the results are the same as if a separate SET statement had been written for each mutex-pointer-1 in the same order as specified in the SET statement.

General Rules for Format 14 (Value of Mutex-pointer)

  1. Micro Focus The execution of the SET statement sets the value of the mutex referenced by mutex-pointer-1 to ON or OFF.
  2. Micro Focus When a mutex is set to ON, the execution of any thread that attempts to set that mutex to ON suspends until the mutex is set to OFF in the thread that set it ON.

General Rules for Format 15 (Address of Mutex-pointer)

  1. Micro Focus Mutex-pointer-1 is set to reference the same mutex data item that mutex-pointer-2 references.

General Rules for Formats 16 and 17

  1. Micro Focus If more than one semaphore-pointer-1 is specified, the results are the same as if a separate SET statement had been written for each semaphore-pointer-1 in the same order as specified in the SET statement.

General Rules for Format 16 (Value of Semaphore-pointer)

  1. Micro Focus The contents of the semaphore data item referenced by semaphore-pointer-1 are incremented (UP BY) or decremented (DOWN BY) by a value that corresponds to the value of integer-4 or the data item referenced by identifier-11; thereafter, the process is repeated for each recurrence of semaphore-pointer-1. For each repetition, the value of the data item referenced by identifier-11 is used as it was at the beginning of the execution of the statement.
  2. Micro Focus If a semaphore is set DOWN BY n and the semaphore is less than n, the thread is suspended until another thread raises the semaphore to above n.

General Rules for Format 17 (Address of Semaphore-pointer)

  1. Micro Focus Semaphore-pointer-1 is set to reference the same semaphore data item that semaphore-pointer-2 references.

General Rules for Format 18 (Size-of-Array)

  1. .NET JVM The SET statement sets the size of the .NET array described by identifier-12 to the contents of the data item referenced by identifier-13 or the value of integer-5.

General Rules for Format 19 (Content-of-Array)

  1. .NET JVM The SET statement creates an a .NET array of the size required to contain the values specified by the repetitions of literal-2 and initializes the array to the specified values.

General Rules for Format 20 (CONDITION-VALUE setting)

  1. .NET JVM The data-item referenced by identifier-16 is set to the value of the data item referenced by identifier-17 or to condition-name-3, a conditional expression or to TRUE or FALSE.

General Rules for Format 21 (.NET-data-setting)

  1. .NET JVM If identifier-18 and identifier-19 are alphanumeric or national, the ToString method is automatically invoked on the sending item and the resulting string moved to the data item referenced by identifier-18 and identifier-19. Note that the ToString method exists for any class since it is implemented in System.Object.
  2. .NET JVM The sending item is moved to the receiving item.
Micro Focus Enterprise COBOL for z/OS 

General Rules for Format 22 (Dynamic Length)

  1. The length of identifier-21 is set to zero if identifier-22 is less than zero.
  2. If the current length of identifier-21 is greater than the value of identifier-22 or integer-6, then the length of identifier-21 is set to the specified value and the item truncated on the right.
  3. If the current length of identifier-21 is shorter than identifier-22 or integer-6, then the length of identifier-21 is set to the specified value, no padding occurs, and the newly available character positions on the right are not initialized.