|Datapoint Corporation developed a videoconferencing system in the late 1970's and early 1980's. This system
remained competitive into the early 1990's, despite Datapoint's otherwise disastrous decline from the Fortune 500
and the DJIA.
The engineer designing the system needed a way to 'explode' top assemblies and subassemblies into parts lists. A
videoconferencing system can have one or more hubs, several consoles, various collections of cables, and incidentals
like microwave transceivers, satellite uplink/downlinks, and so forth. These were the 'top assemblies'. Circuit
boards, power supplies, and keyboards were examples of subassemblies; and capacitors, resistors, ICs, and connectors
were components. Many of these components were common across multiple top- and sub-assemblies.
Top assemblies, for purposes of this system, were any product that had no 'parent'. A list of these would constitute
an order, such as might be received from the sales department. A first-pass scan through this list would produce
a list of the most senior sub-assemblies, and so forth. Each assembly had a parts list, some of which were
subassemblies and some of which were components. The most 'primitive' sub-assemblies consisted only of parts.
This system treated the list of top assemblies, subassembly parts lists, and components as a tree structure, and
'drilled down' into the tree as assemblies were encountered in the list. This required the maintenance of a push-down
stack, so that when a 'primitive' subassembly was completely itemized, the program could pick up with the remaining
items in the ancestor subassembly, for as many layers as was required. Typically there were no more than five layers
between a top assembly and a component.
When processing a tree structure of this kind, it is necessary to check for 'circularity', which means that two parts
lists reference each other. This was done by simply comparing a newly encountered sub-assembly with all assembly
numbers already on the stack; if there was a match then some circular reference had been identified.
This system was written in Datapoint Databus language and was run on a variety of computers running the Datapoint
RMS operating system.