Editing
Flow diagrams
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
<span id="flow-diagrams"></span> = Flow Diagrams = '''Project:''' pgcobol β Prime Numbers Application<br /> '''Version:''' 1.0 (reverse-engineered)<br /> '''Date:''' 2026-03-17<br /> '''Notation:''' Mermaid flowchart / sequence diagrams ----- <span id="system-level-call-graph"></span> == 1. System-Level Call Graph == <pre class="mermaid">graph TD OS([OS / shell]) -->|command-line arg| MAIN[primesmain] MAIN -->|CALL primesui start| UI[primesui] MAIN -->|CALL primesgen primes-session| GEN[primesgen] GEN -->|CALL primes primes-dal| DAL[primes DAL] GEN -->|CALL primesui primes-ui| UI DAL -->|CALL primesui primes-ui| UI DAL <-->|EXEC SQL via GixSQL| DB[(PostgreSQL\nprimes.primes)] UI -->|WRITE records| PRT([primes.prt]) UI -->|DISPLAY| CON([console / scherm])</pre> ----- <span id="main-program-flow-primesmain"></span> == 2. Main Program Flow β primesmain == <pre class="mermaid">flowchart TD START([Start]) --> ACCEPT[ACCEPT commandline-args\nfrom COMMAND-LINE] ACCEPT --> MOVEMETHODS[MOVE commandline-args TO methods\nMOVE 'primesmain' TO program-name] MOVEMETHODS --> STARTSESS[PERFORM r90-start-session\nCALL primesui start] STARTSESS --> UIOK{ui-method-ok?} UIOK -->|No| EMERGENCY[DISPLAY emergency message\non console\nSTOP RUN] UIOK -->|Yes| LOGUI[LOG 'UI initialisation succeeded.'\nLOG commandline-args] LOGUI --> EVAL{EVALUATE commandline-args} EVAL -->|report| LOGRPT[LOG 'Primes report generation starts.'\nSET methods = 'report'] LOGRPT --> CALLGEN[PERFORM r92-generate-primes\nCALL primesgen USING primes-session] EVAL -->|generate| LOGGEN[LOG 'Primes generation starts.'\nSET methods = 'generate'] LOGGEN --> COMMENTED["β PERFORM r92-generate-primes\n[commented out in source]"] EVAL -->|other| LOGBAD[LOG 'Bad parameter'\nCALL primesui stop] LOGBAD --> STOPBAD([STOP RUN]) CALLGEN --> LOGDONE[LOG 'Primes run complete.'] COMMENTED --> LOGDONE LOGDONE --> STOPSESS[PERFORM r99-stop-session\nCALL primesui stop] STOPSESS --> STOP([STOP RUN])</pre> ----- <span id="generate-flow-primesgen-generate-path"></span> == 3. Generate Flow β primesgen (generate path) == <pre class="mermaid">flowchart TD ENTRY([Entry: methods = 'generate']) --> CONNECT[CALL primes 'connect'\nEXEC SQL CONNECT] CONNECT --> CONNOK{dal-method-ok?} CONNOK -->|No| SETFAIL1[LOG 'Database init failed.'\nSET session-result = 1] SETFAIL1 --> CLOSE CONNOK -->|Yes| INIT[test-number = 3\ntest-divider = 2\nold-ident = 1\ntest-number-sqr = SQRT 3] INIT --> LOGCONN[LOG 'Database init succeeded.'] LOGCONN --> LOOP{test-number\n= 999999999?} LOOP -->|Yes| CLOSE LOOP -->|No| DIVIDE[DIVIDE test-number\nBY test-divider\nGIVING test-quot\nREMAINDER test-rest] DIVIDE --> CASE{EVALUATE} CASE -->|test-rest = 0\ncomposite| NEXTN[r82-next-test-number:\nADD 2 TO test-number\nSQRT recalc\nold-ident = 1\nFETCH first divider] NEXTN --> LOOP CASE -->|test-divider > SQRT\nprime confirmed| WRITE[r85-write-prime:\nCALL primes 'write' INSERT\nCALL primesui 'write'] WRITE --> NEXTN2[r82-next-test-number] NEXTN2 --> LOOP CASE -->|otherwise\ntry next divisor| NEXTDIV[r89-get-next-divider:\nCALL primes 'next-divider'\nSELECT prime WHERE ident=new-ident] NEXTDIV --> LOOP CLOSE([PERFORM r99-close-primes\nCALL primes 'disconnect'\nEXIT PROGRAM])</pre> ----- <span id="report-flow-primesgen-report-path"></span> == 4. Report Flow β primesgen (report path) == <pre class="mermaid">flowchart TD ENTRY([Entry: methods = 'report']) --> CONNECT[CALL primes 'connect'] CONNECT --> CONNOK{dal-method-ok?} CONNOK -->|No| FAIL1[LOG 'Database init failed.'\nsession-result = 1\nGO TO CLOSE] CONNOK -->|Yes| CURSOR[CALL primes 'cursor'\nSTART TRANSACTION\nOPEN primescursor] CURSOR --> CURROK{dal-method-ok?} CURROK -->|No| FAIL2[LOG 'Cursor init failed.'\nsession-result = 1\nGO TO CLOSE] CURROK -->|Yes| FETCH1[r94-fetch:\nCALL primes 'next-prime'\nFETCH primescursor] FETCH1 --> FETCHOK{dal-method-ok?} FETCHOK -->|No| LOGFAIL[LOG 'Fetch first row nok.'\ndal-result = 1] LOGFAIL --> CLOSE FETCHOK -->|Yes| LOGOK[LOG 'Fetch first row ok.'\ndal-result = 0] LOGOK --> RPTLOOP{session-method-eof?} RPTLOOP -->|Yes| CLOSE RPTLOOP -->|No| UIWRITE[r86-report-primes:\nMOVE primes-data TO u-primes\nCALL primesui 'write'] UIWRITE --> FETCHN[r94-fetch:\nCALL primes 'next-prime'] FETCHN --> RPTLOOP CLOSE([PERFORM r99-close-primes\nCALL primes 'disconnect'\nEXIT PROGRAM])</pre> ----- <span id="dal-dispatch-primes.cbl"></span> == 5. DAL Dispatch β primes.cbl == <pre class="mermaid">flowchart TD ENTRY([ENTRY primes-dal]) --> EVAL{dal-methods} EVAL -->|connect| S00[s00-connect:\nEXEC SQL CONNECT TO datasrc\nAS primes USER dbusr USING dbpwd] EVAL -->|cursor| S01[s01-cursor:\nEXEC SQL START TRANSACTION\nEXEC SQL OPEN primescursor] EVAL -->|next-prime| R80[r80-get-next-prime β s02-fetch:\nEXEC SQL FETCH primescursor\nINTO primes-row] EVAL -->|next-divider| R81[r81-get-next-divider:\nnew-ident = old-ident + 1\nEXEC SQL SELECT prime\nWHERE ident = new-ident] EVAL -->|write| R83[r83-write-prime:\nEXEC SQL INSERT INTO primes\nVALUES prime-number] EVAL -->|disconnect| S99[s99-disconnect:\nEXEC SQL CONNECT RESET primes] EVAL -->|other| ERR[dal-result = 1] S00 --> SQLCK1{SQLCODE = 0?} SQLCK1 -->|Yes| OK1[dal-result = 0] SQLCK1 -->|No| NOK1[LOG error\ndal-result = 1] S01 --> SQLCK2{SQLCODE = 0?} SQLCK2 -->|Yes| OPEN[OPEN primescursor] SQLCK2 -->|No| NOK2[dal-result = 1] R80 --> SQLCK3{SQLCODE = 0?} SQLCK3 -->|Yes| MOVROW[primes-sequence = r-ident\nprime-number = r-prime\ndal-result = 0] SQLCK3 -->|No| NOK3[LOG error\ndal-result = 1] OK1 & MOVROW & NOK1 & NOK2 & NOK3 & OK1 & R81 & R83 & S99 & ERR --> EXIT([EXIT PROGRAM])</pre> ----- <span id="ui-dispatch-primesui.cbl"></span> == 6. UI Dispatch β primesui.cbl == <pre class="mermaid">flowchart TD ENTRY([ENTRY primes-ui]) --> EVAL{ui-methods} EVAL -->|start| R90[r90-start-primesui:\nOPEN OUTPUT fprinter\ncheck file-status] EVAL -->|write| R92[r92-write-primesui:\nload t-ident / t-prime into cell\nprimes-idx + 1] EVAL -->|log-message| R98[r98-message-ui:\nDISPLAY process-message\nUPON scherm] EVAL -->|stop| R99[r99-stop-primesui:\nflush partial line\nCLOSE fprinter] EVAL -->|other| ERR[ui-method-result = 1] R90 --> STATCK{file-status = '00'?} STATCK -->|Yes| OPENOK[ui-method-result = 0\nprimes-idx = 1] STATCK -->|No| OPENNOK[ui-method-result = 1\nDISPLAY status on console] R92 --> NEWPG{new-page?} NEWPG -->|Yes| R93[r93-new-page:\nwrite heading + column header\nprint-new-page = 0] NEWPG -->|No| IDX7{primes-idx = 7?} R93 --> IDX7 IDX7 -->|Yes| WRITELN[WRITE print line\nprimes-idx = 1] IDX7 -->|No| LINCNT{linage-counter = 53?} WRITELN --> LINCNT LINCNT -->|Yes| R94[r94-eop:\nwrite footing\npage-number + 1\nprint-new-page = 1] LINCNT -->|No| UIEXIT R94 --> UIEXIT R99 --> FLUSH[PERFORM r92-write-primesui\nUNTIL new-page\nwriting zero rows] FLUSH --> CLSFIL[CLOSE fprinter] CLSFIL --> UIEXIT OPENOK & OPENNOK & R98 & ERR & CLSFIL --> UIEXIT([EXIT PROGRAM])</pre> ----- <span id="sequence-diagram-full-report-run"></span> == 7. Sequence Diagram β Full Report Run == <pre class="mermaid">sequenceDiagram participant Shell participant MAIN as primesmain participant GEN as primesgen participant DAL as primes (DAL) participant UI as primesui participant DB as PostgreSQL participant PRT as primes.prt Shell->>MAIN: execute "report" MAIN->>UI: ui-methods="start" UI->>PRT: OPEN OUTPUT PRT-->>UI: file-status "00" UI-->>MAIN: ui-method-result=0 MAIN->>UI: ui-methods="log-message" "UI init OK" UI->>Shell: DISPLAY on console MAIN->>GEN: CALL primesgen methods="report" GEN->>DAL: dal-methods="connect" DAL->>DB: EXEC SQL CONNECT DB-->>DAL: SQLCODE=0 DAL-->>GEN: dal-result=0 GEN->>UI: ui-methods="log-message" "DB init OK" GEN->>DAL: dal-methods="cursor" DAL->>DB: START TRANSACTION DAL->>DB: OPEN primescursor DB-->>DAL: SQLCODE=0 DAL-->>GEN: dal-result=0 GEN->>DAL: dal-methods="next-prime" (first fetch) DAL->>DB: FETCH primescursor DB-->>DAL: row (ident, prime) DAL-->>GEN: primes-sequence, prime-number loop for each row until EOF GEN->>UI: ui-methods="write" u-sequence, u-number UI->>PRT: accumulate / WRITE line (every 6 entries) GEN->>DAL: dal-methods="next-prime" DAL->>DB: FETCH primescursor DB-->>DAL: row or EOF DAL-->>GEN: dal-result (0 or 1) end GEN->>DAL: dal-methods="disconnect" DAL->>DB: CONNECT RESET primes DB-->>DAL: SQLCODE=0 DAL-->>GEN: dal-result=0 GEN-->>MAIN: EXIT PROGRAM MAIN->>UI: ui-methods="log-message" "Run complete" MAIN->>UI: ui-methods="stop" UI->>PRT: flush + CLOSE PRT-->>UI: file-status "00" UI-->>MAIN: ui-method-result=0 MAIN->>Shell: STOP RUN</pre> <hr/> Terug naar: [[Primes_programs_specifications]] | [[Cobol and PostgreSQL]]
Summary:
Please note that all contributions to Webhuis wiki are considered to be released under the GNU Free Documentation License 1.3 or later (see
Project:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Voorpagina
Cobol and PostgreSQL
PostgreSQL
CFEngine
Proxmox
Webhuis Kennisbank
Basale infra
Webhuis bouwstenen
Webhuis configuratie
Webhuis Infra
Webhuis Support
Webhuis Raspberry
Opzet Applicaties
Business Applicaties
Community portal
Current events
Recent changes
Random page
Help
sitesupport
Tools
What links here
Related changes
Special pages
Page information