OpenCOBOL 1.1にはSTART FILENAME LAST RECORDが…(;´Д`)ないみたいですね未実装
どうする?
1.諦める
2.コンパイル対象のCOBOLソースを弄って何とか対応する
3.実装されるまで待つ
急いでるときには答えはこの中にはないわけです(´ー`)。
「4.実装する」
それが答えでも良いですよね。しかも自分でやる。
登坂ルートを考えてみました。OpenCOBOLのコンパイラ(cobc)そのものに手を入れるという凶悪な方法もあるんですが、ちょっと大がかりすぎるし将来的に本家でやるでしょうからとりあえずCALL文で対応します。そこでCALL文で ファイル名(FILENAME)渡せるのかというと渡せるようです。少なくとも内部的には h_FILENAME としてポインタ渡ししてくれます。
そして、libcob/fileio.c には
case COB_READ_LAST:
fh->readdir = ISPREV;
if (isread (fh->isfd, (void *)f->record->data, ISLAST | lmode) == -1) {
ret = isretsts (COB_STATUS_10_END_OF_FILE);
}
break;
こういうコードもあります(しかし、このcase文を通るようなselect()の値は設定されませんが)。
ということで(´ー`)たぶん良い子の皆さんが寝て起きた頃には実装してしまうことでしょう。
トラックバック時刻: 2009年04月10日 02:44