Hinweise zur Anweisung 'delete' mit DL/I

Im Kontext von DL/I entfernt die Anweisung 'delete' ein Segment aus einer hierarchischen Datenbank.

Die Anweisung 'delete' generiert eine DL/I-Anweisung DLET für Löschen. In DL/I muss ein Segment abgerufen und temporär gesperrt werden, bevor es gelöscht werden kann. Verwenden Sie die EGL-Anweisung 'get' in Kombination mit der Option 'forUpdate', bevor Sie die Anweisung 'delete' verwenden.

Im folgenden Beispiel wird die Option 'forUpdate' verwendet:

  if (userRequest == "D")
    try
      get myRecord forUpdate;
      onException(dex DLIException) 
        myErrorHandler(dex);   // beendet das Programm
    end

    try
      delete myRecord;
      onException(dex DLIException) 
        myErrorHandler(dex);
    end
  end

Syntax

Syntaxdiagramm für die Anweisung 'delete' mit DL/I
DLISegment-Variable
Name der DLISegment-Variablen, die dem zu löschenden Segment entspricht.
usingPCB PCB-Name
Option zum Angaben des Namens eines Programmkommunikationsblocks (PCB) gemäß Definition in Ihrem PSB-Datensatz (Programmspezifikationsblock), um den standardmäßigen PCB zu ersetzen.
with #dli{ DL/I-Anweisung }
Option zum Durchführen eines expliziten DL/I-Aufrufs DLET (siehe Direktive '#dli'). Zwischen '#dli' und der linken geschweiften Klammer darf kein Leerzeichen stehen.

Beispiel

Im folgenden Beispiel wird eine Bestellung aus der Kundendatenbank gelöscht:
Record CustomerRecord type DLISegment
  { segmentName="STSCCST", keyItem="customerNo", hostVarQualifier="myCustomer" }
  ...
end
Record LocationRecord type DLISegment
  { segmentName="STSCLOC", keyItem="locationNo", hostVarQualifier="myLocation" }
  ...
end
Record OrderRecord type DLISegment
  { segmentName="STPCORD", keyItem="orderDateNo", hostVarQualifier="myOrder" }
  ...
end

	//Erstellung von Variablen für die Datensätze
	myCustomer CustomerRecord;
	myLocation LocationRecord;
	myOrder    OrderRecord;

	//Erstellung eines Suchparameters für Segmente
	myCustomer.customerNo = "005001";
	myLocation.locationNo = "000022";
	myOrder.orderDateNo = "20050730A003";

	//Angeforderten Bestelldatensatz temporär sperren
	try
		get myOrder forUpdate;
		onException(dex DLIException)
			myErrorHandler(dex);
	end
	
	//Löschen der Bestellung
	try
		delete 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)
Die Anweisung 'delete' generiert anschließend eine einzelne Codezeile:
DLET STPCORD

Feedback