z / OSメインフレームからSQLサーバーにアクセスし、IBM 3270端末エミュレーションで結果を持っているいくつかの方法はありますか?

StackOverflow https://stackoverflow.com/questions/2220191

質問

のz / OSメインフレーム(COBOLプログラム)からのMicrosoft SQL Serverにアクセスし、3270端末エミュレーションで結果を持っている任意の方法(おそらく安い)はありますか?
私は3270はかなり古いシステムであることを承知しているが、銀行CEDで、まだ非常に人気があります。

役に立ちましたか?

解決

それはあなたが実際にやろうとしているかに依存します。あなたの質問の私の読書は、あなたはおそらく3270の端末を含む、メインフレームベースのプロセスのアクセスSQL Serverデータベースを持つようにしたい、そしてその結果で何かをするということです。

あなたがUNIXシステム・サービスを使用することができた場合は、

は、 FreeTDSののようなTDSライブラリをコンパイルしてから使用することができますCプログラムでは、結果とやりたいです。あなたがより複雑な取得したい場合は、IBM C、SAS Cまたは<のhref =「http://dignus.com/」のrel = "nofollowをnoreferrerでコードをコンパイルすることにより、ネイティブz / OS環境から接続を実行することができます「> Dignus C / C ++ に。私はDignusをお勧めすることができますし、私は、z / OS上の他の言語と対話するコードをビルドするためにそれを使用しています。 Dignusヘッダやランタイムライブラリが移植を簡素化するのに役立ちますいくつかのFreeBSDの系譜(メモリから)持っています。

あなたが仕事をするために、システムの他の部分から呼び出すことができますロード・モジュールを得ることができ、あなたのシステムの他の部分とコードをリンクすることができ、またはあなただけのジョブを送信して取得することができ、このアプローチを使用します出力ます。

は、Javaを使用する場合は、のjTDS のようなものを使用して何をするJavaコードを書くことができますあなたが必要です。私は、z / OS上でのJavaを使用していないので、私はそこに具体的なアドバイスを提供することはできませんが、私は他のプラットフォームでのjTDSを使用していると私は結果に満足している。

アップデートます:

あなたはロードモジュールにエントリポイントとしてC関数をエクスポートし、コボルからそれを呼び出すことができます。 C / C ++の実装では、COBOLデータ構造に対処する必要があります。それは問題ではありませんので、彼らはよく定義されており、予測可能です。あなたがすべき事を必要とする方法を柔軟に応じて、Cコードにクエリをコンパイルし、ちょうど定義済みクエリを実行し、結果を取得するためのインタフェースを持っていた機能を持っている、またはクエリが提供されたどこに、より複雑な何かを持っている可能性が可能性COBOLプログラムから。

私は、Adabas /ナチュラル開発者にAPI機能を提供するために、このアプローチを使用している、それがうまく働きました。 Dignusコンパイラを使用すると、呼び出し元のプログラムからCランタイム環境の寿命を管理できるように、ランタイムライブラリへのハンドルを提供するために、発信者のための機構を有しています。

C / C ++開発者のために、それはかなり簡単にする必要があります。あなたの開発者は、すべてのCOBOLの開発者であれば、物事はもう少しトリッキーなことができます。

ゲートウェイアプローチが可能である、と私は、ゲートウェイ製品が周りにあると確信しているが、私は1をお勧めすることはできません。私はお勧めしません安っぽいものを見てきましたが、それは良い1頭のどこかに存在しないことを意味するものではありません。

は、完全を期すために、私は、COBOLでのTDSプロトコルの実装の可能性を言及します。しかし、残酷かつ通常の罰のように聞こえます。

他のヒント

あなたは3270端末エミュレーションを使用している場合は、

、あなたはどのような端末を使用していますか? PCの?

一つの興味深いハックはバニラTCPへの変換フライ3270上で行うためにCiscoルータを使用して、SQL Serverの手続きのための単純なTCPプロキシを書いている。

などない - 3270のエミュレータは、IBMのメインフレームに接続されています。メインフレーム上のSQL Serverデータベースからデータを取得するためには、SQLサーバーのDBからデータを読み込み、メインフレーム上で動作するプログラムを記述する必要があります。これは、メインフレーム上で実行されているドライバソフトウェアを持っているあなたを必要とします。あなたが事のこのタイプを作る第三者を見つけることができるかもしれないが、非常に高価である可能性が高いです。

あなたが一緒に外部データソースとのメインフレームシステムからのデータを組み合わせるレポートか何かを置く必要がある場合は、

メインフレームからデータを取得し、他の場所での統合を行うことが容易であろう - データマートのおそらくいくつかの並べ替え

の代替を使用すると、SQL Serverデータベースから必要なTHDデータを抽出し、そこに処理するためのフラットファイルとしてメインフレームにアップロードすることです。

あなたがCICSで実行されているCOBOLプログラムを書いている場合は、

ここでpossiblityです。

まず、Webサービスのラッパーを使用してSQL Serverデータベースのストアドプロシージャをラップします。例えばdevx.comの記事28577を見ます。

その後、CICS Webサービスの呼び出しを使用して、新しいSQL ServerのホストされたWebサービスを呼び出します。

最終使用標準CICS BMSは、ユーザにデータを提示するコマンドます。

ためのCICS Webサービス

ただ、MS-SQLサーバーにアクセスするためのJDBCドライバを入手。あなたは、Javaからそれを使用しているかのようにあなたがそれをサブクラス化し、COBOLプログラムでそれを使用してデータベースにアクセスすることができます。

あなたの結果を得れば、あなたは定期的にBMS機能を経由してそれらを提示することができます。

ダーティハックや必要な空想ネットワーキング・トリック。 IBMエンタープライズコボルで、あなたは本当にただのJavaクラスを作成し、Javaのスペースと同じようにそれを使用することができます。

あなたは、私が過去にやった何かを行うことができるかもしれません。私はDB2にSELECT MS-SQLテーブル/ビューを作成するMS-SQL、COBOLプログラム/関数にDB2を書かれています。それだけで、メインフレームからのTCP / IP接続を受け入れると/ PWは、MS-SQLテーブルへのアクセスに使用するユーザーIDとして渡された資格情報を使用するネットワークサーバー上で実行されているサービスを作成関与しました。これは、テーブル/ビューに対してSELECTを発行し、行の合計数とバック最初のフィールド名のリストを渡します。タブは、バックメインフレームに、フィールドの区切りとして、それは、次に、各列を通過します。 COBOLプログラムは、DB2に各MS-SQLのフィールドを変換するために使用するルーチンを決定するために使用するテーブルのフィールド名を保存します。ビューのDB2の観点から、それはフィールドを返す関数のように見えます。私たちは約30これらが実行されているのを持っています。私は、MS-SQLは、COBOLプログラムのフィールドtransationsの初期定義を作成するための手順を説明作成する必要がありました。また、記述データの読み取りと連携し、手続き部のコマンドを作成するために、COBOLプログラムを作成する必要がありました。各MS-SQLテーブル/ビューのための一つのCOBOLプログラム。 ここではサンプル関数の定義があります。 CREATE FUNCTIONを
    TCL.BALANCING_RECON(VARCHAR(4000))
    RETURNS
      TABLE(
SCOMPANY CHAR(6)、
PNOTENO VARCHAR(14)、
PUNIT CHAR(3)、
LATEFEES 12月(11,2)、
FASB_4110 12月(11,2)、
FASB_4111 12月(11,2)、
USERAMOUNT1 12月(11,2)、
USERAMOUNT2 12月(11,2)、
USERFIELD1 VARCHAR(14)
   )
     LANGUAGE COBOL
     FAILURE後も継続
     NOT DETERMINISTIC
     SQL DATA
はREADS      EXTERNAL NAME DB2TCL02
     COLLID DB2TCL02
     パラメーター・スタイルSQLの
     CALLED ON NULL INPUT
     NO EXTERNAL ACTION
ません      PARALLEL
を禁止      SCRATCHPAD 8000
      ASUTIMEのLIMIT 100
      STAY RESIDENT YESの
      プログラムタイプSUBの
      WLM ENVIRONMENT DB2TWLM
      SECURITY DB2の
      DBINFO
  ; COMMIT;
    GRANTは、PUBLICへの関数TCL.BALANCING_RECON上で実行します。

関数を呼び出すには:
SELECT * FROM   TABLE(TCL.BALANCING_RECON( ''
  ))X AS;

あなたは引用符の間の任意のMS-SQLフィルタコマンドをかけることになります。

私は、私はまだそのハードルをjumppedていませんでしたので、任意のMS-SQLのデータを更新するように依頼されていませんでした。 ID / PWおよび開始タスクを実行しているサーバーを追跡DB2データベースもあります。サーバーが過負荷になった場合、別の選択が異なるサーバーにプッシュすることができるようにするためです。レスポンスも、大きなテーブルのために、迅速です。タイムアウトは60デッドロックのタイムアウトと同じです。輸送はprimarly IPベースにしています。 DB2はsimly外部表参照としてデータを見ます。

汚いハックが行くように、あなたが必要なテーブルデータの.csvファイルを返す単純なHTTPまたはTCPサーバーを作成する方法について考えたことはありますか?

これはあなたのクライアントはデータだけではなく、データベースクライアントライブラリにアクセスするには、単純なHTTP / TCPクライアントを必要とすることを意味します。

私の会社では、我々は、SQL Serverに接続するためのJavaを使用します。

そしてCL呼び出し、このJavaプログラム:)

非常にシンプルな...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top