Mit dieser Zugriffsfunktion kann ein Satz in einer Arbeitsdatei markiert werden oder seine Markierung gelöscht werden.
In einer Arbeitsdatei, in der eine Datei real durch @OPEN (Format 2) geöffnet ist, können keine Sätze markiert werden.
Mögliche Satzmarkierungen
Die Satzmarkierungen 1 bis 9 (
EAMMK01
bisEAMMK09
inEDTAMCB
) stehen dem Anwender frei zur Verfügung. Er kann diese Markierungen mit den FunktionenIEDTPUT
(Schreiben Satz und Markierungen) undIEDTPTM
(Schreiben Satzmarkierung) verändern.
Diese Markierungen können auch durch (Kurz-)Anweisungen gesetzt oder gelöscht werden.Die Satzmarkierung 13 (
EAMMK13
inEDTAMCB
) hat die Sonderfunktion eines Ignorier-Indikators. Derart markierte Sätze werdenbei der Rückkehr aus dem (mit @DIALOG bzw. @EDIT ONLY eingeleiteten) Benutzerdialog (siehe Abschnitt „IEDTCMD - Ausführen von EDT-Anweisungen“) automatisch gelöscht
beim Schreiben in eine Datei bzw. ein Bibliothekselement nicht übernommen
beim Kopieren von Zeilen nicht kopiert
durch die Satzzugriffsfunktionen
IEDTGET
undIEDTPTM
nur dann berücksichtigt, wenn im KontrollblockEDTAMCB
im FeldEAMFLAG
das KennzeichenEAMIGN13
gesetzt ist
Die Satzmarkierung 14 (
EAMMK14
inEDTAMCB
) hat die Sonderfunktion eines Update-Indikators. Derart markierte Sätze sind im F-Modus überschreibbar, auch wenn dies nicht explizit durch den Dialog-Anwender verlangt wird.Die Satzmarkierung 15 (
EAMMK15
inEDTAMCB
) hat die Sonderfunktion eines Schreibschutzindikators. Sätze mit Satzmarkierung 15 sind schreibgeschützt. Sie können mit der KurzanweisungX
oder [F2]im F-Modus-Bildschirmdialog nicht auf überschreibbar gestellt werden.
Voraussetzung für die Auswertung der Satzmarkierungen 14 und 15 durch den EDT ist die Einstellung von PROTECTION=ON
mit der @PAR-Anweisung.
Die Satzmarkierungen 13, 14 und 15 können nur durch die Satzzugriffsfunktionen IEDTPUT
und IEDTPTM
, nicht aber durch EDT-Anweisungen verändert werden.
Durch Ändern des Satzes im Dialog (d.h. Eingabe von Daten im Datenfenster) werden die Satzmarkierungen 13, 14 und 15 gelöscht.
Die Zeilennummer des zu markierenden Satzes muss im Feld EDTKEY
angegeben werden.
Das Setzen der Markierung wird als logisches ODER
realisiert. Sind alle Bits (auch die undefinierten) in EAMMMARK
gleich Null, wird die Markierung gelöscht.
Existiert kein Satz mit der angegebenen Satznummer, wird der Aufruf mit Returncode abgewiesen.
Aufruf
Folgende Angaben sind notwendig (siehe Übersichtstabelle):
Versorgen der benötigten Felder in den Kontrollblöcken
EDTGLCB
undEDTAMCB
Versorgen des Puffers
EDTKEY
Aufruf der Einsprungadresse
IEDTPTM
mit der Parameterliste
Übersichtstabelle
(Kontrollblöcke siehe Abschnitt „Generierung und Aufbau der Kontrollblöcke“).
Einsprungadresse |
Parameterliste |
Aufrufparameter | Rückkehrparameter | ||
EDTGLCB: | EGLUNIT EGLVERS | EDTGLCB: | EGLRETC EGLRMSG |
EDTAMCB: | EAMUNIT EAMVERS EAMFLAG EAMFILE EAMMARK EAMLKEY | ||
|
|
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 key[8]; IEDAMCB_SET_NO_MARKS(amcb); amcb.length_key = 8;
Wenn beispielsweise ein Satz mit der Zeilennummer 123.4 in der Arbeitsdatei 1 im F-Modus überschreibbar dargestellt werden soll (Satzmarkierung 14):
strncpy(amcb.filename,"$1 ",8); strncpy(key,"01234000",8); MARK_14(amcb) = 1;
Im C-Programm wird die Funktion IEDTPTM
folgendermaßen aufgerufen:
IEDTPTM(&glcb,&amcb,key);