あるDBから別のDBへDBリンクでテーブルを連携しようと思っています。
COBOLで次のような処理は可能でしょうか。
①データ抽出
SELECT
カラム名とカラム数をパラメータで取得(可変)
FROM
テーブル名をパラメータで取得(可変)
WHERE
条件は固定
②登録または更新
①で取得したデータについて登録またはアップデート
③パラメータファイルで次のテーブルを取得して
①へループする。
④パラメータファイルにある全てのテーブルの処理が終了したら終わり
COBOLも多種ありますし、DBも多種あるので、
どのようなOSで、どのようなCOBOLで、DBが何か、
それぞれが別々のコンピュータ上にあるのか、
それらは離れたところにあるのか・・・
組み合わせによって、回答は変わりますよ
単純に可能かどうかって質問にまとめるとしても、
「そのCOBOL実行系からDBを利用するためのドライバがあれば可能」ってくらいです
ドライバにもODBCのようなものから、
Oracle Pro*COBOLのようなネイティブなものまでいろいろありますし・・・
こんな回答で足りるならばいいけれど、多分足りませんよね?
書いてもいいのであればだけど、、、、冒頭で述べたように、
組み合わせ(バージョンもね)を書いて引き続き回答を待ってみます?
汎用機(IBM)+DB2、およびUNIX機+OracleでCOBOL経験があります。
COBOLというより、コンパイラ言語は一般的に可変のSQLを扱うのは苦手です。
ホスト変数を介して、COBOL-SQL間のデータのやりとりを行うので、変数とDB項目の対応関係が予め想定できないとコンパイルができないためです。実行時に融通を利かせることはできません。
なので、複数のプログラムないしSQLをあらかじめ用意して、必要に応じて切替える…以上のことは期待しにくいと思います。
15~5年くらい前までの知識をもとにした回答は以上になります。
もしかしたら、もっと自由度の高い実装(インタプリタで動くCOBOLとか)が出ているのかも知れませんが、私自身は聞いたことがないです。
9370+MVS+AS+DB2とか・・・懐かしい
2011/11/19 23:58:15それはさておき本来なら、テープかディスクに落として、
そこからロードするなんて手を奨めるべきなんでしょうけど、
何らかの理由があって、それ以外の可能性を探しているんでしょう
質問者からの返信が無いので、待つしかないのですが、
とりあえず「COBOL 動的SQL」でググってみてください
融通を利かせることが可能であることは判るはずです
以上、横槍失礼しました