<?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=Alex</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=Alex"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Special:Contributions/Alex"/>
	<updated>2026-05-21T18:39:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=CMD_(JANUS_DEFINE_parameter)&amp;diff=120832</id>
		<title>CMD (JANUS DEFINE parameter)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=CMD_(JANUS_DEFINE_parameter)&amp;diff=120832"/>
		<updated>2026-04-15T22:23:03Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add IMAGINET to valid port types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;CMD &#039;xxx&#039; &amp;amp;mdash; Model 204 command to process upon connection&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; is a [[JANUS DEFINE#parmlist|parameter]] of the &amp;lt;var&amp;gt;[[JANUS DEFINE|JANUS DEFINE]]&amp;lt;/var&amp;gt; command, which defines and sets characteristics of a Janus port. &lt;br /&gt;
&amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; commands to be executed after the files and groups specified in the &amp;lt;var&amp;gt;[[OPEN (JANUS DEFINE parameter)|OPEN]]&amp;lt;/var&amp;gt; parameter are opened. Multiple commands must be separated by the word &amp;lt;code&amp;gt;AND&amp;lt;/code&amp;gt;, and any command that contains blanks must be enclosed in quotes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; may span more than one line &amp;amp;mdash; continued with a hyphen (&amp;lt;tt&amp;gt;-&amp;lt;/tt&amp;gt;) &amp;amp;mdash; but the total length of commands plus one overhead byte per command cannot exceed 255 bytes. &lt;br /&gt;
&lt;br /&gt;
For an &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt; port, the commands specified by &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; specify the processing performed for each connection to the port. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt; connections run on daemon threads, but they will usually run full-screen 3270-applications. As such, they might have somewhat different parameter or table size requirements from other applications that run on daemon threads. The &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; parameter, possibly along with the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; command, make it possible to set certain parameters or table sizes that might be specific to all 3270 threads and so are not set in the subsystems run by these threads. &lt;br /&gt;
&lt;br /&gt;
The commands specified by &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; for &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt; connections are not executed unless a trusted login is performed via the &amp;lt;var&amp;gt;[[NEWSESCMD]]&amp;lt;/var&amp;gt; parameter of &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can invoke a specific subsystem on a telnet server connection either with the &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; parameter or with the &amp;lt;var&amp;gt;[[AUTOSYS]]&amp;lt;/var&amp;gt; parameter of &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt;. If the user logs off and logs on again during the same connection, the &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; command(s) are not executed. Because of this, using &amp;lt;var&amp;gt;AUTOSYS&amp;lt;/var&amp;gt; is probably preferable to using &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; parameters for most &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt; applications.&lt;br /&gt;
&lt;br /&gt;
For &amp;lt;var&amp;gt;SDS&amp;lt;/var&amp;gt; ports, the commands are executed before the port begins acting as a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[http://sirius-software.com/maint/manlist/jsdsr.pdf Specialty Data Store]&amp;lt;/var&amp;gt;. It is strongly recommended that this command be used mainly to set user table sizes and user parameters for &amp;lt;var&amp;gt;SDS&amp;lt;/var&amp;gt; ports. This might be necessary because &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; might have very different table size requirements than other applications running on an sdaemon. &lt;br /&gt;
&lt;br /&gt;
For &amp;lt;var&amp;gt;WEB&amp;lt;/var&amp;gt; ports, the commands specified by &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; are executed after all rules are executed except the &amp;lt;var&amp;gt;ON&amp;lt;/var&amp;gt; rules. The specified commands can be used to invoke an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;APSY&amp;lt;/var&amp;gt; subsystem when using the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; [[Janus Web Server $functions|$functions]] or to reset &amp;lt;var&amp;gt;UTABLE&amp;lt;/var&amp;gt; and other parameters. &lt;br /&gt;
&lt;br /&gt;
For &amp;lt;var&amp;gt;IMAGINET&amp;lt;/var&amp;gt; ports, the commands specified by &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; are executed when an [[Imagine Transparency]] connection is established. This can be used to set parameters or open files needed for transparency processing.&lt;br /&gt;
&lt;br /&gt;
Examples of some valid &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; clauses:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DEFINE MYWEB 80 WEBSERV 10 CMD WEBAPSY&lt;br /&gt;
JANUS DEFINE SDS204 1777 SDS 20 CMD &#039;R MCPU 5000&#039; AND &#039;UTABLE LQTBL 1000&#039; -&lt;br /&gt;
             AND &#039;R PROMPT 16&#039;&lt;br /&gt;
JANUS DEFINE OPENXXX 1234 OPENSERV 15 OPEN FILE OPENPROC CMD &#039;R PROMPT 16&#039; AND OPENAPSY&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The command only needs to be quoted if it contains blanks or special characters.&lt;br /&gt;
&lt;br /&gt;
Valid for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;SDS&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;[[JANUS DEFINE#type|IMAGINET]]&amp;lt;/var&amp;gt; port types, this parameter is required for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt; port types. This parameter is &#039;&#039;&#039;not&#039;&#039;&#039; valid on an &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt; port definition.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Imagine Transparency]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[List of Janus commands]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DEFINE#parmlist|List of JANUS DEFINE parameters]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:JANUS DEFINE parameters|CMD]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=OPEN_(JANUS_DEFINE_parameter)&amp;diff=120831</id>
		<title>OPEN (JANUS DEFINE parameter)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=OPEN_(JANUS_DEFINE_parameter)&amp;diff=120831"/>
		<updated>2026-04-15T22:22:42Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add IMAGINET to valid port types&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;OPEN list &amp;amp;mdash; files/groups to open on connection to port&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; is a parameter on &amp;lt;var&amp;gt;[[JANUS DEFINE]]&amp;lt;/var&amp;gt;, which defines and sets characteristics of a Janus port. &lt;br /&gt;
&lt;br /&gt;
This parameter specifies the name of one or more &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; files or groups to be opened when a server session is initiated. &lt;br /&gt;
&lt;br /&gt;
If you specify multiple files or groups in an &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; clause, they must be separated by an AND keyword. You can also specify individual file open privileges; if not, they default to X&#039;0221&#039;. Multiple files or groups and explicitly specified privileges in the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; clause are supported in Version 6.0 and later of &#039;&#039;[[Sirius Mods]]&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
The syntax of each file or group specification is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;FILE&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;GROUP&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[ [&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;WITH&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;privs&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first file or group listed in an &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; clause is set as the default file or group context for the thread. If neither the keyword FILE nor the keyword GROUP is specified, &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; looks first for a permanent group, then for a file, to open. It does not look for a temporary group, since one cannot yet exist at open time. &lt;br /&gt;
&lt;br /&gt;
You can use the &amp;lt;var&amp;gt;[[CMD (JANUS DEFINE parameter)|CMD]]&amp;lt;/var&amp;gt; parameter to specify a command to execute just after a file or group opens. If the &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; parameter specifies an INCLUDE command, the included procedure is assumed to come from the first file or group specified in the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; clause. &lt;br /&gt;
&lt;br /&gt;
Examples of valid &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; clauses follow:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DEFINE WEBXXX 80 WEBSERV 20 -&lt;br /&gt;
OPEN WEBPROC AND -&lt;br /&gt;
FILE DATAPROC WITH X&#039;0761&#039;&lt;br /&gt;
JANUS DEFINE OPENDOOR 1234 OPENSERV 40 -&lt;br /&gt;
OPEN GROUP DOORPROC AND -&lt;br /&gt;
FILE DOORDATA X&#039;BFFF&#039; -&lt;br /&gt;
CMD &#039;I DRIVER&#039;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This parameter is valid for &amp;lt;var&amp;gt;[[JANUS DEFINE#type|SRVSOCK]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[JANUS DEFINE#type|WEBSERV]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[JANUS DEFINE#type|SDS]]&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;[[JANUS DEFINE#type|IMAGINET]]&amp;lt;/var&amp;gt; port types. For &amp;lt;var&amp;gt;IMAGINET&amp;lt;/var&amp;gt; ports, the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; parameter can be used to open files or set up the environment for [[Imagine Transparency]] connections. &lt;br /&gt;
&lt;br /&gt;
This parameter is &#039;&#039;&#039;not&#039;&#039;&#039; valid on an &amp;lt;var&amp;gt;[[JANUS DEFINE#type|FTPSERVER]]&amp;lt;/var&amp;gt; port definition.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Imagine Transparency]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[List of Janus commands]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DEFINE#parmlist|List of JANUS DEFINE parameters]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:JANUS DEFINE parameters|OPEN]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120830</id>
		<title>APSYSUFFIX (JANUS DEFINE parameter)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120830"/>
		<updated>2026-04-15T22:17:20Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add suffix-to-filename relationship, JANUS ADDSUFFIX links, multi-suffix example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;APSYSUFFIX &#039;&#039;x&#039;&#039; — Specify Application System suffix for IMAGINET port routing&lt;br /&gt;
&lt;br /&gt;
APSYSUFFIX is a [[JANUS DEFINE#parmlist|parameter]] of the [[JANUS DEFINE]] command, which defines and sets characteristics of a Janus port. APSYSUFFIX specifies a single-character suffix that identifies the Application System (APSY) instance associated with a broker connection. This suffix is sent to Model 204 during the [[Imagine Transparency]] handshake to enable per-suffix routing, allowing a single IMAGINET port to serve multiple Imagine Database Store (DBS) instances.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;APSYSUFFIX &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;x&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
:&amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt; is a single alphanumeric character (A-Z or 0-9) that identifies the APSY suffix for this broker instance.&lt;br /&gt;
&lt;br /&gt;
==Suffix and transparency file naming==&lt;br /&gt;
The APSYSUFFIX value is directly related to Model 204 transparency file naming conventions. When a Model 204 file is allocated with &amp;lt;code&amp;gt;ALLOCATE &#039;&#039;filename&#039;&#039; WITH IMAGINE&amp;lt;/code&amp;gt;, the third character of the filename identifies the APSY suffix of the broker that serves that file. For example:&lt;br /&gt;
&lt;br /&gt;
* A file named &amp;lt;b&amp;gt;ROXDATA&amp;lt;/b&amp;gt; has suffix &amp;lt;b&amp;gt;X&amp;lt;/b&amp;gt; (third character), so it can only be accessed through a broker running with &amp;lt;code&amp;gt;APSYSUFFIX X&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A file named &amp;lt;b&amp;gt;ROTDATA&amp;lt;/b&amp;gt; has suffix &amp;lt;b&amp;gt;T&amp;lt;/b&amp;gt;, and is served by a broker with &amp;lt;code&amp;gt;APSYSUFFIX T&amp;lt;/code&amp;gt;.&lt;br /&gt;
* A file named &amp;lt;b&amp;gt;ROLDATA&amp;lt;/b&amp;gt; has suffix &amp;lt;b&amp;gt;L&amp;lt;/b&amp;gt;, and is served by a broker with &amp;lt;code&amp;gt;APSYSUFFIX L&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This naming convention allows Model 204 to automatically route each file access request to the correct broker and DBS instance based on the file name alone. The suffix-to-DBS mapping is registered on the IMAGINET port using the [[JANUS ADDSUFFIX]] command.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
* When APSYSUFFIX is specified on the JANUS DEFINE, the [[JANUS ADDSUFFIX]] command can then be used to register suffix-to-DBS name mappings on the port. Each mapping associates a suffix character with a specific DBS instance name.&lt;br /&gt;
* When a Model 204 application accesses a transparency file, the system extracts the suffix from the filename, looks up the corresponding DBS name in the port&#039;s suffix table, and routes the request to the appropriate broker.&lt;br /&gt;
* Without APSYSUFFIX, all IMAGINET connections are routed to a single, default DBS instance, and only one set of transparency files can be served.&lt;br /&gt;
* APSYSUFFIX is typically used in conjunction with the &amp;lt;code&amp;gt;dbsName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dbsPort&amp;lt;/code&amp;gt; broker options to associate each suffix with a specific DBS instance. For example, suffix &amp;quot;T&amp;quot; might connect to a test DBS instance, while suffix &amp;quot;L&amp;quot; connects to a live instance.&lt;br /&gt;
* The suffix value is case-insensitive; it is converted to uppercase before being sent to Model 204.&lt;br /&gt;
&lt;br /&gt;
Valid only for [[JANUS DEFINE#type|IMAGINET]] port types. This parameter is new as of Model 204 version 8.0.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
A typical multi-suffix configuration involves defining the IMAGINET port, registering suffix mappings, and starting brokers with matching suffixes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
JANUS DEFINE IMGPORT 12231 IMAGINET 50 APSYSUFFIX&lt;br /&gt;
JANUS ADDSUFFIX IMGPORT T db&lt;br /&gt;
JANUS ADDSUFFIX IMGPORT L larry&lt;br /&gt;
JANUS ADDSUFFIX IMGPORT U lulu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the Imagine side, brokers are started with corresponding suffix and DBS name options:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
startBroker --apsySuffix=T --dbsName=db --dbsPort=7777&lt;br /&gt;
startBroker --apsySuffix=L --dbsName=larry --dbsPort=7778&lt;br /&gt;
startBroker --apsySuffix=U --dbsName=lulu --dbsPort=7779&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With this configuration, a Model 204 file named ROTDATA is routed to the broker with suffix T (DBS &amp;quot;db&amp;quot;), while ROLDATA is routed to suffix L (DBS &amp;quot;larry&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Imagine Transparency]]&lt;br /&gt;
* [[JANUS ADDSUFFIX]]&lt;br /&gt;
* [[JANUS DELETESUFFIX]]&lt;br /&gt;
* [[JANUS DISPLAYSUFFIX]]&lt;br /&gt;
* [[List of Janus commands]]&lt;br /&gt;
* [[JANUS DEFINE#parmlist|List of JANUS DEFINE parameters]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120829</id>
		<title>APSYSUFFIX (JANUS DEFINE parameter)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120829"/>
		<updated>2026-04-15T22:11:36Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add documentation for APSYSUFFIX parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;APSYSUFFIX x — Specify Application System suffix for IMAGINET port routing&lt;br /&gt;
&lt;br /&gt;
APSYSUFFIX is a [[JANUS DEFINE#parmlist|parameter]] of the [[JANUS DEFINE]] command, which defines and sets characteristics of a Janus port. APSYSUFFIX specifies a single-character suffix that identifies the Application System (APSY) instance associated with a broker connection. This suffix is sent to Model 204 during the [[Imagine Transparency]] handshake to enable per-suffix routing, allowing a single IMAGINET port to serve multiple Imagine Database Store (DBS) instances.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;APSYSUFFIX &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;x&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
:&amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt; is a single alphanumeric character (A-Z or 0-9) that identifies the APSY suffix for this broker instance.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
* When APSYSUFFIX is specified, the broker sends the suffix character and the associated DBS name to Model 204 during the IMAGINET connection handshake. Model 204 uses this information to route requests to the correct DBS instance.&lt;br /&gt;
* Without APSYSUFFIX, all IMAGINET connections are routed to a single, default DBS instance.&lt;br /&gt;
* APSYSUFFIX is typically used in conjunction with the &amp;lt;code&amp;gt;dbsName&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;dbsPort&amp;lt;/code&amp;gt; broker options to associate each suffix with a specific DBS instance. For example, suffix &amp;quot;T&amp;quot; might connect to a test DBS instance, while suffix &amp;quot;L&amp;quot; connects to a live instance.&lt;br /&gt;
* The suffix value is case-insensitive; it is converted to uppercase before being sent to Model 204.&lt;br /&gt;
&lt;br /&gt;
Valid only for [[JANUS DEFINE#type|IMAGINET]] port types.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
In the Imagine broker configuration, a broker started with suffix &amp;quot;T&amp;quot; and DBS name &amp;quot;db&amp;quot; would communicate this to Model 204 via the IMAGINET port:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
startBroker --apsySuffix=T --dbsName=db --dbsPort=7777&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the Model 204 side, the IMAGINET port is defined normally. The suffix routing is driven by the broker, not by the JANUS DEFINE itself. The APSYSUFFIX keyword on JANUS DEFINE enables the IMAGINET port to accept and process suffix information from connecting brokers.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Imagine Transparency]]&lt;br /&gt;
* [[List of Janus commands]]&lt;br /&gt;
* [[JANUS DEFINE#parmlist|List of JANUS DEFINE parameters]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120828</id>
		<title>APSYSUFFIX (JANUS DEFINE parameter)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120828"/>
		<updated>2026-04-14T03:35:21Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add transparency filename suffix convention&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=List_of_Imagine_methods&amp;diff=120827</id>
		<title>List of Imagine methods</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=List_of_Imagine_methods&amp;diff=120827"/>
		<updated>2026-04-14T03:23:26Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add ApsySuffix and DbsName methods&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- This page was automatically generated and will be automatically&lt;br /&gt;
     replaced, so any manual edits will be lost. You&#039;ve been warned. --&amp;gt;&lt;br /&gt;
The following are the available &amp;lt;var&amp;gt;[[Imagine class|Imagine]]&amp;lt;/var&amp;gt; class methods.&lt;br /&gt;
{{Template:Method list header|class=Imagine}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;showVisit&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;wikitable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Method&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;[[ApsySuffix (Imagine property)|ApsySuffix]]&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;Return the APSY suffix character for the current connection&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;[[Call (Imagine function)|Call]]&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;Run Imagine code on the Transparency Broker&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;[[DbsName (Imagine property)|DbsName]]&amp;lt;/td&amp;gt;&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;Return the DBS name for the current connection&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;table class=&amp;quot;list&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;ul style=&amp;quot;margin-top:0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Imagine class]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td valign=&amp;quot;top&amp;quot;&amp;gt;&amp;lt;ul style=&amp;quot;margin-top:0px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Imagine methods syntax]]&lt;br /&gt;
&amp;lt;/ul&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;
[[Category:Lists of methods]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Janus_commands&amp;diff=120826</id>
		<title>Janus commands</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Janus_commands&amp;diff=120826"/>
		<updated>2026-04-14T03:22:50Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add ADDSUFFIX, DELETESUFFIX, DISPLAYSUFFIX commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Janus commands --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The Janus command set (simply referred to as &amp;quot;Janus commands&amp;quot;)&lt;br /&gt;
consists of commands and subcommands that&lt;br /&gt;
begin with the string &amp;lt;code&amp;gt;JAN&amp;lt;/code&amp;gt;.&lt;br /&gt;
The two Janus commands currently supported are &amp;lt;var&amp;gt;[[JANUS command|JANUS]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[JANUSDEBUG command|JANUSDEBUG]]&amp;lt;/var&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
You use Janus commands to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Define &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; as a server on the TCP/IP network.&lt;br /&gt;
Janus commands set port numbers for your&lt;br /&gt;
Janus server applications and start, stop, and monitor Janus&lt;br /&gt;
activity in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; address space.&lt;br /&gt;
&amp;lt;li&amp;gt;Define remote servers to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; client for access by&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Open Client&amp;lt;/var&amp;gt; applications and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; client applications,&lt;br /&gt;
and define which remote hosts can establish connections with&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt;, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Open Server&amp;lt;/var&amp;gt;, and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;Add security to Janus ports using&lt;br /&gt;
Secure Sockets Layer (SSL) or Transport Layer Security (TLS)&lt;br /&gt;
to provide encrypted communications.&lt;br /&gt;
&amp;lt;li&amp;gt;Define server rules (like redirection or security filtering for&lt;br /&gt;
specific data types, users, or TCP/IP addresses) for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt;&lt;br /&gt;
and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; applications.&lt;br /&gt;
&amp;lt;li&amp;gt;Perform interactive, terminal-based debugging of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; applications&lt;br /&gt;
(using the &amp;lt;var&amp;gt;JANUSDEBUG&amp;lt;/var&amp;gt; command).&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Janus commands require the executing user to have System Manager&lt;br /&gt;
privileges.&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUSDEBUG&amp;lt;/var&amp;gt; command, which can be issued by any logged-in user,&lt;br /&gt;
is an exception.&lt;br /&gt;
Janus commands can also be issued as operator&lt;br /&gt;
commands (on the Online virtual console under VM) or as replies&lt;br /&gt;
to the HALT message under OS/390.&lt;br /&gt;
 &lt;br /&gt;
Janus commands make use of the following wildcard characters:&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;*&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;An asterisk represents any string of characters.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;?&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A question mark represents any character.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A double quote escapes wildcard translation of the special character that follows it.&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
For example, the following command starts all Janus ports whose names&lt;br /&gt;
begin with the string &amp;lt;code&amp;gt;BA&amp;lt;/code&amp;gt; (like BART, BARNEY, BALES, BAY):&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt; JANUS START BA*&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The following command&lt;br /&gt;
drains all Janus ports whose names are three characters long,&lt;br /&gt;
beginning with &amp;lt;code&amp;gt;BA&amp;lt;/code&amp;gt; (BAY, BAD, BAX, etc.):&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt; JANUS DRAIN BA?&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The following command&lt;br /&gt;
starts all Janus ports whose names end in &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;&lt;br /&gt;
(WHODONEIT?, WHERES_THE_BEEF?, WHAT?_ME_WORRY?, WHO_YA_GONNA_CALL?, etc.):&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt; JANUS START *&amp;quot;?&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of JANUS subcommands==&lt;br /&gt;
The principal command of the Janus command set is the &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; command, which&lt;br /&gt;
consists of a set of mutually exclusive subcommands. To execute a subcommand, you&lt;br /&gt;
specify it with the prefix &amp;lt;code&amp;gt;JANUS&amp;lt;/code&amp;gt;: for example, &amp;lt;code&amp;gt;JANUS DEFINE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;JANUS STATUS&amp;lt;/code&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
The following list shows the &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; subcommands with a brief description of what they do.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div class=&amp;quot;showVisit&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;[[JANUS ADDCA|ADDCA]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Adds a trusted certifying authority&#039;s certificate to a port.&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;[[JANUS ADDCOORDINATOR|ADDCOORDINATOR]]&amp;lt;br/&amp;gt;[[JANUS ADDCOORDINATOR|ADDCOORD]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Adds a two-phase commit coordinator to a port.&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;[[JANUS ADDSUFFIX|ADDSUFFIX]]&amp;lt;br/&amp;gt;[[JANUS ADDSUFFIX|ADDSUFF]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Adds a suffix-to-DBS name mapping to an APSYSUFFIX port.&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;[[JANUS CHARSET|CHARSET]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the default character set.&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;[[JANUS CLSOCK|CLSOCK]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies rules to allow a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;User Language&amp;lt;/var&amp;gt; program to access a CLSOCK or DEBUGGERCLIENT port.&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;[[JANUS CONFIGURATION|CONFIGURATION]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays global configuration values.&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;[[JANUS DEFINE|DEFINE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Defines a Janus port.&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;[[JANUS DEFINEIPGROUP|DEFINEIPGROUP]]&amp;lt;br/&amp;gt;[[JANUS DEFINEIPGROUP|DEFIPGROUP]]&amp;lt;br/&amp;gt;[[JANUS DEFINEIPGROUP|DEFINEIPG]]&amp;lt;br/&amp;gt;[[JANUS DEFINEIPGROUP|DEFIPG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Defines a grouping of IP addresses for web access control.&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;[[JANUS DEFINEREMOTE|DEFINEREMOTE]]&amp;lt;br/&amp;gt;[[JANUS DEFINEREMOTE|DEFREMOTE]]&amp;lt;br/&amp;gt;[[JANUS DEFINEREMOTE|DEFINEREM]]&amp;lt;br/&amp;gt;[[JANUS DEFINEREMOTE|DEFREM]]&amp;lt;br/&amp;gt;&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Defines a remote server for Janus Open Client, and associates it with a Janus OPENSERV or SDS port.&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;[[JANUS DEFINEUSGROUP|DEFINEUSGROUP]]&amp;lt;br/&amp;gt;[[JANUS DEFINEUSGROUP|DEFUSGROUP]]&amp;lt;br/&amp;gt;[[JANUS DEFINEUSGROUP|DEFINEUSG]]&amp;lt;br/&amp;gt;[[JANUS DEFINEUSGROUP|DEFUSG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Defines a grouping of user IDs for web access control.&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;[[JANUS DELCA|DELCA]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a trusted certifying authority&#039;s certificate from a port.&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;[[JANUS DELETE|DELETE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a port definition.&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;[[JANUS DELETECOORDINATOR|DELETECOORDINATOR]]&amp;lt;br/&amp;gt;[[JANUS DELETECOORDINATOR|DELCOORDINATOR]]&amp;lt;br/&amp;gt;[[JANUS DELETECOORDINATOR|DELETECOORD]]&amp;lt;br/&amp;gt;[[JANUS DELETECOORDINATOR|DELCOORD]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a two-phase commit coordinator from a port.&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;[[JANUS DELETESUFFIX|DELETESUFFIX]]&amp;lt;br/&amp;gt;[[JANUS DELETESUFFIX|DELSUFFIX]]&amp;lt;br/&amp;gt;[[JANUS DELETESUFFIX|DELSUFF]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Removes a suffix-to-DBS name mapping from an APSYSUFFIX port.&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;[[JANUS DELETEIPGROUP|DELETEIPGROUP]]&amp;lt;br/&amp;gt;[[JANUS DELETEIPGROUP|DELIPGROUP]]&amp;lt;br/&amp;gt;[[JANUS DELETEIPGROUP|DELETEIPG]]&amp;lt;br/&amp;gt;[[JANUS DELETEIPGROUP|DELIPG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a grouping of IP addresses.&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;[[JANUS DELETEREMOTE|DELETEREMOTE]]&amp;lt;br/&amp;gt;[[JANUS DELETEREMOTE|DELREMOTE]]&amp;lt;br/&amp;gt;[[JANUS DELETEREMOTE|DELETEREM]]&amp;lt;br/&amp;gt;[[JANUS DELETEREMOTE|DELREM]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes an association between a remote server and a Janus OPENSERV or SDS port.&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;[[JANUS DELETEUSGROUP|DELETEUSGROUP]]&amp;lt;br/&amp;gt;[[JANUS DELETEUSGROUP|DELUSGROUP]]&amp;lt;br/&amp;gt;[[JANUS DELETEUSGROUP|DELETEUSG]]&amp;lt;br/&amp;gt;[[JANUS DELETEUSGROUP|DELUSG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a grouping of user IDs.&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;[[JANUS DISPLAY|DISPLAY]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays Janus port definitions.&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;[[JANUS DISPLAYCA|DISPLAYCA]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYCA|DISCA]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays the contents of a trusted certifying authority&#039;s certificate.&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;[[JANUS DISPLAYCOORDINATOR|DISPLAYCOORDINATOR]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYCOORDINATOR|DISCOORDINATOR]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYCOORDINATOR|DISPLAYCOORD]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYCOORDINATOR|DISCOORD]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays two-phase commit coordinator definitions for a port.&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;[[JANUS DISPLAYIPGROUP|DISPLAYIPGROUP]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYIPGROUP|DISPLAYIPG]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYIPGROUP|DISIPGROUP]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYIPGROUP|DISIPG]]&lt;br /&gt;
&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays IP group definitions.&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;[[JANUS DISPLAYREMOTE|DISPLAYREMOTE]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYREMOTE|DISPLAYREM]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYREMOTE|DISREMOTE]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYREMOTE|DISREM]]&amp;lt;br/&amp;gt;&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays remoter server definitions.&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;[[JANUS DISPLAYSUFFIX|DISPLAYSUFFIX]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYSUFFIX|DISSUFFIX]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYSUFFIX|DISPLAYSUFF]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYSUFFIX|DISSUFF]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays suffix-to-DBS name mappings for an APSYSUFFIX port.&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;[[JANUS DISPLAYSOCK|DISPLAYSOCK]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYSOCK|DISSOCK]]&amp;lt;br/&amp;gt;&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays CLSOCK, SRVSOCK, DEBUGGERCLIENT, and FTPSERVER port rules.&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;[[JANUS DISPLAYTRACE|DISPLAYTRACE]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYTRACE|DISTRACE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays the TRACE settings for a named port.&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;[[JANUS DISPLAYWEB|DISPLAYWEB]]&amp;lt;br/&amp;gt;[[JANUS DISPLAYWEB|DISWEB]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays WEBSERV port rules.&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;[[JANUS DISPXT|DISPXT]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays translate table definitions.&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;[[JANUS DOMAIN|DOMAIN]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the domain; used with IBM TCP/IP to resolve unqualified host names.&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;[[JANUS DRAIN|DRAIN]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prevents new connections to port and stops port when last connection is closed.&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;[[JANUS FORCE|FORCE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Breaks all connections to port and stops port when last connection is closed.&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;[[JANUS FTP|FTP]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies Janus FTP Server processing rules.&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;[[JANUS LANGUAGE|LANGUAGE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies default Janus Open Server language.&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;[[JANUS LIMITS|LIMITS]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays the Janus connection limits for an Online.&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;[[JANUS LOADXT|LOADXT]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Loads or reloads a translate table and, optionally, an entity translate table.&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;[[JANUS NAMESERVER|NAMESERVER]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies IP address and port number of the domain name server used with Janus Sockets CLSOCK applications and Janus Open Client applications; only used with the IBM TCP/IP&lt;br /&gt;
interfaces.&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;[[JANUS RELOAD|RELOAD]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Reloads the Model 204-to-SQL mappings from the JANCAT file for a Janus Specialty Data Store port.&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;[[JANUS SRVSOCK|SRVSOCK]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies rules that determine which SRVSOCK connections to allow.&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;[[JANUS SSLSTAT or SSLSTATUS|SSLSTATUS]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays SSL (Secure Sockets Layer) statistics for SSL ports.&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;[[JANUS START|START]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Makes a port available for connections.&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;[[JANUS STAT or STATUS|STATUS]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays port status.&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;[[JANUS STATCA or STATUSCA|STATUSCA]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays the status of a trusted certifying authority&#039;s certificate.&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;[[JANUS STATUSREMOTE|STATUSREMOTE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays status of remote servers.&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;[[JANUS TCPLOG|TCPLOG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores all input and output streams to and from a port.&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;[[JANUS TRACE|TRACE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Changes trace settings for a port or for specific IP addresses connected to a port.&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;[[JANUS TSTAT or TSTATUS|TSTATUS]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Displays thread utilization statistics.&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;[[JANUS WEB|WEB]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies Janus Web Server processing rules. The kinds of rules specified are determined by the web rule &amp;quot;type&amp;quot; as shown below.&lt;br /&gt;
 &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;&amp;lt;var&amp;gt;[[JANUS WEB NOREDIRECT|NOREDIRECT]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates that any request for a URL that matches the specified pattern (the url value) is not to be directed to another URL.&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;[[JANUS WEB REDIRECT|REDIRECT]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;identifies the URL to which incoming URL requests that match a specified pattern are redirected.&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;[[JANUS WEB DISALLOW|DISALLOW]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates that any request for a URL that matches a specified pattern (the url value) is not allowed access; that is, it is forbidden.&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;[[JANUS WEB ALLOW|ALLOW]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates that a request from a particular user or set of users can have access to any URL that matches a specified pattern (the url&lt;br /&gt;
value).&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;[[JANUS WEB TYPE|TYPE]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates the mime type of the output produced by&lt;br /&gt;
the specified URL (url value).&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;[[JANUS WEB NODEBUG|NODEBUG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;disallow debugging for the specified URL.&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;[[JANUS WEB DEBUG|DEBUG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates that requests for a specified URL (the url value) are to be debugged.&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;[[JANUS WEB ON|ON]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates the action to be taken when a request for a specified URL (the url value), which is not redirected, is determined to be allowed access.&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;[[JANUS WEB SCREEN|SCREEN]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sets parameters that control the mapping of 3270 screens to HTML, for &#039;&#039;[[Janus Web Legacy Support]]&#039;&#039;, for example.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&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;th colspan=&amp;quot;2&amp;quot;&amp;gt;The &amp;lt;var&amp;gt;JANUSDEBUG&amp;lt;/var&amp;gt; command is not a subcommand of &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt;, but stands on its own.&amp;lt;/th&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;[[JANUSDEBUG]]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;JANUSDEBUG&amp;lt;/var&amp;gt; works in conjunction with &amp;lt;var&amp;gt;JANUS WEB DEBUG&amp;lt;/var&amp;gt; rules to assist in debugging Janus applications.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&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;[[List of Janus Web Server $functions]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:Janus commands]] [[Category:Janus TCP/IP Base]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DEFINE&amp;diff=120825</id>
		<title>JANUS DEFINE</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DEFINE&amp;diff=120825"/>
		<updated>2026-04-14T03:22:07Z</updated>

		<summary type="html">&lt;p&gt;Alex: Add APSYSUFFIX parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:JANUS DEFINE}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Define and set characteristics of a Janus port&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command is used to specify the characteristics of a Janus port. It defines the usage of the named port as one of the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Access by IFDIAL clients&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Open Server or Open Client connections&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Specialty Data Store access&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Web access&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;FTP server connections&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Telnet server connections&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Generic Sockets usage &amp;amp;mdash; with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; online either requesting (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|CLSOCK]]&amp;lt;/var&amp;gt;) or accepting (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|SRVSOCK]]&amp;lt;/var&amp;gt;) the connection&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Generic [http://en.wikipedia.org/wiki/User_Datagram_Protocol UDP] Sockets usage &amp;amp;mdash; with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; online either initiating (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|CLSOCKU]]&amp;lt;/var&amp;gt;) or accepting (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|SRVSOCKU]]&amp;lt;/var&amp;gt;) the exchange of messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Connection between the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|Janus Debugger]]&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|TN3270 Debugger]]&amp;lt;/var&amp;gt; workstation GUI and programs being debugged in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For any except a &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;[[#type|DEBUGGERCLIENT]]&amp;lt;/var&amp;gt; port, this subcommand associates a service with a TCP/IP port number. &lt;br /&gt;
&lt;br /&gt;
Among the characteristics specified by &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; is whether the port will use Secure Sockets Layer (SSL) for encrypted communications. &lt;br /&gt;
&lt;br /&gt;
See [[Defining server ports]] for connectivity background information and information about when you need to issue the &amp;lt;var&amp;gt;[[JANUS DEFINEREMOTE]]&amp;lt;/var&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command syntax is described below.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;JANUS DEFINE&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;portname portnum type maxcon other_parms&amp;lt;/span&amp;gt; ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where each of the first four parameters is positional and required:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;portname&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A 1- to 30-character name by which the port is identified. It is used on other &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; subcommands, such as &amp;lt;var&amp;gt;[[JANUS START]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[JANUS DISPLAY]]&amp;lt;/var&amp;gt;. It is used on the &amp;lt;var&amp;gt;$Sock_Conn&amp;lt;/var&amp;gt; function or the Socket object &amp;lt;var&amp;gt;[[New (Socket constructor)|New]]&amp;lt;/var&amp;gt; constructor to name the &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; port defining a connection.&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;portnum&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The TCP/IP port number at which the service is available.  &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;portnum&amp;lt;/var&amp;gt; is the server port number, and it must be between 1 and 65535, inclusive. This number is used by client applications on the network when they require access to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; server. The server port number must be unique on the host. Several &amp;quot;well-known&amp;quot; port numbers for various TCP/IP services (for example, 53 for nameserver) should be avoided, unless you are implementing that service using &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Sockets]]&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
For &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;DEBUGGERCLIENT&amp;lt;/var&amp;gt; ports, an asterisk (*) is used as the port number, since they are used to create, rather than accept, connections, and these port numbers are not determined until the time of the connection. For &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; ports, 80 is customary for non-secure HTTP and 443 for secure HTTP (SSL); you can, however, use other numbers for &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; ports if required. &lt;br /&gt;
&lt;br /&gt;
For &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt; ports, 21 is customary; you can, however, use other numbers for &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt; ports if required.&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;type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;div id=&amp;quot;type&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;Port type. Valid types are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;2PC&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Two-Phase Commit]]&amp;lt;/var&amp;gt; port.&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;CLSOCK&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; client socket port. If non-system administrator users are to use a &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; port, rules must be provided to allow them to initiate outgoing connections on the port.&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;CLSOCKU&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; UDP client port. If non-system administrator users are to use a &amp;lt;var&amp;gt;CLSOCKU&amp;lt;/var&amp;gt; port, rules must be provided to allow them to initiate outgoing connections on the port. A &amp;lt;var&amp;gt;CLSOCKU&amp;lt;/var&amp;gt;&lt;br /&gt;
port can also be used to implement a UDP server on a single &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; thread. Only available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; Version 8.0 and later.&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;DEBUGGERCLIENT&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Debugger&amp;lt;/var&amp;gt; client socket port.&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;DEBUGGERSERVER&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Debugger&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;TN3270 Debugger&amp;lt;/var&amp;gt; server socket port.&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;FTPSERVER&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus FTP Server]]&amp;lt;/var&amp;gt; application.&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;IFDIAL&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus IFDIAL Library]]&amp;lt;/var&amp;gt; applications.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr id=&amp;quot;IMAGINET&amp;quot;&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;IMAGINET&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;An &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Imagine Transparency]]&amp;lt;/var&amp;gt; port. This port type is only available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; Version 8.0 and later. There can only be one started IMAGINET port in an Online.&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;OAS&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Synonym for type &amp;lt;var&amp;gt;SDS&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;&amp;lt;var&amp;gt;OMNI&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Synonym for type &amp;lt;var&amp;gt;SDS&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;&amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Media:josrvr.pdf|Janus Open Server]]&amp;lt;/var&amp;gt; applications; &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Media:JoclrNew.pdf|Janus Open Client]]&amp;lt;/var&amp;gt; connections are outward-bound connections on an &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt; port.&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;SRVSOCK&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; server socket port.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;SRVSOCKU&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; UDP server port. Only available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; Version 8.0 and later.&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;SDS&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Media:jsdsr.pdf|Janus Specialty Data Store]]&amp;lt;/var&amp;gt; port.&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;TNSERV&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Telnet Server]]&amp;lt;/var&amp;gt; port.&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;WEBSERV&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A World Wide Web Server port.&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;
For &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Open Client&amp;lt;/var&amp;gt; usage, you must define one or more ports of type &amp;lt;var&amp;gt;SDS&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt;, and you may need to use the &amp;lt;var&amp;gt;MASTER&amp;lt;/var&amp;gt; parameter on a port definition.  For &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; server ports, specify &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt;; for &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; client ports, specify &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt;; for &amp;lt;var&amp;gt;JANUS FTP&amp;lt;/var&amp;gt; server ports, specify &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt;; for &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; telnet server ports, specify &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt; ports require that the system &amp;lt;var&amp;gt;TNDEV&amp;lt;/var&amp;gt; parameter be set to indicate the &amp;lt;var&amp;gt;IODEV&amp;lt;/var&amp;gt; that daemon threads switch to while in full-screen mode for a telnet connection.&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;maxcon&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Maximum number of simultaneous active connections to be allowed on the port. This number must be less than or equal to the number of TCP/IP connections for which the site is licensed. If you are defining multiple ports for your site, however, the sum of the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;maxcon&amp;lt;/var&amp;gt; connections you define is allowed to be greater than the number for which the site is licensed. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Server]]&amp;lt;/var&amp;gt; will automatically prevent any connection that would exceed the site license limit. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Open Client&amp;lt;/var&amp;gt;, note that a server-to-server connection requires an extra connection for the &#039;&#039;&#039;site handler.&#039;&#039;&#039; Thus, a single connection to a remote server would use two connections, while 10 connections to a remote server would use 11. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use the &amp;lt;var&amp;gt;[[JANUS TSTATUS]]&amp;lt;/var&amp;gt; command to view the thread usage and connection limits for your port, and you can use the &amp;lt;var&amp;gt;[[JANUS LIMITS]]&amp;lt;/var&amp;gt; command to view similar information for your Online.&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;other_parms&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A set of blank-delimited parameters that describe the characteristics of and processing to be performed on the port. These parameters are keywords, sometimes followed by values, and they are described individually in the subsections that follow. They are all optional, except:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; is required. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;DEBUGGERCLIENT&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;REMOTE&amp;lt;/var&amp;gt; is required. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;SRVSOCKU&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; is required. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;[[OPEN (JANUS DEFINE parameter)|OPEN]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[CMD (JANUS DEFINE parameter)|CMD]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[NEWSESOPEN (JANUS DEFINE parameter)|NEWSESOPEN]]&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;[[NEWSESCMD (JANUS DEFINE parameter)|NEWSESCMD]]&amp;lt;/var&amp;gt; are not allowed. &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;
==Examples==&lt;br /&gt;
&lt;br /&gt;
The parameters you might use on a port definition vary by port type (that is, communication protocol), the security requirements of your shop and application, performance considerations and the applications that will run inside the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; Online as a client or a service on this port.&lt;br /&gt;
&lt;br /&gt;
There is no such thing as a &amp;quot;typical&amp;quot; port &amp;amp;mdash; each one is customized to the service or services running over the port.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DEFINE JANWEB 80 WEBSERV 50 WEBUSER WEBUSER TRACE 0 UPCASE -&lt;br /&gt;
       OBSIZE 10240 IBSIZE 10240 RBSIZE 10240 TIMEOUT 600        -&lt;br /&gt;
       OPEN FILE JANWEB MAXTEMP 14000 BINDADDR 198.242.244.47    -&lt;br /&gt;
       LOG REQ WEBLOGJW LOGCLOSET 57 NOAUDTERM COMPRESS 2 KEEPALIVE 30&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example, a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; port is defined, named &amp;lt;var&amp;gt;JANWEB&amp;lt;/var&amp;gt;.  It runs at port 80 (the default web port) and allows 50 simultaneous connections.  Buffer sizes are increases over the default settings and a variety of logging, compressions and other settings are specified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DEFINE SOAP * CLSOCK 5 TIMEOUT 240 REMOTE * * MASTER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example, a client socket &amp;quot;master&amp;quot; port called &amp;lt;code&amp;gt;SOAP&amp;lt;/code&amp;gt; is defined, permitting 5 simultaneous outgoing connections to any &#039;&#039;remote&#039;&#039; hosts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;parmlist&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JANUS DEFINE parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[ALLOCC (JANUS DEFINE parameter)|ALLOCC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that input, output and request buffers are to be allocated when a connection is established and are to be freed when the connection is closed.&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;[[ANONYMOUS (JANUS DEFINE parameter)|ANONYMOUS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that anonymous access is permitted to the FTP server being defined.&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;[[ANONUSER (JANUS DEFINE parameter)|ANONUSER]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lets you change the name of the anonymous user,  &amp;lt;var&amp;gt;ANONUSER&amp;lt;/var&amp;gt; may be specified only if &amp;lt;var&amp;gt;ANONYMOUS&amp;lt;/var&amp;gt; is also specified.&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;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Enables per-suffix routing on IMAGINET ports, allowing multiple DBS instances to be served through a single port.&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;[[AUDTERM (JANUS DEFINE parameter)|AUDTERM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Controls whether the server thread sends &amp;quot;non-compiler terminal output&amp;quot; to the audit trail.&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;[[AUTODONE (JANUS DEFINE parameter)|AUTODONE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Server]]&amp;lt;/var&amp;gt; to treat a return to command mode after all port and ON rules &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt;s have been processed as an implicit &amp;lt;var&amp;gt;[[$Web_Done]]&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;td&amp;gt;[[AUTOLOAD (JANUS DEFINE parameter)|AUTOLOAD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that the incore copy of Janus tables are to be reloaded at the first request subsequent to a table redefinition.&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;[[AUTOON (JANUS DEFINE parameter)|AUTOON]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt; Janus Web Server&amp;lt;/var&amp;gt; to issue an implicit &amp;lt;var&amp;gt;[[$Web_On]]&amp;lt;/var&amp;gt; before executing the commands specified in a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;JANUS WEB ON&amp;lt;/var&amp;gt; rule.&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;[[AUTOSYS (JANUS DEFINE parameter)|AUTOSYS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets the Model 204 &amp;lt;var&amp;gt;AUTOSYS&amp;lt;/var&amp;gt; parameter to the indicated (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;subsys&amp;lt;/var&amp;gt;) value when a connection is received on a &amp;lt;var&amp;gt;[[JANUS DEFINE#type|TNSERV]]&amp;lt;/var&amp;gt; port.&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;[[BINARY (JANUS DEFINE parameter)|BINARY]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Sockets]]&amp;lt;/var&amp;gt; to send and receive strings with [[List of Janus Sockets $functions|$Sock_xxx]] functions or Socket methods using no translation.&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;[[BINDADDR (JANUS DEFINE parameter)|BINDADDR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the IP address to which the port will be bound, if the host (machine) on which &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; is running supports multiple IP addresses.&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;[[BSIZE (JANUS DEFINE parameter)|BSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the TCP/IP input and output buffers.&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;[[CHAR (JANUS DEFINE parameter)|CHAR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Sockets]]&amp;lt;/var&amp;gt; to translate strings (sent and received with &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; functions or methods) between the internal representation within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; (EBCDIC) and the character representation used by the remote end of the&lt;br /&gt;
connection.&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;[[CHARSET (JANUS DEFINE parameter)|CHARSET]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates, to the remote host, the character set being used by Janus.&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;[[CLIENTSOCKET (JANUS DEFINE parameter)|CLIENTSOCKET]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Names the client socket port to use to open connections back to the FTP client, if the client requests active file transfers.&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;[[CLOSEIMMED (JANUS DEFINE parameter)|CLOSEIMMED]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that if a lost connection is noticed by the Janus PST, the PST should &amp;lt;var&amp;gt;BUMP&amp;lt;/var&amp;gt; the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; thread associated with the connection immediately.&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;[[CLOSEREAD (JANUS DEFINE parameter)|CLOSEREAD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that web threads should &amp;quot;put up&amp;quot; a TCP/IP read after receiving the entire request but before processing it.&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;[[CMD (JANUS DEFINE parameter)|CMD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; commands to be executed after the files and groups specified in the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; parameter are opened.&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;[[COMPRESS (JANUS DEFINE parameter)|COMPRESS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the type of compression to be performed on outgoing &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; data.&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;[[CR (JANUS DEFINE parameter)|CR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that lines of text data sent to a browser should be separated by the ASCII carriage return character (X&#039;0D&#039;).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[CRLF (JANUS DEFINE parameter)|CRLF]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that lines of text data sent to a browser should be separated by the ASCII carriage return and line feed characters (X&#039;0D0A&#039;).&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;[[CSSINSP (JANUS DEFINE parameter)|CSSINSP]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; is to insert a space to represent the attribute byte on a 3270 screen.&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;[[CSSTITLEDIV and CSSTITLESPAN (JANUS DEFINE parameters)|CSSTITLEDIV and CSSTITLESPAN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; support is to use a &amp;lt;code&amp;gt;&amp;amp;lt;div&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;var&amp;gt;CSSTITLEDIV&amp;lt;/var&amp;gt;) or &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;var&amp;gt;CSSTITLESPAN&amp;lt;/var&amp;gt;) tag for the title line of a screen.&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;[[DBCS and NODBCS (JANUS DEFINE parameters)|DBCS and NODBCS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;DBCS&amp;lt;/var&amp;gt; parameter is to be automatically set to 1 on requests to a &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; port.&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;[[DEBPORTCMD and NODEBPORTCMD (JANUS DEFINE parameters)|DEBPORTCMD and NODEBPORTCMD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether the commands specified in the &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; clause of the &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command are to be run on threads debugging requests to the port with the &amp;lt;var&amp;gt;[[JANUSDEBUG]]&amp;lt;/var&amp;gt; command.&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;[[DEBPORTOPEN and NODEBPORTOPEN (JANUS DEFINE parameters)|DEBPORTOPEN and NODEBPORTOPEN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether the files and groups specified in the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; clause of the &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command are to be opened on threads debugging requests.&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;[[EXEC2RPC (JANUS DEFINE parameter)|EXEC2RPC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that language requests should be converted to RPCs.&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;[[FINCLOSE and NOFINCLOSE (JANUS DEFINE parameters)|FINCLOSE and NOFINCLOSE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Affect how &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; applications respond to a closed connection.&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;[[FDWOL (JANUS DEFINE parameter)|FDWOL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies that all &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt;s done by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; are to be done as &amp;lt;var&amp;gt;Find Without Locks&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;td&amp;gt;[[FORMPOSTWAIT (JANUS DEFINE parameter)|FORMPOSTWAIT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The default number of seconds to wait for the POST&#039;ing of a form while using &amp;lt;var&amp;gt;[[$Web_Form_Done]]&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;td&amp;gt;[[FORMREDIRWAIT (JANUS DEFINE parameter)|FORMREDIRWAIT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The default number of seconds to wait for the client on a &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; port (presumably a browser) to do the GET associated with a redirect generated by a &amp;lt;var&amp;gt;$Web_Form_Done&amp;lt;/var&amp;gt; call.&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;[[HIGHPRIORITY (JANUS DEFINE parameter)|HIGHPRIORITY]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Adjusts the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; scheduling priority of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; threads by starting them at the upper end of their priority range rather than at their default priority.&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;[[HTTPVERSION (JANUS DEFINE parameter)|HTTPVERSION]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sets the HTTP version returned to the browser by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&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;td&amp;gt;[[IBSIZE (JANUS DEFINE parameter)|IBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the TCP/IP input buffer.&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;[[INPUTTIMEOUT (JANUS DEFINE parameter)|INPUTTIMEOUT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to use a different timeout value for input (receiving the web request) than for output.&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;[[JANCAT (JANUS DEFINE parameter)|JANCAT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the name of the file that contains the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; to SQL mappings.&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;[[KEEPALIVE (JANUS DEFINE parameter)|KEEPALIVE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the number of seconds a TCP/IP connection is to be held open after an HTTP request on that connection.&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;[[LANGUAGE (JANUS DEFINE parameter)|LANGUAGE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates, to the remote host, the language being used by Janus.&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;[[LEGBL, LEGREV, LEGUS, NOLEGBL, NOLEGREV, and NOLEGUS (JANUS DEFINE parameters)|LEGBL, LEGREV, LEGUS, NOLEGBL, NOLEGREV, and NOLEGUS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sets &#039;&#039;blink&#039;&#039;, &#039;&#039;underscore&#039;&#039; and &#039;&#039;reverse&#039;&#039; characteristics for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; screens.&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;[[LEGCSS and NOLEGCSS (JANUS DEFINE parameters)|LEGCSS and NOLEGCSS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; is to use Cascading Style Sheets.&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;[[LEGJS and NOLEGJS (JANUS DEFINE parameters)|LEGJS and NOLEGJS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; is to use JavaScript.&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;[[LF (JANUS DEFINE parameter)|LF]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that lines of text data sent to a browser should be separated by the ASCII line feed character (X&#039;0A&#039;).&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;[[LINEND (JANUS DEFINE parameter)|LINEND]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the hex value of a string to be sent by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; at the end of each &amp;quot;line;&amp;quot; that is, appended to the string sent by the &amp;lt;var&amp;gt;[[$Sock_SendLn]]&amp;lt;/var&amp;gt; function or &amp;lt;var&amp;gt;Socket&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;[[SendWithLineEnd (Socket function)|SendWithLineEnd]]&amp;lt;/var&amp;gt; function or after each output line&lt;br /&gt;
captured on the socket.&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;[[LOG (JANUS DEFINE parameter)|LOG]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies that all &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; requests for the port are to be logged to a sequential data set whose DDNAME is specified (as indicated in this parameter&#039;s syntax).&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var&amp;gt;LOG&amp;lt;/var&amp;gt; data set records conform to the industry standard for web logging.&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;[[LOGAPPEND (JANUS DEFINE parameter)|LOGAPPEND]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log data set for the port is to be opened in APPEND mode.&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;[[LOGCLOSET (JANUS DEFINE parameter)|LOGCLOSET]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates how often the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log data set is to be &amp;quot;closed&amp;quot;, that is how often the DSCB is to be updated for the log dataset.&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;[[LOGGMT (JANUS DEFINE parameter)|LOGGMT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that the time stamps in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log data set for the port are to be represented as GMT instead of local time.&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;[[LOGMSGI (JANUS DEFINE parameter)|LOGMSGI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from saving &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; messages issued during logon for a web user.&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;[[MASTER (JANUS DEFINE parameter)|MASTER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies that this is the default port for &#039;&#039;outgoing&#039;&#039; client communication.&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;[[MAXCURS (JANUS DEFINE parameter)|MAXCURS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of cursors that can be opened for a single &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; connection.&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;[[MAXIPSES (JANUS DEFINE parameter)|MAXIPSES]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the maximum number of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; sessions maintained per IP address.&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;[[MAXREC (JANUS DEFINE parameter)|MAXREC]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum record length for input records on a Janus &amp;lt;var&amp;gt;IFDIAL&amp;lt;/var&amp;gt; port.&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;[[MAXSAVE (JANUS DEFINE parameter)|MAXSAVE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of compiled SQL requests to save in CCATEMP.&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;[[MAXTEMP (JANUS DEFINE parameter)|MAXTEMP]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of CCATEMP pages allowed to be used by a web request for holding input (file upload) and output (dynamically generated HTML) data.&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;[[MSGOPT (JANUS DEFINE parameter)|MSGOPT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies what types of information to report in &amp;lt;code&amp;gt;MSIR.&amp;lt;/code&amp;gt; messages regarding Janus Web (only) requests.&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;[[MSGSEND and NOMSGSEND (JANUS DEFINE parameters)|MSGSEND and NOMSGSEND]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; messages (as opposed to the output from &amp;lt;var&amp;gt;PRINT&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;HTML&amp;lt;/var&amp;gt; statements) are to be sent to the browser.&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;[[MSG204 (JANUS DEFINE parameter)|MSG204]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the Sybase message number to be used to return terminal output to the client.&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;[[MSG204L (JANUS DEFINE parameter)|MSG204L]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the Sybase message number to be used to return terminal output to the client.&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;[[NEWPASSWORDC (JANUS DEFINE parameter)|NEWPASSWORDC]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This parameter prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from immediately sending an &amp;quot;Unauthorized&amp;quot; response to a browser after a password change.&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;[[NEWSESCMD (JANUS DEFINE parameter)|NEWSESCMD]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; commands to be executed when a new login session is initiated.&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;[[NEWSESGUESTOK (JANUS DEFINE parameter)|NEWSESGUESTOK]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that &amp;quot;guest&amp;quot; logins are to be allowed for &amp;lt;var&amp;gt;[[$Sir_Login]]&amp;lt;/var&amp;gt; calls in programs run as part of &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; processing.&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;[[NEWSESNOCLEARG (JANUS DEFINE parameter)|NEWSESNOCLEARG]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that GTBL is not to be cleared at the end of &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; command processing.&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;[[NEWSESOPEN (JANUS DEFINE parameter)|NEWSESOPEN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the names of one or more &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; files or groups to be opened before any &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; commands are executed.&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;[[NOAUDTERM (JANUS DEFINE parameter)|NOAUDTERM]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This parameter is used to control whether the server thread sends &amp;quot;non-compiler terminal output&amp;quot; to the audit trail.&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;[[NOAUTODONE (JANUS DEFINE parameter)|NOAUTODONE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from treating a return to command mode after all port and &amp;lt;var&amp;gt;ON&amp;lt;/var&amp;gt; rules &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt;s have been processed as an implicit &amp;lt;var&amp;gt;$Web_Done&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;td&amp;gt;[[NOAUTOON (JANUS DEFINE parameter)|NOAUTOON]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from preceding the execution of the command specified in a &amp;lt;var&amp;gt;JANUS WEB ON&amp;lt;/var&amp;gt; rule with an implicit &amp;lt;var&amp;gt;$Web_On&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;td&amp;gt;[[NOSCREENREDIR (JANUS DEFINE parameter)|NOSCREENREDIR]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; legacy support (automatic mapping of 3270 applications to HTML) is not to use the redirect&#039;s to map all screens for a legacy session to the same URL.&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;[[NOTRACEFIELD (JANUS DEFINE parameter)|NOTRACEFIELD]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the form field or fields whose values are not to be traced when the X&#039;04&#039; bit (causes tracing of form field values for web requests) of &amp;lt;var&amp;gt;JANUS TRACE&amp;lt;/var&amp;gt; is in effect.&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;[[NOUPCASE (JANUS DEFINE parameter)|NOUPCASE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that no client data is to be converted to uppercase.&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;[[OBSIZE (JANUS DEFINE parameter)|OBSIZE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the size of the TCP/IP output buffer.&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;[[OMNIACCT (JANUS DEFINE parameter)|OMNIACCT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;ACCOUNT&amp;lt;/var&amp;gt; for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog [[Sdaemons|sdaemon]] for the port.&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;[[OMNIUSER (JANUS DEFINE parameter)|OMNIUSER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; user ID for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog sdaemon for the port.&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;[[OPEN (JANUS DEFINE parameter)|OPEN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the name of one or more &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; files or groups to be opened when a server session is initiated.&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;[[PASVPORT (JANUS DEFINE parameter)|PASVPORT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Identifies the first &amp;lt;var&amp;gt;FTP&amp;lt;/var&amp;gt; server port number to use for &amp;quot;passive&amp;quot; file transfers.&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;[[PRELOGINUSER (JANUS DEFINE parameter)|PRELOGINUSER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the userid under which pre-login processing runs.&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;[[PRSTOK (JANUS DEFINE parameter)|PRSTOK]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the hex values of strings that are used to separate input strings using the &amp;lt;var&amp;gt;[[$Sock_RecvPrs]]&amp;lt;/var&amp;gt; function or &amp;lt;var&amp;gt;Socket&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;[[ReceiveAndParse (Socket function)|ReceiveAndParse]]&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;td&amp;gt;[[PUBLOG (JANUS DEFINE parameter)|PUBLOG]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that a &amp;quot;real&amp;quot; login should be done for the &amp;lt;var&amp;gt;SOCKUSER&amp;lt;/var&amp;gt; userid for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; logons.&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;[[RAWHEADER (JANUS DEFINE parameter)|RAWHEADER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to save the raw web request header stream.&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;[[RAWINPUT (JANUS DEFINE parameter)|RAWINPUT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to save the raw input stream for an HTTP POST, regardless of the mime type set by the client in the &amp;lt;code&amp;gt;content-type&amp;lt;/code&amp;gt; header.&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;[[RAWINPUTONLY (JANUS DEFINE parameter)|RAWINPUTONLY]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates that, regardless of the POST data content-type set by the client, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; should: 1) Save the raw input stream of an HTTP POST and 2) Refrain from parsing the input content into form fields.&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;[[RBSIZE (JANUS DEFINE parameter)|RBSIZE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the Janus RPC or Request buffer size.&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;[[REMOTE (JANUS DEFINE parameter)|REMOTE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Identifies the remote server and the remote port number to be used with a set of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; connections.&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;[[RPCONLY (JANUS DEFINE parameter)|RPCONLY]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that only RPC requests are allowed on the port.&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;[[SCREEN and NOSCREEN (JANUS DEFINE parameters)|SCREEN and NOSCREEN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; screens will be allowed to appear on requests to the port.&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;[[SCREENTHROW and NOSCREENTHROW (JANUS DEFINE parameters)|SCREENTHROW and NOSCREENTHROW]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; client errors will cause an exception to be thrown.&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;[[SCREENURL (JANUS DEFINE parameter)|SCREENURL]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; legacy support (automatic mapping of 3270&lt;br /&gt;
applications to HTML) is to switch web applications that present a 3270 screen to a special internally generated URL.&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;[[SDSACCT (JANUS DEFINE parameter)|SDSACCT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;ACCOUNT&amp;lt;/var&amp;gt; for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog sdaemon for the port.&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;[[SDSUSER (JANUS DEFINE parameter)|SDSUSER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;USER&amp;lt;/var&amp;gt; for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog sdaemon for the port.&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;[[SESCOOKIE (JANUS DEFINE parameter)|SESCOOKIE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the name of a cookie that will be used to maintain logical sessions that will be used to perform trusted logins.&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;[[SESCOOKIENOSEC (JANUS DEFINE parameter)|SESCOOKIENOSEC]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that the cookie specified by &amp;lt;var&amp;gt;SESCOOKIE&amp;lt;/var&amp;gt; will &#039;&#039;&#039;not&#039;&#039;&#039; be sent to the browser as a &amp;quot;secure&amp;quot; cookie.&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;[[SESFASTLOGIN (JANUS DEFINE parameter)|SESFASTLOGIN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Reduces the login security overhead for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; threads by causing a login performed for a continued session to be a &amp;quot;fast&amp;quot; login.&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;[[SESTIMEOUT (JANUS DEFINE parameter)|SESTIMEOUT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the number of minutes of inactivity that will cause a logical login session being held either via &amp;lt;var&amp;gt;SESCOOKIE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;SSLSES&amp;lt;/var&amp;gt; to be terminated.&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;[[SLOWCLOSE (JANUS DEFINE parameter)|SLOWCLOSE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies a bitmask that indicates the conditions under which &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; is to perform a &amp;quot;slow&amp;quot; close of a connection with a browser.&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;[[SOCKACCT (JANUS DEFINE parameter)|SOCKACCT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; account ID used for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; logons.&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;[[SOCKPMAX (JANUS DEFINE parameter)|SOCKPMAX]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of sockets a user may have connected at any time using the particular &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; client port.&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;[[SOCKUSER (JANUS DEFINE parameter)|SOCKUSER]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; user ID used for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; logons.&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;[[SQUAREB (JANUS DEFINE parameter)|SQUAREB]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Overrides the default EBCDIC characters for square brackets in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log file.&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;[[SSL (JANUS DEFINE parameter)|SSL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that communications on this port should be encrypted using SSL (Secure Sockets Layer) or TLS (Transport Layer Security) support.&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;[[SSLBSIZE (JANUS DEFINE parameter)|SSLBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the input and output buffers used for reading encrypted data for an &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; port.&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;[[SSLCACHE (JANUS DEFINE parameter)|SSLCACHE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the number of entries in virtual storage to be allocated for caching information related to this port&#039;s SSL sessions.&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;[[SSLCIPH (JANUS DEFINE parameter)|SSLCIPH]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Limit the stream ciphers (encryption algorithms) that this port offers for SSL connections.&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;[[SSLCLCERT and SSLCLCERTR (JANUS DEFINE parameters)|SSLCLCERT and SSLCLCERTR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specify that an &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; server port will request an SSL certificate from the client.&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;[[SSLIBSIZE (JANUS DEFINE parameter)|SSLIBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the SSL input buffer to be used on &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; ports.&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;[[SSLMAXAGE (JANUS DEFINE parameter)|SSLMAXAGE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the maximum number of minutes that an SSL session is to be maintained.&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;[[SSLMAXCERTL (JANUS DEFINE parameter)|SSLMAXCERTL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the number of bytes of virtual storage to be allocated to hold incoming certificates presented for authentication.&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;[[SSLOBSIZE (JANUS DEFINE parameter)|SSLOBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the SSL output buffer to be used on &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; ports.&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;[[SSLOPT (JANUS DEFINE parameter)|SSLOPT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies that the use of SSL-like encryption is optional for applications using the port.&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;[[SSLPROT (JANUS DEFINE parameter)|SSLPROT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specify the degree of SSL-like encryption available at this port.&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;[[SSLSES (JANUS DEFINE parameter)|SSLSES]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Reduces the overhead of &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; processing by limiting it to logical session establishment time.&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;[[SSLTRUST (JANUS DEFINE parameter)|SSLTRUST]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that the certificate presented by the other side of a TLS/SSL connection is to be trusted, even if it is not signed by a known certifying authority. This parameter is only available in Model 204 7.7 and later.&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;[[SSLUNENC (JANUS DEFINE parameter)|SSLUNENC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that an unencrypted private key is being used in the certificate specified by the &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; parameter on this Janus server port definition.&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;[[STIMEOUT (JANUS DEFINE parameter)|STIMEOUT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets the number of seconds of inactivity after which a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; session is terminated.&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;[[TCPLOG (JANUS DEFINE parameter)|TCPLOG]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to log in a sequential dataset all inbound and outbound TCP data transmitted for this port.&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;[[TCPKEEPALIVE (JANUS DEFINE parameter)|TCPKEEPALIVE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies that connections on the port should use TCP keepalives.&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;[[TCPKEEPALIVETIME (JANUS DEFINE parameter)|TCPKEEPALIVETIME]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the time interval, in seconds, that TCP keepalive probes are to be sent.&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;[[TIMEOUT (JANUS DEFINE parameter)|TIMEOUT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the number of seconds of inactivity after which clients connected to this port will be disconnected.&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;[[TIMEZONE (JANUS DEFINE parameter)|TIMEZONE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A string indicating the [https://www.iana.org/time-zones IANA time zone] under which the Online is running. This parameter is only valid for &amp;lt;var&amp;gt;IMAGINET&amp;lt;/var&amp;gt; ports.&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;[[TRACE (JANUS DEFINE parameter)|TRACE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the initial &amp;lt;var&amp;gt;TRACE&amp;lt;/var&amp;gt; setting for the port.&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;[[UPCASE (JANUS DEFINE parameter)|UPCASE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that all client &amp;quot;names&amp;quot; are to be converted to uppercase.&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;[[VARIPADDR (JANUS DEFINE parameter)|VARIPADDR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that a single browser might access &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; using different IP addresses.&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;[[WEBACCT (JANUS DEFINE parameter)|WEBACCT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; account ID used for web logons for URLs where no userid is required.&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;[[WEBCOOKID (JANUS DEFINE parameter)|WEBCOOKID]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that an identifying &amp;quot;cookie&amp;quot; should be sent to a browser to distinguish multiple browsers coming through the same proxy server or running on the same machine.&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;[[WEBLH (JANUS DEFINE parameter)|WEBLH]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBLOGHOLD&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;td&amp;gt;[[WEBLM (JANUS DEFINE parameter)|WEBLM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBLOGMAX&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;td&amp;gt;[[WEBLOGCOOKIE (JANUS DEFINE parameter)|WEBLOGCOOKIE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that, for public URLs, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; should log the user in with the userid specified by cookie-name. Normally, all public URL logins use the default public userid (usually &amp;lt;var&amp;gt;WEBUSER&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;td&amp;gt;[[WEBLOGHOLD (JANUS DEFINE parameter)|WEBLOGHOLD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the number of seconds that a &amp;quot;real&amp;quot; login should be saved for re-use on a web connection.&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;[[WEBLOGMAX (JANUS DEFINE parameter)|WEBLOGMAX]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the maximum number of cached login sessions to be held for a single user.&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;[[WEBPL (JANUS DEFINE parameter)|WEBPL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBPUBLOG&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;td&amp;gt;[[WEBPUBLOG (JANUS DEFINE parameter)|WEBPUBLOG]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that a &amp;quot;real&amp;quot; login should be done for the &amp;lt;var&amp;gt;WEBUSER&amp;lt;/var&amp;gt; &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; for public URLs.&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;[[WEBREALM (JANUS DEFINE parameter)|WEBREALM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the security &amp;quot;realm&amp;quot; of userids and passwords.&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;[[WEBSDMAX (JANUS DEFINE parameter)|WEBSDMAX]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the maximum number of sdaemons to be used for cached web logins.&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;[[WEBSM (JANUS DEFINE parameter)|WEBSM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBSDMAX&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[WEBSOCKET and NOWEBSOCKET (JANUS DEFINE parameters)|WEBSOCKET and NOWEBSOCKET ]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not the port will negotiate with a client to upgrade to the Web Socket protocol. &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;[[WEBUSER (JANUS DEFINE parameter)|WEBUSER]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; user ID used for web logons for URLs where no userid is required.&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;[[WSFQUERY (JANUS DEFINE parameter)|WSFQUERY]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that Janus is to issue a &amp;quot;Write Structured Field Query&amp;quot; request to any Telnet client that connects to it.&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;[[XMLSCREEN and NOXMLSCREEN (JANUS DEFINE parameters)|XMLSCREEN and NOXMLSCREEN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets XML screen mode (&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy XML Support]]&amp;lt;/var&amp;gt;) characteristics for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; screens.&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;[[XMLSCREENFIELD and NOXMLSCREENFIELD (JANUS DEFINE parameters)|XMLSCREENFIELD and NOXMLSCREENFIELD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not a screenField attribute is to be added to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; pages.&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;[[XMLSCREENREPUC (JANUS DEFINE parameter)|XMLSCREENREPUC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies a Unicode character with which to replace an XMLSCREEN input character that cannot be translated to EBCDIC.&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;[[XMLNULLSCANCEL and XMLNULLSSEND (JANUS DEFINE parameters)|XMLNULLSCANCEL and XMLNULLSSEND]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets XML screen mode (&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy XML Support]]&amp;lt;/var&amp;gt;) response to nulls for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; screens.&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;[[XMLNULLSSTRIP and XMLNULLSBLANK (JANUS DEFINE parameters)|XMLNULLSSTRIP and XMLNULLSBLANK]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets an XML screen mode (&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy XML Support&amp;lt;/var&amp;gt;) null-replacement option for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; screens.&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;[[XTAB (JANUS DEFINE parameter)|XTAB]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies a translation table that has not yet been loaded with the &amp;lt;var&amp;gt;JANUS LOADXT&amp;lt;/var&amp;gt; command, but the table must be loaded before the port can be started.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&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;[[List of Janus commands]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DEFINE#parmlist|List of JANUS DEFINE parameters]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[Janus port processing and examples]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:JANUS DEFINE parameters|JANUS DEFINE]]&lt;br /&gt;
[[Category:Janus commands]]&lt;br /&gt;
[[Category:Janus Web Server]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=DbsName_(Imagine_property)&amp;diff=120824</id>
		<title>DbsName (Imagine property)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=DbsName_(Imagine_property)&amp;diff=120824"/>
		<updated>2026-04-14T03:21:33Z</updated>

		<summary type="html">&lt;p&gt;Alex: Create DbsName Imagine method page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;DbsName: Return the DBS name for the current connection&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;DbsName&amp;lt;/var&amp;gt; method returns the DBS name for the current Imagine connection as a String.&lt;br /&gt;
&lt;br /&gt;
If no DBS name was sent by the broker, an empty string is returned.&lt;br /&gt;
&lt;br /&gt;
This is a shared, read-only method.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;%&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt; = %(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagineObject&amp;lt;/span&amp;gt;):&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;DbsName&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return value==&lt;br /&gt;
A String containing the DBS name for the current connection (up to 63 characters), or an empty string if no DBS name was provided.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Use &amp;lt;var&amp;gt;DbsName&amp;lt;/var&amp;gt; to determine which DBS instance the connecting broker requested during the handshake. This is useful in APSY code that needs to identify the target DBS on a port with &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; defined.&lt;br /&gt;
&lt;br /&gt;
This is new as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; version 8.0.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%dbsName = %(system):DbsName&lt;br /&gt;
If %dbsName NE &#039;&#039; Then&lt;br /&gt;
   Print &#039;DBS: &#039; %dbsName&lt;br /&gt;
End If&amp;lt;/p&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;[[ApsySuffix (Imagine property)|ApsySuffix]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[List of Imagine methods]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Imagine methods]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=ApsySuffix_(Imagine_property)&amp;diff=120823</id>
		<title>ApsySuffix (Imagine property)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=ApsySuffix_(Imagine_property)&amp;diff=120823"/>
		<updated>2026-04-14T03:21:21Z</updated>

		<summary type="html">&lt;p&gt;Alex: Create ApsySuffix Imagine method page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;ApsySuffix: Return the APSY suffix character for the current connection&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;ApsySuffix&amp;lt;/var&amp;gt; method returns the APSY suffix character for the current Imagine connection as a String.&lt;br /&gt;
&lt;br /&gt;
If no suffix is active (the port does not have &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; defined, or the broker did not send a suffix), an empty string is returned.&lt;br /&gt;
&lt;br /&gt;
This is a shared, read-only method.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;%&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;suffix&amp;lt;/span&amp;gt; = %(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagineObject&amp;lt;/span&amp;gt;):&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;ApsySuffix&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return value==&lt;br /&gt;
A String containing the single-character APSY suffix (A-Z, 0-9) for the current connection, or an empty string if no suffix is active.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Use &amp;lt;var&amp;gt;ApsySuffix&amp;lt;/var&amp;gt; to determine which suffix the connecting broker presented during the handshake. This is useful in APSY code that needs to vary its behavior based on which DBS instance the connection is targeting.&lt;br /&gt;
&lt;br /&gt;
This is new as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; version 8.0.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%suffix = %(system):ApsySuffix&lt;br /&gt;
If %suffix NE &#039;&#039; Then&lt;br /&gt;
   Print &#039;Suffix: &#039; %suffix&lt;br /&gt;
End If&amp;lt;/p&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;[[DbsName (Imagine property)|DbsName]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[List of Imagine methods]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Imagine methods]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DISPLAYSUFFIX&amp;diff=120822</id>
		<title>JANUS DISPLAYSUFFIX</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DISPLAYSUFFIX&amp;diff=120822"/>
		<updated>2026-04-14T03:21:05Z</updated>

		<summary type="html">&lt;p&gt;Alex: Create JANUS DISPLAYSUFFIX command page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;JANUS DISPLAYSUFFIX: Display suffix-to-DBS name mappings&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUS DISPLAYSUFFIX&amp;lt;/var&amp;gt; command displays the suffix-to-DBS name mappings for a port that has &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; defined.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;JANUS DISPLAYSUFFIX&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;portname&amp;lt;/span&amp;gt; [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;suffix&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;portname&amp;lt;/var&amp;gt; is the name of a &amp;lt;var&amp;gt;[[JANUS DEFINE]]&amp;lt;/var&amp;gt; port with &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; set.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;suffix&amp;lt;/var&amp;gt; is an optional single suffix character. If specified, only that mapping is shown. Otherwise all mappings for the port are displayed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Synonyms==&lt;br /&gt;
&amp;lt;var&amp;gt;JANUS DISSUFFIX&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;JANUS DISPLAYSUFF&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;JANUS DISSUFF&amp;lt;/var&amp;gt; are synonyms for &amp;lt;var&amp;gt;JANUS DISPLAYSUFFIX&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
The display includes the suffix character, DBS name, and queue counts.&lt;br /&gt;
&lt;br /&gt;
This is new as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; version 8.0.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DISPLAYSUFFIX MYPORT&lt;br /&gt;
JANUS DISPLAYSUFFIX MYPORT A&amp;lt;/p&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;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS ADDSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DELETESUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Janus commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DELETESUFFIX&amp;diff=120821</id>
		<title>JANUS DELETESUFFIX</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DELETESUFFIX&amp;diff=120821"/>
		<updated>2026-04-14T03:20:53Z</updated>

		<summary type="html">&lt;p&gt;Alex: Create JANUS DELETESUFFIX command page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;JANUS DELETESUFFIX: Remove a suffix-to-DBS name mapping&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUS DELETESUFFIX&amp;lt;/var&amp;gt; command removes a suffix mapping from a port that has &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; defined.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;JANUS DELETESUFFIX&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;portname&amp;lt;/span&amp;gt; {&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;suffix&amp;lt;/span&amp;gt; | &amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;portname&amp;lt;/var&amp;gt; is the name of a &amp;lt;var&amp;gt;[[JANUS DEFINE]]&amp;lt;/var&amp;gt; port with &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; set.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;suffix&amp;lt;/var&amp;gt; is a single suffix character to remove, or &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; to remove all suffix mappings for the port.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Synonyms==&lt;br /&gt;
&amp;lt;var&amp;gt;JANUS DELSUFFIX&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;JANUS DELSUFF&amp;lt;/var&amp;gt; are synonyms for &amp;lt;var&amp;gt;JANUS DELETESUFFIX&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Specify a single suffix character to remove one mapping, or &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; to remove all suffix mappings for the port.&lt;br /&gt;
&lt;br /&gt;
This is new as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; version 8.0.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DELETESUFFIX MYPORT A&lt;br /&gt;
JANUS DELETESUFFIX MYPORT *&amp;lt;/p&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;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS ADDSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DISPLAYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Janus commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=JANUS_ADDSUFFIX&amp;diff=120820</id>
		<title>JANUS ADDSUFFIX</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=JANUS_ADDSUFFIX&amp;diff=120820"/>
		<updated>2026-04-14T03:20:38Z</updated>

		<summary type="html">&lt;p&gt;Alex: Create JANUS ADDSUFFIX command page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;JANUS ADDSUFFIX: Register a suffix-to-DBS name mapping&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUS ADDSUFFIX&amp;lt;/var&amp;gt; command registers a suffix character and DBS name pair for a port that has &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; defined.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;JANUS ADDSUFFIX&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;portname suffix dbsname&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;portname&amp;lt;/var&amp;gt; is the name of a &amp;lt;var&amp;gt;[[JANUS DEFINE]]&amp;lt;/var&amp;gt; port with &amp;lt;var&amp;gt;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/var&amp;gt; set.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;suffix&amp;lt;/var&amp;gt; is a single alphanumeric character (A-Z, 0-9).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;dbsname&amp;lt;/var&amp;gt; is the name of the DBS instance, up to 63 characters.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Synonyms==&lt;br /&gt;
&amp;lt;var&amp;gt;JANUS ADDSUFF&amp;lt;/var&amp;gt; is a synonym for &amp;lt;var&amp;gt;JANUS ADDSUFFIX&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
A port can have multiple suffix mappings. The suffix must be unique for the port. If the suffix already exists for the specified port, an error is produced.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;APSYSUFFIX&amp;lt;/var&amp;gt; must be specified on the &amp;lt;var&amp;gt;[[JANUS DEFINE]]&amp;lt;/var&amp;gt; for the port before suffix mappings can be added.&lt;br /&gt;
&lt;br /&gt;
This is new as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; version 8.0.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS ADDSUFFIX MYPORT A DBSALPHA&lt;br /&gt;
JANUS ADDSUFFIX MYPORT B DBSBETA&amp;lt;/p&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;[[APSYSUFFIX (JANUS DEFINE parameter)|APSYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DELETESUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DISPLAYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Janus commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120819</id>
		<title>APSYSUFFIX (JANUS DEFINE parameter)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=APSYSUFFIX_(JANUS_DEFINE_parameter)&amp;diff=120819"/>
		<updated>2026-04-14T03:20:24Z</updated>

		<summary type="html">&lt;p&gt;Alex: Create APSYSUFFIX parameter page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;APSYSUFFIX: Enable per-suffix routing on IMAGINET ports&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;APSYSUFFIX&amp;lt;/var&amp;gt; is a parameter on &amp;lt;var&amp;gt;[[JANUS DEFINE]]&amp;lt;/var&amp;gt; that enables per-suffix routing on IMAGINET ports, allowing multiple DBS (Database Server) instances to be served by a single port.&lt;br /&gt;
&lt;br /&gt;
This is a flag parameter; it takes no value.&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;var&amp;gt;APSYSUFFIX&amp;lt;/var&amp;gt; is set, each connecting Imagine broker identifies itself with a single-character suffix and a DBS name during the handshake. The suffix-to-DBS mappings are managed at runtime via the &amp;lt;var&amp;gt;[[JANUS ADDSUFFIX]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[JANUS DELETESUFFIX]]&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;[[JANUS DISPLAYSUFFIX]]&amp;lt;/var&amp;gt; commands.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;JANUS DEFINE&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;portname&amp;lt;/span&amp;gt; ... &amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;APSYSUFFIX&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Applicability==&lt;br /&gt;
&amp;lt;var&amp;gt;APSYSUFFIX&amp;lt;/var&amp;gt; is valid only for IMAGINET type ports.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
Use &amp;lt;var&amp;gt;APSYSUFFIX&amp;lt;/var&amp;gt; when a single IMAGINET port must serve multiple DBS instances. Each broker connecting to the port sends a single-character suffix (A-Z, 0-9) and a DBS name during the handshake. The suffix-to-DBS mappings are registered with &amp;lt;var&amp;gt;[[JANUS ADDSUFFIX]]&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The suffix character for the current connection is available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; User Language via the &amp;lt;var&amp;gt;[[ApsySuffix (Imagine property)|ApsySuffix]]&amp;lt;/var&amp;gt; method, and the DBS name via the &amp;lt;var&amp;gt;[[DbsName (Imagine property)|DbsName]]&amp;lt;/var&amp;gt; method.&lt;br /&gt;
&lt;br /&gt;
This is new as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; version 8.0.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS ADDSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DELETESUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DISPLAYSUFFIX]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[ApsySuffix (Imagine property)|ApsySuffix]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[DbsName (Imagine property)|DbsName]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:JANUS DEFINE parameters|APSYSUFFIX]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120628</id>
		<title>Record level locking and concurrency control</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120628"/>
		<updated>2025-09-05T21:49:56Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Release Imagine Records statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;toclimit-3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This article discusses aspects of request design related to concurrency control in a multi-user environment and presents statements and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; options that can be used to ensure logical consistency.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Illustrating a concurrent update===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user executing a User Language request expects that the records retrieved will not be modified by another user&#039;s concurrent request until the user&#039;s own request has completed. For example, consider these two requests being run concurrently:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 1&amp;lt;/b&amp;gt;       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.CARS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               COLOR = BLUE&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN BLUE.CARS&lt;br /&gt;
               PRINT MAKE AND COLOR&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 2&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.BUICKS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
                 MAKE = BUICK AND COLOR = BLUE&lt;br /&gt;
             END FIND&lt;br /&gt;
             FOR EACH RECORD IN BLUE.BUICKS&lt;br /&gt;
                 CHANGE COLOR TO RED&lt;br /&gt;
              END FOR&lt;br /&gt;
 END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User 1 expects only the make and the color BLUE to be printed. User 2&#039;s request must be prevented from changing User 1&#039;s records before they are printed.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking in Model 204==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Conflicts arise when one or more users are reading a file and another user attempts to update the file or when two or more users attempt to perform file maintenance on the same records retrieved from that file. The technique used by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to prevent overlapping updates is called record level locking. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Record locking modes===&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; can lock records as a set of records or as a single record number. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; performs record level locking in two modes: &amp;lt;/p&amp;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;Lock mode &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Allows... &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;Share &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;One or more users to read a file. Any number of users can have shared control of a record or record set concurrently.   &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;Exclusive &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Single user to update the file. An exclusive lock is not compatible with other exclusive locks nor with any shared locks. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All records in a record set have the same locking strength: they are all locked share, or exclusive, or they are all unlocked. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND statement records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records located by a FIND statement, called a record set or found set, are locked based on the FIND statement specification:&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;FIND&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in share mode&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND AND RESERVE&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in exclusive mode &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND WITHOUT LOCK&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Does not lock record set&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once obtained record set locks are kept till a RELEASE or COMMIT RELEASE statement is executed or the request ends.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record level locking evaluation rules==&lt;br /&gt;
 &lt;br /&gt;
===Request compilation and evaluation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Record-level locking is performed in the following manner. User Language requests are processed in two phases: compilation and evaluation. All requests can be compiled regardless of the operations to be performed or of other requests being compiled or evaluated at the same time. All requests are allowed to begin the evaluation stage. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the evaluation involves records or sets of records, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; automatically ensures that operations achieves the expected results by adhering to the following set of rules. The following User Language statements generate found sets that are processed as described.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement immediately locks the set of records it has retrieved in share mode. If the locking is successful, none of the records in that set can be updated by another user until the entire request, including request continuation(s), has been completed or the records have been released by some form of the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement, such as &amp;lt;var&amp;gt;Release Records In&amp;lt;/var&amp;gt;..., &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Release Commit&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement executed in a loop releases the old found set as soon as the statement is re-executed. The final set selected by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; remains locked until the end of the request. An unlabeled &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement, such as a &amp;lt;var&amp;gt;Find And Print Count&amp;lt;/var&amp;gt; statement, does not lock records at all.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND WITHOUT LOCKS statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The found set of records is indistinguishable from a list, except that it is referenced with an IN label clause. You must use the FIND WITHOUT LOCKS statement with caution, otherwise logical inconsistencies might occur. See [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] for more information.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FOR RECORD NUMBER statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FOR RECORD NUMBER statement locks the specified record in share mode, if it was not locked by the FIND statement. The lock is kept until the end of the loop or a COMMIT statement is processed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====DELETE ALL RECORDS IN statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DELETE ALL RECORDS IN statement temporarily locks the set of records to be deleted in exclusive mode before deletion occurs. The locking does not succeed if another user has access to any of the records through a FIND or file maintenance statement. Once a record has been deleted, the exclusive lock on the record is released, because the record no longer exists in the file.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====ADD, CHANGE, or DELETE, DELETE RECORD, and INSERT statements====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The ADD, CHANGE, DELETE fieldname, DELETE RECORD, and INSERT statements all lock the current record in exclusive mode before updating it. The exclusive single record lock remains on the current record until it passes through the loop, unless the record has been deleted. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Upon completion of a DELETE RECORD statement the deleted record cannot cause a record locking conflict. However, it the deleting user attempts to reference the deleted record via a previously established found set or list, the following message is issued:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.1266: NONEXISTENT RECORD REFERENCED&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====STORE RECORD statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The STORE RECORD statement gets a LPU record lock for the TBO files and does not get a record lock for non-TBO files.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For TBO files, an LPU record lock, which is always exclusive, is obtained, meaning unconditionally gotten, at the beginning of the STORE RECORD processing. However, other users cannot get a record locking conflict, because the record&#039;s existence bit is not turned on until STORE RECORD processing finishes. If you store a record, you automatically obtain an LPU lock and hold it until the next COMMIT statement is processed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For non-TBO files, no record lock of any kind is obtained. However, the record existence bit is not turned on until STORE RECORD processing is finished, so there are no problems with protecting the record from other users during STORE RECORD processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====END MORE statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a request ends with END MORE, records found by that request remain locked and cannot be modified by other users. If the request ends with END, all records are released as soon as execution is completed.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot lock a record, a locking conflict occurs, which are discussed in detail in [[#Handling locking conflicts|Handling locking conflicts]].   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==FIND WITHOUT LOCKS statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The resulting found set is indistinguishable from a list, except that it is referenced with an IN label clause.&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; The FIND WITHOUT LOCKS feature should be used only to solve specific performance problems. Before using the FIND WITHOUT LOCKS statement, please take into account the [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] following [[#Responding to a record locking conflict|Responding to a record locking conflict]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the FIND WITHOUT LOCKS statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;{FIND WITHOUT LOCKS | FDWOL} [ALL] RECORDS &lt;br /&gt;
 [IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; | ON [LIST] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;] &lt;br /&gt;
 [FOR WHICH | WITH] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;retrieval-conditions&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage notes====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Issues involved with using FIND WITHOUT LOCKS include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Logical integrity of data is at risk when another user:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Is in the midst of changing values which are related&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Changes or deletes the field which caused the record to be found&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;Physical integrity error messages or snaps are generated, including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SICK RECORD messages are sent when extension records are deleted. The record is not really sick; temporarily it appears that way to &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;SICK RECORD messages are sent from FOR EACH OCCURRENCE (FEO) statements when the record is modified by another user. Again, the record is not really sick.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;NONEXISTENT RECORD messages are sent when entire records are deleted. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of appropriate use of the FIND WITHOUT LOCKS statement include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;When there is one user at a time per record (for example, scratch records or bank teller applications where an account is usually modified by one teller at a time)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Report programs in a heavy update environment &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of inappropriate uses of the FIND WITHOUT LOCKS, which can result in snaps, include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Report program in a heavy delete environment (results in many&lt;br /&gt;
NONEXISTENT RECORD messages)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Retrievals in which the selection criteria can be changed by other users&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Reuse Record Number files, except possibly scratch files keyed on the user ID &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;
==Handling locking conflicts==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical locking situation is as follows. The first user issues a FIND statement for a large set of records and begins printing a long report. The second user issues a FIND statement for some of the same records and tries to update them with a CHANGE statement.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===ENQRETRY parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The number of times a request automatically attempts to lock a record or set of records before notifying the user of a conflict is determined by the&lt;br /&gt;
&amp;lt;var&amp;gt;[[ENQRETRY parameter|ENQRETRY]]&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
Between attempts, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; waits until the record or records that were held by another user are released or until three seconds pass.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Under these circumstances, the second user must decide whether to cancel the request or try again. The second user receives a message noting that the locking failed and is queried: &amp;lt;var&amp;gt;DO YOU REALLY WANT TO TRY AGAIN?&amp;lt;/var&amp;gt; The second user can respond in one of three ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, thereby cancelling the request.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt; and try to lock again immediately.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Wait a minute or two and reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Responding to a record locking conflict===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; you can specify the action to take if, an effort to lock a set of records is unsuccessful. The following statements specify the action to take in detail.&amp;lt;/p&amp;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;ON clause&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Can be used for...&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 nowrap&amp;gt;RECORD LOCKING CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Any type of conflict, including a retrieval statement conflict, that arises during a record locking attempt.&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;FIND CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Only a conflict that arises during the evaluation of a FIND statement or a FOR EACH RECORD statement used for retrieval. &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;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for these ON units is: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;] ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====If both types of ON units are active====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ON RECORD LOCKING CONFLICT and ON FIND CONFLICT follow the same rules as other ON units (see [[Subroutines#ON units|ON units]]). If both ON RECORD LOCKING CONFLICT and ON FIND CONFLICT are active within a request when a conflict occurs, the conflict is handled in the following manner:&amp;lt;/p&amp;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;If the conflict results from... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Clause invoked...&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;FIND statement or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ON FIND CONFLICT&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;A condition other than the FIND or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td nowrap&amp;gt;ON RECORD LOCKING CONFLICT &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;
===CLEAR ON statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The definition of an ON RECORD LOCKING CONFLICT or ON FIND CONFLICT unit is cleared by the following statement:    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;CLEAR ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a CLEAR ON RECORD LOCKING CONFLICT or CLEAR ON FIND CONFLICT statement, a record locking conflict does not invoke the corresponding ON unit.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b id=&amp;quot;pause&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Pause statement===&lt;br /&gt;
 &lt;br /&gt;
====Purpose====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement to cause the request to wait a specified number of seconds and then to retry the statement that caused the evaluation of the &amp;lt;var&amp;gt;ON&amp;lt;/var&amp;gt; unit. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is: &amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Pause statement syntax}}&lt;br /&gt;
Where:&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;n&amp;lt;/var&amp;gt; must be in the range 0-600, allowing a maximum pause of 10 minutes. &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&amp;lt;/var&amp;gt; is interpreted as a numeric value representing the number of seconds to wait. It must be in the range 0-86400. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is a bumpable wait.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is not specified or is specified as zero, processing stops and does not continue until the user enters a carriage return. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified, processing continues automatically after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; seconds.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/var&amp;gt; takes any non-null, non-numeric value or a numeric value in the range 0-86400, the SOUL request is canceled with the message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.2650: PAUSE TIME-VARIABLE NOT IN RANGE&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A variable with a null or 0 value does a terminal read. For example, &amp;lt;code&amp;gt;%a=&#039;xxx&#039;&amp;lt;/code&amp;gt; is treated as if zero was specified, and a read is issued.&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; You should generally specify small values for &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and issue a &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; only when no records are held by the request. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is large, the request can seem to be hung.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====See also====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;[[$WakeUp]]&amp;lt;/var&amp;gt; function is an alternative approach; it offers millisecond resolution pausing.&lt;br /&gt;
&lt;br /&gt;
===Handling Parallel Query Option/204 record locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a client request cannot complete because of a record locking conflict on the server system, the server automatically tries again to lock the record or set of records. The server tries again until it succeeds or until it has tried as many times as the value of the client thread ENQRETRY parameter. The value of the ENQRETRY parameter that is specified on the server thread has no effect on the number of retries. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If ENQRETRY attempts to lock a record or set of records do not succeed, the server notifies the client about the conflict. If an ON RECORD LOCKING or ON FIND CONFLICT unit is active, the unit is invoked. Otherwise, the client receives a message that the locking failed, followed by a prompt asking if the client wants to try again.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the client enters &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, the request is canceled. If the client enters &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;, the server repeats the locking attempt cycle, making as many as ENQRETRY attempts before prompting again. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking and release statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following statements can place a lock on a set of records or remove the lock placed on records.&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; To remove the lock placed on record sets, you can also use the COMMIT RELEASE for of the [[#COMMIT statement|COMMIT statement]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND AND RESERVE statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A User Language request can lock records in exclusive mode by using the FIND AND RESERVE statement. However, because records are exclusively locked, concurrency is reduced.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The basic format of the FIND AND RESERVE statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;FIND AND RESERVE [ALL] RECORDS FOR WHICH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
ON RECORD LOCKING CONFLICT&lt;br /&gt;
    PRINT &#039;RECORD LOCKING CONFLICT OCCURRED WITH &#039; -&lt;br /&gt;
         WITH $RLCUSR&lt;br /&gt;
    PRINT &#039;FILE &#039; WITH $RLCFILE&lt;br /&gt;
    PRINT &#039;RECORD &#039; WITH $RLCREC&lt;br /&gt;
END ON&lt;br /&gt;
 &lt;br /&gt;
POL.HLDR:  IN CLIENTS FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH POLICY NO = 100015&lt;br /&gt;
               RECTYPE = POLICYHOLDER&lt;br /&gt;
           END FIND&lt;br /&gt;
OWNER.POL: IN VEHICLES FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH OWNER POLICY = 100015&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN OWNER.POL&lt;br /&gt;
               %NEW.PREMIUM = VEHICLE PREMIUM + 100&lt;br /&gt;
               CHANGE VEHICLE PREMIUM TO %NEW.PREMIUM&lt;br /&gt;
               %TOTAL.PREMIUM = %TOTAL.PREMIUM + %NEW.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
           FOR EACH RECORD IN POL.HLDR&lt;br /&gt;
               CHANGE TOTAL PREMIUM TO %TOTAL.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In the preceding example, the first FIND AND RESERVE statement prevents access to TOTAL PREMIUM while its corresponding VEHICLE PREMIUMs are being changed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release Records statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records found using the &amp;lt;var&amp;gt;Find And Reserve&amp;lt;/var&amp;gt; statement are held in exclusive status until the end of the request or until they are released explicitly by the user with the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement. The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement also can be used to release records from &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements or records obtained in share status by &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statements issued in the regular form. Records released in this manner are no longer available to the request and might have to be found again. The original found set or list from which the sorted set was built is not affected.  &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; To avoid producing confusing results, issue a &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement at the end of a loop and not in the middle of one, since the statement relinquishes control of a found set. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/var&amp;gt; is the statement label of the FIND statement that locked the records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Processing====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement removes all:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entries from the specified found set(s), thereby removing the record set lock&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;List entries, when issued against list(s)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The user&#039;s single record locks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement refers to a &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statement, the space occupied by the temporary sorted record copies is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;Release Records On&amp;lt;/var&amp;gt; is equivalent to the &amp;lt;var&amp;gt;Clear List&amp;lt;/var&amp;gt; statement. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release All Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement terminates the lock in share mode placed on records by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement. &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; also clears all lists and the results of all &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements, and sets the current record number to -1. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is processed in a &amp;lt;var&amp;gt;For Each Record&amp;lt;/var&amp;gt; loop, subsequent references to the current record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available, and the first statement after the end of the loop is executed. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this release statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release All Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release Imagine Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement is exactly like a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement except:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It frees all mappings of record numbers to records for [[Imagine Transparency]] files.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; is done on all [[Daemon class#Transactional daemons|transactional daemon]] descendants.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It is not allowed to be invoked on a [[Daemon class#Transactional daemons|transactional daemon]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It can be followed by an optional &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword to indicate that a commit or backout is to be done before the rest of &amp;lt;var&amp;gt;Release All Record&amp;lt;/var&amp;gt; processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If not followed by the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword, it cancels the request if in a uncommitted transaction (there are pending updates)&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;
Outside of being a bit more concise than having a separate &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; statement, doing a &amp;lt;code&amp;gt;Release Imagine Records Backout&amp;lt;/code&amp;gt; does not result in a &amp;lt;code&amp;gt;M204.1096: There were no updates for backout to process&amp;lt;/code&amp;gt; message if there are no updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Imagine Transparency]] record numbers are thread-specific and are assigned sequentially, starting at 1, as records are found or accessed. One can the use [[Record loops#For Record Number processing|For Record Number]] statement to access the same &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; record over transaction boundaries, though the record would be re-retrieved from the broker for each transaction. This is no longer possible after a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement is executed. On the plus side, this clears the record number to record mapping table which would, otherwise, grow indefinitely on a logged in thread. So, for long-lived threads, it is a good idea to do a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; whenever possible, to keep the mapping table small.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unlike &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; transactions, [[Imagine Transparency]] transactions include retrieval operations. An attempt to retrieve a record that has been updated after the start of the &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; transaction results in a data consistency request canceling error. If this is a concern, a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; would end the current &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; transaction and a new one would be started on the next &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; retrieval (or update) operation. Of course, this &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement would have other significant application impacts, so might not be a feasible solution to avoiding data consistency errors in many cases.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement, like the &amp;lt;var&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; feature, is available in &amp;lt;var&amp;gt;Model 204 V8.0&amp;lt;/var&amp;gt; and later.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this Release Imagine Records statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Imagine Records statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===RELEASE and COMMIT RELEASE statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The RELEASE statements and the COMMIT RELEASE statements empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by RELEASE or COMMIT RELEASE statements, however, without records there is nothing to process.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Lock pending updates==&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; provides a special facility, lock pending updates, that prevents updated records in one transaction (a sequence of file updating operations) from being used by other applications until the transaction ends. Lock pending updates ensures logical consistency without requiring the use of the FIND AND RESERVE statement. LPU locks are distinct from single record locks.         &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Processing===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the lock pending updates option is specified, records are locked in share mode by a FIND statement. The first update to a record locks the record in exclusive mode and adds it to a set of updated locked records called the pending update pool. The record is not released from this exclusive lock at the end of the FOR EACH RECORD loop. Instead, the record is locked until the end of the transaction when the entire pending update pool is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Set with the FOPT parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Lock pending updates is an option of the &amp;lt;var&amp;gt;[[FOPT parameter|FOPT]]&amp;lt;/var&amp;gt; parameter that is enabled or disabled on a file-by-file basis.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==&amp;lt;b id=&amp;quot;COMMIT statement&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b id=&amp;quot;commit&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Commit statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement ends the current transaction, dequeues checkpoints, and drops all LPU locks and exclusive record locks obtained by update statements (&amp;lt;var&amp;gt;[[Add statement|Add]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Change statement|Change]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Data maintenance#Delete statement|Delete]]&amp;lt;/var&amp;gt;) for all files participating in the transaction.&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement does not release record locks obtained by the &amp;lt;var&amp;gt;[[Find statement (find records)|Find]]&amp;lt;/var&amp;gt; statement. The share record lock obtained by the &amp;lt;var&amp;gt;[[For Record Number statement|For Record Number]]&amp;lt;/var&amp;gt; statement is not released by a &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement executed inside a loop.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement is supported in remote context. If records on any remote nodes are updated, the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement saves all remote updates on all remote nodes. Also, remote updates are committed automatically by the system when appropriate.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
{{Template:Commit statement syntax}}&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;begin&lt;br /&gt;
get.rec: find all records for which&lt;br /&gt;
             lname = &#039;NELSON&#039;&lt;br /&gt;
         end find&lt;br /&gt;
         for each record in get.rec&lt;br /&gt;
             add month = &#039;nov&#039;&lt;br /&gt;
             commit&lt;br /&gt;
             print fname and lname and each month&lt;br /&gt;
         end for&lt;br /&gt;
name.ct: count records in get.rec&lt;br /&gt;
         print count in name.ct and &#039;records updated&#039;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; option of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement performs all the operations of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[Release All Records statement|Release All Records]]&amp;lt;/var&amp;gt; statements:&amp;lt;/p&amp;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 nowrap&amp;gt;After processing a &amp;lt;br&amp;gt;&lt;br /&gt;
Commit&amp;amp;nbsp;Release&lt;br /&gt;
statement ... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th valign=&amp;quot;bottom&amp;quot;&amp;gt;Any subsequent reference to the current...&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 nowrap&amp;gt;&amp;lt;var&amp;gt;[[For Each Record statement|For Each Record]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available; the first statement after the end of each loop is executed.&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;var&amp;gt;[[For Each Value statement|For Each Value]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Value still obtains the last value processed. &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;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To avoid confusing results, it is recommended that &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; be issued at the end of a loop and not in the middle of one.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release and Commit Release statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement and the &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statement both empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statements, however, without records there is nothing to process.     &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end of toc limit div --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120627</id>
		<title>Record level locking and concurrency control</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120627"/>
		<updated>2025-09-05T20:41:54Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Release Imagine Records statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;toclimit-3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This article discusses aspects of request design related to concurrency control in a multi-user environment and presents statements and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; options that can be used to ensure logical consistency.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Illustrating a concurrent update===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user executing a User Language request expects that the records retrieved will not be modified by another user&#039;s concurrent request until the user&#039;s own request has completed. For example, consider these two requests being run concurrently:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 1&amp;lt;/b&amp;gt;       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.CARS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               COLOR = BLUE&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN BLUE.CARS&lt;br /&gt;
               PRINT MAKE AND COLOR&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 2&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.BUICKS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
                 MAKE = BUICK AND COLOR = BLUE&lt;br /&gt;
             END FIND&lt;br /&gt;
             FOR EACH RECORD IN BLUE.BUICKS&lt;br /&gt;
                 CHANGE COLOR TO RED&lt;br /&gt;
              END FOR&lt;br /&gt;
 END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User 1 expects only the make and the color BLUE to be printed. User 2&#039;s request must be prevented from changing User 1&#039;s records before they are printed.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking in Model 204==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Conflicts arise when one or more users are reading a file and another user attempts to update the file or when two or more users attempt to perform file maintenance on the same records retrieved from that file. The technique used by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to prevent overlapping updates is called record level locking. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Record locking modes===&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; can lock records as a set of records or as a single record number. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; performs record level locking in two modes: &amp;lt;/p&amp;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;Lock mode &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Allows... &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;Share &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;One or more users to read a file. Any number of users can have shared control of a record or record set concurrently.   &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;Exclusive &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Single user to update the file. An exclusive lock is not compatible with other exclusive locks nor with any shared locks. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All records in a record set have the same locking strength: they are all locked share, or exclusive, or they are all unlocked. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND statement records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records located by a FIND statement, called a record set or found set, are locked based on the FIND statement specification:&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;FIND&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in share mode&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND AND RESERVE&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in exclusive mode &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND WITHOUT LOCK&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Does not lock record set&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once obtained record set locks are kept till a RELEASE or COMMIT RELEASE statement is executed or the request ends.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record level locking evaluation rules==&lt;br /&gt;
 &lt;br /&gt;
===Request compilation and evaluation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Record-level locking is performed in the following manner. User Language requests are processed in two phases: compilation and evaluation. All requests can be compiled regardless of the operations to be performed or of other requests being compiled or evaluated at the same time. All requests are allowed to begin the evaluation stage. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the evaluation involves records or sets of records, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; automatically ensures that operations achieves the expected results by adhering to the following set of rules. The following User Language statements generate found sets that are processed as described.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement immediately locks the set of records it has retrieved in share mode. If the locking is successful, none of the records in that set can be updated by another user until the entire request, including request continuation(s), has been completed or the records have been released by some form of the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement, such as &amp;lt;var&amp;gt;Release Records In&amp;lt;/var&amp;gt;..., &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Release Commit&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement executed in a loop releases the old found set as soon as the statement is re-executed. The final set selected by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; remains locked until the end of the request. An unlabeled &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement, such as a &amp;lt;var&amp;gt;Find And Print Count&amp;lt;/var&amp;gt; statement, does not lock records at all.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND WITHOUT LOCKS statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The found set of records is indistinguishable from a list, except that it is referenced with an IN label clause. You must use the FIND WITHOUT LOCKS statement with caution, otherwise logical inconsistencies might occur. See [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] for more information.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FOR RECORD NUMBER statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FOR RECORD NUMBER statement locks the specified record in share mode, if it was not locked by the FIND statement. The lock is kept until the end of the loop or a COMMIT statement is processed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====DELETE ALL RECORDS IN statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DELETE ALL RECORDS IN statement temporarily locks the set of records to be deleted in exclusive mode before deletion occurs. The locking does not succeed if another user has access to any of the records through a FIND or file maintenance statement. Once a record has been deleted, the exclusive lock on the record is released, because the record no longer exists in the file.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====ADD, CHANGE, or DELETE, DELETE RECORD, and INSERT statements====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The ADD, CHANGE, DELETE fieldname, DELETE RECORD, and INSERT statements all lock the current record in exclusive mode before updating it. The exclusive single record lock remains on the current record until it passes through the loop, unless the record has been deleted. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Upon completion of a DELETE RECORD statement the deleted record cannot cause a record locking conflict. However, it the deleting user attempts to reference the deleted record via a previously established found set or list, the following message is issued:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.1266: NONEXISTENT RECORD REFERENCED&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====STORE RECORD statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The STORE RECORD statement gets a LPU record lock for the TBO files and does not get a record lock for non-TBO files.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For TBO files, an LPU record lock, which is always exclusive, is obtained, meaning unconditionally gotten, at the beginning of the STORE RECORD processing. However, other users cannot get a record locking conflict, because the record&#039;s existence bit is not turned on until STORE RECORD processing finishes. If you store a record, you automatically obtain an LPU lock and hold it until the next COMMIT statement is processed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For non-TBO files, no record lock of any kind is obtained. However, the record existence bit is not turned on until STORE RECORD processing is finished, so there are no problems with protecting the record from other users during STORE RECORD processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====END MORE statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a request ends with END MORE, records found by that request remain locked and cannot be modified by other users. If the request ends with END, all records are released as soon as execution is completed.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot lock a record, a locking conflict occurs, which are discussed in detail in [[#Handling locking conflicts|Handling locking conflicts]].   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==FIND WITHOUT LOCKS statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The resulting found set is indistinguishable from a list, except that it is referenced with an IN label clause.&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; The FIND WITHOUT LOCKS feature should be used only to solve specific performance problems. Before using the FIND WITHOUT LOCKS statement, please take into account the [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] following [[#Responding to a record locking conflict|Responding to a record locking conflict]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the FIND WITHOUT LOCKS statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;{FIND WITHOUT LOCKS | FDWOL} [ALL] RECORDS &lt;br /&gt;
 [IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; | ON [LIST] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;] &lt;br /&gt;
 [FOR WHICH | WITH] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;retrieval-conditions&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage notes====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Issues involved with using FIND WITHOUT LOCKS include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Logical integrity of data is at risk when another user:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Is in the midst of changing values which are related&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Changes or deletes the field which caused the record to be found&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;Physical integrity error messages or snaps are generated, including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SICK RECORD messages are sent when extension records are deleted. The record is not really sick; temporarily it appears that way to &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;SICK RECORD messages are sent from FOR EACH OCCURRENCE (FEO) statements when the record is modified by another user. Again, the record is not really sick.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;NONEXISTENT RECORD messages are sent when entire records are deleted. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of appropriate use of the FIND WITHOUT LOCKS statement include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;When there is one user at a time per record (for example, scratch records or bank teller applications where an account is usually modified by one teller at a time)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Report programs in a heavy update environment &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of inappropriate uses of the FIND WITHOUT LOCKS, which can result in snaps, include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Report program in a heavy delete environment (results in many&lt;br /&gt;
NONEXISTENT RECORD messages)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Retrievals in which the selection criteria can be changed by other users&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Reuse Record Number files, except possibly scratch files keyed on the user ID &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;
==Handling locking conflicts==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical locking situation is as follows. The first user issues a FIND statement for a large set of records and begins printing a long report. The second user issues a FIND statement for some of the same records and tries to update them with a CHANGE statement.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===ENQRETRY parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The number of times a request automatically attempts to lock a record or set of records before notifying the user of a conflict is determined by the&lt;br /&gt;
&amp;lt;var&amp;gt;[[ENQRETRY parameter|ENQRETRY]]&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
Between attempts, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; waits until the record or records that were held by another user are released or until three seconds pass.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Under these circumstances, the second user must decide whether to cancel the request or try again. The second user receives a message noting that the locking failed and is queried: &amp;lt;var&amp;gt;DO YOU REALLY WANT TO TRY AGAIN?&amp;lt;/var&amp;gt; The second user can respond in one of three ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, thereby cancelling the request.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt; and try to lock again immediately.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Wait a minute or two and reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Responding to a record locking conflict===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; you can specify the action to take if, an effort to lock a set of records is unsuccessful. The following statements specify the action to take in detail.&amp;lt;/p&amp;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;ON clause&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Can be used for...&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 nowrap&amp;gt;RECORD LOCKING CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Any type of conflict, including a retrieval statement conflict, that arises during a record locking attempt.&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;FIND CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Only a conflict that arises during the evaluation of a FIND statement or a FOR EACH RECORD statement used for retrieval. &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;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for these ON units is: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;] ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====If both types of ON units are active====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ON RECORD LOCKING CONFLICT and ON FIND CONFLICT follow the same rules as other ON units (see [[Subroutines#ON units|ON units]]). If both ON RECORD LOCKING CONFLICT and ON FIND CONFLICT are active within a request when a conflict occurs, the conflict is handled in the following manner:&amp;lt;/p&amp;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;If the conflict results from... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Clause invoked...&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;FIND statement or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ON FIND CONFLICT&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;A condition other than the FIND or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td nowrap&amp;gt;ON RECORD LOCKING CONFLICT &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;
===CLEAR ON statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The definition of an ON RECORD LOCKING CONFLICT or ON FIND CONFLICT unit is cleared by the following statement:    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;CLEAR ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a CLEAR ON RECORD LOCKING CONFLICT or CLEAR ON FIND CONFLICT statement, a record locking conflict does not invoke the corresponding ON unit.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b id=&amp;quot;pause&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Pause statement===&lt;br /&gt;
 &lt;br /&gt;
====Purpose====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement to cause the request to wait a specified number of seconds and then to retry the statement that caused the evaluation of the &amp;lt;var&amp;gt;ON&amp;lt;/var&amp;gt; unit. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is: &amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Pause statement syntax}}&lt;br /&gt;
Where:&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;n&amp;lt;/var&amp;gt; must be in the range 0-600, allowing a maximum pause of 10 minutes. &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&amp;lt;/var&amp;gt; is interpreted as a numeric value representing the number of seconds to wait. It must be in the range 0-86400. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is a bumpable wait.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is not specified or is specified as zero, processing stops and does not continue until the user enters a carriage return. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified, processing continues automatically after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; seconds.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/var&amp;gt; takes any non-null, non-numeric value or a numeric value in the range 0-86400, the SOUL request is canceled with the message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.2650: PAUSE TIME-VARIABLE NOT IN RANGE&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A variable with a null or 0 value does a terminal read. For example, &amp;lt;code&amp;gt;%a=&#039;xxx&#039;&amp;lt;/code&amp;gt; is treated as if zero was specified, and a read is issued.&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; You should generally specify small values for &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and issue a &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; only when no records are held by the request. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is large, the request can seem to be hung.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====See also====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;[[$WakeUp]]&amp;lt;/var&amp;gt; function is an alternative approach; it offers millisecond resolution pausing.&lt;br /&gt;
&lt;br /&gt;
===Handling Parallel Query Option/204 record locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a client request cannot complete because of a record locking conflict on the server system, the server automatically tries again to lock the record or set of records. The server tries again until it succeeds or until it has tried as many times as the value of the client thread ENQRETRY parameter. The value of the ENQRETRY parameter that is specified on the server thread has no effect on the number of retries. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If ENQRETRY attempts to lock a record or set of records do not succeed, the server notifies the client about the conflict. If an ON RECORD LOCKING or ON FIND CONFLICT unit is active, the unit is invoked. Otherwise, the client receives a message that the locking failed, followed by a prompt asking if the client wants to try again.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the client enters &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, the request is canceled. If the client enters &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;, the server repeats the locking attempt cycle, making as many as ENQRETRY attempts before prompting again. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking and release statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following statements can place a lock on a set of records or remove the lock placed on records.&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; To remove the lock placed on record sets, you can also use the COMMIT RELEASE for of the [[#COMMIT statement|COMMIT statement]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND AND RESERVE statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A User Language request can lock records in exclusive mode by using the FIND AND RESERVE statement. However, because records are exclusively locked, concurrency is reduced.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The basic format of the FIND AND RESERVE statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;FIND AND RESERVE [ALL] RECORDS FOR WHICH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
ON RECORD LOCKING CONFLICT&lt;br /&gt;
    PRINT &#039;RECORD LOCKING CONFLICT OCCURRED WITH &#039; -&lt;br /&gt;
         WITH $RLCUSR&lt;br /&gt;
    PRINT &#039;FILE &#039; WITH $RLCFILE&lt;br /&gt;
    PRINT &#039;RECORD &#039; WITH $RLCREC&lt;br /&gt;
END ON&lt;br /&gt;
 &lt;br /&gt;
POL.HLDR:  IN CLIENTS FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH POLICY NO = 100015&lt;br /&gt;
               RECTYPE = POLICYHOLDER&lt;br /&gt;
           END FIND&lt;br /&gt;
OWNER.POL: IN VEHICLES FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH OWNER POLICY = 100015&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN OWNER.POL&lt;br /&gt;
               %NEW.PREMIUM = VEHICLE PREMIUM + 100&lt;br /&gt;
               CHANGE VEHICLE PREMIUM TO %NEW.PREMIUM&lt;br /&gt;
               %TOTAL.PREMIUM = %TOTAL.PREMIUM + %NEW.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
           FOR EACH RECORD IN POL.HLDR&lt;br /&gt;
               CHANGE TOTAL PREMIUM TO %TOTAL.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In the preceding example, the first FIND AND RESERVE statement prevents access to TOTAL PREMIUM while its corresponding VEHICLE PREMIUMs are being changed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release Records statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records found using the &amp;lt;var&amp;gt;Find And Reserve&amp;lt;/var&amp;gt; statement are held in exclusive status until the end of the request or until they are released explicitly by the user with the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement. The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement also can be used to release records from &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements or records obtained in share status by &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statements issued in the regular form. Records released in this manner are no longer available to the request and might have to be found again. The original found set or list from which the sorted set was built is not affected.  &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; To avoid producing confusing results, issue a &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement at the end of a loop and not in the middle of one, since the statement relinquishes control of a found set. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/var&amp;gt; is the statement label of the FIND statement that locked the records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Processing====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement removes all:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entries from the specified found set(s), thereby removing the record set lock&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;List entries, when issued against list(s)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The user&#039;s single record locks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement refers to a &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statement, the space occupied by the temporary sorted record copies is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;Release Records On&amp;lt;/var&amp;gt; is equivalent to the &amp;lt;var&amp;gt;Clear List&amp;lt;/var&amp;gt; statement. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release All Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement terminates the lock in share mode placed on records by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement. &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; also clears all lists and the results of all &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements, and sets the current record number to -1. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is processed in a &amp;lt;var&amp;gt;For Each Record&amp;lt;/var&amp;gt; loop, subsequent references to the current record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available, and the first statement after the end of the loop is executed. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this release statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release All Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release Imagine Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement is exactly like a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement except:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It frees all mappings of record numbers to records for [[Imagine Transparency]] files.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; is done on all [[Daemon class#Transactional daemons|transactional daemon]] descendants.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It is not allowed to be invoked on a [[Daemon class#Transactional daemons|transactional daemon]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It can be followed by an optional &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword to indicate that a commit or backout is to be done before the rest of &amp;lt;var&amp;gt;Release All Record&amp;lt;/var&amp;gt; processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If not followed by the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword, it cancels the request if in a uncommitted transaction (there are pending updates)&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;
Outside of being a bit more concise than having a separate &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; statement, doing a &amp;lt;code&amp;gt;Release Imagine Records Backout&amp;lt;/code&amp;gt; does not result in a &amp;lt;code&amp;gt;M204.1096: There were no updates for backout to process&amp;lt;/code&amp;gt; message if there are no updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Imagine Transparency]] record numbers are thread-specific and are assigned sequentially, starting at 1, as records are found or accessed. One can the use [[Record loops#For Record Number processing|For Record Number]] statement to access the same &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; record over transaction boundaries, though the record would be re-retrieved from the broker for each transaction. This is no longer possible after a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement is executed. On the plus side, this clears the record number to record mapping table which would, otherwise, grow indefinitely on a logged in thread. So, for long-lived threads, it is a good idea to do a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; whenever possible, to keep the mapping table small.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Unlike &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; transactions, [[Imagine Transparency]] transactions include retrieval operations. An attempt to retrieve a record that has been updated after the start of the &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; transaction results in a data consistency request canceling error. If this is a concern, a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; would end the current &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; transaction and a new one would be started on the next &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; retrieval (or update) operation. Of course, this &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement would have other significant application impacts, so might not be a feasible solution to avoiding data consistency errors in many cases.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this Release Imagine Records statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Imagine Records statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===RELEASE and COMMIT RELEASE statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The RELEASE statements and the COMMIT RELEASE statements empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by RELEASE or COMMIT RELEASE statements, however, without records there is nothing to process.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Lock pending updates==&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; provides a special facility, lock pending updates, that prevents updated records in one transaction (a sequence of file updating operations) from being used by other applications until the transaction ends. Lock pending updates ensures logical consistency without requiring the use of the FIND AND RESERVE statement. LPU locks are distinct from single record locks.         &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Processing===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the lock pending updates option is specified, records are locked in share mode by a FIND statement. The first update to a record locks the record in exclusive mode and adds it to a set of updated locked records called the pending update pool. The record is not released from this exclusive lock at the end of the FOR EACH RECORD loop. Instead, the record is locked until the end of the transaction when the entire pending update pool is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Set with the FOPT parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Lock pending updates is an option of the &amp;lt;var&amp;gt;[[FOPT parameter|FOPT]]&amp;lt;/var&amp;gt; parameter that is enabled or disabled on a file-by-file basis.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==&amp;lt;b id=&amp;quot;COMMIT statement&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b id=&amp;quot;commit&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Commit statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement ends the current transaction, dequeues checkpoints, and drops all LPU locks and exclusive record locks obtained by update statements (&amp;lt;var&amp;gt;[[Add statement|Add]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Change statement|Change]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Data maintenance#Delete statement|Delete]]&amp;lt;/var&amp;gt;) for all files participating in the transaction.&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement does not release record locks obtained by the &amp;lt;var&amp;gt;[[Find statement (find records)|Find]]&amp;lt;/var&amp;gt; statement. The share record lock obtained by the &amp;lt;var&amp;gt;[[For Record Number statement|For Record Number]]&amp;lt;/var&amp;gt; statement is not released by a &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement executed inside a loop.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement is supported in remote context. If records on any remote nodes are updated, the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement saves all remote updates on all remote nodes. Also, remote updates are committed automatically by the system when appropriate.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
{{Template:Commit statement syntax}}&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;begin&lt;br /&gt;
get.rec: find all records for which&lt;br /&gt;
             lname = &#039;NELSON&#039;&lt;br /&gt;
         end find&lt;br /&gt;
         for each record in get.rec&lt;br /&gt;
             add month = &#039;nov&#039;&lt;br /&gt;
             commit&lt;br /&gt;
             print fname and lname and each month&lt;br /&gt;
         end for&lt;br /&gt;
name.ct: count records in get.rec&lt;br /&gt;
         print count in name.ct and &#039;records updated&#039;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; option of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement performs all the operations of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[Release All Records statement|Release All Records]]&amp;lt;/var&amp;gt; statements:&amp;lt;/p&amp;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 nowrap&amp;gt;After processing a &amp;lt;br&amp;gt;&lt;br /&gt;
Commit&amp;amp;nbsp;Release&lt;br /&gt;
statement ... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th valign=&amp;quot;bottom&amp;quot;&amp;gt;Any subsequent reference to the current...&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 nowrap&amp;gt;&amp;lt;var&amp;gt;[[For Each Record statement|For Each Record]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available; the first statement after the end of each loop is executed.&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;var&amp;gt;[[For Each Value statement|For Each Value]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Value still obtains the last value processed. &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;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To avoid confusing results, it is recommended that &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; be issued at the end of a loop and not in the middle of one.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release and Commit Release statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement and the &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statement both empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statements, however, without records there is nothing to process.     &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end of toc limit div --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120626</id>
		<title>Record level locking and concurrency control</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120626"/>
		<updated>2025-09-05T20:21:34Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Release Imagine Records statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;toclimit-3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This article discusses aspects of request design related to concurrency control in a multi-user environment and presents statements and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; options that can be used to ensure logical consistency.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Illustrating a concurrent update===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user executing a User Language request expects that the records retrieved will not be modified by another user&#039;s concurrent request until the user&#039;s own request has completed. For example, consider these two requests being run concurrently:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 1&amp;lt;/b&amp;gt;       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.CARS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               COLOR = BLUE&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN BLUE.CARS&lt;br /&gt;
               PRINT MAKE AND COLOR&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 2&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.BUICKS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
                 MAKE = BUICK AND COLOR = BLUE&lt;br /&gt;
             END FIND&lt;br /&gt;
             FOR EACH RECORD IN BLUE.BUICKS&lt;br /&gt;
                 CHANGE COLOR TO RED&lt;br /&gt;
              END FOR&lt;br /&gt;
 END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User 1 expects only the make and the color BLUE to be printed. User 2&#039;s request must be prevented from changing User 1&#039;s records before they are printed.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking in Model 204==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Conflicts arise when one or more users are reading a file and another user attempts to update the file or when two or more users attempt to perform file maintenance on the same records retrieved from that file. The technique used by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to prevent overlapping updates is called record level locking. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Record locking modes===&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; can lock records as a set of records or as a single record number. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; performs record level locking in two modes: &amp;lt;/p&amp;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;Lock mode &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Allows... &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;Share &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;One or more users to read a file. Any number of users can have shared control of a record or record set concurrently.   &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;Exclusive &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Single user to update the file. An exclusive lock is not compatible with other exclusive locks nor with any shared locks. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All records in a record set have the same locking strength: they are all locked share, or exclusive, or they are all unlocked. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND statement records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records located by a FIND statement, called a record set or found set, are locked based on the FIND statement specification:&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;FIND&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in share mode&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND AND RESERVE&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in exclusive mode &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND WITHOUT LOCK&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Does not lock record set&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once obtained record set locks are kept till a RELEASE or COMMIT RELEASE statement is executed or the request ends.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record level locking evaluation rules==&lt;br /&gt;
 &lt;br /&gt;
===Request compilation and evaluation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Record-level locking is performed in the following manner. User Language requests are processed in two phases: compilation and evaluation. All requests can be compiled regardless of the operations to be performed or of other requests being compiled or evaluated at the same time. All requests are allowed to begin the evaluation stage. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the evaluation involves records or sets of records, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; automatically ensures that operations achieves the expected results by adhering to the following set of rules. The following User Language statements generate found sets that are processed as described.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement immediately locks the set of records it has retrieved in share mode. If the locking is successful, none of the records in that set can be updated by another user until the entire request, including request continuation(s), has been completed or the records have been released by some form of the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement, such as &amp;lt;var&amp;gt;Release Records In&amp;lt;/var&amp;gt;..., &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Release Commit&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement executed in a loop releases the old found set as soon as the statement is re-executed. The final set selected by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; remains locked until the end of the request. An unlabeled &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement, such as a &amp;lt;var&amp;gt;Find And Print Count&amp;lt;/var&amp;gt; statement, does not lock records at all.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND WITHOUT LOCKS statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The found set of records is indistinguishable from a list, except that it is referenced with an IN label clause. You must use the FIND WITHOUT LOCKS statement with caution, otherwise logical inconsistencies might occur. See [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] for more information.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FOR RECORD NUMBER statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FOR RECORD NUMBER statement locks the specified record in share mode, if it was not locked by the FIND statement. The lock is kept until the end of the loop or a COMMIT statement is processed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====DELETE ALL RECORDS IN statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DELETE ALL RECORDS IN statement temporarily locks the set of records to be deleted in exclusive mode before deletion occurs. The locking does not succeed if another user has access to any of the records through a FIND or file maintenance statement. Once a record has been deleted, the exclusive lock on the record is released, because the record no longer exists in the file.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====ADD, CHANGE, or DELETE, DELETE RECORD, and INSERT statements====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The ADD, CHANGE, DELETE fieldname, DELETE RECORD, and INSERT statements all lock the current record in exclusive mode before updating it. The exclusive single record lock remains on the current record until it passes through the loop, unless the record has been deleted. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Upon completion of a DELETE RECORD statement the deleted record cannot cause a record locking conflict. However, it the deleting user attempts to reference the deleted record via a previously established found set or list, the following message is issued:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.1266: NONEXISTENT RECORD REFERENCED&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====STORE RECORD statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The STORE RECORD statement gets a LPU record lock for the TBO files and does not get a record lock for non-TBO files.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For TBO files, an LPU record lock, which is always exclusive, is obtained, meaning unconditionally gotten, at the beginning of the STORE RECORD processing. However, other users cannot get a record locking conflict, because the record&#039;s existence bit is not turned on until STORE RECORD processing finishes. If you store a record, you automatically obtain an LPU lock and hold it until the next COMMIT statement is processed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For non-TBO files, no record lock of any kind is obtained. However, the record existence bit is not turned on until STORE RECORD processing is finished, so there are no problems with protecting the record from other users during STORE RECORD processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====END MORE statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a request ends with END MORE, records found by that request remain locked and cannot be modified by other users. If the request ends with END, all records are released as soon as execution is completed.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot lock a record, a locking conflict occurs, which are discussed in detail in [[#Handling locking conflicts|Handling locking conflicts]].   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==FIND WITHOUT LOCKS statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The resulting found set is indistinguishable from a list, except that it is referenced with an IN label clause.&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; The FIND WITHOUT LOCKS feature should be used only to solve specific performance problems. Before using the FIND WITHOUT LOCKS statement, please take into account the [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] following [[#Responding to a record locking conflict|Responding to a record locking conflict]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the FIND WITHOUT LOCKS statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;{FIND WITHOUT LOCKS | FDWOL} [ALL] RECORDS &lt;br /&gt;
 [IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; | ON [LIST] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;] &lt;br /&gt;
 [FOR WHICH | WITH] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;retrieval-conditions&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage notes====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Issues involved with using FIND WITHOUT LOCKS include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Logical integrity of data is at risk when another user:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Is in the midst of changing values which are related&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Changes or deletes the field which caused the record to be found&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;Physical integrity error messages or snaps are generated, including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SICK RECORD messages are sent when extension records are deleted. The record is not really sick; temporarily it appears that way to &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;SICK RECORD messages are sent from FOR EACH OCCURRENCE (FEO) statements when the record is modified by another user. Again, the record is not really sick.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;NONEXISTENT RECORD messages are sent when entire records are deleted. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of appropriate use of the FIND WITHOUT LOCKS statement include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;When there is one user at a time per record (for example, scratch records or bank teller applications where an account is usually modified by one teller at a time)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Report programs in a heavy update environment &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of inappropriate uses of the FIND WITHOUT LOCKS, which can result in snaps, include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Report program in a heavy delete environment (results in many&lt;br /&gt;
NONEXISTENT RECORD messages)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Retrievals in which the selection criteria can be changed by other users&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Reuse Record Number files, except possibly scratch files keyed on the user ID &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;
==Handling locking conflicts==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical locking situation is as follows. The first user issues a FIND statement for a large set of records and begins printing a long report. The second user issues a FIND statement for some of the same records and tries to update them with a CHANGE statement.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===ENQRETRY parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The number of times a request automatically attempts to lock a record or set of records before notifying the user of a conflict is determined by the&lt;br /&gt;
&amp;lt;var&amp;gt;[[ENQRETRY parameter|ENQRETRY]]&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
Between attempts, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; waits until the record or records that were held by another user are released or until three seconds pass.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Under these circumstances, the second user must decide whether to cancel the request or try again. The second user receives a message noting that the locking failed and is queried: &amp;lt;var&amp;gt;DO YOU REALLY WANT TO TRY AGAIN?&amp;lt;/var&amp;gt; The second user can respond in one of three ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, thereby cancelling the request.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt; and try to lock again immediately.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Wait a minute or two and reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Responding to a record locking conflict===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; you can specify the action to take if, an effort to lock a set of records is unsuccessful. The following statements specify the action to take in detail.&amp;lt;/p&amp;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;ON clause&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Can be used for...&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 nowrap&amp;gt;RECORD LOCKING CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Any type of conflict, including a retrieval statement conflict, that arises during a record locking attempt.&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;FIND CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Only a conflict that arises during the evaluation of a FIND statement or a FOR EACH RECORD statement used for retrieval. &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;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for these ON units is: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;] ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====If both types of ON units are active====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ON RECORD LOCKING CONFLICT and ON FIND CONFLICT follow the same rules as other ON units (see [[Subroutines#ON units|ON units]]). If both ON RECORD LOCKING CONFLICT and ON FIND CONFLICT are active within a request when a conflict occurs, the conflict is handled in the following manner:&amp;lt;/p&amp;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;If the conflict results from... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Clause invoked...&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;FIND statement or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ON FIND CONFLICT&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;A condition other than the FIND or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td nowrap&amp;gt;ON RECORD LOCKING CONFLICT &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;
===CLEAR ON statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The definition of an ON RECORD LOCKING CONFLICT or ON FIND CONFLICT unit is cleared by the following statement:    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;CLEAR ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a CLEAR ON RECORD LOCKING CONFLICT or CLEAR ON FIND CONFLICT statement, a record locking conflict does not invoke the corresponding ON unit.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b id=&amp;quot;pause&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Pause statement===&lt;br /&gt;
 &lt;br /&gt;
====Purpose====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement to cause the request to wait a specified number of seconds and then to retry the statement that caused the evaluation of the &amp;lt;var&amp;gt;ON&amp;lt;/var&amp;gt; unit. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is: &amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Pause statement syntax}}&lt;br /&gt;
Where:&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;n&amp;lt;/var&amp;gt; must be in the range 0-600, allowing a maximum pause of 10 minutes. &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&amp;lt;/var&amp;gt; is interpreted as a numeric value representing the number of seconds to wait. It must be in the range 0-86400. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is a bumpable wait.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is not specified or is specified as zero, processing stops and does not continue until the user enters a carriage return. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified, processing continues automatically after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; seconds.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/var&amp;gt; takes any non-null, non-numeric value or a numeric value in the range 0-86400, the SOUL request is canceled with the message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.2650: PAUSE TIME-VARIABLE NOT IN RANGE&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A variable with a null or 0 value does a terminal read. For example, &amp;lt;code&amp;gt;%a=&#039;xxx&#039;&amp;lt;/code&amp;gt; is treated as if zero was specified, and a read is issued.&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; You should generally specify small values for &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and issue a &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; only when no records are held by the request. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is large, the request can seem to be hung.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====See also====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;[[$WakeUp]]&amp;lt;/var&amp;gt; function is an alternative approach; it offers millisecond resolution pausing.&lt;br /&gt;
&lt;br /&gt;
===Handling Parallel Query Option/204 record locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a client request cannot complete because of a record locking conflict on the server system, the server automatically tries again to lock the record or set of records. The server tries again until it succeeds or until it has tried as many times as the value of the client thread ENQRETRY parameter. The value of the ENQRETRY parameter that is specified on the server thread has no effect on the number of retries. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If ENQRETRY attempts to lock a record or set of records do not succeed, the server notifies the client about the conflict. If an ON RECORD LOCKING or ON FIND CONFLICT unit is active, the unit is invoked. Otherwise, the client receives a message that the locking failed, followed by a prompt asking if the client wants to try again.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the client enters &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, the request is canceled. If the client enters &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;, the server repeats the locking attempt cycle, making as many as ENQRETRY attempts before prompting again. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking and release statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following statements can place a lock on a set of records or remove the lock placed on records.&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; To remove the lock placed on record sets, you can also use the COMMIT RELEASE for of the [[#COMMIT statement|COMMIT statement]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND AND RESERVE statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A User Language request can lock records in exclusive mode by using the FIND AND RESERVE statement. However, because records are exclusively locked, concurrency is reduced.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The basic format of the FIND AND RESERVE statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;FIND AND RESERVE [ALL] RECORDS FOR WHICH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
ON RECORD LOCKING CONFLICT&lt;br /&gt;
    PRINT &#039;RECORD LOCKING CONFLICT OCCURRED WITH &#039; -&lt;br /&gt;
         WITH $RLCUSR&lt;br /&gt;
    PRINT &#039;FILE &#039; WITH $RLCFILE&lt;br /&gt;
    PRINT &#039;RECORD &#039; WITH $RLCREC&lt;br /&gt;
END ON&lt;br /&gt;
 &lt;br /&gt;
POL.HLDR:  IN CLIENTS FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH POLICY NO = 100015&lt;br /&gt;
               RECTYPE = POLICYHOLDER&lt;br /&gt;
           END FIND&lt;br /&gt;
OWNER.POL: IN VEHICLES FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH OWNER POLICY = 100015&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN OWNER.POL&lt;br /&gt;
               %NEW.PREMIUM = VEHICLE PREMIUM + 100&lt;br /&gt;
               CHANGE VEHICLE PREMIUM TO %NEW.PREMIUM&lt;br /&gt;
               %TOTAL.PREMIUM = %TOTAL.PREMIUM + %NEW.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
           FOR EACH RECORD IN POL.HLDR&lt;br /&gt;
               CHANGE TOTAL PREMIUM TO %TOTAL.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In the preceding example, the first FIND AND RESERVE statement prevents access to TOTAL PREMIUM while its corresponding VEHICLE PREMIUMs are being changed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release Records statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records found using the &amp;lt;var&amp;gt;Find And Reserve&amp;lt;/var&amp;gt; statement are held in exclusive status until the end of the request or until they are released explicitly by the user with the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement. The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement also can be used to release records from &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements or records obtained in share status by &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statements issued in the regular form. Records released in this manner are no longer available to the request and might have to be found again. The original found set or list from which the sorted set was built is not affected.  &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; To avoid producing confusing results, issue a &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement at the end of a loop and not in the middle of one, since the statement relinquishes control of a found set. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/var&amp;gt; is the statement label of the FIND statement that locked the records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Processing====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement removes all:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entries from the specified found set(s), thereby removing the record set lock&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;List entries, when issued against list(s)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The user&#039;s single record locks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement refers to a &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statement, the space occupied by the temporary sorted record copies is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;Release Records On&amp;lt;/var&amp;gt; is equivalent to the &amp;lt;var&amp;gt;Clear List&amp;lt;/var&amp;gt; statement. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release All Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement terminates the lock in share mode placed on records by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement. &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; also clears all lists and the results of all &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements, and sets the current record number to -1. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is processed in a &amp;lt;var&amp;gt;For Each Record&amp;lt;/var&amp;gt; loop, subsequent references to the current record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available, and the first statement after the end of the loop is executed. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this release statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release All Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release Imagine Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement is exactly like a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement except:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It frees all mappings of record numbers to records for [[Imagine Transparency]] files.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; is done on all [[Daemon class#Transactional daemons|transactional daemon]] descendants.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It is not allowed to be invoked on a [[Daemon class#Transactional daemons|transactional daemon]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It can be followed by an optional &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword to indicate that a commit or backout is to be done before the rest of &amp;lt;var&amp;gt;Release All Record&amp;lt;/var&amp;gt; processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If not followed by the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword, it cancels the request if in a uncommitted transaction (there are pending updates)&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;
Outside of being a bit more concise than having a separate &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; statement, doing a &amp;lt;code&amp;gt;Release Imagine Records Backout&amp;lt;/code&amp;gt; does not result in a &amp;lt;code&amp;gt;M204.1096: There were no updates for backout to process&amp;lt;/code&amp;gt; message if there are no updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Imagine Transparency]] record numbers are thread-specific and are assigned sequentially, starting at 1, as records are found or accessed. One can the use [[Record loops#For Record Number processing|For Record Number]] statement to access the same &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; record over transaction boundaries, though the record would be re-retrieved from the broker for each transaction. This is no longer possible after a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement is executed. On the plus side, this clears the record number to record mapping table which would, otherwise, grow indefinitely on a logged in thread. So, for long-lived threads, it is a good idea to do a &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; whenever possible, to keep the mapping table small.  &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this Release Imagine Records statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Imagine Records statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===RELEASE and COMMIT RELEASE statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The RELEASE statements and the COMMIT RELEASE statements empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by RELEASE or COMMIT RELEASE statements, however, without records there is nothing to process.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Lock pending updates==&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; provides a special facility, lock pending updates, that prevents updated records in one transaction (a sequence of file updating operations) from being used by other applications until the transaction ends. Lock pending updates ensures logical consistency without requiring the use of the FIND AND RESERVE statement. LPU locks are distinct from single record locks.         &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Processing===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the lock pending updates option is specified, records are locked in share mode by a FIND statement. The first update to a record locks the record in exclusive mode and adds it to a set of updated locked records called the pending update pool. The record is not released from this exclusive lock at the end of the FOR EACH RECORD loop. Instead, the record is locked until the end of the transaction when the entire pending update pool is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Set with the FOPT parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Lock pending updates is an option of the &amp;lt;var&amp;gt;[[FOPT parameter|FOPT]]&amp;lt;/var&amp;gt; parameter that is enabled or disabled on a file-by-file basis.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==&amp;lt;b id=&amp;quot;COMMIT statement&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b id=&amp;quot;commit&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Commit statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement ends the current transaction, dequeues checkpoints, and drops all LPU locks and exclusive record locks obtained by update statements (&amp;lt;var&amp;gt;[[Add statement|Add]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Change statement|Change]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Data maintenance#Delete statement|Delete]]&amp;lt;/var&amp;gt;) for all files participating in the transaction.&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement does not release record locks obtained by the &amp;lt;var&amp;gt;[[Find statement (find records)|Find]]&amp;lt;/var&amp;gt; statement. The share record lock obtained by the &amp;lt;var&amp;gt;[[For Record Number statement|For Record Number]]&amp;lt;/var&amp;gt; statement is not released by a &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement executed inside a loop.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement is supported in remote context. If records on any remote nodes are updated, the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement saves all remote updates on all remote nodes. Also, remote updates are committed automatically by the system when appropriate.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
{{Template:Commit statement syntax}}&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;begin&lt;br /&gt;
get.rec: find all records for which&lt;br /&gt;
             lname = &#039;NELSON&#039;&lt;br /&gt;
         end find&lt;br /&gt;
         for each record in get.rec&lt;br /&gt;
             add month = &#039;nov&#039;&lt;br /&gt;
             commit&lt;br /&gt;
             print fname and lname and each month&lt;br /&gt;
         end for&lt;br /&gt;
name.ct: count records in get.rec&lt;br /&gt;
         print count in name.ct and &#039;records updated&#039;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; option of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement performs all the operations of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[Release All Records statement|Release All Records]]&amp;lt;/var&amp;gt; statements:&amp;lt;/p&amp;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 nowrap&amp;gt;After processing a &amp;lt;br&amp;gt;&lt;br /&gt;
Commit&amp;amp;nbsp;Release&lt;br /&gt;
statement ... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th valign=&amp;quot;bottom&amp;quot;&amp;gt;Any subsequent reference to the current...&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 nowrap&amp;gt;&amp;lt;var&amp;gt;[[For Each Record statement|For Each Record]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available; the first statement after the end of each loop is executed.&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;var&amp;gt;[[For Each Value statement|For Each Value]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Value still obtains the last value processed. &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;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To avoid confusing results, it is recommended that &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; be issued at the end of a loop and not in the middle of one.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release and Commit Release statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement and the &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statement both empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statements, however, without records there is nothing to process.     &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end of toc limit div --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120625</id>
		<title>Record level locking and concurrency control</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Record_level_locking_and_concurrency_control&amp;diff=120625"/>
		<updated>2025-09-05T20:08:58Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Release All Records statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;toclimit-3&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This article discusses aspects of request design related to concurrency control in a multi-user environment and presents statements and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; options that can be used to ensure logical consistency.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Illustrating a concurrent update===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user executing a User Language request expects that the records retrieved will not be modified by another user&#039;s concurrent request until the user&#039;s own request has completed. For example, consider these two requests being run concurrently:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 1&amp;lt;/b&amp;gt;       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.CARS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               COLOR = BLUE&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN BLUE.CARS&lt;br /&gt;
               PRINT MAKE AND COLOR&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User 2&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
BLUE.BUICKS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
                 MAKE = BUICK AND COLOR = BLUE&lt;br /&gt;
             END FIND&lt;br /&gt;
             FOR EACH RECORD IN BLUE.BUICKS&lt;br /&gt;
                 CHANGE COLOR TO RED&lt;br /&gt;
              END FOR&lt;br /&gt;
 END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User 1 expects only the make and the color BLUE to be printed. User 2&#039;s request must be prevented from changing User 1&#039;s records before they are printed.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking in Model 204==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Conflicts arise when one or more users are reading a file and another user attempts to update the file or when two or more users attempt to perform file maintenance on the same records retrieved from that file. The technique used by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to prevent overlapping updates is called record level locking. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Record locking modes===&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; can lock records as a set of records or as a single record number. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; performs record level locking in two modes: &amp;lt;/p&amp;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;Lock mode &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Allows... &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;Share &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;One or more users to read a file. Any number of users can have shared control of a record or record set concurrently.   &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;Exclusive &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Single user to update the file. An exclusive lock is not compatible with other exclusive locks nor with any shared locks. &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All records in a record set have the same locking strength: they are all locked share, or exclusive, or they are all unlocked. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND statement records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records located by a FIND statement, called a record set or found set, are locked based on the FIND statement specification:&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;FIND&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in share mode&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND AND RESERVE&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Locks the record set in exclusive mode &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;FIND WITHOUT LOCK&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Does not lock record set&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once obtained record set locks are kept till a RELEASE or COMMIT RELEASE statement is executed or the request ends.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record level locking evaluation rules==&lt;br /&gt;
 &lt;br /&gt;
===Request compilation and evaluation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Record-level locking is performed in the following manner. User Language requests are processed in two phases: compilation and evaluation. All requests can be compiled regardless of the operations to be performed or of other requests being compiled or evaluated at the same time. All requests are allowed to begin the evaluation stage. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the evaluation involves records or sets of records, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; automatically ensures that operations achieves the expected results by adhering to the following set of rules. The following User Language statements generate found sets that are processed as described.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement immediately locks the set of records it has retrieved in share mode. If the locking is successful, none of the records in that set can be updated by another user until the entire request, including request continuation(s), has been completed or the records have been released by some form of the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement, such as &amp;lt;var&amp;gt;Release Records In&amp;lt;/var&amp;gt;..., &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Release Commit&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement executed in a loop releases the old found set as soon as the statement is re-executed. The final set selected by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; remains locked until the end of the request. An unlabeled &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement, such as a &amp;lt;var&amp;gt;Find And Print Count&amp;lt;/var&amp;gt; statement, does not lock records at all.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FIND WITHOUT LOCKS statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The found set of records is indistinguishable from a list, except that it is referenced with an IN label clause. You must use the FIND WITHOUT LOCKS statement with caution, otherwise logical inconsistencies might occur. See [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] for more information.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====FOR RECORD NUMBER statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FOR RECORD NUMBER statement locks the specified record in share mode, if it was not locked by the FIND statement. The lock is kept until the end of the loop or a COMMIT statement is processed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====DELETE ALL RECORDS IN statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DELETE ALL RECORDS IN statement temporarily locks the set of records to be deleted in exclusive mode before deletion occurs. The locking does not succeed if another user has access to any of the records through a FIND or file maintenance statement. Once a record has been deleted, the exclusive lock on the record is released, because the record no longer exists in the file.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====ADD, CHANGE, or DELETE, DELETE RECORD, and INSERT statements====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The ADD, CHANGE, DELETE fieldname, DELETE RECORD, and INSERT statements all lock the current record in exclusive mode before updating it. The exclusive single record lock remains on the current record until it passes through the loop, unless the record has been deleted. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Upon completion of a DELETE RECORD statement the deleted record cannot cause a record locking conflict. However, it the deleting user attempts to reference the deleted record via a previously established found set or list, the following message is issued:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.1266: NONEXISTENT RECORD REFERENCED&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====STORE RECORD statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The STORE RECORD statement gets a LPU record lock for the TBO files and does not get a record lock for non-TBO files.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For TBO files, an LPU record lock, which is always exclusive, is obtained, meaning unconditionally gotten, at the beginning of the STORE RECORD processing. However, other users cannot get a record locking conflict, because the record&#039;s existence bit is not turned on until STORE RECORD processing finishes. If you store a record, you automatically obtain an LPU lock and hold it until the next COMMIT statement is processed.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For non-TBO files, no record lock of any kind is obtained. However, the record existence bit is not turned on until STORE RECORD processing is finished, so there are no problems with protecting the record from other users during STORE RECORD processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====END MORE statement====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a request ends with END MORE, records found by that request remain locked and cannot be modified by other users. If the request ends with END, all records are released as soon as execution is completed.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot lock a record, a locking conflict occurs, which are discussed in detail in [[#Handling locking conflicts|Handling locking conflicts]].   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==FIND WITHOUT LOCKS statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FIND WITHOUT LOCKS statement executes a FIND statement without locking any records. The resulting found set is indistinguishable from a list, except that it is referenced with an IN label clause.&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; The FIND WITHOUT LOCKS feature should be used only to solve specific performance problems. Before using the FIND WITHOUT LOCKS statement, please take into account the [[#FIND WITHOUT LOCKS statement|FIND WITHOUT LOCKS statement]] following [[#Responding to a record locking conflict|Responding to a record locking conflict]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the FIND WITHOUT LOCKS statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;{FIND WITHOUT LOCKS | FDWOL} [ALL] RECORDS &lt;br /&gt;
 [IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; | ON [LIST] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;] &lt;br /&gt;
 [FOR WHICH | WITH] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;retrieval-conditions&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage notes====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Issues involved with using FIND WITHOUT LOCKS include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Logical integrity of data is at risk when another user:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Is in the midst of changing values which are related&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Changes or deletes the field which caused the record to be found&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;Physical integrity error messages or snaps are generated, including:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SICK RECORD messages are sent when extension records are deleted. The record is not really sick; temporarily it appears that way to &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;SICK RECORD messages are sent from FOR EACH OCCURRENCE (FEO) statements when the record is modified by another user. Again, the record is not really sick.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;NONEXISTENT RECORD messages are sent when entire records are deleted. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of appropriate use of the FIND WITHOUT LOCKS statement include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;When there is one user at a time per record (for example, scratch records or bank teller applications where an account is usually modified by one teller at a time)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Report programs in a heavy update environment &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Examples of inappropriate uses of the FIND WITHOUT LOCKS, which can result in snaps, include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Report program in a heavy delete environment (results in many&lt;br /&gt;
NONEXISTENT RECORD messages)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Retrievals in which the selection criteria can be changed by other users&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Reuse Record Number files, except possibly scratch files keyed on the user ID &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;
==Handling locking conflicts==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical locking situation is as follows. The first user issues a FIND statement for a large set of records and begins printing a long report. The second user issues a FIND statement for some of the same records and tries to update them with a CHANGE statement.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===ENQRETRY parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The number of times a request automatically attempts to lock a record or set of records before notifying the user of a conflict is determined by the&lt;br /&gt;
&amp;lt;var&amp;gt;[[ENQRETRY parameter|ENQRETRY]]&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
Between attempts, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; waits until the record or records that were held by another user are released or until three seconds pass.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Under these circumstances, the second user must decide whether to cancel the request or try again. The second user receives a message noting that the locking failed and is queried: &amp;lt;var&amp;gt;DO YOU REALLY WANT TO TRY AGAIN?&amp;lt;/var&amp;gt; The second user can respond in one of three ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, thereby cancelling the request.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt; and try to lock again immediately.&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Wait a minute or two and reply &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Responding to a record locking conflict===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; you can specify the action to take if, an effort to lock a set of records is unsuccessful. The following statements specify the action to take in detail.&amp;lt;/p&amp;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;ON clause&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Can be used for...&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 nowrap&amp;gt;RECORD LOCKING CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Any type of conflict, including a retrieval statement conflict, that arises during a record locking attempt.&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;FIND CONFLICT &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Only a conflict that arises during the evaluation of a FIND statement or a FOR EACH RECORD statement used for retrieval. &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;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for these ON units is: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;] ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====If both types of ON units are active====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ON RECORD LOCKING CONFLICT and ON FIND CONFLICT follow the same rules as other ON units (see [[Subroutines#ON units|ON units]]). If both ON RECORD LOCKING CONFLICT and ON FIND CONFLICT are active within a request when a conflict occurs, the conflict is handled in the following manner:&amp;lt;/p&amp;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;If the conflict results from... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Clause invoked...&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;FIND statement or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ON FIND CONFLICT&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;A condition other than the FIND or FOR EACH RECORD statement used for retrieval &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td nowrap&amp;gt;ON RECORD LOCKING CONFLICT &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;
===CLEAR ON statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The definition of an ON RECORD LOCKING CONFLICT or ON FIND CONFLICT unit is cleared by the following statement:    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;CLEAR ON {RECORD LOCKING CONFLICT | FIND CONFLICTS}&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a CLEAR ON RECORD LOCKING CONFLICT or CLEAR ON FIND CONFLICT statement, a record locking conflict does not invoke the corresponding ON unit.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b id=&amp;quot;pause&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Pause statement===&lt;br /&gt;
 &lt;br /&gt;
====Purpose====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement to cause the request to wait a specified number of seconds and then to retry the statement that caused the evaluation of the &amp;lt;var&amp;gt;ON&amp;lt;/var&amp;gt; unit. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is: &amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Pause statement syntax}}&lt;br /&gt;
Where:&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;n&amp;lt;/var&amp;gt; must be in the range 0-600, allowing a maximum pause of 10 minutes. &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&amp;lt;/var&amp;gt; is interpreted as a numeric value representing the number of seconds to wait. It must be in the range 0-86400. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; statement is a bumpable wait.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is not specified or is specified as zero, processing stops and does not continue until the user enters a carriage return. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified, processing continues automatically after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; seconds.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/var&amp;gt; takes any non-null, non-numeric value or a numeric value in the range 0-86400, the SOUL request is canceled with the message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.2650: PAUSE TIME-VARIABLE NOT IN RANGE&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A variable with a null or 0 value does a terminal read. For example, &amp;lt;code&amp;gt;%a=&#039;xxx&#039;&amp;lt;/code&amp;gt; is treated as if zero was specified, and a read is issued.&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; You should generally specify small values for &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and issue a &amp;lt;var&amp;gt;Pause&amp;lt;/var&amp;gt; only when no records are held by the request. If &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is large, the request can seem to be hung.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====See also====&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;[[$WakeUp]]&amp;lt;/var&amp;gt; function is an alternative approach; it offers millisecond resolution pausing.&lt;br /&gt;
&lt;br /&gt;
===Handling Parallel Query Option/204 record locking conflicts===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a client request cannot complete because of a record locking conflict on the server system, the server automatically tries again to lock the record or set of records. The server tries again until it succeeds or until it has tried as many times as the value of the client thread ENQRETRY parameter. The value of the ENQRETRY parameter that is specified on the server thread has no effect on the number of retries. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If ENQRETRY attempts to lock a record or set of records do not succeed, the server notifies the client about the conflict. If an ON RECORD LOCKING or ON FIND CONFLICT unit is active, the unit is invoked. Otherwise, the client receives a message that the locking failed, followed by a prompt asking if the client wants to try again.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the client enters &amp;lt;var&amp;gt;N&amp;lt;/var&amp;gt;, the request is canceled. If the client enters &amp;lt;var&amp;gt;Y&amp;lt;/var&amp;gt;, the server repeats the locking attempt cycle, making as many as ENQRETRY attempts before prompting again. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Record locking and release statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following statements can place a lock on a set of records or remove the lock placed on records.&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; To remove the lock placed on record sets, you can also use the COMMIT RELEASE for of the [[#COMMIT statement|COMMIT statement]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FIND AND RESERVE statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A User Language request can lock records in exclusive mode by using the FIND AND RESERVE statement. However, because records are exclusively locked, concurrency is reduced.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The basic format of the FIND AND RESERVE statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;FIND AND RESERVE [ALL] RECORDS FOR WHICH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
ON RECORD LOCKING CONFLICT&lt;br /&gt;
    PRINT &#039;RECORD LOCKING CONFLICT OCCURRED WITH &#039; -&lt;br /&gt;
         WITH $RLCUSR&lt;br /&gt;
    PRINT &#039;FILE &#039; WITH $RLCFILE&lt;br /&gt;
    PRINT &#039;RECORD &#039; WITH $RLCREC&lt;br /&gt;
END ON&lt;br /&gt;
 &lt;br /&gt;
POL.HLDR:  IN CLIENTS FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH POLICY NO = 100015&lt;br /&gt;
               RECTYPE = POLICYHOLDER&lt;br /&gt;
           END FIND&lt;br /&gt;
OWNER.POL: IN VEHICLES FIND AND RESERVE ALL RECORDS -&lt;br /&gt;
               FOR WHICH OWNER POLICY = 100015&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN OWNER.POL&lt;br /&gt;
               %NEW.PREMIUM = VEHICLE PREMIUM + 100&lt;br /&gt;
               CHANGE VEHICLE PREMIUM TO %NEW.PREMIUM&lt;br /&gt;
               %TOTAL.PREMIUM = %TOTAL.PREMIUM + %NEW.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
           FOR EACH RECORD IN POL.HLDR&lt;br /&gt;
               CHANGE TOTAL PREMIUM TO %TOTAL.PREMIUM&lt;br /&gt;
           END FOR&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In the preceding example, the first FIND AND RESERVE statement prevents access to TOTAL PREMIUM while its corresponding VEHICLE PREMIUMs are being changed.    &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release Records statement===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records found using the &amp;lt;var&amp;gt;Find And Reserve&amp;lt;/var&amp;gt; statement are held in exclusive status until the end of the request or until they are released explicitly by the user with the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement. The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement also can be used to release records from &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements or records obtained in share status by &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statements issued in the regular form. Records released in this manner are no longer available to the request and might have to be found again. The original found set or list from which the sorted set was built is not affected.  &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; To avoid producing confusing results, issue a &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement at the end of a loop and not in the middle of one, since the statement relinquishes control of a found set. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/var&amp;gt; is the statement label of the FIND statement that locked the records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Processing====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release Records&amp;lt;/var&amp;gt; statement removes all:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Entries from the specified found set(s), thereby removing the record set lock&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;List entries, when issued against list(s)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The user&#039;s single record locks.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement refers to a &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statement, the space occupied by the temporary sorted record copies is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;Release Records On&amp;lt;/var&amp;gt; is equivalent to the &amp;lt;var&amp;gt;Clear List&amp;lt;/var&amp;gt; statement. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release All Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement terminates the lock in share mode placed on records by the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; statement. &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; also clears all lists and the results of all &amp;lt;var&amp;gt;Sort&amp;lt;/var&amp;gt; statements, and sets the current record number to -1. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is processed in a &amp;lt;var&amp;gt;For Each Record&amp;lt;/var&amp;gt; loop, subsequent references to the current record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available, and the first statement after the end of the loop is executed. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this release statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release All Records statement syntax}}&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement is supported in remote file and scattered group contexts.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Release Imagine Records statement===&lt;br /&gt;
 &lt;br /&gt;
====Description====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Release Imagine Records&amp;lt;/var&amp;gt; statement is exactly like a &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; statement except:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It frees all mappings of record numbers to records for [[Imagine Transparency]] files.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;Release All Records&amp;lt;/var&amp;gt; is done on all [[Daemon class#Transactional daemons|transactional daemon]] descendants.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It is not allowed to be invoked on a [[Daemon class#Transactional daemons|transactional daemon]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It can be followed by an optional &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword to indicate that a commit or backout is to be done before the rest of &amp;lt;var&amp;gt;Release All Record&amp;lt;/var&amp;gt; processing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If not followed by the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Backout&amp;lt;/var&amp;gt; keyword, it cancels the request if in a uncommitted transaction (there are pending updates)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of this Release Imagine Records statement is:&amp;lt;/p&amp;gt;&lt;br /&gt;
{{Template:Release Imagine Records statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===RELEASE and COMMIT RELEASE statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The RELEASE statements and the COMMIT RELEASE statements empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by RELEASE or COMMIT RELEASE statements, however, without records there is nothing to process.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Lock pending updates==&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; provides a special facility, lock pending updates, that prevents updated records in one transaction (a sequence of file updating operations) from being used by other applications until the transaction ends. Lock pending updates ensures logical consistency without requiring the use of the FIND AND RESERVE statement. LPU locks are distinct from single record locks.         &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Processing===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the lock pending updates option is specified, records are locked in share mode by a FIND statement. The first update to a record locks the record in exclusive mode and adds it to a set of updated locked records called the pending update pool. The record is not released from this exclusive lock at the end of the FOR EACH RECORD loop. Instead, the record is locked until the end of the transaction when the entire pending update pool is released.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Set with the FOPT parameter===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Lock pending updates is an option of the &amp;lt;var&amp;gt;[[FOPT parameter|FOPT]]&amp;lt;/var&amp;gt; parameter that is enabled or disabled on a file-by-file basis.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==&amp;lt;b id=&amp;quot;COMMIT statement&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b id=&amp;quot;commit&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Commit statement==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement ends the current transaction, dequeues checkpoints, and drops all LPU locks and exclusive record locks obtained by update statements (&amp;lt;var&amp;gt;[[Add statement|Add]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Change statement|Change]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[Data maintenance#Delete statement|Delete]]&amp;lt;/var&amp;gt;) for all files participating in the transaction.&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement does not release record locks obtained by the &amp;lt;var&amp;gt;[[Find statement (find records)|Find]]&amp;lt;/var&amp;gt; statement. The share record lock obtained by the &amp;lt;var&amp;gt;[[For Record Number statement|For Record Number]]&amp;lt;/var&amp;gt; statement is not released by a &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement executed inside a loop.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement is supported in remote context. If records on any remote nodes are updated, the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement saves all remote updates on all remote nodes. Also, remote updates are committed automatically by the system when appropriate.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
{{Template:Commit statement syntax}}&lt;br /&gt;
 &lt;br /&gt;
====Example====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;begin&lt;br /&gt;
get.rec: find all records for which&lt;br /&gt;
             lname = &#039;NELSON&#039;&lt;br /&gt;
         end find&lt;br /&gt;
         for each record in get.rec&lt;br /&gt;
             add month = &#039;nov&#039;&lt;br /&gt;
             commit&lt;br /&gt;
             print fname and lname and each month&lt;br /&gt;
         end for&lt;br /&gt;
name.ct: count records in get.rec&lt;br /&gt;
         print count in name.ct and &#039;records updated&#039;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; option of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; statement performs all the operations of the &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[Release All Records statement|Release All Records]]&amp;lt;/var&amp;gt; statements:&amp;lt;/p&amp;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 nowrap&amp;gt;After processing a &amp;lt;br&amp;gt;&lt;br /&gt;
Commit&amp;amp;nbsp;Release&lt;br /&gt;
statement ... &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th valign=&amp;quot;bottom&amp;quot;&amp;gt;Any subsequent reference to the current...&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 nowrap&amp;gt;&amp;lt;var&amp;gt;[[For Each Record statement|For Each Record]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record in the loop cannot find a current record. If processing returns to the top of the loop, no new record is available; the first statement after the end of each loop is executed.&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;var&amp;gt;[[For Each Value statement|For Each Value]]&amp;lt;/var&amp;gt; loop &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Value still obtains the last value processed. &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;
====Usage====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To avoid confusing results, it is recommended that &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; be issued at the end of a loop and not in the middle of one.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Release and Commit Release statements with global foundsets and lists===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; statement and the &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statement both empty the contents of a global found set, global sort set, or global list. The label and positions associated with a found set, sort set, or the list is still considered global, but it is empty. Global positions are not cleared by &amp;lt;var&amp;gt;Release&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Commit Release&amp;lt;/var&amp;gt; statements, however, without records there is nothing to process.     &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end of toc limit div --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Release_Imagine_Records_statement&amp;diff=120624</id>
		<title>Release Imagine Records statement</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Release_Imagine_Records_statement&amp;diff=120624"/>
		<updated>2025-09-05T19:51:05Z</updated>

		<summary type="html">&lt;p&gt;Alex: Redirected page to Record level locking and concurrency control#Release Imagine Records statement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Record level locking and concurrency control#Release Imagine Records statement]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Statement_syntax&amp;diff=120623</id>
		<title>Statement syntax</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Statement_syntax&amp;diff=120623"/>
		<updated>2025-09-05T19:49:03Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Release All Records */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page summarizes SOUL syntax and conventions, which are discussed in more detail throughout this wiki. The SOUL statements are listed in alphabetical order.  Many of the section titles or syntax blocks contain links to the wiki page describing the statement or syntax phrase. A [[#Other syntax|later section]] provides other SOUL syntax information, including links to [[#tokens|information about the &amp;quot;tokens&amp;quot;]] of SOUL, such as names in SOUL.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All SOUL statements can be used between a &amp;lt;var&amp;gt;[[BEGIN command|Begin]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;[[MORE command|More]]&amp;lt;/var&amp;gt;) command and an &amp;lt;var&amp;gt;[[End statement|End]]&amp;lt;/var&amp;gt; statement. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;External Call Facility (ECF) statements are listed under &amp;lt;var&amp;gt;[[#External|External]]&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Various other [[List of Model 204 commands|Model 204 commands]] also have effects on the results of a SOUL request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following notations prefix some of the statements in the presentation of the SOUL syntax: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&lt;br /&gt;
**&lt;br /&gt;
+&lt;br /&gt;
++&lt;br /&gt;
C&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See the [[#Notation conventions|notation conventions]] section for an explanation of these usages, as well as other general comments about understanding the syntax of SOUL. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;amp;nbsp; &amp;lt;!-- Separates intro from toc --&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;User Language statements&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &amp;lt;!-- In case there are links --&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;SOUL statements&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;  &amp;lt;div id=&amp;quot;SOUL syntax&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!--To make above link targets go to toc:--&amp;gt;&lt;br /&gt;
&amp;lt;!--==SOUL statements in alphabetical order==--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Add statement|Add]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Add fieldname statement syntax}}&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;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:0em&amp;quot;&amp;gt;{{Template:Add lob-fieldname statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Array statement|Array]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;Array &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;arrayname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; Occurs &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Unknown&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 Depending On &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;After &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;arrayname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; At &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;position&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename1&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;arrayname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Assert statement|Assert]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Assert statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===[[Report generation#Audit statement|Audit]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;Audit &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[#Print specification syntax|print-specifications]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Audit All Fieldgroup Information statement|Audit All Fieldgroup Information]] (AAFGI)===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:AAFGI statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Report generation#Audit All Information statement|Audit All Information]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;{{Template:Audit All Information statement syntax}} &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;b id=&amp;quot;BACKOUT&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Backout===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td/&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Backout statement|Backout]]&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;
===BYPASS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;BYPASS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PENDING STATEMENT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===CALL===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;CALL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subname&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===[[Data maintenance#Change statement|Change]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Change fieldname statement syntax (basic)}} &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;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:0em&amp;quot;&amp;gt;{{Template:Change lob-fieldname statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Global_features#Using_the_CLEAR_statement|CLEAR]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Clear statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===CLEAR LIST===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Lists#Clearing a list|CLEAR LIST]] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt; &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;
===CLEAR ON===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Clear On statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===CLEAR TAG===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;CLEAR TAG &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;screenname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%screenname&amp;lt;/span&amp;gt;:&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;inputname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===[[Close statement (external I/O)|Close]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;{{Template:Close statement (external I/O) syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CLOSE PROCESS===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+C)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;CLOSE PROCESS    &amp;lt;BR&amp;gt;     &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;    &amp;lt;BR&amp;gt;     &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;SYNCLEVEL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FLUSH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &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;syntaxUL&amp;quot;&amp;gt;CLOSE PROCESS&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;SYNCLEVEL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; CONFIRM &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FLUSH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ERROR &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Commit statement|Commit]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Commit statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===[[Horizon SOUL interface#Confirm statement|Confirm]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Confirm statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Horizon SOUL interface#Confirmed statement|Confirmed]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Confirmed statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CONTINUE===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;CONTINUE&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===COUNT OCCURRENCES OF===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;COUNT OCCURRENCES OF &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt;&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;
===COUNT RECORDS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;COUNT RECORDS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b id=&amp;quot;declare&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;[[Declare statement|Declare]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;[[Using variables and values in computation#Declaring|Declare]]&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;declaration&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;declaration&amp;lt;/var&amp;gt; is one of the following: &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 20px; background-color: #fBfBfB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;font-family: Consolas,monospace; display:table;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Label &amp;lt;i&amp;gt;labelname&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Global &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Common&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[Lists#DECLARE LIST syntax|List]] listname &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;  &amp;lt;br&amp;gt; [&amp;lt;/span&amp;gt;In &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;File &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Perm &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Temp&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; Group&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;   &amp;lt;br&amp;gt; At &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;location&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Global &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Common&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;Image&amp;lt;/var&amp;gt; block:&lt;br /&gt;
{{Template:Image statement syntax}} &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;{{Template:Menu statement syntax}} &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;{{Template:Screen statement syntax}} &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Is&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;Fixed &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Dp &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Float&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Array (&amp;lt;i&amp;gt;d1&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,&amp;lt;i&amp;gt;d2&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,&amp;lt;i&amp;gt;d3&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
           &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;[[Initial clause in %variable declaration|Initial]](&amp;lt;i&amp;gt;numeric-expression&amp;lt;/i&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Static&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Common&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Is&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; String &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Len &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Dp &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Array (&amp;lt;i&amp;gt;d1&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,&amp;lt;i&amp;gt;d2&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,&amp;lt;i&amp;gt;d3&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
           &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;No Field Save&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Common&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
           &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;[[Initial clause in %variable declaration|Initial]](&#039;&amp;lt;i&amp;gt;EBCDIC-string&amp;lt;/i&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;expression&amp;lt;/i&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Static&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[Subroutines#DECLARE SUBROUTINE statement|Subroutine]] &amp;lt;i&amp;gt;subname&amp;lt;/i&amp;gt;  &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;i&amp;gt;type&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Input &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Output &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Input Output&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;type&amp;lt;/var&amp;gt; is one of the following: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Scalar %variable of the following format:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;String &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Len&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Fixed &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Dp &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Float&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&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;Array %variable of the following format:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;String &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Len &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Dp &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Array (* &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;) &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;No Field Save&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Fixed &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Dp &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Float&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Array (* &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&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;A list of records of the following format:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;List&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;In &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;File &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Perm &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Temp&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; Group&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- type indentation/background --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DEFAULT CURSOR===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;DEFAULT CURSOR &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;READ &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; REREAD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; PRINT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
               &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;ITEMID &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ROW &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; COLUMN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===DEFAULT===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;DEFAULT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;TITLE&lt;br /&gt;
        &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; PROMPT&lt;br /&gt;
        &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; INPUT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DEBLANK &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NODEBLANK&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PAD WITH &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;UPCASE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NOCASE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TAG &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;READ&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;REREAD &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PRINT &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DEFAULT SKIP &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; POSITIONS&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;S&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;INITIAL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;NULL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;character&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; BLANK&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DEFAULT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TYPE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;STRING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; BINARY &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; PACKED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ZONED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FLOAT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; EFORMAT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;LEN &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; UNKNOWN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; BITS &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; DIGITS &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;BP &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;SIGNED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; UNSIGNED&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PAD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;BLANK &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;character&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NULL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;STRIP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NOSTRIP&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;JUSTIFY &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;LEFT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; RIGHT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;INITIAL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;BLANK &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ZERO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NULL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;literal&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===DELETE===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Data maintenance#DELETE statement|DELETE]] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[Processing_multiply_occurring_fields_and_field_groups#DELETE_statement_rules|subscript]]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;= &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Data maintenance#Deleting a field group|DELETE FIELDGROUP]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldgroupname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[Processing_multiply_occurring_fields_and_field_groups#DELETE_statement_rules|subscript]]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;= &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===DELETE EACH===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;DELETE EACH &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt;&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;
===[[Data maintenance#DELETE RECORD statement|DELETE RECORD]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;DELETE RECORD &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;
===DELETE RECORDS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;DELETE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; RECORDS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===END BLOCK===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;END BLOCK &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===End===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;END &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;FIND &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; IF &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FOR &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; REPEAT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; STORE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; SUBROUTINE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
END &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;ARRAY &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; IMAGE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; MENU &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; SCREEN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[End statement|End]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;MORE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NORUN &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; USE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;...&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===END UPDATE===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;END UPDATE&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[External statement|External]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:External statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===FILE RECORDS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;FILE RECORDS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
             UNDER &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===[[Find Records statement|Find Records]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;FIND &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; RECORDS&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;         &amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;         &amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FOR WHICH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; WITH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[#Retrieval condition syntax|retrieval-conditions]]&amp;lt;/span&amp;gt;&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;
===[[Find And Reserve statement|Find And Reserve]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;FIND AND RESERVE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; RECORDS&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FDR&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;  &amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FOR WHICH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; WITH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[#Retrieval condition syntax|retrieval-conditions]]&amp;lt;/span&amp;gt; &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;
===[[Value loops#Find All Values statement|Find Values Of (FDV)]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:0em&amp;quot;&amp;gt;{{Template: Find Values Of statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FIND AND PRINT COUNT===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;Find And Print Count &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FPC&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;  &amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[#Retrieval condition syntax|retrieval-conditions]]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===[[Find Records statement|Find Without Locks]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;Find Without Locks &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; Records&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FDWOL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;In &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; On &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;For Which &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; With&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[#Retrieval condition syntax|retrieval-conditions]]&amp;lt;/span&amp;gt;&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;
===FLUSH PROCESS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;FLUSH PROCESS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FOR EACH OCCURRENCE===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;FOR &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;EACH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;OCCURRENCE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; OCCURRENCES&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;OF fieldname&amp;lt;/span&amp;gt; &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;b id=&amp;quot;FOR EACH RECORD&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;[[Record loops#For Each Record statement|For Each Record]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:For Each Record statement syntax}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&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; For &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;retrieval-conditions&amp;lt;/var&amp;gt;, see [[#Retrieval condition syntax|Retrieval condition syntax]], below. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FOR EACH VALUE OF===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;FOR &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;EACH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;VALUE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; VALUES&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;OF fieldname&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FROM &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value1&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression1&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value2&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression2&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;NOT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; LIKE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;pattern&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ASCENDING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; DESCENDING&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;CHARACTER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NUMERICAL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;RIGHT-ADJUSTED&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; ORDER&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===FOR EACH VALUE IN===&lt;br /&gt;
 &lt;br /&gt;
   &amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;FOR &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;EACH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;VALUE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; VALUES&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===FOR RECORD NUMBER===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;FOR RECORD NUMBER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===FOR RECORD NUMBER IN===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;FOR RECORD NUMBER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;OPTIMIZING FNV&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[For %i statement|For %var From %exp1 To %exp2 By %exp3]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding:0em&amp;quot;&amp;gt;{{Template:For %i statement syntax}} &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;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; The &amp;lt;var&amp;gt;By&amp;lt;/var&amp;gt; clause, when omitted, defaults to a value of 1. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Images#Identify statement|Identify]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot; display=&amp;quot;table-column&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;{{Template:Identify statement syntax}} &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;b id=&amp;quot;IF...THEN...ELSE&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b id=&amp;quot;ifStmt&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;[[If statement|If]]...Then...ElseIf...Else===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(C)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;If &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt; Then &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;...&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;ElseIf &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt; Then &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;...&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;] ...&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;Else &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;...&amp;lt;/span&amp;gt;  &amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;br&amp;gt;End If&lt;br /&gt;
&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;
===[[Image statement or block|Image]]===&lt;br /&gt;
&amp;lt;var&amp;gt;Image&amp;lt;/var&amp;gt; block:&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:0em&amp;quot;&amp;gt;{{Template:Image statement syntax}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===INCLUDE===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*, C)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;INCLUDE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procedurename&amp;lt;/span&amp;gt;  &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;
===INPUT===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;INPUT &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;inputname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;UPCASE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NOCASE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DEFAULT &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DEBLANK &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NODEBLANK&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PAD WITH &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;REQUIRED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ALPHA &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ALPHANUM &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; MUSTFILL&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ONEOF &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;literal&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;literal&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;...&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;NUMERIC&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;RANGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;lo&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;hi&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AND &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;lo&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;hi&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; ...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; VERIFY &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;characters&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;...&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;READ&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;REREAD &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PRINT &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TAG &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;c&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ITEMID &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===INSERT===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;INSERT &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subscript&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===[[Horizon SOUL interface#Invite statement|Invite]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Invite statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===IS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; IS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TYPE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;STRING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; BINARY &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; PACKED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ZONED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FLOAT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; EFORMAT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;LEN &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; UNKNOWN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; BITS &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; DIGITS &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; TO &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;position&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;BP &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;SIGNED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; UNSIGNED&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PAD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;BLANK &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;character&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NULL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;STRIP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NOSTRIP&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALIGN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;JUSTIFY &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;LEFT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; RIGHT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;INITIAL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;BLANK &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ZERO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NULL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AFTER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;arrayname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;position&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename1&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;arrayname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;OCCURS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DEPENDING ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; UNKNOWN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===JUMP TO===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;JUMP TO &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
JUMP TO (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label1&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;, &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label2&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; ...) &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Loop End statement|Loop End]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Loop End statement|Loop End]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Loop Next statement|Loop Next]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Loop Next statement|Loop Next]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MAX PFKEY===&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;MAX PFKEY &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b id=&amp;quot;MENU&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;[[Menu statement or block|Menu]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template: Menu statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MODIFY===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;MODIFY &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%menuname&amp;lt;/span&amp;gt;:&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%screenname&amp;lt;/span&amp;gt;:&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;itemname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FOR&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;ALL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; READ &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; REREAD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; TAB&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; PRINT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MODIFY BUFFER===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;MODIFY BUFFER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;SIZE=&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PRESERVE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NOPRESERVE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FILL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;X&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;nn&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; CLEAR&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===NEW PAGE===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(C)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;NEW PAGE  &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;
===[[Note statement|Note]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;Note &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subscript&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &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;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;Note &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039; &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[On statement|On]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[On statement|On]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;Attention &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Error &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Field Constraint Conflict&lt;br /&gt;
   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Find Conflict &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Missing File &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Missing Member&lt;br /&gt;
   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Record Locking Conflict&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
   &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statements&amp;lt;/span&amp;gt;&lt;br /&gt;
End On &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Open===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Open (External I/O) statement syntax}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;  &amp;lt;!--Don&#039;t ask me why!--&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(C)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Open and OpenC statements syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===OPEN PROCESS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;OPEN PROCESS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;CID &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;OPEN PROCESS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;   &amp;lt;br&amp;gt;    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;CID &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;   &amp;lt;br&amp;gt;    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;outbound-options&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;inbound-options&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;div style=&amp;quot;margin-left: 30px; background-color: #fBfBfB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;outbound-options&amp;lt;/var&amp;gt; are:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;font-family: Consolas,monospace&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT DESTINATION&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;USERID &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;i&amp;gt;string&amp;lt;/i&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PASSWORD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;i&amp;gt;string&amp;lt;/i&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;ACCOUNT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; PROFILE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;%&amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;i&amp;gt;string&amp;lt;/i&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;INITIAL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;DATA &#039;&amp;lt;i&amp;gt;string&amp;lt;/i&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; DATA &amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; IMAGE &amp;lt;i&amp;gt;imagename&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; ...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
and &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;inbound-options&amp;lt;/var&amp;gt; are:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ul style=&amp;quot;font-family: Consolas,monospace&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ACCEPT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;INITIAL &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;DATA &amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; IMAGE &amp;lt;i&amp;gt;image&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; ...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!-- end indent of options --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Pause statement|Pause]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Pause statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===PLACE RECORD ON===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Lists#PLACE RECORD and REMOVE RECORD statements|PLACE RECORD ON]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===PLACE RECORDS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;PLACE RECORDS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname1&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname2&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Position===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;POSITION &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;FOUNDSET &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;foundsortset_name&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; LIST &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;list_name&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;position_name&amp;lt;/span&amp;gt;&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; Use the above form of the &amp;lt;var&amp;gt;Position&amp;lt;/var&amp;gt; statement with &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop processing; see [[Global features#Position statement|Position statement]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;POSITION &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;ext-filename&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 AT KEY &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;operator&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&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; Use the above form of the &amp;lt;var&amp;gt;Position&amp;lt;/var&amp;gt; statement with external file processing using images; see [[Images#Position statement|Position statement]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Full-screen feature|PREPARE]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;PREPARE&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;[[Images#PrepareStmtImage|IMAGE]]&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;[[Full-screen feature#PrepareStmtMenu|MENU]]&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;menuname&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;[[Full-screen feature#PrepareStmtScrn|SCREEN]]&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;screenname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Print===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;Print &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[#Print specification syntax|printSpecifications]]&amp;lt;/span&amp;gt;   &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Print All Fieldgroup Information (PAFGI)===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:PAFGI statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Print All Information statement|Print All Information]] or [[PAI statement|PAI]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:PAI statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PRINT MENU===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;PRINT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;MENU&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;menuname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALERT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TITLE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;text&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===PRINT SCREEN===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;PRINT SCREEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;screenname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALERT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; CURSOR&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TITLE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;text&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===[[Horizon SOUL interface#Query Process statement|Query Process]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Query Process statement syntax}} &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;b id=&amp;quot;READ&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;[[Read Image statement|Read Image]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Read Image statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===READ &amp;lt;i&amp;gt;menuname&amp;lt;/i&amp;gt;===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;READ &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;MENU&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;menuname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALERT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TITLE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;text&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===READ &amp;lt;i&amp;gt;screenname&amp;lt;/i&amp;gt;===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;READ &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;SCREEN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;screenname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALERT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;NO REREAD&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; CURSOR&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TITLE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;text&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===RECEIVE IMAGE===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;RECEIVE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IMAGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 FROM &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;RESULT &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;RECEIVE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IMAGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;   &amp;lt;br&amp;gt;  FROM &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;   &amp;lt;br&amp;gt;  RESULT &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===[[Release All Records statement|Release All Records]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Release All Records statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===[[Release Imagine Records statement|Release Imagine Records]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Release Imagine Records statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===[[Release Position statement|Release Position]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;{{Template:Release Position statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Release Records statement|Release Records]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Release Records statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===[[Remember statement|Remember]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Remember statement syntax}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===REMOVE RECORD FROM===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(**)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Lists#PLACE RECORD and REMOVE RECORD statements|REMOVE RECORD FROM]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===REMOVE RECORDS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;REMOVE RECORDS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 FROM &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname2&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===REPEAT===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;REPEAT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FOREVER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; TIMES &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; WHILE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===REREAD===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;REREAD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;SCREEN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;screenname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ALERT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; CURSOR&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TITLE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;text&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===RESET===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;RESET &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;HEADER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; TRAILER&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Exceptions#Rethrow statement|Rethrow]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Rethrow statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===RETRY===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;RETRY &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PENDING STATEMENT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===RETURN===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;RETURN&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b id=&amp;quot;SCREEN&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;[[Screen statement or block|Screen]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Screen statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===SEND===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SEND &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IMAGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;REQSEND &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FLUSH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;sup&amp;gt;(+)&amp;lt;/sup&amp;gt;&amp;lt;/b&amp;gt;SEND &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IMAGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
    TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FLUSH &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; CONFIRM&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;REQSEND &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Horizon SOUL interface#Send Error statement|Send Error]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Send Error statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===SET===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SET &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;HEADER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; TRAILER&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;[[#Print specification syntax|print-specifications]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[SetText statement|SetText]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:SetText statement syntax}}&lt;br /&gt;
&lt;br /&gt;
===SIGNAL PROCESS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SIGNAL PROCESS&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;nnn&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SIGNAL PROCESS        &amp;lt;br&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===[[Sirius Case statement|Sirius Case]] directive===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(C)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Sirius Case statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SKIP LINES===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SKIP &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; LINE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;S&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===[[Skip Position statement|Skip Position]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;{{Template:Skip Position statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SORT RECORDS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SORT [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; RECORDS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 BY &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;key&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AND &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;key&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 20px; background-color: #fBfBfB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;key&amp;lt;/var&amp;gt; is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;font-family: Consolas,monospace&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt;key&amp;lt;/i&amp;gt; = &amp;lt;i&amp;gt;fieldname&amp;lt;/i&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;VALUE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ASCENDING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; DESCENDING&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;CHARACTER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NUMERICAL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; RIGHT-ADJUSTED&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; ...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt; &amp;lt;!--end key indent --&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===SORT RECORD KEYS===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SORT [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; RECORD KEYS&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ON &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LIST&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;listname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 BY &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;key&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AND &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;key&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 20px; background-color: #fBfBfB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;key&amp;lt;/var&amp;gt; is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;font-family: Consolas,monospace&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt;key&amp;lt;/i&amp;gt; = &amp;lt;i&amp;gt;fieldname&amp;lt;/i&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;VALUE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ASCENDING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; DESCENDING&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
       &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;CHARACTER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NUMERICAL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;RIGHT-ADJUSTED&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; ...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===SORT VALUE IN===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SORT VALUE IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ASCENDING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; DESCENDING&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 [&amp;lt;u&amp;gt;CHARACTER&amp;lt;/u&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; NUMERICAL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;RIGHT-ADJUSTED&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; ORDER&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===STOP===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(C)]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;STOP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IF COUNT IN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; EXCEEDS &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===STORE RECORD===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(*)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;STORE RECORD [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;sort or hash key value&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname1&amp;lt;/span&amp;gt;=[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value1&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression1&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;   [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname2&amp;lt;/span&amp;gt;=(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;   ...     &amp;lt;br&amp;gt;   &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;THEN CONTINUE     &amp;lt;br&amp;gt;      &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;      &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statement&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;      ...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;   END STORE&lt;br /&gt;
&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;
===SUBROUTINE===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;SUBROUTINE&lt;br /&gt;
&lt;br /&gt;
SUBROUTINE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subname&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;formal-parameter&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;INPUT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; OUTPUT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; INPUT OUTPUT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,...&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 20px; background-color: #fBfBfB;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;formal-parameter&amp;lt;/var&amp;gt; is one of the following:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;font-family: Consolas,monospace&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IS STRING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LEN &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ARRAY (*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;) &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;NO FS&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
           &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; IS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;FIXED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FLOAT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ARRAY (*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,*&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;LIST &amp;lt;i&amp;gt;listname&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IN &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FILE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PERM &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; TEMP&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; GROUP&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;name&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TAG===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;TAG &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%screenname&amp;lt;/span&amp;gt;:&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;inputname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH &#039;c&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===[[Horizon SOUL interface#Test Receipt statement|Test Receipt]]===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;{{Template:Test Receipt statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TITLE===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;TITLE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;text&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;promptname&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;AT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;TO &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COLUMN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;k&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DEFAULT &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;READ&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;REREAD &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PRINT &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;attributes&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b id=&amp;quot;trace&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;[[Trace statement|Trace]]===&lt;br /&gt;
 &lt;br /&gt;
{{Template:Trace statement syntax}}&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 output of the &amp;lt;var&amp;gt;Trace&amp;lt;/var&amp;gt; statement is controlled by the &amp;lt;var&amp;gt;[[ULTRACE parameter|ULTRACE]]&amp;lt;/var&amp;gt; parameter.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===[[Program Communication facilities#TRANSFER statement format and execution|TRANSFER]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;TRANSFER &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;CONTROL&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; TO PROCESS &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;WITH&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;USERID &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PASSWORD &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ACCOUNT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;PASSING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;IMAGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UPDATE RECORD===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;UPDATE RECORD&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===VARIABLES ARE===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;VARIABLES ARE&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;FIXED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FLOAT&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; STRING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; UNDEFINED&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Declare &amp;lt;i&amp;gt;%variable&amp;lt;/i&amp;gt;===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DECLARE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IS&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;FIXED &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; FLOAT&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ARRAY (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;d1&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;d2&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;d3&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COMMON&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DECLARE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IS&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 STRING &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;LEN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;DP &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;ARRAY (&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;d1&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;d2&amp;lt;/span&amp;gt;[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;d3&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;NO FIELD SAVE&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;COMMON&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subscript&amp;lt;/span&amp;gt;)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===WAIT===&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-family:monoface; padding-right:0px&amp;quot;&amp;gt;[[Statement syntax#Notation conventions|(+)]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;WAIT [&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; SEC&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;S&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;FOR&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;ANY RECEIPT RETURN &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;     &amp;lt;br&amp;gt;    &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; RECEIPT &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;cid&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;processname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&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;
===[[Write Image statement|Write Image]]===&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;{{Template:Write Image statement syntax}} &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Other syntax==&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b id=&amp;quot;tokens&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Names, numbers, literals, comments===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Names (for example, %variables, labels): see [[Model 204 naming conventions]]&lt;br /&gt;
&amp;lt;li&amp;gt;Other constructs: see [[Basic request structure]] (which also discusses some rules for statement labels)&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Value specification syntax===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For all User Language statements and retrieval conditions, wherever the term &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/var&amp;gt; appears in the syntax, it can be any of these:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Literal number or string &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;VALUE IN&amp;lt;/var&amp;gt; clause of the form:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;VALUE &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;IN&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;%variable&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===&amp;lt;b id=&amp;quot;retrvSyn&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Retrieval condition syntax===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;For Each Record Where&amp;lt;/var&amp;gt; statement can be followed by any number of retrieval conditions separated by an end of line or [[LINEND parameter]] character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Conditions can be constructed as a series of phrases that are combined &amp;quot;in the usual way&amp;quot; with &amp;lt;var&amp;gt;And&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Or&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Not&amp;lt;/var&amp;gt;, and parentheses (&amp;lt;b&amp;gt;()&amp;lt;/b&amp;gt;):&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[Not] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;phrase&amp;lt;/span&amp;gt; [&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;And &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Or &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Nor&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; [Not] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;phrase&amp;lt;/span&amp;gt;] ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;phrase&amp;lt;/var&amp;gt; can be constructed from these options: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul style=&amp;quot;font-family: Consolas,monospace&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/var&amp;gt; = &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Not&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;i&amp;gt;value&amp;lt;/i&amp;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;fieldname&amp;lt;/var&amp;gt; Like &amp;lt;i&amp;gt;pattern&amp;lt;/i&amp;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;fieldname&amp;lt;/var&amp;gt; Is [Not] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;Present &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Like &#039;&amp;lt;i&amp;gt;pattern&amp;lt;/i&amp;gt;&#039;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;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;fieldname&amp;lt;/var&amp;gt; Is [Not] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;[Numerically &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Alphabetically] &amp;lt;br&amp;gt;&lt;br /&gt;
 [Eq &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; = &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Ne &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; ¬= &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Greater Than &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Gt &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;gt;  &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Less Than &amp;lt;br&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Lt &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Le &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;= &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Ge &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;gt;= &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Before &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; After] &amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;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;fieldname&amp;lt;/var&amp;gt; Is [Not] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;[Numerically &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Alphabetically] &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;In Range [From &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; After] &amp;lt;i&amp;gt;value1&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;To &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; [And] Before&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;i&amp;gt;value2&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Between &amp;lt;i&amp;gt;value1&amp;lt;/i&amp;gt; And &amp;lt;i&amp;gt;value2&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[Record retrievals#FILE$ condition|File$]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;filename&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; =&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Find$ &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/var&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[Lists#Using the LIST$ condition|List$]] &amp;lt;i&amp;gt;listname&amp;lt;/i&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[Record retrievals#LOCATION$ condition|Location$]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;i&amp;gt;location&amp;lt;/i&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; =&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[#Point$|Point$]] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/var&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[#Sfl$ and Sfge$|Sfge$]] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/var&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;[[#Sfl$ and Sfge$|Sfl$]] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/var&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;value&amp;lt;/var&amp;gt; can be: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A literal number or string&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A %variable &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;Value&amp;lt;/var&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;(&amp;lt;i&amp;gt;[[#Use of expressions|expression]]&amp;lt;/i&amp;gt;) | [&amp;lt;var&amp;gt;In&amp;lt;/var&amp;gt;] &amp;lt;i&amp;gt;label&amp;lt;/i&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/var&amp;gt; points to an existing value set. If an &amp;lt;var&amp;gt;Eq Value In &amp;lt;i&amp;gt;value_set&amp;lt;/i&amp;gt;&amp;lt;/var&amp;gt; clause, value set values are treated as Boolean OR, for example: &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;i&amp;gt;field&amp;lt;/i&amp;gt; = &amp;lt;i&amp;gt;value1&amp;lt;/i&amp;gt; OR &amp;lt;i&amp;gt;field&amp;lt;/i&amp;gt; = &amp;lt;i&amp;gt;value2&amp;lt;/i&amp;gt; OR.... &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If an &amp;lt;var&amp;gt;Ne Value In &amp;lt;i&amp;gt;value_set&amp;lt;/i&amp;gt;&amp;lt;/var&amp;gt; clause, values are treated as Boolean AND: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;i&amp;gt;field&amp;lt;/i&amp;gt; &amp;lt;&amp;gt; &amp;lt;i&amp;gt;value1&amp;lt;/i&amp;gt; AND &amp;lt;i&amp;gt;field&amp;lt;/i&amp;gt; &amp;lt;&amp;gt; &amp;lt;i&amp;gt;value2&amp;lt;/i&amp;gt; AND.... &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See also [[Basic SOUL statements and commands#Processing a VALUE IN clause|Processing a VALUE IN clause]].&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;&amp;lt;b&amp;gt;Notes:&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The first character (&amp;lt;code&amp;gt;¬&amp;lt;/code&amp;gt;) of the &amp;quot;not-equal&amp;quot; test (&amp;lt;code&amp;gt;¬=&amp;lt;/code&amp;gt;) in the fourth of the items in the list of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;phrase&amp;lt;/var&amp;gt; options above is the EBCDIC &amp;quot;not sign,&amp;quot; which has the hexadecimal value &amp;lt;code&amp;gt;5f&amp;lt;/code&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For a description of the pattern in the &amp;lt;var&amp;gt;[Is] Like&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Is Not&amp;lt;/var&amp;gt; clauses, see the syntax of [[Is Like pattern matching#likeSyntax|Is Like patterns]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In addition to the discussions in the subsections that follow, see [[Record retrievals]] for a comprehensive description of retrieval conditions. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Omitting repeated first words====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a sequence of phrases in a particular retrieval condition all have the same first word, that word can be omitted from the latter phrases. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;List$ A And Not List$ B&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
can be written:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;List$ A And Not B&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
And:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;x Is 13 Or x Is Less Than 7&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
can be written:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;x Is 13 Or Is Less Than 7&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Omitting duplicated equal signs====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Duplicated equal signs can be omitted. For example, the expression:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;a = 3 Or a = 5 Or a = 40&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
is equivalent to:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;a = 3 Or 5 Or 40&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Use of parentheses====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parentheses can be placed around any sequence of phrases to clarify the condition or force the evaluation to occur in a particular order. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Not (a = 2 Or List$ y)&lt;br /&gt;
a = 1 And (b = 2 OR c = 3)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Use of expressions====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[Using variables and values in computation#Expressions|Expressions]] can be used in &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;For Each Record&amp;lt;/var&amp;gt; statements to provide the retrieval condition for the &amp;lt;var&amp;gt;Point$&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Sfl$&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;Sfge$&amp;lt;/var&amp;gt; conditions, as well as for the &amp;lt;var&amp;gt;Eq Value&amp;lt;/var&amp;gt; clause: &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=====Point$=====&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;Point$ Value(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/var&amp;gt; is a function call, string concatenation, arithmetic operation, SOUL construct, or Boolean expression. It is preceded by the keyword &amp;lt;var&amp;gt;Value&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
Example: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This example finds the first &amp;lt;code&amp;gt;MA&amp;lt;/code&amp;gt; record on file, and then counts the number of records from this point in the file:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FD1:&lt;br /&gt;
 &lt;br /&gt;
IN ICSCUST FPC STATE = MA&lt;br /&gt;
     END FIND&lt;br /&gt;
FOR 1 RECORD IN FD1&lt;br /&gt;
   PRINT &#039;CURREC = &#039; WITH $CURREC&lt;br /&gt;
   PRINT &#039;&amp;gt;= POINT$&#039;&lt;br /&gt;
FD2:&lt;br /&gt;
   IN ICSCUST FPC POINT$ VALUE($CURREC)&lt;br /&gt;
     END FIND&lt;br /&gt;
END FOR&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=====Sfl$ and Sfge$=====&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;Sfl$ Value(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Or:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;Sfge$ Value(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/var&amp;gt; is a function call, string concatenation, arithmetic operation, SOUL construct, or Boolean expression. It is preceded by the keyword &amp;lt;var&amp;gt;Value&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FOR %CT FROM 1 TO 10&lt;br /&gt;
  IN EXPRESS STORE RECORD ($EDITN(%CT,&#039;999&#039;))&lt;br /&gt;
    ORD1 = (%REC WITH %CT)&lt;br /&gt;
    ORD2 = (%CT * 2)&lt;br /&gt;
    ORD4 = (%CT * 4)&lt;br /&gt;
  END STORE&lt;br /&gt;
END FOR&lt;br /&gt;
COMMIT&lt;br /&gt;
FOR %CT FROM 1 TO 5&lt;br /&gt;
  PRINT &#039;LESS THAN &#039; WITH %CT&lt;br /&gt;
FD1:&lt;br /&gt;
  IN EXPRESS FPC SFL$ VALUE($EDITN(%CT,&#039;999&#039;))&lt;br /&gt;
             END FIND&lt;br /&gt;
  PRINT &#039;GREATER THAN OR EQUAL TO &#039; WITH %CT&lt;br /&gt;
FD2:&lt;br /&gt;
  IN EXPRESS FPC SFGE$ VALUE($EDITN(%CT,&#039;999&#039;))&lt;br /&gt;
             END FIND&lt;br /&gt;
END FOR&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=====Eq Value=====&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt; Eq Value(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/span&amp;gt;)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/var&amp;gt; is a function call, string concatenation, arithmetic operation, SOUL construct, or Boolean expression. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FD: IN FILE PEOPLE FD&lt;br /&gt;
LAST EQ VALUE($READ(&#039;LAST NAME?&#039;) )&lt;br /&gt;
END FIND&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Print specification syntax===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A &amp;lt;var&amp;gt;Print&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Set&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Audit&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;Trace&amp;lt;/var&amp;gt; statement contains print specifications of the following form:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;term&amp;lt;/span&amp;gt;] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;And &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Tab &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; With]...[[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;term&amp;lt;/span&amp;gt;] [And &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Tab &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; With] ...] ... [...]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;term&amp;lt;/var&amp;gt; can be constructed as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Count In &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Occurrence In &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Value in &amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;term&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;function&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;At &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Column&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;To &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Column&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Or, if the statement is within a record loop:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;Each &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;n&amp;quot;&amp;gt;term&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *Record &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; *Id&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
 [At [Column] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;m&amp;lt;/span&amp;gt;] [To [Column] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&lt;br /&gt;
&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; For additional &amp;lt;var&amp;gt;Print&amp;lt;/var&amp;gt; statement details regarding multiply occurring fields and field groups, see [[Processing multiply occurring fields and field groups#PRINT and PRINT n statements|Print and Print &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;]] statements for fields. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Expression syntax===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following syntax can be used in: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Assignment statements &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Conditional &amp;lt;var&amp;gt;If&amp;lt;/var&amp;gt; statements and &amp;lt;var&amp;gt;ElseIf&amp;lt;/var&amp;gt; clauses&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In the simplified syntax for an &amp;lt;var&amp;gt;If&amp;lt;/var&amp;gt; statement, which is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;If &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;condition&amp;lt;/span&amp;gt; Then &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;statements&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;condition&amp;lt;/var&amp;gt; expands to the syntax described in this section. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Computed &amp;lt;var&amp;gt;Jump To&amp;lt;/var&amp;gt; statements &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Subscripts &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Function arguments &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;A value in parenthesis in SOUL &amp;quot;DML&amp;quot; statements, for example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Add &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/var&amp;gt; = (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/var&amp;gt;)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=====&amp;lt;b id=&amp;quot;exprSyntax&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Syntax=====&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;operand | (expression)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;  [operator &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;operand &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; (expression)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;] ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Where:&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;operand&amp;lt;/var&amp;gt; can be constructed as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[+ &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; - &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Not]&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;&#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&#039; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%variable&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;number&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;fieldname&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;(subscript)&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; Is &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Not&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; Present&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Count In &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Occurrence In &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Value In &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;label&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;function&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&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;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;expression&amp;lt;/var&amp;gt; (Note: enclosed by parentheses) is a function call, string concatenation, arithmetic operation, SOUL construct, or Boolean expression. For further details, see [[Using variables and values in computation#Expressions|Expressions]]. &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;operator&amp;lt;/var&amp;gt; may be one of the following:&lt;br /&gt;
&amp;lt;table style=&amp;quot;table-layout: fixed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;+&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;=&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;EQ&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;And&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;b&amp;gt;-&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;,=&amp;lt;/b&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;NE&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;AndIf&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;b&amp;gt;*&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;GT&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Or&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;b&amp;gt;/&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;LT&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;OrIf&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;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;gt;=&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;GE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;With (Note: this can also be achieved via [[Implicit concatenation]])&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;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&amp;lt;=&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;LE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is [Not] Present (Note: applied either to a field or to an [[Methods#optionalParams|optional or default method parameter]])&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;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is [Not] Like&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Notes:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The first character (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;) of the inequality test above is the EBCDIC &amp;quot;not sign,&amp;quot; which has the hexadecimal value &amp;lt;code&amp;gt;5f&amp;lt;/code&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For a description of the &amp;lt;code&amp;gt;Is Like&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Is Not&amp;lt;/code&amp;gt; clauses, see the syntax of [[Is Like pattern matching|Is Like patterns]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var&amp;gt;AndIf&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;OrIf&amp;lt;/var&amp;gt; operators are called &amp;quot;short circuit&amp;quot;, because, at a given precedence level, if the value of the conditional expression has been fully determined, the remainder at that level is not evaluated.  For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%sex eq &#039;M&#039; and (%ht lt 5.2 orIf %ht gt 6.5)&amp;lt;/p&amp;gt;&lt;br /&gt;
If the value of &amp;lt;code&amp;gt;%ht&amp;lt;/code&amp;gt; is less than 5.2, the final comparison -- &amp;lt;code&amp;gt;%ht gt 6.5&amp;lt;/code&amp;gt; -- is &amp;lt;b&amp;gt;never&amp;lt;/b&amp;gt; evaluated (that holds regardless of what had been coded as the final comparison).&lt;br /&gt;
&amp;lt;p&amp;gt;With the same value of &amp;lt;code&amp;gt;%ht&amp;lt;/code&amp;gt;, if the &amp;lt;code&amp;gt;Or&amp;lt;/code&amp;gt; operator had been used, then that final comparison is &amp;lt;b&amp;gt;always&amp;lt;/b&amp;gt; evaluated.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For more information about operators, see [[Using variables and values in computation#Operators|Operators]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote &amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===In clause syntax===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The SOUL statements on this page whose syntax display is preceded by an asterisk (&amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;) support an &amp;lt;var&amp;gt;In&amp;lt;/var&amp;gt; clause. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The three basic forms of the &amp;lt;var&amp;gt;In&amp;lt;/var&amp;gt; clause are:  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;In [Permanent &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; Temporary ] Group &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;groupname&amp;lt;/span&amp;gt;&lt;br /&gt;
Member [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;%member&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;filename&amp;lt;/span&amp;gt; [At &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;location &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; =&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;]]&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;In &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;file1&amp;lt;/span&amp;gt; [,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;file2&amp;lt;/span&amp;gt;] ...&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;In &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;{&amp;lt;/span&amp;gt;$Curfile &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;|&amp;lt;/span&amp;gt; $Update&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;}&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The form &amp;lt;var&amp;gt;In $Curfile&amp;lt;/var&amp;gt; can be used only within a record loop.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====In Group Member limitations====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to the three basic forms of the In clause shown above, the &amp;lt;var&amp;gt;In Group Member&amp;lt;/var&amp;gt; clause restricts the following statements to one member file in a group context:&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;Clear List&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;Find All Records&amp;lt;/var&amp;gt; (and its variants)&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;Find All Values&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 Record Number&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;FRN&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;Store Record&amp;lt;/var&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You cannot use an &amp;lt;var&amp;gt;In Group Member&amp;lt;/var&amp;gt; clause with a &amp;lt;var&amp;gt;For Each Record&amp;lt;/var&amp;gt; statement or with an &amp;lt;var&amp;gt;Add&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;Change&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;Delete Record&amp;lt;/var&amp;gt; statement. Only the previously listed statements call accept an &amp;lt;var&amp;gt;In Group Member&amp;lt;/var&amp;gt; clause.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Using an In clause in a Begin...End block====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The file name in the &amp;lt;var&amp;gt;In&amp;lt;/var&amp;gt; clause used within a &amp;lt;var&amp;gt;Begin...End&amp;lt;/var&amp;gt; block is resolved by the compiler. You can hard-code a file name or use some type of dummy string for the file name. Using a %variable for the file name is not allowed. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subscript syntax===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A subscript has the format:  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=====Syntax=====&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;(&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subscript1&amp;lt;/span&amp;gt; [,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subscript2&amp;lt;/span&amp;gt; [,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;subscript3&amp;lt;/span&amp;gt;]] )&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;subscript1&amp;lt;/var&amp;gt;, &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;subscript2&amp;lt;/var&amp;gt;, and &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;subscript3&amp;lt;/var&amp;gt; can be any expression. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SOUL macros==&lt;br /&gt;
There are [[SOUL macro facility|additional facilities]] supporting &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;macro statements&amp;lt;/b&amp;gt;.  Macro statements allow code to be conditionally compiled.&lt;br /&gt;
&lt;br /&gt;
As an example, in the following SOUL fragment, the &amp;lt;var&amp;gt;Recordset&amp;lt;/var&amp;gt; object declaration would be for the file &amp;lt;code&amp;gt;AVEBURY&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;!def henge avebury&lt;br /&gt;
 ...&lt;br /&gt;
%sites is object recordset in file ?!HENGE&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Terminal display attributes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
One or more of the following terminal display attributes can replace the term attribute in a full-screen formatting statement, if the display attribute is supported by the installation:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;caption&amp;gt;List of attributes&amp;lt;/caption&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;BLINK&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;BLUE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;BRIGHT&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;DIM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;GREEN&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;INV[IS[BLE]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;NOBLINK&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;NOREV[ERSE]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;NOU[NDER]SCORE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;PINK&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;PROT[ECTED]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;RED&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;REV[ERSE]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;TURQUOISE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[UNDER]SCORE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;UNPROT[ECTED]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;VIS[IBLE]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;WHITE&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;YELLOW &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;
==Notation conventions==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This page uses the following syntax notation conventions: &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;Syntax notation &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Indicates that...&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;Single asterisk (*) &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Statements can be preceded by an IN clause, if there is no reference to a previous set (label or list). See [[#IN clause syntax|IN clause syntax]] for more discussion.&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;Two asterisks (**) &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Construct can appear only within a record loop.&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;Plus sign (+) &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Construct requires the optional [[Horizon]] feature.&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 nowrap&amp;gt;Two plus signs (++) &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Construct requires the optional User Language to Database 2 feature.&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;C&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The (first) keyword of the statement is also a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; command; the command&#039;s wiki page will be, for example, &#039;OPEN command&#039;.&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; commands are listed alphabetically and documented in [[List of Model 204 commands]]. &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;Lowercase italic &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Constructs are replaced with variable information.&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A field name (%%) variable can be used anywhere fieldname appears. The %%variable can contain its own subscript, separate from the field name subscript.&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;
The subscript of an array element must be specified before a field name subscript.&amp;lt;/p&amp;gt; &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;The lowercase constructs &amp;amp;mdash; retrieval-conditions, print-specifications, expression, subscript, attribute, and type &amp;amp;mdash; are discussed separately following the syntax summaries, beginning with [[#Value specification syntax|Value specification syntax]].   &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For more Model 204 notation conventions, see [[Notation conventions]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Template:Release_Imagine_Records_statement_syntax&amp;diff=120622</id>
		<title>Template:Release Imagine Records statement syntax</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Template:Release_Imagine_Records_statement_syntax&amp;diff=120622"/>
		<updated>2025-09-05T18:51:34Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Record level locking and concurrency control#Release Imagine Records statement|Release Imagine Records]] &amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;Backout | Commit&amp;lt;span class=&amp;quot;squareb&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt; &amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Template:Release_Imagine_Records_statement_syntax&amp;diff=120621</id>
		<title>Template:Release Imagine Records statement syntax</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Template:Release_Imagine_Records_statement_syntax&amp;diff=120621"/>
		<updated>2025-09-05T18:48:55Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;Release Imagine Records&amp;lt;/p&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p class=&amp;quot;syntaxUL&amp;quot;&amp;gt;[[Record level locking and concurrency control#Release Imagine Records statement|Release Imagine Records]]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Regex_processing&amp;diff=120620</id>
		<title>Regex processing</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Regex_processing&amp;diff=120620"/>
		<updated>2025-09-04T14:10:34Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Look-around subexpressions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Regex processing --&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt; includes support for &#039;&#039;&#039;regular expression&#039;&#039;&#039;&lt;br /&gt;
(&amp;quot;regex&amp;quot;) processing in multiple $functions and O-O methods.&lt;br /&gt;
This support is modeled closely on Perl&#039;s regular expression implementation.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
SOUL $functions and methods offer the following variety of tasks you&lt;br /&gt;
can accomplish using a regex.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Simple matching:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can determine whether and where a single regex pattern&lt;br /&gt;
matches within a single input string.&lt;br /&gt;
See the &amp;lt;var&amp;gt;[[RegexMatch (String function)|RegexMatch]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[UnicodeRegexMatch (Unicode function)|UnicodeRegexMatch]]&amp;lt;/var&amp;gt; intrinsic functions. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can apply a single regex to a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; to find one item. See the &amp;lt;var&amp;gt;[[RegexLocate and RegexLocateUp (Stringlist functions)|RegexLocate]]&amp;lt;/var&amp;gt; and&lt;br /&gt;
&amp;lt;var&amp;gt;[[RegexLocate and RegexLocateUp (Stringlist functions)|RegexLocateUp]]&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; functions. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can apply a single regex to a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; to find all&lt;br /&gt;
matching items and place them on a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;.&lt;br /&gt;
See the &amp;lt;var&amp;gt;[[RegexSubset (Stringlist function)|RegexSubset]]&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; function. &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;Capturing:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can append to a &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; the characters in an input string that are matched by regex capturing groups.&lt;br /&gt;
See the &amp;lt;var&amp;gt;[[RegexCapture (Stringlist function)|RegexCapture]]&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; function. &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;Searching and replacing:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can replace the matched characters in a single&lt;br /&gt;
input string with a specified string, one or many times.&lt;br /&gt;
See the &amp;lt;var&amp;gt;[[RegexReplace (String function)|RegexReplace]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[UnicodeRegexReplace (Unicode function)|UnicodeRegexReplace]]&amp;lt;/var&amp;gt; intrinsic functions. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You can find the characters in a single string&lt;br /&gt;
that are matched by one of a set (&amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;) of regexes, and replace&lt;br /&gt;
the matched characters with a string from a corresponding set (&amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt;).&lt;br /&gt;
See the &amp;lt;var&amp;gt;[[RegexReplaceCorresponding (Stringlist function)|RegexReplaceCorresponding]]&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; function. &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;Splitting:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can use a regex repeatedly to separate a given input string&lt;br /&gt;
into the substrings that are&lt;br /&gt;
matched by the regex and the substrings that are not matched, and&lt;br /&gt;
append to a Stringlist either or both of these sets of substrings&lt;br /&gt;
(in combination or not with the subset of matched substrings&lt;br /&gt;
that are captured.&lt;br /&gt;
See the &amp;lt;var&amp;gt;[[RegexSplit (Stringlist function)|RegexSplit]]&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;Stringlist&amp;lt;/var&amp;gt; function.&lt;br /&gt;
and &amp;lt;var&amp;gt;[[RegexSplit (String function)|RegexSplit]]&amp;lt;/var&amp;gt; intrinsic &amp;lt;var&amp;gt;String&amp;lt;/var&amp;gt; function. &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;
Many tools implement regular expressions, each with its own variation&lt;br /&gt;
of supported features.&lt;br /&gt;
The following sections describe the SOUL regex support.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Regex rules|Regex rules]] discusses the symbols and grammar of SOUL regex. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Common regex options|Common regex options]] and [[#XML Schema mode|XML Schema mode]] discuss options that modify the&lt;br /&gt;
interpretation of a specified regex, which are available to some or all of the SOUL regex $functions and methods. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[#SOUL programming considerations|SOUL programming considerations]] discusses aspects of using regex in SOUL programs. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Distinction from SOUL Is Like pattern matching===&lt;br /&gt;
The use of regex processing conforms to the common matching processing provided in contemporary languages such as Perl, PHP, Python, Java, and so on.  In addition to this, several constructs in SOUL, such as the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;If&amp;lt;/var&amp;gt; statements, provide a pattern matching construct using an &amp;lt;var&amp;gt;Is Like&amp;lt;/var&amp;gt; clause.  The rules for &amp;lt;var&amp;gt;Is Like&amp;lt;/var&amp;gt; are discussed in the syntax for [[Is Like pattern matching#likeSyntax|Is like patterns]].&lt;br /&gt;
&lt;br /&gt;
==Regex rules==&lt;br /&gt;
When a regular expression is said to &amp;quot;match a string,&amp;quot; what is meant is&lt;br /&gt;
that a substring of characters within the string&lt;br /&gt;
fit (are matched by) the pattern specified by the regex.&lt;br /&gt;
The &amp;quot;rules&amp;quot; observed by SOUL for regex formation and matching&lt;br /&gt;
are primarily those followed&lt;br /&gt;
by the Perl programing language (as described, for example, in&lt;br /&gt;
&#039;&#039;Programming Perl&#039;&#039;, by Larry Wall et al,&lt;br /&gt;
published by O&#039;Reilly Media, Inc.; 3rd edition, July 14, 2000).&lt;br /&gt;
An additional reference is&lt;br /&gt;
&#039;&#039;Mastering Regular Expressions&#039;&#039;, by Jeffrey E. F. Friedl,&lt;br /&gt;
published by O&#039;Reilly Media, Inc. (2nd edition, July 15, 2002).&lt;br /&gt;
In terms of the type of regex engine described in this book, the Model 204&lt;br /&gt;
regex processing is considered NFA (not DFA, and not POSIX NFA).&lt;br /&gt;
 &lt;br /&gt;
Highlights of the SOUL regex support are discussed in the following&lt;br /&gt;
subsections, especially noting where SOUL rules differ from Perl&#039;s.&lt;br /&gt;
If a regex feature is not mentioned below, you should assume it is supported by SOUL to the extent that it is supported in Perl.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;b id=&amp;quot;web&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Online web resources; regex character set===&lt;br /&gt;
A Google search of &#039;regex&#039; will yield many pages, and you will find some that are well suited to your task; it is difficult to provide a &amp;quot;one size fits all&amp;quot; recommendation.&lt;br /&gt;
&lt;br /&gt;
However, here is one link that provides a one-page illustration of regex features, with &amp;lt;b&amp;gt;extremely&amp;lt;/b&amp;gt; brief indications of their purpose:&lt;br /&gt;
&lt;br /&gt;
http://web.mit.edu/hackl/www/lab/turkshop/slides/regex-cheatsheet.pdf&lt;br /&gt;
&lt;br /&gt;
And here is a clip from that page (as of January 24, 2019) listing the characters which have special meaning in regex (any other character in a regex matches the character itself):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Special characters&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The following 6 characters&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;{}[]()&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;and the following 8 characters&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;^$.|*+?\&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;and &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; inside &amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt;...&amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
have special meaning in regex, so they&lt;br /&gt;
must be &amp;quot;escaped&amp;quot; with &amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt; to match them.&lt;br /&gt;
&amp;lt;p class=&amp;quot;blockquote&amp;quot;&amp;gt;Ex: &amp;lt;code&amp;gt;\.&amp;lt;/code&amp;gt; matches the period &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; and&lt;br /&gt;
&amp;lt;code&amp;gt;\\&amp;lt;/code&amp;gt;&lt;br /&gt;
matches the&lt;br /&gt;
backslash &amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above 15 metacharacters are those that can be escaped in Model 204 regex, as described in the [[#esc|table below]].&lt;br /&gt;
&lt;br /&gt;
===Expression constituents===&lt;br /&gt;
This section describes elements that constitute the actual expression pattern.&lt;br /&gt;
The next section describes features that modify or affect a specified pattern.&lt;br /&gt;
These sections describe the default case where the optional&lt;br /&gt;
[[#XML Schema mode|XML Schema mode]] processing is &#039;&#039;not&#039;&#039; in effect.&lt;br /&gt;
 &lt;br /&gt;
These features are discussed:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Escape sequences|Escape sequences]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Character classes|Character classes]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Greedy and non-greedy quantifiers|Greedy and non-greedy quantifiers]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Capturing groups|Capturing groups]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Look-around subexpressions|Look-around subexpressions]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Alternatives|Alternatives]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;b id=&amp;quot;esc&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Escape sequences====&lt;br /&gt;
The only escape sequences allowed in a Model 204 regex are those&lt;br /&gt;
for metacharacters&lt;br /&gt;
and those that are &amp;quot;shorthands&amp;quot; for special characters or character classes, as specified below.&lt;br /&gt;
 &lt;br /&gt;
These &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;metacharacter&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; escapes are allowed in regex arguments:&lt;br /&gt;
&amp;lt;!-- ?? table --&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th valign=&amp;quot;top&amp;quot;&amp;gt;\&amp;amp;thinsp;.&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Period (or dot); see [[#Mode modifiers|Mode modifiers]] for difference from Perl on what is matched by an un-escaped period&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;th&amp;gt;\&amp;amp;thinsp;[&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Left square bracket&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;th&amp;gt;\&amp;amp;thinsp;]&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Right square bracket&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;th&amp;gt;\&amp;amp;thinsp;(&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Left, or opening, parenthesis&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;th&amp;gt;\&amp;amp;thinsp;)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Right, or closing, parenthesis&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;th&amp;gt;\*&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Star, or asterisk&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;th&amp;gt;\&amp;amp;thinsp;-&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hyphen&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;th&amp;gt;\&amp;amp;thinsp;{&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Left curly bracket&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;th nowrap&amp;gt;\&amp;amp;thinsp;}&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Right curly bracket&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;th&amp;gt;\&amp;amp;thinsp;|&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Vertical bar&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;th&amp;gt;\\&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Backslash&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;th&amp;gt;\+&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Plus sign&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;th&amp;gt;\?&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Question mark&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;th&amp;gt;\$&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dollar sign&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\&amp;amp;#x5E;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Caret, or circumflex &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; A caret is used in this documentation to represent the character that the keyboard program translates to X&#039;5F&#039;; this may be a not sign (&amp;lt;tt&amp;gt;&amp;amp;#xAC;&amp;lt;/tt&amp;gt;) on your system.&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;
These &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;character shorthands&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; are allowed:&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;\n&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Linefeed (X&#039;25&#039;)&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;\r&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Carriage return (X&#039;0D&#039;)&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;\t&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Horizontal tab (X&#039;05&#039;)&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
These &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;class shorthands&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; are allowed:&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 valign=&amp;quot;top&amp;quot;&amp;gt;\b&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Word boundary anchor (a position between a \w character and a non-\w character) &amp;amp;mdash; but not supported as a backspace character or within a character class.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th valign=&amp;quot;top&amp;quot;&amp;gt;\B&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The inverse of \b: any position that is not a word boundary anchor.&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 valign=&amp;quot;top&amp;quot;&amp;gt;\c&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Legal name character; equivalent to &amp;lt;code&amp;gt;[\-_:.A-Za-z0-9]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\C&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Non-legal name character; equivalent to &amp;lt;code&amp;gt;[&amp;amp;#x5E;\-_:.A-Za-z0-9]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\d&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Digit; equivalent to &amp;lt;code&amp;gt;[0-9]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\D&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Non-digit; equivalent to &amp;lt;code&amp;gt;[&amp;amp;#x5E;0-9]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\i&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Legal start-of-name character; equivalent to &amp;lt;code&amp;gt;[_:A-Za-z]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\I&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Non-legal start-of-name character; equivalent to &amp;lt;code&amp;gt;[&amp;amp;#x5E;_:A-Za-z]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\s&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Whitespace character; equivalent to &amp;lt;code&amp;gt;[ \r\n\t]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\S&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Non-whitespace; equivalent to &amp;lt;code&amp;gt;[&amp;amp;#x5E; \r\n\t]&amp;lt;/code&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;th valign=&amp;quot;top&amp;quot;&amp;gt;\w&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Any letter (uppercase or lowercase), any digit, or the underscore.&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 valign=&amp;quot;top&amp;quot;&amp;gt;\W&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The inverse of \w: any non-letter or non-digit except the underscore.&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;
====Character classes==== &lt;br /&gt;
In character classes (which &amp;quot;match any character in the square&lt;br /&gt;
brackets&amp;quot;):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The only &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;ranges&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; allowed are subsets of uppercase letters,&lt;br /&gt;
lowcase letters, or digits.&lt;br /&gt;
For example, &amp;lt;code&amp;gt;[A-z]&amp;lt;/code&amp;gt; is&lt;br /&gt;
&#039;&#039;&#039;not&#039;&#039;&#039; legal; &amp;lt;code&amp;gt;[A-Za-z]&amp;lt;/code&amp;gt; &#039;&#039;&#039;is&#039;&#039;&#039; legal; &amp;lt;code&amp;gt;[a-9]&amp;lt;/code&amp;gt;&lt;br /&gt;
is &#039;&#039;&#039;not&#039;&#039;&#039; legal.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
Because of the gaps in the EBCDIC encoding, you can specify &amp;lt;code&amp;gt;[A-Z]&amp;lt;/code&amp;gt;,&lt;br /&gt;
but internally that is converted to &amp;lt;code&amp;gt;[A-IJ-RS-Z]&amp;lt;/code&amp;gt;;&lt;br /&gt;
and similarly for &amp;lt;code&amp;gt;[a-z]&amp;lt;/code&amp;gt;. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Multi-character escape sequences&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
(for example, &amp;lt;code&amp;gt;\s&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;\c&amp;lt;/code&amp;gt;)&lt;br /&gt;
are allowed within character classes.&lt;br /&gt;
However, they are &#039;&#039;&#039;not&#039;&#039;&#039; allowed as either side in a range. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;An unescaped &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;hyphen&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; (&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;) is allowed&lt;br /&gt;
if it occurs as the first character (or the second, if the first&lt;br /&gt;
is &amp;lt;code&amp;gt;&amp;amp;#x5E;&amp;lt;/code&amp;gt;) or as the last character in a character class expression.&lt;br /&gt;
An escaped hyphen (&amp;lt;code&amp;gt;\-&amp;lt;/code&amp;gt;) is allowed in all positions.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
All the following are allowed: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[-A-Z158]&lt;br /&gt;
[&amp;amp;#x5E;-A-Z158]&lt;br /&gt;
[158A-Z-]&lt;br /&gt;
[158A-Z0-]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
But &amp;lt;code&amp;gt;[A-F-K]&amp;lt;/code&amp;gt; is &#039;&#039;&#039;not&#039;&#039;&#039; allowed.&lt;br /&gt;
And a hyphen is not allowed as the left or right character&lt;br /&gt;
in the range expression itself&lt;br /&gt;
(&amp;lt;code&amp;gt;[&amp;quot;--]&amp;lt;/code&amp;gt;, for example, is &#039;&#039;&#039;not&#039;&#039;&#039; allowed). &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;Some &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;bracket characters&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; (&amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;,&lt;br /&gt;
from any of the several character codes that produce a left or right square bracket in EBCDIC) do not have to be escaped.&lt;br /&gt;
A bracket character does &#039;&#039;not&#039;&#039; require a preceding escape character if it is:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A right bracket (&amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;) that is outside of, not part of,&lt;br /&gt;
a character class expression.&lt;br /&gt;
So, &amp;lt;code&amp;gt;(1]9)&amp;lt;/code&amp;gt; matches &amp;lt;code&amp;gt;0001]9zzz&amp;lt;/code&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A right bracket that is the first character &amp;amp;mdash; or&lt;br /&gt;
the second, if the first is a caret (&amp;lt;code&amp;gt;&amp;amp;#x5E;&amp;lt;/code&amp;gt;) &amp;amp;mdash;&lt;br /&gt;
in a character class expression.&lt;br /&gt;
So, &amp;lt;code&amp;gt;[]xxx]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;[&amp;amp;#x5E;]xxx]&amp;lt;/code&amp;gt; are legal. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A left bracket that occurs anywhere in a character class expression.&lt;br /&gt;
So, &amp;lt;code&amp;gt;[abc[]&amp;lt;/code&amp;gt; is legal and matches any of these four&lt;br /&gt;
characters: &amp;lt;code&amp;gt;a b c [&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A left bracket that occurs outside of a character class expression must always be escaped. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Although not required, escape characters may be used in the cases cited above.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Greedy and non-greedy quantifiers====&lt;br /&gt;
Both &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;greedy and non-greedy matching&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; are supported.&lt;br /&gt;
That is, if there is more than one plausible match for a greedy quantifier&lt;br /&gt;
(&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{min,max}&amp;lt;/code&amp;gt;),&lt;br /&gt;
which govern how many input string characters the&lt;br /&gt;
preceding regex item may try to match), the longest one is selected.&lt;br /&gt;
In contrast, the non-greedy (aka &amp;quot;lazy&amp;quot;)&lt;br /&gt;
quantifiers (&amp;lt;code&amp;gt;*?&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;+?&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;??&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{min,max}?&amp;lt;/code&amp;gt;)&lt;br /&gt;
select the minimum number of characters needed to satisfy a match.&lt;br /&gt;
 &lt;br /&gt;
For example, in SOUL methods and $functions, the regex &amp;lt;code&amp;gt;&amp;lt;.+&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
greedily matches&lt;br /&gt;
the entire input string &amp;lt;code&amp;gt;&amp;lt;tag1 att=x&amp;gt;&amp;lt;tag2 att=y&amp;gt;&amp;lt;tag3 att=z&amp;gt;&amp;lt;/code&amp;gt;, although its set of plausible matches&lt;br /&gt;
also includes &amp;lt;code&amp;gt;&amp;lt;tag1 att=x&amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;lt;tag2 att=y&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
The regex &amp;lt;code&amp;gt;&amp;lt;.+?&amp;gt;&amp;lt;/code&amp;gt;, however, lazily matches just &amp;lt;code&amp;gt;&amp;lt;tag1 att=x&amp;gt;&amp;lt;/code&amp;gt;,&lt;br /&gt;
the shortest of the plausible matches.&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
Since &amp;lt;code&amp;gt;??&amp;lt;/code&amp;gt; is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; dummy string signifier,&lt;br /&gt;
you may need to use a SOUL expression such as&lt;br /&gt;
&amp;lt;code&amp;gt;&#039;?&#039; With &#039;?&#039;&amp;lt;/code&amp;gt; if you want to use the &amp;lt;code&amp;gt;??&amp;lt;/code&amp;gt; quantifier. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Understanding greediness becomes more important when the string&lt;br /&gt;
that a regex matches is being replaced by another string. See the [[RegexReplace (String function)#greedy|greedy example]] for the &amp;lt;var&amp;gt;RegexReplace&amp;lt;/var&amp;gt; function.&lt;br /&gt;
&lt;br /&gt;
====Capturing groups====&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Before Model 204 7.9 extraction of &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;repeating capture groups&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; from a string is&lt;br /&gt;
different in Perl and SOUL.&lt;br /&gt;
If there are multiple matches by a repeated group, Perl replaces each capture with the next one, ending up with only the final capture.&lt;br /&gt;
In Model 204 7.8 and earlier, SOUL saves each capture and concatenates them when finished.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
For example, if this is the &#039;&#039;regex&#039;&#039;: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;9([A-Z])*9&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
And this is the input string: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;xxx9ABCDEF9yyy&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
In both the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt; and Perl,&lt;br /&gt;
the &amp;quot;greedy quantifier&amp;quot; &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; matches as many times as it can,&lt;br /&gt;
stopping at the second &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;.&lt;br /&gt;
The resulting capture in SOUL $functions and methods is &amp;lt;code&amp;gt;ABCDEF&amp;lt;/code&amp;gt;,&lt;br /&gt;
the concatenation of six one-character matches.&lt;br /&gt;
In Perl, the resulting capture is &amp;lt;code&amp;gt;F&amp;lt;/code&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In Model 204 7.9, capturing group processing was changed to be consistent with Perl and pretty much all regular expression implementations. If one really wants or needs the old behavior, it can usually be achieved by embedding the entire repeated search string in parentheses. On can change the regex above to:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;9([A-Z]*)9&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
and &amp;lt;code&amp;gt;ABCDEF&amp;lt;/code&amp;gt; would be captured for string &amp;lt;code&amp;gt;&amp;quot;xxx9ABCDEF9yyy&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&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;A subexpression that is a validly formed capturing group&lt;br /&gt;
that is nested within a&lt;br /&gt;
non-capturing subexpression is still a capturing group.&lt;br /&gt;
The regex &amp;lt;code&amp;gt;(?:[1-9]*(a+))&amp;lt;/code&amp;gt; matches &amp;lt;code&amp;gt;123aa&amp;lt;/code&amp;gt; and&lt;br /&gt;
captures &amp;lt;code&amp;gt;aa&amp;lt;/code&amp;gt;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;b id=&amp;quot;backref&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Back references====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In Model 204 7.9, back references are supported. For example, the regular expression &amp;lt;code&amp;gt;(....)\1+&amp;lt;/code&amp;gt; would match any string where there was a repetition of any two character pair so that in string &amp;lt;code&amp;gt;&amp;quot;My dog said bow-wow-wow-wow-wow!&amp;quot;&amp;lt;/code&amp;gt; it would match &amp;lt;code&amp;gt;&amp;quot;-wow-wow-wow-wow&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====&amp;lt;b id=&amp;quot;lookahead&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;b id=&amp;quot;lookbehind&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;Look-around subexpressions====&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Look-ahead&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;look-behind&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; subexpressions are supported&lt;br /&gt;
as of Model 204 V7.9.&lt;br /&gt;
 &lt;br /&gt;
The supported parenthesized subexpression sequences that begin&lt;br /&gt;
with a question mark are the following, which are all non-capturing:&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(?:&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denotes a non-capturing group&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;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denotes a positive look-ahead&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;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denotes a negative look-ahead&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(?&amp;amp;lt;=&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denotes a positive look-behind&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;(?&amp;amp;lt;!&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Denotes a negative look-behind&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alternatives====&lt;br /&gt;
Alternatives (indicated by &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;) are evaluated from&lt;br /&gt;
left to right,&lt;br /&gt;
and evaluation is &amp;quot;short-circuited&amp;quot; (that is, it stops as soon as it finds a match).&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Empty expressions&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt;, for example, empty alternatives, are supported.&lt;br /&gt;
The following regex matches &amp;lt;code&amp;gt;A9&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B9&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;9&amp;lt;/code&amp;gt;,&lt;br /&gt;
capturing respectively &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;, and the null string:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;(A|B|)9&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
An empty alternative (like the &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt;, above, that is followed only by the closing parenthesis) is always True.&lt;br /&gt;
&lt;br /&gt;
===Features that affect the whole expression===&lt;br /&gt;
&lt;br /&gt;
====Unicode====&lt;br /&gt;
Unicode is supported by the &amp;lt;var&amp;gt;[[UnicodeRegexMatch (Unicode function)|UnicodeRegexMatch]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[UnicodeRegexReplace (Unicode function)|UnicodeRegexReplace]]&amp;lt;/var&amp;gt; functions.&lt;br /&gt;
&lt;br /&gt;
====Locales====&lt;br /&gt;
Locales are not supported.&lt;br /&gt;
&lt;br /&gt;
====Mode modifiers====&lt;br /&gt;
Mode modifiers are settings that influence how a regex is applied.&lt;br /&gt;
SOUL mode modifiers apply to the entire regex; none can be applied to&lt;br /&gt;
part of a regex.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In SOUL regex, the dot (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;) metacharacter matches any character except for a carriage return or linefeed.&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039;&lt;br /&gt;
In Perl, which does not consider a carriage return an end-of-line character,&lt;br /&gt;
a dot always matches a carriage return as well. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
To initiate &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;dot-matches-all&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; mode, in which dot matches &#039;&#039;&#039;any&#039;&#039;&#039;&lt;br /&gt;
character, Perl uses an &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; character after the regex-ending &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
SOUL regex $functions and methods have an &amp;quot;options&amp;quot; argument&lt;br /&gt;
that can initiate this mode (value &amp;lt;code&amp;gt;S&amp;lt;/code&amp;gt;), as described&lt;br /&gt;
in [[#Common regex options|Common regex options]]. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Perl supports a &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;case-insensitive matching&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; mode&lt;br /&gt;
that you can apply globally (&amp;lt;code&amp;gt;i&amp;lt;/code&amp;gt; after the regex-ending &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;) or partially&lt;br /&gt;
(started by &amp;lt;code&amp;gt;(?i)&amp;lt;/code&amp;gt; and ended by &amp;lt;code&amp;gt;(?-i)&amp;lt;/code&amp;gt;)) to a regex.&lt;br /&gt;
SOUL provides only a global case-insensitivity switch, which does&lt;br /&gt;
&#039;&#039;&#039;not&#039;&#039;&#039; use the Perl signifier.&lt;br /&gt;
Instead, SOUL uses an &amp;quot;options&amp;quot; argument&lt;br /&gt;
to initiate case-insensitive matching (value &amp;lt;code&amp;gt;I&amp;lt;/code&amp;gt;), as described, below, in [[#Common regex options|Common regex options]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;multi-line&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; mode, the caret (&amp;lt;code&amp;gt;&amp;amp;#x5E;&amp;lt;/code&amp;gt;) and&lt;br /&gt;
dollar sign (&amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;) anchor characters may match a position wherever&lt;br /&gt;
a newline character occurs in the target string &amp;amp;mdash; they are not&lt;br /&gt;
restricted to matching only at the beginning and end of the string.&lt;br /&gt;
To enter this mode, Perl uses an &amp;lt;code&amp;gt;m&amp;lt;/code&amp;gt; after the regex-ending &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
SOUL uses an &amp;quot;options&amp;quot; argument to initiate this mode (value &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;), as described, below,&lt;br /&gt;
in [[#Common regex options|Common regex options]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In Perl, &amp;lt;i&amp;gt;&amp;lt;b&amp;gt;comments&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; may be included in a regex between the number sign (&amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;) and a newline.&lt;br /&gt;
SOUL does not recognize this convention, and the number-sign character&lt;br /&gt;
is &#039;&#039;&#039;not&#039;&#039;&#039; a metacharacter. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Common regex options==&lt;br /&gt;
SOUL regex $functions and methods have an optional &amp;quot;options&amp;quot; argument that&lt;br /&gt;
lets you invoke one or more operating modes that modify how the regex is applied.&lt;br /&gt;
In most cases, the functionality provided by the option is similar to&lt;br /&gt;
what Perl provides, but Perl uses a different notation to invoke it.&lt;br /&gt;
 &lt;br /&gt;
The options argument is a string of one or more of the following single-letter options.&lt;br /&gt;
Not all options are available to all regex $functions and methods.&lt;br /&gt;
&amp;amp;mdash; the individual $function and method descriptions list the&lt;br /&gt;
options available to that function or method.&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;A&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Replace as is (for methods and $functions that provide replacement substrings for matched substrings.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
If this mode is specified, the replacement string is copied as is.&lt;br /&gt;
No escapes are recognized; a &amp;lt;code&amp;gt;$n&amp;lt;/code&amp;gt; combination&lt;br /&gt;
is interpreted as a literal and &#039;&#039;&#039;not&#039;&#039;&#039; as a special marker;&lt;br /&gt;
and so on. &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;C&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;XML Schema mode. See, below, [[#XML Schema mode|XML Schema mode]]. &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;G&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Global replacement of matched substrings (for methods and $functions that provide replacement substrings for matched substrings).&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
If this mode is &#039;&#039;&#039;not&#039;&#039;&#039; specified, a replacement string replaces the first matched substring only.&lt;br /&gt;
In G mode, every occurrence of the match is replaced. &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;I&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Do case-insensitive matching between the input string(s) and the regex. Treat the uppercase and lowercase variants of letters as equivalent. &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;M&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Multi-line mode. If this mode is &#039;&#039;&#039;not&#039;&#039;&#039; specified, a caret (&amp;lt;code&amp;gt;&amp;amp;#x5E;&amp;lt;/code&amp;gt;) or a not sign (&amp;lt;code&amp;gt;&amp;amp;#xAC;&amp;lt;/code&amp;gt;) &amp;amp;mdash; whichever key your keyboard program translates to X&#039;5F&#039; &amp;amp;mdash; matches only the position at the very start of the string, and dollar sign (&amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;) matches only the position at the very end. (This documentation uses the caret.)&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
The caret and dollar sign are position-identifying characters known&lt;br /&gt;
as &amp;quot;anchors,&amp;quot; which match the beginning and end, respectively,&lt;br /&gt;
of a line or string. They do not match any text. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
In M mode, a caret &#039;&#039;&#039;also&#039;&#039;&#039; matches the position immediately&lt;br /&gt;
after any end-of-line indicator&lt;br /&gt;
(carriage return, linefeed, carriage-return/linefeed),&lt;br /&gt;
and a dollar sign &#039;&#039;&#039;also&#039;&#039;&#039;&lt;br /&gt;
matches the position immediately before any end-of-line indicator. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
M mode is ignored if option C (XML Schema mode) is also specified, since&lt;br /&gt;
caret and dollar sign are not metacharacters in C mode. &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;S&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dot-All mode. If this mode is &#039;&#039;&#039;not&#039;&#039;&#039; specified, a dot (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;), also called a point, matches any single character except X&#039;0D&#039; (carriage return) and X&#039;25&#039; (linefeed). In Dot-All mode, a dot also matches carriage return and linefeed characters. &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;T&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Trace regular expression evaluation. This option, available in Model 204 V7.9 and later, sends trace lines to the terminal, a USE dataset, and/or the audit trail for each atom (essentially, each step) of regular expression processing. This can be useful in determining why a regular expression is producing the results that it does and perhaps provide hints as to how performance of a particular regular expression can be improved.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XML Schema mode==&lt;br /&gt;
An optional &amp;quot;options&amp;quot; argument lets you invoke XML Schema mode.&lt;br /&gt;
In this mode (not available in Perl),&lt;br /&gt;
the regex matching is done according to the rules for&lt;br /&gt;
regular expressions in the W3C XML Schema language specification&lt;br /&gt;
(the [http://www.w3.org/TR/xmlschema-2/#regexs Regular Expressions appendix] in Part 2 of the XML Schema recommenation).&lt;br /&gt;
 &lt;br /&gt;
This mode is designed for testing regexes for suitability for&lt;br /&gt;
validating strings in a schema document&lt;br /&gt;
(an XML document that constitutes an XML schema).&lt;br /&gt;
Although it is available in most of the SOUL regex $functions&lt;br /&gt;
and methods, it is intended primarily for matching and not for capturing&lt;br /&gt;
or replacing.&lt;br /&gt;
 &lt;br /&gt;
The SOUL regex rules described in [[#Regex rules|Regex rules]]&lt;br /&gt;
still apply in XML Schema mode, except:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In a regex, no characters are recognized as anchors, and&lt;br /&gt;
any regex is treated as if it is anchored at both ends.&lt;br /&gt;
The entire regex must match the entire target string (although&lt;br /&gt;
you can construct an unanchored match, as described in the&lt;br /&gt;
&amp;quot;Regular Expressions&amp;quot; appendix).&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
The regex &amp;lt;code&amp;gt;ABC&amp;lt;/code&amp;gt; in XML Schema mode is equivalent&lt;br /&gt;
to &amp;lt;code&amp;gt;&amp;amp;#x5E;(?:ABC)$&amp;lt;/code&amp;gt; in non-XML Schema mode, where&lt;br /&gt;
the &amp;lt;code&amp;gt;(?:&amp;lt;/code&amp;gt; indicates a &amp;quot;non-capturing&amp;quot; group.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
Related to this, or as a consequence of this implicit anchoring:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The usual anchoring-atoms, &amp;lt;code&amp;gt;&amp;amp;#x5E;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt;, are&lt;br /&gt;
treated as ordinary characters in a regex, and you may &#039;&#039;not&#039;&#039; escape them. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If the multi-line mode option (see [[#Common regex options|Common regex options]]) is specified along with XML Schema mode,&lt;br /&gt;
multi-line mode is ignored. &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;The two-character sequence &amp;lt;code&amp;gt;(?&amp;lt;/code&amp;gt; is not valid in a regex.&lt;br /&gt;
You can use a pair of parentheses for grouping, but capturing is not part of the&lt;br /&gt;
XML Schema regex specification, nor are non-capturing and look-aheads, whose indicators begin with a &amp;lt;code&amp;gt;(?&amp;lt;/code&amp;gt; sequence.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
If you specify the XML Schema mode option in a $function or method&lt;br /&gt;
that makes use of capturing (or replacing), however, any capturing groups&lt;br /&gt;
you use in the regex or replacement string(s) &#039;&#039;&#039;do&#039;&#039;&#039; perform&lt;br /&gt;
their usual operation.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A bracket character (&amp;lt;code&amp;gt;[&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;&lt;br /&gt;
requires a preceding escape character if it is:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A right bracket (&amp;lt;code&amp;gt;]&amp;lt;/code&amp;gt;) that is outside of, not part of,&lt;br /&gt;
a character class expression.&lt;br /&gt;
So, &amp;lt;code&amp;gt;(1\]9)&amp;lt;/code&amp;gt; matches &amp;lt;code&amp;gt;0001]9zzz&amp;lt;/code&amp;gt;, but &amp;lt;code&amp;gt;(1]9)&amp;lt;/code&amp;gt; is &#039;&#039;not&#039;&#039; allowed. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A right bracket that is the first character &amp;amp;mdash; or&lt;br /&gt;
the second, if the first is a caret (&amp;lt;code&amp;gt;&amp;amp;#x5E;&amp;lt;/code&amp;gt;) &amp;amp;mdash;&lt;br /&gt;
in a character class expression.&lt;br /&gt;
So, &amp;lt;code&amp;gt;[\]xxx]&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;[&amp;amp;#x5E;\]xxx]&amp;lt;/code&amp;gt; are allowed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A left bracket that occurs anywhere in a character class expression.&lt;br /&gt;
So, &amp;lt;code&amp;gt;[abc\[]&amp;lt;/code&amp;gt; is allowed.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
A left bracket that&lt;br /&gt;
occurs outside of a character class expression must always be escaped.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
These cases are compiler errors unless the cited bracket characters are escaped.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Character class subtraction&amp;lt;/b&amp;gt;&amp;lt;/i&amp;gt; is supported.&lt;br /&gt;
You can exclude a subset of characters from the characters&lt;br /&gt;
already designated to be in the class.&lt;br /&gt;
This is only allowed in XML Schema mode, and it is &#039;&#039;not&#039;&#039; allowed in Perl.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
This feature lets you specify a character class like the following,&lt;br /&gt;
which matches anything from A to Z except D, I, O, Q, U, or V: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[A-Z-[DIOQUV]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
You can also nest subtractions, as in:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[\w-[A-Z-[DIOQUV]]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
Characters immediately after the right bracket of a subtracted character&lt;br /&gt;
class are &#039;&#039;&#039;not&#039;&#039;&#039; allowed.&lt;br /&gt;
&amp;lt;code&amp;gt;[A-Z-[DIOQUV]abc]&amp;lt;/code&amp;gt; is an &#039;&#039;invalid&#039;&#039; character class. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
You can also subtract a negated character class:&lt;br /&gt;
&amp;lt;code&amp;gt;[A-Z-[&amp;amp;#x5E;DIOQUV]]&amp;lt;/code&amp;gt; is &#039;&#039;valid&#039;&#039;. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If the Dot-All mode or case-insensitive mode option (see [[#Common regex options|Common regex options]])&lt;br /&gt;
is specified along with XML Schema mode, Dot-All mode or case-insensitive mode works as usual. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SOUL programming considerations==&lt;br /&gt;
These are issues of note when writing regex requests:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SOUL regex processing can use considerable user stack (PDL) space and STBL space:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A program running with a relatively small (less than 3000) setting of the&lt;br /&gt;
&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;LPDLST&amp;lt;/var&amp;gt; parameter is subject to a user restart due to PDL overflow,&lt;br /&gt;
even with relatively simple regular expressions.&lt;br /&gt;
Regular expression compilation and evaluation can sometimes be recursive, with each level of&lt;br /&gt;
recursion using a certain amount of PDL space.&lt;br /&gt;
For certain complex regular expressions, a large amount of PDL space may be used.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
To reset &amp;lt;var&amp;gt;LPDLST&amp;lt;/var&amp;gt;, you can use, for example, &amp;lt;code&amp;gt;UTABLE LPDLST 3000&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;In general, there must be at least 8500 bytes available in STBL (some&lt;br /&gt;
routines use less).&lt;br /&gt;
Using &amp;lt;code&amp;gt;UTABLE LSTBL 9000&amp;lt;/code&amp;gt; is sufficient if the rest of the&lt;br /&gt;
User Language program requires almost no STBL space. &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;A question mark character (&amp;lt;code&amp;gt;?&amp;lt;/code&amp;gt;) is a reserved character, or metacharacter, in a regex expression.&lt;br /&gt;
As pointed out in a preceding subsection, the &amp;lt;code&amp;gt;??&amp;lt;/code&amp;gt; character&lt;br /&gt;
combination in a SOUL regex is ambiguous, meaning either a regex quantifier or a SOUL dummy string.&lt;br /&gt;
In that case, the dummy string interpretation prevails, and you must&lt;br /&gt;
use an expression like &amp;lt;code&amp;gt;&#039;?&#039; With &#039;?&#039;&amp;lt;/code&amp;gt; to code the regex quantifier.&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
Similarly, the SOUL dummy-string signifiers &amp;lt;code&amp;gt;?$&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;?&amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
take precedence if those character sequences occur in a regex.&lt;br /&gt;
To use &amp;lt;code&amp;gt;?$&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;?&amp;amp;&amp;lt;/code&amp;gt;&lt;br /&gt;
in a regex, you must use one or two escape characters,&lt;br /&gt;
respectively, after the question mark. &amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;A caret (&amp;lt;code&amp;gt;&amp;amp;#x5E;&amp;lt;/code&amp;gt;) is used in this documentation to represent&lt;br /&gt;
the character that the keyboard program translates to X&#039;5F&#039;; this may be&lt;br /&gt;
a not sign (&amp;lt;code&amp;gt;&amp;amp;#xAC;&amp;lt;/code&amp;gt;) on your system.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Regular expression processing]]&lt;br /&gt;
[[Category:Overviews]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMGPREF_parameter&amp;diff=120608</id>
		<title>IMGPREF parameter</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMGPREF_parameter&amp;diff=120608"/>
		<updated>2025-08-05T19:52:30Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;{{Template:IMGOPT parameter subtitle}} ==Summary== &amp;lt;dl&amp;gt; &amp;lt;dt&amp;gt;Default value &amp;lt;dd&amp;gt;1 &amp;lt;dt&amp;gt;Parameter type &amp;lt;dd&amp;gt;User &amp;lt;dt&amp;gt;Where set &amp;lt;dd&amp;gt;User resettable &amp;lt;dt&amp;gt;Related products &amp;lt;dd&amp;gt;Imagine Transparency &amp;lt;dt&amp;gt;Introduced &amp;lt;dd&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204 V8.0&amp;lt;/var&amp;gt;  &amp;lt;/dl&amp;gt;  ==Description== &amp;lt;p&amp;gt; This parameter affects processing of finds for &amp;lt;var&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; requests.  &amp;lt;/p&amp;gt; When a &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; request is sent to a &amp;lt;var&amp;gt;Transparency&amp;lt;/var&amp;gt; broker, the broker will respond...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:IMGOPT 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;1&lt;br /&gt;
&amp;lt;dt&amp;gt;Parameter type&lt;br /&gt;
&amp;lt;dd&amp;gt;User&lt;br /&gt;
&amp;lt;dt&amp;gt;Where set&lt;br /&gt;
&amp;lt;dd&amp;gt;User resettable&lt;br /&gt;
&amp;lt;dt&amp;gt;Related products&lt;br /&gt;
&amp;lt;dd&amp;gt;[[Imagine Transparency]]&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 V8.0&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;
This parameter affects processing of finds for &amp;lt;var&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; requests. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
When a &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; request is sent to a &amp;lt;var&amp;gt;Transparency&amp;lt;/var&amp;gt; broker, the broker will respond with a list zero or more records thaty satisfy the criteria. To process those records, a separate request might need to be sent to the broker to retrieve each record. But, usually, a &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; is immediately followed by a &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop on the matching records, so it can be useful for the broker to &amp;quot;prefetch&amp;quot; some number of records that satisfy the &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; criteria, reducing the latency and CPU overhead of processing the extra record retrieval request. The default value of 1 should be fine for most applications though, if many finds in an application match many records, and all records are usually scanned, one might improve performance with a larger &amp;lt;var&amp;gt;IMGPREF&amp;lt;/var&amp;gt;. The main downside of a large &amp;lt;var&amp;gt;IMGPREF&amp;lt;/var&amp;gt; might be that records that are never scanned (because of early exit from &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loops) might be sent from the broker to &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt;. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:User parameters]]&lt;br /&gt;
[[Category:Parameters]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMGOPT_parameter&amp;diff=120607</id>
		<title>IMGOPT parameter</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMGOPT_parameter&amp;diff=120607"/>
		<updated>2025-08-05T19:43:02Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;{{Template:IMGOPT parameter subtitle}} ==Summary== &amp;lt;dl&amp;gt; &amp;lt;dt&amp;gt;Default value &amp;lt;dd&amp;gt;X&amp;#039;00&amp;#039; &amp;lt;dt&amp;gt;Parameter type &amp;lt;dd&amp;gt;User &amp;lt;dt&amp;gt;Where set &amp;lt;dd&amp;gt;User resettable &amp;lt;dt&amp;gt;Related products &amp;lt;dd&amp;gt;Imagine Transparency &amp;lt;dt&amp;gt;Introduced &amp;lt;dd&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204 V8.0&amp;lt;/var&amp;gt;  &amp;lt;/dl&amp;gt;  ==Description== &amp;lt;p&amp;gt; This parameter affects processing for &amp;lt;var&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; requests.  &amp;lt;/p&amp;gt; &amp;lt;p&amp;gt; The bits have the following meanings:&amp;lt;/p&amp;gt; &amp;lt;table&amp;gt; &amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Settings&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Meaning&amp;lt;/th&amp;gt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:IMGOPT 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;X&#039;00&#039;&lt;br /&gt;
&amp;lt;dt&amp;gt;Parameter type&lt;br /&gt;
&amp;lt;dd&amp;gt;User&lt;br /&gt;
&amp;lt;dt&amp;gt;Where set&lt;br /&gt;
&amp;lt;dd&amp;gt;User resettable&lt;br /&gt;
&amp;lt;dt&amp;gt;Related products&lt;br /&gt;
&amp;lt;dd&amp;gt;[[Imagine Transparency]]&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 V8.0&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;
This parameter affects processing for &amp;lt;var&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; requests. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The bits have the following meanings:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&amp;lt;th&amp;gt;Settings&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Meaning&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;var&amp;gt;X&#039;01&#039;&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Push updates to the broker at the end of any &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop where there are pending updates. Normally, updates are deferred until there is a normal interaction with the broker such as for an &amp;lt;var&amp;gt;Find&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;Commit&amp;lt;/var&amp;gt;. While this is very efficient in that it reduces the number of interactions with the broker, it can make it difficult to diagnose problems applying &amp;lt;var&amp;gt;Transparency&amp;lt;/var&amp;gt; updates since any errors will occur well after the update, making it difficult to determine where a problematic update came from. By setting &amp;lt;code&amp;gt;IMGOPT X&#039;01&#039;&amp;lt;/code&amp;gt;, broker errors will be reflected to &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; very close to the location of the update. &lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th align=&amp;quot;right&amp;quot;&amp;gt;&amp;lt;var&amp;gt;X&#039;02&#039;&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Produce a stack trace for any messages resulting from [[IMGTRACE parameter|IMGTRACE]] settings. While &amp;lt;var&amp;gt;IMGTRACE&amp;lt;/var&amp;gt; can be useful in debugging problems when using &amp;lt;var&amp;gt;Transparency&amp;lt;/var&amp;gt;, one might get trace data but find it difficult to associate it with the source code that produced that data. Setting &amp;lt;code&amp;gt;IMGOPT X&#039;02&#039;&amp;lt;/code&amp;gt; makes it easy to identify the source of any &amp;lt;var&amp;gt;IMGTRACE&amp;lt;/var&amp;gt; data. &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;
[[Category:User parameters]]&lt;br /&gt;
[[Category:Parameters]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120598</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120598"/>
		<updated>2025-07-30T10:52:54Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax for IMAGINE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [ASYNC] [MAXERR e] [MAXPENDING m] [RECORDNUMBER r] [NOCOMMIT] [TICK t]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;EXTRACT&amp;lt;/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;ASYNC&amp;lt;/var&amp;gt; indicates that the actual extract is to be performed on a daemon. In this mode, the command returns immediately after some preliminary setup. The advantage of this mode is that it frees up the issuing thread for other commands. The disadvantage is that one must look elsewhere to determine when the request completed and whether or not it was successful.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXERR&amp;lt;/var&amp;gt; indicates the maximum number of record data errors allowed before the extract is aborted. One might wish to set this to a high value for an extract intended to scan a file for data integrity errors. Because records are sent asynchronously in batches, it&#039;s quite possible for the actual number of errors to exceed the &amp;lt;var&amp;gt;MAXERROR&amp;lt;/var&amp;gt; value. &amp;lt;var&amp;gt;MAXERROR&amp;lt;/var&amp;gt; defaults to 50.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximum number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so. This option makes no sense for a SYNC extract, so is only allowed with &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;RECORDNUMBER&amp;lt;/var&amp;gt; indicates the record number of the single record to be sent to Imagine. This might be useful for problem diagnosis or resending fixed up records that failed on an initial extract. This option makes no sense for a SYNC extract so is only allowed with &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;. Other options (except &amp;lt;var&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt;) are ignored if &amp;lt;var&amp;gt;RECORDNUMBER&amp;lt;/var&amp;gt; is specified.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  The IMAGINE command operates on the context file which is either the current file or one&lt;br /&gt;
  explicitly specified before the command as in:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IN FILE FOOBAR EXTRACT NOCOMMIT&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To put file FOO into sync mode, one can do:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;OPEN FILE FOO&lt;br /&gt;
IMAGINE SYNC TICK 200000&amp;lt;/p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; keyword indicates that a M204.3073 message should be issued every 200,000 &lt;br /&gt;
records. If one wishes to see these messages on the operator console, one can do:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MSGCTL M204.3073 OPR&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that the actual extraction of records is done on a daemon thread created by the &lt;br /&gt;
IMAGINE command so the thread that issued the IMAGINE command would return fairly&lt;br /&gt;
quickly. Also note that this means that there is no terminal for M204.3073 (or other)&lt;br /&gt;
messages issued during the extract to appear, so one needs to look in the journal&lt;br /&gt;
for errors, should they occur.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To obtain a consistent view of the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the IMAGINE command&lt;br /&gt;
  first quiesces the file; that is, ensures that no updating transactions that had&lt;br /&gt;
  updated the file are active. This will usually take less than a second, but a long&lt;br /&gt;
  running transaction that had updated the file could make this take quite a while.&lt;br /&gt;
  As such, it is recommended that the IMAGINE command be issued at a relatively quiet&lt;br /&gt;
  time in terms of file updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  Once the extraction process has begun, whether &amp;lt;var&amp;gt;SYNC&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EXTRACT&amp;lt;/var&amp;gt;,&lt;br /&gt;
  or &amp;lt;var&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt;, any other thread that wishes to update a record in the file&lt;br /&gt;
  being extracted, cannot update the record until it has been copied to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; and&lt;br /&gt;
  committed. If it has already been done at the time of the commit, no wait is required.&lt;br /&gt;
  However, if the record has not been copied to and committed to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; the&lt;br /&gt;
  thread would send a request to the extracting daemon to immediately send the record to&lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (if not already sent) and then to wake the updating thread when that&lt;br /&gt;
  record is committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. This can cause a slight delay in update&lt;br /&gt;
  processing so, again, the recommendation is for extracts to be done at relatively quiet&lt;br /&gt;
  times for a file.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  If a file is in SYNC mode, once a record has been sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, any updates&lt;br /&gt;
  to the file are sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (via a broker connection) and those updates &lt;br /&gt;
  must be committed for the transaction to succeed. That is, if some error occurs on &lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; for a SYNC update, the request would be cancelled and the transaction&lt;br /&gt;
  backed out. Note that this processing occurs even after the file has been fully extracted,&lt;br /&gt;
  and the extracting daemon is no longer active. This ensures that the SYNC&#039;ed file will&lt;br /&gt;
  remain consistent between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; making it feasible&lt;br /&gt;
  to switch the file to transparency mode with a minimal outage.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  For a plain EXTRACT (as opposed to SYNC), updates to records in the file after they have&lt;br /&gt;
  committed in &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, so the file can&lt;br /&gt;
  get out of synch between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. However, by not&lt;br /&gt;
  allowing any records to be updated in the file during the EXTRACT process until they&lt;br /&gt;
  have been committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; will be ensured&lt;br /&gt;
  to be  a consistent view of the file as of the point in the &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;&lt;br /&gt;
  command where updates to the file had been quiesced.&lt;br /&gt;
&amp;lt;/p&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;[[Imagine Transparency]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120593</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120593"/>
		<updated>2025-07-09T14:29:56Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax for IMAGINE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT] [TICK t] [MAXPENDING m] [MAXERR e] [ASYNC]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;EXTRACT&amp;lt;/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so. This option makes no sense for a SYNC extract so is only allowed with &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximum number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXERR&amp;lt;/var&amp;gt; indicates the maximum number of record data errors allowed before the extract is aborted. One might wish to set this to a high value for an extract intended to scan a file for data integrity errors. Because records are sent asynchronously in batches, it&#039;s quite possible for the actual number of errors to exceed the &amp;lt;var&amp;gt;MAXERROR&amp;lt;/var&amp;gt; value. &amp;lt;var&amp;gt;MAXERROR&amp;lt;/var&amp;gt; defaults to 50.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;ASYNC&amp;lt;/var&amp;gt; indicates that the actual extract is to be performed on a daemon. In this mode, the command returns immediately after some preliminary setup. The advantage of this mode is that it frees up the issuing thread for other commands. The disadvantage is that one must look elsewhere to determine when the request completed and whether or not it was successful.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  The IMAGINE command operates on the context file which is either the current file or one&lt;br /&gt;
  explicitly specified before the command as in:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IN FILE FOOBAR EXTRACT NOCOMMIT&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To put file FOO into sync mode, one can do:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;OPEN FILE FOO&lt;br /&gt;
IMAGINE SYNC TICK 200000&amp;lt;/p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; keyword indicates that a M204.3073 message should be issued every 200,000 &lt;br /&gt;
records. If one wishes to see these messages on the operator console, one can do:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MSGCTL M204.3073 OPR&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that the actual extraction of records is done on a daemon thread created by the &lt;br /&gt;
IMAGINE command so the thread that issued the IMAGINE command would return fairly&lt;br /&gt;
quickly. Also note that this means that there is no terminal for M204.3073 (or other)&lt;br /&gt;
messages issued during the extract to appear, so one needs to look in the journal&lt;br /&gt;
for errors, should they occur.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To obtain a consistent view of the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the IMAGINE command&lt;br /&gt;
  first quiesces the file; that is, ensures that no updating transactions that had&lt;br /&gt;
  updated the file are active. This will usually take less than a second, but a long&lt;br /&gt;
  running transaction that had updated the file could make this take quite a while.&lt;br /&gt;
  As such, it is recommended that the IMAGINE command be issued at a relatively quiet&lt;br /&gt;
  time in terms of file updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  Once the extraction process has begun, whether &amp;lt;var&amp;gt;SYNC&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EXTRACT&amp;lt;/var&amp;gt;,&lt;br /&gt;
  or &amp;lt;var&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt;, any other thread that wishes to update a record in the file&lt;br /&gt;
  being extracted, cannot update the record until it has been copied to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; and&lt;br /&gt;
  committed. If it has already been done at the time of the commit, no wait is required.&lt;br /&gt;
  However, if the record has not been copied to and committed to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; the&lt;br /&gt;
  thread would send a request to the extracting daemon to immediately send the record to&lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (if not already sent) and then to wake the updating thread when that&lt;br /&gt;
  record is committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. This can cause a slight delay in update&lt;br /&gt;
  processing so, again, the recommendation is for extracts to be done at relatively quiet&lt;br /&gt;
  times for a file.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  If a file is in SYNC mode, once a record has been sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, any updates&lt;br /&gt;
  to the file are sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (via a broker connection) and those updates &lt;br /&gt;
  must be committed for the transaction to succeed. That is, if some error occurs on &lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; for a SYNC update, the request would be cancelled and the transaction&lt;br /&gt;
  backed out. Note that this processing occurs even after the file has been fully extracted,&lt;br /&gt;
  and the extracting daemon is no longer active. This ensures that the SYNC&#039;ed file will&lt;br /&gt;
  remain consistent between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; making it feasible&lt;br /&gt;
  to switch the file to transparency mode with a minimal outage.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  For a plain EXTRACT (as opposed to SYNC), updates to records in the file after they have&lt;br /&gt;
  committed in &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, so the file can&lt;br /&gt;
  get out of synch between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. However, by not&lt;br /&gt;
  allowing any records to be updated in the file during the EXTRACT process until they&lt;br /&gt;
  have been committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; will be ensured&lt;br /&gt;
  to be  a consistent view of the file as of the point in the &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;&lt;br /&gt;
  command where updates to the file had been quiesced.&lt;br /&gt;
&amp;lt;/p&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;[[Imagine Transparency]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DEFINE&amp;diff=120592</id>
		<title>JANUS DEFINE</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=JANUS_DEFINE&amp;diff=120592"/>
		<updated>2025-06-23T02:08:33Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:JANUS DEFINE}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Define and set characteristics of a Janus port&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command is used to specify the characteristics of a Janus port. It defines the usage of the named port as one of the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Access by IFDIAL clients&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Open Server or Open Client connections&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Specialty Data Store access&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Web access&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;FTP server connections&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Telnet server connections&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Generic Sockets usage &amp;amp;mdash; with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; online either requesting (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|CLSOCK]]&amp;lt;/var&amp;gt;) or accepting (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|SRVSOCK]]&amp;lt;/var&amp;gt;) the connection&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Generic [http://en.wikipedia.org/wiki/User_Datagram_Protocol UDP] Sockets usage &amp;amp;mdash; with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; online either initiating (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|CLSOCKU]]&amp;lt;/var&amp;gt;) or accepting (&amp;lt;var&amp;gt;[[JANUS DEFINE#type|SRVSOCKU]]&amp;lt;/var&amp;gt;) the exchange of messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Connection between the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|Janus Debugger]]&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|TN3270 Debugger]]&amp;lt;/var&amp;gt; workstation GUI and programs being debugged in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For any except a &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;[[#type|DEBUGGERCLIENT]]&amp;lt;/var&amp;gt; port, this subcommand associates a service with a TCP/IP port number. &lt;br /&gt;
&lt;br /&gt;
Among the characteristics specified by &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; is whether the port will use Secure Sockets Layer (SSL) for encrypted communications. &lt;br /&gt;
&lt;br /&gt;
See [[Defining server ports]] for connectivity background information and information about when you need to issue the &amp;lt;var&amp;gt;[[JANUS DEFINEREMOTE]]&amp;lt;/var&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command syntax is described below.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;literal&amp;quot;&amp;gt;JANUS DEFINE&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;portname portnum type maxcon other_parms&amp;lt;/span&amp;gt; ...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where each of the first four parameters is positional and required:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;portname&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A 1- to 30-character name by which the port is identified. It is used on other &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; subcommands, such as &amp;lt;var&amp;gt;[[JANUS START]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[JANUS DISPLAY]]&amp;lt;/var&amp;gt;. It is used on the &amp;lt;var&amp;gt;$Sock_Conn&amp;lt;/var&amp;gt; function or the Socket object &amp;lt;var&amp;gt;[[New (Socket constructor)|New]]&amp;lt;/var&amp;gt; constructor to name the &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; port defining a connection.&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;portnum&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The TCP/IP port number at which the service is available.  &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;portnum&amp;lt;/var&amp;gt; is the server port number, and it must be between 1 and 65535, inclusive. This number is used by client applications on the network when they require access to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; server. The server port number must be unique on the host. Several &amp;quot;well-known&amp;quot; port numbers for various TCP/IP services (for example, 53 for nameserver) should be avoided, unless you are implementing that service using &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Sockets]]&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
For &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;DEBUGGERCLIENT&amp;lt;/var&amp;gt; ports, an asterisk (*) is used as the port number, since they are used to create, rather than accept, connections, and these port numbers are not determined until the time of the connection. For &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; ports, 80 is customary for non-secure HTTP and 443 for secure HTTP (SSL); you can, however, use other numbers for &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; ports if required. &lt;br /&gt;
&lt;br /&gt;
For &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt; ports, 21 is customary; you can, however, use other numbers for &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt; ports if required.&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;type&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;div id=&amp;quot;type&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;Port type. Valid types are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;2PC&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Two-Phase Commit]]&amp;lt;/var&amp;gt; port.&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;CLSOCK&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; client socket port. If non-system administrator users are to use a &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; port, rules must be provided to allow them to initiate outgoing connections on the port.&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;CLSOCKU&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; UDP client port. If non-system administrator users are to use a &amp;lt;var&amp;gt;CLSOCKU&amp;lt;/var&amp;gt; port, rules must be provided to allow them to initiate outgoing connections on the port. A &amp;lt;var&amp;gt;CLSOCKU&amp;lt;/var&amp;gt;&lt;br /&gt;
port can also be used to implement a UDP server on a single &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; thread. Only available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; Version 8.0 and later.&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;DEBUGGERCLIENT&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Debugger&amp;lt;/var&amp;gt; client socket port.&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;DEBUGGERSERVER&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Debugger&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;TN3270 Debugger&amp;lt;/var&amp;gt; server socket port.&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;FTPSERVER&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus FTP Server]]&amp;lt;/var&amp;gt; application.&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;IFDIAL&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus IFDIAL Library]]&amp;lt;/var&amp;gt; applications.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr id=&amp;quot;IMAGINET&amp;quot;&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;IMAGINET&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;An &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Imagine Transparency]]&amp;lt;/var&amp;gt; port. This port type is only available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; Version 8.0 and later. There can only be one started IMAGINET port in an Online.&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;OAS&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Synonym for type &amp;lt;var&amp;gt;SDS&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;&amp;lt;var&amp;gt;OMNI&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Synonym for type &amp;lt;var&amp;gt;SDS&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;&amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Media:josrvr.pdf|Janus Open Server]]&amp;lt;/var&amp;gt; applications; &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Media:JoclrNew.pdf|Janus Open Client]]&amp;lt;/var&amp;gt; connections are outward-bound connections on an &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt; port.&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;SRVSOCK&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; server socket port.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;SRVSOCKU&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; UDP server port. Only available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; Version 8.0 and later.&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;SDS&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Media:jsdsr.pdf|Janus Specialty Data Store]]&amp;lt;/var&amp;gt; port.&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;TNSERV&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Telnet Server]]&amp;lt;/var&amp;gt; port.&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;WEBSERV&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A World Wide Web Server port.&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;
For &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Open Client&amp;lt;/var&amp;gt; usage, you must define one or more ports of type &amp;lt;var&amp;gt;SDS&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt;, and you may need to use the &amp;lt;var&amp;gt;MASTER&amp;lt;/var&amp;gt; parameter on a port definition.  For &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; server ports, specify &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt;; for &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; client ports, specify &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt;; for &amp;lt;var&amp;gt;JANUS FTP&amp;lt;/var&amp;gt; server ports, specify &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt;; for &amp;lt;var&amp;gt;JANUS&amp;lt;/var&amp;gt; telnet server ports, specify &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TNSERV&amp;lt;/var&amp;gt; ports require that the system &amp;lt;var&amp;gt;TNDEV&amp;lt;/var&amp;gt; parameter be set to indicate the &amp;lt;var&amp;gt;IODEV&amp;lt;/var&amp;gt; that daemon threads switch to while in full-screen mode for a telnet connection.&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;maxcon&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Maximum number of simultaneous active connections to be allowed on the port. This number must be less than or equal to the number of TCP/IP connections for which the site is licensed. If you are defining multiple ports for your site, however, the sum of the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;maxcon&amp;lt;/var&amp;gt; connections you define is allowed to be greater than the number for which the site is licensed. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Server]]&amp;lt;/var&amp;gt; will automatically prevent any connection that would exceed the site license limit. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Open Client&amp;lt;/var&amp;gt;, note that a server-to-server connection requires an extra connection for the &#039;&#039;&#039;site handler.&#039;&#039;&#039; Thus, a single connection to a remote server would use two connections, while 10 connections to a remote server would use 11. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use the &amp;lt;var&amp;gt;[[JANUS TSTATUS]]&amp;lt;/var&amp;gt; command to view the thread usage and connection limits for your port, and you can use the &amp;lt;var&amp;gt;[[JANUS LIMITS]]&amp;lt;/var&amp;gt; command to view similar information for your Online.&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;other_parms&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A set of blank-delimited parameters that describe the characteristics of and processing to be performed on the port. These parameters are keywords, sometimes followed by values, and they are described individually in the subsections that follow. They are all optional, except:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;OPENSERV&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; is required. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;DEBUGGERCLIENT&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;REMOTE&amp;lt;/var&amp;gt; is required. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;SRVSOCKU&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; is required. &amp;lt;/li&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;li&amp;gt;For &amp;lt;var&amp;gt;FTPSERVER&amp;lt;/var&amp;gt; ports, &amp;lt;var&amp;gt;[[OPEN (JANUS DEFINE parameter)|OPEN]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[CMD (JANUS DEFINE parameter)|CMD]]&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;[[NEWSESOPEN (JANUS DEFINE parameter)|NEWSESOPEN]]&amp;lt;/var&amp;gt;, and &amp;lt;var&amp;gt;[[NEWSESCMD (JANUS DEFINE parameter)|NEWSESCMD]]&amp;lt;/var&amp;gt; are not allowed. &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;
==Examples==&lt;br /&gt;
&lt;br /&gt;
The parameters you might use on a port definition vary by port type (that is, communication protocol), the security requirements of your shop and application, performance considerations and the applications that will run inside the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; Online as a client or a service on this port.&lt;br /&gt;
&lt;br /&gt;
There is no such thing as a &amp;quot;typical&amp;quot; port &amp;amp;mdash; each one is customized to the service or services running over the port.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DEFINE JANWEB 80 WEBSERV 50 WEBUSER WEBUSER TRACE 0 UPCASE -&lt;br /&gt;
       OBSIZE 10240 IBSIZE 10240 RBSIZE 10240 TIMEOUT 600        -&lt;br /&gt;
       OPEN FILE JANWEB MAXTEMP 14000 BINDADDR 198.242.244.47    -&lt;br /&gt;
       LOG REQ WEBLOGJW LOGCLOSET 57 NOAUDTERM COMPRESS 2 KEEPALIVE 30&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example, a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; port is defined, named &amp;lt;var&amp;gt;JANWEB&amp;lt;/var&amp;gt;.  It runs at port 80 (the default web port) and allows 50 simultaneous connections.  Buffer sizes are increases over the default settings and a variety of logging, compressions and other settings are specified.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;JANUS DEFINE SOAP * CLSOCK 5 TIMEOUT 240 REMOTE * * MASTER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above example, a client socket &amp;quot;master&amp;quot; port called &amp;lt;code&amp;gt;SOAP&amp;lt;/code&amp;gt; is defined, permitting 5 simultaneous outgoing connections to any &#039;&#039;remote&#039;&#039; hosts.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;parmlist&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==JANUS DEFINE parameters==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[ALLOCC (JANUS DEFINE parameter)|ALLOCC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that input, output and request buffers are to be allocated when a connection is established and are to be freed when the connection is closed.&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;[[ANONYMOUS (JANUS DEFINE parameter)|ANONYMOUS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that anonymous access is permitted to the FTP server being defined.&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;[[ANONUSER (JANUS DEFINE parameter)|ANONUSER]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lets you change the name of the anonymous user,  &amp;lt;var&amp;gt;ANONUSER&amp;lt;/var&amp;gt; may be specified only if &amp;lt;var&amp;gt;ANONYMOUS&amp;lt;/var&amp;gt; is also specified.&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;[[AUDTERM (JANUS DEFINE parameter)|AUDTERM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Controls whether the server thread sends &amp;quot;non-compiler terminal output&amp;quot; to the audit trail.&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;[[AUTODONE (JANUS DEFINE parameter)|AUTODONE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Server]]&amp;lt;/var&amp;gt; to treat a return to command mode after all port and ON rules &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt;s have been processed as an implicit &amp;lt;var&amp;gt;[[$Web_Done]]&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;td&amp;gt;[[AUTOLOAD (JANUS DEFINE parameter)|AUTOLOAD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that the incore copy of Janus tables are to be reloaded at the first request subsequent to a table redefinition.&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;[[AUTOON (JANUS DEFINE parameter)|AUTOON]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt; Janus Web Server&amp;lt;/var&amp;gt; to issue an implicit &amp;lt;var&amp;gt;[[$Web_On]]&amp;lt;/var&amp;gt; before executing the commands specified in a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;JANUS WEB ON&amp;lt;/var&amp;gt; rule.&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;[[AUTOSYS (JANUS DEFINE parameter)|AUTOSYS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets the Model 204 &amp;lt;var&amp;gt;AUTOSYS&amp;lt;/var&amp;gt; parameter to the indicated (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;subsys&amp;lt;/var&amp;gt;) value when a connection is received on a &amp;lt;var&amp;gt;[[JANUS DEFINE#type|TNSERV]]&amp;lt;/var&amp;gt; port.&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;[[BINARY (JANUS DEFINE parameter)|BINARY]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Sockets]]&amp;lt;/var&amp;gt; to send and receive strings with [[List of Janus Sockets $functions|$Sock_xxx]] functions or Socket methods using no translation.&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;[[BINDADDR (JANUS DEFINE parameter)|BINDADDR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the IP address to which the port will be bound, if the host (machine) on which &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; is running supports multiple IP addresses.&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;[[BSIZE (JANUS DEFINE parameter)|BSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the TCP/IP input and output buffers.&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;[[CHAR (JANUS DEFINE parameter)|CHAR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Requests &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Sockets]]&amp;lt;/var&amp;gt; to translate strings (sent and received with &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; functions or methods) between the internal representation within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; (EBCDIC) and the character representation used by the remote end of the&lt;br /&gt;
connection.&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;[[CHARSET (JANUS DEFINE parameter)|CHARSET]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates, to the remote host, the character set being used by Janus.&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;[[CLIENTSOCKET (JANUS DEFINE parameter)|CLIENTSOCKET]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Names the client socket port to use to open connections back to the FTP client, if the client requests active file transfers.&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;[[CLOSEIMMED (JANUS DEFINE parameter)|CLOSEIMMED]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that if a lost connection is noticed by the Janus PST, the PST should &amp;lt;var&amp;gt;BUMP&amp;lt;/var&amp;gt; the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; thread associated with the connection immediately.&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;[[CLOSEREAD (JANUS DEFINE parameter)|CLOSEREAD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that web threads should &amp;quot;put up&amp;quot; a TCP/IP read after receiving the entire request but before processing it.&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;[[CMD (JANUS DEFINE parameter)|CMD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; commands to be executed after the files and groups specified in the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; parameter are opened.&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;[[COMPRESS (JANUS DEFINE parameter)|COMPRESS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the type of compression to be performed on outgoing &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; data.&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;[[CR (JANUS DEFINE parameter)|CR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that lines of text data sent to a browser should be separated by the ASCII carriage return character (X&#039;0D&#039;).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[CRLF (JANUS DEFINE parameter)|CRLF]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that lines of text data sent to a browser should be separated by the ASCII carriage return and line feed characters (X&#039;0D0A&#039;).&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;[[CSSINSP (JANUS DEFINE parameter)|CSSINSP]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; is to insert a space to represent the attribute byte on a 3270 screen.&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;[[CSSTITLEDIV and CSSTITLESPAN (JANUS DEFINE parameters)|CSSTITLEDIV and CSSTITLESPAN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; support is to use a &amp;lt;code&amp;gt;&amp;amp;lt;div&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;var&amp;gt;CSSTITLEDIV&amp;lt;/var&amp;gt;) or &amp;lt;code&amp;gt;&amp;amp;lt;span&amp;gt;&amp;lt;/code&amp;gt; (&amp;lt;var&amp;gt;CSSTITLESPAN&amp;lt;/var&amp;gt;) tag for the title line of a screen.&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;[[DBCS and NODBCS (JANUS DEFINE parameters)|DBCS and NODBCS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;DBCS&amp;lt;/var&amp;gt; parameter is to be automatically set to 1 on requests to a &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; port.&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;[[DEBPORTCMD and NODEBPORTCMD (JANUS DEFINE parameters)|DEBPORTCMD and NODEBPORTCMD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether the commands specified in the &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt; clause of the &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command are to be run on threads debugging requests to the port with the &amp;lt;var&amp;gt;[[JANUSDEBUG]]&amp;lt;/var&amp;gt; command.&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;[[DEBPORTOPEN and NODEBPORTOPEN (JANUS DEFINE parameters)|DEBPORTOPEN and NODEBPORTOPEN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether the files and groups specified in the &amp;lt;var&amp;gt;OPEN&amp;lt;/var&amp;gt; clause of the &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt; command are to be opened on threads debugging requests.&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;[[EXEC2RPC (JANUS DEFINE parameter)|EXEC2RPC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that language requests should be converted to RPCs.&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;[[FINCLOSE and NOFINCLOSE (JANUS DEFINE parameters)|FINCLOSE and NOFINCLOSE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Affect how &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; applications respond to a closed connection.&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;[[FDWOL (JANUS DEFINE parameter)|FDWOL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies that all &amp;lt;var&amp;gt;FIND&amp;lt;/var&amp;gt;s done by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; are to be done as &amp;lt;var&amp;gt;Find Without Locks&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;td&amp;gt;[[FORMPOSTWAIT (JANUS DEFINE parameter)|FORMPOSTWAIT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The default number of seconds to wait for the POST&#039;ing of a form while using &amp;lt;var&amp;gt;[[$Web_Form_Done]]&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;td&amp;gt;[[FORMREDIRWAIT (JANUS DEFINE parameter)|FORMREDIRWAIT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The default number of seconds to wait for the client on a &amp;lt;var&amp;gt;WEBSERV&amp;lt;/var&amp;gt; port (presumably a browser) to do the GET associated with a redirect generated by a &amp;lt;var&amp;gt;$Web_Form_Done&amp;lt;/var&amp;gt; call.&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;[[HIGHPRIORITY (JANUS DEFINE parameter)|HIGHPRIORITY]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Adjusts the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; scheduling priority of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; threads by starting them at the upper end of their priority range rather than at their default priority.&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;[[HTTPVERSION (JANUS DEFINE parameter)|HTTPVERSION]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sets the HTTP version returned to the browser by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&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;td&amp;gt;[[IBSIZE (JANUS DEFINE parameter)|IBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the TCP/IP input buffer.&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;[[INPUTTIMEOUT (JANUS DEFINE parameter)|INPUTTIMEOUT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to use a different timeout value for input (receiving the web request) than for output.&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;[[JANCAT (JANUS DEFINE parameter)|JANCAT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the name of the file that contains the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; to SQL mappings.&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;[[KEEPALIVE (JANUS DEFINE parameter)|KEEPALIVE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the number of seconds a TCP/IP connection is to be held open after an HTTP request on that connection.&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;[[LANGUAGE (JANUS DEFINE parameter)|LANGUAGE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates, to the remote host, the language being used by Janus.&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;[[LEGBL, LEGREV, LEGUS, NOLEGBL, NOLEGREV, and NOLEGUS (JANUS DEFINE parameters)|LEGBL, LEGREV, LEGUS, NOLEGBL, NOLEGREV, and NOLEGUS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sets &#039;&#039;blink&#039;&#039;, &#039;&#039;underscore&#039;&#039; and &#039;&#039;reverse&#039;&#039; characteristics for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; screens.&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;[[LEGCSS and NOLEGCSS (JANUS DEFINE parameters)|LEGCSS and NOLEGCSS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; is to use Cascading Style Sheets.&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;[[LEGJS and NOLEGJS (JANUS DEFINE parameters)|LEGJS and NOLEGJS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; is to use JavaScript.&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;[[LF (JANUS DEFINE parameter)|LF]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that lines of text data sent to a browser should be separated by the ASCII line feed character (X&#039;0A&#039;).&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;[[LINEND (JANUS DEFINE parameter)|LINEND]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the hex value of a string to be sent by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; at the end of each &amp;quot;line;&amp;quot; that is, appended to the string sent by the &amp;lt;var&amp;gt;[[$Sock_SendLn]]&amp;lt;/var&amp;gt; function or &amp;lt;var&amp;gt;Socket&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;[[SendWithLineEnd (Socket function)|SendWithLineEnd]]&amp;lt;/var&amp;gt; function or after each output line&lt;br /&gt;
captured on the socket.&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;[[LOG (JANUS DEFINE parameter)|LOG]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies that all &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; requests for the port are to be logged to a sequential data set whose DDNAME is specified (as indicated in this parameter&#039;s syntax).&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var&amp;gt;LOG&amp;lt;/var&amp;gt; data set records conform to the industry standard for web logging.&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;[[LOGAPPEND (JANUS DEFINE parameter)|LOGAPPEND]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log data set for the port is to be opened in APPEND mode.&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;[[LOGCLOSET (JANUS DEFINE parameter)|LOGCLOSET]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates how often the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log data set is to be &amp;quot;closed&amp;quot;, that is how often the DSCB is to be updated for the log dataset.&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;[[LOGGMT (JANUS DEFINE parameter)|LOGGMT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that the time stamps in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log data set for the port are to be represented as GMT instead of local time.&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;[[LOGMSGI (JANUS DEFINE parameter)|LOGMSGI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from saving &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; messages issued during logon for a web user.&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;[[MASTER (JANUS DEFINE parameter)|MASTER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies that this is the default port for &#039;&#039;outgoing&#039;&#039; client communication.&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;[[MAXCURS (JANUS DEFINE parameter)|MAXCURS]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of cursors that can be opened for a single &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; connection.&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;[[MAXIPSES (JANUS DEFINE parameter)|MAXIPSES]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the maximum number of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; sessions maintained per IP address.&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;[[MAXREC (JANUS DEFINE parameter)|MAXREC]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum record length for input records on a Janus &amp;lt;var&amp;gt;IFDIAL&amp;lt;/var&amp;gt; port.&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;[[MAXSAVE (JANUS DEFINE parameter)|MAXSAVE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of compiled SQL requests to save in CCATEMP.&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;[[MAXTEMP (JANUS DEFINE parameter)|MAXTEMP]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of CCATEMP pages allowed to be used by a web request for holding input (file upload) and output (dynamically generated HTML) data.&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;[[MSGOPT (JANUS DEFINE parameter)|MSGOPT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies what types of information to report in &amp;lt;code&amp;gt;MSIR.&amp;lt;/code&amp;gt; messages regarding Janus Web (only) requests.&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;[[MSGSEND and NOMSGSEND (JANUS DEFINE parameters)|MSGSEND and NOMSGSEND]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; messages (as opposed to the output from &amp;lt;var&amp;gt;PRINT&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;HTML&amp;lt;/var&amp;gt; statements) are to be sent to the browser.&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;[[MSG204 (JANUS DEFINE parameter)|MSG204]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the Sybase message number to be used to return terminal output to the client.&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;[[MSG204L (JANUS DEFINE parameter)|MSG204L]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the Sybase message number to be used to return terminal output to the client.&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;[[NEWPASSWORDC (JANUS DEFINE parameter)|NEWPASSWORDC]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This parameter prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from immediately sending an &amp;quot;Unauthorized&amp;quot; response to a browser after a password change.&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;[[NEWSESCMD (JANUS DEFINE parameter)|NEWSESCMD]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; commands to be executed when a new login session is initiated.&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;[[NEWSESGUESTOK (JANUS DEFINE parameter)|NEWSESGUESTOK]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that &amp;quot;guest&amp;quot; logins are to be allowed for &amp;lt;var&amp;gt;[[$Sir_Login]]&amp;lt;/var&amp;gt; calls in programs run as part of &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; processing.&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;[[NEWSESNOCLEARG (JANUS DEFINE parameter)|NEWSESNOCLEARG]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that GTBL is not to be cleared at the end of &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; command processing.&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;[[NEWSESOPEN (JANUS DEFINE parameter)|NEWSESOPEN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the names of one or more &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; files or groups to be opened before any &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; commands are executed.&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;[[NOAUDTERM (JANUS DEFINE parameter)|NOAUDTERM]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This parameter is used to control whether the server thread sends &amp;quot;non-compiler terminal output&amp;quot; to the audit trail.&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;[[NOAUTODONE (JANUS DEFINE parameter)|NOAUTODONE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from treating a return to command mode after all port and &amp;lt;var&amp;gt;ON&amp;lt;/var&amp;gt; rules &amp;lt;var&amp;gt;CMD&amp;lt;/var&amp;gt;s have been processed as an implicit &amp;lt;var&amp;gt;$Web_Done&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;td&amp;gt;[[NOAUTOON (JANUS DEFINE parameter)|NOAUTOON]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Prevents &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; from preceding the execution of the command specified in a &amp;lt;var&amp;gt;JANUS WEB ON&amp;lt;/var&amp;gt; rule with an implicit &amp;lt;var&amp;gt;$Web_On&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;td&amp;gt;[[NOSCREENREDIR (JANUS DEFINE parameter)|NOSCREENREDIR]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; legacy support (automatic mapping of 3270 applications to HTML) is not to use the redirect&#039;s to map all screens for a legacy session to the same URL.&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;[[NOTRACEFIELD (JANUS DEFINE parameter)|NOTRACEFIELD]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the form field or fields whose values are not to be traced when the X&#039;04&#039; bit (causes tracing of form field values for web requests) of &amp;lt;var&amp;gt;JANUS TRACE&amp;lt;/var&amp;gt; is in effect.&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;[[NOUPCASE (JANUS DEFINE parameter)|NOUPCASE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that no client data is to be converted to uppercase.&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;[[OBSIZE (JANUS DEFINE parameter)|OBSIZE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the size of the TCP/IP output buffer.&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;[[OMNIACCT (JANUS DEFINE parameter)|OMNIACCT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;ACCOUNT&amp;lt;/var&amp;gt; for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog [[Sdaemons|sdaemon]] for the port.&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;[[OMNIUSER (JANUS DEFINE parameter)|OMNIUSER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; user ID for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog sdaemon for the port.&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;[[OPEN (JANUS DEFINE parameter)|OPEN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the name of one or more &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; files or groups to be opened when a server session is initiated.&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;[[PASVPORT (JANUS DEFINE parameter)|PASVPORT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Identifies the first &amp;lt;var&amp;gt;FTP&amp;lt;/var&amp;gt; server port number to use for &amp;quot;passive&amp;quot; file transfers.&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;[[PRELOGINUSER (JANUS DEFINE parameter)|PRELOGINUSER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the userid under which pre-login processing runs.&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;[[PRSTOK (JANUS DEFINE parameter)|PRSTOK]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the hex values of strings that are used to separate input strings using the &amp;lt;var&amp;gt;[[$Sock_RecvPrs]]&amp;lt;/var&amp;gt; function or &amp;lt;var&amp;gt;Socket&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;[[ReceiveAndParse (Socket function)|ReceiveAndParse]]&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;td&amp;gt;[[PUBLOG (JANUS DEFINE parameter)|PUBLOG]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that a &amp;quot;real&amp;quot; login should be done for the &amp;lt;var&amp;gt;SOCKUSER&amp;lt;/var&amp;gt; userid for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; logons.&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;[[RAWHEADER (JANUS DEFINE parameter)|RAWHEADER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to save the raw web request header stream.&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;[[RAWINPUT (JANUS DEFINE parameter)|RAWINPUT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to save the raw input stream for an HTTP POST, regardless of the mime type set by the client in the &amp;lt;code&amp;gt;content-type&amp;lt;/code&amp;gt; header.&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;[[RAWINPUTONLY (JANUS DEFINE parameter)|RAWINPUTONLY]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;indicates that, regardless of the POST data content-type set by the client, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; should: 1) Save the raw input stream of an HTTP POST and 2) Refrain from parsing the input content into form fields.&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;[[RBSIZE (JANUS DEFINE parameter)|RBSIZE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the Janus RPC or Request buffer size.&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;[[REMOTE (JANUS DEFINE parameter)|REMOTE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Identifies the remote server and the remote port number to be used with a set of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;CLSOCK&amp;lt;/var&amp;gt; connections.&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;[[RPCONLY (JANUS DEFINE parameter)|RPCONLY]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that only RPC requests are allowed on the port.&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;[[SCREEN and NOSCREEN (JANUS DEFINE parameters)|SCREEN and NOSCREEN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; screens will be allowed to appear on requests to the port.&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;[[SCREENTHROW and NOSCREENTHROW (JANUS DEFINE parameters)|SCREENTHROW and NOSCREENTHROW]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates whether or not &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; client errors will cause an exception to be thrown.&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;[[SCREENURL (JANUS DEFINE parameter)|SCREENURL]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; legacy support (automatic mapping of 3270&lt;br /&gt;
applications to HTML) is to switch web applications that present a 3270 screen to a special internally generated URL.&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;[[SDSACCT (JANUS DEFINE parameter)|SDSACCT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;ACCOUNT&amp;lt;/var&amp;gt; for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog sdaemon for the port.&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;[[SDSUSER (JANUS DEFINE parameter)|SDSUSER]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;specifies the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; &amp;lt;var&amp;gt;USER&amp;lt;/var&amp;gt; for the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Specialty Data Store&amp;lt;/var&amp;gt; catalog sdaemon for the port.&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;[[SESCOOKIE (JANUS DEFINE parameter)|SESCOOKIE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the name of a cookie that will be used to maintain logical sessions that will be used to perform trusted logins.&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;[[SESCOOKIENOSEC (JANUS DEFINE parameter)|SESCOOKIENOSEC]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates that the cookie specified by &amp;lt;var&amp;gt;SESCOOKIE&amp;lt;/var&amp;gt; will &#039;&#039;&#039;not&#039;&#039;&#039; be sent to the browser as a &amp;quot;secure&amp;quot; cookie.&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;[[SESFASTLOGIN (JANUS DEFINE parameter)|SESFASTLOGIN]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Reduces the login security overhead for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; threads by causing a login performed for a continued session to be a &amp;quot;fast&amp;quot; login.&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;[[SESTIMEOUT (JANUS DEFINE parameter)|SESTIMEOUT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Indicates the number of minutes of inactivity that will cause a logical login session being held either via &amp;lt;var&amp;gt;SESCOOKIE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;SSLSES&amp;lt;/var&amp;gt; to be terminated.&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;[[SLOWCLOSE (JANUS DEFINE parameter)|SLOWCLOSE]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies a bitmask that indicates the conditions under which &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; is to perform a &amp;quot;slow&amp;quot; close of a connection with a browser.&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;[[SOCKACCT (JANUS DEFINE parameter)|SOCKACCT]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; account ID used for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; logons.&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;[[SOCKPMAX (JANUS DEFINE parameter)|SOCKPMAX]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Specifies the maximum number of sockets a user may have connected at any time using the particular &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Sockets&amp;lt;/var&amp;gt; client port.&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;[[SOCKUSER (JANUS DEFINE parameter)|SOCKUSER]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; user ID used for &amp;lt;var&amp;gt;SRVSOCK&amp;lt;/var&amp;gt; logons.&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;[[SQUAREB (JANUS DEFINE parameter)|SQUAREB]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Overrides the default EBCDIC characters for square brackets in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; log file.&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;[[SSL (JANUS DEFINE parameter)|SSL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that communications on this port should be encrypted using SSL (Secure Sockets Layer) or TLS (Transport Layer Security) support.&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;[[SSLBSIZE (JANUS DEFINE parameter)|SSLBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the input and output buffers used for reading encrypted data for an &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; port.&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;[[SSLCACHE (JANUS DEFINE parameter)|SSLCACHE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the number of entries in virtual storage to be allocated for caching information related to this port&#039;s SSL sessions.&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;[[SSLCIPH (JANUS DEFINE parameter)|SSLCIPH]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Limit the stream ciphers (encryption algorithms) that this port offers for SSL connections.&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;[[SSLCLCERT and SSLCLCERTR (JANUS DEFINE parameters)|SSLCLCERT and SSLCLCERTR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specify that an &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; server port will request an SSL certificate from the client.&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;[[SSLIBSIZE (JANUS DEFINE parameter)|SSLIBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the SSL input buffer to be used on &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; ports.&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;[[SSLMAXAGE (JANUS DEFINE parameter)|SSLMAXAGE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the maximum number of minutes that an SSL session is to be maintained.&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;[[SSLMAXCERTL (JANUS DEFINE parameter)|SSLMAXCERTL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the number of bytes of virtual storage to be allocated to hold incoming certificates presented for authentication.&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;[[SSLOBSIZE (JANUS DEFINE parameter)|SSLOBSIZE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the size of the SSL output buffer to be used on &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; ports.&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;[[SSLOPT (JANUS DEFINE parameter)|SSLOPT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies that the use of SSL-like encryption is optional for applications using the port.&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;[[SSLPROT (JANUS DEFINE parameter)|SSLPROT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specify the degree of SSL-like encryption available at this port.&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;[[SSLSES (JANUS DEFINE parameter)|SSLSES]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Reduces the overhead of &amp;lt;var&amp;gt;NEWSESCMD&amp;lt;/var&amp;gt; processing by limiting it to logical session establishment time.&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;[[SSLTRUST (JANUS DEFINE parameter)|SSLTRUST]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that the certificate presented by the other side of a TLS/SSL connection is to be trusted, even if it is not signed by a known certifying authority. This parameter is only available in Model 204 7.7 and later.&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;[[SSLUNENC (JANUS DEFINE parameter)|SSLUNENC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that an unencrypted private key is being used in the certificate specified by the &amp;lt;var&amp;gt;SSL&amp;lt;/var&amp;gt; parameter on this Janus server port definition.&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;[[STIMEOUT (JANUS DEFINE parameter)|STIMEOUT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets the number of seconds of inactivity after which a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy&amp;lt;/var&amp;gt; session is terminated.&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;[[TCPLOG (JANUS DEFINE parameter)|TCPLOG]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Tells &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; to log in a sequential dataset all inbound and outbound TCP data transmitted for this port.&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;[[TCPKEEPALIVE (JANUS DEFINE parameter)|TCPKEEPALIVE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies that connections on the port should use TCP keepalives.&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;[[TCPKEEPALIVETIME (JANUS DEFINE parameter)|TCPKEEPALIVETIME]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the time interval, in seconds, that TCP keepalive probes are to be sent.&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;[[TIMEOUT (JANUS DEFINE parameter)|TIMEOUT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the number of seconds of inactivity after which clients connected to this port will be disconnected.&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;[[TIMEZONE (JANUS DEFINE parameter)|TIMEZONE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A string indicating the [https://www.iana.org/time-zones IANA time zone] under which the Online is running. This parameter is only valid for &amp;lt;var&amp;gt;IMAGINET&amp;lt;/var&amp;gt; ports.&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;[[TRACE (JANUS DEFINE parameter)|TRACE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the initial &amp;lt;var&amp;gt;TRACE&amp;lt;/var&amp;gt; setting for the port.&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;[[UPCASE (JANUS DEFINE parameter)|UPCASE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that all client &amp;quot;names&amp;quot; are to be converted to uppercase.&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;[[VARIPADDR (JANUS DEFINE parameter)|VARIPADDR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that a single browser might access &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; using different IP addresses.&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;[[WEBACCT (JANUS DEFINE parameter)|WEBACCT]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; account ID used for web logons for URLs where no userid is required.&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;[[WEBCOOKID (JANUS DEFINE parameter)|WEBCOOKID]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that an identifying &amp;quot;cookie&amp;quot; should be sent to a browser to distinguish multiple browsers coming through the same proxy server or running on the same machine.&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;[[WEBLH (JANUS DEFINE parameter)|WEBLH]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBLOGHOLD&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;td&amp;gt;[[WEBLM (JANUS DEFINE parameter)|WEBLM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBLOGMAX&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;td&amp;gt;[[WEBLOGCOOKIE (JANUS DEFINE parameter)|WEBLOGCOOKIE]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that, for public URLs, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Server&amp;lt;/var&amp;gt; should log the user in with the userid specified by cookie-name. Normally, all public URL logins use the default public userid (usually &amp;lt;var&amp;gt;WEBUSER&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;td&amp;gt;[[WEBLOGHOLD (JANUS DEFINE parameter)|WEBLOGHOLD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the number of seconds that a &amp;quot;real&amp;quot; login should be saved for re-use on a web connection.&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;[[WEBLOGMAX (JANUS DEFINE parameter)|WEBLOGMAX]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the maximum number of cached login sessions to be held for a single user.&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;[[WEBPL (JANUS DEFINE parameter)|WEBPL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBPUBLOG&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;td&amp;gt;[[WEBPUBLOG (JANUS DEFINE parameter)|WEBPUBLOG]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that a &amp;quot;real&amp;quot; login should be done for the &amp;lt;var&amp;gt;WEBUSER&amp;lt;/var&amp;gt; &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; for public URLs.&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;[[WEBREALM (JANUS DEFINE parameter)|WEBREALM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the security &amp;quot;realm&amp;quot; of userids and passwords.&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;[[WEBSDMAX (JANUS DEFINE parameter)|WEBSDMAX]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates the maximum number of sdaemons to be used for cached web logins.&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;[[WEBSM (JANUS DEFINE parameter)|WEBSM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Synonym for &amp;lt;var&amp;gt;WEBSDMAX&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[WEBSOCKET and NOWEBSOCKET (JANUS DEFINE parameters)|WEBSOCKET and NOWEBSOCKET ]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not the port will negotiate with a client to upgrade to the Web Socket protocol. &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;[[WEBUSER (JANUS DEFINE parameter)|WEBUSER]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies the default &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; user ID used for web logons for URLs where no userid is required.&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;[[WSFQUERY (JANUS DEFINE parameter)|WSFQUERY]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that Janus is to issue a &amp;quot;Write Structured Field Query&amp;quot; request to any Telnet client that connects to it.&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;[[XMLSCREEN and NOXMLSCREEN (JANUS DEFINE parameters)|XMLSCREEN and NOXMLSCREEN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets XML screen mode (&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy XML Support]]&amp;lt;/var&amp;gt;) characteristics for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; screens.&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;[[XMLSCREENFIELD and NOXMLSCREENFIELD (JANUS DEFINE parameters)|XMLSCREENFIELD and NOXMLSCREENFIELD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates whether or not a screenField attribute is to be added to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; pages.&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;[[XMLSCREENREPUC (JANUS DEFINE parameter)|XMLSCREENREPUC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies a Unicode character with which to replace an XMLSCREEN input character that cannot be translated to EBCDIC.&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;[[XMLNULLSCANCEL and XMLNULLSSEND (JANUS DEFINE parameters)|XMLNULLSCANCEL and XMLNULLSSEND]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets XML screen mode (&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy XML Support]]&amp;lt;/var&amp;gt;) response to nulls for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Janus Web Legacy Support]]&amp;lt;/var&amp;gt; screens.&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;[[XMLNULLSSTRIP and XMLNULLSBLANK (JANUS DEFINE parameters)|XMLNULLSSTRIP and XMLNULLSBLANK]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets an XML screen mode (&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy XML Support&amp;lt;/var&amp;gt;) null-replacement option for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Janus Web Legacy Support&amp;lt;/var&amp;gt; screens.&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;[[XTAB (JANUS DEFINE parameter)|XTAB]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specifies a translation table that has not yet been loaded with the &amp;lt;var&amp;gt;JANUS LOADXT&amp;lt;/var&amp;gt; command, but the table must be loaded before the port can be started.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&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;[[List of Janus commands]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DEFINE#parmlist|List of JANUS DEFINE parameters]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[Janus port processing and examples]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:JANUS DEFINE parameters|JANUS DEFINE]]&lt;br /&gt;
[[Category:Janus commands]]&lt;br /&gt;
[[Category:Janus Web Server]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=TCPKEEPALIVETIME_(JANUS_DEFINE_parameter)&amp;diff=120591</id>
		<title>TCPKEEPALIVETIME (JANUS DEFINE parameter)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=TCPKEEPALIVETIME_(JANUS_DEFINE_parameter)&amp;diff=120591"/>
		<updated>2025-06-23T02:06:19Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Set TCP Keepalive time interval&amp;lt;/span&amp;gt;  &amp;lt;var&amp;gt;TCPKEEPALIVE&amp;lt;/var&amp;gt; is a parameter on &amp;lt;var&amp;gt;JANUS DEFINE&amp;lt;/var&amp;gt;, which defines and sets characteristics of a Janus port.   This parameter specifies the time interval in seconds between TCP keepalive packets sent on active connections to test if they are, in fact, still connected.  &amp;lt;var&amp;gt;TCPKEEPALIVETIME&amp;lt;/var&amp;gt; has no effect unless the TCPKEEPALIVE parameter is...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Set TCP Keepalive time interval&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;TCPKEEPALIVE&amp;lt;/var&amp;gt; is a parameter on &amp;lt;var&amp;gt;[[JANUS DEFINE]]&amp;lt;/var&amp;gt;, which defines and sets characteristics of a Janus port. &lt;br /&gt;
&lt;br /&gt;
This parameter specifies the time interval in seconds between TCP keepalive packets sent on active connections to test if they are, in fact, still connected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;TCPKEEPALIVETIME&amp;lt;/var&amp;gt; has no effect unless the [[TCPKEEPALIVE (JANUS DEFINE parameter)|TCPKEEPALIVE]] parameter is also set to enable TCP keepalives.&lt;br /&gt;
&lt;br /&gt;
Since the TCP/IP stack does the keepalives, the overhead in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; for setting this parameter is virtually zero. &lt;br /&gt;
&lt;br /&gt;
If not set, or set to 0, and &amp;lt;var&amp;gt;TCPKEEPALIVE&amp;lt;/var&amp;gt; the TCP stack&#039;s default keepalive intervale is used. This interval is usually 7200 (2 hours), a value so high that it renders TCP keepalives virtually useless.&lt;br /&gt;
&lt;br /&gt;
This parameter is only available in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; Version 8.0 and later. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;var&amp;gt;TCPKEEPALIVETIME&amp;lt;/var&amp;gt; is valid for all port types.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[List of Janus commands]]&lt;br /&gt;
&amp;lt;li&amp;gt;[[JANUS DEFINE#parmlist|List of JANUS DEFINE parameters]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:JANUS DEFINE parameters|TCPKEEPALIVETIME]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120588</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120588"/>
		<updated>2025-06-04T23:37:55Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT] [TICK t] [MAXPENDING m] [MAXERR e]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;EXTRACT&amp;lt;/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so. This option makes no sense for a SYNC extract so is only allowed with &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximum number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXERR&amp;lt;/var&amp;gt; indicates the maximum number of record data errors allowed before the extract is aborted. One might wish to set this to a high value for an extract intended to scan a file for data integrity errors. Because records are sent asynchronously in batches, it&#039;s quite possible for the actual number of errors to exceed the &amp;lt;var&amp;gt;MAXERROR&amp;lt;/var&amp;gt; value. &amp;lt;var&amp;gt;MAXERROR&amp;lt;/var&amp;gt; defaults to 50.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  The IMAGINE command operates on the context file which is either the current file or one&lt;br /&gt;
  explicitly specified before the command as in:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IN FILE FOOBAR EXTRACT NOCOMMIT&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To put file FOO into sync mode, one can do:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;OPEN FILE FOO&lt;br /&gt;
IMAGINE SYNC TICK 200000&amp;lt;/p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; keyword indicates that a M204.3073 message should be issued every 200,000 &lt;br /&gt;
records. If one wishes to see these messages on the operator console, one can do:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MSGCTL M204.3073 OPR&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that the actual extraction of records is done on a daemon thread created by the &lt;br /&gt;
IMAGINE command so the thread that issued the IMAGINE command would return fairly&lt;br /&gt;
quickly. Also note that this means that there is no terminal for M204.3073 (or other)&lt;br /&gt;
messages issued during the extract to appear, so one needs to look in the journal&lt;br /&gt;
for errors, should they occur.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To obtain a consistent view of the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the IMAGINE command&lt;br /&gt;
  first quiesces the file; that is, ensures that no updating transactions that had&lt;br /&gt;
  updated the file are active. This will usually take less than a second, but a long&lt;br /&gt;
  running transaction that had updated the file could make this take quite a while.&lt;br /&gt;
  As such, it is recommended that the IMAGINE command be issued at a relatively quiet&lt;br /&gt;
  time in terms of file updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  Once the extraction process has begun, whether &amp;lt;var&amp;gt;SYNC&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EXTRACT&amp;lt;/var&amp;gt;,&lt;br /&gt;
  or &amp;lt;var&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt;, any other thread that wishes to update a record in the file&lt;br /&gt;
  being extracted, cannot update the record until it has been copied to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; and&lt;br /&gt;
  committed. If it has already been done at the time of the commit, no wait is required.&lt;br /&gt;
  However, if the record has not been copied to and committed to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; the&lt;br /&gt;
  thread would send a request to the extracting daemon to immediately send the record to&lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (if not already sent) and then to wake the updating thread when that&lt;br /&gt;
  record is committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. This can cause a slight delay in update&lt;br /&gt;
  processing so, again, the recommendation is for extracts to be done at relatively quiet&lt;br /&gt;
  times for a file.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  If a file is in SYNC mode, once a record has been sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, any updates&lt;br /&gt;
  to the file are sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (via a broker connection) and those updates &lt;br /&gt;
  must be committed for the transaction to succeed. That is, if some error occurs on &lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; for a SYNC update, the request would be cancelled and the transaction&lt;br /&gt;
  backed out. Note that this processing occurs even after the file has been fully extracted,&lt;br /&gt;
  and the extracting daemon is no longer active. This ensures that the SYNC&#039;ed file will&lt;br /&gt;
  remain consistent between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; making it feasible&lt;br /&gt;
  to switch the file to transparency mode with a minimal outage.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  For a plain EXTRACT (as opposed to SYNC), updates to records in the file after they have&lt;br /&gt;
  committed in &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, so the file can&lt;br /&gt;
  get out of synch between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. However, by not&lt;br /&gt;
  allowing any records to be updated in the file during the EXTRACT process until they&lt;br /&gt;
  have been committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; will be ensured&lt;br /&gt;
  to be  a consistent view of the file as of the point in the &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;&lt;br /&gt;
  command where updates to the file had been quiesced.&lt;br /&gt;
&amp;lt;/p&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;[[Imagine Transparency]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120570</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120570"/>
		<updated>2025-05-02T14:07:27Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax for IMAGINE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT] [TICK t] [MAXPENDING m]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;EXTRACT&amp;lt;/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so. This option makes no sense for a SYNC extract so is only allowed with &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximum number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  The IMAGINE command operates on the context file which is either the current file or one&lt;br /&gt;
  explicitly specified before the command as in:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IN FILE FOOBAR EXTRACT NOCOMMIT&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To put file FOO into sync mode, one can do:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;OPEN FILE FOO&lt;br /&gt;
IMAGINE SYNC TICK 200000&amp;lt;/p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; keyword indicates that a M204.3073 message should be issued every 200,000 &lt;br /&gt;
records. If one wishes to see these messages on the operator console, one can do:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MSGCTL M204.3073 OPR&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that the actual extraction of records is done on a daemon thread created by the &lt;br /&gt;
IMAGINE command so the thread that issued the IMAGINE command would return fairly&lt;br /&gt;
quickly. Also note that this means that there is no terminal for M204.3073 (or other)&lt;br /&gt;
messages issued during the extract to appear, so one needs to look in the journal&lt;br /&gt;
for errors, should they occur.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To obtain a consistent view of the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the IMAGINE command&lt;br /&gt;
  first quiesces the file; that is, ensures that no updating transactions that had&lt;br /&gt;
  updated the file are active. This will usually take less than a second, but a long&lt;br /&gt;
  running transaction that had updated the file could make this take quite a while.&lt;br /&gt;
  As such, it is recommended that the IMAGINE command be issued at a relatively quiet&lt;br /&gt;
  time in terms of file updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  Once the extraction process has begun, whether &amp;lt;var&amp;gt;SYNC&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EXTRACT&amp;lt;/var&amp;gt;,&lt;br /&gt;
  or &amp;lt;var&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt;, any other thread that wishes to update a record in the file&lt;br /&gt;
  being extracted, cannot update the record until it has been copied to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; and&lt;br /&gt;
  committed. If it has already been done at the time of the commit, no wait is required.&lt;br /&gt;
  However, if the record has not been copied to and committed to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; the&lt;br /&gt;
  thread would send a request to the extracting daemon to immediately send the record to&lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (if not already sent) and then to wake the updating thread when that&lt;br /&gt;
  record is committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. This can cause a slight delay in update&lt;br /&gt;
  processing so, again, the recommendation is for extracts to be done at relatively quiet&lt;br /&gt;
  times for a file.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  If a file is in SYNC mode, once a record has been sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, any updates&lt;br /&gt;
  to the file are sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (via a broker connection) and those updates &lt;br /&gt;
  must be committed for the transaction to succeed. That is, if some error occurs on &lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; for a SYNC update, the request would be cancelled and the transaction&lt;br /&gt;
  backed out. Note that this processing occurs even after the file has been fully extracted,&lt;br /&gt;
  and the extracting daemon is no longer active. This ensures that the SYNC&#039;ed file will&lt;br /&gt;
  remain consistent between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; making it feasible&lt;br /&gt;
  to switch the file to transparency mode with a minimal outage.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  For a plain EXTRACT (as opposed to SYNC), updates to records in the file after they have&lt;br /&gt;
  committed in &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, so the file can&lt;br /&gt;
  get out of synch between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. However, by not&lt;br /&gt;
  allowing any records to be updated in the file during the EXTRACT process until they&lt;br /&gt;
  have been committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; will be ensured&lt;br /&gt;
  to be  a consistent view of the file as of the point in the &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;&lt;br /&gt;
  command where updates to the file had been quiesced.&lt;br /&gt;
&amp;lt;/p&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;[[Imagine Transparency]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120569</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120569"/>
		<updated>2025-05-02T11:30:21Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT] [TICK t] [MAXPENDING m]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;EXTRACT&amp;lt;/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximum number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  The IMAGINE command operates on the context file which is either the current file or one&lt;br /&gt;
  explicitly specified before the command as in:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IN FILE FOOBAR EXTRACT NOCOMMIT&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To put file FOO into sync mode, one can do:&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;OPEN FILE FOO&lt;br /&gt;
IMAGINE SYNC TICK 200000&amp;lt;/p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; keyword indicates that a M204.3073 message should be issued every 200,000 &lt;br /&gt;
records. If one wishes to see these messages on the operator console, one can do:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MSGCTL M204.3073 OPR&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that the actual extraction of records is done on a daemon thread created by the &lt;br /&gt;
IMAGINE command so the thread that issued the IMAGINE command would return fairly&lt;br /&gt;
quickly. Also note that this means that there is no terminal for M204.3073 (or other)&lt;br /&gt;
messages issued during the extract to appear, so one needs to look in the journal&lt;br /&gt;
for errors, should they occur.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  To obtain a consistent view of the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the IMAGINE command&lt;br /&gt;
  first quiesces the file; that is, ensures that no updating transactions that had&lt;br /&gt;
  updated the file are active. This will usually take less than a second, but a long&lt;br /&gt;
  running transaction that had updated the file could make this take quite a while.&lt;br /&gt;
  As such, it is recommended that the IMAGINE command be issued at a relatively quiet&lt;br /&gt;
  time in terms of file updates.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  Once the extraction process has begun, whether &amp;lt;var&amp;gt;SYNC&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EXTRACT&amp;lt;/var&amp;gt;,&lt;br /&gt;
  or &amp;lt;var&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt;, any other thread that wishes to update a record in the file&lt;br /&gt;
  being extracted, cannot update the record until it has been copied to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; and&lt;br /&gt;
  committed. If it has already been done at the time of the commit, no wait is required.&lt;br /&gt;
  However, if the record has not been copied to and committed to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; the&lt;br /&gt;
  thread would send a request to the extracting daemon to immediately send the record to&lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (if not already sent) and then to wake the updating thread when that&lt;br /&gt;
  record is committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. This can cause a slight delay in update&lt;br /&gt;
  processing so, again, the recommendation is for extracts to be done at relatively quiet&lt;br /&gt;
  times for a file.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  If a file is in SYNC mode, once a record has been sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, any updates&lt;br /&gt;
  to the file are sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; (via a broker connection) and those updates &lt;br /&gt;
  must be committed for the transaction to succeed. That is, if some error occurs on &lt;br /&gt;
  &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; for a SYNC update, the request would be cancelled and the transaction&lt;br /&gt;
  backed out. Note that this processing occurs even after the file has been fully extracted,&lt;br /&gt;
  and the extracting daemon is no longer active. This ensures that the SYNC&#039;ed file will&lt;br /&gt;
  remain consistent between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; making it feasible&lt;br /&gt;
  to switch the file to transparency mode with a minimal outage.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
  For a plain EXTRACT (as opposed to SYNC), updates to records in the file after they have&lt;br /&gt;
  committed in &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not sent to &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, so the file can&lt;br /&gt;
  get out of synch between &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. However, by not&lt;br /&gt;
  allowing any records to be updated in the file during the EXTRACT process until they&lt;br /&gt;
  have been committed on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;, the file on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; will be ensured&lt;br /&gt;
  to be  a consistent view of the file as of the point in the &amp;lt;code&amp;gt;IMAGINE EXTRACT&amp;lt;/code&amp;gt;&lt;br /&gt;
  command where updates to the file had been quiesced.&lt;br /&gt;
&amp;lt;/p&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;[[Imagine Transparency]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120568</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120568"/>
		<updated>2025-05-02T10:47:13Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax for IMAGINE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT] [TICK t] [MAXPENDING m]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;EXTRACT&amp;lt;/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximu number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120567</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120567"/>
		<updated>2025-05-02T10:47:01Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax for IMAGINE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT] [TICK t] [MAXPENDING m]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;EXTRACT/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximu number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120566</id>
		<title>IMAGINE command</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=IMAGINE_command&amp;diff=120566"/>
		<updated>2025-05-02T03:34:08Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;{{DISPLAYTITLE:IMAGINE command}} &amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;  This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.  ==Summary== &amp;lt;dl&amp;gt; &amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt; &amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt; &amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt; &amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt; &amp;lt;/dl&amp;gt;  ==Syntax for IMAGINE== &amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:IMAGINE command}}&lt;br /&gt;
&amp;lt;span class=&amp;quot;pageSubtitle&amp;quot;&amp;gt;Move Model 204 data to Imagine&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Summary==&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Privileges&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;File manager&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;Function&amp;lt;/dt&amp;gt;&lt;br /&gt;
&amp;lt;dd&amp;gt;provides the facilities to extract &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; data and load it into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;.&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Syntax for IMAGINE==&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE SYNC | EXTRACT [NOCOMMIT] [TICK t] [MAXPENDING m]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Where:&amp;lt;/b&amp;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;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted and the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;SYNC&amp;lt;/var&amp;gt; indicates that data is to be extracted but the &amp;lt;var&amp;gt;Model 204&amp;lt;/var&amp;gt; file and &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; are not to be kept in sync after the command.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;NOCOMMIT&amp;lt;/var&amp;gt; indicates that the data is to be sent to Imagine and processed, but not committed. This provides a way of validating that a file can be loaded into &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; without actually doing so.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;TICK&amp;lt;/var&amp;gt; indicates the number of records between progress messages (M204.3073) to the journal. This parameter also sets the frequency of progress messages on &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt;. &amp;lt;var&amp;gt;TICK&amp;lt;/var&amp;gt; defaults to 100000.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; indicates the maximu number of uncommitted record sends to be allowed in the extract. Setting this to a low value could result in reduced transfer rates because of network latency. &amp;lt;var&amp;gt;MAXPENDING&amp;lt;/var&amp;gt; defaults to 4095.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is also a format of the IMAGINE command:&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;IMAGINE ENDSYNC&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That indicates a SYNC or EXTRACT for the file should be terminated. &lt;br /&gt;
&lt;br /&gt;
===Syntax notes===&lt;br /&gt;
==Example==&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
[[Category: File manager commands]]&lt;br /&gt;
[[Category:Commands]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=$CurrecId&amp;diff=120436</id>
		<title>$CurrecId</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=$CurrecId&amp;diff=120436"/>
		<updated>2025-03-28T21:45:50Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Usage notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;$CurrecId&amp;lt;/var&amp;gt; function returns the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; recordId for current (innermost) record &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop. If the current record is in a file that is not an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file, an empty string is returned.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;$CurrecId&amp;lt;/var&amp;gt; takes no arguments. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The recordId for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; associated records is an 8-byte binary string value. This can be used to create another &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object with the [[NewFromRecordId (Record function)|NewFromRecordId]] function though there is really no good reason to create another &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object this way, or it could be passed to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; broker, probably after converting it to hex. Note, however, that while recordIds uniquely identify any record in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; still needs to know the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file that holds the record to locate it. This can be obtained using the [[$CurImagineFile|CurImagineFile function]].&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The [[CurrentRecordId (Record function)|CurrentRecordId]] method provides identical functionality using O-O syntax.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=$CurImagineFile&amp;diff=120435</id>
		<title>$CurImagineFile</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=$CurImagineFile&amp;diff=120435"/>
		<updated>2025-03-28T21:43:01Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;&amp;lt;p&amp;gt; The &amp;lt;var&amp;gt;$CurrecImagineFile&amp;lt;/var&amp;gt; function returns the conatining &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; filename for the current (innermost) record &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop. If the current record is in a file that is not an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file, an empty string is returned. &amp;lt;/p&amp;gt; &amp;lt;p&amp;gt; &amp;lt;var&amp;gt;$CurImagineFile&amp;lt;/var&amp;gt; takes no arguments.  &amp;lt;/p&amp;gt;  ==Usage notes== &amp;lt;p&amp;gt; The &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; filename can be used with a recordId obtained via...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;$CurrecImagineFile&amp;lt;/var&amp;gt; function returns the conatining &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; filename for the current (innermost) record &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop. If the current record is in a file that is not an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file, an empty string is returned.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var&amp;gt;$CurImagineFile&amp;lt;/var&amp;gt; takes no arguments. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; filename can be used with a recordId obtained via the [[$CurrecId|$CurrecId function]] to allow an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application to easily locate a record.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The [[CurrentImagineFile (Record function)|CurrentImagine]] method provides identical functionality using O-O syntax.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=CurrentRecordId_(Record_function)&amp;diff=120434</id>
		<title>CurrentRecordId (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=CurrentRecordId_(Record_function)&amp;diff=120434"/>
		<updated>2025-03-28T21:35:48Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:CurrentRecordId subtitle}}&lt;br /&gt;
&lt;br /&gt;
Get the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; recordId for current (innermost) record &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop.&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:CurrentRecordId syntax}}&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;%string&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The recordId of the &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop record on &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; if the record is in a file that is an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file, or an empty string, otherwise.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th nowrap=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;var&amp;gt;%(Record In &amp;lt;/var&amp;gt;filOrGrp name&amp;lt;var&amp;gt;)&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;CurrentRecordId&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The recordId for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; associated records is an 8-byte binary string value. This can be used to create another &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object with the [[NewFromRecordId (Record function)|NewFromRecordId]] function though there is really no good reason to create another &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object this way, or it could be passed to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; broker, probably after converting it to hex. Note, however, that while recordIds uniquely identify any record in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; still needs to know the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file that holds the record to locate it. This can be obtained using the [[CurrentImagineFile (Record function)|CurrentImagineFile]] method.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:CurrentRecordId footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=CurrentImagineFile_(Record_function)&amp;diff=120433</id>
		<title>CurrentImagineFile (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=CurrentImagineFile_(Record_function)&amp;diff=120433"/>
		<updated>2025-03-28T21:34:25Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:CurrentImagineFile subtitle}}&lt;br /&gt;
&lt;br /&gt;
Get the name of the containing &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file for current (innermost) record &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop.&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:CurrentImagineFile syntax}}&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;%string&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The name of the containing &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file for the current &amp;lt;var&amp;gt;For&amp;lt;/var&amp;gt; loop record, if the record is in an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file, or an empty string, otherwise.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th nowrap=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;var&amp;gt;%(Record In &amp;lt;/var&amp;gt;filOrGrp name&amp;lt;var&amp;gt;)&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;CurrentImagineFile&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
The &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; filename can be used with a recordId obtained via the [[CurrentRecordId (Record function)|CurrentRecordId method]] to allow an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application to easily locate a record.&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:CurrentImagineFile footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=RecordId_(Record_function)&amp;diff=120432</id>
		<title>RecordId (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=RecordId_(Record_function)&amp;diff=120432"/>
		<updated>2025-03-28T21:28:45Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:RecordId subtitle}}&lt;br /&gt;
&lt;br /&gt;
Get the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; recordId for the &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object.&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:RecordId syntax}}&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;%string&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The recordId of the record on &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; if the record is in a file that is an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file, or an empty string, otherwise.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;record&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object&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;p&amp;gt;&lt;br /&gt;
The recordId for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; associated records is an 8-byte binary string value. This can be used to create another &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object with the [[NewFromRecordId (Record function)|NewFromRecordId]] function though there is really no good reason to create another &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object this way, or it could be passed to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; broker, probably after converting it to hex. Note, however, that while recordIds uniquely identify any record in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; still needs to know the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file that holds the record to locate it. This can be obtained using the [[ImagineFile (Record function)|ImagineFile]] method.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:RecordId footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=ImagineFile_(Record_function)&amp;diff=120431</id>
		<title>ImagineFile (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=ImagineFile_(Record_function)&amp;diff=120431"/>
		<updated>2025-03-28T21:27:57Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:ImagineFile subtitle}}&lt;br /&gt;
&lt;br /&gt;
Get the name of the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file that contains the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; record for the &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object.&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:ImagineFile syntax}}&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;%string&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The name of the containing &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file, if the record is in an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file, or an empty string, otherwise.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;record&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
The &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; filename can be used with a recordId obtained via the [[RecordId (Record function)|RecordId method]] to allow an &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application to easily locate a record.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:ImagineFile footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120420</id>
		<title>BrokerLost class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120420"/>
		<updated>2025-03-25T16:02:35Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* New constructor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BrokerLost class --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception class indicates that the connection with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the session was lost, either because of a network issue or an error in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application. &lt;br /&gt;
The &amp;lt;var&amp;gt;[[Call (Imagine function)|Call]]&amp;lt;/var&amp;gt; function of the &amp;lt;var&amp;gt;[[Imagine_class|Imagine]]&amp;lt;/var&amp;gt; system class is currently the only method that might throw a &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception. For more information about catching a thrown exception, see [[Exceptions#Try and Catch|Try and Catch]]. A lost broker connection for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file operations results in a request cancellation as there&#039;s typically no method to throw the exception and, even if an exception were thrown in such a case, the error is so low-level and severe that any attempt to recover from it would be a bad idea.&lt;br /&gt;
&lt;br /&gt;
==The BrokerLost methods==&lt;br /&gt;
{{Template:List of BrokerLost methods}}&lt;br /&gt;
&lt;br /&gt;
The methods in the class are described in the subsections that follow. In addition:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Notation conventions for methods]] has information about the conventions followed. &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[BrokerLost methods syntax]] is a single page that contains the syntax diagrams of all the methods in the class.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New constructor==&lt;br /&gt;
{{Template:BrokerLost:New subtitle}}&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;var&amp;gt;Constructor&amp;lt;/var&amp;gt; generates an instance of a &amp;lt;var&amp;gt;[[BrokerLost_class|BrokerLost]]&amp;lt;/var&amp;gt; exception. &lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
{{Template:BrokerLost:New syntax}}&lt;br /&gt;
&lt;br /&gt;
====Syntax terms====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%brokerLost&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A reference to an instance of a &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; object.&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;[%(BrokerLost):]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a &amp;lt;var&amp;gt;[[Notation conventions for methods#Constructors|Constructor]]&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:System exception classes]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120419</id>
		<title>BrokerLost class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120419"/>
		<updated>2025-03-25T16:01:37Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BrokerLost class --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception class indicates that the connection with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the session was lost, either because of a network issue or an error in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application. &lt;br /&gt;
The &amp;lt;var&amp;gt;[[Call (Imagine function)|Call]]&amp;lt;/var&amp;gt; function of the &amp;lt;var&amp;gt;[[Imagine_class|Imagine]]&amp;lt;/var&amp;gt; system class is currently the only method that might throw a &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception. For more information about catching a thrown exception, see [[Exceptions#Try and Catch|Try and Catch]]. A lost broker connection for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file operations results in a request cancellation as there&#039;s typically no method to throw the exception and, even if an exception were thrown in such a case, the error is so low-level and severe that any attempt to recover from it would be a bad idea.&lt;br /&gt;
&lt;br /&gt;
==The BrokerLost methods==&lt;br /&gt;
{{Template:List of BrokerLost methods}}&lt;br /&gt;
&lt;br /&gt;
The methods in the class are described in the subsections that follow. In addition:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Notation conventions for methods]] has information about the conventions followed. &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[BrokerLost methods syntax]] is a single page that contains the syntax diagrams of all the methods in the class.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New constructor==&lt;br /&gt;
{{Template:DaemonLost:New subtitle}}&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;var&amp;gt;Constructor&amp;lt;/var&amp;gt; generates an instance of a &amp;lt;var&amp;gt;[[DaemonLost_class|DaemonLost]]&amp;lt;/var&amp;gt; exception.  As shown below, the optional argument of the &amp;lt;var&amp;gt;New&amp;lt;/var&amp;gt; method is a setting of the &amp;lt;var&amp;gt;[[DaemonOutput_(DaemonLost_property)|DaemonOutput]]&amp;lt;/var&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
{{Template:BrokerLost:New syntax}}&lt;br /&gt;
&lt;br /&gt;
====Syntax terms====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%brokerLost&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A reference to an instance of a &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; object.&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;[%(BrokerLost):]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a &amp;lt;var&amp;gt;[[Notation conventions for methods#Constructors|Constructor]]&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:System exception classes]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120418</id>
		<title>BrokerLost class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120418"/>
		<updated>2025-03-25T16:00:40Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BrokerLost class --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception class indicates that the connection with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the session was lost, either because of a network issue or an error in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application. &lt;br /&gt;
The &amp;lt;var&amp;gt;[[Call (Imagine function)|Call]]&amp;lt;/var&amp;gt; function of the &amp;lt;var&amp;gt;[[Imagine_class|Imagine]]&amp;lt;/var&amp;gt; system class is currently the only method that might throw a &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception. For more information about catching a thrown exception, see [[Exceptions#Try and Catch|Try and Catch]]. A lost broker connection for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file operations results in a request cancellation as there&#039;s typically no method to throw the exception and, even if an exception were thrown in such a case, the error is so low-level and severe that any attempt to recover from it would be a bad idea.&lt;br /&gt;
&lt;br /&gt;
==The BrokerLost methods==&lt;br /&gt;
{{Template:List of BrokerLost methods}}&lt;br /&gt;
&lt;br /&gt;
The methods in the class are described in the subsections that follow. In addition:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Notation conventions for methods]] has information about the conventions followed. &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[BrokerLost methods syntax]] is a single page that contains the syntax diagrams of all the methods in the class.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==New constructor==&lt;br /&gt;
{{Template:DaemonLost:New subtitle}}&lt;br /&gt;
&lt;br /&gt;
This &amp;lt;var&amp;gt;Constructor&amp;lt;/var&amp;gt; generates an instance of a &amp;lt;var&amp;gt;[[DaemonLost_class|DaemonLost]]&amp;lt;/var&amp;gt; exception.  As shown below, the optional argument of the &amp;lt;var&amp;gt;New&amp;lt;/var&amp;gt; method is a setting of the &amp;lt;var&amp;gt;[[DaemonOutput_(DaemonLost_property)|DaemonOutput]]&amp;lt;/var&amp;gt; property.&lt;br /&gt;
&lt;br /&gt;
===Syntax===&lt;br /&gt;
{{Template:BrokerLost:New syntax}}&lt;br /&gt;
&lt;br /&gt;
====Syntax terms====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%brokerLost&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A reference to an instance of a &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; object.&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;[%(BrokerLost):]&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a &amp;lt;var&amp;gt;[[Notation conventions for methods#Constructors|Constructor]]&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Category:BrokerLost_methods&amp;diff=120417</id>
		<title>Category:BrokerLost methods</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Category:BrokerLost_methods&amp;diff=120417"/>
		<updated>2025-03-25T15:57:59Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;This page displays links to the available BrokerLost class methods.  See Notation conventions for methods for information about the conventions followed in the method descriptions.  ==PDF of category pages== {{Template:PDF of category pages}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page displays links to the available [[BrokerLost class]] methods.&lt;br /&gt;
&lt;br /&gt;
See [[Notation conventions for methods]] for information about the conventions followed in the method descriptions.&lt;br /&gt;
&lt;br /&gt;
==PDF of category pages==&lt;br /&gt;
{{Template:PDF of category pages}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=New_(BrokerLost_constructor)&amp;diff=120416</id>
		<title>New (BrokerLost constructor)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=New_(BrokerLost_constructor)&amp;diff=120416"/>
		<updated>2025-03-25T15:57:14Z</updated>

		<summary type="html">&lt;p&gt;Alex: Redirected page to BrokerLost class#New constructor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[BrokerLost class#New constructor|New constructor]]&lt;br /&gt;
&lt;br /&gt;
[[Category:BrokerLost methods|New constructor]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120415</id>
		<title>BrokerLost class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=BrokerLost_class&amp;diff=120415"/>
		<updated>2025-03-25T15:53:43Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;&amp;lt;!-- BrokerLost class --&amp;gt; __NOTOC__ The &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception class indicates that the connection with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the session was lost, either because of a network issue or an error in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application.  The &amp;lt;var&amp;gt;Call&amp;lt;/var&amp;gt; function of the &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; system class is currently the only method that might throw a &amp;lt;var&amp;gt;BrokerLo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- BrokerLost class --&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
The &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception class indicates that the connection with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the session was lost, either because of a network issue or an error in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application. &lt;br /&gt;
The &amp;lt;var&amp;gt;[[Call (Imagine function)|Call]]&amp;lt;/var&amp;gt; function of the &amp;lt;var&amp;gt;[[Imagine_class|Imagine]]&amp;lt;/var&amp;gt; system class is currently the only method that might throw a &amp;lt;var&amp;gt;BrokerLost&amp;lt;/var&amp;gt; exception. For more information about catching a thrown exception, see [[Exceptions#Try and Catch|Try and Catch]]. A lost broker connection for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; file operations results in a request cancellation as there&#039;s typically no method to throw the exception and, even if an exception were thrown in such a case, the error is so low-level and severe that any attempt to recover from it would be a bad idea.&lt;br /&gt;
&lt;br /&gt;
==The BrokerLost methods==&lt;br /&gt;
{{Template:List of BrokerLost methods}}&lt;br /&gt;
&lt;br /&gt;
The methods in the class are described in the subsections that follow. In addition:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Notation conventions for methods]] has information about the conventions followed. &amp;lt;/li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[BrokerLost methods syntax]] is a single page that contains the syntax diagrams of all the methods in the class.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Category:Imagine_methods&amp;diff=120408</id>
		<title>Category:Imagine methods</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Category:Imagine_methods&amp;diff=120408"/>
		<updated>2025-03-25T15:44:01Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;This page displays links to the available Imagine class methods.  See Notation conventions for methods for information about the conventions followed in the method descriptions.  ==PDF of category pages== {{Template:PDF of category pages}}&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page displays links to the available [[Imagine class]] methods.&lt;br /&gt;
&lt;br /&gt;
See [[Notation conventions for methods]] for information about the conventions followed in the method descriptions.&lt;br /&gt;
&lt;br /&gt;
==PDF of category pages==&lt;br /&gt;
{{Template:PDF of category pages}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Call_(Imagine_function)&amp;diff=120407</id>
		<title>Call (Imagine function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Call_(Imagine_function)&amp;diff=120407"/>
		<updated>2025-03-25T15:41:42Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax terms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Imagine:Call subtitle}}&lt;br /&gt;
&lt;br /&gt;
This method calls code running in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the current transaction. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Imagine:Call syntax}}&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;%string&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The value returned by the called &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; function. This could be anything though JSON would be the most convenient format for passing data from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th nowrap=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;var&amp;gt;%(Imagine)&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;Call&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string that contains the name of the function to be called in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; broker. The semantics of this value is under the control of the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; broker.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;payload&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string that contains data passed to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; function. This could be anything though JSON would be the most convenient format for passing data to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; function. Thwe default value for this is an empty string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;globals&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Boolean&amp;lt;/var&amp;gt; value that indicates whether global strings (&amp;lt;code&amp;gt;$setg&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;$getg&amp;lt;/code&amp;gt;) should be sent to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;. The default value of this argument is &amp;lt;var&amp;gt;false&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;globalImages&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Boolean&amp;lt;/var&amp;gt; value that indicates whether global images should be sent to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;. The default value of this argument is &amp;lt;var&amp;gt;false&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;recordMap&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Boolean&amp;lt;/var&amp;gt; value that indicates whether a map of (thread-specific) &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; record numbers to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; file and recordId should be sent to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;. This can be useful if one is passing &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; record numbers to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; application. The default value of this argument is &amp;lt;var&amp;gt;false&amp;lt;/var&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;
==Usage notes==&lt;br /&gt;
In &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;, a transaction includes both retrieval requests and updating requests.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Because &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; files and transactions are automatically kept in synch with the corresponding files in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; any updates in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; transaction are visible in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; transaction and vice versa==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Imagine:Call footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Call_(Imagine_function)&amp;diff=120406</id>
		<title>Call (Imagine function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Call_(Imagine_function)&amp;diff=120406"/>
		<updated>2025-03-25T14:54:15Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Imagine:Call subtitle}}&lt;br /&gt;
&lt;br /&gt;
This method calls code running in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the current transaction. &lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Imagine:Call syntax}}&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;%string&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The value returned by the called &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; function. This could be anything though JSON would be the most convenient format for passing data from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th nowrap=&amp;quot;true&amp;quot;&amp;gt;&amp;lt;var&amp;gt;%(Imagine)&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;Call&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string that contains the name of the function to be called in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; broker. The semantics of this value is under the control of the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; broker.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;payload&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string that contains data passed to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; function. This could be anything though JSON would be the most convenient format for passing data to the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; function. Thwe default value for this is an empty string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;globals&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Boolean&amp;lt;/var&amp;gt; value that indicates whether global strings (&amp;lt;code&amp;gt;$setg&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;$getg&amp;lt;/code&amp;gt;) should be sent to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;. The default value of this argument is &amp;lt;var&amp;gt;false&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;globalImages&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Boolean&amp;lt;/var&amp;gt; value that indicates whether global images should be sent to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;. The default value of this argument is &amp;lt;var&amp;gt;false&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;recordMap&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var&amp;gt;Boolean&amp;lt;/var&amp;gt; value&amp;lt;br/&amp;gt;The default value of this argument is [[??]].&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
==Usage notes==&lt;br /&gt;
In &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt;, a transaction includes both retrieval requests and updating requests.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Because &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; files and transactions are automatically kept in synch with the corresponding files in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; any updates in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; transaction are visible in the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; transaction and vice versa==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Imagine:Call footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>