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

Syntaxdiagramm für die Anweisung 'replace' mit DL/I
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

Feedback