213 lines
9.4 KiB
Plaintext
213 lines
9.4 KiB
Plaintext
COPY(QL) DABA16 COPY(QL)
|
|
|
|
NAME
|
|
copy - Kopieren von Daten zwischen Relation und MUTOS-File
|
|
|
|
UEBERSICHT
|
|
copy relname (domname = format {, domname = format })
|
|
|
|
direction "filename"
|
|
|
|
BESCHREIBUNG
|
|
Copy uebertraegt Daten zwischen DABA-Relationen und einem
|
|
Standard-MUTOS-File. Relname ist der Name einer bestehenden
|
|
Relation. Im allgemeinen identifiziert domname eine Domaene
|
|
in der Relation relname. Format bestimmt das Format, das im
|
|
MUTOS-File eine Domaene besitzen soll, die mit der spezifi-
|
|
zierten Domaene der Relation korrespondiert. Direction
|
|
(Richtung) kann entweder into (in) oder from (aus) sein.
|
|
Filename ist der vollstaendige Pfadname eines Files.
|
|
|
|
|
|
Bei einem copy aus (from) einem File in eine Relation darf
|
|
die Relation keinen Sekundaerindex besitzen, muss dem copy
|
|
Nutzer zugeeignet sein und Aenderungsoperationen zulassen
|
|
(darf kein Sekundaerindex und keine Systemrelation sein).
|
|
|
|
Copy darf nicht auf eine virtuelle Relation (Sicht, view)
|
|
angewendet werden. Fuer ein copy in (into) ein MUTOS-File
|
|
muss der Nutzer entweder Relationseigentuemer sein, bzw. die
|
|
Relation muss retrieve Befugnis fuer alle Nutzer oder alle
|
|
Befugnisse fuer alle Nutzer haben.
|
|
|
|
|
|
Erlaubte Formate bei copy sind :
|
|
|
|
i1,i2,i4 - Der Datenwert im MUTOS-File ist als Festkommazahl
|
|
(Integer) der Laenge 1, 2 oder 4 Byte gespeichert.
|
|
|
|
f4,f8 - Der Datenwert im MUTOS-File ist eine Gleitkommazahl
|
|
(entweder einfacher oder doppelter Genauigkeit).
|
|
|
|
c1,c2,...,c255 - Der Datenwert ist als Zeichenkette (String)
|
|
fester Laenge gespeichert.
|
|
|
|
c0 - Zeichenkette variabler Laenge (begrenzt durch
|
|
Begrenzerzeichen).
|
|
|
|
|
|
|
|
|
|
d0,d1,...,d255 - Pseudo(Dummy)-Domaene
|
|
|
|
|
|
Korrespondierende Domaenen der Relation und des MUTOS-File
|
|
muessen nicht von gleicher Laenge oder von gleichem Typ
|
|
sein. Copy wird, soweit notwendig, Konvertierungen ausfueh-
|
|
ren. Bei der Konvertierung, mit Ausnahme von Character in
|
|
Character, prueft copy auf Ueberlauf. Bei der Konvertierung
|
|
Character in Character wird copy , entsprechende Notwendig-
|
|
keit vorausgesetzt, entweder mit Blanks auffuellen oder
|
|
rechtsbuendig verkuerzen.
|
|
|
|
Die Domaenen muessen entsprechend der Reihenfolge im MUTOS-
|
|
File spezifiziert werden. Die Zuornung zu den Domaenen in
|
|
der Relation erfolgt durch Namenszuordnung.
|
|
|
|
Copy ist auch nutzbar fuer variabel lange Zeichenketten und
|
|
Pseudodomaenen im MUTOS-File. Die ausgefuehrte Aktion ist
|
|
von der Uebertragungsrichtung entweder copy into oder copy
|
|
from abhaengig. Begrenzer fuer variabel lange Zeichenketten
|
|
und fuer Pseudodomaenen koennen aus folgender Liste ausge-
|
|
waehlt werden :
|
|
|
|
nl - Newline-Zeichen
|
|
tab - Tabulatorzeichen
|
|
sp - Space (Blank)-Zeichen
|
|
nul oder null - Nullzeichen "
|
|
comma - Komma
|
|
colon - Doppelpunkt
|
|
dash - Bindestrich
|
|
lparen - linke runde Klammer
|
|
rparen - rechte runde Klammer
|
|
x -bliebiges Einzelzeichen 'x'
|
|
|
|
Die Spezialbedeutung eines Begrenzers kann durch den unmit-
|
|
telbar vorangestellten Backslash "\" aufgehoben werden. Die
|
|
Typspezifikation kann in Anfuehrungszeichen (z.B. "c0delim")
|
|
eingeschlossen werden. Dies ist bei der Verwendung eines
|
|
Zeichens (delim) als Begrenzer bedeutungsvoll, das fuer den
|
|
DABA-Parser (Anweisungsanalyse fuer QL-Anweisungen) eine
|
|
Sonderbedeutung besitzt.
|
|
|
|
Bei einer Richtung (direction) aus (from) einem MUTOS-File
|
|
fuegt copy Daten an die Relation an. Domaenen der DABA-
|
|
Relation, denen aus dem MUTOS-File keine Werte zugewiesen
|
|
werden, erhalten einen Standardwert (Null fuer numerische
|
|
Domaenen und Leerkette fuer Character-Domaenen). Beim Ko-
|
|
pieren aus einem File sind folgende Spezialitaeten aufrufbar
|
|
:
|
|
|
|
c0delim - Der Datenwert im MUTOS-File ist als variabel lange
|
|
Zeichenkette gespeichert, die durch den Begrenzer delim
|
|
begrenzt wird. Wenn delim im File vermisst wird, be-
|
|
grenzt das erste auftretende Komma, Tab-Zeichen oder
|
|
Newline-Zeichen die Zeichenkette. Der Begrenzer wird
|
|
nicht kopiert.
|
|
|
|
Beispiele :
|
|
tnum=c0 -Zeichenkette endet mit Komma, Tab- oder
|
|
Newline-Zeichen.
|
|
tnum=c0nl -Zeichenkette endet mit Newline.
|
|
tnum=c0sp - Zeichenkette endet mit Space.
|
|
tnum="c0z" - Zeichenkette endet mit Zeichen 'z'.
|
|
tnum="c0%" - Zeichenkette endet mit Zeichen '%'.
|
|
|
|
Ein Begrenzer kann in den Daten des Files durch einen
|
|
vorgestellten Backslash "\" aufgehoben werden. Zum
|
|
Beispiel wird durch name = c0, in der Zeichenkette
|
|
"Mueller\, Josef" des Files die Sonderbedeutung des
|
|
Kommas als Begrenzer durch den Backslash aufgehoben und
|
|
als "Mueller, Josef" in die Domaene aufgenommen.
|
|
|
|
|
|
|
|
|
|
d0delim - Der Datenwert im MUTOS-File ist als variabel lange
|
|
Zeichenkette, durch delim begrenzt, gespeichert. Die
|
|
Zeichenkette wird gelesen aber nicht weiter benutzt.
|
|
Die Regeln fuer Begrenzer sind mit denen von c0 und d0
|
|
identisch. Der Domaenenname wird ignoriert.
|
|
|
|
d1,d2,...,d255 - Der Datenwert im MUTOS-File ist eine Zei-
|
|
chenkette fester Laenge. Sie wird gelesen aber nicht
|
|
weiter benutzt. Der Domaenenname wird ignoriert.
|
|
|
|
Bei einer Richtung into uebertraegt copy Daten aus der Rela-
|
|
tion in (into) das MUTOS-File. Wenn das File bereits exi-
|
|
stiert, wird es vor dem Beginn des Kopierens auf eine File-
|
|
laenge Null verkuerzt. Beim Kopieren in dieser Richtung
|
|
sind folgende Spezialitaeten aufrufbar :
|
|
|
|
c0 - Der Domaenenwert wird in eine Zeichenkette fester La-
|
|
enge konvertiert und in das MUTOS-File gespeichert.
|
|
Fuer Zeichenketten-Domaenen entspricht die Laenge der
|
|
Domaenenlaenge. Fuer numerische Domaenen wird die
|
|
Standard-Konvertierung ausgefuehrt, die durch die Flags
|
|
"-i", "-f", und "-c" beim DABA-Start (iql(mutos)) spe-
|
|
zifiziert wurde.
|
|
|
|
|
|
c0delim - Die Domaene wird entsprechend den Regeln von
|
|
c0 konvertiert. Das einzelne Begrenzerzeichen delim
|
|
wird unmittelbar nach der Domaene eingefuegt.
|
|
|
|
d1,d2,...,d255 - Der Domaenenname wird als Name des Begren-
|
|
zers verwendet. Dieser Begrenzer wird einmal bei d1 ,
|
|
zweimal bei d2, usw. in das MUTOS-File geschrieben.
|
|
|
|
d0 - Dieses Format wird bei einem copy into ignoriert.
|
|
|
|
d0delim - Der Begrenzer delim wird in das File geschrieben.
|
|
Der Domaenenname wird ignoriert.
|
|
|
|
|
|
Wenn in der copy Anweisung keine Domaenen spezifiziert sind,
|
|
(z.B. copy relname () into/from "filename") fuehrt copy au-
|
|
tomatisch eine Gesamtkopie, d.h. eine Kopie aller Domaenen
|
|
unter Beruecksichtigung der Reihenfolge und der Formate in
|
|
der Relation, aus. Damit sind kurze Notationen fuer das
|
|
Entladen und Rueckladen vollstaendiger Relationen moeglich.
|
|
|
|
Um ein copy in eine Relation auszufuehren, muss der Nutzer
|
|
Relationseigentuemer sein oder alle Nutzer muessen alle Be-
|
|
fugnisse besitzen ( keine Bufugniseinschraenkungen fuer die
|
|
Relation). Ebenso muss bei einem copy aus einer Relation
|
|
der Anwender Relationseigentuemer sein oder wenigstens re-
|
|
trieve Befugnis besitzen. Ein copy auf eine Sicht (view)
|
|
ist unstatthaft.
|
|
|
|
|
|
BEISPIEL[E]
|
|
/* Kopieren von Daten in die Relation "personal"*/
|
|
copy personal (name=c20,gehalt=f4,gebdat=i2,xxx=d1)
|
|
from "/mnt/peter/pers1"
|
|
|
|
/* Kopieren der Namen und Gehaelter in ein File*/
|
|
copy personal (name=c0,comma=d1,gehalt=c0,nl=d1)
|
|
into "/mnt/klaus/gehalt"
|
|
|
|
/* Gesamtkopie der Relation "personal" in ein File*/
|
|
copy personal ()
|
|
into "/mnt/kop/personal"
|
|
|
|
/* Rueckspeichern der Gesamtkopie aus einem File*/
|
|
copy personal ()
|
|
from "/mnt/kop/personal"
|
|
|
|
|
|
|
|
|
|
SIEHE AUCH
|
|
append(ql), create(ql), creater(mutos), integrity(ql),
|
|
permit(ql), ql(iql), view(ql), iql(mutos)
|
|
|
|
|
|
FEHLERQUELLEN
|
|
Copy stoppt die Verarbeitung beim ersten Fehler.
|
|
|
|
Bei der Spezifikation filename muss der vollstaendige Pfad-
|
|
name angegeben werden, da DABA nach dem Aufruf in einem an-
|
|
deren Directory als dem momentanen Arbeits-Directory ope-
|
|
riert.
|