Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Schema-DDL übersetzen

Die Schema-DDL übersetzen Sie mit dem DDL-Compiler; Sie müssen die Schema-DDL dem DDL-Compiler als Eingabedatei zuweisen.
Nach erfolgreichem Übersetzungslauf speichert der DDL-Compiler die Schema-Beschreibung im DBCOM (Database Compiler Realm).

Mit Hilfe dieser Information baut das nachfolgende Dienstprogramm BGSIA die SIA auf und speichert sie im DBDIR (Database Directory).

Wenn Sie eine SSL-Beschreibung erstellt haben, ist die übersetzte Schema-Beschreibung im DBCOM die Grundlage für die Weiterverarbeitung durch den SSL-Compiler und das Dienstprogramm BGSIA.
Haben Sie keine SSL-Beschreibung erstellt, dann ist die Schema-Beschreibung im DB-COM abgeschlossen.

Der DDL-Compiler erstellt auch das COBOL Subschema Directory (COSSD). Das COSSD speichert Informationen für den COBOL-Compiler, die beim Generieren der DB-Anwenderprogramme erforderlich sind. Erst beim Übersetzungslauf der Subschema-DDL wird der eigentliche Inhalt des COSSD generiert.

Der DDL-Compiler erweitert bei Bedarf automatisch DBDIR und DBCOM der bearbeiteten Datenbank bzw. die DBTTs der Satzarten in DBDIR und DBCOM. Näheres hierzu siehe Handbuch „Datenbankbetrieb“, Automatische Realm-Erweiterung durch Dienstprogramme).

Der DDL-Compiler berücksichtigt beim Start ggf. eine zugewiesene UDS/SQL-Pubset-Deklaration (siehe Handbuch „Datenbankbetrieb“, Pubset-Deklarations-Jobvariable). Eine fehlerhafte Zuweisung führt zum Programmabbruch.

Während des Ablaufs benutzt der DDL-Compiler den linked-in DBH.

Bild 9: Systemumgebung bei der Schema-DDL-Übersetzung

Anweisungen für die Übersetzung

Mit dem DDL-Compiler übersetzen Sie nicht nur die Schema-DDL, sondern auch die Subschema-DDL; die SSL dagegen übersetzt der SSL-Compiler.
In der folgenden Tabelle finden Sie die Anweisungen für die Übersetzung der

  • Schema-DDL gekennzeichnet mit DDL

  • Subschema-DDL gekennzeichnet mit SDDL

  • SSL gekennzeichnet mit SSL

Anweisung                                          

Compiler

Standard-
wert

Bedeutung

PARLIST IS { YES | NO }

DDL
SDDL
SSL

NO

wahlweise;
YES
alle Anweisungen werden auf SYSLST aufgelistet
NO
die Anweisungen werden nicht aufgelistet

SORCLIST IS { YES | NO }

DDL
SDDL
SSL

YES

wahlweise;
YES
auf SYSLST wird ein Protokoll ausgedruckt,
u.U. mit Fehlermeldungen
NO
kein Protokoll wird ausgedruckt

SOURCE IS
   { 'dateiname' |
     'bib(element)' }

DDL
SDDL
SSL

-

nicht erforderlich, wenn die Eingabe im Dialog erfolgt oder die Eingabedatei SYSDTA zugewiesen ist - in diesem Fall ist zu beachten, dass zunächst alle Anweisungen (mindestens END) und anschließend die eigentliche Source eingegeben wird.

weist dem Compiler die Datei zu, die die Schema-DDL/Subschema-DDL/SSL enthält.
An Stelle von ‘dateiname‘ kann auch ein Element einer Programmbibliothek angegeben werden (siehe Handbuch „LMS (BS2000)“, Programmbibliotheken).

bib: Name der Programmbibliothek
element: Name des Elements

SYSDTA wird auf die Eingabedatei umgeschaltet. Nach Beendigung des Compiler-Laufs wird SYSDTA wieder auf SYSCMD zurückgesetzt. Die Anweisungen „SOURCE IS“ und „DELETE SCHEMA“ bzw. „DELETE SUBSCHEMA“ dürfen Sie nicht innerhalb desselben DDL-Compiler-Laufs verwenden.

SUBSCHEMA FORM IS OLD

SDDL

-

wahlweise;
diese Anweisung wird nur noch für Subschemata benötigt, die von KDBS-Anwendungen genutzt werden;
sie ist nur zulässig in Verbindung mit der Anweisung „SOURCE IS dateiname“ und wird bei der Schemaübersetzung ignoriert.

Die Anweisung „SUBSCHEMA FORM IS OLD“ bewirkt, dass das transformierte Subschema und die Prüftabelle (CHECK-TABLE) in einem internen Format in das COSSD eingetragen wird, das bis einschließlich UDS/SQL V1.2 das Standardformat war („alte“ Form; alle Referenznummern sind 1 byte lang).

Ein Subschema kann nur dann in eine Form gemäß UDS/SQL V1.2 übersetzt werden, wenn die folgenden Bedingungen erfüllt sind:

  • Kein Feld des Subschemas hat den Typ DATABASE-KEY-LONG.

  • Kein Feld des Subschemas hat den Typ NATIONAL.

  • Keine Satzart des Subschemas ist länger als 2020 byte.

  • Alle Satzart- und Setnummern des Schemas sind <= 254.

Andernfalls beendet sich der DDL-Compiler mit Syntaxfehler und das Subschema wird nicht in DBCOM und COSSD eingetragen.

GENERATE-REC-REF IS
    { YES | NO }

SDDL

NO

wahlweise;
YES
Satzreferenzen werden erzeugt:

In der Struktur IMPLICITLY-DEFINED-DATA-NAMES wird ein Feld REC-REF PIC S9(4) BINARY definiert. Für jede Satzreferenz wird diesem Feld ein Bedingungsname (Stufennummer 88) zugeordnet, der nach folgendem Muster aufgebaut ist:
REF-Satzname.
Da die Maximallänge für einen Namen 30 Zeichen beträgt, wird Satzname, falls erforderlich, nach dem 26. Zeichen abgeschnitten. In diesem Fall muss Satzname in den ersten 26 Zeichen eindeutig sein.
Die Satzreferenz kann in einem COBOL-Programm wie folgt verwendet werden:
SET REF-Satzname IN REC-REF TO TRUE.
MOVE REC-REF TO dbkey.

NO
Es werden keine Satzreferenzen erzeugt

Diese Anweisung ist nur für das Generieren von Subschemas wirksam. Beim Generieren von Schemas wird die Anweisung ignoriert.

DELETE SCHEMA 'schemaname'

DDL

-

wahlweise;
das angegebene Schema wird wieder gelöscht;
sinnvoll, wenn nach der Umstrukturierung mit BALTER die DDL zwar richtig läuft, aber die SSL-Übersetzung Fehler anzeigt, die eigentlich auf die DDL zurückzuführen sind

schemaname: Name des Schemas

Die Anweisungen „SOURCE IS“ und „DELETE SCHEMA“ dürfen Sie nicht innerhalb desselben DDL-Compiler-Laufs verwenden.

DELETE [ONLY] SUBSCHEMA
  'subschemaname' {OF | :}
  SCHEMA 'schemaname'

SDDL

-

wahlweise;
das angegebene Subschema wird gelöscht.
Das Subschema, das übersetzt wird, und das Subschema, das Sie durch die DELETE-Anweisung benennen, kann denselben Namen haben, da es vor dem Übersetzungslauf gelöscht wird.

ONLY
wird der Parameter weggelassen, muss nach der DELETE-Anweisung eine SOURCE-Anweisung folgen.

Ist der Parameter angegeben, wird eine SOURCE-Anweisung ignoriert.

subschemaname: Name des Subschemas
schemaname: Name des Schemas

beide Namen müssen in Hochkommata eingeschlossen werden

DISPLAY IS { YES | NO }

DDL
SDDL
SSL

NO

wahlweise;
YES
die verschiedenen Informationen über Satzarten, Sets usw. aus dem DBCOM werden in Klartext ausgegeben.
NO
Werte aus dem DBCOM werden nicht ausgegeben

CREATE COSSD 'schemaname'

DDL
SDDL

-

nachträglich das COSSD einrichten;
wenn dies bei der Schemaübersetzung vergessen wurde oder der DDL-Compiler wegen eines Fehlers beim Einrichten des COSSD abnormal beendet wurde, so kann es bis zur Subschema-Übersetzung in einem eigenen Lauf nachgeholt werden;
schemaname muss in Hochkommata eingeschlossen werden.
Das COSSD muss vor dem Compilerlauf per CREATE-FILE-Kommando eingerichtet werden.
Hinweis:
Wenn Sie gleichzeitig den Parameter SOURCE IS ... angeben, findet keine Übersetzung statt.

COMPARE SUBSCHEMAS

SDDL

-

gilt nur nach einer Umstrukturierung mit BALTER;
die Subschemata des alten Schemas werden auf Verträglichkeit zum neuen Schema geprüft;
dazu liest der DDL-Compiler die Subschemata aus dem alten COSSD nach einem BALTER-Lauf heraus.
Ist das alte Subschema kompatibel zum neuen Schema, wird das Subschema in den neuen DBCOM und das neue COSSD eingetragen.

DIAGNOSTIC IS { YES | NO }

SDDL

NO

nur sinnvoll zusammen mit COMPARE;
YES
Unverträglichkeiten der zum neuen Schema inkompatiblen Subschemata werden diagnostiziert und in Form von Fehlermeldungen aufgelistet
NO
es werden keine Fehlermeldungen ausgegeben

QUOTE IS { SINGLE |
           DOUBLE }

DDL
SDDL

DOUBLE

wahlweise;
SINGLE
Literale in der Schema-DDL/Subschema-DDL werden in Apostrophen eingeschlossen
DOUBLE
Literale in der Schema-DDL/Subschema-DDL werden in Anführungszeichen eingeschlossen

END

DDL
SDDL
SSL

-

generell erforderlich;
schließt die Eingabe der Anweisungen ab

Tabelle 12: Anweisungen zum Ubersetzen der Schema-DDL/Subschema-DDL/SSL

Kommandofolge zum Übersetzen der Schema-DDL

Die hier beschriebene Kommandofolge geht davon aus, dass UDS/SQL mit IMON installiert wurde (siehe Abschnitt „START-Kommandos der UDS/SQL-Programme").

01 /CREATE-FILE FILE-NAME=dbname.COSSD ...

02 /ADD-FILE-LINK LINK-NAME=DATABASE,FILE-NAME=dbname.DBDIR

03 /SELECT-PRODUCT-VERSION PRODUCT-NAME=UDS-SQL,VERSION=version,SCOPE=*TASK

04 /CREATE-FILE FILE-NAME=dbname.DBSTAT,SUPPRESS-ERRORS=*FILE-EXISTING
   /CREATE-FILE FILE-NAME=dbname.DBSTAT.SAVE,SUPPRESS-ERRORS=*FILE-EXISTING

05 /START-UDS-DDL

06 ddl-compiler-anweisungen

07 END

01

siehe „COSSD einrichten“ ("Compilerdatenbank einrichten")

03

Versionsabhängiges Modul des linked-in DBH der entsprechenden Version wird nachgeladen (siehe Handbuch „Anwendungen programmieren“, Abschnitt „UDS/SQL-TIAM-Anwenderprogramme binden, laden und starten“).

04

Die DB-Status-Dateien benötigt der DBH. Falls der Datenbankname mehr als 8 Zeichen enthält, dürfen in diesen CREATE-FILE-Anweisungen für dbname nur die ersten 8 Zeichen des Datenbanknamens angegeben werden.

05

Das UDS/SQL-Dienstprogramm kann auch mit dem Aliasnamen DDL gestartet werden.

06

Die einzelnen Anweisungen können, durch Kommas oder Leerzeichen getrennt, in einer Zeile eingegeben werden.

Beispiel

/CREATE-FILE FILE-NAME=REISEN.COSSD,SUPPORT=PUBLIC-DISK(SPACE=RELATIVE -
/   (PRIMARY-ALLOCATION=30,SECONDARY-ALLOCATION=10))
/CREATE-FILE FILE-NAME=REISEN.DBSTAT,SUPPORT=PUBLIC-DISK(SPACE=RELATIVE -
/   (PRIMARY-ALLOCATION=24,SECONDARY-ALLOCATION=48))
/CREATE-FILE FILE-NAME=REISEN.DBSTAT.SAVE,SUPPORT=PUBLIC-DISK(SPACE=RELATIVE -
/   (PRIMARY-ALLOCATION=24,SECONDARY-ALLOCATION=48))
/ADD-FILE-LINK LINK-NAME=DATABASE,FILE-NAME=REISEN.DBDIR
/SELECT-PRODUCT-VERSION PRODUCT-NAME=UDS-SQL,    VERSION=02.9B00 
/START-UDS-DDL
 ***** START       DDLCOMP        (UDS/SQL  V2.9  0000 )     2017-06-28   11:26:06
 *  DDLCOMP: INPUT SYSTEMPARAMETERS
 SOURCE IS 'S.REISEN.DDL'
 END
 *  DDLCOMP: READ SCHEMA/SUBSCHEMA
%  UDS0215 UDS STARTET UDS/SQL V2.9 (LINKED-IN), DATE=2017-06-28 (ILL2038,11:26:06/0YA2) 
%  UDS0746 UDS-PUBSET-DEKLARATION (CURRENT) FOLGT (ILL1746,11:26:06/0YA2) 
 0YA2: UDS-PUBSET-JV:  :SQL2:$XXXXXXXX.PUBSDECL.PUBS
 0YA2: PUBSETS:        SQL2
 0YA2: DEFAULT PUBSET: SQL2
 0YA2: ------------------------------------------
 *  DDLCOMP: START SCHEMA-PHASE
 *  DDLCOMP: CHECK SCHEMA RULES
 *  DDLCOMP: CHECK DATA ALLOCATION
 *  DDLCOMP: SEMANTIC TEST
 *  DDLCOMP: CYCLUS TESTS
 *  DDLCOMP: ERROR DIAGNOSTIC
 *  DDLCOMP: NO ERRORS IN SCHEMA-PHASE
 *  DDLCOMP: CREATE FILE COSSD
 *  DDLCOMP: NO ERRORS DETECTED
%  UDS0758 ANZAHL DER DML-ANWEISUNGEN UND I/O-ZAEHLER PRO DATENBANK  (ILL1758,11:26:06/0YA2) 
 0YA2: DATABASE NAME          DMLS   LOG READ  PHYS READ  LOG WRITE PHYS WRITE
 0YA2: ------------------------------------------------------------------------
 0YA2: REISEN                 1394       4046         67       1760         45
 %  UDS0213 UDS NORMAL BEENDET MIT ************1394 DML-STATEMENTS 2017-06-28 (ILLY033,11:26:06/0YA2) 
 
 ***** DIAGNOSTIC SUMMARY FOR DDL-SCHEMA REISEBUERO
 
                NO ERRORS
 +++++           8 WARNINGS
 
 ***** END OF DIAGNOSTIC SUMMARY
 ***** NORMAL END   DDLCOMP     (UDS/SQL  V2.9  0000 )     2017-06-28   11:26:06