<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://groupkos.com/dev/index.php?action=history&amp;feed=atom&amp;title=QAT_Code%3A_Whse_Class</id>
	<title>QAT Code: Whse Class - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://groupkos.com/dev/index.php?action=history&amp;feed=atom&amp;title=QAT_Code%3A_Whse_Class"/>
	<link rel="alternate" type="text/html" href="http://groupkos.com/dev/index.php?title=QAT_Code:_Whse_Class&amp;action=history"/>
	<updated>2026-04-17T22:44:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>http://groupkos.com/dev/index.php?title=QAT_Code:_Whse_Class&amp;diff=945&amp;oldid=prev</id>
		<title>XenoEngineer at 00:30, 24 July 2023</title>
		<link rel="alternate" type="text/html" href="http://groupkos.com/dev/index.php?title=QAT_Code:_Whse_Class&amp;diff=945&amp;oldid=prev"/>
		<updated>2023-07-24T00:30:03Z</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 00:30, 24 July 2023&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-l2&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&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;{{headerQATcode| &amp;amp;mdash;Warehouse Class Code}}&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;{{headerQATcode| &amp;amp;mdash;Warehouse Class Code}}&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;[[Category:QAT.clsWhse]]&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:QAT.clsWhse]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;== A VB6 class wrapper around the [[:category:QAT|QAT]] Warehouse methods ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&amp;lt;pre class=&quot;crt-screen&quot; style=&quot;width:auto; height:700px;&quot;&gt;&lt;/ins&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;&amp;lt;div style=&quot;background:azure; border:1px outset azure; margin:1em 2em; padding:0 1em; width:888px;&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;Option Explicit &amp;#039; Forces variable declaration in the compile.&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;Option Explicit &amp;#039; Forces variable declaration in the compile.&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-l258&quot;&gt;Line 258:&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;div&gt;End Function&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 Function&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;&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; 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;&#039;public Function iFnData_ExtractAtoms(Optional ByVal TopicName As String = &quot;A1&quot;) As Boolean&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; 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;&#039;    Dim ndx As Long&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; 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;&#039;    Dim lngCount As Long&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; 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;&#039;    Dim strSplitPairs() As String &#039;array&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; 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;&#039;&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; 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;&#039;    Dim lngLength As Long&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; 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;&#039;    Dim strAtom As String&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; 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;&#039;    Dim strPairs As String&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; 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;&#039;    Dim intExtractions As Integer&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; 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;&#039;&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; 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;&#039;    On Error Resume Next&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; 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;&#039;&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; 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;&#039;    Screen.MousePointer = vbHourglass&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; 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;&#039;&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; 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;&#039;    RaiseEvent CommandResponse(&quot;Extracting unique members from Paired.txt...&quot;)&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; 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;&#039;&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; 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;&#039;&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; 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;&#039;    &#039;   Flatten the inner and outer delimiters to the same (Replace &quot;**&quot; with CRLF )&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; 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;&#039;    strPairs = Replace(strPairs, &quot;**&quot;, vbCrLf)&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; 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;&#039;&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; 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;&#039;    &#039;   Split the delimited members to an array&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; 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;&#039;    strSplitPairs = Split(strPairs, vbCrLf)&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; 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;&#039;&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; 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;&#039;    &#039;   Loop through array, checking for new Members from Pairs&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; 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;&#039;    lngCount = UBound(strSplitPairs)&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; 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;&#039;    For ndx = 0 To lngCount&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; 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;&#039;        &#039;   Test that the array element is in the Atoms buffer&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; 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;&#039;&#039;        If InStr(1, mstrAtomsStringBuffer, strSplitPairs(ndx)) = 0 Then &#039;not there&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; 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;&#039;&#039;            &#039;   Concatenate the new randomized atom to the buffer at the beginning&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; 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;&#039;&#039;            mstrAtomsStringBuffer = strSplitPairs(ndx) &amp;amp; vbTab &amp;amp; CStr(Int(Rnd * 360) + 1) &amp;amp; vbCrLf &amp;amp; mstrAtomsStringBuffer&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; 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;&#039;&#039;            intExtractions = intExtractions + 1&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; 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;&#039;&#039;        End If&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; 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;&#039;    Next&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; 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;&#039;&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; 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;&#039;    &#039;   Remove the trailing delimiter&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; 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;&#039;    &#039;mstrAtomsStringBuffer = Left$(mstrAtomsStringBuffer, Len(mstrAtomsStringBuffer) - 1)&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; 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;&#039;&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; 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;&#039;    &#039;   The reduced set of Pairs is now a unique set of delimited Atoms in mstrAtomsStringBuffer.&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; 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;&#039;&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; 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;&#039;    &#039;   Write the fresh Members data to file as the Members of the top Topic named&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; 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;&#039;    &#039;   the value in &#039;TopicName&#039; in a folder named by the value in &#039;TopicName&#039;&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; 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;&#039;    With New clsFile&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; 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;&#039;&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; 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;&#039;        &#039;   Create a new top distribution if non-existant,&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; 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;&#039;        &#039;   or query the user for overwrite permission,&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; 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;&#039;        &#039;   else bail, no persistence -- no existence&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; 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;&#039;        Select Case .FileExists(mstrDataPath &amp;amp; &quot;\&quot; &amp;amp; TopicName &amp;amp; &quot;\Members.txt&quot;)&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; 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;&#039;&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; 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;&#039;            Case True&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; 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;&#039;&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; 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;&#039;                If MsgBox(&quot;Overwrite the Members.txt file for Topic &quot; &amp;amp; TopicName &amp;amp; &quot;?&quot;, vbYesNo + vbQuestion + vbDefaultButton2, &quot;Random distribution available&quot;) = vbYes Then&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; 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;&#039;                    If .Save(mstrAtomsStringBuffer, UseAppend:=False) Then&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; 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;&#039;                        &#039;   Create (or err past if existing) a folder for the top node, named A1&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; 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;&#039;                        iFnData_ExtractAtoms = True&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; 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;&#039;                    Else&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; 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;&#039;                        RaiseEvent CommandResponse(&quot;Unable to save the Atoms extracted from Paired.txt to &quot; &amp;amp; .Filespec)&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; 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;&#039;                        MsgBox &quot;Unable to save the Atoms extracted from Paired.txt to: &quot; &amp;amp; .Filespec&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; 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;&#039;                    End If&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; 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;&#039;                End If&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; 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;&#039;&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; 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;&#039;            Case False&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; 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;&#039;&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; 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;&#039;                &#039;   Create the new Topic Folder&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; 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;&#039;                MkDir Root.DataPath &amp;amp; &quot;\&quot; &amp;amp; TopicName&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; 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;&#039;&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; 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;&#039;&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; 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;&#039;                If .Save(mstrAtomsStringBuffer) Then&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; 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;&#039;                    RaiseEvent CommandResponse(&quot;Extracted Atoms saved to &quot; &amp;amp; .Filespec)&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; 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;&#039;                    iFnData_ExtractAtoms = True&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; 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;&#039;                Else&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; 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;&#039;                    RaiseEvent CommandResponse(&quot;Unable to save the Atoms extracted from Paired.txt to: &quot; &amp;amp; .Filespec)&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; 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;&#039;                    MsgBox &quot;Unable to save the Atoms extracted from Paired.txt to: &quot; &amp;amp; .Filespec&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; 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;&#039;                End If&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; 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;&#039;&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; 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;&#039;        End Select&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; 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;&#039;    End With&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; 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;&#039;&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; 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;&#039;    RaiseEvent CommandResponse(&quot;Extraction of member atoms complete. &quot; &amp;amp; CStr(intExtractions) &amp;amp; &quot; members extracted.&quot;)&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; 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;&#039;&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; 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;&#039;    Screen.MousePointer = vbDefault&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; 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;&#039;&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; 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;&#039;End Function&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;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;Public Function TrimTrailingCharacters(ByRef Source As String, ByVal Characters As String) As String&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;Public Function TrimTrailingCharacters(ByRef Source As String, ByVal Characters As String) As String&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-l793&quot;&gt;Line 793:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 711:&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;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;&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;div&lt;/del&gt;&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;&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pre&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>XenoEngineer</name></author>
	</entry>
	<entry>
		<id>http://groupkos.com/dev/index.php?title=QAT_Code:_Whse_Class&amp;diff=640&amp;oldid=prev</id>
		<title>XenoEngineer: Created page with &quot;{{headerQuasiAI|subcat=QAT.code}} {{headerQATcode| &amp;mdash;Warehouse Class Code}} Category:QAT.clsWhse  &lt;div style=&quot;background:azure; border:1px outset azure; margin:1em 2em; padding:0 1em; width:888px;&quot;&gt; Option Explicit &#039; Forces variable declaration in the compile.  &#039; Publicly visible &#039;Events&#039; raised to callback-functions from within this class. Public Event CommandResponse(ByVal Message As String)      &#039;   In-class functions communicate functional-process outcome to...&quot;</title>
		<link rel="alternate" type="text/html" href="http://groupkos.com/dev/index.php?title=QAT_Code:_Whse_Class&amp;diff=640&amp;oldid=prev"/>
		<updated>2023-07-14T11:43:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{headerQuasiAI|subcat=QAT.code}} {{headerQATcode| —Warehouse Class Code}} &lt;a href=&quot;/dev/index.php?title=Category:QAT.clsWhse&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Category:QAT.clsWhse (page does not exist)&quot;&gt;Category:QAT.clsWhse&lt;/a&gt;  &amp;lt;div style=&amp;quot;background:azure; border:1px outset azure; margin:1em 2em; padding:0 1em; width:888px;&amp;quot;&amp;gt; Option Explicit &amp;#039; Forces variable declaration in the compile.  &amp;#039; Publicly visible &amp;#039;Events&amp;#039; raised to callback-functions from within this class. Public Event CommandResponse(ByVal Message As String)      &amp;#039;   In-class functions communicate functional-process outcome to...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{headerQuasiAI|subcat=QAT.code}}&lt;br /&gt;
{{headerQATcode| &amp;amp;mdash;Warehouse Class Code}}&lt;br /&gt;
[[Category:QAT.clsWhse]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:azure; border:1px outset azure; margin:1em 2em; padding:0 1em; width:888px;&amp;quot;&amp;gt;&lt;br /&gt;
Option Explicit &amp;#039; Forces variable declaration in the compile.&lt;br /&gt;
&lt;br /&gt;
&amp;#039; Publicly visible &amp;#039;Events&amp;#039; raised to callback-functions from within this class.&lt;br /&gt;
Public Event CommandResponse(ByVal Message As String)      &amp;#039;   In-class functions communicate functional-process outcome to interface-code for interface-updates.&lt;br /&gt;
Public Event DataLoaded(ByRef oFile As clsFile)       &amp;#039;   This class instance will call the &amp;#039;DataLoaded&amp;#039; form module &amp;#039;event code&amp;#039;.&lt;br /&gt;
Public Event ConjectureChanged(ByVal ConjColumnAtom As Long, ByVal ConjColumnLink As Long)&lt;br /&gt;
&lt;br /&gt;
Public Event AtomsExtracted()&lt;br /&gt;
Public Event MartPulled()&lt;br /&gt;
Public Event PairsExported()&lt;br /&gt;
Public Event WarehouseUnloaded()&lt;br /&gt;
&lt;br /&gt;
Public Event Progress(ByRef msg As String)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;   Properties&lt;br /&gt;
Private mstrDataFile                As String&lt;br /&gt;
Private mlngDataRowCount            As Long&lt;br /&gt;
Private mlngDataHeaderRowIndex      As Long     &amp;#039;   An index pointing within a zero-based array to a data row with column-header captions.&lt;br /&gt;
Private mstrDataRowDelimiter        As String&lt;br /&gt;
Private mstrDataColumnDelimiter     As String&lt;br /&gt;
&lt;br /&gt;
Private mlngConjAtomColumn          As Long&lt;br /&gt;
Private mlngConjLinkColumn          As Long&lt;br /&gt;
&lt;br /&gt;
Private mbooCancel                  As Boolean  &amp;#039;   Checked in long iterations: Combinatoric generation per Atom-Link conjecture match.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;   Class state (code in this class that toggles these state variables also raise an &amp;#039;event&amp;#039;).&lt;br /&gt;
Private mbooDataLoaded              As Boolean&lt;br /&gt;
Private mbooConjValid               As Boolean&lt;br /&gt;
Private mbooMartPulled              As Boolean&lt;br /&gt;
Private mbooAtomsExtracted          As Boolean&lt;br /&gt;
Private mbooLinksExtracted          As Boolean&lt;br /&gt;
Private mbooPairsExported           As Boolean&lt;br /&gt;
&lt;br /&gt;
&amp;#039;   Class data arrays&lt;br /&gt;
Private mstrDataArray()             As String   &amp;#039;   array of data rows&lt;br /&gt;
Private mstrDataHeaderRow()         As String   &amp;#039;   array of data header-row fields (1st row from file)&lt;br /&gt;
Private mstrMartArray()             As String   &amp;#039;   array column data selected by Conjecture options&lt;br /&gt;
&lt;br /&gt;
&amp;#039;   Processed data arrays&lt;br /&gt;
Private mstrPairsArray()            As String   &amp;#039;   Atom pairs of ColA sharing Links&lt;br /&gt;
Private mstrLinksArray()            As String   &amp;#039;   Links of ColB per Atom&lt;br /&gt;
&lt;br /&gt;
Private mcolAtoms()                 As String   &amp;#039;   Hash array of VB String values as a Microsoft VB 6 keyed-collection object.&lt;br /&gt;
&lt;br /&gt;
Private Sub Class_Initialize()&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Private Sub Class_Terminate()&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Function Combinatorics(ByVal TabularString As String) As String()&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Return a string array loaded with all the combinations of SecNames&lt;br /&gt;
    &amp;#039;   in TabularString, ignoring the first tabular string entry, which is an Atom FirstName&lt;br /&gt;
    Dim maxName             As Long&lt;br /&gt;
    Dim maxNdx              As Long&lt;br /&gt;
    Dim moduloNdx           As Long&lt;br /&gt;
    Dim strCombinations()   As String &amp;#039;array&lt;br /&gt;
    Dim strNames()          As String &amp;#039;array&lt;br /&gt;
    Dim ndxCombination      As Long&lt;br /&gt;
    Dim j, k, intLast       As Integer&lt;br /&gt;
    &lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   TabularString format (Paired)&lt;br /&gt;
    &amp;#039;   FirName Tab SecName1 Tab SecName2 Tab SecName3...&lt;br /&gt;
    &lt;br /&gt;
    With New clsStopWatch&lt;br /&gt;
        .Reset&lt;br /&gt;
        &lt;br /&gt;
        TrimTrailingCharacters TabularString, vbTab&lt;br /&gt;
        &lt;br /&gt;
        strNames = Split(TabularString, vbTab)&lt;br /&gt;
        &amp;#039;Note: the first array element is a firstName, not to be combined&lt;br /&gt;
        &lt;br /&gt;
        maxName = UBound(strNames)&lt;br /&gt;
        maxNdx = maxName&lt;br /&gt;
        &lt;br /&gt;
        If maxName &amp;gt; 1 Then &amp;#039;  0,1 and 2 elements -- 0= FirName; 1,2= Secnames&lt;br /&gt;
           &lt;br /&gt;
            &amp;#039;   Redim to something larger than typically expected&lt;br /&gt;
            &amp;#039;   Redim again later to size used after loading array&lt;br /&gt;
            ReDim strCombinations(maxName * maxName)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;Debug.Print vbCrLf &amp;amp; &amp;quot;Combining FirName: &amp;quot; &amp;amp; strNames(0)&lt;br /&gt;
            &lt;br /&gt;
            If mbooCancel Then Exit Function&lt;br /&gt;
                                                         &lt;br /&gt;
            If maxName &amp;gt; 1 Then &amp;#039;   very key factor&lt;br /&gt;
                &amp;#039;   Key factor: if maxName is larger than two (larger than 1 for zero-based array elements)&lt;br /&gt;
                &amp;#039;               then at least a pair of mart rows matching columns A-Names&lt;br /&gt;
                &amp;#039;               are sharing a B-Name&lt;br /&gt;
                For k = 1 To maxName - 1    &amp;#039; Start with element 1 of the zero-based strNames() array.&lt;br /&gt;
                    DoEvents&lt;br /&gt;
                                        &lt;br /&gt;
                    For j = 1 To (maxName - k)&lt;br /&gt;
                        &amp;#039;   Check array size and redim if more elements are needed&lt;br /&gt;
                        If ndxCombination &amp;gt; maxNdx Then&lt;br /&gt;
                            maxNdx = maxNdx + 1000&lt;br /&gt;
                            ReDim Preserve strCombinations(maxNdx)&lt;br /&gt;
                            &amp;#039;Debug.Print &amp;quot;maxNdx: &amp;quot; &amp;amp; maxNdx&lt;br /&gt;
                        End If&lt;br /&gt;
                        &lt;br /&gt;
                        &amp;#039;   Add the combination to the output array&lt;br /&gt;
                        strCombinations(ndxCombination) = strNames(k) &amp;amp; &amp;quot;**&amp;quot; &amp;amp; strNames(k + j)&lt;br /&gt;
                                                                        &lt;br /&gt;
                        &amp;#039;Debug.Print &amp;quot;(&amp;quot; &amp;amp; CStr(k) &amp;amp; &amp;quot;)-(&amp;quot; &amp;amp; CStr(k + j) &amp;amp; &amp;quot;) = &amp;quot; &amp;amp; strCombinations(ndxCombination)&lt;br /&gt;
                        ndxCombination = ndxCombination + 1&lt;br /&gt;
                        If moduloNdx Mod 5 = 0 Then&lt;br /&gt;
                            RaiseEvent Progress(&amp;quot;Expanding combinatorics: &amp;quot; &amp;amp; CStr(moduloNdx))&lt;br /&gt;
                            DoEvents&lt;br /&gt;
                            If mbooCancel Then Exit Function&lt;br /&gt;
                        End If&lt;br /&gt;
                    Next&lt;br /&gt;
                    moduloNdx = moduloNdx + 1&lt;br /&gt;
                Next&lt;br /&gt;
                &lt;br /&gt;
                &amp;#039;   Redim the combinations array to the size used&lt;br /&gt;
                ReDim Preserve strCombinations(ndxCombination - 1)&lt;br /&gt;
                &lt;br /&gt;
                &amp;#039;   Return the array&lt;br /&gt;
                Combinatorics = strCombinations&lt;br /&gt;
                &lt;br /&gt;
            End If &amp;#039;maxName&lt;br /&gt;
        Else&lt;br /&gt;
            &amp;#039;Debug.Print vbCrLf &amp;amp; &amp;quot;Skipping&amp;quot;&lt;br /&gt;
        End If&lt;br /&gt;
    End With &amp;#039;New clsStopWatch&lt;br /&gt;
    &lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Function EnumeratedColumnNames(HeaderArray As Variant) As String&lt;br /&gt;
    Dim ndx, maxNdx As Integer&lt;br /&gt;
    Dim duplicateArray() As String &amp;#039;array&lt;br /&gt;
    &amp;#039;todo: work this out better&lt;br /&gt;
    If Not IsArray(HeaderArray) Then Exit Function&lt;br /&gt;
    maxNdx = UBound(HeaderArray)&lt;br /&gt;
    &lt;br /&gt;
    ReDim duplicateArray(maxNdx)&lt;br /&gt;
    &lt;br /&gt;
    For ndx = 0 To maxNdx&lt;br /&gt;
        duplicateArray(ndx) = CStr(ndx) &amp;amp; vbTab &amp;amp; HeaderArray(ndx)&lt;br /&gt;
    Next&lt;br /&gt;
    &amp;#039;   Return a string transform of array&lt;br /&gt;
    &amp;#039;   elements delimited by CRLF&lt;br /&gt;
    EnumeratedColumnNames = Join(duplicateArray, vbCrLf)&lt;br /&gt;
    &lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Sub QuickSortVariants( _&lt;br /&gt;
            vArray As Variant, _&lt;br /&gt;
            inLow As Long, _&lt;br /&gt;
            inHi As Long, _&lt;br /&gt;
            ByRef ndx As Long, _&lt;br /&gt;
            ByRef maxNdx As Long)&lt;br /&gt;
      &lt;br /&gt;
    Dim pivot   As Variant&lt;br /&gt;
    Dim tmpSwap As Variant&lt;br /&gt;
    Dim tmpLow  As Long&lt;br /&gt;
    Dim tmpHi   As Long&lt;br /&gt;
        &lt;br /&gt;
    tmpLow = inLow&lt;br /&gt;
    tmpHi = inHi&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Increment completion counter&lt;br /&gt;
    ndx = ndx + 1&lt;br /&gt;
    &lt;br /&gt;
    pivot = vArray((inLow + inHi) \ 2)&lt;br /&gt;
    &lt;br /&gt;
    Me.Cancel = False&lt;br /&gt;
    &lt;br /&gt;
    While (tmpLow &amp;lt;= tmpHi) And Not Me.Cancel&lt;br /&gt;
  &lt;br /&gt;
        While (vArray(tmpLow) &amp;lt; pivot And tmpLow &amp;lt; inHi)&lt;br /&gt;
            tmpLow = tmpLow + 1&lt;br /&gt;
        Wend&lt;br /&gt;
      &lt;br /&gt;
        While (pivot &amp;lt; vArray(tmpHi) And tmpHi &amp;gt; inLow)&lt;br /&gt;
            tmpHi = tmpHi - 1&lt;br /&gt;
        Wend&lt;br /&gt;
&lt;br /&gt;
        If (tmpLow &amp;lt;= tmpHi) Then&lt;br /&gt;
            tmpSwap = vArray(tmpLow)&lt;br /&gt;
            vArray(tmpLow) = vArray(tmpHi)&lt;br /&gt;
            vArray(tmpHi) = tmpSwap&lt;br /&gt;
            tmpLow = tmpLow + 1&lt;br /&gt;
            tmpHi = tmpHi - 1&lt;br /&gt;
            If ndx Mod 100 = 0 Then&lt;br /&gt;
                RaiseEvent Progress(&amp;quot;Sort percentage remaining: &amp;quot; &amp;amp; CStr(CInt((1 - (ndx / maxNdx)) * 10000) / 100))&lt;br /&gt;
                DoEvents&lt;br /&gt;
            End If&lt;br /&gt;
        End If&lt;br /&gt;
   &lt;br /&gt;
    Wend&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    If (inLow &amp;lt; tmpHi) Then QuickSortVariants vArray, inLow, tmpHi, ndx, maxNdx&lt;br /&gt;
    If (tmpLow &amp;lt; inHi) Then QuickSortVariants vArray, tmpLow, inHi, ndx, maxNdx&lt;br /&gt;
  &lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
Public Property Get LinkCount() As Long&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    LinkCount = UBound(mstrLinksArray)&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Function ConjectureCreate( _&lt;br /&gt;
            ByVal AtomColumn As Long, _&lt;br /&gt;
            ByVal LinkColumn As Long _&lt;br /&gt;
            ) As Boolean&lt;br /&gt;
            &lt;br /&gt;
    &amp;#039; Return True if columns are in range, and not equal.&lt;br /&gt;
    &amp;#039; Quietly persist columns set to the INI file.&lt;br /&gt;
    &lt;br /&gt;
    Dim MaxColumn As Integer&lt;br /&gt;
    Dim x() As String&lt;br /&gt;
    &lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    If Not Me.DataLoaded Then&lt;br /&gt;
        RaiseEvent CommandResponse(&amp;quot;Conjecture column cannot be set until the Data is loaded.&amp;quot;)&lt;br /&gt;
    Else&lt;br /&gt;
        MaxColumn = UBound(Split(mstrDataArray(0), vbTab)) &amp;#039; Zero-based array split on the first row in the whse data.&lt;br /&gt;
        &lt;br /&gt;
        &amp;#039;   Validate input (false case)&lt;br /&gt;
        Select Case False&lt;br /&gt;
            Case (AtomColumn &amp;gt;= 0)&lt;br /&gt;
            Case (AtomColumn &amp;lt;= MaxColumn)&lt;br /&gt;
            Case (LinkColumn &amp;gt;= 0)&lt;br /&gt;
            Case (LinkColumn &amp;lt;= MaxColumn)&lt;br /&gt;
            Case (LinkColumn &amp;lt;&amp;gt; AtomColumn)&lt;br /&gt;
            Case Else&lt;br /&gt;
                &amp;#039;   Proceed with validated inputs.&lt;br /&gt;
                &amp;#039;   Store the column indexes.&lt;br /&gt;
                mbooConjValid = True&lt;br /&gt;
                &lt;br /&gt;
                mlngConjAtomColumn = AtomColumn&lt;br /&gt;
                mlngConjLinkColumn = LinkColumn&lt;br /&gt;
                &lt;br /&gt;
                &amp;#039; Save the conjecture columns.&lt;br /&gt;
                INIWrite &amp;quot;Preferences&amp;quot;, &amp;quot;ConjAtomColumnIndex&amp;quot;, mlngConjAtomColumn&lt;br /&gt;
                INIWrite &amp;quot;Preferences&amp;quot;, &amp;quot;ConjLinkColumnIndex&amp;quot;, mlngConjLinkColumn&lt;br /&gt;
                &lt;br /&gt;
        End Select&lt;br /&gt;
    End If &amp;#039;me.DataLoaded&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;public Function iFnData_ExtractAtoms(Optional ByVal TopicName As String = &amp;quot;A1&amp;quot;) As Boolean&lt;br /&gt;
&amp;#039;    Dim ndx As Long&lt;br /&gt;
&amp;#039;    Dim lngCount As Long&lt;br /&gt;
&amp;#039;    Dim strSplitPairs() As String &amp;#039;array&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    Dim lngLength As Long&lt;br /&gt;
&amp;#039;    Dim strAtom As String&lt;br /&gt;
&amp;#039;    Dim strPairs As String&lt;br /&gt;
&amp;#039;    Dim intExtractions As Integer&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    On Error Resume Next&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    Screen.MousePointer = vbHourglass&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    RaiseEvent CommandResponse(&amp;quot;Extracting unique members from Paired.txt...&amp;quot;)&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    &amp;#039;   Flatten the inner and outer delimiters to the same (Replace &amp;quot;**&amp;quot; with CRLF )&lt;br /&gt;
&amp;#039;    strPairs = Replace(strPairs, &amp;quot;**&amp;quot;, vbCrLf)&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    &amp;#039;   Split the delimited members to an array&lt;br /&gt;
&amp;#039;    strSplitPairs = Split(strPairs, vbCrLf)&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    &amp;#039;   Loop through array, checking for new Members from Pairs&lt;br /&gt;
&amp;#039;    lngCount = UBound(strSplitPairs)&lt;br /&gt;
&amp;#039;    For ndx = 0 To lngCount&lt;br /&gt;
&amp;#039;        &amp;#039;   Test that the array element is in the Atoms buffer&lt;br /&gt;
&amp;#039;&amp;#039;        If InStr(1, mstrAtomsStringBuffer, strSplitPairs(ndx)) = 0 Then &amp;#039;not there&lt;br /&gt;
&amp;#039;&amp;#039;            &amp;#039;   Concatenate the new randomized atom to the buffer at the beginning&lt;br /&gt;
&amp;#039;&amp;#039;            mstrAtomsStringBuffer = strSplitPairs(ndx) &amp;amp; vbTab &amp;amp; CStr(Int(Rnd * 360) + 1) &amp;amp; vbCrLf &amp;amp; mstrAtomsStringBuffer&lt;br /&gt;
&amp;#039;&amp;#039;            intExtractions = intExtractions + 1&lt;br /&gt;
&amp;#039;&amp;#039;        End If&lt;br /&gt;
&amp;#039;    Next&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    &amp;#039;   Remove the trailing delimiter&lt;br /&gt;
&amp;#039;    &amp;#039;mstrAtomsStringBuffer = Left$(mstrAtomsStringBuffer, Len(mstrAtomsStringBuffer) - 1)&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    &amp;#039;   The reduced set of Pairs is now a unique set of delimited Atoms in mstrAtomsStringBuffer.&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    &amp;#039;   Write the fresh Members data to file as the Members of the top Topic named&lt;br /&gt;
&amp;#039;    &amp;#039;   the value in &amp;#039;TopicName&amp;#039; in a folder named by the value in &amp;#039;TopicName&amp;#039;&lt;br /&gt;
&amp;#039;    With New clsFile&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;        &amp;#039;   Create a new top distribution if non-existant,&lt;br /&gt;
&amp;#039;        &amp;#039;   or query the user for overwrite permission,&lt;br /&gt;
&amp;#039;        &amp;#039;   else bail, no persistence -- no existence&lt;br /&gt;
&amp;#039;        Select Case .FileExists(mstrDataPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; TopicName &amp;amp; &amp;quot;\Members.txt&amp;quot;)&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;            Case True&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;                If MsgBox(&amp;quot;Overwrite the Members.txt file for Topic &amp;quot; &amp;amp; TopicName &amp;amp; &amp;quot;?&amp;quot;, vbYesNo + vbQuestion + vbDefaultButton2, &amp;quot;Random distribution available&amp;quot;) = vbYes Then&lt;br /&gt;
&amp;#039;                    If .Save(mstrAtomsStringBuffer, UseAppend:=False) Then&lt;br /&gt;
&amp;#039;                        &amp;#039;   Create (or err past if existing) a folder for the top node, named A1&lt;br /&gt;
&amp;#039;                        iFnData_ExtractAtoms = True&lt;br /&gt;
&amp;#039;                    Else&lt;br /&gt;
&amp;#039;                        RaiseEvent CommandResponse(&amp;quot;Unable to save the Atoms extracted from Paired.txt to &amp;quot; &amp;amp; .Filespec)&lt;br /&gt;
&amp;#039;                        MsgBox &amp;quot;Unable to save the Atoms extracted from Paired.txt to: &amp;quot; &amp;amp; .Filespec&lt;br /&gt;
&amp;#039;                    End If&lt;br /&gt;
&amp;#039;                End If&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;            Case False&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;                &amp;#039;   Create the new Topic Folder&lt;br /&gt;
&amp;#039;                MkDir Root.DataPath &amp;amp; &amp;quot;\&amp;quot; &amp;amp; TopicName&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;                If .Save(mstrAtomsStringBuffer) Then&lt;br /&gt;
&amp;#039;                    RaiseEvent CommandResponse(&amp;quot;Extracted Atoms saved to &amp;quot; &amp;amp; .Filespec)&lt;br /&gt;
&amp;#039;                    iFnData_ExtractAtoms = True&lt;br /&gt;
&amp;#039;                Else&lt;br /&gt;
&amp;#039;                    RaiseEvent CommandResponse(&amp;quot;Unable to save the Atoms extracted from Paired.txt to: &amp;quot; &amp;amp; .Filespec)&lt;br /&gt;
&amp;#039;                    MsgBox &amp;quot;Unable to save the Atoms extracted from Paired.txt to: &amp;quot; &amp;amp; .Filespec&lt;br /&gt;
&amp;#039;                End If&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;        End Select&lt;br /&gt;
&amp;#039;    End With&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    RaiseEvent CommandResponse(&amp;quot;Extraction of member atoms complete. &amp;quot; &amp;amp; CStr(intExtractions) &amp;amp; &amp;quot; members extracted.&amp;quot;)&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;    Screen.MousePointer = vbDefault&lt;br /&gt;
&amp;#039;&lt;br /&gt;
&amp;#039;End Function&lt;br /&gt;
&lt;br /&gt;
Public Function TrimTrailingCharacters(ByRef Source As String, ByVal Characters As String) As String&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Remove trailing characters passed by argument&lt;br /&gt;
    Do While StrComp(Right$(Source, Len(Characters)), Characters) = 0&lt;br /&gt;
        Source = Left$(Source, Len(Source) - Len(Characters))&lt;br /&gt;
    Loop&lt;br /&gt;
    &lt;br /&gt;
    TrimTrailingCharacters = Source&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Function DataLoad(ByRef TabularString As String) As Boolean&lt;br /&gt;
    &lt;br /&gt;
    On Error GoTo Trap&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   String passed by reference, avoiding memory copy.  The calling function destroys passed String.&lt;br /&gt;
    &amp;#039;   Remove any trailing row-delimiters while looping.&lt;br /&gt;
    Do While StrComp(Right$(TabularString, 2), vbCrLf) = 0&lt;br /&gt;
        &amp;#039;   Remove trailing row delimiters.&lt;br /&gt;
        TabularString = Left$(TabularString, Len(TabularString) - 2)&lt;br /&gt;
    Loop&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Split the input String into the Data row-array at the row delimiters.&lt;br /&gt;
    mstrDataArray = Split(TabularString, DataRowDelimiter)&lt;br /&gt;
    mlngDataRowCount = UBound(mstrDataArray)        &amp;#039;   Zero-based array index of the last data row read.&lt;br /&gt;
    &lt;br /&gt;
    mbooDataLoaded = CBool(UBound(mstrDataArray) &amp;gt; 0)   &amp;#039;   Loaded only if more than header record exists.&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Return outcome.&lt;br /&gt;
    DataLoad = mbooDataLoaded&lt;br /&gt;
    &lt;br /&gt;
    Exit Function&lt;br /&gt;
Trap:&lt;br /&gt;
    Select Case Err.number&lt;br /&gt;
        Case Else&lt;br /&gt;
            MsgBox &amp;quot;DataLoad() Failure: &amp;quot; &amp;amp; formatErrorMsg(Err.number, Err.description, Err.Source), vbExclamation + vbOKOnly, &amp;quot;I/O error&amp;quot;&lt;br /&gt;
    End Select&lt;br /&gt;
End Function&lt;br /&gt;
 &lt;br /&gt;
Public Property Get ConjAtomColumnIndex() As Long&lt;br /&gt;
    ConjAtomColumnIndex = mlngConjAtomColumn&lt;br /&gt;
End Property&lt;br /&gt;
Public Property Let ConjAtomColumnIndex(ByVal Value As Long)&lt;br /&gt;
    mlngConjAtomColumn = Value&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get ConjLinkColumnIndex() As Long&lt;br /&gt;
    ConjLinkColumnIndex = mlngConjLinkColumn&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Let ConjLinkColumnIndex(ByVal Value As Long)&lt;br /&gt;
    mlngConjLinkColumn = Value&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get ConjValid() As Boolean&lt;br /&gt;
    ConjValid = mbooConjValid&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get DataRowCount() As Long&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    If mbooDataLoaded Then DataRowCount = UBound(mstrDataArray) - mlngDataHeaderRowIndex + 1 &amp;#039; Zero-based data array.&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Function FieldValue(ByVal Row As Long, ByVal Column As Long) As String&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    FieldValue = Split(mstrDataArray(Row), DataColumnDelimiter)(Column)&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Property Let DataColumnDelimiter(ByVal Value As String)&lt;br /&gt;
    mstrDataColumnDelimiter = Value&lt;br /&gt;
End Property&lt;br /&gt;
Public Property Get DataColumnDelimiter() As String&lt;br /&gt;
    DataColumnDelimiter = mstrDataColumnDelimiter&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Let DataRowDelimiter(ByVal Value As String)&lt;br /&gt;
    mstrDataRowDelimiter = Value&lt;br /&gt;
End Property&lt;br /&gt;
Public Property Get DataRowDelimiter() As String&lt;br /&gt;
    DataRowDelimiter = mstrDataRowDelimiter&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Function LoadWarehouse(Optional ByVal FileName As String) As Long&lt;br /&gt;
    On Error GoTo Trap&lt;br /&gt;
    &amp;#039; FileName must be a useable filespec (path and filename).&lt;br /&gt;
    &amp;#039; Return the Data row count on success.&lt;br /&gt;
    &lt;br /&gt;
    If Len(FileName) &amp;gt; 0 Then&lt;br /&gt;
        mstrDataFile = FileName            &amp;#039; Save FileName passed.&lt;br /&gt;
&lt;br /&gt;
        With New clsFile&lt;br /&gt;
            If .FileExists(FileName) Then&lt;br /&gt;
                If DataLoad(.ReadAll(mstrDataFile)) Then&lt;br /&gt;
                    LoadWarehouse = Me.DataRowCount  &amp;#039;at least 1 more row than header row qualifies as loaded&lt;br /&gt;
                    RaiseEvent DataLoaded(.Self)&lt;br /&gt;
                Else&lt;br /&gt;
                    RaiseEvent CommandResponse(&amp;quot;Unable to load Warehouse data from &amp;quot; &amp;amp; mstrDataFile)&lt;br /&gt;
                End If&lt;br /&gt;
            Else&lt;br /&gt;
                MsgBox &amp;quot;Warehouse Data File Not Found: &amp;quot; &amp;amp; .Filespec, vbInformation&lt;br /&gt;
                RaiseEvent CommandResponse(&amp;quot;File not found: &amp;quot; &amp;amp; .Filespec)&lt;br /&gt;
            End If&lt;br /&gt;
        End With&lt;br /&gt;
        &lt;br /&gt;
    End If&lt;br /&gt;
        &lt;br /&gt;
    Exit Function&lt;br /&gt;
Trap:&lt;br /&gt;
    Select Case Err.number&lt;br /&gt;
        Case Else&lt;br /&gt;
            MsgBox &amp;quot;LoadWarehouse: &amp;quot; &amp;amp; formatErrorMsg(Err.number, Err.description, Err.Source)&lt;br /&gt;
            Exit Function&lt;br /&gt;
            Resume &amp;#039; debugging&lt;br /&gt;
    End Select&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Property Get MaxColumn() As Integer&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    If mbooDataLoaded Then&lt;br /&gt;
        MaxColumn = UBound(Split(mstrDataArray(0), vbTab))&lt;br /&gt;
    End If&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Let Cancel(ByVal Value As Boolean)&lt;br /&gt;
    mbooCancel = Value&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get Cancel() As Boolean&lt;br /&gt;
    Cancel = mbooCancel&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Function Clear() As Boolean&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    ReDim mstrDataArray(0)&lt;br /&gt;
    ReDim mstrDataHeaderRow(0)&lt;br /&gt;
    &lt;br /&gt;
    ReDim mstrMartArray(0)&lt;br /&gt;
    ReDim mstrPairsArray(0)&lt;br /&gt;
    ReDim mstrLinksArray(0)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Clear = CBool(Err.number)&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Property Get MartCount() As Long&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    If mbooMartPulled Then MartCount = UBound(mstrMartArray) + 1&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
&amp;#039;   Enumerate all Warehouse records, pulling the&lt;br /&gt;
&amp;#039;   combined conjecture columns into the Mart array.&lt;br /&gt;
Public Function MartPull() As Boolean&lt;br /&gt;
    Dim ndx As Long&lt;br /&gt;
    Dim maxNdx As Long&lt;br /&gt;
    Dim strField() As String &amp;#039;array&lt;br /&gt;
    Dim msg As String&lt;br /&gt;
    &lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Store the max array index for enumeration&lt;br /&gt;
    maxNdx = UBound(mstrDataArray)&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Size the Mart array to the warehouse size&lt;br /&gt;
    ReDim mstrMartArray(maxNdx)&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Check for contextual validity&lt;br /&gt;
    If (mlngConjAtomColumn &amp;gt; -1) And (mlngConjLinkColumn &amp;gt; -1) Then&lt;br /&gt;
        &amp;#039;   Enumerate all Warehouse records, pulling the&lt;br /&gt;
        &amp;#039;   combined conjecture columns into the Mart array.&lt;br /&gt;
        &lt;br /&gt;
        For ndx = 0 To maxNdx &amp;#039;including header at 0&lt;br /&gt;
            &amp;#039;   Split the record into strField array at the inner delimiter&lt;br /&gt;
            strField = Split(mstrDataArray(ndx), DataColumnDelimiter)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Copy into the Mart array the two fields specified by conjecture&lt;br /&gt;
            mstrMartArray(ndx) = strField(mlngConjLinkColumn) &amp;amp; _&lt;br /&gt;
                                DataColumnDelimiter &amp;amp; _&lt;br /&gt;
                                strField(mlngConjAtomColumn)   &amp;#039; B &amp;lt;Tab&amp;gt; A&lt;br /&gt;
        Next ndx&lt;br /&gt;
        &lt;br /&gt;
        &amp;#039;   Sort the new Mart array, now in natural order from Whse&lt;br /&gt;
        QuickSortVariants mstrMartArray, 1, UBound(mstrMartArray), 0, UBound(mstrMartArray)&lt;br /&gt;
        &lt;br /&gt;
        &amp;#039;   Join all array elements into a string with line delimiters streaming to file&lt;br /&gt;
        With New clsFile&lt;br /&gt;
            .Filespec = DataFolder &amp;amp; &amp;quot;\Mart.txt&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Save the Mart in the data path as a&lt;br /&gt;
            &amp;#039;   Column/Line delimited tabulation of string data.&lt;br /&gt;
            &lt;br /&gt;
            If .Save(Join(SourceArray:=mstrMartArray, delimiter:=mstrDataRowDelimiter)) Then&lt;br /&gt;
                mbooMartPulled = True&lt;br /&gt;
                MartPull = True&lt;br /&gt;
                RaiseEvent CommandResponse(&amp;quot;Mart columns pulled, and saved to file&amp;quot;)&lt;br /&gt;
                RaiseEvent MartPulled&lt;br /&gt;
            Else&lt;br /&gt;
                msg = &amp;quot;Unable to save the Mart data to file &amp;quot; &amp;amp; .Filespec&lt;br /&gt;
            End If&lt;br /&gt;
        End With&lt;br /&gt;
        &lt;br /&gt;
    Else&lt;br /&gt;
        RaiseEvent CommandResponse(&amp;quot;Mart cannot be Pulled until both conjectures are selected, i.e., A = 4 &amp;lt;CR&amp;gt; B = 5 &amp;lt;CR&amp;gt;&amp;quot;)&lt;br /&gt;
    End If&lt;br /&gt;
                       &lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Property Get MartPulled() As Long&lt;br /&gt;
    MartPulled = mbooMartPulled&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Function DataRowArray(ByVal Index As Long) As String()&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    DataRowArray = Split(mstrDataArray(Index), DataColumnDelimiter)&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Public Property Get DataColumnHeaders() As String()&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    If mbooDataLoaded Then DataColumnHeaders = Split(mstrDataArray(0), mstrDataColumnDelimiter)&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get PairsCount() As Long&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    If mbooPairsExported Then PairsCount = UBound(mstrPairsArray) + 1  &amp;#039;element zero contians column headers&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get PairsExported() As Long&lt;br /&gt;
    PairsExported = mbooPairsExported&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Function PairsExport() As Boolean&lt;br /&gt;
    Dim oFile       As clsFile&lt;br /&gt;
    Dim ndx         As Long&lt;br /&gt;
    Dim strField()  As String &amp;#039;array&lt;br /&gt;
    Dim colAtoms    As Collection&lt;br /&gt;
    Dim colLinks    As Collection&lt;br /&gt;
    Dim strPaired   As String&lt;br /&gt;
    Dim strJoin     As String&lt;br /&gt;
    Dim varX        As Variant&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   Atom format (Paired)&lt;br /&gt;
    &amp;#039;   FirName Tab SecName1 Tab SecName2 Tab ... SecNameX&lt;br /&gt;
   &lt;br /&gt;
    On Error GoTo Trap&lt;br /&gt;
    &lt;br /&gt;
    mbooCancel = False&lt;br /&gt;
    &lt;br /&gt;
    Set colAtoms = New Collection&lt;br /&gt;
    Set colLinks = New Collection&lt;br /&gt;
        &lt;br /&gt;
    With New clsStopWatch&lt;br /&gt;
        If mbooMartPulled Then&lt;br /&gt;
            .Reset &amp;#039;   Start timer&lt;br /&gt;
            RaiseEvent Progress(&amp;quot;Pairs Export beginning...&amp;quot;)&lt;br /&gt;
            &amp;#039;   Enumerate through all Mart array row elements&lt;br /&gt;
            &amp;#039;   and construct the Atoms.&lt;br /&gt;
            For ndx = 1 To Me.MartCount - 1&lt;br /&gt;
                DoEvents &amp;#039;allowing update of cancellation flag during loop&lt;br /&gt;
                If Not mbooCancel Then&lt;br /&gt;
                    &amp;#039;   Split the outer Mart-array row element into an inner field-array&lt;br /&gt;
                    strField() = Split(mstrMartArray(ndx), vbTab)&lt;br /&gt;
                                        &lt;br /&gt;
                    &amp;#039;   Add a new firName to colAtoms&lt;br /&gt;
                    MergeSecNameByFirName colAtoms, strField(0), strField(1)&lt;br /&gt;
                    &lt;br /&gt;
                    If ndx Mod 100 = 0 Then&lt;br /&gt;
                        RaiseEvent Progress(&amp;quot;Assembling atoms: record &amp;quot; &amp;amp; CStr(ndx))&lt;br /&gt;
                    End If&lt;br /&gt;
                Else&lt;br /&gt;
                    Exit Function&lt;br /&gt;
                End If &amp;#039;Not mbooCancelPairs&lt;br /&gt;
            Next&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Enumerate through all Mart array row elements&lt;br /&gt;
            &amp;#039;   and construct the Links.&lt;br /&gt;
            For ndx = 1 To Me.MartCount - 1&lt;br /&gt;
                DoEvents &amp;#039;allowing update of cancellation flag during loop&lt;br /&gt;
                If Not mbooCancel Then&lt;br /&gt;
                    &amp;#039;   Split the outer Mart-array row element into an inner field-array&lt;br /&gt;
                    strField() = Split(mstrMartArray(ndx), vbTab)&lt;br /&gt;
                     &lt;br /&gt;
                    &amp;#039;   Add a new SecName to colLinks (notice the parameters are switched)&lt;br /&gt;
                    MergeSecNameByFirName colLinks, strField(1), strField(0)  &amp;#039;   sort when complete&lt;br /&gt;
&lt;br /&gt;
                    If ndx Mod 100 = 0 Then RaiseEvent Progress(&amp;quot;Assembling links: record &amp;quot; &amp;amp; CStr(ndx) &amp;amp; &amp;quot;+&amp;quot;)&lt;br /&gt;
                Else&lt;br /&gt;
                    Exit Function&lt;br /&gt;
                End If &amp;#039;Not mbooCancelPairs&lt;br /&gt;
            Next&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Output the Links as tabular data&lt;br /&gt;
            ndx = 0&lt;br /&gt;
            ReDim mstrLinksArray(colLinks.Count - 1)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Copy the collection object&lt;br /&gt;
            &amp;#039;   into the module links array&lt;br /&gt;
            ndx = 0&lt;br /&gt;
            For Each varX In colLinks&lt;br /&gt;
                mstrLinksArray(ndx) = varX&lt;br /&gt;
                ndx = ndx + 1&lt;br /&gt;
            Next&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Sort the new Links array, purely for human-readability, as order is irrelavant.&lt;br /&gt;
            QuickSortVariants mstrLinksArray, 0, UBound(mstrLinksArray), 0, UBound(mstrLinksArray)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Store the array as a CR delimited&lt;br /&gt;
            &amp;#039;   tabular file named Links.txt&lt;br /&gt;
            With New clsFile&lt;br /&gt;
                .Save Join(mstrLinksArray, vbCrLf), DataFolder &amp;amp; &amp;quot;\Links.txt&amp;quot;&lt;br /&gt;
            End With&lt;br /&gt;
            RaiseEvent CommandResponse(CStr(ndx) &amp;amp; &amp;quot; Link saved as tabular data to file &amp;quot; &amp;amp; DataFolder &amp;amp; &amp;quot;\Links.txt&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Create the paired combinatorics&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Enumerate atomics, creating a tabulation&lt;br /&gt;
            &amp;#039;   by string-concatenation of any new combinatrics&lt;br /&gt;
            &amp;#039;   joined from the array returned by the&lt;br /&gt;
            &amp;#039;   transform method producing combinatorics.&lt;br /&gt;
            ndx = 0&lt;br /&gt;
            For Each varX In colAtoms&lt;br /&gt;
                strJoin = Join(Combinatorics(varX), vbCrLf)&lt;br /&gt;
                If Len(strJoin) Then&lt;br /&gt;
                    If Len(strPaired) = 0 Then&lt;br /&gt;
                        strPaired = strJoin&lt;br /&gt;
                    Else&lt;br /&gt;
                        strPaired = strPaired &amp;amp; vbCrLf &amp;amp; strJoin&lt;br /&gt;
                    End If&lt;br /&gt;
                End If&lt;br /&gt;
&lt;br /&gt;
                If ndx Mod 10 = 0 Then RaiseEvent Progress(&amp;quot;Combining atom &amp;quot; &amp;amp; CStr(ndx) &amp;amp; &amp;quot;...&amp;quot;)&lt;br /&gt;
                ndx = ndx + 1&lt;br /&gt;
            Next&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Store the Pairs tabular string data as a string array&lt;br /&gt;
            mstrPairsArray = Split(strPaired, vbCrLf)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Sort the new Pairs array&lt;br /&gt;
            QuickSortVariants mstrPairsArray, 0, UBound(mstrPairsArray), 0, UBound(mstrPairsArray)&lt;br /&gt;
            RaiseEvent CommandResponse(&amp;quot;Pairs sorted&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Transform the array, now sorted&lt;br /&gt;
            &amp;#039;    to a string for storage to file&lt;br /&gt;
            strPaired = Join(mstrPairsArray, vbCrLf)&lt;br /&gt;
            &lt;br /&gt;
            &amp;#039;   Save the Pairs array to file&lt;br /&gt;
            Set oFile = New clsFile&lt;br /&gt;
            oFile.Filespec = DataFolder &amp;amp; &amp;quot;\Paired.txt&amp;quot;&lt;br /&gt;
            If oFile.Save(Join(mstrPairsArray, vbCrLf)) Then&lt;br /&gt;
                &lt;br /&gt;
                mbooPairsExported = True&lt;br /&gt;
                PairsExport = mbooPairsExported&lt;br /&gt;
                RaiseEvent CommandResponse(&amp;quot;Pairs saved as &amp;quot; &amp;amp; DataFolder &amp;amp; &amp;quot;\Paired.txt&amp;quot;)&lt;br /&gt;
                &lt;br /&gt;
                RaiseEvent CommandResponse(&amp;quot;Combinatoric-pairs Export complete (Process time: &amp;quot; &amp;amp; CStr(.Elapsed / 1000) &amp;amp; &amp;quot;)&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            End If&lt;br /&gt;
        Else &amp;#039;mbooMartPulled&lt;br /&gt;
            RaiseEvent CommandResponse(&amp;quot;Unable to Export combinatoric-pairs because the Mart Columns have not been pulled&amp;quot;)&lt;br /&gt;
        End If &amp;#039;mbooMartPulled&lt;br /&gt;
    End With &amp;#039;New clsStopWatch&lt;br /&gt;
    &lt;br /&gt;
    Exit Function&lt;br /&gt;
ExitPoint:&lt;br /&gt;
    Set colAtoms = Nothing&lt;br /&gt;
    Set colLinks = Nothing&lt;br /&gt;
Exit Function&lt;br /&gt;
&lt;br /&gt;
Trap:&lt;br /&gt;
    RaiseEvent CommandResponse(&amp;quot;Error in clsWhse.PairsExport: &amp;quot; &amp;amp; Err.description)&lt;br /&gt;
    Resume ExitPoint&lt;br /&gt;
    Resume&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Sub MergeSecNameByFirName( _&lt;br /&gt;
       ByVal col As Collection, _&lt;br /&gt;
       ByVal FirName As String, _&lt;br /&gt;
       ByVal SecName As String _&lt;br /&gt;
       )&lt;br /&gt;
    &amp;#039; Note!  July 2023, twenty three years later...&lt;br /&gt;
    &amp;#039;        The first parameter &amp;#039;ByVal&amp;#039; is ignored and the &amp;#039;col&amp;#039; collection&lt;br /&gt;
    &amp;#039;        is passed by reference.  This never threw an error.&lt;br /&gt;
    &amp;#039;        The line should read:&lt;br /&gt;
    &amp;#039;           &amp;quot;ByRef col As Collection, _&amp;quot;&lt;br /&gt;
    &amp;#039;&lt;br /&gt;
    &amp;#039;   Build a unique collection of Firname record delimitations&lt;br /&gt;
    &amp;#039;   Append uniquely the secname into the Tab-delimited&lt;br /&gt;
    &amp;#039;   string value referenced by the collection member, keyed by Firname&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;   The collection members delimited format is follows:&lt;br /&gt;
    &amp;#039;   FirName Tab SecName1 Tab SecName2 Tab SecName3 ...&lt;br /&gt;
    &lt;br /&gt;
    Dim strElements As String&lt;br /&gt;
    &lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    &lt;br /&gt;
       &lt;br /&gt;
    &amp;#039;Add a new member keyed by FirName...&lt;br /&gt;
    col.Add FirName &amp;amp; vbTab &amp;amp; SecName, Key:=FirName&lt;br /&gt;
    &lt;br /&gt;
    &amp;#039;This errors if member already exists -used because VB Collection object has no &amp;#039;exists&amp;#039; function.&lt;br /&gt;
          &lt;br /&gt;
    If Err.number = 457 Then&lt;br /&gt;
        &amp;#039;   Exists already, so concatentate SecName to existing SecNames if not already there&lt;br /&gt;
        strElements = col.Item(CStr(FirName))&lt;br /&gt;
        &lt;br /&gt;
        &amp;#039;   Append uniquely the secname to the secname delimitation&lt;br /&gt;
        If InStr(1, strElements, SecName) = 0 Then&lt;br /&gt;
            &amp;#039;secname is not already in strSecNames, so concatenate it&lt;br /&gt;
            strElements = Join(Array(strElements, SecName), vbTab)&lt;br /&gt;
            &lt;br /&gt;
            col.Remove FirName&lt;br /&gt;
            col.Add strElements, FirName&lt;br /&gt;
            &lt;br /&gt;
        End If&lt;br /&gt;
    End If&lt;br /&gt;
    &lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Property Get AtomsExtracted() As Boolean&lt;br /&gt;
    AtomsExtracted = mbooAtomsExtracted&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get DataFile() As String&lt;br /&gt;
    DataFile = mstrDataFile&lt;br /&gt;
End Property&lt;br /&gt;
Public Property Let DataFile(ByVal Value As String)&lt;br /&gt;
    mstrDataFile = Value&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get DataFolder() As String &amp;#039; r/o&lt;br /&gt;
    DataFolder = FileFolder(mstrDataFile)&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
Public Property Get DataLoaded() As Boolean&lt;br /&gt;
    DataLoaded = mbooDataLoaded&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Public Property Get DataHeaderRowIndex() As Long&lt;br /&gt;
    DataHeaderRowIndex = mlngDataHeaderRowIndex&lt;br /&gt;
End Property&lt;br /&gt;
Public Property Let DataHeaderRowIndex(ByVal Value As Long)&lt;br /&gt;
    mlngDataHeaderRowIndex = Value&lt;br /&gt;
End Property&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>XenoEngineer</name></author>
	</entry>
</feed>