<?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=Abe</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=Abe"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Special:Contributions/Abe"/>
	<updated>2026-04-20T05:34:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Model_204_documentation&amp;diff=120315</id>
		<title>Model 204 documentation</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Model_204_documentation&amp;diff=120315"/>
		<updated>2024-10-31T15:45:22Z</updated>

		<summary type="html">&lt;p&gt;Abe: added section “Old PDFs, for linear reading and offline reading”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rocket Model 204 documentation has been converted from individual manuals in PDF format to a set of cross-linked HTML articles in this integrated wiki, [[M204wiki main page|M204wiki]]. The very few documents that remain in PDF are accessible from M204wiki. &lt;br /&gt;
&lt;br /&gt;
This page specifies which manuals have been converted to M204wiki pages and which manuals remain in PDF format. The page is divided into a section for the &amp;quot;standard&amp;quot; Model&amp;amp;nbsp;204 document set prior to version 7.5 and a section for the &amp;quot;added-on&amp;quot; [[Sirius Software|Sirius]] products.  &lt;br /&gt;
&lt;br /&gt;
==Standard Model 204 documents==&lt;br /&gt;
This section tracks the Rocket Model 204 documentation set that existed prior to version 7.5.&lt;br /&gt;
&lt;br /&gt;
===Converted from PDF to M204wiki===&lt;br /&gt;
The following Model 204 manuals have been converted to M204wiki:&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;Manual&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;M204wiki starting page&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Application Development Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Application development|Application development main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Connect&amp;lt;span class=&amp;quot;superstar&amp;quot;&amp;gt;&amp;amp;#9733;&amp;lt;/span&amp;gt; Suite Installation and Programming Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Connect*|Connect&amp;lt;span class=&amp;quot;superstar&amp;quot;&amp;gt;&amp;amp;#9733;&amp;lt;/span&amp;gt; main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Dictionary/204 and Data Administration Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Dictionary/204|Dictionary/204 main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Editing Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Model_204_editor|Model 204 editor]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 File Manager&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;td&amp;gt;[[File management overview]]&amp;lt;br&amp;gt;[[File architecture overview]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Horizon: Intersystem Processing Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Horizon|Horizon main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Host Language Interface Programming Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Host Language Interface (HLI)]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Host Language Interface (HLI)]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Installation Guide on IBM z/VM CMS&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Model 204 installation on IBM z/VM CMS]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Installation Guide on IBM z/OS&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Model 204 installation on IBM z/OS]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Installation Guide on IBM z/VSE&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Model 204 installation on IBM z/VSE]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Language Support Summary&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Model 204 language 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;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 MQ/204 Reference&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[MQ/204 overview]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Parallel Query Option/204 User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[PQO: Overview of Parallel Query Option/204|Overview of Parallel Query Option/204]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Parameter and Command Reference&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[List of Model 204 commands|Model 204 and Sirius commands]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[List of Model 204 parameters|Model 204 and Sirius parameters]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Release Notes&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Release notes for Model 204 version 7.5]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Security Interfaces Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Security_interfaces|Security interfaces main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 SNA Communications Server Printer Support Summary&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:SNA Communications Server|SNA Communications Server main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 SQL Connectivity Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:SQL connectivity|SQL connectivity main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 SQL Server User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[SQL Server overview]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 System Manager&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;td&amp;gt;[[:Category:System_management|System management]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Terminal_processing_and_support|Terminal processing and 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;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 User Language/DATABASE2 Interface Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[UL/DB2]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 User Language Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:SOUL|SOUL/User Language]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket SoftSpy for Model 204 Installation Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[SoftSpy installation guide]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket SoftSpy for Model 204 Messages Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[SoftSpy messages]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket SoftSpy for Model 204 Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:SoftSpy|SoftSpy main page]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket SoftSpy for Model 204 Release Notes&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Release notes for SoftSpy V7.5]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Still in PDF format===&lt;br /&gt;
For products not in the preceding table, the PDFs remain the principal resource. &amp;lt;br /&amp;gt;&lt;br /&gt;
The latest version (7.5) of the primary product manuals still in PDF format is available here:&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:M204_DBCSSupportGuide_V75.pdf|Rocket Model 204 DBCS Support Summary]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:M204_MessagesManual_V75.pdf|Rocket Model 204 Messages Manual]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/i&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Model 204 version 7.5 PDF documentation is also available in the &amp;lt;code&amp;gt;Rocket M204&amp;lt;/code&amp;gt; folder of the [http://docs.rocketsoftware.com/nxt/gateway.dll?f=templates$fn=default.htm Rocket Documentation Library]. &lt;br /&gt;
&amp;lt;p&amp;gt;The library also contains documentation for Model 204 versions 7.4 and 7.1.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Installation guides for version 7.4====&lt;br /&gt;
&amp;lt;p&amp;gt;For quick reference, the 7.4 installation guides are provided here:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:M204_InstallzOS_V74.pdf|Rocket Model 204 Installation Guide for IBM z/OS, version 7.4]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:M204_InstallzVM_V74.pdf|Rocket Model 204 Installation Guide for IBM z/VM, version 7.4]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:M204_InstallzVSE_V74.pdf|Rocket Model 204 Installation Guide for IBM z/VSE, version 7.4]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/var&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sirius documents==&lt;br /&gt;
This section tracks the documentation of the formerly-Sirius products. A significant amount of this documentation now resides in M204wiki.&lt;br /&gt;
&lt;br /&gt;
===Converted from PDF to M204wiki===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following manuals have been completely converted to M204wiki: &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;&amp;lt;th&amp;gt;Manual&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;M204wiki starting page&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Fast/Backup User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Fast/Backup]] &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Fast/CRAM Installation Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Fast/CRAM]] &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Fast/Reload Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Fast/Reload]] &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Fast/Unload Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Fast/Unload overview]] &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Fast/Unload Release Notes Version 4.6&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Release notes for Fast/Unload V4.6]] &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Janus Network Security Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Janus Network Security]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Janus SOAP Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Janus SOAP]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Janus Web Server Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Janus Web Server]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Janus TCP/IP Base Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Janus TCP/IP Base]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Janus Sockets Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Janus Sockets]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirFact Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirFact]] &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Sirius Functions Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[List of $functions]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Sirius Messages Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[:Category:Sirius messages]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Sirius Mods Command and Parameter Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[List of Model 204 commands]]&amp;lt;br&amp;gt;[[List of Model 204 parameters]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirAud Installation and Reference Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirAud]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirDBA User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirDBA]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirFile User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirFile]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirLib User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirLib]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirMon User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirMon]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirPro User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirPro]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirSafe Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirSafe]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirScan User&#039;s Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirScan]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirTune Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[SirTune introduction]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;SirZap User&#039;s Guide and Reference&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[RockZap]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Sir2000 User Language Tools Reference Manual&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Sir2000 User Language Tools]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Release notes for Sirius Mods V8.1&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Release notes for Sirius Mods V8.1]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Release notes for Sirius Mods V8.0&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Release notes for Sirius Mods V8.0]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Release notes for Sirius Mods V7.9&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Release notes for Sirius Mods V7.9]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Release notes for Sirius Mods V7.8&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[Release notes for Sirius Mods V7.8]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;UL/SPF Installation and Maintenance Guide&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
&amp;lt;td&amp;gt;[[RKTools installation]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Still in PDF format===&lt;br /&gt;
For products not in the preceding table, the PDFs remain the principal resource:&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;i&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:JoclrNew.pdf|Janus Open Client Reference Manual]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:JosrvrNew.pdf|Janus Open Server Reference Manual]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:JsdsrNew.pdf|Janus Specialty Data Store Reference Manual]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:JdebugrNew.pdf|Janus/TN3270 Debugger User Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:SiriNew.pdf|Sirius Mods Installation Guide]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Media:SirfieldNew.pdf|Sir2000 Field Migration Facility Reference Manual]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/i&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Old PDFs, for linear reading and offline reading==&lt;br /&gt;
&amp;lt;li&amp;gt;[https://wiki.rocketsoftware.com/display/IM/PDF+documentation Files page for PDF documentation in the Imagine project part of the main Rocket Wiki]&amp;lt;/li&amp;gt;&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120305</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120305"/>
		<updated>2024-10-03T14:33:26Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Compilation errors */  removed AFAIK-incorrectly-added recent addition of underlining to the example re when the mode is “X&amp;#039;01&amp;#039;”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly-used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored in one or more physical data sets on direct-access storage devices (DASDs).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single-remote-file context, or in scattered-group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered-group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message — one or many — to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;lt;u&amp;gt;C&#039;A1B2&#039;&amp;lt;/u&amp;gt;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120304</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120304"/>
		<updated>2024-10-03T14:21:58Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Compilation errors */  underlining&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly-used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored in one or more physical data sets on direct-access storage devices (DASDs).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single-remote-file context, or in scattered-group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered-group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message — one or many — to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;&amp;lt;u&amp;gt;C&#039;A1B2&#039;&amp;lt;/u&amp;gt;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;lt;u&amp;gt;C&#039;A1B2&#039;&amp;lt;/u&amp;gt;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120303</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120303"/>
		<updated>2024-10-03T14:05:58Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Compilation errors */  em dashes around “one or many”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly-used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored in one or more physical data sets on direct-access storage devices (DASDs).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single-remote-file context, or in scattered-group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered-group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message — one or many — to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120302</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120302"/>
		<updated>2024-10-03T14:04:28Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Remote files and scattered groups */  hyphenation [again — I missed one the first time in this section]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly-used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored in one or more physical data sets on direct-access storage devices (DASDs).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single-remote-file context, or in scattered-group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered-group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120301</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120301"/>
		<updated>2024-10-03T14:03:30Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Remote files and scattered groups */  hyphenation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly-used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored in one or more physical data sets on direct-access storage devices (DASDs).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single-remote-file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered-group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120300</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120300"/>
		<updated>2024-10-03T14:02:38Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Composition of a Model 204 file */  “direct access devices” =&amp;gt; “direct-access storage devices (DASDs)”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly-used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored in one or more physical data sets on direct-access storage devices (DASDs).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single remote file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120299</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120299"/>
		<updated>2024-10-03T14:01:17Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Stored procedures */  hyphenation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly-used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored on one or more physical data sets on direct access devices.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single remote file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120298</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120298"/>
		<updated>2024-10-03T14:00:42Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Fields */  hyphenation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply-occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored on one or more physical data sets on direct access devices.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single remote file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120297</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120297"/>
		<updated>2024-10-03T13:59:34Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Report statements */  “multipage reports” instead of “multiple page reports”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multipage reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored on one or more physical data sets on direct access devices.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single remote file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120296</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120296"/>
		<updated>2024-10-03T13:58:34Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Computation */  hyphenation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character-string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multiple page reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored on one or more physical data sets on direct access devices.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single remote file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120295</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120295"/>
		<updated>2024-10-03T13:57:50Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Overview */ hyphenation, “multiprocessing” instead of “multiple processing”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly-complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiprocessing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multiple page reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored on one or more physical data sets on direct access devices.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single remote file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120294</id>
		<title>Introduction to User Language</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Introduction_to_User_Language&amp;diff=120294"/>
		<updated>2024-10-03T13:53:52Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Evaluation errors */ added a link to version 7.5 of the terminal user guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&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; is a comprehensive, multipurpose database management system for IBM and compatible mainframes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; incorporates a versatile self-contained User Language programming language for ad hoc inquiry, simple and complex data retrieval, updating, report writing, transaction processing, and application development. No background in programming is required to use the query statements; yet, as you gain experience with User Language, you can write increasingly complex programs, called requests.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request structure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A typical User Language request begins with statements that select records from one or more files. Loop statements then specify a series of operations to be performed on each of the selected records. The operations for each record can be simple output, field update, or computation statements. User Language also provides statements that generate loops for each value of a field, for each occurrence of a repeating field, and for each element of an array.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In addition to record, value, occurrence, and index loops, User Language also provides statements for conditional execution and loop control.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example illustrates the simplicity of User Language. Using English-like statements, you can select from a CLIENTS file all drivers who are registered in San Diego, whose agent is either KESSLER or WAGNER, and who have a total premium greater than $200. The User Language request would contain these statements:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;BEGIN&lt;br /&gt;
 GET.RECS: FIND ALL RECORDS FOR WHICH&lt;br /&gt;
               CITY = SAN DIEGO&lt;br /&gt;
               TOTAL PREMIUM IS GREATER THAN 200&lt;br /&gt;
               AGENT = KESSLER OR WAGNER&lt;br /&gt;
           END FIND&lt;br /&gt;
           FOR EACH RECORD IN GET.RECS&lt;br /&gt;
               PRINT FULLNAME WITH AGENT AT COLUMN 30&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;The online output from this request would be in this format:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FREEMAN, IRA U.               KESSLER&lt;br /&gt;
GRIFFIN, SCOTT G.             KESSLER&lt;br /&gt;
HEATH, RUTH S.                KESSLER&lt;br /&gt;
O&#039;BRIEN, EARL Q.              WAGNER&lt;br /&gt;
OWENS, MARGARET C.            WAGNER&lt;br /&gt;
RICHARDSON, LISA O.           WAGNER&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Stored procedures===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any combination of commands and User Language statements can be saved for later execution. These sequences can be rerun at any time, or edited and rerun at any time, without being reentered. Stored procedures are permanently stored in your database until they are deleted or revised.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be included as parts of requests, or they can be run alone either unconditionally or as a result of a specified test. Typical practice is to store commonly used requests, application procedures, screen layouts, or print statements for standard report formats.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stored procedures can be made more flexible by using techniques which call for end-user input at runtime by suspending execution and displaying a prompt. The user&#039;s input is used by the procedure as the value of a variable which can specify, for example, a record search criterion.      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Optional User Language/DATABASE 2 Interface===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Rocket Software offers the User Language/DATABASE 2 Interface, which allows you to access DB2 data from within &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; User Language procedures. This interface gives you the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to use User Language %variables as host variables from within SQL statements&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Allows you to issue SQL commands from within a User Language procedure&amp;lt;/li&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;
See the Rocket User Language/DATABASE 2 Interface Guide for more information about this product.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===MP/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MP/204 product provides full support of multiple processing capability under the z/OS operating systems. MP/204 allows your site to take full advantage of multiprocessor configurations for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to [[Performance monitoring and tuning#Multiprocessing (MP/204)|MP/204]] for information on using MP/204, including [[SOUL]] considerations.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parallel Query Option/204===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 (PQO) is a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; distributed processing facility that allows the sharing of data between two or more copies of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 provides User Language applications access to remote files. A single User Language transaction can read and/or update multiple remote files.  &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Types of User Language statements==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language consists of several types of statements, including those listed below. Each type of statement is described in more detail in the following sections.&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;Type of statement &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Provides...&amp;lt;/th&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;Record selection statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Selection based on the values of one or more fields, combined with a full range of Boolean facilities.&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;Logic and control statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Record set looping, request termination, and data dependent operations.&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;Computational facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Full range of numeric and string computations.&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;Reporting operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Facilities suitable for simple ad hoc requests and sophisticated multifile reports.&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;Full-screen formatting facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;For the creation of full-screen applications and for the control of the attributes (such as color and highlighted fields) for formatted screens.&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;Database maintenance operations &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wide range of update facilities.&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;File and terminal access statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;User Language image facility to allow access to VSAM and sequential files and to a terminal.&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;Program communication facilities &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Connection and communication between a User Language request and a CICS transaction or CMS EXEC, as well as LU 6.2 program-to-program processing.    &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;Request development and manipulation statements &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Online application development facilities for the creation, storage, modification, and execution of User Language requests.&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;
===Record selection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can select records from &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases on the basis of one or more field values. Complex retrieval conditions can be created using AND, OR, NOT, and NOR. The selection criteria can include comparison to alphanumeric patterns and previous record selection lists.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Logic and control statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements that allow a portion of a program to loop based on found record sets, field values, index values, or a specified number of repetitions. Conditional processing statements, including IF statements, are supported. User Language also has statements to control request termination such as END, END MORE, and STOP.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Computation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language can perform arithmetic and logical operations using constants, field values, special temporary variables, and functional values. You can define any number of temporary variables within the context of a request. Variables can be set in assignment statements or used within expressions, and they can be arrays. The number of significant digits retained by fixed point or string variables can be set. Variable names always start with a percent sign (for example, %YEAR).       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A set of built-in functions extends the capabilities of User Language. These functions provide facilities for data editing and validation, character string manipulation, global variables, and current date and time. The FORTRAN set of mathematical functions is also available as an option. Function names always start with a dollar sign (for example, $DATE).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Expressions are formed by combining constants, variables, functions, field names, or other expressions with operators. Parentheses can be used to alter the normal sequence of operations.     &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Computational results can be used for output purposes, to store derived information in the database, or to control the sequence of operations within a request.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Report statements===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language provides statements for sorting and formatting output from requests into reports. System reports can also be generated to the journal or audit trail.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Entire records, the contents of selected fields within records, or computations based on the selected fields can be formatted and displayed. Output can be displayed at the terminal, directed to a data set for intermediate storage, or directed to system spooling facilities (that is, printers).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field values can be positioned anywhere on the terminal display: left-justified, right-justified, truncated between two positions, or positioned at variable tab stops. Field values can be concatenated and edited for output. Quoted strings can be printed for output labels or comments. Page header and trailer lines can be entered or deleted on multiple page reports. Paging is specified by a variable line count parameter; new page and multiple line-skip statements are provided.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Output can be formatted using the full-screen feature and displayed for subsequent review and data entry.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Full-screen formatting===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
User Language has a comprehensive set of full-screen capabilities that display screens that are formatted with user-specified titles, prompts, and input items. These capabilities are particularly useful in data entry applications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can format menus and screens, specify validation tests for input fields entered by the end user, and to select certain optional terminal facilities. These facilities include:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Use of bright intensity and terminal color options to highlight particular fields on the screen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fields to blink on and off&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Audible terminal alarm to alert the end user that a menu or screen is being displayed.&amp;lt;/li&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;
When the full-screen feature is used with a video display terminal, the full screen is treated as a single entry. The entire screen is transmitted to a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; request at one time, rather than field by field. Thus, the terminal operator can enter fields in any order on the screen and correct input data at any time before the screen is transmitted.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Database maintenance===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Database store, update, and delete capabilities are provided by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; for sets of selected records as well as for individual records. You can add or delete entire records and add, change, or delete individual fields in a set of one or more records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
No restrictions are placed on allowable data maintenance operations by the original configuration of the file. For example, existing individual records can be extended to include new fields neither previously used nor included in the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File and terminal access===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The User Language image facility provides read access to VSAM KSDS files as well as read and write access to sequential files and to a terminal. A terminal can be a physical device or a Host Language application program connected to User Language through IFDIAL.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Program communication===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can request communication with user-written CICS programs or CMS EXECs. These facilities include a process-to-process facility in CICS and CMS, a CICS transfer control facility, a SNA Communications Server (formerly VTAM) transfer control facility, and the optional Horizon Interface, which supports LU 6.2 communications. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Request development and manipulation===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can name and save User Language procedures for reuse. User Language allows requests to be named and saved as procedures, to be reused. The Subsystem Management facility of Dictionary supports the definition of a collection of procedures as a subsystem, which can have its own characteristics and shared routines. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Database structure==&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; databases are structured to provide a very high degree of flexibility, data independence, and retrieval efficiency. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; databases are groups of files that consist of sets of variable-length, variable-format records. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records consist of sets of individually named variable-length fields, which can be of several types. The variable-length, variable-format records provide independence of the database structure from users&#039; application queries and updates.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Fields===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The fundamental unit of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; data is a pairing of a field name and a corresponding field value (field name = value pair). For example, in&lt;br /&gt;
CITY = SAN DIEGO, CITY is the field name and SAN DIEGO is the field value. Field names and field values are treated by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; as variable-length strings of information. Both field names and field values can contain any number of words up to a limit of 255 characters.        &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When more than one space is left between words in a field name or value, the extra spaces are ignored. Blanks surrounding the equal sign are optional. Therefore:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN   SMITH&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;NAME=JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
are treated as if each were&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;NAME = JOHN SMITH&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Field names can appear more than once within single records. Such multiply occurring fields can be used in expressing retrieval conditions in the same manner as other fields. File maintenance statements are provided for changing or deleting multiply occurring fields.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Each &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; field has a set of one or more attributes called the field description. In [[#Request structure|Request structure]], the field CITY might be a KEY field. Thus, records containing the value CITY = SAN DIEGO can be located through the index (Table C), rather than by directly searching the data records (Table B). CITY might also be an FRV (for-each-value) or ORDERED field, which means that it can be used with FOR EACH VALUE statements (see [[Value loops]]).      &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Records===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are collections of fields. Because the field, not the record, is the fundamental unit of data, records within a given file can all have the same format (same collection of field names), or they can have different formats. File maintenance activities such as adding new fields to individual records can be performed at any time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; imposes no limit on the number of fields per record.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A collection of related records stored together with their associated index pointers forms 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;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The creation of a file, the definition of field names, and the initial loading of records are the responsibility of the file manager. These operations are described in detail in the [[:Category:Model 204 files|Model 204 files]] pages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once a file has been defined to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;, records can be added or changed by using [[SOUL]] statements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Files are discussed in more detail in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Files==&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; offers a unique file structure which provides several different ways of ordering records to allow for differing database requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inverted files===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A data access method is called inverted when the DBMS maintains, in addition to the data records, a map of the records that contain particular values for certain fields called retrieval fields. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; has a unique approach to handling inverted structures. It permits very rapid access to records that satisfy selection conditions based on the values of key fields. The inversion maps or indexes provide several paths through which you can access the data.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Composition of a Model 204 file===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is stored on one or more physical data sets on direct access devices.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file is divided into the following logical sections: &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;Logical section &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Purpose&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;File Control Table &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keeps track of file parameter settings, data set or file definition names of all data sets in the file, the status of the file, and other control information.&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;Table A &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Is a dictionary of the field names and coded field values in the file.&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;Table B &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the retrievable data of all records in the file.&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;Table C &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Stores an entry for every field name = value pair that occurs in the file for fields defined as KEY. There are also many entries for every field name = value pair that occurs for fields that have the NUMERIC RANGE attribute.&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;Table D &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Contains the Ordered Index, which includes an entry for every field name = value pair that occurs in the file for fields defined as ORDERED. Table D also contains lists of Table B record numbers for all KEY or NUMERIC RANGE or ORDERED field name = value pairs that occur more than once in the file. Procedures and the procedure dictionary are stored in Table D as well.     &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;Table E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Stores Large Object data that includes a Large Object data descriptor for the length, reserve, and a pointer to the Large Object data in Table E.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Large object data is not automatically indexed.Your application must associate the Large Object field with another field in the record that can be indexed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===File types===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files in one of four orders: entry order, unordered, sorted, or hash key. Each file order is discussed separately in the following section. For a more detailed description of each file order, refer to the Rocket &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; File Manager&#039;s Guide.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Entry order files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The most frequently used method of storing records is in the order in which they are entered (hence &amp;quot;entry order&amp;quot; files). Records are retrieved in the order in which they were entered.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a record in an entry order file is deleted, the record number is not reused.   The space occupied by the deleted record, however, does become available for the expansion of existing records. New records are appended to the end of the file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Unordered files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a file is unordered, the space freed by deleted records can be reused when new records are added.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Sorted files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Records are stored in order of the value of a particular field called the sort key. The sort key is designated by the file manager when the file is initialized. For example, the demonstration database file CLIENTS is a sorted file in which FULLNAME is the designated sort key.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The sort field can be specified as either mandatory or optional. When a sort field is mandatory, all records must have it. If it is optional, records without sort fields are accepted. (For example, [[Data maintenance#STORE RECORD statement|STORE RECORD statement]].) The sort is based on the standard EBCDIC character set and collating sequence: punctuation, then letters, then numbers. Sorted files are useful when a large percentage of reports are produced in the same sort sequence.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Hash key files&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Hashing is a technique for key-to-storage address translation that eliminates the need for multiple levels of indexing. This file order allows &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; to retrieve quickly on a single unique key, without the overhead of index searches. The records themselves are stored in random order. The hash key can be specified as either mandatory or optional.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===File groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A file group is a collection of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; files that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; treats as a single file. The file group facility is useful in applications where certain data is maintained in separate files but it is necessary to process all of the data together. For example, fifty individual state files can be processed as members of regional file groups (such as SOUTH) and as a file group for the entire country, USA.   &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Remote files and scattered groups===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Parallel Query Option/204 users can access data stored in files in remote locations, in single remote file context, or in scattered group context. A scattered group is a file group which is locally defined, and which includes at least one remote file as a member.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Throughout this manual, all references to remote files, scattered groups, and remote file or scattered group context, are addressed to Parallel Query Option/204 users. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==Request compilation and evaluation==&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; processes a User Language request in two phases: compilation and evaluation. During compilation, the text of the request is checked for proper syntax, and the statements are translated into an internal format that &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; can execute. During evaluation, certain types of user responses are entered and the request is actually executed.            &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Compilation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Errors can occur during compilation or evaluation. If errors occur during compilation, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; reports them by displaying appropriate error messages. In most cases, if you have the appropriate display privileges, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; displays, on the next line, the line of the User Language request in which a compilation error occurred. Compilation errors must be corrected before a request can be run.    &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Compilation error handling&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Sometimes an initial compilation error causes a cascade of subsequent error messages that do not help you analyze the problem. Furthermore, the error messages do not point out just where the problem occurred. The COMPERR parameter lets you determine how many error message--one or many--to display and to highlight the code that resulted in the error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can set COMPERR to X&#039;01&#039;, X&#039;02&#039;, X&#039;04&#039;, or a sum of a combination of your choice. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;01&#039; points to (&amp;gt;&amp;gt; &amp;lt;&amp;lt;) the first error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(&amp;gt;&amp;gt;C&#039;A1B2&#039;&amp;lt;&amp;lt;) STATIC *******&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;02&#039; underlines (__) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&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;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;** 1***** M204.2775: INVALID EXPRESSION IN INITIAL CLAUSE ************&lt;br /&gt;
    ***** %A IS STRING LEN 10 DP 0 INITIAL(C&#039;A1B2&#039;) STATIC ***********&lt;br /&gt;
    ***** (FILE = ULP42, PROCEDURE = V4R2.TEST.42FINIT.ERRORA, LINE=10&lt;br /&gt;
    ***** M204.1042: COMPILATION ERRORS&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;03&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error and displays only that error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;04&#039; displays all messages.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;COMPERR=X&#039;07&#039; both underlines and points to (&amp;gt;&amp;gt;__&amp;lt;&amp;lt;) the error, as well as displays all messages.&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;
===Counting errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Certain types of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; compilation errors cause a counter to be incremented. When a counting error is encountered, a message is displayed and evaluation continues. However, if the counter reaches the value set by the &amp;lt;var&amp;gt;[[ERMX parameter|ERMX]]&amp;lt;/var&amp;gt;, processing is stopped and the user&#039;s session is also stopped. For more information on counting errors, refer to the [http://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew556/model%20204/v7.4/m204_messagesmanual_v74.pdf Model 204 core messages].  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Evaluation errors===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If errors occur during evaluation, the way they are handled by &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; depends upon the type of error that has occurred. The various methods of error handling are described as follows:       &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Automatic evaluation continuation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases such as an arithmetic overflow or division by zero, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; prints out an informational message, provides a default value or course of action, and continues to evaluate the request. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For SOUL functions, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; provides a default value or course of action (such as returning a null string or an error indicator) and continues to evaluate the request. See [[SOUL $functions#Summary_of_standard_functions|Standard SOUL $functions]], for detailed individual descriptions, including information on the default value returned or action taken.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request control&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The request can determine how to handle certain error conditions through the use of the following facilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Error message retrieval: The error message retrieval facility allows you to retrieve the error message when an I/O error occurs such as a file open failure on an external file. This facility allows the request to determine the course of action to be taken. For more information refer to:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Files, groups, and reference context#Error handling|Error handling on file opening]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Images#Error handling|Images error handling]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[Program Communication facilities]]&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;ON units: The ON unit facility allows you to specify a course of action to be taken when an event occurs that is beyond your ability to control. Refer to [[Subroutines#ON units|ON units]] for more information on this facility.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Error procedure: Using the Subsystem Management facility, you can define the error procedure to invoke when a condition occurs that cannot be handled by the executing procedure. For a complete discussion of the Subsystem Management facility and error procedure definition, see [[Application Subsystem development]].&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Request cancellation&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In some cases, errors that normally would be determined during compilation cannot be determined until evaluation. For example, when a variable is used, the value of the variable is not determined until evaluation. The value might result in an error (such as an attempt to print a field with the INVISIBLE attribute). Errors of this type cancel the request, and back out the transaction (if necessary). &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;User restart&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a serious error occurs such as the filling of internal tables, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; cannot recover while the user is running. Therefore, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; stops the request, closes all files, logs the user out, and displays a message. The user can then log back in and start over. If the files have been physically damaged, the file manager must correct the damage before the user can proceed. For more information on user restarts, refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model&amp;amp;nbsp;204 Terminal User&#039;s Guide&amp;lt;/var&amp;gt; —  [https://m204wiki.rocketsoftware.com/images/3/33/M204_TerminalUserGuide_V75.pdf version 7.5 of the terminal user guide]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Security==&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 these security features to protect users:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Field-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;File &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Group&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Login&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Record-level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
All &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features are optional. In addition, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; interfaces also are available for other security products.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The discussions of User Language operations in this topic assume that the user has the required privileges and access rights according to the security features in use. &amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Login security===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Logging into &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; invokes login security, the most basic &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security mechanism. The login security scheme requires users to identify themselves at the start of a &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; session. &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; uses this identification to determine the type of operations that a particular user is authorized to perform during the session.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A user login is optional at some installations. When a login is required, user login operations include the issuing of a login command (with a valid user ID) and, optionally, the entering of a password.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;LOGIN or LOGON&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If a user login is required, every user must issue the following &amp;lt;var&amp;gt;[[LOGIN or LOGON command|LOGIN]]&amp;lt;/var&amp;gt; (or &amp;lt;var&amp;gt;LOGON&amp;lt;/var&amp;gt;) command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;LOGIN [userid [account]]&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;LOGON [userid [account]]&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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;userid&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the user 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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;account&amp;lt;/var&amp;gt; is a 1- to 10-character name that identifies the account under which you are logging into &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;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Password protection&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
After LOGIN or LOGON is issued, &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; may prompt you for a password by displaying:&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;*** M204.0347: PASSWORD&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;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; expects you to reply with a password of as many as eight characters. If you enter a valid password (and your account is also valid), &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; grants you the privileges associated with your user ID.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;With [[System requirements for Application Subsystems|application subsystems]], an automatic login facility is available. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;If you have the appropriate privileges, you can change the password at login time. The procedure for changing a password is discussed in [[LOGIN or LOGON command]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===For more information===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;For a detailed description of other &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; security features, refer to [[Establishing and maintaining security]] and [[Storing security information (CCASTAT)]]. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Refer to the [[:Category:Security_interfaces|Security interfaces topics]] for more information about the optional security interfaces available in &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;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SOUL]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120292</id>
		<title>Model 204 full-screen editor</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120292"/>
		<updated>2024-09-27T19:14:08Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Procedure update control */  grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The full-screen editor enables you to use the special capabilities of the IBM 3270 and compatible terminals.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Model 204 provides the following editors, which you can use to enter, change, or add text to Model 204 requests and procedures:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Full-screen editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for full-screen terminals.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Line editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for line-at-a-time terminals. Optionally, you can invoke this editor from a full-screen terminal.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This topic describes how to use the full-screen editor. [[Model 204 line editor]] describes the line editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Editing capabilities===&lt;br /&gt;
Special features of the full-screen editor include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Full-screen mode&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 are always in full-screen mode, even when text is being entered or added to a procedure. You can position the cursor at any text on the display screen and delete, insert, or change characters by typing at that point.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Special screen display&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The display screen contains a display area and, optionally, either a prefix or a suffix area for entry of prefix commands to perform editing operations. (See [[#Using targets with prefix commands|Using targets with prefix commands]].) You can display a column scale at the center of the screen to facilitate the positioning of text in specific columns.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Automatic text wrapping&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines that are longer than the normal display line are automatically wrapped onto subsequent display line(s).&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Global text searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can search throughout a procedure for any string of characters. You can replace characters and specify wildcard characters to match all or part of the specified string. This feature is described in [[#Specifying a string|Specifying a string]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefixes and targets&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can specify both editing operations (prefixes) and the lines on which the edits are to be performed (targets) by entering abbreviated commands in the prefix or suffix area of the screen. Prefixes and targets are described in [[#Specifying range targets|Specifying range targets]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;PF key functions&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use PF3 to quit, PF7 to scroll backward, PF8 to scroll forward, and PF9 to repeat commands while editing in full-screen mode.&lt;br /&gt;
&lt;br /&gt;
==Invoking the full-screen editor==&lt;br /&gt;
 &lt;br /&gt;
===Model 204 requirements===&lt;br /&gt;
Before invoking the full-screen editor, set the Model 204 LOUTPB parameter to a minimum value of 3000. The [[LOUTPB parameter]] specifies the length of the output page buffer for 3270 terminals that use the full-screen capabilities.&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor===&lt;br /&gt;
You can invoke the full-screen editor in the following ways:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Directly from Model 204 command level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Indirectly in a User Language (SOUL) request&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
To invoke the full-screen editor from a terminal, enter the &amp;lt;var&amp;gt;[[EDIT command|EDIT]]&amp;lt;/var&amp;gt; command.&lt;br /&gt;
 &lt;br /&gt;
====Using the EDIT command====&lt;br /&gt;
To invoke the full-screen editor, use the &amp;lt;var&amp;gt;EDIT command&amp;lt;/var&amp;gt;. The format of the &amp;lt;var&amp;gt;EDIT&amp;lt;/var&amp;gt; command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT(SCREEN)[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Specifying the type of editor====&lt;br /&gt;
You can include a parameter that indicates which of the Model&amp;amp;nbsp;204 editors to invoke.  To request the full-screen editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (SCREEN)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To request the line editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (LINE)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you do not specify either SCREEN or LINE, the appropriate editor for your terminal type is invoked. For example, if your terminal is an IBM 3270 and you enter EDIT while at command level or while executing a SOUL request, the full-screen editor is invoked automatically. The full-screen editor is not available from an IBM 3270 terminal that is connected to Model 204 through an access method that does not support full-screen input and output.&lt;br /&gt;
 &lt;br /&gt;
====Specifying an input procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; parameter to name a temporary or permanent procedure to be used as input for the current editing session. If you do not specify an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; option, the full-screen editor creates a temporary procedure (Model&amp;amp;nbsp;204 temporary procedure 0). Note that you cannot use the full-screen editor to create a new and permanent procedure if you specify a nonexistent input procedure.&lt;br /&gt;
&lt;br /&gt;
====Specifying an output procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter to specify an output procedure name. You can include an output procedure name in the EDIT command or specify a name when you exit from the procedure with an END, GO, or SAVE command. After the editing session terminates, Model 204 saves the procedure under the specified &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; name. If you specify a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter in the EDIT command and enter a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter when exiting from the procedure, the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter specified when exiting overrides the name specified in the EDIT command.&lt;br /&gt;
&lt;br /&gt;
For information about the rules for procedure names, see [[EDIT command#Procedure names|Procedure names]].&lt;br /&gt;
&lt;br /&gt;
====Results of using the EDIT command====&lt;br /&gt;
After you invoke the full-screen editor, use any of the commands described in this chapter. When you enter the full-screen editor, the first portion of the procedure to be edited appears in the display area and the cursor appears at the beginning of the command line. To reposition the cursor to the command line, press the HOME key (usually ALT-BACKTAB).&lt;br /&gt;
&lt;br /&gt;
When you issue an EDIT command, the full-screen editor writes the following message to the Model 204 audit trail:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.0685: EDITING INTO newproc&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor indirectly===&lt;br /&gt;
You can invoke the full-screen editor indirectly by including the EDIT command in a SOUL request by using the TERMINAL option in the following format:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT (TERMINAL)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TERMINAL option of EDIT====&lt;br /&gt;
The TERMINAL option invokes the full-screen editor from within a procedure and connects the editor to your terminal for input. For more information about the TERMINAL option, refer to the Model 204 [[EDIT command]] wiki page.&lt;br /&gt;
&lt;br /&gt;
==Display screen format==&lt;br /&gt;
The typical format of the display screen during an editing session is shown in the following figure. &lt;br /&gt;
&lt;br /&gt;
The areas numbered in the diagram are described below the figure.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot; style=&amp;quot;width:550px&amp;quot;&amp;gt;Sample Display Screen&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;figure&amp;quot;&amp;gt;[[File:Editing_Guide_ch1_Sample_Display_Screen.gif]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Screen components===&lt;br /&gt;
The components of the display screen are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Header Line&lt;br /&gt;
&amp;lt;p&amp;gt;The top line of the screen is reserved for procedure identification. The header line contains the following information:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Old procedure name (before editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New procedure name (after editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Line number of the current line within the procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current maximum line number within the procedure &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Message Line&lt;br /&gt;
&amp;lt;p&amp;gt;The second line is reserved for error and status messages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command Line&lt;br /&gt;
&amp;lt;p&amp;gt;The third line is reserved for the entry of screen commands. This line begins with the following command prompt:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       ===&amp;amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can enter a command in uppercase or lowercase letters or a combination of the two.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;See [[Model 204 full-screen editor commands]] for abbreviations and defaults for full-screen commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter one command at a time. If you enter more than one command, only the first command is executed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Display Area&lt;br /&gt;
&amp;lt;p&amp;gt;The display area contains a portion of the text that is being edited. The text on the screen is considered a window in which only part of the procedure currently being edited appears.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To manipulate displayed procedures, first position the cursor and then add, change, or delete text. To execute changes, press the Enter key.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To position other parts of the procedure in the edit window, you can use the display commands or PF keys to [[#Moving around a procedure|scroll forward and backward]] through the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefix or Suffix Area&lt;br /&gt;
&amp;lt;p&amp;gt;This area can either precede or follow the display area on the screen. The columns typically display the following special characters:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       =====      &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can replace one or more of these equal signs with a special prefix command to perform an editing function, such as inserting or deleting text on the corresponding line in the display area. See [[#Summary of prefix commands|Summary of  prefix commands]] for more information about prefix commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current Line&lt;br /&gt;
&amp;lt;p&amp;gt;The line being edited normally appears at the center of the screen and is highlighted (that is, displayed more brightly than the surrounding text).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;line pointer&amp;lt;/var&amp;gt; points to the current line. The line pointer is repositioned to a new current line when you scroll forward and backward and when you execute screen commands. You can position the line pointer at a new current line by specifying the [[#Setting the current line|set line prefix command (/)]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Column Scale&lt;br /&gt;
&amp;lt;p&amp;gt;The column scale indicates the column position of the procedure text that appears. You can display a column scale immediately below the center line (normally the current line) in the display area. The scale is useful when text must be entered in particular columns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Requesting a column scale===&lt;br /&gt;
&lt;br /&gt;
The SCALE command specifies whether or not the full-screen editor displays a column scale in the center of the display area on the screen. The format of the SCALE command is:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] SCALE {OFF | ON}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCALE OFF is the default.&lt;br /&gt;
&lt;br /&gt;
If you specify SCALE OFF, the column scale is not displayed. If you specify SCALE ON, the scale is displayed. The column scale is shown in the [[Model 204 full-screen editor#Sample Display Screen|sample display screen]].&lt;br /&gt;
&lt;br /&gt;
===Positioning the prefix area===&lt;br /&gt;
&lt;br /&gt;
The PREFIX command positions the prefix area on the left (prefix) or right (suffix) side of the display screen. PREFIX LEFT is the default. The format of the PREFIX command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] PREFIX {LEFT | RIGHT}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full-screen editor positions the prefix area at the end of each line of the display area when you specify PREFIX RIGHT, and at the beginning of each line when you specify PREFIX LEFT.&lt;br /&gt;
&lt;br /&gt;
The [[#Sample Display Screen|sample display screen]] shows the positioning of the prefix area on the left side of the display screen. &lt;br /&gt;
&lt;br /&gt;
For a description of the prefix commands that can be entered in this area, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
==Editing modes==&lt;br /&gt;
&lt;br /&gt;
The editing modes are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command mode (used primarily for editing) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input mode (used primarily for entering new text)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
===Command mode===&lt;br /&gt;
&lt;br /&gt;
When you invoke the full-screen editor, you are placed in command mode.  To position the cursor to the command line, press the HOME key (usually ALT/BACKTAB).&lt;br /&gt;
&lt;br /&gt;
In command mode, you enter commands for the full-screen editor either on the command line or in the prefix area.&lt;br /&gt;
 &lt;br /&gt;
===Input mode===&lt;br /&gt;
&lt;br /&gt;
Enter input mode to type new lines of text. To enter input mode, specify an I* prefix command. You cannot use the prefix commands in input mode.&lt;br /&gt;
&lt;br /&gt;
To return to command mode from input mode, press the Enter key twice without any intervening text.&lt;br /&gt;
&lt;br /&gt;
==Using targets==&lt;br /&gt;
&lt;br /&gt;
Some prefix and full-screen editor commands operate on a line or set of lines called a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
target&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, if you want to search for a text string within lines 10 and 20 of a procedure, lines 10 through 20 are considered target lines.&lt;br /&gt;
&lt;br /&gt;
Specify a target on the appropriate line in the prefix or suffix area of the screen.&lt;br /&gt;
&lt;br /&gt;
When specifying a target, you can use uppercase and lowercase interchangeably. Targets are specified as one of the following:&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;Target command&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Description&amp;lt;/th&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;&amp;lt;b&amp;gt;P&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Precedes the target&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;&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Follows the target&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;&amp;lt;b&amp;gt;R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range&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;&amp;lt;b&amp;gt;RR&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range block&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using targets with prefix commands===&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this chapter, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
====P target command====&lt;br /&gt;
&lt;br /&gt;
Use the P target command to define a target above the line on which you enter the P. For example, to move a group of lines within a procedure to precede line 20, place a P target on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
====F target command====&lt;br /&gt;
&lt;br /&gt;
Use the F target command to define a target below the line on which you enter the F. For example, if you wanted to move a group of lines within a procedure to follow line 20, place an F on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
===Specifying range targets===&lt;br /&gt;
&lt;br /&gt;
Several commands let you include a range specification that indicates the range and direction of the target lines. The SAVE, LOCATE, and REPLACE commands define a set of target lines by including range specifications. For LOCATE, if one of these specifications is omitted, the full-screen editor processes the set of lines from the current line to the end of the procedure and then wraps to the top of the procedure and continues to the current line.&lt;br /&gt;
 &lt;br /&gt;
====R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) Target command====&lt;br /&gt;
&lt;br /&gt;
Use the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) target command to define a target in a range of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; lines beginning with the line on which you enter the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;). For example, if you entered R6 on line 15, the range begins on line 15 and ends with line 20.&lt;br /&gt;
  &lt;br /&gt;
====RR Target command====&lt;br /&gt;
&lt;br /&gt;
Use the RR target command to define a target in a range of lines beginning with the line on which you enter the first RR and ending on the line on which you enter the second RR. For example, to specify a range from line 15 to 20, place one RR target on line 15 and another RR target on line 20.&lt;br /&gt;
&lt;br /&gt;
===Range target characters===&lt;br /&gt;
&lt;br /&gt;
Range specifications are summarized in the following table.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Range specifications&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This specification...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Has this effect...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;ALL&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to TOP TO BOTTOM.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the bottom of the procedure and end at the current line.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the procedure bottom and end at the top of the procedure.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Begin at the beginning of the current line and end at the procedure bottom.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the current line and end at the procedure&#039;s beginning.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;RANGE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified as a prefix target command, begin at the beginning of the line specified by R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and end at the end of the line that is &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; &amp;lt;EM CLASS=&amp;quot;symbol&amp;quot;&amp;gt;&amp;amp;#8722;&amp;lt;/EM&amp;gt; 1 lines below the R line.&lt;br /&gt;
&amp;lt;p&amp;gt;If RR is specified as a prefix target command, begin at the beginning of the line that contains the first RR and end at the line that contains the second RR.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to ALL.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the top of the procedure; end at the bottom of the procedure.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; You can use the first initial of top, current, bottom, and range. For example, TOP TO CURRENT is the same as T TO C.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clearing targets===&lt;br /&gt;
&lt;br /&gt;
Targets remain in effect until one of the following events occurs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commands that use the targets complete execution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLEAR command is executed (see [[#Clearing the prefix area|Clearing the prefix area]]). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you specify a target range, the full-screen editor does not automatically clear the range when the command completes; it preserves the range so that it can be used multiple times. To cancel a target range, enter a CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Prefix commands==&lt;br /&gt;
&lt;br /&gt;
Prefix commands and targets execute full-screen editor operations. A &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
prefix command&amp;lt;/var&amp;gt; is an abbreviated command that specifies an editing operation to be performed on a particular line or set of lines.&lt;br /&gt;
&lt;br /&gt;
Enter the command in the prefix area of the line that you want to change. For example, to delete a line, enter a D in the prefix area of the line and press Enter.&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this topic, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
===Summary of prefix commands===&lt;br /&gt;
&lt;br /&gt;
The following table summarizes the prefix commands that you can enter in the prefix area of the display screen. Some prefix commands must be used with a target command. You can enter prefix characters in uppercase or lowercase and in any position in the prefix area.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Prefix commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends the line by inserting a continuous line that contains blanks or nulls.&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;I*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode.&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;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts one or more lines containing blanks or nulls following this line.&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;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates one or more lines.&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;&amp;amp;quot;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates a block.&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;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves one or more lines.&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;MM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves a block.&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;C[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies one or more lines.&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;CC&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies a block.&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;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes one or more lines.&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;DD&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a block.&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;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Restores the line(s) or block most recently deleted.&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;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Makes this line the current line.&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;
===Clearing the prefix area===&lt;br /&gt;
&lt;br /&gt;
The CLEAR command performs the following operations:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears all prefix lines in the prefix or suffix area on the display screen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears any display area text that has been typed since the last time you pressed Enter (or a PF key). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Aborts any pending prefix operations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cancels any specified targets. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information about prefixes and targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
Pressing the CLEAR, PA1, or PA2 key on the 3270 terminal has the same effect as entering the CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Command-line commands==&lt;br /&gt;
&lt;br /&gt;
In addition to prefix commands, which you enter in the left-hand column (prefix area) of the line(s) you want to edit, the Model 204 full-screen editor provides several command-line commands.&lt;br /&gt;
 &lt;br /&gt;
===Current line===&lt;br /&gt;
&lt;br /&gt;
Several command-line commands take effect from the current line. The current line is the line of the procedure on which the full-screen editor acts.&lt;br /&gt;
&lt;br /&gt;
Use the set line prefix command (/) to set the current line.&lt;br /&gt;
 &lt;br /&gt;
====Setting the current line====&lt;br /&gt;
&lt;br /&gt;
To define a new current line, type the set line command (/) in the prefix area of that line. This command is executed before any command-line commands specified on the same screen.&lt;br /&gt;
&lt;br /&gt;
This feature is especially useful with the [[#Searching for a string (LOCATE)|LOCATE command]]. For example, suppose that you want to locate the next occurrence of a string, but not the occurrence on the line following the current line (the line on which LOCATE would normally start its search). You can use the / prefix to reposition the current line so that LOCATE begins its search below the unwanted occurrence.&lt;br /&gt;
&lt;br /&gt;
===Where to enter command-line commands===&lt;br /&gt;
&lt;br /&gt;
Enter command-line commands on the third line down from the top of the screen, which is the command line. It has the following prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering commands===&lt;br /&gt;
&lt;br /&gt;
When entering command-line commands, follow these guidelines:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter one command at a time. Press Enter after the command. If you enter more than one command, only the first command is executed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can enter a command in uppercase or lowercase, or a combination of the two.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can abbreviate some commands.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Several commands have defaults.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
For more information on command abbreviations and defaults, see [[Model 204 full-screen editor commands]].&lt;br /&gt;
&lt;br /&gt;
===Repeating commands===&lt;br /&gt;
&lt;br /&gt;
Placing an equal sign (=) on the command line repeats the most recently executed command.&lt;br /&gt;
&lt;br /&gt;
This command executes a command any number of times and is useful for performing a repetitive operation, such as searching for a string, without re-entering the command each time.&lt;br /&gt;
&lt;br /&gt;
You can also repeat a command by pressing PF9.&lt;br /&gt;
&lt;br /&gt;
==Moving around a procedure==&lt;br /&gt;
&amp;lt;p&amp;gt;The full-screen editor display commands move through a procedure and display needed portions of it on the screen. Display commands move the current line pointer and control the appearance of portions of the procedure, but they do not change the contents of the procedure itself.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Display commands are summarized in the following table and are discussed in detail in the sections that follow.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Display commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&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;TOP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the first line of the procedure.&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;BOTTOM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the last line of the procedure.&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;FORWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of screens in the procedure.&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;BACKWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of screens in the procedure.&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;+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of lines in the procedure.&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;-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of lines in the procedure.&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;
===Moving to the top of the procedure (TOP)===&lt;br /&gt;
The TOP command moves the line pointer to the first line of the procedure that is being edited. After you issue a TOP command, the full-screen editor displays the TOP OF PROCEDURE indicator on the first line of the display area. It displays the first line of the procedure on the second line. The remaining lines of the procedure appear on subsequent lines. The first line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The TOP command is helpful when inserting a line or set of lines at the beginning of the procedure. In a procedure that fills many screens; using the TOP command is often more efficient than scrolling backward using the BACKWARD command.&lt;br /&gt;
&lt;br /&gt;
===Moving to the bottom of the procedure (BOTTOM)===&lt;br /&gt;
The BOTTOM command moves the line pointer to the last line of the procedure that is being edited. After you issue a BOTTOM command, the full-screen editor displays the BOTTOM OF PROCEDURE indicator on the last line of the screen. The preceding lines of the procedure appear on the preceding lines of the screen. The last line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The BOTTOM command is helpful when adding a line or set of lines to the end of the procedure. In a procedure that fills many screens, using the BOTTOM command is often more efficient than scrolling forward using the FORWARD command.&lt;br /&gt;
&lt;br /&gt;
===Scrolling forward (FORWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The FORWARD command scrolls forward in the procedure by moving the line pointer down a specified number of screens. The format of the FORWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;FO&amp;lt;/b&amp;gt;RWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter FORWARD, the full-screen editor advances one entire screen. If you enter FORWARD followed by a number (n), the full-screen editor advances the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a FORWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines preceding and following the current line. The bottom line of the previous screen display becomes the top line of the new screen display.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the first line of the procedure when you issue the FORWARD command (that is, you are positioned at the top of the procedure), the full-screen editor advances only one half a screen and displays the new current line in the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF8 to scroll forward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling backward (BACKWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The BACKWARD command scrolls backward in the procedure, moving the line pointer up a specified number of screens. The format of the BACKWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;BA&amp;lt;/b&amp;gt;CKWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter BACKWARD, the full-screen editor scrolls backward one entire screen. If you enter BACKWARD followed by a number (n), the full-screen editor scrolls backward the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a BACKWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines that precede and follow the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the last line of the procedure when the BACKWARD command is issued, the full-screen editor scrolls backward only half a screen and displays the new current line in the center of the display screen. Otherwise, the BACKWARD command causes the top line of the previous screen display to become the bottom line of the new screen display. In either case, the BACKWARD command causes the current line to be backed up by the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF7 to scroll backward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling a specified number of lines (+/-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)===&lt;br /&gt;
&amp;lt;p&amp;gt;The scroll commands (+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) scroll forward or backward, moving the line pointer a specified number of lines in the procedure. These commands are useful for moving a portion of the procedure up or down.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter a number, optionally preceded by (+), the full-screen editor advances the specified number of lines. For example, if you enter either 5 or +5 the editor advances the current line forward five lines toward the end of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter -, followed by a number, the editor moves backward the specified number of lines. For example, if you enter -10, the editor moves backward 10 lines toward the beginning of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In general, the current line is displayed highlighted at the center of the screen. However, if the current line is less than half a screen from the top or bottom of the screen when you issue the command, the full-screen editor shifts the display to fill the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that +&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; scroll a specified number of lines in the procedure. Because a single procedure line can occupy more than a single physical line on the display screen, these commands might actually appear to scroll forward or backward a greater number of display lines than specified.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for and replacing text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The full-screen editor LOCATE command allows you to search for text strings in a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The REPLACE command allows you to locate and change text strings.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 These two commands share many characteristics, including:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Rules for text string searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Use of special search characters&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Option to specify a range of procedure lines&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Uppercase and lowercase in searches===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With the exception of [[#Special search characters|special search characters]], the full-screen editor searches for an exact match to the string specified in the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command. Both the case (upper and lower) in which the string is specified, and the placement of blanks, are significant. Therefore, if you specify this command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;LOCATE /Model 204 &amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The editor locates an occurrence of &amp;lt;code&amp;gt;Model 204&amp;lt;/code&amp;gt;, but not &amp;lt;code&amp;gt;MODEL 204&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;MODEL204&amp;lt;/code&amp;gt; in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that although lowercase characters are entered in a procedure, Model&amp;amp;nbsp;204 does not necessarily process these characters as lowercase. By default, characters are translated automatically into uppercase when they are transmitted to Model&amp;amp;nbsp;204 unless: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You specified the Model&amp;amp;nbsp;204 &amp;lt;var&amp;gt;[[*LOWER command|*LOWER]]&amp;lt;/var&amp;gt; command before entering the full-screen editor, or &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; was invoked upon entry to the editor by the setting of the &amp;lt;var&amp;gt;[[SIREDIT parameter|SIREDIT]]&amp;lt;/var&amp;gt; parameter. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You use the editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command to turn off the automatic uppercasing. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the CASE command====&lt;br /&gt;
The editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command is available with version 7.5 or higher of Model&amp;amp;nbsp;204. It has two options:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE MIXED &lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is accepted “as is,” without translation to uppercase. This is similar to invoking the &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;MIXED&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want; that is, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MIX&amp;lt;/code&amp;gt; and so on are all valid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE UPPER&lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is translated to uppercase.  This is similar to invoking the &amp;lt;var&amp;gt;[[*UPPER command|*UPPER]]&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;UPPER&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command does not affect the case translation setting (&amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt;) that was in effect “outside” the editor: when you exit the editor, the case translation is as it was prior to entering the editor.&lt;br /&gt;
&lt;br /&gt;
In addition to the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command, the initial case translation setting within the editor can be automatically set to &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt;, using the X&#039;01&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
Neither the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command nor the &amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt; setting affect the input on the editor command line.&lt;br /&gt;
&lt;br /&gt;
To match strings (for example, “/subroutine”) in a case-insensitive manner, use the X&#039;20&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can limit the scope of a text string search by indicating a range.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The range entry indicates the target lines and the order of the lines to be searched for a match. You can include any of the range specifications summarized in [[#Specifying range targets|Specifying range targets]]. If you omit the range, the full-screen editor searches the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Special search characters==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use special search characters when specifying a search string with the LOCATE and REPLACE commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
These special characters are:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Arbitrary (wildcard) character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Repeat character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
End-of-line character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Wildcard character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An arbitrary or wildcard character is matched by any character. For example, the ampersand character (&amp;amp;amp;) is your wildcard character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MODEL&amp;amp;amp;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings in the procedure can be located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODELA&lt;br /&gt;
MODEL2&lt;br /&gt;
MODEL&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the wildcard character (ARBCHAR)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;ARBCHAR&amp;lt;/var&amp;gt; command specifies a wildcard character that matches zero or more characters when it is included in a search string. The format of the ARBCHAR command is as follows:&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] ARBCHAR {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/var&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the wildcard or arbitrary character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ARBCHAR OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR *&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the asterisk in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /PROC*&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the letters PROC, followed by any character. The following strings are found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCA&lt;br /&gt;
INPROC3&lt;br /&gt;
PROC *.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are not found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PRO12&lt;br /&gt;
PRO CABC&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the wildcard character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter ARBCHAR OFF, none of the characters in the specified search strings in subsequent LOCATE and REPLACE commands are considered wildcard characters, and all strings in the procedure must match the search string exactly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repeat character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The repeat character indicates that the previous character in the string can be repeated any number of times. For example, your repeat character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any of the following strings in the procedure are located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *&lt;br /&gt;
Format **&lt;br /&gt;
Format ****************&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the repeat character (REPEAT)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPEAT command specifies a repeat character that matches zero or more occurrences of the repeating character when it is included in a search string.&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 REPEAT command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] REPEAT {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the repeat character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
REPEAT OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT &amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the &amp;amp;amp; in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /MODEL*&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the characters &amp;lt;code&amp;gt;M O D E L&amp;lt;/code&amp;gt;, followed by any number of asterisks. The following strings are selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL*&lt;br /&gt;
MODEL***&lt;br /&gt;
MODEL**&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL1&lt;br /&gt;
MOD***&lt;br /&gt;
MODEL *&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use repeat characters in conjunction with wildcard characters. For example, suppose that the wildcard character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), the repeat character is an ampersand (&amp;lt;tt&amp;gt;&amp;amp;amp;&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/PRE!&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any string that begins with the letters &amp;lt;code&amp;gt;P R E&amp;lt;/code&amp;gt;, followed by any number of any other characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the repeat character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;REPEAT OFF&amp;lt;/code&amp;gt;, none of the characters in the specified search strings in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered repeat characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===End-of-line character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The end-of-line character indicates the end of one line and the beginning of the next line. When the end-of-line character is used in a search string, it specifies a search for a string that occurs at the beginning or end of a line. For example, the percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%prefix&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line beginning with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix area!!!&lt;br /&gt;
prefixes!!!&lt;br /&gt;
prefix 12!!!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix%&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line ending with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify an end-of-line character only at the beginning or at the end of the search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the end-of-line character====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LINEND&amp;lt;/var&amp;gt; command specifies an end-of-line character. When you use an end-of-line character in a search string, it represents a character that indicates the end of one line and the beginning of the next line. The editor searches for a string that occurs at the beginning or end of a line.&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;LINEND&amp;lt;/var&amp;gt; command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] LINEND {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the end-of-line character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt; is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND #&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the pound sign (&amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt;) in a search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /#PART&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any line that begins with the letters &amp;lt;code&amp;gt;P A R T&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You must specify the end-of-line character at the start or end of a search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the end-of-line character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt;, none of the characters in the search strings specified in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered end-of-line characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Combining special search characters===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify combinations of characters in the search string. For example, the following search string locates any string that contains HELP, followed by any number of characters, followed by ME:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP&amp;amp;amp;!ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP123ABME&lt;br /&gt;
HELP ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for a string (LOCATE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command searches for a particular string in the procedure or in a subset of the procedure. See [[#Specifying a string|Specifying a string]] for more information about string specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Two formats of the LOCATE command===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
There are two formats of the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====With LOCATE keyword====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The first format is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[-][&amp;lt;b&amp;gt;LO&amp;lt;/b&amp;gt;CATE] /&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;[/ [IN]&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where the delimiting character (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; in the example above) can be any character not appearing in the string, with the exception of a blank character.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LO *ELEPHANT* IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify a range, you do not need to include a delimiter after the string. If you specify an alphabetic delimiter, include a space between the LOCATE or LO keyword and the delimiter. If the delimiter is nonalphabetic, the space is not required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Without LOCATE keyword====&lt;br /&gt;
The second format, which does not require the LOCATE keyword, is as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[-] /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where a slash (/) must precede the string. If you do not specify a range, you do not need to include a slash following the string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the full-screen editor cannot find a match for the specified string, it displays the following message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;TARGET STRING NOT LOCATED&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching forward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search forward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor starts the search at the line following the current line and advances forward, stopping when it locates the string or reaches the end of the procedure. If the current line is the last line of the procedure, the full-screen editor wraps to the top of the procedure, begins the search at the top of the procedure, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching backward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search backward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When you precede the command with a minus sign, the full-screen editor starts the search at the line preceding the current line and searches backward toward the beginning of the procedure, stopping when it locates the string or reaches the top of the procedure. If the current line is the top of the procedure, the full-screen editor wraps to the bottom of the procedure, begins the search at the bottom line, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Replacing a string (REPLACE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPLACE command replaces a string in the procedure with a substitute string. REPLACE provides the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Displays each target string to verify the change before proceeding.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Changes more than one occurrence of a specified string in a single line. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the REPLACE command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;R&amp;lt;/b&amp;gt;EPLACE/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt; [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; | *] [&amp;lt;b&amp;gt;V&amp;lt;/b&amp;gt;ERIFY [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you include the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;, VERIFY, or range options in the REPLACE command, specify the options in the order shown.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;R /GROUP/PERM GROUP/ * IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a string===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify strings as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;String to be searched for and changed (old string).&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 class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;New string to replace &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;. The new string need not be the same length as the old string.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use as a delimiter any nonblank character (/ in the example above) that does not appear in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
string1&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;. If you do not specify the number of occurrences, a VERIFY option, or a range, you do not need to include a delimiter after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controlling the number of strings to be replaced===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can replace all occurrences of a string or only the first occurrence in a line. The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification in the REPLACE command represents the number of occurrences of the search string (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;) to be replaced in each line. If you omit an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification, only the first occurrence of the string is replaced in a line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify a value of *, all occurrences of the string are replaced in each line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using the VERIFY option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The VERIFY option verifies all string replacements before they are made. Each line that contains a string that matches the specified string is highlighted and is delimited on the scale line by the characters of the proper length, on the column scale line directly beneath the potential match. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;lt;====&amp;amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The column scale must be turned on to display the scale line characters. The following prompt appears on the command line each time a string is matched:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;CHANGE?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond with any of the following choices:&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;This choice...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;YES, Y, or Enter&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Changes the string&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;NO or N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not change the string&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;ALL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Turns off the VERIFY option and makes all remaining changes&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;STOP or S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Terminates the REPLACE command&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;
If you enter any other response, the full-screen editor displays the &amp;lt;code&amp;gt;CHANGE&amp;lt;/code&amp;gt;? prompt again.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify a range of procedure lines to which the search applies. See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inserting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can insert text several ways using the full-screen editor. Use the following commands to insert text:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;E&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends a line&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;th&amp;gt;I&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts separate lines&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;th&amp;gt;I*&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode&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;th&amp;gt;GET&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts a saved procedure&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;
You can also insert text using the REPLACE command to substitute a string with additional text for an existing string (see [[#Specifying a string|Specifying a string]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Alternatively, you can insert text by [[#Duplicating, copying, and moving text|duplicating, copying, and moving]] lines or blocks of text.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Extending a line===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The E (extend) prefix command inserts a physical line immediately following the line that contains the E, forming a logical line extension. The line is filled with the fill character (that is, blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill character]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting lines===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I (insert) prefix command  inserts one or more lines following the line containing the I. Unlike E lines, these lines are treated as separate lines, not as continuations of existing lines in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the I prefix command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter I alone, the full-screen editor inserts one line following the line containing the I. If you enter I followed by a number, the full-screen editor inserts the specified number of lines. For example, I5 inserts 5 blank lines after the line that contains the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Inserted lines are filled with the fill character (blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill charcter]].&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
===Specifying a fill character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FILL command specifies a fill character. When the full-screen editor displays a line of text, it pads the line on the right with either null or blank characters. The format of the FILL command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] FILL {&amp;lt;u&amp;gt;NULL&amp;lt;/u&amp;gt; | BLANK}&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify &amp;lt;code&amp;gt;FILL NULL&amp;lt;/code&amp;gt;, the full-screen editor pads with null characters on the right. If you specify &amp;lt;code&amp;gt;FILL BLANK&amp;lt;/code&amp;gt;, the full-screen editor pads with blank characters on the right.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The character selected as the fill character is inserted in lines generated using the E (extend) and I (insert) prefix commands.&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 command line on the display screen is always filled with null characters, regardless of the specified fill character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering input mode===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I* prefix command places the full-screen editor in input mode. The line that contains I* becomes the current line and appears at the top of the screen. The rest of the screen is blank. Any lines following the I* line in the original procedure are not displayed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For input lines, the cursor appears in column 1 of the first blank line. You can now enter text. If you press Enter, the last line that you typed is moved to the top of the screen and the cursor appears on the next (blank) line. To exit from input mode, either press Enter twice without any intervening text editing, or enter any full-screen editor command on the command line.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting a saved procedure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The GET command inserts a previously saved procedure after the current line. You can insert a procedure that is stored in either the default procedure file or in a file specified in the command (with the filespec option). The last line of the inserted procedure becomes the current line and is positioned at the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Before you issue the GET command, position the cursor at the appropriate line. For example, if you want to add one procedure to the end of another, use the BOTTOM command to advance the cursor to the end of the procedure before the procedure is added.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the GET command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[IN &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt;] GET &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Where:&amp;lt;/p&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;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the combined procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for filespec is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
ACCOUNT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If neither FILE nor GROUP is specified, FILE is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name of the procedure to be inserted after the current line. This procedure can be stored in any Model 204 file that you currently have open.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Duplicating, copying, and moving text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can save keystrokes and reorganize text by using the full-screen editor commands for the following tasks:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Duplicating lines of text (&amp;amp;quot; or &amp;amp;quot;&amp;amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Copying lines of text (C or CC)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Moving lines of text (M or MM)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Groups of lines are also referred to as blocks. You can also [[#Deleting and undeleting text|delete and undelete lines of text]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Duplicating lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can duplicate either one line or a block of lines.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating one or more lines====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate (&amp;amp;quot;) prefix command duplicates the line on which it is entered. The format of the duplicate command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the line. If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor inserts the specified number of duplicate lines. For example, &amp;lt;code&amp;gt;&amp;amp;quot;5&amp;lt;/code&amp;gt; duplicates a line five times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating a block of text====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate block (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;) prefix command duplicates a group of lines. Entering &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; duplicates the block of lines beginning with the line on which the first &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified and ending with the line on which the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified. &lt;br /&gt;
&lt;br /&gt;
The format of this command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the block of lines. The block appears immediately following the line that contains the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; (the last line of the block). If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor duplicates the block the specified number of times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Copying lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The C (copy) prefix command copies one or more lines to the position indicated by the P (precedes) or F (follows) prefix target. If you specify P, the line(s) are inserted just before the line that contains the P. If you specify F, the lines are inserted just after the line that contains the F. For more information about prefix targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the C prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;C[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of lines to copy. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, the full-screen editor copies only the line that contains the C. If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; followed by a number, the full-screen editor copies the specified number of lines, beginning with the line containing the C&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
When a line is copied, it is preserved in its original position as well as being duplicated in the new position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CC (copy block) prefix command copies a group of lines without requiring you to count them. CC copies the block of lines that begins with the line on which the first CC is specified and that ends with the line on which the second CC is specified. The lines are copied to the position indicated by the P (precedes) or F (follows) prefix target, as discussed for C.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Moving lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The M (move) prefix command moves one or more lines to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]]. If you specify P, the line(s) are inserted just before the line containing the P. If you specify F, the line(s) are inserted just after the line that contains the F.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the M prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to move. &lt;br /&gt;
&lt;br /&gt;
If you enter M, the full-screen editor moves only the line that contains the M. If you enter M followed by a number, the full-screen editor moves the specified number of lines, beginning with the line that contains the M&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. When a line is moved, it is automatically deleted from its original position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MM (move block) prefix command moves a group of lines without requiring you to count them. MM moves the block of lines that begins with the line on which the first MM is specified and that ends with the line on which the second MM is specified. The lines are moved to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deleting and undeleting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 You can delete lines from a procedure, using the D or DD prefix commands. You can also retrieve the last entry that was deleted with the U prefix command. Groups of lines are also referred to as blocks.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Deleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The D (delete) prefix command deletes one or more lines from the procedure. &lt;br /&gt;
&lt;br /&gt;
The format of the D prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to delete. &lt;br /&gt;
&lt;br /&gt;
If you enter D, the full-screen editor deletes only the line that contains the D. If you enter D followed by a number, the full-screen editor deletes the specified number of lines, beginning with the line that contains the D. If the number of lines specified in the D command exceeds the number remaining in the procedure, the full-screen editor deletes all lines from the line on which the D command is specified to the end of the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a line or set of lines is deleted, the lines are not immediately discarded; they are placed on the full-screen editor delete stack. Entries in this stack are deleted when the editing session is terminated. Each time a D command is executed, an entry is placed on the delete stack. A D&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; command, which deletes several lines, causes a single entry that contains the specified block of lines to be placed on the stack. However, a series of contiguous lines, each containing a D command, is not accumulated into a single entry on the delete stack. You can [[#Undeleting lines or blocks|retrieve or undelete an entry]] by means of the U command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DD (delete block) prefix command deletes a group of lines without requiring you to count them. DD deletes the block of lines that begins with the line on which the first DD is specified and that ends with the line on which the second DD is specified. The block is placed on the delete stack as a single entity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Undeleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The U (undelete) prefix command retrieves the last entry that was deleted (that is, placed on the delete stack) and inserts it after the line that contains the U.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;exit&amp;quot;&amp;gt;Exiting from the full-screen editor&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit from the full-screen editor or to save edited procedures, use the commands listed in the following table, which also lists the description of each command and where more information is located. When you exit from the full-screen editor, you are returned to the Model 204 command level.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;CAPTION&amp;gt;Exit and save commands&amp;lt;/CAPTION&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;END or EEND&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor and saves the edited procedures. The EEND command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&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;th&amp;gt;GO or GGO&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, saves the edited procedure, and includes (executes) the edited procedure. The GGO command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved. Under Model 204 7.8 and later, the GO command does not actually update the procedure in the file if it has not been modified since it was loaded or last saved.&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;th&amp;gt;QUIT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, might prompt if changes were made to the procedure, and does not save the edited procedure.&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;th&amp;gt;SAVE or SSAVE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not exit from the full-screen editor, but saves the edited procedure. The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&amp;lt;/td&amp;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;
For more information about exit and save commands, refer to the [[EDIT command]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Exiting from the editor and saving the procedure (END or EEND)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The END or EEND command exits from the full-screen editor and saves the edited procedure on disk. Specify the name under which the procedure is to be saved. You can store the procedure in either the default procedure file or in a file specified in the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the END/EEND command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [END | EEND] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the default Model&amp;amp;nbsp;204 procedure file. The filespec can identify a Model&amp;amp;nbsp;204 file or a temporary or permanent group. The file specified by IN filespec must be open. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify either FILE or GROUP, FILE is assumed. For more information about files and groups, see the following pages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: File]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Permanent group]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Temporary group]]&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;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter END, the procedure is saved under the name of the output procedure specified when you invoked the editor. The procedure is stored in the Model 204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The EEND command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. EEND would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving and including the procedure (GO or GGO)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Like the END command, the GO or GGO command exits from the full-screen editor and saves the edited procedure. Unlike END, GO automatically performs an implicit Model 204 [[INCLUDE command]], which executes the Model 204 commands in the saved procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The format of the GO/GGO command is as follows:&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;filespec&amp;lt;/span&amp;gt;] [GO | GGO] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
GO command options are identical to END command options. If you enter GO, the full-screen editor saves the procedure under the name of the output procedure specified when you invoked the full-screen editor. The procedure is stored in the Model 204 default procedure file. Under Model 204 7.8 and later, the procedure won&#039;t actually be updated by the GO command if it has not been modified in the editor since it was loaded or last saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The GGO command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. GGO would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Exiting from the editor without saving the edited procedure (QUIT)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The QUIT command exits from the full-screen editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you change the procedure during the current editing session and exit by entering QUIT, the full-screen editor displays the following message, which indicates that the procedure was changed and asks you to enter QUIT again if you want to exit the procedure without saving the edits:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE HAS BEEN MODIFIED, ENTER &#039;QUIT&#039; TO VERIFY.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond in one of the following ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter QUIT on the command line to confirm that changes are not to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ignore the prompt and continue editing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit without receiving the warning prompt, enter the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you use QUIT to exit from a file that was examined but not modified, the full-screen editor does not prompt before exiting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can also press PF3 to quit. Your edits are not saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving the procedure (SAVE or SSAVE)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The SAVE or SSAVE command saves the edited procedure or a subset of that procedure under the specified name (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;) or the default procedure name. Unlike the END, GO, and QUIT commands, SAVE does not exit from the editor. To ensure against the loss of changes due to a system failure, issue the SAVE command periodically while you edit a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the SAVE/SSAVE command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [SAVE | SSAVE] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;] [[IN] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group. The file specified with IN filespec must be open. It has the same syntax as described for the END command.&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;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;range is the range to be saved. Note that if you specify range, you must also specify procname. You can include any of the [[#Range target characters|range specifications]]. If you omit a range, the entire procedure is saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter SAVE alone, the full-screen editor saves the entire procedure under the name of the output procedure specified when the editor was invoked. The procedure is stored in the Model&amp;amp;nbsp;204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. SSAVE would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Procedure update control===&lt;br /&gt;
&amp;lt;p&amp;gt;Before Model 204 7.8, the editor would hold a shared lock on the procedure being editing during the edit session. This would ensure that no other user could update the procedure underneath the user in the editor. Unfortunately, this would also block updates in the common case where one is just browsing a procedure in the editor and leave a lock on a procedure if the editing user forgets to exit the editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Under Model 204 7.8 and later, no lock is held on the procedure during the edit session. Instead, if the user attempts to save the procedure via the &amp;lt;var&amp;gt;SAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;END&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GO&amp;lt;/var&amp;gt; command, the timestamp if the procedure in the output file is compared with the timestamp when the procedure was loaded or last saved. If the timestamp no longer matches, it means that another user has modified the procedure and saving the procedure would overwrite those changes. In this case the editing user is warned and the save is not performed. If the editing user wishes to force the save anyway, the user can issue the &amp;lt;var&amp;gt;SSAVE&amp;lt;/var&amp;gt; command, the &amp;lt;var&amp;gt;EEND&amp;lt;/var&amp;gt; command, or the &amp;lt;var&amp;gt;GGO&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Category: Model 204 editor]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120291</id>
		<title>Model 204 full-screen editor</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120291"/>
		<updated>2024-09-27T19:12:30Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Procedure update control */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The full-screen editor enables you to use the special capabilities of the IBM 3270 and compatible terminals.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Model 204 provides the following editors, which you can use to enter, change, or add text to Model 204 requests and procedures:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Full-screen editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for full-screen terminals.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Line editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for line-at-a-time terminals. Optionally, you can invoke this editor from a full-screen terminal.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This topic describes how to use the full-screen editor. [[Model 204 line editor]] describes the line editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Editing capabilities===&lt;br /&gt;
Special features of the full-screen editor include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Full-screen mode&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 are always in full-screen mode, even when text is being entered or added to a procedure. You can position the cursor at any text on the display screen and delete, insert, or change characters by typing at that point.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Special screen display&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The display screen contains a display area and, optionally, either a prefix or a suffix area for entry of prefix commands to perform editing operations. (See [[#Using targets with prefix commands|Using targets with prefix commands]].) You can display a column scale at the center of the screen to facilitate the positioning of text in specific columns.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Automatic text wrapping&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines that are longer than the normal display line are automatically wrapped onto subsequent display line(s).&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Global text searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can search throughout a procedure for any string of characters. You can replace characters and specify wildcard characters to match all or part of the specified string. This feature is described in [[#Specifying a string|Specifying a string]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefixes and targets&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can specify both editing operations (prefixes) and the lines on which the edits are to be performed (targets) by entering abbreviated commands in the prefix or suffix area of the screen. Prefixes and targets are described in [[#Specifying range targets|Specifying range targets]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;PF key functions&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use PF3 to quit, PF7 to scroll backward, PF8 to scroll forward, and PF9 to repeat commands while editing in full-screen mode.&lt;br /&gt;
&lt;br /&gt;
==Invoking the full-screen editor==&lt;br /&gt;
 &lt;br /&gt;
===Model 204 requirements===&lt;br /&gt;
Before invoking the full-screen editor, set the Model 204 LOUTPB parameter to a minimum value of 3000. The [[LOUTPB parameter]] specifies the length of the output page buffer for 3270 terminals that use the full-screen capabilities.&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor===&lt;br /&gt;
You can invoke the full-screen editor in the following ways:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Directly from Model 204 command level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Indirectly in a User Language (SOUL) request&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
To invoke the full-screen editor from a terminal, enter the &amp;lt;var&amp;gt;[[EDIT command|EDIT]]&amp;lt;/var&amp;gt; command.&lt;br /&gt;
 &lt;br /&gt;
====Using the EDIT command====&lt;br /&gt;
To invoke the full-screen editor, use the &amp;lt;var&amp;gt;EDIT command&amp;lt;/var&amp;gt;. The format of the &amp;lt;var&amp;gt;EDIT&amp;lt;/var&amp;gt; command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT(SCREEN)[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Specifying the type of editor====&lt;br /&gt;
You can include a parameter that indicates which of the Model&amp;amp;nbsp;204 editors to invoke.  To request the full-screen editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (SCREEN)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To request the line editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (LINE)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you do not specify either SCREEN or LINE, the appropriate editor for your terminal type is invoked. For example, if your terminal is an IBM 3270 and you enter EDIT while at command level or while executing a SOUL request, the full-screen editor is invoked automatically. The full-screen editor is not available from an IBM 3270 terminal that is connected to Model 204 through an access method that does not support full-screen input and output.&lt;br /&gt;
 &lt;br /&gt;
====Specifying an input procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; parameter to name a temporary or permanent procedure to be used as input for the current editing session. If you do not specify an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; option, the full-screen editor creates a temporary procedure (Model&amp;amp;nbsp;204 temporary procedure 0). Note that you cannot use the full-screen editor to create a new and permanent procedure if you specify a nonexistent input procedure.&lt;br /&gt;
&lt;br /&gt;
====Specifying an output procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter to specify an output procedure name. You can include an output procedure name in the EDIT command or specify a name when you exit from the procedure with an END, GO, or SAVE command. After the editing session terminates, Model 204 saves the procedure under the specified &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; name. If you specify a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter in the EDIT command and enter a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter when exiting from the procedure, the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter specified when exiting overrides the name specified in the EDIT command.&lt;br /&gt;
&lt;br /&gt;
For information about the rules for procedure names, see [[EDIT command#Procedure names|Procedure names]].&lt;br /&gt;
&lt;br /&gt;
====Results of using the EDIT command====&lt;br /&gt;
After you invoke the full-screen editor, use any of the commands described in this chapter. When you enter the full-screen editor, the first portion of the procedure to be edited appears in the display area and the cursor appears at the beginning of the command line. To reposition the cursor to the command line, press the HOME key (usually ALT-BACKTAB).&lt;br /&gt;
&lt;br /&gt;
When you issue an EDIT command, the full-screen editor writes the following message to the Model 204 audit trail:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.0685: EDITING INTO newproc&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor indirectly===&lt;br /&gt;
You can invoke the full-screen editor indirectly by including the EDIT command in a SOUL request by using the TERMINAL option in the following format:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT (TERMINAL)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TERMINAL option of EDIT====&lt;br /&gt;
The TERMINAL option invokes the full-screen editor from within a procedure and connects the editor to your terminal for input. For more information about the TERMINAL option, refer to the Model 204 [[EDIT command]] wiki page.&lt;br /&gt;
&lt;br /&gt;
==Display screen format==&lt;br /&gt;
The typical format of the display screen during an editing session is shown in the following figure. &lt;br /&gt;
&lt;br /&gt;
The areas numbered in the diagram are described below the figure.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot; style=&amp;quot;width:550px&amp;quot;&amp;gt;Sample Display Screen&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;figure&amp;quot;&amp;gt;[[File:Editing_Guide_ch1_Sample_Display_Screen.gif]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Screen components===&lt;br /&gt;
The components of the display screen are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Header Line&lt;br /&gt;
&amp;lt;p&amp;gt;The top line of the screen is reserved for procedure identification. The header line contains the following information:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Old procedure name (before editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New procedure name (after editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Line number of the current line within the procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current maximum line number within the procedure &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Message Line&lt;br /&gt;
&amp;lt;p&amp;gt;The second line is reserved for error and status messages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command Line&lt;br /&gt;
&amp;lt;p&amp;gt;The third line is reserved for the entry of screen commands. This line begins with the following command prompt:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       ===&amp;amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can enter a command in uppercase or lowercase letters or a combination of the two.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;See [[Model 204 full-screen editor commands]] for abbreviations and defaults for full-screen commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter one command at a time. If you enter more than one command, only the first command is executed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Display Area&lt;br /&gt;
&amp;lt;p&amp;gt;The display area contains a portion of the text that is being edited. The text on the screen is considered a window in which only part of the procedure currently being edited appears.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To manipulate displayed procedures, first position the cursor and then add, change, or delete text. To execute changes, press the Enter key.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To position other parts of the procedure in the edit window, you can use the display commands or PF keys to [[#Moving around a procedure|scroll forward and backward]] through the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefix or Suffix Area&lt;br /&gt;
&amp;lt;p&amp;gt;This area can either precede or follow the display area on the screen. The columns typically display the following special characters:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       =====      &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can replace one or more of these equal signs with a special prefix command to perform an editing function, such as inserting or deleting text on the corresponding line in the display area. See [[#Summary of prefix commands|Summary of  prefix commands]] for more information about prefix commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current Line&lt;br /&gt;
&amp;lt;p&amp;gt;The line being edited normally appears at the center of the screen and is highlighted (that is, displayed more brightly than the surrounding text).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;line pointer&amp;lt;/var&amp;gt; points to the current line. The line pointer is repositioned to a new current line when you scroll forward and backward and when you execute screen commands. You can position the line pointer at a new current line by specifying the [[#Setting the current line|set line prefix command (/)]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Column Scale&lt;br /&gt;
&amp;lt;p&amp;gt;The column scale indicates the column position of the procedure text that appears. You can display a column scale immediately below the center line (normally the current line) in the display area. The scale is useful when text must be entered in particular columns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Requesting a column scale===&lt;br /&gt;
&lt;br /&gt;
The SCALE command specifies whether or not the full-screen editor displays a column scale in the center of the display area on the screen. The format of the SCALE command is:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] SCALE {OFF | ON}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCALE OFF is the default.&lt;br /&gt;
&lt;br /&gt;
If you specify SCALE OFF, the column scale is not displayed. If you specify SCALE ON, the scale is displayed. The column scale is shown in the [[Model 204 full-screen editor#Sample Display Screen|sample display screen]].&lt;br /&gt;
&lt;br /&gt;
===Positioning the prefix area===&lt;br /&gt;
&lt;br /&gt;
The PREFIX command positions the prefix area on the left (prefix) or right (suffix) side of the display screen. PREFIX LEFT is the default. The format of the PREFIX command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] PREFIX {LEFT | RIGHT}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full-screen editor positions the prefix area at the end of each line of the display area when you specify PREFIX RIGHT, and at the beginning of each line when you specify PREFIX LEFT.&lt;br /&gt;
&lt;br /&gt;
The [[#Sample Display Screen|sample display screen]] shows the positioning of the prefix area on the left side of the display screen. &lt;br /&gt;
&lt;br /&gt;
For a description of the prefix commands that can be entered in this area, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
==Editing modes==&lt;br /&gt;
&lt;br /&gt;
The editing modes are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command mode (used primarily for editing) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input mode (used primarily for entering new text)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
===Command mode===&lt;br /&gt;
&lt;br /&gt;
When you invoke the full-screen editor, you are placed in command mode.  To position the cursor to the command line, press the HOME key (usually ALT/BACKTAB).&lt;br /&gt;
&lt;br /&gt;
In command mode, you enter commands for the full-screen editor either on the command line or in the prefix area.&lt;br /&gt;
 &lt;br /&gt;
===Input mode===&lt;br /&gt;
&lt;br /&gt;
Enter input mode to type new lines of text. To enter input mode, specify an I* prefix command. You cannot use the prefix commands in input mode.&lt;br /&gt;
&lt;br /&gt;
To return to command mode from input mode, press the Enter key twice without any intervening text.&lt;br /&gt;
&lt;br /&gt;
==Using targets==&lt;br /&gt;
&lt;br /&gt;
Some prefix and full-screen editor commands operate on a line or set of lines called a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
target&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, if you want to search for a text string within lines 10 and 20 of a procedure, lines 10 through 20 are considered target lines.&lt;br /&gt;
&lt;br /&gt;
Specify a target on the appropriate line in the prefix or suffix area of the screen.&lt;br /&gt;
&lt;br /&gt;
When specifying a target, you can use uppercase and lowercase interchangeably. Targets are specified as one of the following:&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;Target command&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Description&amp;lt;/th&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;&amp;lt;b&amp;gt;P&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Precedes the target&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;&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Follows the target&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;&amp;lt;b&amp;gt;R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range&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;&amp;lt;b&amp;gt;RR&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range block&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using targets with prefix commands===&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this chapter, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
====P target command====&lt;br /&gt;
&lt;br /&gt;
Use the P target command to define a target above the line on which you enter the P. For example, to move a group of lines within a procedure to precede line 20, place a P target on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
====F target command====&lt;br /&gt;
&lt;br /&gt;
Use the F target command to define a target below the line on which you enter the F. For example, if you wanted to move a group of lines within a procedure to follow line 20, place an F on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
===Specifying range targets===&lt;br /&gt;
&lt;br /&gt;
Several commands let you include a range specification that indicates the range and direction of the target lines. The SAVE, LOCATE, and REPLACE commands define a set of target lines by including range specifications. For LOCATE, if one of these specifications is omitted, the full-screen editor processes the set of lines from the current line to the end of the procedure and then wraps to the top of the procedure and continues to the current line.&lt;br /&gt;
 &lt;br /&gt;
====R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) Target command====&lt;br /&gt;
&lt;br /&gt;
Use the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) target command to define a target in a range of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; lines beginning with the line on which you enter the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;). For example, if you entered R6 on line 15, the range begins on line 15 and ends with line 20.&lt;br /&gt;
  &lt;br /&gt;
====RR Target command====&lt;br /&gt;
&lt;br /&gt;
Use the RR target command to define a target in a range of lines beginning with the line on which you enter the first RR and ending on the line on which you enter the second RR. For example, to specify a range from line 15 to 20, place one RR target on line 15 and another RR target on line 20.&lt;br /&gt;
&lt;br /&gt;
===Range target characters===&lt;br /&gt;
&lt;br /&gt;
Range specifications are summarized in the following table.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Range specifications&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This specification...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Has this effect...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;ALL&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to TOP TO BOTTOM.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the bottom of the procedure and end at the current line.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the procedure bottom and end at the top of the procedure.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Begin at the beginning of the current line and end at the procedure bottom.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the current line and end at the procedure&#039;s beginning.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;RANGE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified as a prefix target command, begin at the beginning of the line specified by R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and end at the end of the line that is &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; &amp;lt;EM CLASS=&amp;quot;symbol&amp;quot;&amp;gt;&amp;amp;#8722;&amp;lt;/EM&amp;gt; 1 lines below the R line.&lt;br /&gt;
&amp;lt;p&amp;gt;If RR is specified as a prefix target command, begin at the beginning of the line that contains the first RR and end at the line that contains the second RR.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to ALL.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the top of the procedure; end at the bottom of the procedure.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; You can use the first initial of top, current, bottom, and range. For example, TOP TO CURRENT is the same as T TO C.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clearing targets===&lt;br /&gt;
&lt;br /&gt;
Targets remain in effect until one of the following events occurs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commands that use the targets complete execution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLEAR command is executed (see [[#Clearing the prefix area|Clearing the prefix area]]). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you specify a target range, the full-screen editor does not automatically clear the range when the command completes; it preserves the range so that it can be used multiple times. To cancel a target range, enter a CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Prefix commands==&lt;br /&gt;
&lt;br /&gt;
Prefix commands and targets execute full-screen editor operations. A &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
prefix command&amp;lt;/var&amp;gt; is an abbreviated command that specifies an editing operation to be performed on a particular line or set of lines.&lt;br /&gt;
&lt;br /&gt;
Enter the command in the prefix area of the line that you want to change. For example, to delete a line, enter a D in the prefix area of the line and press Enter.&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this topic, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
===Summary of prefix commands===&lt;br /&gt;
&lt;br /&gt;
The following table summarizes the prefix commands that you can enter in the prefix area of the display screen. Some prefix commands must be used with a target command. You can enter prefix characters in uppercase or lowercase and in any position in the prefix area.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Prefix commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends the line by inserting a continuous line that contains blanks or nulls.&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;I*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode.&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;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts one or more lines containing blanks or nulls following this line.&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;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates one or more lines.&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;&amp;amp;quot;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates a block.&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;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves one or more lines.&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;MM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves a block.&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;C[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies one or more lines.&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;CC&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies a block.&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;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes one or more lines.&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;DD&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a block.&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;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Restores the line(s) or block most recently deleted.&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;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Makes this line the current line.&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;
===Clearing the prefix area===&lt;br /&gt;
&lt;br /&gt;
The CLEAR command performs the following operations:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears all prefix lines in the prefix or suffix area on the display screen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears any display area text that has been typed since the last time you pressed Enter (or a PF key). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Aborts any pending prefix operations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cancels any specified targets. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information about prefixes and targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
Pressing the CLEAR, PA1, or PA2 key on the 3270 terminal has the same effect as entering the CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Command-line commands==&lt;br /&gt;
&lt;br /&gt;
In addition to prefix commands, which you enter in the left-hand column (prefix area) of the line(s) you want to edit, the Model 204 full-screen editor provides several command-line commands.&lt;br /&gt;
 &lt;br /&gt;
===Current line===&lt;br /&gt;
&lt;br /&gt;
Several command-line commands take effect from the current line. The current line is the line of the procedure on which the full-screen editor acts.&lt;br /&gt;
&lt;br /&gt;
Use the set line prefix command (/) to set the current line.&lt;br /&gt;
 &lt;br /&gt;
====Setting the current line====&lt;br /&gt;
&lt;br /&gt;
To define a new current line, type the set line command (/) in the prefix area of that line. This command is executed before any command-line commands specified on the same screen.&lt;br /&gt;
&lt;br /&gt;
This feature is especially useful with the [[#Searching for a string (LOCATE)|LOCATE command]]. For example, suppose that you want to locate the next occurrence of a string, but not the occurrence on the line following the current line (the line on which LOCATE would normally start its search). You can use the / prefix to reposition the current line so that LOCATE begins its search below the unwanted occurrence.&lt;br /&gt;
&lt;br /&gt;
===Where to enter command-line commands===&lt;br /&gt;
&lt;br /&gt;
Enter command-line commands on the third line down from the top of the screen, which is the command line. It has the following prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering commands===&lt;br /&gt;
&lt;br /&gt;
When entering command-line commands, follow these guidelines:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter one command at a time. Press Enter after the command. If you enter more than one command, only the first command is executed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can enter a command in uppercase or lowercase, or a combination of the two.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can abbreviate some commands.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Several commands have defaults.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
For more information on command abbreviations and defaults, see [[Model 204 full-screen editor commands]].&lt;br /&gt;
&lt;br /&gt;
===Repeating commands===&lt;br /&gt;
&lt;br /&gt;
Placing an equal sign (=) on the command line repeats the most recently executed command.&lt;br /&gt;
&lt;br /&gt;
This command executes a command any number of times and is useful for performing a repetitive operation, such as searching for a string, without re-entering the command each time.&lt;br /&gt;
&lt;br /&gt;
You can also repeat a command by pressing PF9.&lt;br /&gt;
&lt;br /&gt;
==Moving around a procedure==&lt;br /&gt;
&amp;lt;p&amp;gt;The full-screen editor display commands move through a procedure and display needed portions of it on the screen. Display commands move the current line pointer and control the appearance of portions of the procedure, but they do not change the contents of the procedure itself.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Display commands are summarized in the following table and are discussed in detail in the sections that follow.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Display commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&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;TOP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the first line of the procedure.&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;BOTTOM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the last line of the procedure.&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;FORWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of screens in the procedure.&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;BACKWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of screens in the procedure.&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;+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of lines in the procedure.&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;-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of lines in the procedure.&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;
===Moving to the top of the procedure (TOP)===&lt;br /&gt;
The TOP command moves the line pointer to the first line of the procedure that is being edited. After you issue a TOP command, the full-screen editor displays the TOP OF PROCEDURE indicator on the first line of the display area. It displays the first line of the procedure on the second line. The remaining lines of the procedure appear on subsequent lines. The first line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The TOP command is helpful when inserting a line or set of lines at the beginning of the procedure. In a procedure that fills many screens; using the TOP command is often more efficient than scrolling backward using the BACKWARD command.&lt;br /&gt;
&lt;br /&gt;
===Moving to the bottom of the procedure (BOTTOM)===&lt;br /&gt;
The BOTTOM command moves the line pointer to the last line of the procedure that is being edited. After you issue a BOTTOM command, the full-screen editor displays the BOTTOM OF PROCEDURE indicator on the last line of the screen. The preceding lines of the procedure appear on the preceding lines of the screen. The last line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The BOTTOM command is helpful when adding a line or set of lines to the end of the procedure. In a procedure that fills many screens, using the BOTTOM command is often more efficient than scrolling forward using the FORWARD command.&lt;br /&gt;
&lt;br /&gt;
===Scrolling forward (FORWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The FORWARD command scrolls forward in the procedure by moving the line pointer down a specified number of screens. The format of the FORWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;FO&amp;lt;/b&amp;gt;RWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter FORWARD, the full-screen editor advances one entire screen. If you enter FORWARD followed by a number (n), the full-screen editor advances the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a FORWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines preceding and following the current line. The bottom line of the previous screen display becomes the top line of the new screen display.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the first line of the procedure when you issue the FORWARD command (that is, you are positioned at the top of the procedure), the full-screen editor advances only one half a screen and displays the new current line in the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF8 to scroll forward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling backward (BACKWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The BACKWARD command scrolls backward in the procedure, moving the line pointer up a specified number of screens. The format of the BACKWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;BA&amp;lt;/b&amp;gt;CKWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter BACKWARD, the full-screen editor scrolls backward one entire screen. If you enter BACKWARD followed by a number (n), the full-screen editor scrolls backward the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a BACKWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines that precede and follow the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the last line of the procedure when the BACKWARD command is issued, the full-screen editor scrolls backward only half a screen and displays the new current line in the center of the display screen. Otherwise, the BACKWARD command causes the top line of the previous screen display to become the bottom line of the new screen display. In either case, the BACKWARD command causes the current line to be backed up by the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF7 to scroll backward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling a specified number of lines (+/-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)===&lt;br /&gt;
&amp;lt;p&amp;gt;The scroll commands (+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) scroll forward or backward, moving the line pointer a specified number of lines in the procedure. These commands are useful for moving a portion of the procedure up or down.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter a number, optionally preceded by (+), the full-screen editor advances the specified number of lines. For example, if you enter either 5 or +5 the editor advances the current line forward five lines toward the end of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter -, followed by a number, the editor moves backward the specified number of lines. For example, if you enter -10, the editor moves backward 10 lines toward the beginning of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In general, the current line is displayed highlighted at the center of the screen. However, if the current line is less than half a screen from the top or bottom of the screen when you issue the command, the full-screen editor shifts the display to fill the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that +&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; scroll a specified number of lines in the procedure. Because a single procedure line can occupy more than a single physical line on the display screen, these commands might actually appear to scroll forward or backward a greater number of display lines than specified.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for and replacing text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The full-screen editor LOCATE command allows you to search for text strings in a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The REPLACE command allows you to locate and change text strings.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 These two commands share many characteristics, including:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Rules for text string searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Use of special search characters&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Option to specify a range of procedure lines&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Uppercase and lowercase in searches===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With the exception of [[#Special search characters|special search characters]], the full-screen editor searches for an exact match to the string specified in the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command. Both the case (upper and lower) in which the string is specified, and the placement of blanks, are significant. Therefore, if you specify this command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;LOCATE /Model 204 &amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The editor locates an occurrence of &amp;lt;code&amp;gt;Model 204&amp;lt;/code&amp;gt;, but not &amp;lt;code&amp;gt;MODEL 204&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;MODEL204&amp;lt;/code&amp;gt; in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that although lowercase characters are entered in a procedure, Model&amp;amp;nbsp;204 does not necessarily process these characters as lowercase. By default, characters are translated automatically into uppercase when they are transmitted to Model&amp;amp;nbsp;204 unless: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You specified the Model&amp;amp;nbsp;204 &amp;lt;var&amp;gt;[[*LOWER command|*LOWER]]&amp;lt;/var&amp;gt; command before entering the full-screen editor, or &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; was invoked upon entry to the editor by the setting of the &amp;lt;var&amp;gt;[[SIREDIT parameter|SIREDIT]]&amp;lt;/var&amp;gt; parameter. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You use the editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command to turn off the automatic uppercasing. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the CASE command====&lt;br /&gt;
The editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command is available with version 7.5 or higher of Model&amp;amp;nbsp;204. It has two options:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE MIXED &lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is accepted “as is,” without translation to uppercase. This is similar to invoking the &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;MIXED&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want; that is, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MIX&amp;lt;/code&amp;gt; and so on are all valid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE UPPER&lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is translated to uppercase.  This is similar to invoking the &amp;lt;var&amp;gt;[[*UPPER command|*UPPER]]&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;UPPER&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command does not affect the case translation setting (&amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt;) that was in effect “outside” the editor: when you exit the editor, the case translation is as it was prior to entering the editor.&lt;br /&gt;
&lt;br /&gt;
In addition to the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command, the initial case translation setting within the editor can be automatically set to &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt;, using the X&#039;01&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
Neither the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command nor the &amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt; setting affect the input on the editor command line.&lt;br /&gt;
&lt;br /&gt;
To match strings (for example, “/subroutine”) in a case-insensitive manner, use the X&#039;20&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can limit the scope of a text string search by indicating a range.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The range entry indicates the target lines and the order of the lines to be searched for a match. You can include any of the range specifications summarized in [[#Specifying range targets|Specifying range targets]]. If you omit the range, the full-screen editor searches the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Special search characters==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use special search characters when specifying a search string with the LOCATE and REPLACE commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
These special characters are:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Arbitrary (wildcard) character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Repeat character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
End-of-line character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Wildcard character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An arbitrary or wildcard character is matched by any character. For example, the ampersand character (&amp;amp;amp;) is your wildcard character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MODEL&amp;amp;amp;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings in the procedure can be located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODELA&lt;br /&gt;
MODEL2&lt;br /&gt;
MODEL&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the wildcard character (ARBCHAR)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;ARBCHAR&amp;lt;/var&amp;gt; command specifies a wildcard character that matches zero or more characters when it is included in a search string. The format of the ARBCHAR command is as follows:&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] ARBCHAR {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/var&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the wildcard or arbitrary character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ARBCHAR OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR *&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the asterisk in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /PROC*&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the letters PROC, followed by any character. The following strings are found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCA&lt;br /&gt;
INPROC3&lt;br /&gt;
PROC *.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are not found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PRO12&lt;br /&gt;
PRO CABC&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the wildcard character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter ARBCHAR OFF, none of the characters in the specified search strings in subsequent LOCATE and REPLACE commands are considered wildcard characters, and all strings in the procedure must match the search string exactly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repeat character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The repeat character indicates that the previous character in the string can be repeated any number of times. For example, your repeat character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any of the following strings in the procedure are located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *&lt;br /&gt;
Format **&lt;br /&gt;
Format ****************&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the repeat character (REPEAT)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPEAT command specifies a repeat character that matches zero or more occurrences of the repeating character when it is included in a search string.&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 REPEAT command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] REPEAT {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the repeat character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
REPEAT OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT &amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the &amp;amp;amp; in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /MODEL*&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the characters &amp;lt;code&amp;gt;M O D E L&amp;lt;/code&amp;gt;, followed by any number of asterisks. The following strings are selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL*&lt;br /&gt;
MODEL***&lt;br /&gt;
MODEL**&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL1&lt;br /&gt;
MOD***&lt;br /&gt;
MODEL *&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use repeat characters in conjunction with wildcard characters. For example, suppose that the wildcard character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), the repeat character is an ampersand (&amp;lt;tt&amp;gt;&amp;amp;amp;&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/PRE!&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any string that begins with the letters &amp;lt;code&amp;gt;P R E&amp;lt;/code&amp;gt;, followed by any number of any other characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the repeat character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;REPEAT OFF&amp;lt;/code&amp;gt;, none of the characters in the specified search strings in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered repeat characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===End-of-line character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The end-of-line character indicates the end of one line and the beginning of the next line. When the end-of-line character is used in a search string, it specifies a search for a string that occurs at the beginning or end of a line. For example, the percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%prefix&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line beginning with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix area!!!&lt;br /&gt;
prefixes!!!&lt;br /&gt;
prefix 12!!!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix%&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line ending with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify an end-of-line character only at the beginning or at the end of the search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the end-of-line character====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LINEND&amp;lt;/var&amp;gt; command specifies an end-of-line character. When you use an end-of-line character in a search string, it represents a character that indicates the end of one line and the beginning of the next line. The editor searches for a string that occurs at the beginning or end of a line.&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;LINEND&amp;lt;/var&amp;gt; command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] LINEND {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the end-of-line character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt; is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND #&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the pound sign (&amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt;) in a search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /#PART&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any line that begins with the letters &amp;lt;code&amp;gt;P A R T&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You must specify the end-of-line character at the start or end of a search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the end-of-line character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt;, none of the characters in the search strings specified in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered end-of-line characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Combining special search characters===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify combinations of characters in the search string. For example, the following search string locates any string that contains HELP, followed by any number of characters, followed by ME:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP&amp;amp;amp;!ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP123ABME&lt;br /&gt;
HELP ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for a string (LOCATE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command searches for a particular string in the procedure or in a subset of the procedure. See [[#Specifying a string|Specifying a string]] for more information about string specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Two formats of the LOCATE command===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
There are two formats of the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====With LOCATE keyword====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The first format is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[-][&amp;lt;b&amp;gt;LO&amp;lt;/b&amp;gt;CATE] /&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;[/ [IN]&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where the delimiting character (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; in the example above) can be any character not appearing in the string, with the exception of a blank character.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LO *ELEPHANT* IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify a range, you do not need to include a delimiter after the string. If you specify an alphabetic delimiter, include a space between the LOCATE or LO keyword and the delimiter. If the delimiter is nonalphabetic, the space is not required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Without LOCATE keyword====&lt;br /&gt;
The second format, which does not require the LOCATE keyword, is as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[-] /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where a slash (/) must precede the string. If you do not specify a range, you do not need to include a slash following the string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the full-screen editor cannot find a match for the specified string, it displays the following message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;TARGET STRING NOT LOCATED&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching forward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search forward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor starts the search at the line following the current line and advances forward, stopping when it locates the string or reaches the end of the procedure. If the current line is the last line of the procedure, the full-screen editor wraps to the top of the procedure, begins the search at the top of the procedure, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching backward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search backward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When you precede the command with a minus sign, the full-screen editor starts the search at the line preceding the current line and searches backward toward the beginning of the procedure, stopping when it locates the string or reaches the top of the procedure. If the current line is the top of the procedure, the full-screen editor wraps to the bottom of the procedure, begins the search at the bottom line, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Replacing a string (REPLACE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPLACE command replaces a string in the procedure with a substitute string. REPLACE provides the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Displays each target string to verify the change before proceeding.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Changes more than one occurrence of a specified string in a single line. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the REPLACE command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;R&amp;lt;/b&amp;gt;EPLACE/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt; [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; | *] [&amp;lt;b&amp;gt;V&amp;lt;/b&amp;gt;ERIFY [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you include the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;, VERIFY, or range options in the REPLACE command, specify the options in the order shown.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;R /GROUP/PERM GROUP/ * IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a string===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify strings as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;String to be searched for and changed (old string).&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 class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;New string to replace &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;. The new string need not be the same length as the old string.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use as a delimiter any nonblank character (/ in the example above) that does not appear in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
string1&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;. If you do not specify the number of occurrences, a VERIFY option, or a range, you do not need to include a delimiter after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controlling the number of strings to be replaced===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can replace all occurrences of a string or only the first occurrence in a line. The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification in the REPLACE command represents the number of occurrences of the search string (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;) to be replaced in each line. If you omit an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification, only the first occurrence of the string is replaced in a line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify a value of *, all occurrences of the string are replaced in each line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using the VERIFY option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The VERIFY option verifies all string replacements before they are made. Each line that contains a string that matches the specified string is highlighted and is delimited on the scale line by the characters of the proper length, on the column scale line directly beneath the potential match. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;lt;====&amp;amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The column scale must be turned on to display the scale line characters. The following prompt appears on the command line each time a string is matched:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;CHANGE?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond with any of the following choices:&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;This choice...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;YES, Y, or Enter&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Changes the string&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;NO or N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not change the string&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;ALL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Turns off the VERIFY option and makes all remaining changes&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;STOP or S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Terminates the REPLACE command&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;
If you enter any other response, the full-screen editor displays the &amp;lt;code&amp;gt;CHANGE&amp;lt;/code&amp;gt;? prompt again.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify a range of procedure lines to which the search applies. See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inserting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can insert text several ways using the full-screen editor. Use the following commands to insert text:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;E&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends a line&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;th&amp;gt;I&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts separate lines&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;th&amp;gt;I*&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode&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;th&amp;gt;GET&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts a saved procedure&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;
You can also insert text using the REPLACE command to substitute a string with additional text for an existing string (see [[#Specifying a string|Specifying a string]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Alternatively, you can insert text by [[#Duplicating, copying, and moving text|duplicating, copying, and moving]] lines or blocks of text.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Extending a line===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The E (extend) prefix command inserts a physical line immediately following the line that contains the E, forming a logical line extension. The line is filled with the fill character (that is, blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill character]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting lines===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I (insert) prefix command  inserts one or more lines following the line containing the I. Unlike E lines, these lines are treated as separate lines, not as continuations of existing lines in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the I prefix command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter I alone, the full-screen editor inserts one line following the line containing the I. If you enter I followed by a number, the full-screen editor inserts the specified number of lines. For example, I5 inserts 5 blank lines after the line that contains the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Inserted lines are filled with the fill character (blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill charcter]].&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
===Specifying a fill character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FILL command specifies a fill character. When the full-screen editor displays a line of text, it pads the line on the right with either null or blank characters. The format of the FILL command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] FILL {&amp;lt;u&amp;gt;NULL&amp;lt;/u&amp;gt; | BLANK}&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify &amp;lt;code&amp;gt;FILL NULL&amp;lt;/code&amp;gt;, the full-screen editor pads with null characters on the right. If you specify &amp;lt;code&amp;gt;FILL BLANK&amp;lt;/code&amp;gt;, the full-screen editor pads with blank characters on the right.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The character selected as the fill character is inserted in lines generated using the E (extend) and I (insert) prefix commands.&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 command line on the display screen is always filled with null characters, regardless of the specified fill character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering input mode===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I* prefix command places the full-screen editor in input mode. The line that contains I* becomes the current line and appears at the top of the screen. The rest of the screen is blank. Any lines following the I* line in the original procedure are not displayed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For input lines, the cursor appears in column 1 of the first blank line. You can now enter text. If you press Enter, the last line that you typed is moved to the top of the screen and the cursor appears on the next (blank) line. To exit from input mode, either press Enter twice without any intervening text editing, or enter any full-screen editor command on the command line.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting a saved procedure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The GET command inserts a previously saved procedure after the current line. You can insert a procedure that is stored in either the default procedure file or in a file specified in the command (with the filespec option). The last line of the inserted procedure becomes the current line and is positioned at the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Before you issue the GET command, position the cursor at the appropriate line. For example, if you want to add one procedure to the end of another, use the BOTTOM command to advance the cursor to the end of the procedure before the procedure is added.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the GET command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[IN &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt;] GET &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Where:&amp;lt;/p&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;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the combined procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for filespec is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
ACCOUNT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If neither FILE nor GROUP is specified, FILE is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name of the procedure to be inserted after the current line. This procedure can be stored in any Model 204 file that you currently have open.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Duplicating, copying, and moving text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can save keystrokes and reorganize text by using the full-screen editor commands for the following tasks:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Duplicating lines of text (&amp;amp;quot; or &amp;amp;quot;&amp;amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Copying lines of text (C or CC)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Moving lines of text (M or MM)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Groups of lines are also referred to as blocks. You can also [[#Deleting and undeleting text|delete and undelete lines of text]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Duplicating lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can duplicate either one line or a block of lines.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating one or more lines====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate (&amp;amp;quot;) prefix command duplicates the line on which it is entered. The format of the duplicate command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the line. If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor inserts the specified number of duplicate lines. For example, &amp;lt;code&amp;gt;&amp;amp;quot;5&amp;lt;/code&amp;gt; duplicates a line five times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating a block of text====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate block (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;) prefix command duplicates a group of lines. Entering &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; duplicates the block of lines beginning with the line on which the first &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified and ending with the line on which the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified. &lt;br /&gt;
&lt;br /&gt;
The format of this command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the block of lines. The block appears immediately following the line that contains the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; (the last line of the block). If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor duplicates the block the specified number of times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Copying lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The C (copy) prefix command copies one or more lines to the position indicated by the P (precedes) or F (follows) prefix target. If you specify P, the line(s) are inserted just before the line that contains the P. If you specify F, the lines are inserted just after the line that contains the F. For more information about prefix targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the C prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;C[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of lines to copy. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, the full-screen editor copies only the line that contains the C. If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; followed by a number, the full-screen editor copies the specified number of lines, beginning with the line containing the C&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
When a line is copied, it is preserved in its original position as well as being duplicated in the new position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CC (copy block) prefix command copies a group of lines without requiring you to count them. CC copies the block of lines that begins with the line on which the first CC is specified and that ends with the line on which the second CC is specified. The lines are copied to the position indicated by the P (precedes) or F (follows) prefix target, as discussed for C.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Moving lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The M (move) prefix command moves one or more lines to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]]. If you specify P, the line(s) are inserted just before the line containing the P. If you specify F, the line(s) are inserted just after the line that contains the F.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the M prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to move. &lt;br /&gt;
&lt;br /&gt;
If you enter M, the full-screen editor moves only the line that contains the M. If you enter M followed by a number, the full-screen editor moves the specified number of lines, beginning with the line that contains the M&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. When a line is moved, it is automatically deleted from its original position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MM (move block) prefix command moves a group of lines without requiring you to count them. MM moves the block of lines that begins with the line on which the first MM is specified and that ends with the line on which the second MM is specified. The lines are moved to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deleting and undeleting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 You can delete lines from a procedure, using the D or DD prefix commands. You can also retrieve the last entry that was deleted with the U prefix command. Groups of lines are also referred to as blocks.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Deleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The D (delete) prefix command deletes one or more lines from the procedure. &lt;br /&gt;
&lt;br /&gt;
The format of the D prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to delete. &lt;br /&gt;
&lt;br /&gt;
If you enter D, the full-screen editor deletes only the line that contains the D. If you enter D followed by a number, the full-screen editor deletes the specified number of lines, beginning with the line that contains the D. If the number of lines specified in the D command exceeds the number remaining in the procedure, the full-screen editor deletes all lines from the line on which the D command is specified to the end of the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a line or set of lines is deleted, the lines are not immediately discarded; they are placed on the full-screen editor delete stack. Entries in this stack are deleted when the editing session is terminated. Each time a D command is executed, an entry is placed on the delete stack. A D&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; command, which deletes several lines, causes a single entry that contains the specified block of lines to be placed on the stack. However, a series of contiguous lines, each containing a D command, is not accumulated into a single entry on the delete stack. You can [[#Undeleting lines or blocks|retrieve or undelete an entry]] by means of the U command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DD (delete block) prefix command deletes a group of lines without requiring you to count them. DD deletes the block of lines that begins with the line on which the first DD is specified and that ends with the line on which the second DD is specified. The block is placed on the delete stack as a single entity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Undeleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The U (undelete) prefix command retrieves the last entry that was deleted (that is, placed on the delete stack) and inserts it after the line that contains the U.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;exit&amp;quot;&amp;gt;Exiting from the full-screen editor&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit from the full-screen editor or to save edited procedures, use the commands listed in the following table, which also lists the description of each command and where more information is located. When you exit from the full-screen editor, you are returned to the Model 204 command level.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;CAPTION&amp;gt;Exit and save commands&amp;lt;/CAPTION&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;END or EEND&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor and saves the edited procedures. The EEND command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&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;th&amp;gt;GO or GGO&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, saves the edited procedure, and includes (executes) the edited procedure. The GGO command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved. Under Model 204 7.8 and later, the GO command does not actually update the procedure in the file if it has not been modified since it was loaded or last saved.&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;th&amp;gt;QUIT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, might prompt if changes were made to the procedure, and does not save the edited procedure.&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;th&amp;gt;SAVE or SSAVE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not exit from the full-screen editor, but saves the edited procedure. The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&amp;lt;/td&amp;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;
For more information about exit and save commands, refer to the [[EDIT command]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Exiting from the editor and saving the procedure (END or EEND)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The END or EEND command exits from the full-screen editor and saves the edited procedure on disk. Specify the name under which the procedure is to be saved. You can store the procedure in either the default procedure file or in a file specified in the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the END/EEND command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [END | EEND] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the default Model&amp;amp;nbsp;204 procedure file. The filespec can identify a Model&amp;amp;nbsp;204 file or a temporary or permanent group. The file specified by IN filespec must be open. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify either FILE or GROUP, FILE is assumed. For more information about files and groups, see the following pages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: File]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Permanent group]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Temporary group]]&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;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter END, the procedure is saved under the name of the output procedure specified when you invoked the editor. The procedure is stored in the Model 204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The EEND command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. EEND would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving and including the procedure (GO or GGO)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Like the END command, the GO or GGO command exits from the full-screen editor and saves the edited procedure. Unlike END, GO automatically performs an implicit Model 204 [[INCLUDE command]], which executes the Model 204 commands in the saved procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The format of the GO/GGO command is as follows:&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;filespec&amp;lt;/span&amp;gt;] [GO | GGO] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
GO command options are identical to END command options. If you enter GO, the full-screen editor saves the procedure under the name of the output procedure specified when you invoked the full-screen editor. The procedure is stored in the Model 204 default procedure file. Under Model 204 7.8 and later, the procedure won&#039;t actually be updated by the GO command if it has not been modified in the editor since it was loaded or last saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The GGO command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. GGO would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Exiting from the editor without saving the edited procedure (QUIT)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The QUIT command exits from the full-screen editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you change the procedure during the current editing session and exit by entering QUIT, the full-screen editor displays the following message, which indicates that the procedure was changed and asks you to enter QUIT again if you want to exit the procedure without saving the edits:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE HAS BEEN MODIFIED, ENTER &#039;QUIT&#039; TO VERIFY.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond in one of the following ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter QUIT on the command line to confirm that changes are not to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ignore the prompt and continue editing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit without receiving the warning prompt, enter the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you use QUIT to exit from a file that was examined but not modified, the full-screen editor does not prompt before exiting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can also press PF3 to quit. Your edits are not saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving the procedure (SAVE or SSAVE)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The SAVE or SSAVE command saves the edited procedure or a subset of that procedure under the specified name (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;) or the default procedure name. Unlike the END, GO, and QUIT commands, SAVE does not exit from the editor. To ensure against the loss of changes due to a system failure, issue the SAVE command periodically while you edit a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the SAVE/SSAVE command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [SAVE | SSAVE] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;] [[IN] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group. The file specified with IN filespec must be open. It has the same syntax as described for the END command.&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;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;range is the range to be saved. Note that if you specify range, you must also specify procname. You can include any of the [[#Range target characters|range specifications]]. If you omit a range, the entire procedure is saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter SAVE alone, the full-screen editor saves the entire procedure under the name of the output procedure specified when the editor was invoked. The procedure is stored in the Model&amp;amp;nbsp;204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. SSAVE would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Procedure update control===&lt;br /&gt;
&amp;lt;p&amp;gt;Before Model 204 7.8, the editor would hold a shared lock on the procedure being editing during the edit session. This would ensure that no other user could update the procedure underneath the user in the editor. Unfortunately, this would also block updates in the common case where one is just browsing a procedure in the editor and leave a lock on a procedure if the editing user forgets to exit the editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Under Model 204 7.8 and later, no lock is held on the procedure during the edit session. Instead, if the user attempts to save the procedure via the &amp;lt;var&amp;gt;SAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;END&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GO&amp;lt;/var&amp;gt; command, the timestamp if the procedure in the output file is compared with the timestamp when the procedure was loaded or last saved. If the timestamp no longer matches, it means that another user has modified the procedure and saving the procedure would overwrite those changes. In this case the editing user is warned and the save is not performed. If the editing user wishes to force the save, anyway, the user can issue the &amp;lt;var&amp;gt;SSAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EEND&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GGO&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Category: Model 204 editor]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120290</id>
		<title>Model 204 full-screen editor</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120290"/>
		<updated>2024-09-27T19:11:49Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Saving the procedure (SAVE or SSAVE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The full-screen editor enables you to use the special capabilities of the IBM 3270 and compatible terminals.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Model 204 provides the following editors, which you can use to enter, change, or add text to Model 204 requests and procedures:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Full-screen editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for full-screen terminals.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Line editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for line-at-a-time terminals. Optionally, you can invoke this editor from a full-screen terminal.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This topic describes how to use the full-screen editor. [[Model 204 line editor]] describes the line editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Editing capabilities===&lt;br /&gt;
Special features of the full-screen editor include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Full-screen mode&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 are always in full-screen mode, even when text is being entered or added to a procedure. You can position the cursor at any text on the display screen and delete, insert, or change characters by typing at that point.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Special screen display&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The display screen contains a display area and, optionally, either a prefix or a suffix area for entry of prefix commands to perform editing operations. (See [[#Using targets with prefix commands|Using targets with prefix commands]].) You can display a column scale at the center of the screen to facilitate the positioning of text in specific columns.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Automatic text wrapping&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines that are longer than the normal display line are automatically wrapped onto subsequent display line(s).&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Global text searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can search throughout a procedure for any string of characters. You can replace characters and specify wildcard characters to match all or part of the specified string. This feature is described in [[#Specifying a string|Specifying a string]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefixes and targets&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can specify both editing operations (prefixes) and the lines on which the edits are to be performed (targets) by entering abbreviated commands in the prefix or suffix area of the screen. Prefixes and targets are described in [[#Specifying range targets|Specifying range targets]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;PF key functions&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use PF3 to quit, PF7 to scroll backward, PF8 to scroll forward, and PF9 to repeat commands while editing in full-screen mode.&lt;br /&gt;
&lt;br /&gt;
==Invoking the full-screen editor==&lt;br /&gt;
 &lt;br /&gt;
===Model 204 requirements===&lt;br /&gt;
Before invoking the full-screen editor, set the Model 204 LOUTPB parameter to a minimum value of 3000. The [[LOUTPB parameter]] specifies the length of the output page buffer for 3270 terminals that use the full-screen capabilities.&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor===&lt;br /&gt;
You can invoke the full-screen editor in the following ways:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Directly from Model 204 command level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Indirectly in a User Language (SOUL) request&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
To invoke the full-screen editor from a terminal, enter the &amp;lt;var&amp;gt;[[EDIT command|EDIT]]&amp;lt;/var&amp;gt; command.&lt;br /&gt;
 &lt;br /&gt;
====Using the EDIT command====&lt;br /&gt;
To invoke the full-screen editor, use the &amp;lt;var&amp;gt;EDIT command&amp;lt;/var&amp;gt;. The format of the &amp;lt;var&amp;gt;EDIT&amp;lt;/var&amp;gt; command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT(SCREEN)[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Specifying the type of editor====&lt;br /&gt;
You can include a parameter that indicates which of the Model&amp;amp;nbsp;204 editors to invoke.  To request the full-screen editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (SCREEN)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To request the line editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (LINE)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you do not specify either SCREEN or LINE, the appropriate editor for your terminal type is invoked. For example, if your terminal is an IBM 3270 and you enter EDIT while at command level or while executing a SOUL request, the full-screen editor is invoked automatically. The full-screen editor is not available from an IBM 3270 terminal that is connected to Model 204 through an access method that does not support full-screen input and output.&lt;br /&gt;
 &lt;br /&gt;
====Specifying an input procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; parameter to name a temporary or permanent procedure to be used as input for the current editing session. If you do not specify an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; option, the full-screen editor creates a temporary procedure (Model&amp;amp;nbsp;204 temporary procedure 0). Note that you cannot use the full-screen editor to create a new and permanent procedure if you specify a nonexistent input procedure.&lt;br /&gt;
&lt;br /&gt;
====Specifying an output procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter to specify an output procedure name. You can include an output procedure name in the EDIT command or specify a name when you exit from the procedure with an END, GO, or SAVE command. After the editing session terminates, Model 204 saves the procedure under the specified &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; name. If you specify a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter in the EDIT command and enter a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter when exiting from the procedure, the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter specified when exiting overrides the name specified in the EDIT command.&lt;br /&gt;
&lt;br /&gt;
For information about the rules for procedure names, see [[EDIT command#Procedure names|Procedure names]].&lt;br /&gt;
&lt;br /&gt;
====Results of using the EDIT command====&lt;br /&gt;
After you invoke the full-screen editor, use any of the commands described in this chapter. When you enter the full-screen editor, the first portion of the procedure to be edited appears in the display area and the cursor appears at the beginning of the command line. To reposition the cursor to the command line, press the HOME key (usually ALT-BACKTAB).&lt;br /&gt;
&lt;br /&gt;
When you issue an EDIT command, the full-screen editor writes the following message to the Model 204 audit trail:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.0685: EDITING INTO newproc&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor indirectly===&lt;br /&gt;
You can invoke the full-screen editor indirectly by including the EDIT command in a SOUL request by using the TERMINAL option in the following format:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT (TERMINAL)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TERMINAL option of EDIT====&lt;br /&gt;
The TERMINAL option invokes the full-screen editor from within a procedure and connects the editor to your terminal for input. For more information about the TERMINAL option, refer to the Model 204 [[EDIT command]] wiki page.&lt;br /&gt;
&lt;br /&gt;
==Display screen format==&lt;br /&gt;
The typical format of the display screen during an editing session is shown in the following figure. &lt;br /&gt;
&lt;br /&gt;
The areas numbered in the diagram are described below the figure.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot; style=&amp;quot;width:550px&amp;quot;&amp;gt;Sample Display Screen&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;figure&amp;quot;&amp;gt;[[File:Editing_Guide_ch1_Sample_Display_Screen.gif]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Screen components===&lt;br /&gt;
The components of the display screen are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Header Line&lt;br /&gt;
&amp;lt;p&amp;gt;The top line of the screen is reserved for procedure identification. The header line contains the following information:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Old procedure name (before editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New procedure name (after editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Line number of the current line within the procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current maximum line number within the procedure &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Message Line&lt;br /&gt;
&amp;lt;p&amp;gt;The second line is reserved for error and status messages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command Line&lt;br /&gt;
&amp;lt;p&amp;gt;The third line is reserved for the entry of screen commands. This line begins with the following command prompt:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       ===&amp;amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can enter a command in uppercase or lowercase letters or a combination of the two.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;See [[Model 204 full-screen editor commands]] for abbreviations and defaults for full-screen commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter one command at a time. If you enter more than one command, only the first command is executed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Display Area&lt;br /&gt;
&amp;lt;p&amp;gt;The display area contains a portion of the text that is being edited. The text on the screen is considered a window in which only part of the procedure currently being edited appears.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To manipulate displayed procedures, first position the cursor and then add, change, or delete text. To execute changes, press the Enter key.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To position other parts of the procedure in the edit window, you can use the display commands or PF keys to [[#Moving around a procedure|scroll forward and backward]] through the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefix or Suffix Area&lt;br /&gt;
&amp;lt;p&amp;gt;This area can either precede or follow the display area on the screen. The columns typically display the following special characters:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       =====      &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can replace one or more of these equal signs with a special prefix command to perform an editing function, such as inserting or deleting text on the corresponding line in the display area. See [[#Summary of prefix commands|Summary of  prefix commands]] for more information about prefix commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current Line&lt;br /&gt;
&amp;lt;p&amp;gt;The line being edited normally appears at the center of the screen and is highlighted (that is, displayed more brightly than the surrounding text).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;line pointer&amp;lt;/var&amp;gt; points to the current line. The line pointer is repositioned to a new current line when you scroll forward and backward and when you execute screen commands. You can position the line pointer at a new current line by specifying the [[#Setting the current line|set line prefix command (/)]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Column Scale&lt;br /&gt;
&amp;lt;p&amp;gt;The column scale indicates the column position of the procedure text that appears. You can display a column scale immediately below the center line (normally the current line) in the display area. The scale is useful when text must be entered in particular columns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Requesting a column scale===&lt;br /&gt;
&lt;br /&gt;
The SCALE command specifies whether or not the full-screen editor displays a column scale in the center of the display area on the screen. The format of the SCALE command is:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] SCALE {OFF | ON}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCALE OFF is the default.&lt;br /&gt;
&lt;br /&gt;
If you specify SCALE OFF, the column scale is not displayed. If you specify SCALE ON, the scale is displayed. The column scale is shown in the [[Model 204 full-screen editor#Sample Display Screen|sample display screen]].&lt;br /&gt;
&lt;br /&gt;
===Positioning the prefix area===&lt;br /&gt;
&lt;br /&gt;
The PREFIX command positions the prefix area on the left (prefix) or right (suffix) side of the display screen. PREFIX LEFT is the default. The format of the PREFIX command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] PREFIX {LEFT | RIGHT}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full-screen editor positions the prefix area at the end of each line of the display area when you specify PREFIX RIGHT, and at the beginning of each line when you specify PREFIX LEFT.&lt;br /&gt;
&lt;br /&gt;
The [[#Sample Display Screen|sample display screen]] shows the positioning of the prefix area on the left side of the display screen. &lt;br /&gt;
&lt;br /&gt;
For a description of the prefix commands that can be entered in this area, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
==Editing modes==&lt;br /&gt;
&lt;br /&gt;
The editing modes are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command mode (used primarily for editing) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input mode (used primarily for entering new text)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
===Command mode===&lt;br /&gt;
&lt;br /&gt;
When you invoke the full-screen editor, you are placed in command mode.  To position the cursor to the command line, press the HOME key (usually ALT/BACKTAB).&lt;br /&gt;
&lt;br /&gt;
In command mode, you enter commands for the full-screen editor either on the command line or in the prefix area.&lt;br /&gt;
 &lt;br /&gt;
===Input mode===&lt;br /&gt;
&lt;br /&gt;
Enter input mode to type new lines of text. To enter input mode, specify an I* prefix command. You cannot use the prefix commands in input mode.&lt;br /&gt;
&lt;br /&gt;
To return to command mode from input mode, press the Enter key twice without any intervening text.&lt;br /&gt;
&lt;br /&gt;
==Using targets==&lt;br /&gt;
&lt;br /&gt;
Some prefix and full-screen editor commands operate on a line or set of lines called a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
target&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, if you want to search for a text string within lines 10 and 20 of a procedure, lines 10 through 20 are considered target lines.&lt;br /&gt;
&lt;br /&gt;
Specify a target on the appropriate line in the prefix or suffix area of the screen.&lt;br /&gt;
&lt;br /&gt;
When specifying a target, you can use uppercase and lowercase interchangeably. Targets are specified as one of the following:&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;Target command&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Description&amp;lt;/th&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;&amp;lt;b&amp;gt;P&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Precedes the target&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;&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Follows the target&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;&amp;lt;b&amp;gt;R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range&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;&amp;lt;b&amp;gt;RR&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range block&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using targets with prefix commands===&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this chapter, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
====P target command====&lt;br /&gt;
&lt;br /&gt;
Use the P target command to define a target above the line on which you enter the P. For example, to move a group of lines within a procedure to precede line 20, place a P target on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
====F target command====&lt;br /&gt;
&lt;br /&gt;
Use the F target command to define a target below the line on which you enter the F. For example, if you wanted to move a group of lines within a procedure to follow line 20, place an F on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
===Specifying range targets===&lt;br /&gt;
&lt;br /&gt;
Several commands let you include a range specification that indicates the range and direction of the target lines. The SAVE, LOCATE, and REPLACE commands define a set of target lines by including range specifications. For LOCATE, if one of these specifications is omitted, the full-screen editor processes the set of lines from the current line to the end of the procedure and then wraps to the top of the procedure and continues to the current line.&lt;br /&gt;
 &lt;br /&gt;
====R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) Target command====&lt;br /&gt;
&lt;br /&gt;
Use the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) target command to define a target in a range of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; lines beginning with the line on which you enter the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;). For example, if you entered R6 on line 15, the range begins on line 15 and ends with line 20.&lt;br /&gt;
  &lt;br /&gt;
====RR Target command====&lt;br /&gt;
&lt;br /&gt;
Use the RR target command to define a target in a range of lines beginning with the line on which you enter the first RR and ending on the line on which you enter the second RR. For example, to specify a range from line 15 to 20, place one RR target on line 15 and another RR target on line 20.&lt;br /&gt;
&lt;br /&gt;
===Range target characters===&lt;br /&gt;
&lt;br /&gt;
Range specifications are summarized in the following table.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Range specifications&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This specification...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Has this effect...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;ALL&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to TOP TO BOTTOM.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the bottom of the procedure and end at the current line.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the procedure bottom and end at the top of the procedure.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Begin at the beginning of the current line and end at the procedure bottom.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the current line and end at the procedure&#039;s beginning.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;RANGE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified as a prefix target command, begin at the beginning of the line specified by R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and end at the end of the line that is &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; &amp;lt;EM CLASS=&amp;quot;symbol&amp;quot;&amp;gt;&amp;amp;#8722;&amp;lt;/EM&amp;gt; 1 lines below the R line.&lt;br /&gt;
&amp;lt;p&amp;gt;If RR is specified as a prefix target command, begin at the beginning of the line that contains the first RR and end at the line that contains the second RR.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to ALL.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the top of the procedure; end at the bottom of the procedure.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; You can use the first initial of top, current, bottom, and range. For example, TOP TO CURRENT is the same as T TO C.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clearing targets===&lt;br /&gt;
&lt;br /&gt;
Targets remain in effect until one of the following events occurs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commands that use the targets complete execution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLEAR command is executed (see [[#Clearing the prefix area|Clearing the prefix area]]). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you specify a target range, the full-screen editor does not automatically clear the range when the command completes; it preserves the range so that it can be used multiple times. To cancel a target range, enter a CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Prefix commands==&lt;br /&gt;
&lt;br /&gt;
Prefix commands and targets execute full-screen editor operations. A &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
prefix command&amp;lt;/var&amp;gt; is an abbreviated command that specifies an editing operation to be performed on a particular line or set of lines.&lt;br /&gt;
&lt;br /&gt;
Enter the command in the prefix area of the line that you want to change. For example, to delete a line, enter a D in the prefix area of the line and press Enter.&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this topic, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
===Summary of prefix commands===&lt;br /&gt;
&lt;br /&gt;
The following table summarizes the prefix commands that you can enter in the prefix area of the display screen. Some prefix commands must be used with a target command. You can enter prefix characters in uppercase or lowercase and in any position in the prefix area.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Prefix commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends the line by inserting a continuous line that contains blanks or nulls.&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;I*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode.&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;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts one or more lines containing blanks or nulls following this line.&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;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates one or more lines.&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;&amp;amp;quot;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates a block.&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;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves one or more lines.&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;MM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves a block.&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;C[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies one or more lines.&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;CC&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies a block.&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;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes one or more lines.&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;DD&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a block.&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;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Restores the line(s) or block most recently deleted.&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;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Makes this line the current line.&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;
===Clearing the prefix area===&lt;br /&gt;
&lt;br /&gt;
The CLEAR command performs the following operations:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears all prefix lines in the prefix or suffix area on the display screen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears any display area text that has been typed since the last time you pressed Enter (or a PF key). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Aborts any pending prefix operations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cancels any specified targets. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information about prefixes and targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
Pressing the CLEAR, PA1, or PA2 key on the 3270 terminal has the same effect as entering the CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Command-line commands==&lt;br /&gt;
&lt;br /&gt;
In addition to prefix commands, which you enter in the left-hand column (prefix area) of the line(s) you want to edit, the Model 204 full-screen editor provides several command-line commands.&lt;br /&gt;
 &lt;br /&gt;
===Current line===&lt;br /&gt;
&lt;br /&gt;
Several command-line commands take effect from the current line. The current line is the line of the procedure on which the full-screen editor acts.&lt;br /&gt;
&lt;br /&gt;
Use the set line prefix command (/) to set the current line.&lt;br /&gt;
 &lt;br /&gt;
====Setting the current line====&lt;br /&gt;
&lt;br /&gt;
To define a new current line, type the set line command (/) in the prefix area of that line. This command is executed before any command-line commands specified on the same screen.&lt;br /&gt;
&lt;br /&gt;
This feature is especially useful with the [[#Searching for a string (LOCATE)|LOCATE command]]. For example, suppose that you want to locate the next occurrence of a string, but not the occurrence on the line following the current line (the line on which LOCATE would normally start its search). You can use the / prefix to reposition the current line so that LOCATE begins its search below the unwanted occurrence.&lt;br /&gt;
&lt;br /&gt;
===Where to enter command-line commands===&lt;br /&gt;
&lt;br /&gt;
Enter command-line commands on the third line down from the top of the screen, which is the command line. It has the following prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering commands===&lt;br /&gt;
&lt;br /&gt;
When entering command-line commands, follow these guidelines:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter one command at a time. Press Enter after the command. If you enter more than one command, only the first command is executed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can enter a command in uppercase or lowercase, or a combination of the two.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can abbreviate some commands.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Several commands have defaults.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
For more information on command abbreviations and defaults, see [[Model 204 full-screen editor commands]].&lt;br /&gt;
&lt;br /&gt;
===Repeating commands===&lt;br /&gt;
&lt;br /&gt;
Placing an equal sign (=) on the command line repeats the most recently executed command.&lt;br /&gt;
&lt;br /&gt;
This command executes a command any number of times and is useful for performing a repetitive operation, such as searching for a string, without re-entering the command each time.&lt;br /&gt;
&lt;br /&gt;
You can also repeat a command by pressing PF9.&lt;br /&gt;
&lt;br /&gt;
==Moving around a procedure==&lt;br /&gt;
&amp;lt;p&amp;gt;The full-screen editor display commands move through a procedure and display needed portions of it on the screen. Display commands move the current line pointer and control the appearance of portions of the procedure, but they do not change the contents of the procedure itself.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Display commands are summarized in the following table and are discussed in detail in the sections that follow.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Display commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&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;TOP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the first line of the procedure.&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;BOTTOM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the last line of the procedure.&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;FORWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of screens in the procedure.&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;BACKWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of screens in the procedure.&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;+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of lines in the procedure.&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;-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of lines in the procedure.&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;
===Moving to the top of the procedure (TOP)===&lt;br /&gt;
The TOP command moves the line pointer to the first line of the procedure that is being edited. After you issue a TOP command, the full-screen editor displays the TOP OF PROCEDURE indicator on the first line of the display area. It displays the first line of the procedure on the second line. The remaining lines of the procedure appear on subsequent lines. The first line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The TOP command is helpful when inserting a line or set of lines at the beginning of the procedure. In a procedure that fills many screens; using the TOP command is often more efficient than scrolling backward using the BACKWARD command.&lt;br /&gt;
&lt;br /&gt;
===Moving to the bottom of the procedure (BOTTOM)===&lt;br /&gt;
The BOTTOM command moves the line pointer to the last line of the procedure that is being edited. After you issue a BOTTOM command, the full-screen editor displays the BOTTOM OF PROCEDURE indicator on the last line of the screen. The preceding lines of the procedure appear on the preceding lines of the screen. The last line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The BOTTOM command is helpful when adding a line or set of lines to the end of the procedure. In a procedure that fills many screens, using the BOTTOM command is often more efficient than scrolling forward using the FORWARD command.&lt;br /&gt;
&lt;br /&gt;
===Scrolling forward (FORWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The FORWARD command scrolls forward in the procedure by moving the line pointer down a specified number of screens. The format of the FORWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;FO&amp;lt;/b&amp;gt;RWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter FORWARD, the full-screen editor advances one entire screen. If you enter FORWARD followed by a number (n), the full-screen editor advances the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a FORWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines preceding and following the current line. The bottom line of the previous screen display becomes the top line of the new screen display.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the first line of the procedure when you issue the FORWARD command (that is, you are positioned at the top of the procedure), the full-screen editor advances only one half a screen and displays the new current line in the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF8 to scroll forward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling backward (BACKWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The BACKWARD command scrolls backward in the procedure, moving the line pointer up a specified number of screens. The format of the BACKWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;BA&amp;lt;/b&amp;gt;CKWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter BACKWARD, the full-screen editor scrolls backward one entire screen. If you enter BACKWARD followed by a number (n), the full-screen editor scrolls backward the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a BACKWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines that precede and follow the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the last line of the procedure when the BACKWARD command is issued, the full-screen editor scrolls backward only half a screen and displays the new current line in the center of the display screen. Otherwise, the BACKWARD command causes the top line of the previous screen display to become the bottom line of the new screen display. In either case, the BACKWARD command causes the current line to be backed up by the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF7 to scroll backward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling a specified number of lines (+/-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)===&lt;br /&gt;
&amp;lt;p&amp;gt;The scroll commands (+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) scroll forward or backward, moving the line pointer a specified number of lines in the procedure. These commands are useful for moving a portion of the procedure up or down.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter a number, optionally preceded by (+), the full-screen editor advances the specified number of lines. For example, if you enter either 5 or +5 the editor advances the current line forward five lines toward the end of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter -, followed by a number, the editor moves backward the specified number of lines. For example, if you enter -10, the editor moves backward 10 lines toward the beginning of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In general, the current line is displayed highlighted at the center of the screen. However, if the current line is less than half a screen from the top or bottom of the screen when you issue the command, the full-screen editor shifts the display to fill the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that +&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; scroll a specified number of lines in the procedure. Because a single procedure line can occupy more than a single physical line on the display screen, these commands might actually appear to scroll forward or backward a greater number of display lines than specified.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for and replacing text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The full-screen editor LOCATE command allows you to search for text strings in a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The REPLACE command allows you to locate and change text strings.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 These two commands share many characteristics, including:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Rules for text string searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Use of special search characters&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Option to specify a range of procedure lines&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Uppercase and lowercase in searches===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With the exception of [[#Special search characters|special search characters]], the full-screen editor searches for an exact match to the string specified in the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command. Both the case (upper and lower) in which the string is specified, and the placement of blanks, are significant. Therefore, if you specify this command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;LOCATE /Model 204 &amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The editor locates an occurrence of &amp;lt;code&amp;gt;Model 204&amp;lt;/code&amp;gt;, but not &amp;lt;code&amp;gt;MODEL 204&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;MODEL204&amp;lt;/code&amp;gt; in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that although lowercase characters are entered in a procedure, Model&amp;amp;nbsp;204 does not necessarily process these characters as lowercase. By default, characters are translated automatically into uppercase when they are transmitted to Model&amp;amp;nbsp;204 unless: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You specified the Model&amp;amp;nbsp;204 &amp;lt;var&amp;gt;[[*LOWER command|*LOWER]]&amp;lt;/var&amp;gt; command before entering the full-screen editor, or &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; was invoked upon entry to the editor by the setting of the &amp;lt;var&amp;gt;[[SIREDIT parameter|SIREDIT]]&amp;lt;/var&amp;gt; parameter. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You use the editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command to turn off the automatic uppercasing. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the CASE command====&lt;br /&gt;
The editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command is available with version 7.5 or higher of Model&amp;amp;nbsp;204. It has two options:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE MIXED &lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is accepted “as is,” without translation to uppercase. This is similar to invoking the &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;MIXED&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want; that is, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MIX&amp;lt;/code&amp;gt; and so on are all valid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE UPPER&lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is translated to uppercase.  This is similar to invoking the &amp;lt;var&amp;gt;[[*UPPER command|*UPPER]]&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;UPPER&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command does not affect the case translation setting (&amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt;) that was in effect “outside” the editor: when you exit the editor, the case translation is as it was prior to entering the editor.&lt;br /&gt;
&lt;br /&gt;
In addition to the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command, the initial case translation setting within the editor can be automatically set to &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt;, using the X&#039;01&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
Neither the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command nor the &amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt; setting affect the input on the editor command line.&lt;br /&gt;
&lt;br /&gt;
To match strings (for example, “/subroutine”) in a case-insensitive manner, use the X&#039;20&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can limit the scope of a text string search by indicating a range.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The range entry indicates the target lines and the order of the lines to be searched for a match. You can include any of the range specifications summarized in [[#Specifying range targets|Specifying range targets]]. If you omit the range, the full-screen editor searches the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Special search characters==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use special search characters when specifying a search string with the LOCATE and REPLACE commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
These special characters are:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Arbitrary (wildcard) character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Repeat character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
End-of-line character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Wildcard character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An arbitrary or wildcard character is matched by any character. For example, the ampersand character (&amp;amp;amp;) is your wildcard character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MODEL&amp;amp;amp;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings in the procedure can be located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODELA&lt;br /&gt;
MODEL2&lt;br /&gt;
MODEL&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the wildcard character (ARBCHAR)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;ARBCHAR&amp;lt;/var&amp;gt; command specifies a wildcard character that matches zero or more characters when it is included in a search string. The format of the ARBCHAR command is as follows:&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] ARBCHAR {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/var&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the wildcard or arbitrary character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ARBCHAR OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR *&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the asterisk in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /PROC*&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the letters PROC, followed by any character. The following strings are found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCA&lt;br /&gt;
INPROC3&lt;br /&gt;
PROC *.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are not found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PRO12&lt;br /&gt;
PRO CABC&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the wildcard character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter ARBCHAR OFF, none of the characters in the specified search strings in subsequent LOCATE and REPLACE commands are considered wildcard characters, and all strings in the procedure must match the search string exactly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repeat character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The repeat character indicates that the previous character in the string can be repeated any number of times. For example, your repeat character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any of the following strings in the procedure are located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *&lt;br /&gt;
Format **&lt;br /&gt;
Format ****************&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the repeat character (REPEAT)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPEAT command specifies a repeat character that matches zero or more occurrences of the repeating character when it is included in a search string.&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 REPEAT command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] REPEAT {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the repeat character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
REPEAT OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT &amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the &amp;amp;amp; in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /MODEL*&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the characters &amp;lt;code&amp;gt;M O D E L&amp;lt;/code&amp;gt;, followed by any number of asterisks. The following strings are selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL*&lt;br /&gt;
MODEL***&lt;br /&gt;
MODEL**&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL1&lt;br /&gt;
MOD***&lt;br /&gt;
MODEL *&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use repeat characters in conjunction with wildcard characters. For example, suppose that the wildcard character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), the repeat character is an ampersand (&amp;lt;tt&amp;gt;&amp;amp;amp;&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/PRE!&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any string that begins with the letters &amp;lt;code&amp;gt;P R E&amp;lt;/code&amp;gt;, followed by any number of any other characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the repeat character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;REPEAT OFF&amp;lt;/code&amp;gt;, none of the characters in the specified search strings in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered repeat characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===End-of-line character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The end-of-line character indicates the end of one line and the beginning of the next line. When the end-of-line character is used in a search string, it specifies a search for a string that occurs at the beginning or end of a line. For example, the percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%prefix&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line beginning with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix area!!!&lt;br /&gt;
prefixes!!!&lt;br /&gt;
prefix 12!!!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix%&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line ending with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify an end-of-line character only at the beginning or at the end of the search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the end-of-line character====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LINEND&amp;lt;/var&amp;gt; command specifies an end-of-line character. When you use an end-of-line character in a search string, it represents a character that indicates the end of one line and the beginning of the next line. The editor searches for a string that occurs at the beginning or end of a line.&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;LINEND&amp;lt;/var&amp;gt; command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] LINEND {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the end-of-line character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt; is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND #&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the pound sign (&amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt;) in a search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /#PART&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any line that begins with the letters &amp;lt;code&amp;gt;P A R T&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You must specify the end-of-line character at the start or end of a search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the end-of-line character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt;, none of the characters in the search strings specified in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered end-of-line characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Combining special search characters===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify combinations of characters in the search string. For example, the following search string locates any string that contains HELP, followed by any number of characters, followed by ME:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP&amp;amp;amp;!ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP123ABME&lt;br /&gt;
HELP ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for a string (LOCATE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command searches for a particular string in the procedure or in a subset of the procedure. See [[#Specifying a string|Specifying a string]] for more information about string specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Two formats of the LOCATE command===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
There are two formats of the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====With LOCATE keyword====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The first format is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[-][&amp;lt;b&amp;gt;LO&amp;lt;/b&amp;gt;CATE] /&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;[/ [IN]&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where the delimiting character (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; in the example above) can be any character not appearing in the string, with the exception of a blank character.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LO *ELEPHANT* IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify a range, you do not need to include a delimiter after the string. If you specify an alphabetic delimiter, include a space between the LOCATE or LO keyword and the delimiter. If the delimiter is nonalphabetic, the space is not required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Without LOCATE keyword====&lt;br /&gt;
The second format, which does not require the LOCATE keyword, is as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[-] /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where a slash (/) must precede the string. If you do not specify a range, you do not need to include a slash following the string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the full-screen editor cannot find a match for the specified string, it displays the following message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;TARGET STRING NOT LOCATED&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching forward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search forward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor starts the search at the line following the current line and advances forward, stopping when it locates the string or reaches the end of the procedure. If the current line is the last line of the procedure, the full-screen editor wraps to the top of the procedure, begins the search at the top of the procedure, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching backward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search backward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When you precede the command with a minus sign, the full-screen editor starts the search at the line preceding the current line and searches backward toward the beginning of the procedure, stopping when it locates the string or reaches the top of the procedure. If the current line is the top of the procedure, the full-screen editor wraps to the bottom of the procedure, begins the search at the bottom line, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Replacing a string (REPLACE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPLACE command replaces a string in the procedure with a substitute string. REPLACE provides the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Displays each target string to verify the change before proceeding.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Changes more than one occurrence of a specified string in a single line. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the REPLACE command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;R&amp;lt;/b&amp;gt;EPLACE/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt; [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; | *] [&amp;lt;b&amp;gt;V&amp;lt;/b&amp;gt;ERIFY [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you include the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;, VERIFY, or range options in the REPLACE command, specify the options in the order shown.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;R /GROUP/PERM GROUP/ * IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a string===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify strings as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;String to be searched for and changed (old string).&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 class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;New string to replace &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;. The new string need not be the same length as the old string.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use as a delimiter any nonblank character (/ in the example above) that does not appear in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
string1&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;. If you do not specify the number of occurrences, a VERIFY option, or a range, you do not need to include a delimiter after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controlling the number of strings to be replaced===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can replace all occurrences of a string or only the first occurrence in a line. The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification in the REPLACE command represents the number of occurrences of the search string (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;) to be replaced in each line. If you omit an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification, only the first occurrence of the string is replaced in a line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify a value of *, all occurrences of the string are replaced in each line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using the VERIFY option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The VERIFY option verifies all string replacements before they are made. Each line that contains a string that matches the specified string is highlighted and is delimited on the scale line by the characters of the proper length, on the column scale line directly beneath the potential match. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;lt;====&amp;amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The column scale must be turned on to display the scale line characters. The following prompt appears on the command line each time a string is matched:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;CHANGE?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond with any of the following choices:&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;This choice...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;YES, Y, or Enter&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Changes the string&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;NO or N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not change the string&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;ALL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Turns off the VERIFY option and makes all remaining changes&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;STOP or S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Terminates the REPLACE command&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;
If you enter any other response, the full-screen editor displays the &amp;lt;code&amp;gt;CHANGE&amp;lt;/code&amp;gt;? prompt again.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify a range of procedure lines to which the search applies. See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inserting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can insert text several ways using the full-screen editor. Use the following commands to insert text:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;E&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends a line&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;th&amp;gt;I&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts separate lines&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;th&amp;gt;I*&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode&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;th&amp;gt;GET&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts a saved procedure&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;
You can also insert text using the REPLACE command to substitute a string with additional text for an existing string (see [[#Specifying a string|Specifying a string]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Alternatively, you can insert text by [[#Duplicating, copying, and moving text|duplicating, copying, and moving]] lines or blocks of text.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Extending a line===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The E (extend) prefix command inserts a physical line immediately following the line that contains the E, forming a logical line extension. The line is filled with the fill character (that is, blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill character]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting lines===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I (insert) prefix command  inserts one or more lines following the line containing the I. Unlike E lines, these lines are treated as separate lines, not as continuations of existing lines in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the I prefix command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter I alone, the full-screen editor inserts one line following the line containing the I. If you enter I followed by a number, the full-screen editor inserts the specified number of lines. For example, I5 inserts 5 blank lines after the line that contains the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Inserted lines are filled with the fill character (blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill charcter]].&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
===Specifying a fill character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FILL command specifies a fill character. When the full-screen editor displays a line of text, it pads the line on the right with either null or blank characters. The format of the FILL command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] FILL {&amp;lt;u&amp;gt;NULL&amp;lt;/u&amp;gt; | BLANK}&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify &amp;lt;code&amp;gt;FILL NULL&amp;lt;/code&amp;gt;, the full-screen editor pads with null characters on the right. If you specify &amp;lt;code&amp;gt;FILL BLANK&amp;lt;/code&amp;gt;, the full-screen editor pads with blank characters on the right.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The character selected as the fill character is inserted in lines generated using the E (extend) and I (insert) prefix commands.&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 command line on the display screen is always filled with null characters, regardless of the specified fill character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering input mode===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I* prefix command places the full-screen editor in input mode. The line that contains I* becomes the current line and appears at the top of the screen. The rest of the screen is blank. Any lines following the I* line in the original procedure are not displayed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For input lines, the cursor appears in column 1 of the first blank line. You can now enter text. If you press Enter, the last line that you typed is moved to the top of the screen and the cursor appears on the next (blank) line. To exit from input mode, either press Enter twice without any intervening text editing, or enter any full-screen editor command on the command line.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting a saved procedure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The GET command inserts a previously saved procedure after the current line. You can insert a procedure that is stored in either the default procedure file or in a file specified in the command (with the filespec option). The last line of the inserted procedure becomes the current line and is positioned at the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Before you issue the GET command, position the cursor at the appropriate line. For example, if you want to add one procedure to the end of another, use the BOTTOM command to advance the cursor to the end of the procedure before the procedure is added.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the GET command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[IN &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt;] GET &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Where:&amp;lt;/p&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;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the combined procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for filespec is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
ACCOUNT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If neither FILE nor GROUP is specified, FILE is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name of the procedure to be inserted after the current line. This procedure can be stored in any Model 204 file that you currently have open.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Duplicating, copying, and moving text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can save keystrokes and reorganize text by using the full-screen editor commands for the following tasks:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Duplicating lines of text (&amp;amp;quot; or &amp;amp;quot;&amp;amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Copying lines of text (C or CC)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Moving lines of text (M or MM)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Groups of lines are also referred to as blocks. You can also [[#Deleting and undeleting text|delete and undelete lines of text]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Duplicating lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can duplicate either one line or a block of lines.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating one or more lines====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate (&amp;amp;quot;) prefix command duplicates the line on which it is entered. The format of the duplicate command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the line. If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor inserts the specified number of duplicate lines. For example, &amp;lt;code&amp;gt;&amp;amp;quot;5&amp;lt;/code&amp;gt; duplicates a line five times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating a block of text====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate block (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;) prefix command duplicates a group of lines. Entering &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; duplicates the block of lines beginning with the line on which the first &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified and ending with the line on which the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified. &lt;br /&gt;
&lt;br /&gt;
The format of this command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the block of lines. The block appears immediately following the line that contains the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; (the last line of the block). If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor duplicates the block the specified number of times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Copying lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The C (copy) prefix command copies one or more lines to the position indicated by the P (precedes) or F (follows) prefix target. If you specify P, the line(s) are inserted just before the line that contains the P. If you specify F, the lines are inserted just after the line that contains the F. For more information about prefix targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the C prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;C[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of lines to copy. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, the full-screen editor copies only the line that contains the C. If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; followed by a number, the full-screen editor copies the specified number of lines, beginning with the line containing the C&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
When a line is copied, it is preserved in its original position as well as being duplicated in the new position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CC (copy block) prefix command copies a group of lines without requiring you to count them. CC copies the block of lines that begins with the line on which the first CC is specified and that ends with the line on which the second CC is specified. The lines are copied to the position indicated by the P (precedes) or F (follows) prefix target, as discussed for C.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Moving lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The M (move) prefix command moves one or more lines to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]]. If you specify P, the line(s) are inserted just before the line containing the P. If you specify F, the line(s) are inserted just after the line that contains the F.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the M prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to move. &lt;br /&gt;
&lt;br /&gt;
If you enter M, the full-screen editor moves only the line that contains the M. If you enter M followed by a number, the full-screen editor moves the specified number of lines, beginning with the line that contains the M&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. When a line is moved, it is automatically deleted from its original position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MM (move block) prefix command moves a group of lines without requiring you to count them. MM moves the block of lines that begins with the line on which the first MM is specified and that ends with the line on which the second MM is specified. The lines are moved to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deleting and undeleting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 You can delete lines from a procedure, using the D or DD prefix commands. You can also retrieve the last entry that was deleted with the U prefix command. Groups of lines are also referred to as blocks.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Deleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The D (delete) prefix command deletes one or more lines from the procedure. &lt;br /&gt;
&lt;br /&gt;
The format of the D prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to delete. &lt;br /&gt;
&lt;br /&gt;
If you enter D, the full-screen editor deletes only the line that contains the D. If you enter D followed by a number, the full-screen editor deletes the specified number of lines, beginning with the line that contains the D. If the number of lines specified in the D command exceeds the number remaining in the procedure, the full-screen editor deletes all lines from the line on which the D command is specified to the end of the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a line or set of lines is deleted, the lines are not immediately discarded; they are placed on the full-screen editor delete stack. Entries in this stack are deleted when the editing session is terminated. Each time a D command is executed, an entry is placed on the delete stack. A D&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; command, which deletes several lines, causes a single entry that contains the specified block of lines to be placed on the stack. However, a series of contiguous lines, each containing a D command, is not accumulated into a single entry on the delete stack. You can [[#Undeleting lines or blocks|retrieve or undelete an entry]] by means of the U command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DD (delete block) prefix command deletes a group of lines without requiring you to count them. DD deletes the block of lines that begins with the line on which the first DD is specified and that ends with the line on which the second DD is specified. The block is placed on the delete stack as a single entity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Undeleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The U (undelete) prefix command retrieves the last entry that was deleted (that is, placed on the delete stack) and inserts it after the line that contains the U.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;exit&amp;quot;&amp;gt;Exiting from the full-screen editor&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit from the full-screen editor or to save edited procedures, use the commands listed in the following table, which also lists the description of each command and where more information is located. When you exit from the full-screen editor, you are returned to the Model 204 command level.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;CAPTION&amp;gt;Exit and save commands&amp;lt;/CAPTION&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;END or EEND&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor and saves the edited procedures. The EEND command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&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;th&amp;gt;GO or GGO&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, saves the edited procedure, and includes (executes) the edited procedure. The GGO command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved. Under Model 204 7.8 and later, the GO command does not actually update the procedure in the file if it has not been modified since it was loaded or last saved.&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;th&amp;gt;QUIT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, might prompt if changes were made to the procedure, and does not save the edited procedure.&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;th&amp;gt;SAVE or SSAVE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not exit from the full-screen editor, but saves the edited procedure. The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&amp;lt;/td&amp;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;
For more information about exit and save commands, refer to the [[EDIT command]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Exiting from the editor and saving the procedure (END or EEND)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The END or EEND command exits from the full-screen editor and saves the edited procedure on disk. Specify the name under which the procedure is to be saved. You can store the procedure in either the default procedure file or in a file specified in the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the END/EEND command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [END | EEND] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the default Model&amp;amp;nbsp;204 procedure file. The filespec can identify a Model&amp;amp;nbsp;204 file or a temporary or permanent group. The file specified by IN filespec must be open. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify either FILE or GROUP, FILE is assumed. For more information about files and groups, see the following pages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: File]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Permanent group]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Temporary group]]&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;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter END, the procedure is saved under the name of the output procedure specified when you invoked the editor. The procedure is stored in the Model 204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The EEND command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. EEND would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving and including the procedure (GO or GGO)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Like the END command, the GO or GGO command exits from the full-screen editor and saves the edited procedure. Unlike END, GO automatically performs an implicit Model 204 [[INCLUDE command]], which executes the Model 204 commands in the saved procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The format of the GO/GGO command is as follows:&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;filespec&amp;lt;/span&amp;gt;] [GO | GGO] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
GO command options are identical to END command options. If you enter GO, the full-screen editor saves the procedure under the name of the output procedure specified when you invoked the full-screen editor. The procedure is stored in the Model 204 default procedure file. Under Model 204 7.8 and later, the procedure won&#039;t actually be updated by the GO command if it has not been modified in the editor since it was loaded or last saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The GGO command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. GGO would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Exiting from the editor without saving the edited procedure (QUIT)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The QUIT command exits from the full-screen editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you change the procedure during the current editing session and exit by entering QUIT, the full-screen editor displays the following message, which indicates that the procedure was changed and asks you to enter QUIT again if you want to exit the procedure without saving the edits:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE HAS BEEN MODIFIED, ENTER &#039;QUIT&#039; TO VERIFY.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond in one of the following ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter QUIT on the command line to confirm that changes are not to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ignore the prompt and continue editing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit without receiving the warning prompt, enter the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you use QUIT to exit from a file that was examined but not modified, the full-screen editor does not prompt before exiting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can also press PF3 to quit. Your edits are not saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving the procedure (SAVE or SSAVE)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The SAVE or SSAVE command saves the edited procedure or a subset of that procedure under the specified name (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;) or the default procedure name. Unlike the END, GO, and QUIT commands, SAVE does not exit from the editor. To ensure against the loss of changes due to a system failure, issue the SAVE command periodically while you edit a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the SAVE/SSAVE command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [SAVE | SSAVE] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;] [[IN] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group. The file specified with IN filespec must be open. It has the same syntax as described for the END command.&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;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;range is the range to be saved. Note that if you specify range, you must also specify procname. You can include any of the [[#Range target characters|range specifications]]. If you omit a range, the entire procedure is saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter SAVE alone, the full-screen editor saves the entire procedure under the name of the output procedure specified when the editor was invoked. The procedure is stored in the Model&amp;amp;nbsp;204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. SSAVE would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Procedure update control===&lt;br /&gt;
&amp;lt;p&amp;gt;Before Model 204 7.8, the editor would hold a share lock on the procedure being editing during the edit session. This would ensure that no other user could update the procedure underneath the user in the editor. Unfortunately, this would also block updates in the common case where one is just browsing a procedure in the editor and leave a lock on a procedure if the editing user forgets to exit the editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Under Model 204 7.8 and later, no lock is held on the procedure during the edit session. Instead, if the user attempts to save the procedure via the &amp;lt;var&amp;gt;SAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;END&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GO&amp;lt;/var&amp;gt; command, the timestamp if the procedure in the output file is compared with the timestamp when the procedure was loaded or last saved. If the timestamp no longer matches, it means that another user has modified the procedure and saving the procedure would overwrite those changes. In this case the editing user is warned and the save is not performed. If the editing user wishes to force the save, anyway, the user can issue the &amp;lt;var&amp;gt;SSAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EEND&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GGO&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Category: Model 204 editor]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120289</id>
		<title>Model 204 full-screen editor</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120289"/>
		<updated>2024-09-27T19:09:16Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Exiting from the editor without saving the edited procedure (QUIT) */  grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The full-screen editor enables you to use the special capabilities of the IBM 3270 and compatible terminals.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Model 204 provides the following editors, which you can use to enter, change, or add text to Model 204 requests and procedures:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Full-screen editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for full-screen terminals.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Line editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for line-at-a-time terminals. Optionally, you can invoke this editor from a full-screen terminal.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This topic describes how to use the full-screen editor. [[Model 204 line editor]] describes the line editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Editing capabilities===&lt;br /&gt;
Special features of the full-screen editor include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Full-screen mode&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 are always in full-screen mode, even when text is being entered or added to a procedure. You can position the cursor at any text on the display screen and delete, insert, or change characters by typing at that point.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Special screen display&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The display screen contains a display area and, optionally, either a prefix or a suffix area for entry of prefix commands to perform editing operations. (See [[#Using targets with prefix commands|Using targets with prefix commands]].) You can display a column scale at the center of the screen to facilitate the positioning of text in specific columns.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Automatic text wrapping&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines that are longer than the normal display line are automatically wrapped onto subsequent display line(s).&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Global text searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can search throughout a procedure for any string of characters. You can replace characters and specify wildcard characters to match all or part of the specified string. This feature is described in [[#Specifying a string|Specifying a string]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefixes and targets&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can specify both editing operations (prefixes) and the lines on which the edits are to be performed (targets) by entering abbreviated commands in the prefix or suffix area of the screen. Prefixes and targets are described in [[#Specifying range targets|Specifying range targets]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;PF key functions&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use PF3 to quit, PF7 to scroll backward, PF8 to scroll forward, and PF9 to repeat commands while editing in full-screen mode.&lt;br /&gt;
&lt;br /&gt;
==Invoking the full-screen editor==&lt;br /&gt;
 &lt;br /&gt;
===Model 204 requirements===&lt;br /&gt;
Before invoking the full-screen editor, set the Model 204 LOUTPB parameter to a minimum value of 3000. The [[LOUTPB parameter]] specifies the length of the output page buffer for 3270 terminals that use the full-screen capabilities.&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor===&lt;br /&gt;
You can invoke the full-screen editor in the following ways:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Directly from Model 204 command level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Indirectly in a User Language (SOUL) request&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
To invoke the full-screen editor from a terminal, enter the &amp;lt;var&amp;gt;[[EDIT command|EDIT]]&amp;lt;/var&amp;gt; command.&lt;br /&gt;
 &lt;br /&gt;
====Using the EDIT command====&lt;br /&gt;
To invoke the full-screen editor, use the &amp;lt;var&amp;gt;EDIT command&amp;lt;/var&amp;gt;. The format of the &amp;lt;var&amp;gt;EDIT&amp;lt;/var&amp;gt; command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT(SCREEN)[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Specifying the type of editor====&lt;br /&gt;
You can include a parameter that indicates which of the Model&amp;amp;nbsp;204 editors to invoke.  To request the full-screen editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (SCREEN)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To request the line editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (LINE)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you do not specify either SCREEN or LINE, the appropriate editor for your terminal type is invoked. For example, if your terminal is an IBM 3270 and you enter EDIT while at command level or while executing a SOUL request, the full-screen editor is invoked automatically. The full-screen editor is not available from an IBM 3270 terminal that is connected to Model 204 through an access method that does not support full-screen input and output.&lt;br /&gt;
 &lt;br /&gt;
====Specifying an input procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; parameter to name a temporary or permanent procedure to be used as input for the current editing session. If you do not specify an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; option, the full-screen editor creates a temporary procedure (Model&amp;amp;nbsp;204 temporary procedure 0). Note that you cannot use the full-screen editor to create a new and permanent procedure if you specify a nonexistent input procedure.&lt;br /&gt;
&lt;br /&gt;
====Specifying an output procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter to specify an output procedure name. You can include an output procedure name in the EDIT command or specify a name when you exit from the procedure with an END, GO, or SAVE command. After the editing session terminates, Model 204 saves the procedure under the specified &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; name. If you specify a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter in the EDIT command and enter a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter when exiting from the procedure, the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter specified when exiting overrides the name specified in the EDIT command.&lt;br /&gt;
&lt;br /&gt;
For information about the rules for procedure names, see [[EDIT command#Procedure names|Procedure names]].&lt;br /&gt;
&lt;br /&gt;
====Results of using the EDIT command====&lt;br /&gt;
After you invoke the full-screen editor, use any of the commands described in this chapter. When you enter the full-screen editor, the first portion of the procedure to be edited appears in the display area and the cursor appears at the beginning of the command line. To reposition the cursor to the command line, press the HOME key (usually ALT-BACKTAB).&lt;br /&gt;
&lt;br /&gt;
When you issue an EDIT command, the full-screen editor writes the following message to the Model 204 audit trail:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.0685: EDITING INTO newproc&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor indirectly===&lt;br /&gt;
You can invoke the full-screen editor indirectly by including the EDIT command in a SOUL request by using the TERMINAL option in the following format:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT (TERMINAL)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TERMINAL option of EDIT====&lt;br /&gt;
The TERMINAL option invokes the full-screen editor from within a procedure and connects the editor to your terminal for input. For more information about the TERMINAL option, refer to the Model 204 [[EDIT command]] wiki page.&lt;br /&gt;
&lt;br /&gt;
==Display screen format==&lt;br /&gt;
The typical format of the display screen during an editing session is shown in the following figure. &lt;br /&gt;
&lt;br /&gt;
The areas numbered in the diagram are described below the figure.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot; style=&amp;quot;width:550px&amp;quot;&amp;gt;Sample Display Screen&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;figure&amp;quot;&amp;gt;[[File:Editing_Guide_ch1_Sample_Display_Screen.gif]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Screen components===&lt;br /&gt;
The components of the display screen are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Header Line&lt;br /&gt;
&amp;lt;p&amp;gt;The top line of the screen is reserved for procedure identification. The header line contains the following information:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Old procedure name (before editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New procedure name (after editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Line number of the current line within the procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current maximum line number within the procedure &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Message Line&lt;br /&gt;
&amp;lt;p&amp;gt;The second line is reserved for error and status messages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command Line&lt;br /&gt;
&amp;lt;p&amp;gt;The third line is reserved for the entry of screen commands. This line begins with the following command prompt:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       ===&amp;amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can enter a command in uppercase or lowercase letters or a combination of the two.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;See [[Model 204 full-screen editor commands]] for abbreviations and defaults for full-screen commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter one command at a time. If you enter more than one command, only the first command is executed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Display Area&lt;br /&gt;
&amp;lt;p&amp;gt;The display area contains a portion of the text that is being edited. The text on the screen is considered a window in which only part of the procedure currently being edited appears.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To manipulate displayed procedures, first position the cursor and then add, change, or delete text. To execute changes, press the Enter key.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To position other parts of the procedure in the edit window, you can use the display commands or PF keys to [[#Moving around a procedure|scroll forward and backward]] through the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefix or Suffix Area&lt;br /&gt;
&amp;lt;p&amp;gt;This area can either precede or follow the display area on the screen. The columns typically display the following special characters:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       =====      &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can replace one or more of these equal signs with a special prefix command to perform an editing function, such as inserting or deleting text on the corresponding line in the display area. See [[#Summary of prefix commands|Summary of  prefix commands]] for more information about prefix commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current Line&lt;br /&gt;
&amp;lt;p&amp;gt;The line being edited normally appears at the center of the screen and is highlighted (that is, displayed more brightly than the surrounding text).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;line pointer&amp;lt;/var&amp;gt; points to the current line. The line pointer is repositioned to a new current line when you scroll forward and backward and when you execute screen commands. You can position the line pointer at a new current line by specifying the [[#Setting the current line|set line prefix command (/)]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Column Scale&lt;br /&gt;
&amp;lt;p&amp;gt;The column scale indicates the column position of the procedure text that appears. You can display a column scale immediately below the center line (normally the current line) in the display area. The scale is useful when text must be entered in particular columns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Requesting a column scale===&lt;br /&gt;
&lt;br /&gt;
The SCALE command specifies whether or not the full-screen editor displays a column scale in the center of the display area on the screen. The format of the SCALE command is:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] SCALE {OFF | ON}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCALE OFF is the default.&lt;br /&gt;
&lt;br /&gt;
If you specify SCALE OFF, the column scale is not displayed. If you specify SCALE ON, the scale is displayed. The column scale is shown in the [[Model 204 full-screen editor#Sample Display Screen|sample display screen]].&lt;br /&gt;
&lt;br /&gt;
===Positioning the prefix area===&lt;br /&gt;
&lt;br /&gt;
The PREFIX command positions the prefix area on the left (prefix) or right (suffix) side of the display screen. PREFIX LEFT is the default. The format of the PREFIX command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] PREFIX {LEFT | RIGHT}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full-screen editor positions the prefix area at the end of each line of the display area when you specify PREFIX RIGHT, and at the beginning of each line when you specify PREFIX LEFT.&lt;br /&gt;
&lt;br /&gt;
The [[#Sample Display Screen|sample display screen]] shows the positioning of the prefix area on the left side of the display screen. &lt;br /&gt;
&lt;br /&gt;
For a description of the prefix commands that can be entered in this area, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
==Editing modes==&lt;br /&gt;
&lt;br /&gt;
The editing modes are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command mode (used primarily for editing) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input mode (used primarily for entering new text)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
===Command mode===&lt;br /&gt;
&lt;br /&gt;
When you invoke the full-screen editor, you are placed in command mode.  To position the cursor to the command line, press the HOME key (usually ALT/BACKTAB).&lt;br /&gt;
&lt;br /&gt;
In command mode, you enter commands for the full-screen editor either on the command line or in the prefix area.&lt;br /&gt;
 &lt;br /&gt;
===Input mode===&lt;br /&gt;
&lt;br /&gt;
Enter input mode to type new lines of text. To enter input mode, specify an I* prefix command. You cannot use the prefix commands in input mode.&lt;br /&gt;
&lt;br /&gt;
To return to command mode from input mode, press the Enter key twice without any intervening text.&lt;br /&gt;
&lt;br /&gt;
==Using targets==&lt;br /&gt;
&lt;br /&gt;
Some prefix and full-screen editor commands operate on a line or set of lines called a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
target&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, if you want to search for a text string within lines 10 and 20 of a procedure, lines 10 through 20 are considered target lines.&lt;br /&gt;
&lt;br /&gt;
Specify a target on the appropriate line in the prefix or suffix area of the screen.&lt;br /&gt;
&lt;br /&gt;
When specifying a target, you can use uppercase and lowercase interchangeably. Targets are specified as one of the following:&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;Target command&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Description&amp;lt;/th&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;&amp;lt;b&amp;gt;P&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Precedes the target&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;&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Follows the target&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;&amp;lt;b&amp;gt;R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range&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;&amp;lt;b&amp;gt;RR&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range block&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using targets with prefix commands===&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this chapter, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
====P target command====&lt;br /&gt;
&lt;br /&gt;
Use the P target command to define a target above the line on which you enter the P. For example, to move a group of lines within a procedure to precede line 20, place a P target on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
====F target command====&lt;br /&gt;
&lt;br /&gt;
Use the F target command to define a target below the line on which you enter the F. For example, if you wanted to move a group of lines within a procedure to follow line 20, place an F on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
===Specifying range targets===&lt;br /&gt;
&lt;br /&gt;
Several commands let you include a range specification that indicates the range and direction of the target lines. The SAVE, LOCATE, and REPLACE commands define a set of target lines by including range specifications. For LOCATE, if one of these specifications is omitted, the full-screen editor processes the set of lines from the current line to the end of the procedure and then wraps to the top of the procedure and continues to the current line.&lt;br /&gt;
 &lt;br /&gt;
====R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) Target command====&lt;br /&gt;
&lt;br /&gt;
Use the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) target command to define a target in a range of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; lines beginning with the line on which you enter the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;). For example, if you entered R6 on line 15, the range begins on line 15 and ends with line 20.&lt;br /&gt;
  &lt;br /&gt;
====RR Target command====&lt;br /&gt;
&lt;br /&gt;
Use the RR target command to define a target in a range of lines beginning with the line on which you enter the first RR and ending on the line on which you enter the second RR. For example, to specify a range from line 15 to 20, place one RR target on line 15 and another RR target on line 20.&lt;br /&gt;
&lt;br /&gt;
===Range target characters===&lt;br /&gt;
&lt;br /&gt;
Range specifications are summarized in the following table.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Range specifications&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This specification...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Has this effect...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;ALL&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to TOP TO BOTTOM.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the bottom of the procedure and end at the current line.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the procedure bottom and end at the top of the procedure.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Begin at the beginning of the current line and end at the procedure bottom.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the current line and end at the procedure&#039;s beginning.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;RANGE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified as a prefix target command, begin at the beginning of the line specified by R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and end at the end of the line that is &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; &amp;lt;EM CLASS=&amp;quot;symbol&amp;quot;&amp;gt;&amp;amp;#8722;&amp;lt;/EM&amp;gt; 1 lines below the R line.&lt;br /&gt;
&amp;lt;p&amp;gt;If RR is specified as a prefix target command, begin at the beginning of the line that contains the first RR and end at the line that contains the second RR.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to ALL.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the top of the procedure; end at the bottom of the procedure.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; You can use the first initial of top, current, bottom, and range. For example, TOP TO CURRENT is the same as T TO C.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clearing targets===&lt;br /&gt;
&lt;br /&gt;
Targets remain in effect until one of the following events occurs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commands that use the targets complete execution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLEAR command is executed (see [[#Clearing the prefix area|Clearing the prefix area]]). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you specify a target range, the full-screen editor does not automatically clear the range when the command completes; it preserves the range so that it can be used multiple times. To cancel a target range, enter a CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Prefix commands==&lt;br /&gt;
&lt;br /&gt;
Prefix commands and targets execute full-screen editor operations. A &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
prefix command&amp;lt;/var&amp;gt; is an abbreviated command that specifies an editing operation to be performed on a particular line or set of lines.&lt;br /&gt;
&lt;br /&gt;
Enter the command in the prefix area of the line that you want to change. For example, to delete a line, enter a D in the prefix area of the line and press Enter.&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this topic, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
===Summary of prefix commands===&lt;br /&gt;
&lt;br /&gt;
The following table summarizes the prefix commands that you can enter in the prefix area of the display screen. Some prefix commands must be used with a target command. You can enter prefix characters in uppercase or lowercase and in any position in the prefix area.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Prefix commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends the line by inserting a continuous line that contains blanks or nulls.&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;I*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode.&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;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts one or more lines containing blanks or nulls following this line.&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;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates one or more lines.&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;&amp;amp;quot;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates a block.&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;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves one or more lines.&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;MM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves a block.&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;C[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies one or more lines.&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;CC&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies a block.&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;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes one or more lines.&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;DD&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a block.&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;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Restores the line(s) or block most recently deleted.&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;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Makes this line the current line.&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;
===Clearing the prefix area===&lt;br /&gt;
&lt;br /&gt;
The CLEAR command performs the following operations:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears all prefix lines in the prefix or suffix area on the display screen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears any display area text that has been typed since the last time you pressed Enter (or a PF key). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Aborts any pending prefix operations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cancels any specified targets. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information about prefixes and targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
Pressing the CLEAR, PA1, or PA2 key on the 3270 terminal has the same effect as entering the CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Command-line commands==&lt;br /&gt;
&lt;br /&gt;
In addition to prefix commands, which you enter in the left-hand column (prefix area) of the line(s) you want to edit, the Model 204 full-screen editor provides several command-line commands.&lt;br /&gt;
 &lt;br /&gt;
===Current line===&lt;br /&gt;
&lt;br /&gt;
Several command-line commands take effect from the current line. The current line is the line of the procedure on which the full-screen editor acts.&lt;br /&gt;
&lt;br /&gt;
Use the set line prefix command (/) to set the current line.&lt;br /&gt;
 &lt;br /&gt;
====Setting the current line====&lt;br /&gt;
&lt;br /&gt;
To define a new current line, type the set line command (/) in the prefix area of that line. This command is executed before any command-line commands specified on the same screen.&lt;br /&gt;
&lt;br /&gt;
This feature is especially useful with the [[#Searching for a string (LOCATE)|LOCATE command]]. For example, suppose that you want to locate the next occurrence of a string, but not the occurrence on the line following the current line (the line on which LOCATE would normally start its search). You can use the / prefix to reposition the current line so that LOCATE begins its search below the unwanted occurrence.&lt;br /&gt;
&lt;br /&gt;
===Where to enter command-line commands===&lt;br /&gt;
&lt;br /&gt;
Enter command-line commands on the third line down from the top of the screen, which is the command line. It has the following prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering commands===&lt;br /&gt;
&lt;br /&gt;
When entering command-line commands, follow these guidelines:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter one command at a time. Press Enter after the command. If you enter more than one command, only the first command is executed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can enter a command in uppercase or lowercase, or a combination of the two.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can abbreviate some commands.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Several commands have defaults.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
For more information on command abbreviations and defaults, see [[Model 204 full-screen editor commands]].&lt;br /&gt;
&lt;br /&gt;
===Repeating commands===&lt;br /&gt;
&lt;br /&gt;
Placing an equal sign (=) on the command line repeats the most recently executed command.&lt;br /&gt;
&lt;br /&gt;
This command executes a command any number of times and is useful for performing a repetitive operation, such as searching for a string, without re-entering the command each time.&lt;br /&gt;
&lt;br /&gt;
You can also repeat a command by pressing PF9.&lt;br /&gt;
&lt;br /&gt;
==Moving around a procedure==&lt;br /&gt;
&amp;lt;p&amp;gt;The full-screen editor display commands move through a procedure and display needed portions of it on the screen. Display commands move the current line pointer and control the appearance of portions of the procedure, but they do not change the contents of the procedure itself.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Display commands are summarized in the following table and are discussed in detail in the sections that follow.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Display commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&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;TOP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the first line of the procedure.&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;BOTTOM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the last line of the procedure.&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;FORWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of screens in the procedure.&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;BACKWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of screens in the procedure.&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;+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of lines in the procedure.&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;-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of lines in the procedure.&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;
===Moving to the top of the procedure (TOP)===&lt;br /&gt;
The TOP command moves the line pointer to the first line of the procedure that is being edited. After you issue a TOP command, the full-screen editor displays the TOP OF PROCEDURE indicator on the first line of the display area. It displays the first line of the procedure on the second line. The remaining lines of the procedure appear on subsequent lines. The first line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The TOP command is helpful when inserting a line or set of lines at the beginning of the procedure. In a procedure that fills many screens; using the TOP command is often more efficient than scrolling backward using the BACKWARD command.&lt;br /&gt;
&lt;br /&gt;
===Moving to the bottom of the procedure (BOTTOM)===&lt;br /&gt;
The BOTTOM command moves the line pointer to the last line of the procedure that is being edited. After you issue a BOTTOM command, the full-screen editor displays the BOTTOM OF PROCEDURE indicator on the last line of the screen. The preceding lines of the procedure appear on the preceding lines of the screen. The last line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The BOTTOM command is helpful when adding a line or set of lines to the end of the procedure. In a procedure that fills many screens, using the BOTTOM command is often more efficient than scrolling forward using the FORWARD command.&lt;br /&gt;
&lt;br /&gt;
===Scrolling forward (FORWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The FORWARD command scrolls forward in the procedure by moving the line pointer down a specified number of screens. The format of the FORWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;FO&amp;lt;/b&amp;gt;RWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter FORWARD, the full-screen editor advances one entire screen. If you enter FORWARD followed by a number (n), the full-screen editor advances the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a FORWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines preceding and following the current line. The bottom line of the previous screen display becomes the top line of the new screen display.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the first line of the procedure when you issue the FORWARD command (that is, you are positioned at the top of the procedure), the full-screen editor advances only one half a screen and displays the new current line in the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF8 to scroll forward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling backward (BACKWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The BACKWARD command scrolls backward in the procedure, moving the line pointer up a specified number of screens. The format of the BACKWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;BA&amp;lt;/b&amp;gt;CKWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter BACKWARD, the full-screen editor scrolls backward one entire screen. If you enter BACKWARD followed by a number (n), the full-screen editor scrolls backward the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a BACKWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines that precede and follow the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the last line of the procedure when the BACKWARD command is issued, the full-screen editor scrolls backward only half a screen and displays the new current line in the center of the display screen. Otherwise, the BACKWARD command causes the top line of the previous screen display to become the bottom line of the new screen display. In either case, the BACKWARD command causes the current line to be backed up by the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF7 to scroll backward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling a specified number of lines (+/-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)===&lt;br /&gt;
&amp;lt;p&amp;gt;The scroll commands (+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) scroll forward or backward, moving the line pointer a specified number of lines in the procedure. These commands are useful for moving a portion of the procedure up or down.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter a number, optionally preceded by (+), the full-screen editor advances the specified number of lines. For example, if you enter either 5 or +5 the editor advances the current line forward five lines toward the end of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter -, followed by a number, the editor moves backward the specified number of lines. For example, if you enter -10, the editor moves backward 10 lines toward the beginning of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In general, the current line is displayed highlighted at the center of the screen. However, if the current line is less than half a screen from the top or bottom of the screen when you issue the command, the full-screen editor shifts the display to fill the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that +&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; scroll a specified number of lines in the procedure. Because a single procedure line can occupy more than a single physical line on the display screen, these commands might actually appear to scroll forward or backward a greater number of display lines than specified.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for and replacing text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The full-screen editor LOCATE command allows you to search for text strings in a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The REPLACE command allows you to locate and change text strings.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 These two commands share many characteristics, including:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Rules for text string searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Use of special search characters&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Option to specify a range of procedure lines&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Uppercase and lowercase in searches===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With the exception of [[#Special search characters|special search characters]], the full-screen editor searches for an exact match to the string specified in the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command. Both the case (upper and lower) in which the string is specified, and the placement of blanks, are significant. Therefore, if you specify this command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;LOCATE /Model 204 &amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The editor locates an occurrence of &amp;lt;code&amp;gt;Model 204&amp;lt;/code&amp;gt;, but not &amp;lt;code&amp;gt;MODEL 204&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;MODEL204&amp;lt;/code&amp;gt; in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that although lowercase characters are entered in a procedure, Model&amp;amp;nbsp;204 does not necessarily process these characters as lowercase. By default, characters are translated automatically into uppercase when they are transmitted to Model&amp;amp;nbsp;204 unless: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You specified the Model&amp;amp;nbsp;204 &amp;lt;var&amp;gt;[[*LOWER command|*LOWER]]&amp;lt;/var&amp;gt; command before entering the full-screen editor, or &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; was invoked upon entry to the editor by the setting of the &amp;lt;var&amp;gt;[[SIREDIT parameter|SIREDIT]]&amp;lt;/var&amp;gt; parameter. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You use the editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command to turn off the automatic uppercasing. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the CASE command====&lt;br /&gt;
The editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command is available with version 7.5 or higher of Model&amp;amp;nbsp;204. It has two options:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE MIXED &lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is accepted “as is,” without translation to uppercase. This is similar to invoking the &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;MIXED&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want; that is, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MIX&amp;lt;/code&amp;gt; and so on are all valid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE UPPER&lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is translated to uppercase.  This is similar to invoking the &amp;lt;var&amp;gt;[[*UPPER command|*UPPER]]&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;UPPER&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command does not affect the case translation setting (&amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt;) that was in effect “outside” the editor: when you exit the editor, the case translation is as it was prior to entering the editor.&lt;br /&gt;
&lt;br /&gt;
In addition to the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command, the initial case translation setting within the editor can be automatically set to &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt;, using the X&#039;01&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
Neither the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command nor the &amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt; setting affect the input on the editor command line.&lt;br /&gt;
&lt;br /&gt;
To match strings (for example, “/subroutine”) in a case-insensitive manner, use the X&#039;20&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can limit the scope of a text string search by indicating a range.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The range entry indicates the target lines and the order of the lines to be searched for a match. You can include any of the range specifications summarized in [[#Specifying range targets|Specifying range targets]]. If you omit the range, the full-screen editor searches the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Special search characters==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use special search characters when specifying a search string with the LOCATE and REPLACE commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
These special characters are:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Arbitrary (wildcard) character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Repeat character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
End-of-line character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Wildcard character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An arbitrary or wildcard character is matched by any character. For example, the ampersand character (&amp;amp;amp;) is your wildcard character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MODEL&amp;amp;amp;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings in the procedure can be located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODELA&lt;br /&gt;
MODEL2&lt;br /&gt;
MODEL&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the wildcard character (ARBCHAR)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;ARBCHAR&amp;lt;/var&amp;gt; command specifies a wildcard character that matches zero or more characters when it is included in a search string. The format of the ARBCHAR command is as follows:&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] ARBCHAR {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/var&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the wildcard or arbitrary character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ARBCHAR OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR *&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the asterisk in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /PROC*&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the letters PROC, followed by any character. The following strings are found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCA&lt;br /&gt;
INPROC3&lt;br /&gt;
PROC *.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are not found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PRO12&lt;br /&gt;
PRO CABC&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the wildcard character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter ARBCHAR OFF, none of the characters in the specified search strings in subsequent LOCATE and REPLACE commands are considered wildcard characters, and all strings in the procedure must match the search string exactly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repeat character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The repeat character indicates that the previous character in the string can be repeated any number of times. For example, your repeat character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any of the following strings in the procedure are located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *&lt;br /&gt;
Format **&lt;br /&gt;
Format ****************&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the repeat character (REPEAT)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPEAT command specifies a repeat character that matches zero or more occurrences of the repeating character when it is included in a search string.&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 REPEAT command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] REPEAT {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the repeat character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
REPEAT OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT &amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the &amp;amp;amp; in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /MODEL*&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the characters &amp;lt;code&amp;gt;M O D E L&amp;lt;/code&amp;gt;, followed by any number of asterisks. The following strings are selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL*&lt;br /&gt;
MODEL***&lt;br /&gt;
MODEL**&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL1&lt;br /&gt;
MOD***&lt;br /&gt;
MODEL *&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use repeat characters in conjunction with wildcard characters. For example, suppose that the wildcard character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), the repeat character is an ampersand (&amp;lt;tt&amp;gt;&amp;amp;amp;&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/PRE!&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any string that begins with the letters &amp;lt;code&amp;gt;P R E&amp;lt;/code&amp;gt;, followed by any number of any other characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the repeat character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;REPEAT OFF&amp;lt;/code&amp;gt;, none of the characters in the specified search strings in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered repeat characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===End-of-line character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The end-of-line character indicates the end of one line and the beginning of the next line. When the end-of-line character is used in a search string, it specifies a search for a string that occurs at the beginning or end of a line. For example, the percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%prefix&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line beginning with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix area!!!&lt;br /&gt;
prefixes!!!&lt;br /&gt;
prefix 12!!!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix%&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line ending with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify an end-of-line character only at the beginning or at the end of the search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the end-of-line character====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LINEND&amp;lt;/var&amp;gt; command specifies an end-of-line character. When you use an end-of-line character in a search string, it represents a character that indicates the end of one line and the beginning of the next line. The editor searches for a string that occurs at the beginning or end of a line.&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;LINEND&amp;lt;/var&amp;gt; command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] LINEND {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the end-of-line character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt; is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND #&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the pound sign (&amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt;) in a search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /#PART&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any line that begins with the letters &amp;lt;code&amp;gt;P A R T&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You must specify the end-of-line character at the start or end of a search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the end-of-line character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt;, none of the characters in the search strings specified in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered end-of-line characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Combining special search characters===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify combinations of characters in the search string. For example, the following search string locates any string that contains HELP, followed by any number of characters, followed by ME:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP&amp;amp;amp;!ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP123ABME&lt;br /&gt;
HELP ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for a string (LOCATE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command searches for a particular string in the procedure or in a subset of the procedure. See [[#Specifying a string|Specifying a string]] for more information about string specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Two formats of the LOCATE command===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
There are two formats of the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====With LOCATE keyword====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The first format is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[-][&amp;lt;b&amp;gt;LO&amp;lt;/b&amp;gt;CATE] /&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;[/ [IN]&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where the delimiting character (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; in the example above) can be any character not appearing in the string, with the exception of a blank character.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LO *ELEPHANT* IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify a range, you do not need to include a delimiter after the string. If you specify an alphabetic delimiter, include a space between the LOCATE or LO keyword and the delimiter. If the delimiter is nonalphabetic, the space is not required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Without LOCATE keyword====&lt;br /&gt;
The second format, which does not require the LOCATE keyword, is as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[-] /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where a slash (/) must precede the string. If you do not specify a range, you do not need to include a slash following the string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the full-screen editor cannot find a match for the specified string, it displays the following message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;TARGET STRING NOT LOCATED&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching forward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search forward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor starts the search at the line following the current line and advances forward, stopping when it locates the string or reaches the end of the procedure. If the current line is the last line of the procedure, the full-screen editor wraps to the top of the procedure, begins the search at the top of the procedure, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching backward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search backward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When you precede the command with a minus sign, the full-screen editor starts the search at the line preceding the current line and searches backward toward the beginning of the procedure, stopping when it locates the string or reaches the top of the procedure. If the current line is the top of the procedure, the full-screen editor wraps to the bottom of the procedure, begins the search at the bottom line, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Replacing a string (REPLACE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPLACE command replaces a string in the procedure with a substitute string. REPLACE provides the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Displays each target string to verify the change before proceeding.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Changes more than one occurrence of a specified string in a single line. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the REPLACE command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;R&amp;lt;/b&amp;gt;EPLACE/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt; [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; | *] [&amp;lt;b&amp;gt;V&amp;lt;/b&amp;gt;ERIFY [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you include the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;, VERIFY, or range options in the REPLACE command, specify the options in the order shown.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;R /GROUP/PERM GROUP/ * IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a string===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify strings as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;String to be searched for and changed (old string).&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 class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;New string to replace &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;. The new string need not be the same length as the old string.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use as a delimiter any nonblank character (/ in the example above) that does not appear in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
string1&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;. If you do not specify the number of occurrences, a VERIFY option, or a range, you do not need to include a delimiter after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controlling the number of strings to be replaced===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can replace all occurrences of a string or only the first occurrence in a line. The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification in the REPLACE command represents the number of occurrences of the search string (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;) to be replaced in each line. If you omit an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification, only the first occurrence of the string is replaced in a line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify a value of *, all occurrences of the string are replaced in each line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using the VERIFY option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The VERIFY option verifies all string replacements before they are made. Each line that contains a string that matches the specified string is highlighted and is delimited on the scale line by the characters of the proper length, on the column scale line directly beneath the potential match. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;lt;====&amp;amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The column scale must be turned on to display the scale line characters. The following prompt appears on the command line each time a string is matched:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;CHANGE?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond with any of the following choices:&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;This choice...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;YES, Y, or Enter&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Changes the string&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;NO or N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not change the string&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;ALL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Turns off the VERIFY option and makes all remaining changes&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;STOP or S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Terminates the REPLACE command&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;
If you enter any other response, the full-screen editor displays the &amp;lt;code&amp;gt;CHANGE&amp;lt;/code&amp;gt;? prompt again.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify a range of procedure lines to which the search applies. See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inserting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can insert text several ways using the full-screen editor. Use the following commands to insert text:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;E&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends a line&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;th&amp;gt;I&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts separate lines&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;th&amp;gt;I*&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode&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;th&amp;gt;GET&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts a saved procedure&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;
You can also insert text using the REPLACE command to substitute a string with additional text for an existing string (see [[#Specifying a string|Specifying a string]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Alternatively, you can insert text by [[#Duplicating, copying, and moving text|duplicating, copying, and moving]] lines or blocks of text.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Extending a line===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The E (extend) prefix command inserts a physical line immediately following the line that contains the E, forming a logical line extension. The line is filled with the fill character (that is, blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill character]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting lines===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I (insert) prefix command  inserts one or more lines following the line containing the I. Unlike E lines, these lines are treated as separate lines, not as continuations of existing lines in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the I prefix command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter I alone, the full-screen editor inserts one line following the line containing the I. If you enter I followed by a number, the full-screen editor inserts the specified number of lines. For example, I5 inserts 5 blank lines after the line that contains the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Inserted lines are filled with the fill character (blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill charcter]].&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
===Specifying a fill character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FILL command specifies a fill character. When the full-screen editor displays a line of text, it pads the line on the right with either null or blank characters. The format of the FILL command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] FILL {&amp;lt;u&amp;gt;NULL&amp;lt;/u&amp;gt; | BLANK}&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify &amp;lt;code&amp;gt;FILL NULL&amp;lt;/code&amp;gt;, the full-screen editor pads with null characters on the right. If you specify &amp;lt;code&amp;gt;FILL BLANK&amp;lt;/code&amp;gt;, the full-screen editor pads with blank characters on the right.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The character selected as the fill character is inserted in lines generated using the E (extend) and I (insert) prefix commands.&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 command line on the display screen is always filled with null characters, regardless of the specified fill character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering input mode===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I* prefix command places the full-screen editor in input mode. The line that contains I* becomes the current line and appears at the top of the screen. The rest of the screen is blank. Any lines following the I* line in the original procedure are not displayed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For input lines, the cursor appears in column 1 of the first blank line. You can now enter text. If you press Enter, the last line that you typed is moved to the top of the screen and the cursor appears on the next (blank) line. To exit from input mode, either press Enter twice without any intervening text editing, or enter any full-screen editor command on the command line.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting a saved procedure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The GET command inserts a previously saved procedure after the current line. You can insert a procedure that is stored in either the default procedure file or in a file specified in the command (with the filespec option). The last line of the inserted procedure becomes the current line and is positioned at the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Before you issue the GET command, position the cursor at the appropriate line. For example, if you want to add one procedure to the end of another, use the BOTTOM command to advance the cursor to the end of the procedure before the procedure is added.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the GET command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[IN &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt;] GET &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Where:&amp;lt;/p&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;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the combined procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for filespec is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
ACCOUNT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If neither FILE nor GROUP is specified, FILE is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name of the procedure to be inserted after the current line. This procedure can be stored in any Model 204 file that you currently have open.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Duplicating, copying, and moving text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can save keystrokes and reorganize text by using the full-screen editor commands for the following tasks:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Duplicating lines of text (&amp;amp;quot; or &amp;amp;quot;&amp;amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Copying lines of text (C or CC)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Moving lines of text (M or MM)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Groups of lines are also referred to as blocks. You can also [[#Deleting and undeleting text|delete and undelete lines of text]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Duplicating lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can duplicate either one line or a block of lines.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating one or more lines====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate (&amp;amp;quot;) prefix command duplicates the line on which it is entered. The format of the duplicate command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the line. If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor inserts the specified number of duplicate lines. For example, &amp;lt;code&amp;gt;&amp;amp;quot;5&amp;lt;/code&amp;gt; duplicates a line five times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating a block of text====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate block (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;) prefix command duplicates a group of lines. Entering &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; duplicates the block of lines beginning with the line on which the first &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified and ending with the line on which the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified. &lt;br /&gt;
&lt;br /&gt;
The format of this command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the block of lines. The block appears immediately following the line that contains the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; (the last line of the block). If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor duplicates the block the specified number of times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Copying lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The C (copy) prefix command copies one or more lines to the position indicated by the P (precedes) or F (follows) prefix target. If you specify P, the line(s) are inserted just before the line that contains the P. If you specify F, the lines are inserted just after the line that contains the F. For more information about prefix targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the C prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;C[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of lines to copy. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, the full-screen editor copies only the line that contains the C. If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; followed by a number, the full-screen editor copies the specified number of lines, beginning with the line containing the C&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
When a line is copied, it is preserved in its original position as well as being duplicated in the new position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CC (copy block) prefix command copies a group of lines without requiring you to count them. CC copies the block of lines that begins with the line on which the first CC is specified and that ends with the line on which the second CC is specified. The lines are copied to the position indicated by the P (precedes) or F (follows) prefix target, as discussed for C.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Moving lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The M (move) prefix command moves one or more lines to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]]. If you specify P, the line(s) are inserted just before the line containing the P. If you specify F, the line(s) are inserted just after the line that contains the F.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the M prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to move. &lt;br /&gt;
&lt;br /&gt;
If you enter M, the full-screen editor moves only the line that contains the M. If you enter M followed by a number, the full-screen editor moves the specified number of lines, beginning with the line that contains the M&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. When a line is moved, it is automatically deleted from its original position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MM (move block) prefix command moves a group of lines without requiring you to count them. MM moves the block of lines that begins with the line on which the first MM is specified and that ends with the line on which the second MM is specified. The lines are moved to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deleting and undeleting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 You can delete lines from a procedure, using the D or DD prefix commands. You can also retrieve the last entry that was deleted with the U prefix command. Groups of lines are also referred to as blocks.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Deleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The D (delete) prefix command deletes one or more lines from the procedure. &lt;br /&gt;
&lt;br /&gt;
The format of the D prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to delete. &lt;br /&gt;
&lt;br /&gt;
If you enter D, the full-screen editor deletes only the line that contains the D. If you enter D followed by a number, the full-screen editor deletes the specified number of lines, beginning with the line that contains the D. If the number of lines specified in the D command exceeds the number remaining in the procedure, the full-screen editor deletes all lines from the line on which the D command is specified to the end of the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a line or set of lines is deleted, the lines are not immediately discarded; they are placed on the full-screen editor delete stack. Entries in this stack are deleted when the editing session is terminated. Each time a D command is executed, an entry is placed on the delete stack. A D&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; command, which deletes several lines, causes a single entry that contains the specified block of lines to be placed on the stack. However, a series of contiguous lines, each containing a D command, is not accumulated into a single entry on the delete stack. You can [[#Undeleting lines or blocks|retrieve or undelete an entry]] by means of the U command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DD (delete block) prefix command deletes a group of lines without requiring you to count them. DD deletes the block of lines that begins with the line on which the first DD is specified and that ends with the line on which the second DD is specified. The block is placed on the delete stack as a single entity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Undeleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The U (undelete) prefix command retrieves the last entry that was deleted (that is, placed on the delete stack) and inserts it after the line that contains the U.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;exit&amp;quot;&amp;gt;Exiting from the full-screen editor&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit from the full-screen editor or to save edited procedures, use the commands listed in the following table, which also lists the description of each command and where more information is located. When you exit from the full-screen editor, you are returned to the Model 204 command level.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;CAPTION&amp;gt;Exit and save commands&amp;lt;/CAPTION&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;END or EEND&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor and saves the edited procedures. The EEND command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&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;th&amp;gt;GO or GGO&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, saves the edited procedure, and includes (executes) the edited procedure. The GGO command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved. Under Model 204 7.8 and later, the GO command does not actually update the procedure in the file if it has not been modified since it was loaded or last saved.&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;th&amp;gt;QUIT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, might prompt if changes were made to the procedure, and does not save the edited procedure.&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;th&amp;gt;SAVE or SSAVE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not exit from the full-screen editor, but saves the edited procedure. The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&amp;lt;/td&amp;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;
For more information about exit and save commands, refer to the [[EDIT command]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Exiting from the editor and saving the procedure (END or EEND)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The END or EEND command exits from the full-screen editor and saves the edited procedure on disk. Specify the name under which the procedure is to be saved. You can store the procedure in either the default procedure file or in a file specified in the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the END/EEND command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [END | EEND] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the default Model&amp;amp;nbsp;204 procedure file. The filespec can identify a Model&amp;amp;nbsp;204 file or a temporary or permanent group. The file specified by IN filespec must be open. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify either FILE or GROUP, FILE is assumed. For more information about files and groups, see the following pages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: File]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Permanent group]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Temporary group]]&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;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter END, the procedure is saved under the name of the output procedure specified when you invoked the editor. The procedure is stored in the Model 204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The EEND command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. EEND would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving and including the procedure (GO or GGO)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Like the END command, the GO or GGO command exits from the full-screen editor and saves the edited procedure. Unlike END, GO automatically performs an implicit Model 204 [[INCLUDE command]], which executes the Model 204 commands in the saved procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The format of the GO/GGO command is as follows:&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;filespec&amp;lt;/span&amp;gt;] [GO | GGO] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
GO command options are identical to END command options. If you enter GO, the full-screen editor saves the procedure under the name of the output procedure specified when you invoked the full-screen editor. The procedure is stored in the Model 204 default procedure file. Under Model 204 7.8 and later, the procedure won&#039;t actually be updated by the GO command if it has not been modified in the editor since it was loaded or last saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The GGO command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. GGO would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Exiting from the editor without saving the edited procedure (QUIT)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The QUIT command exits from the full-screen editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you change the procedure during the current editing session and exit by entering QUIT, the full-screen editor displays the following message, which indicates that the procedure was changed and asks you to enter QUIT again if you want to exit the procedure without saving the edits:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE HAS BEEN MODIFIED, ENTER &#039;QUIT&#039; TO VERIFY.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond in one of the following ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter QUIT on the command line to confirm that changes are not to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ignore the prompt and continue editing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit without receiving the warning prompt, enter the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you use QUIT to exit from a file that was examined but not modified, the full-screen editor does not prompt before exiting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can also press PF3 to quit. Your edits are not saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving the procedure (SAVE or SSAVE)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The SAVE or SSAVE command saves the edited procedure or a subset of that procedure under the specified name (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
procname&amp;lt;/var&amp;gt;) or the default procedure name. Unlike the END, GO, and QUIT commands, SAVE does not exit from the editor. To ensure against the loss of changes due to a system failure, issue the SAVE command periodically while you edit a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the SAVE/SSAVE command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [SAVE | SSAVE] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;] [[IN] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group. The file specified with IN filespec must be open. It has the same syntax as described for the END command.&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;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;range is the range to be saved. Note that if you specify range, you must also specify procname. You can include any of the [[#Range target characters|range specifications]]. If you omit a range, the entire procedure is saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter SAVE alone, the full-screen editor saves the entire procedure under the name of the output procedure specified when the editor was invoked. The procedure is stored in the Model&amp;amp;nbsp;204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. SSAVE would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Procedure update control===&lt;br /&gt;
&amp;lt;p&amp;gt;Before Model 204 7.8, the editor would hold a share lock on the procedure being editing during the edit session. This would ensure that no other user could update the procedure underneath the user in the editor. Unfortunately, this would also block updates in the common case where one is just browsing a procedure in the editor and leave a lock on a procedure if the editing user forgets to exit the editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Under Model 204 7.8 and later, no lock is held on the procedure during the edit session. Instead, if the user attempts to save the procedure via the &amp;lt;var&amp;gt;SAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;END&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GO&amp;lt;/var&amp;gt; command, the timestamp if the procedure in the output file is compared with the timestamp when the procedure was loaded or last saved. If the timestamp no longer matches, it means that another user has modified the procedure and saving the procedure would overwrite those changes. In this case the editing user is warned and the save is not performed. If the editing user wishes to force the save, anyway, the user can issue the &amp;lt;var&amp;gt;SSAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EEND&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GGO&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Category: Model 204 editor]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120288</id>
		<title>Model 204 full-screen editor</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Model_204_full-screen_editor&amp;diff=120288"/>
		<updated>2024-09-27T18:14:01Z</updated>

		<summary type="html">&lt;p&gt;Abe: /* Clearing the prefix area */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The full-screen editor enables you to use the special capabilities of the IBM 3270 and compatible terminals.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p&amp;gt;Model 204 provides the following editors, which you can use to enter, change, or add text to Model 204 requests and procedures:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Full-screen editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for full-screen terminals.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;Line editor&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Available for line-at-a-time terminals. Optionally, you can invoke this editor from a full-screen terminal.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This topic describes how to use the full-screen editor. [[Model 204 line editor]] describes the line editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Editing capabilities===&lt;br /&gt;
Special features of the full-screen editor include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Full-screen mode&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 are always in full-screen mode, even when text is being entered or added to a procedure. You can position the cursor at any text on the display screen and delete, insert, or change characters by typing at that point.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Special screen display&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The display screen contains a display area and, optionally, either a prefix or a suffix area for entry of prefix commands to perform editing operations. (See [[#Using targets with prefix commands|Using targets with prefix commands]].) You can display a column scale at the center of the screen to facilitate the positioning of text in specific columns.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Automatic text wrapping&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines that are longer than the normal display line are automatically wrapped onto subsequent display line(s).&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Global text searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can search throughout a procedure for any string of characters. You can replace characters and specify wildcard characters to match all or part of the specified string. This feature is described in [[#Specifying a string|Specifying a string]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefixes and targets&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can specify both editing operations (prefixes) and the lines on which the edits are to be performed (targets) by entering abbreviated commands in the prefix or suffix area of the screen. Prefixes and targets are described in [[#Specifying range targets|Specifying range targets]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;PF key functions&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use PF3 to quit, PF7 to scroll backward, PF8 to scroll forward, and PF9 to repeat commands while editing in full-screen mode.&lt;br /&gt;
&lt;br /&gt;
==Invoking the full-screen editor==&lt;br /&gt;
 &lt;br /&gt;
===Model 204 requirements===&lt;br /&gt;
Before invoking the full-screen editor, set the Model 204 LOUTPB parameter to a minimum value of 3000. The [[LOUTPB parameter]] specifies the length of the output page buffer for 3270 terminals that use the full-screen capabilities.&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor===&lt;br /&gt;
You can invoke the full-screen editor in the following ways:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Directly from Model 204 command level&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Indirectly in a User Language (SOUL) request&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
To invoke the full-screen editor from a terminal, enter the &amp;lt;var&amp;gt;[[EDIT command|EDIT]]&amp;lt;/var&amp;gt; command.&lt;br /&gt;
 &lt;br /&gt;
====Using the EDIT command====&lt;br /&gt;
To invoke the full-screen editor, use the &amp;lt;var&amp;gt;EDIT command&amp;lt;/var&amp;gt;. The format of the &amp;lt;var&amp;gt;EDIT&amp;lt;/var&amp;gt; command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT(SCREEN)[&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/span&amp;gt;,&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Specifying the type of editor====&lt;br /&gt;
You can include a parameter that indicates which of the Model&amp;amp;nbsp;204 editors to invoke.  To request the full-screen editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (SCREEN)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To request the line editor, enter:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;EDIT (LINE)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you do not specify either SCREEN or LINE, the appropriate editor for your terminal type is invoked. For example, if your terminal is an IBM 3270 and you enter EDIT while at command level or while executing a SOUL request, the full-screen editor is invoked automatically. The full-screen editor is not available from an IBM 3270 terminal that is connected to Model 204 through an access method that does not support full-screen input and output.&lt;br /&gt;
 &lt;br /&gt;
====Specifying an input procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; parameter to name a temporary or permanent procedure to be used as input for the current editing session. If you do not specify an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;oldproc&amp;lt;/var&amp;gt; option, the full-screen editor creates a temporary procedure (Model&amp;amp;nbsp;204 temporary procedure 0). Note that you cannot use the full-screen editor to create a new and permanent procedure if you specify a nonexistent input procedure.&lt;br /&gt;
&lt;br /&gt;
====Specifying an output procedure====&lt;br /&gt;
Use the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter to specify an output procedure name. You can include an output procedure name in the EDIT command or specify a name when you exit from the procedure with an END, GO, or SAVE command. After the editing session terminates, Model 204 saves the procedure under the specified &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; name. If you specify a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;newproc&amp;lt;/var&amp;gt; parameter in the EDIT command and enter a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter when exiting from the procedure, the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; parameter specified when exiting overrides the name specified in the EDIT command.&lt;br /&gt;
&lt;br /&gt;
For information about the rules for procedure names, see [[EDIT command#Procedure names|Procedure names]].&lt;br /&gt;
&lt;br /&gt;
====Results of using the EDIT command====&lt;br /&gt;
After you invoke the full-screen editor, use any of the commands described in this chapter. When you enter the full-screen editor, the first portion of the procedure to be edited appears in the display area and the cursor appears at the beginning of the command line. To reposition the cursor to the command line, press the HOME key (usually ALT-BACKTAB).&lt;br /&gt;
&lt;br /&gt;
When you issue an EDIT command, the full-screen editor writes the following message to the Model 204 audit trail:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M204.0685: EDITING INTO newproc&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Invoking the editor indirectly===&lt;br /&gt;
You can invoke the full-screen editor indirectly by including the EDIT command in a SOUL request by using the TERMINAL option in the following format:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;EDIT (TERMINAL)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TERMINAL option of EDIT====&lt;br /&gt;
The TERMINAL option invokes the full-screen editor from within a procedure and connects the editor to your terminal for input. For more information about the TERMINAL option, refer to the Model 204 [[EDIT command]] wiki page.&lt;br /&gt;
&lt;br /&gt;
==Display screen format==&lt;br /&gt;
The typical format of the display screen during an editing session is shown in the following figure. &lt;br /&gt;
&lt;br /&gt;
The areas numbered in the diagram are described below the figure.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot; style=&amp;quot;width:550px&amp;quot;&amp;gt;Sample Display Screen&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;figure&amp;quot;&amp;gt;[[File:Editing_Guide_ch1_Sample_Display_Screen.gif]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Screen components===&lt;br /&gt;
The components of the display screen are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Header Line&lt;br /&gt;
&amp;lt;p&amp;gt;The top line of the screen is reserved for procedure identification. The header line contains the following information:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Old procedure name (before editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;New procedure name (after editing)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Line number of the current line within the procedure&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current maximum line number within the procedure &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Message Line&lt;br /&gt;
&amp;lt;p&amp;gt;The second line is reserved for error and status messages.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command Line&lt;br /&gt;
&amp;lt;p&amp;gt;The third line is reserved for the entry of screen commands. This line begins with the following command prompt:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       ===&amp;amp;gt; &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can enter a command in uppercase or lowercase letters or a combination of the two.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;See [[Model 204 full-screen editor commands]] for abbreviations and defaults for full-screen commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Enter one command at a time. If you enter more than one command, only the first command is executed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Display Area&lt;br /&gt;
&amp;lt;p&amp;gt;The display area contains a portion of the text that is being edited. The text on the screen is considered a window in which only part of the procedure currently being edited appears.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To manipulate displayed procedures, first position the cursor and then add, change, or delete text. To execute changes, press the Enter key.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;To position other parts of the procedure in the edit window, you can use the display commands or PF keys to [[#Moving around a procedure|scroll forward and backward]] through the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Prefix or Suffix Area&lt;br /&gt;
&amp;lt;p&amp;gt;This area can either precede or follow the display area on the screen. The columns typically display the following special characters:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
       =====      &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can replace one or more of these equal signs with a special prefix command to perform an editing function, such as inserting or deleting text on the corresponding line in the display area. See [[#Summary of prefix commands|Summary of  prefix commands]] for more information about prefix commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Current Line&lt;br /&gt;
&amp;lt;p&amp;gt;The line being edited normally appears at the center of the screen and is highlighted (that is, displayed more brightly than the surrounding text).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;line pointer&amp;lt;/var&amp;gt; points to the current line. The line pointer is repositioned to a new current line when you scroll forward and backward and when you execute screen commands. You can position the line pointer at a new current line by specifying the [[#Setting the current line|set line prefix command (/)]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Column Scale&lt;br /&gt;
&amp;lt;p&amp;gt;The column scale indicates the column position of the procedure text that appears. You can display a column scale immediately below the center line (normally the current line) in the display area. The scale is useful when text must be entered in particular columns.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Requesting a column scale===&lt;br /&gt;
&lt;br /&gt;
The SCALE command specifies whether or not the full-screen editor displays a column scale in the center of the display area on the screen. The format of the SCALE command is:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] SCALE {OFF | ON}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SCALE OFF is the default.&lt;br /&gt;
&lt;br /&gt;
If you specify SCALE OFF, the column scale is not displayed. If you specify SCALE ON, the scale is displayed. The column scale is shown in the [[Model 204 full-screen editor#Sample Display Screen|sample display screen]].&lt;br /&gt;
&lt;br /&gt;
===Positioning the prefix area===&lt;br /&gt;
&lt;br /&gt;
The PREFIX command positions the prefix area on the left (prefix) or right (suffix) side of the display screen. PREFIX LEFT is the default. The format of the PREFIX command is as follows:&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;b&amp;gt;Syntax&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] PREFIX {LEFT | RIGHT}&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full-screen editor positions the prefix area at the end of each line of the display area when you specify PREFIX RIGHT, and at the beginning of each line when you specify PREFIX LEFT.&lt;br /&gt;
&lt;br /&gt;
The [[#Sample Display Screen|sample display screen]] shows the positioning of the prefix area on the left side of the display screen. &lt;br /&gt;
&lt;br /&gt;
For a description of the prefix commands that can be entered in this area, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
==Editing modes==&lt;br /&gt;
&lt;br /&gt;
The editing modes are:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Command mode (used primarily for editing) &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Input mode (used primarily for entering new text)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
===Command mode===&lt;br /&gt;
&lt;br /&gt;
When you invoke the full-screen editor, you are placed in command mode.  To position the cursor to the command line, press the HOME key (usually ALT/BACKTAB).&lt;br /&gt;
&lt;br /&gt;
In command mode, you enter commands for the full-screen editor either on the command line or in the prefix area.&lt;br /&gt;
 &lt;br /&gt;
===Input mode===&lt;br /&gt;
&lt;br /&gt;
Enter input mode to type new lines of text. To enter input mode, specify an I* prefix command. You cannot use the prefix commands in input mode.&lt;br /&gt;
&lt;br /&gt;
To return to command mode from input mode, press the Enter key twice without any intervening text.&lt;br /&gt;
&lt;br /&gt;
==Using targets==&lt;br /&gt;
&lt;br /&gt;
Some prefix and full-screen editor commands operate on a line or set of lines called a &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
target&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
For example, if you want to search for a text string within lines 10 and 20 of a procedure, lines 10 through 20 are considered target lines.&lt;br /&gt;
&lt;br /&gt;
Specify a target on the appropriate line in the prefix or suffix area of the screen.&lt;br /&gt;
&lt;br /&gt;
When specifying a target, you can use uppercase and lowercase interchangeably. Targets are specified as one of the following:&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;Target command&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Description&amp;lt;/th&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;&amp;lt;b&amp;gt;P&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Precedes the target&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;&amp;lt;b&amp;gt;F&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Follows the target&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;&amp;lt;b&amp;gt;R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range&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;&amp;lt;b&amp;gt;RR&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Target range block&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Using targets with prefix commands===&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this chapter, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
====P target command====&lt;br /&gt;
&lt;br /&gt;
Use the P target command to define a target above the line on which you enter the P. For example, to move a group of lines within a procedure to precede line 20, place a P target on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
====F target command====&lt;br /&gt;
&lt;br /&gt;
Use the F target command to define a target below the line on which you enter the F. For example, if you wanted to move a group of lines within a procedure to follow line 20, place an F on the line 20 prefix.&lt;br /&gt;
&lt;br /&gt;
===Specifying range targets===&lt;br /&gt;
&lt;br /&gt;
Several commands let you include a range specification that indicates the range and direction of the target lines. The SAVE, LOCATE, and REPLACE commands define a set of target lines by including range specifications. For LOCATE, if one of these specifications is omitted, the full-screen editor processes the set of lines from the current line to the end of the procedure and then wraps to the top of the procedure and continues to the current line.&lt;br /&gt;
 &lt;br /&gt;
====R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) Target command====&lt;br /&gt;
&lt;br /&gt;
Use the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) target command to define a target in a range of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; lines beginning with the line on which you enter the R(&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;). For example, if you entered R6 on line 15, the range begins on line 15 and ends with line 20.&lt;br /&gt;
  &lt;br /&gt;
====RR Target command====&lt;br /&gt;
&lt;br /&gt;
Use the RR target command to define a target in a range of lines beginning with the line on which you enter the first RR and ending on the line on which you enter the second RR. For example, to specify a range from line 15 to 20, place one RR target on line 15 and another RR target on line 20.&lt;br /&gt;
&lt;br /&gt;
===Range target characters===&lt;br /&gt;
&lt;br /&gt;
Range specifications are summarized in the following table.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Range specifications&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This specification...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Has this effect...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;ALL&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to TOP TO BOTTOM.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the bottom of the procedure and end at the current line.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;BOTTOM [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the procedure bottom and end at the top of the procedure.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;p&amp;gt;Begin at the beginning of the current line and end at the procedure bottom.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;CURRENT [TO] TOP&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Proceed backward through the procedure; begin at the current line and end at the procedure&#039;s beginning.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;RANGE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is specified as a prefix target command, begin at the beginning of the line specified by R&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and end at the end of the line that is &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; &amp;lt;EM CLASS=&amp;quot;symbol&amp;quot;&amp;gt;&amp;amp;#8722;&amp;lt;/EM&amp;gt; 1 lines below the R line.&lt;br /&gt;
&amp;lt;p&amp;gt;If RR is specified as a prefix target command, begin at the beginning of the line that contains the first RR and end at the line that contains the second RR.&amp;lt;/p&amp;gt;&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] BOTTOM&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the procedure top and end at the procedure bottom; equivalent to ALL.&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;th class=&amp;quot;thJustBold&amp;quot;&amp;gt;TOP [TO] CURRENT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Begin at the top of the procedure; end at the bottom of the procedure.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; You can use the first initial of top, current, bottom, and range. For example, TOP TO CURRENT is the same as T TO C.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Clearing targets===&lt;br /&gt;
&lt;br /&gt;
Targets remain in effect until one of the following events occurs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Commands that use the targets complete execution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;CLEAR command is executed (see [[#Clearing the prefix area|Clearing the prefix area]]). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you specify a target range, the full-screen editor does not automatically clear the range when the command completes; it preserves the range so that it can be used multiple times. To cancel a target range, enter a CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Prefix commands==&lt;br /&gt;
&lt;br /&gt;
Prefix commands and targets execute full-screen editor operations. A &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
prefix command&amp;lt;/var&amp;gt; is an abbreviated command that specifies an editing operation to be performed on a particular line or set of lines.&lt;br /&gt;
&lt;br /&gt;
Enter the command in the prefix area of the line that you want to change. For example, to delete a line, enter a D in the prefix area of the line and press Enter.&lt;br /&gt;
&lt;br /&gt;
The prefix commands are described in the rest of this topic, along with command line commands, by functional group. [[Model 204 full-screen editor commands]] also provides a summary of full-screen editor commands.&lt;br /&gt;
 &lt;br /&gt;
===Summary of prefix commands===&lt;br /&gt;
&lt;br /&gt;
The following table summarizes the prefix commands that you can enter in the prefix area of the display screen. Some prefix commands must be used with a target command. You can enter prefix characters in uppercase or lowercase and in any position in the prefix area.&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Prefix commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends the line by inserting a continuous line that contains blanks or nulls.&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;I*&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode.&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;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts one or more lines containing blanks or nulls following this line.&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;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates one or more lines.&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;&amp;amp;quot;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Duplicates a block.&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;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves one or more lines.&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;MM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moves a block.&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;C[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies one or more lines.&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;CC&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Copies a block.&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;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes one or more lines.&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;DD&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deletes a block.&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;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Restores the line(s) or block most recently deleted.&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;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Makes this line the current line.&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;
===Clearing the prefix area===&lt;br /&gt;
&lt;br /&gt;
The CLEAR command performs the following operations:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears all prefix lines in the prefix or suffix area on the display screen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Clears any display area text that has been typed since the last time you pressed Enter (or a PF key). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Aborts any pending prefix operations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cancels any specified targets. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For more information about prefixes and targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&lt;br /&gt;
&lt;br /&gt;
Pressing the CLEAR, PA1, or PA2 key on the 3270 terminal has the same effect as entering the CLEAR command.&lt;br /&gt;
&lt;br /&gt;
==Command-line commands==&lt;br /&gt;
&lt;br /&gt;
In addition to prefix commands, which you enter in the left-hand column (prefix area) of the line(s) you want to edit, the Model 204 full-screen editor provides several command-line commands.&lt;br /&gt;
 &lt;br /&gt;
===Current line===&lt;br /&gt;
&lt;br /&gt;
Several command-line commands take effect from the current line. The current line is the line of the procedure on which the full-screen editor acts.&lt;br /&gt;
&lt;br /&gt;
Use the set line prefix command (/) to set the current line.&lt;br /&gt;
 &lt;br /&gt;
====Setting the current line====&lt;br /&gt;
&lt;br /&gt;
To define a new current line, type the set line command (/) in the prefix area of that line. This command is executed before any command-line commands specified on the same screen.&lt;br /&gt;
&lt;br /&gt;
This feature is especially useful with the [[#Searching for a string (LOCATE)|LOCATE command]]. For example, suppose that you want to locate the next occurrence of a string, but not the occurrence on the line following the current line (the line on which LOCATE would normally start its search). You can use the / prefix to reposition the current line so that LOCATE begins its search below the unwanted occurrence.&lt;br /&gt;
&lt;br /&gt;
===Where to enter command-line commands===&lt;br /&gt;
&lt;br /&gt;
Enter command-line commands on the third line down from the top of the screen, which is the command line. It has the following prompt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;===&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering commands===&lt;br /&gt;
&lt;br /&gt;
When entering command-line commands, follow these guidelines:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter one command at a time. Press Enter after the command. If you enter more than one command, only the first command is executed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can enter a command in uppercase or lowercase, or a combination of the two.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You can abbreviate some commands.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Several commands have defaults.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
For more information on command abbreviations and defaults, see [[Model 204 full-screen editor commands]].&lt;br /&gt;
&lt;br /&gt;
===Repeating commands===&lt;br /&gt;
&lt;br /&gt;
Placing an equal sign (=) on the command line repeats the most recently executed command.&lt;br /&gt;
&lt;br /&gt;
This command executes a command any number of times and is useful for performing a repetitive operation, such as searching for a string, without re-entering the command each time.&lt;br /&gt;
&lt;br /&gt;
You can also repeat a command by pressing PF9.&lt;br /&gt;
&lt;br /&gt;
==Moving around a procedure==&lt;br /&gt;
&amp;lt;p&amp;gt;The full-screen editor display commands move through a procedure and display needed portions of it on the screen. Display commands move the current line pointer and control the appearance of portions of the procedure, but they do not change the contents of the procedure itself.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Display commands are summarized in the following table and are discussed in detail in the sections that follow.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Display commands&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Command&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Meaning&amp;lt;/th&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;TOP&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the first line of the procedure.&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;BOTTOM&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls to the last line of the procedure.&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;FORWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of screens in the procedure.&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;BACKWARD [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of screens in the procedure.&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;+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls forward a specified number of lines in the procedure.&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;-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Scrolls backward a specified number of lines in the procedure.&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;
===Moving to the top of the procedure (TOP)===&lt;br /&gt;
The TOP command moves the line pointer to the first line of the procedure that is being edited. After you issue a TOP command, the full-screen editor displays the TOP OF PROCEDURE indicator on the first line of the display area. It displays the first line of the procedure on the second line. The remaining lines of the procedure appear on subsequent lines. The first line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The TOP command is helpful when inserting a line or set of lines at the beginning of the procedure. In a procedure that fills many screens; using the TOP command is often more efficient than scrolling backward using the BACKWARD command.&lt;br /&gt;
&lt;br /&gt;
===Moving to the bottom of the procedure (BOTTOM)===&lt;br /&gt;
The BOTTOM command moves the line pointer to the last line of the procedure that is being edited. After you issue a BOTTOM command, the full-screen editor displays the BOTTOM OF PROCEDURE indicator on the last line of the screen. The preceding lines of the procedure appear on the preceding lines of the screen. The last line of the procedure becomes the current line and is highlighted in the display.&lt;br /&gt;
&lt;br /&gt;
The BOTTOM command is helpful when adding a line or set of lines to the end of the procedure. In a procedure that fills many screens, using the BOTTOM command is often more efficient than scrolling forward using the FORWARD command.&lt;br /&gt;
&lt;br /&gt;
===Scrolling forward (FORWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The FORWARD command scrolls forward in the procedure by moving the line pointer down a specified number of screens. The format of the FORWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;FO&amp;lt;/b&amp;gt;RWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter FORWARD, the full-screen editor advances one entire screen. If you enter FORWARD followed by a number (n), the full-screen editor advances the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a FORWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines preceding and following the current line. The bottom line of the previous screen display becomes the top line of the new screen display.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the first line of the procedure when you issue the FORWARD command (that is, you are positioned at the top of the procedure), the full-screen editor advances only one half a screen and displays the new current line in the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF8 to scroll forward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling backward (BACKWARD)===&lt;br /&gt;
&amp;lt;p&amp;gt;The BACKWARD command scrolls backward in the procedure, moving the line pointer up a specified number of screens. The format of the BACKWARD command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;BA&amp;lt;/b&amp;gt;CKWARD[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter BACKWARD, the full-screen editor scrolls backward one entire screen. If you enter BACKWARD followed by a number (n), the full-screen editor scrolls backward the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;After you issue a BACKWARD command, the new current line is displayed highlighted at the center of the screen. The remainder of the screen is filled with as many as possible of the lines that precede and follow the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the current line is the last line of the procedure when the BACKWARD command is issued, the full-screen editor scrolls backward only half a screen and displays the new current line in the center of the display screen. Otherwise, the BACKWARD command causes the top line of the previous screen display to become the bottom line of the new screen display. In either case, the BACKWARD command causes the current line to be backed up by the specified number of screens.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;You can also press PF7 to scroll backward.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Scrolling a specified number of lines (+/-&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;)===&lt;br /&gt;
&amp;lt;p&amp;gt;The scroll commands (+&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;) scroll forward or backward, moving the line pointer a specified number of lines in the procedure. These commands are useful for moving a portion of the procedure up or down.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter a number, optionally preceded by (+), the full-screen editor advances the specified number of lines. For example, if you enter either 5 or +5 the editor advances the current line forward five lines toward the end of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If you enter -, followed by a number, the editor moves backward the specified number of lines. For example, if you enter -10, the editor moves backward 10 lines toward the beginning of the procedure and adjusts the display on the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In general, the current line is displayed highlighted at the center of the screen. However, if the current line is less than half a screen from the top or bottom of the screen when you issue the command, the full-screen editor shifts the display to fill the screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Note that +&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; and -&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; scroll a specified number of lines in the procedure. Because a single procedure line can occupy more than a single physical line on the display screen, these commands might actually appear to scroll forward or backward a greater number of display lines than specified.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for and replacing text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The full-screen editor LOCATE command allows you to search for text strings in a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The REPLACE command allows you to locate and change text strings.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 These two commands share many characteristics, including:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Rules for text string searches&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Use of special search characters&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
 Option to specify a range of procedure lines&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Uppercase and lowercase in searches===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
With the exception of [[#Special search characters|special search characters]], the full-screen editor searches for an exact match to the string specified in the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command. Both the case (upper and lower) in which the string is specified, and the placement of blanks, are significant. Therefore, if you specify this command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;LOCATE /Model 204 &amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The editor locates an occurrence of &amp;lt;code&amp;gt;Model 204&amp;lt;/code&amp;gt;, but not &amp;lt;code&amp;gt;MODEL 204&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;MODEL204&amp;lt;/code&amp;gt; in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that although lowercase characters are entered in a procedure, Model&amp;amp;nbsp;204 does not necessarily process these characters as lowercase. By default, characters are translated automatically into uppercase when they are transmitted to Model&amp;amp;nbsp;204 unless: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You specified the Model&amp;amp;nbsp;204 &amp;lt;var&amp;gt;[[*LOWER command|*LOWER]]&amp;lt;/var&amp;gt; command before entering the full-screen editor, or &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; was invoked upon entry to the editor by the setting of the &amp;lt;var&amp;gt;[[SIREDIT parameter|SIREDIT]]&amp;lt;/var&amp;gt; parameter. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;You use the editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command to turn off the automatic uppercasing. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using the CASE command====&lt;br /&gt;
The editor &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command is available with version 7.5 or higher of Model&amp;amp;nbsp;204. It has two options:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE MIXED &lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is accepted “as is,” without translation to uppercase. This is similar to invoking the &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;MIXED&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want; that is, &amp;lt;code&amp;gt;M&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MIX&amp;lt;/code&amp;gt; and so on are all valid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dt&amp;gt;CASE UPPER&lt;br /&gt;
&amp;lt;dd&amp;gt;Terminal input is translated to uppercase.  This is similar to invoking the &amp;lt;var&amp;gt;[[*UPPER command|*UPPER]]&amp;lt;/var&amp;gt; command prior to entering the Full Screen Editor. The &amp;lt;code&amp;gt;UPPER&amp;lt;/code&amp;gt; parameter may be abbreviated as much as you want.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command does not affect the case translation setting (&amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt;) that was in effect “outside” the editor: when you exit the editor, the case translation is as it was prior to entering the editor.&lt;br /&gt;
&lt;br /&gt;
In addition to the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command, the initial case translation setting within the editor can be automatically set to &amp;lt;var&amp;gt;*LOWER&amp;lt;/var&amp;gt;, using the X&#039;01&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
Neither the &amp;lt;var&amp;gt;CASE&amp;lt;/var&amp;gt; command nor the &amp;lt;var&amp;gt;*UPPER/*LOWER&amp;lt;/var&amp;gt; setting affect the input on the editor command line.&lt;br /&gt;
&lt;br /&gt;
To match strings (for example, “/subroutine”) in a case-insensitive manner, use the X&#039;20&#039; bit of the &amp;lt;var&amp;gt;SIREDIT&amp;lt;/var&amp;gt; parameter.&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can limit the scope of a text string search by indicating a range.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The range entry indicates the target lines and the order of the lines to be searched for a match. You can include any of the range specifications summarized in [[#Specifying range targets|Specifying range targets]]. If you omit the range, the full-screen editor searches the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Special search characters==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use special search characters when specifying a search string with the LOCATE and REPLACE commands.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
These special characters are:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Arbitrary (wildcard) character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Repeat character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
End-of-line character&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Wildcard character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An arbitrary or wildcard character is matched by any character. For example, the ampersand character (&amp;amp;amp;) is your wildcard character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;MODEL&amp;amp;amp;&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings in the procedure can be located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODELA&lt;br /&gt;
MODEL2&lt;br /&gt;
MODEL&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the wildcard character (ARBCHAR)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;ARBCHAR&amp;lt;/var&amp;gt; command specifies a wildcard character that matches zero or more characters when it is included in a search string. The format of the ARBCHAR command is as follows:&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] ARBCHAR {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/var&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the wildcard or arbitrary character.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
ARBCHAR OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR *&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the asterisk in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /PROC*&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the letters PROC, followed by any character. The following strings are found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCA&lt;br /&gt;
INPROC3&lt;br /&gt;
PROC *.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are not found:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PRO12&lt;br /&gt;
PRO CABC&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the wildcard character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;ARBCHAR OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter ARBCHAR OFF, none of the characters in the specified search strings in subsequent LOCATE and REPLACE commands are considered wildcard characters, and all strings in the procedure must match the search string exactly.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Repeat character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The repeat character indicates that the previous character in the string can be repeated any number of times. For example, your repeat character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any of the following strings in the procedure are located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Format *&lt;br /&gt;
Format **&lt;br /&gt;
Format ****************&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the repeat character (REPEAT)====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPEAT command specifies a repeat character that matches zero or more occurrences of the repeating character when it is included in a search string.&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 REPEAT command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] REPEAT {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the repeat character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
REPEAT OFF is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT &amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the &amp;amp;amp; in the LOCATE command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /MODEL*&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor searches for strings that contain the characters &amp;lt;code&amp;gt;M O D E L&amp;lt;/code&amp;gt;, followed by any number of asterisks. The following strings are selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL*&lt;br /&gt;
MODEL***&lt;br /&gt;
MODEL**&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following strings are &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; selected:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;MODEL1&lt;br /&gt;
MOD***&lt;br /&gt;
MODEL *&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use repeat characters in conjunction with wildcard characters. For example, suppose that the wildcard character is an exclamation point (&amp;lt;tt&amp;gt;!&amp;lt;/tt&amp;gt;), the repeat character is an ampersand (&amp;lt;tt&amp;gt;&amp;amp;amp;&amp;lt;/tt&amp;gt;), and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/PRE!&amp;amp;amp;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any string that begins with the letters &amp;lt;code&amp;gt;P R E&amp;lt;/code&amp;gt;, followed by any number of any other characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the repeat character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;REPEAT OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;REPEAT OFF&amp;lt;/code&amp;gt;, none of the characters in the specified search strings in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered repeat characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===End-of-line character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The end-of-line character indicates the end of one line and the beginning of the next line. When the end-of-line character is used in a search string, it specifies a search for a string that occurs at the beginning or end of a line. For example, the percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;%prefix&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line beginning with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix area!!!&lt;br /&gt;
prefixes!!!&lt;br /&gt;
prefix 12!!!&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The percent sign (&amp;lt;tt&amp;gt;%&amp;lt;/tt&amp;gt;) is your end-of-line character, and you specify the following search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;prefix%&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any line ending with the word &amp;lt;code&amp;gt;prefix&amp;lt;/code&amp;gt; is located.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify an end-of-line character only at the beginning or at the end of the search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Setting the end-of-line character====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LINEND&amp;lt;/var&amp;gt; command specifies an end-of-line character. When you use an end-of-line character in a search string, it represents a character that indicates the end of one line and the beginning of the next line. The editor searches for a string that occurs at the beginning or end of a line.&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;LINEND&amp;lt;/var&amp;gt; command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[SET] LINEND {&amp;lt;u&amp;gt;OFF&amp;lt;/u&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;char&amp;lt;/span&amp;gt;}&amp;lt;/p&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;char&amp;lt;/var&amp;gt; represents the end-of-line character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt; is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Suppose that you specify:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND #&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Then you use the pound sign (&amp;lt;tt&amp;gt;#&amp;lt;/tt&amp;gt;) in a search string:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /#PART&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor locates any line that begins with the letters &amp;lt;code&amp;gt;P A R T&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You must specify the end-of-line character at the start or end of a search string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To turn off the end-of-line character capability, enter:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LINEND OFF&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;LINEND OFF&amp;lt;/code&amp;gt;, none of the characters in the search strings specified in subsequent &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;REPLACE&amp;lt;/var&amp;gt; commands are considered end-of-line characters.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Combining special search characters===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify combinations of characters in the search string. For example, the following search string locates any string that contains HELP, followed by any number of characters, followed by ME:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP&amp;amp;amp;!ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;HELP123ABME&lt;br /&gt;
HELP ME&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Searching for a string (LOCATE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command searches for a particular string in the procedure or in a subset of the procedure. See [[#Specifying a string|Specifying a string]] for more information about string specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Two formats of the LOCATE command===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
There are two formats of the &amp;lt;var&amp;gt;LOCATE&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====With LOCATE keyword====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The first format is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[-][&amp;lt;b&amp;gt;LO&amp;lt;/b&amp;gt;CATE] /&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;[/ [IN]&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where the delimiting character (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; in the example above) can be any character not appearing in the string, with the exception of a blank character.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LO *ELEPHANT* IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify a range, you do not need to include a delimiter after the string. If you specify an alphabetic delimiter, include a space between the LOCATE or LO keyword and the delimiter. If the delimiter is nonalphabetic, the space is not required.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Without LOCATE keyword====&lt;br /&gt;
The second format, which does not require the LOCATE keyword, is as follows:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[-] /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where a slash (/) must precede the string. If you do not specify a range, you do not need to include a slash following the string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the full-screen editor cannot find a match for the specified string, it displays the following message:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;TARGET STRING NOT LOCATED&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching forward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search forward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The full-screen editor starts the search at the line following the current line and advances forward, stopping when it locates the string or reaches the end of the procedure. If the current line is the last line of the procedure, the full-screen editor wraps to the top of the procedure, begins the search at the top of the procedure, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Searching backward===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To search backward, enter one of the following formats:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-LOCATE /&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;[/ [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;-/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When you precede the command with a minus sign, the full-screen editor starts the search at the line preceding the current line and searches backward toward the beginning of the procedure, stopping when it locates the string or reaches the top of the procedure. If the current line is the top of the procedure, the full-screen editor wraps to the bottom of the procedure, begins the search at the bottom line, and ends at the current line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Replacing a string (REPLACE)==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The REPLACE command replaces a string in the procedure with a substitute string. REPLACE provides the following capabilities:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Displays each target string to verify the change before proceeding.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Changes more than one occurrence of a specified string in a single line. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the REPLACE command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;b&amp;gt;R&amp;lt;/b&amp;gt;EPLACE/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;/&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt; [&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; | *] [&amp;lt;b&amp;gt;V&amp;lt;/b&amp;gt;ERIFY [IN] &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you include the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;, VERIFY, or range options in the REPLACE command, specify the options in the order shown.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;R /GROUP/PERM GROUP/ * IN CURRENT TO TOP&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a string===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Specify strings as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;String to be searched for and changed (old string).&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 class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;New string to replace &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;. The new string need not be the same length as the old string.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use as a delimiter any nonblank character (/ in the example above) that does not appear in &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
string1&amp;lt;/var&amp;gt; or &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;. If you do not specify the number of occurrences, a VERIFY option, or a range, you do not need to include a delimiter after &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string2&amp;lt;/var&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controlling the number of strings to be replaced===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can replace all occurrences of a string or only the first occurrence in a line. The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification in the REPLACE command represents the number of occurrences of the search string (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;string1&amp;lt;/var&amp;gt;) to be replaced in each line. If you omit an &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; specification, only the first occurrence of the string is replaced in a line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify a value of *, all occurrences of the string are replaced in each line.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using the VERIFY option===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The VERIFY option verifies all string replacements before they are made. Each line that contains a string that matches the specified string is highlighted and is delimited on the scale line by the characters of the proper length, on the column scale line directly beneath the potential match. For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;lt;====&amp;amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The column scale must be turned on to display the scale line characters. The following prompt appears on the command line each time a string is matched:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;CHANGE?&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond with any of the following choices:&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;This choice...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;YES, Y, or Enter&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Changes the string&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;NO or N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not change the string&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;ALL&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Turns off the VERIFY option and makes all remaining changes&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;STOP or S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Terminates the REPLACE command&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;
If you enter any other response, the full-screen editor displays the &amp;lt;code&amp;gt;CHANGE&amp;lt;/code&amp;gt;? prompt again.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Specifying a range===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can specify a range of procedure lines to which the search applies. See [[#Specifying range targets|Specifying range targets]] for more information about using a range. See [[#Range target characters|Range target characters]] for a list of range specifications.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Inserting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can insert text several ways using the full-screen editor. Use the following commands to insert text:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;E&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Extends a line&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;th&amp;gt;I&lt;br /&gt;
&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts separate lines&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;th&amp;gt;I*&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Enters input mode&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;th&amp;gt;GET&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Inserts a saved procedure&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;
You can also insert text using the REPLACE command to substitute a string with additional text for an existing string (see [[#Specifying a string|Specifying a string]]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Alternatively, you can insert text by [[#Duplicating, copying, and moving text|duplicating, copying, and moving]] lines or blocks of text.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Extending a line===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The E (extend) prefix command inserts a physical line immediately following the line that contains the E, forming a logical line extension. The line is filled with the fill character (that is, blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill character]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting lines===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I (insert) prefix command  inserts one or more lines following the line containing the I. Unlike E lines, these lines are treated as separate lines, not as continuations of existing lines in the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the I prefix command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;I[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter I alone, the full-screen editor inserts one line following the line containing the I. If you enter I followed by a number, the full-screen editor inserts the specified number of lines. For example, I5 inserts 5 blank lines after the line that contains the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Inserted lines are filled with the fill character (blanks or nulls) specified in the FILL command. For more information about the FILL command and fill characters, see [[#Specifying a fill character|Specifying a fill charcter]].&amp;lt;/p&amp;gt; &lt;br /&gt;
 &lt;br /&gt;
===Specifying a fill character===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The FILL command specifies a fill character. When the full-screen editor displays a line of text, it pads the line on the right with either null or blank characters. The format of the FILL command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[SET] FILL {&amp;lt;u&amp;gt;NULL&amp;lt;/u&amp;gt; | BLANK}&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you specify &amp;lt;code&amp;gt;FILL NULL&amp;lt;/code&amp;gt;, the full-screen editor pads with null characters on the right. If you specify &amp;lt;code&amp;gt;FILL BLANK&amp;lt;/code&amp;gt;, the full-screen editor pads with blank characters on the right.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The character selected as the fill character is inserted in lines generated using the E (extend) and I (insert) prefix commands.&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 command line on the display screen is always filled with null characters, regardless of the specified fill character.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Entering input mode===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The I* prefix command places the full-screen editor in input mode. The line that contains I* becomes the current line and appears at the top of the screen. The rest of the screen is blank. Any lines following the I* line in the original procedure are not displayed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For input lines, the cursor appears in column 1 of the first blank line. You can now enter text. If you press Enter, the last line that you typed is moved to the top of the screen and the cursor appears on the next (blank) line. To exit from input mode, either press Enter twice without any intervening text editing, or enter any full-screen editor command on the command line.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Inserting a saved procedure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The GET command inserts a previously saved procedure after the current line. You can insert a procedure that is stored in either the default procedure file or in a file specified in the command (with the filespec option). The last line of the inserted procedure becomes the current line and is positioned at the center of the display screen.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Before you issue the GET command, position the cursor at the appropriate line. For example, if you want to add one procedure to the end of another, use the BOTTOM command to advance the cursor to the end of the procedure before the procedure is added.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Syntax====&lt;br /&gt;
&amp;lt;p&amp;gt;The format of the GET command is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;[IN &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt;] GET &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Where:&amp;lt;/p&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;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the combined procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group.&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format for filespec is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
ACCOUNT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If neither FILE nor GROUP is specified, FILE is the default.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name of the procedure to be inserted after the current line. This procedure can be stored in any Model 204 file that you currently have open.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Duplicating, copying, and moving text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can save keystrokes and reorganize text by using the full-screen editor commands for the following tasks:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Duplicating lines of text (&amp;amp;quot; or &amp;amp;quot;&amp;amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Copying lines of text (C or CC)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
Moving lines of text (M or MM)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Groups of lines are also referred to as blocks. You can also [[#Deleting and undeleting text|delete and undelete lines of text]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Duplicating lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can duplicate either one line or a block of lines.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating one or more lines====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate (&amp;amp;quot;) prefix command duplicates the line on which it is entered. The format of the duplicate command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;amp;quot;[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the line. If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor inserts the specified number of duplicate lines. For example, &amp;lt;code&amp;gt;&amp;amp;quot;5&amp;lt;/code&amp;gt; duplicates a line five times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
====Duplicating a block of text====&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The duplicate block (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;) prefix command duplicates a group of lines. Entering &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; duplicates the block of lines beginning with the line on which the first &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified and ending with the line on which the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; is specified. &lt;br /&gt;
&lt;br /&gt;
The format of this command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;&amp;amp;quot;&amp;amp;quot;[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of copies. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;, the full-screen editor inserts one copy of the block of lines. The block appears immediately following the line that contains the second &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; (the last line of the block). If you enter &amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt; followed by a number, the full-screen editor duplicates the block the specified number of times.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Copying lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The C (copy) prefix command copies one or more lines to the position indicated by the P (precedes) or F (follows) prefix target. If you specify P, the line(s) are inserted just before the line that contains the P. If you specify F, the lines are inserted just after the line that contains the F. For more information about prefix targets, see [[#Using targets with prefix commands|Using targets with prefix commands]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the C prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;C[&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;
&amp;lt;p&amp;gt;&lt;br /&gt;
Where &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; is the number of lines to copy. &lt;br /&gt;
&lt;br /&gt;
If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt;, the full-screen editor copies only the line that contains the C. If you enter &amp;lt;code&amp;gt;C&amp;lt;/code&amp;gt; followed by a number, the full-screen editor copies the specified number of lines, beginning with the line containing the C&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
When a line is copied, it is preserved in its original position as well as being duplicated in the new position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The CC (copy block) prefix command copies a group of lines without requiring you to count them. CC copies the block of lines that begins with the line on which the first CC is specified and that ends with the line on which the second CC is specified. The lines are copied to the position indicated by the P (precedes) or F (follows) prefix target, as discussed for C.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Moving lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The M (move) prefix command moves one or more lines to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]]. If you specify P, the line(s) are inserted just before the line containing the P. If you specify F, the line(s) are inserted just after the line that contains the F.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the M prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;M[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to move. &lt;br /&gt;
&lt;br /&gt;
If you enter M, the full-screen editor moves only the line that contains the M. If you enter M followed by a number, the full-screen editor moves the specified number of lines, beginning with the line that contains the M&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;. When a line is moved, it is automatically deleted from its original position.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The MM (move block) prefix command moves a group of lines without requiring you to count them. MM moves the block of lines that begins with the line on which the first MM is specified and that ends with the line on which the second MM is specified. The lines are moved to the position indicated by the P (precedes) or F (follows) [[#Using targets with prefix commands|prefix target]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Deleting and undeleting text==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 You can delete lines from a procedure, using the D or DD prefix commands. You can also retrieve the last entry that was deleted with the U prefix command. Groups of lines are also referred to as blocks.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Deleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
 The D (delete) prefix command deletes one or more lines from the procedure. &lt;br /&gt;
&lt;br /&gt;
The format of the D prefix command is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;D[&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt;]&amp;lt;/p&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;n&amp;lt;/var&amp;gt; is the number of lines to delete. &lt;br /&gt;
&lt;br /&gt;
If you enter D, the full-screen editor deletes only the line that contains the D. If you enter D followed by a number, the full-screen editor deletes the specified number of lines, beginning with the line that contains the D. If the number of lines specified in the D command exceeds the number remaining in the procedure, the full-screen editor deletes all lines from the line on which the D command is specified to the end of the procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When a line or set of lines is deleted, the lines are not immediately discarded; they are placed on the full-screen editor delete stack. Entries in this stack are deleted when the editing session is terminated. Each time a D command is executed, an entry is placed on the delete stack. A D&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;n&amp;lt;/var&amp;gt; command, which deletes several lines, causes a single entry that contains the specified block of lines to be placed on the stack. However, a series of contiguous lines, each containing a D command, is not accumulated into a single entry on the delete stack. You can [[#Undeleting lines or blocks|retrieve or undelete an entry]] by means of the U command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The DD (delete block) prefix command deletes a group of lines without requiring you to count them. DD deletes the block of lines that begins with the line on which the first DD is specified and that ends with the line on which the second DD is specified. The block is placed on the delete stack as a single entity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Undeleting lines or blocks===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The U (undelete) prefix command retrieves the last entry that was deleted (that is, placed on the delete stack) and inserts it after the line that contains the U.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2 id=&amp;quot;exit&amp;quot;&amp;gt;Exiting from the full-screen editor&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit from the full-screen editor or to save edited procedures, use the commands listed in the following table, which also lists the description of each command and where more information is located. When you exit from the full-screen editor, you are returned to the Model 204 command level.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;thJustBold&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;CAPTION&amp;gt;Exit and save commands&amp;lt;/CAPTION&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;head&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;This command...&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Performs this action...&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;th&amp;gt;END or EEND&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor and saves the edited procedures. The EEND command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&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;th&amp;gt;GO or GGO&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, saves the edited procedure, and includes (executes) the edited procedure. The GGO command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved. Under Model 204 7.8 and later, the GO command does not actually update the procedure in the file if it has not been modified since it was loaded or last saved.&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;th&amp;gt;QUIT&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Exits from the full-screen editor, might prompt if changes were made to the procedure, and does not save the edited procedure.&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;th&amp;gt;SAVE or SSAVE&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Does not exit from the full-screen editor, but saves the edited procedure. The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure should be saved even if the procedure has been changed by another user since it was loaded into the editor or last saved.&amp;lt;/td&amp;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;
For more information about exit and save commands, refer to the [[EDIT command]].&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Exiting from the editor and saving the procedure (END or EEND)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The END or EEND command exits from the full-screen editor and saves the edited procedure on disk. Specify the name under which the procedure is to be saved. You can store the procedure in either the default procedure file or in a file specified in the command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the END/EEND command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [END | EEND] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the default Model&amp;amp;nbsp;204 procedure file. The filespec can identify a Model&amp;amp;nbsp;204 file or a temporary or permanent group. The file specified by IN filespec must be open. &lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;[[{PERM | TEMP} GROUP] | &amp;lt;u&amp;gt;FILE&amp;lt;/u&amp;gt;] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;name&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example:&amp;lt;/p&amp;gt;&lt;br /&gt;
FILE PAYROLL&lt;br /&gt;
TEMP GROUP EMPINFO&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you do not specify either FILE or GROUP, FILE is assumed. For more information about files and groups, see the following pages:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: File]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Permanent group]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[CREATE command: Temporary group]]&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;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter END, the procedure is saved under the name of the output procedure specified when you invoked the editor. The procedure is stored in the Model 204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The EEND command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. EEND would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Saving and including the procedure (GO or GGO)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Like the END command, the GO or GGO command exits from the full-screen editor and saves the edited procedure. Unlike END, GO automatically performs an implicit Model 204 [[INCLUDE command]], which executes the Model 204 commands in the saved procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The format of the GO/GGO command is as follows:&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;filespec&amp;lt;/span&amp;gt;] [GO | GGO] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
GO command options are identical to END command options. If you enter GO, the full-screen editor saves the procedure under the name of the output procedure specified when you invoked the full-screen editor. The procedure is stored in the Model 204 default procedure file. Under Model 204 7.8 and later, the procedure won&#039;t actually be updated by the GO command if it has not been modified in the editor since it was loaded or last saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The GGO command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. GGO would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
===Exiting from the editor without saving the edited procedure (QUIT)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The QUIT command exits from the full-screen editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The syntax is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you change the procedure during the current editing session and exit by entering QUIT, the full-screen editor displays the following message, which indicates that the procedure was changed and requests that you to enter QUIT again, if you want to exit the procedure without saving the edits:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE HAS BEEN MODIFIED, ENTER &#039;QUIT&#039; TO VERIFY.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Respond in one of the following ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Enter QUIT on the command line to confirm that changes are not to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ignore the prompt and continue editing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To exit without receiving the warning prompt, enter the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;QUIT QUIT&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you use QUIT to exit from a file that was examined but not modified, the full-screen editor does not prompt before exiting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can also press PF3 to quit. Your edits are not saved.&amp;lt;/p&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
===Saving the procedure (SAVE or SSAVE)===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The SAVE or SSAVE command saves the edited procedure or a subset of that procedure under the specified name (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;&lt;br /&gt;
procname&amp;lt;/var&amp;gt;) or the default procedure name. Unlike the END, GO, and QUIT commands, SAVE does not exit from the editor. To ensure against the loss of changes due to a system failure, issue the SAVE command periodically while you edit a procedure.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the SAVE/SSAVE command is as follows:&amp;lt;/p&amp;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;filespec&amp;lt;/span&amp;gt;] [SAVE | SSAVE] [&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt; | &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;procname&amp;lt;/span&amp;gt;] [[IN] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;range&amp;lt;/span&amp;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;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;filespec&amp;lt;/var&amp;gt; is the name of the procedure file in which the edited procedure is to be stored. This file is used in place of the Model 204 default procedure file. The filespec can identify a Model 204 file or a temporary or permanent group. The file specified with IN filespec must be open. It has the same syntax as described for the END command.&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;procname&amp;lt;/var&amp;gt; is the name under which the edited procedure is to be saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;range is the range to be saved. Note that if you specify range, you must also specify procname. You can include any of the [[#Range target characters|range specifications]]. If you omit a range, the entire procedure is saved.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If you enter SAVE alone, the full-screen editor saves the entire procedure under the name of the output procedure specified when the editor was invoked. The procedure is stored in the Model&amp;amp;nbsp;204 default procedure file.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The SSAVE command is only available under Model 204 7.8 and later and indicates that the procedure is to be saved even if another user has updated the procedure in the file since the procedure was loaded or last saved. SSAVE would result in that other user&#039;s changes being overwritten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Procedure update control===&lt;br /&gt;
&amp;lt;p&amp;gt;Before Model 204 7.8, the editor would hold a share lock on the procedure being editing during the edit session. This would ensure that no other user could update the procedure underneath the user in the editor. Unfortunately, this would also block updates in the common case where one is just browsing a procedure in the editor and leave a lock on a procedure if the editing user forgets to exit the editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Under Model 204 7.8 and later, no lock is held on the procedure during the edit session. Instead, if the user attempts to save the procedure via the &amp;lt;var&amp;gt;SAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;END&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GO&amp;lt;/var&amp;gt; command, the timestamp if the procedure in the output file is compared with the timestamp when the procedure was loaded or last saved. If the timestamp no longer matches, it means that another user has modified the procedure and saving the procedure would overwrite those changes. In this case the editing user is warned and the save is not performed. If the editing user wishes to force the save, anyway, the user can issue the &amp;lt;var&amp;gt;SSAVE&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;EEND&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;GGO&amp;lt;/var&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[Category: Model 204 editor]]&lt;/div&gt;</summary>
		<author><name>Abe</name></author>
	</entry>
</feed>