<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://www.lancard.com/diary/">
<title>LAN板とソレ以外の日々</title>
<link>http://www.lancard.com/diary/</link>
<description></description>
<dc:language>ja</dc:language>
<dc:creator></dc:creator>
<dc:date>2010-01-21T13:20:18+09:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=2.64" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://www.lancard.com/archives/000535.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000534.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000533.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000532.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000531.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000530.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000529.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000528.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000527.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000526.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000525.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000524.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000523.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000522.html" />
<rdf:li rdf:resource="http://www.lancard.com/archives/000521.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://www.lancard.com/archives/000535.html">
<title>猫にゃん</title>
<link>http://www.lancard.com/archives/000535.html</link>
<description>猫にゃんヽ(´ー｀)ノ ご幼少の頃 最近 ゴロンゴロンする癖がついてしまった(;´Д`)...</description>
<dc:subject>猫</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2010-01-21T13:20:18+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000534.html">
<title>OpenCOBOLで半角カナ変数名等</title>
<link>http://www.lancard.com/archives/000534.html</link>
<description>某所で扱ってるCOBOLソースに半角カナ変数名があって困ったのですが(;´Д`) とりあえず力業にてパーサ弄って半角カナ変数名については通すように改造ヽ(´ー｀)ノ C言語に変換されてもコメント欄にしか出てきませんから特に問題なかろうということですね。ちなみに半角カナのサブルーチン名/モジュール名はC言語の関数名に変換されるのでもう少し手の込んだコード修正が要ります。全角といいますか漢字については0x5cその他について考慮する必要があったりしてもう少し難しいですね。ShiftJISでソースを取り扱う限りは。 ＃ 時間さえあればすぐにでも実装出来るんですが 時間がが 某所で扱ってるCOBOLソースはCOPY句でREPLACING //HOGE// BY //FUGA//で、全てのHOGEをFUGAに置き換える拡張機能があるのですが、ついでにコレも実装してみたり。ちょっとソースが汚いですが動作はしている模様。 とりあえず以上近況でしたヽ(´ー｀)ノ...</description>
<dc:subject>OpenCOBOL</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-11-23T03:24:36+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000533.html">
<title>バイナリにソースを同梱とか</title>
<link>http://www.lancard.com/archives/000533.html</link>
<description>バイナリにソースを同梱するトカ(;´Д`) コンパイル元のソースファイルどれだっけ？というか、コレ誰が何時作ったんだよとか多数の企業さんが客先に出入りしてるような環境だとわからなくなったりして、そもそもソースどこ行ったのよ？と非常に困ることがありました。 で、サンプル： objcopy --add-section=.cob_src=AICS0510.cob AICS0510.so AICS0510_new.so ヽ(´ー｀)ノ .cob_srcというセクションにAICS0510.cobってファイルを流し込んでます（ぉぃ readelf　-aの結果を外挿する前、後で比べると： --- AICS0510.so.txt 2009-10-15 17:48:48.000000000 +0900 +++ AICS0510_new.so.txt 2009-10-15 17:52:39.000000000 +0900 @@ -10,14 +10,14 @@ Version: 0x1 Entry point address: 0xfa0 Start of program headers: 52 (bytes into file) - Start...</description>
<dc:subject>Linux</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-10-16T15:30:23+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000532.html">
<title>LD_PRELOADつかってOpenCOBOLで</title>
<link>http://www.lancard.com/archives/000532.html</link>
<description>LD_PRELOAD使ってOpenCOBOLでcob_file_openを差し替えとかヽ(´ー｀)ノ 　以前にOpenCOBOLとcob_perlとMySQLで等でOpenCOBOLのデータベースファイルアクセスをMySQLへの処理に差し替える等書いてたわけですが、実際に現場で動作しています。 　ただし、この方法だと、CALL文使ってファイル関連の処理を書き換えたりするので、シカケが理解出来ていないとなかなか難しいところもあるのかなと考えていました。また、書き換え後のコードはDB処理に特化していますから、元のファイル処理のコードを書いた人（というか、大抵の場合は他社の社員の人）がメンテナンスしにくくなります。これは困りますね(;´Д`) 　ということで、LD_PRELOADつかって、libcob内のcob_file_open他file関連の関数を差し替えてしまう拡張を実装中ですヽ(´ー｀)ノ。これならソース自体も元のままですし、気が向いたときファイル、またはDBを切り替え出来ますし、混在もファイルとDBでデータの突き合わせもやりやすくなります. イメージ図 ファイル/DBの切り替えですが、特殊なファイル名（DSNとか）が指定された場合に、DBを使用するという方向で実装しています。または、ファイル名をカタログを確認して、処理方法を決める等。いずれにしろ、cob_file_open他ファイル関連の関数の処理に横入り出来ればデバッグにはかなり便利ですよね。 これと、OpenCOBOL-1.1から導入されたデバッグ用の機構を併用して「どのプログラムのどの行でどのようなデータが読み/書きされたか？」をモニタ出来るような拡張も準備中です。 ヽ(´ー｀)ノ今月中に実装完了させたいところですね（出来れば）...</description>
<dc:subject>OpenCOBOL</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-10-16T15:17:19+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000531.html">
<title>痛風(^Д^)でーたー</title>
<link>http://www.lancard.com/archives/000531.html</link>
<description>昨日から痛風状態でしたが、起きて色々やってたら益々ひどくなってまいりました。 ということで(;´Д`)水飲み中...</description>
<dc:subject>Diary</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-09-09T05:05:24+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000530.html">
<title>mdbtoolsのiconv処理</title>
<link>http://www.lancard.com/archives/000530.html</link>
<description>作業中のPCにMS-Access入れるのが面倒だし正規ライセンスのCDがどこかに行ってしまったので(;´Д`)MDB Toolsを試してみることに・・・ 　したわけですが、普通に配布されている mdbtools-0.6pre1.tar.gz ではもう全然漢字とか通りませんでしたので、cvs版を取ってまいりました。やりかたは https://sourceforge.net/projects/mdbtools/developに書いているとおりです。ちなみにcvs login時のパスワードは無しなので、Enterだけ押しておきます。modulenameはmdbtoolsです。実行後にmdbtoolsというディレクトリが出来ていますので、cdで降りて、./autogen.shを実行後にmakeですねヽ(´ー｀)ノ。 　しかし、やっぱり漢字が通らないのでしばらくコードを眺めておりましたら、MDBICONVとかMDB_JET3_CHARSETとか環境変数を使ってくれることがわかりましたので、 export MDBICONV=WINDOWS-31J など設定して実行…やっぱり効きませんね(;´Д`) printfなど入れたりしながら動きを追ってみましたところ、HAVE_ICONVがdefineされている時に通るべきコードを通っていないことが判明(;´Д`)簡単なパッチ作って対応。とりあえずJET3というかMS-Access2000でフィールド名とかテーブル名に漢字使ってても大丈夫にはなりました。 diff -u -r mdbtools/src/libmdb/file.c mdbtools.fix/src/libmdb/file.c --- mdbtools/src/libmdb/file.c 2005-06-28 13:53:40.000000000 +0900 +++ mdbtools.fix/src/libmdb/file.c 2009-09-09 04:02:47.000000000 +0900 @@ -17,6 +17,7 @@ * Boston, MA 02111-1307, USA. */ +#include &quot;config.h&quot; #include...</description>
<dc:subject>Linux</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-09-09T04:48:15+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000529.html">
<title>OpenCOBOLへの移植</title>
<link>http://www.lancard.com/archives/000529.html</link>
<description>某所で某メーカー系COBOLソースをOpenCOBOLへ移植してるのですが(´ー｀) 色々と困った点など。 とりあえず現在はOpenCOBOLには通信関連の機能（COMMUNICATION）は実装されてませんから、コレは何らか代替手段を使う必要（たとえばcob_perlを使用してperlを使った外部通信モジュールの実装など）がありまして、ソースを1対1対応で書き換えるのが難しいというのがあります。ただし、汎用機からLinux上のOpenCOBOLへ持って行くソースでは、そのような機能はほとんど使わないため今のところ問題とはなっていないのですが。同様に、印刷関連についてもメーカー系COBOLではかなり拡張されていますので、これは以前にも書いておりましたが、拡張エスケープシーケンスと仮想ラインプリンタの組み合わせで対応してたりします。 メーカー系COBOLのソースを3000本程度眺めまして、COMMUNICATION、他印刷関連のキーワードが含まれるソース1100本程を除外した残りの1900本のうち1100本についてはほとんど自動的に変換するスクリプトを作成しましたが、残りの800本程については色々と面倒な問題が残っています。 たとえば、項目名に漢字、半角カナが使用されている物もあります。これは処理系（OpenCOBOL）のパーサへのパッチで対応出来そうです。今のところプログラム名(PROGRAM-ID)に漢字、半角カナを使用した物は無いのでいくらか救われています。OpenCOBOLは仕組み上COBOLソースを一旦Cへ変換しgcc等コンパイラを使用してバイナリを生成します。このときPROGRAM-IDは関数名として展開されるため、ここが漢字、半角カナになっている場合は別途変換規則を作ってやる必要があります。項目名は内部的には全く別の連番が降られた変数名（または配列）へ変換されるため、この問題は発生しません。 その他、ファイル関連で汎用機で使えるRDB、VSAS等はOpenCOBOLでは実装されていませんので、vbISAMなど利用したソースへ置き換える必要があります。このときファイル名について汎用機ではバッチからパラメータとして引き渡すことが出来るように、COBOLの処理系が設計されていますが、OpenCOBOLの場合は環境変数なり何かから取り込む必要があります。幸いにしてそのような引き渡しを行っている箇所はファイル名に関する部分だけのようでしたので、これはコマンド起動直前に環境変数へパラメータをセットすることにして対応出来そうです。また、ファイル共有やポインタの引き継ぎに関してBASEDやEXTERNALなどのキーワードが使用されていますが、OpenCOBOLではこれらは実装されおらず、緩い制限にて使用可能のため単純にキーワードを取り去ることで流用可能でした。 COMP-1、COMP-2等の変数についてはメーカー系COBOLによって実装内容は様々ですが、某メーカーCOBOLではCOMP-1が2byteバイナリ整数、COMP-2が4byteバイナリ整数でしたのでそれぞれBINARY-SHORT、COMP-5（またはCOMP-X）にて置き換えてみました。とりあえずバイト長をあわせつつということですが、COMP-5、COMP-5についてx86_64上では8byteとして扱われるという噂（ためしてません）も在りましたので、別のもっと良い代替手段を使う必要があります。 その他FILEに関してLASTが実装されていない等在りますが、当方ではISAMではなくてMySQLへの置き換えを進めておりますので、ORDERを逆にしてやるだけで対応出来ています。 また元のCOBOLソースの定義体自体に問題があったり、長さが異なる項目へのMOVEなども既存ソースには散見されましたので、MOVE用のC言語コードを出力する段でチェックしてwarningとして出力するようにcobcを改造しつつ、安全なmemcpyを出力するようにしました。これでセグメンテーションフォルトも発生せず、問題となる箇所も見えるようになりましたので、元ソースの開発元へ問い合わせを行いながら作業を進めることが出来るようになりました。 その他にもたくさんたくさん在りますが、互換性も残しつつ元々のOpenCOBOLだけでは出来な胃部分については随時拡張していくことでかなりの工数を節約出来るようになっています。...</description>
<dc:subject>OpenCOBOL</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-07-16T11:12:01+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000528.html">
<title>猫まっしぐら</title>
<link>http://www.lancard.com/archives/000528.html</link>
<description>ウチの猫にゃんがどの位(´ー`)猫草好きかというと (´ー`)このくらい好き...</description>
<dc:subject>猫</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-05-19T10:48:28+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000527.html">
<title>opencobol-1.1/cobc/typeck.c</title>
<link>http://www.lancard.com/archives/000527.html</link>
<description>OpenCOBOLでcopyする項目の長さが異なるときの処理で(´ー｀)検討 3740 return cb_build_funcall_3 (&quot;memcpy&quot;, 3741 cb_build_cast_address (dst), 3742 cb_build_cast_address (src), 3743 cb_field_size(dst) &gt; cb_field_size(src) ? cb_build_cast_length (src) : cb_build_cast_length (dst)); 素のままだと単にmemcpyするコードが吐かれるんですが、srcとdstのうち短い方に合わせた方が良いんじゃないの？という修正例。ちなみにオリジナルのコードはdstの長さに合わせるようになってますが、src側で確保しているメモリ領域外も複製元としてreadされる（そしてSEGFAULT）場合があるので、おそらくこのコードの方が良いと考えてます。 試しに 3737 if ( cb_field_size(dst) != cb_field_size(src) ) { 3738 printf(&quot;memcpy(%s(%d),%s(%d),%d)\n&quot;, cb_field(dst)-&gt;name, cb_field_size(dst), cb_field(src)-&gt;name, cb_field_size(src), cb_field_size(dst)); 3739 }...</description>
<dc:subject>OpenCOBOL</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-04-24T14:21:53+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000526.html">
<title>apache-php-OpenCOBOL-perlーMySQL貫通</title>
<link>http://www.lancard.com/archives/000526.html</link>
<description>apache-php-OpenCOBOL-perl-MySQL貫通ヽ(´ー｀)ノ とりあえずapache上のmod_php5から呼び出されたphpスクリプト中でphp_opencobol.so使ってOpenCOBOLで書いたプログラム（*.so形式）を呼び出してその中からcob_perl.so経由でperlスクリプト呼びだしてさらにDBI/DBD使ってMySQL呼ぶところまで完了。 ユーザー ｜ (http) ｜ apache ｜ (mod_php5） ｜ php ｜ (php_opencobol.so） ｜ OpenCOBOL ｜ (cob_perl.so) ｜ perl ｜ (DBI/DBD） ｜ MySQL シカケは大がかりなんですが、コードは短いです（たいしたことやってないので）。現場の方ではさらにapacheとユーザの間にCurlというリッチクライアントが入ります。つまりコレ(;´Д`)CurlとPHPとCOBOLとperl（＋SQL？）という多数の言語が入り交じってる環境です。ただし、COBOL部分に関してはレガシー資産のかなり部分を流用しますし、perl部分についてはこちらが用意したDB/ISAMの変換部分をほとんどそのまま利用して貰うことになってます。 モノ自体のコンセプトは昨年の10月頃には出来てて、基本部分も稼働してたんですが先ほどメモリリーク関連のバグが解決しましてヽ(´ー｀)ノapache配下のmod_php5から繰り返し呼び出してもSIGSEGVでオチ無くなりました。CGI版の場合は繰り返しは呼び出さないので顕在化してなかったんですが、module版のphp5では数回呼び出すとオチるという苦しい状況でした。解決。 cob_perlつかって印刷イメージをPDFで吐くとかもやってます。またinitだけじゃなくて環境を再初期化しないpinitとかも実装中ヽ(´ー｀)ノまだまだネタは尽きないようです。...</description>
<dc:subject>OpenCOBOL</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-04-24T11:41:27+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000525.html">
<title>液晶</title>
<link>http://www.lancard.com/archives/000525.html</link>
<description>拡大してみたり(;´Д`) Dino Lite PLUSで撮影。...</description>
<dc:subject>Diary</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-04-20T02:47:26+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000524.html">
<title>新年度ですが</title>
<link>http://www.lancard.com/archives/000524.html</link>
<description>前回の更新から4ヶ月もスっぽかしてました(;´Д`)エライ忙しいです 今年は「長崎県電子県庁システム」が和歌山県庁に採用決定の話等に絡んでまして、4月から色々準備で忙しくなって参りました。さすがに人員が足らないので8人の会社でしたが1月から増員(+経理＋ネトワク＋デザイナ＋プログラマ)し続けて4月からは12名になります1.5倍ですね(;´Д`)スーパーカップです。2月末頃に求人だしたら5日間で22人くらい応募が来たので急いで締め切って選考してました。 また、複雑・怪異と思えた汎用機を丸裸にで紹介いただいてるOpenCOBOL の件も今年が本番で、DB接続、印刷、PHP連携、開発ツール整備など色々と残ってましてほとんど今年は私自身はかかりっきりになります。 開発ツールにはデバッガを同梱予定で、OpenCOBOL 1.1から追加されたdebug機能を拡張しDBGpを使ったデバッグ（ステップ実行、可能なら変数のモニタとトリガ）を可能にするべく開発を続けています。 その他SIP対応電話機を取り寄せたり、某所で7000ユーザ（アカウント数ではなく）同時接続なメールサーバ組んだり、CMS自社開発したり、FMSで動画流したりとかやることがたっぷりで来年4月までは何とかなりそうな感じです。 本年度も宜しくお願い申し上げますヽ(´ー｀)ノ...</description>
<dc:subject>Diary</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2009-04-01T23:22:32+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000523.html">
<title>2008年</title>
<link>http://www.lancard.com/archives/000523.html</link>
<description>2008年も本日までというか残り数時間(´ー｀) 　年初から「アウトプット少ない」とか言ってたくせに、あまり目立ったモノは出せませんでしたがOpenCOBOLについてかなり前進したのが良かったかなと思います。これは来年2009年の弊社の武器になりそうな雰囲気です。もちろん利用するだけではなくて、ドキュメントやコードをコミュニティにコントリビュートしていきます。COBOLもOSSの戦い方でもっと馴染みやすい言語になるかもしれませんし、既存のCOBOL資産も新しい利用方法が生まれるかもしれません。とりあえず今出せそうなのはphp_opencobolとcob_perlですがもう少し安定性を高める必要がありますし、php_opencobolについては文字コード処理や集団項目の処理を追加した方が使いやすそうです（仕様も見直したいところですが）。 　来年2/21にRBC長崎にてRIAを題材にしたイベントも予定されているので、ウチからも何かネタ出せたらなあと思ってます。FlashとかCurlとかJavaFXとか面白そうですね。OpenCOBOLと絡めて何か出来たらなあと思ってます。 　今年はめっきり組込関連やりませんでした。せっかく過去の原稿データをお借りしたのに再編集する時間も取れず。それだけ今年は本業が忙しかったというのもありますが、途中まで仕掛けていたH8/3069F用uClinux環境をgcc4で…の環境がDISKクラッシュで消滅してしまっていたのもモチベーション低下に繋がってしまいました。組込仕事など無いとLinux kernelの中を眺める機会も減ってしまうので来年は何とかしたいところです。 　2002年頃からやっておりましたJava言語の非常勤講師ですが、アルバイト先の都合で今年9月以降はお休みしておりましたが、NISA様からの委託によりJava1、Java2、JDBCの３教程を担当させていただきました。これは私だけではなくて、社員の皆さんにも講師として出ていただきました。「教える」ためにはその内容の何倍も詳しくないと出来ないので準備のために仕様の再確認や調査など弊社にとってはこれらの経験は大きな資産となりました。 　何はともあれあと2時間と少しで今年も終わりですが、来年が皆さんにとっても良い年でありますようにヽ(´ー｀)ノ...</description>
<dc:subject>Diary</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2008-12-31T21:45:20+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000522.html">
<title>OpenCOBOLとcob_perlとMySQLで</title>
<link>http://www.lancard.com/archives/000522.html</link>
<description>地元の物好きなSEの今日この頃(´ー｀)です。 凄いというか突拍子もないような提案を某所でしてたのですが、もちろんある程度の目算があってのことですし、実際に動作しているので報告。 COBOLのOPEN,READ,START,CLOSE等のファイル操作をmydb_open, mydb_read, mydb_start, mydb_close等のperlで書いたsubを呼び出すようにして、OpenCOBOLからMySQLへの操作を実現しています。 329700* READ IN9-F NEXT 329800* AT END MOVE 0 TO W-DUMMY. 329900 CALL &quot;cob_perl_call&quot; USING &quot;mydb_read&quot; 330000 &quot;IN9-F&quot;. 330100 CALL &quot;cob_perl_results&quot; USING 330200 COBPERL-STATUS LN010-FSTAT1 XIQR0030. 330300 IF COBPERL-STATUS NOT = ZERO 330400 MOVE...</description>
<dc:subject></dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2008-12-13T15:58:56+09:00</dc:date>
</item>
<item rdf:about="http://www.lancard.com/archives/000521.html">
<title>llvm-2.4とMSIL</title>
<link>http://www.lancard.com/archives/000521.html</link>
<description>llvm-2.4のMSILのコードは長らく更新されていないのです(´ー｀) llvm-2.4でMSILのバイナリ吐かせてみようと思って llc -march=msil してみるわけですが、abortしてしまいますのでちょっと調べてみました(´ー｀)いくらかbcのバイナリに対して未実装の部分があるようです。 HANDLE_OTHER_INST(42, PHI , PHINode ) // PHI node instruction HANDLE_OTHER_INST(45, UserOp1, Instruction) // May be used internally in a pass HANDLE_OTHER_INST(46, UserOp2, Instruction) // Internal to passes only HANDLE_OTHER_INST(48, ExtractElement, ExtractElementInst)// extract from vector HANDLE_OTHER_INST(49,...</description>
<dc:subject>Software</dc:subject>
<dc:creator>minemaz</dc:creator>
<dc:date>2008-11-24T05:28:02+09:00</dc:date>
</item>


</rdf:RDF>