COBOL-Definitionen, die sich auf den Database Key beziehen, liefern Hinweise, wo im Anwenderprogramm ggf. Anpassungen an Database-Key-Werte des erweiterten Wertebereichs (REC-REF > 254 und/oder RSQ > 224-1) notwendig sind.
Die folgenden COBOL-Definitionen beziehen sich auf den Database Key:
Definition eines COBOL-Feldes mit Datentyp USAGE IS DATABASE-KEY
Redefinition mit REDEFINES eines COBOL-Feldes oder Subschema-Feldes vom Datentyp USAGE IS DATABASE KEY
LINKAGE SECTION, die COBOL- oder Subschema-Felder vom Datentyp USAGE IS DATABASE-KEY beschreibt
Somit liefern diese Definitionen Hinweise, wo im Anwenderprogramm ggf. Anpassungen an erweiterte Database-Key-Werte notwendig sind.
Definitionen von COBOL-Feldern mit USAGE IS DATABASE-KEY anpassen
Der Definition eines Database-Key-Feldes im Subschema entspricht die Definition von COBOL-Feldern des Typs USAGE IS DATABASE-KEY bzw. USAGE IS DATABASE-KEY-LONG in der WORKING-STORAGE SECTION des COBOL-Programms.
Ein COBOL-Feld, das mit USAGE IS DATABASE-KEY definiert ist, zeigt an, dass das Anwenderprogramm Database-Key-Werte verwendet. Sofern dieses COBOL-Feld auch Database-Key-Werte des erweiterten Wertebereichs aufnehmen soll (z.B. mit ACCEPT), muss der Datenyp des COBOL-Feldes geändert werden in USAGE IS DATABASE-KEY-LONG.
Wenn ein COBOL-Programm nur Database-Key-Felder (USAGE IS DATABASE-KEY) verwendet, die innerhalb der WORKING STORAGE SECTION des Programms definiert sind, kann das COBOL-Programm bereits vor der Datenbankumstellung für die Nutzung erweiterter Database-Key-Werte (USAGE IS DATABASE-KEY-LONG) vorbereitet werden.
Redefinitionen von Database-Key-Feldern anpassen
Die Redefinition von Database-Key-Feldern mit REDEFINES in der WORKING-STORAGE SECTION erlaubt es, einzelne Bestandteile von Database-Key-Werten im COBOL-Programm gezielt anzusprechen und zu verarbeiten.
Redefiniert werden können folgende Database-Key-Felder:
COBOL-Felder vom Datentyp USAGE IS DATABASE-KEY bzw.
USAGE IS DATABASE-KEY-LONGFelder vom Datentyp USAGE IS DATABASE-KEY bzw. USAGE IS DATABASE-KEY-LONG, die in einem vom Anwenderprogramm verwendeten Subschema (SUB-SCHEMA SECTION) definiert sind.
Für COBOL- oder Subschema-Felder vom Datentyp USAGE IS DATABASE-KEY-LONG müssen alle Redefinitionen entsprechend angepasst werden.
LINKAGE SECTION anpassen
Die LINKAGE SECTION in einem aufgerufenen COBOL-Programm beschreibt und verwendet eine Datenstruktur, die außerhalb des Programms in einem aufrufenden Programm definiert ist.
Wenn in der LINKAGE SECTION eines Anwenderprogramms ein Subschema- oder COBOL-Feld vom Typ USAGE IS DATABASE-KEY angesprochen wird, ist zu prüfen,
ob und ggf. wie dieses Feld mit Werten versorgt wird,
ob dieses Feld mit Werten versorgt wird, die aus Sätzen anderer Datenbanken stammen,
ob bei der Wertzuweisung der Datentyp konvertiert wird.
Wenn das im aufrufenden Programm definierte Feld in den Datentyp USAGE IS DATABASE-KEY-LONG geändert wurde und nicht ausgeschlossen werden kann, dass künftig auch Database-Key-Werte des erweiterten Wertebereichs übergeben werden, muss die lokale Definition ebenfalls in DATABASE-KEY-LONG geändert werden.
In der Regel verweist die LINKAGE-SECTION per COPY-Anweisung auf ein im aufrufenden Programm definiertes Datenfeld. Um Datentypänderungen des aufrufenden Programms in das aufgerufene Programm zu übernehmen, genügt es dann, das aufgerufene Programm neu zu übersetzen.