Note: The following applies to managed COBOL only.
You can use any existing COBOL program in a multiple user environment in
.NET. Do this as follows:
- Create a COBOL class library project and add your procedural COBOL program to that project.
- Rebuild the project.
The COBOL program is now represented as a class that can be instantiated. It is packaged as a library (.dll); it is not compiled as an executable that can be run directly.
Whether the COBOL program to be called is procedural or OO COBOL, you need a program to call it, and this program can be in any .NET language, such as C# or COBOL:
- Create a project for the calling program, which can be more or less any project type, and add a reference to the:
- Micro Focus Runtime (Interop RuntimeServices) assembly - this adds the
MicroFocus.COBOL.RuntimeServices reference to your project.
- Micro Focus Runtime assembly - this adds the
MicroFocus.COBOL.Runtime reference to your project. You need this only if the calling program is in a .NET language other than COBOL.
- Project containing the COBOL class library that you want to call.
- In the calling program, create a run unit using the
MicroFocus.COBOL.RuntimeServices.RunUnit constructor.
- Use the
Try ... Finally syntax to ensure that the program destroys the run unit if the program fails.
- Either use the
RunUnit.Call() method to call the COBOL class, or:
- Make sure that any parameters use .NET standard data types, and make sure that the called COBOL can receive these .NET standard data types.
- Create an instance of the procedural COBOL program to be called.
- Add the program instance to the new run unit, using the
RunUnit.Add() method.
- Invoke the program instance within the new run unit.
- Use the
StopRun()
method to destroy the run unit when you have finished with it.
Note:
- If the run unit causes a run-time error, a
System.ApplicationException is thrown.
- In OO COBOL programs in a mixed language environment, do not use static methods and data as they cause run-time errors.
- Ensure that data access is synchronized, as the run units will be executing in different threads.
For details of the RunUnit class in the
MicroFocus.COBOL.RuntimeServices assembly, see:
RunUnit Class.