Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Datenbankbedienung (UDS/SQL)

In COBOL2000-BC nicht unterstützt !

Eine Beschreibung des universellen Datenbanksystems UDS/SQL findet sich in den Handbüchern „Entwerfen und Definieren“ [13], „Aufbauen und Umstrukturieren“ [14], „Anwendungen programmieren“ [15].

UDS/SQL-Datenbanken werden von Anwenderprogrammen bedient über

  • COBOL-DML-Sprachelemente (DML ist integraler Bestandteil von COBOL) und

  • CALL DML (Datenbankbehandlung über Unterprogrammaufruf).

Der folgende Text beschränkt sich auf COBOL-DML. Ferner wird davon ausgegangen, dass Schema und Subschema bereits generiert sind. Hier werden einzelne Schritte zur Erzeugung eines UDS/SQL-Anwenderprogramms kurz dargestellt.

Der Database Handler (DBH) als Kernkomponente des UDS/SQL-Datenbanksystems ist zuständig für die Kommunikation zwischen dem Anwenderprogramm und der Datenbank (über das Subschema). Man unterscheidet:

  • Linked-in DBH: Er wird in das Anwenderprogramm eingebunden, eignet sich also für den Fall, dass nur ein Anwenderprogramm mit der Datenbank arbeiten soll.

  • Independent DBH: Er wird nicht mit in das Anwenderprogramm eingebunden, d.h. er kann mehr als ein Anwenderprogramm steuern (eigener Prozess).

Aufbau eines COBOL-DML-Programms

DATA DIVISION.
    .
    .
    .
SUB-SCHEMA SECTION.
    DB subschema-name WITHIN schema-name.
PROCEDURE DIVISION.
    .
    .
    Folge von COBOL-DML-Anweisungen
    ...    .

Die Formate der COBOL-DML-Anweisungen sind im Handbuch „Anwendungen programmieren“ [15] beschrieben.

schema-name/subschema-name werden bei der Schema- bzw. Subschema-Generierung festgelegt.

Übersetzen eines COBOL-DML-Programms

Der COBOL2000-Compiler erzeugt aus einem COBOL-DML-Programm ein ProgrammModul und ein Subschema-Modul. Bei der Kompilierung des Anwenderprogramms muss der COBOL-Compiler die COSSD-Datei der betroffenen Datenbank lesen. Dazu gibt es folgende Möglichkeiten:

  1. Die COSSD-Datei wird dem COBOL-Compiler explizit zugewiesen mit dem Kommando

    /ADD-FILE-LINK       LINK-NAME=UDSCOSSD, -
    /                     FILE-NAME=[:catid:][$userid.]dbname.COSSD
    

    Dabei sind :catid: und $userid die Katalogkennung und Benutzerkennung, unter der die COSSD-Datei katalogisiert ist. Ohne die Angabe :catid: bzw. $userid wird der Dateiname nach den Standardregeln des BS2000 komplettiert.

    Die COSSD-Datei muss unter dem im Kommando angegeben Namen katalogisiert sein, da im Fehlerfall nicht nach einer COSSD-Datei an anderer Stelle gesucht wird. Dieses Verfahren ist zwingend erforderlich, wenn in allen Katalogen, die lokal von der Benutzerkennung aus zugreifbar sind, mehrere COSSD-Dateien mit dem entsprechenden Datenbanknamen existieren.

    Beispiel für eine Kommandofolge:

    /ADD-FILE-LINK UDSCOSSD,dbname.COSSD
    /START-PROGRAM $COBOL2000 
    COMOPT MODULE=modulbibliothek 
    END Übersetzungseinheitdatei 
  2. Dem COBOL-Compiler wird der Datenbankname mitgeteilt mit dem Kommando

    /SET-FILE-LINK       LINK-NAME=DATABASE, -
    /                     FILE-NAME=[:catid:][$userid.]dbname
    

    Die Angabe einer :catid: beim Kommando SET-FILE-LINK wird ignoriert. Der COBOL-Compiler sucht dann eine COSSD-Datei mit dem Namen dbname.COSSD in allen Katalogen, die lokal von derjenigen Benutzerkennung aus zugreifbar sind, die beim Kommando SET-FILE-LINK explizit angegeben wurde oder vom BS2000 ergänzt wurde. Dieses Verfahren kann nur verwendet werden, wenn im genannten Katalogumfeld nur eine COSSD-Datei mit dem entsprechenden Datenbanknamen existiert.

    Beispiel für eine Kommandofolge:

    /SET-FILE-LINK DATABASE,dbname
    /START-PROGRAM $COBOL2000 
    COMOPT MODULE=modulbibliothek 
    END Übersetzungseinheitdatei 

    Falls ADD-FILE-LINK oder SET-FILE-LINK-Kommandos sowohl für LINK=DATABASE als auch für LINK=UDSCOSSD vorliegen, wird nur das Verfahren für LINK=UDSCOSSD angewandt.

Binden eines COBOL-DML-Programms

Das Binden von COBOL-Programmen ist im Kapitel „Erzeugung und Aufruf ablauffähiger Programme“ ausführlich beschrieben.

Bei COBOL-DML-Programmen ist jedoch zusätzlich zu beachten, dass je nach Wahl der DBH-Variante (=Database Handler) ein entsprechendes UDS/SQL-Connection-Modul mit einzubinden ist (siehe hierzu [15]).

Beispiel eines Binderlaufs:

/START-BINDER
//START-LLM-CREATION INT-NAME=programmname
//INCLUDE-MODULES LIB=modulbibliothek, ELEM=cobol-dml-programm
//INCLUDE-MODULES LIB=udsmodulbibliothek, ELEM=uds-connection-modul
//RESOLVE-BY-AUTOLINK LIB=$.SYSLNK.CRTE
//SAVE-LLM LIB=modulbibliothek, ELEM=uds-test-prog
//END 

Ablauf eines UDS/SQL-Anwenderprogramms

Der Ablauf eines UDS/SQL-Anwenderprogramms setzt bei Einsatz des independent DBH eine UDS/SQL-Session voraus. Die Verbindung zu dieser Session bzw. zur Datenbank stellt das SET-FILE-LINK-Kommando her (siehe Handbuch „UDS/SQL (BS2000/OSD)“ [15]).

Ablauf mit linked-in DBH:

/SET-FILE-LINK DATABASE,dbname 
/START-PROGRAM dateiname
[DBH-Parameter]
PP END
[Anwenderprogramm-Parameter]


Ablauf mit independent DBH:

/SET-FILE-LINK DATABASE,dbname 
/START-PROGRAM dateiname
[Anwenderprogramm-Parameter]