PRIMA has been committed to component based design since the advent of OO COBOL in Fujitsu NetCOBOL for Windows, in the
late 1990s. This means we create components and build systems by plugging them together like Lego blocks.
For over 10 years we built our components in OO COBOL, but, around 2008 the decision was taken to move to C#, and today, everything is built using this language. For client code that uses the components, there is no detectable difference between a COM component written in COBOL, or a COM component written in C#; they present exactly the same (COM compliant) interface.
However, there are advantages for us in using C#, especially when it comes to deployment. (We no longer need to deploy a COBOL runtime, there are no problems with licensing fees, and even complex deployments are simplified with the use of ClickOnce from Microsoft and INNO installer.) For development, we find C# more powerful and much quicker to write and debug (largely because the language is less verbose and the tools are better).
What this means is that the current "inventory" of COBOL components is gradually being converted to C#.
It is my personal opinion that Component Based Design (CBD) is the way to go for development, but it is very hard to get good, simple examples, that support and explain the case. Objects and Layers are what the network needs and that is covered here.
Meanwhile, we will post some free samples of components and other code, on this page.
The String2Num component that validates numeric input
This is a function originally written for an IBM System 360-40
in 1974. If you are an old-time mainframe programmer, this page will bring back some memories. If you are
not, it will give you insight into how COBOL sites looked, back in the last century.
The component was moved to PCs soon after they were invented, and has seen life on a number of different platforms.
There is an interactive demo where you can test the component yourself.
You can download and embed this function into your own applications. It will tell instantly if a string presented to it represents a valid number, floating point, or currency, and provides a number of alternate formats for the number, if it is a number...
The free COBDATA COBOL structure analyser Tool
Originally, we used this component as an example for converting Standard COBOL source into an OO COBOL COM component.
The underlying engine was written by Robert Wagner as standard procedural COBOL.
Pete converted Robert's code to OO COBOL and wrapped it as a COM component. Finally, a presentation layer was added
in C#, and the whole application became a .NET executable.
Although it was a very reliable engine, some serious flaws (largely to do with incorrect calculations when calculating offsets and lengths for multi-dimensional COBOL tables) were found after it was deployed into various packages by PRIMA.
Fortunately, because it is a component, it could be easily replaced, without major impact on the packages which use it, and the decision was taken to re-write the whole thing in C#. Several Tools in PRIMA's Migration Toolset and the PowerCOBOL Migration Extension, use the new C# engine and no problems have been reported.
You can download a free copy of this tool in the form of a Windows Executable (.exe), but if you want the engine only, for use in your own applications (COM Component as .DLL), there is a small charge for it, as we maintain and provide updates for it.