.NET COBOL でのコード ページの競合の例

注: 次の説明は .NET COBOL にのみ該当します。

Visual Studio は、WPF および WCF ユーザー インターフェイスにプログラムからアクセスできるように、COBOL で部分クラスを作成します。これらの部分クラスは自動生成され、ユーザーまたは Visual Studio によって更新できます。

次の例では、以下のようになります。

PicLen.cbl が既存のコードである場合、または手動で入力した新規のソース ファイルである場合、プラットフォームのデフォルトのコード ページではエンコードされません。たとえば、英国では、これはコード ページ 1252 となり、日本語ロケール マシンでは、通常は Shift-JIS コード ページ 932 となります。

WindowStuff から PicLen が呼び出される場合、次のように、一方のコード ページがもう一方のコード ページを呼び出します。
       call "PicLen" using stuff lStuff

逆方向のコード ページの呼び出しは、直接にはサポートされていません。アプリケーションが実行されると、COBOL ランタイム システムはエラーを生成します。Window1 の次のソース コードは、これを処理して例外を表示するコードを示しています。

try
           set stuff to self::textBox1::Text
           call "PicLen" using stuff lStuff
           move lStuff to nStuff
           set self::textBox2::Text to nStuff::ToString()
       catch ex
           set self::textBox3::Text to ex::Message
       end-try

PicLen と Window1 が異なるコード ページでエンコードされている場合、アプリケーションは次の例外を生成します。

198 Load failure [Program has an incompatible codepage dependency 
CodePageStuff.StrLen is using codepage Western European (Windows) 
but the first program CodePageStuff.Window1 is using Unicode (UTF-8)]