replace
Im Kontext von DL/I stellt die Anweisung 'replace' einen geänderten Datensatz in eine hierarchische Datenbank.
Die Anweisung 'replace' generiert eine DL/I-Anweisung REPL für Ersetzungen. In DL/I muss ein Segment abgerufen und temporär gesperrt werden, bevor es überschrieben werden kann. Die EGL-Schlüsselwörter 'get...forUpdate', 'get next...forUpdate' und 'get next inParent...forUpdate' führen alle eine temporäre Sperre für das zum Ersetzen angeforderte Segment aus.
Syntax

- DLISegment-Variable
- Name der DLISegment-Variablen, die dem zu ersetzenden Segment entspricht.
- usingPCB PCB-Name
- Option zum Angeben des Namens eines Programmkommunikationsblocks (PCB) gemäß Definition in Ihrem PSB-Datensatz (Programmspezifikationsblock), um diesen PCB anstelle des standardmäßigen PCB zu verwenden.
- with #dli{ DL/I-Anweisung }
- Option, die die Verwendung einer expliziten DL/I-Anweisung REPL ermöglicht, wie in Direktive '#dli' beschrieben. Zwischen '#dli' und der linken geschweiften Klammer darf kein Leerzeichen stehen.
Beispiel
Im folgenden Beispiel wird eine Bestellung aus der Kundendatenbank überschrieben:
// Definition von DLISegment-Datensätzen mithilfe der Eigenschaft 'hostVarQualifier'
Record CustomerRecordPart type DLISegment
{ segmentName="STSCCST", keyItem="customerNo", hostVarQualifier="myCustomer" }
...
end
Record LocationRecordPart type DLISegment
{ segmentName="STSCLOC", keyItem="locationNo", hostVarQualifier="myLocation" }
...
end
Record OrderRecordPart type DLISegment
{ segmentName="STPCORD", keyItem="orderDateNo", hostVarQualifier="myOrder" }
...
end
//Erstellung von Variablen für die Datensätze
myCustomer CustomerRecordPart;
myLocation LocationRecordPart;
myOrder OrderRecordPart;
//Erstellung eines Segmentsucharguments
myCustomer.customerNo = "5001";
myLocation.locationNo = "22";
myOrder.orderDateNo = "20050730A003";
//Angefordertes Bestellsegment temporär sperren
try
get myOrder forUpdate;
onException(dex DLIException)
myErrorHandler(dex);
end
//Aktualisierung der Informationen
changeOrder(myOrder);
//Neuerstellung der Bestellung
try
replace myOrder;
onException(dex DLIException)
myErrorHandler(dex);
end
Die Anweisung 'get...forUpdate' generiert qualifizierte SSAs für Kunden (Customer),
Standort (Location) und Bestellung (Order):GHU STSCCST (STQCCNO = :myCustomer.customerNo)
STSCLOC (STQCLNO = :myLocation.locationNo)
STPCORD (STQCODN = :myOrder.orderDateNo)
Anschließend generiert die Anweisung 'replace' einfach
Folgendes:REPL STPCORD