ALLSPFIL accepts all spool files. This routine validates that the data specified in the command is valid decimal data. When used with SPOOLOPT=SELECT, the operand selects files from the spool queue and is interpreted as the highest numbered spool file selected.
ALLSYS accepts the keyword ALL on a CSE command and the pseudo operand ALL on a rule. The pseudo operand ALL in a rule matches each system name, not just the keyword ALL on a command line. On a rule with the ALL pseudoname, each system name in the CSESYS table is matched to the system name on the command. If any one matches, this rule matches the command.
If a rule has a specific system name and the command has the keyword ALL in it, conditional processing is done to match this rule to the command. If the rule specifies ALLOW, the rule only matches the keyword ALL when it matches every name in the CSE name list. This means that if you allow commands for one system, you do not necessarily allow the command for all systems.
If, however, the rule is a PREVENT rule, the rule matches the keyword ALL if it matches any name in the CSE name list. In other words, if a rule prevents any single system and allows the rest, the routine prevents the ALL keyword on the command.
ALLSYS works like an ANY transposition routine on non-XA systems. Test these transposition routines on XA systems.
ALLURDEV accepts spool queues and converts the words PRINTER, PUNCH, READER, and CONSOLE to PRT, PUN, RDR, and CON, respectively. When you use this routine with SPOOLOPT=SELECT, it selects files from the spool queue. The routine also checks to ensure that the specified device is a real unit record device.
ANY accepts any operand as long as it is not greater than the maximum allowed length of the operand. The value of the operand is accepted as entered in the command syntax. For example, the password operand of the AUTOLOG command uses the ANY routine.
CLASS validates that the operand is a valid class character. Possible classes are A-Z, 0-9, or * that means all classes. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue. For example, the CLASS operand of the CHANGE command uses the CLASS routine.
COPY accepts any decimal operand as long as it is not greater than the maximum allowed length of the operand. The value of the operand is accepted as entered in the command syntax. When used with SPOOLOPT=SELECT, it selects files from the spool queue.
Below is an example using no masking. The number portion must be a valid decimal digit.
|
Rule Operand |
Interpreted As |
|---|---|
|
0 |
0000000000 |
|
1 |
0000000001 |
|
0000 |
0000000000 |
|
9 |
0000000009 |
|
0009 |
0000000009 |
Below is an example of using an asterisk (*) for masking. The transposition routine converts any operand with an asterisk to a low and a high range. It converts character positions with an asterisk in the low range to zeros and converts character positions with an asterisk in the high range to nines.
|
Rule Operand |
Interpreted As |
|---|---|
|
0* |
0000000000-0000000009 |
|
1* |
0000000010-0000000019 |
|
5* |
0000000050-0000000059 |
|
*1* |
0000000010-0000000919 |
|
**1 |
0000000001-0000000991 |
|
6** |
0000000600-0000000699 |
Following is an example of using a dash (-) for masking. The transposition routine converts any operand with a dash to a low and a high range. The value before the dash becomes the low range. The value after the dash becomes the high range. If you omit the high range, then the high range defaults to the largest value that the transposition routine can convert to a fullword.
|
Rule Operand |
Interpreted As |
|---|---|
|
4- |
0000000004-2147483647 |
|
400- |
0000000400-2147483647 |
|
12345- |
0000012345-2147483647 |
|
1-100 |
0000000001-0000000100 |
|
256-512 |
0000000256-0000000512 |
|
40000-80000 |
0000040000-0000080000 |
Below is an example of using a combination of asterisks and dashes for masking.
|
Rule Operand |
Interpreted As |
|---|---|
|
*5- |
0000000005-2147483647 |
|
5*- |
0000000050-2147483647 |
|
5**- |
0000000500-2147483647 |
|
5****- |
0000050000-2147483647 |
|
1**-2** |
0000000100-0000000299 |
|
*6*-**4** |
0000000060-0000099499 |
CPSYSTEM accepts the SYSTEM keyword that means the system SPOOL Q. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue.
For a command request, DECIMAL checks to be sure the data specified in the command is really decimal data. For a rule validation request, DECIMAL checks for masking. If there is no masking in the rule, the routine treats the rule like a command; otherwise, the routine builds an upper and lower range and checks both for decimal data. Masking in this case is treated as numeric, with each asterisk (*) occupying a decimal position.
You can specify TYPE=RANGE to denote a decimal range.
Below is an example using no masking. The number portion must be a valid decimal digit.
|
Rule Operand |
Interpreted As |
|---|---|
|
0 |
0000000000 |
|
1 |
0000000001 |
|
0000 |
0000000000 |
|
9 |
0000000009 |
|
0009 |
0000000009 |
Below is an example of using an asterisk (*) for masking. The transposition routine converts any operand with an asterisk to a low and a high range. It converts character positions with an asterisk in the low range to zeros and converts character positions with an asterisk in the high range to nines.
|
Rule Operand |
Interpreted As |
|---|---|
|
0* |
0000000000-0000000009 |
|
1* |
0000000010-0000000019 |
|
5* |
0000000050-0000000059 |
|
*1* |
0000000010-0000000919 |
|
**1 |
0000000001-0000000991 |
|
6** |
0000000600-0000000699 |
Following is an example of using a dash (-) for masking. The transposition routine converts any operand with a dash to a low and a high range. The value before the dash becomes the low range. The value after the dash becomes the high range. If you omit the high range, then the high range defaults to the largest value the transposition routine can convert to a fullword.
|
Rule Operand |
Interpreted As |
|---|---|
|
4- |
0000000004-2147483647 |
|
400- |
0000000400-2147483647 |
|
12345- |
0000012345-2147483647 |
|
1-100 |
0000000001-0000000100 |
|
256-512 |
0000000256-0000000512 |
|
40000-80000 |
0000040000-0000080000 |
Below is an example of using a combination of asterisks and dashes for masking.
|
Rule Operand |
Interpreted As |
|---|---|
|
*5- |
0000000005-2147483647 |
|
5*- |
0000000050-2147483647 |
|
5**- |
0000000500-2147483647 |
|
5****- |
0000050000-2147483647 |
|
1**-2** |
0000000100-0000000299 |
|
*6*-**4** |
0000000060-0000099499 |
In the sample rule below, user OPR1 can issue the ECHO command 001 to 991 times. The second rule entry lets user OPR2 issue the ECHO command any number of times (NN is the pseudo operand). The third entry lets user OPR3 issue the ECHO command once.
$KEY(ECHO) **1 UID(OPR1) ALLOW NN UID(OPR2) ALLOW 1 UID(OPR3) ALLOW
DEST accepts any operand as long as it is not greater than the maximum allowed length of the operand. The routine accepts the value of the operand as entered in the command syntax. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue. For example, the value for the DEST operand in the CHANGE command uses the DEST routine.
DSNAME validates that:
For example, the dsname option for the NAME operand of the CHANGE command uses the DSNAME routine.
FORM accepts any operand as long as it is not greater than the maximum allowed length of the operand. The routine accepts the value of the operand as entered in the command syntax. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue. For example, the value for the FORM operand in the CHANGE command uses the FORM routine.
HEX is the same as DECIMAL except that it checks for valid hexadecimal arithmetic values. The input is right-justified and hex zero filled and then converted to a binary number. Refer to the HEXDATA transposition routine below for operands with hexadecimal character strings. You can specify TYPE=RANGE with HEX to denote a hexadecimal range.
For a command request, HEX checks to be sure the data specified in the command is really hexadecimal data. For a rule validation request, HEX checks for masking. If there is no masking in the rule, the routine treats the rule like a command; otherwise, the routine builds an upper and lower range and checks both for hexadecimal data. The routine treats masking in this case as numeric, with each asterisk (*) occupying a decimal position.
Below is an example using no masking. The number portion must be a valid hexadecimal digit.
|
Rule Operand |
Interpreted As |
|---|---|
|
0 |
00000000 |
|
1 |
00000001 |
|
0000 |
00000000 |
|
F |
0000000F |
|
000F |
0000000F |
Below is an example of using an asterisk (*) for masking. The transposition routine converts any operand with an asterisk to a low and a high range. It converts character positions with an asterisk in the low range to zeros and converts character positions with an asterisk in the high range to Fs.
|
Rule Operand |
Interpreted As |
|---|---|
|
0* |
00000000-0000000F |
|
1* |
00000010-0000001F |
|
5* |
00000050-0000005F |
|
*1* |
00000010-00000F1F |
|
**1 |
00000001-00000FF1 |
|
6** |
00000600-000006FF |
Below is an example of using a dash (-) for masking. The transposition routine converts any operand with a dash to a low and a high range. The value before the dash becomes the low range. The value after the dash becomes the high range. If you omit the high range, then the high range defaults to the largest value that the transposition routine can convert to a fullword.
|
Rule Operand |
Interpreted As |
|---|---|
|
4- |
00000004-FFFFFFFF |
|
400- |
00000400-FFFFFFFF |
|
14A000- |
0014A000-FFFFFFFF |
|
1F0-A00 |
000001F0-00000A00 |
|
191-19F |
00000191-0000019F |
|
E00000-FFFFFF |
00E00000-00FFFFFF |
Below is an example of using a combination of asterisks and dashes for masking.
|
Rule Operand |
Interpreted As |
|---|---|
|
*5- |
0000000005-FFFFFFFF |
|
5*- |
0000000050-FFFFFFFF |
|
5**- |
0000000500-FFFFFFFF |
|
5****- |
0000050000-FFFFFFFF |
|
1**-2** |
0000000100-000002FF |
|
*6*-**4** |
0000000060-000FF4FF |
In the rule below, the first rule entry keeps anyone from setting an ADSTOP between address 0 - FFFF. (Each * is a place holder.) The second rule entry keeps anyone from setting an ADSTOP between 1000 and 1FFF. The first and second rule entries effectively prevent a user from setting an ADSTOP below address 2000.
$KEY(ADSTOP) **** UID(*) PREVENT 1000-1FFF UID(*) PREVENT - UID(*) ALLOW
For example, the hexloc operand of the ADSTOP command uses HEX routine.
Processes hexadecimal input as character type data.
Refer to the HEX transposition routine above for operands with hexadecimal arithmetic values.
The input string is validated for hexadecimal characters, then left-justified and right-filled with hex zeros, if required. This string can be masked in a rule. Masked strings are not allowed in commands. The string consists of an even number of characters, each representing half a hexadecimal character. A trailing mask of a dash fills the input string to an even number of characters, if required.
Below are examples of valid and invalid HEXDATA strings.
|
Rule Operand |
Interpreted As |
|---|---|
|
C1C2C3 |
Valid, no masking |
|
C1C*C3 |
Valid, with masking |
|
C1C2- |
Valid, with trailing "-" mask |
|
C1C2C- |
Valid, with trailing "-" mask |
|
C1C2C |
Invalid, odd number of characters |
|
C1G2C3 |
Invalid, "G" is not valid |
During command syntax checking, HHMM converts hours and minutes to seconds. It locates the delimiter (:) between the HH and MM, right justifies both hours and minutes, then changes the value to seconds.
The routine checks for a mask that represents the valid time value during rules validation. If you do not use masking, the routine treats the rule like a command. If you do use masking, HHMM tries to find a delimiter in the mask (:). After finding the delimiter, the routine builds an upper and lower range of seconds for both the hours and minutes. If there is no delimiter, it converts the string to a seconds value.
HOSTSTRG applies to XA operating systems only. It validates whether a STORE command has a host or guest operand specified. The default is a guest machine. If you did not specify a machine, the routine assumes guest.
STORE S20010 0000 HU00 THIS IS A TEST
In the above example, the routine returns HOST to the command interpreter (denoted by H in the HU00 operand).
LDEV validates that the first character of a logical device is always L and the rest of the operand is a readable hexadecimal number. You can specify TYPE=RANGE with LDEV to denote a range of logical devices.
For a command syntax check, the routine checks only the first character to ensure it is an L. If not, then a syntax error occurs. If it is L, the HEX routine translates the hexadecimal number. For rules validation, you can specify the first character of a logical device address as a mask (*). For example, the LINES operand of the QUERY command uses the LDEV routine.
.LDEVXA ensures that operands begin with L. It allows as many positions in the operand as specified in the syntax model, except that it limits the maximum number of numeric positions in a segment to eight digits. You can use masking, however, you cannot mask in ranges. The routine converts all values to binary for comparison purposes.
Below is an example using no masking. You must prefix the operand with L. The number portion must be a valid hex digit.
|
Rule Operand |
Interpreted As |
|---|---|
|
L0 |
0000000 |
|
L1 |
0000001 |
|
L0000 |
0000000 |
|
LA |
000000A |
|
L000A |
000000A |
This is an example of using an asterisk (*) for masking:
|
Rule Operand |
Interpreted As |
|---|---|
|
L*1 |
0000001-00000F1 |
|
L1* |
0000010-000001F |
|
L**1 |
0000001-0000FF1 |
|
L*1* |
0000010-0000F1F |
|
L1** |
0000100-00001FF |
|
L1*** |
0001000-0001FFF |
|
L***5 |
0000005-000FFF5 |
|
L**5* |
0000050-000FF5F |
|
L**55 |
0000055-00FF55 |
|
L*5** |
0000500-00F5FF |
Following is an example of using a dash (-) for masking. If you use a dash, it must be the last byte.
|
Rule Operand |
Interpreted As |
|---|---|
|
L- |
0000000-FFFFFFF |
|
L5- |
0000005-FFFFFFF |
|
L50- |
0000050-FFFFFFF |
Below is an example of using a combination of asterisks and dashes for masking. If you use a dash, it must be the last byte.
|
Rule Operand |
Interpreted As |
|---|---|
|
L*5- |
0000005-FFFFFFF |
|
L5*- |
0000050-FFFFFFF |
|
L5**- |
0000500-FFFFFFF |
|
L5****- |
0050000-FFFFFFF |
The LDEV range technique provides more flexibility. You can use a dash as a range character, not a masking character. There are two parts to a range: the low segment and the high segment.
When using LDEV ranges, remember:
An example of LDEV ranges follows.
|
Rule Operand |
Interpreted As |
|---|---|
|
L0-LA |
0000000-000000A |
|
L0000-L0000A |
0000000-000000A |
|
L10-L1F |
0000010-000001F |
|
L10-L12 |
0000010-0000012 |
|
L12-L10 |
(illogical range) |
|
L100-L1FF |
0000100-00001FF |
|
L100-L1FG |
(illegal character) |
|
L*00-L1FF |
(masking not allowed) |
|
L100-1FF |
(L missing from second segment) |
|
L00-LFF |
0000000-00000FF |
|
L000-LFFF |
0000000-0000FFF |
|
L0000-LFFFF |
0000000-000FFFF |
|
L1000-LFFFF |
0001000-000FFFF |
LOCALSYS converts an asterisk in a CSE-related command to the local system name defined in CSESYS in HCPSYS (the name of the system the user is on). The routine does not interpret an asterisk in the rule as the local system because it considers an asterisk to be a single character mask. The routine translates the asterisk in a command to the local system name before processing it against a command limiting rule. This lets you write a rule for a specific system.
LOCALSYS works like an ANY transposition routine on non-XA systems. Test these transposition routines on XA systems.
LPRT accepts any operand as long as it is not greater than the maximum allowed length of the operand. The value of the operand is accepted as entered in the command syntax. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue.
For example, the value for the LPRT operand in the CHANGE command uses the LPRT routine.
During command syntax checking, MINSIZE validates that the operand conforms to the syntax of MINSIZE=nnnK or MINSIZE=nnnM, where nnn is a valid storage size. This transposition routine is identical to STRSIZE except that you must precede the storage size with MINSIZE=. For more rule masking examples, see STRSIZE in this appendix. All values are normalized to K-bytes before comparison.
|
Rule Operand |
Interpreted As |
|---|---|
|
MINSIZE=512k |
00000512 |
|
MINSIZE=512m |
05242888 (k) |
|
MINSIZE=1**k |
00000100-00000199 |
During command syntax checking, MMSS converts minutes and seconds to seconds. It locates the delimiter (:) between the MM and SS, right justifies both minutes and seconds, then changes the value to seconds.
The routine checks for a mask that represents the valid time value during rules validation. If you do not use masking, the routine treats the rule like a command. If you do use masking, MMSS tries to find a delimiter in the mask (:). After finding the delimiter, the routine builds an upper and lower range of seconds for both the minutes and seconds. If there is no delimiter, the routine converts the string to a seconds value.
|
Rule Operand |
Interpreted As |
|---|---|
|
>00:** |
000 to 5400 sec |
|
01:00 |
360 sec |
|
0- |
000 to 5400 sec |
|
0*10 |
600 se |
If you enter unmasked times in rules, the routine will not find a match.
During command syntax checking, PARMREGS validates that the operand conforms to the syntax of PARMREGS=n-n or PARMREGS=n, where n is a valid decimal value with a maximum a two digits.
|
Rule Operand |
Interpreted As |
|---|---|
|
PARMREGS=0 |
00 |
|
PARMREGS=6 |
06 |
|
PARMREGS=* |
00-09 |
|
PARMREGS=4-8 |
04-08 |
|
PARMREGS=0-15 |
00-15 |
PERCENT validates and checks the syntax to ensure that the last character of the operand is a percent sign. The routine transposes the percent sign to a null and normal processing continues (for example, SET SRM IABIAS 10%).
When writing the rule, do not include the % character in the rule entry.
Below is an example using no masking. The number portion must be a valid decimal digit.
|
Rule Operand |
Interpreted As |
|---|---|
|
0 |
0000000000 |
|
1 |
0000000001 |
|
0000 |
0000000000 |
|
9 |
0000000009 |
|
0009 |
0000000009 |
Below is an example of using an asterisk (*) for masking. The transposition routine converts any operand with an asterisk to a low and a high range. It converts character positions with an asterisk in the low range to zeros and converts character positions with an asterisk in the high range to nines.
|
Rule Operand |
Interpreted As |
|---|---|
|
0* |
0000000000-0000000009 |
|
1* |
0000000010-0000000019 |
|
5* |
0000000050-0000000059 |
|
*1* |
0000000010-0000000919 |
|
**1 |
0000000001-0000000991 |
|
6** |
0000000600-0000000699 |
Following is an example of using a dash (-) for masking. The transposition routine converts any operand with a dash to a low and a high range. The value before the dash becomes the low range. The value after the dash becomes the high range. If you omit the high range, then the high range defaults to the largest value the transposition can convert to a fullword.
|
Rule Operand |
Interpreted As |
|---|---|
|
4- |
0000000004-2147483647 |
|
400- |
0000000400-2147483647 |
|
12345- |
0000012345-2147483647 |
|
1-100 |
0000000001-0000000100 |
|
256-512 |
0000000256-0000000512 |
|
40000-80000 |
0000040000-0000080000 |
Below is an example of using a combination of asterisks and dashes for masking.
|
Rule Operand |
Interpreted As |
|---|---|
|
*5- |
0000000005-2147483647 |
|
5*- |
0000000050-2147483647 |
|
5**- |
0000000500-2147483647 |
|
5****- |
0000050000-2147483647 |
|
1**-2** |
0000000100-0000000299 |
|
*6*-**4** |
0000000060-0000099499 |
PFKEY validates that the PF key number is between 01 and 24. For rule validation, you can mask the PF key number. Examples of this are shown below. If you do not mask the PF key number in the rule, the routine treats it like a command.
|
Rule Operand |
Interpreted As |
|---|---|
|
pf1 |
pf1 |
|
pf* |
pf01-pf09 |
|
pf** |
pf01-pf24 |
|
pf- |
pf01-pf24 |
|
pf-* |
invalid |
|
pf*8 |
pf08-pf24 |
For example, the PF nn operand of the QUERY command uses the PFKEY routine.
For a command request, RCUU validates that the real device address specified in the command is really a valid hexadecimal number. You can specify TYPE=RANGE with RCUU to denote a range of real device addresses.
For a rule validation request, RCUU checks for masking. If there is no masking in the rule, the routine treats it like a command. Otherwise, it builds an upper and lower range and checks both for hexadecimal data. Below is an example using no masking. The number portion must be a valid hexadecimal digit.
|
Rule Operand |
Interpreted As |
|---|---|
|
0 |
00000000 |
|
1 |
00000001 |
|
0000 |
00000000 |
|
F |
0000000F |
|
000F |
0000000F |
Below is an example of using an asterisk (*) for masking. The transposition routine converts any operand with an asterisk to a low and a high range. It converts character positions with an asterisk in the low range to zeros and converts character positions with an asterisk in the high range to Fs.
|
Rule Operand |
Interpreted As |
|---|---|
|
0* |
00000000-0000000F |
|
1* |
00000010-0000001F |
|
5* |
00000050-0000005F |
|
*1* |
00000010-00000F1F |
|
**1 |
00000001-00000FF1 |
|
6** |
00000600-000006FF |
Below is an example of using a dash (-) for masking. The transposition routine converts any operand with a dash to a low and a high range. The value before the dash becomes the low range. The value after the dash becomes the high range. If you omit the high range, then the high range defaults to the largest value that the transposition routine can convert to a fullword.
|
Rule Operand |
Interpreted As |
|---|---|
|
4- |
00000004-FFFFFFFF |
|
400- |
00000400-FFFFFFFF |
|
14A000- |
0014A000-FFFFFFFF |
|
1F0-A00 |
000001F0-00000A00 |
|
191-19F |
00000191-0000019F |
|
E00000-FFFFFF |
00E00000-00FFFFFF |
Below is an example of using a combination of asterisks and dashes for masking.
|
Rule Operand |
Interpreted As |
|---|---|
|
*5- |
0000000005-FFFFFFFF |
|
5*- |
0000000050-FFFFFFFF |
|
5**- |
0000000500-FFFFFFFF |
|
5****- |
0000050000-FFFFFFFF |
|
1**-2** |
0000000100-000002FF |
|
*6*-**4** |
0000000060-000FF4FF |
For example, the rcuu operand of the ATTACH command, when specified a single device address, uses the RCUU routine.
REST validates that the length of all remaining command operands is not greater than the allowed maximum. For example, the variable data operand of the AUTOLOG command uses the REST routine.
RUR is the same as VUR (VIRTUAL) except that the routine scans the real device block for the device class and type to make sure it is a real device. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue. Specify the generic names of RDR, PRT, or PUN in the rule entry. When writing rules for operands that use this transposition routine, use the following:
|
Rule Operand |
Interpreted As |
|---|---|
|
*- |
any VUR device |
|
P** |
any print or punch device |
|
CON |
a console device |
|
PRT|PTR |
a print device |
|
PUN|PCH |
a punch device |
|
RDR |
a reader device |
|
ALL |
any or all devices |
Do not use real device addresses, such as 00C (commonly a reader) in rules, instead use RDR. The SPOOLOPT operand further restricts the use of any or all of these devices. During rules validation, the operand mask indicates PRT, PUN, RDR, or CON represents a generic type of unit record. We show some examples of this in the next example.
|
Rule Operand |
Interpreted As |
|---|---|
|
printer |
prt |
|
reader |
rdr |
|
00e (prt) |
prt |
|
p- |
p- |
In a command syntax check, if the operand is an asterisk (*), the routine translates it to OWNER for rules validation. For rules validation, use the word OWNER to indicate the user can specify the asterisk (*) operand in the command. When you use SELF with SPOOLOPT=SELECT, it selects files from the spool queue. For example, the * operand of the ATTACH command uses the SELF routine.
For a command syntax check, SPOOL validates that the data specified in the command is really decimal data. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue.
For a rule validation request, SPOOL checks for masking. If there is no masking in the rule, the routine treats the rule like a command. Otherwise, the routine builds an upper and lower range and checks both for decimal data. For example, the spoolid operand of the CHANGE command uses the SPOOL routine.
SPOOLTO validates that the data specified in the command is decimal data or the END keyword. If you specify END, the routine converts it to 9999. When used with SPOOLOPT=SELECT, it selects files from the spool queue.
For a command syntax check, STORADDR locates one of the three possible delimiters: colon (:), dash (-), or period (.). Both the colon and dash indicate that the value is a fixed range. The period delimiter means the routine adds the value after the delimiter to the value before the delimiter. This results in a low-storage to high-storage address range for the command.
For a rules validation, the routine locates the delimiter. When the command delimiter is a dash, the routine validates that the dash is not the last character in the rule entry. If it is the last character, the routine treats it as a masking character for multiple characters during rule validation.
If the last character in the rule mask is not a dash, the routine checks the mask for one of the other delimiters. After the routine locates the real command delimiter, it converts the value before the delimiter to the low address and the value after the delimiter to the high address to build an address range. It then matches this range against the rules to validate execution of a command.
|
Rule Operand |
Interpreted As |
|---|---|
|
0512.10 |
512 to FFFF |
|
*512:**** |
512 to FFFF |
|
0*F |
000 to 00F |
|
0- |
000 to 7FFFFFFF |
For example, the hexloc options of the DCP command use the STORADDR routine.
STORDISP is the same as STORADDR, except that the routine justifies the upper and lower address ranges to a 4-byte boundary. However, if you prefix the storage address with a T, the routine justifies the range to a 16-byte boundary.
STORDUMP is the same as STORADDR, except that the routine justifies the upper and lower address ranges to a 32-byte boundary.
STORVDMP is the same as STORADDR, except that the routine justifies the upper and lower address ranges to a 4K-byte boundary.
During command syntax checking, STRSIZE validates that the operand is between 0K and 999M and checks for masking (* and -) and range values. If you use range values, the last position must be either K or M, and the numeric part must be a valid decimal number. You cannot mask range operands. The routine normalizes all values to K-bytes.
For rules validation, the routine converts the storage size to a nnnnnK value. When comparing to a rule mask, the routine uses a lower and upper range value. We show some examples of this conversion below. First is an example with no masking used.
|
Rule Operand |
Interpreted As |
|---|---|
|
512k |
0000512 |
|
512m |
0000512 (Mb) |
|
740K |
0000740 |
Some examples of this conversion with masking using an asterisk (*) are:
|
Rule Operand |
Interpreted As |
|---|---|
|
1*k |
0000010-0000019 |
|
1*M |
0000010-0000019 (Mb) |
|
5*K |
0000050-0000059 |
|
5*M |
0000050-0000059 (Mb) |
|
5** |
0000050-0000059 (low in K, high in Mb) |
|
**1K |
0000001-0000991 |
|
**1M |
0000001-0000991 (Mb) |
|
*1*K |
0000010-0000919 |
|
*1*M |
0000010-0000919 (Mb) |
|
*1** |
0000010-0000919 (low in K, high in Mb) |
|
*5*K |
0000050-0000959 |
|
*5*M |
0000050-0000959 (Mb) |
|
*5** |
0000050-0000959 (low in K, high in Mb) |
|
1**K |
0000100-0000199 |
|
1**M |
0000100-0000199 (Mb) |
|
1***K |
0001000-0001999 |
|
1***M |
(error) |
We show some examples of this conversion with masking using a dash (-) below. The dash must be the last byte.
|
Rule Operand |
Interpreted As |
|---|---|
|
- |
0000000-1022976 |
|
5- |
0000005-0000999 (low in K, high in Mb) |
|
50- |
0000050-0000999 (low in K, high in Mb) |
We show some examples of this conversion with masking using asterisk (*) and dash (-) below. The dash must be the last byte.
|
Rule Operand |
Interpreted As |
|---|---|
|
5*- |
0000050-0000999 (low in K, high in Mb) |
|
5**- |
0000500-0000999 (low in K, high in Mb) |
|
5****- |
0050000-0000999 (low in K, high in Mb) |
Listed below are some examples of storage ranges. This preferred technique specifies ranges of storage more easily. It lets you use a dash (-) as a range character, not a masking character. You cannot mask in a range.
|
Rule Operand |
Interpreted As |
|---|---|
|
512-740K |
0000512-0000740 |
|
512-740M |
0000512-0000740 |
|
5*2-740K |
(error, no asterisk mask permitted) |
|
740-512K |
(error, illogical range) |
|
3-5K |
0000003-0000005 |
|
3-5M |
0000003-0000005 (Mb) |
|
-M |
(error) |
|
-K |
(error) |
SYSNAME scans the CSESYS table in HCPSYS to validate that a system name is a valid CSE system name. A command fails with an CA ACF2 for z/ VM syntax error if the system name or alias specified on a command is not in this list. When you specify a valid system name or alias in the command, this transposition routine converts the alias name into the system name. This lets you write rules for the system name while protecting the alias name.
When you specify a valid system name or alias in a rule, this routine also converts the alias name into the system name for the rule. If you write the rule for the alias name, you also protect the system name. You can use a new pseudoname, LOCAL, to write rules that apply only to the system the user is on. This is similar to using OWNER when dealing with spool-related commands.
SYSNAME works like an ANY transposition routine on non-XA systems. Test these transposition routines on XA systems.
During a command syntax check, USER verifies that the user ID is greater than one and less than (or equal to) eight characters. Except for CMDLIM rule compiles, it also checks to ensure the specified user ID is in the VM directory. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue. For example, the user ID operand of the QUERY command uses the USER routine. The routine checks the VM directory to help determine the command format the user is using so that CA ACF2 for z/ VM uses the correct FORMAT clause in the command model during validation.
For a command request, VCUU validates that the data specified in the command is really hexadecimal data. You can specify TYPE=RANGE with VCUU to denote a range of hexadecimal data.
For a rule validation request, VCUU checks for masking. If there is no masking in the rule, the routine treats the rule like a command. Otherwise, the routine builds an upper and lower range and checks both for hexadecimal data.
Below is an example using no masking. The number portion must be a valid hexadecimal digit.
|
Rule Operand |
Interpreted As |
|---|---|
|
0 |
0000 |
|
1 |
0001 |
|
0000 |
0000 |
|
F |
000F |
|
000F |
000F |
Below is an example of using an asterisk (*) for masking. The transposition routine converts any operand with an asterisk to a low and a high range. It converts character positions with an asterisk in the low range to zeros and converts character positions with an asterisk in the high range to Fs.
|
Rule Operand |
Interpreted As |
|---|---|
|
0* |
0000-000F |
|
1* |
0010-001F |
|
5* |
0050-005F |
|
*1* |
0010-0F1F |
|
**1 |
0001-0FF1 |
|
6** |
0600-06FF |
Below is an example of using a dash (-) for masking. The transposition routine converts any operand with a dash to a low and a high range. The value before the dash becomes the low range. The value after the dash becomes the high range. If you omit the high range, then the high range defaults to the largest value that the transposition routine can convert to a fullword.
|
Rule Operand |
Interpreted As |
|---|---|
|
4- |
0004-FFFF |
|
400- |
0400-FFFF |
|
14A0- |
14A0-FFFF |
|
1F0-A00 |
01F0-0A00 |
|
191-19F |
0191-019F |
Below is an example of using a combination of asterisks and dashes for masking.
|
Rule Operand |
Interpreted As |
|---|---|
|
*5- |
000005-FFFF |
|
5*- |
000050-FFFF |
|
5**- |
000500-FFFF |
|
1**-2** |
000100-02FF |
|
*6*-**4* |
000060-FF4F |
For a rule validation request, VCUU checks for masking. If there is no masking in the rule, the routine treats the rule like a command. Otherwise, the routine builds an upper and lower range and checks both for hexadecimal data. For example, the vaddr operand of the ATTACH command uses the VCUU routine.
During command syntax checking, VUR converts the words (or abbreviation) PRINTER, PUNCH, READER, or CONSOLE to PRT, PUN, RDR, or CON, respectively. It also checks to ensure that the device is really a PRT or PUN. When you use this operand with SPOOLOPT=SELECT, it selects files from the spool queue. For examples and restrictions, see Spool Related Operands (Format 4) in the chapter “Using the Model Setting.”
When writing rules for operands that use this transposition routine, use the following:
|
Rule Operand |
Interpreted As |
|---|---|
|
*- |
any VUR device |
|
P** |
any print or punch device |
|
CON |
a console device |
|
PRT|PTR |
a print device |
|
PUN|PCH |
a punch device |
|
RDR |
a reader device |
|
ALL |
any or all devices |
Do not use real device addresses, such as 00C (commonly a reader) in rules, instead use RDR. The SPOOLOPT operand further restricts the use of any or all of these devices.
During rules validation, the operand mask indicates PRT, PUN, RDR, or CON represents a generic type of unit record. We show some examples of this in the next example.
|
Rule Operand |
Interpreted As |
|---|---|
|
printer |
prt |
|
ptr |
prt |
|
00e (prt) |
prt |
|
p- |
p- |
This transposition routine looks for a trailing M to normalize the storage size operand of the XSIZE command. If it finds one, it converts the decimal part of the operand into a binary word so that command limiting can match everything up (for example, ATTACH XSIZE 128000M).
|
Rule Operand |
Interpreted As |
|---|---|
|
* |
any |
|
0* |
0M-9M |
|
1* |
10M-19M |
|
5* |
50M-59M |
|
*1* |
010M-919M |
|
Copyright © 2013 CA Technologies.
All rights reserved.
|
|