Die Subschema-DDL (SDDL) wird von demselben DDL-Compiler übersetzt wie die Schema-DDL. Die SDDL-Compiler-Anweisungen sind in Tabelle 12 ("Schema-DDL übersetzen") beschrieben.
Sie müssen dem DDL-Compiler die Subschema-DDL als Eingabedatei zuweisen. Nach dem Übersetzungslauf wird die übersetzte Subschema-Beschreibung im DBCOM (Database Compiler Realm) abgelegt. Mit Hilfe dieser Information baut BGSSIA später die SSIA im DBDIR (Database Directory) auf. Außerdem speichert der DDL-Compiler das aus der übersetzten Subschema-Beschreibung abgeleitete, transformierte Subschema im COSSD und legt eine Prüftabelle (CHECK-TABLE) zu diesem Subschema an. Diese Angaben benötigt der COBOL-Compiler für die Syntax- und Semantikprüfungen der DML-Anweisungen.
Bei der Übersetzung eines Subschemas, das auch in KDBS-Anwendungen genutzt werden soll, müssen Sie die DDL-Compiler-Anweisung „SUBSCHEMA FORM IS OLD“ (Tabelle 12, "Schema-DDL übersetzen") angeben. Der DDL-Compiler erstellt dann das transformierte Subschema und die CHECK-TABLE im Format der UDS/SQL V1.2 („altes“ Format mit 1 byte langen Referenznummern für Satzarten und Sets; siehe Tabelle 12, "Schema-DDL übersetzen").
Das COSSD dient außerdem als Eingabe für das Dienstprogramm BCALLSI (siehe Abschnitt "Zusätzliche Maßnahmen bei CALL-DML-Programmen mit BCALLSI"). BCALLSI erzeugt das SSITAB-Modul, das die Subschema-Informationen für CALL-DML-Programme bereitstellt.
Nach dem Übersetzen der Subschemata sollte der Datenbankadministrator eine Sicherung der Datenbank erstellen (siehe Abschnitt „Datenbank sichern"). Dadurch wird sichergestellt, dass ein konsistenter Sicherungsstand der Datenbank vorhanden ist.
Durch das Subschema wird der Satzbereich (RECORD AREA) festgelegt.
Die Länge des Satzbereichs ist die Summe der Längen aller im zu Grunde liegenden Subschema enthaltenen Satzarten (auf Doppelwortgrenze ausgerichtet) und aller implizit definierten Datenfelder, d.h. ALIAS-Felder und AREA-IDs bei verteilten Satzarten.
Der DDL-Compiler bricht die Übersetzung des Subschemas mit Fehler ab, sobald der zugehörige Satzbereich größer wird als 65 535 byte (bzw. größer als 61 328 byte bei Angabe von SUBSCHEMA FORM IS OLD).
Bild 13: Systemumgebung bei der Subschema-Übersetzung
Kommandofolge zum Übersetzen des Subschemas
| |
02 | 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“). |
03 | Das UDS/SQL-Dienstprogramm kann auch mit dem Aliasnamen DDL gestartet werden. |
04 | Die einzelnen Anweisungen können durch Kommas oder Leerzeichen getrennt in einer Zeile eingegeben werden. |
Beispiel
/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:11 * DDLCOMP: INPUT SYSTEMPARAMETERS SOURCE IS 'S.REISEN.SUBDDL' END * DDLCOMP: READ SCHEMA/SUBSCHEMA % UDS0215 UDS STARTET UDS/SQL V2.9 (LINKED-IN), DATE=2017-06-28 (ILL2038,11:26:11/0YA2) % UDS0746 UDS-PUBSET-DEKLARATION (CURRENT) FOLGT (ILL1746,11:26:11/0YA2) 0YA2: UDS-PUBSET-JV: :SQL2:$XXXXXXXX.PUBSDECL.PUBS 0YA2: PUBSETS: SQL2 0YA2: DEFAULT PUBSET: SQL2 0YA2: ------------------------------------------ * DDLCOMP: START SUBSCHEMA-PHASE * DDLCOMP: CHECK SUBSCHEMA RULES * DDLCOMP: CHECK DATA ALLOCATION * DDLCOMP: SUBCOPY * DDLCOMP: ERROR DIAGNOSTIC * DDLCOMP: NO ERRORS IN SUBSCHEMA-PHASE * DDLCOMP: WRITE SUBSCHEMA ON COSSD * DDLCOMP: NO ERRORS DETECTED % UDS0758 ANZAHL DER DML-ANWEISUNGEN UND I/O-ZAEHLER PRO DATENBANK (ILL1758,11:26:11/0YA2) 0YA2: DATABASE NAME DMLS LOG READ PHYS READ LOG WRITE PHYS WRITE 0YA2: ------------------------------------------------------------------------ 0YA2: REISEN 3011 5388 77 1249 57 % UDS0213 UDS NORMAL BEENDET MIT ************3011 DML-STATEMENTS 2017-06-28 (ILLY033,11:26:11/0YA2) ***** DIAGNOSTIC SUMMARY FOR DDL-SUBSCHEMA NO ERRORS NO WARNINGS ***** END OF DIAGNOSTIC SUMMARY ***** NORMAL END DDLCOMP (UDS/SQL V2.9 0000 ) 2017-06-28 11:26:11