<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://m204wiki.rocketsoftware.com/index.php?action=history&amp;feed=atom&amp;title=Horizon_SOUL_sample_programs</id>
	<title>Horizon SOUL sample programs - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://m204wiki.rocketsoftware.com/index.php?action=history&amp;feed=atom&amp;title=Horizon_SOUL_sample_programs"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;action=history"/>
	<updated>2026-04-27T12:24:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;diff=81017&amp;oldid=prev</id>
		<title>ELowell: /* Program */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;diff=81017&amp;oldid=prev"/>
		<updated>2015-09-30T20:37:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Program&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:37, 30 September 2015&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l203&quot;&gt;Line 203:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 203:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Program===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Program===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE SERVER&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE SERVER&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;BEGIN&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;BEGIN&amp;lt;nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;******************************************************************&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;******************************************************************&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***   S A M P L E  H O R I Z O N  S E R V E R  P R O G R A M   ***&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***   S A M P L E  H O R I Z O N  S E R V E R  P R O G R A M   ***&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l225&quot;&gt;Line 225:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 224:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***        DATA AND SUBROUTINES        ***&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;***        DATA AND SUBROUTINES        ***&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;******************************************&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;******************************************&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  %CID IS STRING LEN 8&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  %CID IS STRING LEN 8&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  %RECVMSG IS STRING LEN 255&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  %RECVMSG IS STRING LEN 255&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l249&quot;&gt;Line 249:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 247:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RECEIVE_LOOP:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RECEIVE_LOOP:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RECEIVE %RECVMSG FROM %CID RESULT %RESULT&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RECEIVE %RECVMSG FROM %CID RESULT %RESULT&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l262&quot;&gt;Line 262:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 259:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** FALL THROUGH WHEN ADVICE=1 (RECEIVED DATA) ***&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** FALL THROUGH WHEN ADVICE=1 (RECEIVED DATA) ***&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;RECEIVED FROM PARTNER:&amp;#039; AND %RECVMSG&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;RECEIVED FROM PARTNER:&amp;#039; AND %RECVMSG&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l268&quot;&gt;Line 268:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 264:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SEND:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SEND:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SEND &amp;#039;HELLO, SAILOR!&amp;#039; TO %CID REQSEND %REQSEND&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;SEND &amp;#039;HELLO, SAILOR!&amp;#039; TO %CID REQSEND %REQSEND&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l277&quot;&gt;Line 277:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 272:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** FALL THROUGH WHEN ADVICE=1 (SEND SUCCEEDED) ***&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** FALL THROUGH WHEN ADVICE=1 (SEND SUCCEEDED) ***&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO RECEIVE_LOOP&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO RECEIVE_LOOP&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l285&quot;&gt;Line 285:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 279:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_CONFIRM:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_CONFIRM:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER REQUESTED CONFIRMATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER REQUESTED CONFIRMATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l297&quot;&gt;Line 297:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 290:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** FALL THROUGH IF ADVICE = 1 (SEND ERROR SUCCEEDED) ***&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** FALL THROUGH IF ADVICE = 1 (SEND ERROR SUCCEEDED) ***&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, -&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, -&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l308&quot;&gt;Line 308:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 299:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_SIGNAL:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_SIGNAL:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER SENT SIGNAL - CLOSING CONVERSATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER SENT SIGNAL - CLOSING CONVERSATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, 	-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, 	-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l321&quot;&gt;Line 321:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 309:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_ERROR:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_ERROR:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER SENT ERROR - CLOSING CONVERSATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER SENT ERROR - CLOSING CONVERSATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, 	-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, 	-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l334&quot;&gt;Line 334:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 319:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_CLOSE:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;HANDLE_CLOSE:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER CLOSED CONVERSATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** PARTNER CLOSED CONVERSATION ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CLOSE PROCESS %CID&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** IF CLOSE FAILS, JUST GIVE UP&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, 	-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO (END, 	-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l347&quot;&gt;Line 347:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 329:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;BOGUS:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;BOGUS:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** STAT_CHECK RETURNED AN UNDEFINED ADVICE CODE ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** STAT_CHECK RETURNED AN UNDEFINED ADVICE CODE ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO END&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO END&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ABORT:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ABORT:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** STAT_CHECK ADVISES THAT WE ABORT ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;AUDIT &amp;#039;*** STAT_CHECK ADVISES THAT WE ABORT ***&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO END&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;JUMP TO END&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;END:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;END:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** ALWAYS SET THE APSY COMMUNICATION VARIABLE BEFORE LEAVING&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*** ALWAYS SET THE APSY COMMUNICATION VARIABLE BEFORE LEAVING&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ELowell</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;diff=81016&amp;oldid=prev</id>
		<title>ELowell: /* Subroutine to Check Horizon Return Codes */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;diff=81016&amp;oldid=prev"/>
		<updated>2015-09-30T20:08:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Subroutine to Check Horizon Return Codes&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;amp;diff=81016&amp;amp;oldid=81015&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>ELowell</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;diff=81015&amp;oldid=prev</id>
		<title>ELowell: Created page with &quot;==Overview== This topic presents sample Horizon User Language (SOUL) client and server programs, a subroutine to check Horizon return codes, and an example of remote file upda...&quot;</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Horizon_SOUL_sample_programs&amp;diff=81015&amp;oldid=prev"/>
		<updated>2015-09-30T19:58:26Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==Overview== This topic presents sample Horizon User Language (SOUL) client and server programs, a subroutine to check Horizon return codes, and an example of remote file upda...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Overview==&lt;br /&gt;
This topic presents sample Horizon User Language (SOUL) client and server programs, a subroutine to check Horizon return codes, and an example of remote file updating. &lt;br /&gt;
==Client Program==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example is a small client program that establishes a conversation with a partner process, sends a message to the partner, receives messages from the partner, and ends the conversation.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The STAT_CHECK subroutine is used after each HORIZON statement to determine the appropriate subsequent action for the program to take. Subroutine STAT_CHECK is found in [[#Subroutine to check Horizon return codes|Subroutine to check Horizon return codes]].   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The HORIZON LINK, PROCESSGROUP, and PROCESS definition commands are included as comments at the beginning of the procedure, for convenient reference.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Companion program===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[#Server sample|Server sample]] has an example of a server program that can communicate with the client program shown here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program===&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE CLIENT&lt;br /&gt;
BEGIN&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
******************************************************************&lt;br /&gt;
***   S A M P L E  H O R I Z O N  C L I E N T  P R O G R A M   ***&lt;br /&gt;
******************************************************************&lt;br /&gt;
*****************************************&lt;br /&gt;
***      NETWORK DEFINITIONS          ***&lt;br /&gt;
*****************************************&lt;br /&gt;
*&lt;br /&gt;
* DEFINE LINK VIRGINIA WITH SCOPE=SYSTEM LOCALID=FREDBURG  -&lt;br /&gt;
*  INBUFSIZE=2048 TRANSPORT=VTAM PROTOCOL=LU62 SESSIONS=4&lt;br /&gt;
*&lt;br /&gt;
* DEFINE PROCESSGROUP BOULDER WITH SCOPE=SYSTEM OUTLIMIT=4  -&lt;br /&gt;
*  INLIMIT=0 REMOTEID=COLORADO LINK=VIRGINIA&lt;br /&gt;
*&lt;br /&gt;
* DEFINE PROCESS WEEKEND WITH SCOPE=SYSTEM PARTNER=SOMEFUN  -&lt;br /&gt;
*  DESTINATION=(BOULDER,FAC,MOAB,ARCHES) DATALEN=500&lt;br /&gt;
*&lt;br /&gt;
******************************************&lt;br /&gt;
***        DATA AND SUBROUTINES        ***&lt;br /&gt;
******************************************&lt;br /&gt;
&lt;br /&gt;
 %CID IS STRING LEN 8&lt;br /&gt;
 %RECVMSG IS STRING LEN 255&lt;br /&gt;
 %RESULT IS STRING LEN 15&lt;br /&gt;
 %REQSEND IS FLOAT&lt;br /&gt;
 %ADVICE IS FLOAT&lt;br /&gt;
&lt;br /&gt;
 %CID = &amp;#039;MADAME&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 INCLUDE STAT_CHECK&lt;br /&gt;
&lt;br /&gt;
***************************************&lt;br /&gt;
***        MAIN PROGRAM             ***&lt;br /&gt;
***************************************&lt;br /&gt;
&lt;br /&gt;
OPEN PROCESS WEEKEND CID %CID AT FAC&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_OPEN, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (ABORT) %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH WHEN ADVICE=1 (OPEN SUCCEEDED) ***&lt;br /&gt;
&lt;br /&gt;
SEND &amp;#039;HELLO, MADAME!&amp;#039; TO %CID REQSEND %REQSEND&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_SEND, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (ABORT,	-&lt;br /&gt;
HANDLE_ERROR, -&lt;br /&gt;
HANDLE_SIGNAL)   %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH WHEN ADVICE=1 (SEND SUCCEEDED) ***&lt;br /&gt;
&lt;br /&gt;
RECEIVE_LOOP:&lt;br /&gt;
&lt;br /&gt;
RECEIVE %RECVMSG FROM %CID RESULT %RESULT&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_RECEIVE, %RESULT, %REQSEND,   -&lt;br /&gt;
  %ADVICE)&lt;br /&gt;
JUMP TO (ABORT, -&lt;br /&gt;
HANDLE_ERROR,-&lt;br /&gt;
BOGUS, -&lt;br /&gt;
SEND, -&lt;br /&gt;
HANDLE_CLOSE, -&lt;br /&gt;
HANDLE_CONFIRM)   %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH WHEN ADVICE=1 (RECEIVED DATA) ***&lt;br /&gt;
&lt;br /&gt;
 PRINT &amp;#039;RECEIVED FROM PARTNER:&amp;#039; AND %RECVMSG&lt;br /&gt;
&lt;br /&gt;
 JUMP TO RECEIVE_LOOP&lt;br /&gt;
&lt;br /&gt;
SEND:&lt;br /&gt;
&lt;br /&gt;
 SEND &amp;#039;GOODBYE, MADAME!&amp;#039; TO %CID REQSEND %REQSEND&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_SEND, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (ABORT,	-&lt;br /&gt;
HANDLE_ERROR, -&lt;br /&gt;
HANDLE_SIGNAL)   %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH WHEN ADVICE=1 (SEND SUCCEEDED) ***&lt;br /&gt;
&lt;br /&gt;
CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (END, -&lt;br /&gt;
ABORT, -&lt;br /&gt;
HANDLE_ERROR)   %ADVICE&lt;br /&gt;
&lt;br /&gt;
**************************************************&lt;br /&gt;
***         EXCEPTION HANDLERS                 ***&lt;br /&gt;
**************************************************&lt;br /&gt;
&lt;br /&gt;
HANDLE_CONFIRM:&lt;br /&gt;
&lt;br /&gt;
 PRINT &amp;#039;*** PARTNER REQUESTED CONFIRMATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 SEND ERROR TO %CID REQSEND %REQSEND&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK(%CID, %HRZN_SEND_ERROR, %RESULT, %REQSEND,   -&lt;br /&gt;
  %ADVICE)&lt;br /&gt;
JUMP TO (ABORT, -&lt;br /&gt;
BOGUS, 	-&lt;br /&gt;
ABORT)   %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH IF ADVICE = 1 (SEND ERROR SUCCEEDED) ***&lt;br /&gt;
&lt;br /&gt;
 CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILED, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
JUMP TO (END, -&lt;br /&gt;
END, -&lt;br /&gt;
END)   %ADVICE&lt;br /&gt;
&lt;br /&gt;
HANDLE_SIGNAL:&lt;br /&gt;
&lt;br /&gt;
 PRINT &amp;#039;*** PARTNER SENT SIGNAL - CLOSING CONVERSATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 	            CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILED, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
JUMP TO (END, -&lt;br /&gt;
END, -&lt;br /&gt;
END)   %ADVICE&lt;br /&gt;
&lt;br /&gt;
HANDLE_ERROR:&lt;br /&gt;
&lt;br /&gt;
 PRINT &amp;#039;*** PARTNER SENT ERROR - CLOSING CONVERSATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILED, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
JUMP TO (END, -&lt;br /&gt;
END, -&lt;br /&gt;
END)   %ADVICE&lt;br /&gt;
&lt;br /&gt;
HANDLE_CLOSE:&lt;br /&gt;
&lt;br /&gt;
 PRINT &amp;#039;*** PARTNER CLOSED CONVERSATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILED, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
JUMP TO (END, -&lt;br /&gt;
END, -&lt;br /&gt;
END)   %ADVICE&lt;br /&gt;
&lt;br /&gt;
BOGUS:&lt;br /&gt;
&lt;br /&gt;
 PRINT &amp;#039;*** STAT_CHECK RETURNED AN UNDEFINED ADVICE CODE ***&amp;#039;&lt;br /&gt;
 JUMP TO END&lt;br /&gt;
&lt;br /&gt;
ABORT:&lt;br /&gt;
&lt;br /&gt;
 PRINT &amp;#039;*** STAT_CHECK ADVISES THAT WE ABORT ***&amp;#039;&lt;br /&gt;
 JUMP TO END&lt;br /&gt;
&lt;br /&gt;
END: END&lt;br /&gt;
END PROCEDURE &amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Server Sample==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following example is a server program that receives messages from a partner program and sends back a message to the partner, repeating this sequence until the partner ends the conversation.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The STAT_CHECK subroutine is used after each HORIZON statement to determine the appropriate subsequent action for the program to take. Subroutine STAT_CHECK is found in [[#Subroutine to check Horizon return codes|Subroutine to check Horizon return codes]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The HORIZON LINK, PROCESSGROUP, and PROCESS definition commands are included as comments at the beginning of the procedure for convenient reference.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In this example, the server program is invoked using the Remote Procedure Invocation (RPI) subsystem. See [[Horizon SOUL interface#Application testing with the RPI subsystem|Application testing with the RPI subsystem]].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Companion program===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[#Client program|Client program]] has an example of a client program that can communicate with the server program shown here.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Program===&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE SERVER&lt;br /&gt;
BEGIN&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
******************************************************************&lt;br /&gt;
***   S A M P L E  H O R I Z O N  S E R V E R  P R O G R A M   ***&lt;br /&gt;
******************************************************************&lt;br /&gt;
******************************************&lt;br /&gt;
***         NETWORK DEFINITIONS        ***&lt;br /&gt;
******************************************&lt;br /&gt;
*&lt;br /&gt;
* DEFINE LINK BOULDER WITH SCOPE=SYSTEM LOCALID=COLORADO     -&lt;br /&gt;
*  INBUFSIZE=2048 TRANSPORT=VTAM PROTOCOL=LU62 SESSIONS=4&lt;br /&gt;
*&lt;br /&gt;
* DEFINE PROCESSGROUP VIRGINIA WITH SCOPE=SYSTEM OUTLIMIT=0  -&lt;br /&gt;
*  INLIMIT=4 REMOTEID=FREDBURG LINK=BOULDER LOGIN=NOTRUST    -&lt;br /&gt;
*  GUESTUSER=REJECT&lt;br /&gt;
*&lt;br /&gt;
* DEFINE PROCESS SOMEFUN WITH SCOPE=SYSTEM SUBSYSTEM=RPI     -&lt;br /&gt;
*  FROM=(VIRGINIA) DATALEN=500 SUBSYSPARM=&amp;#039;MYFILE SERVER OPEN&amp;#039;&lt;br /&gt;
*&lt;br /&gt;
******************************************&lt;br /&gt;
***        DATA AND SUBROUTINES        ***&lt;br /&gt;
******************************************&lt;br /&gt;
&lt;br /&gt;
 %CID IS STRING LEN 8&lt;br /&gt;
 %RECVMSG IS STRING LEN 255&lt;br /&gt;
 %RESULT IS STRING LEN 15&lt;br /&gt;
 %REQSEND IS FLOAT&lt;br /&gt;
 %ADVICE IS FLOAT&lt;br /&gt;
&lt;br /&gt;
 %CID = &amp;#039;SAILOR&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 INCLUDE STAT_CHECK&lt;br /&gt;
&lt;br /&gt;
******************************************&lt;br /&gt;
***            MAIN PROGRAM            ***&lt;br /&gt;
******************************************&lt;br /&gt;
OPEN PROCESS SOMEFUN CID %CID ACCEPT&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_OPEN, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (ABORT) %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH WHEN ADVICE=1 (OPEN SUCCEEDED) ***&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;CONVERSATION HAS BEGUN&amp;#039;&lt;br /&gt;
&lt;br /&gt;
RECEIVE_LOOP:&lt;br /&gt;
&lt;br /&gt;
RECEIVE %RECVMSG FROM %CID RESULT %RESULT&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_RECEIVE, %RESULT, %REQSEND,  -&lt;br /&gt;
  %ADVICE)&lt;br /&gt;
JUMP TO (ABORT, -&lt;br /&gt;
HANDLE_ERROR, 	-&lt;br /&gt;
BOGUS, 	-&lt;br /&gt;
SEND, 	-&lt;br /&gt;
HANDLE_CLOSE, 	-&lt;br /&gt;
HANDLE_CONFIRM) %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH WHEN ADVICE=1 (RECEIVED DATA) ***&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;RECEIVED FROM PARTNER:&amp;#039; AND %RECVMSG&lt;br /&gt;
&lt;br /&gt;
JUMP TO RECEIVE_LOOP&lt;br /&gt;
&lt;br /&gt;
SEND:&lt;br /&gt;
&lt;br /&gt;
SEND &amp;#039;HELLO, SAILOR!&amp;#039; TO %CID REQSEND %REQSEND&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_SEND, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (ABORT, -&lt;br /&gt;
HANDLE_ERROR, 	-&lt;br /&gt;
HANDLE_SIGNAL) %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH WHEN ADVICE=1 (SEND SUCCEEDED) ***&lt;br /&gt;
&lt;br /&gt;
JUMP TO RECEIVE_LOOP&lt;br /&gt;
&lt;br /&gt;
******************************************&lt;br /&gt;
***         EXCEPTION HANDLERS         ***&lt;br /&gt;
******************************************&lt;br /&gt;
&lt;br /&gt;
HANDLE_CONFIRM:&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;*** PARTNER REQUESTED CONFIRMATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
SEND ERROR TO %CID REQSEND %REQSEND&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK(%CID, %HRZN_SEND_ERROR, %RESULT, %REQSEND,  -&lt;br /&gt;
  %ADVICE)&lt;br /&gt;
JUMP TO (ABORT, -&lt;br /&gt;
BOGUS, 	-&lt;br /&gt;
ABORT)  %ADVICE - 1&lt;br /&gt;
&lt;br /&gt;
*** FALL THROUGH IF ADVICE = 1 (SEND ERROR SUCCEEDED) ***&lt;br /&gt;
&lt;br /&gt;
CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILS, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (END, -&lt;br /&gt;
END, -&lt;br /&gt;
END) %ADVICE&lt;br /&gt;
&lt;br /&gt;
HANDLE_SIGNAL:&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;*** PARTNER SENT SIGNAL - CLOSING CONVERSATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILS, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (END, 	-&lt;br /&gt;
END, 	-&lt;br /&gt;
END)  %ADVICE&lt;br /&gt;
&lt;br /&gt;
HANDLE_ERROR:&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;*** PARTNER SENT ERROR - CLOSING CONVERSATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILS, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (END, 	-&lt;br /&gt;
END, 	-&lt;br /&gt;
END)  %ADVICE&lt;br /&gt;
&lt;br /&gt;
HANDLE_CLOSE:&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;*** PARTNER CLOSED CONVERSATION ***&amp;#039;&lt;br /&gt;
&lt;br /&gt;
CLOSE PROCESS %CID&lt;br /&gt;
&lt;br /&gt;
*** IF CLOSE FAILS, JUST GIVE UP&lt;br /&gt;
&lt;br /&gt;
CALL STAT_CHECK (%CID, %HRZN_CLOSE, %RESULT, %REQSEND, %ADVICE)&lt;br /&gt;
JUMP TO (END, 	-&lt;br /&gt;
END, 	-&lt;br /&gt;
END)  %ADVICE&lt;br /&gt;
&lt;br /&gt;
BOGUS:&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;*** STAT_CHECK RETURNED AN UNDEFINED ADVICE CODE ***&amp;#039;&lt;br /&gt;
JUMP TO END&lt;br /&gt;
&lt;br /&gt;
ABORT:&lt;br /&gt;
&lt;br /&gt;
AUDIT &amp;#039;*** STAT_CHECK ADVISES THAT WE ABORT ***&amp;#039;&lt;br /&gt;
JUMP TO END&lt;br /&gt;
&lt;br /&gt;
END:&lt;br /&gt;
&lt;br /&gt;
*** ALWAYS SET THE APSY COMMUNICATION VARIABLE BEFORE LEAVING&lt;br /&gt;
&lt;br /&gt;
%X = $SETG(&amp;#039;COMM&amp;#039;,&amp;#039;EXIT&amp;#039;)&lt;br /&gt;
END&lt;br /&gt;
END PROCEDURE &amp;lt;/nowiki&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Subroutine to Check Horizon Return Codes==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following subroutine can be used in Horizon User Language (SOUL) programs to simplify the checking of the status information that is set by each HORIZON statement. The subroutine condenses the large number of combinations of $STATUS codes, RESULT codes, and so on into a small set of recommended actions for the program: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Continue normally.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminate immediately.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Respond to partner&amp;#039;s SEND ERROR.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Respond to partner&amp;#039;s SIGNAL PROCESS.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Start to SEND.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Partner has closed conversation.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Respond to partner&amp;#039;s CONFIRM. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;No more data expected. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Expected data has not arrived. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Refer to the [[#Client program|client]] and [[#Server progrma|server]] program samples for illustrations of how the subroutine is to be used.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subroutine===&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PROCEDURE STAT_CHECK &amp;lt;nowiki&amp;gt;*************************************************************************&lt;br /&gt;
&lt;br /&gt;
SUBROUTINE STAT_CHECK (	%PROCESS IS STRING LEN 10 INPUT	-&lt;br /&gt;
%STATEMENT IS FLOAT INPUT, 	-&lt;br /&gt;
%RESULT IS STRING LEN 15 INPUT, -&lt;br /&gt;
%REQSEND IS FLOAT INPUT, 	-&lt;br /&gt;
%ADVICE IS FLOAT OUTPUT )&lt;br /&gt;
&lt;br /&gt;
**********************************************************************&lt;br /&gt;
* STAT_CHECK SHOULD BE CALLED AFTER EACH HORIZON STATEMENT.          *&lt;br /&gt;
* IT EVALUATES THE RELEVANT STATUS INFORMATION THAT WAS SET BY       *&lt;br /&gt;
* THE STATEMENT AND RETURNS A RECOMMENDED PROGRAM-ACTION CODE.       *&lt;br /&gt;
*                                                                    *&lt;br /&gt;
* %PROCESS  -- THE CONVERSATION ID (CID) OF THE PROCESS              *&lt;br /&gt;
* %STATEMENT-- THE HORIZON STATEMENT JUST ISSUED                     *&lt;br /&gt;
*   1 = OPEN (O)          8 = SEND (S)                               *&lt;br /&gt;
*   2 = CONFIRM (CF)      9 = SEND ERROR (SE)                        *&lt;br /&gt;
*   3 = CONFIRMED (CFD)  10 = SIGNAL (SP)                            *&lt;br /&gt;
*   4 = CLOSE (C)        11 = INVITE (I)                             *&lt;br /&gt;
*   5 = FLUSH (F)        12 = TEST (T)                               *&lt;br /&gt;
*   6 = QUERY (Q)        13 = WAIT (W)                               *&lt;br /&gt;
*   7 = RECEIVE (R)                                                  *&lt;br /&gt;
* %RESULT   -- THE RESULT VARIABLE FROM THE &amp;#039;RECEIVE&amp;#039; STATEMENT      *&lt;br /&gt;
* %REQSEND  -- THE REQSEND VARIABLE FROM &amp;#039;SEND&amp;#039; OR &amp;#039;SEND ERROR&amp;#039;      *&lt;br /&gt;
* %ADVICE   -- (OUTPUT) THE RECOMMENDED ACTION TO TAKE.  USE THE     *&lt;br /&gt;
*     FOLLOWING CHART TO DETERMINE WHICH ADVICE CODES                *&lt;br /&gt;
*     STAT_CHECK CAN RETURN FOR DIFFERENT HORIZON                    *&lt;br /&gt;
*     STATEMENTS:                                                    *&lt;br /&gt;
*                                                                    *&lt;br /&gt;
* - - - S T A T E M E N T S - - -    - - A D V I C E  C O D E S - -  *&lt;br /&gt;
*                                                                    *&lt;br /&gt;
* O CF CFD C F I Q R S SE SP T W                                     *&lt;br /&gt;
* X X  X   X X X X X X  X  X X X    1 - CONTINUE                     *&lt;br /&gt;
* X X  X   X X X X X X  X  X X X    2 - ABORT                        *&lt;br /&gt;
* - X  -   X - X - X X  -  - - -    3 - GOT &amp;#039;SEND ERROR&amp;#039;             *&lt;br /&gt;
* - X  -   - - - - - X  X  - - -    4 - GOT &amp;#039;SIGNAL PROCESS&amp;#039;         *&lt;br /&gt;
* - -  X   - - - - X -  -  - - -    5 - TRANSITION TO &amp;#039;SEND&amp;#039;         *&lt;br /&gt;
* - -  X   - - X - X -  -  - - -    6 - PARTNER CLOSED CONVERSATION  *&lt;br /&gt;
* - -  -   - - - - X -  -  - - -    7 - TRANSITION TO &amp;#039;CONFIRM&amp;#039;      *&lt;br /&gt;
* - -  -   - - - - - -  -  - X X    8 - NO OUTSTANDING INVITES       *&lt;br /&gt;
* - -  -   - - - - - -  -  - X -    9 - NO RECEIPTS YET              *&lt;br /&gt;
**********************************************************************&lt;br /&gt;
&lt;br /&gt;
%STATUS = $STATUS&lt;br /&gt;
%STATUSD = $STATUSD&lt;br /&gt;
&lt;br /&gt;
JUMP TO (O,CF,CFD,C,F,Q,R,S,SE,SP,I,T,W) %STATEMENT&lt;br /&gt;
&lt;br /&gt;
X:  **********************************&lt;br /&gt;
    *      INVALID STATEMENT CODE    *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
    JUMP TO ABORT&lt;br /&gt;
&lt;br /&gt;
O:  **********************************&lt;br /&gt;
    *          OPEN PROCESS          *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
    IF %STATUS = 0 THEN&lt;br /&gt;
    JUMP TO CONTINUE&lt;br /&gt;
    ELSE&lt;br /&gt;
    JUMP TO ABORT&lt;br /&gt;
    END IF&lt;br /&gt;
&lt;br /&gt;
CF: **********************************&lt;br /&gt;
    *            CONFIRM             *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
    *** FIRST SEE IF SIGNAL RECEIVED FROM PARTNER&lt;br /&gt;
&lt;br /&gt;
 IF %REQSEND = 1 THEN&lt;br /&gt;
  JUMP TO REQUEST_TO_SEND&lt;br /&gt;
 ELSEIF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
&lt;br /&gt;
  *** CHECK FOR 2/2 (PARTNER RESPONDED TO CONFIRM WITH SEND ERROR)&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %STATUS = 2 AND %STATUSD = 2 THEN&lt;br /&gt;
  JUMP TO SEND_ERROR&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
CFD: **********************************&lt;br /&gt;
     *           CONFIRMED            *&lt;br /&gt;
     **********************************&lt;br /&gt;
&lt;br /&gt;
 %S IS STRING LEN 8&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
&lt;br /&gt;
*** SEE WHAT THE CONVERSATION STATE HAS CHANGED TO&lt;br /&gt;
&lt;br /&gt;
  QUERY PROCESS %PROCESS STATE %S&lt;br /&gt;
  IF %S = &amp;#039;CLOSE&amp;#039; THEN&lt;br /&gt;
   JUMP TO CLOSE_BY_REMOTE&lt;br /&gt;
  ELSEIF %S = &amp;#039;SEND&amp;#039; THEN&lt;br /&gt;
   JUMP TO SEND&lt;br /&gt;
  ELSE&lt;br /&gt;
   JUMP TO CONTINUE&lt;br /&gt;
  END IF&lt;br /&gt;
&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
C:  **********************************&lt;br /&gt;
    *         CLOSE PROCESS          *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
&lt;br /&gt;
     *** CHECK FOR 2/2 (PARTNER RESPONDED TO CONFIRM WITH SEND ERROR)&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %STATUS = 2 AND %STATUSD = 2 THEN&lt;br /&gt;
  JUMP TO SEND_ERROR&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
F:  **********************************&lt;br /&gt;
    *         FLUSH PROCESS          *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
Q:  **********************************&lt;br /&gt;
    *         QUERY PROCESS          *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
R:  **********************************&lt;br /&gt;
    *            RECEIVE             *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSEIF %STATUS = 1 THEN&lt;br /&gt;
&lt;br /&gt;
  *** ANALYZE THE RESULT VARIABLE FOR APPROPRIATE ACTION&lt;br /&gt;
&lt;br /&gt;
  *** DATA TRUNCATED OR INCOMPLETE - ASSUME THIS ISN&amp;#039;T DESIRABLE&lt;br /&gt;
&lt;br /&gt;
  IF %RESULT = &amp;#039;DATA TRUNCATED&amp;#039; THEN&lt;br /&gt;
   JUMP TO ABORT&lt;br /&gt;
  ELSEIF %RESULT = &amp;#039;DATA INCOMPLETE&amp;#039; THEN&lt;br /&gt;
   JUMP TO ABORT&lt;br /&gt;
  ELSEIF %RESULT = &amp;#039;SEND&amp;#039; THEN&lt;br /&gt;
   JUMP TO SEND&lt;br /&gt;
&lt;br /&gt;
   *** ALL FLAVORS OF CONFIRM STATE - TELL USER TO DO &amp;#039;CONFIRMED&amp;#039;.&lt;br /&gt;
    *** AFTERWARD, STAT_CHECK WILL SAY &amp;#039;SEND&amp;#039;, &amp;#039;CLOSE&amp;#039;, ETC.&lt;br /&gt;
&lt;br /&gt;
  ELSEIF %RESULT = &amp;#039;CONFIRM&amp;#039; THEN&lt;br /&gt;
   JUMP TO CONFIRM&lt;br /&gt;
  ELSEIF %RESULT = &amp;#039;CONFIRM SEND&amp;#039; THEN&lt;br /&gt;
   JUMP TO CONFIRM&lt;br /&gt;
  ELSEIF %RESULT = &amp;#039;CONFIRM CLOSE&amp;#039; THEN&lt;br /&gt;
   JUMP TO CONFIRM&lt;br /&gt;
  ELSE&lt;br /&gt;
   JUMP TO ABORT&lt;br /&gt;
  END IF&lt;br /&gt;
&lt;br /&gt;
   *** CHECK FOR 2/2 (PARTNER RESPONDED TO CONFIRM WITH SEND ERROR)&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %STATUS = 2 AND %STATUSD = 2 THEN&lt;br /&gt;
  JUMP TO SEND_ERROR&lt;br /&gt;
&lt;br /&gt;
   *** CHECK FOR 4/0 (INDICATES PARTNER ENDED CONVERSATION NORMALLY)&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %STATUS = 4 AND %STATUSD = 0 THEN&lt;br /&gt;
  JUMP TO CLOSE_BY_REMOTE&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
S:  **********************************&lt;br /&gt;
    *              SEND              *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
&lt;br /&gt;
    *** SEE IF SIGNAL RECEIVED FROM PARTNER&lt;br /&gt;
&lt;br /&gt;
  IF %REQSEND = 1 THEN&lt;br /&gt;
   JUMP TO REQUEST_TO_SEND&lt;br /&gt;
  ELSE&lt;br /&gt;
   JUMP TO CONTINUE&lt;br /&gt;
  END IF&lt;br /&gt;
&lt;br /&gt;
   *** CHECK FOR 2/2 (PARTNER RESPONDED TO CONFIRM WITH SEND ERROR)&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %STATUS = 2 AND %STATUSD = 2 THEN&lt;br /&gt;
  JUMP TO SEND_ERROR&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
SE: **********************************&lt;br /&gt;
    *          SEND ERROR            *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
   *** SEE IF SIGNAL RECEIVED FROM PARTNER&lt;br /&gt;
&lt;br /&gt;
 IF %REQSEND = 1 THEN&lt;br /&gt;
  JUMP TO REQUEST_TO_SEND&lt;br /&gt;
&lt;br /&gt;
   *** NO SIGNAL, SO CHECK %STATUS&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
SP: **********************************&lt;br /&gt;
    *         SIGNAL PROCESS         *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
I:  **********************************&lt;br /&gt;
    *         INVITE                 *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSEIF %STATUS = 2 AND %STATUSD = 2 THEN&lt;br /&gt;
  JUMP TO SEND_ERROR&lt;br /&gt;
 ELSEIF %STATUS = 4 THEN&lt;br /&gt;
  IF %STATUSD = 0 THEN&lt;br /&gt;
   JUMP TO CLOSE_BY_REMOTE&lt;br /&gt;
  ELSE&lt;br /&gt;
   JUMP TO ABORT&lt;br /&gt;
  END IF&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
 T: **********************************&lt;br /&gt;
    *       TEST FOR RECEIPT         *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSEIF %STATUS = 1 THEN&lt;br /&gt;
  IF %STATUSD = 1 THEN&lt;br /&gt;
   JUMP TO NEVER_MORE&lt;br /&gt;
  ELSEIF %STATUSD = 2 THEN&lt;br /&gt;
   JUMP TO NOT_YET&lt;br /&gt;
  ELSE&lt;br /&gt;
   JUMP TO ABORT&lt;br /&gt;
  END IF&lt;br /&gt;
 ELSE&lt;br /&gt;
  JUMP TO ABORT&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
 W: **********************************&lt;br /&gt;
    *       WAIT FOR RECEIPT         *&lt;br /&gt;
    **********************************&lt;br /&gt;
&lt;br /&gt;
 IF %STATUS = 0 THEN&lt;br /&gt;
  JUMP TO CONTINUE&lt;br /&gt;
 ELSEIF %STATUS = 1 THEN&lt;br /&gt;
  IF %STATUSD = 2 THEN&lt;br /&gt;
   JUMP TO NEVER_MORE&lt;br /&gt;
  END IF&lt;br /&gt;
 END IF&lt;br /&gt;
 JUMP TO ABORT&lt;br /&gt;
&lt;br /&gt;
******************************************************************&lt;br /&gt;
***              SET THE ADVICE CODE AND EXIT.                 ***&lt;br /&gt;
******************************************************************&lt;br /&gt;
CONTINUE:&lt;br /&gt;
 %ADVICE = 1&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
ABORT:&lt;br /&gt;
 %ADVICE = 2&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
SEND_ERROR:&lt;br /&gt;
 %ADVICE = 3&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
REQUEST_TO_SEND:&lt;br /&gt;
 %ADVICE = 4&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
SEND:&lt;br /&gt;
 %ADVICE = 5&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
CLOSE_BY_REMOTE:&lt;br /&gt;
 %ADVICE = 6&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
CONFIRM:&lt;br /&gt;
 %ADVICE = 7&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
NEVER_MORE:&lt;br /&gt;
 %ADVICE = 8&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
NOT_YET:&lt;br /&gt;
 %ADVICE = 9&lt;br /&gt;
 JUMP TO EXIT&lt;br /&gt;
&lt;br /&gt;
******************************************************************&lt;br /&gt;
***                   SUBROUTINE EXIT PATH                     ***&lt;br /&gt;
******************************************************************&lt;br /&gt;
&lt;br /&gt;
EXIT:&lt;br /&gt;
&lt;br /&gt;
******************************************************************&lt;br /&gt;
***  NOTE: THE FOLLOWING AUDIT LOGIC IS USEFUL AS A DEBUGGING  ***&lt;br /&gt;
***  TOOL FOR TRACING HORIZON STATEMENTS BUT MAY BE REMOVED    ***&lt;br /&gt;
***  OR BYPASSED FOR EFFICIENCY IF DESIRED.                    ***&lt;br /&gt;
******************************************************************&lt;br /&gt;
   *** AUDIT RESULT OF EACH STAT_CHECK INVOCATION ***&lt;br /&gt;
&lt;br /&gt;
 %STMT IS STRING LEN 14&lt;br /&gt;
&lt;br /&gt;
 IF %STATEMENT = 1 THEN&lt;br /&gt;
  %STMT = &amp;#039;OPEN&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 2 THEN&lt;br /&gt;
  %STMT = &amp;#039;CONFIRM&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 3 THEN&lt;br /&gt;
  %STMT = &amp;#039;CONFIRMED&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 4 THEN&lt;br /&gt;
  %STMT = &amp;#039;CLOSE&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 5 THEN&lt;br /&gt;
  %STMT = &amp;#039;FLUSH&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 6 THEN&lt;br /&gt;
  %STMT = &amp;#039;QUERY&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 7 THEN&lt;br /&gt;
  %STMT = &amp;#039;RECEIVE&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 8 THEN&lt;br /&gt;
  %STMT = &amp;#039;SEND&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 9 THEN&lt;br /&gt;
  %STMT = &amp;#039;SEND ERROR&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 10 THEN&lt;br /&gt;
  %STMT = &amp;#039;SIGNAL PROCESS&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 11 THEN&lt;br /&gt;
  %STMT = &amp;#039;INVITE&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 12 THEN&lt;br /&gt;
  %STMT = &amp;#039;TEST&amp;#039;&lt;br /&gt;
 ELSEIF %STATEMENT = 13 THEN&lt;br /&gt;
  %STMT = &amp;#039;WAIT&amp;#039;&lt;br /&gt;
 ELSE&lt;br /&gt;
  %STMT = &amp;#039;**UNDEFINED**&amp;#039;&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
 %ADV IS STRING LEN 20&lt;br /&gt;
&lt;br /&gt;
 IF %ADVICE = 1 THEN&lt;br /&gt;
  %ADV = &amp;#039;CONTINUE&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %ADVICE = 2 THEN&lt;br /&gt;
  %ADV = &amp;#039;ABORT&amp;#039;&lt;br /&gt;
 ELSEIF %ADVICE = 3 THEN&lt;br /&gt;
  %ADV = &amp;#039;HANDLE SEND ERROR&amp;#039;&lt;br /&gt;
 ELSEIF %ADVICE = 4 THEN&lt;br /&gt;
  %ADV = &amp;#039;HANDLE SIGNAL&amp;#039;&lt;br /&gt;
 ELSEIF %ADVICE = 5 THEN&lt;br /&gt;
  %ADV = &amp;#039;START SENDING&amp;#039;&lt;br /&gt;
 ELSEIF %ADVICE = 6 THEN&lt;br /&gt;
  %ADV = &amp;#039;PARTNER CLOSED&amp;#039;&lt;br /&gt;
 ELSEIF %ADVICE = 7 THEN&lt;br /&gt;
  %ADV = &amp;#039;HANDLE CONFIRM&amp;#039;&lt;br /&gt;
 ELSEIF %ADVICE = 8 THEN&lt;br /&gt;
  %ADV = &amp;#039;NOTHING ACTIVE&amp;#039;&lt;br /&gt;
 ELSEIF %ADVICE = 9 THEN&lt;br /&gt;
  %ADV = &amp;#039;NOTHING YET&amp;#039;&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
 QUERY PROCESS %PROCESS STATE %S&lt;br /&gt;
&lt;br /&gt;
 %TRACE IS STRING LEN 255&lt;br /&gt;
 %TRACE = &amp;#039;STAT_CHECK:&amp;#039;            -&lt;br /&gt;
  WITH &amp;#039; Statement=&amp;#039; WITH %STMT    -&lt;br /&gt;
  WITH &amp;#039; %STATUS=&amp;#039; WITH %STATUS WITH &amp;#039;/&amp;#039; WITH %STATUSD&lt;br /&gt;
&lt;br /&gt;
    *** AUDIT RESULT VARIABLE AFTER RECEIVE&lt;br /&gt;
&lt;br /&gt;
 IF %STATEMENT = 7 THEN&lt;br /&gt;
  %TRACE = %TRACE WITH &amp;#039; Result=&amp;#039; WITH %RESULT&lt;br /&gt;
&lt;br /&gt;
   *** AUDIT REQSEND VARIABLE AFTER SEND OR SEND ERROR&lt;br /&gt;
&lt;br /&gt;
 ELSEIF %STATEMENT = 8 OR %STATEMENT = 9 THEN&lt;br /&gt;
  %TRACE = %TRACE WITH &amp;#039; Reqsend=&amp;#039; WITH %REQSEND&lt;br /&gt;
 END IF&lt;br /&gt;
&lt;br /&gt;
 %TRACE = %TRACE                                   -&lt;br /&gt;
  WITH &amp;#039; State=&amp;#039; WITH %S                           -&lt;br /&gt;
  WITH &amp;#039; Advice=&amp;#039; WITH %ADVICE WITH &amp;#039;/&amp;#039; WITH %ADV  -&lt;br /&gt;
  WITH &amp;#039; Cid=&amp;#039; WITH %PROCESS &lt;br /&gt;
&lt;br /&gt;
  *** USE &amp;#039;PRINT&amp;#039; FOR CLIENT PROGRAM, &amp;#039;AUDIT&amp;#039; FOR SERVER PROGRAM&lt;br /&gt;
&lt;br /&gt;
 IF $VIEW(&amp;#039;IODEV&amp;#039;) EQ &amp;#039;27&amp;#039; THEN&lt;br /&gt;
  AUDIT %TRACE&lt;br /&gt;
 ELSE&lt;br /&gt;
  PRINT %TRACE&lt;br /&gt;
 END IF&lt;br /&gt;
******************************************************************&lt;br /&gt;
***                      END OF AUDITING                       ***&lt;br /&gt;
******************************************************************&lt;br /&gt;
&lt;br /&gt;
RETURN: RETURN&lt;br /&gt;
END SUBROUTINE STAT_CHECK&lt;br /&gt;
&lt;br /&gt;
*******************************************************************&lt;br /&gt;
*                                                                 *&lt;br /&gt;
* THE FOLLOWING VARIABLES MAY BE USED AS THE %STATEMENT PARAMETER *&lt;br /&gt;
* IN A CALL TO STAT_CHECK, TO MAKE YOUR PROGRAM EASIER TO READ    *&lt;br /&gt;
* (BE SURE TO EXECUTE THESE ASSIGNMENT STATEMENTS *BEFORE* YOU    *&lt;br /&gt;
* REFERENCE THE VARIABLES.)                                       *&lt;br /&gt;
*                                                                 *&lt;br /&gt;
* EXAMPLE: OPEN PROCESS %CID                                      *&lt;br /&gt;
* CALL STAT_CHECK(%CID,%HRZN_OPEN,%RESULT,%REQSEND,%ADVICE)       *&lt;br /&gt;
*                                                                 *&lt;br /&gt;
*******************************************************************&lt;br /&gt;
%HRZN_OPEN          = 1&lt;br /&gt;
%HRZN_CONFIRM       = 2&lt;br /&gt;
%HRZN_CONFIRMED     = 3&lt;br /&gt;
%HRZN_CLOSE         = 4&lt;br /&gt;
%HRZN_FLUSH         = 5&lt;br /&gt;
%HRZN_QUERY         = 6&lt;br /&gt;
%HRZN_RECEIVE       = 7&lt;br /&gt;
%HRZN_SEND          = 8&lt;br /&gt;
%HRZN_SEND_ERROR    = 9&lt;br /&gt;
%HRZN_SIGNAL        = 10&lt;br /&gt;
%HRZN_INVITE        = 11&lt;br /&gt;
%HRZN_TEST          = 12&lt;br /&gt;
%HRZN_WAIT          = 13&lt;br /&gt;
END PROCEDURE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;  &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Remote Updating Example ==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The applications considered thus far have been inquiry-only, but Horizon also permits remote file updating. By definition, remote updating of a local node occurs when data received at the local node during a Horizon conversation is stored at the local node. Horizon accommodates this single node updating using standard Model 204 recovery features.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Coordinated updating and recovery between multiple nodes is not provided with Version 2, Release 2 of Horizon. Multiple-node updating and recovery requires an additional conversation protocol, called two-phase commit, along with corresponding enhancements to the recovery logic of Model 204.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The example (in pseudo code) in [[#Single-node remote update|Single-node remote update]] illustrates how a Horizon single-node remote update can be accomplished using existing Model 204 recovery logic. The arrows in the example indicate when data is physically transmitted across the network. The numbers in parentheses show the order in which the statements in the programs are processed. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot; style=&amp;quot;width:468px&amp;quot;&amp;gt;Single node remote update&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;figure&amp;quot;&amp;gt;[[File:Horizon_fig7-1_single_node.gif|468px]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The steps shown in parentheses in [[#Single-node remote update|Single-node remote update]] are as follows:&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;Step&amp;lt;/th&amp;gt;&lt;br /&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;(1)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program A sends data to its remote partner.&amp;lt;/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;(2)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program A issues a confirmation request. This causes the data and a confirmation indicator to be sent to Program B.&amp;lt;/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;(3)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B receives the data. If the receive fails for any reason, the appropriate cleanup logic is invoked.&amp;lt;/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;(4)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B does a second RECEIVE, and verifies that what it has received is the confirmation request. If the confirmation request is not present, the cleanup logic is called. An update unit is never started.&amp;lt;/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;(5)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B stores the data it receives into its file, and this begins an update unit.&amp;lt;/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;(6)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B acknowledges that it has made the update by issuing a CONFIRMED statement.&amp;lt;/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;(7)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;If Program A is still active, $STATUS from the confirmation is 0, and Program B commits the current update unit. Otherwise, Program B backs the update out.&amp;lt;/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;(8-9)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;When something (a confirmation or an error indication) is received, Program A reports the result to the end user.&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;
===Multiple-node updating===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An application that requires updates at more than one node can be written using the current version of Horizon, provided that it does not depend upon Model 204 recovery alone to assure it of database consistency across network nodes. Such an application can be designed in one of two ways:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
The application is designed so that there are no database consistency dependencies across nodes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In this case, Model 204 recovery protects each individual node. Such a design implies that each node&amp;#039;s update is seen by recovery as a separate transaction, disjoint from updates at any other node.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The application is designed so that the application takes responsibility for detecting and correcting cross-node inconsistencies.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Such a recovery scheme can sometimes be designed, but an extensive discussion of the issues involved is beyond the scope of this topic.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
[[#Double-node update|Double-node update]] shows an application that performs updates at two nodes. The numbers in parentheses show the order in which the statements in the programs are processed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot; style=&amp;quot;width:468px&amp;quot;&amp;gt;Double-node update&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;figure&amp;quot;&amp;gt;[[File:Horizon_fig7-2_double_node.gif|468px]] &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The steps shown in parentheses in [[#Double-node update|Double-node update]] are as follows:&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;Steps&amp;lt;/th&amp;gt;&lt;br /&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;(1)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program A stores data into a record, and this begins an update unit.&amp;lt;/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;(2)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program A sends a copy of the data to its remote partner.&amp;lt;/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;(3)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program A issues a confirmation request. This causes the data and a confirmation indicator to be sent to Program B.&amp;lt;/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;(4)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B receives the data. If the RECEIVE fails for any reason, the appropriate cleanup logic is invoked.&amp;lt;/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;(5)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B stores the data it receives into its file. This begins an update unit.&amp;lt;/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;(6)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B verifies that what it has received is the confirmation request. If the confirmation request is not present, the update unit is backed out and the cleanup logic is called.&amp;lt;/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;(7)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Program B acknowledges that it has made the update by issuing a CONFIRMED statement.&amp;lt;/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;(8)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
This step begins when the confirmation is sent. If Program A is still active, $STATUS from the confirmation is 0, and Program B commits the current update unit.&amp;lt;/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;(9)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;When something (a confirmation or an error indication) is received, Program A acts according to what it receives:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A confirmation ($STATUS=0) signifies that Program B successfully received the update data and stored its record, and is presently committing the update. Program A can therefore commit its update with the near certainty that its partner&amp;#039;s commit will also succeed.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An error ($STATUS0) signifies that, for some reason, the Program B update did not succeed. Program A therefore backs out its update.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&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;
===Between-node data consistency===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A database consistency problem can occur if Program A terminates before it gets a chance to make the decision at Step 9, or if Program B terminates before it completes Step 8. The application should be designed to check (perhaps at initialization time or just before performing a given update) that the database at each node &amp;quot;looks correct.&amp;quot;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Another alternative is for the initiating node to keep a file to which it logs records of the nodes that have been successfully updated. In the event of a network failure, the data in this log file is used for manually coordinating recovery.&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 physical consistency of any Model 204 file is always taken care of by Model 204 recovery, and is not a consideration here. Logical consistency within a single Model 204 system is also provided. The only issue that the application designer needs to worry about is logical consistency of data among the different nodes that the application attempts to update. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Horizon]]&lt;/div&gt;</summary>
		<author><name>ELowell</name></author>
	</entry>
</feed>