Procedural COBOL is regular COBOL without any of the new syntax that has been added for .NET and JVM. Procedural COBOL is still actively supported today and is being enhanced. Since the days of Net Express, Server Express, and Mainframe Express, it now supports inline local declarations (as in DECLARE). It also supports new syntax such as XML PARSE, JSON GENERATE, UTF-8, and more.
You can compile to native or (in most cases) JVM COBOL. The core COBOL syntax is supported in JVM COBOL. However, 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 recompile to create JVM COBOL applications.
JVM COBOL is COBOL with extensions to support the JVM. It offers OO syntax support and syntax to allow access to the available class libraries.
When you compile JVM COBOL, the compiler generates managed code: .class or .jar for JVM that runs on the Java Virtual Machine.
You can compile your COBOL program to JVM COBOL code using the jvmgen compiler directive. From within the IDE this happens automatically if you are using a JVM COBOL project.
The compiler has now created an intermediate language (JVM byte code .class/.jar).
COBOL and all other JVM languages (for example Java, JRuby and Jyphon) compile to this format, which makes mixed language applications easy to write.
You can also create native code applications.In Eclipse, the default COBOL project compiles to native code.
The compiler generates .exe/.dlls as the result of a native compilation.
The native COBOL application has to call the appropriate management services available for the operating system, whereas a managed application can take advantage of the management services provided by the run time such as exception handling, garbage collection, and thread management.
The JVM byte code (.class/.jar files) can be deployed to a Java Virtual Machine for execution.
The JVM's just-in-time (JIT) compiler compiles the byte code into code native to the operating system. The JVM provides additional services including memory management, exception handling, garbage collection and thread management.
You use the IDE to develop, compile and debug both native and JVM COBOL applications. You can write new COBOL code or you can recompile existing COBOL applications to native or JVM COBOL code, potentially without any code changes.
You can deploy and further debug the application under the run-time system provided by COBOL Server.
JVM COBOL applications are deployed to a Java Virtual Machine for execution.