1321621887 COBOLで汎用的なデータ処理について


あるDBから別のDBへDBリンクでテーブルを連携しようと思っています。
COBOLで次のような処理は可能でしょうか。

①データ抽出
 SELECT
カラム名とカラム数をパラメータで取得(可変)
FROM
テーブル名をパラメータで取得(可変)
WHERE
条件は固定

②登録または更新
①で取得したデータについて登録またはアップデート

③パラメータファイルで次のテーブルを取得して
①へループする。

④パラメータファイルにある全てのテーブルの処理が終了したら終わり

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2011/11/25 22:15:02

回答2件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

COBOLも多種ありますし、DBも多種あるので、
どのようなOSで、どのようなCOBOLで、DBが何か、
それぞれが別々のコンピュータ上にあるのか、
それらは離れたところにあるのか・・・
組み合わせによって、回答は変わりますよ
 
単純に可能かどうかって質問にまとめるとしても、
「そのCOBOL実行系からDBを利用するためのドライバがあれば可能」ってくらいです
  
ドライバにもODBCのようなものから、
Oracle Pro*COBOLのようなネイティブなものまでいろいろありますし・・・
 
こんな回答で足りるならばいいけれど、多分足りませんよね?
書いてもいいのであればだけど、、、、冒頭で述べたように、
組み合わせ(バージョンもね)を書いて引き続き回答を待ってみます?

id:nmori No.2

回答回数76ベストアンサー獲得回数9

汎用機(IBM)+DB2、およびUNIX機+OracleでCOBOL経験があります。

COBOLというより、コンパイラ言語は一般的に可変のSQLを扱うのは苦手です。
ホスト変数を介して、COBOL-SQL間のデータのやりとりを行うので、変数とDB項目の対応関係が予め想定できないとコンパイルができないためです。実行時に融通を利かせることはできません。
なので、複数のプログラムないしSQLをあらかじめ用意して、必要に応じて切替える…以上のことは期待しにくいと思います。

15~5年くらい前までの知識をもとにした回答は以上になります。

もしかしたら、もっと自由度の高い実装(インタプリタで動くCOBOLとか)が出ているのかも知れませんが、私自身は聞いたことがないです。

id:windofjuly

9370+MVS+AS+DB2とか・・・懐かしい
 
それはさておき本来なら、テープかディスクに落として、
そこからロードするなんて手を奨めるべきなんでしょうけど、  
何らかの理由があって、それ以外の可能性を探しているんでしょう
 
質問者からの返信が無いので、待つしかないのですが、
とりあえず「COBOL 動的SQL」でググってみてください
融通を利かせることが可能であることは判るはずです
 
以上、横槍失礼しました

2011/11/19 23:58:15
  • id:dasman74
    皆様コメントありがとうございました。
    環境はWindows2003,Oracle10Gです。
    Cobolのバージョン等は後日確認してみます。

    可変なSQLを扱うことが苦手な点、了解しました!

    >対応関係が予め想定できないとコンパイルができない
    以前、このような話は聞いた記憶がありました。ありがとうございます。

    もう数時間は動的なSQLを扱えるか調べてみます。
  • id:windofjuly
    うぃんど 2011/11/20 13:04:40
    検索結果例
    http://www.t3.rim.or.jp/~buchi/procobol/
    「埋め込みSQL」
    http://www.t3.rim.or.jp/~buchi/procobol/sld003.htm
    「動的SQL」
    http://www.t3.rim.or.jp/~buchi/procobol/sld032.htm

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません