プログラミング: 2019年7月アーカイブ

例えば、子画面(サブフォーム)で「商品一覧」を表示して、表の中の任意の行をダブルクリックしたら、その行の商品コードが親画面の商品コード欄にセットされるというもの。
実際の業務システムでもよくある機能だよね。

というわけで、PowerCOBOL の実装でのメモ。

まず、DblClick イベントではクリックした位置(座標)が取れないところで悩んでしまうのだが、実はダブルクリックをしたときには、DblClick イベントが走る前に、MouseDown イベントが走る。
そして、MouseDown イベントは POW-ARG-X や POW-ARG-Y といった、クリックされた位置(XY座標)が引数で渡される。

表(テーブル)コントロールの1行の高さはディフォルトで 300だ。単位はよくわからんけど、その辺はおいおい勉強していくということで・・・(^^;

なので、1行目の一番上の Y座標は 300で、一番下が 599。2行目は Y座標が 600~899の間。つまり、

COMPUTE IDX = POW-ARG-Y / 300.

とすれば、IDX に「何行目か?」の情報がセットされる。

あとは、その商品コードを表の中か、あるいは別途用意した配列(予め表の並びと同じように商品コードがセットされたもの)などから取得して、親画面との情報のやり取りに使う EXTERNAL 変数にセットしてやる。

MOVE CODE-LIST(IDX) TO RE-CODE.

そして、DblClick イベントで、

INVOKE MYSUBFORM1 "CloseForm"

するだけである。あ、上の CODE-LIST ってのが表(テーブル)と同じ並びで商品コードがセットされている配列で、RE-CODE が親画面との情報のやり取りに使われる EXTERNAL 変数ね。
今月から新しいプロジェクトに入ったが、なんと、NetCOBOL 案件である。

NetCOBOL自身は COBOL開発環境で、実際に開発に使う言語は PowerCOBOL である。

これがなかなか楽しい。

COBOL という言語は基本的に、固定長レコードのファイルを読み込み、マッチングやマージと、少しばかりの計算をして新しい固定長レコードのファイルを書き出していくようなバッチ処理のためのものだ。正直、プログラミング好きなエンジニアにはつまらない言語だ(笑)

俺が初老のおっさんなので(笑)、当然 COBOL 経験があるだろうと周りの人も「まあ、ぼちぼち思い出しながらやってください」とか言われるけど、実は俺、自分で COBOL のコーディングをした経験がほとんどない。

若い頃所属していた会社はいわゆる「大手」だった。今ならさしずめ「SIer のエンジニア」的な感じで、「紙の仕様書」ばっか書いてて、(もちろんシステムテストとかで不具合が出たら自分で COBOL のコードを修正するんだけど)入社以来、自分で COBOL プログラムを書いたことはほぼ無いという(笑)
あ、仕事によっては大手SEと言っても自分でコードを書く場合もあるんだけど、俺が所属していたプロジェクトはひたすら「紙の仕様書」を書いているだけだったね。

ちなみに俺、昭和40年生まれのおっさんだけど、高校生の時から家にはパソコンがあったんで、N80-BASIC でプログラミングしてたし、その中で例えば画像を動かす処理をハンドアセンブルで機械語にして Peek/Poke するなんてこともしてたから、プログラミングができないってわけではない。
単に、「COBOL のプログラミング経験がない」ってだけである。

なので、思い出すというより「新しい言語にふれる」感覚で先々週から PowerCOBOLをさわっているんだけど、これがなかなか楽しい。

DATA DIVISION とかを書くのは糞面倒臭くて、「やっぱCOBOL嫌だ」と思わなくもないんだけど(笑)、PowerCOBOLは Windows アプリを作るためのイベント駆動形の言語だから、だらだらと長い一本の COBOLプログラムを書くようなこともなく、イベントごとに駆動される小さなプログラムを組み合わせてひとつの機能を作っていくところは、.NET や Java の開発をしているときとあまり感覚の違いがないんだな、これが。

ま、COBOL独自の決まりごとに違和感を覚えることもあるんだけど、今のところ楽しくやっている。

残念なのは、PowerCOBOL を含む NetCOBOL が富士通の製品で、開発環境を整えるのに数十万円から数百万円するので、.NET や Java のように自宅でちょっと試してみるってことができないことだな。

このアーカイブについて

このページには、2019年7月以降に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のアーカイブはプログラミング: 2019年4月です。

次のアーカイブはプログラミング: 2019年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら