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:
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
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 Namendbname.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]