<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.webhuis.nl:443/index.php?action=history&amp;feed=atom&amp;title=Flow-Diagrams</id>
	<title>Flow-Diagrams - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.webhuis.nl:443/index.php?action=history&amp;feed=atom&amp;title=Flow-Diagrams"/>
	<link rel="alternate" type="text/html" href="https://wiki.webhuis.nl:443/index.php?title=Flow-Diagrams&amp;action=history"/>
	<updated>2026-09-11T08:43:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.webhuis.nl:443/index.php?title=Flow-Diagrams&amp;diff=4706&amp;oldid=prev</id>
		<title>Martin at 23:01, 24 March 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.webhuis.nl:443/index.php?title=Flow-Diagrams&amp;diff=4706&amp;oldid=prev"/>
		<updated>2026-03-24T23:01:35Z</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 23:01, 24 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 445:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 445:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-----&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-----&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;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;&#039;&#039;&#039;← [[Data-Dictionary|Data Dictionary]]&#039;&#039;&#039; | [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Home&lt;/del&gt;|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Home&lt;/del&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;&#039;&#039;&#039;← [[Data-Dictionary|Data Dictionary]]&#039;&#039;&#039; | [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Primes system Design&lt;/ins&gt;|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Primes system Design&lt;/ins&gt; →]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://wiki.webhuis.nl:443/index.php?title=Flow-Diagrams&amp;diff=4705&amp;oldid=prev</id>
		<title>Martin at 23:00, 24 March 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.webhuis.nl:443/index.php?title=Flow-Diagrams&amp;diff=4705&amp;oldid=prev"/>
		<updated>2026-03-24T23:00:51Z</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 23:00, 24 March 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&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;&#039;&#039;&#039;Notation:&#039;&#039;&#039; Mermaid &amp;lt;code&amp;gt;flowchart TD&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sequenceDiagram&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;Notation:&#039;&#039;&#039; Mermaid &amp;lt;code&amp;gt;flowchart TD&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sequenceDiagram&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;← [[Data-Dictionary|Data Dictionary]]&#039;&#039;&#039; | [[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Home&lt;/del&gt;|&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Home&lt;/del&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;&#039;&#039;&#039;← [[Data-Dictionary|Data Dictionary]]&#039;&#039;&#039; | [[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Primes system Design&lt;/ins&gt;|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Primes system Design&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;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
	<entry>
		<id>https://wiki.webhuis.nl:443/index.php?title=Flow-Diagrams&amp;diff=4704&amp;oldid=prev</id>
		<title>Martin: Created page with &quot;&lt;span id=&quot;flow-diagrams&quot;&gt;&lt;/span&gt; = Flow Diagrams =  &lt;blockquote&gt;&#039;&#039;&#039;Document ID:&#039;&#039;&#039; PGCBL-FLD-001 · &#039;&#039;&#039;Version:&#039;&#039;&#039; 1.0 · &#039;&#039;&#039;Status:&#039;&#039;&#039; Approved · &#039;&#039;&#039;Last updated:&#039;&#039;&#039; 2026-03-17&lt;br /&gt; &#039;&#039;&#039;Notation:&#039;&#039;&#039; Mermaid &lt;code&gt;flowchart TD&lt;/code&gt; and &lt;code&gt;sequenceDiagram&lt;/code&gt; &lt;/blockquote&gt; &#039;&#039;&#039;← Data Dictionary&#039;&#039;&#039; | Home →   -----  &lt;span id=&quot;contents&quot;&gt;&lt;/span&gt; == Contents ==  # Top-Level Application Flow # #2-prim...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.webhuis.nl:443/index.php?title=Flow-Diagrams&amp;diff=4704&amp;oldid=prev"/>
		<updated>2026-03-24T22:58:53Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;span id=&amp;quot;flow-diagrams&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; = Flow Diagrams =  &amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;Document ID:&amp;#039;&amp;#039;&amp;#039; PGCBL-FLD-001 · &amp;#039;&amp;#039;&amp;#039;Version:&amp;#039;&amp;#039;&amp;#039; 1.0 · &amp;#039;&amp;#039;&amp;#039;Status:&amp;#039;&amp;#039;&amp;#039; Approved · &amp;#039;&amp;#039;&amp;#039;Last updated:&amp;#039;&amp;#039;&amp;#039; 2026-03-17&amp;lt;br /&amp;gt; &amp;#039;&amp;#039;&amp;#039;Notation:&amp;#039;&amp;#039;&amp;#039; Mermaid &amp;lt;code&amp;gt;flowchart TD&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sequenceDiagram&amp;lt;/code&amp;gt; &amp;lt;/blockquote&amp;gt; &amp;#039;&amp;#039;&amp;#039;← &lt;a href=&quot;/index.php?title=Data-Dictionary&quot; title=&quot;Data-Dictionary&quot;&gt;Data Dictionary&lt;/a&gt;&amp;#039;&amp;#039;&amp;#039; | &lt;a href=&quot;/index.php?title=Home&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Home (page does not exist)&quot;&gt;Home →&lt;/a&gt;   -----  &amp;lt;span id=&amp;quot;contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt; == Contents ==  # &lt;a href=&quot;#1-top-level-application-flow&quot;&gt;Top-Level Application Flow&lt;/a&gt; # #2-prim...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;span id=&amp;quot;flow-diagrams&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Flow Diagrams =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;#039;&amp;#039;&amp;#039;Document ID:&amp;#039;&amp;#039;&amp;#039; PGCBL-FLD-001 · &amp;#039;&amp;#039;&amp;#039;Version:&amp;#039;&amp;#039;&amp;#039; 1.0 · &amp;#039;&amp;#039;&amp;#039;Status:&amp;#039;&amp;#039;&amp;#039; Approved · &amp;#039;&amp;#039;&amp;#039;Last updated:&amp;#039;&amp;#039;&amp;#039; 2026-03-17&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Notation:&amp;#039;&amp;#039;&amp;#039; Mermaid &amp;lt;code&amp;gt;flowchart TD&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;sequenceDiagram&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;← [[Data-Dictionary|Data Dictionary]]&amp;#039;&amp;#039;&amp;#039; | [[Home|Home →]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;contents&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
# [[#1-top-level-application-flow|Top-Level Application Flow]]&lt;br /&gt;
# [[#2-primesgen-dispatch-flow|primesgen Dispatch Flow]]&lt;br /&gt;
# [[#3-prime-generation-sieve-loop|Prime Generation — Sieve Loop]]&lt;br /&gt;
# [[#4-prime-report-loop|Prime Report — Cursor Loop]]&lt;br /&gt;
# [[#5-dal-primescbl-method-dispatch|DAL (primes.cbl) Method Dispatch]]&lt;br /&gt;
# [[#6-ui-primesui-method-dispatch|UI (primesui.cbl) Method Dispatch]]&lt;br /&gt;
# [[#7-inter-program-call-sequence--generate-run|Inter-Program Call Sequence — Generate Run]]&lt;br /&gt;
# [[#8-inter-program-call-sequence--report-run|Inter-Program Call Sequence — Report Run]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;top-level-application-flow&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 1. Top-Level Application Flow ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;primesmain.cbl&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; How &amp;lt;code&amp;gt;primesmain&amp;lt;/code&amp;gt; reads the command-line argument, initialises the UI layer, routes to the correct processing path, and shuts down cleanly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ The &amp;lt;code&amp;gt;generate&amp;lt;/code&amp;gt; branch calls &amp;lt;code&amp;gt;r92-generate-primes&amp;lt;/code&amp;gt; but the PERFORM inside that paragraph that drives the sieve is commented out. See [[Technical-Specification#7-known-technical-issues|Technical Specification — Defect T1]].&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;flowchart TD&lt;br /&gt;
    A([START]) --&amp;amp;gt; B[ACCEPT commandline-args\nFROM COMMAND-LINE]&lt;br /&gt;
    B --&amp;amp;gt; C[MOVE commandline-args TO methods\nMOVE &amp;#039;primesmain&amp;#039; TO program-name]&lt;br /&gt;
    C --&amp;amp;gt; D[r90-start-session\nMOVE &amp;#039;start&amp;#039; TO ui-methods\nCALL primesui USING primes-ui]&lt;br /&gt;
&lt;br /&gt;
    D --&amp;amp;gt; E{ui-method-ok?}&lt;br /&gt;
    E --&amp;amp;gt;|No| F[DISPLAY emergency msg\nUPON scherm\nSTOP RUN]&lt;br /&gt;
    E --&amp;amp;gt;|Yes| G[LOG &amp;#039;UI initialisation succeeded.&amp;#039;\nLOG commandline-args]&lt;br /&gt;
&lt;br /&gt;
    G --&amp;amp;gt; H{EVALUATE\ncommandline-args}&lt;br /&gt;
&lt;br /&gt;
    H --&amp;amp;gt;|&amp;#039;report&amp;#039;| I[LOG &amp;#039;Primes report generation starts.&amp;#039;\nMOVE &amp;#039;report&amp;#039; TO methods]&lt;br /&gt;
    I --&amp;amp;gt; J[r92-generate-primes\nCALL primesgen USING primes-session]&lt;br /&gt;
&lt;br /&gt;
    H --&amp;amp;gt;|&amp;#039;generate&amp;#039;| K[LOG &amp;#039;Primes generation starts.&amp;#039;\nMOVE &amp;#039;generate&amp;#039; TO methods]&lt;br /&gt;
    K --&amp;amp;gt; L[&amp;amp;quot;⚠️ r92-generate-primes\n[PERFORM commented out in source]&amp;amp;quot;]&lt;br /&gt;
&lt;br /&gt;
    H --&amp;amp;gt;|other| M[LOG &amp;#039;Bad parameter&amp;#039;\nCALL primesui &amp;#039;stop&amp;#039;\nSTOP RUN]&lt;br /&gt;
&lt;br /&gt;
    J --&amp;amp;gt; N[LOG &amp;#039;Primes run complete, program stops.&amp;#039;]&lt;br /&gt;
    L --&amp;amp;gt; N&lt;br /&gt;
    N --&amp;amp;gt; O[r99-stop-session\nMOVE &amp;#039;stop&amp;#039; TO ui-methods\nCALL primesui USING primes-ui]&lt;br /&gt;
    O --&amp;amp;gt; P([STOP RUN])&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Key paragraphs:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Paragraph&lt;br /&gt;
!width=&amp;quot;50%&amp;quot;| Action&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r90-start-session&amp;lt;/code&amp;gt;&lt;br /&gt;
| Opens &amp;lt;code&amp;gt;primes.prt&amp;lt;/code&amp;gt;; hard-stops if open fails&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r92-generate-primes&amp;lt;/code&amp;gt;&lt;br /&gt;
| Single CALL to primesgen; passes &amp;lt;code&amp;gt;primes-session&amp;lt;/code&amp;gt; by reference&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;r99-stop-session&amp;lt;/code&amp;gt;&lt;br /&gt;
| Flushes print buffer and closes &amp;lt;code&amp;gt;primes.prt&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;primesgen-dispatch-flow&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 2. primesgen Dispatch Flow ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;primesgen.cbl&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; How primesgen reads the &amp;lt;code&amp;gt;methods&amp;lt;/code&amp;gt; field in &amp;lt;code&amp;gt;primes-session&amp;lt;/code&amp;gt; and routes to either the generation or report path, then always performs cleanup.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;flowchart TD&lt;br /&gt;
    A([ENTRY — primesgen\nUSING primes-session]) --&amp;amp;gt; B{EVALUATE TRUE\non methods}&lt;br /&gt;
&lt;br /&gt;
    B --&amp;amp;gt;|report-primes| C[PERFORM r90-start-primes-report]&lt;br /&gt;
    B --&amp;amp;gt;|generate-primes| D[PERFORM r91-start-primes-generation]&lt;br /&gt;
    B --&amp;amp;gt;|other| E[LOG &amp;#039;Bad method, primes process failed.&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
    C --&amp;amp;gt; F{session-method-ok?}&lt;br /&gt;
    F --&amp;amp;gt;|Yes| G[PERFORM r86-report-primes\nUNTIL session-method-eof]&lt;br /&gt;
    F --&amp;amp;gt;|No| Z&lt;br /&gt;
&lt;br /&gt;
    D --&amp;amp;gt; H{session-method-ok?}&lt;br /&gt;
    H --&amp;amp;gt;|Yes| I[PERFORM r80-test-number\nUNTIL test-number = 999999999]&lt;br /&gt;
    H --&amp;amp;gt;|No| Z&lt;br /&gt;
&lt;br /&gt;
    G --&amp;amp;gt; Z&lt;br /&gt;
    I --&amp;amp;gt; Z&lt;br /&gt;
    E --&amp;amp;gt; Z&lt;br /&gt;
&lt;br /&gt;
    Z[r99-close-primes\nMOVE &amp;#039;disconnect&amp;#039; TO dal-methods\nCALL primes USING primes-dal] --&amp;amp;gt; END([EXIT PROGRAM])&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;prime-generation-sieve-loop&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 3. Prime Generation — Sieve Loop ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;primesgen.cbl&amp;lt;/code&amp;gt; (r80-series paragraphs) + &amp;lt;code&amp;gt;primes.cbl&amp;lt;/code&amp;gt; (r81, r83)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; The trial-division sieve — how each candidate is tested, how composites are skipped, and how confirmed primes are persisted.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Algorithm in words:&amp;#039;&amp;#039;&amp;#039; 1. Start at candidate = 3. Load first divisor (prime at ident 1 = prime 2, assumed pre-seeded). 2. Divide candidate by current divisor. 3. If remainder = 0 → composite. Add 2, reset divisor to first prime. 4. If divisor &amp;amp;gt; √candidate → prime confirmed. Write to DB and print buffer. Add 2, reset divisor. 5. Otherwise → try next divisor (fetch next prime from DB by ident).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;flowchart TD&lt;br /&gt;
    A([r91-start-primes-generation]) --&amp;amp;gt; B[CALL primes &amp;#039;connect&amp;#039;]&lt;br /&gt;
    B --&amp;amp;gt; C{dal-method-ok?}&lt;br /&gt;
    C --&amp;amp;gt;|No| FAIL([session-result = 1\nEXIT])&lt;br /&gt;
    C --&amp;amp;gt;|Yes| D[test-divider = 2\nold-ident = 1\ntest-number = 3\ntest-number-sqr = SQRT 3]&lt;br /&gt;
    D --&amp;amp;gt; LOG1[LOG &amp;#039;Database initialisation succeeded.&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
    LOG1 --&amp;amp;gt; LOOP{test-number\n= 999999999?}&lt;br /&gt;
    LOOP --&amp;amp;gt;|Yes| CLOSE([r99-close-primes\nEXIT PROGRAM])&lt;br /&gt;
&lt;br /&gt;
    LOOP --&amp;amp;gt;|No| DIV[r80-test-number\nDIVIDE test-number BY test-divider\nGIVING test-quot REMAINDER test-rest]&lt;br /&gt;
&lt;br /&gt;
    DIV --&amp;amp;gt; EVAL{EVALUATE TRUE}&lt;br /&gt;
&lt;br /&gt;
    EVAL --&amp;amp;gt;|test-rest = 0\ncomposite| NEXT[r82-next-test-number]&lt;br /&gt;
    EVAL --&amp;amp;gt;|test-divider &amp;amp;gt; test-number-sqr\nprime confirmed| WRITE[r85-write-prime\nCALL primes &amp;#039;write&amp;#039;\nINSERT INTO primes prime\nCALL primesui &amp;#039;write&amp;#039;\nadd to print buffer]&lt;br /&gt;
    EVAL --&amp;amp;gt;|otherwise\ntry next divisor| GETDIV[r89-get-next-divider\nCALL primes &amp;#039;next-divider&amp;#039;\nSELECT prime WHERE ident = old-ident+1]&lt;br /&gt;
&lt;br /&gt;
    WRITE --&amp;amp;gt; NEXT&lt;br /&gt;
    GETDIV --&amp;amp;gt; LOOP&lt;br /&gt;
&lt;br /&gt;
    NEXT --&amp;amp;gt; NA[ADD 2 TO test-number\nCOMPUTE test-number-sqr = test-number ** 0.5\nMOVE 1 TO old-ident\nr89-get-next-divider\nload first divisor]&lt;br /&gt;
    NA --&amp;amp;gt; LOOP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Data flow through the sieve:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;test-number (candidate)     ──→ DIVIDE ──→ test-rest&lt;br /&gt;
test-divider (from DB)      ──→ DIVIDE ──→ test-quot&lt;br /&gt;
test-number-sqr (SQRT)      ──→ compare to test-divider&lt;br /&gt;
old-ident (DB row pointer)  ──→ SELECT prime WHERE ident = old-ident+1 ──→ test-divider&lt;br /&gt;
prime-number (confirmed)    ──→ INSERT INTO primes (prime) ──→ database&lt;br /&gt;
                            ──→ u-number / u-sequence ──→ primesui print buffer&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;prime-report-cursor-loop&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 4. Prime Report — Cursor Loop ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;primesgen.cbl&amp;lt;/code&amp;gt; (r86, r90, r94) + &amp;lt;code&amp;gt;primes.cbl&amp;lt;/code&amp;gt; (s01, s02)&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; How the report path opens a cursor over the database, fetches rows one at a time, and sends each to the print buffer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;flowchart TD&lt;br /&gt;
    A([r90-start-primes-report]) --&amp;amp;gt; B[CALL primes &amp;#039;connect&amp;#039;\ndal-methods = &amp;#039;connect&amp;#039;]&lt;br /&gt;
    B --&amp;amp;gt; C{dal-method-ok?}&lt;br /&gt;
    C --&amp;amp;gt;|No| FAIL1([LOG &amp;#039;Database init failed.&amp;#039;\nsession-result = 1\nGOTO close])&lt;br /&gt;
    C --&amp;amp;gt;|Yes| D[LOG &amp;#039;Database initialisation succeeded.&amp;#039;\nCALL primes &amp;#039;cursor&amp;#039;\ndal-methods = &amp;#039;cursor&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
    D --&amp;amp;gt; E[s01-cursor:\nEXEC SQL START TRANSACTION\nEXEC SQL OPEN primescursor]&lt;br /&gt;
    E --&amp;amp;gt; F{dal-method-ok?}&lt;br /&gt;
    F --&amp;amp;gt;|No| FAIL2([LOG &amp;#039;Cursor init failed.&amp;#039;\nsession-result = 1\nGOTO close])&lt;br /&gt;
    F --&amp;amp;gt;|Yes| G[LOG &amp;#039;Cursor initialisation succeeded.&amp;#039;\nr94-fetch → CALL primes &amp;#039;next-prime&amp;#039;\nFETCH primescursor INTO primes-row]&lt;br /&gt;
&lt;br /&gt;
    G --&amp;amp;gt; H{dal-method-ok?}&lt;br /&gt;
    H --&amp;amp;gt;|No| FAIL3([LOG &amp;#039;Fetch first row nok.&amp;#039;\ndal-result = 1\nGOTO close])&lt;br /&gt;
    H --&amp;amp;gt;|Yes| I[LOG &amp;#039;Fetch first row ok.&amp;#039;\ndal-result = 0]&lt;br /&gt;
&lt;br /&gt;
    I --&amp;amp;gt; LOOP{session-method-eof?}&lt;br /&gt;
    LOOP --&amp;amp;gt;|Yes| CLOSE[r99-close-primes\nCALL primes &amp;#039;disconnect&amp;#039;]&lt;br /&gt;
    CLOSE --&amp;amp;gt; END([EXIT PROGRAM])&lt;br /&gt;
&lt;br /&gt;
    LOOP --&amp;amp;gt;|No| WRITE[r86-report-primes\nMOVE primes-data TO u-primes\nCALL primesui &amp;#039;write&amp;#039;]&lt;br /&gt;
    WRITE --&amp;amp;gt; FETCH[r94-fetch\nCALL primes &amp;#039;next-prime&amp;#039;\nFETCH primescursor INTO primes-row]&lt;br /&gt;
    FETCH --&amp;amp;gt; FCHECK{dal-method-ok?}&lt;br /&gt;
    FCHECK --&amp;amp;gt;|Yes| LOOP&lt;br /&gt;
    FCHECK --&amp;amp;gt;|No| ERR[LOG &amp;#039;Fetch failed.&amp;#039;\nsession-result = 1]&lt;br /&gt;
    ERR --&amp;amp;gt; LOOP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;⚠️ &amp;lt;code&amp;gt;session-result = 1&amp;lt;/code&amp;gt; (nok) is set on fetch failure, but the loop condition tests &amp;lt;code&amp;gt;session-method-eof&amp;lt;/code&amp;gt; (value 9). These values do not match — the loop will continue rather than exit cleanly on cursor exhaustion. See [[Technical-Specification#7-known-technical-issues|Technical Specification — Defect T7]].&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;dal-primes.cbl-method-dispatch&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 5. DAL (primes.cbl) Method Dispatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;primes.cbl&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; The complete method-dispatch EVALUATE inside the DAL and the SQL operations each verb triggers. Each invocation handles exactly one operation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;flowchart TD&lt;br /&gt;
    A([ENTRY — primes\nUSING primes-dal]) --&amp;amp;gt; B{EVALUATE TRUE\non dal-methods}&lt;br /&gt;
&lt;br /&gt;
    B --&amp;amp;gt;|db-connect| C[&amp;amp;quot;s00-connect\nEXEC SQL\n  CONNECT TO :DATASRC AS primes\n  USER :DBUSR USING :DBPWD&amp;amp;quot;]&lt;br /&gt;
    B --&amp;amp;gt;|db-cursor| D[&amp;amp;quot;s01-cursor\nEXEC SQL AT primes START TRANSACTION\nEXEC SQL OPEN primescursor&amp;amp;quot;]&lt;br /&gt;
    B --&amp;amp;gt;|next-prime| E[&amp;amp;quot;r80-get-next-prime → s02-fetch\nEXEC SQL FETCH primescursor\n  INTO :primes-row\nprimes-sequence = r-ident\nprime-number = r-prime&amp;amp;quot;]&lt;br /&gt;
    B --&amp;amp;gt;|next-divider| F[&amp;amp;quot;r81-get-next-divider\nnew-ident = old-ident + 1\nEXEC SQL AT primes\n  SELECT prime INTO :test-divider\n  FROM primes WHERE ident = :new-ident\nold-ident = new-ident&amp;amp;quot;]&lt;br /&gt;
    B --&amp;amp;gt;|write-prime| G[&amp;amp;quot;r83-write-prime\nEXEC SQL AT primes\n  INSERT INTO primes (prime)\n  VALUES (:prime)\n⚠️ COMMIT commented out&amp;amp;quot;]&lt;br /&gt;
    B --&amp;amp;gt;|db-disconnect| H[&amp;amp;quot;s99-disconnect\nEXEC SQL CONNECT RESET primes\n⚠️ cbsql.out shows &amp;#039;primesdb&amp;#039;&amp;amp;quot;]&lt;br /&gt;
    B --&amp;amp;gt;|other| I[dal-result = 1]&lt;br /&gt;
&lt;br /&gt;
    C --&amp;amp;gt; SC{SQLCODE = 0?}&lt;br /&gt;
    SC --&amp;amp;gt;|Yes| SOK[dal-result = 0\nLOG ok]&lt;br /&gt;
    SC --&amp;amp;gt;|No| SNOK[dal-result = 1\nLOG error]&lt;br /&gt;
&lt;br /&gt;
    D --&amp;amp;gt; Z([EXIT PROGRAM])&lt;br /&gt;
    E --&amp;amp;gt; Z&lt;br /&gt;
    F --&amp;amp;gt; Z&lt;br /&gt;
    G --&amp;amp;gt; Z&lt;br /&gt;
    H --&amp;amp;gt; Z&lt;br /&gt;
    I --&amp;amp;gt; Z&lt;br /&gt;
    SOK --&amp;amp;gt; Z&lt;br /&gt;
    SNOK --&amp;amp;gt; Z&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Verb → SQL mapping (summary):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;| Verb&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;| SQL&lt;br /&gt;
!width=&amp;quot;33%&amp;quot;| Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;connect&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;CONNECT TO :DATASRC AS primes …&amp;lt;/code&amp;gt;&lt;br /&gt;
| Sets connection alias &amp;lt;code&amp;gt;primes&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;cursor&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;START TRANSACTION&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;OPEN primescursor&amp;lt;/code&amp;gt;&lt;br /&gt;
| Report path only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;next-prime&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;FETCH primescursor INTO :primes-row&amp;lt;/code&amp;gt;&lt;br /&gt;
| Report path only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;next-divider&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;SELECT prime WHERE ident = :new-ident&amp;lt;/code&amp;gt;&lt;br /&gt;
| Generate path only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;INSERT INTO primes (prime) VALUES (:prime)&amp;lt;/code&amp;gt;&lt;br /&gt;
| Generate path only&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;disconnect&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;CONNECT RESET primes&amp;lt;/code&amp;gt;&lt;br /&gt;
| Both paths&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ui-primesui.cbl-method-dispatch&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 6. UI (primesui.cbl) Method Dispatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Program:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;primesui.cbl&amp;lt;/code&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; How primesui routes each verb to the correct paragraph, and the detail of the &amp;lt;code&amp;gt;write&amp;lt;/code&amp;gt; path — page management, line accumulation, and EOP handling.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;flowchart TD&lt;br /&gt;
    A([ENTRY — primesui\nUSING primes-ui]) --&amp;amp;gt; B{EVALUATE TRUE\non ui-methods}&lt;br /&gt;
&lt;br /&gt;
    B --&amp;amp;gt;|start-ui| C[r90-start-primesui\nOPEN OUTPUT fprinter\nprimes.prt]&lt;br /&gt;
    B --&amp;amp;gt;|write-ui| D[r92-write-primesui]&lt;br /&gt;
    B --&amp;amp;gt;|message-ui| E[r98-message-ui\nDISPLAY process-message\nUPON scherm]&lt;br /&gt;
    B --&amp;amp;gt;|stop-ui| F[r99-stop-primesui]&lt;br /&gt;
    B --&amp;amp;gt;|other| G[ui-method-result = 1]&lt;br /&gt;
&lt;br /&gt;
    C --&amp;amp;gt; C1{primes-prt-status\n= &amp;#039;00&amp;#039;?}&lt;br /&gt;
    C1 --&amp;amp;gt;|Yes| C2[SET primes-idx TO 1\nui-method-result = 0\nLOG &amp;#039;Open printer Ok&amp;#039;]&lt;br /&gt;
    C1 --&amp;amp;gt;|No| C3[ui-method-result = 1\nDISPLAY status on console]&lt;br /&gt;
&lt;br /&gt;
    D --&amp;amp;gt; D1[t-ident at primes-idx = u-sequence\nt-prime at primes-idx = u-number\nSET primes-idx UP BY 1]&lt;br /&gt;
    D1 --&amp;amp;gt; D2{new-page?}&lt;br /&gt;
    D2 --&amp;amp;gt;|Yes| D3[r93-new-page\nWRITE primes-heading\nWRITE table-header\nprint-new-page = 0]&lt;br /&gt;
    D2 --&amp;amp;gt;|No| D4{primes-idx = 7?}&lt;br /&gt;
    D3 --&amp;amp;gt; D4&lt;br /&gt;
    D4 --&amp;amp;gt;|Yes| D5[WRITE primes-table line\n132-char data record\nSET primes-idx TO 1]&lt;br /&gt;
    D4 --&amp;amp;gt;|No| D6{linage-counter = 53?}&lt;br /&gt;
    D5 --&amp;amp;gt; D6&lt;br /&gt;
    D6 --&amp;amp;gt;|Yes| D7[r94-eop\nWRITE blank line\nWRITE primes-footing\npage-number += 1\nprint-new-page = 1]&lt;br /&gt;
    D6 --&amp;amp;gt;|No| Z&lt;br /&gt;
&lt;br /&gt;
    F --&amp;amp;gt; F1[MOVE 0 TO u-sequence and u-number\nPERFORM r92-write-primesui\nUNTIL new-page — flush partial line]&lt;br /&gt;
    F1 --&amp;amp;gt; F2[LOG &amp;#039;close printer&amp;#039;\nCLOSE fprinter\nui-method-result = primes-prt-status]&lt;br /&gt;
&lt;br /&gt;
    C2 --&amp;amp;gt; Z&lt;br /&gt;
    C3 --&amp;amp;gt; Z&lt;br /&gt;
    D7 --&amp;amp;gt; Z&lt;br /&gt;
    E --&amp;amp;gt; Z&lt;br /&gt;
    F2 --&amp;amp;gt; Z&lt;br /&gt;
    G --&amp;amp;gt; Z&lt;br /&gt;
    Z([EXIT PROGRAM])&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Page management state machine:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;print-new-page = 1 (initial)&lt;br /&gt;
        │&lt;br /&gt;
        ▼ (on any &amp;amp;quot;write&amp;amp;quot; call)&lt;br /&gt;
  IF new-page → r93-new-page:&lt;br /&gt;
    WRITE heading + column header&lt;br /&gt;
    print-new-page = 0&lt;br /&gt;
        │&lt;br /&gt;
        ▼ (accumulate 6 entries)&lt;br /&gt;
  IF primes-idx = 7 → WRITE data line, reset idx to 1&lt;br /&gt;
        │&lt;br /&gt;
        ▼&lt;br /&gt;
  IF linage-counter = 53 → r94-eop:&lt;br /&gt;
    WRITE blank + footing&lt;br /&gt;
    page-number += 1&lt;br /&gt;
    print-new-page = 1  ← triggers new heading on next write&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;inter-program-call-sequence-generate-run&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 7. Inter-Program Call Sequence — Generate Run ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; All CALL interactions between programs during a &amp;lt;code&amp;gt;generate&amp;lt;/code&amp;gt; invocation, including the sieve loop, each divisor lookup, each prime insertion, and the shutdown sequence.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;sequenceDiagram&lt;br /&gt;
    participant OS as OS / Shell&lt;br /&gt;
    participant main as primesmain&lt;br /&gt;
    participant gen as primesgen&lt;br /&gt;
    participant dal as primes (DAL)&lt;br /&gt;
    participant ui as primesui&lt;br /&gt;
    participant db as PostgreSQL&lt;br /&gt;
&lt;br /&gt;
    OS-&amp;amp;gt;&amp;amp;gt;main: execute with arg &amp;amp;quot;generate&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;start&amp;amp;quot;&lt;br /&gt;
    ui--&amp;amp;gt;&amp;amp;gt;main: ui-method-result=0 / primes.prt opened&lt;br /&gt;
&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;log-message&amp;amp;quot; &amp;amp;quot;Primes generation starts.&amp;amp;quot;&lt;br /&gt;
    ui-&amp;amp;gt;&amp;amp;gt;OS: DISPLAY on console&lt;br /&gt;
&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;gen: CALL &amp;amp;quot;primesgen&amp;amp;quot; methods=&amp;amp;quot;generate&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;connect&amp;amp;quot;&lt;br /&gt;
    dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL CONNECT TO primes&lt;br /&gt;
    db--&amp;amp;gt;&amp;amp;gt;dal: SQLCODE=0&lt;br /&gt;
    dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;ui: LOG &amp;amp;quot;Database initialisation succeeded.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    loop sieve: test-number 3 → 999,999,999&lt;br /&gt;
        gen-&amp;amp;gt;&amp;amp;gt;gen: DIVIDE test-number BY test-divider → test-rest&lt;br /&gt;
&lt;br /&gt;
        alt test-rest = 0 (composite)&lt;br /&gt;
            gen-&amp;amp;gt;&amp;amp;gt;gen: r82-next-test-number (test-number += 2, sqrt recalc)&lt;br /&gt;
            gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;next-divider&amp;amp;quot;&lt;br /&gt;
            dal-&amp;amp;gt;&amp;amp;gt;db: SELECT prime WHERE ident = :new-ident&lt;br /&gt;
            db--&amp;amp;gt;&amp;amp;gt;dal: test-divider value&lt;br /&gt;
            dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
&lt;br /&gt;
        else test-divider &amp;amp;gt; √test-number (prime confirmed)&lt;br /&gt;
            gen-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;write&amp;amp;quot; u-sequence, u-number&lt;br /&gt;
            ui-&amp;amp;gt;&amp;amp;gt;ui: accumulate in 6-column buffer\nwrite line to primes.prt every 6 entries&lt;br /&gt;
            gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;write&amp;amp;quot;&lt;br /&gt;
            dal-&amp;amp;gt;&amp;amp;gt;db: INSERT INTO primes (prime) VALUES (:prime)&lt;br /&gt;
            db--&amp;amp;gt;&amp;amp;gt;dal: SQLCODE=0&lt;br /&gt;
            dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
            gen-&amp;amp;gt;&amp;amp;gt;gen: r82-next-test-number&lt;br /&gt;
&lt;br /&gt;
        else otherwise (try next divisor)&lt;br /&gt;
            gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;next-divider&amp;amp;quot;&lt;br /&gt;
            dal-&amp;amp;gt;&amp;amp;gt;db: SELECT prime WHERE ident = :new-ident&lt;br /&gt;
            db--&amp;amp;gt;&amp;amp;gt;dal: test-divider value&lt;br /&gt;
            dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;disconnect&amp;amp;quot;&lt;br /&gt;
    dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL CONNECT RESET primes&lt;br /&gt;
    db--&amp;amp;gt;&amp;amp;gt;dal: SQLCODE=0&lt;br /&gt;
    dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
    gen--&amp;amp;gt;&amp;amp;gt;main: session-result=0 / EXIT PROGRAM&lt;br /&gt;
&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;log-message&amp;amp;quot; &amp;amp;quot;Primes run complete.&amp;amp;quot;&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;stop&amp;amp;quot;&lt;br /&gt;
    ui-&amp;amp;gt;&amp;amp;gt;ui: flush partial line\nCLOSE primes.prt&lt;br /&gt;
    ui--&amp;amp;gt;&amp;amp;gt;main: ui-method-result=0&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;OS: STOP RUN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;inter-program-call-sequence-report-run&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== 8. Inter-Program Call Sequence — Report Run ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What it shows:&amp;#039;&amp;#039;&amp;#039; All CALL interactions during a &amp;lt;code&amp;gt;report&amp;lt;/code&amp;gt; invocation — UI setup, database connection, transaction and cursor lifecycle, the fetch loop, and shutdown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;mermaid&amp;quot;&amp;gt;sequenceDiagram&lt;br /&gt;
    participant OS as OS / Shell&lt;br /&gt;
    participant main as primesmain&lt;br /&gt;
    participant gen as primesgen&lt;br /&gt;
    participant dal as primes (DAL)&lt;br /&gt;
    participant ui as primesui&lt;br /&gt;
    participant db as PostgreSQL&lt;br /&gt;
    participant prt as primes.prt&lt;br /&gt;
&lt;br /&gt;
    OS-&amp;amp;gt;&amp;amp;gt;main: execute with arg &amp;amp;quot;report&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;start&amp;amp;quot;&lt;br /&gt;
    ui-&amp;amp;gt;&amp;amp;gt;prt: OPEN OUTPUT&lt;br /&gt;
    prt--&amp;amp;gt;&amp;amp;gt;ui: file-status=&amp;amp;quot;00&amp;amp;quot;&lt;br /&gt;
    ui--&amp;amp;gt;&amp;amp;gt;main: ui-method-result=0&lt;br /&gt;
&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;gen: CALL &amp;amp;quot;primesgen&amp;amp;quot; methods=&amp;amp;quot;report&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;connect&amp;amp;quot;&lt;br /&gt;
    dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL CONNECT TO primes&lt;br /&gt;
    db--&amp;amp;gt;&amp;amp;gt;dal: SQLCODE=0&lt;br /&gt;
    dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;ui: LOG &amp;amp;quot;Database initialisation succeeded.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;cursor&amp;amp;quot;&lt;br /&gt;
    dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL AT primes START TRANSACTION&lt;br /&gt;
    dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL OPEN primescursor&lt;br /&gt;
    db--&amp;amp;gt;&amp;amp;gt;dal: SQLCODE=0&lt;br /&gt;
    dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;ui: LOG &amp;amp;quot;Cursor initialisation succeeded.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;dal: r94-fetch → dal-methods=&amp;amp;quot;next-prime&amp;amp;quot;&lt;br /&gt;
    dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL FETCH primescursor INTO :primes-row&lt;br /&gt;
    db--&amp;amp;gt;&amp;amp;gt;dal: first row (ident, prime)&lt;br /&gt;
    dal--&amp;amp;gt;&amp;amp;gt;gen: primes-sequence, prime-number / dal-result=0&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;ui: LOG &amp;amp;quot;Fetch first row ok.&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
    loop for each row until cursor exhausted&lt;br /&gt;
        gen-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;write&amp;amp;quot; u-sequence / u-number&lt;br /&gt;
        ui-&amp;amp;gt;&amp;amp;gt;prt: accumulate in 6-col buffer\nwrite 132-char line every 6 entries\nwrite heading+footing at page boundaries&lt;br /&gt;
        gen-&amp;amp;gt;&amp;amp;gt;dal: r94-fetch → dal-methods=&amp;amp;quot;next-prime&amp;amp;quot;&lt;br /&gt;
        dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL FETCH primescursor&lt;br /&gt;
        db--&amp;amp;gt;&amp;amp;gt;dal: next row or SQLCODE≠0 (no more rows)&lt;br /&gt;
        dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0 (row) or dal-result=1 (eof/error)&lt;br /&gt;
        note over gen: ⚠️ session-method-eof (9) never set;\nloop exits on error (1), not clean eof&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    gen-&amp;amp;gt;&amp;amp;gt;dal: CALL &amp;amp;quot;primes&amp;amp;quot; dal-methods=&amp;amp;quot;disconnect&amp;amp;quot;&lt;br /&gt;
    dal-&amp;amp;gt;&amp;amp;gt;db: EXEC SQL CONNECT RESET primes&lt;br /&gt;
    db--&amp;amp;gt;&amp;amp;gt;dal: SQLCODE=0&lt;br /&gt;
    dal--&amp;amp;gt;&amp;amp;gt;gen: dal-result=0&lt;br /&gt;
    gen--&amp;amp;gt;&amp;amp;gt;main: session-result=0 / EXIT PROGRAM&lt;br /&gt;
&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;log-message&amp;amp;quot; &amp;amp;quot;Primes run complete.&amp;amp;quot;&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;ui: CALL &amp;amp;quot;primesui&amp;amp;quot; ui-methods=&amp;amp;quot;stop&amp;amp;quot;&lt;br /&gt;
    ui-&amp;amp;gt;&amp;amp;gt;ui: pad remaining cells with zeros\nPERFORM r92 UNTIL new-page\nCLOSE fprinter&lt;br /&gt;
    ui-&amp;amp;gt;&amp;amp;gt;prt: CLOSE&lt;br /&gt;
    prt--&amp;amp;gt;&amp;amp;gt;ui: file-status=&amp;amp;quot;00&amp;amp;quot;&lt;br /&gt;
    ui--&amp;amp;gt;&amp;amp;gt;main: ui-method-result=0&lt;br /&gt;
    main-&amp;amp;gt;&amp;amp;gt;OS: STOP RUN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;← [[Data-Dictionary|Data Dictionary]]&amp;#039;&amp;#039;&amp;#039; | [[Home|Home →]]&lt;/div&gt;</summary>
		<author><name>Martin</name></author>
	</entry>
</feed>