InterfacingWithStdCOBOL.sln ソリューションでは、最初のプロジェクト ペア (StdCbl01.*) に含まれる COBOL プログラムは、C# 型と互換性がある型を使用します。この手法自体に問題はありませんが、COBOL モジュールでは通常、.NET 型と互換性がないデータ型や、より複雑なデータ構造が使用されるため、あまり現実的な例ではありません。
StdCbl01 プロジェクトには、次の各プログラムが含まれています。
21 から 31 行目
LINKAGE SECTION. ... 01 F-SBYTE-COMP5 PIC S9(02) COMP-5. *> map to C# sbyte 01 F-SHORT-COMP5 PIC S9(04) COMP-5. *> map to C# short 01 F-INT-COMP5 PIC S9(09) COMP-5. *> map to C# int 01 F-LONG-COMP5 PIC S9(18) COMP-5. *> map to C# long 01 F-COMP1 COMP-1. *> map to C# float 01 F-COMP2 COMP-2. *> map to C# double
このプログラムは手続き型 COBOL で記述されており、マネージ コードにコンパイルすると、1 つのクラスと、暗黙で公開される 1 つのインスタンス メソッドが生成されます。このクラスとメソッドの名前には、PROGRAM-ID の値 StdCbl01 が使用されます。プログラムはメソッドとして公開され、あらゆるマネージ プログラムから直接呼び出すことができます。次に例を示します。
12 行目:
PROGRAM-ID. StdCbl01. *> PROGRAM-ID is used both as class name *> and as the only INSTANCE method available
PROGRAM-ID. StdCbl01 AS “StdCbl01”
37 行目:
STDCBL01 stdCbl01 = (STDCBL01)Interop.CobLoad("StdCbl01"); COBOLrc = stdcbl01.STDCBL01(ref CSsbyte, ref CSshort, ref CSint, ref CSlong, ref CSfloat, ref CSdouble);