You might come across various terms related to the COBOL language and programming in the documentation for this and previous
versions of this product, and on the Micro Focus Web site. The following list describes the most common terms:
- Native code
- Native code is code which compiles directly to the machine language native to the computer it is run on. It is compiled to
run on the Operating System and is executed directly by the machine's processor. Examples of native languages are C, C++ and
procedural COBOL compiled as native code.
- Managed code
- A Microsoft term used to indicate code which runs under the management of a run-time system and not directly on the machine.
In the Microsoft world, the run-time system is the Common Language Runtime (CLR) as part of the .NET Framework or .NET Core.
The CLR compiles the managed code to machine code and executes it. It also provides a variety of management services such
as exception handling, garbage collection, and thread management.
- Though the term "managed code" is not used in Java, Java is in essence a managed language since it runs in the Java Virtual
Machine (JVM) which is the run-time system.
- Other examples of managed languages are COBOL, which can be compiled to run either in .NET or in the JVM, and all .NET languages
(such as C#).
- Unmanaged code
- A synonym of native, non-managed code.
- Object-Oriented (OO) programming
- Object-oriented programming uses objects that interact with each other. Objects include data, represented by fields (properties
and attributes), and procedures (methods). The methods of an object can access and modify the properties of that object.
A programming task consists of objects.
- Procedural programming
- Procedural programming uses linear instructions meaning you write a set of commands that are executed step-by-step. A programming
task consists of data structures and subroutines.
- Procedural COBOL
COBOL was originally a procedural programming language. Procedural COBOL uses syntax that does not include the syntax for
.NET and JVM. This is the COBOL that was used when writing applications in Net Express, Server Express and Mainframe Express,
and it is still actively supported today.
You can compile procedural COBOL to either native or (in most cases) managed code.
The procedural COBOL syntax is supported in .NET COBOL and in JVM COBOL code, although there are some features that are not
supported (for example Panels V2, Dialog System and ACUCOBOL-GT). This means that you can take most existing COBOL applications
and simply recompile them to create .NET COBOL or JVM COBOL applications.
- Native COBOL
- Native COBOL is COBOL which is compiled to native code.
- .NET COBOL
- .NET COBOL is COBOL with extensions to support the .NET Framework and .NET Core. It offers OO syntax support and syntax to
allow access to the available .NET class libraries.
- JVM COBOL
- JVM COBOL is COBOL with extensions to support the JVM. It offers OO syntax support and syntax to allow access to the available
Java class libraries.
- Managed COBOL
- Used as a collective term for .NET COBOL and JVM COBOL. The Micro Focus documentation would typically refer to specifically
.NET COBOL or JVM COBOL.
- Native OO COBOL
- Refers to the OO syntax before .NET COBOL and JVM COBOL. Native OO COBOL means either ISO 2002 COBOL syntax, the Micro Focus
OO syntax alternative to ISO 2002 COBOL standard, or a mixture of both.