Diese Zugriffsfunktion speichert einen Satz (EDTREC) mit einer Markierung (EAMMARK im EDTAMCB) in einer Arbeitsdatei unter der angegebenen Zeilennummer (EDTKEY).
Ist bereits ein Satz mit dieser Zeilennummer vorhanden, wird er einschließlich seiner Markierungen (siehe Abschnitt „IEDTPTM - Markieren eines Satzes“) ersetzt.
Im Feld EGLCCSN (EDTGLCB) ist der Zeichensatz anzugeben, in dem der Satz bereitgestellt wird.
Ist beim Schreiben eines Satzes mit IEDTPUT das Kennzeichen EAMNOMOD im Kontrollblock EDTAMCB im Feld EAMFLAG gesetzt, so wird die Arbeitsdatei nicht als modifiziert gekennzeichnet, obwohl ein Satz aufgenommen wird. Dadurch erkennt das aufrufende Programm leichter, ob ein Anwender die Arbeitsdatei im Dialog geändert hat (durch Abfrage des Feldes EPLMODIF im Kontrollblock EDTPARL). Außerdem entfällt eine unnötige Sicherungsabfrage des EDT bei der Anweisung @HALT, wenn im Dialog nichts geändert wurde.
Aufruf
Folgende Angaben sind notwendig (siehe Übersichtstabelle):
Versorgen der benötigten Felder in den Kontrollblöcken
EDTGLCBundEDTAMCBVersorgen des Puffers
EDTKEYVersorgen des Puffers
EDTRECAufruf der Einsprungadresse
IEDTPUTmit der Parameterliste
Übersichtstabelle
(Kontrollblöcke siehe Abschnitt „Generierung und Aufbau der Kontrollblöcke“).
Einsprungadresse |
Parameterliste |
Aufrufparameter | Rückkehrparameter | ||
EDTGLCB: | EGLUNIT EGLVERS EGLCCSN | EDTGLCB: | EGLRETC EGLRMSG |
| EAMUNIT EAMVERS EAMFLAG EAMFILE EAMMARK EAMLKEY EAMLREC |
| |
EDTKEY EDTREC | |||
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 (der Wert 4096 ist hier als Beispiel für die maximal erwartete Satzlänge gewählt):
iedamcb amcb = IEDAMCB_INIT; char key[8]; char rec[4096]; IEDAMCB_SET_NO_MARKS(amcb); amcb.length_key = 8;
Wenn beispielsweise ein Satz mit der Zeilennummer 75 in die Arbeitsdatei 0 geschrieben werden soll:
strncpy(rec,"Das ist der Inhalt des Satzes",29); strncpy(key,"00750000",8); strncpy(amcb.filename,"$0 ",8); amcb.length_rec = 29;
Im C-Programm wird die Funktion IEDTPUT folgendermaßen aufgerufen:
IEDTPUT(&glcb,&amcb,key,rec);