2008年8月14日
仕事している。
仕事の話はあまり書かないけど、お盆返上でプログラミングしている。
今月中に40本だか50本だか仕上げないといけないので1日2本ペースで仕上げていかないといけない。
並みのプログラマだと1本当たり2・3日かかるのだろうけど、おいらはレベルが違うので1日3本ペースで組んでいる。ちょっと前までは遅れ気味だったが今は遅れを取り戻して予定より先行しだした。
流石に自分を見直しした。
普段はやる気ないだの怠けているが、極限状況に置かれると普段以上の能力を発揮する。
しかし、いつまで持ちこたえられるか?が心配だ。
夏休みは毎週土日に必ず行事があって駆り出されるが今月は仕事が忙しいからといってすべて断っている。
平日も夕方、不良行為防止パトロールで地区内を巡回しると命令されてはいるがそんなことやってられるか、ってわけで何もしない。
ここからは専門的な話。
今やっているプログラミングも特殊といえば特殊かもしれない。
今時珍しくCOBOL(NetCOBOL)のプログラミングだ。データベースはOracle10g。
Oracleプログラミングは、VB/VB.NETかPL/SQLが主流なんでCOBOLは久しぶり、というか10数年ぶりになるかな。
その昔、UNIX(正統派SVR4)でCOBOL-Oraleで開発したこともあるが当時と全く変わらない。
今時のVB.NETだと、ODP.NETを使い、DBもFactoryクラスでReaderでいきなり読めるのだが、
COBOLの場合は、カーソル宣言をしてカーソルをOPENし、カーソルをFETCHしてカーソルをCLOSEする手順を踏まなければならない。(複数レコード処理しなければSELECT文のみでカーソルは不要だが)
あと、SQL文をCOBOL埋め込みなのだが、ややこしいSELECTのWHERE条件だと、カーソルも別名で複数宣言しないとPROCOBに怒られる。
IF 条件 THEN
EXEC SQL
DECLARE カーソルA CURSOR FOR SELECT なんたら
END-EXEC
ELSE
EXEC SQL
DECLARE カーソルA CURSOR FOR SELECT なんたら
END-EXEC
END-IF
これはダメで
IF 条件 THEN
EXEC SQL
DECLARE カーソルA CURSOR FOR SELECT なんたら
END-EXEC
ELSE
EXEC SQL
DECLARE カーソルB CURSOR FOR SELECT なんたら
END-EXEC
END-IF
にしないとダメ。
実際には IF文ではすまないわけで、
EVALUATE 条件
WHEN なんたら
EXEC SQL
DECLARE カーソルA CURSOR FOR SELECT なんたら
END-EXEC
WHEN なんたら
EXEC SQL
DECLARE カーソルB CURSOR FOR SELECT なんたら
END-EXEC
WHEN なんたら
EXEC SQL
DECLARE カーソルC CURSOR FOR SELECT なんたら
END-EXEC
・・・
・・・
END-EVALUATE
となる。
VB/VB.NETだと、SQL文を条件に応じて柔軟に組み立てられるが、COBOLの場合は、
EXEC SQL
SQL文
END-EXEC
この中で、Oracle用のSQL文を完結させないといけないので柔軟性がない。
翻訳の手順は、PROCOBで埋め込みSQL文をOracle用に翻訳した後で、本来のNetCOBOLのコンパイラを通すという手間が増える。
VB/VB.NET+ODP.NETの開発に慣れてしまうとCOBOLは異質の文化なんだなと実感する。
今時の若いプログラマはCOBOLなんて知らないからね。
投稿者 pikachu7500 : 2008年8月14日 20:18
コメント
Sもとさん、こんばんは
私らみたいなロートルにはcobolは流れが見やすく定義もきちっとしてると思えます。
尤も最近の言語が分からないせいもありますが。
投稿者 メーテル : 2008年8月17日 00:58
メーテルさん、おはようございます。
今日は朝から草刈り作業をやっていて左腕がだるくてキーボードが打てません。
仕事を始めた20数年前はCOBOLしかなかった(FORTRANもやりましたが)のでCOBOLで鍛えられたもんです。
投稿者 ここの管理人 : 2008年8月17日 12:36