Gibt es eine Möglichkeit SQL Server von z / OS-Mainframe und haben das Ergebnis in IBM 3270-Terminalemulation zugreifen?

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

Frage

Gibt es eine Möglichkeit (möglicherweise billig) Microsoft SQL Server von z / OS-Mainframe (COBOL-Programme) für den Zugriff auf und das Ergebnis in 3270 Terminal-Emulation hat?
Ich bin mir bewusst, dass 3270 ist ein hübscher altes System, aber in der Bank CED, ist immer noch sehr beliebt.

War es hilfreich?

Lösung

Es hängt davon ab, was Sie versuchen tatsächlich zu tun. Meine Lektüre Ihrer Frage ist, dass Sie einen Mainframe-basierter Prozess Zugriff einer SQL-Server-Datenbank haben wollen, und dann etwas tun, mit dem Ergebnis, wahrscheinlich einen 3270-Terminal beteiligt ist.

Wenn Sie Unix System Services verwenden können, können Sie eine TDS-Bibliothek wie FreeTDS kompilieren und dann verwenden C-Programm zu tun, was Sie mit dem Ergebnis wollen. Wenn Sie komplexere erhalten möchten, können Sie die Verbindung von der nativen z / OS-Umgebung ausgeführt werden, indem Sie den Code mit IBM C, SAS C kompilieren oder jTDS und schreiben Java-Code zu tun, was du brauchst. Ich habe nicht Java auf z / O verwendet, so kann ich nicht, dass es spezifische Beratung bieten, aber ich habe jTDS auf anderen Plattformen verwendet und ich habe mit dem Ergebnis zufrieden gewesen.

Update:

Sie können eine C-Funktion als Einstiegspunkt zu einem Lademodul exportieren und dann des Anruf von Cobol. Die C / C ++ Implementierung muss mit Cobol Datenstrukturen befassen; sie sind gut definiert und vorhersehbar, so dass kein Problem ist. Je nachdem, wie flexibel man die Dinge sein muß, könnten Sie die Abfrage in den C-Code kompilieren und haben nur eine Funktion, die eine vordefinierte Abfrage ausgeführt und hatte eine Schnittstelle für das Ergebnis abrufen, oder man könnte etwas komplexer, wo die Abfrage zur Verfügung gestellt wurde aus dem Cobol-Programm.

Ich habe diesen Ansatz verwendet API-Funktionen Adabas / Natural-Entwickler zu schaffen, und es hat gut funktioniert. Der Dignus Compiler hat einen Mechanismus für Anrufer ein Handle für eine Laufzeitbibliothek zur Verfügung zu stellen, so dass Sie die Lebensdauer der C-Laufzeitumgebung von dem rufenden Programm verwalten können.

Für einen C / C ++ Entwickler, das sollte ziemlich einfach sein. Wenn Ihre Entwickler alle Entwickler Cobol sind, Dinge könnte etwas schwierig sein.

Der Gateway Ansatz ist möglich, und ich bin sicher, es gibt Gateway-Produkte um, aber ich kann man nicht empfehlen. Ich habe beschissen diejenigen gesehen, die ich nicht empfehlen würde, aber das bedeutet nicht, dass es nicht gut irgendwo ist.

Die Vollständigkeit halber werde ich die Möglichkeit erwähnt das TDS-Protokoll in Cobol implementiert. Klingt wie grausam und übliche Strafe, though.

Andere Tipps

Wenn Sie 3270-Terminal-Emulation haben, welche Endgeräte verwenden Sie? PC?

Ein interessanter Hack wird mit einem Cisco-Router im Fluge 3270 zu Vanille-TCP Umwandlung zu tun, und dann einen einfachen TCP-Proxy für die SQL Server Prozeduren Schreiben

Nicht als solche - 3270 Emulatoren an einen IBM-Mainframe-Verbindung herstellen. Um auf Daten aus einer SQL Server-Datenbank auf einem Mainframe zu bekommen, würden Sie ein Programm, das auf dem Mainframe schreiben müssen, die Daten aus der SQL-Server DB liest. Dies würde erfordern Sie Treibersoftware haben auf dem Mainframe. Sie könnten ein Dritte Lage zu finden, die diese Art der Sache macht, aber es ist wahrscheinlich recht teuer sein.

Wenn Sie müssen zusammen ein Bericht oder etwas die Kombination von Daten aus einem Mainframe-System mit externen Datenquellen kann es einfacher sein, die Daten aus dem Mainframe zu erhalten und die Integration tut anderswo -. Vielleicht irgendeine Art von Data Mart

Eine Alternative wäre thd Daten zu extrahieren, die Sie aus der SQL-Server-Datenbank wollen und es an den Mainframe als Textdatei lädt dort zu verarbeiten.

Hier ist eine Möglichkeit, wenn Sie COBOL-Programme schreiben, die in CICS ausgeführt werden.

Zuerst wickeln Sie Ihre SQL Server-Datenbank Prozedur mit einem Web-Service-Wrapper gespeichert. Schauen Sie sich devx.com Artikel 28577 für ein Beispiel.

Danach, rufen Sie Ihren neuen SQL Server-gehostete Web-Dienst einen CICS Web-Service-Aufruf.

Letzte Verwendung Standard CICS BMS-Befehle, die Daten zu dem Benutzer zu präsentieren.

appliation Entwicklung für CICS Web Services

Sie einfach den JDBC-Treiber erhalten Sie die MS-SQL-Server zuzugreifen. Sie können es dann Unterklasse und in Ihrem Cobol-Programm verwenden und auf die Datenbank zugreifen, als ob Sie es von Java verwendet haben.

Wenn Sie Ihre Ergebnisse zu erhalten, können Sie diese über regelmäßige BMS-Funktionen präsentieren.

Keine schmutzigen Hacks oder Phantasie-Networking-Tricks benötigt. Mit IBM Enterprise Cobol, kann man wirklich nur eine Java-Klasse erstellen und verwenden Sie es, wie Sie es in der Java-Raum.

Sie könnten in der Lage sein, etwas zu tun, die ich in der Vergangenheit getan hat. Ich habe DB2 geschrieben MS-SQL-COBOL-Programme / Funktionen, die die MS-SQL-Tabelle / Ansicht nur auf DB2 SELECT machen. Dabei handelte es sich einen laufenden Dienst auf einem Netzwerk-Server erstellen, die TCP / IP-Verbindungen nur vom Mainframe übernehmen würde und die Anmeldeinformationen der Benutzer-ID übergeben verwenden / PW verwendet, um die MS-SQL-Tabelle zugreifen. Es wäre dann eine Auswahl gegen den Tisch / view Ausgabe und die Feldnamen Liste zurück zuerst mit der Gesamtzahl der Zeilen bestehen. Es wäre dann jede Zeile übergeben, als Register Felder begrenzt ist, zurück zu dem Mainframe. Das COBOL-Programm würde die Feldnamen in einer Tabelle speichern, um verwendet werden, um festzustellen, welche Routine zu verwenden, um jedes MS-SQL-Feld in DB2 zu übersetzen. Von der DB2-Sicht sieht es aus wie eine Funktion, die Felder zurückgibt. Wir haben etwa 30 davon laufen. Ich hatte ein MS-SQL beschreiben Verfahren zu schaffen, um die Anfänge definieren das Feld transations für das COBOL-Programm zu erstellen. hatte auch ein COBOL-Programm zu erstellen, die beschreiben, Daten zu lesen und die Verknüpfung und Verfahren Division Befehle zu erstellen. Ein COBOL-Programm für jedes MS-SQL-Tabelle / view. Hier ist eine Beispielfunktion Definition. CREATE FUNCTION
    TCL.BALANCING_RECON (VARCHAR (4000))
    RETURNS
      TABELLE (
SCOMPANY CHAR (6), Frankreich PNOTENO VARCHAR (14), Frankreich PUNIT CHAR (3), Frankreich LATEFEES Dezember (11,2), Frankreich FASB_4110 Dezember (11,2), Frankreich FASB_4111 Dezember (11,2), Frankreich USERAMOUNT1 Dezember (11,2), Frankreich USERAMOUNT2 Dezember (11,2), Frankreich Userfield1 VARCHAR (14)
   )
     COBOL
     WEITER NACH AUSFALL
     NOT DETERMINISTIC
     READS SQL DATA
     EXTERNAL NAME DB2TCL02
     Sammid DB2TCL02
     PARAMETER STYLE SQL
     ON NULL INPUT GENANNT
     NO AUSWÄRTIGEN
     DISALLOW PARALLEL
     SCRATCHPAD 8000
      ASUTIME LIMIT 100
      STAY RESIDENT YES
      PROGRAMMTYP SUB
      WLM ENVIRONMENT DB2TWLM
      SECURITY DB2
      DBINFO
  ; COMMIT;
    GRANT ON FUNCTION TCL.BALANCING_RECON öFFENTLICHE auszuführen;

, um die Funktion aufzurufen: SELECT * FROM
  TABELLE (TCL.BALANCING_RECON ( ''
  )) Als X;

Sie würden setzen alle MS-SQL-Filter-Befehle zwischen den Anführungszeichen.

Ich habe nicht gefragt, alle MS-SQL-Daten zu aktualisieren, so dass ich nicht diese Hürde noch jumpped habe. Es gibt auch eine Datenbank in DB2, die Spur der ID / PW und Server hält, der die gestartete Task Lauf hat. Dies ist so, wenn der Server überlastet wird, können verschiedene wählt auf verschiedene Server geschoben werden. Antwort ist schnell, auch bei großen Tabellen. Timeout ist das gleiche wie das 60 Deadlock-Timeout. Der Transport wird in erster Linie IP basiert. DB2 simly sieht die Daten als externen Tabellenverweis.

Wie schmutzig Hacks gehen, haben Sie sich Gedanken über eine einfache HTTP oder TCP-Server erstellen, die eine CSV der Tabellendaten zurückgibt, die Sie benötigen?

Dies bedeutet, dass Ihr Kunde braucht nur einen einfachen HTTP / TCP-Client auf die Daten zugreifen, anstatt eine Datenbank-Client-Bibliothek.

In meiner Firma verwenden wir Java für Verbindung mit SQL Server.

Und ein CL Aufruf dieses Java-Programm:)

Sehr einfach ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top