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
EDTGLCB
undEDTAMCB
Versorgen des Puffers
EDTKEY
Versorgen des Puffers
EDTREC
Aufruf der Einsprungadresse
IEDTPUT
mit 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);