<?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=HLI%3A_IFDIAL_processing</id>
	<title>HLI: IFDIAL processing - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://m204wiki.rocketsoftware.com/index.php?action=history&amp;feed=atom&amp;title=HLI%3A_IFDIAL_processing"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;action=history"/>
	<updated>2026-04-18T14:30:29Z</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=HLI:_IFDIAL_processing&amp;diff=93288&amp;oldid=prev</id>
		<title>ELowell: /* Overview */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;diff=93288&amp;oldid=prev"/>
		<updated>2016-07-15T23:14:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Overview&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 23:14, 15 July 2016&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-l4&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&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;This chapter describes basic processing using an IFDIAL thread for application programmers who are using the Host Language Interface facility. &amp;lt;/p&amp;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;This chapter describes basic processing using an IFDIAL thread for application programmers who are using the Host Language Interface facility. &amp;lt;/p&amp;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;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; 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;Refer to the &amp;lt;var class=&quot;book&quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt; for information about &lt;/del&gt;HLI &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jobs using &lt;/del&gt;IFDIAL &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;threads and &lt;/del&gt;descriptions of HLI calls that are available using an IFDIAL thread.&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;See [[&lt;/ins&gt;HLI&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: Function summary#&lt;/ins&gt;IFDIAL &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;thread calls|IFDIAL thread calls]] for &lt;/ins&gt;descriptions of HLI calls that are available using an IFDIAL thread.&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;==Terminal type interface==&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;==Terminal type interface==&lt;/div&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=HLI:_IFDIAL_processing&amp;diff=93287&amp;oldid=prev</id>
		<title>ELowell: /* Sample subroutine to convert IFREAD flags */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;diff=93287&amp;oldid=prev"/>
		<updated>2016-07-15T23:07:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Sample subroutine to convert IFREAD flags&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 23:07, 15 July 2016&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-l402&quot;&gt;Line 402:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 402:&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;IFREAD returns a message descriptor flag as a series of bits. Each bit indicates the type of data received, the password prompt, error messages, and so on. The CVTFLAG (convert flags) subroutine example in [[#Sample assembly language subroutine to convert IFREAD flags|Sample assembly language subroutine to convert IFREAD flags]] translates the IFREAD flags to COBOL character strings and refers to them with Level 88 statements. &amp;lt;/p&amp;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;IFREAD returns a message descriptor flag as a series of bits. Each bit indicates the type of data received, the password prompt, error messages, and so on. The CVTFLAG (convert flags) subroutine example in [[#Sample assembly language subroutine to convert IFREAD flags|Sample assembly language subroutine to convert IFREAD flags]] translates the IFREAD flags to COBOL character strings and refers to them with Level 88 statements. &amp;lt;/p&amp;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;&amp;lt;p&amp;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;&amp;lt;p&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;The following sample COBOL program calls this subroutine after issuing &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the IFREAD call. Refer to &lt;/del&gt;the &amp;lt;var &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;class=&quot;book&quot;&lt;/del&gt;&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Rocket Model 204 Host Language Interface Reference Manual&lt;/del&gt;&amp;lt;/var&amp;gt; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for a description of the IFREAD &lt;/del&gt;call. &amp;lt;/p&amp;gt;&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;The following sample COBOL program calls this subroutine after issuing the &amp;lt;var&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[IFREAD (HLI function)|IFREAD]]&lt;/ins&gt;&amp;lt;/var&amp;gt; call.&amp;lt;/p&amp;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;&amp;lt;div id=&amp;quot;sample3&amp;quot;&amp;gt;&amp;lt;/div&amp;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;&amp;lt;div id=&amp;quot;sample3&amp;quot;&amp;gt;&amp;lt;/div&amp;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;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Sample assembly language subroutine to convert IFREAD flags&amp;lt;/p&amp;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;&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Sample assembly language subroutine to convert IFREAD flags&amp;lt;/p&amp;gt;&lt;/div&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=HLI:_IFDIAL_processing&amp;diff=93286&amp;oldid=prev</id>
		<title>ELowell: /* IFDIAL thread */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;diff=93286&amp;oldid=prev"/>
		<updated>2016-07-15T23:01:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;IFDIAL thread&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 23:01, 15 July 2016&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-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&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;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; If you are using an IFDIAL thread, you must code the calls, specifications, and corresponding program logic that are valid for use with this thread. &amp;lt;/p&amp;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;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; If you are using an IFDIAL thread, you must code the calls, specifications, and corresponding program logic that are valid for use with this thread. &amp;lt;/p&amp;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;&amp;lt;p&amp;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;&amp;lt;p&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;See [[HLI: Threads]] for more information about IFDIAL threads. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Refer to the &amp;lt;var class=&quot;book&quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt; &lt;/del&gt;for a description of HLI calls. &amp;lt;/p&amp;gt;&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;See [[HLI: Threads]] for more information about IFDIAL threads. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;See [[HLI: Function summary]] &lt;/ins&gt;for a description of HLI calls. &amp;lt;/p&amp;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;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;===Communication between Model 204 and an IFDIAL thread===&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;===Communication between Model 204 and an IFDIAL thread===&lt;/div&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=HLI:_IFDIAL_processing&amp;diff=83928&amp;oldid=prev</id>
		<title>ELowell at 16:32, 29 April 2016</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;diff=83928&amp;oldid=prev"/>
		<updated>2016-04-29T16:32:01Z</updated>

		<summary type="html">&lt;p&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 16:32, 29 April 2016&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-l583&quot;&gt;Line 583:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 583:&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;==See also==&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;==See also==&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;{{Template: HLI topic list}}&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;{{Template: HLI &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;programming &lt;/ins&gt;topic list}}&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;[[Category: Host Language Interface]]&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;[[Category: Host Language Interface]]&lt;/div&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=HLI:_IFDIAL_processing&amp;diff=82607&amp;oldid=prev</id>
		<title>ELowell: /* Checking IFWRITE and IFREAD return codes */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;diff=82607&amp;oldid=prev"/>
		<updated>2016-01-30T00:18:59Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Checking IFWRITE and IFREAD return codes&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 00:18, 30 January 2016&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-l127&quot;&gt;Line 127:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 127:&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;This is necessary to ensure proper communication with Model 204 during IFDIAL processing. &amp;lt;/p&amp;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;This is necessary to ensure proper communication with Model 204 during IFDIAL processing. &amp;lt;/p&amp;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;&amp;lt;p&amp;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;&amp;lt;p&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;In the sample coding sequence in [[#Submitting a SOUL request|Submitting a SOUL request]] (and also in [[HLI &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;threads&lt;/del&gt;]]) the IFDIAL application loops to send lines of input to Model 204 by issuing multiple calls to IFWRITE.   &amp;lt;/p&amp;gt;&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;In the sample coding sequence in [[#Submitting a SOUL request|Submitting a SOUL request]] (and also in [[HLI&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: Threads&lt;/ins&gt;]]) the IFDIAL application loops to send lines of input to Model 204 by issuing multiple calls to IFWRITE.   &amp;lt;/p&amp;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;&amp;lt;p&amp;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;&amp;lt;p&amp;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;This loop must be controlled by checking the value of the return code each time before the next IFWRITE call is issued. For example, the following COBOL statement is coded: &amp;lt;/p&amp;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;This loop must be controlled by checking the value of the return code each time before the next IFWRITE call is issued. For example, the following COBOL statement is coded: &amp;lt;/p&amp;gt;&lt;/div&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=HLI:_IFDIAL_processing&amp;diff=82606&amp;oldid=prev</id>
		<title>ELowell: /* IFDIAL thread */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;diff=82606&amp;oldid=prev"/>
		<updated>2016-01-30T00:18:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;IFDIAL thread&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 00:18, 30 January 2016&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-l18&quot;&gt;Line 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 18:&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;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; If you are using an IFDIAL thread, you must code the calls, specifications, and corresponding program logic that are valid for use with this thread. &amp;lt;/p&amp;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;&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; If you are using an IFDIAL thread, you must code the calls, specifications, and corresponding program logic that are valid for use with this thread. &amp;lt;/p&amp;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;&amp;lt;p&amp;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;&amp;lt;p&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;See [[HLI &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;threads&lt;/del&gt;]] for more information about IFDIAL threads. Refer to the &amp;lt;var class=&quot;book&quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt; for a description of HLI calls. &amp;lt;/p&amp;gt;&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;See [[HLI&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: Threads&lt;/ins&gt;]] for more information about IFDIAL threads. Refer to the &amp;lt;var class=&quot;book&quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt; for a description of HLI calls. &amp;lt;/p&amp;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;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;===Communication between Model 204 and an IFDIAL thread===&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;===Communication between Model 204 and an IFDIAL thread===&lt;/div&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=HLI:_IFDIAL_processing&amp;diff=82567&amp;oldid=prev</id>
		<title>ELowell: Created page with &quot; ==Overview== &lt;p&gt; This chapter describes basic processing using an IFDIAL thread for application programmers who are using the Host Language Interface facility. &lt;/p&gt;  Refer to...&quot;</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=HLI:_IFDIAL_processing&amp;diff=82567&amp;oldid=prev"/>
		<updated>2016-01-29T23:06:23Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; ==Overview== &amp;lt;p&amp;gt; This chapter describes basic processing using an IFDIAL thread for application programmers who are using the Host Language Interface facility. &amp;lt;/p&amp;gt;  Refer to...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
==Overview==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This chapter describes basic processing using an IFDIAL thread for application programmers who are using the Host Language Interface facility. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt; for information about HLI jobs using IFDIAL threads and descriptions of HLI calls that are available using an IFDIAL thread.&lt;br /&gt;
&lt;br /&gt;
==Terminal type interface==&lt;br /&gt;
&lt;br /&gt;
===IFDIAL thread===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An IFDIAL thread provides a line-at-a-time terminal emulation type interface between a host language application and Model 204. With an IFDIAL thread, a host language program functions as a terminal, transmitting a line of input to Model 204 and receiving a line of output from Model 204. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An IFDIAL thread supports the use of the companion calls, IFREAD and IFWRITE, to communicate with Model 204. Use an IFREAD call to transmit data (a line of output) from Model 204 to your application program and an IFWRITE call to transmit data (a line of input) back to Model 204.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Using an IFDIAL thread, you can pass Model 204 commands, ad hoc or stored SOUL procedures, or Application Subsystem Management applications from an HLI application (batch) program to Model 204.   You can also extract data from Model 204, use the data in your program, and put the results into your Model 204 database. &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; If you are using an IFDIAL thread, you must code the calls, specifications, and corresponding program logic that are valid for use with this thread. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[HLI threads]] for more information about IFDIAL threads. Refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt; for a description of HLI calls. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Communication between Model 204 and an IFDIAL thread===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The underlying communications mechanism for a terminal type interface drives IFDIAL thread functioning. A parent-child protocol directs the interchange between the partner programs, that is, between Model 204 (the parent) and the IFDIAL thread (the child).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In all communications between IFDIAL and Model 204, Model 204 is the parent and directs the interchange. The IFDIAL thread is the child. If the Model 204 side wants input, the IFDIAL thread is required to send input.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Also, an IFDIAL thread must process all output from Model 204 that normally goes to a terminal, such as character prompts for logons and passwords or warning and broadcast messages. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sample call sequences==&lt;br /&gt;
&lt;br /&gt;
===Establishing an IFDIAL connection===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The HLI application initiates the request to establish an IFDIAL connection to Model 204. To start an IFDIAL thread, the HLI application program must specify the IFDIAL call. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example, a host language application might issue calls in the following order to establish an IFDIAL connection to Model 204: &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFDIAL to start an IFDIAL thread.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
IFREAD to receive the Model 204 response. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
IFWRITE to log in to Model 204. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
IFREAD to receive the Model 204 response. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
IFWRITE to supply a password. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
IFREAD to receive the Model 204 response: &amp;lt;br /&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
. &amp;lt;br /&amp;gt;&lt;br /&gt;
. 	perform IFDIAL processing &amp;lt;br /&amp;gt;&lt;br /&gt;
. &amp;lt;/code&amp;gt;&lt;br /&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;
To disconnect the IFDIAL thread and finish processing, the HLI application issues an IFHNGUP call. The following sections show sample call sequences once the IFDIAL connection is established. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Submitting a SOUL request ===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once the connection is established, you can use an IFDIAL thread to submit an ad hoc SOUL request to Model 204. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example, to submit a SOUL request after an IFDIAL connection is established (see the previous section), an HLI application might read an input file containing a SOUL request into a program storage area, and then issue HLI calls in the following order: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
. 	establish the IFDIAL connection &amp;lt;br /&amp;gt;&lt;br /&gt;
. &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
IFWRITE inside a program loop, to issue the SOUL statements until all statements are sent to Model 204 (by referencing the program storage area). &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
IFREAD to receive the Model 204 response. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The program code might loop, issuing the IFREAD to read each line of output from Model 204 until there is no more output in the storage buffer. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; This sample shows the basic IFWRITE and IFREAD sequence for submitting a SOUL request. Always code your IFDIAL application to check the completion return code for these calls. See [[#Checking IFWRITE and IFREAD return codes|Checking IFWRITE and IFREAD return codes]] for information about checking the return codes for IFREAD and IFWRITE. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Invoking a stored SOUL procedure===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once the connection is established, you can use an IFDIAL thread to invoke a stored SOUL procedure. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example, to invoke a stored SOUL procedure after an IFDIAL connection is established, an HLI application might issue calls in the following order: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
. 	establish the IFDIAL connection &amp;lt;br /&amp;gt;&lt;br /&gt;
. &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFWRITE to open a file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFREAD to receive the Model 204 response. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFWRITE to supply a password, if required. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFREAD to receive open file messages from Model 204. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFWRITE to issue the command to include the stored SOUL procedure. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&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; Always code your IFDIAL application to check the completion return codes for IFWRITE and IFREAD. See [[#Checking IFWRITE and IFREAD return codes|Checking IFWRITE and IFREAD return codes]] for information about checking these return codes. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using the Model 204 Application Subsystem facility===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Once the connection is established, you can use an IFDIAL thread to access the Model 204 Application Subsystem facility. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example, to use the Model 204 Application Subsystem facility after an IFDIAL connection is established (see [[#Establishing an IFDIAL connection|Establishing an IFDIAL connection]]) an HLI application might issue calls in the following order: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
. 	establish the IFDIAL connection &amp;lt;br /&amp;gt;&lt;br /&gt;
. &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFWRITE to invoke an Application Subsystem (APSY).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;IFREAD to receive the results of the APSY execution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote class=&amp;quot;note&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Notes:&amp;lt;/b&amp;gt; Make sure to use an Application Subsystem that is designed to run on a line-at-a-time IFDIAL thread. Also, always code your IFDIAL application to check the completion return codes for IFWRITE and IFREAD, as described in [[#Checking IFWRITE and IFREAD return codes|Checking IFWRITE and IFREAD return codes]]. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[Application Subsystem development]] for information about the Application Subsystem facility. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Checking IFWRITE and IFREAD return codes===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Always code your IFDIAL application to check the Model 204 completion return code from the previous IFWRITE or IFREAD call before issuing the next IFWRITE or IFREAD. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The IFDIAL application must issue IFREAD or IFWRITE depending on which call Model 204 expects next. Model 204 indicates which of these calls is required next by returning a particular completion code from the previous IFREAD or IFWRITE. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If the Model 204 completion return code from the previous IFREAD or IFWRITE equals 1, the IFDIAL application must issue an IFWRITE. Or, if the return code equals 2, the application must issue an IFREAD. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This is necessary to ensure proper communication with Model 204 during IFDIAL processing. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
In the sample coding sequence in [[#Submitting a SOUL request|Submitting a SOUL request]] (and also in [[HLI threads]]) the IFDIAL application loops to send lines of input to Model 204 by issuing multiple calls to IFWRITE.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
This loop must be controlled by checking the value of the return code each time before the next IFWRITE call is issued. For example, the following COBOL statement is coded: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;PERFORM WRITE-LOOP UNTIL RETCODE = 2 OR INRECS = 0.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
where INRECS is a counter that is decremented for each record sent from the input file, and when INRECS equals zero, all SOUL statements have been sent to Model 204. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
If during processing Model 204 encounters an error in one of the SOUL statements from the input file, the IFDIAL application must receive the error message from Model 204 by issuing IFREAD before issuing another call to IFWRITE. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Any number of other types of messages might be issued by Model 204, for example, messages from the operator, that might interrupt an IFWRITE processing loop and must be received by the IFDIAL application. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Also, the same type of checking must be done for an IFREAD processing loop. For example, a loop that issues IFREAD to read each line of output from Model 204 until there is no more output in the storage buffer must be controlled by checking the return code for a value of 1, which indicates that an IFWRITE call is required next. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[#Sample COBOL program using a stored procedure|Sample COBOL program using a stored procedure]] for an example of return code checking in a COBOL program that uses IFDIAL processing.   &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using stored procedures==&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
An HLI call in a host language program that invokes another program to perform a specific function, or functions, is called a stored procedure call. The stored procedure can be a SOUL procedure or a set of Model 204 commands. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As briefly outlined in [[#Invoking a stored SOUL procedure|Invoking a stored SOUL procedure]], you can use an IFDIAL thread for stored procedure calls. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Operations against the database===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
You can use a stored procedure with an IFDIAL thread to perform different types of operations against the database, depending on the needs of the HLI application. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Although you can use IFDIAL applications with stored procedures for any type of terminal activity, the following examples are the most common: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Sending and receiving Model 204 images, which are defined in the program storage area of the HLI application. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Issuing Model 204 commands, for any Model 204 command that can be issued at a terminal such as MONITOR, and receiving output generated by Model 204. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Transferring procedures in and out of Model 204 files, which allows you to maintain SOUL procedures in external software configuration management systems. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following sections describe IFDIAL processing using stored SOUL procedures with images. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using stored procedures for image processing==&lt;br /&gt;
&lt;br /&gt;
===Sending and receiving Model 204 images===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Because SOUL allows Model 204 images to be read or written to a terminal, an HLI application using an IFDIAL thread that operates in terminal emulation mode can send and receive Model 204 images. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A Model 204 image is a SOUL feature that allows a request to read and process terminal input or input from sequential files. An image describes the format of an external record. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
SOUL statements can refer to each item described in the image definition. Using the images facility, you can open a file, read records to the image, write records to a terminal or to a file, and close the file. This capability allows an application to write multiple output files and reports based on a single pass of the database. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The syntax for reading and writing images with SOUL is as follows:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;OPEN {TERMINAL | %VAR} FOR {INPUT [OUTPUT] &lt;br /&gt;
     | OUTPUT [INPUT] | INOUT}&lt;br /&gt;
&lt;br /&gt;
READ [IMAGE] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; FROM {TERMINAL | %VAR}&lt;br /&gt;
&lt;br /&gt;
[PROMPT {&amp;#039;&amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;string&amp;lt;/span&amp;gt;&amp;#039; | %VAR}]&lt;br /&gt;
&lt;br /&gt;
WRITE [IMAGE] &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; ON {TERMINAL | %VAR}&lt;br /&gt;
&lt;br /&gt;
CLOSE {TERMINAL | %VAR}&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[Images]] for more information about images.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example of a stored procedure used to process images===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following SOUL (User Language) example is a stored procedure, named IFDIAL-WRITE, which finds records and writes images to the IFDIAL application in the [[#sample2|Sample COBOL program using a stored procedure]]. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;sample1&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;User Language stored procedure example&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&lt;br /&gt;
* OPEN MODEL 204 DATA FILE&lt;br /&gt;
*&lt;br /&gt;
OPEN VEHICLES&lt;br /&gt;
*&lt;br /&gt;
BEGIN&lt;br /&gt;
* USER LANGUAGE PROGRAM TO SHOW USE &lt;br /&gt;
* OF IFDIAL AND IMAGES &lt;br /&gt;
*&lt;br /&gt;
IMAGE VEHICLES.LIST&lt;br /&gt;
     VL.BODY IS STRING LEN 4&lt;br /&gt;
     VL.COLOR IS STRING LEN 8&lt;br /&gt;
     VL.MAKE IS STRING LEN 10&lt;br /&gt;
     VL.MODEL IS STRING LEN 20&lt;br /&gt;
     VL.YEAR IS PACKED DIGITS 2&lt;br /&gt;
END IMAGE&lt;br /&gt;
*&lt;br /&gt;
* OPEN PATH TO IFDIAL PROGRAM&lt;br /&gt;
*&lt;br /&gt;
OPEN TERMINAL FOR OUTPUT&lt;br /&gt;
PREPARE IMAGE VEHICLES.LIST&lt;br /&gt;
*&lt;br /&gt;
* FIND AND WRITE IMAGES TO IFDIAL PROGRAM&lt;br /&gt;
*&lt;br /&gt;
FOUND_SET: FIND ALL RECORDS FOR WHICH MAKE=FORD AND COLOR=BLUE&lt;br /&gt;
           END FIND&lt;br /&gt;
     LOOP: FOR EACH RECORD IN FOUND_SET&lt;br /&gt;
*&lt;br /&gt;
          %VEHICLES.LIST:VL.BODY = BODY&lt;br /&gt;
          %VEHICLES.LIST:VL.COLOR = COLOR&lt;br /&gt;
          %VEHICLES.LIST:VL.MAKE = MAKE&lt;br /&gt;
          %VEHICLES.LIST:VL.MODEL = MODEL&lt;br /&gt;
          %VEHICLES.LIST:VL.YEAR = YEAR&lt;br /&gt;
*&lt;br /&gt;
          WRITE IMAGE VEHICLES.LIST ON TERMINAL&lt;br /&gt;
*&lt;br /&gt;
     END FOR&lt;br /&gt;
*&lt;br /&gt;
END&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example of IFDIAL application that processes images===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following COBOL example performs IFDIAL communication to Model 204 using the stored procedure, IFDIAL-WRITE, shown in the [[#sample1|User Language stored procedure example]]. See [[#Using a special purpose subroutine|Using a special purpose subroutine]] for the CVTFLAG subroutine. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;sample2&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Sample COBOL program using a stored procedure&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;***************************************************************&lt;br /&gt;
* THIS IS A SAMPLE COBOL PROGRAM WHICH DOES &lt;br /&gt;
* IFDIAL COMMUNICATION TO M204. &lt;br /&gt;
***************************************************************&lt;br /&gt;
 IDENTIFICATION DIVISION.&lt;br /&gt;
 PROGRAM-ID.&lt;br /&gt;
        IFDIALUL.&lt;br /&gt;
*&lt;br /&gt;
 ENVIRONMENT DIVISION.&lt;br /&gt;
 INPUT-OUTPUT SECTION.&lt;br /&gt;
 FILE-CONTROL.&lt;br /&gt;
        SELECT REPORT-FILE ASSIGN TO UT-S-REPORT.&lt;br /&gt;
        SELECT INPUT-FILE ASSIGN TO UT-S-INPUT.&lt;br /&gt;
*&lt;br /&gt;
 DATA DIVISION.&lt;br /&gt;
 FILE SECTION.&lt;br /&gt;
 FD REPORT-FILE&lt;br /&gt;
        LABEL RECORDS ARE OMITTED&lt;br /&gt;
        BLOCK CONTAINS 0 RECORDS&lt;br /&gt;
        DATA RECORD IS OUT-BUFFER.&lt;br /&gt;
 01 OUT-BUFFER                  PIC X(133).&lt;br /&gt;
*&lt;br /&gt;
 WORKING-STORAGE SECTION.&lt;br /&gt;
 01 ERROR-FUNCTION              PIC X(8) VALUE SPACES.&lt;br /&gt;
 01 DISPLAY-STATUS-IND          PIC 9(5) VALUE ZERO.&lt;br /&gt;
 01 WS-OUTPUT-REPORT-LINE.&lt;br /&gt;
    05 WS-CCTL-CHAR             PIC X VALUE SPACES.&lt;br /&gt;
    05 MAKE                     PIC X(10).&lt;br /&gt;
    05 FILLER                   PIC X(5) VALUE SPACES.&lt;br /&gt;
    05 MODEL                    PIC X(20).&lt;br /&gt;
    05 FILLER                   PIC X(5) VALUE SPACES.&lt;br /&gt;
    05 BODY                     PIC X(4).&lt;br /&gt;
    05 FILLER                   PIC X(5) VALUE SPACES.&lt;br /&gt;
    05 YEAR                     PIC X(2).&lt;br /&gt;
    05 FILLER                   PIC X(5) VALUE SPACES.&lt;br /&gt;
    05 COLOR                    PIC X(8).&lt;br /&gt;
*&lt;br /&gt;
 01 OUTPUT-AREA                 PIC X(256) VALUE SPACES.&lt;br /&gt;
*&lt;br /&gt;
 01 INPUT-AREA                  PIC X(256).&lt;br /&gt;
 01 FORMATED-INPUT-AREA REDEFI NES INPUT-AREA.&lt;br /&gt;
    05 BODY                     PIC X(4).&lt;br /&gt;
    05 COLOR                    PIC X(8).&lt;br /&gt;
    05 MAKE                     PIC X(10).&lt;br /&gt;
    05 MODEL                    PIC X(20).&lt;br /&gt;
    05 YEAR                     PIC X(2).&lt;br /&gt;
* &lt;br /&gt;
 01 INTEGER-CALL-ARGS COMP SYNC.&lt;br /&gt;
    05 STATUS-IND               PIC 9(5) VALUE 99.&lt;br /&gt;
    05 WRITE-STAT               PIC 9(5).&lt;br /&gt;
    05 READ-STAT                PIC 9(5).&lt;br /&gt;
    05 LANGUAGE-IND             PIC 9(5) VALUE 2.&lt;br /&gt;
*&lt;br /&gt;
 01 IFREAD-FLAGS.&lt;br /&gt;
    05 IFREAD-MSG-LENGTH        PIC 9999 COMP SYNC.&lt;br /&gt;
    05 IFDIAL-ERROR-MSG         PIC X VALUE &amp;quot;N&amp;quot;.&lt;br /&gt;
       88 ERROR-MSG VALUE &amp;quot;Y&amp;quot;.&lt;br /&gt;
    05 IFDIAL-NEW-PAGE          PIC X VALUE &amp;quot;N&amp;quot;.&lt;br /&gt;
       88 NEW-PAGE VALUE &amp;quot;Y&amp;quot;.&lt;br /&gt;
    05 IFDIAL-USER-RESTARTED    PIC X VALUE &amp;quot;N&amp;quot;.&lt;br /&gt;
       88 USER-RESTARTED VALUE &amp;quot;Y&amp;quot;.&lt;br /&gt;
    05 IFDIAL-PASSWORD-REQUEST  PIC X VALUE &amp;quot;N&amp;quot;.&lt;br /&gt;
       88 PASSWORD-REQUEST VALUE &amp;quot;Y&amp;quot;.&lt;br /&gt;
    05 IFDIAL-READ-REQUEST      PIC X VALUE &amp;quot;N&amp;quot;.&lt;br /&gt;
       88 READ-REQUEST VALUE &amp;quot;Y&amp;quot;.&lt;br /&gt;
    05 IFDIAL-INFO-MSG          PIC X VALUE &amp;quot;N&amp;quot;.&lt;br /&gt;
       88 INFO-MSG VALUE &amp;quot;Y&amp;quot;.&lt;br /&gt;
*&lt;br /&gt;
 01 STRING-CALL-ARGS.&lt;br /&gt;
    05 INPUT-FLAGS              PIC X.&lt;br /&gt;
    05 M204-ERR-MESSAGE         PIC X(80) VALUE SPACES.&lt;br /&gt;
    05 VMCF-CHANNEL             PIC X(8) VALUE &amp;quot;M204VMIO&amp;quot;.&lt;br /&gt;
    05 LOGON-MSG                PIC X(16) VALUE &amp;quot;LOGON SUPERKLUGE&amp;quot;.&lt;br /&gt;
    05 LOGON-PASSWORD           PIC X(8) VALUE &amp;quot;PIGFLOUR&amp;quot;.&lt;br /&gt;
    05 REQUEST-NAME                PIC X(14) VALUE &amp;quot;I IFDIAL-WRITE&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 PROCEDURE DIVISION.&lt;br /&gt;
*&lt;br /&gt;
 MAIN-ROUTINE.&lt;br /&gt;
*&lt;br /&gt;
 INITIALIZATION.&lt;br /&gt;
    OPEN OUTPUT REPORT-FILE&lt;br /&gt;
    CALL &amp;quot;IFDIALN&amp;quot;&lt;br /&gt;
        USING STATUS-IND, LANGUAGE-IND, VMCF-CHANNEL.&lt;br /&gt;
    DISPLAY &amp;quot;IFDIALN STATUS &amp;quot;, STATUS-IND.&lt;br /&gt;
    IF STATUS-IND IS NOT EQUAL ZERO&lt;br /&gt;
        MOVE &amp;quot;IFDIALN &amp;quot; TO ERROR-FUNCTION&lt;br /&gt;
        PERFORM ERROR-ROUTINE.&lt;br /&gt;
*&lt;br /&gt;
* LOGON-PROCESS&lt;br /&gt;
*&lt;br /&gt;
    MOVE LOGON-MSG TO OUTPUT-AREA.&lt;br /&gt;
    CALL &amp;quot;IFWRITE&amp;quot; USING WRITE-STAT, OUTPUT-AREA.&lt;br /&gt;
    DISPLAY &amp;quot;IFWRITE STATUS &amp;quot;, WRITE-STAT.&lt;br /&gt;
    IF WRITE-STAT = 2&lt;br /&gt;
       PERFORM READ-LINE THRU READ-LINE-EXIT&lt;br /&gt;
         UNTIL READ-STAT = 1 OR READ-STAT = 12.&lt;br /&gt;
       IF PASSWORD-REQUEST&lt;br /&gt;
         DISPLAY &amp;quot;PASSWORD REQUEST &amp;quot;, IFDIAL-PASSWORD-REQUEST.&lt;br /&gt;
         MOVE SPACES TO OUTPUT-AREA&lt;br /&gt;
         MOVE LOGON-PASSWORD TO OUTPUT-AREA&lt;br /&gt;
         CALL &amp;quot;IFWRITE&amp;quot; USING WRITE-STAT, OUTPUT-AREA&lt;br /&gt;
         PERFORM READ-LINE THRU READ-LINE-EXIT&lt;br /&gt;
           UNTIL READ-STAT = 1 OR READ-STAT = 12.&lt;br /&gt;
*&lt;br /&gt;
* MAIN-LOOP &lt;br /&gt;
*       START USER LANGUAGE TRANSACTION TO RETRIEVE&lt;br /&gt;
*       RECORDS. &lt;br /&gt;
*       IFWRITE USES REQUEST-NAME TO EXECUTE &lt;br /&gt;
*       STORED USER LANGUAGE PROCEDURE IFDIAL-WRITE &lt;br /&gt;
*       AT NEXT INPUT REQUEST, TERMINATE.&lt;br /&gt;
*&lt;br /&gt;
        MOVE SPACES TO OUTPUT-AREA.&lt;br /&gt;
        MOVE REQUEST-NAME TO OUTPUT-AREA.&lt;br /&gt;
        CALL &amp;quot;IFWRITE&amp;quot; USING WRITE-STAT, OUTPUT-AREA.&lt;br /&gt;
        PERFORM MAIN-LOOP UNTIL READ-STAT NOT = 2&lt;br /&gt;
        GO TO TERMINATION.&lt;br /&gt;
*&lt;br /&gt;
 MAIN-LOOP.&lt;br /&gt;
    PERFORM READ-LINE THRU READ-LINE-EXIT.&lt;br /&gt;
    MOVE CORRESPONDING FORMATED-INPUT-AREA TO&lt;br /&gt;
          WS-OUTPUT-REPORT-LINE.&lt;br /&gt;
   WRITE OUT-BUFFER FROM WS-OUTPUT-REPORT-LINE.&lt;br /&gt;
&lt;br /&gt;
              *&lt;br /&gt;
              *  READ-LINE CALLS CVTFLAG (CONVERT FLAGS) &lt;br /&gt;
              *  TO PROCESS MODEL 204 OUTPUT FROM IFREAD &lt;br /&gt;
              *&lt;br /&gt;
               READ-LINE.&lt;br /&gt;
                  MOVE SPACES TO INPUT-AREA.&lt;br /&gt;
                  CALL &amp;quot;IFREAD&amp;quot; USING READ-STAT, INPUT-AREA, INPUT-FLAGS.&lt;br /&gt;
                  IF READ-STAT = 100 GO TO TERMINATION.&lt;br /&gt;
                  DISPLAY &amp;quot;IFREAD STATUS &amp;quot;, READ-STAT, &amp;quot; DATA &amp;quot;, INPUT-AREA.&lt;br /&gt;
                  CALL &amp;quot;CVTFLAG&amp;quot; USING INPUT-FLAGS, IFREAD-FLAGS.&lt;br /&gt;
                  MOVE ZERO TO INPUT-FLAGS.&lt;br /&gt;
                  IF USER-RESTARTED&lt;br /&gt;
                      GO TO TERMINATION.&lt;br /&gt;
                  IF ERROR-MSG OR INFO-MSG&lt;br /&gt;
                      GO TO READ-LINE.&lt;br /&gt;
               READ-LINE-EXIT.&lt;br /&gt;
                  EXIT.&lt;br /&gt;
              *&lt;br /&gt;
               ERROR-ROUTINE.&lt;br /&gt;
                  MOVE STATUS-IND TO DISPLAY-STATUS-IND.&lt;br /&gt;
                  DISPLAY &amp;quot;CRITICAL ERROR ENCOUNTERED WITH FUNCTION: &amp;quot;&lt;br /&gt;
                      ERROR-FUNCTION &amp;quot;, WITH A RETURN CODE OF: &amp;quot;&lt;br /&gt;
                      DISPLAY-STATUS-IND.&lt;br /&gt;
                  MOVE SPACES TO ERROR-FUNCTION.&lt;br /&gt;
                  MOVE SPACES TO M204-ERR-MESSAGE.&lt;br /&gt;
                  IF ERROR-FUNCTION NOT EQUAL &amp;quot;IFHNGUP&amp;quot; THEN&lt;br /&gt;
                      PERFORM TERMINATION.&lt;br /&gt;
              *&lt;br /&gt;
               TERMINATION.&lt;br /&gt;
                  CLOSE REPORT-FILE.&lt;br /&gt;
                  CALL &amp;quot;IFHNGUP&amp;quot; USING STATUS-IND.&lt;br /&gt;
                  IF STATUS-IND NOT EQUAL 0 THEN&lt;br /&gt;
                      MOVE &amp;quot;IFHNGUP&amp;quot; TO ERROR-FUNCTION&lt;br /&gt;
                      PERFORM ERROR-ROUTINE.&lt;br /&gt;
                  STOP RUN.&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Using a special purpose subroutine==&lt;br /&gt;
&lt;br /&gt;
===Sample subroutine to convert IFREAD flags===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
IFREAD returns a message descriptor flag as a series of bits. Each bit indicates the type of data received, the password prompt, error messages, and so on. The CVTFLAG (convert flags) subroutine example in [[#Sample assembly language subroutine to convert IFREAD flags|Sample assembly language subroutine to convert IFREAD flags]] translates the IFREAD flags to COBOL character strings and refers to them with Level 88 statements. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The following sample COBOL program calls this subroutine after issuing the IFREAD call. Refer to the &amp;lt;var class=&amp;quot;book&amp;quot;&amp;gt;Rocket Model 204 Host Language Interface Reference Manual&amp;lt;/var&amp;gt; for a description of the IFREAD call. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;sample3&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;caption&amp;quot;&amp;gt;Sample assembly language subroutine to convert IFREAD flags&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;CVTFLAG CSECT 0&lt;br /&gt;
       ENTRY CVTFLAG&lt;br /&gt;
*&lt;br /&gt;
* SAMPLE ASSEMBLY LANGUAGE PROGRAM FOR TRANSLATING THE&lt;br /&gt;
* MESSAGE DESCRIPTOR FIELD RETURNED AS THE THIRD ARGUMENT&lt;br /&gt;
* OF THE IFREAD CALL.&lt;br /&gt;
*&lt;br /&gt;
* THIS MODULE EXPECTS TWO PARAMETERS. THE FIRST IS THE&lt;br /&gt;
* THIRD PARAMETER RETURNED BY THE IFREAD CALL, THE MESSAGE&lt;br /&gt;
* DESCRIPTOR FIELD. THIS FIELD SHOULD BE DEFINED AS:&lt;br /&gt;
*   01 MSG-DESC-FIELD PICTURE 9(8) COMP SYNC.&lt;br /&gt;
*&lt;br /&gt;
* THE SECOND PARAMETER IS AN 01 LEVEL WORKING STORAGE AREA&lt;br /&gt;
* DEFINED AS FOLLOWS:&lt;br /&gt;
*&lt;br /&gt;
*   01 IFREAD-FLAGS.&lt;br /&gt;
*      05 IFREAD-MSG-LENGTH        PICTURE 9999 COMP SYNC.&lt;br /&gt;
*      05 IFDIAL-ERROR-MSG         PICTURE X  VALUE &amp;#039;N&amp;#039;.&lt;br /&gt;
*      88 ERROR-MSG                           VALUE &amp;#039;Y&amp;#039;&lt;br /&gt;
*      05 IFDIAL-NEW-PAGE          PICTURE X  VALUE &amp;#039;N&amp;#039;.&lt;br /&gt;
*      88 NEW-PAGE                            VALUE &amp;#039;Y&amp;#039;&lt;br /&gt;
*      05 IFDIAL-USER-RESTARTED    PICTURE X  VALUE &amp;#039;N&amp;#039;.&lt;br /&gt;
*      88 USER-RESTARTED                      VALUE &amp;#039;Y&amp;#039;&lt;br /&gt;
*      05 IFDIAL-PASSWORD-REQUEST  PICTURE X  VALUE &amp;#039;N&amp;#039;.&lt;br /&gt;
*      88 PASSWORD-REQUEST                    VALUE &amp;#039;Y&amp;#039;&lt;br /&gt;
*      05 IFDIAL-READ-REQUEST      PICTURE X  VALUE &amp;#039;N&amp;#039;.&lt;br /&gt;
*      88 READ-REQUEST                        VALUE &amp;#039;Y&amp;#039;&lt;br /&gt;
*      05 IFDIAL-INFO-MSG          PICTURE X  VALUE &amp;#039;N&amp;#039;.&lt;br /&gt;
*      88 INFO-MSG                           VALUE &amp;#039;Y&amp;#039; &lt;br /&gt;
&lt;br /&gt;
* THE CVTFLAGS SUBROUTINE MOVES THE FIRST HALF WORD OF THE&lt;br /&gt;
* MESSAGE DESCRIPTOR FIELD MINUS 4 TO THE FIELD DESCRIBED&lt;br /&gt;
* ABOVE AS &amp;#039;IFREAD-MSG-LENGTH&amp;#039;. THIS IS THE TRUE LENGTH&lt;br /&gt;
* OF THE DATA RECEIVED. THE SUBROUTINE THEN EXAMINES THE&lt;br /&gt;
* FLAGS IN THE THIRD BYTE OF THE MESSAGE DESCRIPTOR FIELD&lt;br /&gt;
* AND SET THE CORRESPONDING FLAGS IN THE COBOL WORKING&lt;br /&gt;
* STORAGE AREA TO &amp;#039;Y&amp;#039;. EACH TIME THE SUBROUTINE IS CALLED&lt;br /&gt;
* ALL THE FLAGS ARE SET TO &amp;#039;N&amp;#039; THEN THE APPROPRIATE FLAGS&lt;br /&gt;
* ARE SET TO &amp;#039;Y&amp;#039;. THE WORKING STORAGE FIELDS MUST BE ARRANGED&lt;br /&gt;
* AS DESCRIBED ABOVE. THE LEVEL 88 FIELDS ARE OPTIONAL.&lt;br /&gt;
*&lt;br /&gt;
* NOTE: THIS SUBROUTINE IS AN EXAMPLE ONLY AND IS NOT SUPPORTED&lt;br /&gt;
*       BY ROCKET SOFTWARE.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
**********&lt;br /&gt;
         REGEQU                 SET REGISTER SYMBOLS&lt;br /&gt;
         STM  R14,R12,12(R13)   SAVE REGISTER&lt;br /&gt;
         LR   12,15             SET BASE REGISTER&lt;br /&gt;
        USING CVTFLAG,R12       ESTABLISH ADDRESSING&lt;br /&gt;
         LR   R11,R13           SET UP SAVE AREA LINKAGE&lt;br /&gt;
         LA   R13,SAVEAREA&lt;br /&gt;
         ST   R11,4(R13)&lt;br /&gt;
         ST   R13,8(R11)&lt;br /&gt;
*&lt;br /&gt;
*        PROGRAM LOGIC STARTS HERE&lt;br /&gt;
*&lt;br /&gt;
* ADDRESS PARAMETERS&lt;br /&gt;
         L    R2,0(R1)       R2, INPUT PARAMETER ADDRESS&lt;br /&gt;
         L    R3,4(R1)       R3, OUTPUT PARAMETER LIST&lt;br /&gt;
        USING WSPARM,R3      ADDRESSING TO WS PARM AREA&lt;br /&gt;
* RETURN LENGTH TO CALLER&lt;br /&gt;
         L    R4,0(R2)       R4, PARAMETER WORD&lt;br /&gt;
         SRL  R4,16          SHIFT 16 BITS LEFT, LEAVING LENGTH&lt;br /&gt;
         SH   R4,=Y(4)       DECREMENT LENGTH BY 4 ACTUAL LEN.&lt;br /&gt;
         STH  R4,LENGTH      MOVE ACTUAL LENGTH TO USER&lt;br /&gt;
* RETURN FLAGS TO CALLER&lt;br /&gt;
         MVI  EMSG,C&amp;#039;N&amp;#039;      CLEAR ALL ERROR MESSAGES&lt;br /&gt;
         MVC  EMSG+1(FLAGLEN-1),EMSG PROPAGATE &amp;#039;N&amp;#039; TO ALL FLAGS&lt;br /&gt;
         TM   2(R2),X&amp;#039;80&amp;#039;    CLASS E MSG ?&lt;br /&gt;
         BZ   *+4+4          NO, NEXT TEST&lt;br /&gt;
         MVI  EMSG,C&amp;#039;Y&amp;#039;      YES, TURN ON FLAG&lt;br /&gt;
         TM   2(R2),X&amp;#039;40&amp;#039;    NEW PAGE ?&lt;br /&gt;
         BZ   *+4+4          NO, NEXT TEST&lt;br /&gt;
         MVI  NPAGE,C&amp;#039;Y&amp;#039;     YES, TURN ON FLAG&lt;br /&gt;
         TM   2(R2),X&amp;#039;20&amp;#039;    RESTARTED ?&lt;br /&gt;
         BZ   *+4+4          NO, NEXT TEST&lt;br /&gt;
         MVI  RESTART,C&amp;#039;Y&amp;#039;   YES, TURN ON FLAG&lt;br /&gt;
         TM   2(R2),X&amp;#039;10&amp;#039;    PASSWORD ?&lt;br /&gt;
         BZ   *+4+4          NO, NEXT TEST&lt;br /&gt;
         MVI  PASSWORD,C&amp;#039;Y&amp;#039;  YES, TURN ON FLAG&lt;br /&gt;
         TM   2(R2),X&amp;#039;08&amp;#039;    READ PROMPT ?&lt;br /&gt;
         BZ   *+4+4          NO, NEXT TEST&lt;br /&gt;
         MVI  READ,C&amp;#039;Y&amp;#039;      YES, TURN ON FLAG&lt;br /&gt;
         TM   2(R2),X&amp;#039;04&amp;#039;    CLASS I MESSAGE&lt;br /&gt;
         BZ   *+4+4 NO,      ALL DONE&lt;br /&gt;
         MVI  INFO,C&amp;#039;Y&amp;#039;      YES, TURN ON FLAG&lt;br /&gt;
*&lt;br /&gt;
* 	RETURN TO CALLER&lt;br /&gt;
*&lt;br /&gt;
         L    R13,SAVEAREA+4 RESTORE CALLERS REGISTERS&lt;br /&gt;
         LM   R14,R12,12(R13)&lt;br /&gt;
         SR   R15,R15        CLEAR R15 JUST FOR GOOD FORM&lt;br /&gt;
         BR   14             RETURN TO CALLER&lt;br /&gt;
        DROP R12,R3 END ADDRESSING TO BASE, WSPARM&lt;br /&gt;
         LTORG&lt;br /&gt;
&lt;br /&gt;
SAVEAREA DS            18F&amp;#039;0&amp;#039;&lt;br /&gt;
WSPARM   DSECT         MAP OF COBOL WORKING STORAGE RET ARGS.&lt;br /&gt;
LENGTH   DS H&amp;#039;0&amp;#039;       LENGTH OF MESSAGE&lt;br /&gt;
EMSG     DS X          ERROR CLASS OF MSG&lt;br /&gt;
NPAGE    DS X          NEW PAGE INDICATOR&lt;br /&gt;
RESTART  DS X          USER RESTARTED&lt;br /&gt;
PASSWORD DS X          PASSWORD PROMPT&lt;br /&gt;
READ     DS X          READ PROMPT&lt;br /&gt;
INFO     DS X          I CLASS MESSAGE&lt;br /&gt;
FLAGLEN   EQU *-EMSG   NUMBER OF 1 BYTE FLAGS&lt;br /&gt;
         END &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Coding guidelines for IFDIAL applications==&lt;br /&gt;
&lt;br /&gt;
===Designing your IFDIAL application===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Design your HLI application program and SOUL procedure to work together. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example, your HLI application reads a list of accounting numbers to generate a report. The HLI application sends an account number to the SOUL procedure. After the SOUL procedure receives the account record and performs data manipulation, Model 204 returns the data to the HLI program for final reporting. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When the HLI program sends an account number, the SOUL procedure must be expecting it. Conversely, when the SOUL procedure sends a completed record, the HLI program must be expecting it. The two programs must be synchronous so that the data is usable. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To minimize programming time and effort and to maximize processing efficiency, write a general purpose IFDIAL application that uses basic IFREAD and IFWRITE logic but does not perform data operations. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Design your generic IFDIAL application so that it can be used with a variety of SOUL procedures. Allow the SOUL procedure to do the work of manipulating data and formatting reports. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Note that Model 204 provides a [[Program Communication facilities#BATCH2 facility|BATCH2 utility]] that allows you to run a SOUL procedure without having to code an IFDIAL application.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Checking the Model 204 completion return code===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Always check the Model 204 completion return code from the IFREAD or IFWRITE call previously issued to ensure that the next call issued by the HLI application is the one that is expected by Model 204. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A return code of 1 from IFREAD or IFWRITE requires an IFWRITE next; or, a return code of 2 requires an IFREAD next. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Writing special purpose subroutines===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Write special purpose subroutines to simplify IFDIAL logic, such as for login or user restart. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Formatting data===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The format of the data to be exchanged in your HLI application and SOUL programs must agree.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sending and receiving Model 204 images===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When sending and receiving Model 204 images, be sure that the working storage definition and the image correspond. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To send images from your SOUL procedure to your IFDIAL host language program, use the following statement: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;WRITE IMAGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; TO TERMINAL &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
To transmit data from your IFDIAL host language program to your SOUL procedure, use the following statement: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;syntax&amp;quot;&amp;gt;READ IMAGE &amp;lt;span class=&amp;quot;term&amp;quot;&amp;gt;imagename&amp;lt;/span&amp;gt; FROM TERMINAL &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[#Sending and receiving Model 204 images|Sending and receiving Model 204 images]] for more information about images. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Handling terminal messages and prompt strings===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Because IFDIAL uses a terminal-type interface, you are responsible for messages and prompt strings. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Encapsulate IFREAD and IFWRITE calls in your subroutines or paragraphs to filter out messages and error codes and return only the expected data to the application. &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; IFREAD returns message descriptor flags as a series of bits. Each bit indicates the type of data received, the password prompt, error messages, and so on. &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
The [[#sample3|CVTFLAG (convert flags) subroutine example]] translates the IFREAD flags to COBOL character strings and refers to them with Level 88 statements.  &amp;lt;/p&amp;gt;&lt;br /&gt;
===Use IFATTN to activate ON attention===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
As with terminal applications, you can use the ON attention SOUL function. The IFATTN call activates ON attention. This attention interrupt is useful to escape out of any processing loop that two programs may engage in.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using stored procedure calls===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When using stored procedure calls, if your HLI application has many distinct functions, construct a separate SOUL procedure to handle each function.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
For example, if your HLI program adds, deletes, and modifies records based on a transaction file, invoke a separate SOUL procedure for each function.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Using an application subsystem===&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
When using stored procedure calls, if your HIL program invokes many SOUL procedures, install the procedures as Application Subsystem (APSY) to minimize overload.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
See [[Application Subsystem development]] for information about the Application Subsystem facility.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template: HLI topic list}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Host Language Interface]]&lt;/div&gt;</summary>
		<author><name>ELowell</name></author>
	</entry>
</feed>