Durch diese Zugriffsfunktion wird der angegebene Satzbereich einer bestehenden Arbeitsdatei oder der Kopierpuffer gelöscht.
Das Löschen eines Satzbereichs entspricht der Anweisung @DELETE (Format 1).
Das Löschen des Kopierpuffers entspricht der Kurzanweisung * im F-Modus.
Löschen eines Satzbereichs
Der Satzbereich wird durch zwei Zeilennummern angegeben:
EDTKEY1: Zeilennummer des ersten Satzes des Bereiches
EDTKEY2: Zeilennummer des letzten Satzes des Bereiches
Wird in EDTKEY1 der Wert X'0000000000000000' und in EDTKEY2 der Wert X'FFFFFFFFFFFFFFFF' angegeben, werden alle Sätze der Arbeitsdatei gelöscht. Dies entspricht der Anweisung @DELETE % - . $ (nicht der Anweisung @DEL ohne Operanden, die alle Werte der Arbeitsdatei zurücksetzt).
Löschen des Kopierpuffers
Im Kontrollblock EDTAMCB im Feld EAMFILE muss der Wert C abgelegt werden.
Der Wert muss linksbündig stehen und mit Leerzeichen aufgefüllt sein.
Die Puffer EDTKEY1 und EDTKEY2 müssen beim Löschen des Kopierpuffers nicht angegeben werden.
Aufruf
Folgende Angaben sind notwendig (siehe Übersichtstabelle):
Versorgen der benötigten Felder in den Kontrollblöcken
EDTGLCBundEDTAMCBVersorgen des Puffers
EDTKEY1Versorgen des Puffers
EDTKEY2Aufruf der Einsprungadresse
IEDTDELmit der Parameterliste
Übersichtstabelle
(Kontrollblöcke siehe Abschnitt „Generierung und Aufbau der Kontrollblöcke“).
Einsprungadresse |
Parameterliste |
Aufrufparameter | Rückkehrparameter | ||
EDTAMCB: | EAMFILE EAMLKEY1 EAMLKEY2 | EDTGLCB: | EGLRETC EGLRMSG |
|
| ||
Mögliche Returncodes siehe Abschnitt „Logische Satzzugriffsfunktionen“.
Aufruf im C-Programm
Benötigte Include-Dateien:
#include <stdio.h>
#include <iedtgle.h>
Der Kontrollblock EDTAMCB wird folgendermaßen deklariert und initialisiert:
iedamcb amcb = IEDAMCB_INIT; char key1[] = "08000001"; char key2[] = "99999999"; amcb.length_key1 = amcb.length_key2 = 8;
Wenn beispielsweise die Sätze von der Zeilennummer 800.0001 bis zum Ende der Arbeitsdatei 1 gelöscht werden sollen:
strncpy(amcb.filename,"$1 ",8);
Im C-Programm wird die Funktion IEDTDEL folgendermaßen aufgerufen:
IEDTDEL(&glcb,&tamcb,key1,key2);