Definition | #include <stdio.h> int creat(const char *d_name, int modus); int creat64(const char *d_name, int modus);
Es besteht kein funktionaler Unterschied zwischen Für die Bearbeitung von Dateien > 2 GB verfahren Sie wie folgt:
| |
Parameter | const char *d_name Zeichenkette, die den Namen der zu öffnenden Datei angibt. d_name kann sein:
int modus Im BS2000 werden hier nur der lbp-Schalter, der Nosplit-Schalter und die Angabe lbp-Schalter Der lbp-Schalter steuert die Behandlung des Last Byte Pointers (LBP). Er ist nur für Binärdateien mit Zugriffsart PAM relevant und kann mit allen bei
Beim Schließen einer Datei, die neu erstellt wurde, wird kein Marker geschrieben und ein gültiger LBP gesetzt. Bei NK-Dateien wird der letzte logische Block mit binären Nullen aufgefüllt, bei K- Dateien wird die Datei bis zum physikalischen Dateiende aufgefüllt.
Beim Schließen einer Datei, die neu erstellt wurde, wird der LBP auf Null (=ungültig) gesetzt. Es wird ein Marker geschrieben. Bei NK-Dateien wird der letzte logische Block mit binären Nullen aufgefüllt, bei K-Dateien wird die Datei bis zum physikalischen Dateiende aufgefüllt. Bei NK-Dateien wird der letzte logische Block mit binären Nullen aufgefüllt, bei K- Dateien wird die Datei bis zum physikalischen Dateiende aufgefüllt. Wird der lbp-Schalter in beiden Varianten angegeben (O_LBP und O_NOLBP), so schlägt die Funktion Wird der lbp-Schalter nicht angegeben, hängt das Verhalten von der Umgebungsvariablen LAST_BYTE_POINTER ab (siehe auch "Umgebungsvariable LAST_BYTE_POINTER“ (Last Byte Pointer (LBP))):
Die Funktion verhält sich so, als ob O_LBP angegeben wäre.
Die Funktion verhält sich so, als ob O_NOLBP angegeben wäre. Nosplit switch Dieser Schalter steuert die Verarbeitung von Textdateien mit der Zugriffsart SAM und variabler Satzlänge, wenn zusätzlich eine maximale Satzlänge angegeben ist. Er kann mit jeder der anderen Konstanten kombiniert werden.
Beim Schreiben mit Ist der Schalter nicht angegeben, gilt beim Schreiben Folgendes: Ein Satz, der länger als die maximale Satzlänge ist, wird in mehrere Sätze aufgeteilt. Hat ein Satz genau die maximale Satzlänge, wird nach diesem ein Satz der Länge Null geschrieben. | |
Returnwert | Dateikennzahl | positive Zahl, die später bei den elementaren Zugriffsoperationen ( |
| -1 | wenn die Datei nicht geöffnet werden konnte, z.B. weil zuviele Dateien geöffnet sind oder d_name kein gültiger Datei- bzw. Linkname ist. |
Hinweise | Der BS2000-Dateiname bzw. -Linkname kann in Klein- und Großbuchstaben geschrieben werden, er wird automatisch in Großbuchstaben umgesetzt. Wird eine nicht vorhandene Datei neu angelegt, wird standardmäßig folgende Datei erzeugt: Bei Verwendung eines Linknamens lassen sich mit dem ADD-FILE-LINK-Kommando folgende Dateiattribute ändern: Zugriffsmethode, Satzlänge, Satzformat, Blocklänge und Blockformat. Siehe auch Abschnitt "Systemdateien (SYSDTA, SYSOUT, SYSLST)“ . Wird eine bereits existierende Datei auf die Länge 0 verkürzt, bleiben die Katalogeigenschaften dieser Datei erhalten. Es können maximal _NFILE Dateien gleichzeitig geöffnet sein. _NFILE ist in <stdio.h> mit 2048 definiert. | |
Satz-E/A | Zum Eröffnen von Dateien mit satzorientierter Ein-/Ausgabe (Satz-E/A) kann beim Parameter modus die Konstante O_RECORD angegeben werden. Sie kann grundsätzlich mit jeder anderen Konstanten außer O_LBP kombiniert werden.
Dieser Schalter bewirkt Folgendes: Die Funktion
| |
Beispiel | Folgendes Programm schreibt den Inhalt einer Eingabedatei in eine Ausgabedatei. Die Ausgabedatei wird mit /ADD-FILE-LINK LINK-NAME=LINK,FILE-NAME=OUT.ISAM,ACCESS-METHOD=ISAM #include <stdio.h> #include <stdlib.h> int main(void) { char name[50]; char buf; int fin, fout; printf("Name der Eingabedatei?\n"); gets(name); printf("Die Datei %s wird kopiert.\n", name); if ((fin = open(name,0)) == -1) { perror(name); exit(-1); } if ((fout = creat("link=link", 1)) == -1) { perror("link"); exit(-1); } while(read(fin, &buf, 1) > 0) { putchar(buf); /* Protokoll auf stdout */ write(fout, &buf, 1); } close(fin); close(fout); return 0; } | |
Siehe auch | close, fdopen, open, open64, read, write, perror |