Makrotyp: S-Typ (C-Form/D-Form/E-Form/L-Form/M-Form) (siehe "Typen von Makroaufrufen")
Der COPFILE-Makroaufruf kopiert Dateien, Dateigenerationen und Dateigenerationsgruppen blockweise, ohne sie zu ändern. Er kann daher i. Allg. nicht verwendet werden, um Dateimerkmale zu verändern. Eine Ausnahme bildet lediglich die Möglichkeit, in bestimmten Fällen beim Kopieren die Blockkontrolleigenschaft der Datei zu ändern (siehe Abschnitt „Dateikettungsnamen“, "COPFILE - Datei kopieren", und Beschreibung des Operanden BLKCTRL, "COPFILE - Datei kopieren").
Wenn die Empfangsdatei (Kopie) noch nicht katalogisiert ist, dann wird sie bei Bearbeitung des COPFILE-Makroaufrufs automatisch auf gemeinschaftlichem Datenträger angelegt (wie bei einem FILE mit Standardwerten für die angegebene Empfangsdatei).
Soll die Empfangsdatei auf einem anderen Datenträger (Privatplatte, Net-Storage oder Band) gespeichert werden, muss sie vor Aufruf des COPFILE-Makros mit FILE (Operanden DEVICE, VOLUME) eingerichtet werden.
Ist die Plattendatei, in die kopiert werden soll, noch nicht katalogisiert, so wird die Primär- und Sekundärzuweisung von der Originalplattendatei übernommen.
Existiert die Zieldatei als Plattendatei, so werden deren Primär- und Sekundärzuweisung nur verändert, wenn sie kleiner sind als die der Originaldatei.
Liegt die Originaldatei auf Band, erhält die Zieldatei eine Standardzuweisung.
Hinweis
Der COPFILE-Makroaufruf ist eine Erweiterung des bisherigen COPY-Makroaufrufs um die Verwendung von Wildcards im Pfadnamen1 (Auswahl) und Pfadnamen2 (Konstruktion). Zusätzlich dazu werden die Operanden CHECK und LIST angeboten. Die bisherige Funktionalität von COPY wird weiterhin unterstützt. Das Format des COPY-Makros wird deshalb im Anhang noch gezeigt (siehe "COPY - Datei kopieren"). Die Operanden des COPY-Makros entsprechen jedoch den Operanden des COPFILE-Makros. Sie sind deshalb nur hier beschrieben.
Dateigenerationsgruppen
Eine Dateigenerationsgruppe lässt sich nur dann in eine andere Dateigenerationsgruppe kopieren, wenn eine der folgenden Bedingungen erfüllt ist:
Die Gruppeneinträge der beiden Dateigenerationsgruppen stimmen überein (d.h. die Werte von GEN, FIRSTGN, LASTGN und BASE sind gleich). Für die Dateigenerationsgruppe, in die das DVS die Kopie schreibt, müssen bereits die Generationen von FIRSTGN bis LASTGN katalogisiert sein.
Der Wert von GEN ist für beide Dateigenerationsgruppen gleich und die Dateigenerationsgruppe, in die das DVS die Kopie schreibt, enthält noch keine Generation (d.h. FIRSTGN, LASTGN und BASE haben den Wert null).
Die zu kopierende Dateigenerationsgruppe darf keine Band-Dateigenerationen enthalten (COPFILE unterstützt kein Kopieren von Bändern).
Eine Dateigenerationsgruppe lässt sich nur dann in eine einzelne Datei oder Dateigeneration kopieren, wenn folgende Bedingungen erfüllt sind:
Die Dateigenerationsgruppe besteht aus SAM-Dateigenerationen mit gleichen Eigenschaften (z.B. gleiche Satz- und Blocklänge, gleiches Satzformat, gleiche Blockkontrolleigenschaft).
Die Dateigeneration, in die kopiert werden soll, gehört nicht der zu kopierenden Dateigenerationsgruppe an.
Eine einzelne Datei oder Dateigeneration lässt sich nur dann in eine Dateigenerationsgruppe kopieren, wenn folgende Bedingung erfüllt ist:
Die Datei oder Dateigeneration muss den gleichen CODED-CHARACTER-SET besitzen wie die Dateigenerationsgruppe.
Dateien auf Privatplatten
Besitzt eine Datei auf privater Platte nur einen Eintrag im Systemkatalog, aber keinen im F1-Kennsatz, wird der Katalogeintrag gelöscht. Ist diese Datei die Eingabedatei, wird COPFILE zurückgewiesen.
Ein COPFILE-Aufruf für eine ISAM-Datei auf Privatplatten mit Index- und Datenteil auf verschiedenen Platten wird zurückgewiesen.
Banddateien
COPFILE arbeitet intern mit der Zugriffsmethode UPAM, die keine Folgebandverarbeitung zulässt. So können zwar mehrere Dateien auf ein Band kopiert werden (Makro FILE, Operand FSEQ). Es können jedoch keine Dateien kopiert werden, die sich über mehrere Bänder erstrecken.
K-Banddateien (BLKCTRL=PAMKEY) müssen Standardblockformat haben (BLKSIZE=(STD,n)), damit der COPFILE-Makroaufruf sie bearbeiten kann.
NK-Banddateien (BLKCTRL=DATA/NO) können von COPFILE verarbeitet werden, wenn ihr BLKSIZE-Wert ein Vielfaches von 2048 Byte beträgt.
Werden NK-Dateien auf Band kopiert, erlischt die BLKCTRL-Information, wenn der Katalogeintrag gelöscht wird. Soll die Datei wieder zurückkopiert werden, muss dem COPFILE ein FILE-Aufruf mit den Operanden LINK und STATE=FOREIGN vorausgehen. Im FILE-Aufruf muss der Anwender den Operanden BLKCTRL richtig versorgen, d.h. dem tatsächlichen Dateiformat entsprechend NO oder DATA angeben.
Wird eine K-Datei (BLKCTRL=PAMKEY) auf diese Weise – versehentlich – als NK-Datei (BLKCTRL=DATA) kopiert, ist die entstehende Plattendatei nicht lesbar, da die ersten 16 Byte eines jeden logischen Blocks, die bei BLKCTRL=PAMKEY Daten enthalten, mit Verwaltungsinformationen überschrieben werden.
Fremddateien auf Band: Soll eine Banddatei kopiert werden, die nicht katalogisiert ist, muss vor dem Kopieren ein TFT-Eintrag mit dem für COPFILE gültigen Dateikettungsnamen erstellt werden, um die Dateimerkmale festzulegen (siehe auch unter „Dateikettungsnamen“):
FILE pfadname1,LINK=DMCOPY11,STATE=FOREIGN,BLKCTRL=...
Dateikettungsnamen
COPFILE arbeitet intern mit den Dateikettungsnamen DMCOPY11 (für die Originaldatei pfadname1) und DMCOPY22 (für die Zieldatei pfadname2). Nach Abschluss der Verarbeitung werden die Dateikettungsnamen implizit wieder freigegeben (impliziter REL-Makro).
Von der Möglichkeit, Original- und Zieldatei über einen FILE-Aufruf mit Dateikettungsnamen der COPFILE-Verarbeitung zuzuweisen, kann z.B. Gebrauch gemacht werden, um beim Kopieren die Blockkontrolleigenschaft der Datei zu verändern: Die Angabe des BLKCTRL-Operanden im FILE-Aufruf in Verbindung mit BLKCTRL=*IGNORE/*CHECK im COPFILE-Aufruf gestattet es nämlich, in bestimmten Fällen unterschiedliche BLKCTRL-Eigenschaften für Original- und Zieldatei beim Kopieren zu vereinbaren (siehe Beschreibung des Operanden BLKCTRL, "COPFILE - Datei kopieren").
Im Zusammenhang mit Wildcards im Dateinamen wird ein existierender TFT-Eintrag (DMCOPY11/DMCOPY22) nur beim Kopieren der ersten zu bearbeitenden Datei wirksam.
Fern-Dateizugriff
(siehe auch Handbuch „RFA“ [6])
Das Kopieren von Fernsystem zu Fernsystem mit Eingabe und Ausgabe auf verschiedenen Systemen wird durch eine übergeordnete Ausführungsroutine unterstützt. Das lokale System dient hierbei nur als Zwischenstation beim Datentransfer. Vor dem Kopieren muss für beide Fernsysteme das Kommando SET-RFA-CONNECTION abgesetzt werden.
Wird eine Ferndatei mit dem Operanden PROTECT=*SAME auf eine lokale Datei kopiert, werden die Kennwörter nicht übernommen.
SM-Pubsets
Existiert die Zieldatei noch nicht, wird versucht, anhand der Eigenschaften der Quelldatei für die Volume-Set-Auswahl die Zieldatei auf einen geeigneten Volume-Set (Performance, Verfügbarkeit) anzulegen.
Dateiverschlüsselung
Zum Kopieren einer verschlüsselten Datei ist im Normalfall kein Crypto-Kennwort notwendig. COPFILE überträgt den Dateiinhalt einer verschlüsselten Datei, ohne die Datei zu entschlüsseln, und die Zieldatei erhält die gleichen Verschlüsselungsmerkmale wie die Ausgangsdatei, insbesondere das gleiche Crypto-Kennwort.
Ausnahmen sind Kopiervorgänge, die ein Entschlüsseln der Datei erfordern:
Eine verschlüsselte Datei soll auf Band oder Privatplatte kopiert werden.
Eine verschlüsselte Datei soll auf eine Dateigeneration kopiert werden.
Über den TFT-Eintrag DMCOPY11 bzw. DMCOPY22 wurde Shared Update vereinbart.
Format
Operation | Operanden |
|
|
Operandenbeschreibung
BLKCTRL
gibt an, ob sich die Zieldatei (bzw. der TFT-Eintrag DMCOPY22) hinsichtlich der BLKCTRL-Eigenschaft von der Quelldatei pfadname1 unterscheiden darf.
TFT-Eintrag bzw. Zieldatei (bei Nulloperanden in der TFT) müssen die gleiche BLKCTRL-Eigenschaft besitzen wie die Quelldatei.
Voreinstellung: | pfadname1 und der TFT-Eintrag für DMCOPY22 müssen die gleiche BLKCTRL-Eigenschaft aufweisen. |
= *IGNORE
Auch wenn die BLKCTRL-Attribute von pfadname1 und der TFT-Eintrag für DMCOPY22 nicht übereinstimmen, ist in folgenden Fällen ein Kopieren von pfadname1 auf pfadname2 möglich:
BLKCTRL-Attribut der Datei pfadname 1 | BLKCTRL-Attribut der Datei pfadname 2 |
PAMKEY | DATA (nur bei Plattendatei) |
PAMKEY | NO |
DATA (nur bei Plattendatei) | PAMKEY |
NO | PAMKEY |
Hinweis
Es liegt in der Verantwortung des Anwenders, Datenverluste beim Kopiervorgang auszuschließen. Solche Datenverluste können beim Kopieren einer Datei mit BLKCTRL= PAMKEY in eine Datei mit BLKCTRL=DATA oder NO auftreten: In beiden Fällen gehen die Informationen im Benutzerteil des PAM-Schlüssels verloren; hat die Zieldatei das Attribut BLKCTRL=DATA, werden zudem die ersten 12 Byte jedes logischen Blocks (bei ISAM-Dateien die ersten 16 Byte) mit dem Blockkontrollfeld überschrieben.
= *CHECK
Auch wenn die BLKCTRL-Attribute von pfadname1 und der TFT-Eintrag für DMCOPY22 nicht übereinstimmen, ist in den Fällen ein Kopieren von pfadname1 auf pfadname2 möglich, in denen keine Anwenderinformationen im Benutzerteil des PAM-Schlüssels verloren gehen. Wenn der Benutzerteil des PAM-Schlüssels keine Anwenderinformationen enthält (dies wird hier geprüft), kann bei folgenden BLKCTRL-Attributen pfadname1 auf pfadname2 kopiert werden, andernfalls wird das Kommando zurückgewiesen.
BLKCTRL-Attribut der Datei pfadname 1 | BLKCTRL-Attribut der Datei pfadname 2 |
PAMKEY | DATA (nur bei Plattendatei) |
PAMKEY | NO |
CHDATE
Gibt an, ob die Zieldatei das gleiche Änderungsdatum (CHANGE-DATE) erhält wie die Quelldatei.
= *STD
Nur für PROTECT=*STD oder *SAME:
Das Änderungsdatum der Zieldatei wird aktualisiert.
Die Angabe PROTECT=*SAME-AND-CHANGE-DATE wird noch kompatibel unterstützt und bewirkt, dass das Änderungsdatum der Quelldatei auf die Zieldatei übertragen wird.
= *SAME
Das Änderungsdatum der Quelldatei wird auf die Zieldatei übertragen. Die Angabe CHDATE=*SAME gilt auch in folgenden Fällen:
Die Zieldatei liegt unter einer fremden Benutzerkennung.
Die Zieldatei ist eine Dateigeneration.
CHECK
Nur für Wildcard-Angaben
Legt fest, unter welchen Bedingungen im Dialogbetrieb ein Anwenderdialog gestartet werden soll, wenn durch die Angabe von Wildcards mehrere Dateinamen selektiert werden.
Wird der Dialog gestartet, kann der Benutzer entscheiden, ob die Verarbeitung für die angezeigte(n) Datei(en) ausgeführt werden soll oder nicht. Er kann sich außerdem einen Hilfetext zu den Antwortmöglichkeiten ausgeben lassen sowie bei der Fortsetzung der Verarbeitung einen neuen Wert für CHECK und/oder LIST festlegen.
Im Stapelbetrieb gilt immer der Wert 'NO'.
Ohne Wildcards/Teilqualifikation in pfadname1 ist der Operand wirkungslos.
= *MULTIPLE
Ein Kontrolldialog wird nur gestartet, wenn mehrere Dateien ausgewählt sind. Sind Wildcards in der Katalog und/oder Benutzerkennung enthalten, dann wird für jeden Katalog und/oder jede Benutzerkennung ein Kontrolldialog durchgeführt. Implizit gilt auch CHECK=*ERROR.
= *NO
Alle ausgewählten Dateien werden ohne Kontrolldialog, d.h. ohne Eingriffsmöglichkeit des Benutzers verarbeitet.
= *ERROR
Ein Fehler-Kontrolldialog wird gestartet, wenn bei der Verarbeitung eines ausgewählten Dateinamens ein Fehler auftritt. Ein Dateimenge-Kontrolldialog wird gestartet, wenn die Auswahlangabe mehr Dateien selektiert, als Speicherplatz für deren Verarbeitung verfügbar ist. Bei allen CHECK-Angaben not equal *NO gilt implizit auch immer CHECK=*ERROR!
= *SINGLE
Für jeden ausgewählten Dateinamen wird ein Kontrolldialog durchgeführt. Implizit gilt auch CHECK=*ERROR.
= *CATALOG
Der Anwender muss in einem Kontrolldialog für jeden Katalog entscheiden, ob die darauf ausgewählten Dateien verarbeitet werden sollen.
Implizit gilt auch CHECK=*ERROR.
= *USERID
Nur für Systemverwalter:
Der Systemverwalter muss in einem Kontrolldialog für jede Benutzerkennung auf jedem Katalog entscheiden, ob die ausgewählten Dateien verarbeitet werden sollen.
Implizit gilt auch CHECK=*ERROR.
IGNORE
Nur für Systemverwalter:
Möglichkeit für den Systemverwalter, den Dateischutz für Quell- und/oder Zieldatei zu umgehen.
Die Angabe ist nicht wirksam für Dateien, die auf einem Fernrechner (RFA) liegen. Wenn für eine Datei unter fremder Benutzerkennung eine TSOS-Einschränkung vorliegt, wird das Schutzattribut ACCESS nicht ignoriert.
= *SOURCE
Die Schutzattribute READ-/EXEC-PASSWORD der Quelldatei werden beim Kopieren nicht beachtet. (Gilt auch für BASIC-ACL- bzw. GUARDS-Schutz.)
= *TARGET
Die Schutzattribute ACCESS/EXPIRATION-DATE sowie READ-/WRITE-/EXEC-PASSWORD der Zieldatei werden beim Kopieren nicht beachtet.
(Gilt auch für BASIC-ACL- bzw. GUARDS-Schutz.)
LIST
Bestimmt, ob ein Protokoll für alle mit Wildcards ausgewählten Dateinamen nach deren Abarbeitung nach SYSOUT geschrieben werden soll.
Ohne Wildcards/Teilqualifikation in pfadname1 ist der Operand wirkungslos.
= *NO
Es soll nicht protokolliert werden.
= *SYSOUT
Jeder abgearbeitete Dateiname und eventuelle Fehler werden in einer Meldung protokolliert.
= *ERRORS_TO_SYSOUT
Nur Dateinamen, deren Abarbeitung zu Fehlern führte, werden in einer Meldung protokolliert.
MACID
wird nur in Verbindung mit MF=C ausgewertet und legt jeweils das zweite bis einschließlich vierte Zeichen der Feldnamen und Equates fest, die bei der Makroauflösung im Datenbereich generiert werden.
Voreinstellung: MACID = MAC
= macid
„macid“ ist eine drei Zeichen lange Zeichenfolge, die jeweils das zweite bis vierte Zeichen der generierten Feldnamen und Equates festlegt.
MF
Die Formen des MF-Operanden sind detailliert im Anhang ("Typen von Makroaufrufen") beschrieben.
PARAM
bezeichnet die Adresse der Operandenliste und wird nur in Verbindung mit MF=E ausgewertet (siehe auch "Typen von Makroaufrufen").
= adr
adr ist die symbolische Adresse (der Name) der Operandenliste.
= (r)
r ist die Nummer des Registers, das die Adresse der Operandenliste enthält. Vor dem Makroaufruf muss das Register mit diesem Adresswert geladen werden.
PATHNM1
bezeichnet den Pfadnamen der Originaldatei.
= <c-string 1..80: filename 1..54 with-wild(80) without-gen>
Pfadname1 (Angabe in Hochkommas)
= <var: char: 80: filename 1..54 with-wild(80) without-gen>
Name einer Variablen, die den Pfadnamen1 enthält
Pfadname1 bedeutet [:catid1:][$userid1.]dateiname1
catid 1
Katalogkennung der Originaldatei;
Default-Catid: die der Benutzerkennung zugeordnete Katalogkennung
userid 1
Benutzerkennung der Originaldatei;
Default-Userid: die Benutzerkennung des SET-LOGON-PARAMETERS- bzw. LOGON-Kommandos
dateiname 1
Name der Originaldatei, -dateigeneration oder -dateigenerationsgruppe
Für die Originaldatei muss Leserecht vorliegen.
Ist pfadname1 eine Dateigenerationsgruppe, muss pfadname2 ebenfalls eine Dateigenerationsgruppe sein.
(Ausnahme: die FGG pfadname1 besteht aus SAM-Dateigenerationen mit gleichen Eigenschaften bzgl. Satzformat, Satz- und Blocklänge sowie Blockkontroll-Information. In diesem Fall kann in eine einzelne Datei oder in eine Dateigeneration kopiert werden. Diese Dateigeneration darf nicht zu der Dateigenerationsgruppe gehören, die kopiert werden soll.)
Wildcard-Angabe (Musterzeichen)
Auswahlangabe für die Dateien, die kopiert werden sollen. Der nichtprivilegierte Benutzer darf Musterzeichen nur in der Catid und im Dateinamen verwenden.
PATHNM2
bezeichnet den Pfadnamen der Ausgabe-/Zieldatei.
= <c-string 1..80: filename 1..54 with-wild(80) without-gen>
Pfadname2 (Angabe in Hochkommas)
= <var: char: 80: filename 1..54 with-wild(80) without-gen>
Name einer Variablen, die den Pfadnamen2 enthält
Pfadname2 bedeutet [:catid2:][$userid2.]dateiname2
catid 2
Katalogkennung der Ausgabedatei; Default-Catid: die der Benutzerkennung zugeordnete Katalogkennung
userid 2
Benutzerkennung der Ausgabedatei; Default-Userid: die Benutzerkennung des SET-LOGON-PARAMETERS- bzw. LOGON-Kommandos
dateiname 2
Name der Ausgabedatei/-dateigeneration/-dateigenerationsgruppe
pfadname1 und pfadname2 dürfen nicht identisch sein.
Ist pfadname2 noch nicht katalogisiert, darf nur die eigene Benutzerkennung angegeben werden, d.h. die des Kommandos SET-LOGON-PARAMETERS/LOGON oder eine Benutzerkennung, für die der Benutzer Mit-Eigentümer ist.
Ist pfadname2 katalogisiert, muss Schreibzugriff möglich sein.
Der COPFILE-Makroaufruf wird zurückgewiesen, wenn pfadname2 nur gelesen werden darf (z.B. ACCESS=READ oder EXDATE > Tagesdatum) oder wenn für die Plattendatei pfadname2 die Sekundärzuweisung 0 ist und die Primärzuweisung nicht ausreicht.
Ist pfadname2 unter einer fremden Benutzerkennung katalogisiert, muss außerdem die Benutzerkennung angegeben werden.
Ist pfadname2 eine Dateigenerationsgruppe, muss auch pfadname1 eine Dateigenerationsgruppe sein.
Wildcard-Angabe (Musterzeichen)
Konstruktionsangabe für die Dateien, in die auf Grund der Auswahlangabe (pfadname1) kopiert werden sollen.
SM-Pubsets
Ist die Ausgabe-/Zieldatei noch nicht katalogisiert, wird anhand der Attribute der Originaldatei versucht, diese auf einem geeigneten Volume-Set anzulegen.
PREFIX
wird nur in Verbindung mit MF=C oder MF=D ausgewertet und legt das jeweils erste Zeichen der Feldnamen und Equates fest, die bei der Makroauflösung im Datenbereich generiert werden.
Voreinstellung: PREFIX = D
= pre
„pre“ ist ein ein Zeichen langes Präfix, mit dem die vom Assembler generierten Feldnamen und Equates beginnen sollen.
PROTECT
Gibt an, ob die Kopie pfadname2 die gleichen Dateisicherungs- und Dateischutzmerkmale erhält wie pfadname1.
Die Verschlüsselungsmerkmale werden beim Kopieren in die Zieldatei übernommen, soweit möglich und erlaubt, unabhängig von den PROTECT-Angaben (siehe auch „Dateiverschlüsselung").
= *STD
Ist pfadname2 noch nicht katalogisiert, wird die neue Datei mit den Standardmerkmalen eingerichtet (vgl. Voreinstellungen der Operanden im CATAL-Makroaufruf, "CATAL - Katalogeintrag bearbeiten", z.B. SHARE=NO, ACCESS=WRITE für Plattendateien usw.).
= *SAME
Die Kopie pfadname2 erhält die gleichen Dateisicherungs- und Dateischutzmerkmale wie pfadname1 (bzgl. ACCESS, BACKUP, DELDATE, DESTROY, LARGE, MANCLAS, MIGRATE (FORBIDDEN wird auf INHIBIT gesetzt), NUM-OF-BACKUP-VERS, OPNBACK, RETPD, SHARE sowie die gleichen Kennwörter). Nicht übertragen werden: AUDIT, AVAIL, PREFORM, S0MIGR, STOCLAS, VOLSET und WORKFIL.
Die Angabe PROTECT=*SAME wird ignoriert, wenn pfadname2 unter einer fremden Benutzerkennung katalogisiert oder eine Dateigeneration ist (Dateieigenschaften im Gruppeneintrag festgelegt!).
Wenn eine temporäre in eine permanente Datei kopiert wird, wird bei der Angabe von PROTECT=*SAME lediglich die Eigenschaft BACKUP=E übernommen. Die neue Datei wird bei ARCHIVE-Sicherungsläufen nicht berücksichtigt. Der BACKUP-Wert muss mit CATAL verändert werden, wenn die Datei mit ARCHIVE automatisch gesichert werden soll.
Wenn pfadname1 durch einen Eintrag über BASIC-ACL (siehe Handbuch „Einführung in das DVS“ [1]) oder GUARDS geschützt ist, so gilt beim Kopieren mit PROTECT= *SAME:
Wird die Zieldatei auf einer gemeinschaftlichen Platte angelegt, so werden die Zugriffsrechte von BASIC-ACL oder GUARDS kopiert.
Wird die Zieldatei pfadname2 auf einer privaten Platte angelegt und ist pfadname1 über BASIC-ACL geschützt, so werden für pfadname2 die Schutzmerkmale der BASIC-ACL übernommen. Ist für pfadname1 ein GUARDS-Eintrag angelegt, so wird pfadname2 mit den Standard-Schutzattributen SHARE=NO und ACCESS= WRITE versehen.
Wird die Zieldatei pfadname2 auf einem Magnetband angelegt, so wird sie mit den Standard-Schutzattributen SHARE=YES und ACCESS=WRITE versehen, unabhängig von den Schutzmerkmalen, die über BASIC-ACL oder GUARDS für pfadname1 vereinbart wurden.
Ist die Quelldatei pfadname1 nicht unter der Benutzerkennung katalogisiert, in der COPFILE aufgerufen wird, so wird pfadname2 – unabhängig von den Schutzmerkmalen, die über BASIC-ACL oder GUARDS für pfadname1 vereinbart wurden – mit Standard-Schutzattributen versehen; das sind USER-ACCESS=OWNER-ONLY und ACCESS=WRITE bei einer Plattendatei, USER-ACCESS=ALL-USERS und ACCESS=WRITE bei einer Banddatei.
Beim Kopieren auf Band kann die Schutzfrist (EXDATE) nur Werte bis zu einer Differenz von 32767 aufnehmen (für größere Werte wird der Maximalwert angenommen).
= *SAME-AND-CHANGE-DATE
Die Angabe wirkt wie PROTECT=*SAME. Zusätzlich wird das Änderungsdatum (CHANGE-DATE) der Quelldatei auf die Zieldatei übertragen.
Die Angabe PROTECT=*SAME-AND-CHANGE-DATE wird nur noch kompatibel unterstützt. Um das Änderungsdatum der Quelldatei zu übertragen sollte der Operand CHDATE=*SAME verwendet werden.
REPLACE
Der Anwender kann steuern, ob eine bereits vorhandene Ausgabedatei pfadname2 überschrieben wird.
Ist pfadname2 eine Banddatei oder leer, wird der Operand ignoriert, die „alte“ Datei wird ohne Meldung überschrieben.
= *YES
pfadname2 wird ohne Meldung überschrieben.
= *NO
pfadname2 wird nicht überschrieben. Der Aufruf wird mit dem Fehlercode X'051A' abgewiesen.
Returncodes
Der Fehlercode wird nur noch im Standardheader und nicht mehr wie beim COPY-Makroaufruf im Mehrzweckregister 15 zurückgeliefert. Ist der Parameterbereich nicht zugreifbar oder kürzer als die Länge des Standard-Headers, oder trat ein Ausrichtungsfehler auf, dann wird eine Programm-Terminierung mit STXIT-Anschluss eingeleitet. Die Fehlercodes sind in den Makros DMAIDEM/DCOIDEM beschrieben.
Standardheader: ccbbaaaa
Über die Ausführung des Makros COPFILE wird im Standardheader folgender Returncode übergeben (cc = SUBCODE2, bb = SUBCODE1, aaaa = MAINCODE):
X'cc' | X'bb' | X'aaaa' | Erläuterung |
X'00' | X'0000' | Kein Fehler | |
X'01' | X'00' | X'0000' | Nur im Zusammenhang mit Kontrolldialogen: Der Auftrag wurde im Dialog ganz oder teilweise zurückgezogen, d.h. mindestens ein Kontrolldialog wurde mit *NO beantwortet |
X'02' | X'00' | X'0000' | Nur im Zusammenhang mit CHECK!=NO : Es ist zwar ein Fehler aufgetreten, aber in einem Fehlerdialog wurde die Fortsetzung der Funktion gefordert |
X'40' | X'0501' | Angeforderter Katalog nicht verfügbar | |
X'82' | X'0502' | Angeforderter Katalog im Ruhezustand | |
X'40' | X'0503' | Falsche Information im MRSCAT | |
X'82' | X'0504' | Fehler im Katalogverwaltungssystem | |
X'40' | X'0505' | Fehler bei der Rechner-Kommunikation (MRS) | |
X'80' | X'0506' | Operation wegen Masterwechsel abgebrochen | |
X'40' | X'0510' | Fehler beim Aufruf einer internen Funktion | |
X'40' | X'0512' | Angeforderter Katalog unbekannt | |
X'40' | X'051A' | Datei existiert bereits | |
X'40' | X'051B' | Benutzerkennung im angegebenen Pubset unbekannt | |
X'40' | X'051C' | Kein Zugriffsrecht auf angegebenen Pubset | |
X'40' | X'051D' | LOGON-Passwort auf angegebenem Pubset anders | |
X'20' | X'0530' | Fehler bei Speicherplatz-Anforderung | |
X'20' | X'0531' | Unerwarteter Fehler beim Katalogzugriff | |
X'40' | X'0533' | Angegebene Datei nicht gefunden | |
X'82' | X'0534' | Privater Datenträger kann nicht zugewiesen werden | |
X'40' | X'0535' | Keine Zugriffsberechtigung auf den Katalogeintrag der Datei (nur im Zusammenhang mit der CCS- oder NETCSS-Vergabe auf fremder Benutzerkennung) | |
X'20' | X'053B' | Systemfehler beim Dateizugriff | |
X'82' | X'053C' | Katalog-Datei des Pubsets ist voll | |
X'40' | X'053D' | Katalog oder F1-Etikett-Block ist zerstört | |
X'40' | X'053E' | Datei auf privatem Datenträger bereits katalogisiert | |
X'82' | X'053F' | Datei ist von einer anderen Task reserviert | |
X'01' | X'0576' | Widersprüchliche Operandenkombination oder reservierte Felder des Parameterbereiches verwendet | |
X'20' | X'0577' | Interner Fehler beim Zugriff auf die Auftragsumgebung | |
X'82' | X'0594' | Nicht genug virtueller Speicher verfügbar. Dieser Returncode kann insbesondere auch im Zusammenhang mit einer Auswahlangabe (Wildcard) auftreten, wenn zu viele Dateien selektiert werden | |
X'01' | X'0599' | Operand wird in der RFA-BS-Version nicht unterstützt | |
X'01' | X'05A7' | Erster Dateiname fehlerhaft | |
X'01' | X'05A9' | Zweiter Dateiname fehlerhaft | |
X'20' | X'05C7' | Interner Fehler im DVS | |
X'01' | X'05EE' | Dateiname zu lang | |
X'01' | X'05F0' | Fremde Benutzerkennung für Datei2 nicht erlaubt | |
X'01' | X'05F1' | Kopieren in die angegebene Datei nicht möglich | |
X'01' | X'05F2' | Unzulässige Angabe von *DUMMY | |
X'40' | X'05F3' | Erste oder zweite Datei geschützt | |
X'01' | X'05F4' | Erster und zweiter Dateiname sind gleich | |
X'20' | X'05F5' | Einige Blöcke konnten nicht kopiert werden | |
X'01' | X'05F6' | Datei nicht kopierbar | |
X'40' | X'05F9' | Unvereinbare Eigenschaften von Quell- und Zieldatei | |
X'40' | X'05FC' | Angegebene Benutzerkennung nicht im Home-Pubset | |
X'40' | X'0610' | Mindestens für einen der ausgewählten Dateinamen lieferte die Funktionsausführung einen Returncode | |
X'01' | X'0611' | Fehlerhafte Konstruktionsangabe (Operand PATHNM2 im Zusammenhang mit Wildcards) | |
X'40' | X'0666' | Die Datei ist durch GUARDS schreibgeschützt | |
X'40' | X'0698' | Dateigenerationsgruppen haben nicht die gleichen Attribute | |
X'40' | X'06B5' | Datei ist nicht ordnungsgemäß geschlossen | |
X'40' | X'06B6' | Attribute der Datei passen nicht zur Dateigenerationsgruppe | |
X'40' | X'06C4' | Dateigenerationsgruppe noch nicht katalogisiert | |
X'01' | X'06C7' | Ungültige Generationsnummer angegeben | |
X'40' | X'06CC' | nur bei Auswahlangabe (Wildcard): keine Datei entspricht der Auswahlangabe | |
X'01' | X'06D7' | Generationsgruppe kann nicht in einzelne Generation dieser Gruppe kopiert werden | |
X'01' | X'06D8' | Generationen der angegebenen Gruppe haben unterschiedliche Dateimerkmale | |
X'01' | X'06DE' | Datei oder Generation kann nicht in eine Gruppe kopiert werden | |
X'01' | X'06FD' | Parameterbereich ungültig oder nicht zugreifbar | |
X'40' | X'06FF' | BCAM-Verbindung abgebrochen | |
X'01' | X'FFFF' | Falsche Funktionsnummer im Parameterbereichs-Header | |
X'03' | X'FFFF' | Falsche Versionsnummer im Parameterbereichs-Header |