<?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-04-04T19:30:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<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>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Imagine_class&amp;diff=120404</id>
		<title>Imagine class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Imagine_class&amp;diff=120404"/>
		<updated>2025-03-25T11:07:43Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;&amp;lt;p&amp;gt; The &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; class can be used to interact with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the current transaction. Note that 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. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; is a non-relational, [https://en.wikipedia.org/wiki/ACID ACID] database and application server that is capable of mapping &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; data relativ...&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;Imagine&amp;lt;/var&amp;gt; class can be used to interact with the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine Transparency&amp;lt;/var&amp;gt; broker for the current transaction. Note that 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. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; is a non-relational, [https://en.wikipedia.org/wiki/ACID ACID] database and application server that is capable of mapping &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; data relatively easily.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Currently, there is no &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; object per se &amp;amp;ndash; the &amp;lt;var&amp;gt;Imagine&amp;lt;/var&amp;gt; class is just a collection of shared methods. 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&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
==List of Imagine methods==&lt;br /&gt;
The [[List of Imagine methods|&amp;quot;List of Imagine methods&amp;quot;]] shows all the class methods.&lt;br /&gt;
&lt;br /&gt;
[[Category:System classes]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Template:List_of_classes_and_methods&amp;diff=120402</id>
		<title>Template:List of classes and methods</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Template:List_of_classes_and_methods&amp;diff=120402"/>
		<updated>2025-03-25T02:49:25Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==System classes==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;CharacterMap class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[CharacterMap class|Synopsis]] | [[List of CharacterMap methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;CharacterToUnicodeMap class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[CharacterToUnicodeMap class|Synopsis]] | [[List of CharacterToUnicodeMap methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;[[Collections|Collection]] classes &amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&amp;lt;li&amp;gt;Arraylist class:&amp;lt;li&amp;gt;FloatNamedArraylist class:&amp;lt;li&amp;gt;NamedArraylist class:&amp;lt;li&amp;gt;UnicodeNamedArraylist class:&amp;lt;/ul&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[Arraylist class|Synopsis]] | [[List of Arraylist methods|Methods]]&amp;lt;li&amp;gt;[[FloatNamedArraylist class|Synopsis]] | [[List of FloatNamedArraylist methods|Methods]]&amp;lt;li&amp;gt;[[NamedArraylist class|Synopsis]] | [[List of NamedArraylist methods|Methods]]&amp;lt;li&amp;gt;[[UnicodeNamedArraylist class|Synopsis]] | [[List of UnicodeNamedArraylist methods|Methods]]&amp;lt;/ul&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 style=&amp;quot;border-right:0&amp;quot;&amp;gt;Daemon class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Daemon class|Synopsis]] | [[List of Daemon methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Dataset class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Dataset class|Synopsis]] | [[List of Dataset methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Email class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Email class|Synopsis]] | [[List of Email methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;FastUnloadTask class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[FastUnloadTask class|Synopsis]] | [[List of FastUnloadTask methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;[[File classes]] &amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&amp;lt;li&amp;gt;Recordset class:&amp;lt;li&amp;gt;Record class:&amp;lt;li&amp;gt;SortedRecordset class:&amp;lt;li&amp;gt;RecordsetCursor class:&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[Recordset class|Synopsis]] | [[List of Recordset methods|Methods]]&amp;lt;li&amp;gt;[[Record class|Synopsis]] | [[List of Record methods|Methods]]&amp;lt;li&amp;gt;[[SortedRecordset class|Synopsis]] | [[List of SortedRecordset methods|Methods]]&amp;lt;li&amp;gt;[[RecordsetCursor class|Synopsis]] | [[List of RecordsetCursor methods|Methods]]&amp;lt;/ul&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 style=&amp;quot;border-right:0&amp;quot;&amp;gt;[[HTTP Helper|HTTP Helper]] classes: &amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&amp;lt;li&amp;gt;HttpRequest class:&amp;lt;li&amp;gt;HttpResponse class:&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[List of HTTP Helper methods|HTTP Helper methods]]&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[HttpRequest class|Synopsis]] | [[List of HttpRequest methods|Methods]]&amp;lt;li&amp;gt;[[HttpResponse class|Synopsis]] | [[List of HttpResponse methods|Methods]]&amp;lt;/ul&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 style=&amp;quot;border-right:0&amp;quot;&amp;gt;Imagine class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Imagine class|Synopsis]] | [[List of Imagine methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;[[Intrinsic classes|Intrinsic]] classes: &amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&amp;lt;li&amp;gt;Float class:&amp;lt;li&amp;gt;String class:&amp;lt;li&amp;gt;Unicode class:&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[List of  Float methods|Methods]]&amp;lt;li&amp;gt;[[List of String methods|Methods]]&amp;lt;li&amp;gt;[[List of Unicode methods|Methods]]&amp;lt;/ul&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 style=&amp;quot;border-right:0&amp;quot;&amp;gt;Journal class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Journal class|Synopsis]] | [[List of Journal methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Json class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Json class|Synopsis]] | [[List of Json methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;LDAP class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[LDAP class|Synopsis]] | [[List of LDAP methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Object class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Object class|Synopsis]] | [[List of Object methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;PersistentObjectInfo class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[PersistentObjectInfo class|Synopsis]] | [[List of PersistentObjectInfo methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;ProcedureInfo class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[ProcedureInfo class|Synopsis]] | [[List of ProcedureInfo methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;RandomNumberGenerator class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[RandomNumberGenerator class|Synopsis]] | [[List of RandomNumberGenerator methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Regex class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Regex class|Synopsis]] | [[List of Regex methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Screen and ScreenField classes:&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Screen classes|Synopsis]] | [[List of Screen API methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;SelectionCriterion class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[SelectionCriterion class|Synopsis]] | [[List of SelectionCriterion methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Socket class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Socket class|Synopsis]] | [[List of Socket methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;SortOrder class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[SortOrder class|Synopsis]] | [[List of SortOrder methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Stringlist class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Stringlist class|Synopsis]] | [[List of Stringlist methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;StringTokenizer class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[StringTokenizer class|Synopsis]] | [[List of StringTokenizer methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;System class:&amp;lt;li&amp;gt;Subsystem class:&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[System and Subsystem classes|Synopsis]] | [[List of System methods|Methods]]&amp;lt;li&amp;gt;[[System and Subsystem classes|Synopsis]] | [[List of Subsystem methods|Methods]]&amp;lt;/ul&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 style=&amp;quot;border-right:0&amp;quot;&amp;gt;Transaction class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Transaction class|Synopsis]] | [[List of Transaction methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;UdpSocket class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[UdpSocket class|Synopsis]] | [[List of UdpSocket methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;UserStatistics class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[UserStatistics class|Synopsis]] | [[List of UserStatistics methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;Web class:&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[Web class|Synopsis]] | [[List of Web methods|Methods]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;[[XmlDoc API]] classes &amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&amp;lt;li&amp;gt;XmlDoc class:&amp;lt;li&amp;gt;XmlNode class:&amp;lt;li&amp;gt;XmlNodelist class:&amp;lt;/ul&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[List of XmlDoc API methods|XmlDoc API methods]]&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[XmlDoc API#The XmlDoc class|Synopsis]] | [[List of XmlDoc methods|XmlDoc methods]]&amp;lt;li&amp;gt;[[XmlDoc API#The XmlNode and XmlNodelist classes, and XPath|Synopsis]] | [[List of XmlNode methods|XmlNode methods]]&amp;lt;li&amp;gt;[[XmlDoc API#The XmlNode and XmlNodelist classes, and XPath|Synopsis]] | [[List of XmlNodelist methods|XmlNodelist methods]]&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;[[XmlParser API]] classes &amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&amp;lt;li&amp;gt;XmlParser class:&amp;lt;li&amp;gt;XmlSelector class:&amp;lt;li&amp;gt;XmlAttributeList class:&amp;lt;/ul&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;[[List of XmlParser API methods|XmlParser API methods]]&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&amp;lt;li&amp;gt;[[XmlParser class|Synopsis]] | [[List of XmlParser methods|XmlParser methods]]&amp;lt;li&amp;gt;[[XmlSelector class|Synopsis]] | [[List of XmlSelector methods|XmlSelector methods]]&amp;lt;li&amp;gt;[[XmlAttributeList class|Synopsis]] | [[List of XmlAttributeList methods|XmlAttributeList methods]]&amp;lt;/ul&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;Enumerations&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;System enumerations==&lt;br /&gt;
&amp;lt;table&amp;gt; &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;[[Enumerations]]&amp;lt;/strong&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;noBorder&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[ActionKey enumeration|ActionKey]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[AddToRecordErrorReason enumeration|AddToRecordErrorReason]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[Boolean enumeration|Boolean]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[CoordinatorExceptionReason enumeration|CoordinatorExceptionReason]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[CursorState enumeration|CursorState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[DaemonState enumeration|DaemonState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[DatasetState enumeration|DatasetState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[DigestAlgorithm enumeration|DigestAlgorithm]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[FastUnloadTaskState enumeration|FastUnloadTaskState]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[FieldColor enumeration|FieldColor]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[Highlight enumeration|Highlight]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[JsonType enumeration|JsonType]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[LineEnd enumeration|LineEnd]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;[[LockStrength enumeration|LockStrength]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;border-left:0&amp;quot;&amp;gt;&amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[RecordFormat enumeration|RecordFormat]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[RecordLockType enumeration|RecordLockType]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[RegexSplitOutputOptions enumeration|RegexSplitOutputOptions]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[TranslationExceptionReason enumeration|TranslationExceptionReason]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[XmlAdjacentTextSetting enumeration|XmlAdjacentTextSetting]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[XmlInvalidChar enumeration|XmlInvalidChar]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[XmlNamespaceSetting enumeration|XmlNamespaceSetting]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[XmlNodeType enumeration|XmlNodeType]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[XmlParseErrorReason enumeration|XmlParseErrorReason]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;[[XPathErrorReason enumeration|XPathErrorReason]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&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;Exceptions&amp;quot;&amp;gt;&amp;lt;/b&amp;gt;System exceptions==&lt;br /&gt;
{{Template:List of System exceptions}}&lt;br /&gt;
&lt;br /&gt;
==System types==&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;border-right:0&amp;quot;&amp;gt;&amp;lt;div id=&amp;quot;except&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;System types&amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CertificateChecker&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ProcedureInfoList&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;WebScreenCallback&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;XmlParser API types&lt;br /&gt;
&amp;lt;ul class=&amp;quot;nobul&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[XmlParser API types|XmlStartHandler]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[XmlParser API types|XmlEndHandler]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[XmlParser API types|XmlPIHandler]]&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;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td nowrap style=&amp;quot;border-left:0&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;ul class=&amp;quot;nobulnoindent&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CertificateChecker type|Synopsis]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[ProcedureInfoList type|Synopsis]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[WebScreenCallback type|Synopsis]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[XmlParser API types|Synopsis]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=$CurrecId&amp;diff=120396</id>
		<title>$CurrecId</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=$CurrecId&amp;diff=120396"/>
		<updated>2025-03-25T02:43:10Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;&amp;lt;p&amp;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. &amp;lt;/p&amp;gt; &amp;lt;p&amp;gt; &amp;lt;var&amp;gt;$CurrecId&amp;lt;/var&amp;gt; takes no arguments.  &amp;lt;/p&amp;gt;  ==Usage notes== &amp;lt;p&amp;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. T...&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;$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.&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=SOUL_$functions&amp;diff=120395</id>
		<title>SOUL $functions</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SOUL_$functions&amp;diff=120395"/>
		<updated>2025-03-25T02:36:44Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* List of standard $functions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some operations are inefficient or impossible to code in a high-level programming language like &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt;. To overcome this difficulty, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt; provides a variety of $functions. Many of these functions are deprecated in favor of an OO API method. When that is the case, the $function page notes the matching method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;otherLists&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; &lt;br /&gt;
The mathematical $functions, and those $functions central to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model 204&amp;lt;/var&amp;gt; product (and which require authorization of that product) are listed separately; you can find links to those sets of $functions in the following table:&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 class=&amp;quot;head&amp;quot;&amp;gt;&amp;lt;th&amp;gt;$Function set&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;!-- Note: Rest of this table in synch with list in $Functions section of M204wiki contents --&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[List of mathematical $functions|$xxxmath]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Mathematical $functions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[SirFact $functions|$Fact_xxx]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SirFact $functions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[List of Janus FTP Server $functions|$Ftp_xxx]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Janus FTP Server $functions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[List of Janus Sockets $functions|$Sock_xxx]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Janus Sockets $functions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[List of Janus Web Server $functions|$Web_xxx]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Janus Web Server $functions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[List of Sir2000 User Language Tools $functions|Sir2000]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sir2000 User Language Tools $functions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[List of OCM BOCES $functions]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;To support SIS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==List of standard $functions==&lt;br /&gt;
The following table lists available &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt; $functions, in alphabetical order. The list is not exhaustive (see the [[#otherLists|table of other $function sets]], above). &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; Some of the $functions listed below are only available with the purchase of a Model&amp;amp;nbsp;204 add-on product. The individual page containing such a $function&#039;s full description has an itemized list of the add-on products that authorize the use of the $function.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See also: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[#Using_functions|Using functions]], which reviews coding in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt; with $functions &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[Notation conventions]], which provides a description of the conventions used in syntax on individual $function pages. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &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 class=&amp;quot;head&amp;quot;&amp;gt;&amp;lt;th&amp;gt;$Function&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;!-- ************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Note that FUNSCHECK.WIKI depends on the format of the function name/description rows - *** SO DON&#039;T MUCK WITH IT!!! *** --&amp;gt;&lt;br /&gt;
&amp;lt;!-- ************************************************************** --&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Abbrev]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Determine if string is abbreviation within list of words&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Account]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Account under which the user is logged in.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Acct]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;User ID under which the user is logged in.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Alpha]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether a string is composed of only the letters A through Z.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$AlphNum]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether a string is composed of only the letters A through Z and digits 0 through 9.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Arr_Find]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Find value within array&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Arr_Init]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Initialize every element of array to specific value&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Arr_Max]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Find maximum value in array&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Arr_Min]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Find minimum value in array&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ArrSize]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number of elements in a particular dimension of an array.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Ascii]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Input string, converted from EBCDIC to ASCII.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$A2E]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Translate ASCII to EBCDIC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Base64_Decode]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert from base 64 to byte string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Base64_Encode]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert byte string to base 64&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$BgPurge]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Cancel &amp;quot;long&amp;quot; sdaemon request initiated with $CommBg&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$BgQuery]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;List of &amp;quot;long&amp;quot; sdaemon requests initiated via $CommBg&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Binary]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A number converted into fixed-point binary.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Bind_List]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return list of bound semaphores onto a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Bind]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Fast, easy synchronization of system wide resource&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$BitAnd]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bitwise AND of two integers&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$BitOr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bitwise OR of two integers&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$BldProc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Enables a request to build a temporary procedure.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Buffer_Position]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current Universal Buffer position.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Buffer_Size]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Size of user&#039;s Universal Buffer.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Buffer_Used]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Amount of data currently in Universal Buffer&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Bump]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bump a user&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$CenqCt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number of unused entries within the resource enqueuing table.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Center]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Center string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$CfStatL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;List of statistics for users holding critical file resources&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ChkMod]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether the terminal operator entered data in any full-screen input field.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ChkPat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Syntax of a pattern.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ChkpInf]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Information about checkpoints&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ChkTag]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether any erroneous full-screen input has been entered by the end user.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Close]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Close file or group in User Language request&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Cms]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Determine if online is running under CMS&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Code]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Encoding facility.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Command]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Execute Model 204 command on sdaemon, results to image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$CommBg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Execute Model 204 commands on sdaemon&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$CommndL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Execute Model 204 command on sdaemon, results to $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Context]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Determine if string is name of open file or group&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Curfile]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Name of the file from which the current record has been selected.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Currec]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Integer equal to the internal number of the current record.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$CurrecId]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Imagine&amp;lt;/var&amp;gt; recordId of the current record.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$C2D]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert binary byte string to integer&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$C2X]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A translation of each byte within a character string to its two-byte hexadecimal representation.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DaemonMasterNumber]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get user number of master thread&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DaemonParentNumber]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get user number of parent thread&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;div id=&amp;quot;datex&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;[[$Date]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current date in yy-mm-dd format.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DateChg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Specified number of days, added to or subtracted from a given date.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DateChk]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether a given date is valid.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DateCnv]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Date converted to a format specified by the user.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DateDif]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Difference in days between two dates.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DateJ]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current date in &amp;quot;yy.ddd&amp;quot; format.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DateP]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current date in &amp;quot;dd mon yy&amp;quot; format.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DAY]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Day name of the input day-number.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DayI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number reflecting current day of the week.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Deblank]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Substring of a string, with leading and trailing blanks removed.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Decode]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Decoding facility.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Deflate]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Compress a longstring with Deflate&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DelCh]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Remove characters from string, compress and strip blanks&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Delg_Subsys]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Delete subsystem-wide global&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Delg_Sys]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Delete system-wide global&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Delimr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Insert delimiter string into input string at regular positions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Dscr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Decoding facility.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Dsn]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Data set name when you specify a file&#039;s DD name and the ordinal number.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$DsnNum]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Total number of data sets defined for a file when you specify the file&#039;s DD name.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$D2C]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Binary byte representation of integer&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$D2X]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Hex representation of integer&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Ebcdic]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert input string from ASCII to EBCDIC&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$EcbDGet]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get string data associated with an Event Control Block (ECB)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$EcbDSet]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set string data associated with an Event Control Block (ECB)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$EcbTest]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Check an Event Control Block (ECB) to see if it is posted&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$EcfStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Returns the detailed completion code from the previous EXTERNAL statement.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Edit]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Edited numeric and alphanumeric text&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$EdScan]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Scan list of entities in online&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Eformat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Exponent notations from converted numeric values&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Encrypt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A one-way encryption of a character string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Ent_Print]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set automatic character entity substitution&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Ent_Tab]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;retrieve/modify character entity substitution table&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Ent]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Do character entity substitution&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Enter]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Efficient terminal dialogue with users of data entry applications.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ErrClr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Clears the error message text returned by the $ErrMsg and $Fsterr functions.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ErrMsg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Prefix and text of the last counting error or request cancellation message received.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ErrSet]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Increment or clear number of counting errors, set $ErrMsg&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$E2A]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Translate EBCDIC to ASCII&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FakeEnt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Prepare fake ENTER to automatically satisfy next full screen read&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FDef]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;String that describes the attributes of a field in a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; file.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Field_Image]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return field values into an image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Field_List]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return field values into a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Field_ListI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return field values into a $list mapped to an image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FieldgroupId]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The ID of the current field group. (Available as of Model 204 version 7.5.)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FieldgroupOccurrence]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The current occurrence number of the field group. (Available as of Model 204 version 7.5.)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FIniTim]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;File initialization YYDDDMMHHSSTH&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FiStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve file&#039;s statistics into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FiStatL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve set of files&#039; statistics into list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FldLen]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Length of a field.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Float]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Floating-point to a 4-byte string without conversion (4-byte floating point number to a 4-byte string).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FloatD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Floating-point to a 4-byte string without conversion (8-byte floating point number to an 8-byte string). &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FlsAcc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;User&#039;s access rights to a particular field.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FlsChk]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether a given set of field level security accesses is valid for a field.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FreeOpt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Free optional file or group from subsystem&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Fsterr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Variable-length string containing the prefix and the first counting error message or request cancellation message received by the user since the last time the count was reset to zero.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunForc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Cancel running or waiting Fast/Unload request&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunImg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve data from active Fast/Unload request into image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunList]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$list of active and enqueued Fast/Unload requests&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunLoad]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Fast/Unload records in Model 204 list or found set&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunPurg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Purge running or waiting Fast/Unload request&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunSkip]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Skip to next output record for $FunImg, $FunsStr&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunsStr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve data from active Fast/Unload request into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$FunWait]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wait until asynchronous Fast/Unload request completes&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Getg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Information stored by a $SETG function.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GetL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Line number of the current line on the page on the user&#039;s terminal or on the output data set specified by a USE command.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GetP]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Page number currently on the user&#039;s terminal or on the output data set specified by a USE command.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GrmLoc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Location of a missing member.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GrmName]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;File name of a missing member.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GrnLeft]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number of optional files that may fail before MAXFAIL is exceeded.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GrnMiss]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number of missing members.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GunZip]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Decompress a longstring with GUNZIP&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$GZip]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Compress a longstring with GZip&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$HexA]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert hexadecimal string to EBCDIC equivalent&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$HPage]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;String of special characters whose length is equal to the value specified as the $HPage argument.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Hsh]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A hash value from a converted string value. A hash value is a distinct numeric representation of a given string value.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$IHexA]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert EBCDIC string to hexadecimal equivalent&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ImgInf]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve image item by variable name&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ImgOvl]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Replace image item value&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Incrg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Performs simple arithmetic on global variables.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$IncStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Increment local system statistic&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Index]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;After comparing two strings, a number equal to the first position within the first string at which the second string appears; the same function as $SCAN.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Inflate]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Decompress a longstring with inflate&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ItsOpen]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether or not a file is open.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ItsRemote]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether the current file or group is remote or scattered.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$JobAuth]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Determine if user has authorization for USE $JOB&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Jobcode]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Allows a request that is part of one step of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; batch run to communicate with a subsequent step.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$JpStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve Janus port&#039;s statistics into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$JpStatL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve statistics for set of Janus pors into $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$LangSpc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;String containing the binary value of a character in a specified language.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$LangSrt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A binary string translated to sort according to the NLSORT macro for the specified language.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$LangUst]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Previously $LangSrt&#039;ed  string translated back to its original form.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Len]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Length of a value in a field.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Add_Ordered]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Add an item to an ordered $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Add_Unique_Ordered]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Conditionally add an item to an ordered $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Add_Unique]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Conditionally add an item to a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Capture]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Capture print data to $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Conv_Item]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert $list to single delimited $list item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Copy_Items]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Copy items between $lists&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Diff_Item]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Differences between $list and delimited $list item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Global and $List_Session]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Access/create global/session $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Global_Del and $List_Session_Del]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Delete global/session $lists&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Global_List and $List_Session_List]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;List global/session $lists&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_MaxIL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return maximum $list item length&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$List_Print]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Display contents of a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListAdd_Lstr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Add longstring as new $list item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListAdd]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Add string as new $list item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListAddI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Add image as new $list item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListAdj]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Adjust length of $list item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListChk]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Validate a $list identifier&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListCmp]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Compare two $lists and produce $list describing differences&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListCnt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number of items in $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListCpy]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Copy $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListDel]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Release CCATEMP storage used for $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListFind]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Find string in $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListFindI and $ListFindI_Up]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Find image item in $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListFindI_Sub]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Build $list subset based on image item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListILn]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Length of $list item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Listimg_Copy]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Copy a $list&#039;s image association&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListImg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Associate an image with a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListInf_Lstr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve $list item into longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListInf]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve $list item into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListInfI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve $list item into image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListIns_Lstr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Insert string into a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListIns]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Insert string into a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListInsI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Insert image into a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListLoc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Locate string in $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListLup]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Locate string in $list, searching backwards&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListMove]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Move a $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListNew]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Create empty $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListNewA]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Create array of empty $lists&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListNewAI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Create array of empty $lists associated with image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListNewI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Create empty $list associated with image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListOvl]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Overlay part of $list item with string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListOvlI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Overlay part of $list item with image item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListRem]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Remove item from $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListRep_Lstr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Replace a $list item with a longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListRep]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Replace a $list item with a string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListRepI]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Replace $list item with an image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListRst]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Restore global $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListSav and $ListSave]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Save global $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListSavL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Count and names of available global $lists&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListSort and $ListSrt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sort $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListSub]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Create $list that is subset of input $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ListUpd]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Produce $list from input $list using $list of updates&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lowcase]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A lower case string translated from an uppercase or mixed case string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$LstFld]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Field names in a file, along with their field descriptions, into an image.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$LstProc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Information that is stored for a procedure.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Add_UserBuffer]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Add longstring to user buffer&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Base64_Decode]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert from base 64 to byte string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Base64_Encode]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert byte string to base 64&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_C2X]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert byte string to hexadecimal&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Get_Image and $Lstr_Set_Image]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Longstring to/from image&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Get_Userbuffer]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get user buffer contents to a longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Global and $Lstr_Session]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bind to global/session longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Global_Del and $Lstr_Session_Del]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Delete global or session longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Global_Get and $Lstr_Session_Get]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get global or session longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Global_Set and $Lstr_Session_Set]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set global or session longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Index]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Find a string inside a longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Left]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Leftmost characters of a longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Len]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Length of a longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Parse]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Part of longstring preceding character in delimiter set&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_ParseX]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Part of longstring following character in delimiter set&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Right]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Rightmost characters of a longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Set_UserBuffer]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set user buffer to longstring value&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Substr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Substring of a longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_SubWord]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Substring of a longstring using word counts&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Translate]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Translate longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Unblank]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Remove extraneous blanks from longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Windex]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return the position of a word within a long string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Word]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return a word from a long string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_Words]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return the number of words in a long string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr_X2C]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert from hexadecimal to byte string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Lstr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Treat a string as longstring&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$MisGrup]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Group name if the error occurred in group context, null if in file context.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$MisLoc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Location of a missing member or file.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$MisName]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;File name of a missing member or file.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$MisNum]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number of files that failed in a group.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$MisStmt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Statement that caused the ON unit to be entered.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Mod]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Remainder that results when one argument is divided by the another argument.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Occurs]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether a field has the OCCURS attribute.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Oneof]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Table lookup that can replace a series of IF conditions.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Pack]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Packed decimal representation of a string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Pad]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Designated character padded to the left.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$PadR]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Designated character padded to the right&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Parse]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Part of string preceding character in delimiter set&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ParseX]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Part of string following character in delimiter set&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Post]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Indicates that an event has occurred; the thread waiting on an ECB can resume processing.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$PrcLEx]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$list of information about procedures in file&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$PrcLExG]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$list of information about procedures in group or file&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Priorty]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Change a user&#039;s priority&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Proc_List]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$list of information about procedures in file&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Proc_ListG]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$list of information about procedures in group or file&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Proc_Touch]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Change a procedure&#039;s last-update date and user&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ProcCls]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Close procedure before reaching end&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ProcDat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Add lines from procedure to $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ProcGet]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Next line of procedure&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ProcLoc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Locate any of set of strings in procedure&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ProcOpn]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Open procedure for $ProcDat, $ProcGet, $ProcLoc&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Random_Seed]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Build seed specifying series of $Random results&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Random]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get next random number&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$RdProc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Lines of a User Language procedure, retrieved in sequential order, that is stored in a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; file.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Read]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;An echo of the data a user enters as a request is evaluated&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ReadInv]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Performs the same function as $READ, except that input from the terminal is not echoed.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ReadLc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;An echo of the data a user enters as a request is evaluated, except that case translation is deactivated, regardless of the current *UPPER or *LOWER setting.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$RegexMatch]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether string matches regex&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$RegexReplace]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Replace matching strings&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Remote]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;VTAMNAME value of the originating &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; region when using SNA Communications Server (formerly VTAM) TRANSFER to transfer between &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; regions.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ResetN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Reset or view M204 parameter&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Reverse]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Reversed order of a string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$RlcFile]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Name of the file in which the last record locking conflict occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$RlcRec]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Internal record number for which the last record locking conflict occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$RlcUid]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;ID of the user who caused an ON FIND CONFICT or ON RECORD LOCKING CONFLICT. If the conflicting user is on a remote node, $RLCUID also returns the name of the node.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$RlcUsr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;User number of the user with which the request conflicted when the last record locking conflict occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Round]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number, rounded to a specified number of decimal places.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Scan]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;After comparing two strings, a number equal to the first position within the first string at which the second string appears; the same function as $INDEX.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sclass]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current user&#039;s subsystem user class.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Screen_attr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get screen item attributes as a blank-delimited string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Screen_clear]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Clear tagged and/or modified attributes in a screen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Screen_mod]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set modified attribute for a screen item&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ScrHide]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Hide lines in SCREEN&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ScrSize]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Change size of field on SCREEN&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$ScrWide]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Allow SCREEN to accept fields wider than 79&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Session_$Session_Id_$Session_Owner_and_$Session_Timeout|$Session, $Session_Id, $Session_Owner, &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;br&amp;gt;and $Session_Timeout]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Return values for currently open session&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Session_Close]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Close an open session&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Session_Create]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Create a new session&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Session_Delete]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Delete a session&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Session_List]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get list of sessions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Session_Open]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Open a session&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Setg_Subsys_List]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get list of subsystem-wide globals&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Setg_Subsys]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set subsystem-wide global&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Setg_Sys_List]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get list of system-wide globals&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Setg_Sys]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set system-wide global&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Setg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A created or changed entry in the global variable section of GTBL.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SetL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets the current line counter for the output device currently in effect.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SetP]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sets the current page number for the output device currently in effect.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SetStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set local system statistic&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;div id=&amp;quot;datetime&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;[[$Sir_Date]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Get current datetime&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_DateFmt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Validate datetime format&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;div id=&amp;quot;daten&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;[[$Sir_DateN]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current date and time as number of seconds/300&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_DateND]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current date as number of days&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_DateNM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current date and time as number of milliseconds&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_DateNS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current date and time as number of seconds&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_Date2N]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime string to number of seconds/300&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_Date2ND]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime string to number of days&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_Date2NM]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime string to number of milliseconds&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_Date2NS]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime string to number of seconds&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_Login]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Perform secured web or sockets login&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_ND2Date]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime number of days to string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_NM2Date]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime number of milliseconds to string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_NS2Date]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime number of seconds to string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_N2Date]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert datetime number of seconds/300 to string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sir_Wild]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Test string against a wildcard string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirJGet]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Place audit trail data on $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirMsg]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Line of current $SirMsgP procedure&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirMsgP]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Load procedure for retrieval via $SirMsg&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirParm]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Set user-specific value, controlling Sirius products&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirProd]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Determine availability of Sirius product or capability&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirSite]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current Sirius customer site ID&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirTime]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current time as YYDDDHHMISSXX&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirVer]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current version number of Sirius product&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SirWarn]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Send warning or message to user(s)&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Slstats]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Resets the recording of since-last statistics anywhere within a request.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SndMail]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Send an email message&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Sndx]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;SOUNDEX code of an argument.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Square]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A number multiplied by itself.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SsStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve subsystem&#039;s statistics into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SsStatL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve statistics for set of subsystems into $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Stat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current value of any user statistic.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$StatD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Calculate differences and rates for statistics strings&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$StatLD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Calculate differences and rates for statistics $lists&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Status]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;The success or failure of the last executed external I/O or program communication statement.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$StatusD]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;More detailed description of a condition returned by $STATUS.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Str]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Treat a longstring as string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$StrAnd]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bit-wise AND two strings&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Strip]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;A number with suppressed leading zeros.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$StrOr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bit-wise OR two strings&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$StrXor]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bit-wise exclusive OR two strings&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SubCnt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Count occurrences of one string in another&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SubErs]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Remove occurrence of one string from another&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SubIns]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Insert string inside another string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SubRep]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Replace occurrences of string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Substr]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Substring of a string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Subsys]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Status of an APSY subsystem.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$SyStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve system statistics into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TableC]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Information provided by TABLEC command&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TermId]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Terminal ID of current user thread&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Time]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Current time in hh:mm:ss format.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TkStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve task&#039;s statistics into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TkStatL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve statistics for all tasks into $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TsoAtt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Attach program in user&#039;s TSO address space&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TsoCall]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Call program in user&#039;s TSO address space&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TsoCan]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Cancel program invoked via $TsoAtt&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TsoCmd]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Invoke command in user&#039;s TSO address space&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TsoExec]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Invoke CLIST in user&#039;s TSO address space&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TsoExit]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Terminate TSO full screen interface session, stack command&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TSOId]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;TSO userid user&#039;s thread&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TSOStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Status of program invoked via $TsoAtt&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$TSOWait]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Wait for program invoked via $TsoAtt to complete&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Unbin]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Value converted from binary to string representation.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Unbind_and_$UnbindW]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;$Unbind and $UnbindW: Unbind resource previously bound via $Bind&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Unblank]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Contents of an argument, removing leading and trailing blanks, and compressing multiple embedded blanks to one blank character.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Unfloat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Character string that represents a numeric counted string of 4 or 8 bytes, which contains a floating point.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Unpack]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Unpacked decimal data &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UnPost]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Resets a specified Event Control Block (ECB) to an unposted state.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UnqRec]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;In the case of a uniqueness violation, returns the file-relative record number of the record that already contains the field name = value pair&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;If no uniqueness violation occurred. returns -1.&amp;lt;/p&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;[[$UnSpace]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Normalize spaces and quotes&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Upcase]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;An uppercase string converted from a lower or mixed case string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Update]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Name of the group update file or the current file.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdFile]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Name of the file in which a field level constraint violation has occurred, or a blank if no violation occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdFld]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Name of the field for which a field level constraint violation has occurred, or a blank if no violation occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdLoc]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Location name (node name) of the current update unit (Parallel Query Option/204 only).&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdOval]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Value of the original field occurrence causing a constraint violation, when invoked from an ON FCC unit following the detection of an AT-MOST-ONE field-level constraint conflict. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdRec]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;File-relative record number of the record whose update caused a field level constraint violation, or -1 if no violation occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Numeric value denoting the type of field level constraint violation that has occurred, or 0 if no violation occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdStmt]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Type of User Language updating statement causing a field level constraint violation, or a blank if no violation occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UpdVal]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Field value causing a field level constraint violation, or a blank if no violation occurred.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UseASA]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Prevent carriage control in USE output&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$User]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;User&#039;s user number.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Userid]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;User ID under which the user is logged in.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UsrPriv]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether a user ID has been granted specific &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; privileges.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UsStat]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve user&#039;s statistics into string&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$UsStatL]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Retrieve statistics for set of users into $list&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Verify]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether every character in one string is present in a second string.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$View]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Value of a parameter.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Vnum]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Whether a given argument is in a valid format for a SORT BY VALUE NUMERICAL statement or for any type of mathematical operation.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Wait]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Suspend a user until an Event Control Block (ECB) is posted.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt; &lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$WakeUp]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Pause user until specified time&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;!--bypass FUNCHECK.WIKI--&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[List of Janus Web Server $functions|$Web_xxx]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;List of Janus Web Server $functions&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Windex]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Word number of first occurrence of word in phrase&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Word]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;P word in a specified string, delimited by a blank or optionally specified character.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$Words]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Number of words in a specified string, delimited by a blank or optionally specified character.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$X2C]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;One-byte EBCDIC characters translated from a string of 2-byte hexadecimal character.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[$X2D]]&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Convert hex string to integer&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;
==Using functions==&lt;br /&gt;
You can use functions in several ways, including, as a term in:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An expression in a variable assignment statement, for example:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%X=$EDIT(2573,&#039;99999&#039;)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The specifications in a PRINT statement&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A PRINT statement can include a function call anywhere a field name can be used. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PRINT $EDIT(2573,&#039;99999&#039;)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An expression in a conditional statement, for example:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IF $EDIT(2573,&#039;99999&#039;) EQ 02573 THEN...&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An expression which serves as the argument to another function, for example:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%L=$LEN($EDIT(2573,&#039;99999&#039;))&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The direct use of function calls in some statements, such as FIND, results in compilation errors.     &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Comparing successful and unsuccessful $function code====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If your request is coded as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
$EDIT(2573,&#039;99999&#039;)&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following error is your result:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;*** 1 M204.0229: INVALID STATEMENT $EDIT(2573,&#039;99999&#039;)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
However, if you code your request as follows, it works properly:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
PRINT $EDIT(2573,&#039;99999&#039;)&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;* Or *&lt;br /&gt;
&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;* %X=$EDIT(2573,&#039;99999&#039;) *&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Function return values===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each function returns a single value to the calling request. For example, this function sets %A equal to the user&#039;s login account name:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%a = $account&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This function causes the length of the current value of the FULLNAME field to be compared to 10:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IF $LEN(FULLNAME) GT 10 THEN&lt;br /&gt;
   .&lt;br /&gt;
   .&lt;br /&gt;
   .&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Function arguments===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Some functions require one or more arguments which allow you to pass information to the subroutine. Some functions take no arguments. Arguments must be enclosed in parentheses and separated by commas. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;IF $READ(&#039;CONTINUE?&#039;) EQ &#039;YES&#039; THEN&lt;br /&gt;
   .&lt;br /&gt;
   .&lt;br /&gt;
   .&lt;br /&gt;
%X = $mod(COUNT IN CT, %BASE)&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Rules for function arguments====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Function arguments follow the normal rules for arithmetic expressions. Arguments can include other function calls and can perform any type of computation. See the section [[Using variables and values in computation#Expressions|Expressions]] for detailed information on expression syntax.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Argument evaluation and conversion====&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; evaluates each argument to a function as either a string or a number. When this data type conflicts with the data type required by the function, the following rules apply:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If an argument is expected to be numeric but is a string, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; converts the string to a number according to the conversion rules described in the assignment statement discussion in [[Using variables and values in computation#Relationship between %variable assignment and declaration|Relationship between %variable assignment and declaration]] and [[Using variables and values in computation#Conversion|Conversion]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If an argument is expected to be a string but is numeric, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; converts the number to a string. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If the original number contains decimal places, they are lost during the conversion.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User-written functions==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to the functions provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SOUL&amp;lt;/var&amp;gt;, some customer sites write their own functions based on their particular needs.&lt;br /&gt;
Before using any user-written functions, make sure that your site&#039;s FUNU module has been reassembled with the macro library supplied with the current release. Also, please be sure to carefully test your user-written functions before your system goes into production. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;note&amp;quot;&amp;gt;&lt;br /&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;It is recommended that all user-written functions use the STMG/LMG Assembly Language instructions to save and restore any registers that are modified.&lt;br /&gt;
&amp;lt;li&amp;gt;The RESULT macro does not work in Model 204 Version 5.1 and later. Change any use of the RESULT macro in $functions to use the standard LEAVENUM, LEAVEF0 and LEAVESTR macros.&lt;br /&gt;
&amp;lt;li&amp;gt;In addition to the above considerations, see the [[Model 204 installation#FUNU|installation instructions relating to FUNU]].&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Customers are individually responsible for any functions they write. Rocket Software takes no responsibility for user-written functions or their documentation.&amp;lt;/p&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=CurrentRecordId_(Record_function)&amp;diff=120394</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=120394"/>
		<updated>2025-03-25T02:33:47Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Usage notes */&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.&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=RecordId_(Record_function)&amp;diff=120393</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=120393"/>
		<updated>2025-03-25T02:33:32Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Usage notes */&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.&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=RecordId_(Record_function)&amp;diff=120392</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=120392"/>
		<updated>2025-03-25T02:32:50Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax terms */&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. &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=CurrentRecordId_(Record_function)&amp;diff=120391</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=120391"/>
		<updated>2025-03-25T02:32:26Z</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;
==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=RecordId_(Record_function)&amp;diff=120389</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=120389"/>
		<updated>2025-03-24T23:13:03Z</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;
==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. &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=NewFromRecordId_(Record_function)&amp;diff=120387</id>
		<title>NewFromRecordId (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120387"/>
		<updated>2025-03-24T23:03:09Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax terms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:NewFromRecordId subtitle}}&lt;br /&gt;
&lt;br /&gt;
This constructor method creates a &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object from a recordId. This is only valid if the record is an [[Imagine Transparency]] record. &lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:file:NewFromRecordId syntax}}&lt;br /&gt;
{{Template:Record:group:NewFromRecordId 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;%fileRecord&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A file context &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;tr&amp;gt;&amp;lt;th&amp;gt;%groupRecord&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A group context &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;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 optional class name in parentheses denotes a [[Notation conventions for methods#Constructors|virtual constructor]]. See [[#Usage notes|&amp;quot;Usage notes&amp;quot;]], below, for more information about invoking a virtual constructor.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;recordId&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The recordId to be used to locate the record. This must be an 8-byte (string) binary value.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;filename&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The name of the file in the group (for a group context call) used to locate the record. This must be a string value.&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;
==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:NewFromRecordId footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120383</id>
		<title>NewFromRecordId (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120383"/>
		<updated>2025-03-24T21:46:56Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax terms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:NewFromRecordId subtitle}}&lt;br /&gt;
&lt;br /&gt;
This constructor method creates a &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object from a recordId. This is only valid if the record is an [[Imagine Transparency]] record. &lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:file:NewFromRecordId syntax}}&lt;br /&gt;
{{Template:Record:group:NewFromRecordId 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;%record&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A &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;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 optional class name in parentheses denotes a [[Notation conventions for methods#Constructors|virtual constructor]]. See [[#Usage notes|&amp;quot;Usage notes&amp;quot;]], below, for more information about invoking a virtual constructor.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;recordId&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The recordId to be used to locate the record. This must be an 8-byte binary value.&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;
==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:NewFromRecordId footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120382</id>
		<title>NewFromRecordId (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120382"/>
		<updated>2025-03-24T21:18:23Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:NewFromRecordId subtitle}}&lt;br /&gt;
&lt;br /&gt;
This constructor method creates a &amp;lt;var&amp;gt;Record&amp;lt;/var&amp;gt; object from a recordId. This is only valid if the record is an [[Imagine Transparency]] record. &lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:file:NewFromRecordId syntax}}&lt;br /&gt;
{{Template:Record:group:NewFromRecordId 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;%outRecord&amp;lt;/th&amp;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;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 optional class name in parentheses denotes a [[Notation conventions for methods#Constructors|virtual constructor]]. See [[#Usage notes|&amp;quot;Usage notes&amp;quot;]], below, for more information about invoking a virtual constructor.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;string&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;
==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:NewFromRecordId footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120381</id>
		<title>NewFromRecordId (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120381"/>
		<updated>2025-03-24T21:16:42Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:NewFromRecordId subtitle}}&lt;br /&gt;
&lt;br /&gt;
This page is [[under construction]].&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:file:NewFromRecordId syntax}}&lt;br /&gt;
{{Template:Record:group:NewFromRecordId 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;%outRecord&amp;lt;/th&amp;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;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 optional class name in parentheses denotes a [[Notation conventions for methods#Constructors|virtual constructor]]. See [[#Usage notes|&amp;quot;Usage notes&amp;quot;]], below, for more information about invoking a virtual constructor.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;string&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;
==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:NewFromRecordId footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120375</id>
		<title>NewFromRecordId (Record function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=NewFromRecordId_(Record_function)&amp;diff=120375"/>
		<updated>2025-03-24T18:47:39Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Record:NewFromRecordId subtitle}}&lt;br /&gt;
&lt;br /&gt;
This page is [[under construction]].&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Record:file:NewFromRecordId 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;%outRecord&amp;lt;/th&amp;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;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 optional class name in parentheses denotes a [[Notation conventions for methods#Constructors|virtual constructor]]. See [[#Usage notes|&amp;quot;Usage notes&amp;quot;]], below, for more information about invoking a virtual constructor.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;string&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;
==Examples==&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Record:NewFromRecordId footer}}&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>