Source-derived document; reported behaviour, inference and evidence gaps are identified in the text.
Return to: Component cooperation
Component cooperation
In this document
Which internal components cooperate, what are their responsibilities, and what passes between them?
This view groups the reported 4GL routines into internal cooperating components rather than treating the project file list as proof of runtime architecture. The grouping is inferred from menu dispatch, function calls, shared records, database operations, and report queries E0007. The view covers customer management, order entry, stock lookup and management, reports, state lookup, and main navigation where cooperation is supported E0007.
Read calls as source-level invocation evidence and exchanges as movement or use of business data between components. These relationships describe published source findings, not live runtime observation E0007. The supplied material does not establish which database configuration, compiled form artifact, or generated Java artifact is active at runtime E0008.
Diagram
Preparing diagram…
View Mermaid diagram source
flowchart LR
n41b566c1550a351155b0["Main navigation"]
nec069fe8aa093169b1ca["Customer management (inferred)"]
n698edcf11b4f6591cc12["Customer data (inferred)"]
nc5285030bb69b795df7a["State lookup (inferred)"]
ndceb899802040c57b976["Order entry (inferred)"]
nd0fe6ca98d07179d4180["Order data (inferred)"]
nd96069147ebcd100593c["Stock management (inferred)"]
n382851d92a6ec0fe5077["Stock data (inferred)"]
nc5fecb5004b8d9d6dcf1["Reports (inferred)"]
n41b566c1550a351155b0 -->|"Main menu dispatches customer work"| nec069fe8aa093169b1ca
n41b566c1550a351155b0 -->|"Main menu dispatches order work"| ndceb899802040c57b976
n41b566c1550a351155b0 -->|"Main menu dispatches stock work"| nd96069147ebcd100593c
n41b566c1550a351155b0 -->|"Main menu dispatches reports"| nc5fecb5004b8d9d6dcf1
nec069fe8aa093169b1ca -->|"Customer routines use customer records"| n698edcf11b4f6591cc12
nec069fe8aa093169b1ca -->|"Customer management invokes state lookup"| nc5285030bb69b795df7a
ndceb899802040c57b976 -->|"Order entry obtains a customer"| nec069fe8aa093169b1ca
nec069fe8aa093169b1ca -->|"Order entry exchanges customer identity"| ndceb899802040c57b976
ndceb899802040c57b976 -->|"Order entry uses stock lookup"| nd96069147ebcd100593c
nd96069147ebcd100593c -->|"Order entry exchanges stock data"| ndceb899802040c57b976
ndceb899802040c57b976 -->|"Order entry writes order data"| nd0fe6ca98d07179d4180
nc5fecb5004b8d9d6dcf1 -->|"Reports read customer data"| n698edcf11b4f6591cc12
nc5fecb5004b8d9d6dcf1 -->|"Reports read order data"| nd0fe6ca98d07179d4180
nc5fecb5004b8d9d6dcf1 -->|"Reports use stock data"| n382851d92a6ec0fe5077
Elements
Main navigation
Kind: component
Basis: reported
Description: Provides the main menu for Customer, Orders, Stock, Reports, and Exit, invokes the corresponding routines, loads states and stocks before entering the menu, and returns to the menu after the selected routine completes E0007.
Evidence: E0007
Customer management
Kind: component
Basis: inferred
Description: Opens the customer form and supports adding, finding, updating, deleting, and exiting customer operations. Customer creation inserts a customer record; search constructs a query-by-example condition; updates modify the selected row; deletion is blocked when matching orders exist E0007.
Evidence: E0007
Customer data
Kind: component
Basis: inferred
Description: Represents the customer business data exchanged through the customer table, customer forms, the global p_customer record, and customer-oriented reports. The supported fields include customer number, name, company, address, city, state, ZIP code, and phone E0007.
Evidence: E0007
State lookup
Kind: component
Basis: inferred
Description: Validates a state code and, when the code is not uniquely found, opens a state-list form, displays state values, and assigns the selected code E0007.
Evidence: E0007
Order entry
Kind: component
Basis: inferred
Description: Provides order creation and order lookup. It obtains or creates a customer, collects order header and item information, looks up stock details, inserts the order and its items transactionally, and generates an invoice after a successful commit. Order update and deletion are exposed but not implemented E0007.
Evidence: E0007
Order data
Kind: component
Basis: inferred
Description: Represents order headers and line items exchanged through order insertion, browsing, invoice generation, and reports. Order headers include order number, date, purchase order number, and shipping instructions; item records include stock, manufacturer, description, quantity, unit price, and total price fields E0007.
Evidence: E0007
Stock management
Kind: component
Basis: inferred
Description: Provides the Stock menu and declares add, find, update, and delete operations. Each stock-maintenance function currently displays an unimplemented-option error, while order entry can use the stock-selection and stock-lookup routines to populate item information E0007.
Evidence: E0007
Stock data
Kind: component
Basis: inferred
Description: Represents stock and manufacturer details preloaded into the global stock array. Order entry uses stock number and manufacturer code to obtain description and unit price, and invoice queries join order items with stock and manufacturer records E0007.
Evidence: E0007
Reports
Kind: component
Basis: inferred
Description: Provides mailing-label and accounts-receivable reports, report-output options, and unimplemented backlog and stock-list options. Mailing labels query customer data; accounts receivable joins customer, orders, and items for unpaid orders; output may target a file, printer, or screen E0007.
Evidence: E0007
Relationships
Main menu dispatches customer work
From: Main navigation
To: Customer management
Relation: calls
Basis: reported
Description: The main menu's Customer command calls the customer routine and then returns to the ring menu E0007.
Evidence: E0007
Trigger: Selecting Customer from the main menu E0007
Mechanism: Main-menu command dispatch E0007
Evidence type: source-level call finding
Main menu dispatches order work
From: Main navigation
To: Order entry
Relation: calls
Basis: reported
Description: The main menu's Orders command calls the orders routine and returns to the ring menu afterward E0007.
Evidence: E0007
Trigger: Selecting Orders from the main menu E0007
Mechanism: Main-menu command dispatch E0007
Evidence type: source-level call finding
Main menu dispatches stock work
From: Main navigation
To: Stock management
Relation: calls
Basis: reported
Description: The main menu's Stock command calls the stock routine, whose menu exposes stock-maintenance operations that currently return unimplemented-option errors E0007.
Evidence: E0007
Trigger: Selecting Stock from the main menu E0007
Mechanism: Main-menu command dispatch E0007
Evidence type: source-level call finding
Main menu dispatches reports
From: Main navigation
To: Reports
Relation: calls
Basis: reported
Description: The main menu's Reports command calls the reports routine and returns to the main menu after the report menu exits E0007.
Evidence: E0007
Trigger: Selecting Reports from the main menu E0007
Mechanism: Main-menu command dispatch E0007
Evidence type: source-level call finding
Customer routines use customer records
From: Customer management
To: Customer data
Relation: exchanges
Basis: reported
Description: Customer forms map input fields to customer columns, customer creation inserts p_customer.*, search reads customer rows, updates write the selected row, and deletion removes the selected customer row E0007.
Evidence: E0007
Information: Customer identity, contact, address, and state fields E0007
Mechanism: Forms, p_customer, and SQL operations against the customer table E0007
Evidence type: source-level data-mapping and SQL findings
Customer management invokes state lookup
From: Customer management
To: State lookup
Relation: calls
Basis: reported
Description: Customer state help checks the entered code and opens the state-list selection flow when a unique state is not found E0007.
Evidence: E0007
Trigger: State-field help or unresolved state-code lookup E0007
Mechanism: statehelp() validation and state-list form selection E0007
Evidence type: source-level call finding
Order entry obtains a customer
From: Order entry
To: Customer management
Relation: calls
Basis: reported
Description: Order creation first calls customer query; if no customer is returned, it opens customer entry and calls customer creation before continuing or returning when no customer number is available E0007.
Evidence: E0007
Trigger: Starting Add-order E0007
Mechanism: Customer query followed conditionally by customer-form entry E0007
Evidence type: source-level call finding
Order entry exchanges customer identity
From: Customer management
To: Order entry
Relation: exchanges
Basis: reported
Description: Order creation requires the selected customer's number, and customer deletion checks for matching orders before allowing deletion E0007.
Evidence: E0007
Information: Selected customer number and its association with orders E0007
Control: Customer deletion is prevented when matching orders exist E0007
Evidence type: source-level business-rule and data-use finding
Order entry uses stock lookup
From: Order entry
To: Stock management
Relation: calls
Basis: reported
Description: During item entry, the order routine can call stock selection through CTRL-B and can call item lookup after stock number and manufacturer code entry E0007.
Evidence: E0007
Trigger: Cursor position in stock number or manufacturer-code fields, or completion of those fields E0007
Mechanism: get_stock() selection and get_item() lookup E0007
Evidence type: source-level call finding
Order entry exchanges stock data
From: Stock management
To: Order entry
Relation: exchanges
Basis: reported
Description: A selected stock record populates order-line fields, and a valid stock/manufacturer lookup supplies item description and unit price for order entry E0007.
Evidence: E0007
Information: Stock number, manufacturer code, description, and unit price E0007
Control: Invalid lookup results clear the description and unit-price fields E0007
Evidence type: source-level data-flow finding
Order entry writes order data
From: Order entry
To: Order data
Relation: exchanges
Basis: reported
Description: Add-order begins a transaction, inserts the order header, obtains the generated order number, inserts item rows, and commits only when both order and item insertion succeed; otherwise it rolls back E0007.
Evidence: E0007
Information: Order header and item-line values E0007
Control: Commit requires successful order and item insertion; failures cause rollback E0007
Evidence type: source-level transactional SQL finding
Reports read customer data
From: Reports
To: Customer data
Relation: exchanges
Basis: reported
Description: Mailing-label reporting uses query-by-example on customer fields, orders selected customers by ZIP code, and prints names, company, address, city, state, and ZIP code E0007.
Evidence: E0007
Information: Customer selection criteria and address details E0007
Mechanism: Query-by-example, prepared query, and report iteration E0007
Evidence type: source-level query and report finding
Reports read order data
From: Reports
To: Order data
Relation: exchanges
Basis: reported
Description: The accounts-receivable report selects unpaid orders and their items, then prints order details and grouped customer and order totals E0007.
Evidence: E0007
Information: Unpaid-order details and grouped totals E0007
Guard: The report selects orders whose paid date is NULL E0007
Evidence type: source-level joined-query and report finding
Reports use stock data
From: Reports
To: Stock data
Relation: exchanges
Basis: reported
Description: Invoice generation selects order and item data through joins with stock and manufacturer records before sending output to the configured destination E0007.
Evidence: E0007
Information: Stock and manufacturer details associated with order items E0007
Mechanism: Joined query used by invoice generation E0007
Evidence type: source-level joined-query finding
Gaps
The evidence supports source-level cooperation, but it does not prove live runtime calls, active deployment, or component placement. The project and generated-artifact evidence does not establish that the Java classes or module mapping are loaded at runtime E0007.
Database configuration is inconsistent: the binary properties identify a localhost Informix endpoint, while the source project properties identify a different host, port, server, and password. Precedence and runtime context are unresolved E0008.
The order form, state-list form, and stock-selection form are referenced by source, but their presence, loading behavior, and consistency with the source declarations are not established. Several binary form artifacts could not be semantically checked E0008.
Stock maintenance, order update and deletion, backlog reporting, and stock-list reporting are menu-visible but explicitly unimplemented; therefore their prospective cooperation is not modeled as successful behavior E0007.
The supplied evidence does not establish whether customer insertion errors are detected, whether report interruption is reliably propagated, or whether all array and display-state behavior is safe. These concerns affect cooperation controls but require broader source context or runtime verification E0008.
Recovery limitations
- The view includes explicitly marked inference.
Sources
- E0007 — SHA256
ce6dd2b00b79f008ecb98935db9ed709c044218bcdd4143008d56d06a04cff97 - E0008 — SHA256
1713f4e3d42ac5e2af28387ac6ff649f06bbe1683b11869af71326929d6a5f32
Harten documentation of the Informix 4GL and Java source repository, from the retained 17 October 2026 export. The exact upstream revision analysed is not established. Source findings do not establish runtime behaviour or equivalence between the implementations.
Evidence identifiers are retained for traceability. The underlying analysis records are not included in this public edition; credential values are redacted. About this case study.