Frage

Ich fange an, über COBOL zu lernen. Ich habe einige Erfahrung Schreiben von Programmen, die sich mit SQL-Datenbanken und ich denke, ich bin verwirrt, wie COBOL speichert und abruft Daten, die in einem Mainframe zum Beispiel gespeichert wird. Ich weiß, dass es nicht wie relationale Datenbanken ist aber jedes Beispiel Programm, das ich übernimmt Daten direkt aus der Kommandozeile gesehen habe, und ich weiß, das ist nicht, wie reale Welt COBOL-Programme, die Daten verarbeiten. Kann mir jemand erklären, oder eine gute Ressource zeigen mir, dass es erklären kann?

War es hilfreich?

Lösung

COBOL ist nur eine weitere dritte Generation Computersprache. Es ist nur ein wenig älter als die meisten was nicht bedeutet, es irgendwie unvollständig ist (tatsächlich kommt es mit ziemlich viel Gepäck - aber das ist eine andere Geschichte).

Wie bei jeder anderen dritter Generation Sprache, COBOL manipuliert Datendateien in so ziemlich die gleichen Art und Weise, dass man es in einem C-Programm. Nichts seltsam, mysteriös oder Magisches. Die Dateien werden geöffnet, gelesen, geschrieben und geschlossen, um die Datei mit I / O der Sprache verfügt.

sind verschiedene Mechanismen verwendet, um eine Verbindung zwischen einer tatsächlichen Datei und dem Programm zu bilden. Die Details sind hier oft spezifisch für das Betriebssystem unter arbeiten. Im Allgemeinen versuchen COBOL-Implementierungen, mich von der Betriebsumgebung durch einen logischen Dateinamen zu isolieren, als zu einem tatsächlichen Namen gegenüber. Diese zusätzliche Indirektion ist wichtig, wenn Sie Programme schreiben, die auf verschiedene Plattformen portiert werden (zum Beispiel Schreib- und Test innerhalb einer IDE auf einer Windows-Plattform, und dann auf einem Mainframe laufen).

Die folgenden Beispiele beziehen sich auf eine IBM-Mainframe-Umgebung.

Im Rahmen der IBM Mainframe-Welt, werden Sie feststellen, dass die Programme entweder als Batch ausgeführt werden oder online (zum Beispiel CICS). Ich will nicht beschreiben, wie für Datei-I / O unter CICS einzurichten (das eine lange Geschichte ist). Programme, die verwendet werden, um Dateien zu manipulieren sind in der Regel Batch. Hier ist eine grobe Darstellung, wie ein Batch-Programm funktioniert:

  1. Batch-Programme werden über JCL laufen. JCL wird verwendet, um das Programm zu identifizieren, zu laufen ( ‚EXEC‘ Anweisung) und zu identifizieren, welche Dateien Ihres Programm mit ‚DD‘ Aussagen verweisen. Die Funktion eines DD Statement ist eine logische Verbindung zwischen einer tatsächlichen Datei zu bilden und ein Namen Ihres COBOL-Programm verweisen, wenn es um die Datei beziehen will (dies ist der Isolationsmechanismus früher erwähnt). Zum Beispiel:

    JCLDDNAM DD DSN='HLQ.MY.FILE'...
    

    würde assoziieren das 'DD' name 'JCLDDNAM' auf die Datei mit dem Namen 'HLQ.MY.FILE'. Dieser Teil ist plattformabhängig, so dass die spezifischen Details der Betriebsumgebung sind.

  2. In der ‚FILE-CONTROL‘ Ihres COBOL-Programm, verbinden Sie die ‚DD NAME‘ definiert in JCL mit dem Namen auf jeder E / A-Anweisung Referenz Sie diese Datei verwenden. Diese Verbindung ist definiert mit der ‚SELECT‘ Aussage.
    Zum Beispiel:

    SELECT MYFILE
    ASSIGN JCLDDNAM
    remainder of select
    

    stellt eine Verbindung zwischen der Datei, die im Zusammenhang mit ‚JCLDDNAM‘ in Ihrem ‚JCL‘ auf ‚MYFILE‘, dass Sie später Referenz in COBOL I / O-Anweisungen. Die SELECT Aussage selbst ist Teil der ISO COBOL-Standard. Allerdings definieren viele COBOL-Implementierungen einige Nicht-Standard-extentions verschiedene Macken ihrer Datei-Subsysteme zu erleichtern.

  3. Öffnen, Lesen, Schreiben, Schließen von Dateien innerhalb der 'PROCEDURE DIVISION' von Ihnen den Namen Programm mit 'MYFILE', wie in:

    OPEN MYFILE  
    READ MYFILE  
    CLOSE MYFILE  
    

Die obige wird stark vereinfacht, und es gibt eine Vielzahl von Möglichkeiten, dies in COBOL zu tun. das komplette Bild zu verstehen, werden einige echte Mühe, Zeit und Übung. Die I / O-Anweisungen oben dargestellt sind Teil des COBOL-Standard, aber jeder Anbieter ihre eigenen Erweiterungen haben.

IBM COBOL unterstützt eine Vielzahl von Dateiorganisationen und Zugriffsmethoden. Sie können das IBM Enterprise COBOL Sprache Referenzhandbuch hier die Syntax und die Regeln für die Dateimanipulation zu bekommen, aber die Benutzerhandbuch viele gute Beispiele liefert zum Lesen / Schreiben von Dateien (Sie werden ein bisschen, aber graben müssen, um es ist alles für Sie angelegt).

Das Setup eine SQL-Datenbank über ein COBOL-Programm zu verweisen ist etwas anders, aber beinhaltet eine Verbindung zwischen dem Programm und dem Datenbank-Subsystem einrichten. Innerhalb der IBM-Welt ist dies dein throug JCL, werden andere Umgebungen unterschiedliche Mechanismen verwenden.

IBM COBOL verwendet einen Pre-Prozessor oder Co-Prozessor Zugriff auf die Datenbank und den Datenaustausch zu integrieren. Zum Beispiel würde der folgende Code einige Daten aus einer DB2-Datenbank abgerufen werden:

MOVE 1234 TO PERSON-ID
EXEC SQL
  SELECT  FIRST_NAME,  LAST_NAME
  INTO   :FIRST-NAME, :LAST-NAME
  FROM PERSON
  WHERE PERSON_ID = :PERSON-ID
END-EXEC
DISPLAY PERSON-ID FIRST-NAME LAST-NAME

Der Stoff zwischen EXEC SQL und END-EXEC ist eine ziemlich einfache SQL-Select-Anweisung. Die Namen von Doppelpunkten voran sind COBOL Hostvariablen verwendet, um Daten zu DB2 passieren oder es zurück zu empfangen. Wenn Sie jemals Datenbank-Zugriffsroutinen codiert haben, bevor diese sollten Sie sehen sehr vertraut. Dieser Link eine einfache Einführung ermöglicht auf der Einbindung SQL-Anweisungen in ein IBM Enterpirse COBOL-Programm.

Durch die Art und Weise, IBM Enterprise COBOL ist in der Lage zu mit XML-Dokumenten arbeiten. Sorry für das schwere IBM schräg, aber das ist die Umgebung, ich bin sehr vertraut mit.

Hope Diese bekommt man in der richtigen Richtung gestartet.

Andere Tipps

Wer hat gesagt, Sie nicht SQL verwenden können Daten aus einer COBOL-Anwendung ausgelesen werden sollen, vielleicht ohne Geld?

Ein Unternehmen nutzte ich zur Arbeit für, tat genau das - mit SQLite. Dieses kleine Juwel von einer Public-Domain-Bibliothek erstellt SQL-Anweisungen zu Bytecode, dann führt sie aus.

Durch das „Back-End“ -Niveau von SQLite mit einer benutzerdefinierten Schnittstelle zur C-Bibliothek zu ersetzen, dass Angebote mit Cobol Dateien, war es möglich, die Cobol Daten aus anderen Sprachen abzufragen, Python in diesem Fall. Es funktionierte - innerhalb der Grenzen von SQLite natürlich, aber es war stabil, wie es scheint relationalen genug und es nicht einmal einen DB-Server erforderlich ist: -)

Traditionelle COBOL Batch-Umgebungen verwenden, um einen ‚Datenbereich‘ des COBOL-Programms direkt von Datenbankverbindungen zu erklären, die wiederum in JCL eingerichtet. Da COBOL SQL früher hätte jene neigten verschiedene andere Arten von Datenbanken zu sein, aber es ist wahrscheinlich, dass IBM SQL Arbeit mit DB gemacht / 2. Ich denke, Sie werden eine andere Antwort von jemandem näher an dieses Zeug. Wenn Sie sich die SQL Preprozessoren für die Verwendung mit anderen Sprachen verfügbar aussehen werden Sie auf die Idee -. Ein Cursor ein nativer Datentyp wird und die Abfrageergebnisse an native Variablen liefert

Mainframe Cobol verwendet eingebettete SQL (ein bisschen wie SQLj), z.

PROCEDURE DIVISION.

   Exec SQL
        Select col1, col2
          from myTable
        into :ws-col1, :ws-col2
        where col0 = :col0
   End-Exec

In diesem Fall wird die Host-Variablen ws-col0, ws-col1 und ws-col2 werden in dem Arbeitsspeicherabschnitt definiert. Die Datenbankschnittstelle verwaltet, die Daten an der richtigen Stelle zu bekommen.

Sehr einfach im Vergleich zu der verteilten Sache tatsächlich.

All IBM Mainframe-Geschäft, das ich gearbeitet habe in COBOL verwendet hat, die mit einer relationalen Datenbank gesprochen. Im Allgemeinen, dass hat DB2 von IBM. Bitte beachten Sie, dass DB2 ist eine relationale Datenbank, dass Run auf Mainframes ist. Es kann auch unter Windows oder Linux ausgeführt werden.

Vor zwanzig Jahren eine vorwiegende Art und Weise Daten in den DB2 Mainframe-Datenbank einzugeben war CICS zu verwenden. CICS ist „Präsentationsebene“ Software dass comminicates mit zeichenbasierten Dateneingabebildschirme. Betrachten Sie CICS die funktionelle equivelant von PHP oder ASP.NET.

Heute gibt es viele weitere Möglichkeiten Daten in DB2 zu erhalten. CICS ist immer noch eine Option, aber Ihre "Präsentationsschicht" könnte PHP, ASP.NET, Win Forms, Java JSF, Powerbuilder sein. Das Wichtigste ist, dass Ihre Entwicklungsplattform in der Lage sein müssten mit einer DB2-Datenbank-Treiber zu arbeiten. Die Plattform könnte Windows, Linux und möglicherweise andere sein.

Mein Punkt ist, dass die Daten in die Mainframe DB2-Datenbank in einer vielerlei Hinsicht von vielen Plattformen zu bekommen. Die COBOL-Sprache könnte bei der Dateneingabe beteiligt sein, Reporting, Daten COBOL zu ändern, usw. Aber es könnte nur ein Teil eines mehrere Ebenen-Anwendung sein, die Teil von Windows, Web und Mainframe sein könnte. Ich konnte konkrete Beispiele geben, wenn Sie mehr Informationen über die Anwendung haben Sie in Ihrem Praktikum arbeiten werden.

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