This function is used to enter a co-owner protection rule in a rule container (guard). If this is the first rule to be entered then a new rule container is created. The SCOPE is set to *USER-ID in the administrative part of the guard.
If the rule container already exists, the SCOPE remains unchanged and the rule is inserted at the specified position in the rule container.
Users can only create rule containers for their own user ID. Guard administrators may create rule containers under different user IDs.
Macro | Operands |
ADDCOO | MF = C / D / L / M / E ,PREFIX = C / <name 1> ,MACID =OOA / <name 3> ,PARAM =<name 1..8> ,DIALOG =*STD / *NO / *COGUARD / *USERID / *CATALOG /<var: enum-of _dialog_s:1> ,ERRMSG =*NO / *YES / <var: bit:1> ,COGUARD =’ ’ / <c-string 1..40: filename 1..24 without-gen-vers with-wild(40)> / <var: char:40> ,RULENAM = ’ ’ / <c-string 1..12: alphanumeric name 1..12> / <var: char:12> ,RULEPOS = structure(2): (1) target: *LAST / *BEFORE / <var: enum-of _target_s:1> ,OBJECT = structure(2): (1) objnam: ’ ’ / <c-string 1..80: filename 1..41 without-cat-gen-user-vers with-wild(80)> / (2) objtype: *FILE / <var: enum-of _object_type_s:1> ,CONDGUA = *NONE / <c-string 1..18: filename 1..18 without-cat-gen-vers> / <var: char:18> ,TSOSACC = *SYSSTD / *RESTRICTED / <var: enum-of _tsos_access_s:1> ,GUACHK = *YES / *NO / <var: enum-of _guard_check_s:1> |
For a description of the parameters MF, PREFIX, MACID, PARAM see the “Executive Macros” manual [ 16 ].
DIALOG
Dialog control
The user can use the interface in a guided dialog and can define the type of dialog that is to be performed. Dialog control has no effect in batch mode and thus corresponds to the setting DIALOG-CONTROL=*NO.
=*STD
For each selected rule container, the user can decide in interactive mode whether or not the function should be executed. However, dialog control is only performed if the name of the rule container is specified using wildcards.
It is possible to abort the function.
=*NO
The function is executed for every selected rule container without any query being issued.
=*COGUARD
For each selected rule container, the user can decide in interactive mode whether or not the function should be executed. Dialog control is performed independently of whether or not the name of the rule container is specified using wildcards.
It is possible to abort the function.
=*USERID
This guided dialog can only be used by guard administrators.
For each selected user ID, a guard administrator can decide in interactive mode whether or not the function should be executed. However, dialog control is only performed if the user ID in the name of the rule container is specified using wildcards.
It is possible to abort the function.
=*CATALOG
This guided dialog can only be used by system administrators.
For each selected catalog ID, the user can decide in interactive mode whether or not the function should be executed. However, dialog control is only performed if the catalog ID in the name of the rule container is specified using wildcards.
It is possible to abort the function.
ERRMSG
Message output
The user can specify whether any errors which occur should be reported in a message. This may be required if, for example, a positioning rule is not available and processing is impossible as a consequence.
=*NO
No messages are output.
=*YES
Messages are output.
COGUARD
Name of the rule container
This operand designates the name of a rule container in which a first or subsequent rule is to be entered. If the container does not already exist it is newly created.
Although the container name is user-definable, only rule containers with fixed, predefined names are consulted for co-owner access control.
If wildcards are used in the name of a rule container, the rule is entered in multiple containers, provided that these are accessible.
Only guard administrators are able to specify wildcards in the user ID.
A value must be specified for this operand. Only uppercase characters may be used!
RULENAM
Name of the rule
This operand designates the name of the rule which is to be processed. Duplicated names are not permitted in a container.
A value must be specified for this operand. Only uppercase characters may be used!
RULEPOS
Position
This operand designates the position within a rule container at which the rule which is to be processed should be inserted. The sequence of rules is decisive for the coownership check.
target
Designates the target position in the rule container.
*LAST
The rule is to be appended at the final position in the rule container.
*BEFORE
The rule is to be entered in front of the rule named with RULENAM.
posnam
Name of the rule for the position specification
This operand designates the name of an existing rule in the rule container in front of which the rule which is to be processed should be positioned, if the target specification of the RULEPOS operand has the value *BEFORE. The command is rejected if no rule with this name exists.
A value must be specified for this operand if the “target” partial specification in RULEPOS has the value *BEFORE. Only uppercase characters may be used!
OBJECT
Object
This operand designates the name of the object to which the rule which is to be processed is to apply.
objnam
Object name
Specifications concerning the name of the object.
The name specification may contain wildcards or may be partially qualified. It must not contain a catalog or user ID.
Alias names and declared prefixes are not permitted; the specified object name is used unchanged.
Only uppercase characters may be used!
objtype
Type of object name in accordance with the SDF syntax description (see the “Commands” manual [ 4 ]).
Specifications concerning the object’s SDF name type. Currently only the SDF name type <filename> (*FILE) is supported. This is available for both files and job variables
*FILE
The object name has the SDF data type <filename>.
CONDGUA
Access conditions
This operand designates the name of a guard of type STDAC which contains the access conditions. The name must not contain a catalog ID. If the named guard is inaccessible at the time the function is called - because it has not yet been created or because the SCOPE prohibits the use of the guard - then the function aborts with an error message.
Only uppercase characters may be used!
=*NONE
No access conditions are defined. Co-owner protection is deactivated for the object and co-owner access is rejected.
TSOSACC
Specifies the co-ownership of the user ID TSOS.
= *SYSSTD
The user ID TSOS receives unrestricted co-ownership of the object.
= *RESTRICTED
The user ID TSOS receives restricted co-ownership of the object.
GUACHK
Guard check
When the function is executed, the availability of the guards named in the rule can be checked if required.
=*YES
The guard check is activated. The availability of the named guard is checked. If the guard does not exist or if the owner of the rule container specified in COGUARD is not authorized to use the guard, then the function aborts with a corresponding return code.
It should be noted that this check is simply a ‘snapshot’ which can be invalidated if other tasks modify the guard immediately after the function has been executed.
=*NO
The guard check is deactivated.
The command is executed independently of whether one of the named guards is available and whether the owner of the rule container specified in the COGUARD operand is authorized to use the guards.
Macro return codes
SC2 | SC1 | Maincode | Meaning |
X’00’ | X’00’ | X’0000’ | class A: CMD0001 |
X’02’ | X’00’ | X’3000’ | class A: COO3000 |
X’02’ | X’00’ | X’3003’ | class A: COO3003 |
X’01’ | X’3100’ | class B: COO3100 | |
X’00’ | Invalid parameter address | ||
X’00’ | X’20’ | X’3200’ | class C: COO3200 |
X’00’ | X’40’ | X’3300’ | class D: COO3300 |
X’00’ | X’40’ | X’3302’ | class D: COO3302 |
X’00’ | X’40’ | X’3303’ | class D: COO3303 |
X’00’ | X’40’ | X’3304’ | class D: COO3304 |
X’00’ | X’40’ | X’3305’ | class D: COO3305 |
X’00’ | X’40’ | X’3306’ | class D: COO3306 |
X’00’ | X’40’ | X’3307’ | class D: COO3307 |
X’00’ | X’40’ | X’3308’ | class D: COO3308 |
X’00’ | X’40’ | X’3309’ | class D: COO3309 |
X’00’ | X’40’ | X’3311’ | class D: COO3311 |
X’00’ | X’40’ | X’3313’ | class D: COO3313 |
X’00’ | X’40’ | X’3314’ | class D: COO3314 |
X’00’ | X’40’ | X’3315’ | class D: COO3315 |
X’00’ | X’80’ | X’3900’ | class E: COO3900 |
X’00’ | X’80’ | X’3901’ | class E: COO3901 |
X’00’ | X’80’ | X’3902’ | class E: COO3902 |
The precise cause of the error can be determined by calling the /HELP-MSG command with the error number specified in the table, e.g. /HELP-MSG COO3902.