<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://m204wiki.rocketsoftware.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ATitelbaum</id>
	<title>m204wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://m204wiki.rocketsoftware.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ATitelbaum"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Special:Contributions/ATitelbaum"/>
	<updated>2026-04-17T07:38:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=RegexSplit_(String_function)&amp;diff=118651</id>
		<title>RegexSplit (String function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=RegexSplit_(String_function)&amp;diff=118651"/>
		<updated>2022-03-26T01:51:54Z</updated>

		<summary type="html">&lt;p&gt;ATitelbaum: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:String:RegexSplit subtitle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; repeatedly applies a regular expression, or &amp;quot;regex,&amp;quot; to the method object string until it has tested the entire string.  This splits the string into the substrings that are matched by the regex (the &amp;quot;separators&amp;quot;) and the substrings that are not matched.  By default, the method saves each &amp;lt;i&amp;gt;unmatched&amp;lt;/i&amp;gt; substring as a separate item in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; result object.&lt;br /&gt;
The leftmost unmatched substring is the first item in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;, the next leftmost is the second item, and so on.&lt;br /&gt;
&lt;br /&gt;
A simple application of &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; is to extract only the data items from a string of comma-separated data items.  If the specified regex is a comma, each of the resulting &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;&lt;br /&gt;
items will contain one of the data items.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; that is returned by a default invocation of &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; will contain at least as many items as there are instances of matched substrings.  Upon each match, the input string characters preceding the matched ones (and since the previous matched ones) are saved as a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item.  If there are consecutive matching substrings (no unmatched characters between the matching ones), the corresponding &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item for the second matching substring is empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; also has non-default alternatives that let you save the following in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;only the matched substrings&lt;br /&gt;
&amp;lt;li&amp;gt;both the matched and unmatched substrings&lt;br /&gt;
&amp;lt;li&amp;gt;only the substrings that are matched by capturing groups in the specified regex&lt;br /&gt;
&amp;lt;li&amp;gt;the unmatched substrings and the substrings matched by capturing groups&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within a regex, characters enclosed by a pair of unescaped parentheses form a &amp;quot;subexpression&amp;quot;.  A subexpression is a capturing group if the opening parenthesis is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; followed by a&lt;br /&gt;
question mark (?).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; uses the Regex [[Regex_processing#Regex_rules|rules]] of regular expression matching.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:String:RegexSplit syntax}}&lt;br /&gt;
&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%sl&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; object created and returned by the &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; function. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The input string, to which the regular expression &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; is applied. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;regex&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string that is interpreted as a regular expression and is applied in a matching operation to the method object string.  &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;Options&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is an optional, but [[Notation conventions for methods#Named parameters|name required]], parameter supplying a string of single letter options, which may be specified in uppercase or lowercase, in any combination, and blank separated or not as you prefer. For more information about these options, see [[Regex_processing#Common_regex_options|&amp;quot;Common regex options&amp;quot;]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;Add&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The &amp;lt;var&amp;gt;Add&amp;lt;/var&amp;gt; argument (name required) is a &amp;lt;var&amp;gt;RegexSplitOutputOptions&amp;lt;/var&amp;gt; enumeration value (see below) that specifies what substrings of the input string &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt; to store in the output &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;%outList&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RegexSplitOutputOptions enumeration===&lt;br /&gt;
The values of this [[Enumerations|enumeration]] are the following:&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Unmatched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store only each unmatched substring and any empty substrings due to adjacent separators (consecutive matching substrings).  For example, if the value of the &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; parameter &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; is &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, and &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt; is &amp;lt;code&amp;gt;C###D&amp;lt;/code&amp;gt;, the &amp;lt;var&amp;gt;Unmatched&amp;lt;/var&amp;gt; option adds four &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items: &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, two empty items, then &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;Unmatched&amp;lt;/var&amp;gt; is the default.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Matched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store each matched substring only. Include those characters matched by capturing or non-capturing groups.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;MatchedAndUnmatched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store each matched and each unmatched substring in alternating &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items.  The first item contains the first unmatched substring, the second item contains the first matched substring, and so on, ending with the last matched substring and the last unmatched substring.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Captured&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store only those substrings matched by capturing groups in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; argument &amp;amp;mdash; as if &amp;lt;var&amp;gt;[[RegexCapture_(Stringlist_function)|RegexCapture]]&amp;lt;/var&amp;gt; were applied repeatedly.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;CapturedAndUnmatched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store the following in alternating &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items:&lt;br /&gt;
&amp;lt;ol type=&amp;quot;a&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Those substrings matched by capturing groups in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Each unmatched substring&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The first &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item contains the first unmatched substring, if any; otherwise, it contains the substring captured by the first capturing group. The next item contains the substring captured by the next, if any, capturing group; otherwise, it contains the next unmatched string. And so on.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; As with all enumerations, the &amp;lt;var&amp;gt;ToString&amp;lt;/var&amp;gt; method implicitly converts an enumeration value to a character string whose value is the name of the enumeration value. For more information about methods available to all enumerations, see [[Enumerations#Common enumeration methods|&amp;quot;Common enumeration methods&amp;quot;]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; can throw the following exception:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;var&amp;gt;[[InvalidRegex_class|InvalidRegex]]&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;If the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; parameter does not contain a valid regular expression.  The exception object indicates the position of the character in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; parameter where it was determined that the regular expression is invalid, and a description of the nature of the error.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It is strongly recommended that you protect your environment from regex processing demands on PDL and STBL space by setting, say, &amp;lt;code&amp;gt;UTABLE LPDLST 3000&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UTABLE LSTBL 9000&amp;lt;/code&amp;gt;. See [[Regex_processing#SOUL programming considerations|SOUL programming considerations]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; intrinsic class &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; function performs the same processing as the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class &amp;lt;var&amp;gt;[[RegexSplit_(Stringlist_function)|RegexSplit]]&amp;lt;/var&amp;gt; function. The only differences are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The target &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; for the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class method is its method object, whereas it is the function output for the &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method.&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class method appends to the target stringlist, the &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method creates a new &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method has no status parameter, the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class method does.&lt;br /&gt;
&amp;lt;li&amp;gt;The only way the &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method has of indicating an error is via an exception.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Basically, &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; divides a string into pieces, some of which match a regular expression and some of which don&#039;t. Although, you may be more interested in the pieces that are matched than the pieces that are unmatched, this documentation often refers to the matched pieces as &amp;quot;separators,&amp;quot; which displays a bias towards the default paradigm of a comma-delimited list. In this case (which is equivalent to the method&#039;s &amp;lt;code&amp;gt;Add=Unmatched&amp;lt;/code&amp;gt; option), the regex identifies the &amp;quot;commas,&amp;quot; and the method extracts the &amp;quot;list elements&amp;quot; that remain. In the algorithm for extracting the list items in the default case:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; makes its initial match in the input string; this is the first &amp;quot;comma&amp;quot; separator.&lt;br /&gt;
&amp;lt;li&amp;gt;The characters to the left of the matched substring (if none, then the null string) are the first &amp;quot;list element&amp;quot; unmatched piece.&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; finds its next match, the next separator.  The substring between the final character in the previous match and the first character in the current match (if none, then the null string) becomes the second unmatched piece.&lt;br /&gt;
&amp;lt;li&amp;gt;When the regex fails to make a next match, the entire substring remaining after the last match (if none, then the null string) becomes the last unmatched piece.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Worth noting about this algorithm:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The matching by the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; is not affected by any capturing strings in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt;. Capturing, per se, is not involved in the default case.&lt;br /&gt;
&amp;lt;li&amp;gt;A &amp;quot;comma&amp;quot; (separator) is always assumed to be preceded and followed by a &amp;quot;list element&amp;quot; (unmatched piece). Consequently, the extracted &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; often contains at least one null item. Only a comma-delimited list of the form &#039;&amp;lt;code&amp;gt;a,b,c&amp;lt;/code&amp;gt;&#039; (where there are no repeated, list-starting, or list-ending commas) results in a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; with no nulls.&lt;br /&gt;
&amp;lt;li&amp;gt;There is always one more unmatched piece than matched, because the pieces must alternate (consecutive matched pieces are separated by an unmatched null), and they begin and end with an unmatched piece.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If a &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; contains multiple capturing groups and the &amp;lt;code&amp;gt;Add=Captured&amp;lt;/code&amp;gt; option is used, each time the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; matches in the input string, the number of &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items added is the number of capturing groups.  For example, if you have three capturing groups and you specify an &amp;lt;code&amp;gt;Add=Captured&amp;lt;/code&amp;gt; option, the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item numbers always line up as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;1. First capturing group&lt;br /&gt;
2. Second capturing group&lt;br /&gt;
3. Third capturing group&lt;br /&gt;
4. First capturing group&lt;br /&gt;
5. Second capturing group&lt;br /&gt;
6. Third capturing group&lt;br /&gt;
7. First capturing group&lt;br /&gt;
8. Second capturing group&lt;br /&gt;
9. Third capturing group&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
If you are also capturing the non-matched pieces (&amp;lt;code&amp;gt;Add=CapturedAndUnmatched&amp;lt;/code&amp;gt;), here is the item order:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;1. First non-matched piece&lt;br /&gt;
2. First capturing group&lt;br /&gt;
3. Second capturing group&lt;br /&gt;
4. Third capturing group&lt;br /&gt;
5. Second non-matched piece&lt;br /&gt;
6. First capturing group&lt;br /&gt;
7. Second capturing group&lt;br /&gt;
8. Third capturing group&lt;br /&gt;
9. Third non-matched piece&lt;br /&gt;
10. First capturing group&lt;br /&gt;
11. Second capturing group&lt;br /&gt;
12. Third capturing group&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An empty item in the output &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; may represent consecutive separators in the input string (with &amp;lt;code&amp;gt;Add=Unmatched&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;This example demonstrates how &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; operating in default mode against a simple comma-delimited list assigns items to the result &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;UTABLE LPDLST 3000&lt;br /&gt;
begin&lt;br /&gt;
   %str longstring&lt;br /&gt;
   %regex longstring&lt;br /&gt;
   %sl object stringlist&lt;br /&gt;
   %i is float&lt;br /&gt;
 &lt;br /&gt;
   %str = &#039;Barry,Mildred&#039;&lt;br /&gt;
   %regex = &#039;,&#039;&lt;br /&gt;
   %sl = %str:regexSplit(%regex)&lt;br /&gt;
   [[PrintText statement|printText]] {~} is: {%sl:count}&lt;br /&gt;
   for %i from 1 to %sl:count&lt;br /&gt;
       printText %sl({%i}) is: {%sl(%i)}&lt;br /&gt;
   end for&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
For the input string &amp;lt;code&amp;gt;Barry,Mildred&amp;lt;/code&amp;gt; and for a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;) as the regex, the result is:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;%sl:Count is 2&lt;br /&gt;
%sl(1) is: Barry&lt;br /&gt;
%sl(2) is: Mildred&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
For the input string &amp;lt;code&amp;gt;,Barry,Mildred&amp;lt;/code&amp;gt; and the same regex, the result includes a null first item:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;%sl:Count is 3&lt;br /&gt;
%sl(1) is:&lt;br /&gt;
%sl(2) is: Barry&lt;br /&gt;
%sl(3) is: Mildred&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
And similarly, the input string &amp;lt;code&amp;gt;Barry,Mildred,&amp;lt;/code&amp;gt; and the same regex produce a null third item; and the input string &amp;lt;code&amp;gt;,Barry,Mildred,&amp;lt;/code&amp;gt; and the same regex produces a null first item and fourth items.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;This example shows the utility of an &amp;lt;code&amp;gt;Add=Matched&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;  ...&lt;br /&gt;
%str = &#039; Barry  Mildred    Jack     Faust  &#039;&lt;br /&gt;
%sl = %str:regexSplit(&#039; +&#039;)&lt;br /&gt;
printText ---------- Unmatched:&lt;br /&gt;
%sl:Print&lt;br /&gt;
&lt;br /&gt;
%c is string len 10&lt;br /&gt;
%c = &#039;[&#039; with &#039;5F&#039;:hexToString With &#039; ]+&#039;&lt;br /&gt;
%sl = %str:regexSplit(%c, add=matched)&lt;br /&gt;
printText ---------- Matched:&lt;br /&gt;
%sl:Print&lt;br /&gt;
printText ----------*&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
The result shows that using an &amp;lt;code&amp;gt;Add=Matched&amp;lt;/code&amp;gt; option along with a regex that matches the data you want to extract is an alternative that lets you avoid the nulls in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; output:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;---------- Unmatched:&lt;br /&gt;
&lt;br /&gt;
Barry&lt;br /&gt;
Mildred&lt;br /&gt;
Jack&lt;br /&gt;
Faust&lt;br /&gt;
&lt;br /&gt;
---------- Matched:&lt;br /&gt;
Barry&lt;br /&gt;
Mildred&lt;br /&gt;
Jack&lt;br /&gt;
Faust&lt;br /&gt;
----------*&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In the following example, an &amp;lt;code&amp;gt;Add=Captured&amp;lt;/code&amp;gt; option is used with a regex that includes multiple capture groups to strip the labels but capture the data values of an input string. Using the CreateLines method as shown is a way to use &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; against a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;begin&lt;br /&gt;
   %troops is object stringList&lt;br /&gt;
   %tokens is object stringList&lt;br /&gt;
&lt;br /&gt;
   %troops = new&lt;br /&gt;
   text to %troops&lt;br /&gt;
      Name: Clegg&lt;br /&gt;
      Rank: Corporal&lt;br /&gt;
      Missing: Leg&lt;br /&gt;
&lt;br /&gt;
      Name: Ryan&lt;br /&gt;
      Rank: Private&lt;br /&gt;
      Missing: Brothers&lt;br /&gt;
&lt;br /&gt;
      Name: Bilko&lt;br /&gt;
      Rank: Sergeant&lt;br /&gt;
      Missing: Discipline&lt;br /&gt;
   end text&lt;br /&gt;
&lt;br /&gt;
   %tokens= %troops:createLines:regexSplit(      -&lt;br /&gt;
                     name: *(\S+)\s*Rank: (\S+)\s*Missing: *(\S+)&#039;, -&lt;br /&gt;
                     add=captured)&lt;br /&gt;
   %tokens:print(,3)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
This is the result:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;5 Clegg&lt;br /&gt;
8 Corporal&lt;br /&gt;
3 Leg&lt;br /&gt;
4 Ryan&lt;br /&gt;
7 Private&lt;br /&gt;
8 Brothers&lt;br /&gt;
5 Bilko&lt;br /&gt;
8 Sergeant&lt;br /&gt;
10 Discipline&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For information about additional methods that support regular expressions, see [[Regex_processing|&amp;quot;Regex Processing&amp;quot;]].&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Template:String:RegexSplit footer}}&lt;br /&gt;
[[Category:Regular expression processing]]&lt;/div&gt;</summary>
		<author><name>ATitelbaum</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=RegexSplit_(String_function)&amp;diff=118650</id>
		<title>RegexSplit (String function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=RegexSplit_(String_function)&amp;diff=118650"/>
		<updated>2022-03-26T01:45:55Z</updated>

		<summary type="html">&lt;p&gt;ATitelbaum: /* RegexSplitOutputOptions enumeration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:String:RegexSplit subtitle}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; repeatedly applies a regular expression, or &amp;quot;regex,&amp;quot; to the method object string until it has tested the entire string.  This splits the string into the substrings that are matched by the regex (the &amp;quot;separators&amp;quot;) and the substrings that are not matched.  By default, the method saves each &amp;lt;i&amp;gt;unmatched&amp;lt;/i&amp;gt; substring as a separate item in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; result object.&lt;br /&gt;
The leftmost unmatched substring is the first item in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;, the next leftmost is the second item, and so on.&lt;br /&gt;
&lt;br /&gt;
A simple application of &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; is to extract only the data items from a string of comma-separated data items.  If the specified regex is a comma, each of the resulting &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;&lt;br /&gt;
items will contain one of the data items.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; that is returned by a default invocation of &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; will contain at least as many items as there are instances of matched substrings.  Upon each match, the input string characters preceding the matched ones (and since the previous matched ones) are saved as a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item.  If there are consecutive matching substrings (no unmatched characters between the matching ones), the corresponding &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item for the second matching substring is empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; also has non-default alternatives that let you save the following in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;only the matched substrings&lt;br /&gt;
&amp;lt;li&amp;gt;both the matched and unmatched substrings&lt;br /&gt;
&amp;lt;li&amp;gt;only the substrings that are matched by capturing groups in the specified regex&lt;br /&gt;
&amp;lt;li&amp;gt;the unmatched substrings and the substrings matched by capturing groups&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Within a regex, characters enclosed by a pair of unescaped parentheses form a &amp;quot;subexpression&amp;quot;.  A subexpression is a capturing group if the opening parenthesis is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; followed by a&lt;br /&gt;
question mark (?).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; uses the Regex [[Regex_processing#Regex_rules|rules]] of regular expression matching.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:String:RegexSplit syntax}}&lt;br /&gt;
&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%sl&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; object created and returned by the &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; function. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The input string, to which the regular expression &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; is applied. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;regex&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string that is interpreted as a regular expression and is applied in a matching operation to the method object string.  &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;Options&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This is an optional, but [[Notation conventions for methods#Named parameters|name required]], parameter supplying a string of single letter options, which may be specified in uppercase or lowercase, in any combination, and blank separated or not as you prefer. For more information about these options, see [[Regex_processing#Common_regex_options|&amp;quot;Common regex options&amp;quot;]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;Add&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The &amp;lt;var&amp;gt;Add&amp;lt;/var&amp;gt; argument (name required) is a &amp;lt;var&amp;gt;RegexSplitOutputOptions&amp;lt;/var&amp;gt; enumeration value (see below) that specifies what substrings of the input string &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt; to store in the output &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;%outList&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RegexSplitOutputOptions enumeration===&lt;br /&gt;
The values of this [[Enumerations|enumeration]] are the following:&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Unmatched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store only each unmatched substring and any empty substrings due to adjacent separators (consecutive matching substrings).  For example, if the value of the &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; parameter &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; is &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, and &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt; is &amp;lt;code&amp;gt;C###D&amp;lt;/code&amp;gt;, the &amp;lt;var&amp;gt;Unmatched&amp;lt;/var&amp;gt; option adds four &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items: &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, two empty items, then &amp;lt;code&amp;gt;D&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;Unmatched&amp;lt;/var&amp;gt; is the default.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Matched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store each matched substring only. Include those characters matched by capturing or non-capturing groups.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;MatchedAndUnmatched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store each matched and each unmatched substring in alternating &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items.  The first item contains the first unmatched substring, the second item contains the first matched substring, and so on, ending with the last matched substring and the last unmatched substring.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Captured&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store only those substrings matched by capturing groups in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; argument &amp;amp;mdash; as if &amp;lt;var&amp;gt;[[RegexCapture_(Stringlist_function)|RegexCapture]]&amp;lt;/var&amp;gt; were applied repeatedly.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;CapturedAndUnmatched&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Store the following in alternating &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items:&lt;br /&gt;
&amp;lt;ol type=&amp;quot;a&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Those substrings matched by capturing groups in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Each unmatched substring&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The first &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item contains the first unmatched substring, if any; otherwise, it contains the substring captured by the first capturing group. The next item contains the substring captured by the next, if any, capturing group; otherwise, it contains the next unmatched string. And so on.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; As with all enumerations, the &amp;lt;var&amp;gt;ToString&amp;lt;/var&amp;gt; method implicitly converts an enumeration value to a character string whose value is the name of the enumeration value. For more information about methods available to all enumerations, see [[Enumerations#Common enumeration methods|&amp;quot;Common enumeration methods&amp;quot;]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Exceptions==&lt;br /&gt;
&amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; can throw the following exception:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;&amp;lt;var&amp;gt;[[InvalidRegex_class|InvalidRegex]]&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;If the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; parameter does not contain a valid regular expression.  The exception object indicates the position of the character in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; parameter where it was determined that the regular expression is invalid, and a description of the nature of the error.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It is strongly recommended that you protect your environment from regex processing demands on PDL and STBL space by setting, say, &amp;lt;code&amp;gt;UTABLE LPDLST 3000&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UTABLE LSTBL 9000&amp;lt;/code&amp;gt;. See [[Regex_processing#SOUL programming considerations|SOUL programming considerations]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; intrinsic class &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; function performs the same processing as the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class &amp;lt;var&amp;gt;[[RegexSplit_(Stringlist_function)|RegexSplit]]&amp;lt;/var&amp;gt; function. The only differences are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The target &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; for the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class method is its method object, whereas it is the function output for the &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method.&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class method appends to the target stringlist, the &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method creates a new &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method has no status parameter, the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; class method does.&lt;br /&gt;
&amp;lt;li&amp;gt;The only way the &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; class method has of indicating an error is via an exception.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Basically, &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; divides a string into pieces, some of which match a regular expression and some of which don&#039;t. Although, you may be more interested in the pieces that are matched than the pieces that are unmatched, this documentation often refers to the matched pieces as &amp;quot;separators,&amp;quot; which displays a bias towards the default paradigm of a comma-delimited list. In this case (which is equivalent to the method&#039;s &amp;lt;code&amp;gt;Add=Unmatched&amp;lt;/code&amp;gt; option), the regex identifies the &amp;quot;commas,&amp;quot; and the method extracts the &amp;quot;list elements&amp;quot; that remain. In the algorithm for extracting the list items in the default case:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; makes its initial match in the input string; this is the first &amp;quot;comma&amp;quot; separator.&lt;br /&gt;
&amp;lt;li&amp;gt;The characters to the left of the matched substring (if none, then the null string) are the first &amp;quot;list element&amp;quot; unmatched piece.&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; finds its next match, the next separator.  The substring between the final character in the previous match and the first character in the current match (if none, then the null string) becomes the second unmatched piece.&lt;br /&gt;
&amp;lt;li&amp;gt;When the regex fails to make a next match, the entire substring remaining after the last match (if none, then the null string) becomes the last unmatched piece.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
Worth noting about this algorithm:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The matching by the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; is not affected by any capturing strings in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt;. Capturing, per se, is not involved in the default case.&lt;br /&gt;
&amp;lt;li&amp;gt;A &amp;quot;comma&amp;quot; (separator) is always assumed to be preceded and followed by a &amp;quot;list element&amp;quot; (unmatched piece). Consequently, the extracted &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; often contains at least one null item. Only a comma-delimited list of the form &#039;&amp;lt;code&amp;gt;a,b,c&amp;lt;/code&amp;gt;&#039; (where there are no repeated, list-starting, or list-ending commas) results in a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; with no nulls.&lt;br /&gt;
&amp;lt;li&amp;gt;There is always one more unmatched piece than matched, because the pieces must alternate (consecutive matched pieces are separated by an unmatched null), and they begin and end with an unmatched piece.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If a &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; contains multiple capturing groups and the &amp;lt;code&amp;gt;Add=Captured&amp;lt;/code&amp;gt; option is used, each time the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; matches in the input string, the number of &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; items added is the number of capturing groups.  For example, if you have three capturing groups and you specify an &amp;lt;code&amp;gt;Add=Captured&amp;lt;/code&amp;gt; option, the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; item numbers always line up as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;1. First capturing group&lt;br /&gt;
2. Second capturing group&lt;br /&gt;
3. Third capturing group&lt;br /&gt;
4. First capturing group&lt;br /&gt;
5. Second capturing group&lt;br /&gt;
6. Third capturing group&lt;br /&gt;
7. First capturing group&lt;br /&gt;
8. Second capturing group&lt;br /&gt;
9. Third capturing group&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
If you are also capturing the non-matched pieces (&amp;lt;code&amp;gt;Add=CapturedAndUnmatched&amp;lt;/code&amp;gt;), here is the item order:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;1. First non-matched piece&lt;br /&gt;
2. First capturing group&lt;br /&gt;
3. Second capturing group&lt;br /&gt;
4. Third capturing group&lt;br /&gt;
5. Second non-matched piece&lt;br /&gt;
6. First capturing group&lt;br /&gt;
7. Second capturing group&lt;br /&gt;
8. Third capturing group&lt;br /&gt;
9. Third non-matched piece&lt;br /&gt;
10. First capturing group&lt;br /&gt;
11. Second capturing group&lt;br /&gt;
12. Third capturing group&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An empty item in the output &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; may represent consecutive separators in the input string (with &amp;lt;code&amp;gt;Add=Unmatched&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;This example demonstrates how &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; operating in default mode against a simple comma-delimited list assigns items to the result &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;UTABLE LPDLST 3000&lt;br /&gt;
begin&lt;br /&gt;
   %str longstring&lt;br /&gt;
   %regex longstring&lt;br /&gt;
   %sl object stringlist&lt;br /&gt;
   %i is float&lt;br /&gt;
 &lt;br /&gt;
   %str = &#039;Barry,Mildred&#039;&lt;br /&gt;
   %regex = &#039;,&#039;&lt;br /&gt;
   %sl = %str:regexSplit(%regex)&lt;br /&gt;
   [[PrintText statement|printText]] {~} is: {%sl:count}&lt;br /&gt;
   for %i from 1 to %sl:count&lt;br /&gt;
       printText %sl({%i}) is: {%sl(%i)}&lt;br /&gt;
   end for&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
For the input string &amp;lt;code&amp;gt;Barry,Mildred&amp;lt;/code&amp;gt; and for a comma (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;) as the regex, the result is:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;%sl:Count is 2&lt;br /&gt;
%sl(1) is: Barry&lt;br /&gt;
%sl(2) is: Mildred&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
For the input string &amp;lt;code&amp;gt;,Barry,Mildred&amp;lt;/code&amp;gt; and the same regex, the result includes a null first item:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;%sl:Count is 3&lt;br /&gt;
%sl(1) is:&lt;br /&gt;
%sl(2) is: Barry&lt;br /&gt;
%sl(3) is: Mildred&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
And similarly, the input string &amp;lt;code&amp;gt;Barry,Mildred,&amp;lt;/code&amp;gt; and the same regex produce a null third item; and the input string &amp;lt;code&amp;gt;,Barry,Mildred,&amp;lt;/code&amp;gt; and the same regex produces a null first item and fourth items.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;This example shows the utility of an &amp;lt;code&amp;gt;Add=Matched&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;  ...&lt;br /&gt;
%str = &#039; Barry  Mildred    Jack     Faust  &#039;&lt;br /&gt;
%sl = %str:regexSplit(&#039; +&#039;)&lt;br /&gt;
printText ---------- Unmatched:&lt;br /&gt;
%sl:Print&lt;br /&gt;
&lt;br /&gt;
%c is string len 10&lt;br /&gt;
%c = &#039;[&#039; with &#039;5F&#039;:hexToString With &#039; ]+&#039;&lt;br /&gt;
%sl = %str:regexSplit(%c, add=matched)&lt;br /&gt;
printText ---------- Matched:&lt;br /&gt;
%sl:Print&lt;br /&gt;
printText ----------*&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
The result shows that using an &amp;lt;code&amp;gt;Add=Matched&amp;lt;/code&amp;gt; option along with a regex that matches directly the data you want to extract is a successful alternative that also lets you avoid the nulls in the &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; output:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;---------- Unmatched:&lt;br /&gt;
&lt;br /&gt;
Barry&lt;br /&gt;
Mildred&lt;br /&gt;
Jack&lt;br /&gt;
Faust&lt;br /&gt;
&lt;br /&gt;
---------- Matched:&lt;br /&gt;
Barry&lt;br /&gt;
Mildred&lt;br /&gt;
Jack&lt;br /&gt;
Faust&lt;br /&gt;
----------*&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In the following example, an &amp;lt;code&amp;gt;Add=Captured&amp;lt;/code&amp;gt; option is used with a regex that includes multiple capture groups to strip the labels but capture the data values of an input string. Using the CreateLines method as shown is a way to use &amp;lt;var&amp;gt;RegexSplit&amp;lt;/var&amp;gt; against a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;begin&lt;br /&gt;
   %troops is object stringList&lt;br /&gt;
   %tokens is object stringList&lt;br /&gt;
&lt;br /&gt;
   %troops = new&lt;br /&gt;
   text to %troops&lt;br /&gt;
      Name: Clegg&lt;br /&gt;
      Rank: Corporal&lt;br /&gt;
      Missing: Leg&lt;br /&gt;
&lt;br /&gt;
      Name: Ryan&lt;br /&gt;
      Rank: Private&lt;br /&gt;
      Missing: Brothers&lt;br /&gt;
&lt;br /&gt;
      Name: Bilko&lt;br /&gt;
      Rank: Sergeant&lt;br /&gt;
      Missing: Discipline&lt;br /&gt;
   end text&lt;br /&gt;
&lt;br /&gt;
   %tokens= %troops:createLines:regexSplit(      -&lt;br /&gt;
                     name: *(\S+)\s*Rank: (\S+)\s*Missing: *(\S+)&#039;, -&lt;br /&gt;
                     add=captured)&lt;br /&gt;
   %tokens:print(,3)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
This is the result:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;5 Clegg&lt;br /&gt;
8 Corporal&lt;br /&gt;
3 Leg&lt;br /&gt;
4 Ryan&lt;br /&gt;
7 Private&lt;br /&gt;
8 Brothers&lt;br /&gt;
5 Bilko&lt;br /&gt;
8 Sergeant&lt;br /&gt;
10 Discipline&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For information about additional methods that support regular expressions, see [[Regex_processing|&amp;quot;Regex Processing&amp;quot;]].&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Template:String:RegexSplit footer}}&lt;br /&gt;
[[Category:Regular expression processing]]&lt;/div&gt;</summary>
		<author><name>ATitelbaum</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=RegexReplace_(String_function)&amp;diff=118649</id>
		<title>RegexReplace (String function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=RegexReplace_(String_function)&amp;diff=118649"/>
		<updated>2022-03-26T01:43:47Z</updated>

		<summary type="html">&lt;p&gt;ATitelbaum: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:String:RegexReplace subtitle}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;RegexReplace&amp;lt;/var&amp;gt; [[Intrinsic classes|intrinsic]] function searches a given string for matches of a regular expression, and replaces matches with, or according to, a specified replacement string.&lt;br /&gt;
The function stops after the first match and replace, or it can continue searching and replacing until no more matches are found.&lt;br /&gt;
&lt;br /&gt;
Matches are obtained according to the [[Regex_processing#Regex_rules|rules]] of regular expression matching.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:String:RegexReplace syntax}}&lt;br /&gt;
&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%outString&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string set to the value of method object &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt; with each matched substring replaced by the value of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;replacement&amp;lt;/var&amp;gt;.  &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The method object string, within which matches for &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; are sought.&amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;regex&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string that is interpreted as a regular expression and that is applied to the method object &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt; to find the one or more substrings matched by &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;replacement&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string that replaces the substrings of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt; that &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; matches.  Except when the &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; option is specified (as described below for the &amp;lt;var&amp;gt;Options&amp;lt;/var&amp;gt; argument), you can include markers in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;replacement&amp;lt;/var&amp;gt; value to indicate where to insert corresponding captured strings &amp;amp;mdash; strings matched by capturing groups (parenthesized subexpressions) in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt;, if any.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As in Perl, these markers are in the form &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;$n&amp;lt;/var&amp;gt;, where &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt; is the number of the capture group, and 1 is the number of the first capture group. &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt; must not be 0 or contain more than 9 digits.  If a capturing group makes no matches (is positional, for example), or if there was no &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;th capture group corresponding to the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;$n&amp;lt;/var&amp;gt; marker in a replacement string, the (literal) value of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;$n&amp;lt;/var&amp;gt; is used in the replacement string instead of the empty string.  &amp;lt;code&amp;gt;xxx$1&amp;lt;/code&amp;gt; is an example of a valid replacement string, and &amp;lt;code&amp;gt;$0yyy&amp;lt;/code&amp;gt; is an example of an invalid one.  Or you can use the format &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;$mn&amp;lt;/var&amp;gt;, where &amp;lt;i&amp;gt;m&amp;lt;/i&amp;gt; is one of the following modifiers:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxNested&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;U&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;camel&amp;quot;&amp;gt;u&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies that the specified captured string should be uppercased when inserted.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;L&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;camel&amp;quot;&amp;gt;l&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that the captured string should be lowercased when inserted.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
The only characters you can escape in a replacement string are dollar sign (&amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;), backslash (&amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt;), and the digits &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; through &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;. So only these escapes are respected: &amp;lt;code&amp;gt;\\&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;\$&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;\0&amp;lt;/code&amp;gt; through &amp;lt;code&amp;gt;\9&amp;lt;/code&amp;gt;.  No other escapes are allowed in a replacement string &amp;amp;mdash; this includes &amp;quot;shorthand&amp;quot; escapes like &amp;lt;code&amp;gt;\d&amp;lt;/code&amp;gt; &amp;amp;mdash; and an &amp;quot;unaccompanied&amp;quot; backslash (&amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt;) is an error.  For example, since the scan for the number that accompanies the meta-$ stops at the first non-numeric, you use &amp;lt;code&amp;gt;1$1\2&amp;lt;/code&amp;gt; to indicate that the first captured string should go between the numbers 1 and 2 in the replacement string.&lt;br /&gt;
&amp;lt;p&amp;gt;An invalid replacement string results in request cancellation.&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;Options&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This optional, [[Notation conventions for methods#Named parameters|name required]], parameter is a string of single-letter options, which may be specified in uppercase or lowercase, in any combination, and blank separated or not, as you prefer. For more information about these options, see [[Regex_processing#Common_regex_options|Common regex options]].&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It is strongly recommended that you protect your environment from regular expression processing demands on PDL and STBL space by setting, say, &amp;lt;code&amp;gt;UTABLE LPDLST 3000&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;UTABLE LSTBL 9000&amp;lt;/code&amp;gt;. See [[Regex processing#SOUL programming considerations|SOUL programming considerations]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Within a regular expression, characters enclosed by a pair of unescaped parentheses form a &amp;quot;subexpression.&amp;quot; A subexpression is a capturing group if the opening parenthesis is &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; followed by a question mark (&amp;lt;tt&amp;gt;?&amp;lt;/tt&amp;gt;). A capturing group that is nested within a non-capturing subexpression is still a capturing group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In Perl, &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;$n&amp;lt;/var&amp;gt; markers (&amp;lt;code&amp;gt;$1&amp;lt;/code&amp;gt;, for example) enclosed in single quotes are treated as literals instead of as &amp;quot;that which was captured by the first capturing parentheses.&amp;quot; &amp;lt;var&amp;gt;RegexReplace&amp;lt;/var&amp;gt; uses the &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; option of the &amp;lt;var&amp;gt;Options&amp;lt;/var&amp;gt; argument for this purpose.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Matching of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; may &amp;quot;succeed&amp;quot; but yet  match no characters. For example, a quantifier like &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt; is allowed by definition to match no characters, though it tries to match one. &amp;lt;var&amp;gt;RegexReplace&amp;lt;/var&amp;gt; honors such a zero-length match by substituting the specified replacement string at the current position. If the global option is in effect, the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; is then applied again one position to the right in the input string, and again, until the end of the string. The regex &amp;lt;code&amp;gt;9?&amp;lt;/code&amp;gt; globally applied to the string &amp;lt;code&amp;gt;abc&amp;lt;/code&amp;gt; with a comma-comma (&amp;lt;tt&amp;gt;,,&amp;lt;/tt&amp;gt;) replacement string results in this output string: &amp;lt;code&amp;gt;,,a,,b,,c,,&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For information about additional methods that support regular expressions, see [[Regex processing]].&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the following example, the regex &amp;lt;code&amp;gt;(5.)&amp;lt;/code&amp;gt; is applied repeatedly (global option) to the string &amp;lt;code&amp;gt;5A5B5C5D5E&amp;lt;/code&amp;gt; to replace the uppercase letters with their lowercase counterparts. The &amp;lt;code&amp;gt;$L1&amp;lt;/code&amp;gt; &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;replacement&amp;lt;/var&amp;gt; value makes the replacement string equal to whatever is matched by the capturing group, &amp;lt;code&amp;gt;(5.)&amp;lt;/code&amp;gt;, in the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; (the &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; causes the lowercase versions of the captured letters to be used).&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;begin&lt;br /&gt;
   %regex longstring&lt;br /&gt;
   %inStr longstring&lt;br /&gt;
   %replacement longstring&lt;br /&gt;
   %outStr longstring&lt;br /&gt;
   %opt string len 10&lt;br /&gt;
  &lt;br /&gt;
   %inStr=&#039;5A5B5C5D5E&#039;&lt;br /&gt;
   %regex=&#039;(5.)&#039;&lt;br /&gt;
   %replacement=&#039;$L1&#039;&lt;br /&gt;
   %opt=&#039;g&#039;&lt;br /&gt;
   %outStr = %inStr:regexReplace(%regex, %replacement, options=%opt)&lt;br /&gt;
   [[PrintText statement|printText]] OutputString: &#039;{%outStr}&#039;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
The example result is:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;OutputString: &#039;5a5b5c5d5e&#039;&#039;&#039;Bold text&#039;&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
The non-capturing regex &amp;lt;code&amp;gt;5.&amp;lt;/code&amp;gt; matches and replaces the same substrings as the capturing group &amp;lt;code&amp;gt;(5.)&amp;lt;/code&amp;gt;, but &amp;lt;code&amp;gt;(5.)&amp;lt;/code&amp;gt; is used above to take advantage of the self-referring marker for the replacement string, &amp;lt;code&amp;gt;$L1&amp;lt;/code&amp;gt;, which is valid only for capturing groups.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;greedy&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Say you want to supply end tags to items of the form &amp;lt;code&amp;gt;&amp;lt;img foo=&amp;quot;bar&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;, converting them to &amp;lt;code&amp;gt;&amp;lt;img foo=&amp;quot;bar&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;/code&amp;gt;. You decide to use the following regex to capture &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; tags that have attributes:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;(&amp;lt;img .*&amp;gt;)&amp;lt;/p&amp;gt;&lt;br /&gt;
And you use the following replacement string to replace the captured string with the captured string plus an appended &amp;lt;code&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;$1&amp;lt;/img&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
However, if the regex above is applied to the string &amp;lt;code&amp;gt;&amp;lt;body&amp;gt;&amp;lt;img src=&amp;quot;foo&amp;quot; width=&amp;quot;24&amp;quot;&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/code&amp;gt;, the end tag &amp;lt;code&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;/code&amp;gt; is not inserted after the first closing angle bracket (&amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;) after &amp;lt;code&amp;gt;24&amp;lt;/code&amp;gt; as you want. Instead, the matched string greedily extends to the second closing angle bracket, and the tag &amp;lt;code&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;/code&amp;gt; is positioned at the end:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;body&amp;gt;&amp;lt;img src=&amp;quot;foo&amp;quot; width=&amp;quot;24&amp;quot;&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
One remedy for this situation is to use the following &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt;, which employs a negated character class to match non-closing-bracket characters:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;(&amp;lt;img [&amp;amp;#94;&amp;gt;]*&amp;gt;)&amp;lt;/p&amp;gt;&lt;br /&gt;
This &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;regex&amp;lt;/var&amp;gt; does not extend beyond the first closing angle bracket in the target input string, and the resulting output string is:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;&amp;lt;body&amp;gt;&amp;lt;img src=&amp;quot;foo&amp;quot; width=&amp;quot;24&amp;quot;&amp;gt;&amp;lt;/img&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:String:RegexReplace footer}}&lt;br /&gt;
[[Category:Regular expression processing]]&lt;/div&gt;</summary>
		<author><name>ATitelbaum</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SERVGA_parameter&amp;diff=118648</id>
		<title>SERVGA parameter</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SERVGA_parameter&amp;diff=118648"/>
		<updated>2022-03-25T21:21:16Z</updated>

		<summary type="html">&lt;p&gt;ATitelbaum: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:SERVGA parameter subtitle}}&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Default value&lt;br /&gt;
&amp;lt;dd&amp;gt;0&lt;br /&gt;
&amp;lt;dt&amp;gt;Parameter type&lt;br /&gt;
&amp;lt;dd&amp;gt;System&lt;br /&gt;
&amp;lt;dt&amp;gt;Where set&lt;br /&gt;
&amp;lt;dd&amp;gt;On User 0&#039;s parameter line&lt;br /&gt;
&amp;lt;dt&amp;gt;Related products&lt;br /&gt;
&amp;lt;dd&amp;gt;All&lt;br /&gt;
&amp;lt;dt&amp;gt;Introduced&lt;br /&gt;
&amp;lt;dd&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204 V7.5&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;SERVGA&amp;lt;/var&amp;gt; parameter controls which server tables are allocated in the ATB-swappable-server area.&amp;lt;/p&amp;gt;&lt;br /&gt;
In Model 204 version 7.5, only &amp;lt;var&amp;gt;[[LNTBL_parameter|NTBL]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[LQTBL_parameter|QTBL]]&amp;lt;/var&amp;gt; can be placed above-the-bar in a swappable area.&amp;lt;br&amp;gt;&lt;br /&gt;
Each server table to be allocated in that area is controlled by a bit in &amp;lt;var&amp;gt;SERVGA&amp;lt;/var&amp;gt;. If the bit is on, the corresponding server table is allocated in the ATB-swappable-server area.&lt;br /&gt;
&lt;br /&gt;
The bits are:&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Bit&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server table placed above the bar&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Required version of Model 204&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;02000000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LFTBL_parameter|FTBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;01000000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LXTBL_parameter|XTBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00800000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LGTBL_parameter|GTBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00400000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LITBL_parameter|ITBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00200000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LPDLST_parameter|PDL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.9 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00100000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LFSCB_parameter|FSCB]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00080000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LSTBL_parameter|STBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00040000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LVTBL_parameter|VTBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00020000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LTTBL_parameter|TTBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00010000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[HTBFRS]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.6 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00004000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LNTBL_parameter|NTBL]]&amp;lt;/var&amp;gt; &amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.5 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00002000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;[[LQTBL_parameter|QTBL]]&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.5 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;code&amp;gt;X&#039;00001000&#039;&amp;lt;/code&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Server-swap table&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.9 or later&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; These bits can also be set in &amp;lt;var&amp;gt;[[SERVNSA_parameter|SERVNSA]]&amp;lt;/var&amp;gt; but should not be set in both &amp;lt;var&amp;gt;SERVGA&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; &amp;amp;mdash; if they are, an error message is issued and the Online fails to come up.&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;var&amp;gt;[[SERVGSZ parameter|SERVGSZ]]&amp;lt;/var&amp;gt; is the amount of space in bytes required for the swappable above-the-bar server tables per server. The total amount of storage allocated for swappable above-the-bar server areas equals &amp;lt;var&amp;gt;SERVGSZ&amp;lt;/var&amp;gt; rounded to 4K and multiplied by &amp;lt;var&amp;gt;[[NSERVS parameter|NSERVS]]&amp;lt;/var&amp;gt;.&lt;br /&gt;
When sizing &amp;lt;var&amp;gt;SERVGSZ&amp;lt;/var&amp;gt;, it should accommodate the largest swappable above-the-bar table sizes that might be needed.&lt;br /&gt;
&lt;br /&gt;
Some server tables can alternatively be placed above-the-bar in a non-swappable area. This can be indicated with the &amp;lt;var&amp;gt;[[SERVNSA parameter|SERVNSA]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[SERVNSSZ parameter|SERVNSSZ]]&amp;lt;/var&amp;gt; parameters. &lt;br /&gt;
In Model 204 7.9 and later, if PDL is placed above-the-bar it is recommended that LPDLST be set to its maximum value of 65536.&lt;br /&gt;
&lt;br /&gt;
{{Template:SERVGA/SERVGSZ common}}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;[[ZPAGEOPT parameter|ZPAGEOPT]]&amp;lt;/var&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:System parameters]]&lt;br /&gt;
[[Category:Parameters]]&lt;/div&gt;</summary>
		<author><name>ATitelbaum</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Defining_the_runtime_environment_(CCAIN)&amp;diff=118647</id>
		<title>Defining the runtime environment (CCAIN)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Defining_the_runtime_environment_(CCAIN)&amp;diff=118647"/>
		<updated>2022-03-25T21:20:10Z</updated>

		<summary type="html">&lt;p&gt;ATitelbaum: /* ATB storage for procedure pages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
CCAIN is the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; control file used to define the runtime and user environments, and to control system operations.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When all the CCAIN input stream is read, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; automatically terminates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The discussion of the CCAIN file is presented in these pages:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The page you are reading describes the structure of the CCAIN file and the parameters used to define the runtime environment. Topics directly relating to the runtime parameters such as resource locking, disk buffers, and server areas are included.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[Defining the user environment (CCAIN)]] discusses setting up the user environment.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[Controlling system operations (CCAIN)]] discusses the commands used to control system operations. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Special considerations relating to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; configurations or operating systems follow each discussion whenever appropriate.&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
==Structure of CCAIN==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CCAIN file is divided into three sections, as described here:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Runtime environment===&lt;br /&gt;
The runtime environment specifications line, which is known as the &#039;&#039;&#039;User 0 parameter line&#039;&#039;&#039;, sets system characteristics and default user parameters during &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;  initialization.  &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User 0, which acts as the system operator, is the name given to the input stream used by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; initialization routines. The input stream is read from the CCAIN file and echoed on the CCAPRINT file. (For more information on CCAPRINT, see [[Obtaining User 0 output (CCAPRINT)]].) &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User 0 parameter line, which is described in this page, includes:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;System table sizes&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;I/O buffer sizes&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Scheduler and performance options&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Recovery options&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div id=&amp;quot;preUser0Cmds&amp;quot;&amp;gt;&lt;br /&gt;
====Pre-user 0 commands====&lt;br /&gt;
&amp;lt;!--Caution: &amp;lt;div&amp;gt; above--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Parameters on the User 0 line are specified on the first line of the CCAIN input stream unless certain commands are used. The following commands are the only ones that can &amp;lt;i&amp;gt;precede&amp;lt;/i&amp;gt; the User 0 parameter line:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;!-- The following are only allowed for SIRIUS or ROCKET: &lt;br /&gt;
&amp;lt;li&amp;gt;[[*LOOK command|*LOOK]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[*ZAP command|*ZAP]]&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
This is allowed for anyone as far as SIRHC is concerned, I haven&#039;t check&lt;br /&gt;
but it seems to not be found in the wiki: &lt;br /&gt;
&amp;lt;li&amp;gt;[[CPTRACE command|CPTRACE]]&amp;lt;/li&amp;gt; &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[*LOWER command|*LOWER]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[*UPPER command|*UPPER]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[APPDATE command|APPDATE]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[DEFINE DATASET command|DEFINE DATASET]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[DEFINE STREAM command|DEFINE STREAM]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[MSGCTL command|MSGCTL]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[UNICODE command|UNICODE]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;*&amp;lt;/b&amp;gt; (a comment) is also allowed, however, a blank &amp;lt;b&amp;gt;must follow&amp;lt;/b&amp;gt; the &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An all-blank line is also allowed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition, starting with version 7.5, you can [[PRECCAIN|provide a common configuration]] for all &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; jobs by linking &amp;lt;code&amp;gt;PRECCAIN&amp;lt;/code&amp;gt; into your ONLINE, IFAM1, and/or IFAM4 load modules. &amp;lt;code&amp;gt;PRECCAIN&amp;lt;/code&amp;gt;, an assembler module which you modify and link into the load modules, contains &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; commands and parameters set and executed, respectively, during &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; initialization.&lt;br /&gt;
&lt;br /&gt;
===User environments and definitions===&lt;br /&gt;
User environment definitions and specifications are set for each user on a separate line for:&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt; Device type and terminal communication network&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Compiler table defaults&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Server configuration&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Default output options&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===System control commands===&lt;br /&gt;
System control commands are entered on successive lines. System commands include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Recovery procedures&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Suspension of User 0&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Message control&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Allocation and freeing of data sets&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Definition of data sets and printers&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; End-of-data and end-of-job statements&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; [[SOUL]] requests&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; FLOD programs &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ONLINE data streams with CCAIN==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following pages present z/OS, z/VSE, and z/VM examples for ONLINE data streams. The ONLINE examples illustrate the structure of CCAIN, including the runtime environment specifications line (User 0),  user environment definitions and specifications, and system control commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;A z/OS example for a BATCH204 run follows the ONLINE data streams.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Parameter lines===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A CCAIN parameter line consists of one or more 80-column card images with parameter keywords and values in columns 1 through 71. &amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the line exceeds 71 characters, any non-blank character in column 72 indicates continuation to the next card image. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The maximum length of the parameter area is controlled by the &amp;lt;var&amp;gt;LIBUFF&amp;lt;/var&amp;gt; parameter, which is listed in the [[#Runtime environment specifications|Common runtime parameters]] and [[#Calculating fixed table size|Fixed server table values]] tables. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; accepts comment lines or blank lines after the User 0 parameters in the CCAIN input stream. &amp;lt;var&amp;gt;IODEV&amp;lt;/var&amp;gt; lines can have comments and blank lines before, between and after them.&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As shown in the following examples, these rules governing parameter lines apply in all operating environments.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===z/OS JCL===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following example shows z/OS JCL for an ONLINE data stream containing the CCAIN file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt; //M204ONLN    JOB   CLASS=A,MSGCLASS=A,NOTIFY=LEN&lt;br /&gt;
 //RUN         EXEC  PGM=ONLINE,REGION=4096K,&lt;br /&gt;
 //            TIME=1440,PARM=(&#039;SYSOPT=149,LIBUFF=1024,LOBUFF=3000&#039;)&lt;br /&gt;
 //STEPLIB     DD    DSN=M204.RLSE.LOADLIB,DISP=SHR&lt;br /&gt;
 //CCAJRNL     DD    DSN=M204.JOURNAL,DISP=SHR&lt;br /&gt;
 //CHKPOINT    DD    DSN=M204.CHKPOINT,DISP=SHR&lt;br /&gt;
 //CCATEMP     DD    UNIT=3380,SPACE=(TRK,90),&lt;br /&gt;
 //                  DISP=(NEW,DELETE)&lt;br /&gt;
 //CCASNAP     DD    SYSOUT=A&lt;br /&gt;
 //SYSMDUMP    DD    SYSOUT=A&lt;br /&gt;
 //SYSUDUMP    DD    SYSOUT=A&lt;br /&gt;
 //CCAAUDIT    DD    SYSOUT=A&lt;br /&gt;
 //CCASTAT     DD    DSN=M204.CCASTAT,DISP=SHR&lt;br /&gt;
 //CCAGRP      DD    DSN=M204.CCAGRP,DISP=SHR&lt;br /&gt;
 //CLIENTS     DD    DSN=M204.FILE.CLIENTS,DISP=SHR&lt;br /&gt;
 //VEHICLES    DD    DSN=M204.FILE.VEHICLES,DISP=SHR&lt;br /&gt;
 //CLAIMS89    DD    DSN=M204.FILE.CLAIMS89,DISP=SHR&lt;br /&gt;
 //CLAIMS90    DD    DSN=M204.FILE.CLAIMS90,DISP=SHR&lt;br /&gt;
 //CCASERVR    DD    UNIT=3380,DISP=(NEW,DELETE),&lt;br /&gt;
 //                  SPACE=(CYL,5,,CONTIG)&lt;br /&gt;
 //CCAPRINT    DD    SYSOUT=A&lt;br /&gt;
 //CCAIN DD *                                            X Runtime&lt;br /&gt;
 NUSERS=9,NSERVS=2,MINBUF=18,MAXBUF=1000,                X environment&lt;br /&gt;
 TERMBUF=5,NFILES=4,NDCBS=4,NDIR=4,SPCORE=50000,         X definitions&lt;br /&gt;
 IFAMBS=4000,LRETBL=800,VTAMNAME=M204,CRFSCHNL=M204FULL, X User0&lt;br /&gt;
 CRIOCHNL=M204PROD,IFAMCHNL=IFAMPROD,                    X&lt;br /&gt;
 RCVOPT=9,CPMAX=1,CPTIME=30,CPTO=5,CPTQ=5,               X&lt;br /&gt;
 LFSCB=7000,LGTBL=500,LSTBL=3000,LVTBL=200,              X&lt;br /&gt;
 LOUTPB=3000,NBKPG=5,OUTCCC=80,SERVSIZE=72456&lt;br /&gt;
 IODEV=7,NOTERM=3,POLLNO=1,SERVSIZE=72456      User environment&lt;br /&gt;
 IODEV=7,POLLNO=2                              defining 8 users&lt;br /&gt;
 IODEV=7,POLLNO=3                              device types, and&lt;br /&gt;
 IODEV=29,NOTERM=2,POLLNO=1                    the communication&lt;br /&gt;
 IODEV=29,POLLNO=2                             network&lt;br /&gt;
 IODEV=11,NOTERM=2,POLLNO=1&lt;br /&gt;
 IODEV=11,POLLNO=2&lt;br /&gt;
 IODEV=23&lt;br /&gt;
 HALT 27,MODEL 204 IS UP AND RUNNING,3,EOD&lt;br /&gt;
 EOD&lt;br /&gt;
 *SLEEP 300&lt;br /&gt;
 BROADCAST URGENT 1***SYSTEM GOES DOWN IN 5 MINUTES&lt;br /&gt;
 *SLEEP 300&lt;br /&gt;
 HALT 24,WAIT FOR USERS TO LOGOUT,3,EOJ&lt;br /&gt;
 CHECKPOINT                                    System operation&lt;br /&gt;
 BUMP ALL                                      control commands&lt;br /&gt;
 *SLEEP 300&lt;br /&gt;
 EOJ&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===z/VSE JCL===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following example shows z/VSE JCL for an ONLINE data stream containing the CCAIN File:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt; // JOB ONLINE&lt;br /&gt;
 // DLBL M204LIB,&#039;M204.PROD.LIBRARY&#039;&lt;br /&gt;
 // EXTENT SYSnnn,...&lt;br /&gt;
 // LIBDEF PHASE.SEARCH=(M204LIB.V210,PRD1.BASE)&lt;br /&gt;
 // DLBL CCAJRNL,&#039;MODEL204.CCAJRNL&#039;&lt;br /&gt;
 // EXTENT SYS001,balance of extent information&lt;br /&gt;
 // DLBL CHKPNT,&#039;MODEL204.CHKPOINT&#039;&lt;br /&gt;
 // EXTENT SYS001,balance of extent information&lt;br /&gt;
 // DLBL CCATEMP,&#039;MODEL204.CCATEMP&#039;,,DA&lt;br /&gt;
 // EXTENT SYS001&lt;br /&gt;
 // DLBL CCASRVR,&#039;MODEL204.CCASERVR&#039;,,DA&lt;br /&gt;
 // EXTENT SYS001&lt;br /&gt;
 // DLBL CCASRV0,&#039;MODEL204.CCASERV0&#039;,,DA&lt;br /&gt;
 // EXTENT SYS001&lt;br /&gt;
 // DLBL CCAGRP,&#039;MODEL204.CCAGRP,,DA&lt;br /&gt;
 // EXTENT SYS001&lt;br /&gt;
 // DLBL CCASYS,&#039;MODEL204.CCASYS&#039;,,DA&lt;br /&gt;
 // EXTENT SYS001&lt;br /&gt;
 // DLBL CCASTAT,&#039;MODEL204.CCASTAT&#039;&lt;br /&gt;
 // EXTENT SYS001,balance of extent information&lt;br /&gt;
 // ASSGN SYS001,X&#039;cuu&#039;&lt;br /&gt;
 // ASSGN SYS002,X&#039;108&#039;  ---- Local 3270 terminal&lt;br /&gt;
 // ASSGN SYS003,X&#039;019&#039;  ---- Local 3270 terminal&lt;br /&gt;
 // ASSGN SYS008,PRINTER  ---- Audit trail&lt;br /&gt;
 *** INSERT LABEL INFORMATION AND ASSIGNMENTS&lt;br /&gt;
 *** FOR USER DATABASE FILES HERE&lt;br /&gt;
 // UPSI 10011011&lt;br /&gt;
 // OPTION SYSPARM=&#039;LIB=512&#039;&lt;br /&gt;
 // EXEC ONLINE,SIZE=AUTO&lt;br /&gt;
 NUSERS=6,MAXBUF=1000,LFSCB=4900,             Runtime environment&lt;br /&gt;
 LOUTPB=2400,NDIR=10,NSERVS=2,SERVSIZE=95000, definition (User 0)&lt;br /&gt;
 RCVOPT=9&lt;br /&gt;
 IODEV=35,INPUT=SYS002,SERVSIZE=95000      User environment&lt;br /&gt;
 IODEV=35,INPUT=SYS003                     defining 5 users,&lt;br /&gt;
 IODEV=41,NOTERM=2,POLLNO=1                device types, and the&lt;br /&gt;
 IODEV=11,POLLNO=2                         communication network&lt;br /&gt;
 IODEV=23,NOTERM=1,POLLNO=1&lt;br /&gt;
 *** INSERT USER ZERO REQUESTS HERE&lt;br /&gt;
 HALT 22,MODEL 204 IS AVAILABLE,3,EOJ      System operation&lt;br /&gt;
 CHECKPOINT&lt;br /&gt;
 EOJ                                       control commands&lt;br /&gt;
 /*&lt;br /&gt;
 /&amp;amp;amp;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===CMS CCAIN file===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PAGESIZE=6184,NUSERS=5,NSERVS=2,           X&lt;br /&gt;
NFILES=3,NDCBS=3,MINBUF=18,MAXBUF=1000,    X&lt;br /&gt;
RCVOPT=9,SERVSIZE=95000&lt;br /&gt;
IODEV=41,NOTERM=2,POLLNO=1&lt;br /&gt;
IODEV=41,POLLNO=2&lt;br /&gt;
IODEV=39,NOTERM=1,POLLNO=1&lt;br /&gt;
IODEV=43,NOTERM=1,POLLNO=1&lt;br /&gt;
HALT 19,MODEL 204 IS NOW UP,10,END OF DAY&lt;br /&gt;
EOD&lt;br /&gt;
HALT 24,WAIT FOR USERS TO LOGOUT,3,EOJ&lt;br /&gt;
CHECKPOINT&lt;br /&gt;
EOJ&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===z/VM ONLINE processing===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; ONLINE environment is created in a z/VM environment by: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Defining runtime parameters in the User 0 input file.   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Executing the [[#CMS ONLINE command|CMS ONLINE command]], which causes an EXEC procedure to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Execute a user-created EXEC procedure to define the file recovery environment&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Invoke &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to perform file recovery&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Execute a user-created EXEC procedure to define the ONLINE environment&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Invoke &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to establish the ONLINE environment&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Samples of the components necessary to invoke a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; ONLINE environment follow.        &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===EXEC procedure defining the ONLINE environment===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;amp;TRACE OFF&lt;br /&gt;
&amp;amp;amp;C FILEDEF * CLEAR&lt;br /&gt;
&amp;amp;amp;C LABELDEF * CLEAR&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCAIN DISK DOCONLN CCAIN A&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCAPRINT DISK DOCONLN CCAPRINT A&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCAAUDIT J DSN M204 CCAAUDIT&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCASNAP PRINTER&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCAJRNL G DSN M204 CCAJRNL&lt;br /&gt;
&amp;amp;amp;C FILEDEF CHKPOINT G DSN M204 CHKPNT&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCATEMP H DSN M204 CCATEMP&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCASERVR I DSN M204 CCASRVR&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCAGRP J DSN M204 CCAGRP&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCASYS J DSN M204 CCASYS&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCASTAT J DSN M204 CCASTAT&lt;br /&gt;
&amp;amp;amp;C FILEDEF CARS J DSN M204 CARS&lt;br /&gt;
&amp;amp;amp;STACK SYSOPT 146 LIBUF 1000&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==CMS ONLINE command==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The ONLINE command brings up &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; in the service machine, allowing multiple users to log on. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The format of the ONLINE command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;ONLINE [TEST] [NODCSS] [IFDIAL] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;exec1&amp;lt;/span&amp;gt;] [BYPASS] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;exec2&amp;lt;/span&amp;gt;] [BYPASS] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;execargs&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Where:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; TEST specifies that a TEST version of the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; ONLINE module or shared segment, such as T204, is to be invoked. The default is the production version &amp;lt;code&amp;gt;M204&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; NODCSS specifies that shared segments are not to be used, even though they exist.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; IFDIAL specifies that a single user IFDIAL connection is to be made (saved segments mandatory). The IFDIAL connection must be made on the main (nonrecovery) step.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;A single-user IFDIAL EXEC procedure, SAMPDIAL, is supplied as part of the distributed material. Customize and install SAMPDIAL on an accessible minidisk. The M204 EXEC expects the IFDIAL EXEC to be named &amp;lt;code&amp;gt;SINGDIAL&amp;lt;/code&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For more information, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;[http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556%2Fmodel%20204%2Fprevious%20versions%2Fv7.4%2Fm204_installzvm_v74.pdf Rocket Model 204 Installation Guide for IBM z/VM, version 7.4]&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;exec1&amp;lt;/var&amp;gt; specifies the name of the EXEC procedure that contains the ACCESS commands for the required minidisks and the file definition (FILEDEF or M204FDEF) commands for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; recovery purposes. You must create the EXEC  in accordance with the file requirements for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; ONLINE environment to be recovered.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;BYPASS specifies not to use the EXEC procedure name in the ONLINE command and bypasses the recovery or Online steps, or both.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;exec2&amp;lt;/var&amp;gt; specifies the name of the EXEC procedure that contains the ACCESS commands for the required minidisks and the file definition (FILEDEF or M204FDEF) commands for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; regular online production files. You must  create the EXEC in accordance with the file requirements for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; online environment to be initiated.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;execargs&amp;lt;/var&amp;gt; are any user arguments, which are passed directly to the EXECs (1 and 2). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage notes====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The EXEC can also include the Dictionary and Access/204 file definitions, if they are installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following considerations apply to CMS online command processing:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If no operands are specified on the &amp;lt;var&amp;gt;ONLINE&amp;lt;/var&amp;gt; command, the default name of the restart EXEC procedure is &amp;lt;code&amp;gt;M204REST&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; The default name of the Online EXEC procedure is &amp;lt;code&amp;gt;M204DEF&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If one operand is specified, it is assumed to be the name of the Online EXEC procedure.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; EXEC procedures invoked by &amp;lt;var&amp;gt;ONLINE&amp;lt;/var&amp;gt; provide the necessary &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; parameters.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Required options must be placed in the stack (the &amp;amp;amp;STACK command) as keyword-value pairs, separated by blanks.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If IFDIAL is specified, the main (nonrecovery) EXEC must provide only one parameter, the user program name, in the stack. The program name must be placed in the CMS stack before returning to the ONLINE EXEC. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;IFSETUP&amp;lt;/var&amp;gt; function (see the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;[[Media:M204 HLIReference V75.pdf|Rocket Model 204 Host Language Interface Reference Manual]]&amp;lt;/var&amp;gt;) is used to send the CCAIN parameters via the user program. Neither CCAIN nor CCAPRINT are used for IFDIAL connections. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; A single-user &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interactive Online environment uses an EXEC procedure, &amp;lt;code&amp;gt;SAMPSING&amp;lt;/code&amp;gt;, which is supplied as part of the distributed material. An IODEV statement is not required.  (See [[#Server areas|Server areas]].)&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Customize and install SAMPSING and its companion, SAMPSING CCAIN, on a generally accessible CMS minidisk. Name the customized files &amp;lt;code&amp;gt;SINGLUSR EXEC&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SINGLUSR CCAIN&amp;lt;/code&amp;gt; to sustain compatibility with the standard  distributed user interfaces. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Return codes are evaluated as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; A return code of zero from any one of the EXEC procedures invokes &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; A return code of one (1) bypasses the invocation of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Any other return code is considered an error and causes the ONLINE EXEC to terminate immediately. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ONLINE BYPASS DOCONLN&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The parameters used in the sample above:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Use the version of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; with saved segments&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Provide no recovery arguments&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Execute a user-written EXEC (DOCONLN) that defines the ONLINE environment &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMS utilities and EXECs==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;quot;CMS utilities&amp;quot; table explains how to use CMS utility command modules relating to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; in the CMS environment. None of the commands can be issued within the  &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; environment. For information about syntax, refer to [[CMS utility command modules]]. &amp;lt;!-- not converted from Cmd Ref --&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;CMS utilities&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Utility&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Purpose&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Comments&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;M204APND&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Concatenates file definitions.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;A DDNAME of CLEAR removes all file definitions.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;M204CMS&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The interface between CMS and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; that provides system services during execution of load modules, for example M204ONLN, M204IFM1, and M204UTILC.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;M204FDEF&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Creates file definitions for files on unaccessed variable format disks without accessing the resident disk.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;An example defining the file CLI:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;CP LINK MVS 201 201 MW WRITE&lt;br /&gt;
M204FDEF CLI 201 DSN M204 CLI&lt;br /&gt;
&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;M204LDEF&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Specifies magnetic tape label information for tape volumes using the M204APND module.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Standard LABELDEF command parameters and options are used.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;M204UTIL&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Initializes, labels, allocates, erases, renames, and lists variable-format volumes.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Not recommended for space allocation on DOS or OS format disks owned by a guest operating system, because the catalog is not updated and does not work on indexed VTOCs. You can use IEFBR14 for space allocation and  M204FDEF or a FILEDEF for access. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;M204XFER&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Transfers control to the version of the M204CMS module that executes in a saved segment (DCSS).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;M204XFER can also load a second DCSS containing the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; program invoked by M204CMS.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using the M204UTIL utility===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The M204UTIL utility uses RESERVE/RELEASE logic when updating the VTOC of a variable-format disk. You can use it to manipulate a volume being used by one or more &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; service virtual machines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;  Erasing data sets that are in use by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; on such volumes produces unpredictable results.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;M204UTIL options&amp;quot; table lists the options that are available with M204UTIL. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;M204UTIL options&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Allocation unit&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Option&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;BLKSIZE&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Block size&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;DSORG&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Either PS or DA&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LRECL&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Record length&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PRIMARY&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CYL TRK BLK&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;RECFM&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;F/FA/FBA/V/VA/VBA/U&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;You must specify the primary option. Other options are not mandatory. The operands and options are function-dependent.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For example, the first statement below initializes a temporary minidisk. The second creates a data set named DEV.SCRATCH.CCATEMP to be stored on it. The third statement erases the data set.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204UTIL INITIAL 291 TMP291&lt;br /&gt;
M204UTIL ALLOCATE DEV SCRATCH CCATEMP 291 (PRIMARY 5 CYL)&lt;br /&gt;
M204UTIL ERASE DEV SCRATCH CCATEMP 291&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using the M204MOUN EXEC to mount and dismount tapes=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a tape must be mounted, the CMS interface to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes the EXEC procedure M204MOUN, passing the DDname, device address, volume serial number, volume sequence, and access type (READ or WRITE) as arguments.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The M204MOUN EXEC determines the status of the tape device, issues appropriate Control Program and CMS commands, and sends a message to the system operator for a tape mount and drive attachment to the service  virtual machine, if necessary. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Based on criteria at its disposal, the EXEC can reject the attempt to mount the tape. You can alter the M204MOUN EXEC defaults to meet site requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When a tape volume is dismounted, the CMS interface to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes the EXEC procedure M204UNLD, passing the DDname, device address, volume serial number, volume sequence, access type (READ or WRITE), and  file status (EOV or EOF) as arguments. &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; EOV (request another volume) indicates an entry at end-of-volume.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; EOF (no further requests) indicates an entry due to end-of-file. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BATCH204 JCL with CCAIN==&lt;br /&gt;
 &lt;br /&gt;
===Sample z/OS JCL for invoking a BATCH204 run===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;//RUN      EXEC    PGM=BATCH204,REGION=1200K,&lt;br /&gt;
//                 TIME=10,PARM=&#039;SYSOPT=144&#039;&lt;br /&gt;
 &lt;br /&gt;
//STEPLIB    DD    DSN=M204.LOADLIB,DISP=SHR&lt;br /&gt;
//CCAAUDIT   DD    SYSOUT=A&lt;br /&gt;
//CCASTAT    DD    DSN=M204.CCASTAT,DISP=SHR&lt;br /&gt;
//CCAJRNL    DD    DSN=M204.JOURNAL,DISP=SHR&lt;br /&gt;
//CCATEMP    DD    UNIT=3330,SPACE=(TRK,20),&lt;br /&gt;
//                 DISP=(NEW,DELETE)&lt;br /&gt;
//CCASNAP    DD    SYSOUT=A&lt;br /&gt;
//SYSMDUMP   DD    SYSOUT=A&lt;br /&gt;
//SYSUDUMP   DD    SYSOUT=A&lt;br /&gt;
//CENSUS     DD    DSN=M204.FILE.CENSUS,DISP=SHR&lt;br /&gt;
//CCAPRINT   DD    SYSOUT=A&lt;br /&gt;
//CCAIN      DD    *&lt;br /&gt;
                   PAGESZ=6184,NFILES=1,SNAPCTL=2&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;STEPLIB points to the load module library where the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; program is linked.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If the load module library is added to the LINKLIB concatenation, STEPLIB is not necessary.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; If EXCPVR under z/OS is used, STEPLIB must be authorized. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Runtime environment specifications==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;You can specify &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; runtime environment parameters on the EXEC statement and on the User 0 parameter line of the CCAIN input stream.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following sections explain how to set EXEC parameters, discuss the most commonly used User 0 parameters, and detail procedures specific to z/VSE and z/VM environments.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Specifying EXEC statement parameters===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The JCL EXEC statement includes the following parameters that affect the runtime environment (see the sample in [[#z/OS JCL|z/OS JCL]]). &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;PGM specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; configuration.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; TIME specifies how long &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can run before being canceled by the operating system. Specify at least 10 seconds for system initialization and normal termination.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Under z/OS, if TIME is set to 1440, the operating system&#039;s automatic cancellation of the run is bypassed. If the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; automatic shutdown facility is also bypassed, then &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can run indefinitely until  brought down by other means.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; PARM sets various &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; parameters, including the &amp;lt;var&amp;gt;[[LIBUFF parameter|LIBUFF]]&amp;lt;/var&amp;gt; parameter and the &amp;lt;var&amp;gt;[[SYSOPT parameter|SYSOPT]]&amp;lt;/var&amp;gt; parameter, which is described in the [[#Setting the SYSOPT parameter|SYSOPT parameter options]] table.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; The value set for &amp;lt;var&amp;gt;LIBUFF&amp;lt;/var&amp;gt; takes effect immediately, so you must set &amp;lt;var&amp;gt;LIBUFF&amp;lt;/var&amp;gt; large enough to accommodate CCAIN.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; REGION specifies the size of the memory area allocated for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; configuration. The next section explains how to estimate the value of this parameter.  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Calculating region size===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Consider the following factors when estimating region size for an Online system (z/OS) or z/VM machine size (CMS):&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Size of the load module, which varies depending on the use of optional modules &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Spare core (&amp;lt;var&amp;gt;SPCORE&amp;lt;/var&amp;gt;) specification, the default is 8192 bytes&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Increase the default, if you use deferred update, the FLOD exit (FLODXT) feature, directed output, or active subsystems. Additional memory is also required to open sequential data sets. The requirements for  FLODXT are given under &amp;lt;var&amp;gt;SPCORE&amp;lt;/var&amp;gt; in the [[#User 0 parameters|&amp;quot;Common runtime parameters&amp;quot; table]].  &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Number of buffers used for each server&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Four buffers for each server is the minimum requirement. Each buffer requires slightly more than one &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; page. The main memory required is dependent upon the &amp;lt;var&amp;gt;SERVSIZE&amp;lt;/var&amp;gt; parameter setting. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;No work space is required. Under normal conditions, five active users or application threads can be serviced efficiently by one server.  &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Number of servers allocated&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The size of each user&#039;s area is dependent on the settings of the compiler table parameters governing the size and complexity of the SOUL requests. The formula to calculate server area size is given  in [[#Sizing user server areas|Sizing user server areas]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;In exceptional cases, processing needs might require a distinct server for each user.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Storage overhead&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Approximately 500 bytes per user and 700 bytes per file are required. The actual amount depends on the number of data sets and extents. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Setting the SYSOPT parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;SYSOPT&amp;lt;/var&amp;gt; values, which can be summed, define actions taken during a run. Individual &amp;lt;var&amp;gt;SYSOPT&amp;lt;/var&amp;gt; options are shown in the following table: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;SYSOPT parameter options&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Option&amp;lt;/p&amp;gt; &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Specifies...&amp;lt;/p&amp;gt; &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;128&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Log for the CCAJRNL and the CCAAUDIT data sets&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;64&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Abend without a dump when the return code is nonzero&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Print lines relating to system initialization or IFAM function calls (RK lines) on the audit trail or journal&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Login is required &amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Automatic disconnect operation in response to the LOGOUT command&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Execution of data definition commands within a particular run only through the File Management facility of Dictionary &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Existing permanent group file (CCAGRP) is required&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CCASYS file, which is required for subsystem applications &amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===SYSIPT logical unit in z/VSE===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;In the z/VSE environment, CCAIN is replaced by the logical unit SYSIPT, a device-independent input reader. Typically, the SYSIPT logical unit is assigned to the same device as that used by the Job Control  program for reading JCL. It is usually unnecessary to provide a z/VSE ASSGN statement for this logical unit. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;You must place CCAIN data in one of the following:   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Job stream immediately following the z/VSE EXEC Job Control statement:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;// EXEC ONLINE,SIZE=AUTO&lt;br /&gt;
PAGESZ=6184,RCVOPT=1&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
/*&lt;br /&gt;
/&amp;amp;amp;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For a full example, see [[#z/VSE JCL|z/VSE JCL]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; A disk data set. Use any utility that takes card input and writes it to a file of 80-byte unblocked records. You must also supply a DLBL and EXTENT for either CCAIN or IJSYSIN:   &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; For CCAIN, the symbolic unit referenced on the EXTENT statement must be a programmer logical unit, for example, SYS022.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; For IJSYSIN, the symbolic unit referenced on the EXTENT statement must be SYSIPT. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Procedure with the &amp;lt;code&amp;gt;DATA=YES&amp;lt;/code&amp;gt; option on the CATALP statement.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===User 0 input file in the z/VM environment===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In z/VM, the User 0 output file is specified as a file stored on a minidisk. There are no restrictions on the choice of the CMS file identifier. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FILEDEF CCAIN DISK DOCONLN CCAIN A&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; also runs within a user&#039;s virtual machine in a single-user mode. In this case the file is defined with a FILEDEF command, similar to the example shown above, in the single-user EXEC. Runtime parameters  are set up the same as for multiple users, except that the number of users is set to one (&amp;lt;code&amp;gt;NUSERS=1&amp;lt;/code&amp;gt;).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stacking z/VM runtime parameters=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a z/VM environment, the EXEC containing the FILEDEF commands can specify SYSOPT (and any other runtime parameters) before initialization by stacking the parameters:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;amp;C FILEDEF CCAIN DISK DOCONLN CCAIN A&lt;br /&gt;
&amp;amp;amp;C FILEDEF CCAPRINT DISK DOCONLN CCAPRINT A&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*STACK THE PARM FIELD VALUE FOR MODEL 204&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*&lt;br /&gt;
&amp;amp;amp;STACK SYSOPT 128 LIBUFF 2048&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
===User 0 parameters===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The runtime environment specifications entered on the User 0 parameter line further define system options, user default values, and work area sizes.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Parameters common to many &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; configurations are summarized in the &amp;quot;Common runtime parameters&amp;quot; table.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;Common runtime parameters&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Parameter&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Specifies...&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[CFRLOOK parameter|CFRLOOK]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Collect critical file resources conflict statistics.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[CPMAX parameter|CPMAX]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Maximum number of checkpoints&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[CPTIME parameter|CPTIME]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Checkpoint time intervals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LENQTBL parameter|LENQTBL]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Number of entries in each user&#039;s resource enqueuing table. (See [[#Resource locking table|Resource locking table]] for sizing formulas.) The default is 6. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LIBUFF parameter|LIBUFF]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Length of the input buffer used for input lines from CCAIN or the user&#039;s terminal. &amp;lt;var&amp;gt;LIBUFF&amp;lt;/var&amp;gt; must be three bytes longer than the longest line or record read into it. Longer lines are rejected with an error message.  The default is 255.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If an input line is continued with a nonblank character, the number of characters in the original line and all continuations (not including continuation characters) must fit in the &amp;lt;var&amp;gt;LIBUFF&amp;lt;/var&amp;gt; specification. &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LOBUFF parameter|LOBUFF]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Length of the output buffer used for output lines to&lt;br /&gt;
 CCAAUDIT, CCAPRINT, for a user&#039;s terminal, or for a directed output (USE) data set. LOBUFF can be reset on individual user parameter lines. The default is 256. The recommended value for SQL processing is 5000.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LOGADD parameter|LOGADD]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Number of slots reserved for adding new password (CCASTAT) entries. The default is 0. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LOGFAIL parameter|LOGFAIL]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Action taken when the number of consecutive login failures exceeds the value of the &amp;lt;var&amp;gt;LOGTRY&amp;lt;/var&amp;gt; parameter. Default is 0. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LOGONENQ parameter|LOGONENQ]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Use of unique user IDs for systemwide logons to a single ONLINE system. (See the &amp;lt;var&amp;gt;LOGONENQ&amp;lt;/var&amp;gt; entry in the [[#userenvTable|&amp;quot;User environment control parameters&amp;quot; table]] to specify unique user IDs  for specific terminals.) The default is 0. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The Subsystem Management facility is not affected by LOGONENQ.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LOGTRY parameter|LOGTRY]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Maximum number of login attempts allowed. The default is 0. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LRETBL parameter|LRETBL]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Length of each user&#039;s part of the record enqueuing table. (See [[#Resource locking|Resource locking]].) Default is 200.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[LRUTIM parameter|LRUTIM]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Disk page reference interval for references considered obsolete. Use &amp;lt;var&amp;gt;LRUTIM&amp;lt;/var&amp;gt; to calculate DKRR statistics. The default is 0.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[MAXBUF parameter|MAXBUF]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Maximum number of file page buffers allocated below the bar during &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; initialization. (See [[#Disk buffers and Model 204 storage|Disk buffers and Model 204 storage]].) The default is 256.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[MINBUF parameter|MINBUF]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Minimum number of file page buffers allocated below the bar during &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; initialization. (See [[#Disk buffers and Model 204 storage|Disk buffers and Model 204 storage]].) The default is 18.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NDCBS parameter|NDCBS]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Number of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; file DCBs that can be used at any one time. The default is 10.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NDIR parameter|NDIR]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Maximum number of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that can be opened during a run. The default is 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NFILES parameter|NFILES]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Maximum number of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that can be open at any one time. Files remain open until an explicit CLOSE is issued or the session ends. The default is 2. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;NFILES&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;NDCBS&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;NDIR&amp;lt;/var&amp;gt; specifications are automatically incremented during system initialization if &amp;lt;code&amp;gt;SYSOPT=2&amp;lt;/code&amp;gt; (permanent group file). With the &amp;lt;var&amp;gt;VIEW&amp;lt;/var&amp;gt; command, you can view parameter values during a run.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NGROUP parameter|NGROUP]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Maximum number of file groups each user can have open at the same time. The default is 5.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NSERVS parameter|NSERVS]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Number of servers. The default is &amp;lt;var&amp;gt;NUSERS&amp;lt;/var&amp;gt; (see below). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NSUBTKS parameter|NSUBTKS]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Maximum number of pseudo subtasks that can be generated in a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; run. The default is 4.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NUMBUFG parameter|NUMBUFG]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Number of file page buffers allocated above the bar during &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; initialization. (See [[#Disk buffers and Model 204 storage|Disk buffers and Model 204 storage]].) The default is 0.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[NUSERS parameter|NUSERS]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Total number of SOUL users and IFAM2 or IFAM4 threads supported. The default is 1. The value of &amp;lt;var&amp;gt;NUSERS&amp;lt;/var&amp;gt; consists of the total number of I/O device types (IODEVs) specified on the user parameter lines plus 1  for User 0. Online users are defined as terminal users with a particular type of terminal or as a host language thread, if IFAM is supported in the online region.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[PAGEFIX parameter|PAGEFIX]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Fixes areas in memory; can be useful in reducing paging traffic under z/OS or z/VSE. The default is X `0000000&#039;, which means nothing is page fixed.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For z/VSE only: A PAGEFIX request is valid only if real pages have been assigned by the ALLOC command. If ALLOC is 0 or if the total number of pages to be fixed exceeds the number of real pages, the PAGEFIX request  fails. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[RETRVKEY parameter|RETRVKEY]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PF key used to retrieve a previous terminal input line. 280 bytes of spare core is required for each user that has a defined retrieve key. The default is 0.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[SEQOPT parameter|SEQOPT]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Activation of the prefetch (look-ahead) feature for SOUL applications requiring entry order retrieval. Values are 1 (on) or 0 (off). The default is 0. Activation of SEQOPT requires resizing the &amp;lt;var&amp;gt;[[MAXBUF parameter|MAXBUF]]&amp;lt;/var&amp;gt; parameter by using the formula: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MAXBUF = NUSERS * (4 + 2 * [maximum FOR EACH RECORD loop nest level])&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can modify SEQOPT with the RESET command. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[SERVSIZE parameter|SERVSIZE]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Size of each server area. The default, formerly 0, is 65536. (See [[#Server areas|Server areas]].) &amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[SPCORE parameter|SPCORE]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Minimum amount of storage within the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; address space to leave unallocated at the end of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; initialization. You can set &amp;lt;var&amp;gt;SPCORE&amp;lt;/var&amp;gt; in the EXEC statement PARM field or on the User 0 parameter line.  The default is 8192. Spare core is used by:   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; IFAM4 application program storage. The default is 12288. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Active subsystems. (See the formula given in [[System requirements for Application Subsystems#SPCORE size|SPCORE size]].)&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;var&amp;gt;FILELOAD&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;FLOD&amp;lt;/var&amp;gt; commands for tape input and deferred update output. When using the FLODXT feature, you must allocate 100 bytes for each FLODXT program.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Each defined retrieval key for previous terminal input (180 bytes per key). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;In z/OS, a number of bytes of virtual storage equal to your &amp;lt;var&amp;gt;SPCORE&amp;lt;/var&amp;gt; setting is reserved above the line, and the same number is reserved below the line. The BTB amount is ignored in Model&amp;amp;nbsp;204 7.7 and higher if the &amp;lt;var&amp;gt;[[NUMBUFG parameter|NUMBUFG]]&amp;lt;/var&amp;gt; parameter setting is greater than 0.&amp;lt;/p&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[TIMESTOP parameter|TIMESTOP]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Amount of time (CPU milliseconds) before automatic termination processing begins or before initiation of commands or SOUL requests stops. TIMESTOP cannot be reset. The default is 1500.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 If TIMESTOP is set to 0, the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; timing facility&#039;s automatic shutdown is bypassed. If, in addition, the JCL EXEC statement parameter TIME is set to 1440, the z/OS automatic shutdown is bypassed, and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; continues to run indefinitely  until brought down by other means.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[XMEMOPT parameter|XMEMOPT]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; Cross-Memory Services facility used by Timer PC and IOS Branch Entry for z/OS systems, as well as using SUSPEND/RESUME instead of WAIT/POST for communication between &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; real subtasks. Coordinates  with &amp;lt;var&amp;gt;XMEMSVC&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
It is also required for:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[IOS Branch Entry]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; [[UL/DB2]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; [[Defining the user environment (CCAIN)#CRAM options for z/OS|CRAM-XDM]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; CPUID check (product license verification; prior to Model&amp;amp;nbsp;204 7.5)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
VIO is incompatible with IOSB and EXCPVR.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;[[XMEMSVC parameter|XMEMSVC]]&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;SVC number of the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; Cross-Memory Services module ([[Cross-memory facilities CRAM and M204XSVC#M204XSVC|M204XSVC]]). Installation of this module with an SVC is deprecated as of Model&amp;amp;nbsp;204 7.5. &amp;lt;var&amp;gt;XMEMSVC&amp;lt;/var&amp;gt; coordinates with &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt;. The default is 0. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
M204XSVC is also used by:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; IOS Branch Entry&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; UL/DB2&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; CRAM-XDM&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; CPUID check (product license verification; prior to Model&amp;amp;nbsp;204 7.5)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===z/VSE UPSI Job Control statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In a z/VSE environment:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Use the &amp;lt;var&amp;gt;SYSPARM&amp;lt;/var&amp;gt; parameter of the z/VSE OPTION Job Control statement to specify a limited number of parameters that are normally specified on User 0 or any user&#039;s parameter lines, if the maximum length of the data does not  exceed eight characters. For example, you can set the &amp;lt;var&amp;gt;LIBUFF&amp;lt;/var&amp;gt; parameter with the following statement:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;// OPTION SYSPARM=&#039;LIB=2048&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Set the &amp;lt;var&amp;gt;SYSOPT&amp;lt;/var&amp;gt; value before initialization by using the z/VSE UPSI Job Control statement. Specify the value as a series of weighted UPSI bit values.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example, including RK lines on the audit trail can be specified with the following statement, which is the equivalent of SYSOPT=32:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;00100000&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;UPSI/SYSOPT settings&amp;quot; table summarizes the UPSI bit settings and &amp;lt;var&amp;gt;SYSOPT&amp;lt;/var&amp;gt; equivalents: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;UPSI/SYSOPT settings&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;UPSI setting&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;SYSOPT value&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Meaning&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;10000000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;128&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Generate audit trail and/or journal&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;01000000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;64&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Abend without a dump when the return code is nonzero&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;00100000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Include RK lines on the audit trail&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;00010000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Login required&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;00001000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Automatic disconnect in response to the LOGOUT command&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;00000100&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Restrict the use of data definition commands within a run&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;00000010&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Open CCAGRP for use of permanent file group&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;00000001&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Open CCASYS for use of application subsystem definitions&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Resource locking==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;To maintain data integrity, resource locking requests and reserves system and file resources for share (SHR) and exclusive (EXCL) use with other users. Data corruption is prevented by using linked lists of system and file  resources. Conflict in the locking table results from attempts to lock exclusively on a file resource.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Resource locking messages indicate a wait for a file, a conflict for a resource, or that the table is full and needs to be increased with the LENQTBL parameter.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Locking occurs on:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; File resources, which are usually locked in SHR mode, such as:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; File access&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Record locking table&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Table B and Group index&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Tables C and D&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Permanent procedures&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Access Control Table &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; System resources, which are usually locked in EXCL mode, such as:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Access to the CCASTAT file&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Group definition table in CCATEMP&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Updates to CCAGRP&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Names of a file and subsystem&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; User defined resources&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;  Records &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following sections explain the resource locking tables and the details of resource locking on single and multiple CPUs.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Record locking table=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The record locking table (also called: record enqueuing table), whose length is the product of the number of users (&amp;lt;var&amp;gt;[[NUSERS parameter|NUSERS]]&amp;lt;/var&amp;gt;) and the length in bytes of one user&#039;s part of the table (&amp;lt;var&amp;gt;[[LRETBL parameter|LRETBL]]&amp;lt;/var&amp;gt;), contains control information necessary to detect conflicts between users trying to update records simultaneously. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can issue a &amp;lt;code&amp;gt;MONITOR ENQ&amp;lt;/code&amp;gt; command to determine current usage in the record locking table.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Calculating allocated size of record locking table====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The amount of space required by a request is roughly proportional to the number of lists and &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt; statements contained in the request. Each &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt; statement or list requires about 46 bytes per file for files less than or  equal to 300,000 records. Space requirements increase at the rate of 2.25 bytes per segment. The maximum value is 65,535.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====SYSOPT2=X&#039;40&#039;==== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Record sets &amp;amp;mdash; found sets, including &amp;lt;var&amp;gt;FDWOL&amp;lt;/var&amp;gt; found sets, sorted sets, lists, and LPU lists &amp;amp;mdash; are traced through entries in the record locking table. One entry is required for each segment (49,152 records) in the record set. These entries are CCATEMP page numbers. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the &amp;lt;var&amp;gt;[[SYSOPT2 parameter|SYSOPT2]]&amp;lt;/var&amp;gt; X&#039;40&#039; bit is set, the entries contain 4-byte CCATEMP page numbers. Setting the X&#039;40&#039; bit provides a substantial increase in the number of simultaneous record sets that can be concurrently active in a given &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; run. Therefore, if you set the &amp;lt;var&amp;gt;SYSOPT2&amp;lt;/var&amp;gt; X&#039;40&#039; bit, you should also at least double the &amp;lt;var&amp;gt;LRETBL&amp;lt;/var&amp;gt; value.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; When the &amp;lt;var&amp;gt;SYSOPT2&amp;lt;/var&amp;gt; setting does not include X&#039;40&#039;, then at any given time the bit maps corresponding to all users holding found sets of any kind must fit into CCATEMP pages designated as the small model page pool no matter  how large CCATEMP has been allocated.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; When the &amp;lt;var&amp;gt;SYSOPT2&amp;lt;/var&amp;gt; setting does include X&#039;40&#039;, the CCATEMP page restriction is removed and user found sets can be placed anywhere within CCATEMP. This includes both the small model page pool and the CCATEMP expansion area,  allowing for the possibility of a greater number of concurrent found sets being held by all users.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Resource locking table===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;You can use the &amp;lt;var&amp;gt;[[$CenqCt]]&amp;lt;/var&amp;gt; function to obtain information on the number of unused entries in the resource locking table (also called: resource enqueuing table).  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Sizing the resource locking table====&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For details on estimating the size of the resource locking table, see &amp;lt;var&amp;gt;[[LENQTBL parameter|LENQTBL]]&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For z/OS, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; allocates the resource locking table above the 16-megabyte line. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Multiple jobs running on one CPU===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Locking occurs at the file level when application files are shared between multiple jobs.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;File locking modes is EXCL when:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Files are opened from a SOUL thread or an IFAM1 thread that has file update privileges.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Files are opened from an IFAM2 thread or an IFAM4 thread that has allowed updates with thread update and file update privileges.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Command is entered to create or delete a permanent group.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;File locking is SHR mode when:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Files are opened under any other circumstances than those listed above.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Files are opened in deferred update mode. Such files remain in SHR mode for the duration of the run.&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&lt;br /&gt;
Up to 192 files can be opened in deferred update mode.&lt;br /&gt;
An attempt to exceed 192 files results in an error message.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Files have the file recovery option (&amp;lt;var&amp;gt;FRCVOPT&amp;lt;/var&amp;gt;) parameter set to include X&#039;10&#039;. Locking on an application file does not occur when it is closed, unless &amp;lt;var&amp;gt;FRCVOPT&amp;lt;/var&amp;gt; is set to X&#039;10&#039;. &amp;lt;var&amp;gt;FRCVOPT&amp;lt;/var&amp;gt; is discussed extensively in [[File integrity and recovery]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; job uses the CCAGRP data set. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following sections explain how locking conflicts are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, and how data integrity is ensured when multiple jobs run on one CPU.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Handling locking conflicts===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Locking conflicts for application files are handled first by the operating system and next by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The operating system initially examines the disposition for all application files, as specified in the JCL for a job. If two jobs specify SHR for the same application file, the operating system allows both jobs access  to the file. When the second job attempts to process the application file, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; determines that another job poses a locking conflict.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reads the first page of the file and examines the lock, which is located on that page. If a conflict is detected, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; waits until the job&#039;s time limit is reached for the file to become available. Then,  if the file is not available, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; sends error messages to the operator&#039;s console and to the output device of the user who attempted to open the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Error messages are issued once every five minutes until the file becomes available, the job time limit for an online job is reached, or the maximum number of error messages for a batch job (&amp;lt;var&amp;gt;ERMX&amp;lt;/var&amp;gt;) is reached.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Messages sent to the operator&#039;s console are:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; For an Online job:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0582: ACCESS TO FILE &amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt; PREVENTED BY: &amp;lt;i&amp;gt;jobname&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0584: FILE IS IN USE &amp;amp;mdash; &amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For a batch job the message sent from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to the operator:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0582: ACCESS TO FILE &amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt; PREVENTED BY: &amp;lt;i&amp;gt;jobname&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0581: ENQ&#039;ING TO SHR FOR FILE &amp;lt;i&amp;gt;filename volname&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0582: ACCESS TO FILE &amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt; PREVENTED BY: &amp;lt;i&amp;gt;jobname&amp;lt;/i&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0583: ENQ&#039;ING TO EXCL FOR FILE &amp;lt;i&amp;gt;filename volname&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Data integrity===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When multiple jobs run on the same CPU, data integrity is ensured by using:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Operating system locking and unlocking facility for shared application files and the system file containing file group definitions (CCAGRP).&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Special lock stored in the system file containing user and file security information (CCASTAT).&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Restriction on sharing the system file that provides space for user work tables (CCASERVR) and the system scratch file (CCATEMP) between jobs.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Multiple Model 204 versions running on separate CPUs===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The operating system file locking mechanism prevents concurrent updating and retrieval of data sets by jobs that run on separate CPUs. The RESERVE/RELEASE hardware feature restricts use of a device to a single CPU  in the following ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Device containing a file&#039;s first data set can be reserved when control of the file is gained on one CPU and one of the following conditions is true:&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; File is opened in a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; job for the first time.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; File that was read-only is first opened for update.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Last updating user closes the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; File is completely closed. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Device is released in each case after a single disk read and disk write have been performed.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Each file contains a list of jobs that have control of the file. The list is read and updated only while the device is reserved. If control of the file cannot be obtained, then the list is not updated, and the list of  jobs preventing access, with their system IDs, is sent to the operator.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Each list entry contains the following information:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; SMF system ID lock type (SHR or EXCL)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Job and step names&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Date and time that the list entry was created&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===How Model 204 resolves locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locking conflicts can be handled automatically or by issuing the &amp;lt;var&amp;gt;[[ENQCTL command|ENQCTL]]&amp;lt;/var&amp;gt; command.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Conflicts are handled automatically in single CPU error cases where a&lt;br /&gt;
 &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; job has a file open and either the operating system crashes or the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; job is canceled. In these instances, the locking list in the file still shows the file as locked and the following process occurs:   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; When a file is opened, the locking list is processed after the operating system enqueuing. If the operating system enqueuing succeeds, there is no conflicting job on the requesting job&#039;s system. Any conflicting list  entries for the same system are obsolete.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If the locking request is exclusive, any list entries for the current system are eliminated as obsolete.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If the request is shared, any exclusive entries for the current system and any shared entry having the same system ID, job, and step names are eliminated.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Locking conflicts between CPUs===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;You can clear conflicts occurring between CPUs by issuing the &amp;lt;var&amp;gt;ENQCTL&amp;lt;/var&amp;gt; command to interrogate or modify the status of a file&#039;s locking list. The following rules apply to the &amp;lt;var&amp;gt;ENQCTL&amp;lt;/var&amp;gt; command: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If an &amp;lt;var&amp;gt;ENQCTL&amp;lt;/var&amp;gt; command is issued with only a file name, all list entries for the file are displayed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If an &amp;lt;var&amp;gt;ENQCTL&amp;lt;/var&amp;gt; command is issued with arguments, all the entries satisfying the arguments are deleted.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For example, if a system crash occurs for system S133, the operator at another system can issue the following command to remove all the locking list entries from CENSUS that were added by jobs running on system S133:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ENQCTL CENSUS S133&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Indiscriminate use of the &amp;lt;var&amp;gt;ENQCTL&amp;lt;/var&amp;gt; command can cause shared DASD integrity exposure through the removal of entries of active systems or jobs. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Shared DASD locking conflicts===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If a shared DASD locking conflict occurs, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; sends an error message to the operator&#039;s console. Error messages are issued once every five minutes until the conflict is resolved and the file becomes available.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Messages sent to the operator&#039;s console are:   &amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; For a batch job:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0582: ACCESS TO FILE &amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt; PREVENTED BY: &amp;lt;i&amp;gt;jobname&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0584: FILE IS IN USE -- &amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&lt;br /&gt;
Both of these messages increment the error count for the batch job. Because the batch OPEN command is aborted after the specified maximum number of errors (ERMX) is reached, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; does not wait indefinitely for the conflict to be resolved. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For active system or job locking list entries deleted by using the ENQCTL command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** M204.0585: SHARED DASD ENQ LIST OVERLAID FOR&lt;br /&gt;
&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt; AT &amp;lt;i&amp;gt;hh&amp;lt;/i&amp;gt;:&amp;lt;i&amp;gt;mm&amp;lt;/i&amp;gt;:&amp;lt;i&amp;gt;ss&amp;lt;/i&amp;gt; ON &amp;lt;i&amp;gt;yy&amp;lt;/i&amp;gt;.&amp;lt;i&amp;gt;ddd&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The date and time identify the most recent update of the file. Used in conjunction with the operating system job logs, this information can determine the cause of the problem. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===z/VSE considerations===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following considerations apply to resource locking in a z/VSE environment:&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; File locking is available for z/VSE releases that support LOCK and UNLOCK (SVC 110).&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Multiple copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; running in separate z/VSE systems cannot share any &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; database files.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Resource locking in z/VM=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following considerations apply to resource locking in z/VM environments:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CMS-format disks cannot be shared in read/write mode by multiple virtual or real machines. Any attempt at SHR access destroys the data. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The file allocation techniques that are used and the lack of support in CMS for access serialization prevent effective read/write file sharing.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files on CMS-format disks do not require preallocation. The files are created automatically the first time they are referenced and continue to increase in size as more data is added. File size is restricted only by the  available space defined on the minidisk.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Several virtual machines can share variable-format disks by using virtual RESERVE/RELEASE facilities. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
RESERVE/RELEASE permits access to a volume restricted to a particular (real or virtual) access path. Because allocations are static in nature, a file can be read and written without further reference to the allocation  information, unless secondary allocation functions are required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files on variable-format disks require preallocation. A primary allocation must be provided. Secondary extents can be specified to permit limited extension of the file. The file allocation information is recorded on a  disk in the Volume Table of Contents (VTOC).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Some files on variable-format disks can be read/write shared by multiple &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; virtual machines while others cannot:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;Files that can be shared are CCAGRP, CCAIN, CCASTAT, CCASYS, and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Files that cannot be shared are CCAAUDIT, CCAJRNL, CCAPRINT, CCARF, CCASERVR, CCASNAP, CCATEMP, CHKPOINT, RESTART, USE data sets, and deferred update data sets. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;SHR mode access on a read-only device can cause data inconsistencies. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a CMS user has SHR access to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; file on a read-only minidisk, SHR does not prevent another user from upgrading to the EXCL mode. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Disk buffers and Model 204 storage==&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The disk buffer pool holds pages from database files and from CCATEMP and CCAGRP. CCATEMP pages consist of found sets, sorted sets, backpage images, temporary procedures and other  data structures. Database pages consist of pages from Tables FCT, A, B, C, D, E and X. Pages are read into and written from this buffer pool by the disk buffer manager which manages this resource using a least recently used algorithm. This pool  of buffers is shared by all users.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; utilizes the following areas of storage, depending on the operating system architecture your site supports:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Below the line, for 24-bit storage for non-XA systems: z/OS, z/VM, and z/VSE&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Above the line, for sites that support 31-bit storage for OS/390, XA, ESA, z/OS, z/VM, and z/VSE&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Above the bar, for sites that support 64-bit storage for z/OS, z/VM, and z/VSE&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The buffer pool consists of the following data structures: &amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Disk Buffer Control Blocks: 160 bytes each, one per buffer&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Hash cells: 16 bytes each. The number of hash cells allocated for each buffer is equal to the &amp;lt;var&amp;gt;[[HASHCELL parameter|HASHCELL]]&amp;lt;/var&amp;gt; parameter value, which defaults to 3. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Page fix lists: 16 bytes per buffer&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Buffers: 6184 bytes, plus 8-byte overrun detection area &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The disk buffer overrun detection area, the space between each buffer in the disk buffer pool, is eight bytes of hexadecimal FF, so for each buffer, 6192 bytes is allocated. The total size  of the buffer pool is then:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;(NUMBUF + NUMBUFG) * (6192 + 160 + (16*HASHCELL) + 16)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;[[NUMBUF parameter|NUMBUF]]&amp;lt;/var&amp;gt; is a viewable parameter that is equal to the number of buffers allocated above the line. &amp;lt;var&amp;gt;NUMBUF&amp;lt;/var&amp;gt; is equal to or less than &amp;lt;var&amp;gt;[[MAXBUF parameter|MAXBUF]]&amp;lt;/var&amp;gt;, depending on the amount of virtual storage available to the job.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;[[NUMBUFG parameter|NUMBUFG]]&amp;lt;/var&amp;gt; is a settable and viewable parameter that is equal to the number of buffers allocated above the bar (ATB). If &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; buffers cannot be allocated in available above the bar storage, the run terminates.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; As of version 7.7 of Model&amp;amp;nbsp;204, either &lt;br /&gt;
&amp;lt;var&amp;gt;NUMBUF&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is 0: all disk buffer storage&lt;br /&gt;
is allocated BTB, or all is allocated ATB, depending on the setting of &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using 31-bit storage===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When BTB buffers are being used (that is, &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is 0 under version 7.7 or higher, or &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is any value under Model&amp;amp;nbsp;204 prior to 7.7) in systems that support 31-bit addressing, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; disk buffers are allocated above the 16-megabyte line. This frees virtual storage for other data that must remain below the line, and  it allows for the allocation of a larger buffer pool, since there is more virtual storage above the line. As the number of buffers increases, database pages can remain in memory for longer periods of time, and repeated reads (I/O) for the same pages  are reduced.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; If [[IOS Branch Entry]] (&amp;lt;var&amp;gt;[[XMEMOPT parameter|XMEMOPT]]&amp;lt;/var&amp;gt; X&#039;02&#039;) is used, control blocks, hash cells, and page fix lists are allocated above the line. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; If IOS Branch Entry is not used, the disk buffer control blocks and hash cells (and page fix lists if EXCPVR is used) are allocated below the line. The buffers themselves are allocated above the line.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt;&lt;br /&gt;
For information about controlling the allocation of hash cells per buffer pool page, see the &amp;lt;var&amp;gt;[[HASHCELL parameter|HASHCELL]]&amp;lt;/var&amp;gt; parameter. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A minimum number of BTB buffers is required to bring up an Online configuration:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;Model&amp;amp;nbsp;204 7.6 or lower:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The minimum number of buffers is equal to the result of the following calculation: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NLRUQ * ((NSERVS + NSUBTKS) * MAXOBUF + 15)&lt;br /&gt;
&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var&amp;gt;[[MINBUF parameter|MINBUF]]&amp;lt;/var&amp;gt; is set smaller than the above result, Model&amp;amp;nbsp;204 resets &amp;lt;var&amp;gt;MINBUF&amp;lt;/var&amp;gt; to the result value. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; is smaller than &amp;lt;var&amp;gt;MINBUF&amp;lt;/var&amp;gt; after the previous calculation, &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; is reset to the value of &amp;lt;var&amp;gt;MINBUF&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software recommends that you start with a minimum setting of &amp;lt;code&amp;gt;MAXBUF=10000&amp;lt;/code&amp;gt; and monitor performance statistics to determine if that number is adequate. Generally, performance will improve as the size of the buffer pool increases. That will not be the case, however, if real storage is limited and system paging increases. Many sites are running with &amp;lt;code&amp;gt;MAXBUF=50000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;100000&amp;lt;/code&amp;gt;, or more.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Model&amp;amp;nbsp;204 7.7 and higher:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is 0, only BTB buffers are used, and the minimum number of buffers calculation and the effects on &amp;lt;var&amp;gt;MINBUF&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; are as described in the preceding item. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is greater than 0, only ATB buffers are used, and the minimum number of ATB buffers is described in [[#Managing ATB storage with NUMBUFG|Managing ATB storage with NUMBUFG]].&lt;br /&gt;
&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using 64-bit addressing and Above the Bar (ATB) storage===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In systems that support 64-bit virtual storage, you can place Table B and Table X pages (and other entities listed in [[Model 204 configurations and operating environments#Model 204 entities in above the bar storage|Model&amp;amp;nbsp;204 entities in above the bar storage]]) in the above-the-bar buffer pool, or above the two gigabyte (2GB) address line. Pages that are not stored above the bar reside in the buffer pool above the line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Important:&amp;lt;/b&amp;gt; &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For Model&amp;amp;nbsp;204 version 7.4, you should ensure that your user-written and third-party $functions can work with non-swappable server tables in 64-bit storage above the bar.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For Model&amp;amp;nbsp;204 version 7.5 and higher, any assembler language functions that you have written for use within Model&amp;amp;nbsp;204 version 7.5 &amp;lt;b&amp;gt;must&amp;lt;/b&amp;gt; be 64-bit compliant. [[Contacting Rocket Software Technical Support|Contact Technical Support]] if you need help with conversion of your functions.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For Model&amp;amp;nbsp;204 version 7.7 and higher, activating usage of ATB buffers (setting &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; greater than 0) causes all buffer storage to be ATB and none to be BTB. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Prior to the gradual introduction of ATB storage for Model&amp;amp;nbsp;204, storage was rather limited, so Model&amp;amp;nbsp;204 took all the storage it could, returned &amp;lt;var&amp;gt;[[SPCORE parameter|SPCORE]]&amp;lt;/var&amp;gt; bytes, and allocated the rest into the buffer pool.&lt;br /&gt;
If the resulting number of buffers was not between &amp;lt;var&amp;gt;MINBUF&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt;, the run terminated.&lt;br /&gt;
On more contemporary systems, virtual storage is abundant, making obsolete the concept of calculating the amount of storage (BTB) that will fit.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following documentation retains many remarks that apply to versions preceding 7.7 where ATB and BTB buffers might both be used together. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In most cases, Table B pages constitute the biggest portion of all pages in the buffer pool. Moving Table B pages to an above-the-bar buffer pool lets &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; place more pages from all other tables in the below-the-bar buffer pool and thereby reduce I/O and CPU time to read and write pages to and from disk. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; When a buffer is allocated above the bar, the corresponding disk buffer control blocks (one per buffer, 160 bytes each) and hash cells (three per buffer, 16 bytes each) are also allocated above the bar. This means there is no below the bar storage penalty for allocating above-the-bar buffers.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Having these two buffer pools rather than one improves &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; scalability by reducing MP collisions when using buffer pool resources. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Eight bytes added to the end of every buffer, above and below the bar, detect buffer overruns. The buffer size per page is 6192 bytes (or 6184 plus 8).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Managing ATB storage with NUMBUFG====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; If you set &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; greater than zero to use storage above the bar, IBM requires that you set a limit on how much of that virtual storage each address space can use. This limit is called [[Model 204 configurations and operating environments#Set the IBM MEMLIMIT system option|MEMLIMIT]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is set to a nonzero value, an above-the-bar buffer pool is allocated with &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; buffers. As of Model&amp;amp;nbsp;204 7.7, this ATB buffer pool handles all disk buffer storage, and you get the exact amount of storage you specify with &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt;. Before version 7.7 of Model&amp;amp;nbsp;204, nonzero &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; activates an ATB buffer pool &amp;lt;i&amp;gt;in addition to&amp;lt;/i&amp;gt; the BTB buffer pool. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If ATB and BTB buffer pools are both being used: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;The ATB and the BTB buffer pool are allocated with at least a minimum number of buffers, and the calculations for those minimums are very similar:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The ATB minimum, calculated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[[NLRUQG parameter|NLRUQG]] * ((NSERVS + NSUBTKS) * MAXOBUF + 15)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you set &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; to a lower value, it is reset to the calculated value.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The BTB minimum is:&amp;lt;/p&amp;gt; &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[[NLRUQ parameter|NLRUQ]] * ((NSERVS + NSUBTKS) * MAXOBUF + 15)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you set &amp;lt;var&amp;gt;MINBUF&amp;lt;/var&amp;gt; to a lower value, it is reset to the calculated value.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Table B and Table X pages (and other entities listed in [[Model 204 configurations and operating environments#Model 204 entities in above the bar storage|Model 204 entities in above the bar storage]]) use the above-the-bar buffer pool. Those pages are not read into the below-the-bar buffer pool. Consequently, most sites can reduce the size of the below-the-bar buffer pool by the highwater mark of Table B pages currently resident in that buffer pool.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;To quickly implement the above-the-bar feature, initially set &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; equal to your &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; setting and leave &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; at its current setting.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is greater than zero, the buffer hash pool is allocated above the bar. In addition, control blocks associated with ATB buffers are also allocated above the bar. &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is limited to buffer pools of 4.2 terabytes or fewer.&amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;To use the above-the-bar buffer pool in z/OS, IOS Branch Entry is required. This means &amp;lt;var&amp;gt;[[XMEMOPT parameter|XMEMOPT]]&amp;lt;/var&amp;gt; must be set to include X&#039;02&#039;. You can explicitly exclude allocating above-the-bar buffers by setting &amp;lt;code&amp;gt;NUMBUFG=0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is greater than zero and &amp;lt;var&amp;gt;XMEMOPT&amp;lt;/var&amp;gt; does not include X&#039;02&#039;, the following message is issued, &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is not reset, and the job terminates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.2581: XMEMOPT=2 (IOS BRANCH) REQUIRED FOR NUMBUFG &amp;gt; 0&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you cannot get the number of buffers you requested, the job fails. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Determining the NUMBUFG setting====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The number of buffers you want to allocate above the bar and below the bar is dependent on the mix of work that is being done on your system. See [[#Model 204 entities in above the bar storage|Model 204 entities in above the bar storage]] for a list of entities that can go above the bar. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; The &amp;lt;var&amp;gt;[[LDKBMWNG parameter|LDKBMWNG]]&amp;lt;/var&amp;gt; parameter, which applies to above-the-bar buffers, corresponds to the &amp;lt;var&amp;gt;[[LDKBMWND parameter|LDKBMWND]]&amp;lt;/var&amp;gt; parameter, which applies to below-the-bar buffers.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If &amp;lt;var&amp;gt;NLRUQG&amp;lt;/var&amp;gt; is set greater than 1, the value of &amp;lt;var&amp;gt;LDKBMWNG&amp;lt;/var&amp;gt; is rounded up to a multiple of &amp;lt;var&amp;gt;NLRUQ&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;LDKBMWND&amp;lt;/var&amp;gt; has a minimum size of one (1).&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;High values of &amp;lt;var&amp;gt;LDKBMWNG&amp;lt;/var&amp;gt; might unnecessarily increase the number of writes done (measured by the DKWR statistic). Low values might cause excessive waiting for buffers (measured by the MAXIOX statistic). Rocket Software  recommends starting values for &amp;lt;var&amp;gt;LDKBMWND&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;LDKBMWNG&amp;lt;/var&amp;gt; at 10% of &amp;lt;var&amp;gt;NUMBUF&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt;, respectively.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If you do not set &amp;lt;var&amp;gt;LDKBMWNG&amp;lt;/var&amp;gt;, it is set to the same value as &amp;lt;var&amp;gt;LDKBMWND&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Designating non-swappable and swappable server space====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can allocate designated server tables for each user in storage above the bar that will not be subject to server swapping. This feature enables you to divide the server storage into two parts: swappable and non-swappable. This makes the swappable part of the server storage smaller and faster to swap.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var&amp;gt;[[SERVNSSZ parameter|SERVNSSZ]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[SERVNSA parameter|SERVNSA]]&amp;lt;/var&amp;gt; parameters control non-swappable server areas.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;SERVNSSZ&amp;lt;/var&amp;gt; (server non-swappable size) is the amount of space in bytes required for the above the bar server tables per user.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; (server non-swappable areas) specifies the tables above the bar.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
In order to store a table in ATB storage:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Increase the &amp;lt;var&amp;gt;SERVNSSZ&amp;lt;/var&amp;gt; parameter by the corresponding table size.&amp;lt;/li&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Set the proper bit in &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt;; for example: &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For FTBL, set the first byte to X&#039;02&#039;, so the value of &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; is X&#039;02000000&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For GTBL, set the second byte to X&#039;80&#039;, so the value of &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; is X&#039;00800000&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For NTBL, set the third byte to X&#039;40&#039;, so the value of &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; is X&#039;00004000&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For QTBL, set the third byte to X&#039;20&#039;, so the value of &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; is X&#039;00002000&#039;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; The settings for each server table above the bar are independent of each other. So if FTBL, GTBL, NTBL, and QTBL are all placed above the bar, &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; should be set to X&#039;02806000&#039;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The non-swappable server part can be used with server swapping done in storage or on disk. It can also be used when there is no server swapping (&amp;lt;var&amp;gt;NUSERS&amp;lt;/var&amp;gt;=&amp;lt;var&amp;gt;NSERVS&amp;lt;/var&amp;gt;) to make servers below the bar smaller by using the non-swappable server part above the bar and saving storage below the bar.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To obtain below-the-bar storage savings when the non-swappable server part is used, decrease the value of the &amp;lt;var&amp;gt;SERVSIZE&amp;lt;/var&amp;gt; parameter by the &amp;lt;var&amp;gt;LFTBL&amp;lt;/var&amp;gt; value used in calculating the server size.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; When a table such as FTBL is placed in the non-swappable server part above the bar, the &amp;lt;var&amp;gt;[[UTABLE command|UTABLE]]&amp;lt;/var&amp;gt; command decreasing the table size will not free any storage in the regular server below the bar.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When using non-swappable ATB server space, each user will get &amp;lt;var&amp;gt;SERVNSSZ&amp;lt;/var&amp;gt; bytes of ATB space, even if the thread is logged out or running resident requests. &lt;br /&gt;
&lt;br /&gt;
For greater efficiency, Model&amp;amp;nbsp;204 version 7.5 also provides swappable ATB server areas that can supplement or replace the non-swappable areas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var&amp;gt;[[SERVGA parameter|SERVGA]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[SERVGSZ parameter|SERVGSZ]]&amp;lt;/var&amp;gt; parameters control swappable server areas.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;SERVGA&amp;lt;/var&amp;gt; (server swappable areas) specifies the tables above the bar. Each server table is controlled by a bit in SERVGA.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;SERVGSZ&amp;lt;/var&amp;gt; (server non-swappable size) is the amount of space in bytes required for the swappable above-the-bar server tables per server. The total amount of storage allocated for swappable above-the-bar server areas equals &amp;lt;var&amp;gt;SERVGSZ&amp;lt;/var&amp;gt; rounded to 4K and multiplied by &amp;lt;var&amp;gt;[[NSERVS parameter|NSERVS]]&amp;lt;/var&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; In Model&amp;amp;nbsp;204 V7.5 and higher, server tables can be in three different places:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The BTB swappable server area &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The ATB swappable server area &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The ATB non-swappable server area &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;  &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
But server tables cannot be in two places at the same time. For example, you cannot make servers swappable and non-swappable at the same time. If, for instance, you set the NTBL bit on for the &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; parameter, and you also set it on for &amp;lt;var&amp;gt;SERVGA&amp;lt;/var&amp;gt;, the result would be: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.1399: Same server area defined for server above the bar and non-swappable server&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
However, you can make parts of your server swappable and other parts non-swappable: the non-swappable areas are like having &amp;lt;code&amp;gt;NUSERS=NSERVS&amp;lt;/code&amp;gt;, but only for some tables. So if you had large STBLs and GTBLs, you might want to make them non-swappable to reduce server swap times. And if you had small TTBLs and ITBLs, you might want to put them in the swappable area. Any table in the above-the-bar SRVR (the swappable part of the server) is not taking up space in the below-the-bar server. The same is true for any table in the ATB-non-swappable part of the server. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The goal is to reduce the requirement for below-the-bar server area so that you can increase &amp;lt;var&amp;gt;NSERVS&amp;lt;/var&amp;gt; (as &amp;lt;var&amp;gt;NSERVS&amp;lt;/var&amp;gt; increases, so does the need for below-the-bar virtual storage).  &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ATB storage for APSY precompiled procedures====&lt;br /&gt;
The &amp;lt;var&amp;gt;[[RESPAGE parameter|RESPAGE]]&amp;lt;/var&amp;gt; parameter activates the APSY [[Performance monitoring and tuning#Resident Request feature for precompiled procedures|precompiled procedures in storage]] feature using above-the-bar pages by specifying a number of 4K-byte operating system pages. &lt;br /&gt;
&lt;br /&gt;
Specifying &amp;lt;var&amp;gt;RESPAGE&amp;lt;/var&amp;gt; stores precompiled procedures as resident requests above the bar in the &amp;lt;var&amp;gt;RESPAGE&amp;lt;/var&amp;gt; area. Using &amp;lt;var&amp;gt;RESPAGE&amp;lt;/var&amp;gt; allows you to substantially increase the resident request area and decrease server swapping of QTBL and NTBL pages. &lt;br /&gt;
&lt;br /&gt;
Also, when &amp;lt;var&amp;gt;RESPAGE&amp;lt;/var&amp;gt; is greater than 0, &amp;lt;var&amp;gt;RESSIZE&amp;lt;/var&amp;gt; is reset to -1, and no storage is allocated for &amp;lt;var&amp;gt;RESSIZE&amp;lt;/var&amp;gt;.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;RESPAGE&amp;lt;/var&amp;gt; is independent of &amp;lt;var&amp;gt;[[SERVNSA parameter|SERVNSA]]&amp;lt;/var&amp;gt;. That is, if &amp;lt;var&amp;gt;RESPAGE&amp;lt;/var&amp;gt; is greater than 0, NTBL and QTBL for resident requests will always be stored in the resident request area, outside of the non-swappable server areas, even if the &amp;lt;var&amp;gt;SERVNSA&amp;lt;/var&amp;gt; bits specify NTBL or QTBL are to be stored in the non-swappable server areas.  This avoids the duplication of storing NTBL and QTBL in two different locations.  In other words, a resident request is only stored in the resident request area and nowhere else.   &lt;br /&gt;
&lt;br /&gt;
Storing resident requests above the bar is independent of tables above the bar. You can use a combination of resident requests and swappable servers ATB to reduce BTB-server sizes and thus increase the number of servers.&lt;br /&gt;
&lt;br /&gt;
====ATB storage for EBM pages====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Existence Bit Map (EBM) pages reside in above the bar storage. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; file contains one EBM page for each segment in a file. If a file has five segments, that means there are five EBM pages for that file. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
To allow more ATB buffers for the EBM pages, increase the &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; setting by a value that accommodates all the EBM pages for all files that might be open concurrently in your job. If in addition the version of Model&amp;amp;nbsp;204 is lower than 7.7, BTB buffers are also being used, and you can reduce the &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; parameter by the same amount you increased &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; for EBM pages.  &lt;br /&gt;
&lt;br /&gt;
====ATB storage for procedure pages====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Procedure text pages, located in Table D, are also eligible to reside in the ATB buffer pool. Each SOUL procedure is stored in one or more procedure text pages, the initial page of which is pointed to by the procedure dictionary. (Pages from the procedure dictionary, which is also stored in Table D, are read into the BTB buffer pool.)&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;In a development environment where procedure page volume is high and where &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is allocated, you might need to increase &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; to accommodate the procedure text pages. In this case, if BTB buffers are also being used (Model&amp;amp;nbsp;204 version less than 7.7), you can reduce the &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; parameter by the same amount you increased &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ATB storage for screens and images====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Pages used for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;SCREEN&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;IMAGE&amp;lt;/var&amp;gt; items reside in the buffer pool above the bar.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ATB storage for hash table cells==== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The hash table is used to locate pages in the buffer pool based on the file and page number. You control the number of hash cells allocated in the hash table with the parameter &amp;lt;var&amp;gt;[[HASHCELL parameter|HASHCELL]]&amp;lt;/var&amp;gt;. If &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; is also set to a value greater than zero to allocate buffers above the bar, the hash cells are also allocated above the bar. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ATB storage for XmlDoc object pages====&lt;br /&gt;
As of Model&amp;amp;nbsp;204 version 7.5, the CCATEMP pages used for &amp;lt;var&amp;gt;XmlDoc&amp;lt;/var&amp;gt; objects use the ATB buffer pool, which might allow the BTB buffer pool to be reduced, perhaps providing more storage for server areas. It also might provide a reduction in CPU utilization, especially when the &amp;lt;var&amp;gt;[[TEMPPAGE parameter|TEMPPAGE]]&amp;lt;/var&amp;gt; parameter is used to allocate CCATEMP in memory.&lt;br /&gt;
&lt;br /&gt;
===Monitoring disk buffers===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To get started using ATB buffers in an environment where both ATB and BTB buffers will be used, you might want to implement &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt;, then do more analysis later. A suggested starting value for &amp;lt;var&amp;gt;NUMBUFG&amp;lt;/var&amp;gt; in this case is equal to your &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; setting (while leaving &amp;lt;var&amp;gt;MAXBUF&amp;lt;/var&amp;gt; at its current setting). Then use the [[MONITOR command: Disk buffers|MONITOR DISKBUFF commands]] to analyze the buffer pool utilizations. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Managing delayed disk updates==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The disk update process allows delayed disk updates, which avoids duplicate database writes in certain situations.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When a user completes an update unit for a file and there are no other update units active against that file, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; writes the buffer to disk with all of the file&#039;s modified pages, marks the file as physically  consistent, and issues a message stating that the disk update is complete. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Specifying delayed updates with the DKUPDTWT parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CCAIN parameter &amp;lt;var&amp;gt;[[DKUPDTWT parameter|DKUPDTWT]]&amp;lt;/var&amp;gt; specifies delayed disk updates. The value of &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; determines how many seconds a disk buffer containing a file&#039;s modified pages must have aged before it can be written to disk. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; is zero, the default value, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; writes all of the file&#039;s modified pages to disk at the end of the last in-flight update of the file. The user who completed the last in-flight update waits for this disk  update process to complete and for the message stating that the disk update is complete. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; is not zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; delays the start of the disk update process for at least &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; seconds, after which it may be the checkpoint pseudo subtask (CHKPPST) that performs the disk update. The user who  completed the last in-flight update does not have to wait for the disk update process to complete. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; is not zero, the CHKPPST and CHKPTIMR pseudo subtasks are started automatically at &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; initialization. An error message informs you if the &amp;lt;var&amp;gt;NSUBTKS&amp;lt;/var&amp;gt; parameter is set too low to start these pseudo  subtasks.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The maximum value of &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; depends on the value of the &amp;lt;var&amp;gt;CPTIME&amp;lt;/var&amp;gt; parameter. If &amp;lt;var&amp;gt;CPTIME&amp;lt;/var&amp;gt; is nonzero, &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; must be less than or equal to &amp;lt;code&amp;gt;CPTIME*30&amp;lt;/code&amp;gt;. The absolute maximum value of &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; is 60. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The system manager can reset &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; to zero while the online is running. It can be reset to a nonzero value as long as the CHKPPST and CHKPTIMR pseudo subtasks were started during &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; initialization.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Handling delayed updates and CHKPPST=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CHKPPST pseudo subtask plays a central role in handling delayed disk updates. When &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; is set to 0, CHKPPST does the following:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Sleeps for &amp;lt;var&amp;gt;CPTIME&amp;lt;/var&amp;gt; minutes.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Tries to quiesce updates, for up to &amp;lt;var&amp;gt;CPTQ&amp;lt;/var&amp;gt;, plus &amp;lt;var&amp;gt;CPTO&amp;lt;/var&amp;gt; seconds.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Takes the checkpoint, if all updates are quiesced.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If &amp;lt;var&amp;gt;DKUPDTW&amp;lt;/var&amp;gt;T is greater than 0, CHKPPST has substantially more processing to perform: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Sleeps for &amp;lt;var&amp;gt;DKUPDTWT&amp;lt;/var&amp;gt; divided by four seconds.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Further processing depends on the value, rounded to the nearest integer of:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;N = (CPTIME * 60) / (DKUPDTWT / 4)&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Attempting a checkpoint===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the number of wake-up calls since the last checkpoint is &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, CHKPPST takes a new checkpoint, as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Attempt &amp;lt;/p&amp;gt; &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Purpose&amp;lt;/p&amp;gt; &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Performs the disk update process on all files that are not being updated, regardless of how long since they were marked disk-update-needed. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;2. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Attempts to deactivate Host Language Interface (HLI) updates for CPTQ seconds. Performs the disk update process on all files that are not being updated each time &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; determines that there are more HLI  jobs to wait for.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;3. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Attempts to deactivate all other updates for CPTO seconds. Performs the disk update process on all files that are not being updated each time &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; determines that there are more users to wait for. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;4. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If all updates have been deactivated, performs the disk update process on all remaining files marked disk-update-needed. Otherwise, abandons the checkpoint attempt. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;5. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Performs the disk update process again. Then takes the checkpoint. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;6. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If the number of wake-up calls since the last checkpoint is not &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, CHKPPST performs the disk update process on all files that have aged sufficiently &amp;amp;mdash; that is, marked disk-update-needed for at least DKUPDTWT seconds. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Factors affecting disk update and checkpoint processing===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Several important factors affect the processing of disk updates and checkpoints:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Some disk updates might be interrupted by another thread&#039;s request for the file&#039;s UPDATE resource. Attempts 1, 2, 3, 4, and 6 might be interrupted by an attempt to start a new update or by a user doing a disk  update as part of CLOSE FILE processing. In these cases, the following message is issued, and the next file is processed:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.0440: DISK UPDATED ABORTED&lt;br /&gt;
&amp;lt;/p&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Attempts 2, 3, and 4 might be interrupted by the expiration of the waiting time set with &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; parameters CPTQ and CPTO, respectively. In these cases, the M204.0440 message is issued, all remaining files are bypassed,  and the checkpoint is timed out.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If CPTQ and CPTO are zero (no time-out intervals specified) and the DKUPDTWT parameter is nonzero, updates are deactivated for as long as required to perform the disk update process for all available files. If you do  not want checkpoint attempts to deactivate updates, set DKUPDTWT to zero.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; If Attempts 2, 3, or 4 abort due to a CPTO or CPTQ time-out, the checkpoint time-out message indicates the name of the file being written at the time of the time-out:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.0843: CHECKPOINT TIMED OUT ON date/time UPDATING FILE file&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Attempt 5 cannot be interrupted once it begins. Therefore, CPTO and CPTQ intervals are not honored for a CLOSE FILE command that is blocking a checkpoint. This type of event is likely to be infrequent and of short  duration.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; The sleep intervals of CHKPPST are not adjusted by the amount of time required to perform Attempt 6. Therefore, checkpoints might be spaced out by more than CPTIME minutes. If this is a frequent problem, adjust  CPTIME downward.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Understanding file statistics== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For descriptions of the file statistics DKUPTIME, UPDTTIME, and PDNGTIME, see [[Performance monitoring and tuning#Disk buffer monitor statistics and parameters|Disk buffer monitor statistics and parameters]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Handling 64-bit statistics===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To support very long running &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; regions, Model&amp;amp;nbsp;204 V7R1 included modifications to the capacity of statistical counters (by increasing the size of some statistics and also exploiting 64-bit processing where appropriate). For sites upgrading to V7R1 or later, in-house or third-party support applications that process statistical counters need to review the statistics generated:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;As some of the statistics fields became double-words, check [[Using system statistics]] for a revised layout of the System, Final, and Partial statistics. Also, additional Disk Buffer Monitor, MP/204, and File statistics were updated.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Examine your in-house or third-party support applications for changes you need to make because of the increased length of some of the statistics. Make any changes necessary to your applications, then reassemble with the release upgrade.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;If your in-house or third party support applications don&#039;t reference any of these double word statistics, you only need to reassemble your program with the updated offsets.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Server areas==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Server areas are the internal work areas allocated to each user. Each area is divided into a fixed and variable portion. The fixed portion, which includes logical I/O buffers and user  resettable parameters, is calculated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; at initialization. The variable portion can be changed dynamically with the &amp;lt;var&amp;gt;[[UTABLE command|UTABLE]]&amp;lt;/var&amp;gt; command or the &amp;lt;var&amp;gt;[[IFUTBL (HLI function)|IFUTBL]]&amp;lt;/var&amp;gt; IFAM function. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Sizing user server areas===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The default size of all user server areas is set on User 0&#039;s parameter line. If the default is used, the allocated server area is exactly large enough to contain the tables for each user specified on each user&#039;s  parameter line. If &amp;lt;var&amp;gt;[[SERVSIZE parameter|SERVSIZE]]&amp;lt;/var&amp;gt; is also specified on a particular user&#039;s parameter line, the default is overridden for that user.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The value of &amp;lt;var&amp;gt;SERVSIZE&amp;lt;/var&amp;gt; must be as large as, or larger than, the user&#039;s aggregate table size. It is calculated by examining the user&#039;s server area requirements and monitoring the system statistics  (described in [[ONLINE monitoring]]) that provide information about the installation work load. The following formula gives the approximate size:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;SERVSIZE = &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fixed-table-size&amp;lt;/span&amp;gt; + &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;variable-table-size&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Where:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;fixed-table-size&amp;lt;/var&amp;gt; represents settings, defined during initialization, that cannot be modified during the run. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;variable-table-size&amp;lt;/var&amp;gt; represents settings that can be varied using the &amp;lt;var&amp;gt;UTABLE&amp;lt;/var&amp;gt; command or its IFAM equivalent, &amp;lt;var&amp;gt;IFUTBL&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====SERVSIZE and server page alignment==== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Servers and some server tables are always aligned on a 4K page boundary. In pre-7.4 releases, server and tables alignment took place only when &amp;lt;var&amp;gt;[[DSPOPT parameter|DSPOPT]]&amp;lt;/var&amp;gt; had settings of bits X&#039;01&#039; or X&#039;02&#039;, or when the &amp;lt;var&amp;gt;[[APSYPAGE parameter|APSYPAGE]]&amp;lt;/var&amp;gt; parameter was indicated. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If you used server alignment previously, there is no change in your server size requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If you did not use server alignment previously, then you might notice an increase in server size that in the worst case could be up to 24528 bytes per server.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When you calculate server size, take into account that FSCB, HEAP, NTBL, QTBL, STBL, and VTBL are each rounded on a 4K page boundary, so in the worst case each area could require up to 4088 bytes of server space,  compared to servers with no alignment in previous releases.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The following sections explain how server area sizing parameters are processed, which parameters determine fixed and variable table sizes, and the ranges of values these parameters can take.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Initialization and error handling===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
During initialization, each user, except User 0, is identified in the output before the user&#039;s parameter line is read. The aggregate size of each user&#039;s tables and the size of tables fixed during initialization are  printed after the user&#039;s parameters are read.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If errors are detected, they are reported and initialization continues whenever possible. If errors are detected during initialization, the run is canceled at the end of initialization. Error conditions in initializing  the server cause the run to end immediately with a return code of 96. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The results of user changes to the sizes of FTBL, GTBL, ITBL, and XTBL are discussed in the &amp;lt;var&amp;gt;UTABLE&amp;lt;/var&amp;gt; command [[UTABLE command#Usage notes|Usage notes]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Calculating fixed table size=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Use the following formula to calculate fixed table size, the &amp;lt;var&amp;gt;[[FIXSIZE parameter|FIXSIZE]]&amp;lt;/var&amp;gt; parameter value:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Fixed table size = 2520 &lt;br /&gt;
      + ((MAXINCL+6) * 80)dwr &lt;br /&gt;
      + ((LAUDPROC + 9) * (MAXINCL-1))dwr &lt;br /&gt;
      + (LIBUFF + 4) &lt;br /&gt;
      + (LOBUFF + 5)dwr&lt;br /&gt;
      + (LOUTPB)dwr&lt;br /&gt;
      + (((NGROUP + 12) * (NRMTFILE + NFILES + 1)) + (NRMTFILE + 1))dwr&lt;br /&gt;
      + ((NORQS*3) + 2)dwr &lt;br /&gt;
      + (3 * ERRMSGL)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each term of this formula that is followed by &amp;lt;code&amp;gt;dwr&amp;lt;/code&amp;gt; must be double word rounded to the next multiple of eight. For example, if the value of &amp;lt;var&amp;gt;LOBUFF&amp;lt;/var&amp;gt; is 500, the term &amp;lt;code&amp;gt;(LOBUFF + 5)&amp;lt;/code&amp;gt; equals 505, which must be rounded to 512, the next  multiple of 8. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If &amp;lt;var&amp;gt;SYSOPT&amp;lt;/var&amp;gt; is 1 or 2 (indicating CCASYS or CCAGRP), add 1 to the value of &amp;lt;var&amp;gt;NFILES&amp;lt;/var&amp;gt; used in the formula. If &amp;lt;var&amp;gt;SYSOPT&amp;lt;/var&amp;gt; is 3 (indicating both CCASYS and CCAGRP), add 2.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;If any SQL threads are specified in CCAIN (IODEVs 13, 17, or 19), add 6712 bytes for C language work areas.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;Fixed server table values&amp;quot; table, below, shows the minimum, maximum, and default values for parameters that affect fixed server table sizing. The rightmost columns show the relevant  units of measure; for example, the maximum value of &amp;lt;var&amp;gt;NORQS&amp;lt;/var&amp;gt; is 32767 entries (not bytes). The values of &amp;lt;var&amp;gt;LIBUFF&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;LOBUFF&amp;lt;/var&amp;gt; may need to be increased for SQL processing. Recommended values are &amp;lt;code&amp;gt;LIBUFF=3000&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;LOBUFF=5000&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;Fixed server table values&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Parameter&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Default&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Max &amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Bytes/entries&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ERRMSGL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;80&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;256&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LAUDPROC&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;21&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;253&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LIBUFF&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;255&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32767&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LOBUFF&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;256&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32767&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LOUTPB&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;0&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;3000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MAXINCL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;5&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;40&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;90+LAUDPROC bytes per INCLUDE level&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;NFILES&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16383&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;NGROUP&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;5&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16383&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;NORQS&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;5&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32767&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;NRMTFILE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;0&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16383&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Calculating variable table size===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Use the following formula to calculate variable table size:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Variable table size = 96 &lt;br /&gt;
      + ((HTLEN+5) * (MAXHDR + MAXTRL)) dwr &lt;br /&gt;
      + (LFSCB) dwr &lt;br /&gt;
      + (LFTBL) dwr&lt;br /&gt;
      + (LGTBL) dwr&lt;br /&gt;
      + (LHEAP) dwr&lt;br /&gt;
      + (LITBL) dwr&lt;br /&gt;
      + (LNTBL * 12)&lt;br /&gt;
      + (LPDLST +32) dwr&lt;br /&gt;
      + (LQTBL * 16)&lt;br /&gt;
      + (LSTBL) dwr&lt;br /&gt;
      + (LTTBL * 4)dwr&lt;br /&gt;
      + (LVTBL * 32)&lt;br /&gt;
      + (LXTBL) dwr&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each term of this formula that is followed by &amp;lt;code&amp;gt;dwr&amp;lt;/code&amp;gt; must be doubleword rounded to the next multiple of eight. The &amp;quot;Variable server table values&amp;quot; table shows minimum and maximum  values:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;Variable server table values&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Parameter&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Default&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Max &amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes/entries/lines&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;HTLEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;132&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32767&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LFSCB&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8 (as of V7.7) &amp;lt;br /&amp;gt;&lt;br /&gt;
0 (7.6 or earlier) &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;65528&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LFTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;30 million&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LGTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;288&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2 billion&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LHEAP&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;0&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2 million&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LITBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8 (as of V7.7) &amp;lt;br /&amp;gt;&lt;br /&gt;
0 (7.6 or earlier) &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32760&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LNTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;50&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32760&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12-byte entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LPDLST&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;2600&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32760&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LQTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;400&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;262,143&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16-byte entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LSTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;600&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16M&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LTTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;50&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8190&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4-byte entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LVTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;50&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;524287&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32-byte entries&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;LXTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;1000&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32760&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bytes&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MAXHDR&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;5&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32767&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lines&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MAXTRL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;5&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32767&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lines&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Server tables==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Server tables are sections of the server area used by the SOUL compiler and evaluator to store all the information necessary to run a request. Some server tables are also used by the editor and HLI functions.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Each user has a copy of the server tables in the server. Table sizes are controlled by the parameters shown in the [[#User 0 parameters|&amp;quot;Common runtime parameters&amp;quot; table]]. Parameter settings on the  user&#039;s parameter line affect the size of the servers and the region.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;quot;Summary of server tables&amp;quot; lists the server tables. Further information on individual tables is contained in the subsections that follow.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;Summary of server tables&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Table&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&amp;lt;p&amp;gt;Contents&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;FSCB&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Menu, screen, and image information&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;FTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;File groups&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;GTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Global variables&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;ITBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Dummy string and $READ responses&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;NTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Statement labels, list names, and variables&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;QTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Statements in internal form (quadruples)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;RTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;User privileges, class, and field level security information&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;STBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Character strings&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;TTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Temporary work pages&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;VTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Compiler variables&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;XTBL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Procedure security&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Full-screen buffer table (FSCB)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen buffer table (FSCB) stores menu, screen, and image definitions, in addition to the values of screen variables and image data blocks. FSCB space is reused by each logical menu definition, logical  screen definition, or block definition.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The FSCB must be large enough to hold the largest screen, image, or menu definition. The following space is required:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;144 bytes of fixed overhead for every menu, including the menu title&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;144 bytes for each menu prompt&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;432 bytes of fixed overhead for the first panel of every screen:&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;144 bytes for each subsequent panel, including the screen title&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;32 bytes for each screen prompt and input item&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;32 bytes for every screen line containing at least one input item&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;80 bytes for each defined screen line, including skipped lines&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Additional space for automatic validation, including:&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;2 or 4 bytes for each automatic validation option&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;256 bytes for the VERIFY command when a particular character set is used in a compiled screen for the first time&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Additional occurrences of the same character set do not add extra space. ONEOF and character RANGE store each character string plus one byte for each string&#039;s length.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;8 bytes for each number in a NUMERIC RANGE statement (16 bytes for each range pair)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Space for every block used in image definition&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The amount of required space is computed as the sum of the specific [[SOUL]] statements, clauses, and items. For a complete list of these values, see [[Full-screen feature]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File group table (FTBL)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Data structures particular to file groups are stored in FTBL. FTBL entries are:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Sixty-two-byte fixed size entry plus six bytes for each file in the group definition.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;This entry is allocated each time a group is opened (explicitly by the OPEN command or implicitly for an ad hoc group) and is released when the group is closed.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt; Variable entry, consisting of nine fixed-bytes plus a number of bytes equal to the length of the field name plus 11 bytes per file in the group&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This entry is created for collecting field-name codes and properties during a SOUL request. An entry is allocated each time a new field name is encountered in the request. The field entries are deleted at  every END statement (including END MORE). &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When the Inverted File Access Method (IFAM) is used: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Host Language threads use FTBL under the same circumstances as SOUL.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Field entries are not deleted until the group is closed or until IFFNSH is called. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Increase the total FTBL requirement by NGROUP times four bytes.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For Parallel Query Option/204 server nodes, the required size of FTBL increases by eleven bytes times the total number of group members for temporary scattered groups opened at the  client and containing a member on the server node.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;For information on using FTBL in 64-bit storage, see [[#Using 64-bit addressing and Above the Bar (ATB) storage|Above the bar storage]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Understanding the global variable table (GTBL)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
GTBL contains information about:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Global variables &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Global images, screens, and menus&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;GTBL entries are created by the &amp;lt;var&amp;gt;$Incrg&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;$Getg&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;$Setg&amp;lt;/var&amp;gt; functions. When a global variable is redefined, its old entry is deleted from GTBL and a new entry is added. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a 32-byte trailer stores information about offsets. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For information on using GTBL in 64-bit storage, see [[#Using_64-bit addressing and Above the Bar .28ATB.29 storage|Above the bar storage]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Clearing GTBL entries====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;CLEARGO&amp;lt;/var&amp;gt; command deletes all images, screens, and menus. You can also use the &amp;lt;var&amp;gt;CLEAR GLOBALS&amp;lt;/var&amp;gt; statement to delete selected types of GTBL entries. For details, see [[Global features]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Space allocation==== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The space allocation for a global variable includes:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;4 bytes indicating the length of GTBL&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;1 byte for the length of the variable name&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Variable name&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;1 byte for the length of the current name&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Current value  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Global images, screens, and menus require space for a 20-byte header in addition to the size of the object.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When allocating GTBL space, always remember to add 32 bytes for the trailer.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The minimum length of GTBL is 40 bytes (X&#039;28&#039;).&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Improving global variable processing==== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can improve global variable processing by setting the &amp;lt;var&amp;gt;[[FASTGLOB parameter|FASTGLOB]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[GTBLPCT parameter|GTBLPCT]]&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;[[GTBLHASH parameter|GTBLHASH]]&amp;lt;/var&amp;gt; parameters. See [[Global features]] for a discussion of how these parameters affect performance. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Dummy string and $READ table (ITBL)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ITBL holds dummy string and $READ responses that are entered as arguments to an INCLUDE statement or command.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The space allocation for an ITBL entry includes:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Argument strings, including delimiters, which are saved as they are entered&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;4 bytes of overhead for each saved string&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Space taken by a string is released when the included procedure is executed.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Labels, names, and variables table (NTBL)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
NTBL holds labels, names, and variables. Each entry is allocated 12 bytes. NTBL has two entries for each first occurrence of a COMMON declaration.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;NTBL has one entry for each of the following elements: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Statement label&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;List name&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;%variable&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Image, menu, and screen variable&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Partner process opened by a request&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Additional &amp;lt;var&amp;gt;COMMON&amp;lt;/var&amp;gt; declaration&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Unlabeled &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;For Each Value&amp;lt;/var&amp;gt; statement&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; statement with the &amp;lt;var&amp;gt;In Order&amp;lt;/var&amp;gt; clause&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Sequential or VSAM file opened simultaneously&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Most NTBL entries are preserved by the &amp;lt;var&amp;gt;MORE&amp;lt;/var&amp;gt; command, except for the unlabeled &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; and secondary &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; entries, which are deleted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;A host language thread requires NTBL entries for list names, compilation names, and variables. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;FLOD&amp;lt;/var&amp;gt; uses NTBL entries for tags and index registers. The size of NTBL determines the highest tag or index that can be specified. In this case, NTBL must be at least 12 bytes multiplied by the highest tag or  index size desired. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;You need not allow extra space for runtime NTBL storage used during request evaluation of an &amp;lt;var&amp;gt;Open Dataset&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Open External&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;Open Terminal&amp;lt;/var&amp;gt; statement. Use the compiler highwater mark to set  LNTBL. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For information on using NTBL in 64-bit storage, see [[#Using 64-bit addressing and Above the Bar .28ATB.29 storage|Above the bar storage]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Internal statement table (QTBL)===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;QTBL holds internal &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; instructions that result from compilation of each internal statement. After compilation, the entries in QTBL drive the evaluator. QTBL is emptied by &amp;lt;var&amp;gt;End&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;End More&amp;lt;/var&amp;gt; statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The Editor formats all of QTBL into 16-byte entries, which provide a map of text being edited. The number of entries used depends on the number and position of insertions and deletions, not on the amount of text.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Quadruple (QTBL) entries generated by SOUL statements vary in number and size. The &amp;quot;Sample QTBL entries&amp;quot; table, below, shows typical values for each entry. For more QTBL information, see [[Large request considerations#QTBL (internal statement table)|QTBL (internal statement table)]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;You can reduce server I/O by allowing users executing shared precompiled procedures to use a shared copy of QTBL.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For information on using QTBL in 64-bit storage, see [[#Using 64-bit addressing and Above the Bar .28ATB.29 storage|Above the bar storage]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===QTBL and IFAM processing=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When using the Inverted File Access Method (IFAM):&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;IFFIND&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;IFCOUNT&amp;lt;/var&amp;gt;, and list manipulations build quadruples so that the SOUL evaluator routines can be used.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;IFGET&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;IFMORE&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;IFPUT&amp;lt;/var&amp;gt; build field name lists in QTBL.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Other calls are evaluated directly.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
IFAM&#039;s use of QTBL and the effect of the compiled IFAM feature are discussed in detail in [[HLI: Model 204 tables#Internal statements.2Fquad table .28QTBL.29|Internal statements/quad table (QTBL)]] and [[HLI: IFSTRT processing#Using the compiled IFAM facility|Using the compiled IFAM facility]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===QTBL and FLOD processing===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
FLOD builds its own quadruples (flodruples) in QTBL. Flodruple sizes vary, but most are 20 bytes or less. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Major exceptions are:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Read-and-load-field flodruple, which expands four bytes for each entry in a translation table&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;CASE statement, which requires eight bytes for each comparison string&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Sample QTBL entries=== &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;quot;Sample QTBL entries&amp;quot; shows typical QTBL entry sizes for various SOUL statements and program structures: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;Sample QTBL entries&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;SOUL statement&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;QTBL entry size&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;$functions&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + 3 per argument&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;%variable, subscripted (reference to)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + expression evaluation&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ADD&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;AFTER&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;AND (except where AND is part of BETWEEN)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Conversion between a string and a number&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CALL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CHANGE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;44&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CLEAR LIST&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CLEAR ON&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CLEAR TAG&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CLOSE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CLOSE PROCESS&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;COMMIT&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;COMMIT RELEASE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;COUNT RECORDS (with a group)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;52 + 20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;DELETE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;24&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;DELETE RECORD&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ELSE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + body of the clause&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ELSEIF&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + body of the clause END&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;END&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Function call&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + argument evaluation&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND (with at least one direct condition)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;64 + 16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND (with inverted condition)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;64 + 36&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND ALL RECORDS (no qualification)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;64&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND ALL RECORDS (with record  security and group)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;64 + 52 + 20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND ALL RECORDS (with record  security)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;64 + 52&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND ALL VALUES (FRV field)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;74&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND ALL VALUES (ORDERED field)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FOR EACH RECORD&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;24 + body of the loop&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FOR EACH VALUE OF (with IN ORDER, a group)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;88 + body of the loop + 68 + 24&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;GREATER THAN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;IDENTIFY&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;IF&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;IF (with operator)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32 + 16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Index loop&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;40 + expression evaluation + body of the loop&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;IN RANGE FROM and TO, BETWEEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;28&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;INSERT&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;24&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MODIFY&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;NOTE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ON&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + included statements&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OPEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OPEN PROCESS&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OR&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PAUSE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;POSITION&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PREPARE IMAGE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PREPARE MENU&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PREPARE SCREEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PRINT&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 for each term&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PRINT (a field)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + 20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PRINT MENU&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;PRINT SCREEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;READ IMAGE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;READ MENU&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;READ SCREEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;RECEIVE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;RELEASE RECORD&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;RELEASE POSITION&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;REPEAT&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + evaluation of WHILE clause&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;REREAD SCREEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;RETRY&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;RETURN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;SEND&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;SIGNAL PROCESS&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;STOP (automatically generated)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;STORE RECORD (with each field)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + 16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;TAB&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;TAG&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;THEN&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + body of the clause&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;TRANSFER&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;WITH&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;0&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;WRITE IMAGE&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==User, field, group security table (RTBL)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
RTBL contains a user&#039;s privileges, class, field-level security (FLS) levels for each open file, and classes for open, permanent groups.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The size of RTBL is calculated from the formula:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;(((NGROUPS + 11) * (NFILES + 1)) + (NRMTFILE + 1))dwr&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For Parallel Query Option/204 client nodes, the required size of RTBL increases by &amp;lt;code&amp;gt;(NRMTFILE=1)&amp;lt;/code&amp;gt; bytes.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Character string table (STBL)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
STBL stores all character strings in counted form, with a 1-byte length preceding the string itself. The following considerations apply to space usage:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Space used to store intermediate results during an arithmetic expression evaluation is freed when the evaluation is completed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Space used by &amp;lt;var&amp;gt;FOR EACH OCCURRENCE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;FOR EACH RECORD&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;FOR EACH VALUE&amp;lt;/var&amp;gt; loops is reused until the end of the loop.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The last value of a &amp;lt;var&amp;gt;Note&amp;lt;/var&amp;gt; statement remains in STBL.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIXED&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;FLOAT&amp;lt;/var&amp;gt; %variable array uses eight bytes for each element. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;When the %variable is reassigned, the STBL space is reused.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The FIELD SAVE option requires 10 bytes plus the maximum length of the string plus one byte for each element.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;NO FIELD SAVE does not reserve the extra 10 bytes and results in significant saving when using a multidimensional array.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;MORE releases all but the space required by %variables and arrays. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;If a user is using the pattern matcher in an IF statement with an IMAGE or SCREEN ITEM as the pattern and an IMAGE or SCREEN ITEM as the comparison string, then the value of the pattern is stored in STBL. The space is  freed after each comparison, so the maximum increase is equal to the size of the largest pattern in a request that meets the above criteria.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====When the Inverted File Access Method (IFAM) is used==== &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;IFDVAL&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;IFFILE&amp;lt;/var&amp;gt; store the value string from the input parameter in STBL. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Strings enclosed in quotation marks or values specified for &amp;lt;var&amp;gt;IFFIND&amp;lt;/var&amp;gt; that are stored in STBL are the same types as those stored in STBL by SOUL.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;EDIT form of &amp;lt;var&amp;gt;IFPUT&amp;lt;/var&amp;gt; uses STBL for each value. Space from previous values is reused. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FLOD&amp;lt;/var&amp;gt; stores translation table values and &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; statement comparison values in STBL. &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Parallel Query Option/204 STBL requirements====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
STBL requires an increase for Parallel Query Option/204 $functions used in remote file or scattered context and for SOUL pattern matching processes&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Using one of the following $functions in remote context requires 12 additional bytes in STBL:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;$Curfile&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;$RlcFile&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;$Update&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;var&amp;gt;$UpdFile&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you are using the pattern matcher in any SOUL statement, the full size of the pattern is used and stored in STBL. The space is freed after each statement block using the pattern  matcher, for example, &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;FOR&amp;lt;/var&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Temporary work page list table (TTBL)=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
TTBL entries keep track of scratch file (CCATEMP) pages. The entries are four bytes each and used by the Editor and &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;IFFIND&amp;lt;/var&amp;gt;) evaluator routines.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The Editor uses scratch pages to make a private copy of the procedure being edited.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt; uses scratch pages as work space for evaluating Boolean expressions.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;The number of TTBL entries required by &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt; depends on the complexity of the Boolean expression. Entries are released at the end of the &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt; statement evaluation. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compiler variable table (VTBL)=== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
VTBL stores values of simple variable types and refers to the String Table (STBL) in cases of more complex variables. The variables are local (%variables), internal, screen, and image variables. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Many SOUL statements and some constructs cause one or more compiler variables to be allocated in VTBL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Entries in VTBL vary in size. The &amp;quot;Sample VTBL entries&amp;quot; table shows typical values. For more information, refer to [[Large request considerations#VTBL (compiler variable table)|VTBL (compiler variable table)]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;Sample VTBL entries&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;SOUL statement  &amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;VTBL entry size (bytes)&amp;lt;/p&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;% variable:&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIXED&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FLOAT&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;STRING&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;24&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;array&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;array element reference&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CALL&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4 + (4 * arguments)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CALL statement evaluation&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;28&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;COUNT&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND (basic entry, single file)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;workspace&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20 + 20 + 28&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;fieldname = value pair&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20 or more&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;retrieval&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;28&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Ordered Index retrieval&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4 + 4 per segment&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FIND (basic entry, group)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8 + (8 * files)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FOR EACH RECORD (no IN ORDER clause)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FOR EACH VALUE (with FROM, TO, LIKE, ORDERED&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;48&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FOR EACH RECORD IN ORDER BY (with ORDERED field)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;48&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;FOR EACH VALUE (with ORDERED field)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;40&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Function (SOUL)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;4 + (4 * arguments)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Lists:&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;single files&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;groups&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8 + (8 * files)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Menu definition&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;48&amp;lt;/p&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Numeric expression&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;ON&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;28&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Related image set&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;12 + 4 for every 256 items&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Screen definition&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;68 + 4 for each panel&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Screen entry (one panel)&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;72&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;SORT&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;each referenced field&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;20&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;each sort key&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;32&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;String expression&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;8&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Subroutine declaration&amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;16 + parameters &amp;lt;/p&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Effect of the MORE parameter on VTBL==== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MORE parameter deletes all VTBL entries except %variables, list entries, images, menus, screens, labeled SORT and sort key entries, labeled FIND entries, and labeled COUNT entries.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====IFAM and FLOD considerations====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following considerations apply to VTBL: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;IFAM requires VTBL space for &amp;lt;var&amp;gt;IFFIND&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;IFCOUNT&amp;lt;/var&amp;gt;, and lists (matching SOUL requirements), and a few extra bytes for temporary work space. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;FLOD needs a minimal amount of VTBL space if the L statement (locate loop) is used. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====VTBL requirement for Application Subsystem users==== &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The size of VTBL for [[Application Subsystem development|Application Subsystem]] users loading saved compilations does not have to be as large as the compiling user&#039;s VTBL. As long as the loading user&#039;s VTBL size accommodates the request&#039;s VTBL requirement, the loading user can have a smaller VTBL than the compiling user. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Procedure security table (XTBL)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
XTBL contains procedure security information for each file and permanent group member that a user has open. The size of each file entry depends on the number of user-class/procedure-class mappings defined in the file for  the user&#039;s class.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:System management]]&lt;br /&gt;
[[Category:Model 204 operational issues]]&lt;/div&gt;</summary>
		<author><name>ATitelbaum</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=REGXSTBL_parameter&amp;diff=118646</id>
		<title>REGXSTBL parameter</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=REGXSTBL_parameter&amp;diff=118646"/>
		<updated>2022-03-25T20:08:11Z</updated>

		<summary type="html">&lt;p&gt;ATitelbaum: /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:REGXSTBL parameter subtitle}}&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Default value&lt;br /&gt;
&amp;lt;dd&amp;gt;2048&lt;br /&gt;
&amp;lt;dt&amp;gt;Parameter type&lt;br /&gt;
&amp;lt;dd&amp;gt;System&lt;br /&gt;
&amp;lt;dt&amp;gt;Where set&lt;br /&gt;
&amp;lt;dd&amp;gt;User 0 parameter line&lt;br /&gt;
&amp;lt;dt&amp;gt;Related products&lt;br /&gt;
&amp;lt;dd&amp;gt;All&lt;br /&gt;
&amp;lt;dt&amp;gt;Introduced&lt;br /&gt;
&amp;lt;dd&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; version 7.9&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
This parameter indicates the amount of STBL to be assigned to each swapped-in [[Regex class|Regex object]]. &lt;br /&gt;
&lt;br /&gt;
When the [[New (Regex constructor)|Regex constructor]] is invoked, the regular expression string and replacement string are compiled and the original strings and compilations are saved in the STBL part of the object. If the total size of these strings and compilations exceeds &amp;lt;var&amp;gt;REGXSTBL&amp;lt;/var&amp;gt;, the request is cancelled.&lt;br /&gt;
&lt;br /&gt;
Since the size of the regular expression and replacement compilation rarely exceed 16 bytes per source character (it&#039;s usually less), the default value of 2048 can accommodate almost all regular expressions with replacement strings of at least 120 characters. Regular expressions much longer than this are rare.&lt;br /&gt;
&lt;br /&gt;
Increasing the value of this parameter increases the STBL requirements for every request that uses &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; objects, usually by twice the amount of increase (one for each swapped-in object slot allocated).&lt;br /&gt;
&lt;br /&gt;
[[Category:Parameters]]&lt;br /&gt;
[[Category:System parameters]]&lt;/div&gt;</summary>
		<author><name>ATitelbaum</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Regex_class&amp;diff=118645</id>
		<title>Regex class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Regex_class&amp;diff=118645"/>
		<updated>2022-03-25T20:05:54Z</updated>

		<summary type="html">&lt;p&gt;ATitelbaum: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; class provides a facility that allows reuse of runtime compiled regular expressions. It was first available in Model 204 version 7.9.&lt;br /&gt;
&lt;br /&gt;
==Regex usage==&lt;br /&gt;
Before Model 204 7.9, every regular expression function would recompile the regular expression specified as a string parameter on each call. So, in a program like the following:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%num          is float&lt;br /&gt;
%stringlist   is object stringlist&lt;br /&gt;
  ...&lt;br /&gt;
%num = 1&lt;br /&gt;
repeat forever&lt;br /&gt;
   %num = %stringlist:regexLocate(&amp;quot;(%[a-z_][a-z_.0-9]*) *=.*?\1&amp;quot;, options=&amp;quot;i&amp;quot;)&lt;br /&gt;
   if %num eq 0 then loop end; end if&lt;br /&gt;
     ...&lt;br /&gt;
end repeat&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
the regular expression in the &amp;lt;var&amp;gt;RegexLocate&amp;lt;/var&amp;gt; call would be parsed and compiled in every iteration of the loop. As one might guess, this adds a lot of unnecessary overhead. In Model 204 7.9 and later, the regular expression would be compiled at the time the surrounding SOUL code would be compiled so no compilation would be necessary at runtime. The Model 204 regular expression engine was also rewritten in 7.9 to make it significantly more efficient so code like that above would be significantly more efficient in Model 204 7.9 and later.&lt;br /&gt;
&lt;br /&gt;
For most purposes, these improvements can be taken advantage of without any effort. However, as one might guess, a regular expression can only be compiled at SOUL compile-time if the regular expression is a literal. Otherwise, how could the compiler know what to compile? There are cases, however, where a regular expression is only available at runtime. A classic example is in a program that allows end users to type in arbitrary regular expressions for matching against a set of values. In such a case, it might be useful to be able to compile the user-specified expression once and then apply it to a variety of values.&lt;br /&gt;
&lt;br /&gt;
It might also be useful to use the same regular expression in multiple places or to even create a system or subsystem global that contains a regular expression. Or one might simply want to separate the regular expression creation from the code that uses it for code-readability or maintenance reasons.&lt;br /&gt;
&lt;br /&gt;
It is for cases like these that the &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; class was created. To illustrate how the &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; class might be used, consider the above example where user-specified regular expression is in string variable &amp;lt;var&amp;gt;%userRegex&amp;lt;/var&amp;gt;. In that case, the above code can be written as:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%num          is float&lt;br /&gt;
%regex        is object regex&lt;br /&gt;
%stringlist   is object stringlist&lt;br /&gt;
%userRegex    is string len 255&lt;br /&gt;
  ...&lt;br /&gt;
%num = 1&lt;br /&gt;
%regex = new(%userRegex, options=&amp;quot;i&amp;quot;)&lt;br /&gt;
repeat forever&lt;br /&gt;
   %num = %regex:locate(%stringlist, %num)&lt;br /&gt;
   if %num eq 0 then loop end; end if&lt;br /&gt;
     ...&lt;br /&gt;
end repeat&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
In this case, the user-specified regular expression is only compiled once in the &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; constructor call (&amp;lt;var&amp;gt;new&amp;lt;/var&amp;gt;) and reused multiple times after that, for optimal efficiency.&lt;br /&gt;
&lt;br /&gt;
==The Regex class and Unicode==&lt;br /&gt;
The Model 204 regular expression engine supports both EBCDIC and Unicode regular expressions and match strings &amp;amp;ndash; one would use a Unicode regular expression against a Unicode match string and an EBCDIC regular expression against an EBCDIC match string. To facilitate this, the non-&amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; class methods often have Unicode variants. For example, &amp;lt;var&amp;gt;RegexMatch&amp;lt;/var&amp;gt; should be used for EBCDIC regular expressions and match strings and &amp;lt;var&amp;gt;UnicodeRegexMatch&amp;lt;/var&amp;gt; against Unicode. Note that, the Model 204 &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Longstring&amp;lt;/var&amp;gt; types are agnostic about their contents (they could very well be binary or UTF-8), but in most cases they contain EBCDIC data.&lt;br /&gt;
&lt;br /&gt;
However, there is no Unicode version of the &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; class. Instead, the &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; constructor (&amp;lt;var&amp;gt;New&amp;lt;/var&amp;gt;) compiles a Unicode or EBCDIC regular expression based on the type of the regular expression parameter. For example, in the following:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%regex     is object regex&lt;br /&gt;
  ...&lt;br /&gt;
%regex = new(&amp;quot;foo.*?bar&amp;quot;)&lt;br /&gt;
  ...&lt;br /&gt;
%regex = new(&amp;quot;foo.*?bar&amp;quot;:u)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
the first constructor call would compile an EBCDIC regular expression and the second Unicode. While, in this case, the Unicode regular expression contains no Unicode characters that can&#039;t be converted to EBCDIC, the difference is still significant. If the first value of &amp;lt;var&amp;gt;%regex&amp;lt;/var&amp;gt; was run against a Unicode string, that string would first have to be translated to EBCDIC so might encounter a translation error and, in any case, would suffer the extra overhead of character translation. Similarly, if the second value of &amp;lt;var&amp;gt;%regex&amp;lt;/var&amp;gt; was run against an EBCDIC string, the EBCDIC string would first have to be translated to Unicode, incurring extra overhead.&lt;br /&gt;
&lt;br /&gt;
While the distinction between EBCDIC and Unicode input parameters can be handled at runtime, method output types are determined at compile-time so any &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; method that returns a string, must have Unicode and non-Unicode versions. For example, the &amp;lt;var&amp;gt;Replace&amp;lt;/var&amp;gt; function returns a string, so there is a &amp;lt;var&amp;gt;ReplaceUnicode&amp;lt;/var&amp;gt; function that should be used when the &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; object contains Unicode. The &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;IsUnicode&amp;lt;/var&amp;gt; method can be used to determine if a &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; object was created for Unicode strings.&lt;br /&gt;
&lt;br /&gt;
In addition, some operations don&#039;t make sense for Unicode &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; objects. For example, there is no Unicode &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; object so the &amp;lt;var&amp;gt;Locate&amp;lt;/var&amp;gt; function is not allowed with Unicode &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; objects. &lt;br /&gt;
&lt;br /&gt;
==Replacement==&lt;br /&gt;
When using the &amp;lt;var&amp;gt;Replace&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;ReplaceUnicode&amp;lt;/var&amp;gt; methods, one can specify a replacement string on the &amp;lt;var&amp;gt;Replace&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;ReplaceUnicode&amp;lt;/var&amp;gt; method call. However, if one is always using the same replacement value for a &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; object, it can be slightly more efficient to specify the replacement string on the &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; object constructor call. For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%regex        is object regex&lt;br /&gt;
%stringlist   is object stringlist&lt;br /&gt;
%userRegex    is string len 255&lt;br /&gt;
%userReplace  is string len 255&lt;br /&gt;
  ...&lt;br /&gt;
%num = 1&lt;br /&gt;
%regex = new(%userRegex, options=&amp;quot;i&amp;quot;)&lt;br /&gt;
repeat forever&lt;br /&gt;
   %num = %regex:locate(%stringlist, %num)&lt;br /&gt;
   if %num eq 0 then loop end; end if&lt;br /&gt;
   %stringlist:replace(%i, %regex:replace(%num, %stringlist(%num), %userReplace)&lt;br /&gt;
end repeat&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
could be done more efficiently as:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%regex        is object regex&lt;br /&gt;
%stringlist   is object stringlist&lt;br /&gt;
%userRegex    is string len 255&lt;br /&gt;
%userReplace  is string len 255&lt;br /&gt;
  ...&lt;br /&gt;
%num = 1&lt;br /&gt;
%regex = new(%userRegex, replace=%userReplace, options=&amp;quot;i&amp;quot;)&lt;br /&gt;
repeat forever&lt;br /&gt;
   %num = %regex:locate(%stringlist, %num)&lt;br /&gt;
   if %num eq 0 then loop end; end if&lt;br /&gt;
   %stringlist:replace(%num, %regex:replace(%stringlist(%num))&lt;br /&gt;
end repeat&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Introspection==&lt;br /&gt;
The &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; class has several methods that allow a &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; object to describe itself. This can be useful when looking at a &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; object in a &amp;lt;var&amp;gt;SirFact&amp;lt;/var&amp;gt; dump or when using the debugger. The introspection methods are:&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;IsUnicode&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A boolean value indicating whether or not the object is for Unicode.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Options&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The &amp;lt;var&amp;gt;Options&amp;lt;/var&amp;gt; parameter value specified in the constructor call.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;RegexString&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The regular expression specified in the constructor call.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;RegexUnicode&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The regular expression Unicode specified in the constructor call.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;ReplaceString&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The replacement specified in the constructor call.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;ReplaceUnicode&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The replacement Unicode specified in the constructor call.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Regular expression size limits==&lt;br /&gt;
When the [[New (Regex constructor)|Regex constructor]] is invoked, the regular expression string and replacement string are compiled and the original strings and compilations are saved in the STBL part of the object. If the total size of these strings and compilations exceeds the value of the [[REGXSTBL parameter|REGXSTBL system parameter]], the request is cancelled.&lt;br /&gt;
&lt;br /&gt;
The value of the &amp;lt;var&amp;gt;REGXSTBL&amp;lt;/var&amp;gt; parameter can be increased if this is a problem though, since the parameter is a user0 parameter only, it requires a recycle of the Online to make the change. If &amp;lt;var&amp;gt;REGXSTBL&amp;lt;/var&amp;gt; is increased, STBL requirements will also increase for every request that uses &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; objects.&lt;br /&gt;
&lt;br /&gt;
Note that the default value of &amp;lt;var&amp;gt;REGXSTBL&amp;lt;/var&amp;gt; is 2048 which is probably large enough to accommodate almost any regular expression one is likely to encounter in the &amp;quot;real world&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==List of Regex methods==&lt;br /&gt;
The individual &amp;lt;var&amp;gt;Regex&amp;lt;/var&amp;gt; methods are summarized in [[List of Regex methods]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Regular expression processing]]&lt;/div&gt;</summary>
		<author><name>ATitelbaum</name></author>
	</entry>
</feed>