ビルド
「sub_wa4.cob」のビルドに次のようなシェルスクリプト「cob2so.sh」を使用しました。「~/bin」に保存し、実行権限を与えておきます。
#!/bin/sh USERLIB="$HOME/lib" USERSRC="$HOME/src/cob" LIBNAME="libsubcob.so" exec cobc -free -m -O -o $USERLIB/$LIBNAME $USERSRC/$1.cob
> cob2so.sh sub_wa4
> cd ~/src/cs/PInvokeExample > gmcs PInvokeExample3.cs
実行
コマンドライン引数の数に応じて、出力文字列を変えてみました。
せっかくなので、何かコマンドを打ち間違えた時に呼び出せるようにするといいかもしれません。そこで今回は「momo」コマンドとして呼び出せるようにします。
#!/bin/sh EXEFILE="$HOME/src/cs/PInvokeExample/PInvokeExample3.exe" exec mono $EXEFILE "$@"
「~/bin/momo」として保存し、実行権限を与えます。
多言語対応コンソール「mlterm」を使用し、「font:IPA UI Gothic、font size:15、行間隔:2」の設定で実行してみるとこんな感じで出力されます。
6.まとめ
Linux上のMono環境での基本的なP/Invokeの使用方法、P/Invokeを使用したOpenCOBOLとの連携について解説を行いました。
Monoには「MonoはCOBOLで実装されている」という伝説(?)があり、この文言を目にした時から何かフォローできることはないかと考えてきました。また機会があればMono環境での基本的な機能について紹介したいと思います。
7.参考資料
- developerWorks 『.NETアプリをLinux対応にするMono』
- msdn 『文字列のマーシャリング』