+-----------------+-------------------------------+-------------+ | SOFTWARE- | | | | DOKUMENTATION | Dienstprogramme | MOS | +-----------------+ Anleitung fuer den Bediener +-------------+ | 11/87 | | OMOS 2.0 | +-----------------+-------------------------------+-------------+ Programmtechnische Anleitung fuer den Bediener Beschreibung Teil 4 Dienstprogramme MGS K 1630 VEB Robotron-Vertrieb Berlin Dok.-Nr.: C 8065-0547-1M2031 Die vorliegende Systemunterlagendokumentation, Anleitung fuer den Bediener, Teil 4, Dienstprogramme, entspricht dem Stand von 11/87. Nachdruck, jegliche Vervielfaeltigung oder Auszuege daraus sind unzulaessig. Die Ausarbeitung erfolgte durch ein Kollektiv des VEB Robotron-Vertrieb Berlin Im Interesse einer staendigen Weiterentwicklung werden alle Leser gebeten, Hinweise zur Verbesserung dem Herausgeber mitzuteilen. Herausgeber: VEB Robotron-Vertrieb Berlin 1086 Berlin Postfach 1235 (C) Kombinat robotron 1987 Kurzreferat Im vorliegenden Teil 4 der Anleitung fuer den Bediener werden die Dienstprogramme des OMOS 1630 (Version 2.0) beschrieben. Die einzelnen Programme werden im wesentlichen bezueglich ihrer Kom- mandos und Fehlerreaktionen dargestellt. Die Anleitung fuer den Bediener ist damit zur Vorbereitung und Durchfuehrung der Arbeit am Rechner bestimmt. Die beschriebenen Programme umfassen Datei- Transfer, Aufbereiten von Programmen, Arbeit mit Bibliotheken, Taskbilden und Testen von Tasks sowie das Pruefen und Sichern von Plattenspeicher-Inhalten. Eine Kurzbeschreibung der Programme ist in den jeweiligen Vorbemerkungen enthalten. Zur Beschreibung der Kommandosyntax wird im allgemeinen eine modifizierte Backus- Naur-Notation benutzt. Fuer Dateispezifikationen (filespecification) ist die in der Anleitung fuer den Bediener, Teil 2 gegebene Definition mit einer Einschraenkung benutzt worden. Die fuer die Steuerung innerhalb der Dienstprogramme wichtigen Schalter (switch) sind hier geson- dert behandelt. Fuer Ein- bzw. Ausgabedateien ist die englische Bezeichnung "infile" bzw. "outfile" benutzt. Inhaltsverzeichnis ------------------ Seite 1. Lochbandeingabeprogramm PTI 1630(OMEX) 19 1.1. Vorbemerkungen 19 1.2. Kommandoaufbau 19 1.3. Schalter 20 1.3.1. Behandlung von Kleinbuchstaben (/UC) 20 1.3.2. Ueberlesen von Saetzen, Festlegung des Endekennzeichens (/IR) 20 1.3.3. Ausblenden von Zeichen (/TX) 21 1.3.4. Festlegen der maximalen Satzlaenge (/SH) 21 1.3.5. Ausgabe der Identifikation (/ID) 21 1.4. Fehlernachrichten 21 2. Dateiumwandlungsprogramm FLX 1630(OMEX) 23 2.1. Vorbemerkungen 23 2.2. Kommandosyntax 24 2.2.1. Allgemeiner Kommandoaufbau 24 2.2.2. Standardannahmen 24 2.2.3. Sternvereinbarungen 26 2.3. Schalter 27 2.3.1. Datentraegerformat-Schalter 27 2.3.2. Uebertragungsmodus-Schalter 27 2.3.3. Schalter zur Steuerung und Kontrolle 29 2.4. Anwendung 30 2.4.1. Lochbandunterstuetzung 30 2.4.2. Kassettenmagnetband-Unterstuetzung 31 2.4.3. 1/2"-Magnetband-Unterstuetzung 32 2.4.3.1. Datentraegerformat FM16-M 32 2.4.3.2. Datentraegerformat FD16-M 33 2.4.4. Initialisieren von Datentraegern 34 2.4.4.1. Kassettenmagnetbaender und FD16-Datentraeger 34 2.4.4.2. FL16-Datentraeger 34 2.4.5. Erstellen von Verzeichnislisten 35 2.4.5.1. Kassettenmagnetbaender und FD16-Datentraeger 35 2.4.5.2. FL16-Datentraeger 35 2.4.6. Loeschen von Dateien 36 2.5. Fehlermitteilungen 36 3. Dateiaustauschprogramm FEX 1630(OMEX) 41 3.1. Vorbemerkungen 41 3.2. Kommandoformat 41 3.2.1. Allgemeiner Kommandoaufbau 41 3.2.2. Standardannahmen 41 3.2.2.1. Ausgabe auf FM16-Geraet 42 3.2.2.2. Eingabe von FM16-Geraet 42 3.2.2.3. FE16- oder FQ16-Eingabenamenkonvention 43 3.2.2.4. FE16- oder FQ16-Ausgabenamenkonvention 44 3.3. Schalter 44 3.3.1. Transfer-Schalter 45 3.3.1.1. Datentraegerformat-Schalter (/ES, /QU) 45 3.3.1.2. Satzformat-Schalter (/RK, /FM) 48 3.3.1.3. Datenformat-Schalter (/FB, /FI, /FD) 54 3.3.2. Steuer- und Kontrollschalter 56 3.3.2.1. Listen-Schalter (/LI) 56 3.3.2.2. Eingliederungs-Schalter (/MO) 57 3.3.2.3. Initialisierungs-Schalter (/ZE) 57 3 Seite 3.3.2.4. Geraetekontroll-Schalter (/CD) 58 3.3.2.5. Identifikations-Schalter (/ID) 59 3.3.2.6. Standardzuweisungs-Schalter (/DF) 59 3.3.2.7. Informations-Schalter (/HE) 60 3.3.2.8. Uebertragungsabbild-Schalter (/PI) 61 3.4. Transfer-Organisation 61 3.4.1. Zuordnung der Transferpuffer 61 3.4.2. Anschlusseite FE16 und FQ16 62 3.4.3. Anschlusseite FM16 63 3.5. Temporaeres Verzeichnis 63 3.6. Verarbeitung von Mehrdatentraeger-Dateien 64 3.7. Kennsatzverarbeitung 65 3.8. Fehlermitteilungen 66 4. Datei-Transfer-Programm PIP 1630(OMEX) 69 4.1. Vorbemerkungen 69 4.2. Kommandoaufbau 69 4.2.1. Allgemeines Format 69 4.2.2. Schalter und Subschalter 69 4.2.3. Standards fuer Teile der Dateispezifikation 70 4.2.4. Die Stern- und Prozentvereinbarung als Teil der Dateispezifikation 70 4.3. Beschreibung der Kommandos 72 4.3.1. Umspeichern von Dateien 72 4.3.2. Kommandos zur Dateiverarbeitung 74 4.3.3. Beschreibung der Kommandos zur Dateiverarbeitung 76 4.3.3.1. /AP - Datei erweitern 76 4.3.3.2. /BS:n - Blocklaenge auf Magnetband 77 4.3.3.3. /CD - Erstellungsdatumschalter 77 4.3.3.4. /DD - Standarddatumschalter 77 4.3.3.5. /DE - Loeschen von Dateien 78 4.3.3.6. /DF - Wechseln des Standardgeraetes und des Standard-UFD 79 4.3.3.7. /EN - Eintragen eines Synonyms fuer eine Datei in ein UFD 79 4.3.3.8. /EOF - Dateiendeschalter 80 4.3.3.9. /EX - Dateiausschlussschalter 80 4.3.3.10. /FI - Dateizugriff ueber Dateiidentifikations- nummer 81 4.3.3.11. /FR - Freie Bloecke auf dem Datentraeger 81 4.3.3.12. /ID - Ausgabe der Version von PIP 81 4.3.3.13. /LI - Ausgabe von Dateiverzeichnissen 82 4.3.3.14. /ME - Fuegen von Dateien 83 4.3.3.15. /NM - Fehlernachrichtenunterdrueckung 83 4.3.3.16. /PR - Aendern der Zugriffsrechte fuer eine Datei 84 4.3.3.17. /PU - Loeschen alter Versionen von Dateien 85 4.3.3.18. /RE - Umbenennen von Dateien 85 4.3.3.19. /RM - Loeschen einer Dateispezifikation im Dateiverzeichniss 86 4.3.3.20. /RW - Zurueckspulen eines Magnetbandes 86 4.3.3.21. /SB - Ueberschreiben der Blockgrenzen 87 4.3.3.22. /SD - Selektives Loeschen von Dateien 87 4.3.3.23. /SP - Dateiausgabe auf dem Zeilendrucker 88 4.3.3.24. /SR - Gemeinsames Lesen einer Datei 88 4.3.3.25. /TD - Dateisuche entsprechend Tagesdatum 89 4.3.3.26. /TR - Freigabe nicht belegter Bloecke von Dateien 89 4 Seite 4.3.3.27. /UF - Erstellt das UFD fuer die Ausgabedatei 89 4.3.3.28. /UN - Ermoeglichen des Zugriffs zu einer ge- sperrten Datei 90 4.3.3.29. /UP - Ueberschreiben einer bereits existierenden Datei 90 4.4. Fehlermitteilungen 93 5. Editor EDI 1630(OMEX) 99 5.1. Vorbemerkungen 99 5.2. Benutzung der Geraete, Datenfluesse und E/A-Restriktionen 100 5.3. Arbeitsweise des Editors, Grundbegriffe 102 5.3.1. Arbeit im Blockmodus 102 5.3.2. Arbeit im Zeile-fuer-Zeile-Modus 102 5.3.3. Seiten und Bloecke 103 5.3.4. Primaere und sekundaere Dateien 103 5.3.5. Arbeitsmodi 104 5.3.6. Vorprogrammierte Arbeitsweise 106 5.4. Kommandosyntax 107 5.5. Beschreibung der EDI-Kommandos 111 5.5.1. Kommandos zur Dateibenutzung 111 5.5.1.1. Eroeffnung der Arbeit von EDI 111 5.5.1.2. Abschluss der EDI-Arbeit 112 5.5.1.3. Oeffnen einer spezfizierten sekundaeren Eingabedatei 113 5.5.1.4. Schliessen einer sekundaeren Eingabedatei 114 5.5.1.5. Ausgabe von Zeilen auf eine spezifizierte Datei 114 5.5.1.6. Eingabe von Zeilen von einer spezifizierten Datei 114 5.5.1.7. Ausgabe von Zeilen bis Seitengrenze 114 5.5.2. Kommandos zur Ein- und Ausgabe von Bloecken und Seiten 115 5.5.2.1. Lesen eines neuen Blocks 115 5.5.2.2. Hinzulesen von Bloecken zum aktuellen Pufferinhalt 115 5.5.2.3. Einlesen einer Seite 116 5.5.2.4. Loeschen von Bloecken 116 5.5.2.5. Ausgabe und Loeschen des Blockpuffers 116 5.5.3. Positionierkommandos 116 5.5.3.1. Auf Dateianfang einstellen 116 5.5.3.2. Vor Pufferbeginn positionieren 117 5.5.3.3. Auf Pufferende positionieren 117 5.5.3.4. Zeilenweises Vor- bzw. Ruecksetzen 117 5.5.3.5. Aufsuchen einer Zeile 118 5.5.3.6. Zeile anhand Zeilenanfang aufsuchen 118 5.5.3.7. Suchen ueber Puffergrenze 118 5.5.3.8. Suchen ab Zeilenanfang ueber Puffergrenze 119 5.5.4. Kommandos zur Listenausgabe 119 5.5.4.1. Ausgabe einzelner Zeilen ueber Terminal 119 5.5.4.2. Ausgabe einzelner Zeilen ueber Terminal mit laufendem Zeilenzeiger 119 5.5.4.3. Listenausgabe des Blockpuffers 120 5.5.5. Kommandos zur zeichenweisen Korrektur 120 5.5.5.1. Ersetzen von Zeichen innerhalb einer Zeile 120 5.5.5.2. Anhaengen von Zeichen an eine Zeile 121 5.5.5.3. Suchen einer Zeile und Ersetzen von Zeichen 121 5.5.5.4. Mehrfaches Ersetzen von Zeichen innerhalb einer Zeile 121 5.5.5.5. Ersetzen von Zeichenketten im Puffer 122 5 Seite 5.5.6. Zeilenweise Verarbeitung 122 5.5.6.1. Loeschen von Zeilen 122 5.5.6.2. Loeschen und Drucken der aktuellen Zeile 122 5.5.6.3. Ueberschreiben von mehreren Zeilen 122 5.5.6.4. Einfuegen von Zeilen 123 5.5.6.5. Ueberschreiben der aktuellen Zeile 123 5.5.6.6. Einschub eines FORM-FEED 123 5.5.7. Steuerkommandos 123 5.5.7.1. Ausgabe bearbeiteter Zeilen ueber Terminal 123 5.5.7.2. Einstellen von Blockmodus und Zeile-fuer-Zeile-Modus 124 5.5.7.3. Auswahlkommando fuer die Arbeit mit sekundaeren Dateien 124 5.5.7.4. Kommandoverbindungszeichen und seine Aenderung 124 5.5.7.5. Unterdruecken der Ausgabe im Zeile-fuer-Zeile-Modus 125 5.5.7.6. Automatisches Tabulatorsetzen 125 5.5.7.7. Grosse und kleine Buchstaben 125 5.5.7.8. Spezifikation der maximalen Zeilenzahl im Blockpuffer 126 5.5.8. Arbeit mit Makros 126 5.5.8.1. Makrodefinition 126 5.5.8.2. Eingabe von Makrodefinitionen von einer Datei 127 5.5.8.3. Makroausfuehrung 127 5.6. Fehlermitteilungen und Fehlerbehandlung 127 5.6.1. Kommandofehler 127 5.6.2. Fehlermitteilungen bei Dateizugriffen 129 5.6.3. Fehlermitteilungen mit Neustart von EDI 130 5.6.4. Abbruchmitteilungen 131 6. Quelltexteingabe- und Korrekturprogramm SLP 1630(OMEX) 133 6.1. Vorbemerkung 133 6.2. Kommandosyntax 133 6.3. Arbeit mit SLP 135 6.3.1. Neubilden einer Quelldatei 135 6.3.2. Generieren einer numerierten Liste 136 6.3.3. Einfuegen von Zeilen in eine Datei 136 6.3.4. Loeschen von Zeilen einer Datei 138 6.3.5. Ersetzen von Zeilen einer Datei 138 6.3.6. Anwendung der Operatoren 139 6.3.7. Kontrolle der Ausgabefunktionen 140 6.3.7.1. Korrekturvermerk 141 6.3.7.2. Beschneiden des Kommentars 142 6.4. Fehlermitteilungen 142 7. Objektmodul-Korrekturprogramm PAT 1630(OMEX) 145 7.1. Vorbemerkungen 145 7.2. PAT-Korrekturgang 145 7.3. Kommandosyntax 146 7.4. Beispiel zur Anwendung 146 7.5. Mitteilungen an den Bediener 149 7.5.1. Identifikation 149 7.5.2. Pruefsumme 149 7.5.3. Fehlermitteilungen 150 6 Seite 8. Bibliothekar LBR 1630(OMEX) 152 8.1. Vorbemerkungen 152 8.2. Aufbau der Bibliotheksdatei 152 8.2.1. Aufteilung innerhalb der Bibliothek 152 8.2.2. Bibliothekskopf 153 8.2.3. Eintrittspunkttabelle (EPT) 155 8.2.4. Modulnamentabelle (MNT) 155 8.2.5. Modulkopf 156 8.3. Kommandosyntax 157 8.4. Standardannahmen fuer die benutzten Dateien 157 8.5. Schalter 158 8.5.1. Zusammenfassende Uebersicht 158 8.5.2. Verdichten (/CO) 160 8.5.3. Erzeugen (/CR) 161 8.5.4. Loeschen von Moduln (/DE) 162 8.5.5. Typfestlegung einer Bibliothek (/DF) 163 8.5.6. Loeschen globaler Symbole (/DG) 164 8.5.7. Eintrittspunktschalter (/EP) 165 8.5.8. Herausloesen von Moduln (/EX) 166 8.5.9. Einfuegen von Moduln (/IN) 167 8.5.10. Einfuegen von Moduln(/IN)fuer Universal- bibliotheken 168 8.5.11. Listenschalter (/LI, /LE, /FU) 169 8.5.12. Modulhaedermodifikation 170 8.5.13. Austauschen von Moduln (/RP) 171 8.5.14. Austauschen von Moduln (/RP)in Universal- bibliotheken 175 8.5.15. Spool-Schalter (/SP) 175 8.5.16. Auswahlsuch-Schalter (/SS) 176 8.5.17. Beseitigen nichtsignifikanter Zeichen aus Makromoduln im Quelltextformat (/SZ) 176 8.6. Kombinieren von Funktionen des Bibliothekars 177 8.7. Fehlerbehandlung 178 8.7.1. Fehlerarten 178 8.7.2. Fehlermitteilungen 179 9. Taskbilder TKB 1630(OMEX) 184 9.1. Vorbemerkungen 184 9.2. Kommandosyntax 185 9.2.1. Einzeilenformat 186 9.2.2. Mehrzeilenformat 186 9.2.3. Taskbildungskommandos 187 9.2.4. Ausgabedateien 187 9.2.5. Eingabedateien 187 9.2.6. Angabe der Option 187 9.2.7. Dateispezifikation 188 9.2.8. Indirektkommando-Dateien 188 9.2.9. Kommentare 188 9.2.10. Beispiele 188 9.2.10.1. Einzeilenformat 188 9.2.10.2. Mehrzeilenformat 189 9.3. Schalter 190 9.4. Wahlweise Angaben (Options) 197 9.5. Speicherzuordnung 204 9.5.1. Speicherstruktur der Task 204 9.5.2. Speicherstruktur des Taskabbildes 205 9.5.2.1. Taskabbild 205 9.5.2.2. Programmsektionen 205 7 Seite 9.5.2.3. Aufloesung globaler Symbole 209 9.5.3. Taskabbild-Datei 210 9.5.4. Speicherzuordnungsdatei 210 9.5.4.1. Aufbau und Inhalt der Speicherzuordnungsdatei 210 9.5.4.2. Beeinflussung von Inhalt und Format der Speicherzuordnungsdatei 213 9.6. Ueberlagerungsstrukturen 213 9.6.1. Uebersicht 213 9.6.2. Behandlung globaler Symbole und Programmsektionen in Baumstrukturen 216 9.6.2.1. Globale Symbole 216 9.6.2.2. Programmsektionen (P-Sektionen) 217 9.6.3. Platten- und hauptspeicherresidente Ueberlagerungen 218 9.6.4. Ueberlagerungsbeschreibung 219 9.6.4.1. Haupt- und Nebenbaum 219 9.6.4.2. Strukturangaben 220 9.6.4.3. ODL-Anweisungen 221 9.6.5. Lademethoden 224 9.6.5.1. Automatisches Laden 225 9.6.5.2. Manuelles Laden 227 9.6.5.3. Fehlerbehandlung 228 9.6.6. Ueberlagerungs-Laufzeitsystem - Overlay Runtime System (ORS) 229 9.6.7. Syntax-Beschreibung von ODL 231 9.7. Geteilte Regionen 232 9.7.1. Uebersicht 232 9.7.2. Positionsunabhaengige und absolute geteilte Regionen 233 9.7.2.1. Positionsunabhaengige geteilte Regionen 233 9.7.2.2. Absolute geteilte Regionen 234 9.7.3. Erstellung von geteilten Regionen 234 9.7.3.1. Geteilte Regionen ohne Ueberlagerungen 234 9.7.3.2. Geteilte Regionen mit speicherresidenten Ueberlagerungen 235 9.7.4. Zugriff auf eine geteilte Region 236 9.8. Clusterbibliotheken 237 9.9. Privilegierte Tasks 238 9.10. Speicherabzuege 239 9.10.1. Post-Mortem-Dumps (PMD) 239 9.10.2. Snapshot-Dumps 240 9.10.2.1. SNPDF$-Makro 240 9.10.2.2. SNNBK$-Makro 240 9.10.2.3. SNAP$-Makro 241 9.11. Fehlermitteilungen 241 10. Testprogramme DEP/ODT/TRACE 1630(OMEX) 250 10.1. Vorbemerkungen 250 10.1.1. Inhaltlicher Ueberblick 250 10.1.2. Aufgaben des DEP/ODT 250 10.2. Interne Organisation des DEP/ODT 251 10.3. Testvorbereitung 252 10.4. Zeichen und Symbole des DEP/ODT 252 10.4.1. Oeffnungszeichen 253 10.4.2. Schliesszeichen 253 10.4.3. Register-Symbole 254 10.4.4. Spezialzeichen 254 10.4.5. Operatoren 254 10.5. Register 255 8 Seite 10.5.1. Einfach-Register 255 10.5.1.1. Allgemeine Register 0...7 255 10.5.1.2. Argumentregister A 255 10.5.1.3. Konstantregister C 255 10.5.1.4. Formatregister F 255 10.5.1.5. Oberes Grenzregister H 255 10.5.1.6. Unteres Grenzregister L 256 10.5.1.7. Maskenregister M 256 10.5.1.8. Ergebnisregister Q 256 10.5.1.9. Statusregister S 256 10.5.1.10. Anweisungsstatusregister W 256 10.5.1.11. Wiedereinsprungsregister X 256 10.5.1.12. ARP-Statusregister $S 257 10.5.2. Mehrfach-Register 257 10.5.2.1. Unterbrechungspunktregister nB 257 10.5.2.2. Durchlaufzaehlregister nG 257 10.5.2.3. Unterbrechungspunktbefehlsregister nI 257 10.5.2.4. Verschiebebasisregister nR 257 10.5.2.5. SST-Adressregister nV 258 10.5.2.6. SST-Stackinhaltsregister nE 258 10.5.2.7. Geraetesteuerregister nD 259 10.5.2.8. ARP-Register $nA, $nB, $nC, $nD 259 10.6. Kommandos 260 10.6.1. Abkuerzungszeichen fuer Kommandosyntax 260 10.6.2. Typen von Ausdruecken 260 10.6.3. Kommandos fuer die Ein- und Ausgabe 261 10.6.3.1. Ein-/Ausgabe von Speicherinhalten (ai[k]) 261 10.6.3.2. Ein-/Ausgabe von Registerinhalten ($ri[k]) 264 10.6.3.3. Eingabe in Speicherbereiche (F) 265 10.6.3.4. Ausgabe von Speicherbereichen (L) 265 10.6.3.5. Ein-/Ausgabe oekonomischer Datenformate (a<#df>i[d]) 266 10.6.4. Suchkommandos 268 10.6.4.1. Suchen nach Speicherinhalten (W,N) 268 10.6.4.2. Suchen nach Adressen (E) 269 10.6.5. Berechnungskommandos 269 10.6.5.1. Berechnung von Offsets (O) 269 10.6.5.2. Berechnung relativer Adressen (K) 270 10.6.5.3. Berechnung von Ausdruecken (=) 270 10.6.5.4. RADIX-50-Operator (*) 271 10.6.5.5. Aktueller-Adress-Operator (.) 272 10.6.6. Kommandos zur Testorganisation 272 10.6.6.1. Einstellen des Modus "Direkttest" (D) 272 10.6.6.2. Einstellen des Modus "Interpretierender Test" (T) 272 10.6.6.3. Setzen/Zuruecksetzen der Verschiebebasisregister (R) 273 10.6.6.4. Setzen/Zuruecksetzen der Unterbrechungspunktregister (B) 274 10.6.6.5. Setzen der SST-Adressregister (V) 274 10.6.6.6. Bedingte Unterbrechung 275 10.6.7. Start und Fortsetzung des Testlaufs (G,P,S) 275 10.6.8. Beenden der Testarbeit (X) 276 10.7. Testprotokoll 276 10.7.1. Testprotokoll im Modus "Direkttest" 276 10.7.2. Testprotokoll im Modus "Interpretierender Test" 277 10.7.3. Besonderheiten bei Trap- und Steuerbefehlen 279 10.7.4. Beispiel eines Testprotokolls 280 9 Seite 10.7.5. Bedienerkommentar 283 10.8. Fehlerreaktionen und -mitteilungen 284 10.8.1. Fehler bei der Bedienereingabe 284 10.8.2. Testobjektfehler im Modus "Direkttest" 284 10.8.3. Testobjektfehler im Modus "Interpretierender Test" 285 10.9. Generierung 285 10.10. Aufwandsangaben 286 10.10.1. Speicherplatzbedarf 286 10.10.2. Rechenzeit 286 10.11. Zusammenstellung der DEP/ODT - Kommandos 287 10.12. Testhilfe TRACE 1630(OMEX) 288 10.12.1. Aufgaben des TRACE 288 10.12.2. Interne Organisation des TRACE 288 10.12.3. Zusammenarbeit TRACE - TKB 1630(OMEX) 289 10.12.4. TRACE-Protokoll 290 10.12.5. Generierung des TRACE 290 10.12.6. Speicherplatz- und Rechenzeitbedarf fuer TRACE 290 11. Testprogramm ZAP 1630(OMEX) 291 11.1. Vorbemerkungen 291 11.2. Kommandosyntax 291 11.3. Schalter 292 11.4. ZAP-Kommandos 293 11.4.1. Aufbau der Kommandos 293 11.4.1.1. Formate einer ZAP-Kommandozeile 293 11.4.1.2. Uebersichtstabelle ueber die ZAP-Kommandos 294 11.5. Kommandos und Beispiele der Anwendung 295 11.5.1. ZAP-Interne Register 295 11.5.2. Kommandos fuer die Ein-und Ausgabe 296 11.5.2.1. Eroeffnen von Speicherzellen in einer Abbildungsdatei 296 11.5.2.2. Schliessen einer Speicherzelle 296 11.5.2.3. -Kommando 297 11.5.3. Test-Kommandos 297 11.5.3.1. Berechnen von Offsets und Abspeichern im Werteregister 297 11.5.3.2. Berechnen der Verzweigungsoffsets 298 11.5.3.3. Berechnen von Termen 298 11.5.3.4. Pruefen des Inhalts einer Adresse 299 11.5.3.5. Aktueller-Adress-Operator 299 11.6. Fehlermitteilungen 299 12. Abbruchanalyseprogramm CDA 1630(OMEX) 301 12.1. Vorbemerkungen 301 12.2. Kommandosyntax 301 12.3. Schalter 303 12.3.1. Analyseschalter 303 12.3.2. Funktionsschalter 305 12.3.3. Zusammenstellung der CDA-Schalter 306 12.4. CDA-Ausgabelisten 307 12.4.1. Systeminformationen 307 12.4.1.1. Seite 1: "VOLATILE REGISTERS" 307 12.4.1.2. Seite 2: "KERNEL STACK" 309 12.4.1.3. Seite 3: "SYSTEM COMMON" 309 12.4.1.4. Seite 4: "SYSTEM COMMON ALPHABETIZED DUMP" 311 12.4.1.5. Seite 5: "POOL STATISTICS" 314 12.4.1.6. Seite 6: "ERROR LOG BUFFERS" 315 12.4.1.7. Seite 7: "ASSIGN TABLE" 316 10 Seite 12.4.1.8. Seite 8: "GROUP GLOBAL EVENT FLAGS" 316 12.4.2. Analyselisten 317 12.4.2.1. Aktive Tasks (/ACT oder /ATL) 317 12.4.2.2. Taskkoepfe (/HDR) 321 12.4.2.3. Partitionbelegung (/PCB oder /PAR) 323 12.4.2.4. Geraeteinformationen (/DEV,/ADV,/DCB,/SCB,/UCB) 325 12.4.2.5. Systemtaskverzeichnis (/STD, /TAL oder /TCB) 329 12.4.2.6. Dynamischer Systemspeicher (/POOL) 329 12.4.2.7. Taskabzug (/TASK) 331 12.4.2.8. Uhrwarteschlange (/CLQ) 332 12.4.2.9. CLI-Zerlegungsblock (/CLI) 333 12.5. Fehlermitteilungen 333 13. Dateivergleichsprogramm CMP 1630(OMEX) 337 13.1. Vorbemerkungen 337 13.2. Kommandoformat 337 13.3. Schalter 338 13.3.1. Formatschalter 338 13.3.1.1. Differenzformat (/DI) 338 13.3.1.2. Kennzeichenformat (/CB) 339 13.3.1.3. SLP - Kommandoeingabeformat 340 13.3.2. Schalter zur Steuerung des Vergleichsprozesses 340 13.3.3. Sonstige Schalter 341 13.3.4. Standardschalter 342 13.4. Fehlermitteilungen 342 14. Dateidruckprogramm DMP 1630(OMEX) 343 14.1. Vorbemerkungen 343 14.2. Kommandoaufbau 343 14.2.1. Allgemeines Format 343 14.2.2. Kommando im Dateimodus (virtueller Blockmodus) 343 14.2.3. Kommando im Geraetemodus (logischer Blockmodus) 344 14.3. Schalter 345 14.3.1. Datenformatschalter 345 14.3.2. Spezifikation der Eingabedatei ueber ihre ID-Nr. 346 14.3.3. Spezifikation der Basisblocknummer und der Anzahl der auszugebenden Bloecke 347 14.3.4. Ausgabe des Dateikennsatzes 348 14.3.5. DMP-Service-Kommandos 348 14.4. Fehlermitteilungen 349 15. Datei-Pruefprogramm VFY 1630(OMEX) 351 15.1. Vorbemerkung 351 15.2. Kommandosyntax 352 15.3. Geraetebenutzung und Standardfestlegungen 352 15.4. VFY-Mitteilungen 352 15.5. Schalter 354 15.5.1. Wiederherstellen von geloeschten Dateien (/DE) 355 15.5.2. Gueltigkeitspruefung von Dateiverzeichnissen (/DV) 355 15.5.3. Ausgabe des freien Plattenbereiches (/FR) 356 15.5.4. Loeschen fehlerhafter Dateihaeder (/HD) 357 15.5.5. Drucken der Index-Datei (/LI) 357 15.5.6. Suchen von verlorenen Dateien (/LO) 358 15.5.7. Lesekontrolle des Datentraegers (/RC) 358 15.5.8. Reorganisation von verlorenen Bloecken (/RE) 359 15.5.9. Neuzuordnung von FREE-Bloecken (/UP) 359 15.6. Fehlermitteilungen 360 15.6.1. Fehlerausschriften 360 15.6.2. VFY-Fehler-Codes 362 11 Seite 16. Verzeichnisverwaltungsprogramm SRD 1630(OMEX) 363 16.1. Vorbemerkungen 363 16.2. Kommandosyntax 363 16.3. Schalter 363 16.3.1. Erstellen einer Liste (/LI) 364 16.3.2. Ausgabe einer "mittleren" Liste (/MI[:n], /M2) 365 16.3.3. Ausgabe einer vollstaendigen Liste (/FU[:n]) 365 16.3.4. Aenderung der Sortierfolge (/NA) 365 16.3.5. Liste der Dateien, die nicht der Spezifikation entsprechen (/NE) 366 16.3.6. Auswahl der Dateien entsprechend der Versions- nummer (/HV[:n]) 366 16.3.7. Ausgabe der hoechsten Versionen von Dateien (/SV[:n] und /NV[:n]) 366 16.3.8. Ausgabe veralteter Versionen von Dateien (/OV[:n]) 366 16.3.9. Auswahl der Dateien entsprechend Datum (/AE, /AF, /BE, /BF, /DA) 366 16.3.10. Ersatzzeichen in der Dateispezifikation (/SE:filespec) 367 16.3.11. Ausgabe entsprechend Datei-ID-Nummer (/FI[:n]) 367 16.3.12. Ausgabe entsprechend UIC (/FO:[ggg,mmm]) 367 16.3.13. Auswahl entsprechend der Blockgroesse (/GT:n) 367 16.3.14. Feststellen der belegten und zugeordneten Bloecke (/TB) 367 16.3.15. Loeschen von Dateien (/DE) 367 16.3.16. Loeschen veralteter Versionen (/PU[:n]) 368 16.3.17. Selektives Loeschen von Dateien (/SD:filespec) 368 16.3.18. Zurueckschreiben in das UFD (/WB) 368 16.3.19. Nutzung des Revisionsdatums (/RD) 368 16.3.20. Sortieren des Dateiverzeichnisses (/SR) 369 16.3.21. Einschliessen der System-UFD's in die [*,*] -Suche [/SY] 369 16.3.22. Einschliessen des MFD in die [*,*] - Suche(/00) 369 16.3.23. Behandeln aller nicht angegebenen Datei- spezifikationselemente als Sternvereinbarung (/WI, /WD) 369 16.3.24. Auswahl von zusammenhaengenden Dateien (/CO) 370 16.3.25. Auswahl von gesperrten Dateien (/LO) 370 16.3.26. Auswahl leerer Dateien (/ZE) 370 16.3.27. Auswahl von Dateien mit Mehrfachdatei- koepfen (/MU) 370 16.3.28. Ausgabe der Version von SRD (/ID) 370 16.3.29. Ausgabe der verfuegbaren Puffergroesse (/SI) 370 16.3.30. Anschliessen des Ausgabeterminals (/AT) 370 16.3.31. Help - Funktion /HE 370 16.3.32. Ausgabe ueber Printspooler (/SP) 370 16.3.33. Erstellen einer Kommandodatei (/CM:pro:aaaa) 371 16.3.34. Drucken der Kommandozeile in der Kopfzeile (/HD) 371 16 3.35. Ausgabe einer Summenzeile (/SM) 371 16.3.36. Einsetzen von zwei Leerzeichen vor jeden Dateinamen (/BK) 371 16.3.37. Verdichtete Ausgabe der Dateispezifikation (/PA) 372 16.4. Schalterkombinationen 372 16.4.1. Einschraenkungen bei Schalterkombinationen 372 16.5. Standardwerte der Schalter 372 16.6. Beispiele 373 16.7. Fehlermeldungen 375 12 Seite 17. Plattenkopierprogramm DSC 1630(OMEX) 378 17.1. Vorbemerkungen 378 17.2. Kommandoformat 378 17.3. Start und Beendigung des DSC 379 17.4. Geraetebenutzung 379 17.5. Schalter 379 17.5.1. Dateiname 380 17.5.2. Zurueckspulen des Magnetbandes (/RW) 381 17.5.3. Anhaengen einer Datei (/AP) 382 17.5.4. Vergleich des Inhalts von Datentraegern (/CMP) 382 17.5.5. Vergleich nach dem Kopieren (/VE) 383 17.5.6. Zugriff zur Fehlerblockdatei (/BAD) 383 17.5.7. Festlegen des Blockungsfaktors (/BL) 385 17.6. DSC-Uebertragungstechnik 385 17.6.1. Datenuebertragung von der Platte 385 17.6.2. Datenuebertragung auf das Magnetband 385 17.6.3. Datenuebertragung vom Magnetband 386 17.6.4. Datenuebertragung zur Platte 386 17.7. Fehlermitteilungen 387 18. Programm zur Feststellung von Fehlerbloecken auf Datentraegern BAD 1630(OMEX) 396 18.1. Vorbemerkungen 396 18.2. Benutzung des Dienstprogramms 396 18.3. Kommandos 396 18.4. Schalter und ihre Bedeutung 397 18.4.1. Die Schalter ALLOCATE, MANUAL und UPDATE 397 18.4.2. Der Schalter LIST 399 18.4.3. Der Schalter PATTERN 399 18.4.4. Der Schalter RETRY 399 18.5. Verwendung von Defektblockinformationen 399 18.6. Fehlermitteilungen 399 19. Datensicherungsprogramm BRU 1630(OMEX) 402 19.1. Vorbemerkungen 402 19.2. Kommandosyntax 403 19.2.1. Kommandozeilenparameter 403 19.2.1.1. Sternvereinbarungen bei der Eingabespezi- fikation 404 19.2.2. Fortsetzungszeilen 404 19.3. Uebersicht der Schalter, Optionen und Standardwerte 405 19.3.1. Funktionen der Schalter 407 19.4. Beschreibung der Schalter 408 19.4.1. /APPEND 408 19.4.2. /BACKUP SET:name 408 19.4.3. /BAD:option 409 19.4.4. /BUFFERS:number 410 19.4.5. /COMPARE 410 19.4.6. /CREATED:option 410 19.4.7. /DENSITY:number 410 19.4.8. /DIRECTORY 410 19.4.9. /DISPLAY 411 19.4.10. /ERRORS:number 411 19.4.11. /EXCLUDE 411 19.4.12. /EXTEND:number 411 19.4.13. /HEADERS:number 411 19.4.14. /IMAGE:arg 411 19.4.15. /INITIALIZE 412 13 Seite 19.4.16. /INVOLUME:name 412 19.4.17. /LENGTH:number 412 19.4.18. /MAXIMUM:number 412 19.4.19. /MOUNTED 412 19.4.20. /NEW VERSION 413 19.4.21. /NOINITIALIZE 413 19.4.22. /NOPRESERVE 413 19.4.23. /NOSUPERSEDE 413 19.4.24. /OUTVOLUME:name 413 19.4.25. /POSITION:option 413 19.4.26. /PROTECTION:option:value 414 19.4.27. /REVISED:option:value 414 19.4.28. /REWIND 414 19.4.29. /SUPERSEDE 415 19.4.30. /TAPE LABEL:name 415 19.4.31. /UFD 415 19.4.32. /VERIFY 415 19.4.33. /WINDOWS:number 415 19.5. Verwendung von BRU beim Kopieren von Platten, die ein Systemabbild enthalten 415 19.5.1. Kopieren eines nichtgeretteten Systems (Virgin System) 416 19.5.2. Kopieren eines geretteten Systems 416 19.5.2.1. Kopieren auf eine kleinere Platte 416 19.5.2.2. Kopieren auf ein Geraet mit einem anderen Steuergeraetetyp 416 19.6. Beispiele 416 19.7. Fehlermitteilungen 417 20. Plattenformatisierungsprogramm FMT 1630(OMEX) 428 20.1. Vorbemerkungen 428 20.2. Kommandosyntax 428 20.3. Schalterbeschreibung 428 20.3.1. Aufrufen der BAD-Task (/BAD) 428 20.3.2. Festlegen der Aufzeichnungsdichte (/DENSITY) 429 20.3.3. Festlegen einer Fehlergrenze (/ERL) 429 20.3.4. Unterdruecken des Vergleichslesens (/NOVERIFY) 429 20.3.5. Vergleichslesen (/VERIFY) 429 20.3.6. Unterdruecken von Terminalmeldungen (@Y) 429 20.4. Fehlermeldungen 430 21. Bildschirmorientierter Editor EDT 1630(OMEX) 432 21.1. Vorbemerkungen 432 21.2. Aktivierung und Beendigung der Arbeit, Initialisierung 432 21.2.1. Eingabedatei 432 21.2.2. Ausgabedatei 433 21.2.3. Initialisierungsdatei 433 21.2.4. Schalter 433 21.3. Sicherung der Arbeitsergebnisse 434 21.4. Spezielle EDT-Begriffe 434 21.4.1. Textbuffer 434 21.4.2. Geltungsbereiche von Kommandos 435 21.4.3. Texteinheiten 436 21.5. Setzen und Anzeigen von Arbeitsparametern und Funktionen 438 21.5.1. Erlaeuterungen der SET-und Showparametern 438 21.5.2. Belegung der Funktionstasten fuer den Bild- schirmmodus 442 14 Seite 21.5.2.1. Define Key und Defk 442 21.5.2.2. CTRL/K 444 21.6. Arbeitsmodi 444 21.6.1. Kommandomodus 445 21.6.2. Insertmodus 446 21.6.3. Bildschirmmodus 446 21.6.4. Gemischter Modus 448 21.7. Beschreibung der Funktionen 448 21.7.1. Advance - Arbeitsrichtung vorwaerts 449 21.7.2. Append - Text an Puffer anfuegen 449 21.7.3. ASC,Specins und CTRL-Einfuegen von Steuerzeichen 449 21.7.4. Back - Arbeitsrichtung rueckwaerts 450 21.7.5. Bottom - Pufferende einstellen 450 21.7.6. Change - Modus umschalten 451 21.7.7. Change Case - Vertauschen von Gross- und Kleinbuchstaben 451 21.7.8. Clear - Puffer loeschen 451 21.7.9. Command,Ext - Kommando aus anderem Modus 451 21.7.10. Copy - Textteile kopieren 452 21.7.11. Cut - Text in Puffer uebertragen 452 21.7.12. Delete - Loeschen von Textteilen 453 21.7.13. Enter - Ende einer Kommandokette 453 21.7.14. Exit - Beendigung der Arbeit 453 21.7.15. Fill - Wortweises Auffuellen von Zeilen 454 21.7.16. Fnd,Fndnxt - Auffinden von Textstellen 454 21.7.17. Include - Einfuegen aus anderer Datei 455 21.7.18. Insert - Einfuegen 455 21.7.19. Move - Verschieben von Textteilen 455 21.7.20. Paste - Text aus Puffer zurueckspeichern 456 21.7.21. Print - Text auf andere Datei ausgeben 456 21.7.22. Quit - Beendigung der Arbeit 456 21.7.23. Replace - Ersetzen von Textteilen 457 21.7.24. Resenquence - neu nummerieren 457 21.7.25. Ref - Bidschirminhalt wiederherstellen 457 21.7.26. Substitute - Aendern einer Zeichenkette 458 21.7.27. Select - Markieren von Textabschnitten 458 21.7.28. Shl,Shr - Abbild auf dem Bildschirm verschieben 459 21.7.29. Tabulationskommandos 459 21.7.30. Top - Pufferanfang einstellen 459 21.7.31. Type - Textanzeige 460 21.7.32. Undelete - Wiederherstellen von Textteilen 460 21.7.33. Write - Text in andere Datei uebertragen 461 21.8. Makrotechnik 461 21.9. Hinweise zur Help - Funktion 461 21.10. Fehlermitteilungen 462 Anlage 1: Datentraegerformate fuer FEX 1630(OMEX) 466 Anlage 2: Satzformate fuer FEX 1630(OMEX) 472 Anlage 3: Konvertierungstabellen fuer FEX 1630(OMEX) 475 Anlage 4: Anwendungshinweise fuer FEX 1630(OMEX) 477 ANLAGE 5: Fehlerschluessel fuer PIP 1630(OMEX) 482 Abkuerzungsverzeichnis 484 15 Bildverzeichnis --------------- Seite Bild 1 EDI - Benutzung der Geraete 100 Bild 2 EDI - Benutzung sekundaerer Eingabedateien 104 Bild 3 LBR - Aufbau einer Bibliothek 153 Bild 4 LBR - Aufbau eines Bibliothekskopfes 154 Bild 5 LBR - Aufbau eines EPT-Elementes 155 Bild 6 LBR - Aufbau eines MNT-Elementes 155 Bild 7 LBR - Aufbau eines Modulkopfes 156 Bild 8 TKB - Speicherzuordnung der Programmsektionen 207 Bild 9 TKB - Gesamtzuweisung fuer Programmsektionen 207 Bild 10 TKB - Einordnung der Programmsektionen 208 Bild 11 TKB - Schalter in Programmsektionen 208 Bild 12 TKB - Symbolzuordnung in den Programmsektionen 209 Bild 13 TKB - Beispiel einer Ueberlagerungsstruktur 214 Bild 14 TKB - Speicherzuordnung 215 Bild 15 TKB - Darstellung eines Haupt- und eines Nebenbaumes 216 Bild 16 TKB - Schema der speicherresidenten Ueberlagerung 218 Bild 17 TKB - Ablaufschema fuer automatisches Laden 226 16 Tabellenverzeichnis ------------------- Seite Tabelle 1 FLX - Von FLX unterstuetzte Geraete 23 Tabelle 2 FLX - Standards fuer Elemente des FLX-Kommandos 24 Tabelle 3 FLX - Standards fuer Uebertragungsmodus-Schalter 26 Tabelle 4 FLX - Standards fuer Schalter zur Steuerung und Kontrolle 26 Tabelle 5 FLX - Sternvereinbarung als Element der Eingabedateispezifikation 26 Tabelle 6 FLX - Sternvereinbarung als Element des Eingabe-UIC 27 Tabelle 7 FLX - Datentraegerformat-Schalter 27 Tabelle 8 FLX - Uebertragungsmodus-Schalter 28 Tabelle 9 FLX - Schalter zur Steuerung und Kontrolle 29 Tabelle 10 FLX - FM16- und FD16-Kassettenformat 31 Tabelle 11 FEX - Datentraegerformatspezifizierung fuer /ES (mod1) 45 Tabelle 12 FEX - Funktions-Spezifizierung fuer /ES (mod2) 46 Tabelle 13 FEX - Funktions-Ergaenzung fuer /ES (mod3) 46 Tabelle 14 FEX - Datentraegerformat-Spezifizierung fuer /QU (mod1) 47 Tabelle 15 FEX - Funktions-Spezifizierung fuer /QU (mod2) 47 Tabelle 16 FEX - Funktionswert-Ergaenzung fuer /QU (mod3) 47 Tabelle 17 FEX - Satzformatangabe fuer /RK (frmchr) 48 Tabelle 18 FEX - Standard-Satzformate beim Datenformat /FD 49 Tabelle 19 FEX - Satzformate bei Datentraegerformaten 50 Tabelle 20 FEX - Beziehungen zwischen Block- und Satzgroesse 51 Tabelle 21 FEX - Schalterwerte frtyp fuer /FM 53 Tabelle 22 FEX - Schalterwerte fratt fuer /FM 54 Tabelle 23 FEX - Standardfestlegungen des Datenformats 54 Tabelle 24 FEX - feste Datenformat-Schalter 55 Tabelle 25 FEX - Konvertierungstypen 55 Tabelle 26 FEX - Schalterwert modus fuer /ZE 58 Tabelle 27 FEX - Schalterwert fuc fuer /CD 59 Tabelle 28 FEX - Schalterwert hspec fuer /HE 60 Tabelle 29 PIP - Moeglichkeiten der Sternvereinbarungen auf der Eingabeseite 71 Tabelle 30 PIP - Subschalter des Umspeicherkommandos 73 Tabelle 31 PIP - Kommandos zur Dateiverarbeitung 74 Tabelle 32 PIP - Zusammenstellung der Schalter und Subschalter 91 Tabelle 33 EDI - Uebersicht ueber die Kommandos 110 Tabelle 34 LBR - Schalter des Bibliothekars 159 Tabelle 35 LBR - Moduln der Bibliothek 172 Tabelle 36 LBR - Eingabedateien und ihre Moduln 172 Tabelle 37 TKB - Schalter des Taskbilders 190 Tabelle 38 TKB - Options 197 Tabelle 39 TKB - Attribute der Programmsektionen 206 Tabelle 40 DEP - Oeffnungszeichen 253 Tabelle 41 DEP - Schliesszeichen 253 Tabelle 42 DEP - Spezialzeichen 254 Tabelle 43 DEP - Operatoren 254 Tabelle 44 DEP - Zuordnung nV-Register - SST-Ursachen 258 Tabelle 45 DEP - Geraetesteuerregister 259 Tabelle 46 DEP - Beispiele fuer Ausdruckstypen 260 17 Seite Tabelle 47 DEP - KOI-7-Zeichen fuer RADIX-50-Operationen 271 Tabelle 48 DEP - Kommandouebersicht 287 Tabelle 49 ZAP - Schalter 292 Tabelle 50 ZAP - Kommandos 294 Tabelle 51 CDA - Dateistandards 302 Tabelle 52 CDA - Analyseschalter 306 Tabelle 53 CDA - Funktionsschalter 306 Tabelle 54 DMP - Datenformatschalter 345 Tabelle 55 DMP - Schalter /FI 346 Tabelle 56 DMP - Schalter /BL und /BA 347 Tabelle 57 DMP - Schalter /HD 348 Tabelle 58 DMP - Service-Schalter 348 Tabelle 59 DSC - Von DSC unterstuetzte Geraete 379 Tabelle 60 DSC - Schalter 379 Tabelle 61 BRU - Zusammenfassung der BRU-Schalter 405 Tabelle 62 EDT - Aufrufschalter 433 Tabelle 63 EDT - Einfache Zeilenangaben im Kommandomodus 435 Tabelle 64 EDT - Zusammengesetzte Zeilenangaben im Kommandomodus 436 Tabelle 65 EDT - Einfache Texteinheiten 436 Tabelle 66 EDT - Zusammengesetzte Texteinheiten 437 Tabelle 67 EDT - Parameter bei SET und SHOW 438 Tabelle 68 EDT - Standardbelegung der Funktionstasten im Bildschirmmodus 442 Tabelle 69 EDT - Ausgewaehlte Steuerzeichen 450 18 1. Lochbandeingabeprogramm PTI 1630 (OMEX) ------------------------------------------ 1.1. Vorbemerkungen ------------------- Das Einleseprogramm PTI dient zum Uebertragen von Textinforma- tionen vom Lochbandleser zu Plattendateien. Die entstehenden Plattendateien sind sequentielle Dateien mit Saetzen variabler Laenge. Die maximale Satzlaenge betraegt wahlweise 132. oder 80. Bytes. Eingelesen werden Lochbaender gerader Paritaet in KOI-7-Code gemaess ST RGW 356-76. Saetze, die laenger als die maximale Satzlaenge sind, werden geteilt. Saetze sind auf dem Lochband durch das Zeichen NEWLINE (NL, Oktalwert 36) zu trennen. Leerrahmen und Achterlochungen auf dem Lochband werden ueberlesen. PTI fuehrt eine Kontrolle auf gerade Paritaet durch. Die Behandlung von Kleinbuchstaben, das Endekennzeichen sowie die Behandlung des Dollarzeichens koennen durch Schalter beeinflusst werden. Durch einen Schalter kann das Ausblenden nichtdruckbarer Zeichen gesteuert werden. Bei der Ausgabe auf OMOS-1630-Plattendateien werden die Pari- taetsbits ausgeblendet. Das Satztrennzeichen (NL) wird nicht uebernommen. In der Plattendatei wird die Satzlaenge mitgefuehrt. Aus aufeinanderfolgenden (NL) entstehen Leersaetze. Das Zeichen LINE-FEED (LF, Oktalwert 12) sollte nicht in einzulesenden Quel- len enthalten sein, da es die spaetere Aufbereitung der Quelle behindern kann. Das Zeichen CTRL/Z (Oktalwert 33) ist nicht zur Eingabe zugelas- sen. Es beendet die Ausgabe von Saetzen auf die Platte. Das Programm PTI verfuegt ueber eine geblockte Lochbandeingabe mit Wechselpufferarbeit. Dadurch haengt die Eingabegeschwindig- keit im wesentlichen von der Lesegeschwindigkeit des Lochbandle- sers ab. Durch die zeitliche Trennung von Lochbandeingabe und Verarbeitung der Zeichen laueft das Lochband in der Regel bis zum physischen Ende durch. Aus diesem Grund sollten nicht mehrere Quellen auf einem Lochband untergebracht werden. 1.2. Kommandoaufbau ------------------- Nach Aktivierung von PTI meldet sich das Eingabeprogramm ueber das Bediengeraet mit der Ausschrift "PTI> ". Danach kann ein Kommando der Form: outfile[/switch]...=PR[nn]: eingegeben werden. 19 Dabei bedeuten: outfile: Angabe einer Dateispezifikation, die mindestens aus dem Dateinamen bestehen muss. Wenn die Geraeteangabe, die Angabe des UIC oder die Angabe der Versionsnummer fehlt, werden dafuer die ueb- lichen systemspezifischen Standards angenommen. Fuer den Dateityp existiert keine Standardannahme. switch: Angabe der in Abschn. 1.3. beschriebenen Schalter in der Form: /sw fuer Einschalten der entsprechenden Funktion /-sw oder /NOsw fuer Ausschalten. nn: Nummer des Lochbandlesers. Fehlt die Angabe der Geraete- nummer, wird PR0: angenommern. 1.3. Schalter ------------- 1.3.1. Behandlung von Kleinbuchstaben (/UC) ------------------------------------------- /UC Standard ! Die Angabe von /UC (upper case) bewirkt, dass alle Kleinbuch- staben vor Ausgabe auf die Plattendatei zu Grossbuchstaben um- codiert werden. Das kann z.B. dann sinnvoll sein, wenn auf einem Drucker oder Bediengeraet diese Kombinationen mit kyril- lischen Zeichen belegt sind. /-UC Der Text wird unter Beibehaltung der Kleinbuchstaben zur Platten- datei uebertragen. 1.3.2. Ueberlesen von Saetzen, Festlegung des Endekennzeichens (/IR) --------------------------------------------- Die folgende Funktion dient dazu, Lochstreifen, die fuer ein Betriebssystem der Rechnerfamilie R4000 erzeugt wurden, im OMOS 1630 zu nutzen. /IR Die Angabe von /IR (ignore record) bewirkt, dass das Zeichen mit der oktalen Codierung 44 als Irrungszeichen behandelt wird. Saetze, die dieses Zeichen enthalten, werden ueberlesen. Um das haeufig benoetigte Zeichen Dollar erzeugen zu koennen wird das Zeichen "%" (Oktalwert 45) vor Ausgabe auf die Plattendatei zu Dollar umcodiert. Als logisches Endekennzeichen dient die Kombination #HALT(NL) . 20 Hinreichend ist die Angabe von #H(NL) . /-IR Standard ! Die Zeichen Prozent und Dollar werden unveraendert in die Ausga- bedatei uebernommen. Die Funktion "Ueberlesen von Saetzen" ent- faellt. Als logisches Endekennzeichen fungiert die Kombination /*(NL) 1.3.3. Ausblenden von Zeichen (/TX) ----------------------------------- /TX Standard ! Bei Angabe dieses Schalters werden nur Zeichen mit einem Oktal- wert 10 bis 17 (Formateffektoren) und 40 bis 176 (druckbare Zei- chen) vom Lochband uebernommen. /-TX Alle Zeichen ausser NUL und DEL gelangen zur Verarbeitung. 1.3.4. Festlegen der maximalen Satzlaenge (/SH) ----------------------------------------------- /SH Bei Angabe dieses Schalters werden Saetze mit max. 80. Bytes Laenge auf die Platte ausgegeben. /-SH Standard ! Die maximale Satzlaenge betraegt 132. Bytes. 1.3.5. Ausgabe der Identifikation (/ID) --------------------------------------- /ID Bei Angabe dieses Schalters gibt PTI seine Identifikation ueber das Bediengeraet aus. /-ID Standard ! Es erfolgt keine Ausgabe der Identifikation. 1.4. Fehlernachrichten ---------------------- PTI reagiert auf Fehler nach der Kommandoeingabe und waehrend des Lesens mit folgenden Fehlerausschriften: PTI--ILL FILENAME Die Dateispezifikation fuer die Ausgabedatei ist unkorrekt. 21 PTI--ILL SWITCH Nach der Angabe der Dateispezifikation folgt die Angabe eines unzulaessigen Schalters. PTI--ILL INPUT DEVICE Die Angabe des Eingabegeraets ist syntaktisch falsch, es wurde als Geraet nicht PR angegeben, oder PTI kann aus sonstigen Gruen- den (falsche Geraetenummer) das Geraet nicht der LUN zuweisen. PTI--OPEN FAILURE ON OUTPUT FILE Die Ausgabedatei kann nicht erfolgreich eroeffnet werden. Ursachen koennen u.a. sein: - die Datei ist unter gleichem Namen in der entsprechen- den Version schon vorhanden. - die Errichtung der Ausgabedatei verstoesst gegen den Zugriffsschutz. - das UFD enthaelt keinen Platz zum Schreiben einer ent- sprechenden Eintragung. PTI--IO-INPUT ERROR Bei der Eingabe des Lochbandes wurde ein Fehler bemerkt. Ursachen koennen sein: - Lochbandriss - vom Lochband wurde das Zeichen CTRL/Z gelesen. - das Endekennzeichen fehlt. Die Ausgabedatei wird geschlossen. Fehlte nur das Endekennzei- chen, so ist die Datei trotzdem richtig aufgebaut, wenn zwischen letztem Satz und physischem Bandende mindestens 10 Leerrahmen lagen. PTI--IO-OUTPUT ERROR Die eingelesenen Saetze koennen nicht auf die Platte ausgegeben werden. Ursache kann sein: - Der Datentraeger ist vollstaendig belegt. - Der Dateikennsatz ist voll. PTI--CHECKSUM ERROR AT LINE: Die ausgeschriebene Zeile enthielt mindestens ein pruefbitfal- sches Zeichen. Das Lesen wird fortgesetzt. Pruefbitfehler werden nicht gemeldet, wenn der betreffende Satz bei Schalter /IR ein Irrungszeichen enthielt und ueberlesen wird. Achtung: Bei fehlender Bereitschaft am Lochbandleser erreicht PTI einen Wartezustand. PTI muss dann ueber MCR durch ein entsprechendes Kommando (ABO,...) zwangsweise beendet werden. 22 2. Dateiumwandlungsprogramm FLX 1630 (OMEX) ------------------------------------------- 2.1. Vorbemerkungen ------------------- FLX ist ein Dienstprogramm zur Datenuebertragung zwischen ver- schieden formatierten Datentraegern. Uebertragungen zwischen drei Formaten sind moeglich: FM16 Dateiformat des OMOS FD16 Dateiformat fuer Datensicherung FL16 Dateiformat des LAOS In der nachfolgenden Matrix werden die Uebertragungsrichtungen aufgezeigt, die moeglich sind. nach | von | FM16 FD16 FL16 ------------------------------- | FM16 | ja ja ja | FD16 | ja ja nein | FL16 | ja nein ja Tabelle 1 zeigt die Geraete, die von FLX fuer das jeweilige Dateiformat unterstuetzt werden. Tabelle 1: FLX - Von FLX unterstuetzte Geraete ------------------------------------------- Format | Geraete ------------------------------------------- FM16 | alle erlaubten OMOS-Geraete | ausser Lochbandtechnik | FD16 | Kassettenplatte | Magnetband | Kassettenmagnetband | Lochbandleser | Lochbandstanzer | FL16 | Kassettenplatte | Folienspeichereinheit ------------------------------------------- Bei der Uebertragung auf Platte entstehen Dateien, die im allge- meinen diskontinuierlich sind. Werden kontinuierliche Dateien gewuenscht, z.B. bei Tasks, sind die Schalter /CO und /BL:n mit der Ausgabespezifikation anzuge- ben (s. Abschn. 2.3.3.). FLX leistet ausser den Uebertragungsfunktionen: - Verzeichnisausgabe von Kassettenmagnetbaendern, FD16- oder FL16-Datentraegern. - Loeschen von Dateien von FD16- und FL16-Datentraegern. - Initialisieren von Kassettenmagnetbaendern, FD16- und FL16- Datentraegern. 23 2.2. Kommandosyntax ------------------- 2.2.1. Allgemeiner Kommandoaufbau --------------------------------- outdev/switch=infile/switch[,infile/switch]... outdev - Ausgabegeraetespezifikation in der Form: dev:[g,m] dev: - Ausgabegeraet [g,m] - UIC (User Identifikation Code), wobei g die Gruppennummer und m die Nutzernummer ist. Das UIC-Feld ist wahlfrei, bei FL16- Datentraegern aber nicht anzugeben. infile - Eingabedateispezifikation in der Form: dev:[g,m]name.type;version dev: - Eingabegeraet [g,m] - UIC-Angabe (siehe oben) name - Eingabedateiname type - Typ der Eingabedatei version - Versionsnummer der Datei Wenn sie signifikant ist (FM16), muss sie angegeben werden. Bei 0 wird die hoechste, bei -1 die nied- rigste Versionsnummer einer Datei benutzt. switch - FLX-Schalter Im FLX-Kommando wird kein Dateiname in der Ausgabespezifikation angegeben. Der Name der Eingabedatei wird gleichzeitig fuer die Ausgabedatei benutzt. 2.2.2. Standardannahmen ----------------------- Tabelle 2: FLX - Standards fuer Elemente des FLX-Kommandos ----------------------------------------------- Elemente | Standardannahme ----------------------------------------------- outdev: | SY0: bei Dateien | TI: bei Verzeichnisausgabe | indev: | SY0: | [g,m] | UIC, unter dem FLX laeuft | version | hoechste Versionsnummer | name | .;n (nur fuer FM16)| n - letzte Versionsnummer ----------------------------------------------- 24 Beispiel: FLX>/DO=DK1:TEST.MAC/RS ------------------- Uebertragung der Datei TEST.MAC mit der hoechsten Versions- nummer (z.B. 5) von der Platte DK1: im FM16-Dateiformat nach DK0: im FD16-Format. Fuer den UIC der Ein- und Ausgabedatei wird [200,200] ange- nommen. Das vollstaendige Kommando nach Einsetzen der Standards lautet dann: FLX>DK0:[200,200]/DO=DK1:[200,200]TEST.MAC;5/RS ------------------------------------------- Standards fuer Datentraegerformat-Schalter ------------------------------------------ - Falls kein Formatschalter angegeben wird, nimmt FLX standard- maessig fuer die Eingabedatei FD16-Format (Formatschalter /DO) und fuer die Ausgabedatei FM16-Format (Formatschalter /RS) an. - Steht /RT auf einer Seite der Kommandozeile, wird bei unterlas- sener Schalterangabe auf der anderen Seite /RS angenommen. - Steht der Formatschalter /RS oder /DO auf einer Kommandozeile allein, wird dadurch das Format des Ein- und Ausgabedatentrae- gers fuer die nachfolgenden Kommandos festgelegt. Bei /RS: Eingabedatentraeger - FM16-Format Ausgabedatentraeger - FD16-Format Bei /DO: Eingabedatentraeger - FD16-Format Ausgabedatentraeger - FM16-Format Beispiele: 1) FLX>DK0:/RT=DK1:TEST.DAT;2 ---------------------- Fuer den Eingabedatentraeger wird FM16-Format angenommen. 2) FLX>/RS --- FLX>=DK1:[200,20]TEST.DAT --------------------- . . . FLX>/DO --- . . . Die Datei TEST.DAT wird von der Platte DK1:[200,20] auf DK0:[200,200] uebertragen. DK1: - FM16-Format DK0: - FD16-Format Die Festlegung ueber Ein- und Ausgabedatentraegerformat gilt fuer alle nachfolgenden Kommandos ohne Formatschalterangabe. Durch das Kommando /DO wird fuer Eingabedatentraeger FD16- Format und fuer Ausgabedatentraeger FM16-Format festgelegt. 25 Tabelle 3: FLX - Standards fuer Uebertragungsmodus-Schalter -------------------------------------- Dateityp | Schalter -------------------------------------- TSK,OLB,MLB,SYS,SML,ULB | /IM OBJ,STB | /FB alle anderen Datei- | /FA typen | -------------------------------------- Tabelle 4: FLX - Standards fuer Schalter zur Steuerung und Kontrolle ----------------------------------------------------------------- Schalter | Standardannahme ----------------------------------------------------------------- /BL:n | Die Eingabedateilaenge wird als Ausgabe- | dateilaenge benutzt. | /BS:n | Blocklaenge n=128. Bytes | /FC | Ausgabesaetze werden durch CR-LF getrennt. | (Standardannahme ist /-FC) | /LI | Bei Verzeichnisausgabe wird bei Fehlen des | Dateinamens und -typs in der Eingabespezi- | fikation *.* angenommen. | /NU:n | n = 4 Verzeichnisbloecke ----------------------------------------------------------------- 2.2.3. Sternvereinbarungen -------------------------- Der Stern "*" kann fuer ein Element der Dateispezifikation des FLX-Kommandos gesetzt werden. Dadurch ist es moeglich, mit einer einzigen Dateispezifikation eine bestimmte Gruppe von Dateien zu erfassen. Tabelle 5: FLX - Sternvereinbarung als Element der Eingabedateispezifikation ----------------------------------------------------------------- infilename,infiletyp;version | Bedeutung ----------------------------------------------------------------- *.*;n | die jeweils n-te Version | von allen Dateien | *.MAC;n | die jeweils n-te Version | von allen Dateien des | Typs .MAC | TEST.*;n | die jeweils n-te Version | von allen Typen der | Datei TEST ----------------------------------------------------------------- Eine Sternvereinbarung als Versionsnummer ist nicht erlaubt. 26 Tabelle 6: FLX - Sternvereinbarung als Element des Eingabe-UIC ----------------------------------------------------------------- [g,m] | Bedeutung ----------------------------------------------------------------- [*,*] | Saemtliche Kombinationen von | Gruppen- und Nutzernummern von | 1 bis 377 | [n1,*] | Alle Nutzernummern der Gruppe | n1 | [*,n2] | Alle Gruppennummern der Nutzer | n2 ----------------------------------------------------------------- Die Elemente des Ausgabe-UIC koennen nicht durch Sternvereinba- rungen ersetzt werden. 2.3. Schalter ------------- 2.3.1. Datentraegerformat-Schalter ---------------------------------- Diese Schalter definieren das Format des angegebenen Datentrae- gers (FM16-, FD16- oder FL16-Format). Die Tabelle 7 gibt einen Ueberblick ueber die Datentraegerfor- matschalter. Tabelle 7: FLX - Datentraegerformat-Schalter -------------------------------------------- Schalter | Bedeutung -------------------------------------------- /DO | FD16-formatierter Datentraeger | /RS | FM16-formatierter Datentraeger | /RT | FL16-formatierter Datentraeger -------------------------------------------- 2.3.2. Uebertragungsmodus-Schalter ---------------------------------- Dieser Schalter legt den Uebertragungsmodus fest, der verwendet wird. Bei der Uebertragung in beliebiger Richtung zwischen den Formaten FM16 und FD16 oder FM16 und FL16 gibt es drei Modi, die in Tabel- le 8 genannt werden. 27 Tabelle 8: FLX - Uebertragungsmodus-Schalter ---------------------------- Schalter | Bedeutung ---------------------------- /FA[:n] | KOI-7-Code | /FB[:n] | Objektcode | /IM[:n] | Maschinencode ---------------------------- KOI-7-Code ---------- Datensaetze einer FD16- oder FL16-Datei im KOI-7-Code werden begrenzt durch Wagenruecklauf-Zeilenvorschub (CR-LF), Formatvor- schub (FF) oder Vertikaltabulator (VT). Bei der Uebertragung in FM16-Dateien wird CR-LF jeweils vom Satzende entfernt. In umgekehrter Richtung, von FM16-Dateien in andere Dateien, wird CR-LF am Ende jedes Satzes, der noch nicht mit LF oder FF abge- schlossen ist, hinzugefuegt. In beiden Uebertragungsrichtungen werden aus den Eingabesaetzen alle Nullbytes, DEL und VT entfernt. Daten im KOI-7-Code werden als 7-bit-Wert uebertragen. Die Einga- bedatei, die von einem FD16-Datentraeger uebertragen wird, endet mit CTRL/Z. n - Ausgabesatzlaenge in Bytes n = max. 512. Bytes Die Saetze werden mit Nullbytes aufgefuellt. n ist nur fuer die FM16-Ausgabe signifikant. Falls die Ausgabedatei keine FM-Datei ist und n wurde ange- geben, wird n ignoriert. Wird n nicht angegeben, haben die Saetze eine variable Laen- ge. Die Ausgabesatzlaenge entspricht dann der Eingabesatz- laenge. Objektcode ----------- Bei der Uebertragung von Dateien in das FD16- oder FL16-Format werden formatisierte binaere Kopfsaetze geschrieben. Dies ent- faellt bei der Uebertragung in das FM16-Format. n - Ausgabesatzlaenge in Bytes n = max. 512. Bytes vgl. mit KOI-7-Code. Maschinencode -------------- Der Maschinencode fordert eine feste Satzlaenge. n - Ausgabesatzlaenge in Bytes n = max. 512. Bytes n ist nur fuer die FM16-Ausgabe signifikant. Wird n nicht angegeben, haben die Saetze eine Laenge von 512. Bytes. 28 2.3.3. Schalter zur Steuerung und Kontrolle ------------------------------------------- Diese Schalter ueben Steuerungs- und Kontrollfunktionen waehrend der Dateiuebertragung aus. Sie sind in Tabelle 9 zusammenge- stellt. Tabelle 9: FLX - Schalter zur Steuerung und Kontrolle ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- /BL:n | Der Schalter gibt die Anzahl von zusammenhaengenden | Bloecken an, aus denen die Ausgabedatei maximal | bestehen soll. | n = Blockanzahl | Der Schalter wird normalerweise zusammen mit dem | /CO-Schalter verwendet. | Mit dem Schalter /BL:n wird der Ausgabedatei der | erste freie Zwischenraum auf dem Ausgabedatentrae- | ger (Platte) zugewiesen, der mindestens die Groesse | von n Bloecken hat. Belegt die Eingabedatei mehr | als n Bloecke, wird ein Fehler angezeigt. | Es werden jedoch nur die tatsaechlich benoetigten | Bloecke belegt. | Benutzt man die Schalter /BL:n und /RT gemeinsam | fuer die Ausgabedatei, ist der Ausgabedatentraeger | eine FL16-Platte. -----------|----------------------------------------------------- /BS:n | Der Schalter gibt die Blocklaenge fuer Kassetten- | magnetbandausgabe an. | n = Blocklaenge | Dieser Schalter ist nur fuer FM16-Kassettenmagnet- | baender gueltig. -----------|----------------------------------------------------- /CO | Die Ausgabedatei steht zusammenhaengend auf dem | Ausgabedatentraeger. | Der /CO-Schalter gilt nur fuer Plattenausgabe. | /BL:n wird zusaetzlich verlangt, wenn die Eingabe- | datei keine Plattendatei ist. -----------|----------------------------------------------------- /DE | Dateien von einer FD16-Platte werden geloescht. /DE | wird gemeinsam mit /RT benutzt, um Dateien von | einer FL16-Platte zu loeschen. Die Kommandozeile | hat keine Ausgabespezifikation. -----------|----------------------------------------------------- /FC | Der Schalter bewirkt, dass FORTRAN-Vorschubsteu- | erung benutzt wird. FD.FTN wird in den Dateinamen- | block geschrieben. | Der /FC-Schalter gilt nur bei FM16-Datentraeger- | format. -----------|----------------------------------------------------- /ID | Der Schalter fordert die laufende Versionsnummer | von FLX an. | Er kann als eigenstaendiges Kommando oder als Teil | der Ein- oder Ausgabespezifikation des FLX-Komman- | dos auftreten. ----------------------------------------------------------------- 29 Tabelle 9: (Fortsetzung) ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- /LI | Ein Kassettenmagnetband- oder FD16-Datentraegerver- oder | zeichnis wird auf eine Ausgabedatei geschrieben. /DI | Wird /LI gemeinsam mit /RT benutzt, erfolgt die | Ausgabe eines FL16-Datentraegerverzeichnisses in | eine spezifizierte Datei. | Die Verzeichnisausgabe von FM16-Datentraegern ist | mit FLX nicht moeglich. -----------|----------------------------------------------------- /NU:n | Der Schalter wird gemeinsam mit dem /ZE- und /RT- | Schalter benutzt. Er gibt die Anzahl von Verzeich- | nisbloecken an, die bei der Initialisierung einer | FL16-Platte zugewiesen wird. | n = Anzahl von Verzeichnisbloecken (Standard = 4) | Maximale Blockanzahl: n=31. -----------|----------------------------------------------------- /RW | Vor der Datenuebertragung wird das Magnetband zu- | rueckgespult. Wird /-RW angegeben, beginnt FLX die | Uebertragung ohne vorheriges Rueckspulen des Mag- | netbandes. Der Schalter /RW ist Standard und muss | nicht angegeben werden. -----------|----------------------------------------------------- /SP | Die Ausgabedatei wird ueber den Print-Spooler (PRT) | ausgegeben. | /SP ist nur signifikant fuer FM16-Ausgabedateien. -----------|----------------------------------------------------- /UI | Die Ausgabedatei erhaelt den gleichen UIC wie die | Eingabedatei. Wird der UIC in der Ausgabespezifika- | tion explizit angegeben, ist /UI ohne Bedeutung. | Dieser Schalter gilt nur fuer FM16- und FD16-Daten- | traeger. -----------|----------------------------------------------------- /VE | Auf Kassettenmagnetband geschriebene Saetze werden | einzeln gelesen und geprueft. | Der Schalter ist nur fuer Kassettenmagnetbandaus- | gabe signifikant. -----------|----------------------------------------------------- /ZE[:n] | Bei Angabe des Schalters werden Kassettenmagnet- | baender oder FD16-Datentraeger initialisiert. /ZE | wird gemeinsam mit /RT benutzt, um FL16-Datentrae- | ger zu initialisieren. | Die Kommandozeile hat keine Ausgabespezifikation. | Der Schalter kann wahlweise ein Argument n anneh- | men. | n = Anzahl der zusaetzlichen Worte je Verzeichnis- | eintragung. ----------------------------------------------------------------- 2.4. Anwendung -------------- 2.4.1. Lochbandunterstuetzung ----------------------------- FLX unterstuetzt den Lochbandleser und Lochbandstanzer im FD16- Format. Hierzu ist der Datentraegerformat-Schalter /DO anzugeben. 30 Auf der anderen Seite der Uebertragung wird das Datentraegerfor- mat FM16 gefordert, d.h. der Schalter /RS muss angegeben werden. Ohne Angabe von Uebertragungsmodus-Schalter sind den Dateitypen nach Tabelle 3 Standards zugewiesen. Aufbau der Datensaetze ---------------------- - Mit /FA werden KOI-7-Code-Saetze erzeugt. Sofern sie nicht auf LF oder FF enden, werden sie mit CR-LF begrenzt. Das logische Ende wird durch CTRL/Z markiert. - Mit /FB werden Objektcode-Saetze erzeugt. Sie besitzen, einen 4 Bytes langen Vorsatz und enden mit einer 2 Bytes langen Pruef- summe. Ein logisches Ende ist nicht markiert. - Mit /IM werden Maschinencode-Saetze erzeugt. Sie haben eine feste Satzlaenge; Standard ist 512. Bytes. Nur mit diesem Stan- dardwert ist gesichert, dass eine ausgestanzte und wieder ein- gelesene Datei identisch mit der Ausgabedatei ist. Ein logi- sches Ende ist nicht markiert. Beispiele: 1) Einlesen von Lochbaendern: FLX>DK1:/RS=PR:TEST.MAC/DO ---------------------- Die Datei TEST.MAC wird vom Lochband auf die Platte DK1: ge- lesen. 2) Ausstanzen von Lochbaendern: FLX>PP:/DO=DK1:TEST.OBJ/RS ---------------------- Die Datei TEST.OBJ wird ausgestanzt. 3) Kopieren von Lochbaendern: Unabhaengig vom Lochbandformat wird der Uebertragungsmodus- Schalter /IM verwendet. FLX>PP:/DO/IM=PR:/DO ---------------- 2.4.2. Kassettenmagnetband-Unterstuetzung ----------------------------------------- Fuer Kassettenmagnetbaender ist das Datentraegerformat FM16-C (/RS) und FD16-C (/DO) zulaessig. Zwischen beiden Formaten existieren nur geringfuegige Unterschiede, die in Tabelle 10 gegenuebergestellt werden. Tabelle 10: FLX - FM16- und FD16-Kassettenformat --------------------------------------------------------------- | FM16-C-Format | FD16-C-Format --------------------------------------------------------------- Dateiname | 9 Zeichen | 6 Zeichen | | Dateityp | 3 Zeichen | 3 Zeichen | | Versionsnummer | signifikant | nicht signifikant | | Blocklaenge | beliebig bis 512. Bytes| 128. Bytes | | | (Standard: 128. Bytes) | --------------------------------------------------------------- 31 FD16-Kassettenmagnetbaender sind zu FM16-Kassettenmagnetbaender aufwaerts kompatibel. In der Gegenrichtung ist eine Kompatibili- taet nur moeglich, wenn: - die FM16-Datei Bloecke von 128. Bytes Laenge besitzt, - Dateikennsatzdaten, die in FD16-Dateien nicht auftreten (z.B. Versionsnummer), ignoriert werden koennen. FM16- und FD16-Dateien koennen auf einem Kassettenmagnetband gemischt werden, solange sie eindeutig unterscheidbare Dateinamen und -typen besitzen. Auch Dateien mit unterschiedlicher Blocklaenge koennen auf einem Kassettenmagnetband vorkommen. Die Blocklaenge ist in den Datei- kennsatzdaten enthalten. Beispiele: Beschreiben einer Kassette: 1) FLX>CT1:/DO=PR:TEST.MAC/DO ---------------------- Die Datei TEST.MAC wird vom Lochbandleser auf die FD16- Magnetbandkassette CT1: uebertragen. Die Versionsnummer ist nicht signifikant. 2) FLX>CT0:/RS=*.*;0/RS ---------------- Alle Dateien mit der jeweils hoechsten Versionsnummer werden von der Platte DK0: auf die FM16-Magnetbandkassette CT0: uebertragen. Ist die Version auf Kassettenmagnetband bereits vorhanden, wird die Versionsnummer der ubertragenen Datei um 1 erhoeht. Lesen einer Kassette: 1) FLX>/DO --- FLX>=CT1:*.* -------- Der gesamte Inhalt der FD16-Magnetbandkassette CT1: wird auf Platte DK0: im FM16-Format uebertragen. Die Plattendateien sind nicht unbedingt kontinuierlich. 2) FLX>/RS/CO/BL:6=CT0:TEST.MAC;4/RS ----------------------------- Ein- und Ausgabedatentraeger besitzen FM16-Format. Die Datei TEST.MAC;4 wird von dem Kassettenmagnetband CT0: gelesen. Es wird eine kontinuierliche Datei auf der Platte DK0: erzeugt, die maximal aus 6 zusammenhaengenden Bloecken bestehen soll. 2.4.3. 1/2"-Magnetband-Unterstuetzung ------------------------------------- 2.4.3.1. Datentraegerformat FM16-M ---------------------------------- Dieses Format ist zur Verarbeitung durch das FCS 1630 bestimmt. Es entspricht dem ANSI-Standard. Damit es verarbeitet werden kann, muss im OMEX 1630 die ANSI-Unterstuetzung generiert sein. Die Datentraeger sind mittels des MCR-Kommandos INITVOLUME zu initialisieren und zur Verarbeitung einzugliedern. 32 2.4.3.2. Datentraegerformat FD16-M ---------------------------------- Dieses Format wird vorzugsweise mit FLX verarbeitet. Es ist zu FM16-M nicht kompatibel. Spezielle Schalter gestatten Initiali- sierung, Datentraegertransfer und Ausgabe von Inhaltsverzeichnis- sen innerhalb des FLX. Der Datentraeger muss ausgegliedert sein; die ANSI-Unterstuetzung wird nicht benoetigt. Die vollstaendige Spezifikation einer FD16-M-Datei lautet: MTn:[g,m]name.type Eine Versionsnummer ist nicht vorhanden. Innerhalb eines Ver- zeichnisses koennen deshalb verschiedene Versionen nicht abge- speichert werden. Deshalb muss beim Transfer die Versionsnummer der Plattendatei explizit angegeben sein; eine *-Vereinbarung ist nicht zulaessig. Jede Eingabe vom Magnetband veranlasst zunaechst ein Zurueck- spulen. Beispiele: 1) Initialisieren eines Magnetbandes FLX>MT0:/ZE ------- Danach sind alle alten Magnetbanddateien verloren. 2) Uebertragen einer Datei auf Magnetband FLX>MT0:/DO=TEST.MAC/RS ------------------- Die letzte Version der Plattendatei TEST.MAC des Standard- Dateiverzeichnisses wird unter der gleichen Spezifikation auf das im Geraet MT0: befindliche, initialisierte Magnetband uebertragen. 3) Uebertragen mehrerer Dateien auf Platte FLX>/RS=MT:*.*/DO ------------- Alle Dateien mit der Nummer des Standard-Nutzerverzeichnisses werden auf die Platte uebertragen und in das Standard-Nutzer- verzeichnis aufgenommen. 4) Uebertragen aller Dateien auf Platte FLX>DK1:[200,14]/RS=MT1:[*,*]*.*/DO ------------------------------- Alle Dateien werden auf DK1: uebertragen und in das Nutzerver- zeichnis [200,14] aufgenommen. Wie auch im Beispiel 3 koennen nach Neustart von FLX die Schalter /RS und /DO weggelassen werden, da als Standard fuer die Eingabedatei /RS und fuer die Ausgabedatei /DO gilt. 5) Druck eines Inhaltsverzeichnisses FLX>LP:=MT1:[200,*]/LI ------------------ Alle Dateinamen mit der Nutzerverzeichnis-Gruppennummer 200 werden ausgedruckt. 33 2.4.4. Initialisieren von Datentraegern --------------------------------------- Ausser Kassettenmagnetbaendern koennen FM16-formatierte Daten- traeger mit FLX nicht initialisiert werden. 2.4.4.1. Kassettenmagnetbaender und FD16-Datentraeger ----------------------------------------------------- Mit dem FLX-Schalter /ZE werden Kassettenmagnetbaender und FD16- Datentraeger initialisiert. Das Kommando enthaelt nur die Gerae- tespezifikation fuer den Datentraeger, der initialisiert werden soll. Beispiel: FLX>DK1:/ZE ------- Initialisieren der Platte DK1: im FD16-D-Datentraegerformat. 2.4.4.2. FL16-Datentraeger -------------------------- Der Schalter /ZE wird gemeinsam mit dem /RT-Schalter benutzt, um FL16-Datentraeger zu initialisieren. Das Kommando enthaelt nur die Geraetespezifikation fuer den zu initialisierenden Datentrae- ger. Mit dem /ZE-Schalter kann bei FL16-Datentraegern wahlweise ein Argument angegeben werden: /ZE:[n] n - Anzahl von zusaetzlichen Worten je Verzeichniseintragung Ein Verzeichnissegment belegt zwei Bloecke auf der Platte und ist 512. Worte lang. Es besteht aus: Verzeichniskopf: 5 Worte Verzeichniseintragungen: 507. Worte Jede Verzeichniseintragung ist normalerweise 7 Worte + n zusaetz- liche Worte lang. 2 Verzeichniseintragungen innerhalb jedes Ver- zeichnissegments werden zum Dateisystem zugeordnet. Die Anzahl der Verzeichniseintragungen je Segment wird folgendermassen be- stimmt: [507./(n+7)]-2 Falls keine zusaetzlichen Worte fuer Verzeichniseintragungen angegeben werden, also n=0, ergibt sich fuer die Anzahl der Ein- tragungen je Segment: (507./7)-2 = 72.-2 = 70. Eintragungen Wird der /NU-Schalter gemeinsam mit dem /ZE- und /RT-Schalter benutzt, wird dadurch die Anzahl von Verzeichnissegmenten angege- ben, die dem FL16-Datentraeger zugewiesen werden. 34 Beispiele: 1) FLX>DK0:/ZE/RT ---------- Initialisieren der FL16-Platte DK0:. Zusaetzliche Worte fuer Verzeichniseintragungen werden nicht angegeben. 4 Verzeichnissegmente werden der Platte standard- maessig zugeordnet. 2) FLX>DK1:/ZE:1/NU:5/RT ----------------- Initialisieren der FL16-Platte DK1:. 1 zusaetzliches Wort je Verzeichniseintragung und 5 Verzeich- nissegmente werden zugeordnet. 2.4.5. Erstellen von Verzeichnislisten -------------------------------------- Ausser Kassettenverzeichnissen koennen Verzeichnisse von FM16- formatierten Datentraegern mit FLX nicht ausgegeben werden. 2.4.5.1. Kassettenmagnetbaender und FD16-Datentraeger ------------------------------------------------------ Durch Verwendung des /LI-Schalters koennen Verzeichnislisten von Magnetbandkassetten oder FD16-Datentraegern ausgegeben werden. Beispiele: 1) FLX>CT0:/LI ------- Das Verzeichnis der Magnetbandkassette CT0: wird ueber das Bediengeraet ausgegeben. Fuer das Ausgabegeraet wird standard- maessig TI: angenommen. 2) FLX>LP:=DK0:[200,50]/LI ------------------- Das Verzeichnis von allen Dateien des UFD [200,50] auf der FD16-Platte DK0: wird ueber Drucker (LP:) ausgegeben. 2.4.5.2. FL16-Datentraeger -------------------------- Wird der /LI-Schalter gemeinsam mit dem /RT-Schalter benutzt, kann das Verzeichnis eines FL16-formatierten Datentraegers ausge- geben werden. Beispiel: FLX>LP:=DK1:*.OBJ/LI/RT ------------------- Das Verzeichnis von allen .OBJ-Dateien auf der FL16-Platte DK1: wird ueber Drucker (LP:) ausgegeben. 35 2.4.6. Loeschen von Dateien --------------------------- Mit dem Schalter /DE koennen Dateien von FD16-Platten geloescht werden. Das Kommando enthaelt nur die Dateispezifikation fuer die zu loeschende Datei. Wird der /DE-Schalter gemeinsam mit dem /RT-Schalter angegeben, koennen Dateien von FL16-Platten geloescht werden. Beispiele: 1) FLX>DK0:TEST1.MAC/DE ---------------- Loeschen der Datei TEST.MAC von der FD16-Platte DK0:. 2) FLX>DK1:TEST2.DAT/DE/RT ------------------- Loeschen der Datei TEST2.DAT von der FL16-Platte DK1:. 2.5. Fehlermitteilungen ----------------------- Wenn Fehler waehrend der Verarbeitung bei FLX auftreten, werden entsprechende Fehlermitteilungen auf dem Bediengeraet ausgegeben. Die verschiedenen Fehlermitteilungen werden nachfolgend aufge- fuehrt. FLX -- BAD LIST FILE SPEC - Mehr als eine Ausgabedatei bei einer Verzeichnisausgabe oder - Sternvereinbarungen in der Ausgabedatei bei Verzeichnisausgabe wurden angegeben. FLX -- BAD RESPONSE Auf die Frage MOUNT NEW CASSETTE? (Y, Z (OUTPUT ONLY) OR CR) FLX> wurde Z eingegeben. Es wird nach dem Eingabedatentraeger gefragt. (Y oder eingeben.) FLX -- CAN'T OPEN @ FILE Die Indirektkommando-Datei kann nicht eroeffnet werden. Ursachen dafuer koennen sein: - Stoerung auf physischem Geraet. - Datentraeger ist nicht eingegliedert. - Datei ist gegen Zugriff geschuetzt. - Das angegebene Dateiverzeichnis existiert nicht. - Die genannte Datei existiert nicht im angegebenen Verzeichnis. FLX -- CASSETTE ERROR I/O TERMINATED Auf einem Kassettenmagnetbandgeraet ist ein unerwarteter Hard- ware-Fehler aufgetreten. Die Uebertragung wird abgebrochen. Es ist ein neues Kassettenmagnetband zu benutzen. FLX -- CO FILES FROM INPUT DEVICE NOT ALLOWED UNLESS BL: SPEC Bei der Uebertragung von Dateien vom Lochbandleser, Magnetband oder Kassettenmagnetband muss bei Angabe des /CO-Schalters gleichzeitig der /BL-Schalter angegeben werden. 36 FLX -- CO FILES TO OUTPUT DEVICE NOT ALLOWED Ein unerlaubtes Ausgabegeraet (z.B.: MT:, CT: oder PP:) wurde ge- meinsam mit dem /CO-Schalter angegeben. FLX -- COMMAND SYNTAX ERROR Das angegebene Kommandoformat stimmt nicht mit den Syntaxregeln ueberein. FLX -- CONFLICTING TRANSFER MODES SPECIFIED Widerspruechliche Uebertragungsmodus-Schalter wurden angegeben. FLX -- DEVICE HANDLER MISSING Der Geraete-Driver ist nicht geladen. FLX -- FD16 OR FL16 DEVICE NOT VALID FORMAT Das Geraet, das mit dem /DO- bzw. /RT-Schalter spezifiziert wur- de, hat eine fehlerhafte FD16- bzw. FL16-Dateistruktur. FLX -- DT: UFD FULL Das Dateiverzeichnis ist voll. FLX -- END OF VOLUME ON CASSETTE MOUNT NEW CASSETTE? (Y, Z(OUTPUT ONLY) OR CR) Waehrend einer Kassettenmagnetband-Uebertragung ist physisches Bandende aufgetreten. Das Band wird zurueckgespult und der Nutzer wird gefragt, ob ein weiteres Kassettenmagnetband benutzt werden soll (s. Abschn. 2.4.2.2.). FLX -- ERROR DURING DIRECTORY I/O Eine der folgenden Fehlerbedingungen tritt auf: - Datentraeger ist nicht beschreibbar. - /DO-, /RT- oder /RS-Schalter wurde fehlerhaft spezifiziert. - Datentraeger ist nicht in korrektem Format. - Hardware-Fehler waehrend der Verzeichnis-Ein-/Ausgabeoperation (z.B.: fehlerhaftes Band). FLX -- FILE ALREADY EXISTS Die angegebene Ausgabedatei existiert bereits auf dem Ausgabege- raet. Ein neuer bzw. korrekter Dateiname ist zu benutzen. FLX -- @ FILE NESTING EXCEEDED Es wurde mehr als eine Stufe von Indirektkommando-Dateien spezi- fiziert. FLX -- FILE NOT FOUND Der angegebene Dateiname kann im betreffenden Verzeichnis nicht gefunden werden. FLX -- @ FILE SYNTAX ERROR Ein Syntaxfehler ist in der Dateispezifikation der Indirekt- kommando-Datei aufgetreten. Die Indirektkommando-Datei muss neu aufbereitet werden. Danach Neustart von FLX. FLX -- FMTD ASCII RECORD FORMAT BAD oder FLX -- FMTD BINARY RECORD FORMAT BAD Die Datei ist entweder zerstoert oder es handelt sich nicht um den spezifizierten Typ. 37 FLX -- ILLEGAL /BS SIZE -- USE 0 eingegeben, als Datentraegerende bei Kassettenausgabe auftrat. Der Block, den FLX bei Erreichen des Kassettenendes versucht hatte zu schreiben, ist nicht geschrieben worden. Die Ausgabedatei ist unvollstaendig. FLX -- SPECIFIED RECORD SIZE BAD, 512. USED Die Satzlaenge, die mit dem /FA-, /FB- oder /IM-Schalter angege- ben wurde, ist nicht akzeptabel. Eine Satzlaenge von 512. Bytes wird angenommen. FLX -- UNABLE TO ALLOCATE FILE Es ist kein verfuegbarer Speicherplatz fuer die spezifizierte Datei auf dem FD- oder FM16-Datentraeger. Der Datentraeger ist voll belegt. Alle unnoetigen Dateien sind zu loeschen. FLX -- UNABLE TO OPEN FILE Eine spezifizierte Ein- oder Ausgabe-FM16-Datei kann aus einem der folgenden Gruende nicht eroeffnet werden: - Die Eingabedatei existiert nicht. - Der Datentraeger ist nicht eingegliedert. - Eine Schutzverletzung tritt auf. FLX -- UNABLE TO OPEN LIST FILE Die Listendatei kann unter dem spezifizierten Dateinamen und UFD nicht eroeffnet werden. Das angegebene Geraet kann kein gueltiger FM16-Datentraeger sein. FLX -- UNDIAGNOSABLE REQUEST FLX erkennt die Kommandozeile nicht an. FLX -- WARNING -- INPUT FILE OUT OF SEQUENCE Eine Kassettenmagnetbanddatei mit mehreren Datentraegern wird ausser der Reihenfolge verarbeitet. Warnmeldung! Die Uebertragung wird fortgesetzt, falls kein ABO- Kommando gegeben wird. 39 FLX -- * IN OUTPUT UIC NOT ALLOWED Eine Sternvereinbarung wurde im Ausgabe-UIC der Ausgabedateispe- zifikation erkannt. Bei Neueingabe der Kommandozeile ist der Ausgabe-UIC ausdrueck- lich anzugeben (FM16 bzw. FD16). FLX -- * IN VERSION NUMBER NOT ALLOWED Eine Sternvereinbarung wurde im Versionsnummernfeld der Datei- spezifikation erkannt. Bei Neueingabe der Kommandozeile sind die Versionsnummern aus- druecklich anzugeben (FM16). 40 3. Dateiaustauschprogramm FEX 1630(OMEX) ---------------------------------------- 3.1. Vorbemerkungen ------------------- FEX ist ein Dienstprogramm zur Datenuebertragung zwischen ver- schieden formatierten Datentraegern und ergaenzt die Leistungen des Dateiumwandlungsprogrammes FLX 1630(OMEX). Es sind Uebertragungen moeglich zwischen den Datentraegerfor- maten: FM16-D bzw. FM16-M und FE16 sowie FM16-D bzw. FM16-M und FQ16. Ohne generierte Unterstuetzung des FM16-M-Formates (ANSI) bedient FEX nur FM16-D. Zum Datentraegerformat FE16 gehoeren: - FE16-C nach KROS 5109; 1/8"-Magnetband-Kassette, - FE16-D nach KROS 5108/01; Diskette und Bibliotheksformat SOURCELB des SIOS 1526 u.ae. Systeme, - FE16-M nach KROS 5111; 1/2"-Magnetband. Zu FQ16 gehoeren spezielle Formate, die in Anlage 1 erlaeutert sind. Ausser den Uebertragungsmoeglichkeiten bietet FEX - Verzeichnisausgabe von allen Datentraegern, die nicht das FM16- Format besitzen. - Initialisieren aller Datentraeger, die nicht das FM16-Format besitzen. FEX unterstuetzt eine Indirektkommando-Datei-Ebene. In vorliegen- der Schrift sind alle vorgesehenen Arbeitsmoeglichkeiten des FEX beschrieben. Konfiguration und Stand der Ausgabe entscheiden, welche Leistungen nutzbar sind. Dies kann mit Hilfe des Schalters /HE erfragt werden. 3.2. Kommandoformat ------------------- 3.2.1. Allgemeiner Kommandoaufbau --------------------------------- Die Kommandos fuer FEX haben das allgemeine Format: outfile=infile Sowohl outfile als auch infile sind spezifiziert durch: dev:[g,m]name.type;version/switch Nicht in jedem Fall sind alle Teile des Kommandos notwendig bzw. erlaubt. 3.2.2. Standardannahmen ----------------------- Unter diesem Punkt sind nur die dateiorientierten Standardannah- men aufgefuehrt, die satz- und datenorientierten sind formatbe- dingt unterschiedlich und den Anlagen zu entnehmen. 41 3.2.2.1. Ausgabe auf FM16-Geraet -------------------------------- - Ausgabeseite (FM16): dev: - kann entfallen; es wird dafuer SY0: angenommen. [g,m] - kann entfallen; es wird dafuer der Standard-UIC verwendet. type - kann entfallen; er wird dann aus dem Eingabenamen entsprechend Abschnitt 3.2.2.3. generiert. ;version - kann entfallen; es wird dafuer die neue hoechst- gueltige Versionsnummer erzeugt. /switch - zulaessiger Schalter Die entstehende FM16-Datei ist im allgemeinen diskontinuierlich. Die Saetze haben variable Laenge und ueberschreiten Blockgrenzen (siehe Schalter /FM). Besteht die Spezifikation der FM16-Ausgabeseite nur aus dem Da- teinamen und lautet dieser LP, so erfolgt die Ausgabe bedingungs- los durch den Print-Spooler. Die dabei benoetigte Plattendatei ist nach Abschluss der Ausgabe geloescht. - Eingabeseite (FE16 oder FQ16): dev: - Angabe erforderlich [g,m] - Angabe unzulaessig name.type - Angabe erforderlich, wenn ein Verzeichnis vor- handen ist; entsprechend Abschnitt 3.2.2.3. ent- stehen verschiedene Eingabevarianten, *-Verein- barungen sind moeglich. ;version - Angabe moeglich, wenn es das Verzeichnis zu- laesst. Bei aktuellen Versionsnummern auf dem Datentrae- ger koennen *-Vereinbarungen verwendet werden. /switch - Mindestens das Datentraegerformat ist anzugeben. Fuer Satz- und Datenformat werden ansonsten Stan- dardannahmen gemaess Anlagen verwendet. 3.2.2.2. Eingabe von FM16-Geraet -------------------------------- - Ausgabeseite (FE16 oder FQ16): dev: - muss angegeben werden [g,m] - Angabe unzulaessig name.type - sollte angegeben werden, wenn der FM16-Name nicht verwendet werden kann und der Datentraeger ein Verzeichnis besitzt. ;version - Angabe moeglich, wenn es das Verzeichnis zu- laesst. /switch - das Datentraegerformat ist anzugeben. - Eingabeseite (FM16): dev: - kann entfallen, es wird dafuer SY0: angenommen [g,m] - kann entfallen, es wird dafuer der Standard-UIC verwendet name.type - muss angegeben werden, *-Vereinbarungen sind moeglich ;version - kann angegeben werden, *-Vereinbarung ist moeg- lich /switch - zulaessiger Schalter 42 3.2.2.3. FE16- oder FQ16-Eingabenamenkonvention ----------------------------------------------- Um die Dateinamen auf den unterschiedlichsten Datentraegern der Syntax des OMOS 1630 anzupassen und die Verwendung von *-Verein- barungen zu ermoeglichen, wird folgendermassen verfahren: Jeder Dateiname auf einem Nicht-FM16-Datentraeger wird intern in einen adaequaten FM16-Namen umgewandelt: - Einteilen des Namens von links in 3-er Gruppen. Die letzte, nicht notwendigerweise vollstaendige 3-er Gruppe wird als Typ expandiert. - Diese Expansion unterbleibt, wenn der Name aus mehr als 9 Zeichen besteht. - Maximal 12 Zeichen werden verarbeitet. Restliche Zeichen sind nicht mehr signifikant. - Enthaelt die Zeichenkette einen Punkt, werden die nachfol- genden maximal 3 Zeichen als Typ gewertet. Enthaelt die Zeichenkette ein Semikolon, werden nachfolgende Ziffern als Versionsnummer gewertet. - Die Zeichen muessen zur Gruppe der alphanumerischen Zeichen einschliesslich des $-Symbols gehoeren, die Sonderfunktion des Punktes wurde erlaeutert. Alle anderen Zeichen beenden den signifikanten Namen. Der entstehende adaequate FM16-Name kann fuer *-Operationen herangezogen werden. Beispiel: ---------------------------------------------------- | Dateiname auf | entstehender interner | Nicht-FM16 Datentraeger | adaequater Name ---------------------------------------------------- 1 | ABCDE | ABCDE.DE 2 | XYZUVWDE | XYZUVWDE.DE 3 | AB.DE | AB.DE 4 | ABC.D | ABC.D 5 | ABCD | ABCD.D 6 | ABCDEFD | ABCDEFD.D 7 | ABCD.EFD | ABCD.EFD 8 | ABCDEFGHIJKL | ABCDEFGHI.JKL Eine Eingabe von einem 1/2"-Magnetband im Format FE16, welches diese Namen enthaelt, kann folgendermassen aussehen: =MT:*.DE/ES Damit werden die Dateien 1, 2 und 3 gelesen. Ebenso koennten mit =MT:ABCD.*/ES die Dateien 5 und 7 uebertragen werden. Fehlt die Angabe von Name und Typ, so werden formatabhaengige Standardannahmen gemacht. Besitzt der Eingabe-Datentraeger kein Verzeichnis oder keine Kennsaetze, so dass kein Dateiname erzeugt werden kann, werden Standardname und Standardtyp FEX.FEX erzeugt, und zwar in aufsteigender Versionsnummernfolge. Die Versionsnummern 0 und -1 sind unzulaessig. 43 3.2.2.4. FE16- oder FQ16-Ausgabenamenkonvention ----------------------------------------------- Der Ausgabe-Dateiname wird den Erfordernissen des Datentraegers angepasst. Freie Stellen werden bedarfsweise mit Leerzeichen oder Nullen aufgefuellt. Ist es notwendig, den Namen zu kuerzen, wird das ohne Mitteilung an den Bediener durchgefuehrt. Erlaubt bei- spielsweise ein Datentraeger nur Dateinamen, die aus maximal Zeichen bestehen, kuerzt FEX den Namen NAMEX1 auf NAMEX. Eine zweite Datei mit dem Namen NAMEX2 wird nicht uebertragen da der Name bereits existiert. Ist ein Ausgabe-Dateiname nicht spezifiziert, verwendet FEX da- fuer den aktuellen Eingabe-Dateinamen. Wenn das Verzeichnis die Verwendung von Versionsnummern zulaesst, und es wird davon Gebrauch gemacht, sind diese immer explizit anzugeben. Die Versionsnummern werden nicht mitgezaehlt, sondern nur als zusaetzliches Merkmal zur Dateispezifizierung benutzt. 3.3. Schalter ------------- FEX besitzt zwei wesentliche Gruppen von Schaltern: Die Transfer-Schalter und die Steuer- und Kontrollschalter. Mit den Transfer-Schaltern wird die Art der beabsichtigten Ueber- tragung ausgewaehlt. Waehrend der Datentraegerformat-Schalter in jedem Kommando ange- geben werden muss, ist dies bei den Satzformat-Schaltern und Datenformat-Schaltern nicht erforderlich. Eine mit /DF festgeleg- te Spezifikation wird bei den beiden letztgenannten Schaltertypen bis zu einer Neufestlegung beibehalten. Nichtdefinierte Bestimmungselemente werden durch Standards er- setzt. Dabei gilt die Reihenfolge (siehe auch Beschreibung /DF): - fest spezifizierte Standardwerte (1. Stufe) - mit /DF spezifizierte Standardwerte (2. Stufe) - im aktuellen Kommando spezifizierte Werte (3. Stufe) - Verwenden der Werte, die aus Informationen vom Datentraeger gewonnen werden koennen (4. Stufe). Diese letzte Festle- gungsstufe kann durch den Schalterwert mod2=BY unterdrueckt werden. In diesem Fall verwendet FEX nur noch den Datei- namen vom Datentraeger. Nachfolgend sind fuer Geraete die symbolischen Schreibweisen benutzt worden. Es bezeichnen: CT: 1/8"- Magnetband-Kassette DY: 8"- Diskette mit 128. Bytes Sektorgroesse MT: 1/2"- Magnetband PP:PR: 7/8 - Kanal-Lochband 44 3.3.1. Transfer-Schalter ------------------------ 3.3.1.1. Datentraegerformat-Schalter (/ES, /QU) ----------------------------------------------- Diese Schalter definieren das Format des angegebenen Datentrae- gers. Sie gelten grundsaetzlich fuer Datentraeger im Nicht-FM16- Format. Einer der beiden an der Uebertragung beteiligten Daten- traeger muss ein FM16-Datentraeger sein. Zur genaueren Spezifi- zierung besitzen die Datentraegerformat-Schalter weitere Schal- terwerte. - Global genormte Datentraegerformate /ES:mod1:mod2:mod3 /ES Sammelbezeichnung (establish-formated) :mod1 Datentraegerformat-Spezifizierung Tabelle 11: FEX - Datentraegerformatspezifizierung fuer /ES (mod1) ---------------------------------------------------------------- Geraet| mod1 | Datentraegerformat | Bezeichnung ---------------------------------------------------------------- CT: | ohne | KROS-5109 Basisstufe | FE16-C | | | | CP | KROS-5109 Kompaktstufe | FE16-C:CP | | | | EX | KROS-5109 Ausbaustufe | FE16-C:EX -------|------|--------------------------|---------------------- DY: | ohne | KROS-5108/01 Basisaus- | FE16-D | | tauschniveau | | | | | EX | KROS-5108/01 erweitertes | FE16-D:EX | | Austauschniveau | | | | | SL | Bibliotheksformat ueber | FE16-D:SL | | SOURCELB fuer K1520 | | | (SIOS 1526 u. ae.) | | | | | TX | Bibliotheksformat fuer | FE16-D:TX | | Systemkomponente TEXT | | | des SIOS 1526 | -------|------|--------------------------|---------------------- MT: | ohne | KROS-5111 | FE16-M | | | | NL | Daten nach KROS-5111 | FE16-M:NL | | keine Kennsaetze | -------|------|--------------------------|---------------------- PP:PR | ohne | Satzformat Y | FE16-P | | | ---------------------------------------------------------------- 45 :mod2 Funktions-Spezifizierung Tabelle 12: FEX - Funktions-Spezifizierung fuer /ES (mod2) ----------------------------------------------------------------- Geraet | mod2 | Wirkung ----------------------------------------------------------------- | | CT: | BY | Ignorieren von dateibeschreibenden DY: | | Kennsatzinformationen ausser dem Datei- MT: | | namen --------|------|------------------------------------------------- CT: | AP | Im kennsatzlosen Format (FE16-C und FE16-M:NL) MT: | | wird vor Schreibbeginn nicht zwischen, sondern | | vor die Doppelbandmarke positioniert. Es wird | | also keine neue Datei erzeugt, sondern die letz- | | te Datei erweitert. | | | SF:n | Vorsetzen (n=1...99.) des Datentraegers um n | | (dezimal) Dateien vor Uebertragungsbeginn bei | | kennsatzlosen Formaten (FE16-C und FE16-M:NL) --------|------|------------------------------------------------- DY: | HD | Bei FE16-D:TX wird die Briefkopfinformation mit | | ausgegeben | | ----------------------------------------------------------------- :mod3 Funktions-Ergaenzung Tabelle 13: FEX - Funktions-Ergaenzung fuer /ES (mod3) ----------------------------------------------------------------- Geraet | mod3 | Wirkung ----------------------------------------------------------------- | | DY: | C | Der Datentraeger wird mit Kopierschutz verar- | | beitet (FE16-D:EX). --------|------|------------------------------------------------- DY: | PA | Bei FE16-D:TX wird mit Seitenorganisation ge- | | arbeitet. | | ----------------------------------------------------------------- Bei der Verarbeitung des Formats FE16-D werden die Felder - Umgehungsanzeiger B - Kopieranzeiger C beachtet. Die Datei wird nur dann uebertragen, wenn der Umge- hungsanzeiger nicht auf B und der Kopieranzeiger nicht auf C steht. Nach erfolgreicher Uebertragung wird der Kopieranzeiger auf C gesetzt. 46 - Lokal genormte Datentraegerformate /QU:mod1:mod2:mod3 /QU Sammelbezeichnung (queer-formated) :mod1 Datentraegerformat-Spezifizierung Tabelle 14: FEX - Datentraegerformat-Spezifizierung fuer /QU (mod1) ---------------------------------------------------- Geraet | mod1 | Datentraegerformat | Bezeichnung ---------------------------------------------------- CT: | RE | formatfreie Datener- | FQ16-C:RE | | fassung am Datener- | | | fassungsgeraet robo- | | | tron 1370/1372 (nur | | | Eingabe) | --------|------|----------------------|------------- DY: | IS | ISIS-Format | FQ16-D:IS --------|------|----------------------|------------- MT: | PO | POWER-Format (nur | FQ16-M:PO | | Ausgabe) des DOS/ES | | R4 | Sondermagnetbandfor- | FQ16-M:R4 | | mat des PLOS/OSEP | | | des RS 4000 | --------|------|----------------------|------------- PP:PR: | R4 | DEG-Format der | FQ16-P:R4 | | RS 4000/4200 | | | | ---------------------------------------------------- :mod2 Funktions-Spezifizierung Tabelle 15: FEX - Funktions-Spezifizierung fuer /QU (mod2) ---------------------------------------------------------- Geraet | mod2 | Wirkung ---------------------------------------------------------- CT: | SF:n | Vorsetzen (n=1...99.) des Datentraegers MT: | | um n (dezimal) Dateien --------|------|------------------------------------------ PR: | P8 | Kontrolle auf gerade Paritaet | | ---------------------------------------------------------- :mod3 Funktions-Ergaenzung Tabelle 16: FEX - Funktionswert-Ergaenzung fuer /QU (mod3) ----------------------------------------------------------------- Geraet | mod3 | Wirkung ----------------------------------------------------------------- PR: | MI | Wertung der Codierung 44 als Irrungszeichen | | (Satz wird ignoriert), Umwandlung von 45 in 44 --------|------|------------------------------------------------- PP: | MI | Umwandlung von 44 in 45 | | ----------------------------------------------------------------- 47 3.3.1.2. Satzformat-Schalter (/RK, /FM) --------------------------------------- - FE16- oder FQ16-Format-Schalter Die Angabe des Satzformats ist nur erforderlich, wenn ein vom Standard abweichender oder sonst nicht erkennbarer Aufbau des Datentraegers gewuenscht wird oder vorliegt. Dieser Satzformat- schalter ist auf der Eingabeseite anzugeben. In jedem Fall muss eine Formatfestlegung vollstaendig sein. /RK:frmchr:blksiz:recsiz:recend:filend /RK Sammelbezeichnung (record kernel) :frmchr Satzformat Die Angabe eines Satzformats wird bei den Datenformaten /FB und /FI ignoriert. Tabelle 17: FEX - Satzformatangabe fuer /RK (frmchr) ----------------------------------------------------------------- frmchr| Format ----------------------------------------------------------------- | D | variable Satzlaenge | dezimaler Satzlaengenzaehler | DB | wie D, zusaetzlich geblockt | F | feste Satzlaenge | FB | wie F, zusaetzlich geblockt | FR | wie F, zusaetzlich geblockt und segmentiert | S | variable Satzlaenge | dezimaler Satzlaengenzaehler mit Segmentindikator, | segmentiert | SB | wie S, zusaetzlich geblockt | U | undefinierte Satzlaenge | V | variable Satzlaenge | binaerer Block- und Satzlaengenzaehler | VB | wie V, zusaetzlich geblockt | VR | wie V, zusaetzlich geblockt und segmentiert | VS | wie V, zusaetzlich segmentiert | Y | undefinierte Satzlaenge, mit Endezeichen | YB | undefinierte Satzlaenge, geblockt oder Endezeichen | ----------------------------------------------------------------- 48 Die Satzformate sind nicht alle fuer jedes Datentraegerformat sinnvoll. Ohne besondere Zuweisung durch den Bediener nimmt FEX standardmaessig bestimmte Formate an. Tabelle 18: FEX - Standard-Satzformate beim Datenformat /FD ------------------------------------------------------- Geraet | Standardformat ------------------------------------------------------- | CT: | DB (F bei FQ16-C:RE) | DY: | F | MT: | DB (V bei FQ16-M:PO, Y bei FQ16-M:R4) | PP:PR: | Y | ------------------------------------------------------- Das Datenformat /FB wird immer im Satzformat DB und das Daten- format /FI immer im Satzformat F uebertragen. Das Satzformat Y kann erzwungen werden, wenn der Datentraeger im Satzformat F organisiert ist und Blockgroesse gleich Satzgroesse ist. Die Kennsatzverarbeitung des FEX muss durch mod2=BY im /ES-Schalter darauf eingestellt werden. Implizit ist das Format Y bei den Lochbandformaten wirksam. In der folgenden Tabelle ist dargestellt, welche Satzformate bei den verschiedenen Datentraegerformaten sinnvoll sind. 49 Tabelle 19: FEX - Satzformate bei Datentraegerformaten ---------------------------------------------- Datentraeger- | Satzformat | format | | | D|D|F|F|F|S|S|U|V|V|V|V|Y|Y | | |B| |B|R| |B| | |B|R|S| |B | ---------------------------------------------| | | | | | | | | | | | | | | | FE16-C | *|*|*|*| |*|*| |*|*|*|*| | | | | | | | | | | | | | | | | | FE16-C:CP | *|*|*|*| |*|*| |*|*|*|*| | | | | | | | | | | | | | | | | | FE16-C:EX | *|*|*|*| |*|*| |*|*|*|*| | | | | | | | | | | | | | | | | | FE16-D | | |*| | | | | | | | | |*|* | | | | | | | | | | | | | | | | FE16-D:EX | | |*|*|*| | | | | | | |*|* | | | | | | | | | | | | | | | | FE16-D:SL | | | | | | | | | | | | | | | (1) | | | | | | | | | | | | | | | FE16-M | *|*|*|*| |*|*|*|*|*|*|*| | | | | | | | | | | | | | | | | | FE16-M:NL | *|*|*|*| |*|*|*|*|*|*|*| | | | | | | | | | | | | | | | | | FE16-P | | |*| | | | | | | | | |*| | | | | | | | | | | | | | | | | FQ16-C:RE | | |*| | | | | | | | | | | | | | | | | | | | | | | | | | | FQ16-D:IS | | | | | | | | | | | | | | | (1) | | | | | | | | | | | | | | | FQ16-M:PO | | | | | | | | |*| | | | | | | | | | | | | | | | | | | | | FQ16-M:R4 | | | | | | | | | | | | |*| | | | | | | | | | | | | | | | | FQ16-P:R4 | | | | | | | | | | | | |*| | | | | | | | | | | | | | | | | ---------------------------------------------- Anmerkung (1): Diese Datentraegerformate sind bibliotheksorien- tiert. Deshalb ist die Satzstruktur von der Orga- nisation her vorgegeben, eine Spezifizierung im /RK-Schalter wird ignoriert. :blksiz Blockgroesse (geradzahlig) der FE16- oder FQ16-Datei: Wird auf Magnetband bzw. Magnetbandkassette geschrie- ben, sind 18. bzw. 32. Bytes Mindestblockgroesse gefor- dert. Die Blockgroesse darf bei der Magnetbandkassette 256. Bytes und bei der Diskette 128. Bytes (bzw. 32767. Bytes bei erweitertem Datenaustauschniveau) nicht ue- berschreiten. :recsiz Satzgroesse Standardmaessig wird bei FM16-Eingabe die Groesse des laengsten Satzes der Datei (FDB-Offset F.RSIZ) verwen- det. Aus der Satzgroesse wird die Groesse des Nutzer- satzpuffers im FEX abgeleitet. Er muss den groessten auftretenden Datensatz aufnehmen koennen. Zwischen Block- und Satzgroesse sind formatabhaengige Beziehungen zu beachten. 50 Tabelle 20: FEX - Beziehungen zwischen Block- und Satzgroesse ------------------------------------------------------- Satzformat | Bedeutung ------------------------------------------------------- | D | blksiz>=recsiz+4 | Der Block kann mit fillc (Fuellzeichen) | aufgefuellt sein. | DB | blksiz>=n(recsiz+4) | Der Block kann mit fillc aufgefuellt sein. | F | blksiz=recsiz | Der Satz ist mit fillc aufgefuellt. | FB | blksiz=n(recsiz) | Jeder Satz ist mit fillc aufgefuellt. Der | letzte Block ist auf den signifikanten | Dateninhalt gekuerzt. | FR | blksiz = physische Sektorgroesse | recsiz beliebig. | Jeder Satz ist mit fillc aufgefuellt. Der | letzte Block ist auf den signifikanten | Dateninhalt gekuerzt. | S | blksiz und recsiz beliebig. | Jeder Block, der ein letztes Satzsegment | enthaelt, kann mit fillc aufgefuellt sein. | SB | blksiz und recsiz beliebig. | Der Block kann mit fillc aufgefuellt sein. | U | blksiz=recsiz | Jeder Block ist auf den signifikanten | Dateninhalt gekuerzt. | V | blksiz>=(recsiz+4)+4 | Jeder Block ist auf den signifikanten | Dateninhalt gekuerzt. | VB | blksiz>=n(recsiz+4)+4 | Jeder Block ist auf den signifikanten | Dateninhalt gekuerzt. | VR | blksiz und recsiz beliebig. | Der letzte Block ist auf den signifikanten | Dateninhalt gekuerzt. | VS | blksiz und recsiz beliebig. | Jeder Block, der ein letztes Satzsegment | enthaelt, ist auf den signifikanten Daten- | inhalt gekuerzt. | ------------------------------------------------------- 51 Tabelle 20: (Fortsetzung) ------------------------------------------------------- Satzformat | Bedeutung ------------------------------------------------------- | Y | blksiz und recsiz beliebig. | Jeder Satz ist durch recend abgeschlossen. | Dem letzten Satz folgt filend. Der rest- | liche Inhalt des letzten Blockes ist nicht | signifikant. recend und filend sind nicht | Bestandteil der Daten. | YB | blksiz und recsiz beliebig. | Jeder Satz kann durch recend vorzeitig | beendet werden. Die Datei wird bei Erken- | nen eines filend innerhalb eines Satzes | beendet. recend und filend sind nicht | Bestandteil der Daten. | ------------------------------------------------------- Die Blockgroesse muss in jedem Fall geradzahlig sein. Entsteht durch Kuerzen eine ungeradzahlige Block- groesse, stellt FEX durch Anhaengen eines Fuellzeichens fillc die Geradzahligkeit wieder her. Die Schalterwerte blksiz und recsiz sind, wenn sie Oktalwerte bezeichnen sollen, mit # anzugeben. :recend Satzendezeichen im Format Y Ein oder zwei Bytes koennen als 6-stellige Oktalzahl angegeben werden, die als Satzendezeichen wirken. Dabei zaehlt das NW-Byte als erstes und das HW-Byte als zwei- tes Trennzeichen. Ist recend<400, folglich das HW-Byte=0, wird nur ein Endezeichen gewertet. Standard- maessig verwendet FEX bei FE16 15/12 (CR/LF) und bei FQ16 36(NL) als Satzendezeichen. :filend Dateiendezeichen im Format Y Ein oder zwei Bytes koennen als 6-stellige Oktalzahl angegeben werden, die programmierbar als Dateiendezei- chen wirken koennen, sofern keine anderen Abbruchbe- dingungen (z.B. IE.EOF- oder IE.EOV-Fehler vom Geraet) zuvor auftreten. Ist filend<400, folglich das HW-Byte=0, wird nur ein Endezeichen gewertet. Standard- maessig wirkt CTRL/Z (32), jedoch bei FE16-D bzw. FE16-D:EX V im EBCDIC-Code (345) und bei FQ16-M:R4 bzw. FQ16-P:R4 #H (44043). Die Werte von recend und filend gelten fuer den Zustand ausser- halb eventuell angewiesener Datenkonvertierungen (siehe /FD). Sie sind nicht Bestandteil der Datensaetze. 52 - FM16-Format-Schalter Ohne Spezifizierung erzeugt FEX bei der Ausgabe auf FM16-D im Datenformat /FD diskontinuierliche Dateien mit Saetzen variab- ler Laenge, welche Blockgrenzen ueberschreiten. Mittels des Schalters /FM koennen diese Zuordnungen geaendert werden. Der Schalter /FM muss auf der Ausgabe-Seite angegeben werden, er ist nur bei FM16-D-Ausgabe zulaessig. Bei den Datenformaten /FB und /FI ist die Spezifizierung von /FM zwar moeglich, aber die entstehenden FM16-Dateien koennen unter Umstaenden Schwierigkeiten bei der Weiterverarbeitung durch Dienstprogramme des OMOS bereiten. Mit der Schalterspezifizierung /FM:AP wird FEX veranlasst, keine neue Datei zu bilden, sondern die Saetze an die spezifizierte existierende Datei anzuhaengen. /FM:frtyp:fratt:fcntg /FM Bezeichnung fuer FM16-D-Spezifizierung :frtyp Satztyp, beeinflusst FDB-Offset F.RTYP oder F.FACC Tabelle 21: FEX - Schalterwerte frtyp fuer /FM ---------------------------------------------------- Wert | Bedeutung | FDB-Wert ---------------------------------------------------- | | ohne | Saetze variabler Laenge | R.VAR nach F.RTYP | | FI | Saetze fester Laenge | R.FIX nach F.RTYP | | SE | Saetze variabler Laenge | R.SEQ nach F.RTYP | mit Folgenummer | | | AP | Erweitern einer | FO.APD nach F.FACC | existierenden Datei | | | ---------------------------------------------------- 53 :fratt Satzattribut, beeinflusst FDB-Offset F.RATT Tabelle 22: FEX - Schalterwerte fratt fuer /FM ---------------------------------------------- Wert | Bedeutung | FDB-Wert ---------------------------------------------- | | ohne | Saetze werden in LF | FD.CR | und CR eingeschlossen, | | wenn bei spaeterer | | Ausgabe dies ein Ge- | | raet fordern sollte | | | F | das erste Byte jedes | FD.FTN | Satzes wird als | | FORTRAN-Steuerzeichen | | gewertet | | | B | Saetze duerfen Block- | FD.BLK | grenzen nicht ueber- | | schreiten | | | FB | kombinierte Wirkung | FD.FTN!FD.BLK | von F und B | | | ---------------------------------------------- :fcntg Blockanzahl fuer kontinuierliche Datei 3.3.1.3. Datenformat-Schalter (/FB, /FI, /FD) --------------------------------------------- Die Angabe des Datenformats ist nur erforderlich, wenn die in Tabelle 23 dargestellten Standardfestlegungen zu einem falschen Datenformat weisen oder wenn abweichende Funktionen gewuenscht werden. Der Datenformatschalter ist auf der Eingabe-Seite anzugeben. Tabelle 23: FEX - Standardfestlegungen des Datenformats ----------------------------------- Schalter | verwendet bei Dateityp ----------------------------------- /FB | .OBJ | .STB ----------|------------------------ /FI | .MLB | .OLB | .SML | .SYS | .TSK ----------|------------------------ /FD | alle anderen Dateitypen | ----------------------------------- Es gibt zwei feste und einen freien Datenformat-Schalter. In jedem Fall muss eine Formatfestlegung vollstaendig sein. 54 - Feste Datenformat-Schalter Tabelle 24: FEX - feste Datenformat-Schalter ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- /FB | Binaerformat der Familie K 1630 ----------|------------------------------------------------------ /FI | unabhaengiges Format; die Uebertragung erfolgt satz- | frei in Bloecken fester Groesse, es wird jedes | Zeichen uebertragen | ----------------------------------------------------------------- - Freier Datenformat-Schalter Mittels des Schalters /FD kann die Uebertragung in weiten Grenzen beeinflusst werden. /FD:ctyp:fillc :ctyp Konvertierungstyp Tabelle 25: FEX - Konvertierungstypen ---------------------------------------------------------- CTYP | Format der Ausgabedatei | Format der Eingabedatei ---------------------------------------------------------- CC | identisch Eingabedatei, | wahlfrei | 0 unterdrueckt | CO | identisch Eingabedatei | wahlfrei AE | ASCII | EBCDIC EA | EBCDIC | ASCII AU | ASCII (gross<-klein) | ASCII AP | ASCII (10-17,40-176) | ASCII AQ | ASCII (AU + AP) | ASCII @C | CODE.FEX (einwertig) | wahlfrei @C | wahlfrei | CODE.FEX (einwertig) @D | wahlfrei | CODE.FEX (zweiwertig) @D | CODE.FEX (zweiwertig) | wahlfrei | | ----------------------------------------------------------- Fehlt die Angabe von ctyp, setzt FEX dafuer Standardwerte. Bei Datentraegern ohne Verzeichnis wird bei /ES-Eingabe AE, /ES- Ausgabe EA und bei /QU der Typ CC benutzt. Ansonsten bestimmt der im Verzeichnis verwendete Code den erforderlichen Konvertierungs- typ. Ist beispielsweise der VOL1-Kennsatz eines Magnetbandes im EBCDIC-Code aufgezeichnet, nimmt FEX an, dass auch die Daten der zugehoerigen Datei im EBCDIC-Code verschluesselt sind. Ausser dem Konvertierungstyp CO uebertragen alle anderen aufgefundene bzw. durch Konvertierung entstandene binaere Nullen (NUL) nicht. Bei den Konvertierungstypen AU, AP und AQ werden begrenzte Kon- vertierungen innerhalb von ASCII durchgefuehrt. AU uebertraegt Klein- in Grossbuchstaben, AP nur die Zeichen mit den Oktalwerten 10 bis 17 und 40 bis 176, also alle druckbaren Zeichen, und AQ kombiniert die Typen AU und AP. AU, AP und AQ wirken nur bei Lochband-Eingabe, sowie bei Eingabe der Datentraegerformate FE-C:TX und FQ16-M:R4. Mit dem Konvertierungstyp @C wird die Verwendung einer vom Nutzer bereitzustellenden einwertigen Tabelle angewiesen. Einwertig 55 bedeutet, dass dieser Code keine Umschaltzeichen enthaelt. Diese Tabelle muss sich als Datei mit dem Namen CODE.FEX im Nutzerbe- reich befinden. Sie darf maximal 256. Bytes (oktal 400) lang sein und ist indexorientiert aufzubauen. Dabei entspricht der Index dem Wert des unkonvertierten Bytes. Ein Inhalt mit dem binaeren Wert 0 wird bei der Uebertragung unterdrueckt. Mit den Konver- tierungstypen @DI (FM16-Ausgabe) bzw. @DO (FM16-Eingabe) wird die Benutzung einer vom Nutzer bereitzustellenden zweiwertigen Tabel- le angewiesen, die sich als Datei CODE.FEX im Nutzerbereich be- finden muss. Die Tabelle ist 256. Bytes lang und besteht aus zwei gleichen Teilen. Jeder Teil ist einem von zwei moeglichen Um- schaltzeichen zugeordnet. Der zweiwertige Code tritt als Index in jedem Tabellenteil auf. Die Entsprechung des einwertigen Codes ist der Byteinhalt. Das zugehoerige Umschaltzeichen ist mit 377 zu codieren, das nicht zutreffende mit 0. Ebenso sind alle wei- teren Byteinhalte mit 0 zu codieren, die keine Entsprechung im einwertigen Code besitzen. Beispiele sind in Anlage 3 enthalten. @DI setzt einen Code mit Umschaltzeichen voraus, und @DO erzeugt einen solchen Code. Beide Konvertierungstypen benutzen die glei- che Tabelle, die der Nutzer nur einmal zur Verfuegung stellen muss. Findet FEX keine korrekte Tabelle, wird mit der Fehleraus- schrift "USER'S CODE NOT AVAILABLE" abgebrochen. @DO verlangt eine mit recsiz zu definierende Puffer- groesse, die mindestens der doppelten Satzgroesse entspricht. Diese Zuordnung fuehrt FEX standardmaessig aus. :fillc Fuellzeichen Das Fuellzeichen ist eine Oktalzahl von 0 bis 377. FEX kuerzt vor der effektiven Weiterverarbeitung alle Eingabesaetze vom Ende her, bis ein Zeichen ungleich fillc gefunden wird. Innerhalb einer signifikanten Zeichenfolge ist fillc unwirksam. Ausgabeseitig werden Saetze im Format F bedarfsweise mit fillc aufgefuellt. Ausserdem wird fillc benutzt, wenn Bloecke auf gerade Byte-Anzahl oder feste Laenge ergaenzt werden muessen. Bei den Formaten D, DB, S und SB werden alle Bloecke mit einer konstanten Laenge erzeugt. Zum Auffuellen wird fillc benutzt. Als Standardwert fuer fillc wird beim Format FE16-D 345, ansonsten 0 benutzt. fillc bezieht sich auf den Wert nach einer evtl. Konvertierung. 3.3.2. Steuer- und Kontrollschalter ----------------------------------- 3.3.2.1. Listen-Schalter (/LI) ------------------------------ /LI spezifiziert den Listendruck von einem FE16- oder FQ16- Datentraeger. Der Listen-Schalter muss immer mit dem zutreffenden Geraet und Datentraegerformat-Schalter kombiniert werden. Beide Schalter stehen entweder allein, dann erfolgt der Listendruck auf dem TI:-Geraet, oder auf der Eingabe-Seite der Kommandozeile, dann muss auf der Ausgabe-Seite das Listengeraet angegeben werden. Bei sequentiellen Datentraegern ohne Verzeichnis ist unmittelbar vorher mit /MO einzugliedern. 56 3.3.2.2. Eingliederungs-Schalter (/MO) -------------------------------------- /MO spezifiziert das Eingliedern eines FE16- oder FQ16-Daten- traegers zur Verarbeitung durch FEX. Das Eingliedern befaehigt FEX zur zugriffsoptimierten Arbeits- weise. Dieses Eingliedern ist nicht identisch mit dem MOUNT-Kommando der MCR. Datentraeger, die nicht im FM16-Format aufgebaut sind, also alle mit /ES und /QU spezifizierten, duerfen nicht mit dem MOUNT- Kommando in das System eingegliedert werden. Haeufig fuehrt ein solcher Versuch ohnehin zum Fehler. Statt dessen ist das Ein- gliedern innerhalb des FEX mittels des Schalters /MO durchzu- fuehren. Der Eingliederungs-Schalter muss immer mit dem gewuenschten Ge- raet und Datentraegerformat-Schalter mit eventuell erforderlicher Formatspezifizierung, d.h. Schalterwert mod1, kombiniert werden. Nach dem Eingliedern eruebrigt sich die Datentraeger-Spezifi- zierung. Sie wird dann standardmaessig vorgenommen (s. Abschn. 3.5.). Als Quittung fuer das korrekt ausgefuehrte Kommando werden das Datentraegerformat und der Datentraegername, falls ein solcher existiert, ausgeschrieben (s. Abschn. 3.5.). Bei kennsatzlosen Datentraegern (Magnetband oder Magnetbandkas- sette) ist beim Uebergang vom Schreiben zum Lesen erneut einzu- gliedern. 3.3.2.3. Initialisierungs-Schalter (/ZE) ---------------------------------------- /ZE spezifiziert das Initialisieren eines FE16- oder FQ16-Datentraegers. Der Initialisierungs-Schalter muss immer mit dem gewuenschten Geraet und Datentraegerformat-Schalter kombiniert werden. /ZE:modus:label:owner :modus Initialisierungsmodus (kein Standard!) :label Datentraegername (Standard: FEXINI, bei FE16-C:CP FEXI) :owner Eigentuemerkennzeichen (Standard: Leerzeichen) Die Schalterwerte modus, label und owner sind nur erforderlich, wenn Datentraeger mit Datentraegerkennsatz verarbeitet werden. In diesem Fall muss wenigstens modus spezifiziert werden. Ansonsten werden die Schalterwerte ignoriert. 57 Tabelle 26: FEX - Schalterwert modus fuer /ZE ----------------------------------------------------------------- Geraet | Wert | Funktion ----------------------------------------------------------------- | | DY: | NEW | Spur 0 und der Datenbereich werden neu aufge- | | baut. Die Dateikennsaetze werden als DDR1 ge- | | kennzeichnet und enthalten die Dateinamen | | DATA8...DATA26. Der Datenbereich, Spur 1 bis 74, | | wird mit 345 geloescht. Fehlerspuren werden | | nicht behandelt. | OLD | Die Spur 0 wird nicht neu aufgebaut. Nur in VOL1 | | werden label und owner neu eingetragen. Die | | Behandlung der Dateikennsaetze und Fehlerspuren | | gleicht NEW. | | Der Datenbereich bleibt unveraendert. --------|------|------------------------------------------------- | | CT: | ANSI | Der Datentraegerkennsatz entspricht ANSI. MT: | KROS | Der Datentraegerkennsatz entspricht KROS 5111. | OSES | Der Datentraegerkennsatz entspricht OS/ES. In | | allen drei Faellen wird VOL1 mit einer Doppel- | | bandmarke abgeschlossen. | | ----------------------------------------------------------------- 3.3.2.4. Geraetekontroll-Schalter (/CD) --------------------------------------- /CD veranlasst spezielle Geraetefunktionen Der Geraetekontroll-Schalter muss immer mit dem gewuenschten Geraet kombiniert werden. Seine Anwendung liegt vollstaendig in der Verantwortung des Benutzers, da ausgeloeste Manipulationen nicht registriert werden. /CD:fuc:num :fuc Funktion 58 Tabelle 27: FEX - Schalterwert fuc fuer /CD ----------------------------------------- Wert | Bedeutung ----------------------------------------- | EF | Schreiben einer Bandmarke | RW | Zurueckspulen | SB | Block Vor- oder Zuruecksetzen | SF | Bandmarke Vor- oder Zuruecksetzen | SC | Charakteristik setzen | RB | Lesen eines Blockes; maximal 80. | Zeichen werden im byteoktalen | Format auf TI: ausgegeben | ----------------------------------------- :num enthaelt die fuc ergaenzenden numerischen Informationen: Anzahl bei Positionieroperationen (positiv bedeutet Vor- setzen, negativ bedeutet Zuruecksetzen). Charakteristikmaske bei SC (siehe Beschreibung des MT:- Drivers). Achtung! Der Geraetekontroll-Schalter wirkt ausserhalb der Zugriffsorganisation des FEX. Er sollte nicht bei eingegliederten Datentraegern verwendet werden. 3.3.2.5. Identifikations-Schalter (/ID) --------------------------------------- /ID Veranlasst, die Identifikation der aktiven FEX-Task aus- zugeben. Hierzu werden auf dem Bediengeraet folgende Informationen aus- gegeben: - FEX-Versionsnummer - totale Puffergroesse - Datum und Uhrzeit 3.3.2.6. Standardzuweisungs-Schalter (/DF) ------------------------------------------ /DF gestattet fuer die Schalter /FM, /RK, /FI, /FD und /FB Standardwerte der 2. Stufe festzulegen. Mit /DF sind gleichzeitig zu spezifizieren: /FM, /RK, /FI oder /FD oder /FB. Diese Spezifikationen gelten bis auf Widerruf, sie ueberlagern die fest vereinbarten Standardfestlegungen der 1. Stufe. Ausser- dem koennen mittels /ES oder /QU die Schalterwerte der 1. Stufe spezifiziert werden. Im Transferkommando genuegt dann /ES oder /QU ohne weitere Schalterwerte. Wird /PI spezifiziert, erfolgt grundsaetzlich die Ausgabe des Uebertragungsabbildes. 59 Als Standardwerte der 2. Stufe wirken alle gleichzeitig mit /DF definierten zulaessigen Schalter. Allein /DF schaltet diese Stan- dardwerte aus. 3.3.2.7. Informations-Schalter (/HE) ------------------------------------ /HE veranlasst die Ausgabe von Hilfsinformationen auf dem Bediengeraet. Insbesondere kann mittels dieses Schalters der verfuegbare Leistungsumfang der laufenden FEX-Version erfragt werden. Nur die ausdruecklich benannten Leistungen sind implemen- tiert. /HE:hspec Tabelle 28: FEX - Schalterwert hspec fuer /HE ---------------------------------------- Wert | Bedeutung ---------------------------------------- | - | unterstuetzte Funktionen der | FE16- und FQ16-Formate | E | unterstuetzte Funktionen des | FE16-Formates | Q | unterstuetzte Funktionen des | FQ16-Formates | ---------------------------------------- In der Ausschrift folgen den unterstuetzten Format in Kurzfassung Informationen ueber den Leistungsumfang. Es bedeuten: I Eingabe ist unterstuetzt O Ausgabe ist unterstuetzt L die Anwendung des /LI-Schalters ist moeglich Z die Anwendung des /ZE-Schalters ist moeglich M Mehrdatentraegerverarbeitung ist unterstuetzt * auf der Eingabeseite koennen *-Vereinbarungen angegeben werden : Dieser Marke folgt eine Liste der zulaessigen Schalterwerte frmchr des /RK-Schalters. Wenn der Wert nur in einer Trans- ferrichtung zulaessig ist, steht die Angabe in Klammern. (I=Y) bedeutet z.B., dass das Format Y nur in Eingabe- richtung zulaessig ist. 60 3.3.2.8. Uebertragungsabbild-Schalter (/PI) ------------------------------------------- /PI spezifiziert die Ausgabe eines Uebertragungsabbildes. Die Informationen, die nach jeder erfolgreichen Datenuebertragung auf dem Bediengeraet ausgegeben werden, beziehen sich auf den FE16- oder FQ16-Datentraeger. Nach KERNEL folgen das Satzformat, die (maximale) Blockgroesse, die (maximale) Satzgroesse und der Konvertierungstyp. Ausserdem wird die verstrichene Zeit ange- geben. Der Schalter /PI muss auf der Eingabeseite angegeben werden. Bei bibliotheksorientierten Datentraegern sind Block- und Satzgroesse nicht signifikant. 3.4. Transfer-Organisation -------------------------- Grundsaetzlich uebertraegt FEX Dateien zwischen einem FM16- und einem FE16- oder FQ16-Geraet. Gueltige FM16-Geraete sind alle von OMEX 1630 unterstuetzten Platten. Verfuegt das Betriebssystem ausserdem ueber die ANSI-Unterstuetzung und wurde die FEX-Task mit der zugehoerigen Systembibliothek gebildet, ist als weiteres FM16-Geraet das 1/2"-Magnetbandgeraet (MT:) zulaessig. Auf alle FE16- oder FQ16-Geraete greift FEX nur logisch oder physisch zu. Der Bediener darf nicht versuchen, diese Geraete mit dem MCR- Kommando MOUNT einzugliedern. Ausser den Geraetedrivern benoetigt FEX keine weiteren Unter- stuetzungsroutinen vom Betriebssystem. Bei Ausgabe auf ein FM-Geraet entstehen Dateien, die mittels FCS 1630 verarbeitet werden koennen. Ueber den Schalter /FM koen- nen wesentliche Dateiattribute beeinflusst werden. 3.4.1. Zuordnung der Transferpuffer ----------------------------------- In fast allen Faellen hat eine Datei auf einem FM16-Geraet einen anderen logischen Aufbau als auf dem korrespondierendem FE16- oder FQ16-Geraet. Fuer diese Transfer- und Umblockungsoperationen benoetigt FEX mehrere Puffer. Die Mindestpuffergroesse ist fest installiert. Sie gewaehrleistet die Verarbeitung von Dateien mit einer maximalen Block- und Satzgroesse von 512. Bytes. In Syste- men mit Speichervermittlung koennen die Puffer dynamisch ver- groessert werden, indem die FEX-Task beim Installieren mittels des INC-Schalters vergroessert wird. Das ist auch bereits beim Bilden der FEX-Task durch die EXTTSK-Option des Taskbilders moeglich. Neben anderen Informationen liefert der /ID-Schalter auch die to- tale Puffergroesse, die zum Transfer zur Verfuegung steht. In diesen totalen Puffer teilen sich der FCS-Satzpuffer fuer den Transfer zum FM16-Geraet und der FE16- oder FQ16-Blockpuffer. Passt der Blockpuffer mindestens zweimal in den nach Abzug des Satzpuffers verbleibenden totalen Puffer, so wendet FEX im all- gemeinen Wechselpufferbetrieb an. Das fuehrt u.U. insbesondere bei kleinen Bloecken und langsamen Geraeten zu einer erheblichen Beschleunigung des Dateitransfers. 61 Andererseits erlaubt FEX beim Einfachpufferbetrieb die Verar- beitung sehr grosser Datenbloecke. Es entsteht im allgemeinen Einfachpufferbetrieb, wenn Satzgroesse + Blockgroesse < totale Puffergroesse und Wechselpufferbetrieb, wenn Satzgroesse + 2 * Blockgroesse < totale Puffergroesse. 3.4.2. Anschlusseite FE16 und FQ16 ---------------------------------- Es sind verschiedene Zugriffsniveaus moeglich, die datentraeger- und formatabhaengig unterschiedlich unterstuetzt sind. Genaue Auskunft ueber die implementierten Leistungen liefert der Infor- mationsschalter (/HE). Auf hoechstem Niveau laeuft die Unterstuetzung bibliotheksstruk- turierter Dateiformate (Formate FE16-D:SL und FQ16-D:IS). Alle Strukturangaben wie Blockgroesse, Satzgroesse usw. sind vom jeweiligen Organisationsprinzip her vorgegeben und fuer einen Transfer uninteressant. Die festen Puffer des FEX gestatten die Verarbeitung dieser Formate ohne zusaetzliche Massnahmen. - Eingabe ------- Bei blockorientierten Datentraegern mit Verzeichnis legt das Verzeichnis die Blockgroesse fest. Diesbezuegliche Angaben im Kommando werden ignoriert. Werden Disketten im Datentraegerformat FE16-D oder FE16-D:EX verarbeitet, wird fuer den Blockpuffer die physische Sektor- groesse zugrundegelegt. Bei blockorientierten Datentraegern ohne Verzeichnis wird ohne weitere Angabe die Standard-Puffergroesse benutzt. Sind die Bloecke auf dem Datentraeger groesser, fuehrt das zum Fehlerab- bruch mit HANDLER STATUS=177763(IE.DAO), d.h. Datenueberlauf. In diesem Fall muss die Blockgroesse im Kommando angegeben werden, sie kann maximal bis zur totalen Puffergroesse, wie sie der /ID-Schalter ausweist, abzueglich der Satzgroesse , gehen. Datentraeger ohne Blockorientierung sollten mit der Standard- Puffergroesse uebertragen werden, diese Zuordnung fuehrt FEX standardmaessig durch. Aus der Anleitung fuer den Programmie- rer, Teil 3, E/A-System, Abschnitte "Informationen des GET-LUN- Makros" kann die jeweils zutreffende Groesse des Geraetepuffers entnommen werden. - Ausgabe ------- Die Ausgabe kann wahlweise mit der Standard-Puffergroesse oder einer anderen erfolgen. Werden Disketten im Datentraegerformat FE16-D oder FE16-D:EX verarbeitet, wird fuer den Blockpuffer die physische Sektor- groesse zugrunde gelegt. 62 3.4.3. Anschlusseite FM16 ------------------------- - Eingabe ------- Es koennen alle FM16-Dateien verarbeitet werden, die eine Blockgroesse von 512. Bytes nicht ueberschreiten. Die Satz- groesse ist beliebig, Saetze duerfen ueber Blockgrenzen hin- weggehen. - Ausgabe ------- Wenn eine Datei gleichen Namens und gleichen Typs bereits auf dem FM16-Datentraeger existiert, lehnt FEX den Transfer nicht ab, sondern erzeugt eine Datei gleichen Namens und Typs mit der naechst hoeheren Versionsnummer. Ist auch die Versionsnummer in der Dateispezifikation angegeben und gleicht sie einer bereits existierenden, so wird vor dem Tranfer die existierende FM16-Datei geloescht und anschliessend durch die neue ersetzt (siehe hierzu Beschreibung des FCS 1630 - Ausnahme: siehe Schalter /FM:AP). Grundsaetzlich erzeugt FEX FM16-Dateien mit einer Blockgroesse von 512. Bytes. Im allgemeinen sind die Dateien diskontinuierlich und Saetze ueberschreiten Blockgrenzen. Mit dem /FM-Schalter kann angewiesen werden, dass Saetze Blockgrenzen nicht ueberschreiten und dass die Datei mit einer anzugebenden Blockanzahl kontinuier- lich wird. Im allgemeinen besitzen die FM16-Saetze variable Laenge. Mit dem /FM-Schalter kann angewiesen werden, dass statt dessen Saetze fester Laenge oder variabler Laenge mit Folgenummer erzeugt wer- den. Wird eine Datei im unabhaengigen Format uebertragen (Schal- ter /FI), haben die FM16-Saetze immer feste Laenge. Besteht die FE16- oder FQ16-Eingabedatei aus Saetzen fester Laenge und werden FM16-Saetze variabler Laenge gefordert, kuerzt bei wirksamen freiem Datenformatschalter /FD FEX angehaengte Fuellzeichen. 3.5. Temporaeres Verzeichnis ----------------------------- Wenn der FE16- oder FQ16-Datentraeger ein Verzeichnis besitzt, d.h. wenn Dateien einen Namen tragen (z.B. Magnetband mit Kenn- saetzen, Format FE16-M), fuehrt FEX nach Eingliedern, Schalter /MO, ein internes temporaeres Verzeichnis ueber den aktuellen Datentraeger. Dieses temporaere Verzeichnis stellt ein Abbild des Datentraeger-Verzeichnisses dar. Auch die Summe aller Dateikoepfe eines sequentiellen Datentraegers (z.B. Magnetband) gehoert dazu. Zum Eroeffnen des Transfers mit einem neuen FE16- oder FQ16- Datentraeger ist /MO in der vollstaendigen Form dev:/MO/format[:subformat] anzugeben (z.B. CT1:/MO/ES:CP). Danach ist ein eventuell bestehendes temporaeres Verzeichnis geloescht, und es wird ein neues aufgebaut. 63 Wird der Datentraeger gewechselt, muss der neue Datentraeger wieder mit dev:/MO/format[:subformat] eroeffnet werden; ansonsten kommt es zu unkorrekten Transferope- rationen. Es ist nicht erforderlich, den alten Transfer abzu- schliessen. Bei Datentraegern mit Verzeichnis verwaltet FEX ueber das tem- poraere Verzeichnis den Dateibestand und kontrolliert bei allen Lese- und Schreiboperationen die Position des Datentraegers. Sequentielle Datentraeger werden stets am logischen Datenende erweitert. Datentraeger ohne Verzeichnis (z.B das Datentraeger- format FE16-M:NL) muessen bei Leseoperationen vom Benutzer kon- trolliert werden. FEX berechnet angewiesene Leseoperationen immer von der aktuellen Datentraegerposition aus. Jedoch werden auch hier sequentielle Datentraeger stets am logischen Datenende er- weitert. 3.6. Verarbeitung von Mehrdatentraeger-Dateien ---------------------------------------------- In einigen Datentraegerformaten ist die Verarbeitung von Mehr- datentraeger-Dateien unterstuetzt (siehe /HE-Schalter-Ausschrift der aktuellen FEX-Version). Hierbei setzt sich das im ersten Eingliederungskommando /MO angegebene Datentraegerformat auf die weiteren Datentraeger fort. - FM16-Eingabe ------------ Wenn das Ende des Ausgabe-Datentraegers erreicht ist, meldet sich FEX mit der Ausschrift FEX -- VOLUME FULL MULTIVOLUME FILE?[Y/N]: Wird die Anfrage mit N beantwortet, erfolgt eine normale Feh- lerbehandlung, d.h. die angefangene Datei wird wieder ge- loescht. Auf die Antwort Y fragt FEX nach dem Geraet, auf dem die Verarbeitung fortgesetzt werden soll CONTINUATION DEVICE? [DEV/(CR)]: Nach Eingabe eines (CR) wird die Ausgabe nach Wechseln des Datentraegers auf dem gleichen Geraet fortgesetzt. Es kann auch ein anderes, aber gleichartiges Geraet angegeben werden. In jedem Fall darf aber das die Kommandoeingabe abschliessende (CR) erst gegeben werden, wenn das fortsetzende Geraet bereit ist. - FM16-Ausgabe ------------ Nach Erkennen des Dateiabschnittendes auf einem Datentraeger wird wie bei der FM16-Eingabe nach dem fortsetzenden Geraet gefragt. Stimmt die Datentraegernummer nicht mit der erwarteten ueberein, warnt FEX mit der Ausschrift FEX -- WARNING! INPUT FILE OUT OF SEQUENCE, fuehrt aber die Bearbeitung der Eingabedatei fort. Unabhaengig davon, ob Mehrdatentraegerdateien unterstuetzt sind, kann mittels des Schalters /FM:AP eine aequivalente Ar- beitsweise, auch ueber verschiedene Eingabeformate hinweg, erreicht werden. Jeder neue Datentraeger muss mit /MO einge- gliedert werden. 64 3.7. Kennsatzverarbeitung ------------------------- Die Inhalte von Datentraeger- und Dateikennsaetzen werden von FEX in den Parametern beachtet, die fuer einen korrekten Transfer erforderlich sind. - Datentraeger-Kennsatz --------------------- Mit dem Eingliedern des Datentraegers durch den /MO-Schalter wird der Datentraegername registriert und bei weiteren Opera- tionen zur Kontrolle herangezogen. Zum Zeitpunkt der Initiali- sierung kann eine Eigentuemer-Identifikation angegegeben wer- den, welche jedoch in keinem Fall zu Kontrollzwecken benutzt wird. Dem Datentraeger-Kennsatz von Disketten im Format FE16-D und FE16-D:EX wird die physische Sektorgroesse entnommen. Der Be- schreibung des Disketten-Drivers ist zu entnehmen, ob ausser 128. Bytes Laenge noch andere Sektorgroessen zulaessig sind. Aus dem Code des Datentraeger-Kennsatzes (ASCII oder EBCDIC) wird der Standardwert fuer weitere Transferoperatioen abge- leitet. - Datei-Kennsaetze ---------------- FEX verarbeitet den Datei-Kennsatz HDR1 und, falls vorhanden, den Datei-Kennsatz HDR2. Folgende Informationen werden aus HDR1 bzw. HDR2 gewonnen: .Dateiname .Blockgroesse, Satzgroesse, Satzformat Der Schalterwert ::BY des Datentraegerformat-Schalters ver- anlasst FEX, die Kennsatz-Informationen zu ignorieren. Sie werden ersetzt durch die Parameterwerte, welche sich aus Stan- dardfestlegung oder Eingabe im /RK-Schalter ergeben. Bei Dis- ketten im Format FE16-D und FE16-D:EX kann mit dem Schalter- wert :::C ausserdem eine Verarbeitung von Disketten mit Kopier- schutz angewiesen werden. In diesem Fall werden die Kennsatz- informationen .Umgehungsanzeiger, Kopieranzeiger beachtet (s. Abschn. 3.3.1.1.). Alle weiteren zulaessigen Datei-Kennsaetze werden bei ihrem Auftreten ueberlesen. FEX erzeugt Dateien, denen bei Daten- traegern mit Direktzugriff ein Kennsatz HDR1 und bei Daten- traegern mit sequentiellem Zugriff die Kennsaetze HDR1, HDR2 und EOF1, EOF2 zugeordnet sind. Aus eventuell vorhandenen Datums- oder Zugriffsvermerken werden keine Massnahmen abge- leitet. Wenn fuer ein bestimmtes Format im FEX Mehrdatentrae- gerunterstuetzung implementiert ist, werden dafuer verantwort- liche Kennsatzfelder beachtet. Das Datentraegerformat FE-C:CP kennt keinen Datentraegerkennsatz. Deshalb muss der Datentraegername beim Eingliedern dem ersten Da- teikennsatz entnommen werden. 65 3.8. Fehlermitteilungen ----------------------- FEX -- CLOSE FAILURE ON OUTPUT FILE Die Ausgabedatei konnte nicht ordnungsgemaess abgeschlossen wer- den. FEX -- COMMAND SYNTAX ERROR Das eingegebene Kommando ist fehlerhaft aufgebaut. FEX -- DIRECTIVE STATUS Waehrend der Abarbeitung entstand eine fehlerhafte Direktive- Anweisung. Der ausgegebene Fehlercode spezifiziert den aufge- tretenen Fehler. FEX -- END OF TAPE DETECTED Das Bandende wurde erkannt. FEX -- ERROR DURING ASSIGN DEVICE Das angegebene FE16- oder FQ16-Geraet ist ungueltig. FEX -- ERROR DURING DIRECTORY I/O Waehrend des Oeffnens oder Schliessens einer Datei entstand ein Geraetefehler. FEX -- FDB STATUS Bei Arbeit mit einer FM16-Datei zeigte das FCS 1630 einen Fehler an. FEX -- FILE ALREADY EXISTS Der Dateiname ist auf einem FE16- oder FQ16-Geraet bereits vor- handen. FEX -- FILE IN 'SOURCELB' NOT FOUND Der geforderte Dateiname ist auf dem FE16-D:SL-Geraet nicht vorhanden. FEX -- FILE NOT FOUND Der Eingabedateiname wurde nicht gefunden. FEX -- I/O-ERROR Waehrend der Arbeit mit einem FE16- oder FQ16-Geraet trat ein E/A-Fehler auf. FEX -- I/O-ERROR CAUSED BY TEMP. DIRECTORY Waehrend der Arbeit mit dem temporaeren Verzeichnis trat der spe- zifizierte Fehler auf. FEX -- I/O-ERROR ON COMMAND INPUT Waehrend der Kommandoeingabe trat ein Geraetefehler auf. FEX -- ILLICIT CONVERSION PROCESS Es wird eine unzulaessige oder nicht implementierte Transfer- operation verlangt. FEX -- INCOMPATIBLE WITH MOUNTED FORMAT Das Datentraegerformat stimmt nicht mit dem beim Eingliedern spezifizierten Datentraegerformat ueberein. 66 FEX -- INVALID BLKSIZ OR RECSIZ Das spezifizierte Satzformat laesst sich aus den gueltigen Werten fuer Block- und/oder Satzlaenge nicht herstellen. FEX -- INVALID DATA LEVEL Es wurde ein unzulaessiges Datentraegerniveau erkannt. FEX -- INVALID DEVICE Das verlangte Geraet ist nicht unterstuetzt. FEX -- INVALID DISK LABEL Es existiert ein unzulaessiger Kennsatz auf dem Geraet. FEX -- INVALID RECORD KERNEL Das spezifizierte Satzformat ist unzulaessig oder besitzt unzu- laessigen Aufbau. FEX -- INVALID SWITCH Ein unzulaessiger Schalter wurde angegeben. FEX -- INVALID SWITCH VALUE Einem Schalter wurde ein unzulaessiger Schalterwert zugeordnet. FEX -- INVALID TAPE LABEL Es existiert ein unzulaessiger Kennsatz auf dem Magnetbandgeraet. FEX -- INVALID TAPE RECORD FORMAT Ein ungueltiger oder nicht bekannter Satz wurde auf dem Magnet- bandgeraet gefunden. FEX -- INVALID VOLUME LABEL Der Datentraeger ist fehlerhaft gekennzeichnet. FEX -- NO FM16 SWITCH Fehlerhafte Anwendung des /FM-Schalters. FEX -- NOT ENOUGH BUFFER SPACE AVAILABLE Der verfuegbare Puffer reicht nicht aus, um bei gegebener Block- und Satzgroesse den Transfer durchfuehren zu koennen. FEX -- USER'S CODE NOT AVAILABLE Eine Konvertierung mit nutzereigener Tabelle wurde angewiesen, diese Tabelle ist nicht korrekt verfuegbar. FEX -- OUTPUT DIRECTORY FULL Das Verzeichnis des Ausgabedatentraegers ist voll belegt. FEX -- OUTPUT VOLUME FULL Der Ausgabedatentraeger ist voll belegt. FEX -- OUTPUT VOLUME FULL / LAST FILE WRITTEN Der Ausgabedatentraeger ist voll. Die letzte Datei wurde jedoch vollstaendig uebertragen. FEX -- PARITY ERROR Bei Paritaetskontrolle wurde ein Fehler gefunden. FEX -- READING IS PROHIBITED Fuer die Datei besteht Lese- oder Kopierschutz. 67 FEX -- TRANSFER TERMINATED / LAST BLOCK WRITTEN Auf Grund einer Fehlerbedingung wurde der Transfer abgebrochen, der letzte Block ist noch uebertragen. FEX -- UNABLE TO OPEN FILE Die spezifizierte Datei laesst sich nicht eroeffnen. FEX -- USELESS * SPEC Der geforderte *-Prozess laesst sich wegen eines Fehlers im Kom- mando nicht einleiten. FEX -- VOLUME NOT MOUNTED Der Datentraeger ist nicht eingegliedert. FEX -- WARNING! INPUT FILE OUT OF SEQUENCE Es wurde eine fehlerhafte Datentraegerfolgenummer erkannt. Die Verarbeitung wird fortgesetzt. FEX -- WARNING! RECORD TOO LARGE Ein Satz wurde gefunden, dessen Groesse die angegebene Satz- bzw. Blockgroesse ueberschreitet. Die Verarbeitung wird fortgesetzt. FEX -- WRITING IS PROHIBITED Fuer das geforderte Ausgabegeraet besteht Schreibschutz. FEX -- WRONG VOLUME Der Datentraeger ist unpassend. 68 4. Datei-Transfer-Programm PIP 1630(OMEX) ----------------------------------------- 4.1. Vorbemerkungen ------------------- Aufgabe des Systemprogramms PIP ist es, Dateien im Dateiformat FM16 zu verwalten. Ausser dem Erstellen und Loeschen von Dateien sind folgende Funktionen moeglich: - Kopieren von Dateien - Umbenennen von Dateien - Ausgabe von Dateiverzeichnissen - Zugriff zu gesperrten Dateien ermoeglichen - Ausdrucken von Dateien Die Kommandos zur Uebertragung von Dateien auf Magnetband werden nur dann durch PIP realisiert, wenn die Magnetbandbedienung durch das Betriebssystem unterstuetzt wird. Bevor der Print-Spooler (abhaengige Task PRT) von PIP benutzt werden kann, muss er installiert sein (s. Abschn. 4.3.2, Schalter /SP). PIP wird mit dem MCR-Startkommando gestartet und meldet sich mit "PIP> " auf dem Bediengeraet. Diese Meldung ist gleichzeitig Kommandoanforderung. PIP akzep- tiert Kommandos vom Bediengeraet oder von einer Indirektkommando- Datei. Soll die Arbeit mit PIP beendet werden, ist CTRL/Z auf dem Bediengeraet zu geben, die Steuerung kehrt dann zum verwen- deten Kommandoprogramm (MCR, DCL) zurueck. 4.2. Kommandoaufbau ------------------- 4.2.1. Allgemeines Format ------------------------- Ein PIP-Kommando hat das folgende allgemeine Format: outfile[,outfile]... = infile[,infile]... Fuer jede Ein- bzw. Ausgabedatei wird eine Spezifikation in fol- gendem Format notiert: dev:[g,m]name.type;version[/switch]...[/subswitch] Einige PIP-Kommandos zeigen Abweichungen vom allgemeinen Format, deshalb wird das spezielle Format eines jeden PIP-Kommandos in Abschnitt 4.3. angegeben. 4.2.2. Schalter und Subschalter ------------------------------- Der Schalter spezifiziert die Funktion des PIP-Kommandos. - In einem Kommando darf nur ein Schalter stehen. - Ein Schalter bezieht sich auf alle Dateien des Kommandos. Subschalter koennen fuer eine oder mehrere Dateispezifikationen angewendet werden, je nach Stellung dieses Schalters. 69 - Subschalter sind bestimmten Schaltern zugeordnet. - Subschalter wirken auf der Eingabeseite nur auf die unmit- telbar davor stehende Dateispezifikation. - Auf der Ausgabeseite stehend beziehen sie sich auf alle Ein- gabedateien. - In einem Kommando koennen mehrere Subschalter stehen. Sowohl Schalter als auch Subschalter koennen Argumente haben, die durch einen Doppelpunkt (:) gekennzeichnet sind. z.B. /PU:n 4.2.3. Standards fuer Teile der Dateispezifikation -------------------------------------------------- Fuer weggelassene Teile einer Dateispezifikation in einem PIP- Kommando setzt PIP im allgemeinen Standards ein. Dabei wird un- terschieden, ob es die erste Dateispezifikation auf der Ein- bzw. Ausgabeseite oder die zweite bis n-te Dateispezifikation ist. Fuer weggelassene Teile der ersten Dateispezifikation einer Folge von Spezifikationen gelten die Standards, wie in der An- leitung fuer den Bediener, Teil 2, beschrieben. Es ist zu beach- ten, dass auch waehrend des Starts von PIP bzw. durch PIP selbst (s. Abschn. 4.3.2. Schalter /DF ) Dateistandards einge- stellt werden koennen. Fuer weggelassene Teile der zweiten bis n-ten Dateispezifikation wird der entsprechende Teil der vorhergehenden Spezifikation uebernommen. Eine Ausnahme bildet die Versionsnummer. Fuer sie gilt immer der Standard (Anleitung fuer den Bediener, Teil 2, ). Beim Datei- loeschkommando (Schalter /DE) wird die explizite Angabe der Ver- sionsnummer gefordert. Beispiel: PIP>TEST.MAC;5,DATEI,.TSK,;5/LI --------------------------- Das vollstaendige Kommando nach dem Einsetzen der Standards ist dann: PIP>SY0:[200,200]TEST.MAC;5, SY0:[200,200]DATEI.MAC;5, SY0:[200,200]DATEI.TSK;6, SY0:[200,200]DATEI.TSK;5 /LI 4.2.4. Die Stern-und Prozentvereinbarung als Teil der Datei- ------------------------------------------------------------ spezifikation ------------- Der Stern "*" als Element der Dateispezifikation ermoeglicht es, mit einer einzigen Dateispezifikation eine bestimmte Gruppe von Dateien zu erfassen. Dabei wird unterschieden, ob es sich um eine Dateispezifikation auf der Ein- oder Ausgabeseite eines PIP-Kommandos handelt. "*" als Element einer Dateispezifikation auf der Eingabe- seite bedeutet 'alle'. "*" als Element einer Dateispezifikation auf der Ausgabe- seite bedeutet: 'Uebernahme des entsprechenden Elementes von der Ein- gabeseite'. 70 Das Prozentzeichen " % " bezeichnet genau ein Zeichen in den Ele- menten der Dateispezifikation. Eingabeseite ------------ Die folgende Tabelle enthaelt alle Varianten der Stern - bzw. Prozentvereinbarung als Element einer Dateispezifikation auf der Eingabeseite. Tabelle 29: PIP - Moeglichkeiten der Stern - bzw. Prozentverein- barung auf der Eingabeseite ----------------------------------------------------------------- name.type;version | Bedeutung ----------------------------------------------------------------- *.*;* | alle Versionen von allen Dateien | *.DAT;* | alle Versionen von allen Dateien | des Typs .DAT *.D*;* | alle Versionen aller Dateien,deren | Typbezeichnungen mit D beginnen | TEST.*;* | alle Versionen und alle Typen | der Datei namens TEST T*.*;* | alle Versionen aller Dateien,deren | Namen mit T beginnen TEST.DAT;* | alle Versionen der Datei TEST.DAT | TEST.D%T;* | alle Versionen der Dateien mit dem | Namen TEST und dem dreistelligen | Dateityp,welche mit D beginnen und | auf T enden T%S.*;* | alle Versionen aller Dateitypen,die | einen dreistelligen Dateinamen be- | sitzen,die mit T beginnen und auf S | enden *.* | die jeweils neueste Version | von allen Dateien *.DAT | die jeweils neueste Version | von allen Dateien des Typs .DAT *%.DAT | die jeweils neuste Version von allen | Dateien des Typs.DAT,die mindestens | ein Zeichen im Namen enthalten TEST.DAT | die neueste Version der | Datei TEST.DAT ----------------------------------------------------------------- [g,m] | ----------------------------------------------------------------- [*,*] | saemtliche Kombinationen von | Gruppen- und Eigentuemernummern | von 1 bis 377 [n1,*] | alle Eigentuemernummern der | Gruppe n1 [*,n2] | alle Gruppennummern der | Eigentuemer n2 ----------------------------------------------------------------- Das Prozentzeichen kann nicht fuer die Gruppen- und Eigentuemer- nummern verwendet werden. 71 Ausgabeseite ------------ Auf der Ausgabeseite gibt es fuer die Sternvereinbarung gewisse Einschraenkungen. Die Kommandos - Umspeichern - /ME - /AP - /UP - /LI (,/FU,/BR) lassen auf der Ausgabeseite nur die Form *.*;* oder "leer" zu. Die Kommandos /RE und /EN lassen gemischte Formen (z.B.: *.DAT;*) zu. "*" bedeutet dann Uebernahme des entsprechenden Elementes von der Eingabeseite. In allen Faellen, in denen "*" auf der Ausgabeseite erlaubt ist, darf als UIC nur die Form [*,*] verwendet werden. Eine Verwendung des Prozentzeichens auf der Ausgabeseite ist nicht zulaessig. 4.3. Beschreibung der Kommandos ------------------------------- 4.3.1. Umspeichern von Dateien ------------------------------ Fuer das Umspeichern von Dateien sind von PIP die folgenden drei Moeglichkeiten vorgegeben. Man kann: - eine Eingabedatei in eine Ausgabedatei - mehrere Eingabedateien in mehrere Ausgabedateien - mehrere Eingabedateien in eine spezifizierte Ausgabedatei (entspricht dem Fuegen von Dateien) umspeichern. Das Fuegen von Dateien wird durch den /ME-Schalter realisiert. Der Schalter kann aber auch weggelassen werden. Kommando zum Umspeichern bzw. Fuegen von Dateien: ------------------------------------------------- outfile = infile[,infile]...[/ME][/subswitch]... Beispiele: - Umspeichern einer Eingabedatei in eine spezifizierte Ausgabe- datei PIP>COPY.DAT;1=[200,7]TEST.DAT -------------------------- Fuer Elemente der Ausgabedateispezifikation darf in diesem Fall kein "*" verwendet werden. - Umspeichern von mehreren Eingabedateien in mehrere Ausgabe- dateien PIP>[200,7]=[200,200]TEST.MAC;1,.OBJ,.TSK ------------------------------------- Elemente der Ausgabedateispezifikation duerfen in diesem Fall nicht explizit angegeben werden, sonst werden die Eingabedateien gefuegt. PIP setzt als Standard fuer die Ausgabedateispezifika- tion *.*;* ein. 72 - Fuegen von Dateien PIP>LP:=TEST.DAT;1,;2,;3 -------------------- Die Dateien TEST.DAT;1, TEST.DAT;2 und TEST.DAT;3 werden gefuegt und auf dem Zeilendrucker ausgegeben. Beim Umspeichern und Fuegen von Dateien ist es durch Angabe von Subschaltern moeglich, fuer die Ausgabedatei bestimmte Eigen- schaften festzulegen. Tabelle 30: PIP - Subschalter des Umspeicherkommandos ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- /BL:n[.] | Zusammenhaengende Bloecke-- | In der Ausgabedatei sind n Bloecke physisch zu- | sammenhaengend. | n (ohne Punkt) ist eine Oktalzahl | n. ist eine Dezimalzahl -------------|--------------------------------------------------- /CO | Datei zusammenhaengend-- | Die gesamte Ausgabedatei ist physisch zusammen- | haengend. | /-CO | Datei nicht zusammenhaengend-- | Die gesamte Ausgabedatei braucht nicht physisch | zusammenhaengend zu sein. | Bem.: Ist keiner dieser Subschalter im Umspei- | cherkommando angegeben, so werden die Eigenschaf- | ten der Eingabedatei auf die Ausgabedatei ueber- | tragen. -------------|--------------------------------------------------- /FO | UIC festlegen-- | Wenn /FO gesetzt ist, erhalten die Ausgabedateien | den UIC des Dateiverzeichnisses, in das sie ein- | getragen werden. Ist /FO nicht angegeben, so | erhaelt jede neu erstellte Datei den UIC der PIP- | Task (vgl. dazu das Kommando /DF). -------------|--------------------------------------------------- /SU | Ueberschreiben einer Datei-- | Wenn die Ausgabedatei bereits existiert, wird sie | geloescht und mit dem Inhalt der Eingabedatei neu | beschrieben. -------------|--------------------------------------------------- /NV | Die Versionsnummer der Ausgabedatei ist um 1 | hoeher, als die hoechste Versionsnummer, die von | dieser Datei bereits existiert. /NV eruebrigt | sich, wenn Ein- und Ausgabedatei im gleichen | Dateiverzeichnis stehen. ----------------------------------------------------------------- 73 4.3.2. Kommandos zur Dateiverarbeitung -------------------------------------- Tabelle 31: PIP - Kommandos zur Dateiverarbeitung ----------------------------------------------------------------- Schalter | Subschalter | Bedeutung ----------------------------------------------------------------- | | Umspeichern von Dateien mit Zusatzfunktionen | | /CD | | Die Ausgabedatei erhaelt das Erstel- | | lungsdatum der Eingabedatei | | /ME | | Fuegen von zwei oder mehreren Eingabe- | | dateien zu einer Ausgabedatei | /BL:n[.] | s. Abschn. 4.3.1. | /CO | s. Abschn. 4.3.1. | /FO | s. Abschn. 4.3.1. | /NV | s. Abschn. 4.3.1. | /SU | s. Abschn. 4.3.1. ----------|-------------|---------------------------------------- /UF | | Erstellt beim Umspeichern das UFD der | | Ausgabedatei auf dem Ausgabedaten- | | traeger | /FO | s. Abschn. 4.3.1. ----------|-------------|---------------------------------------- /AP | | Datei erweitern | | (Anfuegen der Eingabedatei(en) an eine | | bereits existierende Ausgabedatei) | /FO | s. Abschn. 4.3.1. ----------|-------------|---------------------------------------- /UP | | Ueberschreiben einer bereits existie- | | renden Ausgabedatei durch die Eingabe- | | datei(en) | /FO | s. Abschn. 4.3.1. ----------|-------------|---------------------------------------- Loeschen von Dateien | | /DE | | Loeschen von Dateien | | | /LD | Auflisten der geloeschten Dateien | | /PU[:n] | | Loeschen veralteter Versionen von | | Dateien | | | /LD | Auflisten der geloeschten Dateien | | /SD | | Selektives Loeschen ----------|-------------|---------------------------------------- Ausgabe von Dateiverzeichnissen | | /DD | | Suchen von Dateien , die in einem be- | | stimmten Zeitraum gebildet wurden | | /EX | /LI | Ausschliessen von Dateien bei der Aus- | | gabe entsprechend angegebenem Element | | der Dateispezifikation | | /LI | | Standardformat ----------------------------------------------------------------- 74 Tabelle 31: (Fortsetzung) ----------------------------------------------------------------- Schalter | Subschalter | Bedeutung ----------------------------------------------------------------- | | /BR | | kurzes Format | | /FU | | vollstaendiges Format | | /TD | /LI | Ausgabe der Dateien , die am aktuellen | | Tag erstellt werden | | /TB | | Anzahl der belegten Bloecke ----------------------------------------------------------------- Aendern von Dateispezifikationen | | /RE | | Aendern des Dateinamens, des Dateityps | | oder der Version; | | Eintragen in ein anderes UFD und | | gleichzeitig Loeschen im alten UFD | /NV | s. Abschn. 4.3.1. ----------|-------------|---------------------------------------- /EN | | Eintragen eines Synonyms fuer eine | | Datei in einem UFD | /NV | s. Abschn. 4.3.1. ----------|-------------|---------------------------------------- /RM | | Loeschen einer Dateispezifikation im | | UFD ----------|-------------|---------------------------------------- Aendern der Zugriffsrechte fuer Dateien | | /PR | | Aendern der Zugriffsrechte (Lesen, | | Schreiben, Erweitern und Loeschen) | /GR[:RWED] | fuer eine Gruppe | /OW[:RWED] | fuer den Dateieigentuemer | /SY[:RWED] | fuer das System | /WO[:RWED] | fuer die uebrigen Nutzer | /FO | s. Abschn. 4.3.1. ----------|-------------|---------------------------------------- Service-Kommandos | | /ID | | Ausgabe der Version von PIP | | /DF | | Wechseln der Standards fuer Geraet und | | UFD in PIP-Kommandos | | /FR | | Ausgabe der Anzahl freier Bloecke auf | | einem Datentraeger | | /FI:n:m | | Suchen der Datei ueber Dateinummer und | | Dateifolgenummer | | /NM | | unterdrueckt bestimmte PIP-Fehlernach- | | richten | | /TR | | Kuerzen der Dateien auf logisches | | Dateiende ----------|-------------|---------------------------------------- 75 Tabelle 31: (Fortsetzung) ----------------------------------------------------------------- Schalter | Subschalter | Bedeutung ----------------------------------------------------------------- Zugriff zu gesperrten Dateien /EOF | | Spezifizierung des Dateiendezeigers | | fuer eine Datei | | /UN | | Ermoeglicht den Zugriff zu gesperrten | | Dateien | | /SR | | Lesen einer Datei,die durch anderen Nu- | | tzer oder Task bereits geoeffnet ist ----------------------------------------------------------------- Steuerkommandos zur Uebertragung von Dateien von Platte auf Mag- netband und umgekehrt | | /BS:n | | Uebertragungsrichtung: Platte - Magnet- | | band, n spezifiziert die Blocklaenge | | auf Magnetband | | /SB | | Uebertragungsrichtung: Magnetband - | | Platte. | | Die Blocklaenge auf Magnetband ist | | groesser als ein Block auf der Platte. | | /RW | | Rueckspulen eines Magnetbandes ----------|-------------|---------------------------------------- Ausdrucken von Dateien | | /SP:n | | Dateiausgabe auf dem Drucker unter | | Benutzung des Print-Spoolers (PRT), n | | gibt die Anzahl der Exemplare an ----------------------------------------------------------------- 4.3.3. Beschreibung der Kommandos zur Dateiverarbeitung ------------------------------------------------------- 4.3.3.1. /AP - Datei erweitern ------------------------------ Das Kommando eroeffnet eine existierende Datei (die Ausgabedatei) und haengt die Eingabedatei(en) an. Kommando: outfile = infile[,infile].../AP[/FO] Besonderheiten: Ausgabedatei - Sternvereinbarungen sind nicht erlaubt. Dateiname und Dateityp muessen explizit ange- geben werden. Eingabedatei - Wenn Dateiname, Dateityp und Version nicht ange- geben sind, dann nimmt PIP als Standard *.*;* an. /FO - Subschalter Er bewirkt, dass der Dateischutzcode (UIC) der Ausgabedatei gleich dem UFD ist, in den die Aus- gabedatei eingetragen wird. Ist /FO nicht ange- 76 geben, dann ist der UIC der PIP-Task der Datei- schutzcode fuer die Ausgabedatei, unabhaengig davon, in welchen UFD die Datei eingetragen wird (s. Abschn. 4.3.1.). 4.3.3.2. /BS:n - Blocklaenge auf Magnetband ------------------------------------------- Das Kommando legt die Blocklaenge fuer Magnetband fest. Dadurch ist es moeglich, die Magnetbandbloecke groesser als 512 Bytes (Blocklaenge auf dem Plattenspeicher) zu machen. Kommando: outfile[/BS:n] = infile oder outfile = infile[/BS:n] Besonderheiten: n - Argument des /BS - Schalters n ist eine Oktalzahl und gibt die Anzahl der Bytes in einem Block an. /BS auf der Ausgabeseite - spezifiziert die Blocklaenge der Ausgabedatei /BS auf der Eingabeseite - spezifiziert die Blocklaenge der Eingabedatei Ist n kleiner als die wirkliche Byteanzahl, wird ein E/A-Fehler angezeigt. 4.3.3.3. /CD - Erstellungsdatumschalter --------------------------------------- Die Ausgabedatei erhaelt beim Dateitransfer das Erstellungsdatum der Eingabedatei anstelle des Datums des Transfers. Der Schalter /CD ist nicht mit dem /ME- Schalter kombinierbar. Die Angabe des /CD-Schalters bei Ausgabe auf Magnetband ist nicht erlaubt. Kommando: outfile/CD=infile[,infile....,infile] oder outfile=infile/CD[,infile....,infile] 4.3.3.4. /DD - Standarddatumsschalter ------------------------------------- Das Kommando /DD stellt PIP fuer die weitere Arbeit auf ein Stan- darddatum bzw. Zeitabschnitt ein, auf welches sich weitere Opera- tionen beziehen sollen. Dieses Kommando, sowie die Kommandos /EX (s. 4.3.3.9.) und /TD (s. 4.3.3.25.) arbeiten nur im Mehrzeilenformat, d.h. im ersten Schritt muss PIP gestartet und im zweiten Schritt die Auswahlbe- dingung (/DD, /EX, /TD) eingegeben werden. Alle weiteren Opera- tionen gelten dann nur fuer die Dateien, die diesen Kriterien entsprechen. 77 Kommando: /DD: startdate: enddate Besonderheiten: startdate - Das Anfangsdatum eines Zeitabschnittes in der Form dd-mmm-yy (Tag-Monat-Jahr). Bei Verwendung von * wird das Anfangsdatum als unbegrenzt spezifiziert. enddate - Das Enddatum eines Zeitabschnittes in der Form dd-mmm-yy.Bei Verwendung von * wird das Enddatum als unbegrenzt spezifiziert. Die Verwendung der Sternvereinbarung gleichzeitig fuer Anfangs- datum und Enddatum setzt den /DD-Schalter ausser Kraft. Beispiele: PIP>/DD:01-MAY-86:01-JUN-86 PIP>/LI Dadurch werden alle Dateien aufgelistet , die zwischen dem 1.Mai und dem 1.Juni 1986 erstellt wurden. PIP>/DD:*:01-JUN-86 PIP>/LI Es werden alle Dateien aufgelistet , die am oder vor dem 1.Juni erstellt wurden. PIP>/DD:01-MAY-86:* PIP>/LI Es werden alle Dateien aufgelistet,die am oder nach dem 1.Mai er- stellt wurden. 4.3.3.5. /DE - Loeschen von Dateien ----------------------------------- Das Kommando loescht Dateien auf dem Plattenspeicher. Durch den Subschalter /LD kann festgelegt werden , dass die ge- loeschten Dateien am Terminal aufgelistet werden. Kommando: infile[,infile].../DE[/LD] Besonderheiten: Versionsnummer - muss explizit oder durch "*" angegeben werden. Dateiname, Dateityp und UFD koennen alle moeg- lichen Formen annehmen. Die Versionsnummer kann als ;-1, ;0 oder nur ; angegeben werden (siehe Anleitung fuer den Be- diener,Teil 2,) Dateiname und Dateityp muessen in diesem Fall explizit angegeben werden. 78 4.3.3.6. /DF - Wechseln des Standardgeraets und des Standard-UFD ---------------------------------------------------------------- Das Kommando aendert das Standardgeraet und den Standard-UFD fuer alle nachfolgenden PIP-Kommandos. Der UIC der PIP-Task und die Zugriffsrechte zur Datei werden dadurch nicht geaendert. Kommando: dev:[g,m]/DF oder dev:/DF oder [g,m]/DF oder /DF Besonderheiten: dev - Standardgeraet , welches bei allen nachfolgenden PIP- Kommandos benutzt werden soll. [g,m] - Standard-UFD,welches bei allen nachfolgenden PIP-Komman- dos benutzt werden soll. /DF - Standardschalter ; bei Angabe des Schalters ohne Argu- mente werden fuer dev und [g,m] die urspruenglichen Standardwerte zurueckgestellt Dabei gelten fuer dev:--SY0: [g,m]: UIC, von dem PIP aufgerufen wurde 4.3.3.7. /EN - Eintragen eines Synonyms fuer eine Datei in ein UFD -------------------------------------------------------------- Das Kommando ermoeglicht es, auf dem gleichen Datentraeger ein Synonym fuer eine Datei in ein anderes Nutzerdateiverzeichnis (UFD) einzutragen. Dadurch kann ueber verschiedene Dateispezifikationen auf die gleiche Datei zugegriffen werden. Zusaetzlich kann der Subschal- ter /NV angegeben werden. Kommando: outfile =infile[ ,infile].../EN[/NV] Besonderheiten: Ausgabedatei - ist die neue Dateispezifikation. Bezueglich Standards und Sternvereinbarungen gibt es keine Einschraenkungen. /NV - Subschalter (s. Abschn. 4.3.1.). 79 4.3.3.8. /EOF - Dateiendeschalter --------------------------------- Das Kommando gestattet es, das Ende einer Datei zu spezifizieren. Das ist in bestimmten Situationen nuetzlich(z.B.bei Systemab- sturz), wenn eine Datei wichtige Informationen enthaelt, aber die EOF-Zeiger falsch eingestellt sind. Kommando: infile/EOF[:block:byte][,...infile/EOF[:block:byte]] Besonderheiten: Eingabedatei - Die Dateispezifikation muss vollstaendig angege- ben werden . Sternvereinbarungen sind nicht er- laubt. block - Blocknummer, auf welche der EOF - Zeiger einge- stellt ist. Der EOF-Zeiger kann nicht auf auf ei- ne hoehere als die hoechste zugeordnete Blocknum- mer eingestellt werden. Wenn alle Bytes der zuge- ordneten Bloecke benutzt sind, kann der EOF-Zei- ger auf das erste Byte des naechsten Blockes ein- gestellt werden (/EOF:zugeordnete Bloecke +1:0). Die Blocknummer kann eine Oktalzahl oder Dezimal- zahl sein. byte - Die Byteposition des EOF-Schalters ist das erste unbenutzte Byte des spezifizierten Blockes. Die Bytenummer kann eine Oktalzahl oder eine Dezimal- zahl sein. Werden weder die Werte fuer Block noch Byte eingegeben, setzt PIP den EOF-Zeiger hinter das letzte Byte des letzten Blockes, wel- cher der Datei zugeordnet ist. 4.3.3.9. /EX - Dateiausschlussschalter -------------------------------------- Das Kommando schliesst fuer nachfolgende Operationen diejenigen Dateien aus, deren Dateinamen, Typ oder Versionsnummer explizit angegeben sind. Sternvereinbarungen sind moeglich, jedoch muss ein Element der Dateispezifikation angegeben werden. Kommando: filespec/EX Besonderheiten: filespec - Dateispezifikation. Der Dateiname und / oder der Da- teityp und / oder die Versionsnummer koennen eine Sternvereinbarung sein. Geraet oder UFD koennen nicht spezifiziert werden. Beispiel: PIP>*.DAT;*/EX PIP>/LI Die Dateien des Typs .DAT sind in der Liste nicht enthalten. 80 4.3.3.10. /FI - Dateizugriff ueber Dateiidentifikationsnummer ------------------------------------------------------------- Das Kommando ermoeglicht es, ueber die Dateiidentifikationsnummer auf eine Datei zuzugreifen. Das kann erforderlich sein, wenn auf eine Datei nicht mehr ueber den Namen zugegriffen werden kann. Kommando: outfile = /FI:filenumber:filesequencenumber Besonderheiten: Das /FI-Kommando kann in jedem PIP-Kommando anstelle einer Ein- gabedateispezifikation verwendet werden. Dateinummer und Datei- folgenummer sind aus der vollstaendigen Liste eines Nutzerdatei- verzeichnisses ersichtlich (siehe /FU-Kommando). Beispiele: - Umspeichern PIP> TEST.DAT=/FI:104:15 - Auslisten von Dateiverzeichnissen, wenn /FI:63:1 eine Ver- zeichnisdatei ist PIP> /FI:63:1/LI 4.3.3.11. /FR - Freie Bloecke auf dem Datentraeger -------------------------------------------------- Ausgabe des noch verfuegbaren Speicherplatzes des spezifizierten Datentraegers ueber das Bediengeraet. Kommando: [dev:]/FR Format der Ausgabe: dev: HAS nnnn. BLOCKS FREE, mmmm. BLOCKS USED OUT OF pppp. LARGEST CONTIGUOUS SPACE= aaaa. BLOCKS xxxx. FILE HEADERS ARE FREE, yyyy. HEADERS USED OUT OF zzzz. Dabei ist: nnnn Anzahl der freien Bloecke (dezimal) mmmm Anzahl der belegten Bloecke (dezimal) pppp Anzahl der Bloecke des Datentraegers insgesamt (dezimal) aaaa laengster zusammenhaengender Bereich freier Bloecke (de- zimal) xxxx Anzahl der freien Dateihaeder (dezimal) yyyy Anzahl der belegten Dateihaeder (dezimal) zzzz Anzahl der moeglichen Dateihaeder des Datentraegers (de- zimal) 4.3.3.12. /ID - Ausgabe der Version von PIP ------------------------------------------- Ausgabe der aktuellen Versionsnummer von PIP ueber das Bedien- geraet. Kommando: /ID 81 4.3.3.13. /LI - Ausgabe von Dateiverzeichnissen ----------------------------------------------- Informationen ueber den Status der Eingabedateien werden in eine Listendatei eingetragen. Die von /LI ausgegebene Liste wird als Standardliste bezeichnet. Die Kommandos /BR, /FU und /TB geben eine verkuerzte Liste (/BR), eine vollstaendige Liste (/FU) bzw. nur die Anzahl der belegten und reservierten Bloecke (/TB) aus. Kommando: listfile = infile[ ,infile]/LI Bemerkung: Diese Kommandozeile gilt ebenso fuer /BR, /FU und/TB. Besonderheiten: - Wird die Listendatei auf den Plattenspeicher geschrieben, so erhaelt sie standardmaessig den Dateityp .LST. - Wird auf der Ausgabeseite nichts angegeben, so nimmt PIP als Standard fuer die Listendatei TI: (Ausgabe auf dem Bedien- geraet) an. - /FU:n Das Argument n steuert das Ausgabeformat. n ist die Anzahl der Zeichen pro Zeile. Standard sind 80 Zeichen pro Zeile. Listenformate: Standardliste (/LI) ------------------- Jede Zeile hat den folgenden Aufbau: 1) name.type;version 2) Anzahl der von der Datei belegten Bloecke (dezimal) 3) Dateikennzeichen C = Datei ist zusammenhaengend leer = Datei ist nicht zusammenhaengend L = Datei ist gesperrt 4) Erstellungsdatum und -zeit 5) Anzahl der aufgefuehrten Dateien und der insgesamt von ihnen belegten Bloecke Verkuerzte Liste (/BR) ---------------------- Jede Zeile hat den folgenden Aufbau: name.type;version Vollstaendige Liste (/FU) ------------------------- Jede Zeile hat den folgenden Aufbau: 1) name.type;version 2) Dateiidentifikationsnummer (Dateinummer,Dateifolgenummer) 82 3) Anzahl der von der Datei belegten/reservierten Bloecke (dezimal) 4) Dateikennzeichen C = Datei zusammenhaengend leer = Datei nicht zusammenhaengend L = Datei gesperrt 5) Erstellungsdatum und -zeit 6) UIC in der Form [g,m] und Dateizugriffsrechte in der Form: RWED fuer die Kategorien: [System, Eigentuemer, Gruppe, Rest] Dabei bedeutet: R = Lesen erlaubt W = Schreiben erlaubt E = Erweitern erlaubt D = Loeschen erlaubt 7) Datum, Zeit und Anzahl der bisherigen Aktualisierungen der Datei 8) Anzahl der aufgefuehrten Dateien und der insgesamt von ihnen belegten/reservierten Bloecke (dezimal) Ausgabe der letzten Zeile der vollstaendigen Liste (/TB) -------------------------------------------------------- Format der Ausgabe: TOTAL OF nnnn./mmmm. BLOCKS IN xxxx. FILES Dabei ist: nnnn = Anzahl der belegten Bloecke (dezimal) mmmm = Anzahl der reservierten Bloecke (dezimal) xxxx = Anzahl der ausgelisteten Dateien (dezimal) 4.3.3.14. /ME - Fuegen von Dateien ---------------------------------- Aus zwei oder mehr Eingabedateien wird eine neue Datei erstellt. Zur Beschreibung s. Abschn. 4.3.1. Umspeichern von Dateien. 4.3.3.15. /NM - Fehlernachrichtenunterdrueckung ----------------------------------------------- Das Kommando unterdrueckt die PIP - Fehlernachrichten "NO SUCH FILE(S)" und "FILE NOT LOCKED" bei Verarbeitung derartiger Da- teien. Kommando: infile[,infile,...infile][/SW]/NM Besonderheiten: /SW - jede Kombination geeigneter Schalter und Nebenschalter, z.B. die Schalter /LI,/DE,/PU oder /UN und beliebige ihrer Nebenschalter /NM - der /NM-Schalter gilt nicht nur fuer vorangehende Da- teispezifikationen, sondern auch fuer alle Dateispezi- fikationen rechts vom Schalter Beispiel: PIP>*.DAT;*/NM,TEST.MAC;*,PROG.FOR;*/DE 83 4.3.3.16. /PR - Aendern der Zugriffsrechte fuer eine Datei ---------------------------------------------------------- Das Kommando kann die Zugriffsrechte fuer eine Datei aendern. Die Zugriffsrechte sind: R = Lesen W = Schreiben E = Erweitern D = Loeschen Alle Nutzer des Betriebssystems OMOS 1630 sind in vier Nutzer- gruppen eingeteilt. Diese sind: System - das sind alle UIC mit einer Gruppennummer kleiner gleich 10 (oktal) Eigentuemer - UIC des Dateieigentuemers Gruppe - alle UIC mit der gleichen Gruppennummer Rest - alle uebrigen UIC Die oben genannten Zugriffsrechte werden fuer jede Nutzergruppe einzeln festgelegt. Es ist aber nicht moeglich, die Zugriffs- rechte beliebig zu aendern, sondern dies kann nur der Eigentuemer einer Datei selbst oder ein System-UIC, d.h. der UIC der PIP- Task muss der UIC des Dateieigentuemers oder ein System-UIC sein. Kommando: infile/PR[/SY[:RWED]][/OW[:RWED]][/GR[:RWED]][/WO[:RWED]] Besonderheiten: Die vier Subschalter legen die Zugriffsrechte fuer die vier oben genannten Nutzergruppen fest. Beispiel: Soll fuer die "Gruppe" nur Lesen und fuer den "Rest" kein Dateizugriff erlaubt sein, dann notiert man folgendes Kommando: PIP>TEST.DAT;1/PR/GR:R/WO Die Zugriffsrechte fuer "System" und "Eigentuemer" bleiben unveraendert. Die Argumente der vier Subschalter sind in einem Wort (einer Schutzmaske) verschluesselt. Dieses kann als Argument n des PR- Kommandos verwendet werden. Kommando: infile/PR:n Aufbau der Schutzmaske: 15 12 11 8 7 4 3 0 --------------------------------------- | | | Rest Gruppe Eigen- System | | tuemer | --------------------------------------- 3 2 1 0 D E W R Wenn das entsprechende bit gesetzt ist, bedeutet dies, der Datei- zugriff ist nicht erlaubt. 84 Beispiel: PIP>TEST.DAT;1/PR/SY:RWED/OW:RWED/GR:R/WO ist identisch mit PIP>TEST.DAT;1/PR:177000 /FO kann als Subschalter zum /PR-Kommando angewendet werden. 4.3.3.17. /PU - Loeschen alter Versionen von Dateien ---------------------------------------------------- Mit dem Kommando werden veraltete Versionen einer Datei geloescht. Kommando: infile[,infile].../PU[:n][/LD] Besonderheiten: Eingabedatei - Spezifiziert die zu loeschende Datei. Die Ver- sionsnummer braucht nicht angegeben zu werden. /PU:n - Schalter - n kann wahlweise angegeben werden. Wenn n ange- geben ist, und m ist die letzte Version der Da- tei, dann bleiben alle existierenden Versionen dieser Datei groesser m-n erhalten, und alle Versionen kleiner gleich m-n werden geloescht. - die letzte Version bleibt immer erhalten, da n=1 Standard ist. /LD - Nebenschalter fuer das Auflisten geloeschter Da- teien. Beispiel: Von der Datei TEST.DAT existieren die (m) Versionen 1 bis 6. PIP>TEST.DAT/PU m=6 n=3 m-n=3 Version 1,2 und 3 werden geloescht Version 4,5 und 6 bleiben erhalten Wenn zwischen m und n bereits Versionen geloescht sind, bleiben weniger als n Versionen erhalten. 4.3.3.18. /RE - Umbenennen von Dateien -------------------------------------- Mit dem Kommando koennen einzelne Elemente der Dateispezifikation geaendert werden. Das Kommando kann nur auf Dateien angewendet werden, die sich auf dem gleichen Datentraeger befinden. Kommando: outfile = infile[,infile].../RE[/NV] Besonderheiten: Ausgabedatei - ist die Dateispezifikation der neuen Datei 85 - Die einzelnen Elemente der Dateispezifikation einschliesslich UFD koennen explizit oder mit "*" angegeben werden bzw. leer sein. Bei "*" oder leer wird das entsprechende Element der Eingabedatei uebernommen. Eingabedatei - ist die Dateispezifikation der umzubenennenden Datei. Sind name.type;version nicht angegeben, ist *.*;* Standard. - Ein Umschreiben von Dateien in ein anderes UFD ist moeglich. Die Dateien werden dann aus dem alten UFD ge- loescht. /NV - Subschalter (s. Abschn. 4.3.1.) Beispiel: - Umbenennen einer einzelnen Datei PIP>TEST.DAT;1=INPUT.DAT;1/RE - Eintragen aller Dateien aus dem UFD [200,200] in den UFD [200,7] PIP>[200,7]=[200,200]/RE name.type;version jeder Datei bleibt erhalten. Im UFD [200,200] sind diese Dateien geloescht. 4.3.3.19. /RM - Loeschen einer Dateispezifikation im Dateiverzeichnis ---------------------------------------------------- Das Kommando loescht die zu einer Datei gehoerende Eintragung im Dateiverzeichnis. Die Datei selbst bleibt erhalten. Kommando: infile[,infile].../RM Besonderheiten: Eingabedatei - gibt die zu loeschende Dateispezifikation an - *.*;* ist nicht moeglich. Beispiel: - Loeschen einer Dateispezifikation PIP>DK1:[200,3]TEST.DAT;1/RM Die Dateispezifikation TEST.DAT;1 wird aus dem Dateiverzeich- nis [200,3] auf dem Plattenspeicher DK1: geloescht. 4.3.3.20. /RW - Zurueckspulen eines Magnetbandes ------------------------------------------------ Das Kommando bewirkt das Zurueckspulen eines Magnetbandes. Kommando: outfile[/RW] = infile oder outfile = infile[/RW] 86 Besonderheiten: 1. Steht /RW auf der Ausgabeseite, dann wird das Magnetband zurueckgespult und auf den Bandanfang positioniert. 2. Steht /RW auf der Eingabeseite, dann wird das Magnetband auf den Anfang der Eingabedatei positioniert. 4.3.3.21. /SB - Ueberschreiten der Blockgrenzen ----------------------------------------------- Beim Umspeichern von Magnetband auf Plattenspeicher koennen Saet- ze die Blockgrenzen ueberschreiten. Kommando: outfile/SB = infile Besonderheiten: /-SB ist moeglich und wird angegeben, wenn Saetze bei der Uebertragung vom Magnetband auf den Plattenspeicher Block- grenzen ueberschreiten sollen. /SB ist Standard, und bewirkt ein unveraendertes Uebernehmen der Dateien. 4.3.3.22. /SD - Selektives Loeschen von Dateien ----------------------------------------------- Das Kommando loescht Dateien analog dem /DE-Schalter. Vor dem Loeschen wird dem Nutzer die betreffende Datei angezeigt. Als Antworten sind Y, N, Q, G in Verbindung mit oder CTRL/Z moeglich. Kommando: infile[,infile...infile]/SD Besonderheiten: Eine Dateispezifikation muss angegeben werden, da in diesem Kommando der Standardwert *.*;* nicht gueltig ist. Antwortmoeglichkeiten: Y diese Datei loeschen Y diese Datei loeschen und PIP beenden [N] diese Datei nicht loeschen [N] diese Datei nicht loeschen und PIP beenden Q diese Datei nicht loeschen und Rueckkehr zum PIP - Kommandomodus Q diese Datei nicht loeschen und PIP beenden G diese Datei und alle nachfolgenden spezifierten Dateien loeschen , geloeschte Dateien auslisten und Rueckkehr zum PIP - Kommandomodus G diese Datei und alle nachfolgenden spezifierten Dateien loeschen , geloeschte Dateien auslisten und PIP beenden 87 Beispiel: PIP>TEST.MAC;*/SD DELETE FILE DK1:[200,200]TEST.MAC;1[Y/N/G/Q]? N DELETE FILE DK1:[200,200]TEST.MAC;2[Y/N/G/Q]? G THE FOLLOWIN FILES HAVE BEEN DELETED; DK1:[200,200]TEST.MAC;2 DK1:[200,200]TEST.MAC;3 PIP> 4.3.3.23. /SP - Dateiausgabe auf dem Zeilendrucker -------------------------------------------------- Die Dateispezifikation der zu druckenden Datei wird der Task PRT... (Print Spooler) uebergeben. In Abhaengigkeit vom Typ der Datei, sowie von der Generierung des Print-Spoolers wird die Datei nach der Ausgabe geloescht. Kommando: infile[,infile]/SP:n Besonderheiten: Eingabedatei - Ist die Dateispezifikation der Datei, die ausge- druckt werden soll. - Eine Dateispezifikation muss angegeben werden,da der Standardwert *.*;* nicht gilt. - Dabei ist n das Argument des /SP-Schalters. n gibt an, wie oft die Dateien ausgedruckt wer- den sollen. n=1 ist Standard - Beim Drucken mit Loeschen ist n ohne Bedeutung. Die Datei wird nach der ersten Ausgabe ge- loescht. - /FI:n:m ist als Dateispezifikation erlaubt. 4.3.3.24. /SR - Gemeinsames Lesen einer Datei --------------------------------------------- Das /SR-Kommando gestattet es eine Datei zu lesen, welche bereits durch eine andere Task mit Schreibzugriff eroeffnet wurde. Es be- steht jedoch keine Garantie, die gewuenschten Informationen zu erhalten, da der EOF-Zeiger zum Zeitpunkt der Eroeffnung der Da- tei zum Lesen fehlerhaft sein kann. Kommando: outfile=infile/SR Beispiel: PIP>TI:=[100,1]TEST.DAT/SR Es wird der Inhalt der Datei TEST.DAT ueber Terminal ausgegeben, obgleich diese Datei bereits von einer Task mit Schreibzugriff eroeffnet wurde. 88 4.3.3.25. /TD - Dateisuche entsprechend Tagesdatum -------------------------------------------------- Durch das /TD-Kommando werden nachfolgende Operationen auf die- jenigen Dateien beschraenkt, die am aktuellen Tagesdatum erstellt wurden. Besonderheiten: Wird der /TD-Schalter in Verbindung mit dem /DD-Schalter ge- nutzt und das Anfangsdatum und das Enddatum des /DD-Schalters mit der Sternvereinbarung spezifiziert,so wird auch der /TD- Schalter negiert.(s. Beschreibung /DD-Schalter) Beispiel: PIP>/TD PIP>/LI DIRECTORY DK1:[200,201] 15-MAY-85 12:20 DAY OF 15-MAY-85 TEXT.DAT;1 1. 15-MAY-85 11:04 BEISP.TXT;1 4. 15-MAY-85 11:20 TOTAL OF 5./10. BLOCKS IN 2. FILES 4.3.3.26. /TR - Freigabe nicht belegter Bloecke von Dateien ----------------------------------------------------------- Durch das /TR-Kommando werden die nicht belegten, aber reservier- ten Bloecke, frei gegeben. Kommando: infile[,infile...,infile]/TR Besonderheiten: Eingabedatei - Eine Dateispezifikation muss angegeben werden, da in diesem Kommando der Standardwert *.*;* nicht gueltig ist. 4.3.3.27. /UF - Erstellt das UFD fuer die Ausgabedatei ------------------------------------------------------- Das /UF-Kommando ist eine Erweiterung des Umspeicherkommandos. Falls das UFD der Ausgabedatei auf dem Zieldatentraeger noch nicht exsistiert, wird es durch /UF erstellt. Kommando: outfile/UF[/FO] = infile[,infile]... Besonderheiten: - Der Schalter /UF muss stets auf der Ausgabeseite stehen. - Der Subschalter /FO kann angegeben werden (s. Abschn. 4.3.1.) - Der Anwender muss Schreibzugriff zu dem Datentraeger haben, auf den die Ausgabedatei geschrieben werden soll. 89 Beispiel: Eine typische Anwendung des Kommandos ist das Uebertragen von Dateien auf eine Sicherungsplatte. Alle Quellen und Objektmoduln eines bestimmten Nutzerdateiver- zeichnisses, z.B. [200,7] sollen von Plattenspeicher 0 auf Plattenspeicher 6 uebertragen werden. PIP>DK6:[*,*]/UF/FO=SY0:[200,7]*.MAC;*,*.OBJ;* 4.3.3.28. /UN - Ermoeglichen des Zugriffs zu einer gesperrten Datei ------------------------------------------------------------- Das Kommando gibt die Erlaubnis, eine Datei zu eroeffnen, die bei Verwendung der Dateizugriffsroutinen (FCS) nicht ordnungsgemaess geschlossen wurde. Falls z.B. ein Programm mit FCS eine Datei eroeffnet hat und dann beendet wurde, ohne dass die Datei vorher geschlossen wurde, so ist diese Datei gesperrt. Einer gesperrten Datei fehlen verschiedene Informationen. Mit dem /UN-Kommando kann man den Zugriff zu einer gesperrten Datei ermoeglichen und anschliessend die entsprechenden Korrekturen durchfuehren. Kommando: infile[,infile].../UN Besonderheiten: - Fuer jede Datei muss Dateiname, Dateityp und Version angege- ben werden. - Der UIC der PIP-Task muss der des Dateieigentuemers oder ein System-UIC sein. 4.3.3.29. /UP - Ueberschreiben einer bereits existierenden Datei ---------------------------------------------------------------- Das Kommando eroeffnet eine existierende Datei. Diese wird ge- loescht und mit den Daten der Eingabedatei(en) neu beschrieben. Kommando: outfile = infile[,infile].../UP/FO Besonderheiten: Ausgabedatei - ist die zu ueberschreibende Datei - Die Dateispezifikation muss explizit angegeben werden, d.h. es sind keine Sternvereinbarungen erlaubt. - Kenndaten und Satzeigenschaften werden von der ersten Eingabedatei uebernommen. Eingabedatei - Sind name.type;version nicht angegeben, ist *.*;* Standard. /FO - Subschalter (s. Abschn. 4.3.1.) 90 Tabelle 32: PIP - Zusammenstellung der Schalter und Subschalter ----------------------------------------------------------------- Schalter | Subschalter | Bedeutung ----------------------------------------------------------------- | | leer | | Umspeichern von Dateien | | /AP | | fuegt Dateien an eine existierende | | Datei | | | /FO | UIC fuer Ausgabedatei festlegen | | /BR | | UFD ausgeben, Kurzformat | | /BS:n | | festlegen der Blockgroesse fuer | | Magnetband | | /CD | | die Ausgabedatei erhaelt das Erstel- | | lungsdatum der Eingabedatei | | /DD | | suchen von Dateien, die in einem be- | | stimmten Zeitraum gebildet wurden | | /DE | | loeschen von Dateien | | | /LD | Auflisten der geloeschten Dateien | | /DF | | aendert das Standardgeraet oder -UFD in | | PIP | | /EN | | traegt Synonym in ein UFD ein | | | /NV | erhoehen der Versionsnummer | | /EOF | | Spezifizierung des Dateiendezeigers | | fuer eine Datei | | /EX | /LI | Ausgabeunterdrueckung von spezifizier- | | ten Dateien | | /FI | | Dateizugriff ueber Identifikations- | | nummer | | /FR | | gibt die Anzahl der freien Bloecke auf | | dem Geraet aus | | /FU | | UFD ausgeben, volles Format | | /ID | | PIP Version | | /LI | | UFD ausgeben, normales Format | | /ME | | fuegt Dateien | | | /BL:n[.] | Ausgabedatei hat mindestens n zusammen- | | haengende Bloecke | | | /CO | Ausgabedatei ist physisch zusammen- | | haengend ----------------------------------------------------------------- 91 Tabelle 32: (Forsetzung) ----------------------------------------------------------------- Schalter | Subschalter | Bedeutung ----------------------------------------------------------------- | | | /FO | UIC fuer Ausgabedatei festlegen | | | /NV | Erhoehen der Versionsnummer | | | /SU | Ueberschreibt Ausgabedatei | | /NM | | Fehlernachrichtenunterdrueckung | | /PR | | aendert Dateizugriffsrechte | | | /GR[:RWED] | fuer die Kategorie: Gruppe | | | /OW[:RWED] | fuer die Kategorie: Eigentuemer | | | /SY[:RWED] | fuer die Kategorie: System | | | /WO[:RWED] | fuer die Kategorie: Rest | | | /FO | UIC fuer die Ausgebedatei festlegen | | /PU:n | | loescht veraltete Versionen einer Datei | | | /LD | Auflisten der geloeschten Dateien | | /RE | | aendert die Dateispezifikation | | /RM | | loescht eine Dateispezifikation im UFD | | /RW | | Zurueckspulen eines Magnetbandes | | /SB | | Saetze ueberschreiten Blockgrenzen beim | | Umspeichern von Magnetband auf Platte | | /SD | | selektives Loeschen | | /SP:n | | Dateiausgabe auf Zeilendrucker (spool) | | /SR | | gemeinsames Lesen einer Datei | | /TB | | Anzahl der belegten Bloecke im UFD | | /TR | | Freigeben nicht belegter Bloecke einer | | Datei | | /UF | | UFD eroeffnen und umspeichern | | | /FO | UIC fuer Ausgabedatei festlegen | | /UN | | ermoeglicht Zugriff zu gesperrten Da- | | teien | | /UP | | ueberschreibt eine existierende Datei | | | /FO | UIC fuer Ausgabedatei festlegen ----------------------------------------------------------------- 92 4.4. Fehlermitteilungen ----------------------- Die von PIP waehrend der Abarbeitung gefundenen Fehler werden in folgendem Format ausgegeben: PIP--< Primaere Fehlerausschrift> < Dateispezifikation > -- < sekundaere Fehlerausschrift > Die Dateispezifikation, wenn angegeben, bezeichnet die Datei oder mehrere Dateien, die gerade bearbeitet wurden, als der Fehler auftrat. Wurde der Fehler vom Steuerprogrammsystem, vom Dateisystem oder von der Geraeteroutine festgestellt, dann enthaelt die sekundaere Fehlerausschrift die Beschreibung der Fehlerur- sache. PIP -- ALLOCATION FAILURE - NO CONTIGUOUS SPACE Auf dem Ausgabedatentraeger ist nicht genuegend zusammenhaengen- der Speicherplatz fuer die Datei vorhanden, die gerade umgespei- chert wird. Nicht mehr benoetigte Dateien loeschen. Kommando wiederholen. PIP -- ALLOCATION FAILURE ON OUTPUT FILE oder PIP -- ALLOCATION FAILURE NO SPACE AVAILABLE Auf dem Ausgabedatentraeger ist nicht genuegend Speicherplatz fuer die Datei vorhanden, die gerade umgespeichert wird. Nicht mehr benoetigte Dateien loeschen. Kommando wiederholen. PIP -- BAD USE OF WILD CARDS CHARACTERS IN DESTINATION FILE NAME Die Sternvereinbarung war nicht als Dateiname zugelassen. Kommando mit explizit angegebenen Ausgabedateinamen wiederholen. PIP -- CANNOT FIND DIRECTORY FILE Das angegebene UFD existiert auf dem Datentraeger nicht. Wiederholen des Kommandos mit dem richtigen UFD oder dem rich- tigen Datentraeger. PIP -- CANNOT FIND FILE(S) Die im Kommando angegebenen Dateien werden nicht in dem angege- benen Dateiverzeichnis (UFD) gefunden. Ueberpruefen der Dateispezifikation. Kommando wiederholen. PIP -- CANNOT RENAME FROM ONE DEVICE TO ANOTHER Beim Umbenennen einer Datei wurde ein anderes Geraet zugewiesen. Umbenennen der Datei auf dem Eingabegeraet. Wiederholen des Kommandos und anschliessend Umspeichern auf das gewuenschte Geraet. PIP -- CANNOT TRUNCATE THIS FILETYPE Es koennen nur von Dateien mit Saetzen variabler Laenge, fester Laenge und sequentieller Anordnung nicht belegte Bloecke freige- geben werden. Die Dateispezifikation ist zu pruefen und das Kommando zu wieder- holen. 93 PIP -- CLOSE FAILURE ON INPUT FILE oder PIP -- CLOSE FAILURE ON OUTPUT FILE Die Ein- bzw. Ausgabedatei konnte nicht richtig geschlossen wer- den. Die Datei ist gesperrt. Kommando wiederholen. Tritt der Fehler wieder auf, dann mit dem Systemprogramm VFY (siehe Kapitel 15) die Dateistruktur pruefen, um einen evtl. Ge- raetefehler festzustellen. PIP -- COMMAND SYNTAX ERROR Das angegebene Kommando entspricht nicht den Syntaxregeln. PIP -- DEVICE NOT MOUNTED/ALLOCATED Das Geraet ist nicht eingegliedert bzw. ein anderer Nutzer hat das Geraet eingegliedert. PIP -- DIRECTORY WRITE PROTECTED Eine Eintragung im Dateiverzeichnis kann nicht geloescht werden, da das Geraet bzw. die Verzeichnisdatei gegen Schreiben ge- schuetzt ist. Schreibschutz aufheben oder Zugriffsrechte fuer das Dateiver- zeichnis aendern. PIP -- ERROR FROM PARSE Das angegebene Dateiverzeichnis existiert nicht. PIP -- EXPLICIT OUTPUT FILENAME REQUIRED Wiederholen des Kommandos mit explizit angegebenen Dateinamen. PIP -- FAILED TO ATTACH OUTPUT DEVICE oder PIP -- FAILED TO DETACH OUTPUT DEVICE Ein satzorientiertes Ausgabegeraet laesst sich nicht anschliessen bzw. trennen. Meist ist das Geraet off-line oder nicht vorhanden. PIP -- FAILED TO ATTACH TERMINAL PIP konnte kein Terminal ketten, weil ein Privilegverstoss vor- lag. PIP -- FAILED TO CREATE OUTPUT UFD Es konnte keine Eintragung in einem Verzeichnis vorgenommen wer- den, weil das Geraet schreibgeschuetzt war oder ein Privilegver- stoss vorlag. PIP -- FAILED TO DELETE FILE oder PIP -- FAILED TO MARK FILE FOR DELETE Eine geschuetzte Datei sollte geloescht werden. Wiederholen des Kommandos mit dem richtigen UIC der PIP-Task. PIP -- FAILED TO ENTER NEW FILE NAME Die Ausgabedatei existiert bereits im angegebenen Dateiverzeich- nis, oder das Dateiverzeichnis ist gegen Schreiben geschuetzt. Wiederholen des Kommandos mit dem richtigen Dateinamen und UIC bzw. mit dem richtigen UIC der PIP-Task. PIP -- FAILED TO FIND FILE(S) Die im Kommando angegebene Datei bzw. Dateien sind nicht im ange- gebenen UFD enthalten. 94 PIP -- FAILED TO GET TIME PARAMETERS Ein interner Systemfehler trat auf, als PIP versuchte, Datum und Uhrzeit zu erhalten. Wiederholen des Kommandos. Tritt der Fehler wieder auf, dann liegt ein Systemfehler vor. PIP -- FAILED TO OPEN INDEX FILE PIP kann die Indexdatei des angegebenen Geraetes nicht lesen. Der Nutzer hat nicht die notwendigen Zugriffsrechte. Wiederholen des Kommandos, nachdem PIP unter einem System - UIC gestartet wurde. PIP -- FAILED TO OPEN STORAGE BITMAP FILE PIP kann die Datentraegerbelegungsliste des angegebenen Geraets nicht lesen. Der Nutzer hat nicht die notwendigen Zugriffsrechte. Wiederholen des Kommandos, nachdem PIP unter einem System-UIC gestartet wurde. PIP -- FAILED TO READ ATTRIBUTES Das angegebene Geraet ist defekt oder der Nutzer hat nicht die notwendigen Zugriffsrechte. PIP unter dem richtigen UIC starten. Wenn ein Geraetefehler vor- liegt, dann mit dem Systemprogramm VFY (siehe Kapitel 15) den Fehler lokalisieren. PIP -- FAILED TO REMOVE DIRECTORY ENTRY PIP kann eine Eintragung in einem Dateiverzeichnis nicht loe- schen, da das Geraet gegen Schreiben geschuetzt ist bzw. der Nutzer nicht die notwendigen Zugriffsrechte hat. Schreibschutz aufheben oder die Zugriffsrechte fuer das Dateiver- zeichnis aendern. PIP -- FAILED TO RESTORE ORIGINAL DIRECTORY ENTRY-FILE IS LOST PIP hat eine Datei aus dem Dateiverzeichnis gestrichen und konnte die Datei nicht in ein anderes Dateiverzeichnis (ueber /RE) ein- tragen. Die urspruengliche Eintragung ist durch PIP nicht wieder herzustellen. Mit dem /LO-Kommando des Systemprogramms VFY (s. Kapitel 15) kann man den Dateinamen wieder erhalten. PIP -- FAILED TO SPOOL FILE FOR PRINTING Es ist nicht genuegend dynamischer Speicherplatz verfuegbar, oder die Spooler-Task ist nicht installiert. Warten auf die Freigabe der Spooler-Warteschlange oder Installie- ren der Spooler-Task. Kommando wiederholen. PIP -- FAILED TO TRUNCATE FILE Der Inhalt des spezifierten Datentraegers ist zerstoert oder der Nutzer hat nicht die notwendigen Zugriffsrechte, um nicht belegte Bloecke freizugeben. PIP -- FAILED TO WRITE ATTRIBUTES Das Geraet ist defekt oder der Nutzer hat nicht die notwendigen Zugriffsrechte. PIP unter dem richtigen UIC starten. Wenn ein Geraetefehler vor- liegt, dann mit dem Systemprogramm VFY (siehe Kapitel 15) den Fehler lokalisieren. 95 PIP -- FILE IS LOST PIP hat eine Datei aus dem Dateiverzeichnis gestrichen, konnte aber die Datei selbst nicht loeschen. Die Eintragung in das Da- teiverzeichnis ist durch PIP nicht wieder herzustellen. Mit dem /LO-Kommando des Systemprogramms VFY (s. Kap.15) kann man den Dateinamen wieder erhalten. PIP -- FILE NOT LOCKED Der /UN-Schalter wurde auf eine Datei angewendet, die nicht ge- sperrt war. Wiederholen des Kommandos mit der richtigen Datei. PIP -- GET COMMAND LINE - BAD @ FILE NAME Es wurde ein falscher Kommandodateiname angegeben. Kommando mit richtigem Namen wiederholen. PIP -- GET COMMAND LINE - FAILED TO OPEN @ FILE Die angegebene Kommandodatei wurde nicht gefunden. PIP -- GET COMMAND LINE - I/O ERROR Waehrend des Lesens einer Kommandozeile trat ein E/A-Fehler auf. Kommando wiederholen. Tritt der Fehler wieder auf, dann liegt ein Systemfehler vor. PIP -- GET COMMAND LINE - MAX @ FILE DEPTH EXCEEDED Der Maximalwert der Verschachtelung von Indirektkommandodateien (4) wurde ueberschritten. PIP -- ILLEGAL COMMAND Das Kommando wird von PIP nicht anerkannt. Korrigieren und wiederholen des Kommandos. PIP -- ILLEGAL EOF VALUE Es wurde ein unzulaessiger Block- und/ oder Bytewert in der Kom- mandozeile spezifiziert. PIP -- ILLEGAL RESPONSE - TRY AGAIN Eine Eingabeanforderung von PIP wurde fehlerhaft beantwortet. (z.b. bei Anwendung des /SD- Schalters) PIP -- ILLEGAL SWITCH Der angegebene Schalter ist kein PIP-Schalter. PIP -- ILLEGAL '*' COPY TO SAME DEVICE AND DIRECTORY Der Nutzer versuchte, alle Versionen einer Datei in das gleiche Dateiverzeichnis zu kopieren, in dem die Eingabedateien sind. Dies wuerde zu einer endlosen Uebertragung fuehren und ist nicht erlaubt. Umbenennen der Dateien oder ein anderes Dateiverzeichnis angeben. Kommando wiederholen. PIP -- ILLEGAL USE OF WILD CARD VERSION OR LATEST VERSION Die Verwendung der Sternvereinbarung fuer die Version oder das Weglassen der Versionsnummer fuehren beim angegebenen Kommando zu nicht ausfuehrbaren Operationen. Wiederholen des Kommandos mit explizit angegebener Versionsnummer fuer jede einzelne Datei. 96 PIP -- INPUT FILES HAVE CONFLICTING ATTRIBUTES Die Eingabedateien, die mit einem /ME-, /UP- oder /SU- Kommando spezifiziert wurden, haben widerspruechliche Attribute oder die Attribute der Eingabedatei, die in einem /AP- Kommando spezifi- ziert wurde, widersprchen denen der Ausgabedatei. Diese Nachricht dient nur als Warnung. Die Operation wurde abge- schlossen. Bei einem /ME-, /UP- oder /SU- Kommando sind die Attribute der Ausgabedatei die der ersten Eingabedatei. Bei einem /AP-Kommando bleiben die Attribute der Ausgabedatei unveraendert, jedoch koennen die Attribute nicht fuer alle Saetze der Datei gueltig sein. PIP -- I/O ERROR ON INPUT FILE oder PIP -- I/O ERROR ON OUTPUT FILE Eine der folgenden Fehlerbedingungen kann vorliegen. - Das Geraet ist nicht im On-line-Zustand. - Das Geraet ist nicht eingegliedert. - Ein Hardewarefehler liegt vor. - Der Ausgabedatentraeger ist voll belegt. - Die Eingabedatei ist fehlerhaft. Bestimmung der Fehlerursache und Korrektur der entsprechenden Bedingung. Wiederholung des Kommandos. PIP -- NOT A DIRECTORY DEVICE Ein verzeichnis-orientiertes Kommando wurde fuer ein Geraet gege- ben, das kein Dateiverzeichnis hat (z.B. Drucker, Stanzer). Wiederholen des Kommandos ohne Angabe des UFD. PIP -- NOT ENOUGH BUFFER SPACE AVAILABLE PIP hat nicht genuegend E/A-Puffer, um das angegebene Kommando auszufuehren. Die PIP-Task muss in einer groesseren Partition installiert oder der Puffer durch den /INC-Schalter des MCR INSTALL-Kommandos ver- groessert werden. PIP -- NO SUCH FILE(S) Die im Kommando angegebenen Dateien wurden nicht in dem angege- benen Dateiverzeichnis gefunden. Uberpruefen der Dateispezifikation. Kommando wiederholen. PIP -- ONLY [*,*] IS LEGAL AS DESTINATION UIC Beim Umspeichern wurde auf der Ausgabeseite des Kommandos ent- weder [*,n1] oder [n2,*] als UFD angegeben. Wiederholen des Kommandos mit [*,*] als Ausgabe-UFD. PIP -- OPEN FAILURE ON INPUT FILE oder PIP -- OPEN FAILURE ON OUTPUT FILE Eine der folgenden Fehlerbedingungen kann vorliegen: - Die Datei ist vor Zugriff geschuetzt. - Das Geraet ist nicht eingegliedert. - Ein Geraetefehler liegt vor. - Das angegebene Dateiverzeichnis existiert nicht. - Die angegebene Datei ist nicht in dem angegebenen Dateiverzeichnis enthalten. Bestimmung der Fehlerursache und Korrektur. Wiederholung des Kommandos. 97 PIP -- OUTPUT FILE ALREADY EXISTS - NOT SUPERSEDED Eine Ausgabedatei mit dem gleichen Dateinamen, Dateityp und Ver- sionsnummer existiert bereits. Wiederholen des Kommandos mit dem Subschalter /NV, um der Aus- gabedatei eine andere Versionsnummer zu geben, oder Verwenden des Subschalters /SU, um die Ausgabedatei zu ueberschreiben. PIP -- TOO MANY COMMAND SWITCHES - AMBIGOUS Es werden entweder zu viele oder sich widersprechende Schalter im Kommando angegeben. Wiederholen des Kommandos mit richtigem Schalter. PIP -- VERSION MUST BE EXPLIZIT OR '*' Die Versionsnummer der Datei muss entweder explizit oder als Sternvereinbarung angegeben werden. Wiederholen des Kommandos mit der entsprechenden Versionsnummer. 98 5. Editor EDI 1630(OMEX) ------------------------ 5.1. Vorbemerkungen ------------------- Wird bei der Testung eines Programmes ein Fehler erkannt, so muss die Quelltextdatei dieses Programms korrigiert werden, bevor uebersetzt und erneut getestet werden kann. Der Editor dient dieser Aufbereitung von Quelltextdateien. Im einfachsten Fall werden Zeilen gestrichen oder eingefuegt. Daneben ist mit EDI auch die zeichenweise Korrektur moeglich. EDI ist sowohl fuer die interaktive Arbeit an dem Bediengeraet (BDG), als auch fuer eine vorprogrammierte Arbeitsweise ausgelegt. Durch besondere Komman- dos erleichtert EDI ausserdem die Synthese neuer Quellen. Mit Kommandos koennen Abschnitte einer Quelltextdatei innerhalb der Datei versetzt, in andere Dateien kopiert oder von anderen Da- teien eingefuegt werden. Haeufig benutzte Kommandos kann der EDI-Nutzer als Makros verein- baren. Ein Sonderfall bei der EDI-Nutzung ist die Eingabe kleinerer Datenmengen von dem Bediengeraet auf eine neu erstellte Datei. Damit koennen operativ benoetigte Dateien unkompliziert erstellt werden. EDI bezieht sich mit seinen Aufbereitungsmoeglichkeiten nicht auf ein spezielles Quelltextformat. Es enthaelt Aufbereitungsmoeg- lichkeiten fuer beliebige Texte, was sich guenstig auf die Bear- beitung von Programmen in problemorientierten Sprachen auswirkt. Dieses Kapitel enthaelt eine umfassende Darstellung der Aufberei- tungsmoeglichkeiten durch EDI, der Arbeitsweise des Editors sowie moeglicher Sonderfaelle und Fehler. Bevor man die Beschreibung der einzelnen Kommandos liest, sollte man sich im Abschnitt 5.3. mit den in diesem Kapitel verwendeten Grundbegriffen und mit der Arbeitsweise des Editors vertraut machen. An einigen Stellen dieses Kapitels werden Begriffe aus anderen Sachgebieten, z.B. der Dateibenutzung verwendet. Zu Fragen der Bediengeraetefunktionen wie z.B. die Bedeutung bestimmter Steuer- zeichen sowie zu den Moeglichkeiten der Aktivierung des Editors siehe Anleitung fuer den Bediener, Teil 2. Der Begriff "Text" bezieht sich auf die druckbaren Zeichen des KOI-7-Codes gemaess ST RGW 356-76. 99 5.2. Benutzung der Geraete, Datenfluesse und E/A-Restriktionen -------------------------------------------- EDI verwendet fuer die Ein- und Ausgabe, speziell fuer die Kommu- nikation und fuer die Listenausgabe Pseudogeraete. Diesen Pseudo- geraeten ist ein physisches Geraet zugewiesen. Bei der Arbeit mit Dateien wird das zu benutzende Geraet in der Dateispezifikation angegeben. ************* TI:---->* * * E D I *---->CL: TI:<----* * ************* | | Kommunikation | | LP-Kommando ueber BDE | | (Liste auf Pseudogeraet) | | | | | | --------- Dateiarbeit mit Geraeten aus der Dateispezifikation Bild 1: EDI - Benutzung der Geraete TI: Terminal input CL: Consol list Bei der Arbeit mit Dateien, besonders bei der Angabe der Ein- bzw. Ausgabedatei koennen bestimmte Teile der Dateispezifikation weggelassen werden. Fuer sie werden Standards angenommen. Waehrend der Arbeit von EDI wird das Bediengeraet zur aus- schliesslichen Nutzung durch EDI reserviert. Standard fuer Eingabedateien: vollstaendige Angabe: dev:[g,m]name.typ;version Standardannahme: dev: Bei fehlender Geraeteangabe wird das Pseudogeraet SY0 benutzt. [g,m] Bei fehlender Angabe wird der durch das MCR-Kommando SET /UIC=[g,m] bestimmte UIC benutzt. Ging der Datei- spezifikation kein solches Kommando voraus, wird ein systemspezifischer Standard benutzt. name Der Dateiname ist in jedem Fall anzugeben. Fuer ihn existiert kein Standard. .typ Standardannahme ist der Typ "null" . ;version Es wird die letzte Version benutzt. 100 Standard fuer Ausgabedateien: Standardannahme: dev: Es wird das Eingabegeraet benutzt. [g,m] Es wird das UFD der Eingabedatei benutzt. name Es wird der Dateiname der Eingabedatei benutzt. .typ Es wird der Typ der Eingabedatei verwendet. ;version Es wird die Nummer der hoechsten existierenden Version um eins erhoeht. EDI arbeitet mit folgenden Dateien (Plattendateien): - Eingabedatei (Input file, primaere Eingabedatei): Sie enthaelt den aufzubereitenden, alten Quelltext. Aus ihr werden sequentiell Zeilen einzeln oder in Gruppen (Bloecken, Seiten) gelesen und aufbereitet. - Ausgabedatei (Output file): In diese Datei wird die aufbereitete, neue Quelltextdatei ge- schrieben. - Indirektkommando-Datei (@-file): Im Normalfall werden die Kommandos von dem Bediengeraet einge- geben. Der in der Anleitung fuer den Bediener, Teil 2 beschrie- bene Aufruf von Indirektkommando-Dateien wird von EDI unter- stuetzt. (vorprogrammierte Arbeitsweise) - Sekundaere Eingabedatei (Secondary file): Bei der Neuerstellung von Quelltextdateien werden oft Teil- stuecke aus mehreren Quelltextdateien zusammenkopiert. Bei dieser Aufgabe sind sekundaere Eingabedateien von Nutzen. Die Benutzung sekundaerer Dateien wird in Abschnitt 5.3.4. beschrieben. - Hilfsdateien: Unter dieser Sammelbezeichnung werden Dateien zusammengefasst, die waehrend der Aufbereitung mit bestimmten Kommandos gelesen oder erstellt werden. So ist es zum Beispiel moeglich, Zeilen mit dem SAVE-Kommando in eine Datei zu schreiben oder Zeilen aus einer Datei mit dem UNSAVE-Kommando zu lesen. Mit dem MC- Kommando koennen vorbereitete Kommandofolgen zur spaeteren Abarbeitung aus einer Datei gerufen werden. E/A-Restriktionen Die Ein- und Ausgabe von Zeilen erfolgt im variabel geblocktem Format. Die maximale Zeilenlaenge ist dabei 132 Zeichen. Die Ausgabe muss stets auf denselben Datentraeger erfolgen wie die Eingabe. Wenn die primaere Eingabedatei FORTRAN-Drucksteuerzeichen ent- haelt (Satztyp FD.FTN), so werden alle von EDI gebildeten Ausga- bedateien mit diesem Satztyp gebildet. Ob sekundaere Eingabeda- teien oder beim UNSAVE-Kommando benutzte Dateien denselben Typ aufweisen, wird nicht ueberprueft. Die FORTRAN-Drucksteuerzeichen werden als zum Satz zugehoerig betrachtet. Die Zugriffsrechte der Eingabedatei werden von der Ausgabedatei nicht uebernommen. Die Ausgabedatei erhaelt Standardzugriffs- rechte. 101 5.3. Arbeitsweise des Editors, Grundbegriffe -------------------------------------------- 5.3.1. Arbeit im Blockmodus --------------------------- Bei der Arbeit im Blockmodus wird eine bestimmte Anzahl von Zei- len von der Eingabedatei gelesen und in einen Hauptspeicherpuf- fer, den Blockpuffer, gespeichert. Im Blockpuffer koennen die Zeilen bearbeitet werden, wobei es moeglich ist, Zeilen nach Rueckpositionierung des Zeilenzeigers erneut zu bearbeiten. Unter anderem sind folgende Operationen mit dem Blockpufferinhalt moeglich: - Einfuegen, Loeschen, Ersetzen und zeichenweises Veraendern von Zeilen - Lokalisieren von Zeilen, Ausgabe des Pufferinhalts oder einzelner Zeilen - Ausgabe von Zeilen auf Dateien oder Einschluss von Dateien in den Blockpuffer. Der Bezug auf die Zeilen im Blockpuffer erfolgt ueber einen posi- tionierbaren Zeilenzeiger. Ist ein Pufferinhalt in der gewuenschten Weise bearbeitet, wird er durch ein Kommando in die Ausgabedatei geschrieben. Danach kann der naechste Block bearbeitet werden. In der Regel beziehen sich im Blockmodus alle Kommandos nur auf den aktuellen Blockpuf- ferinhalt (Ausnahmen s. Abschn. 5.5.3.7., 5.5.3.8.). Versucht man, Zeilen zu lokalisieren, die sich noch nicht in diesem Puffer befinden, erfolgt eine Fehlerreaktion. Die Arbeit im Blockmodus ist besonders bei interaktiver Arbeitsweise vor- teilhaft. 5.3.2. Arbeit im Zeile-fuer-Zeile-Modus --------------------------------------- Im Zeile-fuer-Zeile-Modus steht nur eine Zeile zur Bearbeitung zur Verfuegung. Sie wird gelesen, bearbeitet und in die Ausgabe- datei geschrieben bzw. geloescht. Die mehrmalige Bearbeitung einer Zeile durch Rueckpositionierung ist nicht moeglich. Wurde eine Zeile, die bearbeitet werden sollte, versehentlich in die Ausgabedatei uebertragen, so kann die nochmalige Bearbeitung nur nach Abschluss der Aufbereitung und einer Wiedereroeffnung derselben Datei erfolgen (s. Abschn. 5.5.3.1.). Werden Suchopera- tionen durchgefuehrt, so werden bis zum Auffinden der gesuchten Zeile die vorhergehenden Zeilen in die Ausgabedatei geschrieben. Im Zeile-fuer-Zeile-Modus beziehen sich deshalb die Kommandos in der Regel auf die aktuelle Zeile und den Rest der Eingabedatei. Einige Kommandos (s. Abschn. 5.5.2.1. ff) sind nur im Blockmodus anwendbar, bei anderen sind bestimmte Parameterangaben im Zeile- fuer-Zeile-Modus unzulaessig (s. Abschn. 5.5.6.1.). Die Arbeit im Zeile-fuer-Zeile-Modus eignet sich vor allem zur Verarbeitung sekundaerer Dateien und zur vorprogrammierten Arbeit mit Indi- rektkommando-Dateien. 102 5.3.3. Seiten und Bloecke ------------------------- Wird im Blockmodus gearbeitet, so wird normalerweise eine fest- legbare Zahl von Zeilen in den Blockpuffer gelesen (s. Abschn. 5.5.7.9.). Fuehrt man die Korrektur eines Textes nach einer Druckliste aus, die eine konstante Anzahl von Zeilen pro Druckseite enthaelt, so ist die Arbeit mit Bloecken vorteilhaft. Es wird stets eine feste Anzahl von Zeilen in den Puffer gelesen, die man mit der Zahl der Zeilen pro Druckseite in Uebereinstimmung bringen kann. Der Programmierer hat aber auch die Moeglichkeit, durch Einschub von FORM-FEED-Zeichen (s. Abschn. 5.5.6.6.), Seiten mit einer variablen Zahl von Zeilen aufzubauen. Eine Seite ist dann der zwischen zwei FORM-FEED-Zeichen eingeschlossene Abschnitt einer Quelltextdatei. Beim Fuellen des Blockpuffers wird dann die eingestellte Zahl von Zeilen in den Blockpuffer gelesen, wobei das Lesen aber vorzeitig beendet wird, sobald ein FORM-FEED in den Puffer gelangt ist. Es ist bei der Arbeit mit Seiten zweckmaessig, durch das SIZE- Kommando eine Zeilenzahl zu spezifizieren, die groesser ist als die Zeilenzahl der laengsten Seite. Dann kann die Korrektur voll- staendig seitenweise unter Benutzung des PAGE-Kommandos erfolgen (s. Abschn. 5.5.2.3.). Die in der Quelltextdatei enthaltenen FORM-FEED-Zeichen erfuellen ausserdem ihre Drucksteuerfunktion. 5.3.4. Primaere und sekundaere Dateien -------------------------------------- Die Korrektur einer Quelltextdatei beginnt immer mit der Angabe ihrer Dateispezifikation. Damit wird die primaere Eingabedatei spezifiziert. Aus dieser Datei wird die Ausgabedatei aufgebaut und nach dieser Datei werden ihr Name und ihre Versionsnummer ermittelt, wenn fuer die Ausgabedatei keine gesonderten Angaben gemacht werden. Waehrend der Korrektur koennen ausserdem nacheinander sekundaere Eingabedateien verarbeitet werden. Nachdem eine solche sekundaere Datei eroeffnet worden ist, (s. Abschn. 5.5.1.3.), kann durch Umschaltung wechselweise die primaere oder die sekundaere Eingabedatei zur Eingabe ausgewaehlt werden (s. Abschn. 5.5.7.3.). Im Zeile-fuer-Zeile-Modus kann die Ausgabe von Quelltextzeilen unterdrueckt werden (s. Abschn. 5.5.7.6.). Vor Benutzung einer weiteren sekundaeren Datei muss eine vorher benutzte sekundaere Datei geschlossen werden. Da im Blockmodus fuer die Eingabe von beiden Dateien derselbe Blockpuffer verwen- det wird, kann im Blockmodus praktisch nur an einer Block- oder Seitengrenze die Eingabe gewechselt werden. Es ist daher vorteilhaft, sekundaere Eingabedateien im Zeile- fuer-Zeile-Modus zu verarbeiten. 103 **************** *************** * * * * * prim.E.Datei *-- --* sek.E.Datei * * * | | * * **************** | | *************** | | OPENS/CLOSES | | o o / / o | SS/SP | | ******************* * * * Blockpuffer * * * ******************* | | o / / o | OUT ON/OFF | | ******************* * * * Ausgabedatei * * * ******************* Bild 2: EDI - Benutzung sekundaerer Eingabedateien 5.3.5. Arbeitsmodi ------------------ EDI unterscheidet drei Arbeitsmodi: - den EDI-Modus - den Kommandomodus - den Insert-Modus. Nach Start des Editors bzw. nach Restart oder Abschluss einer Aufbereitung mit CLOSE oder CDL befindet sich EDI im EDI-Modus. Mit der Ausschrift "EDI> " wird eine Dateispezifikation angefor- dert. Bei Angabe von , oder als erstes Zeichen wird EDI verlassen. Erfolgt die Angabe "@filespecification" wird die spezifizierte Indirektkommando-Datei eroeffnet. Die erste Zeile dieser Indi- rektkommando-Datei muss die geforderte Dateispezifikation enthal- ten. Durch Angabe einer Dateispezifikation wird EDI zum Oeffnen der Dateien und zum Uebergang in den Kommandomodus veranlasst. Wird eine Dateispezifikation mit oder mit abgeschlos- sen, so werden bzw. nach Uebergang zum Kommandomo- dus entsprechend ihrer Bedeutung im Kommandomodus ausgewertet. 104 Im Kommandomodus werden Aufbereitungskommandos mit "* " angefor- dert. Die Einzelzeicheneingaben , und werden als Kommandos "NP+1", "EXIT" und "NP-1" gedeutet (s. Abschn. 5.5.6.3, 5.5.1.2). Wird eine Kommandozeile mit oder abgeschlossen, so werden zunaechst die Kommandos dieser Zeile und danach das oben bezeichnete Kommando der jeweiligen Einzelzeicheneingabe ausge- fuehrt. Beispiel: Die Angabe von EDI> TEST.MAC;4 ---------- * LOCATE TEXT ---------------- ist aequivalent der Kommandofolge EDI> TEST.MAC;4 ---------- * LOCATE TEXT --------------- * NP-1 ---- Der Insert-Modus wird bei der Abarbeitung eines INSERT-Kommandos oder eines OVERLAY-Kommandos erreicht(siehe 5.5.6.3 und 5.5.6.4). Mit der Ausschrift "_ " werden Datenzeilen angefordert. Der Uebergang vom Insert-Modus zum Kommandomodus wird folgendermassen erreicht: - Durch Abschluss einer Datenzeile mit . Die Zeile wird eingefuegt und der Insert-Modus verlassen. - Durch Angabe von oder als erstes Zeichen. Der Insert-Modus wird dann sofort verlassen. oder gelangen nicht in den Puffer. Die Angaben * INSERT ------ _ Eingabezeile ----------------- * oder * INSERT ------ _ Eingabezeile ---------------- _ ---- * sind gleichwertig. 105 - Durch Angabe des aktuellen CC-Zeichens (s. Abschn. 5.5.7.4.) als erstes und einziges Zeichen einer Zeile wird der Insert-Modus gleichfalls verlassen. Diese Moeglichkeit ist zu waehlen, um den Insert-Modus bei Abarbeitung von Indirektkommando-Dateien zu verlassen, die vom Indirektprozessor des OMEX 1630 verarbeitet werden sollen. Bei anderen Indirektkommando-Dateien fuehren auch Leersaetze zum Verlassen des Insert-Modus. - Bei Abschluss einer Datenzeile mit wird die Zeile eingefuegt und EDI durch ein EXIT-Kommando ver- lassen. Bei Eingabe von als erstes Zeichen wird sofort das EXIT-Kommando ausgefuehrt. 5.3.6. Vorprogrammierte Arbeitsweise ------------------------------------ Der Editor ist in der Lage, in Indirektkommando-Dateien gespei- cherte Kommandofolgen abzuarbeiten. Diese vorprogrammierte Ar- beitsweise kann man vorteilhaft dort einsetzen, wo laengere Auf- bereitungsvorgaenge aus Zeitgruenden nicht an dem Bediengeraet ausgefuehrt werden koennen oder wo Operatorbetrieb durchgefuehrt wird. Eine Indirektkommando-Datei enthaelt: - die Dateispezifikation der Eingabedatei - Aufbereitungskommandos - wahlweise ein Abschlusskommando Die Abarbeitung einer Indirektkommando-Datei wird im EDI-Modus durch Angabe von @filespecification angewiesen. Fuer Indirektkommando-Dateien wird der Typ ".CMD" als Standard angenommen, wenn in der Dateispezifikation kein Typ angegeben war. Ein Aufruf weiterer Indirektkommando-Dateien durch die in Arbeit befindliche Indirektkommando-Datei ist unzulaessig. Die Abarbeitung der Indirektkommando-Datei beginnt mit dem Oeffnen der spezifizierten Datei. Eventuell an die Dateispezifikation mit dem Kommandoverbindungszeichen angefuegte Editorkommandos werden ignoriert. Bei Beginn der Abarbeitung der Indirektkommando-Datei wird ein Kommando VERIFY OFF ausgefuehrt (s. Abschn. 5.5.7.1.). Nach dem Ende der Abarbeitung, sowie bei Restart des Editors nach CLOSE bzw. CDL wird der generierte VERIFY-Zustand wieder hergestellt. Ausserdem erfolgt vor Beginn der Abarbeitung einer Kommandodatei der Uebergang in den Zeile-fuer-Zeile-Modus. Der Zeile-fuer- Zeile-Modus bleibt bei Restart des Editors eingestellt. Die Abarbeitung einer Indirektkommando-Datei wird bei folgenden Ereignissen beendet: - Das Dateiende der Indirektkommando-Datei wird erkannt. Der Aufbereitungslauf wird mit einem parameterlosen EXIT-Kommando beendet. - Ein Abschlusskommando wird abgearbeitet. In diesem Falle wird die Indirektkommando-Datei geschlossen. Eine Indirektkommando- 106 Datei kann also nur Kommandos zum Aufbereiten einer Quelltext- datei enthalten. - Waehrend der Abarbeitung einer Indirektkommando-Datei tritt ein Fehler auf. In diesem Falle wird die zuletzt gelesene Kommandokette ueber das Bediengeraet ausgegeben. Da die Kette aus mehreren verbun- denen Kommandos bestehen kann, wird mit einer Unterstreichung auf das fehlerverursachende Einzelkommando verwiesen. Bei Feh- lern, die in die Gruppe der Kommandofehler gehoeren (s. Abschn. 5.6.1.), erfolgt ein Loeschen der Ausgabedatei und Restart des Editors, sonst erfolgt ein Loeschen der Ausgabedatei und Ab- bruch des Editors. Hinweise: - Sollen in einer Indirektkommando-Datei Kleinbuchstaben verar- beitet werden, so sind vor dem Aufruf der Indirektkommando- Datei Massnahmen zu treffen, die eine Umcodierung des Inhalts verhindern (z.B.:.ENABLE LOWERCASE). - Das Abbruchkommando KILL wird, wenn es in einer Indirektkom- mando-Datei auftritt, zwar ausgefuehrt, aber wie ein fehler- haftes Kommando markiert. 5.4. Kommandosyntax ------------------- Editorkommandos haben folgende allgemeine Form: [zeilennummer;][wh-faktor]mnemonik[][parameter] Zeilennummer: Die Angabe einer Zeilennummer ist nur im Zeile-fuer-Zeile-Mo- dus moeglich. Ist eine Zeilennummer angegeben, so wird die be- treffende Zeile vor der Abarbeitung des Kommandos eingestellt. Die Angabe einer Zeile, die im betreffenden Aufbereitungslauf be- reits kopiert wurde, fuehrt zu einer Fehlermeldung. Die Zeilen- nummer ist als vorzeichenlose Dezimalzahl anzugeben. Die Zeilen- zaehlung erfolgt modulo 32767, getrennt fuer primaere und sekun- daere Eingabedateien. Anstelle der groessten zulaessigen Zeilen- nummer 32767 kann das Zeichen "*" geschrieben werden. wh-faktor: Bestimmte Kommandos koennen mehrmals hintereinander ausgefuehrt werden. Die Zahl der Wiederholungen wird im Wiederholungsfaktor angegeben. Die Angabe dieses Faktors ist bei allen Kommandos zu- laessig, wiederholt werden aber nur solche Kommandos, bei denen dies im einzelnen in Abschitt 5.5. beschrieben wird. In allen an- deren Faellen wird der Wiederholungsfaktor ignoriert. Anstelle des groessten zulaessigen Wiederholungsfaktors 32767 kann das Zeichen "*" stehen. mnemonik: Hier erfolgt die Angabe der englischsprachigen Kommandobezeich- nung. Die Kommandobezeichnung kann in der vollstaendigen Form an- gegeben werden. So sind zum Beispiel die Angaben DELETE, DEL oder D gleichwertig. Wieviele Zeichen des Kommandomnemoniks mindestens angegeben werden muessen, kann aus der Tabelle 33 entnommen wer- den. 107 parameter: Der Editor verarbeitet Kommandos mit Pflichtparameter, mit wahlweise anzugebenden Parametern und parameterlose Kommandos. Es werden 11 Parametertypen unterschieden. 1 Parameter ist eine Zeichenkette, die beliebige Textzeichen enthalten kann. 2 Die Angabe des Typs 2 in der Tabelle 33 besagt, dass das ent- sprechende Kommando parameterlos ist. 3 Als Parameter kann ein Schalterwert in der Form "ON" oder "OFF" angegeben werden. Fehlt die Angabe eines Schalterwertes, wird "ON" angenommen. 4 Es ist eine Austauschkette der Form /string 1/string 2/ anzu- geben. Jeweils eine der beiden Zeichenketten "string 1" oder "string 2 " kann leer sein. Anstelle des Trennzeichens "/" kann jedes andere in "string 1" und "string 2 " nicht enthal- tene Zeichen treten, jedoch nicht "."(Punkt). Die Zeichenkombination "..." in "string 1" hat die Sonderbe- deutung eines Auslassungszeichens (s. Abschn. 5.5.5.1.). 5 Als Parameter ist eine Dateispezifikation anzugeben. 6 Als Parameter ist eine Dezimalzahl mit dem Wertebereich -32768<=X<=32767 anzugeben. Anstelle der Zahl 32767 kann das Zeichen "*" stehen. 7 Als Parameter ist eine vorzeichenlose Dezimalzahl anzugeben, anstelle von 32767 kann "*" geschrieben werden. 8 Parameter ist eine Makrodefinition der Form: nummer text wobei unter "nummer" die Nummer des Makrospeichers 1, 2 oder 3 anzugeben ist, als Text wird eine in diesen Makrospeicher einzugebende Kommandokette angegeben. 9 Es ist eine vorzeichenlose Dezimalzahl und darauffolgend eine Dateispezifikation anzugeben. 10 Parameter ist ein einzelnes Textzeichen. 11 Parameter ist eine Zeichenkette. Im Unterschied zum Typ 1 hat die Zeichenkombination "..." die Sonderbedeutung des Auslas- sungszeichens (s. Abschn. 5.5.5.1.). Die Zuordnung von Parametertyp zu den einzelnen Kommandos ist aus Tabelle 33 zu entnehmen. Zwischen Parameter und Mnemonik muss ein Leerzeichen angegeben werden, wenn der Parameter mit einem Buchstaben beginnt z.B. "TAB ON". Ansonsten kann das Leerzeichen weggelassen werden (z.B. D5 oder D 5). Das Kommando ist mit oder mit dem Zeichen oder mit abzuschliessen. Die Bedeutung der Zeichen und wurde im Abschnitt 5.3.5. erklaert. 108 Werden meherere Kommandos auf einer Zeile angegeben und zu einer Kommandokette vereinigt, so sind diese Kommandos mit dem Komman- doverbindungszeichen (s. Abschn. 5.5.7.4.) zu verbinden. Das Kommandoverbindungszeichen hat stets Trennzeichenfunktion und kann nicht Bestandteil eines Kommandos sein. Soll das Standard- Kommandoverbindungszeichen "&" in einem Kommando erscheinen, so muss vorher mit dem CC-Kommando ein neues Kommandoverbindungs- zeichen vereinbart werden. In der Kommandokette werden die Kommandos von links nach rechts abgearbeitet. Die Abarbeitung einer Kommandokette endet bei fol- genden Ereignissen: - Das Ende der Kommandokette wurde erreicht. - Ein Kommando der Kette verursachte einen Fehler. - Es wurde ein Abschluss- oder Abbruchkommando ausgefuehrt. - Ein Makroruf leitet die Abarbeitung einer neuen Kommandokette oder eines einzelnen Kommandos ein. Enthaelt eine Kommandokette Kommandos zum Einfuegen von Datenzei- len, so sind die entsprechenden Datenzeilen n a c h der Kommando- kette anzugeben. Bei Eroeffnung der EDI-Arbeit koennen Kommandos an die Spezifika- tion der aufzubereitenden Datei, jedoch nicht an die Spezifika- tion der Indirektkommando-Datei gekettet werden. Ausserdem ist zu beachten, dass aus Kommandoketten, die nach direktem Ruf des (installierten) Editors angegeben werden, alle Leerzeichen ge- strichen und alle Klein- in Grossbuchstaben umcodiert werden, bevor die Kommandozeile von EDI bearbeitet wird. 109 Tabelle 33: EDI - Uebersicht ueber die Kommandos ADD 01100 Anhaengen von Zeichen an die aktuelle Zeile AP 01200 wie ADD, Ausgabe Ergebnis auf BDG BEGIN 02110 Positionieren auf Pufferbeginn (Quelltextbeginn) BLOCK 03210 Einstellen Block- oder Zeile-fuer-Zeile-Modus BOTTOM 02210 wie END CHANGE 04100 Ersetzen einer Zeichenreihe CC 10210 Abaendern des Kommandoverbindungszeichens CDL 05210 Abschluss Aufbereitung, Loeschen Eingabedatei CLOSE 05210 Abschluss Aufbereitung, Restart CLOSES 02610 Schliessen Sekundaerdatei DELETE 06110 Loeschen von Zeilen DP 06210 Wie DELETE, BDE-Ausgabe d. aktuelle Zeile END 02110 auf Puffer(Quelltext)ende positionieren EDX 05210 Abschluss Aufbereitung,Loeschen E-datei EXIT 05210 Abschluss Aufbereitung, Beenden EDI ERASE 07510 Loeschen Blockpuffer (aktuelle Zeile) FIND 11100 Suchen ab Zeilenanfang FF 02210 Einschub eines FORM-FEED FILE 05302 Ausgabe auf Hilfsdatei bis FORM-FEED INSERT 01110 Einfuegen von Zeilen KILL 02410 Restart von EDI, Loeschen der Ausgabedatei LOCATE 11100 Suchen nach Zeichenreihe in bel. Position LC 04200 Ersetzen von Zeichenreihen mehrfach in der Zeile LIST 02210 Ausgabe Blockpuffer (Restquelle) auf BDG LP 02210 Wie LIST, jedoch mit Geraet CL: M1 01210 Aufruf des Makros aus Makro-1-Speicher M2 01210 " " " " Makro-2-Speicher M3 01210 " " " " Makro-3-Speicher MC 05200 Fuellen der Makrospeicher aus Datei MACRO 08500 Fuellen Makrospeicher von der BDG NEXT 06110 n Zeilen vor oder zurueck NP 06210 wie NEXT, aktuelle Zeile auf BDG ausgeben OVERLAY 06110 Ueberschreiben von Zeilen OPENS 05200 Eroeffnen Sekundaerdatei OUTPUT 03212 Aus- und Einschalten der Ausgabe PRINT 07110 BDG-Ausgabe von Zeilen PASTE 04200 Ersetzen wie bei LC im Puffer (Restquelle) PFIND 11200 Suchen wie bei FIND mit Wechsel Pufferinhalt PLOCATE 11200 " " " LOCATE " " " PAGE 07300 Einstellen einer Seite (FORM-FEED-bezogen) RETYPE 01110 Ueberschreiben aktuelle Zeile READ 07311 Lesen von Zeilen in den Blockpuffer RENEW 07310 Wechseln Blockpufferinhalt SAVE 09210 Ausgabe von Zeilen auf eine Datei SC 04200 Suchen wie LOCATE, Ersetzen wie CHANGE SP 02210 von Primaerdatei eingeben SS 02210 von Sekundaerdatei eingeben SIZE 07400 Zahl der Zeilen pro Block festlegen TOP 02110 wie BEGIN TAB 03210 Automatisches Tabulatorsetzen ein/aus TYPE 07210 Wie PRINT, aber Zeilenzeiger bleibt stehen TOF 02310 Dateianfang einstellen UC 03210 Kleinbuchstaben umkodieren ein/aus UNSAVE 05110 Eingabe von Zeilen von einer Datei VERIFY 03110 Ausgabe geaenderter Zeilen ein/aus WRITE 02111 Blockpuffer zur Ausgabedatei und Loeschen * Angaben in Klammern gelten fuer Zeile-fuer-Zeile-Modus 110 Bedeutung der Ziffern --------------------- 1. und 2. Ziffer - Parametertyp (s. Abschn. 5.4. Parametererlaeu- terung) 3. Ziffer - Zeichenzahl im Mnemonik Mindestanzahl der anzugebenden Zeichen des Kommandomnemoniks (von links) 4. Ziffer - Zulaessigkeit ohne Parameter 1 Kommando ist auch oder nur parameterlos zulaessig 0 Kommando muss Parameter haben, es werden keine Standard- annahmen getroffen. 5. Ziffer - Moduszulaessigkeit 0 Im Zeile-fuer-Zeile-Modus und im Blockmodus zulaessig 1 Nur im Blockmodus zulaessig 2 Nur im Zeile-fuer-Zeile-Modus zulaessig 5.5. Beschreibung der EDI-Kommandos ----------------------------------- 5.5.1. Kommandos zur Dateibenutzung ----------------------------------- 5.5.1.1. Eroeffnung der Arbeit von EDI -------------------------------------- filespecification Wird nach dem Aktivieren von EDI eine Dateispezifikation angege- ben, so wird diese Datei als primaere Eingabedatei eroeffnet. Die Kommandoeingabe erfolgt ueber das Bediengeraet. Es werden Aufbe- reitungskommandos mit "* " angefordert. Erfolgt nach Aktivierung von EDI die Angabe @filespecification , so wird die spezifizierte Indirektkommando-Datei eroeffnet. Fehlt hierbei die Typangabe der Indirektkommando-Datei, wird als Stan- dard der Typ .CMD angenommen. Die Dateispezifikation der aufzubereitenden Datei und die Aufbe- reitungskommandos bzw. Datenzeilen werden aus der Indirektkomman- do-Datei gelesen. Wird eine Datei spezifiziert, die noch nicht existiert, so er- scheint die Ausschrift: [EDI CREATING NEW FILE] ENTER AN INPUT CMD Danach koennen gegebenenfalls Standards wie z.B. TAB oder UC neu festgelegt werden. Anschliessend wird die neue Datei durch ein INSERT- oder auch UNSAVE-Kommando eingegeben. Sie erhaelt, unab- haengig von der Versionsnummer der Eingabedateispezifikation, die neueste Versionsnummer aller gleichnamigen Dateien. 111 Die Erstellung neuer Dateien ist auch bei Benutzung von Indirekt- kommando-Dateien moeglich. Bei Eroeffnung der Arbeit von EDI werden zunaechst k e i n e Zeilen von der Eingabedatei gelesen. Das erstmalige Lesen von Zeilen erfolgt entweder durch ein vom Nutzer eingegebenes Kommando (z.B. BLOCK ON oder READ) oder a u t o m a t i s c h wenn das erste Kommando das Vorhandensein von Text voraussetzt. Das automatische Fuellen des Blockpuffers zu Beginn der Arbeit von EDI erfolgt vor der Abarbeitung folgender Kommandos: ADD END LIST PRINT RETYPE AP ERASE LP PASTE SAVE BOTTOM FIND NEXT PFIND SC CHANGE FILE NP PLOCATE TYPE DELETE LOCATE OVERLAY PAGE WRITE DP LC Besonders zu beachten ist diese Arbeitsweise beim NP-Kommando (). nach Start von EDI im Zeile-fuer-Zeile-Modus posi- tioniert nach dem automatischen Lesen der ersten Zeile auf die zweite Zeile. nach Start von EDI im Blockmodus bewirkt das Lesen eines Blockes und das Positionieren vom Pufferbeginn auf die erste Zeile, die ueber das Bediengeraet ausgegeben wird. Automati- sches Positionieren auf die erste Zeile im Puffer erfolgt bei den Kommandos CHANGE, ADD, LC und PASTE (siehe Abschnitt 5.5.5.), wenn diese vor Pufferbeginn verwendet werden. Im Zeile-fuer-Zei- le-Modus kann die erste Zeile mit PRINT oder TYPE ausgegeben wer- den. 5.5.1.2. Abschluss der EDI-Arbeit --------------------------------- EXIT [filespecification] minimal: EX EDX [filespecification] minimal: ED CLOSE [filespecification] minimal: CL CDL [filespecification] minimal: CD KILL Die vier Abschlusskommandos (EX,ED,CL und CD; ist mit EXIT ohne Parameter identisch) bewirken den Abschluss eines Auf- bereitungslaufes in folgenden Schritten: - Im Blockpuffer befindliche Zeilen (bzw. die aktuelle Zeile im Zeile-fuer-Zeile-Modus) werden in die Ausgabedatei geschrieben. Der Blockpuffer wird geloescht. - Die restliche noch unbearbeitete p r i m a e r e Eingabedatei wird in die Ausgabedatei kopiert. - Die Ein- und die Ausgabedatei sowie die evtl. noch geoeffnete Indirektkommando-Datei werden geschlossen. Dabei erhaelt die Ausgabedatei normalerweise den Namen der primaeren Eingabedatei und die um eins erhoehte Versionsnummer. Wurde im Abschlusskommando eine Dateispezifikation angegeben, so wird die Ausgabedatei umbenannt und erhaelt den spezifizier- ten Namen und die spezifizierte Versionsnummer. - Bei den Kommandos EDX und CDL wird die Eingabedatei geloescht. Bei Anwendung dieser Kommandos sollte sich der Anwender sicher sein, dass die Aufbereitung richtig erfolgte. 112 - Bei den Kommandos EXIT und EDX wird eine evtl. noch geoeffnete sekundaere Eingabedatei geschlossen, und der Editor uebergibt die Steuerung der Exekutive. - Bei den Kommandos CDL und CLOSE wird der Editor neu gestartet, es koennen weitere Quelltextdateien bearbeitet werden. Eine eventuell geoeffnete sekundaere Eingabedatei bleibt geoeffnet und gegebenenfalls fuer die Eingabe ausgewaehlt. Das Kommando- verbindungszeichen, Schalterstellungen und andere einstellbare Groessen (z.B. SIZE) werden nicht neu eingestellt. Der Abschluss der Arbeit von EDI mit EXIT wird bewirkt, wenn die Kommandoeingabe aus einer Indirektkommando-Datei erfolgte und das Ende dieser Datei erkannt wird. Das Verlassen des Editors fuehrt zu der Ausschrift "[EXIT ]". Hinweis: Bei den Abschlusskommandos wird nur der Rest der primaeren Einga- bedatei kopiert. Soll eine zur Eingabe ausgewaehlte sekundaere Eingabedatei kopiert werden, so benutzt man die Kommandofolge: * BLOCK OFF --------- * END --- * OUT OFF ------- * SP -- und danach ein entsprechendes Abschlusskommando. Das Kommando KILL bewirkt den Abbruch des begonnenen Aufberei- tungslaufes, das Schliessen der primaeren Eingabedatei, das Loe- schen der Ausgabedatei und den Restart des Editors. Der Editor fordert mit "EDI> " eine neue Dateispezifikation (oder Indirektkommandodateispezifikation) an. Eroeffnete Sekundaerdateien bleiben nach KILL eroeffnet und gege- benenfalls fuer die Eingabe ausgewaehlt. Durch Steuerkommandos eingestellte Zustaende (s. Abschn. 5.5.7.) werden -ausser OUTPUT- nicht veraendert. 5.5.1.3. Oeffnen einer spezfizierten sekundaeren Eingabedatei ------------------------------------------------------------- OPENS filespecification minimal: OP Mit diesem Kommando wird die spezifizierte sekundaere Eingabeda- tei eroeffnet. Die primaere Eingabedatei bleibt eroeffnet, und es wird weiterhin von der primaeren Eingabedatei gelesen, bis mit dem Kommando SS (select secondary) die sekundaere Datei fuer die Eingabe gewaehlt wird. Nach SS kann dann von der eroeffneten sekundaeren Eingabedatei gelesen werden (s. Abschn. 5.5.7.3.). 113 5.5.1.4. Schliessen einer sekundaeren Eingabedatei -------------------------------------------------- CLOSES Dieses Kommando wird benutzt, um die sekundaere Datei nach ihrer Benutzung wieder zu schliessen. CLOSES muss erst dann benutzt werden, wenn eine andere sekundaere Datei geoeffnet werden soll. Bei Beendigung von EDI mit EX oder ED wird eine noch offene se- kundaere Eingabedatei automatisch geschlossen. Bei Restart nach KILL, CD oder CL von EDI bleibt eine eroeffnete sekundaere Einga- bedatei eroeffnet. 5.5.1.5. Ausgabe von Zeilen auf eine spezifizierte Datei -------------------------------------------------------- SAVE n [filespecification] minimal: SA Dieses Kommando kopiert die aktuelle Zeile und die n-1 folgenden Zeilen auf die spezifizierte Datei. Der Zeilenzeiger zeigt danach auf die letzte kopierte Zeile. Es wird stets die neueste Version der spezifizierten Datei gebildet, eine angegebene Versionsnummer wird ignoriert. Falls keine Datei spezifiziert wurde, so wird eine temporaere Datei mit dem Namen SAVE.TMP erzeugt. Die Datei SAVE.TMP bleibt bestehen. Die kopier- ten Zeilen werden im Blockpuffer oder in der Eingabedatei nicht geloescht. 5.5.1.6. Eingabe von Zeilen von einer spezifizierten Datei ---------------------------------------------------------- UNSAVE [filespecification] minimal: U UNSAVE eroeffnet die angegebene Datei zur Eingabe von Zeilen in den Blockpuffer. Falls keine Datei spezifiziert wird, wird die Datei SAVE.TMP eroeffnet. Die eroeffnete Datei wird vollstaendig gelesen. Ihre Zeilen werden nach der aktuellen Zeile in den Blockpuffer (bzw. in die Ausgabedatei im Zeile-fuer-Zeile-Modus) kopiert. Die neue aktuelle Zeile ist die zuletzt kopierte Zeile. 5.5.1.7. Ausgabe von Zeilen bis Seitengrenze -------------------------------------------- FILE filespecification minimal: FIL Mit dem FILE-Kommando werden alle Zeilen, beginnend mit der ak- tuellen Zeile bis einschliesslich einer ein FORM-FEED enthalten- den Zeile in die Ausgabedatei und in die spezifizierte Datei ausgegeben. Anstelle des FORM-FEED tritt das Dateiende, wenn in der Eingabe- datei keine FORM-FEED-Zeichen erkannt werden. Es wird stets die neueste Version der spezifizierten Datei gebildet, eine angegebe- ne Versionsnummer wird ignoriert. Der Zeilenzeiger ist nach Kommandoausfuehrung auf die erste Zeile nach dem FORM-FEED positioniert. Die spezifizierte Datei wird geschlossen. Das FILE-Kommando kann nur im Zeile-fuer-Zeile-Modus angewendet werden. 114 5.5.2. Kommandos zur Ein- und Ausgabe von Bloecken und Seiten ------------------------------------------------------------- 5.5.2.1. Lesen eines neuen Blocks ---------------------------------- RENEW [n] minimal: REN RENEW kombiniert die Funktionen der Kommandos WRITE (s. 5.5.2.5.) und READ (s. 5.5.2.2.). Zunaechst wird der aktuelle Inhalt des Blockpuffers in die Ausgabedatei geschrieben. Danach wird von der Eingabedatei ein neuer Pufferinhalt eingelesen. Falls n spezifiziert ist, wird das Kommando n mal ausgefuehrt. Der Zeilenzeiger zeigt nach RENEW vor die erste Zeile im Block- puffer. Im Zeile-fuer-Zeile-Modus bewirkt RENEW n das Kopieren von n Zeilen in die Ausgabedatei. 5.5.2.2. Hinzulesen von Bloecken zum aktuellen Pufferinhalt ----------------------------------------------------------- READ [n] minimal: REA Dieses Kommando liest die naechsten n Bloecke in den Blockpuffer. Steht im Blockpuffer bereits ein Block, so werden n Bloecke dazu- gelesen. Nach dem READ-Kommando zeigt der Zeilenzeiger vor die erste Zeile im Blockpuffer. Das Kommando ist nur im Blockmodus zulaessig. Die Abarbeitung eines READ-Kommandos ist beendet, wenn: - die durch "SIZE" (s. Abschn. 5.5.7.9.) spezifizierte Anzahl von Zeilen in den Blockpuffer gelesen wurde, - eine Zeile in den Puffer gelesen wurde, die ein FORM-FEED ent- haelt. - das Dateiende der ausgewaehlten Eingabedatei erreicht wurde. Ein READ-Kommando darf den Puffer nicht ueberfuellen. Tritt einmal dieser Fall ein, so erscheint die Ausschrift: [BUFFER CAPACITY EXCEEDED BY] [LINE DELETED] Bei der Benutzung von READ-Kommandos mit n groesser oder gleich zwei sollte vorher mit dem SIZE-Kommando die Zahl der Zeilen pro Block genuegend verringert werden. Wird nach Dateieroeffnung (s. Abschn. 5.5.1.1.) ein Kommando gegeben, das sich auf den Blockpuffer bezieht, so wird im Block- modus automatisch ein READ-Kommando eingefuegt. Die Benutzung von READ-, RENEW-, ERASE- (s. 5.5.2.4.) bzw. BLOCK-ON-Kommandos (s. 5.5.7.) verursacht im Blockmodus, falls VERIFY ON wirksam ist, die Ausschrift: [XX LINES READ IN] [PAGE N] XX: Anzahl der gelesenen Zeilen (s. Abschn. 5.5.7.9.) N : Nummer der aktuellen Seite (s. Abschn. 5.3.3.) 115 Die Nummer der aktuellen Seite erscheint nur: - beim Einlesen des ersten Blocks (PAGE 0) - beim Erreichen einer Seitengrenze (FORM-FEED erreicht) - beim Erreichen des Eingabedateiendes (wird wie FORM-FEED als Begrenzung einer Seite gewertet) 5.5.2.3. Einlesen einer Seite ----------------------------- PAGE [n] minimal: PAG Falls EDI sich im Zeile-fuer-Zeile-Modus befindet, geht es in den Blockmodus ueber und liest die n-te Seite in den Blockpuffer. (Eine Seite ist ein mit FORM-FEED begrenzter Programmabschnitt.) Falls n kleiner ist als die aktuelle Seitennummer, so wird zuvor automatisch ein TOF-Kommando ausgefuehrt. Ist n groesser als die aktuelle Seitennummer, so wird mittels RENEW die gewuenschte Seite eingelesen. Enthaelt eine Quelltextdatei keine FORM-FEED-Zeichen, so wird bis zur Erkennung des Dateiendes kopiert, und der letzte Block (Rest- block) steht im Puffer. 5.5.2.4. Loeschen von Bloecken ------------------------------ ERASE [n] Loescht den ganzen Block und die naechsten n-1 Bloecke (im Block- modus). Diese Bloecke werden nicht in die Ausgabedatei geschrie- ben. Der Blockpuffer ist nach Kommandoausfuehrung leer. Ist n nicht spezifiziert, so wird n=1 angenommen. Im Zeile-fuer-Zeile-Modus bewirkt die Angabe ERASE n das Loeschen der aktuellen Zeile und der n-1 folgenden Zeilen. Jedoch wird nicht wie bei DELETE (s. 5.5.6.1.) n die darauffolgende Zeile ge- lesen. 5.5.2.5. Ausgabe und Loeschen des Blockpuffers ---------------------------------------------- WRITE minimal: W Schreibt den aktuellen Block in die Ausgabedatei und loescht den Blockpuffer. Dieses Kommando ist nur im Blockmodus zulaessig. 5.5.3. Positionierkommandos --------------------------- 5.5.3.1. Auf Dateianfang einstellen ----------------------------------- TOF (top of file) Durch TOF wird die in Bearbeitung befindliche Version der Datei geschlossen und als neue Version fuer weitere Aufbereitung wie- der eroeffnet. 116 5.5.3.2. Vor Pufferbeginn positionieren --------------------------------------- BEGIN minimal: B TOP minimal: T Im Blockmodus wird der Zeilenzeiger vor die erste Zeile des Blockpuffers positioniert. In dieser Stellung koennen Kommandos wie: DELETE, OVERLAY, CHANGE u.a. nicht ausgefuehrt werden. Im Zeile-fuer-Zeile-Modus bewirkt die Angabe von BEGIN oder TOP das Kopieren der restlichen Quelltextdatei in die Ausgabedatei, den Abschluss der Ein- und Ausgabedatei und das Neueroeffnen der eben erstellten Version fuer einen weiteren Aufbereitungslauf. Im Zeile-fuer-Zeile-Modus entspricht die Wirkung von BEGIN bzw. TOP also der des TOF-Kommandos. 5.5.3.3. Auf Pufferende positionieren ------------------------------------- END minimal: E BOTTOM minimal: BO Dieses Kommando positioniert auf die letzte Zeile eines Blockes (Blockmodus) bzw. kopiert den Rest der Eingabedatei (Zeile-fuer- Zeile-Modus). Bei V ON wird die letzte Zeile des Blocks ausgegeben. 5.5.3.4. Zeilenweises Vor- bzw. Ruecksetzen ------------------------------------------- NEXT+i minimal: N NEXT-i NP+i NP-i N+i setzt den Zeilenzeiger i Zeilen vor. N-i setzt den Zeilenzeiger i Zeilen zurueck. NP+i setzt i Zeilen vor und gibt die aktuelle Zeile aus. NP-i setzt i Zeilen zurueck und gibt die aktuelle Zeile aus. wirkt wie NP+1. wirkt wie NP-1. Rueckwaertspositionierung ist nur im Blockmodus moeglich. Wird beim Positionieren Pufferanfang oder Pufferende oder das Datei- ende erreicht, erfolgen die Fehlerausschriften [*BOB*], [*EOB*] bzw. [*EOF*]. Wird i nicht spezifiziert, so wird i=1 angenommen. Ist i=0 spezifiziert, wird ebenfalls i=1 angenommen. Steht der Zeilenzeiger vor dem ersten Satz im Puffer, bewirkt N+1 den Uebergang zur ersten Zeile. Steht der Zeilenzeiger (z.B. nach Loeschen der letzten Zeile) auf dem Pufferende, erfolgt bei N-1 der Uebergang zur letzten Zeile. Das bedeutet, dass die Puffer- beginnposition und die Pufferendeposition hier wie Zeilen behandelt werden und in die Zaehlung einzubeziehen sind. 117 5.5.3.5. Aufsuchen einer Zeile ------------------------------ [n]LOCATE string minimal: L Beginnend mit der naechsten Zeile bis Pufferende wird die Teil- zeichenreihe "string" in den Zeilen gesucht und der Zeilenzeiger auf die erste Zeile, die eine entsprechende Kette an beliebiger Stelle enthaelt positioniert. Wird keine entsprechende Kette gefunden, so erfolgt bei Erreichen des Pufferendes die Ausschrift [*EOB*] und der Zeilenzeiger wird an den Pufferanfang gesetzt. Falls VERIFY ON wirksam ist, werden gefundene Zeilen ausgeschrie- ben. Ist V OFF wirksam, erfolgt keine Ausgabe. Wurde eine Zahl n spezifiziert, wird das n-te Vorkommen der ge- suchten Teilzeichenreihe lokalisiert. Im Zeile-fuer-Zeile-Modus wirkt LOCATE auf die gesamte restliche Eingabedatei. 5.5.3.6. Zeile anhand Zeilenanfang aufsuchen -------------------------------------------- [n]FIND string minimal: F Beginnend am Zeilenanfang werden die im Puffer (Blockmodus) oder in der Eingabedatei (Zeile-fuer-Zeile-Modus) befindlichen Zeilen mit der angegebenen Zeichenreihe verglichen. Stimmt eine Zeile vom ersten Zeichen an mit der angegebenen Zeichenreihe ueberein, so wird auf diese Zeile positioniert und, bei Wirksamkeit von V ON (s. 5.5.7.), die Zeile ausgegeben. Wurde eine Zahl n spezifiziert, so wird das Kommando n mal ausge- fuehrt. Ist "string" leer, so wird auf die naechste bzw. auf die n-te Zeile nach der aktuellen Zeile positioniert. Unterschied zum LOCATE-Kommando: LOCATE lokalisiert Zeichenreihen, die auch mitten in einer Zeile liegen koennen. FIND sucht eine Zeile, die vom ersten Zeichen an mit der angegebenem Zeichenreihe uebereinstimmt (Anwendung zum Aufsuchen von Zeilen anhand von Marken). 5.5.3.7. Suchen ueber Puffergrenze ---------------------------------- [n]PLOCATE string minimal: PL Aufsuchen einer Zeile anhand einer vorgegebenen Zeichenreihe wie beim Kommando LOCATE, wobei bei Erreichen des Pufferendes ein Blockwechsel vorgenommen wird. (Kopieren des durchsuchten Puffers in die Ausgabedatei, Lesen eines neuen Blocks von der Eingabedatei.) 118 5.5.3.8. Suchen ab Zeilenanfang ueber Puffergrenze -------------------------------------------------- [n]PFIND string minimal: PF Aufsuchen einer Zeile anhand einer vorgegebenen Zeichenreihe wie beim Kommando FIND, wobei bei Erreichen der Puffergrenze ein Blockwechsel erfolgt. (Kopieren des durchsuchten Puffers in die Ausgabedatei, Lesen ei- nes neuen Blocks von der Eingabedatei.) 5.5.4. Kommandos zur Listenausgabe ---------------------------------- 5.5.4.1. Ausgabe einzelner Zeilen ueber Terminal ------------------------------------------------ TYPE [n] minimal: TY TYPE gibt von der aktuellen Zeile n Zeilen ueber das Bediengeraet aus, ohne im Blockmodus die Stellung des Zeilenzeigers zu veraen- dern. Im Zeile-fuer-Zeile-Modus ist das TYPE-Kommando mit dem PRINT- Kommando identisch. Wird n nicht angegeben, wird n=1 angenommen. Besonderheiten aller Kommandos zur Listenausgabe, TYPE, PRINT, LIST und LP: Steht der Zeilenzeiger vor dem ersten Satz im Puffer (nach LIST, LP, BEGIN oder Fehler [*EOB*], [*BOB*] ...) so geben TYPE, LIST oder LP eine Leerzeile aus. Im Zeile-fuer-Zeile-Modus wird die Nummer der ausgegebenen Zeile vorangestellt. Eingefuegte und dann ausgegebene oder durch Aende- rung angezeigte Zeilen erhalten bei der Ausgabe auf das Bedienge- raet oder Pseudogeraet die Nummer der zuletzt von der ausgewaehl- ten Eingabedatei gelesenen Zeile. 5.5.4.2. Ausgabe einzelner Zeilen ueber Terminal mit laufendem Zeilenzeiger -------------------------------------------------------------- PRINT [n] minimal: P PRINT gibt, beginnend mit der aktuellen Zeile, n Zeilen ueber das Bediengeraet aus. Der Zeilenzeiger steht nach PRINT auf der letz- ten ausgegebenen Zeile. Wird n nicht angegeben, so wird n=1 angenommen. 119 5.5.4.3. Listenausgabe des Blockpuffers --------------------------------------- LIST minimal: LI LP (list on pseudo-device) Das LIST-Kommando bewirkt den Druck der Zeilen im Blockpuffer von der aktueller Zeile bis Pufferende (Blockmodus) bzw. der rest- lichen Zeilen der Eingabedatei (Zeile-fuer-Zeile-Modus). Der Zeilenzeiger laeuft beim Druck mit und wird bei Erreichen des Pufferendes vor den ersten Satz im Puffer positioniert. Bei LIST erfolgt die Ausgabe auf das Bediengeraet, bei LP auf ein Pseudogeraet. 5.5.5. Kommandos zur zeichenweisen Korrektur -------------------------------------------- 5.5.5.1. Ersetzen von Zeichen innerhalb einer Zeile --------------------------------------------------- [n]CHANGE /string1/string2[/] minimal: C Beginnend am Zeilenanfang wird gesucht, ob die aktuelle Zeile eine Zeichenkette string1 an beliebiger Position enthaelt. Wird keine entsprechende Kette gefunden, so erfolgt die Ausschrift [NO MATCH] und die Abarbeitung des Kommandos ist beendet. Ansonsten wird string1 geloescht und an dieser Stelle string2 eingefuegt. - Ist string1 leer, wird string2 am Zeilenanfang eingefuegt. - Ist string2 leer, wird string1 nur geloescht und nicht ersetzt. Statt der oben angegebenen Stringbegrenzer "/" kann ein beliebi- ges anderes Zeichen als Begrenzer verwendet werden (Ausnahme: "." ist als Begrenzer unzulaessig). Ist ein Wiederholungsfaktor n angegeben, so wird das CHANGE- Kommando n mal ausgefuehrt, wobei die Suche nach string1 jedesmal am Zeilenanfang beginnt. Beispiel: C :string1:string2[:] Das Auftreten eines Begrenzers innerhalb einer Zeichenkette ist in jedem Fall unzulaessig. Der letzte Begrenzer vor oder vor dem Kommandoverbindungszeichen darf fehlen. Die Niederschrift von Zeichenreihen in LOCATE-, FIND- und CHANGE- Kommandos kann durch die Angabe von "..." verkuerzt werden. Es sind folgende Angaben moeglich. - string1...string2 Kennzeichnet eine Zeichenreihe, die mit dem ersten Auftreten von string1 beginnt und mit dem ersten Auftreten von string2 endet. (d.h. string1 und string2 koennen unmittelbar aufeinander fol- gen.) - ...string Kennzeichnet eine Zeichenreihe vom Beginn der aktuellen Zeile bis zum ersten Auftreten der Zeichenreihe string. 120 - string... Bezeichnet eine Zeichenreihe vom ersten Auftreten von string bis zum Ende der aktuellen Zeile. - ... Bezeichnet die ganze aktuelle Zeile. Bei Anwendung der Kommandos CHANGE, ADD (s. 5.5.5.2.), LC (s. 5.5.5.4.) und PASTE (s. 5.5.5.5.) in der Position vor Puffer- beginn (BOB) erfolgt vor der Kommandobearbeitung automatisch der Uebergang zur ersten Zeile. 5.5.5.2. Anhaengen von Zeichen an eine Zeile -------------------------------------------- ADD string minimal: A AP string Die Zeichenkette string wird an die aktuelle Zeile angehaengt. Bei AP wird die entstandene Zeile im Anschluss ueber das Bedien- geraet ausgegeben. 5.5.5.3. Suchen einer Zeile und Ersetzen von Zeichen ---------------------------------------------------- SC /string1/string2[/] (search and change) SC vereinigt die Funktionen der Kommandos LOCATE und CHANGE mit- einander. Zunaechst wird eine Zeile gesucht, die string1 enthaelt, dann wird string1 durch string2 ersetzt. Ist string1 nicht angegeben, so wird string2 am Anfang der naechsten Zeile eingeschoben. Ist V ON wirksam, wird die bearbeitete Zeile ausgegeben. Wird string1 nicht gefunden, so erreicht der Zeilenzeiger die Pufferende- bzw. die Dateiende-Position (Fehlermeldung [*EOB*] bzw. [*EOF*]). Bei Erreichen der End-of-Buffer-Position (Block- modus) wird der Zeilenzeiger auf den Blockpufferbeginn zurueckge- stellt. Das Aufsuchen der Zeile anhand von string1 beginnt mit der der aktuellen Zeile nachfolgenden Zeile. 5.5.5.4. Mehrfaches Ersetzen von Zeichen innerhalb einer Zeile -------------------------------------------------------------- [n]LC /string1/string2[/] (line change) Das LC-Kommando ersetzt von der aktuellen Zeile an in den folgen- den n-1 Zeilen alle Vorkommen von string1 durch string2. Dabei wird die Suche nach string1 nicht wie bei CHANGE jedesmal am Zeilenanfang begonnen, sondern es wird von vorher ersetzten Texten an weitergesucht. Wird in der jeweils aktuellen Zeile string1 nicht gefunden, erfolgt ohne Ersetzung der Uebergang zur naechsten Zeile, falls noch weitere Zeilen zu bearbeiten waren. Ist string2 leer, so wird string1 nur geloescht. Bei V ON werden die abgeaenderten Zeilen ausgegeben. Der Zeilen- zeiger wird auf die zuletzt bearbeitete Zeile positioniert. 121 5.5.5.5. Ersetzen von Zeichenketten im Puffer --------------------------------------------- PASTE /string1/string2[/] minimal: PA Dieses Kommando wird zum Ersetzen aller Vorkommen von "string1" durch "string2" im gesamten Block (Blockmodus) oder in der aktu- ellen Zeile und der gesamten restlichen Eingabedatei benutzt. Ist VERIFY ON spezifiziert, so werden alle korrigierten Zeilen ausgegeben. Der Zeilenzeiger zeigt nach PASTE auf den Blockpufferbeginn (Blockmodus),oder er befindet sich in der Dateiende-Position (Zeile-fuer-Zeile-Modus). 5.5.6. Zeilenweise Verarbeitung ------------------------------- 5.5.6.1. Loeschen von Zeilen ---------------------------- DELETE [n] minimal: D DELETE[-n] Das DELETE-Kommando mit positivem Parameter loescht im Blockpuf- fer oder in der Eingabedatei die aktuelle Zeile und die n-1 fol- genden Zeilen. Neue aktuelle Zeile wird die Zeile nach der letz- ten geloeschten Zeile. Ist ein negativer Parameter angegeben (nur im Blockmodus zulaessig), werden n Zeilen vor der aktuellen Zeile geloescht. Die aktuelle Zeile bleibt unveraendert. Ist n=0 oder nicht spezifiziert, so wird die aktuelle Zeile ge- loescht, und die naechste Zeile wird zur aktuellen Zeile. 5.5.6.2. Loeschen und Drucken der aktuellen Zeile ------------------------------------------------- DP [n] DP[-n] (delete and print) Das Kommando wirkt wie das DELETE-Kommando. Zusaetzlich wird die neue aktuelle Zeile ausgegeben. Falls n nicht spezifiziert wird, wird n=1 angenommen. Negatives n ist nur im Blockmodus zulaessig. Wird die letzte Zeile im Puffer geloescht, kann die neue aktuelle Zeile nicht ausgegeben werden. Statt dessen erscheint eine Leer- zeile. 5.5.6.3. Ueberschreiben von mehreren Zeilen ------------------------------------------- OVERLAY [n] minimal: O OVERLAY[-n] Das Kommando loescht n Zeilen (siehe Kommando DELETE) und schal- tet den Insert-Modus ein. Die nachfolgend eingegeben Zeilen werden anstelle der geloeschten Zeilen eingetragen. Ein negatives n ist nur im Blockmodus zulaessig. Durch Eingabe eines anstelle einer Zeile wird der Insert-Modus verlassen. Die nachfolgende Kommandoanforderung mit "* " zeigt an, dass wieder im Kommandomodus gearbeitet wird. 122 Wird waehrend der Kommandoabarbeitung das Block- bzw. Dateiende reicht, werden nur die Zeilen bis zu der bei der Fehlermeldung "[*EOB*] bzw. [*EOF*]" erreichten Position geloescht. Der Insert- Modus wird in diesem Fall nicht erreicht. 5.5.6.4. Einfuegen von Zeilen ----------------------------- INSERT [string] minimal: I Mit diesem Kommando kann eine Zeile nach der aktuellen Zeile eingefuegt werden. Die eingefuegte Zeile wird zur aktuellen Zei- le. Wird das INSERT-Kommando ohne Parameter verwendet, so koennen nachfolgend mehrere Zeilen eingefuegt werden (Insert-Modus). Ein als einziges Zeichen einer Eingabezeile bewirkt die Rueckkehr zum Kommandomodus (s. Abschn. 5.3.5.). Nach BEGIN kann vor der ersten Zeile, nach BOTTOM nach der letzten Zeile eines Blocks eingefuegt werden. Eine Leerzeile wird erzeugt, wenn string wenigstens ein Leerzei- chen enthaelt (d.h. entweder I oder im Insertmodus ). 5.5.6.5. Ueberschreiben der aktuellen Zeile ------------------------------------------- RETYPE [string] minimal: R Mit diesem Kommando wird die aktuelle Zeile mit der in string angegebenen Zeile ueberschrieben. Falls string nicht angegeben ist, wird die aktuelle Zeile nur geloescht. Der Zeilenzeiger bleibt unveraendert, bzw. zeigt nach der Loe- schung auf die naechste Zeile. Leerzeilen werden unter den gleichen Bedingungen wie beim Insert- kommando erzeugt. 5.5.6.6. Einschub eines FORM-FEED --------------------------------- FF Dieses Kommando fuegt nach der aktuellen Zeile ein FORM-FEED ein (FORM-FEED = Formularvorschub). Die neue aktuelle Zeile ist die Zeile die das FORM-FEED enthaelt. Mit dem FORM-FEED wird eine Quelltextdatei in Seiten unterteilt. 5.5.7. Steuerkommandos ---------------------- 5.5.7.1. Ausgabe bearbeiteter Zeilen ueber Terminal --------------------------------------------------- VERIFY [ON] minimal: V VERIFY OFF Dieses Kommando steuert die Ausgabe lokalisierter bzw. bearbeite- ter Zeilen bei verschiedenen Positionierkommandos und bei Komman- dos zur zeichenweisen Korrektur ueber das Bediengeraet. Wird das VERIFY-Kommando parameterlos benutzt, gilt VERIFY ON. Die Stel- lung des VERIFY-Schalters bei Start des Editors ist abhaengig von 123 der Generierung des Editors. Im Zeile-fuer-Zeile-Modus erfolgt die Ausgabe von Zeilen mit vorangestellter Zeilennummer (s. Abschn. 5.5.4.1.). 5.5.7.2. Einstellen von Blockmodus und Zeile-fuer-Zeile-Modus ------------------------------------------------------------- BLOCK [ON] minimal: BL BLOCK OFF Mit dem BLOCK-Kommando wird der Blockmodus oder der Zeile-fuer- Zeile-Modus fuer die Aufbereitung ausgewaehlt. BLOCK ON stellt den Blockmodus, BLOCK OFF den Zeile-fuer-Zeile-Modus ein. Wird BLOCK OFF gegeben, so wird der im Puffer stehende Block in die Ausgabedatei geschrieben und der Zeile-fuer-Zeile-Modus einge- stellt. Die naechste Zeile wird zur aktuellen Zeile. Bei der Umschaltung vom Zeile-fuer-Zeile-Modus zum Blockmodus wird die aktuelle Zeile zur ersten Zeile im Block. Die Stellung des BLOCK- Schalters bei Start des Editors ist abhaengig von der Generierung des Editors. Vor Abarbeitung von Indirektkommando-Dateien wird der Zeile-fuer- Zeile-Modus eingestellt und bleibt anschliessend erhalten. 5.5.7.3. Auswahlkommando fuer die Arbeit mit sekundaeren Dateien -------------------------------------------------------- SS (select secondary) SP (select primary) Das Kommando SS waehlt eine zuvor mit OPENS eroeffnete Datei als sekundaere Eingabedatei. Diese kann anschliessend in den Blockpuffer gelesen, dort bear- beitet und in die Ausgabedatei kopiert werden. Mit dem Kommando SP wird wieder die primaere Eingabedatei ausgewaehlt. Die sekun- daere Datei kann dabei eroeffnet bleiben. Vor dem Eroeffnen einer anderen sekundaeren Eingabedatei ist die zuvor benutzte sekundae- re Eingabedatei mit dem Kommando CLOSES zu schliessen. Im Zeile-fuer-Zeile-Modus wird die aktuelle Zeile vor Wechsel der Eingabe durch SS oder SP in die Ausgabedatei kopiert. 5.5.7.4. Kommandoverbindungszeichen und seine Aenderung ------------------------------------------------------- CC [zeichen] (concatenation character) Um mehrere Kommandos in einer Kommandozeile eingeben zu koennen, werden diese mit dem Kommandoverbindungszeichen verbunden. Als Standard fuer dieses Zeichen gilt das Zeichen Ampersand. Soll Ampersand selbst in einem Kommando vorkommen, kann durch das CC- Kommando ein anderes Zeichen als Kommandoverbindungszeichen fest- gelegt werden. Das CC-Kommando ohne Parameter stellt den Standardzustand her. Das CC-Zeichen kann in bestimmten Faellen zum Verlassen des In- sert-Modus benutzt werden (s. Abschn. 5.3.5.). 124 5.5.7.5. Unterdruecken der Ausgabe im Zeile-fuer-Zeile-Modus ------------------------------------------------------------ OUTPUT [ON] minimal: OU OUTPUT OFF Dieses Kommando ist nur im Zeile-fuer-Zeile-Modus zulaessig. OUTPUT OFF erlaubt, das Kopieren von Zeilen in die Ausgabedatei zu sperren (also auch bei UNSAVE, INSERT usw.). Standardmaessig gilt OUTPUT ON. Weiterhin wird OUTPUT ON beim Kommando BLOCK ON sowie vor dem Beginn eines neuen Aufbereitungslaufes nach CLOSE, CDL, TOF, KILL bzw. BEGIN (Zeile-fuer-Zeile-Modus) wiedereingestellt. 5.5.7.6. Automatisches Tabulatorsetzen -------------------------------------- TAB [ON] minimal: TA TAB OFF In der Assemblersprache wird der Tabulator sehr haeufig benoe- tigt. Bei der Zeileneingabe ueber die Kommandos INSERT und OVERLAY kann der fuehrende Tabulator unter bestimmten Bedingungen wegfallen. Ist TAB ON gesetzt, so wird zu Beginn jeder eingegebenen Zeile, die nicht mit einem Tabulator, einem Semikolon oder einer Marke beginnt, in der Ausgabedatei ein Tabulator gesetzt. Die Stellung des TAB-Schalters bei Start des Editors ist abhaengig von der Generierung des Editors. 5.5.7.7. Grosse und kleine Buchstaben ------------------------------------- UC [ON] UC OFF (upper case) UC OFF gestattet, das Umkodieren von kleinen Buchstaben in Gross- buchstaben zu unterdruecken. Die Umcodierung wirkt n u r auf die von dem Bediengeraet eingege- benen Zeichen. Wenn UC OFF gegeben wird, so werden alle von dem Bediengeraet eingegebenen Zeichen unveraendert uebernommen, nur EDI-Kommandos werden umgeschluesselt. Sollen Kleinbuchstaben bearbeitet werden, ist das Terminal vor dem Start von EDI mit Hife des MCR-Kommandos dafuer einzurichten. SET /LOWER=TI: zu verwenden. Bei Kommandos, die Zeichenreihen suchen, wie z.B. LOCATE, FIND, SC usw. werden Klein- und Grossbuchstaben als "gleich" betrach- tet. Die Stellung des UC-Schalters bei Start des Editors ist abhaengig von der Generierung des Editors. 125 5.5.7.8. Spezifikation der maximalen Zeilenzahl im Blockpuffer -------------------------------------------------------------- SIZE n Dieses Kommando spezifiziert die Anzahl von Zeilen, die bei der Ausfuehrung eines READ- oder RENEW-Kommandos in den Blockpuffer gelesen werden soll. Die Standardgroesse fuer SIZE kann beim Bilden der EDI-Task ent- weder fest oder abhaengig von der Groesse des Blockpuffers zur Laufzeit generiert werden. Die blockpufferbezogene Generierung sollte der festen Generierung vorgezogen werden, da sie den Blockpufferueberlauf bei einem einfachen RENEW-Kommando aus- schliesst. Bei Systemen mit Adresszuweisung kann die Groesse des Blockpuffers mit dem /INC Schalter beim Aufruf von EDI oder beim Installieren von EDI neu eingestellt werden. Zur Bearbeitung von n Zeilen im Blockpuffer wird Speicherplatz von ca. (N+1)*133 Bytes benoetigt. Wird durch die Anwendung des /INC-Schalters ein zu kleiner Block- puffer erzeugt, bricht EDI sofort nach der Aktivierung mit der Meldung "EDI--NO BUFFER SPACE" ab. 5.5.8. Arbeit mit Makros ------------------------ 5.5.8.1. Makrodefinition ------------------------ MACRO i definition i = 1, 2 oder 3 Mit diesem Kommando koennen maximal drei Makros definiert werden, die EDI-Kommandos oder Kommandoketten enthalten. Makros koennen ein Argument haben. Ein solches Argument wird durch "%" dargestellt. Bei Makroaufruf wird das Argument durch eine im Makroruf anzugebende Zeichenkette substituiert. Eine Makrodefinition kann mehrere Zeichen "%" enthalten. Fuer alle diese Zeichen wird dann beim Aufruf der Makros ein-und die- selbe Zeichenkette eingesetzt. D.h. ein Makro kann nicht mehrere unabhaengige Argumente besitzen. Durch Makros koennen besonders solche Kommandos oder Kommandoket- ten ersetzt werden, die in einem speziellen Fall haeufig benutzt werden muessen, aber laenger sind als der kurze Makroruf. Soll eine Makrodefinition aus einer Kommandokette bestehen, so ist vorher ein CC-Zeichen einzustellen, das nicht in dieser Defi- nition auftritt. Vor dem Makroruf ist das CC-Zeichen einzustel- len, welches in der definierten Kommandokette verwendet wird. Beispiel: * CC : ---- * MACRO 2 SC/5./2.5./#N+1#C/-/---/ -------------------------------- * CC # ---- * M2 -- 126 5.5.8.2. Eingabe von Makrodefinitionen von einer Datei ------------------------------------------------------ MC filespecification MC gestattet, bis zu drei Makrodefinitionen von einer Datei ein- zugeben. Die Makrodefinitionen in der Datei duerfen nur den Defi- nitionsteil des MACRO-Kommandos enthalten. Die Makrodefinitionen sind der Reihe nach gespeichert, d.h. die erste Zeile der spezi- fizierten Datei wird Makro 1 usw. 5.5.8.3. Makroausfuehrung ------------------------- [n]Mi [s] n - bewirkt n-malige Ausfuehrung des Makros i - ist die Makronummer 1, 2 oder 3 s - string, welche fuer das Argument "%" eingesetzt wird. Dieses Kommando bewirkt die n-malige Abarbeitung des Makros i mit dem Argument s. Das Argument wird ignoriert, wenn der gerufene Makro argumentlos ist. Bevor ein Makro ausgefuehrt werden kann, muss er entweder mit dem MACRO-Kommando definiert oder durch MC gerufen worden sein. Ein Makroruf darf nur das letzte Kommando einer Kommandokette sein. Folgen nach einem Makroruf weitere Kommandos in einer Ket- te, so werden diese ohne Meldung ignoriert. 5.6. Fehlermitteilungen und Fehlerbehandlung -------------------------------------------- 5.6.1. Kommandofehler --------------------- Kommandofehler werden durch einen in eckige Klammern eingeschlos- senen Text bezeichnet. Sie beziehen sich stets auf das zuletzt gegebene Kommando. Nach der Fehlermeldung wird ein neues Kommando mit "* " angefordert. Wurde der gemeldete Fehler durch ein Kommando aus einer Kommando- kette verursacht, so werden die restlichen Kommandos in der Kette nicht ausgefuehrt. [ILL CMD] Das letzte Kommando war syntaktisch falsch. [ILL IN BLOCK ON MODE] Es wurde ein Kommando gegeben, welches nicht im Blockmodus be- nutzt werden darf. z.B. FILE oder OUTPUT ON/OFF [ILL IN BLOCK OFF MODE] Es wurde ein Kommando benutzt, das im Zeile-fuer-Zeile-Modus nicht benutzt werden darf. 127 [ILL NUM] Kennzeichnet das Auftreten eines nichtnumerischen Zeichens in einer Zahl, die Angabe einer negativen Zahl an unzulaessiger Stelle oder Zahlenueberlauf. Es koennen nur Zahlen im Bereich von -32768 bis +32767 angegeben werden. [ILL LINE NUMBER] Im Zeile-fuer-Zeile-Modus wurde ueber ein NEXT-Kommando eine Rueckwaertspositionierung versucht. [ILL LINE NUMBER - BLOCK ON MODE] Es wurde versucht, im Blockmodus mit Zeilennumerierung zu ar- beiten. [*BOB*] Bei der Abarbeitung eines Kommandos wurde der Pufferanfang er- reicht. Der aktuelle Zeilenzeiger steht vor der ersten Zeile. [*EOB*] Bei Abarbeitung eines Kommandos wurde das Ende des Blockpuffers erreicht. Der Zeilenzeiger wird vor die erste Zeile positioniert. [*EOF*] Das Ende der Eingabedatei wurde erreicht. [TOO MANY CHARS] Ein CHANGE-, ADD-, PASTE-, SC- oder LC-Kommando hat eine Zeile erzeugt, die groesser als 132 Zeichen ist. Die betreffende Zeile wird gekuerzt. [BUFFER CAPACITY EXCEEDED BY] ... [LINE DELETED] Die Blockpufferkapazitaet ist durch die in "..." angegebene Zeile ueberschritten. Die verursachende Zeile wird geloescht. Erscheint diese Meldung bei einem CHANGE-, PASTE-, SC- oder LC- Kommando, so wird "string 1" geloescht, "string 2" aber nicht eingefuegt. [ILL STRING CONST] Kennzeichnet das Fehlen von Begrenzungszeichen in Kommandos zur zeichenweisen Verarbeitung (CHANGE,PASTE,...). [NO MATCH] In einem CHANGE-Kommando wurde eine Teilzeichenreihe angegeben, die in der aktuellen Zeile nicht existiert und deshalb nicht ersetzt werden kann. [NO INPUT FILE OPEN] Waehrend des Erstellens einer Datei durch EDI wurde ein RENEW-, READ- oder PAGE-Kommando gegeben. [SECONDARY FILE NOT OPEN] Das SS-Kommando wurde benutzt, ohne dass vorher eine sekundaere Eingabedatei eroeffnet wurde. 128 [SECONDARY FILE ALREADY OPEN] Zeigt an, dass bereits eine sekundaere Datei eroeffnet ist. Waeh- rend der Arbeit mit einer sekundaeren Datei eine weitere sekun- daere Datei zu oeffnen oder falls nach dem KILL-Kommando oder EDI-Restart durch andere Fehler ein neuer Aufbereitungslauf be- gonnen wird. [SECONDARY FILE CURRENTLY SELECTED FOR INPUT] Zeigt an, dass bei der Eroeffnung eines Aufbereitungslaufs eine sekundaere Datei von einem frueherem Aufbereitungslauf eroeffnet und noch zur Eingabe ausgewaehlt ist. [SECONDARY FILE DOES NOT EXIST] Mit dem Kommando CLOSES soll eine sekundaere Eingabedatei ge- schlossen werden, obwohl keine sekundaere Datei eroeffnet ist. [MACRO NOT DEFINED] Mit dem M-Kommando wurde versucht, ein Makro zu rufen, ohne das dieser Makro vorher definiert wurde. [OVERLAYING PREVIOUSLY DEFINED MACRO] Diese Mitteilung zeigt an, dass ein Makro durch Neudefinition ueberschrieben wurde. [MACRO ARG UNDEFINED] Ein Makro, dessen Definition das "%" Zeichen enthielt, wurde ohne Angabe eines Arguments aufgerufen. 5.6.2. Fehlermitteilungen bei Dateizugriffen -------------------------------------------- Diese Meldungen umfassen Fehler die bei der Benutzung von Datei- en, Verzeichnissen und Geraeten auftreten. EDI kennzeichnet die entsprechende Fehlermeldung mit EDI-- und fordert mit "* " ein Kommando an. Um die den Fehler verursachende Datei zu kennzeichnen existieren folgende Ausschriften: INPUT FILE : primaere Eingabedatei OUTPUT FILE : Ausgabedatei SECONDARY FILE : sekundaere Eingabedatei MCALL,SAVE OR OTHER FILE : Hilfsdatei fuer MCALL-, SAVE-,UNSAVE- und FILE-Kommando @-FILE : Indirektkommando-Datei EDI-- BAD FILENAME (verursachende Datei) Der angegebene Dateiname ist syntaktisch falsch. EDI-- DEVICE, DIRECTORY OR FILE DOES NOT EXIST (verursachende Datei) In einem SAVE- bzw. FILE-Kommando wurde auf ein Verzeichnis Bezug genommen, das nicht existiert. EDI-- DEVICE NOT IN SYSTEM (verursachende Datei) Es wurde ein FILE-, OPENS-, SAVE- oder UNSAVE-Kommando gegeben, in dessen Dateispezifikation ein im System nicht vorhandenes Geraet auftrat. 129 Weitere Fehlermitteilungen: EDI-- FILE ALREADY OPEN (verursachende Datei) EDI-- DEVICE NOT READY (verursachende Datei) EDI-- BAD DEVICE NAME (verursachende Datei) EDI-- WRITE ATTEMPT TO LOCKED UNIT (verursachende Datei) EDI-- RENAME NAME ALREADY IN USE (verursachende Datei) 5.6.3. Fehlermitteilungen mit Neustart von EDI ---------------------------------------------- Die folgenden Fehlermeldungen treten bei Fehlern auf, die die Arbeit von EDI abbrechen und einen Neustart erwirken. Es werden von EDI alle geoeffneten Dateien (ausser den sekundaeren Eingabe- dateien) geschlossen. Die Meldungen dieser Klasse sind ebenfalls mit EDI-- gekennzeichnet. Um die den Fehler verursachende Datei zu kennzeichnen, existieren folgende Ausschriften: INPUT FILE : primaere Eingabedatei OUTPUT FILE : Ausgabedatei SECONDARY FILE : sekundaere Eingabedatei MCALL,SAVE OR OTHER FILE : Hilfsdatei fuer MCALL-, SAVE-,UNSAVE- und FILE-Kommando @-FILE : Indirektkommando-Datei EDI-- FILE IS LOCKED TO WRITE ACCESS (verursachende Datei) Die Ausgabedatei (Textausgabe, FILE, SAVE) wird momentan von einer oder mehreren Tasks gelesen und ist gegen Beschreiben ge- sichert. EDI-- ILLEGAL RECORD ATTRIBUTES - FILE NOT USABLE (verursachende Datei) Die im Dateikennsatz der Eingabedatei definierten Satzattribute sind nicht im FCS enthalten, so dass die Datei nicht eingelesen werden kann. EDI-- BAD RECORD TYPE -FILE NO LONGER USABLE(verursachende Datei) Die spezifizierte Eingabedatei kann von EDI nicht aufbereitet werden, da sie keinen KOI-7-Text enthaelt. EDI-- FILE ACCESS FOR WRITE (verursachende Datei) Die Eingabedatei (primaere Eingabe, sekundaere Eingabe, UNSAVE oder MCALL) wird momentan von einer anderen Task geschrieben. EDI-- FILE NOT PROPERLY CLOSED - NOT USABLE (verursachende Datei) Die Eingabedatei wurde durch die Task, die sie aufgebaut hat, nicht ordnungsgemaess geschlossen und kann somit durch EDI nicht verarbeitet werden. 130 EDI-- PRIVILEGE VIOLATION (verursachende Datei) EDI ist nicht berechtigt, zu der bezeichneten Datei (also zum bezeichneten Geraet), zum bezeichneten Directory oder zum stan- dardmaessig angenommenen Geraet, zum standardmaessig angenommenen Directory bzw. zur darin befindlichen Datei zuzugreifen. EDI-- RECORD IS TOO LARGE FOR USER BUFFER (verursachende Datei) Die Eingabedatei wurde nicht von EDI gebildet und beinhaltet zu lange Saetze. Die maximale Satzlaenge der von EDI bearbeiteten Saetze betraegt 132 Byte. Dieser Fehler kann Folge fehlerhafter Datenuebertragung sein. EDI-- BAD DIRECTORY SYNTAX (verursachende Datei) Das Verzeichnis hat ein falsches Format. Weitere Fehlermitteilungen: EDI-- END OF FILE (verursachende Datei) EDI-- ILLEGAL RECORD NUMBER - FILE NO LONGER USABLE (verursachende Datei) EDI-- ILLEGAL RECORD ACCESS BITS - FILE NOT USABLE (verursachende Datei) EDI-- DUPLICATE ENTRY IN DIRECTORY (verursachende Datei) EDI-- RENAME ON TWO DIFFERENT DEVICES (verursachende Datei) 5.6.4. Abbruchmitteilungen -------------------------- Abbruchmeldungen treten bei System- oder Hardware-Fehlern auf. Alle Dateien werden geschlossen. Die Ausgabedatei ist teilweise vorhanden. Jede Fehlermeldung wird mit EDI-- angekuendigt, und es folgt auf der naechsten Zeile die Ausschrift: [EXIT ]. Um die den Fehler verursachende Datei zu kennzeichnen, existieren folgende Ausschriften: INPUT FILE : primaere Eingabedatei OUTPUT FILE : Ausgabedatei SECONDARY FILE : sekundaere Eingabedatei MCALL,SAVE OR OTHER FILE : Hilfsdatei fuer MCALL-, SAVE-, UNSAVE- und FILE-Kommando @-FILE : Indirektkommando-Datei EDI-- FILE PROCESSOR DEVICE WRITE ERROR (verursachende Datei) Diese Fehlermeldung zeigt an, dass das spezifizierte Ausgabege- raet fuer das Schreiben gesperrt ist. EDI-- CALLER'S NODES EXHAUSTED (verursachende Datei) Der dynamische Speicher des Systems ist erschoepft, und es fehlt der noetige Platz zur Ausfuehrung weiterer Ein- oder Ausgaben. 131 EDI-- FILE HEADER CHECKSUM ERROR (verursachende Datei) Eine Eingabedatei hat einen Dateikennsatz, dessen Pruefsumme falsch ist. EDI-- DEVICE FULL (verursachende Datei) Im Ausgabebereich mangelt es an Platz fuer die Eintragung der Ausgabedatei (Textausgabe durch FILE oder SAVE). EDI-- INDEX FILE FULL (verursachende Datei) Der Dateikennsatz ist nicht in der Lage, eine Ausgabedatei aufzu- nehmen. Wenn ein Datentraeger initialisiert wird, wird die maxi- male Zahl der Dateien, die auf dem Datentraeger gespeichert wer- den koennen, festgelegt. Dieses Maximum wurde ueberschritten. EDI-- FILE HEADER FULL (verursachende Datei) Es existiert im Dateikennsatz zu wenig Speicherplatz, um die Zeiger der Ausgabedatei vollstaendig aufzunehmen. Weitere Fehlermitteilungen : EDI-- UNEXPECTED ERROR - EDITOR WILL ABORT (verursachende Datei) EDI-- FILE PROCESSOR DEVICE READ ERROR (verursachende Datei) EDI-- HARDWARE ERROR ON DEVICE (verursachende Datei) EDI-- PARITY ERROR ON DEVICE (verursachende Datei) EDI-- BAD BLOCK ON DEVICE (verursachende Datei) EDI-- NO BLOCKS LEFT (verursachende Datei) EDI-- BAD DIRECTORY FILE (verursachende Datei) EDI-- INVALID FUNCTION CODE ON A QIO (verursachende Datei) EDI-- WRITE ATTRIBUTE DATA FORMAT ERROR (verursachende Datei) EDI-- REQUEST TERMINATED (verursachende Datei) EDI-- BAD PARAMETERS ON A QIO (verursachende Datei) EDI-- BAD BUFFER ADDRESS OR HANDLER NOT LOADED (verursachende Datei) 132 6. Quelltexteingabe- und Korrekturprogramm SLP 1630(OMEX) --------------------------------------------------------- 6.1. Vorbemerkung ----------------- Mit Hilfe von SLP koennen Quelltextdateien erstellt, modifiziert und gedruckt werden. Es werden zwei Arten von Kommandos unterschieden. Im Kommando- modus werden die Eingabe-, Listen- und Ausgabedatei spezifiziert. Es koennen zusaetzlich verschiedene Formen der Ausgabe einge- stellt werden. Im Aufbereitungsmodus kann die Eingabedatei zeilenweise lokali- siert und modifiziert werden. Dafuer ist ein bestimmtes Aufberei- tungskommandoformat festgelegt. SLP ist besonders fuer die Abarbeitung von Indirektkommando- Dateien geeignet. Der in der Anleitung fuer den Bediener, Teil 2 beschriebene Aufruf von Indirektkommando-Dateien wird von SLP unterstuetzt. Es werden wahlweise Listendateien mit Zeilennumme- rierung ausgegeben und speziell gewuenschte Kommentare selbstaen- dig an neu eingefuegte Zeilen angehaengt. SLP wird mit den in OMEX ueblichen Methoden aktiviert und meldet sich mit "SLP> " auf dem Bediengeraet. Beispiel: SLP> B.MAC,LP:=A.MAC (Kommandomodus) --------------- . (Aufbereitungsmodus) . . In diesem Beispiel soll die Datei A.MAC modifiziert und nach der Bearbeitung auf dem Drucker ausgegeben werden. Die Ausgabedatei hat den Namen B.MAC . Nach der Eingabe der Kommandozeile (Komman- domodus) werden Aufbereitungszeilen oder der Aufruf einer Indi- rektkommandodatei mit Aufbereitungskommandos erwartet, fuer die keine Anforderung erfolgt (Aufbereitungsmodus). 6.2. Kommandosyntax ------------------- SLP unterscheidet zwei Arten von Kommandos. Nach dem Start von SLP wird eine Kommandozeile zur Definition der Eingabe-, Listen- und Ausgabedatei erwartet. Anschliessend koennen Aufbereitungs- kommandos oder der Name einer Indirektkommandodatei ueber das Be- diengeraet eingegeben werden. Diese lokalisieren in der Eingabe- datei spezifizierte Zeilen, die geloescht oder ersetzt werden koennen bzw. nach denen weitere Zeilen eingefuegt werden. Das Eingabekommando hat folgendes Format: outfile[/sw][,listfile][/sw]=infile[/sw] outfile - Die Ausgabedatei ist die, auf der Eingabedatei basierende, durch SLP erstellte Datei. listfile - Die Listendatei ist ein Abbild der Ausgabedatei mit Zeilennumerierung. 133 infile - Die Eingabedatei ist die zu korrigierende Datei bzw. ein Geraet (TI:), falls eine Datei neu ge- bildet werden soll. /sw - spezifiziert einen der gewuenschten SLP-Schalter. Das Standardgeraet fuer Eingabe- und Ausgabedatei ist SY0:, fuer die Listendatei gilt der selbe Standard wie fuer die die Ausgabe- datei. Die dem Eingabekommando folgenden Aufbereitungskommandos haben folgendes Format: -[locator1][,locator2][,/audittrail/][;comment] inputline . . wobei - spezifiziert, dass es sich um ein Aufbereitungs- kommando handelt. locator1 lokalisiert die angegebene Zeile in der Eingabe- datei. Falls nur locator1 angegeben ist, werden die naechsten Zeilen der Kommandoeingabe (input- lines) in die Ausgabedatei eingefuegt. locator2 lokalisiert die letzte Zeile, die vom locator1 beginnend geloescht, bzw. durch die folgenden Zeilen (inputlines) ersetzt werden. /audittrail/ Der Korrekturvermerk (audit-trail) ist eine Zei- chenkette, die bei allen neu eingefuegten Zeilen als Kommentar angefuegt wird. Der Korrekturvermerk muss mit Schraegstrich eingegrenzt werden. comment Kommentar ( begrenzt durch ein Semikolon ) am Ende des SLP - Aufbereitungskommandos. Er erscheint nur in der Kommandoeingabedatei. inputline ist die Textzeile, die nach der aktuellen Zeile eingefuegt wird. Alle Elemente des Aufbereitungskommandos sind positionsabhaengig, so dass fuer ausgelassene Begriffe am Zeilenanfang Kommas angege- ben werden muessen. Das Locator-Feld kann in verschiedenen Arten die gewuenschte Zeile spezifizieren. Beachtet werden muss, dass die SLP-Referen- zen generell aufwaerts bezueglich der Zeilennummern angegeben werden, d.h. dass die Aufbereitungskommandos bezueglich der Refe- renzen in aufsteigender Folge sortiert sein muessen. Das Locator-Feld kann mittels folgender Anweisung belegt werden. Die vier Varianten sind beliebig austauschbar: -/string/[+n] -/string...string/[+n] -number[+n] -.[+n] 134 mit string ist eine Zeichenkette. SLP lokalisiert die Zeile, in der die angegebene Zeichenkette steht, und setzt den aktuellen Zeilenzaehler auf diese Zeile. Wird /string ...string/ angegeben, lokalisiert SLP die Zeile, in der zwei Zeichenketten eine groessere Zei- chenkette begrenzen. number spezifiziert die aktuelle Zeilennummer. Die hoechste moegliche Nummer ist 9999. n ist ein dezimales Offset fuer den aktuellen Zeilen- zaehler. Der Punkt bezieht sich auf die aktuelle Zeile. Im Aufbereitungsmodus koennen mittels verschiedener SLP-Operato- ren Ausgabefunktionen aktiviert bzw. unterdrueckt werden. SLP interpretiert die in der folgenden Uebersicht aufgefuehrten Ope- ratoren, wenn sie in der Eingabezeile als erstes Zeichen stehen. Uebersicht der SLP-Operatoren ----------------------------- - (55) SLP interpretiert den Bindestrich als erstes Zeichen eines Aufbereitungskommandos. \ (134) SLP interpretiert den inversen Schraegstrich als Kom- mando zum Unterdruecken des Korrekturvermerk-Prozesses. % (45) Das Prozentzeichen reaktiviert den Korrekturvermerk- Prozess. @ (100) Das kommerzielle A gibt an, dass eine Indirektkommando- Datei die Kommandoarbeit uebernimmt. / (57) Der Schraegstrich beendet den Aufbereitungsmodus, und SLP kehrt zum Kommandomodus zurueck. < (74) Dieser Operator zeigt an, dass das ihm folgende Zeichen ein Eingabezeichen ist. Somit koennen Operatoren selbst eingegeben werden. 6.3. Arbeit mit SLP ------------------- 6.3.1. Neubilden einer Quelldatei --------------------------------- Das Kommando zum Bilden einer Datei hat folgendes Format: outfile[/sw][,listfile][/sw]=TI:[/sw] mit outfile Ausgabedateispezifikation listfile Listendateispezifikation 135 TI: spezifiziert als Eingabegeraet das Bediengeraet /sw beliebiger SLP-Schalter Das Standardgeraet fuer Eingabe- und Ausgabedatei ist SY0:. Die Laenge der Eingabezeilen ist variabel, darf aber 132. Zeichen nicht ueberschreiten. Angehaengte Tabulatoren und Leerzeichen werden geloescht. Die im folgenden Beispiel gebildete Datei A.MAC;1 dient in den weiteren Abschnitten als Beispiel fuer die Eingabedatei. Beispiel zum Erzeugen einer Datei: SLP> A.MAC=TI: --------- LINE 1 LINE 2 LINE 3 LINE 4 LINE 5 LINE 6 LINE 7 LINE 8 LINE 9 LINE 10 / SLP> Nach der Eingabe dieser Zeilen und dem Abschluss mittels "/" wird die Datei A.MAC in das Standard-UFD geschrieben. 6.3.2. Generieren einer numerierten Liste ----------------------------------------- Die Arbeit mit SLP ist zeilenorientiert. Fuer das Aufbereiten einer Quelltextdatei wird eine numerierte Liste benoetigt. SLP erzeugt Ausgabe- und Listendatei, wobei die Listendatei ein mit Zeilennummern versehenes Abbild der Ausgabedatei ist. Wird die Ausgabedatei nicht spezifiziert, (also nur die Listen- datei), so entsteht nur eine numerierte Liste der Eingabedatei. Beispiel zum Ausdrucken einer Quelldatei: SLP> ,LP:=A.MAC / ---------- Auf dem Paralleldrucker wird die Liste von A.MAC gedruckt. 6.3.3. Einfuegen von Zeilen in eine Datei ----------------------------------------- Die allgemeine Form des Aufbereitungskommandos zum Einfuegen von Zeilen in eine bestehende Datei ist: -[number] -[ . ][+n],,[/audittrail] -[/string/] 136 mit number Dezimalzahl, die die Zeile bestimmt, nach der ein- gefuegt werden soll. string ist KOI-7-Zeichenkette, die SLP in der Eingabedatei lokalisiert. Die lokalisierte Zeile wird zur aktuel- len Zeile. . bestimmt die Zeile, bei der SLP momentan im Aufberei- tungsprozess steht, als aktuellen Bezug. n dient als Offset zur aktuellen Zeile. audittrail ist eine Zeichenkette, die selbstaendig an neu einge- fuegte Zeilen angehaengt wird. Bei Fehlen dieser Angabe wird von SLP die neueingefuegte Zeile durch den Kommentar ;**NEW erweitert (s. Abschn. 6.3.7.1.). Das folgende Beispiel demonstriert die Anwendung der Kommando- formen zum Einfuegen in eine bestehende Quelltextdatei (A.MAC in Abschnitt 6.3.1. gebildet). Enthaelt die Indirektkommando-Datei T1.CMD folgende Kommandos, A.MAC,LP:=A.MAC -2 INSERT THIS LINE AFTER LINE 2 -.+1 INSERT THIS LINE AFTER LINE 4 -/LINE 6/ INSERT THIS LINE AFTER LINE 6 -/LINE 7/+1 INSERT THIS LINE AFTER LINE 8 / so entsteht nach der SLP-Arbeit folgende Ausgabedatei A.MAC mit um 1 erhoehter Versionsnummer: LINE 1 LINE 2 INSERT THIS LINE AFTER LINE 2 LINE 3 LINE 4 INSERT THIS LINE AFTER LINE 4 LINE 5 LINE 6 INSERT THIS LINE AFTER LINE 6 LINE 7 LINE 8 INSERT THIS LINE AFTER LINE 8 LINE 9 LINE 10 Standardmaessig wird von SLP an jede neu eingefuegte Zeile ein Kommentar (;**NEW) angehaengt. Die den Eingabezeilen folgende Zeile erhaelt als Kommentar die Anzahl der erweiternden Zeilen. 137 6.3.4. Loeschen von Zeilen einer Datei -------------------------------------- Zeilen einer Datei werden mit Hilfe eines speziellen Aufberei- tungskommandos geloescht. Es gibt verschiedene Arten, die Zeilen zu lokalisieren. Das Aufbereitungskommando hat folgendes Format: -[locator1],[locator2],[/audittrail/][;comment] Die Bedeutung der Positionen innerhalb des Kommandos wurde be- reits in Abschnitt 6.2. erklaert. Das folgende Beispiel zeigt verschiedene Varianten fuer das Loe- schen von Zeilen aus der Eingabedatei A.MAC. Die Indirektkommando-Datei T2.CMD enthaelt folgende Kommandos: A.MAC,LP:=A.MAC -2,2 -.+1,/LINE 5/ -/LI...7/,.+2 / Mit dem Kommando SLP> @T2.CMD ----------- wird SLP aktiviert, aus der Eingabedatei A.MAC folgende Datei mit um 1 erhoehter Versionsnummer zu erstellen: LINE 1 LINE 3 ;**-1 LINE 6 ;**-2 LINE 10 ;**-3 Entscheidend ist bei dem Lokalisieren gewisser Zeilen mittels string-Angabe, dass die Zeile mit der locator1- oder locator2- Vereinbarung beginnt. 6.3.5. Ersetzen von Zeilen einer Datei -------------------------------------- Das Ersetzen von Zeilen einer Datei ist eine Kombination der Funktionen Loeschen und Einfuegen. Entsprechend ist das Aufbereitungskommando zu geben. Das folgende Beispiel demonstriert die verschiedenen Moeglichkeiten beim Loka- lisieren und Ersetzen von Textzeilen in einer Datei. Die im Beispiel (s. Abschn. 6.3.1.) erzeugte Datei wird als Ein- gabedatei verwendet. Die Indirektkommando-Datei T3.CMD enthaelt folgende Kommandos: B.MAC,LP:=A.MAC -2,2 THIS IS NEW LINE 2.1 THIS IS NEW LINE 2.2 -.+1,. THIS IS NEW LINE 4 -/LINE 8/,/LINE 9/ THIS LINE SUBSTITUTES LINE 8 AND 9 / 138 Mit der Ausfuehrung der SLP-Arbeit wird folgende Liste erstellt: LINE 1 THIS IS NEW LINE 2.1 ;**NEW** THIS IS NEW LINE 2.2 ;**NEW** LINE 3 ;**-1 THIS IS NEW LINE 4 ;**NEW** LINE 5 ;**-1 LINE 6 LINE 7 THIS LINE SUBSTITUTES LINE 8 AND LINE 9 ;**NEW** LINE 10 ;**-1 Die von SLP angefuegten Kommentare, die mit ;** beginnen, werden bei erneuter SLP-Arbeit ueberschrieben. 6.3.6. Anwendung der Operatoren ------------------------------- Wie in Abschnitt 6.2 bereits vorgestellt, hat SLP eine Reihe von Operatoren. Sie dienen einerseits zur Klassifikation der Komman- dos, andererseits zur Regulierung der Ausgabefunktionen von SLP. In den vorangegangenen Beispielen wurden bereits die Operatoren - , @ und / verwendet und ihre Funktion sichtbar. Das folgende Beispiel demonstriert die Wirkungsweise der weiteren Operatoren. Der Operator < wird fuer das Erstellen von Indirekt- kommando-Dateien mit SLP benoetigt. Die Indirektkommando-Datei T4.CMD enthaelt folgende Kommandos: B.MAC,LP:=A.MAC -2,2 <- MAC KORR[.OBJ]=KORR[.MAC] >PAT NEU[.OBJ]=TEST[.OBJ],KORR[.OBJ] PAT bringt den Modul M3 der Datei NEU.OBJ in folgende Form: .TITLE M3 .IDENT /0102/ M3:: TST R3 BEQ M31 RTS PC M31: MOV R0,A JSR PC,SR1 RTS PC .=M3 .=.+16 ADD A,HZ1 RTS PC .END Der Modul M3 wird von TKB 1630(OMEX) in folgender Form verarbeitet: .TITLE M3 .IDENT /0102/ M3:: TST R3 BEQ M31 RTS PC M31: MOV R0,A JSR PC,SR1 ADD A,HZ1 RTS PC .END TKB-Kommando: >TKB TEST[.TSK]=NEU[.OBJ] 147 2. Beispiel ----------- Eingabedatei: .TITLE MX1 .IDENT /0101/ MX1: ADD C,D CALL SR2 MOV B,R1 RTS PC . . . .END Korrektur: Im Modul MX1 sollen mehrere Befehle eingefuegt werden. Es werden ein Unterprogrammruf und das Unterprogramm selbst in den Modul MX1 eingefuegt. Korrekturdatei: .TITLE MX1 .IDENT /0102/ CALL SRNEU NOP .PSECT SRNEU SRNEU: ADD C,D MOV XYZ,R1 SWAB R1 RTS PC .END Anmerkung: Der Befehl "ADD C,D" muss in das Unterprogramm uebernommen wer- den, weil er in der urspruenglichen Datei ueberschrieben wird. Der "NOP"-Befehl muss eingefuegt werden, weil der Befehl "ADD C,D" 3 Worte, aber der ueberlagernde Befehl "CALL SRNEU" nur 2 Worte belegt! Ausgabedatei: .TITLE MX1 .IDENT /0102/ MX1: CALL SRNEU NOP CALL SR2 MOV B,R1 RTS PC . . . .PSECT SRNEU SRNEU: ADD C,D MOV XYZ,R1 SWAB R1 RTS PC .END 148 7.5. Mitteilungen an den Bediener --------------------------------- 7.5.1. Identifikation --------------------- Durch die Angabe des Schalters /ID gibt PAT seine Identifikation aus: PAT /ID --- PAT 1630 02.00 Im Beispiel ist 02 die Version und 00 die Modifikation. 7.5.2. Pruefsumme ----------------- Der Schalter /CS bewirkt, dass PAT die oktale Pruefsumme fuer alle Binaerdaten bildet: 1) =XDAT/CS,KORR PAT berechnet die Pruefsumme fuer XDAT.OBJ und teilt mit: INPUT MODULE CHECKSUM IS checksum 2) =XDAT,KORR/CS PAT berechnet die Pruefsumme fuer KORR.OBJ und teilt mit: CORRECTION INPUT FILE CHECKSUM IS checksum 3) /CS:number PAT berechnet die Pruefsumme und vergleicht mit "number". Bei Ungleichheit erfolgt die Mitteilung: ERROR IN FILE filename CHECKSUM Beispiel: =XDAT,KORR/CS:44336 ERROR IN FILE KORR.OBJ CHECKSUM Anmerkung: Die Pruefsumme ist immer ein Oktalwert ungleich Null. 149 7.5.3. Fehlermitteilungen ------------------------- PAT unterscheidet zwei allgemeine Grundformen der Fehlermit- teilung: PAT -- *DIAG*-error message PAT -- *FATAL*-error message Folgende Ursachen fuehren zu Fehlermitteilungen: - Kommandofehler - Dateispezifikationsfehler - E/A-Fehler - Dateiinhalt- oder -formatfehler - interne Softwarefehler - Speicherfehler Der Ausdruck "error message" konkretisiert die Fehlerursache: PAT -- COMMAND LINE ERROR command line PAT -- COMMAND SYNTAX ERROR command line Kommandofehler PAT -- ILLEGAL INDIRECT FILE SPECIFICATION command line Syntaxfehler oder Indirektkommando-Datei nicht vorhanden PAT -- MAXIMUM INDIRECT FILE DEPTH EXCEEDED command line mehr als 2 Indirektstufen in der Indirektkommando-Datei vorhanden PAT -- CORRECTION INPUT FILE MISSING command line Korrekturdatei nicht spezifiziert PAT -- ILLEGAL DEVICE/VOLUME SPECIFIED device name Syntaxfehler in der Spezifikation des Geraets PAT -- ILLEGAL DIRECTORY SPECIFICATION directory name Syntaxfehler in der Spezifikation des UFD PAT -- ILLEGAL FILE SPECIFICATION filename Syntaxfehler in der Dateispezifikation PAT -- ILLEGAL SWITCH SPECIFIED filename fehlerhafte Schalterangabe PAT -- INVALID FILE SPECIFIED filename angegebenes Geraet oder UFD nicht vorhanden PAT -- MULTIPLE OUTPUT FILES SPECIFIED command line mehr als eine Ausgabedatei spezifiziert PAT -- REQUIRED INPUT FILE MISSING command line Eingabedatei nicht spezifiziert PAT -- TOO MANY INPUT FILES SPECIFIED command line mehr als eine Eingabedatei (infile) spezifiziert PAT -- UNABLE TO FIND FILE filename Eingabe- bzw. Korrekturdatei nicht vorhanden 150 PAT -- ERROR DURING CLOSE: FILE: filename Platte voll; Schreibschutz wirksam; Geraetefehler PAT -- ERROR POSITIONING FILE filename Positionierung verletzt Dateigrenzen (Geraetefehler) PAT -- I/O ERROR ON INPUT FILE filename Geraetefehler beim Lesen der Eingabedatei PAT -- I/O ERROR ON OUTPUT FILE filename Platte voll; Schreibschutz wirksam; Geraetefehler PAT -- ERROR IN FILE filename CHECKSUM falsche Pruefsumme oder Dateiversion PAT -- FILE filename HAS ILLEGAL FORMAT kein Objektmodulformat; abgebrochene Datei; Datei enthaelt Text PAT -- INCOMPATIBLE REFERENCE TO GLOBAL SYMBOL symbol name Korrekturdatei enthaelt Globalsymbol, dessen Attribute nicht mit denen der Eingabedatei uebereinstimmmn PAT -- INCOMPATIBLE REFERENCE TO PROGRAM SECTION section name Section-Attribute stimmen nicht ueberein PAT -- UNABLE TO LOCATE MODULE module name Der in der Korrekturdatei definierte Modulname wird in der Ein- gabedatei nicht gefunden PAT -- ILLEGAL ERROR-SEVERITY CODE error data Softwarefehler (PAT-Task defekt) PAT -- NO DYNAMIC STORAGE AVAILABLE storage-listhead zu wenig zusammmnhaengender Taskspeicher verfuegbar 151 8. Bibliothekar LBR 1630(OMEX) ------------------------------ 8.1. Vorbemerkungen ------------------- LBR ermoeglicht dem Nutzer, Objektmodul- , Makrobibliotheks - dateien und Universalbibliotheken zu erzeugen, zu veraendern, zu drucken und zu warten. Quelltextdateien im allgemeinen Sinne verarbeitet LBR nicht. Quelltexte dieser Art werden ignoriert und koennen nicht in eine Bibliothek eingebracht werden. Der Anwender stellt die Bibliothe- ken nach seiner Wahl zusammen. Bibliotheken sind so aufgebaut, dass sie einen schnellen Zugriff durch den Assembler bzw. den Taskbilder ermoeglichen. Der Assembler greift waehrend der Uebersetzung auf die Systemma- krobibliothek vom Typ .SML und auf eine oder mehrere Makrobiblio- theken vom Typ .MLB zu. Alle Objektmoduln eines Programms koennen in eine oder mehrere Objektmodulbibliotheken eingebracht werden. Durch entsprechende Anweisungen des Taskbilders wird daraus eine Task erzeugt. Mit Hilfe des Bibliothekars baut der Anwender die Nutzermakro- und Objektmodulbibliotheken auf und verwaltet sie. Universalbibliotheken vom Typ .ULB koennen fuer Text-und andere Dateien organisiert werden. Der Kommandoaufbau und die Bedienung des LBR entsprechen dem allgemeingueltigen Format, das bei den Systemprogrammen ueblich ist. 8.2. Aufbau der Bibliotheksdatei -------------------------------- 8.2.1. Aufteilung innerhalb der Bibliothek ------------------------------------------ Bild 3 zeigt den prinzipiellen Aufbau einer Bibliothek. Eine vom Bibliothekar erzeugte Bibliotheksdatei ist eine Direktzugriffsda- tei auf der Platte im Dateiformat des OMOS 1630. Im weiteren Text wird fuer Bibliotheksdatei der Begriff Bibliothek verwendet. Es werden drei Arten von Bibliotheken unterschieden, Makro- , Objektmodul- und Universalbibliotheken. Makrobibliotheken haben den Standardbibliothekstyp .MLB und ent- halten Makros. Makrodateien, die in eine Makrobibliothek aufge- nommen werden sollen, haben den Typ .MAC. Der Standardbibliothekstyp der Objektmodulbibliothek, die Objekt- moduln beinhaltet, ist .OLB. Objektmoduln, die in eine Bibliothek eingebracht werden sollen, sind in Dateien vom Typ .OBJ enthal- ten. Eine Bibliothek besteht aus einem Bibliothekskopf, einer Ein- trittspunkttabelle (EPT), Modulnamentabelle (MNT), den Biblio- theksmoduln und (gewoehnlich) freiem Raum fuer weitere Eintra- gungen. Die Tabelle der Eintrittspunkte ist bei Makro- und Universalbib- liotheken nicht vorhanden. 152 -------------------------------- | Bibliothekskopf | ---->|------------------------------| Block- | Eintrittspunkttabelle (EPT) | grenzen ---->|------------------------------| | Modulnamentabelle (MNT) | ---->|------------------------------| | Modulkopf 1 | |---- ----| | Modul 1 | |------------------------------| | . | | . | | . | |------------------------------| | Modulkopf n | |---- ----| | Modul n | |------------------------------| | noch nutzbarer | | Bereich | | in der Bibliothek | -------------------------------- Bild 3: LBR - Aufbau einer Bibliothek 8.2.2. Bibliothekskopf ---------------------- Der Bibliothekskopf ist ein Block, der den aktuellen Zustand einer Bibliothek beschreibt. Sein Inhalt wird immer wieder auf den neuesten Stand gebracht, waehrend die Bibliothek modifiziert wird. So kann LBR zu den Informationen zugreifen, die er zur Ausfuehrung seiner Funktionen (z.B. Einfuegen, Loeschen usw.) benoetigt. Fuer Universalbibliotheken wird im Wort 24 (rel. Adresse '56) der Standarddateityp fuer Eingabedateien gespeichert. Aus Bild 4 kann man ersehen, welche Informationen im Bibliotheks- kopf abgespeichert werden. 153 Adresse ------------------------------------------- 0| reserviert | Bibliothekstyp | |-----------------------------------------| 2| Version des Bibliothekars | |-------- --------| 4| (RADIX 50) | |-----------------------------------------| 6| Jahr | |-------- --------| 10| Datum und Zeit Monat | |-------- --------| 12| der letzten Tag | |-------- --------| 14| Einfuegung Stunde | |-------- --------| 16| Minute | |-------- --------| 20| Sekunde | |-----------------------------------------| 22| reserviert |EPT-Elementenlaenge | |-----------------------------------------| 24| rel. Blocknummer des Beginns der EPT | |-----------------------------------------| 26| Anzahl der zugewiesenen EPT-Eintragungen| |-----------------------------------------| 30| noch moegliche EPT-Eintragungen | |-----------------------------------------| 32| reserviert | MNT-Elementenlaenge| |-----------------------------------------| 34| rel. Blocknummer des Beginns der MNT | |-----------------------------------------| 36| Anzahl der zugewiesenen MNT-Eintragungen| |-----------------------------------------| 40| noch moegliche MNT-Eintragungen | |-----------------------------------------| 42| logisch geloeschter und | |-------- --------| 44| nutzbarer Bereich (Bytes) | |-----------------------------------------| 46| physisch zusammenhaengender | |-------- --------| 50| nutzbarer Bereich (Bytes) | |-----------------------------------------| 52| rel. Blockn. fuer d. naechste Eintragung| |-------- --------| 54| erstes freies Byte im Block | |-----------------------------------------| 56| Standarddateityp fuer Eingabedatei | |-----------------------------------------| Bild 4: LBR - Aufbau eines Bibliothekskopfes 154 8.2.3. Eintrittspunkttabelle (EPT) ---------------------------------- Globale Symbole ermoeglichen Bezugnahmen zwischen den einzelnen Objektmoduln, die der Taskbilder zu einer Task verbindet. In einem der zur Verbindung vorgesehenen Moduln muss das globale Symbol definiert sein (internes globales Symbol). Die EPT enthaelt die in einem Objektmodul definierten globalen Symbole. Jedes interne globale Symbol, auch Eintrittspunkt ge- nannt, bewirkt den Aufbau eines EPT-Elementes mit dem Namen des Eintrittspunktes und einem Zeiger zum Modulkopf. Die Eintrittspunkttabelle, die alphabetisch gefuehrt wird, ist bei Makro- und Universalbibliotheken nicht vorhanden. Die EPT wird vom Taskbilder durchsucht, wenn ein Modul durch einen seiner Eintrittspunkte ausgewiesen wird. Das folgende Bild zeigt den Aufbau eines EPT-Elementes: Wort ------------------------ 1 | globales Symbol | |---- ----| 2 | (RADIX 50) | |----------------------| 3 | relative Blocknummer | |----------------------| 4 | Byte im Block | ------------------------ Bild 5: LBR - Aufbau eines EPT-Elementes 8.2.4. Modulnamentabelle (MNT) ------------------------------ Die Modulnamen, abgeleitet von den Assembleranweisungen ".MACRO" bzw. ".TITLE", werden in die MNT eingetragen. Jeder Modulname hat den Aufbau eines MNT-Elementes mit Namen und Zeiger zum eigent- lichen Modul zur Folge. Die MNT wird alphabetisch gefuehrt. Sie wird durchsucht, wenn der Bibliotheksmodul durch seinen Modulna- men ausgewiesen wird. Ein MNT-Element ist ebenfalls 4 Worte lang. Wort ------------------------ 1 | Modulname | |---- ----| 2 | (RADIX 50) | |----------------------| 3 | relative Blocknummer | |----------------------| 4 | Byte im Block | ------------------------ Bild 6: LBR - Aufbau eines MNT-Elementes 155 8.2.5. Modulkopf ---------------- Beim Eintragen eines Moduls in eine Bibliothek wird dem Modul ein Modulkopf vorangestellt. Dieser Modulkopf enthaelt Angaben ueber den Objekt-,Makro-,bzw. Universalmodul. Das Attribut-Byte enthaelt die Information, ob der /SS-Schalter spezifiziert wurde. Bei Verwendung dieses Schalters ist das Bit 1 dieses Bytes gesetzt. Das Status-Byte sagt aus, ob ein Modul geloescht ist oder nicht. Die letzten beiden Worte sind nur bei Objektmoduln definiert belegt. Hier werden die von der Assembleranweisung ".IDENT" abge- leiteten Informationen abgespeichert. Der Modulkopf hat folgenden Aufbau: Wort ------------------------ Wort ------------------------ 1 |Attribute | Status | 9 | wahlfreie | |----------------------| |----- -------| 2 | Laenge des Moduls | 10 | Information 1 | |---- ----| |----------------------| 3 | (Bytes) | 11 | wahlfreie | |----------------------| |----- ------| 4 | Datum der Jahr | 12 | Information 2 | |---- ----| |----------------------| 5 | Einfuegung Monat | 13 | wahlfreie | |---- ----| |----- ------| 6 | des Moduls Tag | 14 | Information 3 | |----------------------| |----------------------| 7 | von .IDENT abgelei- | 15 | wahlfreie | |---- ----| |----- ------| 8 | tete Information | 16 | Information 4 | ------------------------ |----------------------| 17 | Nutzerdatei- | . | attribute | . | | . |----- ------| . | | . | | . | | Bild 7: LBR - Aufbau eines Erweiterung fuer Universal- Modulkopfes bibliotheken Die Erweiterung des Modulkopfes fuer Universalbibliotheken be- steht aus vier wahlfreien Informationen, die jeweils bis zu sechs RADIX-50-Zeichen enthalten koennen, die zur Modulbeschreibung ge- nutzt werden koennen. Die Nutzerdateiattribute werden vom Dateityp und der Versions- nummer der Eingabedatei abgeleitet. 156 8.3. Kommandosyntax ------------------- LBR akzeptiert Befehlszeichenfolgen im allgemeinen Kommandoformat der Systemprogramme des OMOS 1630. Auf den Bibliothekar zuge- schnitten hat das Kommandoformat folgendes Aussehen: outfile[,listfile][=infile[,infile]...] Auch eine einstufige Indirektkommando-Datei ist moeglich: @filespecification Eine Dateispezifikation erfolgt in folgender Form: dev:[g,m]name.type;version[/switch 1.../switch n] Der bzw. die Schalter spezifizieren die Funktionen, die vom Bi- bliothekar ausgefuehrt werden sollen. Einzelne Schalter koennen Argumente, die durch einen Doppelpunkt gekennzeichnet sind, be- sitzen. Die Argumente werden bei den betreffenden Schaltern be- schrieben. Die Sternvereinbarung ist in LBR-Kommandos nicht erlaubt. LBR verwendet fuer die Bedienerkommunikation, Listenausgaben und Dateimanipulationen Pseudogeraete (z.B.: SY0:). Durch Dateispezifikationen bestimmt der Nutzer, mit welchen Da- teien er arbeiten will. Die Dateispezifikation identifiziert eindeutig jede logische Datenmenge und lokalisiert sie. 8.4. Standardannahmen fuer die benutzten Dateien ------------------------------------------------ Bei der Angabe der Ausgabe-, Listen- und Eingabedatei koennen bestimmte Teile der Dateispezifikation weggelassen werden. Fuer sie werden Standardardwerte angenommen. In der folgenden Aufstellung stehen die Standardannahmen, wenn die entsprechenden Angaben in der Dateispezifikation fehlen. dev: Ausgabedatei Es wird das Pseudogeraet SY0: benutzt. Listendatei Das gleiche Geraet, welches fuer die Ausgabedatei spezifiziert wurde. Sonst gilt die Standardannah- me der Ausgabedatei (SY0:). Eingabedatei Fuer die erste Eingabedatei SY0:. Fuer die folgenden wird das gleiche Geraet ange- nommen wie in der vorhergehenden Eingabedateispe- zifikation. Wurde kein Geraet spezifiziert, wird die Standardannahme der vorhergehenden Eingabe- datei wirksam. [g,m] Ausgabedatei Bei fehlender UIC-Angabe wird der durch das MCR- Kommando SET /UIC=[g,m] bestimmte Nutzeridentifi- kationscode benutzt. Ging der Dateispezifikation kein solches Kommando voraus, wird ein system- spezifischer Standard-UIC verwendet. (z.B.:[200,200]) 157 Listendatei Es gilt die gleiche Standardannahme wie bei der Ausgabedatei. Eingabedatei Fuer die erste Eingabedatei gilt sinngemaess die gleiche UFD-Zuordnung wie fuer die Ausgabedatei. Fuer die folgenden Eingabedateien wird der Nut- zerbereich der jeweils vorhergehenden Datei ange- nommen. Fehlt die UFD-Angabe in der vorhergehen- den Eingabedateispezifikation, wird deren Stan- dard-UFD wirksam. name Der Dateiname ist in jedem Falle anzugeben. Fuer ihn existiert kein Standard. type Ausgabedatei Standard ist der Typ .OLB. Mit dem Schalter /DF kann der Standardtyp neu festgelegt werden. Son- derfaelle sind bei der Benutzung der Schalter /CR, /CO und /EX zu beachten. Listendatei .LST Eingabedatei Der Standarddateityp ist von den im LBR-Kommando verwendeten Schaltern abhaengig. Er wird bei der Beschreibung der einzelnen Schalter erlaeutert. version Ausgabedatei Die Version der Ausgabedatei wird um eins er- hoeht, wenn die Schalter /CO, /CR oder /EX ange- geben wurden. Eingabedatei Es wird die letzte Version der Datei ausgewaehlt. /switch Ausgabedatei Einfuegen von Moduln und ihrer Eintrittspunkte in die Bibliothek (/IN und /EP). Listendatei /SP und /LI Eingabedatei Fuer sie existiert keine Standardannahme. 8.5. Schalter ------------- 8.5.1. Zusammenfassende Uebersicht ---------------------------------- Die Tabelle 34 zeigt eine Zusammenstellung aller moeglichen Schalter im LBR-Kommando. In der Tabelle bedeuten: A - Schalter steht bei der Ausgabedatei. E - Schalter steht bei der Eingabedatei. L - Schalter steht bei der Listendatei. * - Datei ist keine Bibliothek. Die in eckigen Klammern angegebenen Schalter gelten standardmaessig. 158 Tabelle 34: LBR - Schalter des Bibliothekars ------------------------------------------------------------ | | Funktion | | Argumente | |----------------------------------------------------------| | /CR | Erzeugen einer | A | :size:ept:mnt:type | | | Bibliothek | | | |------|-------------------------|---|---------------------| | /CO | Verdichten einer | A | :size:ept:mnt | | | Bibliothek | | | |------|-------------------------|---|---------------------| | /DE | Loeschen von Moduln und | A | :modulename | | | ihrer Eintrittspunkte | | | |------|-------------------------|---|---------------------| | /DF | Standardtyp der Biblio- | A | :type | | | thek festlegen | | | |------|-------------------------|---|---------------------| | /DG | Loeschen der Eintritts- | A | :global | | | punkte | | | |------|-------------------------|---|---------------------| |[/EP] | Eintragen von Eintritts-| A | | | | punkten in die EPT | | | | /-EP | Verhindern der Eintra- | E*| | |/NOEP | gung | | | |------|-------------------------|---|---------------------| | /EX | Lesen von Bibliotheks- | E | :modulename | | | moduln und Schreiben | | | | | in eine Datei | | | |------|-------------------------|---|---------------------| |[/IN] | Einfuegen von Moduln | A | beliebig viele | | | in eine Bibliothek | | Eingabedateien | |------|-------------------------|---|---------------------| | /LI | Ausdrucken von Modul- | | | | | namen | | | | /LE | Ausdrucken von Modulna- |A,L| | | | men und Eintrittspunkten| | | | /FU | Modulnamen und | | | | | Modulbeschreibung | | | |------|-------------------------|---|---------------------| | /MH | Modifizieren eines uni- | A | | | | versellen Modulhaeders | | | |------|-------------------------|---|---------------------| | /RP | Austauschen von Moduln | A | | | /-RP | Unterdruecken des | E*| | |/NORP | Austauschmodus | | | |------|-------------------------|---|---------------------| |[/SP] | Auslagern der Liste fuer| | | | | den Druck | L | | | /-SP | Verhindern der Ausla- | | | |/NOSP | gerung | | | |------|-------------------------|---|---------------------| | /SS | Bewirkt auswaehlendes | E | | | | Suchen des Taskbilders | | | |------|-------------------------|---|---------------------| | /SZ | Reduzierung der Makro- | A | | | | quelle | | | | /-SZ | keine Reduzierung | E*| | |/NOSZ | | | | ------------------------------------------------------------ 159 8.5.2. Verdichten (/CO) ----------------------- Der Schalter wird benutzt, um alle logisch geloeschten Saetze physisch zu loeschen. Der gesamte freie Platz wird an das Ende der Datei gelegt. Auf diese Weise wird der freie Platz fuer Ein- tragungen von Moduln nutzbar gemacht. LBR erstellt eine neue Datei. Die alte Bibliotheksdatei bleibt erhalten. Der Verdich- tungsschalter kann nur fuer die Spezifikation der Ausgabedatei verwendet werden. Folgendes Format muss eingehalten werden: outfile/CO[:[size]:[ept]:[mnt]]=infile outfile Ist die Dateispezifikation fuer die Bibliothek, welche die verdichtete Form der Eingabedatei wird. Der standard- maessige Dateityp ist .OLB, falls die Eingabedatei eine Objektmodulbibliothek ist. Handelt es sich bei der Einga- bedatei um eine Makrobibliothek, wird der Dateityp .MLB angenommen, bzw. .ULB, wenn die Eingabedatei eine Univer- salbibliothek ist. /CO Verdichtungsschalter size Laenge der neuen Bibliothek in Bloecken. Standard ist die Laenge der zu verdichtenden Bibliothek. ept Moegliche Zahl der EPT-Eintragungen. Fehlt dieser Para- meter, wird die Zahl der EPT-Eintragungen der Eingabeda- tei als Wert angenommen. mnt Moegliche Zahl der MNT-Eintragungen. Standardwert ist die Zahl der MNT-Eintragungen der Eingabedatei. infile Spezifikation der zu verdichtenden Bibliothek. Der Stan- darddateityp ist .OLB fuer Objektmodulbibliotheken , .MLB fuer Makrobibliotheken und .ULB fuer Universalbib- liotheken. Der aktuelle Dateityp kann mit Hilfe des Schalters /DF bestimmt werden. Sonderfall ---------- Wird eine Objektmodulbibliothek verdichtet, die keine Eintritts- punkttabelle besitzt, erhaelt die verdichtete Form der Bibliothek fuer die EPT den Standardwert von 512 Eintragungen. Soll die Laenge der EPT=0 sein, muss /-EP oder /NOEP auf der Ausgabeseite spezifiziert werden (s. Abschn. 8.5.7.). Beispiel: LBR>BIBLIO/CO:::=BIBLIO ------------------- 160 Es wird eine neue Version der Bibliothek BIBLIO gebildet. Da hinter den Doppelpunkten keine Angaben erfolgten, hat die neue Bibliothek die gleiche Laenge und moegliche Anzahl der EPT- und MNT-Eintragungen wie die urspruengliche Version. In solchen Fael- len, wo keine weiteren Argumentangaben erfolgen, koennen auch die Doppelpunkte entfallen. 8.5.3. Erzeugen (/CR) --------------------- Dieser Schalter wird benoetigt, um eine Bibliothek zu erzeugen. Er kann nur in der Spezifikation fuer die Ausgabedatei erscheinen und hat folgendes Format: outfile/CR[:[size]:[ept]:[mnt]:[type][:infiletype]] outfile Ist die Dateispezifikation fuer die Bibliothek, die neu erstellt wird. Der standardmaessige Bibliothekstyp ist von der Benutzung der Typangabe abhaengig. Bei Objektmo- dulbibliotheken wird der Typ .OLB angenommen , bei Makrobibliotheken der Typ .MLB und bei Universalbiblio- theken der Typ .ULB. /CR Erzeugungsschalter size Laenge der Bibliothek in Bloecken. Standardwert : 100 Bloecke. ept Moegliche Zahl der Eintragungen in die EPT. Der Standard- wert betraegt fuer Objektmodulbibliotheken 512. Fuer Makro- und Universalbibliotheken wird dieser Parameter, unabhaengig von der Angabe, auf Null gesetzt. Will man eine Objektmodulbibliothek ohne Eintrittspunkt- tabelle erstellen, muessen fuer die Anzahl der EPT-Ein- tragungen Null, und zusaetzlich der Schalter /-EP spezi- fiziert werden. Fehlt die Angabe /-EP, nimmt LBR den Standardwert (512.) an. mnt Moegliche Zahl der Eintragungen in das Verzeichnis. Standardwert : 256. Eintragungen. type Typ der Moduln, die in die Bibliothek eingebracht werden sollen. Moegliche Typen sind MAC fuer Makrobibliotheken und OBJ fuer Objektmodulbibliotheken und UNI fuer Univer- salbibliotheken. Standardannahme ist der zuletzt mit dem Schalter /DF spezifizierte Typ. Erfolgte keine Typangabe mittels /DF, wird automatisch der Typ OBJ angenommen. infiletyp Spezifizierung des Eingabetyps fuer Universalbibliothe- ken. Wird dieser Wert nicht angegeben, ist der Standard .UNI. Dieser Wert gilt nicht fuer Objekt- oder Makrobib- liotheken. Falls die angegebenen Werte fuer die EPT oder MNT nicht ein Viel- faches von 64. sind, werden die Verzeichnistabellen bis zur naechsten Blockgrenze ausgedehnt. 161 Beispiel: LBR>MBIBLI/CR:::64:MAC=MDAT1,MDAT2,MDAT3 ------------------------------------ Dieses Kommando bewirkt die Ausfuehrung mehrerer Schritte. 1) Es wird die Bibliothek MBIBLI.MLB auf SY0: in dem vereinbarten Nutzerbereich gebildet. Sie hat folgende Attribute: Laenge = 100 Bloecke EPT = keine (Makrobibliothek) MNT = 64 Modulnamen Typ = .MLB Da die einzufuegenden Moduln vom Typ .MAC sind, ist der Standard- bibliothekstyp .MLB. Die Typangabe MAC legt gleichzeitig den Standardtyp der Eingabedateien fest. 2) Da der Standardschalter /IN gilt, werden die Makros von MDAT1.MAC, MDAT2.MAC und MDAT3.MAC in die neu gebildete Bibliotheksdatei eingefuegt. Die Verwendung beim Aufbau von Objektmodulbibliotheken ist aequi- valent. Bei der Angabe des Argumentes OBJ hinter dem Doppelpunkt wird eine Objektmodulbibliothek erzeugt, und die Moduln der Objektdateien MDAT1.OBJ, MDAT2.OBJ und MDAT3.OBJ werden einge- fuegt. 8.5.4. Loeschen von Moduln (/DE) -------------------------------- /DE wird benutzt, um Moduln und ihre zugehoerigen Eintrittspunk- te aus einer Bibliothek zu loeschen. Wenn LBR beginnt, den Schal- ter /DE zu bearbeiten, druckt er folgenden Text auf dem Bedien- geraet aus: MODULES DELETED: Nach dem logischen Loeschen der Moduln werden ihre Namen ausge- druckt. Diese Moduln sind nicht mehr erreichbar, aber physisch noch vorhanden. Um Moduln physisch aus der Bibliothek zu beseitigen und den frei- gemachten Platz nutzbar zu machen, muss man die Bibliothek ver- dichten ( /CO ). Der wiederzugewinnende Platz in der Bibliothek wird bei Benutzung der Listenschalter in der Form RECOVERABLE DELETED SPACE: XXXXX WORDS ausgewiesen. Die Form fuer die Spezifizierung des Loeschschalters ist fol- gende: outfile/DE:modulename[:modulename]... outfile Dateispezifikator fuer die Bibliothek 162 /DE Loeschschalter modulename Name des Moduls, der geloescht werden soll. Wird ein Modulname angegeben, der in der Bibliothek nicht exis- tiert, erscheint auf dem Bediengeraet eine Fehlermeldung. Die Bearbeitung der entsprechenden Kommandozeile wird abgebrochen. LBR--*FATAL*-NO MODULE NAMED "name" Beispiel: LBR>OBIBLI/DE:ODAT1:ODAT2:ODAT3 --------------------------- MODULES DELETED: ODAT1 ODAT2 ODAT3 Es werden die Moduln ODAT1, ODAT2 und ODAT3 und ihre zugehoerigen Eintrittspunkte aus der letzten Version der Bibliothek OBIBLI.OLB von SY0: logisch geloescht. Diese Moduln sind fuer das Verdichten markiert. 8.5.5. Typfestlegung einer Bibliothek (/DF) ------------------------------------------- Der Schalter wird benutzt, um den Standardbibliothekstyp zu definieren. Durch die Argumentangabe OBJ wird der Typ der Bibli- othek standardmaessig .OLB. Gibt man MAC als Argument an, ist .MLB Standardbibliothekstyp und wird UNI angegeben, ist .ULB Standardbibliothekstyp. Erfolgt keine Spezifizierung der Typangabe mittels des Schalters /DF, nimmt LBR den Typ OBJ an und damit fuer die Bibliothek den Typ .OLB. Durch die Anwendung von /DF kann die Notierung der LBR- Kommandos vereinfacht werden. Es ist darauf zu achten, dass die standardmaessige Typfestlegung nur auf den Namen der Datei wirkt, die zur Bearbeitung eroeffnet wird. Der wirkliche Dateityp wird aus dem Bibliothekskopf der zu behandelnden Bibliothek entnommen. Folgende Standards werden angenommen: 1) /DF ermoeglicht eine standardmaessige Typfestlegung fuer den Dateinamen der zu eroeffnenden Bibliothek. Fuer Makrobiblio- theken ist der Typ .MLB Standard und fuer Objektmodulbiblio- theken .OLB. Ausnahmen sind bei der Anwendung der Schalter /CO und /CR angegeben. 2) Beim Verdichten sind die Ein- und Ausgabedatei Bibliotheken. Die Standardannahme gilt fuer die zu verdichtende Bibliothek, also die Eingabedatei. 3) Beim Erzeugen von Bibliotheken wird das Argument fuer die Typangabe durch den Schalter /DF festgelegt. Erfolgt also hinter dem entsprechenden Doppelpunkt keine Typangabe, wird der durch /DF spezifizierte Typ angenommen. Diese Angabe des Argumentes bestimmt wiederum die standardmaessige Typfest- legung fuer den Dateinamen der Bibliothek. 163 Form fuer die Spezifizierung: [outfile]/DF[:type] outfile Angabe der Bibliothek, die auch entfallen kann. /DF Schalter zur Festlegung des Standardtyps. type OBJ fuer Objektmodulbibliotheken und MAC fuer Makrobibli- otheken. Fehlt die Typangabe, arbeitet LBR so, als ob die Angabe OBJ erfolgte. Bei fehlerhafter Angabe des Typs, d.h. weder MAC noch OBJ, er- scheint auf dem Bediengeraet folgende Fehlermeldung: LBR--*FATAL*-INVALID LIBRARY TYPE SPECIFIED Anschliessend gilt der Standardtyp OBJ. Beispiele: 1) LBR>/DF:MAC ------- LBR>BIBL/CR ------- Es wird die Makrobibliothek BIBL.MLB erzeugt. 2) LBR>/DF:MAC ------- LBR>BIBL/CR::::OBJ -------------- Es wird die Objektmodulbibliothek BIBL.OLB erzeugt. Durch die Typangabe OBJ wird der Standardtyp .MAC ueberschrieben. 3) LBR>DF:OBJ ------ LBR>X/CO=BIBL --------- Fuer das Verdichten wird die Bibliothek BIBL.OLB eroeffnet. Ist diese wirklich eine Objektmodulbibliothek, wird die Datei X.OLB gebildet. X.OLB ist die verdichtete Form von BIBL.OLB. Es besteht aber auch die Moeglichkeit, dass BIBL.OLB eine Makrobibliothek ist (keine standardgemaesse Verwendung des Typs .OLB). In diesem Fall wuerde die Bibliothek X.MLB gebildet werden. 8.5.6. Loeschen globaler Symbole (/DG) -------------------------------------- Mit Hilfe dieses Schalters koennen Eintrittspunkte (globale Sym- bole) der EPT geloescht werden. Dieses Kommando beeinflusst nicht die Objektmoduln. Wenn LBR die Bearbeitung des Schalters /DG beginnt, druckt er auf dem Bedien- geraet die Mitteilung ENTRY POINTS DELETED: aus. Danach erfolgt die Ausgabe der geloeschten Eintrittspunkte. 164 Format: outfile/DG:global[:global]... outfile Spezifikation der Bibliothek. /DG globaler Loeschschalter global Name des Eintrittspunktes, der geloescht werden soll. Beispiel: LBR>LIBRARY/DG:ALPHA:BETA:GAMMA --------------------------- ENTRY POINTS DELETED: ALPHA BETA GAMMA Die Eintrittspunkte (globale Symbole) ALPHA, BETA und GAMMA werden aus der letzten Version der Bibliothek SY0:[200,200]LIBRARY.OLB geloescht, wobei die Standardannahmen SY0: fuer das Geraet und [200,200] fuer den UIC gelten. 8.5.7. Eintrittspunktschalter (/EP) ----------------------------------- Durch diesen Schalter koennen die Eintragungen in das Verzeichnis der Eintrittspunkte (EPT) geregelt werden (Eintragen oder Ein- tragung verhindern). Der Schalter kann in positiver oder negativer Form spezifiziert werden. Die positive Form bewirkt das Eintragen aller Eintrittspunkte eines Moduls in die EPT. Die negative Form (/-EP oder NOEP) sorgt dafuer, dass ein Modul in eine Bibliothek eingetragen wird, waehrend seine Eintritts- punkte nicht eingetragen werden. Falls der Schalter nicht spezifiziert wurde, werden alle Ein- trittspunkte in die EPT eingetragen (Standard). Auf Makro- und Universalbibliotheken hat der Schalter keine Wirkung. Die Ob- jektmoduln selbst werden durch diesen Schalter nicht beeinflusst. Es wird zwischen dem lokalen und globalen Format unterschieden. Beim lokalen Format hat der Schalter nur auf die Eingabedatei eine Wirkung,bei der er steht. Globales Format: outfile[/EP]=infile[,infile]... outfile/-EP=infile[,infile]... outfile/NOEP=infile[,infile]... Lokales Format: outfile=infile/EP[,infile/EP]... outfile=infile/-EP[,infile/-EP]... outfile=infile/NOEP[,infile/NOEP]... 165 outfile Spezifikation der Bibliothek. Bei Anfuegen des Schalters an diese Dateispezifikation werden saemtliche Eintritts- punkte aller Moduln der Eingabedateien in die EPT einge- tragen (/EP) bzw. das Eintragen aller dieser Eintritts- punkte wird unterdrueckt (/-EP). infile Spezifikation der Eingabedatei. Bei Anfuegen des Schal- ters an die Eingabedatei werden alle Eintrittspunkte dieser Eingabedatei eingefuegt (/EP) bzw. das Eintragen in die EPT der Bibliothek wird verhindert (/-EP). /-EP ist hinreichend fuer das Eintragen von Moduln, die Ein- trittspunktnamen besitzen, die bereits von anderen Moduln in die Eintrittspunkttabelle (EPT) eingetragen wurden. Diese Moduln koennen ohne Eintragen der Eintrittspunkte in die Bibliothek eingefuegt werden. Wird trotzdem versucht, einen Modul mit einem in der Bibliothek bereits existierenden Eintrittspunktnamen einzufuegen, erfolgt auf dem Bediengeraet die Ausschrift: LBR--*FATAL*-DUPLICATE ENTRY POINT NAME "name" IN filename Die Bearbeitung des LBR-Kommandos wird abgebrochen. Sucht der Taskbilder in einer Objektmodulbibliothek die benoetig- ten Moduln mit Hilfe der Modulnamen, ist eine Eintrittspunktta- belle nicht erforderlich (siehe Benutzung des /LB-Schalters im TKB 1630(OMEX) ). In solch einem Fall kann beim Einfuegen von Moduln /-EP benutzt werden. 8.5.8. Herausloesen von Moduln (/EX) ------------------------------------ /EX wird benutzt, um einen oder mehrere Moduln aus einer Biblio- thek herauszuloesen und sie in eine spezifizierte Ausgabedatei zu schreiben. Die Extraktoperation hat keine Wirkung auf die Bibliotheksdatei, deren Modul bzw. Moduln mit Hilfe von /EX herausgezogen wurden. Diese Datei bleibt unveraendert erhalten. Falls keine Moduln in der Kommandokette spezifiziert wurden, werden alle Moduln der Bibliothek herausgeloest und alphabetisch geordnet in der Ausgabedatei aneinandergereiht. /EX kann nur an den Eingabedateispezifikator angefuegt werden. Bei Universalbib- liotheken kann nur ein Modul herausgeloest werden. Format fuer die Spezifizierung: outfile=infile/EX[:modulename]... outfile Dateispezifikator fuer die Datei, in welcher die heraus- geloesten Moduln aufbewahrt werden. Der Standarddateityp ist .OBJ, falls die Eingabemoduln Objektmoduln sind und .MAC, falls die Eingabemoduln Makrodefinitionen sind. Bei Universalbibliotheken entspricht der Standarddateityp dem des herausgezogenen Moduls. Die Ausgabedatei ist keine Bibliothek. 166 infile Spezifiziert die Bibliothek, aus welcher die Moduln herausgeloest werden. Der Standarddateityp ist entweder .OLB, .MLB oder .ULB, abhaengig vom augenblicklichen Bibliothekstyp. /EX Extraktschalter modulename Name des Moduls, der aus der Bibliothek herausgeloest werden soll. Beispiele: LBR>DATEI=SYSLIB/EX:ABCDE:FGHIJ:KLMNO --------------------------------- Die Moduln ABCDE, FGHIJ und KLMNO werden aus der Bibliothek SYSLIB.OLB gelesen und verkettet in die Datei DATEI.OBJ geschrie- ben. LBR>TI:=[1,1]OMOS.SML/EX:EXIT ------------------------- Der Makro EXIT wird aus der Makrobibliothek gelesen und auf dem Bediengeraet ausgeschrieben. LBR>KBIBL.XXX=BIBL/EX ----------------- Alle Moduln der Bibliothek BIBL.OLB werden alphabetisch geordnet in die Datei KBIBL.XXX geschrieben. Da der Typ der Datei nicht ueberwacht wird, kann eine beliebige Typangabe erfolgen. 8.5.9. Einfuegen von Moduln (/IN) --------------------------------- Der Einfuegemodus ist Standard. /IN braucht nicht angegeben zu werden. In eine vorhandene Bibliothek werden Moduln eingefuegt. Bei Makrobibliotheken werden nur die Makros aus einer Eingabeda- tei herausgeloest. Alle anderen Texte werden ignoriert. Die An- zahl der Eingabedateien ist beliebig. outfile[/IN]=infile[,infile]... outfile In diese Bibliothek werden die Eingabemoduln eingefuegt. Der Standarddateityp ist abhaengig von der Benutzung des Schalters /DF. /IN Einfuegungsschalter infile Dateispezifikator der Eingabedatei, die Moduln enthaelt, die in die Bibliothek eingefuegt werden. Der standard- maessige Dateityp ist .OBJ, falls es sich um eine Objekt- modulbibliothek handelt, und .MAC, wenn es eine Makrobi- bliothek ist. 167 Wird versucht, Moduln einzufuegen, die bereits in der Ausgabeda- tei existieren, erfolgt eine Fehlermeldung, und die Bearbeitung des Kommandos wird abgebrochen. DUPLICATE MODULE NAME "name" IN filename Die Bearbeitung des LBR-Kommandos wird ebenfalls abgebrochen, wenn ein Eingabemodul einen Eintrittspunktnamen besitzt, der schon in der EPT der Bibliothek enthalten ist. DUPLICATE ENTRY POINT "name" IN filename Beispiel: LBR>BIBLIO=DAT1,DAT2 ---------------- Die Moduln, die sich in den letzten Versionen der Dateien DAT1 und DAT2 befinden, werden in die Bibliothek BIBLIO mit der hoechsten Versionsnummer eingefuegt. Die Dateien und die Biblio- thek befinden sich im zugewiesenen UFD auf der Platte SY0:. Wurde mit /DF kein Typ festgelegt, wird als Standard .OLB ange- nommen. In diesem Fall ist der Standarddateityp fuer DAT1 und DAT2 .OBJ. Handelt es sich um eine Makrobibliothek, wird voraus- gesetzt, dass die Moduln der Dateien DAT1.MAC und DAT2.MAC ein- gefuegt werden sollen. Hinweis: /EX darf hier bei der Eingabedatei nicht stehen. 8.5.10. Einfuegen von Moduln (/IN) fuer Universalbibliotheken ------------------------------------------------------------- Wird eine Datei in eine Universalbibliothek eingefuegt, ist der /IN-Schalter bei der Eingabedatei anzugegeben. Als Parameter koennen der Modulname sowie 4 wahlfreie Parameter angegeben wer- den. Kommandoformat: outfile=infile[/IN[:[modul]:[op]:[op]:[op]:[op]]] outfile Dateispezifikation,in welche infile eingefuegt werden soll infile Dateispezifikation, welche in outfile eingefuegt wer- den soll /IN Einfuegungsschalter modul Modulname der einzufuegenden Datei(max. 6 RADIX-50- Zeichen).Standard sind die ersten 6 Zeichen der Ein- gabedateispezifikation. op wahlfreie Parameter zur Modulbeschreibung(max.6 RA- DIX-50-Zeichen).Standardwert ist Null. Wird nur ein Teil der Parameter angegeben, muessen alle vorherge- henden Doppelpunkte angegeben werden. 168 Beispiel: LBR>BIBLIO.ULB=ANLB.TXT/IN:MODA:ANL:FUER:DEN:BEDIEN Die Datei ANLB.TXT wird in die Universalbibliothek BIBLIO.ULB unter dem Namen MODA eingefuegt. Die Parameter "ANL", "FUER", "DEN" und "BEDIEN" werden im Modulkopf in die Felder fuer die wahlfreien Informationen eingetragen und dienen der Modulbe- schreibung. 8.5.11. Listenschalter (/LI, /LE, /FU) -------------------------------------- Sie werden zur Ausgabe des Bibliotheksverzeichnisses verwendet. Drei Schalter gestatten es, den Listentyp anzuweisen, der ge- wuenscht wird. /LI Erzeugt eine Liste aller Modulnamen einer Bibliothek. /LE Erzeugt eine Liste aller Modulnamen einer Bibliothek und ihre zugehoerigen Eintrittspunkte. /FU Erzeugt eine Liste aller Modulnamen einer Bibliothek und erstellt eine Modulbeschreibung fuer jeden Modul (z.B. Laenge und Datum der Eintragung). /LI gilt standardmaessig, wenn eine Listendatei angegeben ist oder ein anderer Listenschalter im Kommando steht. outfile[,listfile][/switch]... outfile Spezifikation der Bibliothek, deren Inhalt protokolliert werden soll. listfile Spezifikator, der wahlweise angegeben werden kann. Falls er nicht gegeben wird, erfolgt eine Listenausgabe auf dem Bediengeraet. /switch Es kann einer der drei Schalter oder eine beliebige Kom- bination dieser Listenschalter (/LI,/LE,/FU) angegeben werden. Bei allen drei Listenschaltern wird folgende Kopfinformation ausgegeben: DIRECTORY OF FILE name type MODULE LIBRARY CREATED BY: v version LAST INSERT OCCURRED datum AT uhrzeit MNT ENTRIES ALLOCATED: a; AVAILABLE: b EPT ENTRIES ALLOCATED: c; AVAILABLE: d FILE SPACE AVAILABLE: xxxxx WORDS RECOVERABLE DELETED SPACE: yyyyy WORDS Die letzte Zeile der Kopfinformation erscheint nur, wenn in der entsprechenden Bibliothek Moduln geloescht worden sind bzw. Aus- tauschoperationen erfolgten. Mit yyyyy wird der Platz ausgewie- sen, der durch Verdichten der Bibliothek wieder nutzbar gemacht werden kann. 169 Weiter bedeuten: type Dafuer steht MACRO , OBJECT oder UNIVERSAL. name Name der Bibliothek. version Version des LBR, mit dem die entsprechende Bibliothek erzeugt wurde. Stimmt diese Versionsnummer nicht mit der des aktuellen LBR ueberein, erscheint zusaetzlich in Klammern eingefasst die aktuelle Versionsnummer. a,b,c,d Dezimalzahlen, die die Laengen der MNT und EPT und deren Belegungen angeben. xxxxx Dezimalzahl, die den noch freien Platz fuer weitere Ein- tragungen von Moduln bzw. Austauschoperationen angibt. Beispiel: LBR>DK1:[100,20]BIBLIO,LP:/LE/FU ---------------------------- Eine Liste aller Modulnamen, die Eintrittspunkte und die Be- schreibung der einzelnen Moduln wird auf dem Drucker LP0: ausge- geben. 8.5.12. Modulheadermodifikation (/MH) ------------------------------------- Dieser Schalter gilt nur fuer Moduln von Universalbibliotheken. Es werden die wahlfreien Parameter der Modulbeschreibung modi- fiziert. Kommandoformat : outfile/MH:modul:[op]:[op]:[op]:[op] outfile Dateispezifikation einer universellen Bibliothek. Standard ist .ULB. /MH Modifikationsschalter fuer Modulhaeder modul Name des Modul,dessen wahlfreie Informationen mo- difiziert werden sollen. op Wahlfreie Parameter zur Modulbeschreibung(max.6 RADIX-50-Zeichen). Ausgelassene Parameter aendern das Feld nicht, # loescht das entsprechende In- formationsfeld (s. 8.5.10.). 170 8.5.13. Austauschen von Moduln (/RP) ------------------------------------ Der Schalter /RP wird benutzt, um Moduln einer Bibliothek mit Moduln gleichen Namens auszutauschen. Findet LBR den gleichen Modulnamen in der Bibliothek, wird dieser Modul logisch ge- loescht. Bei Objektmodulbibliotheken werden ausserdem alle Ein- trittspunkte dieses Moduls entfernt. Der alte Modul befindet sich physisch noch in der Bibliothek. Er ist mit einem Kennzeichen versehen, dass er geloescht ist. Der wiederzugewinnende Platz in der Bibliothek wird bei Benutzung der Listenschalter ausgewiesen . Der neue Modul wird, beginnend mit dem 1. freien Platz, in die Bibliothek eingefuegt. Das Austauschen von Moduln mit Eintritts- punkten, die schon in der EPT enthalten sind, ist nicht moeglich. Dieser Umstand fuehrt immer zum Fehler. Ist ein Modul ausgetauscht, erfolgt auf dem Bediengeraet die Meldung: MODULE "name" REPLACED Falls der auszutauschende Modul nicht in der Bibliothek vorhanden ist, wird der Modul ohne Mitteilung in die Bibliothek eingefuegt, da standardmaessig der Einfuegemodus (/IN) gilt. Der Schalter /RP kann in 2 Formen spezifiziert werden. Globales Format --------------- /RP wird an die Ausgabedatei, die eine Bibliothek ist, angefuegt. Alle Moduln der Bibliothek werden durch gleichnamige Moduln aller Eingabedateien ersetzt, und Moduln, die noch nicht in der Bibli- othek existieren, werden eingefuegt. outfile/RP=infile[,infile]... outfile Dateispezifikator der Bibliothek. Der Standarddateityp haengt von der jeweiligen Festlegung mit dem Schalter /DF ab. Bei Objektmodulbibliotheken ist es der Typ .OLB und bei Makrobibliotheken .MLB. /RP Austauschschalter infile Spezifikation fuer die Datei, welche Moduln enthaelt, die in der Bibliothek ausgetauscht werden. Fehlt die Angabe des Dateityps, wird der Typ entsprechend der Ausgabeda- tei angenommen. Bei einer Objektmodulbibliothek ist .OBJ Standard, waehrend es bei einer Makrobibliothek der Typ .MAC ist. Dieses globale Format ermoeglicht es, eine Liste von Eingabeda- teien zu spezifizieren, ohne an jede von ihnen /RP anfuegen zu muessen. Um die globale Funktion fuer eine bestimmte Datei un- wirksam zu machen, wird /-RP oder /NORP an die gewuenschte Ein- gabedatei angefuegt. Damit wird LBR angewiesen, die Moduln der so spezifizierten Datei ohne Austausch einzufuegen. 171 Lokales Format -------------- /RP wird an die Eingabedateispezifikation angefuegt. Es kommt nur die Eingabedatei in Betracht, bei der /RP steht. outfile=infile/RP[,infile/RP]... outfile=infile/-RP[,infile/-RP]... outfile Spezifikation der Bibliothek. Der Standarddateityp ist der gleiche wie beim globalen Format. infile Angabe der Datei, die Moduln enthaelt, die in die Biblio- thek eingefuegt bzw. ausgetauscht werden sollen. Fuer den Typ der Datei gilt das gleiche wie beim globalen Format. /RP Angabe der positiven oder negativen Form (/-RP,/NORP) des Schalters. Das lokale Format des Schalters ueberschreibt den Standardmodus, das Einfuegen von Moduln. Zuerst wird die Moeglichkeit des Austauschens betrachtet. An zweiter Stelle erfolgt das automatische Einfuegen, wenn ein Modul mit gleichem Namen in der Bibliothek nicht existiert. Beispiele: Angenommen, die folgenden Dateien seien im vorher zugewie- senen Nutzerbereich bzw. im Standard-UFD des Nutzerstandard- geraetes SY0: gespeichert. Von diesem Anfangszustand wird in den weiteren Beispielen ausgegangen. Die Tabelle 35 zeigt den Inhalt der Bibliothek und die Tabelle 36 die Eingabedateien mit ihren Moduln. Tabelle 35: LBR - Moduln der Bibliothek ----------------------------- | Bibliothek | Modul | |---------------------------| | BIBLIO.OLB;1 | ADATEI | | | BDAT1 | | | BDAT2 | | | CDAT1 | | | CDAT2 | ----------------------------- Tabelle 36: LBR - Eingabedateien und ihre Moduln ----------------------------- | Dateiname | Modul | |---------------------------| | ADATEI.OBJ;1 | ADATEI | |---------------------------| | BDAT.OBJ;1 | BDAT1 | | | BDAT2 | | | BDAT3 | |---------------------------| | CDAT.OBJ;1 | CDAT1 | | | CDAT2 | | | CDAT3 | |---------------------------| | DDAT.OBJ;1 | DDAT1 | | | DDAT2 | ----------------------------- 172 1) LBR>BIBLIO/RP=ADATEI,BDAT,CDAT -------------------------- MODULE "ADATEI" REPLACED MODULE "BDAT1" REPLACED MODULE "BDAT2" REPLACED MODULE "CDAT1" REPLACED MODULE "CDAT2" REPLACED Hier wird das globale Format des Schalters /RP angewendet. Die Objektmoduln der Bibliothek BIBLIO.OLB;1 wurden durch die Moduln mit gleichem Namen aus den Eingabedateien ausgetauscht. Nach Abarbeitung des Kommandos hat die Bibliothek folgenden Inhalt: ADATEI BDAT1 BDAT2 BDAT3 * (* eingefuegte Moduln) CDAT1 CDAT2 CDAT3 * Die gekennzeichneten Moduln existieren vor Ausfuehrung des Kommandos nicht in der Bibliothek, aber in den Eingabedateien. LBR fuegt sie automatisch, ohne Mitteilung, in die Bibliothek ein. 2) LBR>BIBLIO=DDAT,ADATEI/RP --------------------- MODULE "ADATEI" REPLACED In diesem Beispiel wird das lokale Format von /RP benutzt. Die resultierende Bibliothek BIBLIO.OLB hat nach der Abarbeitung des Kommandos folgenden Inhalt: ADATEI ** BDAT1 (* eingefuegte Moduln) BDAT2 (** ausgetauschte Moduln) CDAT1 CDAT2 DDAT1 * DDAT2 * Die Objektmoduln der Datei DDAT.OBJ werden eingefuegt, da der Einfuegemodus standardmaessig gilt. Der Modul ADATEI der Datei ADATEI.OBJ wird ausgetauscht. 173 3) LBR>BIBLIO/RP=ADATEI,BDAT,CDAT,DDAT/NORP ------------------------------------ MODULE "ADATEI" REPLACED MODULE "BDAT1" REPLACED MODULE "BDAT2" REPLACED MODULE "CDAT1" REPLACED MODULE "CDAT2" REPLACED Nach der Eingabe des LBR-Kommandos werden die ausgetauschten Moduln auf dem Bediengeraet protokolliert. In diesem Beispiel wird /NORP, identisch mit /-RP, benutzt, um das globale Format des Austauschschalters fuer die Datei DDAT.OBJ unwirksam zu machen. Diese Eingabedatei wird als Datei behandelt, deren Moduln nur eingefuegt werden. Wuerden die Moduln DDAT1 und DDAT2 schon in der Bibliothek existieren, kaeme es zu einer Fehlermeldung und zum Abbruch der Kommandobearbeitung (siehe Beispiel 4). Die resultierende Bibliothek hat folgendes Aussehen: ADATEI BDAT1 BDAT2 BDAT3 * CDAT1 CDAT2 CDAT3 * DDAT1 % DDAT2 % Die Moduln BDAT3 und CDAT3 , gekennzeichnet mit * , wurden standardmaessig eingefuegt, da sie vorher in der Bibliothek nicht existierten. Fuer die Datei DDAT.OBJ mit ihren Moduln DDAT1 und DDAT2 galt nur der Einfuegemodus (%). 4) LBR>BIBLIO/RP=ADATEI,BDAT/-RP,DDAT ------------------------------ MODULE "ADATEI" REPLACED LBR--*FATAL*-DUPLICATE MODULE "BDAT1" IN BDAT.OBJ;1 In diesem Beispiel wird das globale Format, Austauschmodus fuer alle Eingabedateien, fuer die Eingabedatei BDAT.OBJ auf- gehoben. Nach dem Austausch des Moduls ADATEI erfolgt eine Fehlermeldung auf dem Bediengeraet. Die Spezifizierung der Datei BDAT.OBJ erfolgte so, dass ihre Moduln nicht ausge- tauscht, sondern nur eingefuegt werden sollten. Es existierten aber bereits Moduln gleichen Namens in der Bibliothek. Deshalb wird die Bearbeitung der obigen Kommandozeile beim ersten schon vorhandenen Modul abgebrochen. 174 8.5.14. Austauschen von Moduln (/RP) in Universalbiblotheken ------------------------------------------------------------ Beim Austauschen von Moduln in Universialbibliotheken kann der /RP-Schalter global oder lokal verwendet werden. globales Kommandoformat: outfile /RP:[modul]:[op]:[op]:[op]:[op]=infile 1 [,infile 2 ...] lokales Kommandoformat: outfile=infile 1 /RP:[modul]:[op]:[op]:[op]:[op],infile 2 ...] outfile Dateispezifikation der Universalbibliothek infile Dateispezifikation, welche die Austauschmoduln ent- haelt. /RP Austauschschalter modul Modulname ( max. 6 RADIX-50-Zeichen). Standardwert sind die ersten 6 Zeichen des infile-Namens. op Wahlfreie Parameter zur Modulbeschreibung (max.6 RADIX-50-Zeichen). Standardwert ist Null. Wird nur ein Teil der Parameter angegeben, muessen alle vor- hergehenden Doppelpunkte angegeben werden ( siehe 8.5.10.). 8.5.15. Spool-Schalter (/SP) ---------------------------- Der Spool-Schalter bewirkt das Drucken der Listendatei. Die Aus- gabe der Listendatei erfolgt nach automatischer Aktivierung des Print-Spoolers. Durch die Angabe von /-SP bzw. /NOSP unterbleibt die Aktivierung, so dass die Listendatei, die sich auf der Platte befindet, nicht gedruckt wird. Der Inhalt der Listendatei wird durch die wahlweise Angabe von /LI, /LE oder /FU bestimmt, wobei /LI standardmaessig benutzt wird. Kommandoformat: outfile,listfile[/SP] oder outfile,listfile/-SP outfile Bibliothek listfile Listendatei 175 8.5.16. Auswahlsuch-Schalter (/SS) ---------------------------------- Durch diesen Schalter wird im 1. Wort des Modulkopfes eines Objektmoduls das bit 1 des hoeherwertigen Bytes gesetzt (s. Abschn. 8.2.5.). Fuer Makromoduln ist dieser Schalter bedeutungs- los. Der Schalter kann nur an Eingabedateien angefuegt werden, die fuer die Einfuege- oder Austauschoperation vorgesehen sind. Er gilt fuer alle Moduln einer Eingabedatei. Objektmoduln einer Bibliothek, die mit dem o.g. Kennzeichen versehen sind, rufen eine Sonderbehandlung durch den Taskbilder hervor. Interne globale Symbole (Eintrittspunkte), die mit diesem spezi- ellen Kennzeichen versehen sind, werden in die Symboltabelle des Taskbilders nur eingefuegt, wenn vorher durch andere Moduln auf sie Bezug genommen wurde. Auf diese Weise reduziert sich die Zeit fuer das Bilden der Task. /SS sollte nur fuer die Moduln angewendet werden, die nur absolu- te Symboldefinitionen enthalten (keine verschieblichen). Weitere Informationen sind in Kapitel 9. (TKB) enthalten. Kommandoformat: outfile=infile/SS[,infile/SS]... outfile Spezifikation der Objektmodulbibliothek. infile Die Moduln dieser Eingabedatei werden beim Einfuegen in die Bibliothek mit dem speziellen Kennzeichen versehen, das durch den Taskbilder ausgewertet wird. 8.5.17. Beseitigen nichtsignifikanter Zeichen aus Makromoduln im Quelltextformat (/SZ) ------------------------------------------------- Der Schalter wird benutzt, um die Laenge der Makroquellen durch Beseitigen aller noch vorhandenen Leerstellen, Tabulatoren, Leer- zeilen und Kommentare in Makrotexten zu verringern. Er hat keine Wirkung auf Objektmodulbibliotheken. Die Spezifizierung kann in einer der beiden folgenden Formen durchgefuehrt werden: -Globales Format Der Schalter wird an den Ausgabedateispezifikator angefuegt. Es wird angenommen, dass alle Eingabedateien Moduln enthalten, die gekuerzt werden koennen. outfile/SZ=infile[,infile]... -Lokales Format Der Schalter wird an den Eingabedateispezifikator angefuegt. Nur die Moduln der Eingabedateien, bei denen /SZ steht, werden ver- dichtet. outfile=infile/SZ[,infile/SZ]... 176 Um die globale Funktion fuer eine spezielle Eingabedatei wir- kungslos zu machen, wird /-SZ oder /NOSZ an den gewuenschten Eingabedateispezifikator angefuegt. Diese spezielle Datei wird dann nicht verdichtet. 8.6. Kombinieren von Funktionen des Bibliothekars ------------------------------------------------- Mit Ausnahmen koennen mehrere Bibliotheksfunktionen in einer Kommandozeile aufgerufen werden. Ausnahmen: - /CO darf nur mit /LI kombiniert werden. - /CR und /DE koennen nicht in der gleichen Kommandozeile spezifiziert werden. - /EX kann nur allein in einer Kommandozeile auftreten. Die Funktionen werden in folgender Reihenfolge ausgefuehrt: 1) /DF 2) /CR 3) /DE 4) /DG 5) /MH 6) /IN,/RP,/SZ,/SS,/EP 7) /CO 8) /EX 9) /LI,/LE,/FU,/SP Beispiel: LBR>LIBRARY/DE:MODUL1:MODUL2,LP:/LE/FU=DATEI1,DATEI2/RP,DAT/-EP ----------------------------------------------------------- Folgende Funktionen des Bibliothekars werden ausgefuehrt: 1) Die Moduln MODUL1 und MODUL2 und ihre Eintrittspunkte werden aus der Bibliothek LIBRARY.OLB geloescht. Hierbei wird ange- nommen, dass der Standardtyp .OBJ gilt. 2) Alle Moduln der Eingabedateien DATEI1.OBJ, DATEI2.OBJ und DAT.OBJ werden in die Bibliothek eingefuegt. Zusaetzlich gilt fuer die Moduln der Datei DATEI2.OBJ der Austauschmodus. Die globalen Symbole der einzelnen Moduln der Datei DAT.OBJ werden nicht in die EPT der Bibliothek eingetragen. 3) Nach Beendigung aller anderen Operationen werden die Funktio- nen der drei Listenschalter ausgefuehrt. Auf dem Drucker LP0: wird der neue Inhalt der Bibliothek ausgegeben. 177 8.7. Fehlerbehandlung --------------------- 8.7.1. Fehlerarten ------------------ Waehrend der Bibliothekar arbeitet, koennen Stoerungen auftreten. LBR reagiert darauf mit Fehlermeldungen. LBR unterscheidet dia- gnostische und zum Abbruch fuehrende Fehler. Bei diagnostischen Fehlermeldungen wird die Kommandoabarbeitung fortgesetzt. Diagnostische Mitteilungen werden auf dem Bediengeraet im Format LBR--*DIAG*-mitteilung ausgegeben. Zum Abbruch fuehrende Fehlermeldungen beschreiben eine vorhandene Sachlage, die LBR veranlasst, die Bearbeitung des Kommandos abzu- brechen. Ist dies der Fall, kehrt LBR nach der Fehlerausschrift zur hoechsten Stufe der Kommandoeingabe zurueck. Z.B. kann der Fehler als Folge eines MCR-Kommandos auftreten: >LBR command-line Der Bibliothekar gibt die zum Abbruch fuehrende Meldung aus, und die Kommandoeingabe geht an MCR zurueck. Ein Fehler kann auch als Folge eines LBR-Kommandos auftreten: LBR> command-line Der Bibliothekar gibt die Fehlermeldung aus und meldet sich wie- der. Die Fehlermeldung, die auf dem Bediengeraet erscheint, hat folgendes Format: LBR--*FATAL*-mitteilung Das Auftreten eines fatalen Fehlers in einer Indirektkommando- Datei bewirkt: - Die Kommandodatei wird geschlossen. - Auf dem Bediengeraet wird die Fehlermeldung, gefolgt vom verursachenden Kommando, ausgegeben. - LBR kehrt zum hoechsten Niveau der Kommandoeingabe zurueck. Nach einem solchen Fehler hat die Bibliothek folgenden Status: 1) Im allgemeinen fuehren Ausgabefehler zu einem undefi- nierten Zustand der Bibliothek. 2) Waehrend des Loeschvorganges wird die Bibliothek zu- rueckgeschrieben, bevor die einzelnen Mitteilungen der geloeschten Moduln und Eintrittspunkte ausgegeben werden. 3) Waehrend des Austauschprozesses wird die Bibliothek zurueckgeschrieben, bevor die einzelnen Mitteilungen ueber die ausgetauschten Moduln ausgegeben werden. 4) Waehrend des Einfuegeprozesses wird die Bibliothek nach jeder Einfuegung aller Moduln einer Eingabedatei zurueckgeschrieben (d.h. zwischen den Eingabedateien). 178 8.7.2. Fehlermitteilungen ------------------------- Der folgende Abschnitt beinhaltet eine in alphabetischer Ordnung aufgefuehrte Liste moeglicher Fehlermeldungen, deren Ursache und Bearbeitungshinweise. Besitzt LBR zur Zeit der Fehlermeldung das hoechste Niveau der Kommandoeingabe, so bleibt der Bibliothekar aktiv und erwartet ein neues Kommando. LBR -- BAD LIBRARY HEADER Die angegebene Bibliothek ist fehlerhaft, oder sie wurde nicht als Bibliothek identifiziert. Falls die Datei keine Bibliothek ist, muss die Kommandozeile korrekt wiederholt werden. Ist der Platteninhalt verfaelscht, so ist eine Reorganisation der Platte notwendig. LBR -- CANNOT MODIFY HAEDER Es wurde versucht, einen Modulkennsatz einer Bibliothek zu modi- fizieren, der nicht einer Universalbibliothek angehoert. LBR -- COMMAND I/O ERROR Ein physisches Geraet ist nicht bereit oder die angegebene Datei ist verfaelscht bzw. ihr Format ist nicht korrekt (Satzlaenge uebersteigt 132 Bytes). Das Kommando muss wiederholt werden. LBR -- COMMAND SYNTAX ERROR Die Syntaxregeln fuer Kommandos wurde verletzt. LBR -- DUPLICATE ENTRY POINT NAME "name" IN filename Es wurde versucht, einen Modul mit einem in der Bibliothek be- reits vorhandenen Eintrittspunkt einzufuegen. LBR -- DUPLICATE MODULE NAME "name" IN filename Es wurde versucht, einen Modul ohne Austausch (ohne /RP-Schal- ter) in eine Bibliothek einzufuegen, in der bereits ein Modul mit dem angegebenen Namen existiert. LBR -- EPT OR MNT EXCEEDED IN filename Die Tabellengrenze der EPT oder MNT wurde waehrend des Einfuege- prozesses (/IN) bzw. des Austauschprozesses (/RP) erreicht. Die Bibliothek muss verdichtet und entsprechend vergroessert werden. LBR -- EPT OR MNT SPACE EXCEEDED IN COMPRESS Die Groesse der EPT oder MNT der beim Verdichten neu gebildeten Bibliothek reicht nicht aus, um alle EPT-oder MNT-Eintragungen aufzunehmen. Das Kommando muss mit entsprechenden Laengen fuer die EPT oder MNT wiederholt werden. LBR -- ERROR IN LIBRARY TABLES, FILE filename Entweder ist die angegebene Datei keine Bibliothek, oder sie ist verfaelscht, so dass eine Neubildung notwendig wuerde. LBR -- EXACTLY ONE INPUT FILE MUST APPEAR WITH /CO Beim Verdichten wurde eingabeseitig keine oder mehr als eine Bibliothek angegeben. 179 LBR -- FATAL COMPRESS ERROR Die angegebene Datei ist keine Bibliothek oder fehlerhaft. LBR -- GET TIME FAILED Diese Fehlermeldung tritt auf, wenn LBR eine Exekutiveanweisung zur Ubernahme der Zeit bearbeitet und dabei abbricht (System- stoerung). Falls sich nach erneuter Kommandoeingabe der Fehler wiederholt, kann aus entsprechender Literatur ueber die Exekutive Aufschluss ueber die Fehlerursache gefunden werden. LBR -- ILLEGAL DEVICE/VOLUME command-line Die Geraeteangabe entspricht nicht den Syntaxregeln. Die Geraete- bezeichnung muss aus 2 KOI-7-Zeichen, gefolgt von 2 Oktalzahlen bestehen. LBR -- ILLEGAL DIRECTORY command-line Der angegebene Nutzeridentifikationscode (UIC) entspricht nicht den Syntaxregeln. Schreibweise des Nutzeridentifikationscodes: [g,m], mit g: 1 bis 3 Oktalzahlen m: 1 bis 3 Oktalzahlen LBR -- ILLEGAL FILENAME command-line Eine Dateispezifikation enthaelt ein unzulaessiges Zeichen, oder es fehlen Dateiname und Typ. LBR -- ILLEGAL GET COMMAND LINE ERROR CODE Das System kann die Kommandozeile nicht lesen. Falls nach erneu- ter Eingabe der Kommandozeile der Fehler wieder auftritt, kann in der Literatur ueber die Exekutive Aufschluss ueber die Fehlerur- sache gefunden werden. LBR -- ILLEGAL SWITCH command-line Es wurde ein Schalter in falschem Zusammenhang angegeben, oder der spezifizierte Schalter wird nicht vom Bibliothekar bearbei- tet. LBR -- ILLEGAL SWITCH COMBINATION Die Kommandozeile enthaelt eine solche Kombination von Schaltern, die LBR nicht ausfuehren kann (s. Abschn. 8.6.). LBR -- INDIRECT COMMAND SYNTAX ERROR command-line Die Indirektkommando-Datei entspricht in ihrem Format nicht den Syntaxregeln. LBR -- INDIRECT FILE DEPTH EXCEEDED command-line Es sind nur einstufige Kommandodateien zulaessig. Diese Bedingung wurde nicht eingehalten. LBR -- INDIRECT FILE OPEN FAILURE command-line Die angegebene Indirektkommando-Datei existiert nicht , d.h. sie wird nicht gefunden. 180 Dafuer kann einer der folgenden Zustaende verantwortlich sein: 1) Die Platte ist nicht bereit. 2) Die Platte ist nicht eingegliedert. 3) Der Nutzerbereich ist gegen Zugriff geschuetzt. 4) Das angegebene Dateiverzeichnis existiert nicht. 5) In der Exekutive mangelt es an dynamischem Speicher- platz. LBR -- INPUT ERROR ON filename Waehrend der Bearbeitung einer Eingabedatei tritt ein Geraete- fehler auf (z.B. Platte ist nicht bereit). Der gleiche Fehler erscheint, wenn die Eingabedatei nicht korrekt ist. LBR -- INSUFFICIENT DYNAMIC MEMORY TO CONTINUE Die Partition, in der LBR laeuft, ist zu klein. Demzufolge muss LBR in einer groesseren Partition installiert werden und die Kommandofolge wiederholt werden. LBR -- INVALID EPT AND/OR MNT SPECIFICATION Beim Verdichten (/CO) oder Erzeugen (/CR) wurde fuer die moeg- liche Anzahl der Eintragungen in die EPT oder MNT ein Wert groes- ser als 4096 angegeben. LBR -- INVALID FORMAT, INPUT FILE filename Die angegebene Eingabedatei besitzt nicht das gueltige Standard- format einer Objektmoduldatei oder einer Makroquellendatei, d.h. die Eingabedatei ist fehlerhaft. LBR -- INVALID LIBRARY TYPE SPECIFIED Beim Erzeugen (/CR) oder Festlegen des Standardtyps (/DF) steht ein unzulaessiger Eingabedateityp. OBJ , MAC und UNI sind die moeglichen Typangaben. LBR -- INVALID MODULE FORMAT in insertion module Es wurde versucht, einen Makromodul in eine Objektmodulbibliothek einzufuegen. LBR -- INVALID NAME -- name Ein Modul- oder Eintrittspunktname, der geloescht werden soll, enthaelt keine RADIX-50-Zeichen. LBR -- INVALID OPERATION FOR OBJECT AND MACRO LIBRARIES Modulbeschreibungsparameter wurden fuer Objektmodul- oder Makro- bibliotheken bereitgestellt. Das Kommando wird so ausgefuehrt, als ob die Angaben nicht eingegeben worden waeren. LBR -- INVALID RAD50 CHARACTER IN "characterstring" Ein Zeichen fuer die Modulbeschreibung von Universalbibliotheken bei den Schaltern /IN, /RP oder /MH ist kein RADIX-50-Zeichen. LBR -- I/O ERROR ON INPUT FILE filename Beim Lesen einer Eingabedatei ist ein Lesefehler aufgetreten. Die Ursache fuer die Ausschrift kann auch in einem Geraetefehler (z.B. Platte nicht bereit) begruendet sein, oder die Eingabedatei ist fehlerhaft bzw. ihr Format ist nicht zulaessig (Satzlaenge ueber 132 Bytes). LBR -- LIBRARY FILE SPECIFICATION MISSING Es wurde ein Kommando ohne Angabe der Dateispezifikation fuer die Bibliothek gegeben. 181 LBR -- MARK FOR DELETE FAILURE ON LBR WORK FILE Wenn LBR beginnt, die Kommandos abzuarbeiten, erzeugt er automa- tisch eine Arbeitsdatei und markiert sie fuer das Loeschen. Aus verschiedenen Gruenden wurde dieses Loeschen nicht ausge- fuehrt. Die Arbeitsdatei ist eine Datei, die in keinem Verzeich- nis gefuehrt wird. Mit Hilfe des Dienstprogramms VFY 1630(OMEX) kann eine solche Datei geloescht werden. LBR -- MULTIPLE MODULE EXTRACTIONS NOT PERMITTET FOR UNI MODULES Es wurde versucht, mehr als einen Modul aus einer Universalbi- bliothek herauszuloesen. Der erste spezifierte Modul wird heraus- geloest, alle weiteren werden ignoriert. LBR -- NO ENTRY POINT NAMED "name" Der zu loeschende Eintrittspunkt existiert nicht in der EPT der angegebenen Bibliothek. LBR -- NO MODULE NAMED "module" Der Name des zu loeschenden Moduls befindet sich nicht in der MNT der angegebenen Bibliothek. LBR -- OPEN FAILURE ON FILE filename Waehrend der Eroeffnung der Datei trat einer der folgenden Fehler auf: 1) Kein Zugriffsrecht zum UFD 2) Das Geraet ist nicht bereit (z.B. nicht eingeschaltet). 3) Die Platte ist nicht eingegliedert. 4) Das spezifizierte Dateiverzeichnis existiert nicht. 5) Die spezifizierte Datei existiert nicht. 6) Auf der Platte ist nicht genuegend zusammenhaengender Platz, der beim Verdichten und Erzeugen erforderlich ist. 7) In der Exekutive fehlt es an dynamischen Speicherplatz. LBR -- OPEN FAILURE ON LBR WORK FILE Waehrend der Eroeffnung der Arbeitsdatei durch LBR trat ein Feh- ler auf. Die Arbeitsdatei des LBR wird auf dem Datentraeger ge- bildet, auf dem LBR installiert ist. Die Fehlermeldung kann folgende Ursachen haben: 1) Der Datentraeger ist voll belegt. 2) Der Datentraeger ist schreibgeschuetzt. 3) Es liegt ein Geraetefehler vor 4) In der Exekutive fehlt es an dynamischem Speicherplatz. LBR -- OUTPUT ERROR ON filename Ein Schreibfehler ist bei der Ausgabedatei aufgetreten. Die Feh- lermeldung kann folgende Ursachen haben: 1) Der Datentraeger ist voll 2) Der Datentraeger ist schreibgeschuetzt 3) Es liegt ein Hardwarefehler vor LBR -- POSITIONING ERROR ON filename Bei der Eingabedatei trat ein Positionierfehler auf. Die Fehler- meldung kann folgende Ursachen haben: 1) Es liegt ein Hardwarefehler vor 2) Die Datei ist zerstoert oder das Format ist falsch 182 LBR -- TOO MANY OUTPUT FILES SPECIFIED Es wurden mehr als zwei Ausgabedateien spezifiziert. LBR nimmt die erste Spezifikation als Ausgabedateispezifikation, die zwei- te Spezifikation als Listendatei. Alle weiteren Aufgaben werden bei der Arbeit von LBR ignoriert. LBR -- VIRTUAL STORAGE REQUIREMENT EXCEEDS 65536 WORDS Dieser Fehler tritt bei Operationen mit sehr grossen Bibliothe- ken auf. Der Wert 65536 zeigt die maximale Groesse eines Moduls in Worten bzw. die Blockgroesse einer Bibliothek an. Normaler- weise zeigt diese Nachricht einen internen Systemfehler an. Es sollte versucht werden, die Kommandozeile in mehrere kleine Kommandozeilen zu zerlegen. LBR -- WORK FILE I/O-ERROR In der Arbeitsdatei von LBR ist ein Schreibfehler aufgetreten. Die Fehlermeldung kann folgende Ursachen haben: 1) Der Datentraeger ist voll 2) Das Geraet ist schreibgeschuetzt 3) Es liegt ein Hardwarefehler vor 183 9. Taskbilder TKB 1630(OMEX) ---------------------------- 9.1. Vorbemerkungen ------------------- Die abarbeitbare Einheit im Betriebssystem OMOS 1630 ist die Task. Man erhaelt das Abbild einer ausfuehrbaren Task folgender- massen: - Ein Programm wird in eine Quelltextdatei aufgenommen. - Das Programm wird zu einem Objektmodul uebersetzt, und dieser wird in eine Einzeldatei oder in eine Bibliotheksdatei ueber- tragen. - Der Taskbilder erzeugt aus einem oder aus mehreren Objektmoduln die Task. Wird die Task aus nur einem Objektmodul gebildet, so besteht das TKB-Kommando im einfachsten Fall aus der eingabeseitigen Angabe des Objektmodulnamens. Haeufig besteht die Task jedoch aus mehre- ren Einzelprogrammen. In diesem Falle benennt man jede Datei, die Objektmoduln enthaelt. Der TKB verbindet die Objektmoduln, fuehrt alle Bezuege zur Systembibliothek aus und erzeugt ein einziges Taskabbild, das installiert und ausgefuehrt werden kann. Der Taskbilder macht eine Reihe von Standardannahmen ueber den Taskaufbau, die auf typischen Nutzer- und Speicheranforderungen beruhen. Diese Annahmen koennen durch eingefuegte Schalter (switches) und wahlweise Angaben (options) veraendert werden. Damit kann der Anwender eine Task aufbauen, die auf seine spezi- fischen E/A- und Speicheranforderungen zurechtgeschnitten ist. Der Taskbilder erzeugt auf Anforderung eine Speicherzuordnungsda- tei (map-file), die eine die Speicherzuordnung beschreibende Information, die zum Taskaufbau verwendeten Objektmoduln und die Werte aller globalen Symbole enthaelt. An diese Datei kann wahl- weise eine Liste globaler Symbole (Cross-Referenz), bei denen der Name jedes bezugnehmenden Moduls genannt wird, angefuegt werden. Der Taskbilder liefert dem Anwender die Moeglichkeit der Ueberla- gerung, um den Hauptspeicherbedarf und/oder die Anforderungen an den virtuellen Adressbereich der Task zu reduzieren. Eine Task kann in Ueberlagerungssegmente, die sich auf der Platte oder im Hauptspeicher befinden, unterteilt werden. Auf der Platte befind- liche Ueberlagerungen werden in den Hauptspeicher geladen, wenn sie gebraucht werden; speicherresidente Ueberlagerungen erfolgen ueber die Zuschaltung virtueller Adressbereiche zum verfuegbaren Arbeitsspeicher. Ueberlagerungssegmente koennen automatisch oder manuell geladen werden: - Mit der Methode automatisches Laden sind seitens des Anwenders keine Spezialrufe noetig, um die Ueberlagerungssegmente der Task zu laden. Das Laden der Ueberlagerungssegmente wird auto- matisch durch das Ueberlagerungslaufzeitsystem entsprechend der vom Anwender zum Zeitpunkt des Taskaufbaus definierten Struktur ausgefuehrt. - Die Methode manuelles Laden erfordert, dass die Task spezifi- sche Unterprogrammrufe zu dem Ueberlagerungslaufzeit-System enthaelt. Der Anwender uebernimmt in diesem Falle die voll- staendige Steuerung und Kontrolle ueber den Ladevorgang. 184 Falls die Task mit einer anderen in Verbindung treten soll oder, um Hauptspeicherplatz zu sparen, gemeinsame Unterprogramme benut- zen soll, bietet der Taskbilder die Moeglichkeit, geteilte Regio- nen aufzubauen, die mit verschiedenen Tasks verbunden werden koennen. Diese Regionen koennen hauptspeicherresidente Ueberla- gerungen enthalten. Durch Setzen von entsprechenden Schaltern und Options kann die Task exakt fuer das Zielsystem, unter dem sie laufen soll, gebil- det werden, unabhaengig davon, wie das Wirtssystem ausgeruestet ist. 9.2. Kommandosyntax ------------------- Kommandos koennen fuer den TKB im Ein- oder Mehrzeilenformat angegeben werden. Im Mehrzeilenformat ist die Angabe von speziel- len Options zur Steuerung des Taskaufbaus moeglich. Zur Beschreibung wird eine modifizierte Backus-Naur-Form verwen- det. Es bedeuten: ::= Definitionszeichen | Alternative a ist eine aus der Syntax erklaerte Groesse [a] a ist wahlweise angebbar [a]... a ist beliebig oft wiederholbar Zeichen, die nicht mittels "<" und ">" eingeschlossen sind, sind unveraendert anzugeben (z.B. /, :, UNITS, PAR). Unterstrichene Angaben sind Eingaben des Bedieners. Der TKB wird installiert durch: >INS $TKB -------- 185 9.2.1. Einzeilenformat ---------------------- >TKB ----------------------- 9.2.2. Mehrzeilenformat ----------------------- >TKB --- TKB> ------------------- TKB> ------------ . . . TKB> ------------ TKB> (*) -------------------- ENTER OPTION: TKB> ------------- . . . TKB> ------------- TKB> -------------------- ::= / | // Dabei bedeutet: // Die Task wird gebildet und es erfolgt die Rueckkehr zu MCR. / Nach dem Taskbilden meldet sich TKB. Die Optionanforderung erscheint, wenn in Zeile (*) "/" ange- geben wird. 186 9.2.3. Taskbildungskommandos ---------------------------- ::=[]= | @ Im Mehrzeilenformat kann die Angabe rechts von "=" entfallen, falls auf den folgenden Zeilen die Eingabedateien spezifiziert werden. ::= 9.2.4. Ausgabedateien --------------------- ::= ,, Die jeweiligen Dateien koennen weggelassen werden; werden jedoch vorangestellte Dateien nicht angefuehrt, sind Kommas signifikant. ::= []... Analoge Definitionen gelten fuer und . Taskabbilddatei (task-file): enthaelt Taskabbild. Speicherzuordnungsdatei (map-file): enthaelt Informationen ueber Groesse und Speicherzuordnung der einzelnen Task- komponenten, sowie spezielle Attribute. Symboldefinitionsdatei (symbol-file): enthaelt die globalen Symboldefinitionen und ihre Adresszuordnung. Ein Schalter beginnt mit "/". Naehere Spezifikationen s. Abschn. 9.3. 9.2.5. Eingabedateien --------------------- ::= ::= [,]... | @ ::= []... 9.2.6. Angabe der Option ------------------------ ::= Ausdruck [ ] Klammern schliessen eine wahlweise Angabe ein r allgemeines Registersymbol (Ziffer, Buchstabe) m 16-bit-Maske (Bitmuster) 10.6.2. Typen von Ausdruecken ----------------------------- Typ 1: a=k Typ 2: a=n,k Typ 3: a=C oder a=C,k oder a=n,C oder a=C,C Tabelle 46: DEP - Beispiele fuer Ausdruckstypen ----------------------------------------------------------------- Typ a= Oktalwert ----------------------------------------------------------------- 1 10 000010 1 -5 177773 2 5,0 001200 2 5,200 001400 3 C 000005 3 C,2 001202 3 5,C 001205 3 C,C+C 001212 ----------------------------------------------------------------- Fuer die Beispiele wurde angenommen: Inhalt von $C = 000005 Inhalt von $5 = 001200 Anmerkung --------- C darf als Inhalt des C-Registers vor dem Relativoperator (Komma) nur Werte von n (0...7) annehmen; nach dem Relativoperator sind Werte von k (0...177777) zulaessig. 260 10.6.3. Kommandos fuer die Ein- und Ausgabe ------------------------------------------- 10.6.3.1. Ein-/Ausgabe von Speicherinhalten (ai[k]) ----------------------------------------------------------- Syntax ------ ai[k] Semantik -------- Die Adresse a wird geoeffnet und ihr Inhalt gemaess ausgege- ben. Danach kann vom Bediener die Eingabe k auf die Adresse a erfolgen. Die Adresse a wird gemaess geschlossen. Beispiele: :14200/123006 ----- ---- 014202/000400 ---- : Die Adresse 14200 (absolut) wird geoeffnet und der Inhalt gemaess im Wortmodus und Oktalformat ausgegeben. Es erfolgt keine Eingabe. Das Schliesszeichen hat zur Folge, dass die aktuel- le Adresse a geschlossen wird und der Inhalt der naechstfolgenden Adresse (a+2) im gleichen Modus und Format ausgegeben wird. Mit wird die aktuelle Adresse geschlossen, und es erfolgt die Kommandoanforderung. :0,420\123 2 ------ ----- 0,000421`330 ---- : Die Adresse 0,420 (relativ zur Verschiebebasis im Register 0R), wird geoeffnet und der Inhalt im Bytemodus und Oktalformat ausge- geben. Der Inhalt wird mit dem Wert 000002 ueberschrieben. Mit wird die aktuelle Adresse geschlossen und die naechste (Byte-) Adresse (a+1) geoeffnet. Deren Inhalt wird in gleicher Weise ausgegeben. Mit wird die aktuelle Adresse geschlossen. Es erfolgt die Kommandoanforderung. :0,232/034567 \167 'w "w9 %IG1 ------ - - - - ---- : Die Adresse 0,232 wird geoeffnet und deren Inhalt nacheinander in den moeglichen Arten gemaess den Oeffnungszeichen ausgegeben. :1000/012746 12345 ----- --------- :/012345 - ---- : Der Inhalt der aktuellen Adresse 1000 wird ueberschrieben. An- schliessend wird (ohne Angabe der Adresse) nur durch die Angabe des Oeffnungszeichens der Inhalt der aktuellen Adresse erneut ausgeben. 261 :1000/012345 ----- ---- 001002/002340^ - 001000/012345 ---- : Das Beispiel zeigt die Wirkung des ^. Die vorhergehende Adresse wird erneut geoeffnet. :1000/000040_ ----- - 001042/052470 ---- : Das Beispiel zeigt die Wirkung des _. Der Inhalt der offenen Adresse wird als Offset fuer die PC-relative Errechnung der naechsten zu oeffnenden Adresse benutzt: 1000 offene Adresse + 2 ---- 1002 aktueller PC + 40 Offset ---- 1042 naechste zu oeffnende Adresse ==== :1006/001024@ ----- - 001024/000500 ---- : Das Beispiel zeigt die Wirkung des @. Der Inhalt der offenen Adresse wird als absolute Adresse angenommen und geoeffnet. :0,600/012345 12746@ ------ ------ 0,012356/027117 ---- : Der Inhalt der offenen Adresse wird ueberschrieben. Die Eingabe wird als absolute Adresse gewertet, die zu oeffnen ist. Da die Adresse in relativer Form angegeben wurde, muss die naechste zu oeffnende Adresse ebenfalls in relative Form gebracht werden: 12746 absolute Adresse - 370 angenommener Wert im 0-ten R-Register ----- 12356 relative Adresse zur Basis 0R ===== 262 :1032/000407> ----- - 0,001052/001456 ---- 0,001054/000010< - 0,001032/00407 ---- : Das > hat zur Folge, dass die Adresse geoeffnet wird, die sich aus dem Verzweigungsoffset errechnet: 007 niederwertiges Byte vom Inhalt * 2 multipliziert mit 2 --- 016 +1032 offene Adresse + 2 auf aktuellen PC beziehen ---- 1052 naechste zu oeffnende Adresse ==== Die Codierung 000407 entspricht einem Verzweigungsbefehl: 001032 BR ZIEL . . . 001052 ZIEL: NOP :20400;R ------- :0,1024/000160 ------- ---- 0,001026/004000@ - 004000/006070@ - 006070/177777< - 0,001026/004000 Das Beispiel zeigt die Wirkung des <. Es schliesst den aktu- ellen Speicherplatz (006070) und oeffnet den Speicherplatz, der zuletzt mit einem der / ^ geoeffnet wurde (im Beispiel ist es der Platz 0,001026). Die Anwendung des < ist nur sinnvoll, wenn der aktuelle offene Platz mit einem der Zeichen @, _ oder > geoffnet wurde. Ist das nicht der Fall, so bewirkt das < lediglich, dass der aktuell offene Platz geschlossen und erneut geoeffnet wird. Die Adressen werden im Beispiel in relativer Form ausgegeben, da das Formatregister F nicht veraendert wurde und noch den Stan- dardinhalt Null (000000) besitzt (s. Abschn. 10.5.1.4.). 263 10.6.3.2. Ein-/Ausgabe von Registerinhalten ($ri[k]) ------------------------------------------------------------ Syntax ------ $ri[k] Semantik -------- Das Register r wird gemaess geoeffnet und der Inhalt ausge- geben. Danach kann der Bediener den Inhalt des offenen Registers mit k veraendern. Das Register wird gemaess geschlossen. Mit der Angabe von $$ wird ein ARP-Register ($nA...$nD, $S) adressiert (nur K 1630!). Beispiele: :$0/000000 --- ---- : Der Inhalt des allgemeinen Registers 0 (R0) ist Null. :$7B/042560 ---- ---- : Im Unterbrechungspunktregister 7B steht die Adresse 42560. Auf sie wurde vom Bediener ein Unterbrechungspunkt gesetzt. :$A/000000 40 --- ------ : Das Argumentregister A wird auf den Wert 000040 gesetzt. :$0R/020000 ---- ---- $1R/042000 ---- $2R/000000 ---- : Das Schliessen der Mehrfach-Register mit ermoeglicht das Oeffnen des naechstfolgenden Registers. Die Register sind im DEP/ODT in einer bestimmten Reihenfolge angeordnet. Nach dieser Reihenfolge richtet sich auch die Wirkung des : $0...7 $S,$W,$A,$M,$L,$H,$C,$Q,$F,$X $0B...8B $0G...8G $0I...8I $0R...7R $0V...7V $0E...2E $0D...2D 264 Beispiel: :$7I/000000 ---- ---- $8I/000000 ---- $0R/000000 ---- $1R/000000 ---- : 10.6.3.3. Eingabe in Speicherbereiche (F) ----------------------------------------- Syntax ------ F kF Semantik -------- Der Inhalt des A-Registers wird in den Speicherbereich eingege- ben, dessen Grenzen durch die Inhalte der L- und H-Register defi- niert sind. Bei Angabe von k wird dieser Wert in das A-Register uebernommen. Die Register L und H werden mittels Registereingabe- kommandos gesetzt (s. Abschn. 10.6.3.2.). Beispiel: :$L/000000 100 -- ------- $H/000000 300 ------- :20040F ------ : Der Speicherbereich in den Grenzen (einschliesslich) 100 bis 300 wird mit dem Code 20040 gefuellt. 10.6.3.4. Ausgabe von Speicherbereichen (L) ------------------------------------------- Syntax ------ L aL a;L a;aL Semantik -------- Der Inhalt des Speicherbereichs zwischen den Grenzen gemaess den L- und H-Registern wird im letztbenutzten Modus und Format () ausgegeben. Die Adresse a vor dem Semikolon wird in das L-Regis- ter, die Adresse a danach in das H-Register uebernommen. 265 Beispiel: :$1D/000007 10 --- ------ :42000;1R -------- :1,200;1,400L ------------ Der Inhalt des Bereiches wird von 42200 bis 42400 auf dem Bild- schirm angezeigt und gleichzeitig auf dem Drucker protokolliert, dem die LUN=10 zugewiesen wurde . :$1D/000010 7 ---- ----- : Die zusaetzliche Protokollierung wird ausgeschaltet. Parameter, die nicht veraendert werden, koennen - von links be- ginnend - weggelassen werden. Folgen einem angegebenen Parameter Argumenttrennzeichen (;), dann muessen diese angegeben werden, da sie seine Stellung und damit Bedeutung im Kommando definieren: :1,300;L H-Register bleibt unveraendert! ------- :;1,500L L-Register bleibt unveraendert! ------- 10.6.3.5. Ein-/Ausgabe oekonomischer Datenformate (a<#df>i[d]) ------------------------------------------------- Syntax ------ a<#df>i[d] Semantik -------- Ab Adresse a wird der Speicherinhalt im spezifizierten Datenfor- mat <#df> ausgegeben. Danach kann eine Eingabe [d] im g l e i- c h e n Datenformat erfolgen. Das Kommando wird mit dem Schliesszeichen beendet. Statt auf a kann auch auf Register bezug genommen werden, z.B. $$nA<#df>i[d]. Bei Anwendung des Tetradenformats ist als Schliesszeichen nur zulaessig. Statt des kann aber auch ein weiteres Oeff- nungszeichen eingegeben werden. Es erfolgt dann auf der gleichen Kommandozeile die Ausgabe des Inhalts von der aktuellen Adresse an im entsprechenden Format. 266 ---------------------------------------------------- Spezifikation Datenformat <#df> ---------------------------------------------------- #I1 Integer, 1 Wort #I2 Integer, 2 Worte #I3 Integer, 3 Worte #I4 Integer, 4 Worte #F2 Gleitkomma, einfach genau (2 Worte) #F4 Gleitkomma, hoeher genau (4 Worte) #P Tetrade (bis max. 16 Worte) ---------------------------------------------------- Beispiele: :0,13300#I1 -00001 -12345 ---------- ---------- 0,013302 #I1 -12345 0 ----- 0,013304 #I1 00000 ---- :0,13300#I2 006257285 #I3 000410077429760 ---------- --- ---- 0,013306 #I3 000000000000000 ---- :0,13300#F2 0.074219480273313820E00 1.1234567890E-03 ---------- -------------------- 0,013304 #F2 0.000000000000000000E00 ^ - 0,013300 #F2 0.112345675006508827E-02 ---- :#F4 0.112345675006508827D-02 ---- 0,013310 #F4 0.000000000000000000D00 ---- :0,13300#P -12345678910123 --------- ---- :#P -12345678910123 12.112233445566 -- ------------------- :#P 12112233445566 -- ---- : Anmerkung --------- Fuer die Konvertierung der oekonomischen Datenformate werden folgende Unterprogramme aufgerufen: $CBDSG $CDDMG DCDD3W DCDD4W; DD1CT .DD2CT DD3CT DD4CT ; $ECO $DCO $RCI $DCI $TEKO $KOTE. 267 10.6.4. Suchkommandos --------------------- 10.6.4.1. Suchen nach Speicherinhalten (W,N) -------------------------------------------- Syntax ------ W kW m;W m;kW Semantik -------- Der Speicherbereich zwischen den im L- und H-Register definierten Grenzen wird nach einem Bitmuster (Speicherwort) abgesucht, das mit dem Inhalt des A-Registers entsprechend der Maske im M-Regis- ter uebereinstimmt. Die uebereinstimmenden Speicherinhalte werden mit den zugehoerigen Adressen ausgegeben. Das Suchargument k wird in das A-Register und die Maske m in das M-Register uebernommen. Wird fuer den Buchstaben W in der obigen Syntax der Buchstabe N eingesetzt, so erfolgen die Ausgaben der Speicherplatzinhalte, die n i c h t uebereinstimmen. Suchalgorithmus: (SPI) Inhalt der aktuellen Adresse (A) Inhalt des A-Registers (M) Inhalt des M-Registers EXO Exklusives ODER UND Logisches UND E Ergebnis 1) (SPI) EXO (A) = E 2) E UND (M) = E 3) E = 0 und Kommando W : Ausgabe E > oder < 0 und Kommando N : Ausgabe Beispiel: :$M/177777 177400 --- ---------- $L/000000 1000 -------- $H/000000 1400 -------- :$A/000000 600 --- ------- :W - 001010/000770 : 268 Im Bereich von 1000 bis 1400 werden alle Adressen und deren In- halte ausgegeben, in denen bit 7 (hoechstwertiges bit im nieder- wertigen Byte) gesetzt ist. Mit dem Kommando N werden alle Adressen und Inhalte ausgegeben, wenn das bit 7 n i c h t gesetzt ist. 10.6.4.2. Suchen nach Adressen (E) ---------------------------------- Syntax ------ E aE m;E m;aE Semantik -------- Analog zu den Suchkommandos nach Speicherplatzinhalten (s. Abschn. 10.6.4.1.) wird nach effektiven Adressen gesucht. Die spezifizierte Adresse a wird in das A-Register, die Maske m in das M-Register uebernommen. Der Inhalt des M-Registers sollte normalerweise den Wert minus Eins (177777) haben. Suchalgorithmus: 1) Wenn (SPI)=(A) ist, erfolgt die Ausgabe von (SPI) und die Fortsetzung bei Schritt 4. 2) Wenn (SPI)+SPI+2=(A) ist, erfolgt die Ausgabe von (SPI) und die Fortsetzung bei Schritt 4. 3) Wenn das niederwertige Byte von (SPI) multipliziert mit 2+(SPI)+2=(A) ist, erfolgt die Ausgabe von (SPI) und die Fortsetzung bei Schritt 4. 4) Die aktuelle Adresse wird um 2 erhoeht. Falls die neue Adresse nicht groesser als die obere Grenze (H-Register) ist, erfolgt die Fortsetzung bei Schritt 1, sonst wird der Suchlauf abgebrochen. 10.6.5. Berechnungskommandos ---------------------------- 10.6.5.1. Berechnung von Offsets (O) ------------------------------------ Syntax ------ aO a;aO Semantik -------- Es erfolgt die Errechnung und Ausgabe des 8-bit-Verzweigungsoff- sets von der aktuellen (offenen) Adresse bis a bzw. von der Adresse a vor dem Semikolon bis zur Adresse a danach. 269 Beispiel: :16126/001402 16134O _000004>000002 : Der Offset von der Adresse 16126 bis zur Adresse 16134 betraegt 4 Bytes (Verzweigungsoffset) bzw. 2 Worte (PC-relativer Offset). 10.6.5.2. Berechnung relativer Adressen (K) ------------------------------------------- Syntax ------ K nK a;nK Semantik -------- Bei diesem Kommando werden aus der Adresse a bzw. der (nicht angegeben) aktuellen Adresse die relative Adresse zum n-ten bzw. (nicht angegeben) aktuellen R-Register berechnet und ausgegeben. Beispiel: :42500;K =3,000500 ------- Das Register 3R enthaelt die Verschiebebasis 42000 (Annahme). Die Adresse 42500 liegt dieser Basis am naechsten (alle Differenzen zu anderen Inhalten der R-Register sind groesser). Die relative Adresse bezogen auf das Register 3R ist 500. 10.6.5.3. Berechnung von Ausdruecken (=) ---------------------------------------- Syntax ------ = Semantik -------- Der Ausdruck wird berechnet und das Ergebnis ausgegeben. Beispiele: :370;R --------- :0,0=000370 ---- ---- :0,16=000406 370+16=000406 ----- ------- ---- :16-370=177426 ------- ---- : 270 Beachte! :232323=032323 (max. 16 bit !) ------- 10.6.5.4. RADIX-50-Operator (*) ------------------------------- Der RADIX-50-Operator (*) ist ein Arithmetikoperator zur Bildung von RADIX-50-Codierungen. Bis zu 3 KOI-7-Zeichen aus der unten stehenden Tabelle koennen in einem 16-bit-Wort verschluesselt werden. Tabelle 47: DEP - KOI-7-Zeichen fuer RADIX-50-Operationen ----------------------------------------------------------------- RADIX 50 numerisches RADIX 50 numerisches Aequivalent Aequivalent ----------------------------------------------------------------- SP 0 T 24 A 1 U 25 B 2 V 26 C 3 W 27 D 4 X 30 E 5 Y 31 F 6 Z 32 G 7 $ 33 H 10 . 34 I 11 nicht benutzt 35 J 12 0 36 K 13 1 37 L 14 2 40 M 15 3 41 N 16 4 42 O 17 5 43 P 20 6 44 Q 21 7 45 R 22 8 46 S 23 9 47 ----------------------------------------------------------------- Beispiele: :1*0=000050 ---- ---- :1*2*3=003223 ------ ---- :4520/120060 1*2*3=003223 Q (s. Abschn. 10.5.1.8. Register Q) ----- ------ ----- :%ABC - ---- : 271 10.6.5.5. Aktueller-Adress-Operator (.) --------------------------------------- In einem DEP/ODT-Kommando kann der Bediener bei Bezugnahme auf die gerade offene (aktuelle) Adresse dafuer das Zeichen (.) an- geben. Beispiel: :42400/123456 .=042400 ------ -- ---- : Das Kommando .;2K ist identisch mit 2K . Der (.)-Operator steht hier fuer die Adresse a, die als aktuell offene Adresse beim Kommando weggelassen werden kann (s. Abschn. 10.6.5.2.). 10.6.6. Kommandos zur Testorganisation -------------------------------------- 10.6.6.1. Einstellen des Modus "Direkttest" (D) ----------------------------------------------- Syntax ------ D Semantik -------- Das Kommando D ist nur bei DEP zulaessig! Im Modus "Direkttest" (Standard) wird das Testobjekt ohne Kon- trolle durch DEP abgearbeitet. Erst bei Erreichen eines Unter- brechungspunktes geht die Steuerung wieder an das DEP zurueck. Treten waehrend des direkten Testlaufs Fehler auf, die Traps auf die von DEP gesetzten Vektoren (s. Abschn. 10.5.2.5.) verursa- chen, so enthaelt DEP darueber ebenfalls die Steuerung zurueck. 10.6.6.2. Einstellen des Modus "Interpretierender Test" (T) ----------------------------------------------------------- Syntax ------ T aT a;T a;aT Semantik -------- Das Kommando T ist nur bei DEP zulaessig ! Im Modus "Interpretierender Test" werden alle Befehle des Testob- jekts vor ihrer direkten (!) Ausfuehrung auf Zulaessigkeit ge- prueft. Bei Unzulaessigkeiten erfolgt der Testabbruch mit einer entsprechenden Mitteilung bzw. Fehlerausschrift (s. Abschn. 10.8.). 272 Fuer die Befehle, die innerhalb des Protokollbereichs liegen, wird nach ihrer Ausfuehrung ein Testprotokoll (s. Abschn. 10.7.) ausgegeben. Der Protokollbereich wird durch die L- und H-Register definiert. Die Adresse a vor dem Semikolon wird in das L-Register, die Adresse a danach in das H-Register uebernommen. Fehlen diese An- gaben im Kommando, bleiben die jeweiligen Registerinhalte unver- aendert. 10.6.6.3. Setzen/Zuruecksetzen der Verschiebebasisregister (R) -------------------------------------------------------------- Syntax ------ a;R a;nR Semantik -------- Das 0-te bzw. n-te R-Register wird auf die Adresse a gesetzt. Syntax ------ R nR Semantik -------- Alle R-Register bzw. nur das n-te R-Register werden Zurueckge- setzt auf den Wert minus Eins (177777). Beispiel: :42000;R Setzen des 0-ten R-Registers ------- :44000;1R " " 1 " " -------- :46000;2R " " 2 " " -------- :50000;3R " " 3 " " -------- :45000;1R Aendern " 1 " " -------- :52000;4R Setzen " 4 " " -------- :R Zuruecksetzen aller R-Register - Anmerkung --------- Die R-Register koennen auch durch Registerein- und Ausgabekom- mandos veraendert werden (s. Abschn. 10.6.3.2.). 273 10.6.6.4. Setzen/Zuruecksetzen der Unterbrechungspunktregister (B) -------------------------------------------------------------- Syntax ------ a;B a;nB B nB Semantik -------- Die Wirkung ist analog zur Semantik des R-Kommandos (s. Abschn. 10.6.6.3.). Ein Unterschied ist aber zu beachten: Werden mehrere Kommandos der Form a;B hintereinander gegeben, so wird der (fehlende) Parameter n automatisch von 0 bis 7 hochge- zaehlt, so dass auf diese Weise eine Folge von Unterbrechungs- punkten gesetzt werden kann. Beispiel: :0,400;B Setzen des 0-ten B-Registers ------- :0,420;B " " 1 " " ------- :0,622;B " " 2 " " ------- :0,426;1B Aendern " 1 " " -------- :0,430;B Setzen " 3 " " ------- :0,460;B " " 4 " " ------- :B Loeschen aller Unterbrechungspunkte :nB Loeschen des n-ten Unterbrechungspunktes : Die B-Register werden auf eine Adresse zurueckgesetzt, die die Adresse des im DEP/ODT definierten BPT-Befehls ist. Die Anmerkung in Abschnitt 10.6.6.3. gilt hier analog. 10.6.6.5. Setzen der SST-Adressregister (V) ------------------------------------------- Syntax ------ V Semantik -------- In die (0...7) V-Register (s. Abschn. 10.5.2.5.) werden die DEP/ODT-eigenen Adressen der Behandlungsroutinen fuer die SST eingetragen. 274 10.6.6.6. Bedingte Unterbrechung -------------------------------- Fuer die bedingte Unterbrechung werden das M-Register und das A-Register benutzt. In das M-Register wird die Nummer (0...6) eines allgemeinen Re- gisters (R0...R6) oder die Adresse eingegeben. Der Inhalt des angegebenen Registers bzw. der Adresse werden n a c h der Aus- fuehrung eines interpretierten Befehls mit dem Inhalt des A-Registers verglichen. Bei Gleichheit wird der Testlauf unterbrochen. Es erfolgt die Ausschrift ** REQUIRED CONDITION FULFILLED ** und das Protokoll des Abbruchbefehls. Danach sind die M- und A-Register auf ihre Initialwerte (177777 bzw. 000000) gesetzt. Beispiel: :$A/000000 120 --- ------- $M/177777 3 ----- :T - :P - ** REQUIRED CONDITION FULFILLED ** 0,001720 162703 SUB 0,002100 000300 R3: 000420 000120 0 0 0 0 : Anmerkung --------- Wenn das M-Register einen positiven Wert enthaelt, wird eine bedingte Unterbrechung initialisiert. Deshalb ist nach Suchopera- tionen (s. Abschn. 10.6.4.) immer das M-Register auf 177777 zu setzen, damit es nicht zu unbeabsichtigten Unterbrechungen kommt. 10.6.7. Start und Fortsetzung des Testlaufs (G,P,S) --------------------------------------------------- Syntax ------ G aG Semantik -------- Das Testobjekt wird ab dem aktuellen PC (bei Erststart = Starta- dresse des Testobjekts) bzw. an der angegeben Adresse a gestar- tet. Syntax ------ P kP 275 Semantik -------- Der Testlauf wird an dem zuletzt erreichten Unterbrechungspunkt fortgesetzt. Die Zahl k wird in das G-Register eingetragen, wel- ches d i e s e m Unterbrechungspunkt zugeordnet ist (s. Abschn. 10.5.2.2.). Die naechste Unterbrechung erfolgt beim 1. bzw. k- ten Durchlauf des programmlogisch naechsten Unterbrechungs- punktes. Syntax ------ S nS Semantik -------- Der Testlauf wird nach der Abarbeitung des naechsten bzw. der naechsten n Befehle unterbrochen (n = beliebige Oktalzahl). 10.6.8. Beenden der Testarbeit (X) ---------------------------------- Syntax ------ X Semantik -------- Mit X wird die Arbeit des DEP/ODT abgebrochen. Es meldet sich daraufhin das Kommandoprogramm der Exekutive OMEX 1630. 10.7. Testprotokoll ------------------- 10.7.1. Testprotokoll im Modus "Direkttest" ------------------------------------------- Das Testprotokoll im Modus "Direkttest" des DEP trifft gleicher- massen fuer ODT zu und enthaelt lediglich eine Information ueber den erreichten Unterbrechungspunkt. Es wird die Nummer des Unter- brechungspunktregisters n und die zugehoerige Unterbrechungsa- dresse ausgegeben. Der Testobjektbefehl auf der Unterbrechungsadresse wurde dabei noch n i c h t ausgefuehrt. Beim Direkttest erfolgt die Fortsetzung des Testlaufs (P-Komman- do, S-Kommando) immer mit der Ausfuehrung des Befehls, dessen Adresse unmittelbar vorher als Unterbrechungspunkt protokolliert wurde. Beim Einzelschrittest (S-Kommando) wird j e d e Unterbrechung mit dem 8B-Register protokolliert. 276 Beispiel: :41172;R ------- :0,400;2B -------- :G - 2B:0,000400 :S - 8B:0,000404 :S - 8B:0,000406 :0,600;3B -------- :P - 3B:0,000600 : 10.7.2. Testprotokoll im Modus "Interpretierender Test" ------------------------------------------------------- Das Testprotokoll im Modus "Interpretierender Test" enthaelt alle wichtigen Informationen einer Befehlsabarbeitung (nur DEP!). Die Protokollzeile beginnt mit der Adresse des Befehls. Nach der Adresse stehen der Befehlscode und das zugehoerige Befehlsmnemo- nik, das aus dem Befehlscode entschluesselt wurde. Die Protokoll- zeile wird mit den Informationen zum Quell- und Zieloperanden fortgesetzt. Fuer beide Operanden beginnt das "Operandenfeld" mit der Adresse des Operanden bzw. der Registernummer (R0...R5, SP und PC). Danach steht der Inhalt des Operanden. Beim Zieloperan- den wird der Inhalt vor u n d nach Ausfuehrung des Befehls proto- kolliert. Die Protokollzeile endet mit der Ausgabe der Bedin- gungsbits aus dem PS. Allgemeine Protokollzeile: aaaaaa cccccc MMMM qqqqqq iiiiii zzzzzz iiiiii iiiiii N Z V C Bedeutung (von links nach rechts): aaaaaa Adresse des Befehls (relativ: n,aaaaaa) cccccc Befehlscode MMMM Mnemonik qqqqqq Quelloperandenadresse (relativ: n,qqqqqq) iiiiii Inhalt des Quelloperanden zzzzzz Zieloperandenadresse (relativ: n,zzzzzz) iiiiii Inhalt des Zieloperanden v o r der Befehlsaus- fuehrung iiiiii Inhalt des Zielopreanden n a c h der Befehlsaus- fuehrung N Z V C Bedingungsbits (flag bits) 277 Bei Einadressbefehlen wird das Operandenfeld fuer den (fehlenden) Quelloperanden mit Leerzeichen (Space) ausgegeben. Bei Verzwei- gungs- und Sprungbefehlen wird nach dem Befehlsmnemonik die Ziel- adresse angegeben. Bei Sprungbefehlen wird auf die Ausgabe der Bedingungsbits verzichtet. Der JSR-Befehl wird nur mit Zieladres- se protokolliert, ohne Angabe des Registers. Bei einem RTS-Be- fehl erscheint nur das Mnemonik. Testprotokoll der ARP- und Zusatzbefehle ---------------------------------------- Das Testprotokoll der ARP- und Zusatzbefehle entspricht bis zum Mnemonik und der Ausgabe der Bedingungsbits der oben beschriebe- nen allgemeinen Protokollzeile. Bei den ARP-Befehlen wird kein Operandenfeld protokolliert. Die Bedingungsbits werden aus dem ARP-Statuswort entschluesselt. Bei den Zusatzbefehlen gibt es folgende Protokollvarianten: Befehle MFPI, MTPI, BMOV, DADD, DSUB, DSL, DSR ---------------------------------------------- Es wird kein Operandenfeld protokolliert. Befehl SPL ---------- Im Anwendermodus wird der SPL-Befehl wie ein NOP-Befehl abgear- beitet und deshalb auch so protokolliert. Befehl SXT ---------- Der Befehl SXT wird wie ein Einoperandenbefehl entsprechend der allgemeinen Protokollzeile protokolliert. Befehl MARK ----------- Es werden die Inhalte der Register R6, R7 und R5 n a c h der Befehlsausfuehrung protokolliert. Befehl SOB ---------- Im Protokoll erscheint die Verzweigungsadresse sowie der Inhalt des im Befehl adressierten Registers v o r und n a c h der Befehlsausfuehrung. Befehl XOR ---------- Es wird das adressierte Register und dessen Inhalt ausgegeben. Der im Befehl adressierte Zieloperand wird entsprechend der all- gemeinen Protokollzeile protokolliert. Befehl ASH ---------- Im Protokoll erscheint die Verschiebezahl mit Vorzeichen, das im Befehl adressierte Register und dessen Inhalt n a c h der Be- fehlsausfuehrung. Befehl ASHC ----------- Das Protokoll beginnt wie beim Befehl ASH. Ist das im Befehl adressierte Register geradzahlig, so werden das Register Rn+1 und dessen Inhalt zusaetzlich ausgegeben. 278 Befehle MUL, DIV ---------------- Es werden das im Befehl adressierte Register und dessen Inhalt n a c h der Befehlsausfuehrung protokolliert. War dieses Register Rn mit n geradzahlig, dann wird weiter wie beim Befehl ASHC pro- tokolliert. Anmerkung --------- Bei Erreichen eines Unterbrechungspunktes im Modus "Direkttest" wurde der Befehl auf dem Unterbrechungspunkt noch n i c h t abgearbeitet! Mit diesem Befehl wird der Test fortgesetzt (P- und S-Kommando). Beim Test im Modus "Interpretierender Test" dagegen ist dieser Befehl a b g e a r b e i t e t worden! Der Test wird mit dem programmlogisch naechstfolgenden Befehl fortgesetzt. 10.7.3. Besonderheiten bei Trap- und Steuerbefehlen --------------------------------------------------- Beim interpretierenden Test einiger Trap- und Steuerbefehle sind folgende Besonderheiten zu beachten: Der K 1630-Befehl R T T (000006) wird nicht abgearbeitet. Er fuehrt zur Unterbrechung des Testlaufs. Die Kommandos P und S werden danach abgewiesen. Die Steuerbefehle H A L T (000000) und R E S E T (000005) werden nicht interpretierend abgearbeitet. Sie fuehren zur Unter- brechung des Testlaufs. Die Kommandos P und S werden danach abge- wiesen. Die fuer OMEX 1630 reservierten E M T -Befehle (104376...104377) werden direkt und interpretierend abgearbeitet, wobei die EMT- Behandlungsroutine n i c h t unter der Steuerung von DEP/ODT abgearbeitet wird. Alle anderen E M T -Befehle (< 104376) sowie die Befehle T R A P (104400...104777) und I O T (000004) fuehren normalerweise zum Testlaufabbruch. Die Fortsetzung des Testlaufs ist moeglich (Kom- mando P und S) und erfolgt mit dem Befehl, der hinter dem TRAP- Befehl steht. Sollen vom Anwender geschriebene Trap-Behandlungs- routinen getestet werden, so sind vorher (!) die entsprechenden V-Register zu loeschen (s. Abschn. 10.5.2.5.). Die Befehle IOT, EMT und TRAP werden durch ein gesetztes T-bit n i c h t getrapt. Beim K 1630 erfolgt der T-bit-Trap nach dem letzten Befehl (RTI) der Behandlungsroutine. Beispiel: . . IOT CMP R0,R1 BEQ A . . Im Testprotokoll erscheint nach dem IOT-Befehl der CMP-Befehl. 279 10.7.4. Beispiel eines Testprotokolls ------------------------------------- Uebersetzungsliste eines Programmabschnittes -------------------------------------------- 011000 START: ... . . . 011704 000240 NOP 011706 004067 TEST: JSR R0,AUSGABE 001206 011712 013000 .WORD TEXT 011714 012700 MOV #120060,R0 120060 011720 112701 MOVB #777,R1 000777 011724 005000 CLR R0 011726 005700 TST R0 011730 001001 BNE X1 011732 000240 NOP 011734 052700 X1: BIS #400,R0 000400 011740 013701 MOV @#1000,R1 001000 011744 012702 MOV #ABC,R2 013202 011750 005722 TST (R2)+ 011752 012742 MOV #40,-(R2) 000040 011756 005042 CLR -(R2) 011760 000167 JMP ENDE . . . 012314 110600 ENDE: MOVB SP,R0 012416 000000 HALT 012320 000167 JMP START 012320 000167 ; 013000 ... TEXT: .ASCII ... ; 013120 ... AUSGAB: ... . . . 013202 000000 ABC: .WORD 0 . . . 280 Testprotokoll zum Programmabschnitt ----------------------------------- :41202;R ------- :0,11706;B --------- :0,11000G -------- 0B:0,011706 :0,11704/000240 -------- ---- 0,011706/004067 ---- :0,11704;0,12320T ---------------- :0,11750;B --------- :P - 0,011706 004067 JSR 0,013120 0,011714 012700 MOV 0,011716 120060 R0: 000000 120060 0000 0,011720 112701 MOVB 0,011722 ***377 R1: 000000 177777 1000 0,011724 005000 CLR R0: 120060 000000 0100 0,011726 005700 TST R0: 000000 000000 0100 0,011730 001001 BNE 0,011734 0100 0,011732 000240 NOP 0,011734 052700 BIS 0,011736 000400 R0: 000000 000400 0000 0,011740 013701 MOV 001000 000020 R1: 177777 000020 0000 0,011744 012702 MOV 0,011746 013202 R2: 000000 013202 0000 0,011750 005722 TST 0,013202 000000 000000 0100 :S - 0,011752 012742 MOV 0,011754 000040 0,013202 000000 000040 0000 :P - 0,011756 005042 CLR 0,013200 177777 000000 0100 0,011760 000167 JMP 0,012314 0,012314 110600 MOVB SP: ***040 R0: 000400 000440 0000 0,012316 000000 HALT :S - 0,012316 000000 HALT :P - 0,012316 000000 HALT 281 :D - :0,11000G 0B:0,011706 :S - 8B:0,013120 :P - 1B:0,011750 :P - IL:0,012316 :0,012316/000000 --------- ---- : Erlaeuterungen zum Testablauf ----------------------------- Die Anfangsadresse des Testbeispiels ist 41202 (absolut). Diese Adresse wurde in das 0-te R-Register eingegeben. Auf die relative Adresse 0,11706 wurde der 0-te Unterbrechungspunkt gesetzt. Der Abschnitt wurde ab Adresse 0,11000 (direkt) gestartet. Nach Erreichen des 0-ten Unterbrechungspunktes wurde nach den Ausgaben im Oktalformat der Protokollbereich mit den Grenzen 0,11704 (L-Register) bis 0,12320 (H-Register) festgelegt und der Modus "Interpretierender Test (T)" eingestellt. Als naechster Unterbrechungspunkt wurde die Adresse 0,11750 in das 1B-Register gebracht und der Testlauf interpretierend fortgesetzt. Die Befeh- le sind gemaess ihrer Abarbeitung protokolliert worden. Auf der Adresse 0,11750 wurde der Testlauf unterbrochen, danach der naechste Befehl im Einzelschritt getestet und dann der Test- lauf fortgesetzt. Der Testlauf wurde auf der Adresse 0,12314 abgebrochen, weil der HALT-Befehl nicht interpretiert wird (s. Abschn. 10.7.3.). Ein Fortsetzen im Einzelschritt oder mit dem P-Kommando wird abge- lehnt. Nach dem Einstellen des Modus "Direkttest" wird das Programm erneut gestartet. Die erste Unterbrechung erfolgte wieder auf dem 0-ten Unterbrechungspunkt. Der Einzelschritt ist ueber das 8B- Register (direkt !) unterbrochen wurden. Nach dem Fortsetzen wurde der 2-te Unterbrechungspunkt erreicht. Die erneute Fortset- zung fuehrte zum Fehlerabbruch durch den im Anwendermodus (s. Abschn. 10.5.1.9.) verbotenen HALT-Befehl. 282 Erlaeuterungen zum Testprotokoll -------------------------------- Adressen von Operanden, die unterhalb der niedrigsten Verschiebe- basis liegen, werden a b s o l u t ausgegeben. (Zeile 9, Adresse 1000). Die 2. Zeile zeigt die Vorzeichenexpansion (sign extension), die ein MOVB-Befehl in ein Register hervorruft. Das Vorzeichen des uebertragenen Bytes wird auf den gesamten Wortinhalt "ausge- dehnt". Die Protokollzeile vor dem HALT-Befehl zeigt, dass fuer das Re- gister R6 der Ausdruck "SP:" protokolliert wird. Analog gilt fuer R7 "PC:". Diese Zeile zeigt ausserdem, dass bei Bytebefehlen der Inhalt des Quelloperanden tatsaechlich nur als Byte protokolliert wird. Das Byte wird mit *** markiert. Die Operandenadresse gibt an, ob das nieder- oder hoeherwertige Byte protokolliert wurde. Bei Regi- stern bezieht sich der Bytebefehl immer auf das niederwertige Byte (siehe Sprachbeschreibung MACRO 1630). 10.7.5. Bedienerkommentar ------------------------- Wenn sich DEP/ODT im Status der Kommandoanforderung befindet, kann der Bediener Kommentierungen eingeben. Ein Kommentar beginnt und endet mit einem Ausrufezeichen "!". Dazwischen kann beliebiger Text eingegeben werden. Eine Zeile wird mit dem Zeichen begrenzt. Kommentierungen sind natuerlich nur sinnvoll, wenn die Protokoll- ausgabe zusaetzlich auf dem Drucker erfolgt (s. Abschn. 10.5.2.7.). Beispiel: :$1D/000007 10 ---- ------ :T - :P - * AE 0,000014 000100 : ---- :! JMP-BEFEHL IM MODUS 0 VERBOTEN ------------------------------------ INDIREKT ADRESSIEREN: JMP (R0) ! ------------------------------------ : ---- :0,14/000100 110 ----- ------- :P - 283 10.8. Fehlerreaktionen und -mitteilungen ---------------------------------------- 10.8.1. Fehler bei der Bedienereingabe -------------------------------------- Auf die Fehler bei Bedienereingaben reagiert DEP/ODT mit der Ausgabe des "?" und der Kommandoanforderung. Bei Fehlermittei- lungen von den Konvertierungsroutinen der oekonomischen Datenfor- mate (s. Abschn. 10.6.3.5.) erfolgt die Ausgabe "***** ?" und die Kommandoanforderung. Naehere Hinweise zu den Fehlerursachen sind aus der Beschreibung der entsprechenden Bibliotheksroutinen ableitbar. 10.8.2. Testobjektfehler im Modus "Direkttest" ---------------------------------------------- Im Modus "Direkttest" erfolgen Fehlermitteilungen aus den DEP/ODT-Behandlungsroutinen fuer die einzelnen Unterbrechungen (s. Abschn. 10.5.2.5.). Die allgemeine Form der Fehlermitteilung ist folgende: FF:a FF Fehlerkurzzeichen a Adresse im PC Nach der Fehlermitteilung erfolgt die Kommandanforderung. Ent- sprechend der Zuordnung in den nV-Registern (s. Abschn. 10.5.2.5.) gibt es folgende Fehlerkurzzeichen: OD ungerade Wortadresse (unerlaubte Adresse) MP Speicherschutzverletzung (memory protect violation or ille- gal memory reference) bei Benutzung der SVE BE Unerlaubter BPT-Einsprung (bad entry) in DEP/ODT TE Unerlaubter T-bit-Einsprung in DEP/ODT (dieser Fehler wird von DEP/ODT ueber den gleichen Trapvektor entschluesselt wie der BE-Fehler) IO IOT-Befehl IL Reservierter oder verbotener Befehl EM EMT-Befehl, der nicht fuer OMEX 1630 reserviert ist TR TRAP-Befehl FP Gleitkommafehler (floating point error) bei Benutzung des ARP. Bei diesem Fehler wird zusaetzlich der Fehlercode ausgegeben (siehe ARP-Beschreibung unter Fehlerregister FEC). 284 10.8.3. Testobjektfehler im Modus "Interpretierender Test" ---------------------------------------------------------- Im Modus "Interpretierender Test" werden Testobjektfehler durch die Interpretation v o r der Ausfuehrung eines Testobjektbefehls erkannt. Allgemeine Form der Fehlermitteilung: * FF aaaaaa iiiiii Fuer FF erscheinen folgende Fehlerkurzzeichen: IL unerlaubter Befehlscode (illegal instruction) AE Unerlaubte Adresse (address error) Bei ungerader Wortadressierung wird vorher das Kennzeichen * OD (odd address) gefolgt von verursachender Adresse ausgegeben. Anmerkung --------- Im interpretierenden Testmodus koennen auch durch SST und AST verursachte Fehlerausschriften auftreten. Geraetetechnisch geschuetzte (SVE) bzw. nicht fuer die Adressie- rung durch Anwenderprogramme zugelassene Adressen fuehren als "unerlaubte Adressen" ("AE") zum Fehlerabbruch. Beispiele: * IL 0,000620 000024 Die Codierung 000024 ist kein Befehl. * OD 042321 * AE 042556 010162 Die Codierung 010162 entspricht dem Befehl MOV R1,X(R2). Der Zieloperand ist eine ungerade Adresse (042321). * AE 0,000322 000100 Die Codierung 000100 entspricht dem Befehl JMP R0. Diese Adressierungsart ist fuer den JMP-Befehl verboten. 10.9. Generierung ----------------- Die Generierung des DEP/ODT erfolgt beim Entwickler. Die gene- rierbare Befehlsliste ist geraetetechnisch vorgegeben. 285 10.10. Aufwandsangaben ---------------------- 10.10.1. Speicherplatzbedarf ---------------------------- DEP 1630(OMEX) benoetigt einen Speicherbereich von ca. 20000 (oktal) Bytes. ODT 1630(OMEX) benoetigt einen Speicherbereich von ca. 7000 (oktal) Bytes. 10.10.2. Rechenzeit ------------------- Beim Test mit ODT und mit DEP im Modus "Direkttest" treten keine Zeitverzoegerungen ein. Fuer die Interpretation eines Befehls werden insgesamt bis zu 3000 Befehle im DEP abgearbeitet. Die Anzahl ist sehr unter- schiedlich in Abhaengigkeit von Befehlsart und Protokollumfang. Bei groesseren Protokollbereichen ist die fuer das Protokollieren benoetigte Zeit von bedeutend groesserem Gewicht als die Zeitver- zoegerung durch DEP. Zeitkritische Programme sind nur mit ODT oder mit DEP im Modus "Direkttest" zu testen, wenn Aussagen ueber das Echtzeitverhalten getroffen werden sollen. 286 10.11. Zusammenstellung der DEP/ODT - Kommandos ----------------------------------------------- Tabelle 48: DEP - Kommandouebersicht ----------------------------------------------------------------- Kommando | Wirkung | benutzte Register ----------------------------------------------------------------- | | ai[k]< Sz>| Speicher-Ein/Ausgabe | --------------|-------------------------|----------------------- a<#df>i[d]| Speicher Ein/Ausgabe | | im oekon. Datenformat | --------------|-------------------------|----------------------- $ri[k]| Register-Ein/Ausgabe | k ---> $r --------------|-------------------------|----------------------- F | Eingabe Speicherbereich | k ---> $A kF | | $L,$H --------------|-------------------------|----------------------- L | | AL | Ausgabe Speicherbereich | a; ---> $L a;L | | ;a ---> $H a;aL | | n ---> $nD --------------|-------------------------|----------------------- W (N,E) | Suchen nach: | kW (N,E) | -Uebereinstimmung (W) | k ---> $A m;W (N,E) | -Nichtuebereinstimmung(N) m ---> $M m;kW (N,E) | -effektiven Adressen (E)| $L,$H | (k=a) | --------------|-------------------------|----------------------- aO | Offsetberechnung | a;aO | | --------------|-------------------------|----------------------- K | Berechnung relativer | $R (aktuell) nK | Adressen | $nR a;nk | | --------------|-------------------------|----------------------- = | Ausdrucksberechnung | --------------|-------------------------|----------------------- D (nur DEP!) | Modus "Direkttest" | --------------|-------------------------|----------------------- T (nur DEP!) | Modus "interpretierender| a; ---> $L aT | Test" | ;a ---> $H a;T | | n ---> $nD a;aT | | --------------|-------------------------|------------------------ a;R | Setzen R-Register | a ---> 0R a;nR | | a ---> $nR | | nR | Zuruecksetzen R-Register| -1 ---> $nR R | | -1 ---> $0...7R ----------------------------------------------------------------- 287 Tabelle 48: (Fortsetzung) ----------------------------------------------------------------- Kommando | Wirkung | benutzte Register ----------------------------------------------------------------- a;B | Setzen B-Register | a ---> $B (aktuell) a;nB | | a ---> $nB | | nB | Zuruecksetzen B-Register | BPT-ADR. ---> $nB B | | BPT-ADR. ---> $0...8B --------------|--------------------------|----------------------- V | Setzen V-Register | $0...6V --------------|--------------------------|----------------------- G | Start des Testobjekts | a ---> PC aG | | $B, $I ("Direkttest") --------------|--------------------------|----------------------- P | Fortsetzung nach | k ---> $G (aktuell) kP | Unterbrechung | $B, $I ("Direkttest") --------------|--------------------------|----------------------- S | Einzelschrittest | $8B ("Direkttest") nS | n-Schrittest | n ---> $8G --------------|--------------------------|----------------------- X | Abbruch DEP/ODT | ----------------------------------------------------------------- 10.12. Testhilfe TRACE 1630(OMEX) --------------------------------- 10.12.1. Aufgaben des TRACE --------------------------- Die Testhilfe TRACE dient dem Test grosser Anwenderprogramme, wenn nicht mehr genuegend freier Speicherplatz fuer DEP zur Ver- fuegung steht und die Informationen des ODT ueber den Testablauf nicht ausreichend sind. TRACE protokolliert nach jedem ausgefuehrten Befehl des Anwender- programms den Befehlszaehler und die Inhalte der Register. Dabei ist es moeglich, die ganze Anwendertask zu protokollieren oder nur ausgewaehlte Taskabschnitte. 10.12.2. Interne Organisation des TRACE --------------------------------------- TRACE ist kein interaktives Programm. Es besitzt selbst keine Kommunikation mit dem Bediener. Alle notwendigen Informationen erhaelt TRACE vom TKB. Ueber das Globalsymbol .BIAS erhaelt TRACE die Anfangsadresse des zu testenden Programms. Definiert der Bediener dieses Symbol nicht, benutzt TRACE als Basisadresse den initialisierten Stack- pointer. Bis zu 4 Protokollbereiche uebergibt der TKB an TRACE mittels des globalen Symbols .RANGE. Werden keine Bereiche definiert, gibt TRACE nach j e d e r Befehlsausfuehrung ein Protokoll aus. Wird ein Programmbereich erreicht, der von der Protokollierung ausge- schlossen ist, wird von TRACE die Mitteilung ">>> BREAK <<<" ausgegeben. Die Protokollausgabe erfolgt auf dem Pseudogeraet CL:. Die LUN fuer CL: uebergibt der TKB ueber das globale Symbol .TRLUN. an TRACE. Der Testlauf wird mittels T-bit organisiert. Anwenderprogramme 288 duerfen deshalb selbst nicht das T-bit veraendern oder den BPT- Befehl benutzen. 10.12.3. Zusammenarbeit TRACE - TKB 1630(OMEX) ---------------------------------------------- TRACE steht als TRACE.OBJ unter UFD [1,1] zur Verfuegung. TKB>name.TSK=name.OBJ,[1,1]TRACE/DA ----------------------------------- TKB>/ ----- ENTER OPTIONS: TKB>GBLPAT=segname:.BIAS:bias value ----------------------------------- TKB>GBLPAT=segname:.RANGE:low(1):high(1):...:low(4):high(4) ----------------------------------------------------------- TKB>// ------ Die Zuweisung der Anfangsadresse (bias value) und die Definition von Protokollbereichen erfolgt mittels der TKB-Option GBLPAT. Fuer segname ist der Name des Task-Wurzelsegments (root segment) anzugeben. Fuer low(n) bzw. high(n) sind die Oktalwerte der auf die Anfangs- adresse (bias value) bezogenen Protokollbereichsadressen anzuge- ben. Es koennen bis zu n=4 Protokollbereiche vereinbart werden. Werden Protokollbereiche definiert, muessen immer b e i d e Grenzen (low und high) angegeben werden. Beispiel: --------- TKB>TEST=PROG,[1,1]TRACE/DA --------------------------- TKB>/ ----- ENTER OPTIONS: TKB>GBLPAT=PROG:.BIAS:41176 --------------------------- TKB>GBLPAT=PROG:.RANGE:0:426 ---------------------------- TKB>// ------ >INS TEST ------------ >REA TEST 7 LP0: ------------------- >RUN TEST ------------ Die Anwendertask TEST beginnt mit der Adresse 41176. Alle Befehle innerhalb der Grenzen 000000 bis 000426 (einschliesslich und relativ zur Anfangsadresse) verursachen die Ausgabe des TRACE- Protokolls. Die LUN fuer das Protokollgeraet CL: ist n+1, wobei normalerweise n gleich 6 ist. Mit dem REA-Kommando kann dieser LUN das LP0:- Geraet zugewiesen werden. 289 10.12.4. TRACE-Protokoll ------------------------ Allgemeiner Protokollaufbau --------------------------- rrrrrr aaaaaa nnnnnn ssssss dddddd 000000 111111 222222 333333 444444 555555 666666 (666666) Bedeutung --------- rrrrrr aktueller PC relativ aaaaaa aktueller PC absolut nnnnnn naechster PC absolut ssssss Inhalt des PS dddddd Inhalt des DSW 000000 Inhalt von R0 111111 Inhalt von R1 222222 Inhalt von R2 333333 Inhalt von R3 444444 Inhalt von R4 555555 Inhalt von R5 666666 Inhalt von R6 (Stackpointer) (666666) Inhalt des aktuellen Stacks Beispiel: 000000 041176 041202 000030 000001 120060 100076 000000 143077 002317 000002 041176 012700 000004 041202 041206 000030 000001 120060 177777 000000 143077 002317 000002 041176 012700 10.12.5. Generierung des TRACE ------------------------------ Die Generierung des TRACE erfolgt beim Entwickler. Eine anwender- bezogene Generierung ist nicht erforderlich. 10.12.6. Speicherplatz- und Rechenzeitbedarf fuer TRACE ------------------------------------------------------- TRACE belegt im Anschluss an das Anwenderprogramm 1210(oktal) Bytes. Eine Zeitverzoegerung bei der Programmabarbeitung tritt durch die Protokollausgabe ein. Sie ist je nach Geraetetyp unterschiedlich gross. Der Rechenzeitbedarf fuer TRACE selbst ist demgegenueber vernachlaessigbar klein. Ein echtzeitgleicher Test ist mit TRACE n i c h t moeglich! 290 11. Testprogramm ZAP 1630(OMEX) ------------------------------- 11.1. Vorbemerkungen -------------------- Das Testprogramm ZAP gestattet, Dateien von Datentraegern mit Dateiformat OMOS 1630 zu pruefen und zu modifizieren. Die Kom- mandosprache entspricht weitgehend der der Testprogramme DEP/ODT 1630(OMEX). ZAP wird im Gegensatz zum DEP/ODT nicht mit der zu testenden Task verbunden. Fuer die Arbeit mit ZAP muessen Informationen ueber die zu tes- tenden Dateien aus den Tabellen des Assemblers bzw. des Taskbil- ders bereitgestellt werden. Diese grundsaetzlichen Informationen (physische Adressen, Groessenangaben) werden in den ZAP- Kommandos benutzt und gestatten so den Zugriff zu Speicherplaet- zen bzw. Adressen. ZAP stellt verschiedene Arbeitsmittel zur Verfuegung: Schalter (/sw) Sie ermoeglichen vor dem Eroeffnen der zu testenden Datei einen bestimmten Arbeitsmodus einzustellen (s. Abschn. 11.3). Interne Register Es stehen Werteregister, Formatregister und 8 Verschie- beregister zur Verfuegung. Einfache Zeichenkommandos Sie ermoeglichen in Verbindung mit anderen Kommandozei- lenelementen das Oeffnen, Ausgeben, Modifizieren und Schliessen von Adressen in Task-Abbildungsdateien und Datendateien. 11.2. Kommandosyntax -------------------- ZAP wird mittels der fuer Systemprogramme ueblichen Kommandos aktiviert worauf es nach der Ausschrift "ZAP> " eine Kommando- zeile folgender Syntax anfordert: filespecification [/sw] _ ZAP-command-line Die Dateispezifikation (filespecification) ist entsprechend der, in der Anleitung fuer den Bediener, Teil 2 (OMEX), festge- legten Form anzugeben. Eine ZAP-Kommandozeile (ZAP-command-line, s. Abschn. 11.4.) wird mit dem Unterstreichungszeichen "_" ange- fordert. Es ist nicht moeglich, Einzeilenkommandos zu geben. Die Arbeit von ZAP kann mit CTRL/Z oder X abgebrochen werden. Die in ZAP angenommen Standards entsprechen den in OMEX ueblichen. Fuer den Dateityp gilt der Standard .TSK . 291 Beispiel: Die Identifikationsnummer der Version einer Task (hier ZAP) kann im Labelblock im 2-ten und 3-ten Wort abgefragt werden. Das glei- che Ergebnis wird durch Benutzung des /ID-Schalters erzielt. ZAP> [1,54]ZAP.TSK/AB/RO _0:2004% _0:2006% _ 11.3. Schalter -------------- Die in ZAP vorhandenen Schalter stellen einen der drei moeglichen Modi ein: - Task Image Modus - Absolutmodus - Lesemodus Tabelle 49: ZAP - Schalter ----------------------------------------------------------------- | Schalter | Funktion | |---------------------------------------------------------------| | | | | /AB | ZAP interpretiert die in der | | | Kommandozeile angegebene Adresse als absolute | | | Byte-Adresse der spezifizierten Datei. Dieser | | | absolute Modus ist besonders fuer Dateien | | | geeignet, die keine Task-Abbilddateien sind. | | | Wird /AB nicht angegeben, so beziehen sich die | | | Adressen ( wie bei ODT ) auf die Adressen in der | | | Ladetabelle der Tasks. | | | | | /LI | Dieser Schalter bewirkt die Ausgabe des | | | Startblocks und der Adressgrenzen einer Datei | | | fuer alle Ueberlagerungssegmente mit dem | | | Format: | | | aaaaaa : bbbbbb - cccccc | | | mit | | | aaaaaa - Startblock oktal | | | bbbbbb - niedrigste Adressgrenze oktal | | | cccccc - hoechste Adressgrenze oktal | | | | | /RO | ZAP eroeffnet die angegebene Datei im Lesemodus, | | | d.h. alle Aenderungen, die sich bei der weiteren | | | ZAP-Arbeit in der Task-Abbilddatei ergeben, sind | | | nach dem Verlassen von ZAP hinfaellig. | | | | | /ID | Ausgabe der Identifikationsnummer der ZAP-Task | | | | ----------------------------------------------------------------- 292 11.4. ZAP-Kommandos ------------------- 11.4.1. Aufbau der Kommandos ---------------------------- ZAP-Kommandos gestatten das Pruefen und Modifizieren von Adres- seninhalten in Tasks und Datendateien. Die Kommandozeilen umfassen Kombinationen folgender Elemente: - Oeffnende und schliessende Kommandos - Interne Register - Arithmetische Operatoren - Kommandozeilenseparatoren - Aktualisierendes Symbol Am Schluss jeder Zeile muss stehen. 11.4.1.1. Formate einer ZAP-Kommandozeile ----------------------------------------- In ZAP gibt es drei verschieden Formate der Zugriffsmoeglichkeit zu Speicherinhalten. Byte-Offset-Format Block-Nummer:Byte-Offset-Format Verschieberegister, Byte-Offset-Format Byte-Offset-Format Dieses Format ist hauptsaechlich im Absolutmodus anzuwenden. ZAP interpretiert die angegebene Adresse als Byte-Offset vom Block 1 aus, der mit Adresse 000000 beginnt. Im Task-Abbildmo- dus interpretiert ZAP die Byte-Adresse als Offset von Block 0 Adresse 000000. Block-Nummer : Byte-Offset-Format Diese Form der Adressierung kann im Zusammenhang mit dem /AB- Schalter verwendet werden. Dabei ist es erforderlich, die Anga- ben des Taskbilders ueber den genauen Beginn der Datei zu ken- nen, d.h. Blocknummer des ersten Blocks der Datei und Starta- dresse. Verschieberegister,Byte-Offset-Format Mit gesetztem Verschieberegister gestattet diese Form der Adressierung einen relativen Zugriff zu Speicherplaetzen. 293 11.4.1.2. Uebersicht ueber die ZAP-Kommandos -------------------------------------------- Die in der folgenden Tabelle zusammengefassten Kommandos koennen nach dem Einstellen des gewuenschten Modus (mit Schalter) ange- wendet werden. Tabelle 50: ZAP - Kommandos ----------------------------------------------------------------- | Kommando | Funktion | |---------------------------------------------------------------| | | | | R | Setzen eines Wertes im Verschieberegister | | | bzw. Loeschen aller Verschieberegister | | | | | / | Oeffnen einer Adresse, Inhalt oktal ausgeben, | | | Abspeichern im Register Q. Falls die Adresse | | | ungerade ist, so wird das Byte eroeffnet. | | | | | " | Oeffnen einer Adresse, Inhalt im KOI-7-Code | | | ausgeben, Abspeichern im Q-Register. | | | | | % | Oeffnen einer Adresse, Inhalt im RADIX-50- | | | Format ausgeben. | | | | | \ | Oeffnen der Byteadresse und oktale Ausgabe, | | | abspeichern im Q-Register. | | | | | ' | Oeffnen der Byteadresse, Inhalt als ein | | | KOI-7-Zeichen ausgeben und im Q-Register | | | abspeichern. | | | | | ^ | Schliessen der Adresse und Oeffnen der | | | vorhergehenden Adresse | | | | | _ | Schliessen der aktuellen Adresse und Oeffnen | | | der aktuellen Adresse plus ihrem Inhalt als | | | Offset. | | | | | @ | Schliessen der aktuellen Adresse und Oeffnen | | | der absoluten Adresse bezueglich des Inhalts. | | | | | > | Schliessen der aktuellen Adresse, interpretieren| | | des niederwertigen Bytes als relativen Sprung- | | | offset und Eroeffnen dieser Adresse. | | | | | < | Schliessen der aktuellen Adresse, Rueckkehr | | | zum letzten _, @, /, > Kommando und | | | Oeffnen der darauffolgenden Adresse. | | | | | K | Errechnen des Offsets in Byte zwischen aktu- | | | eller Adresse und dem Wert, der in einem Ver- | | | schieberegister enthalten ist. Der Wert wird | | | gezeigt und im Q-Register gespeichert. | | | | | O | Ausdrucken der Sprunggroesse von aktueller | | | Adresse bis angegebener Adresse. | | | | ----------------------------------------------------------------- 294 Tabelle 50: (Fortsetzung) ----------------------------------------------------------------- | Kommando | Funktion | |---------------------------------------------------------------| | = | Ausdrucken des Wertes des Terms links vom | | | Gleichheitszeichen. | | | | | V | Pruefen des Inhalts der aktuellen Adresse. | | | | | X | Beenden der ZAP-Arbeit, Rueckkehr zum MCR. | | | | | . | Aktueller-Adress-Operator, der die momentan | | | aktuelle Adresse verkoerpert. | | | | | | Das bewirkt das Schliessen der Adresse | | | und Eroeffnen der darauffolgenden Adresse. | | | | ----------------------------------------------------------------- 11.5. Kommandos und Beispiele der Anwendung ------------------------------------------- In den folgenden Punkten werden die in der obigen Uebersichtsta- belle beschriebenen Kommandos erlaeutert und mit Beispielen ihrer Wirkungsweise belegt. 11.5.1. ZAP-Interne Register ---------------------------- Die internen Register sind feste Zellen, die Werte aufnehmen und bereitstellen koennen. ZAP bearbeitet die folgenden Register: 0R bis 7R Verschieberegister 0 bis 7. Sie werden durch den Bediener mit den vom Taskbilder angegebenen Basisadressen geladen und ermoeglichen so einen schnellen Zugriff zu verschiedenen Adressen. C - Register Dieses Register nimmt Konstanten (16 bit) auf. F - Register Das Format-Register kontrolliert das dargestellte Format. Ist die Groesse in F gleich 0, so ist die dargestellte Adresse relativ zum naechstliegenden Verschieberegister, deren Inhalt kleiner als die absolute Adresse ist. Ist der Wert in F un- gleich 0, so wird die Adresse absolut dargestellt. Im An- fangszustand ist F=0. Q - Register Im Q-Register steht der Wert der von ZAP zuletzt bearbeiteten Adresse. Den Inhalt der Register kann man mit folgendem Kommando setzen: _$nR/ - Ausgabe oktal ---- $r/000000 _40000 - Belegen des n-ten Verschiebe- ----- registers mit 40000 295 11.5.2. Kommandos fuer die Ein-und Ausgabe ------------------------------------------ 11.5.2.1. Eroeffnen von Speicherzellen in einer Taskabbilddatei --------------------------------------------------------------- Die Kommandos /, ", %, ` und ' bewirken das Oeffnen einer Adresse. Ist eine Adresse geoeffnet, so kann ihr Inhalt ausge- tauscht werden. Die folgende Kommandokette zeigt den Bearbeitungsgang, um eine Adresse oeffnen, modifizieren und schliessen zu koennen. ZAP>Z.TSK/LI -------- . . . _002:40000/ ---------- 002:040000/ 000000 _44444 ----- _/ - 002:040000/ 044444 Abweichend vom DEP/ODT 1630(OMEX) tritt bei ZAP die Kommandowirk- samkeit erst nach ein, d.h. eine Kommandozeile kann mit CTRL/U korrigiert werden (s. Abschn. 11.2.). 11.5.2.2. Schliessen einer Speicherzelle ---------------------------------------- Es gibt 5 Zeichenkommandos, die eine Adresse in der Taskabbild- datei schliessen. Die schliessenden Kommandos haben mehrere Funktionen: - Schliessen der aktuellen Adresse - Aufsuchen einer anderen Adresse - Oeffnen dieser Adresse Das folgende Beispiel demonstriert die Wirkungsweise der schlies- senden Kommandos. ZAP>Z.TSK/AB Eroeffnen der Datei im Absolutmodus -------- _2:40000;R Setzen des Verschieberegisters 0 --------- _0,16/ Oeffnen und oktale Ausgabe der ----- Adresse 40016 002:0,000016/ 001740 _^ Schliessen der Adresse und Oeffnen - der vorhergehenden Adresse. 002:0,000014/ 000017 _10 Belegen der Adresse 40014 mit 10 -- __ Schliessen der aktuellen Adresse und - Oeffnen der aktuellen Adresse plus ihrem Inhalt als Offset. 002:0,000026/ 000000 296 _40016 In die Adresse 40026 wird der Wert ----- 40016 geschrieben. _@ Dieses Kommando oeffnet die in der - aktuellen Adresse stehende Adresse absolut 002:0,000016/ 001740 _> Schliessen der aktuellen Adresse - 40016 und Oeffnen der aktuellen Adresse plus ihr niederwertiges Byte als Offset. 002:0,000360/ 000000 _< Schliessen der aktuellen Adresse und - Oeffnen der Adresse, die vor einer Serie von den oben demonstrierten Kommandos bearbeitet wurde. 002:0,000014/ 000010 11.5.2.3. -Kommando ------------------------ Das Kommando bewirkt das Schliessen der aktuellen Adresse und Oeffnen der darauffolgenden Adresse. Eine weitere Funktion des Kommandos besteht darin, eine gewuenschte Austauschoperation auszuloesen. Beispiel: _002:40000/ Eingabe ---------- 002:40000/ 000000 Ausgabe des Inhalts _ Es soll die naechste Ardesse ---- eroeffnet werden. 002:40002/ 041470 _10 Eintragen eines neuen Wertes -- _/ - 002:40002/000010 11.5.3. Test-Kommandos ---------------------- Die allgemeinen Testkommandos erlauben dem Nutzer, Informationen ueber die Arbeit mit ZAP bzw. Teststaende zu erfragen. 11.5.3.1. Berechnen von Offsets und Abspeichern im Werteregister ---------------------------------------------------------------- Das K-Kommando errechnet das Offset zwischen dem naechstniedri- gerem Verschieberegister und der aktuellen Adresse und speichert den errechneten Wert im Q-Register ab. Format: K Es wird der Abstand (Byte) der Adressen von der zuletzt geoeffneten Speicherzelle bis zum naechst- niedrigeren Verschieberegister errechnet. nK wie bei K, und das n-te Verschieberegister ist die Bezugsgrenze 297 a;nK Es wird der Abstand zwischen Adresse a und dem n-ten Verschieberegister errechnet. ZAP reagiert auf das K-Kommando mit der Ausschrift des benutzten Verschieberegisters und dem errechneten Offset in der Form: =Verschieberegister,Offset Beispiel: (Das Beispiel schliesst an das obige an.) _K - =0,000014 _0,100;K -------- =0,000100 11.5.3.2. Berechnen der Verzweigungsoffsets ------------------------------------------- Im niederwertigen Byte eines Verzweigungsbefehls steht das ent- sprechende Sprungoffset. Das O-Kommando berechnet das Sprungoff- set und gibt den Wert des im Verzweigungsbefehl stehenden nieder- wertigen Bytes an. Format: aO Errechnet das Sprungoffset bezueglich der aktuellen Adresse a;kO Errechnet entsprechende Werte bei Sprung von Adresse a zu Adresse k Beispiel: (Das Beispiel schliesst an das obige an.) _0,10O ----- _000006 >000003 11.5.3.3. Berechnen von Termen ------------------------------ Mit dem Gleichheitszeichen (=) kann oktal der Wert links vom Gleichheitszeichen berechnet werden. Format: Term = Beispiel: _2+4= ---- 000006 _C+10= Das Konstantenregister ist mit 10 belegt 000020 _10-6= ----- 000002 298 11.5.3.4. Pruefen des Inhalts einer Adresse ------------------------------------------- Das V-Kommando ist besonders fuer Indirektkommandodateien geeig- net. Es prueft den Inhalt der aktuellen Adresse und modifiziert ihn bei Gleichheit. Bei Abweichung vom angegebenen Wert wird die ZAP-Arbeit abgebrochen. Format: aV mit a - spezifizierter Wert Die Ausfuehrung dieses Kommandos erfolgt ohne Protokollierung. Sollte der Test negativ verlaufen, so wird eine Fehlermeldung ausgegeben. 11.5.3.5. Aktueller-Adress-Operator ----------------------------------- In ZAP bezieht sich die Adressausgabe bei Verwendung des vorge- ten Punktes immer auf die zuletzt geoeffnete Adresse. Beispiel: 002:40002' A letzte Ausgabe _.+14/ ----- 002:400016/ 001740 Diese Adresse ist nun geoeffnet. 11.6. Fehlermitteilungen ------------------------ Die folgenden Fehlermeldungen sind in ZAP generiert. ZAP -- ADRESS NOT WITHIN SEGMENT Die spezifizierte Datei ist nicht im angegebenen Segment enthalten. ZAP -- CANNOT BE USED IN BYTE MODE Die Kommandos @ , ', > duerfen nicht angewendet werden, wenn eine Byteadresse geoeffnet ist. ZAP -- ERROR IN FILE SPECIFICATION Die Dateispezifikation ist fehlerhaft. ZAP -- ERROR ON COMMAND INPUT Waehrend des Lesens des Kommandos trat ein Ein-/Ausgabe- fehler auf, der auch geraeteabhaengig sein kann. ZAP -- I/O ERROR ON TASK IMAGE FILE Beim Modifizieren einer Datei trat ein Eingabe- bzw. Ausgabefehler auf, der auch geraetebedingt sein kann. ZAP -- NO OPEN LOCATION Es wurde versucht, eine nicht geoeffnete Speicherzelle zu modifizieren. ZAP -- NO SUCH INTERNAL REGISTER Das dem Dollarzeichen folgende ist keine zulaessige Spezi- fikation fuer ein internes Register. 299 ZAP -- NO SUCH RELOCATION REGISTER Die Nummer des angegebenen Verschieberegisters ist nicht zulaessig. ZAP -- NO SUCH SEGMENT Der erste Plattenblock ist nicht der Anfang eines Segments des Task-Abbilds. ZAP -- NOT TASK IMAGE OR NO TASK HEADER Ein Fehler trat waehrend des Bildens des Segmentbeschrei- bungsblocks auf. Moegliche Ursachen sind: Die Datei ist kein Task-Abbild, /AB ist nicht spezifiziert, Das Task-Abbild ist zerstoert. ZAP -- NOT IMPLEMENTED Das gegebene Kommando ist erkannt, aber in ZAP nicht er- laubt. ZAP -- OPEN FAILURE FOR TASK IMAGE FILE Die spezifizierte Datei kann nicht geoeffnet werden. Moegliche Ursachen: Die Datei existiert nicht Die Datei ist zugriffsgeschuetzt Das angesprochene Geraet ist nicht bereit Die Datei ist schreibgeschuetzt ZAP -- SEGMENT TABLE OVERFLOW ZAP hat in seiner Partition nicht genuegend Platz, um die geforderte Segmenttabelle aufzubauen. ZAP -- TOO MANY ARGUMENTS In einer Kommandozeile wurden zu viele Argumente an- gegeben. ZAP -- UNRECOGNIZED COMMAND ZAP erkennt das Kommando nicht (Syntaxfehler). ZAP -- VERIFY FAILURE Das Verify-Kommando ergab keine Uebereinstimmung des Spei- cherplatzinhalts mit dem angegeben Wert. 300 12. Abbruchanalyseprogramm CDA 1630(OMEX) ----------------------------------------- 12.1. Vorbemerkungen -------------------- CDA hilft dem Anwender nach Systemabstuerzen (system crashes) des OMEX 1630 Informationen aus dem Speicherabzug (memory dump) zu erhalten, den das Abbruchprogramm des OMEX (crash dump routine) bei einem Systemabbruch aufbaut. Die von CDA aufbereiteten Informationen koennen als Listen auf dem Drucker ausgegeben werden. CDA ist eine nichtprivilegierte Task und kann von nichtprivilegierten Nutzern gestartet werden. Beim Auftreten folgender Bedingungen kann vom Bediener der Sys- temabbruch eingeleitet werden: - HALT-Befehl (000000), - unendliche Schleife, - erfuellte Trapbedingung. Wenn XDT Bestandteil der Exekutive ist, dann wird ein zum System- abbruch fuehrender Trap von XDT protokolliert. Mit dem Kommando X wird XDT abgebrochen und die Abbruchroutine gestartet. Ist XDT nicht im System generiert, dann wird das Abbruchprogramm des OMEX ohne Eingriff des Bedieners selbstaendig gestartet. Falls der Systemabbruch durch einen HALT-Befehl oder eine unend- liche Schleife notwendig wird, muss der Prozessor ab Adresse 40 gestartet (Restart) werden, um das Abbruchprogramm des OMEX zu erreichen. Wenn das Abbruchprogramm des OMEX gestartet wird, erfolgt die Mitteilung : CRASH -- CONT WITH SCRATCH MEDIA ON (device-mnemonic) Der Nutzer muss das sekundaere Speichergeraet (crash dump device) "on-line" schalten und mittels Kommando P ueber das Bediengeraet die Arbeit fortsetzen. Die OMEX-Abbruchroutine gibt ein Abbruch- protokoll aus, uebertraegt danach den Inhalt des gesamten Haupt- speichers auf das sekundaere Speichergeraet und stoppt den Pro- zessor. Dieser Speicherabzug ist die Grundlage fuer die Analyse mit CDA. Anmerkung: Die CDA-Unterstuetzung des OMEX ist generierbar und wird bei der Systemgenerierung (SYSGEN) beruecksichtigt. 12.2. Kommandosyntax -------------------- Das allgemeine CDA-Kommando hat folgendes Format: [listfile/sw],[binary-file/sw]=symbol-file/STB,crash-input[/sw] 301 Die Dateispezifikationen haben folgende Bedeutung: [listfile] CDA-Ausgabeliste (s. Abschn. 12.5.) [binary-file] Binaerdatei. Diese Datei ist eine Kopie der Datei, die auf dem Geraet fuer den Systemabbruch von der OMEX-Abbruchrou- tine ausgegeben wurde. Diese Datei kann als CDA-Eingabedatei zu einem spaeteren Zeitpunkt benutzt werden. symbol-file/STB Symboldefinitionsdatei. Die Dateispezi- fikation OMEX und der Schalter /STB muessen unbedingt angegeben werden. crash-input Binaere Eingabedatei. Die Spezifikation kann lediglich aus dem Geraetenamen des sekundaeren Speichergeraets bestehen oder sich auf eine Binaerdatei beziehen. Wird die Dateispezifikation angegeben, darf links vom Gleichheitszeichen keine Binaerdatei angegeben werden. [/sw] CDA-Schalter (s. Abschn. 12.4.). Die Schalter sind an eine bestimmte Datei- spezifikation gebunden und duerfen nicht allein stehen. [] Klammern schliessen eine wahlweise An- gabe ein. Die Spezifikationen auf der Ausgabeseite (links vom Gleichheits- zeichen) sind positionsgebunden. Wird z.B. "listfile" weggelassen und "binary-file" angegeben, dann beginnt das Kommando mit einem Komma. Auf der Eingabeseite (rechts vom Gleichheitszeichen) sind die Spezifikationen positionsunabhaengig. Werden Spezifikationsteile weggelassen, gelten folgende Stan- dards: Tabelle 51: CDA - Dateistandards Datei Geraet UFD Dateiname Typ ---------------------------------------------- listfile SY: aktuell - .LST binary-file SY: aktuell - .CDA symbol-file/STB SY: aktuell - .STB crash-input SY: aktuell - .CDA ---------------------------------------------- Folgende Beispiele illustrieren die Anwendung der Standards. Dabei wird vorausgesetzt, dass der Nutzer unter UFD [200,6] ar- beitet und als sekundaeres Speichergeraet MT1: vereinbart ist. CDA> OUT,BIN=OMEX.STB/STB,MT1: ------------------------- 302 CDA erstellt OUT.LST und BIN.CDA im UFD [200,6]. Die von MT1: gelesene Eingabedatei wird auf der Basis der Symboldefinitions- datei OMEX.STB im UFD [200,6] analysiert. Da als Eingabedatei ein Geraet (keine Datei) spezifiziert ist, darf links vom Gleich- heitszeichen eine Binaerdatei spezifiziert werden. CDA> ,BIN=[1,2]OMEX/STB,MT1: ------------------- CDA erstellt BIN.CDA im UFD [200,6]. Die Analyse erfolgt auf Basis der Symboldatei OMEX.STB im UFD [1,2]. Der Schalter ist ohne zugehoerige Dateispezifikation unzulaessig! CDA> LP:=BIN ------- CDA gibt auf dem Drucker LP: die Listdatei aus. Die Analyse von BIN.CDA im UFD [200,6], die im vorhergehenden Lauf erstellt wur- de, erfolgt auf Basis von OMEX.STB unter UFD [200,6]. Die Kommunikation mit CDA kann auch ueber eine Indirektkommando- Datei erfolgen. Dabei ist zu beachten, dass nur eine Indirekt- ebene erlaubt ist. Eine CDA-Kommandodatei darf keine weitere Indirektkommando-Datei aufrufen. 12.3. Schalter -------------- Mittels Schalter (/sw) wird die Arbeit des CDA gesteuert. Es gibt zwei Arten von Schaltern, Analyse- und Funktionsschalter. Die Analyseschalter bestimmen die jeweilige Analyseroutine des CDA. Sie sind an die Spezifikation der Eingabedatei gebunden. Funktionsschalter definieren eine Zahl von Steueroperationen (z.B. Anzahl der Listenseiten). Beide Schaltertypen sind datei- spezifisch. Sie duerfen nicht allein stehen oder einer weiteren Datei zugeordnet werden. 12.3.1. Analyseschalter ----------------------- Schalter /ACT oder /ATL ----------------------- Bei Angabe des Schalters /ACT werden die Inhalte der Tasksteuer- bloecke (task control blocks TCB) ausgegeben. Schalter /ADV, /DEV, /DCB, /SCB oder /UCB ----------------------------------------- Bei Angabe eines der angefuehrten Schalter wird der Inhalt der Steuerbloecke fuer alle Geraete im System ausgegeben. Schalter /CLI oder /CPB ----------------------- Bei Angabe des Schalters /CLI bzw. /CPB wird der Inhalt der CLI- Analysebloecke (CPB's), die im System installiert sind, ausgege- ben (MCR, DCL). Schalter /CLQ ------------- Bei Angabe des Schalters /CLQ werden die Inhalte der Uhrwarte- schlange (clock queue) ausgegeben. 303 Schalter /DEV ------------- Bei Angabe des Schalters /DEV werden die Informationen ueber alle systembekannten Geraete (device control blocks DCB) aufgelistet. Schalter /DUMP:a:b[:c] oder /DMP:a:b[:c] ---------------------------------------- Bei Angabe des Schalters /DUMP bzw. /DMP werden die Inhalte des physischen Speichers zwischen den Adressen a und b (einschliess- lich) ausgegeben. Wird der wahlfreie Parameter c angegeben, sind die Adressen mit Pseudovirtualadressen, beginnend mit c, mar- kiert. Schalter /HDR ------------- Bei Angabe des Schalters /HDR wird das Systemtaskverzeichnis (system task directory,STD) ausgewertet, und es werden die Task- koepfe (task headers) aller speicherresidenten Tasks ausgegeben. Schalter /PCB oder /PAR ----------------------- Bei Angabe des Schalters /PCB bzw. /PAR werden die Speicherbele- gung (occupants of memory) und die Inhalte eines jeden Partition- steuerblockes (partition control block, PCB) ausgegeben. Schalter /POOL -------------- Bei Angabe des Schalters /POOL wird der dynamische Systemspeicher in den Formaten oktal, RADIX 50 und KOI 7 ausgegeben. Schalter /TASK=name:a:b, /TAS oder /TSK --------------------------------------- Bei Angabe des Schalters /TASK=name:a:b wird der virtuelle Adressbereich der Task "name" zwischen den virtuellen 16-bit- Adressen a...b (einschliesslich) ausgegeben. Werden die Adressen a und b nicht angegeben, wird der gesamte Taskbereich ausgegeben. Schalter /STD, /TCB oder /TAL ----------------------------- Bei Angabe des Schalters /STD, /TCB oder /TAL wird von CDA das Systemtaskverzeichnis (system task directory, STD) analysiert, und es werden alle eingetragenen Tasksteuerbloecke (TCB) ausgege- ben. Schalter /-SYS -------------- Bei Angabe des Schalters /-SYS wird die Ausgabe der Systeminfor- mationen unterdrueckt. Schalter /ALL ------------- Bei Angabe des Schalters /All werden die nachstehenden Informa- tionen in der angegebenen Reihenfolge ausgegeben: 1) Systeminformationen 2) aktive Tasks 3) Taskkoepfe 4) Partitioninformationen 5) Geraeteinformationen 6) Uhrwarteschlange 7) dynamischer Systemspeicher 304 12.3.2. Funktionsschalter ------------------------- Schalter /BL:n -------------- Bei Angabe des Schalters /BL:n liest CDA die Eingabedatei begin- nend ab Block n. Der Schalter hat nur Wirkung, wenn die Eingabe- datei eine Plattendatei ist. Bei allen uebrigen Geraeten wird der Schalter ignoriert. Fuer n duerfen nur Werte kleiner 65535 (dezimal) angegeben werden. Der Standardwert ist n=1. Der Schalter ist der Datei "crash-input" zugeordnet. Schalter /EXIT:n ---------------- Bei Angabe des Schalters /EXIT:n wird ein Abbruchzaehler defi- niert. Bei mehr als n Analysefehlern wird die Analyse abgebro- chen. Wird der Schalter ohne Angabe von n verwendet, erfolgt der Analyseabbruch nach dem ersten Fehler. Fuer n gibt es keinen Standardwert. Der Schalter ist der Datei "listfile" zugeordnet. Schalter /LINES:n ----------------- Bei Angabe des Schalters /LINES:n wird der Zeilenzaehler ge- stellt. Die Zeilenanzahl n darf maximal 80 Zeilen pro Seite be- tragen. Die Anwendung des Schalters ist nur dann sinnvoll, wenn der Protokolldrucker eine Umschaltung auf 8 Zeilen pro Zoll be- sitzt. Der Standardwert ist n=60 (dezimal). Der Schalter ist der Datei "listfile" zugeordnet. Schalter /LIMIT:n ----------------- Bei Angabe des Schalters /LIMIT:n wird ein Seitenzaehler defi- niert. Wenn CDA n Seiten generiert hat, erfolgt der Analyseab- bruch, und es wird darueber auf dem Bediengeraet eine Mitteilung ausgegeben. Der Standardwert ist n=300 (dezimal). Der Schalter ist der Datei "listfile" zugeordnet. Schalter /KMR ------------- Wenn CDA unter einem System mit Adresszuweisung arbeitet und falsche Seitenadressregister-Werte (page address register, PAR) vom Abbruchkellerspeicher (crash stack) liest, bricht es die Analyse ab und gibt eine Mitteilung auf dem Bediengeraet aus. In diesem Falle ist die Analyse bei Angabe des Schalters /KMR zu wiederholen. Dieser Schalter veranlasst CDA, die virtuellen Kern- adressen in physische Speicheradressen umzubilden. Der Schalter ist der Datei "crash-input" zugeordnet. 305 Schalter /-SP ------------- Die Ergebnislisten der Analyse ("listfile") werden nicht mittels Print-Spooler (abhaengige Task PRT) auf dem Drucker ausgegeben. Es wird eine Listendatei auf dem spezifizierten Geraet eroeffnet. Wurde kein Geraet angegeben, wird als Geraet SY0: angenommen. Der Schalter ist der Datei "listfile" zugeordnet. Schalter /STB ------------- Der Schalter /STB definiert die Datei, die die Symboldefinitionen der Exekutive enthaelt. Diese Datei muss mit dem Abbruchsystem (crash system) korrespondieren. Wird ein Symbol nicht gefunden, gibt CDA eine Mitteilung auf dem Bediengeraet aus. Standardtyp fuer die Datei ist .STB. Der Schalter ist immer bei der Datei "symbol-file" anzugeben. Die Angabe des Schalters ohne Dateispezifikation ist unzulaessig. 12.3.3. Zusammenstellung der CDA-Schalter ----------------------------------------- Tabelle 52: CDA - Analyseschalter Schalter Bedeutung Dateizuordnung ---------------------------------------------------------- /ACT TCB der aktiven Task crash-input /ATL - " - /ADV DCB-Inhalte crash-input /DEV -"- /DCB -"- /SCB -"- /UCB -"- /ALL alle Analysen crash-input /CLI CPB's des System crash-input /CPB -"- /CLQ Uhrwarteschlange crash-input /DUMP:a:b:c Speicherabzug crash-input /DMP:a:b:c -"- /HDR Taskkoepfe crash-input /PCB Partitionbelegung crash-input /PAR -"- /POOL Systemspeicher crash-input /-SYS Unterdruecken der crash-input Systeminformationen /TASK:name:a:b Taskabzug crash-input /TAS:name:a:b -"- /TSK:name:a:b -"- /STD STD-Inhalte crash-input /TAL -"- /TCB -"- 306 Tabelle 53: CDA - Funktionsschalter Schalter Bedeutung Dateizuordnung Standard ---------------------------------------------------------- /BL:n Startblocknummer crash-input n=1 /EXIT:n Fehlergrenze listfile --- /LINES:n Zeilenanzahl listfile n=60. /LIMIT:n Seitenanzahl listfile n=300. /KMR PAR-Konvertierung crash-input /-KMR /-SP "Spooling" listfile /SP /STB Symboldatei symbol file OMEX.STB ---------------------------------------------------------- 12.4. CDA-Ausgabelisten ----------------------- Jede CDA-Ausgabe beginnt mit sechs Seiten Systeminformationen. Falls die Fehlerregistrierung (error logging) aktiver Bestand- teil des Systems ist und Fehlerregistrierpakete im Pool eingetra- gen sind, wird eine weitere Seite mit dem Inhalt des Error-log- Puffers ausgegeben. Sind zum Zeitpunkt des Systemabsturzes Grup- penglobalereignisflags im Speicher registriert, werden diese Informationen von CDA ebenfalls auf einer Seite protokolliert. 12.4.1. Systeminformationen --------------------------- 12.4.1.1. Seite 1: "VOLATILE REGISTERS" --------------------------------------- Die erste Seite der Systeminformationen "VOLATILE REGISTERS" enthaelt folgende Informationen: - PS und SP (Kernel/User) nach dem Abbruch - PC und PS unmittelbar vor dem Abbruch (diese Werte sind nur gueltig, wenn das System einen Trap ausgefuehrt hat) - allgemeine Register R0 ... R5 - SVE-Register (memory management registers) MMR0...MMR3 - Seitenadressregister (PAR) und Seitenbeschreibungsre- gister (PDR) 307 Protokoll: "VOLATILE REGISTERS" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 1 VOLATILE REGISTERS AFTER CRASH: PS=000340 SP(K)=000552 SP(U)=001610 BEFORE CRASH: PC=124724 PS=030011 R0=012760 R1=000006 R2=010360 R3=177326 R4=056703 R5=000401 MMR0=000017 MMR1=000000 MMR2=002174 MMR3=000000 U S E R I S P A C E D S P A C E PDR PAR PDR PAR 077406 000000 000000 000000 077406 000200 030341 030341 077406 000400 030341 030341 077406 000600 030341 030341 000000 001000 030341 030341 037406 000500 030341 030341 000000 001000 030341 030341 077406 007600 030341 030341 S U P E R V I S O R I S P A C E D S P A C E PDR PAR PDR PAR 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 030341 K E R N E L I S P A C E D S P A C E PDR PAR PDR PAR 077506 000000 000000 000000 077506 000200 030341 030341 077506 000400 030341 030341 077406 000600 030341 030341 077406 001000 030341 030341 077406 000500 030341 030341 077406 001000 030341 030341 007506 007600 030341 030341 308 12.4.1.2. Seite 2: "KERNEL STACK" --------------------------------- Die zweite Seite der Systeminformationen "KERNEL STACK" enthaelt einen Speicherabzug des Kellerspeichers, begrenzt durch die Glo- balsymbole V$$CTR und $STACK. Der aktuelle Stackpointer zeigt auf einen Platz innerhalb dieses Bereichs. Protokoll: "KERNEL STACK" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 2 KERNEL STACK KERNEL STACK: 000400 000000 000000 000000 000000 000000 000000 000000 000000 000420 000000 000000 000000 000000 000000 000000 000304 002202 000440 000304 000304 002202 040000 000304 002202 040000 002726 000460 130100 036770 002726 000304 002202 000000 031544 023744 000500 130613 000011 002054 000002 132720 002054 132526 130614 000520 000004 000001 000000 004560 037606 037256 014336 033244 000540 120513 124724 030011 003160 000002 122620 122426 120514 000560 122177 120513 124726 170000 12.4.1.3. Seite 3: "SYSTEM COMMON" ---------------------------------- Die dritte Seite der Systeminformationen "SYSTEM COMMON" enthaelt folgende Informationen: - Datum und Uhrzeit des Abbruchs (CRASH OCCURRED AT) - laufende Task zur Zeit des Abbruchs (CURRENT TASK). Ent- haelt dieses Feld "NULL TSK", so arbeitete keine Task - Adresse des ersten Wortes des TCB der aktuellen Task (TCB ADDRESS) - Systementwicklungsstufe (4-Byte-System-ID) ($SYSID) - letzte OMEX-Adresse+1 (1. freie Adresse) ($EXSIZ) - Systemgroesse in 32-Worte-Bloecken und danach die Ge- samtwortanzahl ($SYSIZ) - System-UIC ($SYUIC) - Stacktiefenzaehler (stack depth count) ($STKDP) - globales Ereignisflagwort ($COMEF) - Name des Systems - Netz-UIC ($NTUIC) - Ladegeraet (Geraet, von dem das System geladen wurde) (LOAD DEVICE) - erste logische Blocknummer des Systemabbildes (LBN) - Systemgroesse in Bloecken (FILE SIZE) - Maske der Systemleistungen (SYSTEM FEATURE MASK) und Bedeutung der gesetzten Bits - Oktalauszug des "SYSTEM COMMON" im Offsetmodus 309 Protokoll: "SYSTEM COMMON" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 3 SYSTEM COMMON CRASH OCCURRED AT 09:10:22 14-OCT-87 CURRENT TASK = ...MCR TCB ADDRESS = 046674 $SYSID = 04 $EXSIZ = 120000 $SYSIZ = 3968/124K $SYUIC = [1,54] $$STKDP = 000000 $COMEF: <33-48> 000000 <49-64> 000000 SYSTEM NAME = OMOS $NTUIC = [1,54] LOAD DEVICE = DK1 LBN = 00002436 FILE SIZE = 128. SYSTEM FEATURE MASK (FIRST WORD) = 013376 BIT SET MEANING ------- ------- MUP MULTI-USER PROTECTION SUPPORT EXV 20K EXEC SUPPORTED DRV LOADABLE DRIVER SUPPORT PLA PLAS SUPPORT CAL DYNAMIC CHECKPOINT SPACE ALLOCATION PKT PREALLOCATION OF I/O PACKETS EXP EXTEND TASK DIRECTIVE SUPPORTED OFF PARENT/OFFSPRING TASKING SUPPORTED FDT FULL DUPLEX TERMINAL DRIVER DYM DYNAMIC MEMORY ALLOCATION SUPPORTED SYSTEM FEATURE MASK (SECOND WORD) = 167000 BIT SET MEANING ------- ------- IRR INSTALL, REQUEST, AND REMOVE TASK SUPPORT GGF GROUP GLOBAL EVENT FLAG SUPPORT RAS RECEIVE/SEND DATA PACKET SUPPORT RBN ROUND ROBIN SCHEDULING SUPPORTED SWP EXECUTIVE LEVEL DISK SWAPPING SUPPORTED STP EVENT FLAG MASK IS IN THE TCB SYSTEM FEATURE MASK (THIRD WORD) = 065214 BIT SET MEANING ------- ------- CLI MULTIPLE CLI SUPPORT EIS SYSTEM REQUIRES THE EXTENDED INSTRUCTION SET STM SYSTEM HAS SET SYSTEM TIME DIRECTIVE AST SYSTEM HAS AST SUPPORT SHF SYSTEM SUPPORTS MEMORY SHUFFLER RLK RMS RECORD LOCKING SUPPORT PMN POOL MONITORING SUPPORT 310 OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 4 SYSTEM COMMON DUMP ADDR LABEL VALUE ADDR LABEL VALUE ADDR LABEL VALUE 010060 $HEADR 070764 010220 065214 010360 $ERRSQ 000000 114400 $HFMSK 100002 $ERFLA 000000 $COMEF 000000 $PTTCB 107644 000000 000000 $PRISZ 015050 000000 $SYSID 004461 $POLST 000401 000000 020040 $PRIHL 003100 000000 $TKNPT 105710 $PRILL 001130 000000 $SHFPT 106140 $PFRSZ 000310 000000 010100 $CKCNT 172542 010240 $POLBP 000063 010400 000000 $CKCSR 172540 $POLFL 000000 000000 $CKLDC 000307 $PARPT 017204 000000 $LBUIC 000454 $CLKHD 063052 000000 000000 $COPT 062732 000000 $EXSIZ 120000 $PARHD 177734 000000 $PWRFL 000000 $LDRPT 177620 000000 $SIGFL 000000 $TSKHD 117620 000000 010120 $LOGHD 064140 010260 $GGEF 000000 010420 000000 $MCRCB 000000 $GFTCB 010266 000000 $LSTLK 000000 $GEFPT 010266 000000 000003 $GEFDM 000114 $ERBAF 000000 $CRAVL 063774 $IDLCT 000000 000000 . . . 12.4.1.4. Seite 4: "SYSTEM COMMON ALPHABETIZED DUMP" ---------------------------------------------------- Die vierte Seite der Systeminformationen "SYSTEM COMMON ALPHABE- TIZED DUMP" enthaelt Informationen ueber ausgewaehlte Inhalte des SYSTEM COMMON. Die entsprechende Speicherzelle wird mit ihrem globalen Symbol angegeben. Die dahinterstehenden Oktalzahlen zeigen den Inhalt, nicht die Adresse. In Abhaengigkeit von den Optionen, welche bei der Systemgenerie- rung ausgewaehlt wurden, koennen einige dieser globalen Symbole fehlen bzw. zusaetzliche Symbole auftreten. Die globalen Symbole haben folgende Bedeutung: $ABTIM Absolutzeitzaehler (absolut time counter) $ACTHD Listenkopf der aktiven Task (active task listhead) $CFLPT Zeiger zur ersten Auslagerungsdatei (pointer to first checkpoint file) $CKCNT Adresse des Uhrzaehlregisters (address of clock count register) $CKCSR Uhrsteuerstatusregister (clock control status register) $CKLDC Uhrladezaehler (clock load count) $CLICQ Kommandoschlangenlistenkopf (command queue listhead) $CLKHD Uhrschlangenlistenkopf (clock queue listhead) 311 $COPT Zeiger zum Steuerblock der Konsolausgabeeinheit (pointer to console output unit control block UCB) $CPTBL Zeiger zur CLI-Zerlegungsblocktabelle (pointer to CLI parser block table) $CRAVL Listenkopf des freien dynamischen Speichers (free system pool listhead) $CURPR aktuelle Taskprioritaet (current task priority) $DEVHD Zeiger zum ersten Geraetesteuerblock (pointer to first device control block DCB) $DICSV Temporaerer Bereich fuer Direktivedienste (temporary sto- rage for directive services) $ENTSQ Fehlerprotokolleintragungs-Folgenummer (error log entry sequence number) $ERFLA Fehlerprotokoll-Flagwort (error logger flag word) $ERHEA Listenkopf der Warteschlange fuer Fehlernachrichten (error log message queue listhead) $ERRPT Zeiger zum Tasksteuerblock der Fehlerregistrierungstask ERL (pointer to error logger task control block TCB) $ERRSQ Universelle Fehlerfolgenummer (universal error sequence number) $EXSIZ Groesse der Exekutive (executive size) $FMASK Systemcharaktermaske (system feature mask) $FRKHD Listenkopf der Forkschlange (fork queue listhead) $GEFDM Adresswort fuer Pseudogruppenglobalmaske (group global dummy mask address word) $GEFPT Gruppenglobalmasken - Adresszeiger (group global mask address pointer) $GFTCB Gruppenglobalnutzer - TCB - Zeiger (group global user TCB pointer) $GGEF Listenkopf der Gruppenglobalereignisflags (group global event flags listhead) $HEADR Zeiger zum aktuellen Taskkopf (pointer to current task header) $HFMSK Hardwaresystemcharaktermaske (hardware system feature mask) $IDLCT Warteschleifenzaehlbyte (idle pattern count byte) $IDLFL Warteschleifenflagbyte (idle pattern flag byte) $IDLPT Warteschleifenmusterwort (idle pattern word) $INTCT Uhrunterbrechungszaehler fuer Ticks (clock interrupt ticks count) $LBUIC Bibliotheks-UIC (library UIC) $LDRPT Zeiger zum Lader-TCB (pointer to loader TCB) $LOGHD Zuweisungsliste logischer Geraete (logical device assign- ment listhead) $LSTLK Schluesselwort -- TCB-Adresse des Eigentuemers (lock word -- TCB-address of owner) $MCRCB Adresse des MCR-Kommandoblocks (MCR command block ad- dress) $MCRPT Zeiger zum MCR-TCB (pointer to MCR TCB) $MOULS Eingliederungsliste (mount listhead) $MXEXT Letzte Adresse im SYSTEM COMMON (last address in system common) $NTUIC Netz-UIC (network UIC) $PARHD Zeiger zur Partitionliste (pointer to partition list) $PARPT Zeiger der Paritaetsadressvektortabelle (parity address vector table pointer) $PFRSZ Minimale Groesse des groessten Fragments im Pool (minimum size of largest fragment in pool) 312 $PKAVL Zeiger zum ersten reservierten Paket (pointer to first preallocated packet) $PKMAX Maximale Anzahl der reservierten Pakete (maximum number of preallocated packets) $PKNUM Anzahl der reservierten Pakete in der Liste (number of preallocated packets currently in list) $POLBP Minimale Prioritaet fuer die Ausfuehrung nichtprivile- gierter Tasks bei Low-Pool-Bedingung (minimum priority for nonprivileged task to execute at low pool) $POLFL Poolnutzungssteuerflags (exec pool usage control flags) $POLST Poolkommunikationswort (exec-pool communications word) $PRIHL Obere Grenze fuer Poolueberwachung (upper limit for pool monitoring) $PRILL Untere Grenze fuer Poolueberwachung (lower limit for pool monitoring) $PRISZ Minimale Groesse des groessten Poolfragments (minimum size of largest pool fragment) $PRMOD Prozessormodellnummer (processor model number) $PTTCB TCB-Adresse der Poolueberwachungstask (TCB address of pool recovery task) $PWRFL Flag fuer Netzfehlerwiederanlauf (powerfail recovery request flag) $RNDC Uhrtakte fuer Zeitscheibenintervall (clock ticks for each scheduling interval) $RNDH Hoechste zu beruecksichtigende Prioritaet (highest prio- rity class to consider) $RNDL Niedrigste zu beruecksichtigende Prioritaet (lowest prio- rity class to consider) $RQSCH Aktivierungs-TCB-Adresse (schedule request TCB ADDRESS) $SHFPT Zeiger zum Verdichter-TCB (pointer to shuffler TCB) $SIGFL Auf ein signifikantes Ereignis wartende Task (task wai- ting for significant event) $STKDP Tiefenanzeiger des Kellerspeichers (stack depth indica- tor) $SWPC Uhrtakte fuer Auslagerungsintervall (clock ticks for each swapping interval) $SWPR Auslagerungsprioritaet (swapping priority) $SYSIZ Groesse des Speichers in 32K-Wort-Bloecken (size of memo- ry in 32K-word blocks) $SYUIC System-Nutzeridentifikationskode (system user identifi- cation code UIC) $TKNPT Zeiger zum TKTN-TCB (pointer to TKTN TCB) $TKPS Ticks pro Sekunde (ticks per second) $TKTCB Zeiger zum TCB der aktuellen Task (pointer to current task TCB) $TSKHD Zeiger zum Systemtaskverzeichnis (pointer to system task directory STD) $TTNS Takte pro Sekunde (tick of second) 313 Protokoll: "SYSTEM COMMON ALPHABETIZED DUMP" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 4 SYSTEM COMMON ALPHABETIZED DUMP $ABTIM 157062 $ERLOF 000 $MOULS 065270 $SHFPT 106140 $ACTHD 117620 $ERRPT 000000 $MXEXT 177777 $SIGFL 000000 $AVRHD 000000 $ERRSQ 000000 $NTUIC 000454 $STKDP 000000 $CFLPT 064114 $EXSIZ 120000 $PARHD 117734 $SWPC 000036 $CKCNT 172542 $FMASK 013376 $PARPT 017204 $SWPR 000005 $CKCSR 172540 $FRKHD 010202 $PFRSZ 000310 $SYSIZ 007600 $CKLDC 000307 $GEFDM 000114 $PKAVL 065420 $SYSNM 046517 $CLICQ 000000 $GEFPT 010266 $PKMAX 005 $SYUIC 000454 $CLKHD 063052 $GFTCB 010266 $PKNUM 003 $TEMP0 070420 $COPT 062732 $GGEF 000000 $POLBP 000063 $TEMP1 000000 $CPTBL 010652 $HEADR 070764 $POLFL 000000 $TEMP2 014052 $CRAVL 063774 $HFMSK 100002 $POLST 000401 $TEMP4 000000 $CURPR 231 $IDLCT 000 $PRIHL 003100 $TKNPT 105710 $CXDBL 000 $IDLFL 000 $PRILL 001130 $TKPS 000062 $DEVHD 062666 $IDLPT 020035 $PRISZ 015050 $TKTCB 070420 $DICSV 002113 $INTCT 000013 $PRMOD 000000 $TSKHD 117620 . . . . . . . . . . . . 12.4.1.5. Seite 5: "POOL STATISTICS" ------------------------------------ Die fuenfte Seite der Systeminformationen "POOL STATISTICS" ent- haelt folgende Angaben : - Dynamischer Speicher in Bytes (pool size) - groesstes Fragment des Poolspeichers (the largest frag- ment of pool space) - Gesamtgroesse des freien Bereiches in Bytes (total free bytes) - Anzahl der Fragmente, die nicht zugewiesen sind (number of fragments not allocated) - kleinstmoegliche Blockgroesse in Bytes (minimum block size) - Auszug der "Bitmap" 314 Protokoll: "POOL STATISTICS" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 5 POOL STATISTICS POOL SIZE (BYTES) = 3364. LARGEST FREE BLOCK (BYTES) = 1764. TOTAL FREE BYTES = 1936. NUMBER OF FRAGMENTS = 4. MINIMUM BLOCK SIZE (BYTES) = 4. POOL BITMAP (CONSTRUCTED FROM LINKED POOL, BLOCK FREE IF BIT SET): 000000 000000 000003 000000 177774 177777 000000 177700 000001 000000 000000 000000 170000 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 177777 000037 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000 12.4.1.6. Seite 6: "ERROR LOG BUFFERS" -------------------------------------- Die sechste Seite der Systeminformationen "ERROR LOG BUFFERS" enthaelt folgende Angaben: - Adresse des "ERROR LOG"-Puffers (buffer address) - Fehlertypcode (entry type code) - Fehlertypsubcode (entry type subcode) - Datum und Uhrzeit (time) - Inhalt des "ERROR LOG"-Puffers oktal Protokoll: "ERROR LOG BUFFERS" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 6 ERROR LOG BUFFERS BUFFER ADDRESS = 043750 ENTRY TYPE CODE = 000002 ENTRY TYPE SUBCODE = 000001 TIME = 14-OCT-87 09:10:22 000000 000000 000074 000001 003403 012403 051011 000001 000001 000020 173770 000640 131574 051655 001200 100200 037446 001000 000040 000000 126102 001000 000000 120001 000001 000000 000006 000060 120001 000000 000200 177400 126102 120001 315 12.4.1.7. Seite 7: "ASSIGN TABLE" --------------------------------- Diese Seite enthaelt eine Tabelle der Zuordnung logischer Geraete. Sie enthaelt folgende Angaben: - logischer Geraetename - physischer Geraetename - Zuordnungstyp - Terminal, welches die Zuordnung realisierte Protokoll: "ASSIGN TABLE" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 7 ASSIGN TABLE LOGICAL PHYSICAL TYPE ------- -------- ---- SY0: DK2: LOGIN TI - TT4: ST4: DK4: GLOBAL XX0: DK3: LOCAL 12.4.1.8. Seite 8: "GROUP GLOBAL EVENT FLAGS" --------------------------------------------- Sind im System Gruppenglobalereignisflags registriert, wird diese Seite ausgegeben. Sie enthaelt folgende Angaben: - Gruppennummer - Zugriffszaehler - Gruppenglobalereignisflagblock (die letzten beiden Worte stellen die Gruppenglobalereignisflags dar) Protokoll: "GROUP GLOBAL EVENT FLAGS" OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 8 GROUP GLOBAL EVENT FLAGS GROUP NUMBER = 1 ACCESS COUNT = 000482 GGEF DUMP: 000000 000400 000006 000438 000012 000000 316 12.4.2. Analyselisten --------------------- 12.4.2.1. Aktive Tasks (/ACT oder /ATL) --------------------------------------- Die Analyseliste "ACTIVE TASKS" enthaelt folgende Informationen: - Taskname - Adresse des Tasksteuerblocks (TCB ADDRESS) - Name der zugehoerigen Partition (PAR) - Adresse des Steuerblocks der Partition (PCB ADDRESS) - Basisadresse fuer die Partition (LOAD ADDRESS) - Geraet, das die Task enthaelt (LOAD DEVICE) - erste logische Blocknummer der Task auf dem Geraet (LBN) - Prioritaet der Task (PRI) - Anzahl anstehender QIO-Anforderungen (I/O COUNT) - aktueller Nutzercode (UIC) - physischer Name des Pseudogeraetes der Task (TI) - maximale Groesse der Task in 32-Worte-Bloecken (MAX SIZE) - Status der lokalen Ereignisflags der Task (EVENT FLAGS) - erstes Statuswort (T.STAT). Die aus 3 Buchstaben bestehenden Codes haben folgende Bedeutung: -EXE Task arbeitet nicht RDN E/A-Beendigung bei Taskende in Bearbeitung MSG Abbruchmitteilung NRP Adresszuweisung fuer die Task bezieht sich auf nichtresidente Partition OUT Task befindet sich ausserhalb des Speichers CKP Task ist ausgelagert STP Task ist durch CLI-Kommando gestoppt - zweites Statuswort (T.ST2). Die aus 3 Buchstaben bestehenden Codes haben folgende Bedeutung: AST Asynchroner Systemtrap (AST) in Bearbeitung SIO Task ist wegen gepufferter E/A gestoppt DST AST-Barbeitung gesperrt -CHK Task nicht auslagerbar CKD Auslagerung nicht moeglich SEF Task ist fuer ein Ereignisflag gestoppt FXD im Speicher fixierte Task TIO Task ist mit Terminal-QIO beschaeftigt CAF Zuweisungsfehler des dynamischen Auslagerungsbe- reichs HLT Task im Haltzustand ABO Task ist fuer den Abbruch gekennzeichnet STP Task ist im Stopp-Zustand SPN Task ist suspendiert WFR Task ist im Wartezustand - drittes Statuswort (T.ST3). Die aus 3 Buchstaben bestehenden Codes haben folgende Bedeutung: ACP Task ist eine Zusatzsteuerroutine (ACP) -PMD fehlt die Angabe von "-PMD", dann wird bei unnor- malem Taskabbruch ein Speicherabzug der Task aus- gegeben CMD Task fuehrt gerade ein CLI-Kommando aus REM Bei Taskende wird die Task ausgetragen PRV Task ist privilegiert MCR Task ist eine geforderte externe MCR-Funktion SLV Task ist untergeordnet CLI Task ist ein Kommandozeileninterpretationsprogramm CTL Task wurde durch eine steuernde Task aktiviert RST Task ist eingeschraenkt 317 NSD Task erlaubt keine Datenuebertragung CAL Task hat taskeigenen Auslagerungsbereich ROV Task besitzt residente Ueberlagerungen GFL Gruppenglobalereignisflags sind gesperrt - TCB-Inhalt oktal im Offsetmodus Die folgenden Informationen zu "RECEIVE QUEUE" werden nur proto- kolliert, wenn sie vorhanden sind: - Startadresse (RECEIVE BLOCK ADDRESS) - Name der Task - AST-Blockinhalt oktal im Offsetmodus Die Informationen zu "AST QUEUE" werden nur protokolliert, wenn sie vorhanden sind: - Adresse des AST-Blockes (AST BLOCK ADDRESS) - Zwei-Byte-Zeiger (A.CBL). Das hoehere Byte ist ein Offset in den Kopf des AST-Steuerblockes. Das niedere Byte enthaelt die Laenge des AST-Steuerblockes in Bytes - Anzahl der im Taskstack belegten Bytes (A.BYT) - Eintrittspunkte der AST-Routine (A.AST) - Anzahl der AST-Parameter (A.NPR) - AST-Blockinhalt oktal im Offsetmodus Die Informationen zu "RECEIVE BY REFERENCE QUEUE" werden nur protokolliert, wenn sie vorhanden sind: - Adresse des Blockes (RRQ ADDRESS) - TCB-Adresse der sendenden Task (SENDER TCB) - Inhalte der Ereignisflags (EVENT FLAG MASK) - Adresse der Ereignisflagmaske (EVENT FLAG MASK ADDR) - Zeiger zum erstellten Bindungsdeskriptor (REGION ID OF RECEIVER) - Partitionoffset, wie er in der Fensterdefinition spezifiziert ist (OFFSET IN PARTITION) - Adresszuweisungslaenge - Zugriffsrechte der Empfaengertask (ACCESS RIGHTS) - Inhalt der "RECEIVE-BY-REFERENCE"-Warteschlange oktal im Offsetmodus. Anmerkung --------- Falls die Analyseliste fuer die Task ...MCR ausgegeben wird, sind dort zusaetzliche Informationen enthalten: - Adresse des Eingabepuffers (COMMAND LINE INPUT BUFFER ADDRESS) - Adresse des UCB des anfordernden Bediengeraets (UCB) - Geraetename und -nummer des Bediengeraets, das den Block zum MCR gesendet hat sowie die KOI-7-Zeichen im Blockpuffer - Inhalt des Blockpuffers oktal im Offsetmodus - Adresse des Kommandopuffers (BUFFER ADDRESS) - UCB-Adresse des anfordernden Bediengeraets (TCB) - KOI-7-Inhalt des Kommandopuffers (TEXT:) - Inhalt des Kommandopuffers oktal im Offsetmodus. 318 Protokoll: "ACTIVE TASKS" (Auszug) OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 7 ACTIVE TASKS ...MCR ------ TCB ADDRESS = 046674 PAR = SYSPAR PCB ADDRESS = 047744 LOAD ADDRESS = 00050000 LOAD DEVICE = LB0: LBN = 00005067 PRI = 160. I/O COUNT = 0. UIC = [1,24] TI = TT0: MAX SIZE = 000100 EVENT FLAGS = <1-16> 000001 <17-32> 040000 T.STAT: T.ST2: STP T.ST3: -PMD PRV CLI NSD CAL TCB DUMP: 000000 000000 000240 000000 131574 050712 000000 046706 000000 000020 046712 000001 040000 040224 046620 000000 000000 050300 000040 000240 007502 040550 047744 000100 047230 RECEIVE QUEUE ------------- COMMAND LINE INPUT BUFFER ADDRESS = 031762 UCB = 007766 TT2: PIP /LI 000000 000000 007766 044520 020120 046057 020111 020040 020040 000020 020040 020040 020040 020040 020040 020040 020040 020040 000040 020040 020040 020040 020040 020040 020040 020040 020040 000060 020040 020040 020040 020040 020040 020040 020040 020040 000100 020040 020040 020040 020040 020040 020040 020040 020040 MCR COMMAND BLOCKS ------------------ BUFFER ADDRESS = 035234 TCB = 007766 PIP /BR 000000 000000 007766 044520 020120 041057 051040 020040 020040 000020 020040 020040 020040 020040 020040 020040 020040 020040 000040 020040 020040 020040 020040 020040 020040 020040 020040 000060 020040 020040 020040 020040 020040 020040 020040 020040 000100 020040 020040 020040 020040 020040 020040 020040 020040 319 Protokoll: "ACTIVE TASKS" (Fortsetzung) OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 8 ACTIVE TASKS F11ACP ------ TCB ADDRESS = 047230 PAR = FCPPAR PCB ADDRESS = 047710 LOAD ADDRESS = 00060000 LOAD DEVICE = LB0 LBN = 00010114 PRI = 149. I/O COUNT = 0. UIC = [1,1] TI = CO0 MAX SIZE = 000260 EVENT FLAGS = <1-16> 000002 <17-32> 040001 T.STAT: T.ST2: STP T.ST3: ACP -PMD PRV NSD CAL TCB DUMP: 000000 000000 000225 000000 023647 160641 042330 043044 000000 000020 047246 000002 040001 040500 047304 000000 000000 150300 000040 000225 010114 040550 047710 000260 041374 RECEIVE QUEUE ------------- RECEIVE BLOCK ADDRESS = 042330 TASK NAME = DATA 000000 043044 001062 041374 042754 037256 013000 004640 001246 000020 140040 000000 001253 140070 042374 000000 000000 000000 000040 000000 000000 AST QUEUE --------- AST BLOCK ADDRESS = 064720 A.CBL = 020012 A.BYT = 000020 A.AST = 100320 A.NPR = 000001 000000 000000 020012 000020 100320 000001 000124 RECEIVE BY REFERENCE QUEUE -------------------------- RRQ ADDRESS = 071344 SENDER TCB = 044030 EVENT FLAG MASK = 000001 EVENT FLAG MASK ADDR = 064120 REGION ID OF RECEIVER = 000006 OFFSET IN PARTITION = 000000 LENGTH TO MAP = 003000 ACCESS RIGHTS = 000003 000000 000000 044030 000001 064120 000006 000000 003000 000003 000020 000000 000000 000000 000000 000000 000000 000000 000000 320 12.4.2.2. Taskkoepfe (/HDR) --------------------------- Die Analyseliste "TASK HEADERS" enthaelt folgende Informationen: - Taskname - Zeiger zum ersten Wort im Taskkopf (HEADER ADDRESS) - Zeiger zum ersten Wort im TCB (TCB ADDRESS) - Inhalte des PS und PC - Inhalte der allgemeinen Register - initialisierte Inhalte des PS, PC und SP - Groesse des Taskkopfes dezimal in Bytes (HEADER SIZE) - Anzahl der fuer die Task geforderten Fenster (NO. OF WINDOWS) - Anzahl der LUN, die der Task zugeordnet sind (NO. OF LUNS) - aktueller Nutzercode (CURRENT UIC) - Standard-Nutzercode (DEFAULT UIC) - Zeiger zur Anzahl der Fensterbloecke (H.WND) - Zeiger zum Kopf und Leitwort (H.GARD) - Arbeitsbereichserweiterungsvektor (H.VEXT) - Prioritaetsunterschied beim Swapping (H.SPRI) - Anweisungsstatuswort (DSW) - Adresse des FCS-Puffers (H.FCS) - Adresse des Fortranpuffers (H.FORT) - Adresse des Ueberlagerungspuffers (H.OVLY) - logische Geraetenummer (#) - physischer Name des Geraetes (DEV) - Fensterzeiger im Kopf (WINDOW) - Anzahl aktiver Listeneintrittspunkte (niederes Byte von W.CTL). Das hoehere Byte von W.CTL hat folgende Bedeutung: WI.RDV=400 lesen virtueller Adressen erlaubt, falls gesetzt WI.WRV=1000 schreiben virtueller Bloecke erlaubt, falls gesetzt WI.EXT=2000 Erweiterung erlaubt, falls gesetzt WI.LCK=4000 gesetzt, wenn gegen geteilten Zugriff ge- schuetzt WI.DLK=10000 gesetzt, wenn Sperrmoeglichkeit generiert WI.EXL=40000 gesetzt, wenn manuelle Sperrfreigabe WI.BPS=100000 gesetzt, wenn Zugriffssperre umgehbar - Adresse des Dateisteuerblockes (W.FCB) - Dateinummer (F.FNUM) - Dateifolgenummer (F.FSEQ) - Dateisteuerblockstatuswort (F.STAT) - Anzahl der Zugriffe (NAC) - Anzahl der Schutzbloecke (NLCK) - Partitionname der Task (PAR) - virtuelle Taskgrenzen (VIRT LIMITS) - Adresse des Bindungsdeskriptors (ATT DESC) - Fenstergroesse in 32 W Bloecken (WND SIZE) - Partitionoffset (offset) - Adresse des ersten Seitenbeschreibungsregisters (1ST PDR) - Anzahl benutzter PDR's (NO.) - Inhalte der letzten benutzten PDR (LAST PDR) - Inhalt des Taskkopfes oktal im Offsetmodus. 321 Protokoll: "TASK HEADERS" (Auszug) OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 8 TASK HEADERS ...MCR ------ HEADER ADDRESS = 042460 TCB ADDRESS = 046674 PS=170000 PC=122156 R0=121174 R1=121200 R2= ... R3= ... R4= ... R5= ... SP=000560 INITIAL PS = 170017 INITIAL PC = 120634 INITIAL SP = 120362 HEADER SIZE = 114. NO. OF WINDOWS = 1. NO. OF LUNS = 4. CURRENT UIC = [1,24] DEFAULT UIC = [1,24] H.WND = 042576 H.GARD = 042640 H.VEXT = 000000 H.SPRI = 0. DSW = 000001 H.FCS = 000000 H.FORT = 000000 H.OVLY = 121174 LOGICAL UNIT TABLE: # DEV WINDOW W.CTL W.VBN W.FCB F.FNUM F.FSEQ F.STAT NAC NLCK - --- ------ ----- ----- ----- ------ ------ ------ --- ---- 1 TI0 000000 2 CL0 000000 3 SY0 000000 4 LB0 000000 WINDOW BLOCKS: PAR VIRT LIMITS ATT DESC WND SIZE OFFSET 1ST PDR NO. LAST PDR --- ----------- -------- -------- ------ ------- --- -------- SYSPAR 120000 127777 000000 000071 000000 177612 1 037406 HEADER: 000000 000560 000162 040000 046720 000424 000424 170017 120634 000020 120362 000000 000000 000000 000000 000000 000000 000000 000040 000000 000000 042576 000001 000000 000000 121174 000000 000060 000000 000000 000000 000000 000000 042640 000004 040454 000100 000000 040524 000000 040574 000000 040550 000000 000001 000120 047744 120000 127777 000000 000071 000000 000612 037406 000140 170000 122156 121174 121200 000000 121602 122620 120416 000160 000000 322 12.4.2.3. Partitionbelegung (/PCB oder /PAR) -------------------------------------------- Die Analyseliste "PARTITION INFORMATION" gibt die Informationen in zwei Segmenten aus. Das erste Segment enthaelt folgende Infor- mationen: - Name der Partition (PARTITION) - Adresse des PCB (PCB ADR) - Basisadresse der Partition (BASE) - Groesse der Partition (SIZE) - Typ der Partition (TYPE) - die Tasks, die die Partition belegen (OCCUPIED BY) Das zweite Segment enthaelt Informationen zu den einzelnen Pro- grammbereichen: - Name der Partition (PARTITION) - PCB-Adresse (PCB ADR) - Typ der Partition (TYPE) - Name der Hauptpartition (MAIN) - physische Basisadresse in 32 W Bloecken (BASE) - Groesse der Partition in 32 W Bloecken (SIZE) - TCB-Adresse (P.TCB) - Schutzwort der Partition (PRO) - Prioritaet der Task (PRI) - E/A-Zaehler der Task (IOC) - Partitionstatusflags (P.STAT). Die aus 3 Buchstaben bestehen- den Codes haben folgende Bedeutung: OUT Partition ist ausserhalb des Speichers CKP Partitionauslagerung in Bearbeitung CKR Partitionauslagerung gefordert CAF Auslagerungsanweisung fehlgeschlagen -CHK Partition nicht auslagerbar FXD Partition ist fixiert LFR letzter Kopf der Region ist fehlerhaft PER Paritaetsfehler in der Partition LIO von Verdichtertask wegen laenger dauernder E/A (>0.5 s) markiert NSF Partition kann nicht verdichtet werden COM Bibliotheks- oder Commonblock PIC positionsunabhaengiger Bibliotheks- oder Common- block SYS systemgesteuerte Partition DRV Driver wird in die Partition geladen DEL Partition wird geloescht, wenn nicht gebunden - Inhalt des PCB oktal im Offsetmodus Die Informationen zu "ATTACHMENT DESCRIPTOR" werden nur protokol- liert, wenn sie vorhanden sind: - Adresse des Bindungsdeskriptors (ADDRESS) - Name der Partition (PARTITION) - Name der gebundenen Task (ATT TASK) - Schlangenkopf des Bindungs-PCB (A.PCBL) - Schlangenkopf des Bindungs-TCB (A.TCBL) - Prioritaet der an diese Partition gebundene Task (PRI) - E/A-Zaehler der gebundenen Task (IOC) - Anzahl der durch diesen Bindungsdeskriptor gebundenen Tasks (MAP COUNT) - Bindungsdeskriptorstatusbyte (A.STAT). Die aus 3 Buchstaben bestehenden Codes haben folgende Bedeutung: DEL Task hat geloeschten Zugriff EXT Task hat erweiterten Zugriff WRT Task hat Schreibzugriff RED Task hat Lesezugriff 323 - Inhalt des Bindungsdeskriptors im Offsetmodus. Die Informationen zu "WAIT QUEUE" werden nur protokolliert, wenn sie vorhanden sind: - Name der Task, die auf Zugriff zur angegebenen Partition wartet (TASK) - TCB-Adresse der Task (TCB ADR) - TI: Geraet der Task (TI) - Taskprioritaet (T.PRI) - zweites Statuswort (T.ST2). Die aus 3 Buchstaben bestehenden Codes haben die gleiche Bedeutung wie in Abschnitt 12.4.2.1. beschrieben. Protokoll: "PARTITION INFORMATION" (Auszug) OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 12 PARTITION INFORMATION M E M O R Y M A P PARTITION PCB ADR BASE SIZE TYPE OCCUPIED BY --------- ------- ---- ---- ---- ----------- 00000000 00063714 00063714 00034064 LDRPAR 117734 00120000 00002600 MAIN TASK LDR... TTPAR 117370 00122600 00040000 MAIN DRIVER TT: SYSPAR 116204 00162600 00010100 MAIN TASK ...MCR FCPPAR 116140 00172700 00024200 MAIN SYS 064340 00172700 00024200 SUB TASK FM16DA GEN 116074 00217100 00500700 MAIN SYS 115234 00217100 00001000 SUB DRIVER DK: 113144 00220100 00015400 SUB DRIVER TG: 113024 00235500 00000200 SUB DRIVER CO: 112450 00235700 00004100 SUB DRIVER LP: 065310 00242000 00006300 SUB TASK PMT... 066520 00250300 00060000 SUB TASK ...AT. 065354 00330300 00002700 SUB TASK .DBEMC 00333200 00015100 066734 00350300 00010200 SUB TASK .DABA 00360500 00337300 POOL1 064164 00720000 00020000 MAIN COMMON POOL2 066404 00740000 00020000 MAIN COMMON 324 Protokoll: (Fortsetzung) OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 12 PARTITION INFORMATIONEN PARTITION PCB ADR TYPE MAIN BASE SIZE P.TCB PRO PRI IOC --------- ------ ---- ---- ---- ---- ----- --- --- --- SYSPAR 116204 MAIN SYSPAR 001626 000101 107414 000000 0. 0. P.STAT: 000000 116140 000000 075273 062072 000000 116204 001626 000101 000020 000000 116224 100200 107414 000000 067170 000000 063760 000040 063760 ATTACHMENT DESCRIPTORS: ADDRESS PARTITION ATT TASK A.PCBL A.TCBL PRI IOC MAP COUNT ------- --------- -------- ------ ------ --- --- --------- 063760 SYSPAR MCR... 000000 000000 160. 0. 1. A.STAT: DEL WRT RED 000000 000000 000240 107414 000000 000403 116204 WAIT QUEUE: TASK TCB ADR TI T.PRI STATE BITS (T.ST2) ---- ------- -- ----- ------------------ ...AT. 047154 TT0 10. WFR 12.4.2.4. Geraeteinformationen (/DEV, /ADV, /DCB, /SCB oder /UCB) ----------------------------------------------------------------- Die Analyseliste "DEVICE INFORMATION" enthaelt folgende Infor- mationen: - Name des Geraetes - UCB-Adresse (UCB ADR) - DCB-Adresse (DCB ADR) - SCB-Adresse (SCB ADR) - Zeiger zum UCB des Geraetes, auf das umgeschaltet wurde (REDIRECT) - Zeiger zum TCB des ACP (ACP) - Name der attached Task (ATT) - Zeiger zum UCB des Eignerterminals (OWNER) - Nutzercode (LOGIN UIC) - Statusbyte (U.STS). Die aus 3 Buchstaben bestehenden Codes haben folgende Bedeutung: BSY Geraet ist besetzt MNT Geraet ist eingegliedert FOR Geraet ist als fremd eingegliedert MDM Geraet ist zum Ausgliedern gekennzeichnet - Statusextensionsbyte (U.ST2). Die aus 3 Buchstaben bestehen- den Codes haben folgende Bedeutung: OFL Geraet off-line RED Geraet umschaltbar PUB Geraet ist oeffentliches Geraet UMD Geraet ist angeschlossen an das Online-Geraete- testsystem 325 - Steuerflags (U.CTL). Die aus 3 Buchstaben bestehenden Codes haben folgende Bedeutung: ALG Byteadressierung erlaubt NPR DMA Geraet QUE Driver wird gerufen, ehe E/A-Anforderung in Warte- schlange eingereiht wird PWF Driver wird bei Netzausfall immer am PWF-Ein- trittspunkt angesprungen ATT Driver fuehrt Sonderfunktion aus bei IO.ATT und IO.DET KIL Driver wird immer angesprungen bei IO.KIL - erstes Geraetecharakteristikwort (U.CW1). Die aus 3 Buch- staben bestehenden Codes haben folgende Bedeutung: REC satzorientiertes Geraet CCL Geraet mit Wagensteuerung TTY Bediengeraet DIR dateistrukturiertes Geraet SDI Geraet mit einem Verzeichnis SQD sequentielles Geraet UMD Online-Geraetetestsystemunterstuetzung SWL durch Software realisierter Geraeteschutz PSE Pseudogeraet F16 F16-Geraet MNT eingliederbares Geraet - zweites Geraetecharakteristikwort (U.CW2). Die aus 3 Buch- staben bestehenden Codes haben folgende Bedeutung: NEC verlangte Eingabe nicht geechot CRT CRT-Geraet ESC ESCAPE-Folgen generiert LOG vom Bediener eingegliedertes Bediengeraet SLV Bediengeraet ist untergeordnet HLD Hold Screen Modus AT. MCR-Kommando AT. ist ausgefuehrt worden PRV privilegiertes Bediengeraet LWC Kleinbuchstaben werden in Grossbuchstaben konver- tiert - Terminalstatuswort (U.TSTA). Die Codes haben folgende Be- deutung: RST Lesen mit speziellem Endezeichen in Bearbeitung ESC Escapefolgen in Bearbeitung RAL "read pass all" in Bearbeitung RNE Echo ist unterdrueckt CTO Ausgabe ist gesperrt OBY Ausgabe ist besetzt IBY Eingabe ist besetzt BEL Ausgabe des akustischen Signals in Bearbeitung DPR verzoegerte Verarbeitung des Zeichens im Puffer DEC verzoegertes Echo des Zeichens im Puffer DSI Eingabeverarbeitung ist gesperrt CTS Ausgabe durch CTRL/S gestoppt USI unaufgeforderte Eingabe OBF gepufferte Ausgabe in Bearbeitung IBF gepufferte Eingabe in Bearbeitung 326 - zweites Terminalzustandswort (U.TSTA+2). Die Codes haben folgende Bedeutung: ACR "wrap-around" ist erforderlich CR nachfolgender Wagenruecklauf ist bei Ausgabe er- forderlich BRQ dominierendes Schreiben in Warteschlange einge- reiht WRA Steuerung fuer "wrap-around" SRQ spezielle Anforderung in Warteschlange eingereiht ORQ Ausgabeanforderung in Warteschlange eingereiht IRQ Eingabeanforderung in Warteschlange eingereiht HFL horizontales Auffuellen angefordert VFL vertikales Auffuellen angefordert HHT hardwaremaessiger Horizontaltabulator vorhanden HFF hardwaremaessiger Formularvorschub vorhanden FLF erzwingen eines Zeilenvorschubs vor Echo FDX Zeile im Vollduplexmodus - viertes Terminalzustandswort (U.TSTA+4). Die Codes haben folgende Bedeutung: RAL Terminal befindet sich im "read-pass-all"-Modus WES Task wartet auf ESC-Folge RPO lesen mit Anforderung in Bearbeitung TAB "type-ahead"-Pufferzuweisung ist angefordert 8BC Uebergabe von 8 Bits bei Eingabe ABD Autobaud-Geschwindigkeitserkennung erlaubt RCU Rueckspeichern des Kursors ABP Autobaud-Geschwindigkeitserkennung in Bearbeitung WAL Terminal befindet sich im "write-pass-all"-Modus VER letztes Zeichen im "type-ahead"-Puffer hat Pari- taetsfehler PCU Positionieren des Kursors - Inhalte des UCB, DCB, SCB oktal. Die Informationen "I/O REQUEST PACKETS" werden nur fuer Geraete ausgegeben, die eine E/A-Forderung angemeldet haben bzw. fuer die ein E/A-Forderung bearbeitet wird: - Adresse des E/A-Pakets (PACKET ADR) - Name der anfordernden Task (REQUESTOR) - Prioritaet der anfordernden Task (PRI) - Ereignisflagnummer, die die E/A-Forderung als beendet signa- lisiert (EFN) - LUN, die die fordernde Task benutzt (LUN) - E/A-Funktionscode (FUNCTION CODE) - E/A-Status (STATUS) - Inhalt des E/A-Pakets oktal im Offsetmodus. 327 Protokoll: "DEVICE INFORMATION" (Auszug) OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 14 DEVICE INFORMATION TT0: ----- UCB ADR DCB ADR SCB ADR REDIRECT ACP ATT OWNER LOGIN UIC ------- ------- ------- -------- --- --- ----- --------- 116370 116324 117120 NONE [5,5] U.STS: U.ST2: U.CTL: QUE PWF ATT KIL U.CW1: TTY CCL REC U.CW2: CRT ESC PRV LWC U.TSTA: CTS IBF U.TSTA+2: FLF U.TSTA+4: TAB UNIT CONTROL BLOCK: 116362 000000 002405 000000 116324 116370 000474 000000 000007 116402 003011 000000 000120 117120 000000 000000 110000 040000 116422 000100 005400 000030 000001 013400 002405 000015 136122 116442 000000 000000 000000 000000 DEVICE CONTROL BLOCK: 116324 063214 116370 052124 003000 000062 130134 163177 000130 116344 160000 000000 000007 000000 000001 000006 117370 STATUS CONTROL BLOCK: 117112 000015 136502 000000 000000 117120 030640 005000 000000 117132 177500 063714 000000 000000 000000 000000 001226 000000 117152 117150 030240 005000 000002 177504 I/O REQUEST PACKETS: PACKET ADR REQUESTOR PRI EFN LUN FUNCTION CODE STATUS ---------- --------- --- --- --- ------------- ------ 067000 TT0 50. 32. 1. IO.RLB CURRENT 000000 000000 020062 100560 105410 040224 001000 041640 002736 000020 140040 000000 000416 146060 000120 000000 000000 000000 000040 000000 076630 000612 037406 328 12.4.2.5. Systemtaskverzeichnis (/STD, /TAL oder /TCB) ------------------------------------------------------ Die Analyseliste "SYSTEM TASK DIRECTORY" enthaelt Informationen, die bereits in Abschnitt 12.4.2.1. beschrieben sind. Protokoll: "SYSTEM TASK DIRECTORY" (Auszug) OMOS CRASH DUMP ANALYZER V2.O 14-OCT-87 10:27 PAGE 32 SYSTEM TASK DIRECTORY ...MCR ------ TCB ADDRESS = 046674 PAR = SYSPAR PCB ADDRESS = 047744 LOAD ADDRESS = 00050000 LOAD DEVICE = LB0 LBN = 00007502 PRI = 160. I/O COUNT = 0. UIC = [1,24] TI = TT0 MAX SIZE = 000100 EVENT FLAGS = <1-16> 000001 <17-32> 040000 T.STAT: T.ST2: T.ST3: -PMD PRV NSD CAL 000000 000000 000240 000000 131574 050712 000000 046706 000000 000020 046712 000001 040000 040224 046620 000000 000000 050300 000040 000240 007502 040550 047744 000100 047230 12.4.2.6. Dynamischer Systemspeicher (/POOL) -------------------------------------------- Die Analyseliste "POOL DUMP" enthaelt den Inhalt des Systemspei- chers in den Formaten oktal, RADIX 50 und KOI-7-Code. Wiederholt sich eine Zeile gleichen Inhalts mehr als neun Mal, so gibt CDA diese Zeile nur einmal aus und teilt die Anzahl der Wiederho- lungen mit. Die Bedeutung der Kurzzeichen "*", "+" und "-" wird im Kopf des Protokolls erklaert. Die Angabe des "-" weist eine Fehlerbe- dingung aus. 329 Protokoll: "POOL DUMP" (Auszug) OMOS CRASH DUMP ANALYZER V2.0 14-OCT-87 10:27 PAGE 41 POOL DUMP S Y S T E M P O O L * = NEXT WORD ALLOCATED FIRST FREE BLOCK ($CRAVL)=041450 + = NEXT WORD IS IN $PKAVL LIST $PKAVL = 044070 - = NEXT WORD IS IN $PKAVL AND ALSO IN $CRAVL 041250 *000002 *041734 *041320 *134430 ! B J4L J%X /XX!! `CPB 9 041260 *000400 *000002 *001130 *000407 ! FP B O FW!! X 041270 *000002 *002400 *000430 *000401 ! B 2 G FQ!! 041300 *000000 *000030 *160000 *000000 ! X 53X !! 041310 *000000 *003211 *000000 *000124 ! AA3 BD!! T 041320 *134502 *000001 *000001 *000000 !/YZ A A !!B9 041330 *000401 *000000 *000000 *000000 ! FQ !! 041340 *000003 *000000 *000000 *000000 ! C !! 041350 *000430 *000401 *000000 *000000 ! G FQ !! 041360 *000000 *000000 *000000 *000001 ! A!! 041370 *000000 *000000 *000000 *000000 ! !! 041400 *000000 *131574 *062570 *000000 ! ... PIP !! 3 041410 *041406 *000000 *041412 *000000 !J.8 J/B !! C C 041420 *040000 *040224 *042060 *000000 !JIX JML J6P !! @ @0D 041430 *020001 *044000 *000062 *006515 !ED3 KT2 AJ BEE!! H2 M 041440 *040550 *047564 *000400 *005700 !JRX L.T FP A5H!! A O @ 041450 042264 000034 046674 045743 !J9. . LQT LE%!!4D ". Das CMP-Kommando hat folgenden Aufbau: [outfile[/sw...]=]infile1,infile2 Hierbei bedeuten: outfile: In Abhaengigkeit von (/sw...) wird eine Ausgabeda- tei erstellt. Als Standardwerte sind festgelegt: SY0: Systemgeraet des Nutzers [aktueller UIC] UIC , unter welchem CMP arbeitet FILCOM Standarddateiname .LST Standarddateityp Wird keine Ausgabedatei angegeben, erfolgt die Aus- gabe ueber Terminal. Wird keine Ausgabedatei,jedoch das Gleichheitszeichen angegeben, erfolgt nur die Ausgabe der Gesamtanzahl der gefundenen Unterschie- de. /sw: Ein oder mehrere Schalter zur Formatfestlegung und zur Steuerung der Vergleichsoperationen (s. Abschn. 13.3.). infile1: Eingabedatei 1 die mit Eingabedatei 2 verglichen werden soll. Der Dateiname muss angegeben werden. Der Standarddateityp ist .MAC. infile2: Eingabedatei 2, die mit Eingabedatei 1 verglichen werden soll. Es muss keine vollstaendige Dateispe- zifikation angegeben werden. Die Spezifikation von Eingabedatei 1 werden als Standard fuer alle nicht- spezifizierten Teile von Eingabedatei 2 verwendet. Bei Schalter /CB werden die Zeilen von Eingabedatei 2 ausgegeben und diejenigen gekennzeichnet, die von entsprechenden der Eingabedatei 1 abweichen. 337 13.3. Schalter -------------- Die Schalter sind auf der Ausgabeseite der Kommandozeile anzuge- ben. Durch sie koennen Art und Weise des Vergleichsprozesses und die Form der zu bildenden Ausgabedatei festgelegt werden. Unter- bleibt die Angabe von Schaltern, dann gilt die standardmaessige Zuordnung (s. Abschn. 13.3.4.). Die Angabe mehrerer Schalter ist moeglich. Bei aequivalenten Schaltern ist immer der zuletzt genannte wirksam (Ausnah- me:/CB/DI). Anhand eines Beispiels wird die Wirkung der Formatschalter er- laeutert. Die dabei benutzten Testdateien sind: DK1:[100,3]TE1.TXT;1 DK1:[100,3]TE2.TXT;1 AAAA AAAA BBBB BBBB CCCC CCCC DDDD DDDD EEEE EEEE FFFF FOOF GGGG GOOG HHHH HOOH IIII IIII JJJJ JJJJ KKKK KKKK LLLL LLLL MMMM NNNN OOOO 13.3.1. Formatschalter ---------------------- Es sind drei Ausgabeformate moeglich: - Differenzformat (Standard ) (/DI) - Kennzeichenformat (/CB) - SLP - Kommandoeingabeformat (/SL) 13.3.1.1. Differenzformat (/DI) ------------------------------- Das Differenzformat ist standardmaessig zugewiesen. Hierbei wer- den die Differenzen zwischen den zwei zu vergleichenden Dateien paar- und satzweise ausgegeben. Das heisst: Bei Ungleichheit werden zunaechst die entsprechenden Zeilen von Eingabedatei 1 und danach die von Eingabedatei 2, getrennt durch eine kurze *-Zeile aufgelistet. Jedes Differenzpaar wiederum wird durch lange *-Zei- len beendet. Dabei ist zu beachten, dass die ersten wieder ueber- einstimmenden Zeilen ebenfalls in der Liste enthalten sind. Die Liste im Differenzformat ist gegenueber der im Kennzeichen- format umfangreicher und informativer. Sie liefert ein genaues Abbild der Unterschiede zwischen beiden Dateien. /CB und /DI sind sich gegenseitig ausschliessende Schalter. Werden beide ange- geben, dann gilt /CB. Im Beispiel sind die ersten fuenf Zeilen der Eingabedateien identisch. Die erste Differenz tritt in der sechsten Zeile auf. 338 Deshalb werden Zeile sechs bis acht aufgelistet. Zusaetzlich er- scheint Zeile neun, ab der wieder Uebereinstimmung besteht. Uebereinstimmung wird angenommmen, wenn mindestens i Zeilen nach einer Differenz wieder identisch sind. Mit Schalter /LI kann i festgelegt werden. Als Standard gilt 3. (s. Abschn. 13.3.2.). Da- tei 2 endet mit den Zeilen MMMM, NNNN und OOOO, die in Datei 1 nicht enthalten sind. Das fuehrt zur zweiten Differenz. CMP>DIFF.TXT=TE1.TXT,TE2.TXT ************************************************* 1) DK1:[100,3]TE1.TXT;1 6 FFFF 7 GGGG 8 HHHH 9 IIII ************************** 2) DK1:[100,3]TE2.TXT;1 6 FOOF 7 GOOG 8 HOOH 9 IIII ************************************************** 1) DK1:[100,3]TE1.TXT;1 ************************** 2) DK1:[100,3]TE2.TXT;1 13 MMMM 14 NNNN 15 OOOO ************************************************** 2 DIFFERENCES FOUND DIFF.TXT=TE1.TXT,TE2.TXT 13.3.1.2. Kennzeichenformat (/CB) --------------------------------- Es wird eine Ausgabedatei erzeugt,die auf Eingabedatei 2 basiert. Dabei werden alle Zeilen gekennzeichnet, die sich von entspre- chenden der Eingabedatei 1 unterscheiden. Zusaetzlich wird je- weils die erste wieder uebereinstimmende Zeile markiert. Aus die- ser Liste ist nicht zu erkennen, worin die Unterschiede bestehen. Das Differenzkennzeichen kann mit Schalter /VB geaendert wer- den (s. Abschn. 13.3.3.3.). 1 AAAA 2 BBBB 3 CCCC 4 DDDD 5 EEEE 6 ! FFFF 7 ! GGGG 8 ! HHHH 9 ! IIII 10 JJJJ 11 KKKK 12 LLLL 13 ! MMMM 14 ! NNNN 15 ! OOOO 339 2 DIFFERENCES FOUND LP:/CB=TE1.TXT,TE2.TXT 13.3.1.3. SLP - Kommandoeingabeformat ------------------------------------- Der /SL[:an]-Schalter wird benutzt, um eine Datei zu erstellen, welche die als SLP - Kommandoeingabe benutzten Saetze enthaelt. /SL fordert CMP auf, die SLP-Aufbereitungskommandozeilen und die Eingabezeilen zu erstellen, die erforderlich sind, Eingabe- datei 1 auf den Stand von Eingabedatei 2 zu bringen. CMP>DIFF.TXT/SL:BLSOO1=TE1.TXT,TE2.TXT -6,8,/;BLSOO1/ FOOF GOOG HOOH -12,,/;BLSOO1/ MMMM NNNN OOOO / 13.3.2. Schalter zur Steuerung des Vergleichsprozesses ------------------------------------------------------ Hierzu gehoeren Schalter, die bestimmte Codierungen, Kommentare oder ganze Zeilen vom Vergleichsprozess ausschliessen. Damit ist z.B. eine programmlogische Uebereinstimmung zu erreichen, auch wenn im einzelnen Differenzen bestehen. Schalter fuer Leerzeilen (/BL) ------------------------------ Bei Angabe von /BL werden Leerzeilen in den Vergleichsprozess einbezogen. Standardmaessig gilt: /-BL. Schalter fuer Kommentar (/CO) ----------------------------- Bei Angabe dieses Schalters und standardmaessig werden Kommentare beim Vergleich beruecksichtigt. Das gilt auch fuer mit ";" begin- nende Zeilen. Schalter fuer FORM-FEED (/FF) ----------------------------- Der Schalter FF bewirkt den Einschluss einzelner Seitenvorschuebe in den Vergleichsprozess. Standardmaessig werden sie ausgeschlos- sen; es gilt: /-FF. Schalter fuer Tabulator und Leerzeichen (/MB) --------------------------------------------- Der Schalter bewirkt, dass CMP alle Leerzeichen und Tabulatoren in eine Vergleichsoperation einbezogen werden. Wird /-MB spezifi- ziert, interpretiert CMP jegliche Folge von Leerzeichen und Tabu- latoren als einzelnes Leerzeichen. 340 Schalter fuer nachfolgende Leerzeichen (/TB) -------------------------------------------- Der Schalter /TB bewirkt, dass Leerzeichen, die dem letzten Zei- chen einer Zeile, das kein Leerzeichen ist, folgen, in den Ver- gleich einbezogen werden. Bei Angabe von /-TB werden alle nach- folgenden Leerzeichen ignoriert. Wird /-CO gemeinsam mit /-TB spezifiziert, werden die Leerzeichen, welche vor einem Semikolon stehen (;), als nachfolgende Leerzeichen interpretiert und igno- riert. Schalter fuer Anzahl identischer Zeilen (/LI:i) ----------------------------------------------- Eine aufgetretene Differenz gilt als beendet, wenn mindestens i Zeilen wieder gleichen Inhalts sind. Fuer i gilt: 0 < i < 32768. Standardmaessig ist i=3. Unabhaengig von der vereinbarten Zeilenzahl ist die erste wieder uebereinstimmende Zeile mit im Protokoll enthalten. 13.3.3. Sonstige Schalter ------------------------- Hiermit kann die Ausgabe von Zeilennummern, eine Aenderung des Differenzkennzeichens beim Kennzeichenformat und eine Druckeraus- gabe zugewiesen werden. Schalter fuer Ausgabe der Zeilennummer (/LN) -------------------------------------------- Damit wird festgelegt, dass in der Ausgabedatei die Zeilen mit zugehoerigen Zeilennummern ausgegeben werden. Die Zeilennummer wird durch jede gelesene Zeile einschliesslich Leerzeile um 1 er- hoeht. Wird /SL spezifiziert, braucht /LN nicht angegeben werden. Standardmaessig gilt: /LN. Schalter fuer Druck der Ausgabedatei (/SP[:N]) ---------------------------------------------- Dieser Schalter bewirkt den Druck der Ausgabedatei auf LP0:. Mit [:n] kann die Anzahl der auszudruckenden Exemplare angegeben werden. Ein Druck kann nur erfolgen, wenn PRT (print spooler task) installiert wurde. Standardmaessig gilt: /-SP. Schalter zum Stellen des Kennzeichens (/VB) -------------------------------------------- Standardmaessig werden sich unterscheidende Zeilen im Kennzei- chenformat mit "!"(oktal 41) gekennzeichnet. Mit dem Schalter /VB kann eine beliebige druckbare Codierung als Differenzkennzeichen festgelegt werden. Es sind dann immer /CB/VB:mm anzugeben (mm= oktale Codierung des Differenzkennzeichens). 341 13.3.4. Standardschalter ------------------------ Standardmaessig gilt folgende Schalterzuordnung: /-BL Leerzeilen werden nicht beruecksichtigt /-CB Ausgabedatei nicht im Kennzeichenformat / CO Kommentare werden mit verglichen / DI Ausgabedatei im Differenzformat /-FF FORM-FEEDs werden nicht beruecksichtigt / LI:3 Bei 3 identischen Zeilen gilt Differenz als beendet / LN Erzeuge Zeilennummer / MB Leerzeichen und Tabulatoren werden unterschieden /-SL keine Ausgabedatei fuer SLP erstellen /-SP kein Druck der Ausgabedatei / TB Vergleiche alle dem letzten Nicht-Space folgenden Leerzeichen. / VB:041 Differenzkennzeichen ist "!" (41). 13.4. Fehlermitteilungen ------------------------ Im folgenden sind die CMP-Fehlermitteilungen dargestellt und die Ursachen der Fehler genannt. CMP -- N DIFFERENCES FOUND Information ueber festgestellte Differenzen CMP -- COMMAND SYNTAX ERROR Fehler in der Kommandosyntax CMP -- ERROR READING INPUT FILE Fehler beim Lesen der Eingabedatei CMP -- ERROR WRITING OUTPUT FILE Fehler beim Schreiben der Ausgabedatei CMP -- ILLEGAL /LI VALUE Unzulaessiger Wert bei Schalter /LI CMP -- ILLEGAL SWITCH OR SWITCH VALUE Unzulaessiger Schalter oder Schalterwert in Kommandozeile CMP -- OPEN FAILURE IN INPUT FILE #1 Eingabedatei 1 kann nicht eroeffnet werde CMP -- OPEN FAILURE IN INPUT FILE #2 Eingabedatei 2 kann nicht eroeffnet werden CMP -- OPEN FAILURE IN OUTPUT FILE Ausgabedatei kann nicht eroeffnet werden CMP -- TOO MANY DIFFERENCES FOR AVAILABLE CORE Es koennen nicht alle Differenzen im verfuegbaren Speicher untergebracht werden. 342 14. Dateidruckprogramm DMP 1630(OMEX) ------------------------------------- 14.1. Vorbemerkungen -------------------- Aufgabe des Systemprogramms DMP ist es, die Ausgabe des Inhalts von Dateien oder Datentraegern (Magnetplatte oder Magnetband) in verschiedenen Datenformaten zu ermoeglichen. Als Ausgabegeraet koennen Zeilendrucker,Bediengeraet oder Plattenspeicher verwendet werden. Die Ausgabe kann satz- oder blockweise erfolgen. Es ist moeglich, beliebige Bloecke einer Datei oder eines Datentraegers fuer die Ausgabe auszuwaehlen. DMP kann mit den beschriebenen MCR-Startkommandos gestartet wer- den. Bei den entsprechenden Kommandos meldet sich das Systempro- gramm mit "DMP> " auf dem Bediengeraet. Diese Meldung ist gleichzeitig Kommandoanforderung. DMP akzep- tiert Kommandos vom Bediengeraet oder von einer Indirekt-Komman- dodatei, die auf dem Plattenspeicher steht. Soll die Arbeit mit DMP beendet werden, ist das Kommando CTRL/Z zu geben. Die Steu- erung kehrt dann zum Kommandoprogramm (MCR) zurueck. 14.2. Kommandoaufbau -------------------- 14.2.1. Allgemeines Format -------------------------- Das Kommando fuer DMP hat das folgende allgemeine Format: [outfile][/SW][/SW...]=infile[/SW][/SW...] Zu beachten ist, dass bei DMP keine Sternvereinbarungen erlaubt sind. Eine Eingabedateispezifikation ist immer erforderlich, waehrend die Ausgabedateispezifikation auch entfallen kann. In diesem Fal- le werden Systemstandards wirksam. Bei Ausgabe von Dateien oder Bloecken auf einen Plattenspeicher ist die Ausgabedatei bei nichtspezifiziertem Ausgabedateityp vom Typ .DMP. Der Standard- dateiname ist in diesem Falle DMPFIL. Die Ein- bzw. Ausgabedateispezifikation hat eines der folgenden Formate: dev:[g,m]name.type;version[/switch]... dev:/FI:n:m[/switch]... dev:/BL:n:m[/switch]... 14.2.2. Kommando im Dateimodus (virtueller Blockmodus) ------------------------------------------------------ Ist in der Kommandozeile eine Eingabedatei spezifiziert, arbeitet DMP im Dateimodus. Die Spezifikation der Eingabedatei kann in dem bereits genannten Format durch Angabe von UIC, Dateiname, -typ und -version oder durch Verwendung des Schalters /FI:n:m (s. Abschn. 14.3.2.) erfolgen. Es wird die ganze Datei oder, bei 343 entsprechender Verwendung des Schalters /BL:n:m (s. Abschn. 14.3.3.), eine Auswahl von virtuellen Bloecken ausgegeben. Virtu- elle Bloecke sind dateibezogen und werden von 1 bis x (x= Gesamt- anzahl der Dateibloecke) numeriert. Beispiele: 1) DMP>LP:=DK0:[200,200]TEST.DAT;2 --------------------------- Bei Angabe dieses Kommandos wird die Datei TEST.DAT;2,die sich auf dem Plattenspeicher 0 im Nutzerdateiverzeichnis (UFD) [200,200] befindet, vollstaendig auf Zeilendrucker ausgegeben. 2) DMP>LP:=DK1:/FI:402:6/BL:3:5 ------------------------ Die virtuellen Bloecke 3 bis 5 der Datei mit der Identifika- tionsnummer (402,6) auf dem Plattenspeicher DK1: werden auf dem Zeilendrucker ausgegeben. 14.2.3. Kommando im Geraetemodus (logischer Blockmodus) ------------------------------------------------------- Es ist moeglich, beliebige Bloecke eines Platten-oder Magnetband- speichers fuer die Ausgabe auszuwaehlen, gleichgueltig, zu wel- cher Datei sie gehoeren. In diesem Falle wird in der Eingabeda- teispezifikation anstelle von UIC, Dateiname, -typ und -version der Schalter /BL:n:m angegeben. Die spezifizierten Bloecke sind logische Bloecke. Ein logischer Block bezieht sich auf einen 512- Byte-Block einer Platte oder eines Magnetbandes. Die logischen Bloecke werden von 0 bis y-1 (y=Gesamtzahl der Bloecke des Daten- traegers) numeriert. Der Datentraeger, von dem Bloecke ausgegeben werden sollen, darf nicht mit dem MCR-Kommando MOUNT eingegliedert sein, wenn im Geraetemodus gearbeitet werden soll. Beispiel: Gegeben sei ein Datentraeger (z.B. Plattenspeicher DK1:) mit y logischen Bloecken. Auf dem Plattenspeicher befinde sich im UFD [200,200] eine Datei A.MAC;1, die x=3 virtuelle Bloecke umfasst. Geraetemodus logische Bloecke 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|... | 1 2 3 | ------v------ virtuelle Bloecke Datei A.MAC;1 Dateimodus 1 Block = 512 Bytes Sollen bestimmte logische Bloecke der Platte ausgegeben werden, kann folgendes Kommando im Geraetemodus gegeben werden: 344 DMP>LP:=DK1:/BL:3:6 --------------- Es werden die logischen Bloecke 3 bis 6 auf Zeilendrucker aus- gegeben. Um die Datei A.MAC;1 auf Zeilendrucker auszugeben, gibt man fol- gendes Kommando im Dateimodus: DMP>LP:=[200,200]A.MAC;1 -------------------- 14.3. Schalter -------------- 14.3.1. Datenformatschalter --------------------------- Datenformatschalter geben an,in welcher Datenart die spezifizier- ten Bloecke ausgegeben werden sollen. Die Schalter finden im Ge- raete- und Dateimodus Anwendung. Ist zusaetzlich der /RC-Schalter angegeben, erfolgt die Ausgabe satzweise. Sonst werden die Daten blockweise ausgegeben. Tabelle 54: DMP - Datenformatschalter ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- | leer | Ausgabeformat oktal, wortweise | /BY | Ausgabeformat oktal, byteweise | /DC | Ausgabeformat dezimal,wortweise | /AS | Ausgabeformat KOI-7-Code,byteweise | Steuerzeichen (Oktalkode 0 bis 37) werden als | CTRL, gefolgt von einem alphabetischen Zeichen, | das dem Zeichenkode +100 (oktal) entspricht, | ausgegeben. Kleinbuchstaben werden mit dem Pro- | zentzeichen(%)gekennzeichnet,gefolgt von dem ent- | sprechenden Grossbuchstaben,wenn der Schalter /LC | nicht angegeben wurde. | /OCT | Ausgabe oktal neben anderen spezifizierten Forma- | ten. Wird kein Formatschalter spezifiziert, ist | der Standardwert oktal. Bei byteweiser Ausgabe | schliessen sich die Schalter /AS und /OCT gegen- | seitig aus. | /R5 | Ausgabeformat RADIX 50 | /WD | Ausgabeformat hexadezimal, wortweise | /HX | Ausgabeformat hexadezimal, byteweise ----------------------------------------------------------------- 345 Tabelle 54: (Fortsetzung) ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- | /LW | Ausgabeformat hexadezimal, doppelwortweise | /RC | Die Daten werden satzweise ausgegeben. | Der Schalter ist nur im Dateimodus und nicht in | Verbindung mit dem Schalter /BL:n:m zu verwenden. | /SP | Die Ausgabedatei wird auf dem Zeilendrucker unter | Benutzung der abhaengigen Task PRT ausgegeben. | Dieser Schalter darf nur bei der Ausgabedatei- | spezifikation angegeben werden. ----------------------------------------------------------------- Beispiele: 1) DMP>LP:=DK0:TEST.MAC;1 ------------------ Die sich auf dem Geraet DK0: befindende Datei TEST.MAC;1 wird blockweise im oktalen Wortformat auf dem Zeilendrucker ausge- geben. 2) DMP>LP:=DK0:TEST.MAC;1/RC/R5 ------------------------ Die Datei wird satzweise im RADIX-50-Format ausgegeben. 3) DMP>LP:=DK0:TEST.MAC;1/RC --------------------- Die Datei wird satzweise im oktalen Wortformat ausgegeben. 4) DMP>LP:=DK0:TEST.MAC;1/BY --------------------- Die Datei wird blockweise im oktalen Byteformat ausgegeben. 5) DMP>A.DMP/SP=TEST.MAC ----------------- Die Datei A.DMP wird im Hintergrundbetrieb auf den Drucker ausgegeben. 14.3.2. Spezifikation der Eingabedatei ueber ihre Identifikationsnummer ------------------------------------------------- Tabelle 55: DMP - Schalter /FI ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- | /FI:n:m | Bei Angabe dieses Schalters wird auf eine Datei | ueber ihre Identifikationsnummer (n,m) zugegrif- | fen. | n = Dateinummer | m = Dateifolgenummer | Der Schalter kann im Dateimodus anstelle von UFD, | Dateiname, -typ und -version in der Eingabedatei- | spezifikation stehen. 346 14.3.3. Spezifikation der Basisblocknummer und der Anzahl der auszugebenden Bloecke ------------------------------------------------------------- Tabelle 56: DMP - Schalter /BL und /BA ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- | /BL:n:m | Mit diesem Schalter erfolgt die Angabe der auszu- | gebenden Bloecke, wobei | n = der erste auszugebende Block und | m = der letzte auszugebende Block ist. | Im Dateimodus gibt der Schalter die auszugebenden | virtuellen Bloecke an. Ist /BL:0 spezifiziert, | wird kein virtueller Block ausgegeben (Verwendung | bei Ausgabe des Dateikennsatzes, s. Schalter | /HD). Im Geraetemodus ist der Schalter unbedingt | anzugeben. Er spezifiziert die Folge der auszuge- | benden logischen Bloecke. Werden Magnetbaender | und Kassetten im Geraetemodus ausgedruckt, er- | folgt das Ausdrucken stets bei der momentanen | Bandposition. Die Werte des /BL-Schalters werden | lediglich dazu verwendet, ( m-n) + 1 Bloecke aus- | zudrucken. | N und m sind Oktalzahlen. Bei Verwendung von | Dezimalzahlen ist der Dezimalpunkt (.) anzugeben. | /BA:n:m | Die Argumente n und m definieren eine Doppelwort- | basisblockadresse, dabei ist | n = hoeherwertiges Wort (oktal) | m = niederwertiges Wort (oktal). | Alle folgenden Blocknummern werden zu diesem Wert | addiert. Der Schalter wird z.B. angewendet, um | Blocknummern zu spezifizieren, deren Darstellung | 16 bit ueberschreitet. | /BA:0:0 loescht die Basisblocknummer wieder. | Der Schalter stellt ein selbstaendiges Kommando | dar, kann also allein auf einer Zeile stehen. ----------------------------------------------------------------- Beispiele: 1) DMP>/BA:0:2 ------- DMP>LP:=DK0:[200,4]TEST.DAT;1/AS/BL:1:2 ----------------------------------- Das erste Kommando setzt die Basisblocknummer auf 2. Das zwei- te Kommando bewirkt, dass die virtuellen Bloecke 3 und 4 der Datei TEST.DAT;1 im KOI-7-Wortmodus ausgegeben werden. 2) DMP>/BA:1:0 ------- Das Kommando gibt an, dass alle folgenden Blocknummern relativ sind zu 65536=200000 (oktal). 347 14.3.4. Ausgabe des Dateikennsatzes ----------------------------------- Tabelle 57: DMP - Schalter /HD ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- | /HD[:F oder:U] | Der Schalter bewirkt im Dateimodus, dass neben | den spezifizierten Bloecken der Dateikennsatz | der Datei ausgegeben wird. | /HD/BL:0 bewirkt, dass nur der Dateikennsatz | ausgegeben wird. Zusaetzlich hat dieser Schalter | zwei Optionen."F"als Standardoption bewirkt das | Ausdrucken des Dateikennsatzes im OMOS 1630-For- | mat. "U" bewirkt das Ausdrucken eines unforma- | tierten Dateikennsatzes im oktalen Format fuer | alle Dateikennsaetze, die nicht dem FM-16-For- | mat entsprechen. | /HF | Spezifiziert das Format der Datenbloecke, welche | FM-16-Format haben. Andere Bloecke werden als | unformatierter oktaler Ausdruck ausgegeben. ----------------------------------------------------------------- Beispiele: 1) DMP>LP:=DK1:[200,7]A.OBJ;2/HD ------------------------- Es werden die Datei A.OBJ;2 und der Dateikennsatz ausgegeben. 2) DMP>LP:=DK1:[200,7]A.OBJ;2/HD/BL:0 ------------------------------ Es wird nur der Kennsatz der Datei ausgegeben. 3) DMP>LP:=[0,0]INDEXF.SYS/HF ---------------------- Es wird ein Ausdruck der Indexdatei erstellt und alle Datei- kennsaetze werden formatiert. 14.3.5. DMP-Service-Kommandos ----------------------------- Tabelle 58: DMP - Service-Schalter ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- | /ID | Die Versionsnummer des Systemprogramms DMP wird | ausgegeben. Der Schalter stellt ein selbstaendi- | ges Kommando dar. | /LB | Es wird die Startblocknummer der angegebenen | Datei im Doppelwortformat ausgegeben. Wird aus- | serdem "C" ausgegeben, bedeutet das, dass die | spezifizierte Datei physisch zusammenhaengend | ist. ----------------------------------------------------------------- 348 Tabelle 58: (Fortsetzung) ----------------------------------------------------------------- Schalter | Bedeutung ----------------------------------------------------------------- | /LC | Damit wird festgelegt, dass die Daten in Klein- | buchstaben ausgegeben werden, vorausgesetzt, dass | Ausgabegeraet ist in der Lage dazu. | /MD[:n] | Der Schalter bewirkt, dass die Bytezaehlung in | der Ausgabedatei ueber Blockgrenzen hinaus fort- | laufend ist, d.h. nicht bei jedem Block wieder | bei 0 beginnt. | Mit n kann der Anfangswert fuer die Bytezaehlung | definiert werden. Standard ist n = 0. | In Verbindung mit /RC ist der Schalter nicht | wirksam. | /RW | Rueckspulen des Magnetbandes vor Ausfuehrung des | DMP - Kommandos. | /SB:n oder | n spezifiziert die Anzahl der Bloecke, welche DMP /SB:-n | ueberliest (n) oder zuruecksetzt (-n).DMP stoppt, | wenn EOT erkannt wird. | /SF:n oder | n spezifiziert die Anzahl der Dateiendemarken, /SF:-n | welche DMP ueberliest (n) oder zuruecksetzt (-n). | DMP stoppt, wenn EOT oder BOT erkannt wird. ----------------------------------------------------------------- Beispiel: DMP>TI:=DK0:TEST.TSK;1/LB --------------------- Auf dem Bediengeraet erscheint eine Ausschrift: STARTING BLOCK NUMBER = 0,1351 C 14.4. Fehlermitteilungen ------------------------ DMP -- BAD DEVICE NAME In der Dateispezifikation wurde ein falscher Geraetename ange- geben. DMP -- BLOCK SWITCH REQUIRED IN LOGICAL BLOCKMODE Bei der Arbeit im logischen Blockmodus wurde im Kommando der Schalter /BL:n:m nicht angegeben. DMP -- CANNOT FIND INPUT FILE Die spezifizierte Eingabedatei kann im angegebenen Nutzerdatei- verzeichnis (UFD) nicht gefunden werden. DMP -- COMMAND SYNTAX ERROR Das angegebene Kommando entspricht nicht den Syntaxregeln. DMP -- FAILED TO ASSIGN LUN Es wurde ein unzulaessiges Geraet in einer Dateispezifikation an- gegeben. 349 DMP -- FAILED TO READ ATTRIBUTES Es wurde versucht, auf eine Datei zuzugreifen, fuer die keine Lese-Zugriffsrechte angegeben waren. DMP -- ILLEGAL SWITCH Im Kommando wurde ein in DMP unzulaessiger Schalter verwendet oder ein zulaessiger Schalter wurde falsch benutzt. DMP -- ILLEGAL USE OF /RC SWITCH Der Schalter /RC wurde im Geraetemodus oder in Verbindung mit dem Schalter /BL:n:m verwendet. DMP -- ILLEGAL VALUE ON HD SWITCH Es wurde eine andere Option als F oder U fuer den /HD-Schalter eingegeben. DMP -- I/O ERROR ON INPUT FILE bzw. DMP -- I/O ERROR ON OUTPUT FILE Eine der folgenden Fehlerbedingungen ist erfuellt: - Ein Geraetefehler liegt vor. - Die Datei ist defekt oder das Dateiformat ist falsch. - Der Ausgabedatentraeger ist voll belegt. DMP -- NO INPUT FILE SPECIFIED Im Kommando wurde keine Eingabedatei angegeben. DMP -- NO LISTS OR WILD CARDS ALLOWED Es wurde entweder ein Kommando mit mehr als einer Ein- oder Aus- gabedateispezifikation oder einer Sternvereinbarung angegeben. DMP -- OPEN FAILURE ON INDIRECT FILE Die angegebene Indirektkommandodatei ist nicht nutzbar. - Die Datei ist gegen lesen geschuetzt. - Ein Geraetefehler liegt vor. - Der Datentraeger ist nicht eingegliedert. - Das spezifizierte UFD existiert nicht - Die angegebene Datei existiert nicht im spezifizierten UFD. DMP -- OPEN FAILURE ON INPUT FILE bzw. DMP -- OPEN FAILURE ON OUTPUT FILE Eine der folgenden Fehlerbedingungen kann erfuellt sein: - Die Datei ist vor Zugriff geschuetzt. - Die Datei existiert im genannten UFD nicht. - Der Datentraeger ist nicht eingegeliedert. - Das spezifizierte Nutzerdateiverzeichnis (UFD) existiert nicht. - Ein Geraetefehler liegt vor. 350 15. Datei-Pruefprogramm VFY 1630(OMEX) -------------------------------------- 15.1. Vorbemerkung ------------------ VFY prueft saemtliche auf dem eingegliederten Datentraeger vor- handenen Dateien, ob sie lesbar und richtig zugeordnet sind. Dabei werden alle Dateikennsaetze der Index-Datei gelesen, um festzustellen, ob diejenigen Bloecke, welche von einem Dateikenn- satz lokalisiert werden in der Datentraegerbelegungsliste gekenn- zeichnet sind. Die Dateien auf dem Datentraeger muessen das For- mat haben, wie es fuer OMEX 1630 gefordert wird. VFY fuehrt nach verschiedenen Bedienkommandos folgende Funktionen aus: -Dateien, die zum Loeschen gekennzeichnet sind (entsprechendes bit im Dateikennsatz) werden wieder freigegeben, indem das Geloeschtbit im Dateikennsatz auf 0 gesetzt wird. -Die Anzahl von freien Bloecken eines dateistrukturierten Daten- traegers wird ausgegeben. -Saemtliche Dateien der Index-Datei koennen gedruckt werden. -Pruefung der gesamten Dateistruktur, um eventuelle Dateien zu finden, die in keinem Verzeichnis stehen und auf die nicht mehr ueber Dateiname zugegriffen werden kann. -Jeder Block von jeder Datei wird gelesen, um Zuordnungsfehler und Paritaetsfehler zu analysieren. -Blockzuordnungsdifferenzen zwischen Index-Datei und Datentrae- gerbelegungsliste werden durch neues Zuordnen der Bloecke be- seitigt. Das heisst, alle Bloecke, welche als "vergeben" mar- kiert sind, jedoch zu keiner Datei gehoeren, werden freigegeben. -Bloecke, die in der Datentraegerbelegungsliste als FREE gekenn- zeichnet sind, obwohl sie zu einer Datei gehoeren, werden neu zugeordnet. -Loeschen fehlerhafter Dateikennsaetze Bei bestimmten Funktionen erstellt VFY eine Arbeitsdatei, die aber in keinem Verzeichnis erscheint und nach Beendigung der Operation sofort wieder geloescht wird. Diese Arbeitsdatei sollte immer auf einen anderen, nicht auf den zu pruefenden Datentraeger geschrieben werden. VFY arbeitet prinzipiell im Read-only-Modus, verlangt aber unter bestimmten Bedingungen den Schreibzugriff zum Datentraeger. Der Schalter zur Neuzuordnung von verlorenen Bloecken und Reorgani- sierung von verlorenen Dateien erfordert den Schreibzugriff zur Datentraegerbelegungsliste. Der Schalter zum Wiederherstellen von geloeschten Dateien erfordert den Schreibzugriff zur Index- Datei. Beim Suchen von verlorenen Dateien verlangt VFY Schreib- zugriff zum UFD [1,3]. Bei allen Operationen, die Schreibzugriff zum Datentraeger haben, muss VFY unter einem System-UIC arbeiten. Werden Zugriffsoperationen, die mit der Index-Datei oder der Datentraegerbelegungsliste arbeiten, unterbrochen, kann das eine Zerstoerung der Inhalte der Datentraeger zur Folge haben. 351 15.2. Kommandosyntax -------------------- Alle VFY-Funktionen werden durch Kommandos ueber das Eingabe- geraet aufgerufen. Die VFY-Kommandos haben folgendes Format: listfile,scratchdev=indev/switch oder indev/switch listfile - Ist das Geraet bzw. die Datei, auf welche(s) die Mitteilungen ausgegeben werden sollen. dev:[g,m]name.type;version scratchdev - Ist das Geraet, auf welches die durch VFY herge- stellte Arbeitsdatei geschrieben wird. dev: indev - Gibt den Datentraeger an, der zu kontrollieren ist. Dieser Parameter hat folgendes Format: dev: /switch - Gibt die auszufuehrende Funktion an. 15.3. Geraetebenutzung und Standardfestlegungen ----------------------------------------------- VFY verwendet fuer die E/A, speziell fuer die Kommunikation und fuer die Listenausgabe Pseudogeraete. Diesen Pseudogeraeten wird ein physisches Geraet zugewiesen. Bei der Arbeit mit Dateien wird das zu benutzende Geraet in der Dateispezifikation angegeben. VFY-Dateispezifikationsstandards -------------------------------- dev: - Ausgabe Listendatei----> TI: Arbeitsdateigeraet----> SY0: zu kontrollierender Datentraeger----> SY0: [g,m] - UIC, unter welchem VFY arbeitet name - nicht standardisiert .type - nicht standardisiert ;version - hoechste Versionsnummer plus 1 15.4. VFY-Mitteilungen ---------------------- Um den Datentraeger auf ordnungsgemaesse Dateistruktur zu prue- fen, wird jeder Dateikennsatz der Index-Datei gelesen. Dabei muessen alle von einem Dateikennsatz lokalisierten Bloecke in der Datentraegerbelegungsliste gekennzeichnet sein. Fuer die Kon- trolle des Datentraegers sind folgende Bedingungen erforderlich: Die Dateien des Datentraegers muessen das Format haben, wie es fuer OMEX 1630 gefordert wird. Der Datentraeger muss ueber das Kommando MOU DKn: eingegliedert sein. Er kann schreibge- schuetzt sein, wenn es kein Systemdatentraeger ist oder die erstellte Arbeitsdatei auf einen anderen Datentraeger ge- schrieben wird. 352 Nach der Pruefung des gesamten Datentraegers werden aufgetretene Dateifehler ausgegeben. Fehlermitteilungen zu einer Datei werden durch eine Dateiidentifikationszeile eingeleitet, die den Fehler in der Datei identifiziert. FILE ID nn,mm name.type;version OWNER [g,m] nn,mm - Dateinummer,Dateifolgenummer name - Dateiname .type - Dateityp ;version - Versionsnummer der Datei [g,m] - UIC Dieser Dateiidentifikationszeile folgen ein oder mehrere Mit- teilungen: I/O ERROR READING FILE HEADER-ERROR CODE -32 Es ist nicht moeglich, den Dateikennsatz der angegebenen Datei zu lesen.Das Geraet ist entweder nicht eingegliedert oder off-line. HEADER MAP ERROR Ein Fehler im Zuweisungsbereich des Dateikennsatzes liegt vor. MULTIPLE ALLOCATION n,m Die angegebene logische Blocknummer wird zu mehr als einer Datei zugeordnet. Eine zweite automatische Pruefung gibt alle Dateien an, die Teile jedes Vielfachzuordnungsblockes (VZB) sind. FILE IS MARKED FOR DELETE Waehrend des Loeschens der Datei erfolgte ein Systemab- sturz. Der Dateikennsatz der Datei existiert noch, da das Loeschen noch nicht beendet war. BLOCK IS MARKED FREE n,m Die angegebene logische Blocknummer ist der angezeigten Datei zugeordnet, aber nicht in der Datentraegerbelegungs- liste gekennzeichnet. BAD BLOCK NUMBER n,m Der Dateikennsatz ist verfaelscht, da die angegebene Blocknummer fuer das Geraet falsch ist. BAD FILE HEADER Der Dateikennsatz ist verfaelscht. Die letzte Fehlermitteilung fuer diese Datei ist eine Zusammen- fassungszeile: SUMMARY: MULT=nn, FREE=nn, BAD=nnnn MULT - Anzahl der Vielfachzuordnungsbloecke FREE - Anzahl von Bloecken, die in der Datentraegerbelegungsliste gekennzeichnet werden muessen BAD - Anzahl von falschen Blockadresszeigern im Dateikennsatz 353 Die Mitteilungen koennen auf dem Paralleldrucker oder auf dem Bediengeraet ausgegeben werden. Die Mitteilungsliste kann bei Ausgabe auf das Bediengeraet durch die Eingabe CTRL/O abgebrochen werden. Es erscheint nur die Zusammenfassungszeile. 15.5. Schalter -------------- Wiederherstellen von geloeschten Dateien (/DE) ---------------------------------------------- Ruecksetzen des Geloeschtbits im Dateikennsatz Gueltigkeitspruefung von Dateiverzeichnissen (/DV) -------------------------------------------------- Ausgabe von Dateien, die sich auf ein verstuemmeltes Dateiver- zeichnis oder eine nicht vorhandene Datei zurueckfuehren las- sen. Ausgabe von freien und belegten Bloecken (/FR) ---------------------------------------------- Ausgabe der verfuegbaren Bereiche eines Datentraegers Loeschen fehlerhafter Dateihaeder (/HD) --------------------------------------- Es werden entweder alle fehlerhaften Dateihaeder (Ausgabe des Subschalters /AL) oder entsprechend einer Terminaleingabe die fehlerhaften Dateihaeder einzeln geloescht. Identifikationsschalter von VFY (/ID) ------------------------------------- Ausgabe der VFY-Version Listen der Index-Datei (/LI) ---------------------------- vollstaendige Liste der Index-Datei Suchen von verlorenen Dateien (/LO) ----------------------------------- Pruefen der gesamten Dateistruktur, um Dateien zu suchen, die in keinem Verzeichnis stehen Lesekontrolle des Datentraegers (/RC) ------------------------------------- Pruefen des gesamten Datentraegers, ob jeder Block von jeder Datei gelesen werden kann Reorganisierung von verlorenen Bloecken (/RE) --------------------------------------------- Blockzuordnungsdifferenzen zwischen Index-Datei und Daten- traegerbelegungsliste werden durch neues Zuordnen der Bloecke beseitigt. Neuzuordnung von FREE-Bloecken (/UP) ------------------------------------ Bloecke, die in der Datentraegerbelegungsliste als FREE ge- kennzeichnet sind, obwohl sie zu einer Datei gehoeren, werden neu zugeordnet. 354 15.5.1. Wiederherstellen von geloeschten Dateien (/DE) ------------------------------------------------------ Erfolgt waehrend des Loeschens einer Datei ein Systemabsturz, so ist die Datei zwar namentlich geloescht, aber der Dateikennsatz ist noch nicht freigegeben. Die Datei koennte wiederhergestellt oder vollends geloescht werden. Der Schalter wird angegeben: listfile,scratchdev=indev/DE oder indev/DE z.B.: LP:,DK1:=DK0:/DE In diesem Beispiel wird der Datentraeger DK0: bearbeitet, und das Protokoll erscheint auf dem Drucker. Voraussetzung zum Wiederherstellen einer als geloescht gekenn- zeichneten Datei ist, dass der Datentraeger vorher ueber das Kommando MOUNT mit dem /UNL-Schalter eingegliedert wurde und dass VFY unter einem System-UIC arbeiten muss. Der /DE-Schalter setzt das Geloeschtbit im Dateikennsatz zurueck, und mit dem /LO-Schal- ter wird anschliessend die gesamte Dateistruktur ueberprueft. Um mit dem Schalter /DE zu arbeiten, kann VFY folgendermassen ak- tiviert werden: MCR> MOU DK0:/UNL Zugriff zur Index-Datei > UFD DK0:[1,3] fuer /LO > RUN %VFY/UIC=[1,3] System-UIC VFY> LP:,DK1:=DK0:/DE > /LO Soll die Datei geloescht werden, so kann sie ueber die Dateiiden- tifikation aus der Fehlermitteilung FILE IS MARKED FOR DELETE mit PIP geloescht werden. Die Dateiidentifikation ist die erste Zeile der Dateifehler im Fehlerprotokoll. Mit PIP /FI:12:20/DE kann zum Beispiel die Datei mit der Dateiidentifikation 12,20 vom Datentraeger geloescht werden. PIP gibt folgende Mitteilung aus PIP -- FAILED TO MARK FILE FOR DELETE-NO SUCH FILE da als geloescht markierte Dateien abgelehnt werden. Die Datei ist aber geloescht. Wurden Dateien geloescht oder wiederherge- stellt, muss anschliessend mit dem /RE-Schalter die Ueberein- stimmung mit der Datentraegerbelegungsliste gesichert werden. 15.5.2. Gueltigkeitspruefung von Dateiverzeichnissen (/DV) ---------------------------------------------------------- Durch den Schalter wird jedes Dateiverzeichnis ueberprueft. VFY deutet jede Datei vom Dateityp .DIR und einer festen Satzlaenge von 16 Bytes als ein Dateiverzeichnis. Es werden alle gefundenen Fehler, die sich auf ein verstuemmeltes Dateiverzeichnis oder eine nicht vorhandene Datei beziehen, ausgegeben. Der Schalter wird angegeben: listfile=indev/DV oder indev/DV 355 z.B: VFY>DK4:/DV THE FOLLOWING DIRECTORY ENTRIES WERE INVALID [100,100] FILE ID 17,4,0 DATA.FIL;1 - FILE NOT FOUND [100,100] FILE ID 124,7,0 SIMS.DAT;123456- INVALID VERSION NUMBER [100,100] FILE ID 32,4,33 TES.TES;1 - RESERVED FIELD WAS NON-ZERO 3. INVALID DIRECTORY ENTRIES WERE FOUND Verzeichniseintragungen koennen wegen folgender Bedingungen un- gueltig sein: FILE NOT FOUND Die Datei wurde geloescht, ohne im Dateiverzeichnis die Ein- tragung zu loeschen, oder das File-ID-Feld ist zerstoert. Die Eintragung ist mittels des PIP /RM-Kommandos zu entfernen. INVALID VERSION NUMBER Die Verzeichniseintragung ist zerstoert. Die Nullversion der Datei ist mit dem PIP /RM-Kommando zu entfernen. RESERVED FIELD WAS NON-ZERO Das dritte Wort der Verzeichniseintragung ist reserviert und muss Null sein. Mit dem PIP /RM-Kommando ist die Eintragung zu entfernen und anschliessend mit dem PIP /EN-Kommando neu ein- zugeben. 15.5.3. Ausgabe des freien Plattenbereiches (/FR) ------------------------------------------------- Ueber diesen Schalter kann der verfuegbare Speicherbereich eines Datentraegers ausgegeben werden. Der Schalter wird angegeben: listfile=indev/FR oder indev/FR LP:=DK0:/FR LP:=DK1:/FR /FR DK1:/FR , und VFY gibt die nachstehende Mitteilung aus: dev: HAS nnnn. BLOCKS FREE. mmmm. BLOCKS USED OUT OF pppp. Dabei ist: nnnn - Anzahl der freien Bloecke mmmm - Anzahl der belegten Bloecke pppp - Gesamtanzahl der Bloecke 356 15.5.4. Loeschen fehlerhafter Dateihaeder (/HD) ----------------------------------------------- Dieser Schalter erkennt alle fehlerhaften Dateikennsaetze auf ei- nem Datentraeger. Bei Angabe des Subschalters /AL werden alle fehlerhaften Dateikennsaetze automatisch geloescht. Wird der Subschalter nicht angegeben, erscheint folgende Meldung: >VFY DK1:/HD CONSISTENCY CHECK OF INDEX AND BITMAP ON DK1: FILE ID 000017,000005 100003.DIR;1 OWNWER [100,3] BAD FILE HAEDER DELETE THIS HAEDER [Y/N/Q/G]? Folgende Antworten sind moeglich: Y Der Kennsatz wird geloescht und die Arbeit wird fortge- setzt N Der Kennsatz wird nicht geloescht und die Arbeit wird fortgesetzt Q Der Kennsatz wird nicht geloescht und die Arbeit wird be- endet G Der Kennsatz und alle weiteren fehlerhaften Kennsaetze werden geloescht Der Kennsatz wird nicht geloescht und die Arbeit wird fortgesetzt Bei jeder anderen Antwort erscheint folgende Meldung: VFY -- ILLEGAL RESPONSE - TRY AGAIN 15.5.5. Drucken der Index-Datei (/LI) ------------------------------------- Verify druckt die gesamte Index-Datei auf dem angegebenen Proto- kollgeraet. Fuer jede Datei erscheint eine Zeile mit Dateinummer, Dateifolgenummer, Dateiname und Eigentuemer. Der Schalter wird angegeben: listfile,scratchdev=indev/LI oder indev/LI LP:=DK0:/LI LP:=DK1:/LI /LI DK1:/LI , und VFY gibt folgende Mitteilung aus: z.B. VFY> DKn:/LI FILE ID 000001,000001 INDEXF.SYS;1 OWNER[1,1] usw. 357 15.5.6. Suchen von verlorenen Dateien (/LO) ------------------------------------------- Die gesamte Dateistruktur wird geprueft, um Dateien zu suchen, die in keinem Verzeichnis stehen. Sie sind im gewissen Sinne "verloren" und es kann nicht mehr ueber Dateiname auf sie zuge- griffen werden. Von den Dateien wird eine Liste erstellt, und sie werden in das vorher eroeffneten UFD[1,3] eingetragen. Der Schal- ter wird angegeben: listfile,scratchdev=indev/LO oder indev/LO LP:,DK1:=DK0:/LO LP:,DK0:=DK1:/LO /LO DK1:/LO 15.5.7. Lesekontrolle des Datentraegers (/RC) --------------------------------------------- Die Lesbarkeit jedes benutzten Blocks auf einem Datentraeger wird geprueft. Dabei wird jede Datei mit den dazugehoerenden Bloecken gelesen. Der Schalter wird angegeben: listfile=indev/RC[:n] oder indev/RC[:n] LP:=DK0:/RC LP:=DK1:/RC /RC DK1:/RC Ueber den Parameter [:n] kann angegeben werden, wieviel Bloecke gleichzeitig gelesen werden sollen. Als Standardwert gilt die ma- ximale Anzahl von Bloecken im verfuegbaren dynamischen Speicher von VFY. Wird VFY in einer groesseren Partition installiert, ver- groessert sich auch der dynamische Speicher. In einer 8-K-Parti- tion koennen fuenf Bloecke gelesen werden und fuer jedes weitere K Worte kommen vier Bloecke hinzu. Die Angabe des maximalen Blockfaktors ermoeglicht die schnellste Lesekontrolle. Beim Fest- stellen eines Fehlers wird jeder Block des fehlerhaften Abschnit- tes noch einmal gelesen, um den falschen Datenblock zu lokali- sieren. Es wird die folgende Dateiidentifikationszeile aus- gegeben: FILE ID nn,nn name.type;version block used/ blocks allocated Falls der Blockfaktor groesser als eins ist, wird eine weitere Fehlerzeile ausgegeben: ERROR STARTING AT VBN n1,n2 LBN n1,n2 - ERROR CODE -err Danach werden ein oder mehrere Mitteilungen, die die genauen Bloecke mit Fehleranteil anzeigen, ausgegeben: ERROR AT VBN n1,n2 LBN n1,n2 - ERROR CODE -err 358 Wird nur eine ERROR-STARTING-AT-Zeile ausgegeben, so sind die Datenbloecke lesbar. Wenn die VBN eines unlesbaren Blockes, die in der ERROR-AT-Zeile steht, die Anzahl der benutzten Bloecke ueberschreitet, ist der Datenteil der Datei richtig. Die ERROR- CODE-Mitteilung -4 zeigt einen Geraeteparitaetsfehler an. 15.5.8. Reorganisation von verlorenen Bloecken (/RE) ---------------------------------------------------- Verlorene Bloecke werden reorganisiert, das heisst, Bloecke die zugeordnet erscheinen, aber zu keiner Datei gehoeren. Der Schal- ter wird angegeben: listfile,scratchdev=indev/RE oder indev/RE LP:,DK1:=DK0:/RE LP:,DK0:=DK1:/RE /RE DK1:/RE Falls die Dateistruktur VZB enthaelt, muessen diese entsprechen- den Dateien geloescht werden. Eine Liste von diesen Dateien zeigt, welche Dateien Teil welcher Bloecke sind. Eine Datei kann gerettet werden, waehrend alle anderen geloescht werden muessen. Im Anschluss sollte nochmals geprueft werden, ob weitere VZB- Dateien vorhanden sind. Zur Bestimmung, ob irgendwelche Bloecke auf dem Datentraeger "verloren" sind, werden die letzten beiden Zeilen der Ergebnisliste verglichen. Sie geben den freien Bereich auf dem Datentraeger an. In der ersten Zeile ist der freie Be- reich gemaess der Index-Datei ausgewiesen und in der zweiten der Bereich, der laut Datentraegerbelegungsliste besteht. Zeigt die Index-Datei mehr freie Bloecke als die Datentraegerbelegungsliste an, so sind jene Bloecke im gewissen Sinne "verloren". Sie erscheinen zugeordnet, aber keine Datei enthaelt sie. Diese Bloecke werden mit dem /RE-Schalter im neuen Durchlauf reorgani- siert. Zum Datentraeger muss Schreibzugriff erlaubt sein, und VFY muss unter einem System-UIC arbeiten. Die durch VFY erstellte Arbeitsdatei sollte auf einen anderen Datentraeger uebertragen werden (z.B. VFY> LP:,DK1:=DK0:/RE). Wird das unterlassen, muss der Datentraeger nach Beendigung der Operation sofort ausgeglie- dert werden, da sonst die Zuordnung in der Datentraegerbelegungs- liste nicht vollstaendig ist. Danach wird der Datentraeger wieder eingegliedert, und die Arbeitsdatei muss vom Bediener geloescht werden. VFY gibt in diesem Fall den Namen der Arbeitsdatei aus (s. Abschn. 15.5.9.). 15.5.9. Neuzuordnung von FREE-Bloecken (/UP) -------------------------------------------- Wenn keine VZB vorhanden sind, muessen die in der Datentraeger- belegungsliste als FREE gekennzeichneten Bloecke eliminiert wer- den, obwohl sie einer Datei zugeordnet sind. Um diese Bloecke neu zuzuordnen, wird VFY mit dem /UP-Schalter neu durchlaufen. Sind keine VZB oder FREE-Bloecke mehr vorhanden, ist die Dateistruktur vor dem Schreiben neuer Dateien und Erweiterung existierender Dateien geschuetzt. Der Schalter wird angegeben: 359 listfile,scratchdev=indev/UP oder indev/UP LP:,DK1:=DK0:/UP LP:,DK0:=DK1:/UP /UP DK1:/UP Zum Datentraeger muss Schreibzugriff bestehen, und VFY muss unter einem System-UIC arbeiten. Die durch VFY erstellte Arbeitsdatei sollte auf einen anderen Datentraeger uebertragen werden (z.B. VFY> LP:,DK1:=DK0:/UP). Wird das unterlassen, muss der Daten- traeger nach der Beendigung der Operation sofort ausgegliedert werden, da sonst die Zuordnung in der Datentraegerbelegungsliste nicht vollstaendig ist. Danach wird der Datentraeger wieder ein- gegliedert, und die Arbeitsdatei muss vom Bediener geloescht werden. VFY gibt in diesem Fall eine Mitteilung aus, um den an- gegebenen Namen der Arbeitsdatei zu loeschen. VFY -- TO COMPLETE THE STORAGE MAP UPDATE DISMOUNT THE VOLUME IMMEDIATELY. THEN MOUNT IT AND DELETE THE FOLLOWING FILE:[g,m]filespec [g,m] - Ist das UFD filespec - Ist der Name der zu loeschenden Datei. 15.6. Fehlermitteilungen ------------------------ 15.6.1. Fehlerausschriften -------------------------- VFY -- COMMAND SYNTAX ERROR Das Kommando entspricht nicht der Kommandovorschrift. Kommando wiederholen. VFY -- FAILED TO ALLOCATE SPACE FOR TEMP FILE Der spezifizierte Datentraeger fuer die temporaere Arbeitsdatei ist voll belegt. Loeschen der unnoetigen Dateien, VFY wird nochmals durchlaufen. VFY -- FAILED TO ATTACH DEVICE oder VFY -- FAILED TO DETACH DEVICE oder VFY -- ILLEGAL DEVICE Der Dateispezifikator wurde mit einem falschen Geraet angegeben. Kommando mit gueltigem Geraet wiederholen. VFY -- FAILED TO ENTER FILE Eine der folgenden Bedingungen kann gelten: 1) VFY arbeitet nicht unter einem System-UIC 2) Das Geraet ist nicht eingeschaltet 3) Das Geraet ist nicht eingegliedert 4) Es liegt ein Geraetefehler vor 360 VFY -- FAILED TO FIND INDEXF.SYS;1 IN MFD - WILL OPEN INDEX BY FILE ID 1,1 oder VFY -- FAILED TO FIND BITMAP.SYS;1 IN MFD - WILL OPEN BITMAP BY FILE ID 2,2 Das MFD ist zerstoert. Die Platte ist mit dem Dienstprogramm BRU zu kopieren. VFY -- ILLEGAL SWITCH Der spezifizierte Schalter ist kein VFY-Schalter. Kommando mit gueltigem Schalter wiederholen. VFY -- CLOSE FAILURE ON BIT MAP oder VFY -- CLOSE FAILURE ON INDEX FILE oder VFY -- CLOSE FAILURE ON TEMPORARY FILE oder VFY -- CLOSE FAILURE ON LISTING FILE oder VFY -- I/O ERROR ON INPUT FILE oder VFY -- I/O ERROR ON OUTPUT FILE oder VFY -- I/O ERROR READING DIRECTORY FILE oder VFY -- I/O ERROR WRITING FILE HAEDER oder VFY -- FAILED TO CLOSE DIRECTORY FILE Eine der folgenden Bedingungen kann gelten: 1) Das Geraet ist nicht eingeschaltet 2) Das Geraet ist nicht eingegliedert 3) Die Geraetetechnik hat versagt Feststellen, welche der obigen Bedingungen die Ursache fuer die Mitteilung ist, und das Kommando wiederholen. VFY -- NO DYNAMIC MEMORY AVAILABLE - PARTITION TOO SMALL Der Arbeitsbereich von VFY ist zu klein. VFY in groesserer Par- tition installieren. VFY -- OPEN FAILURE ON BIT MAP oder VFY -- OPEN FAILURE ON INDEX FILE oder VFY -- OPEN FAILURE ON LISTING FILE oder VFY -- OPEN FAILURE ON TEMPORARY FILE oder VFY -- FAILED TO OPEN DIRECTORY FILE oder VFY -- FAILED TO OPEN FILE FOR READ CHECK Eine der folgenden Bedingungen kann gelten: 1) VFY arbeitet nicht unter einem System-UIC, welches Bedingung ist 2) Die Datei exsistiert nicht namentlich im spezifizierten Verzeichnis 3) Der Datentraeger ist nicht eingegliedert 361 4) Das spezifizierte Dateiverzeichnis existiert nicht 5) Die spezifizierte Datei ist lesegeschuetzt 6) Die spezifizierte Datei ist nicht vorhanden Feststellen, welche der obigen Bedingung die Ursache fuer die Mitteilung ist, und das Kommando wiederholen. VFY -- STORAGE CONTROL BLOCK (VBN1 of BITMAP.SYS) IS CORRUPTED Der SCB ist zerstoert. Das ist bedeutungslos, da nur VFY und PIP /FR diesen Block pruefen. Die Platte ist mit den Dienstpro- grammen BRU oder DSC zu kopieren. VFY -- THEY ARE STILL LOST, COULD NOT FIND DIRECTORY Der UFD [1,3] ist auf dem Datentraeger nicht vorhanden, welcher bei Anwendung des /LO-Schalters benoetigt wird. 15.6.2. VFY-Fehler-Codes ------------------------ Falls VFY keinen Zugriff zu den Dateimitteilungen hat, werden die Fehler in folgender Form angezeigt: VFY -- ERROR CODE nn. nn. ist einer der in folgender Tabelle enthaltenen Fehler- codes. Fehler-Code - Bedeutung 1 - Falsches Geraet 2 - Kein Zugriff zur Datentraegerbelegungsliste 3 - Kein Zugriff zur Arbeitsdatei 4 - Arbeitsdatei kann nicht eroeffnet werden 5 - Ausgabegeraet kann nicht getrennt werden 6 - Ausgabegeraet kann nicht angeschlossen werden 7 - Kommando-Syntax-Fehler 8 - E/A-Fehler in der Eingabedatei 9 - E/A-Fehler in der Ausgabedatei 10 - Falscher Schalter 11 - Kein Zugriff zur Listendatei 12 - Kein Zugriff zur Index-Datei 13 - Dynamischer Speicherbereich zu klein 362 16. Verzeichnisverwaltungsprogramm SRD 1630 (OMEX) -------------------------------------------------- 16.1. Vorbemerkungen -------------------- Das Dienstprogramm SRD ( Sorted Directory Utility ) erzeugt sor- tierte Listen von Dateiverzeichnissen und ermoeglicht Manipula- tionen in Dateiverzeichnissen, welche mit dem Dienstprogramm PIP nicht moeglich sind. Ausserdem kann eine Ausgabedatei erstellt werden, die mit dem Dienstprogramm EDI bearbeitet werden kann. Vor der Sortierung liest SRD den gesamten Inhalt des Dateiver- zeichnisses in den Speicher. Die Groesse des SRD-Puffers kann bei der Installierung von SRD mit dem Incrementschalter beeinflusst werden. Wenn der Speicherbereich fuer das gesamte Dateiverzeich- nis nicht ausreicht, sortiert SRD blockweise. Ein Zurueckschrei- ben in das Dateiverzeichnis wird in diesem Falle abgebrochen. SRD wird mit den in OMEX ueblichen Methoden aktiviert. Das Pro- gramm akzeptiert eine Indirektkommandodatei als Eingabe bzw. kann es durch eine Indirektkommandodatei gestartet werden. 16.2. Kommandosyntax -------------------- Das Kommandoformat ist aehnlich zu den Dateiverzeichnisopera- tionen von PIP: SRD>[outfile=][infile][/switches] outfile - Ausgabedateispezifikation, welche eine Datei oder ein Geraet sein kann. Wird keine Ausgabedateispezifika- tion angegeben, dann erfolgt die Ausgabe ueber TI: Sind einige Teile der Dateispezifikation ausgelassen, werden diesen Teilen die entsprechenden Standards zu- gewiesen: SY:[akt. UIC]DIRECTORY.LST infile - spezifiziert die Dateien, an welchen der Schalter wirken soll. SRD kann mit einer unvollstaendigen Da- teispezifikation arbeiten, d.h. ausgelassene Zeichen werden mit der Sternvereinbarung aufgefuellt. Wird die Eingabedateispezifikation nicht angegeben, gilt *.*;* switches - kennzeichnet gueltige Kombinationen von Schaltern, die angegeben werden koennen. 16.3. Schalter -------------- Nachfolgend angefuehrte Schalter sind bei SRD moeglich. Die Schalter dienen zum Verwalten der Dateiverzeichnisse, zum Erstel- len von Listen nach entsprechenden Suchkriterien und zur Gestal- tung der Listen sowie zur Information und Organisation der Arbeit des Nutzers. /00 - Einschliessen des MFD in die [*,*]-Suche (16.3.22.) /AE - Auswahl nach und gleich dem spezifizierten Datum und Zeit (16.3.9.) /AF - Auswahl nach dem spezifizierten Datum und Zeit (16.3.9.) /AT - Anschliessen des Ausgabeterminals (16.3.30.) /BE - Auswahl vor und gleich dem spezifizierten Datum und Zeit (16.3.9.) /BF - Auswahl vor dem spezifizierten Datum und Zeit (16.3.9.) 363 /BK - Einsetzen von Leerzeichen vor den Dateinamen (16.3.36.) /CM - Erstellen einer Kommandodatei (16.3.33.) /CO - Suche nach zusammhaengenden Dateien (16.3.24.) /DA - Auswahl entsprechend dem angegebenen Datum (16.3.9.) /DE - Loeschen von Dateien (16.3.15.) /ER - Auswahl fehlerhaft erstellter Dateien (16.3.1.) /FI - Ausgabe entsprechend File-ID-Nummer (16.3.11.) /FO - Ausgabe entsprechend UIC (16.3.12.) /FU - vollstaendige Liste (16.3.3.) /GT - Auswahl entsprechend Blockgroesse (16.3.13.) /HD - Drucken der Kommandozeile in der Kopfzeile (16.3.34.) /HE - HELP-Funktion (16.3.31.) /HV - Auswahl entsprechend der Versionsnummer (16.3.6.) /ID - Ausgabe der Version von SRD (16.3.28.) /LI - Erstellen einer Liste (16.3.1.) /LO - Suche nach gesperrten Dateien (16.3.25.) /M2 - mittlere Liste Typ 2 (16.3.2.) /MI - mittlere Liste (16.3.2.) /MU - Suche nach Dateien mit Mehrfachdateikoepfen (16.3.27.) /NA - Aenderung der Sortierfolge (16.3.4.) /NE - Liste der Dateien, die nicht Spezifikation entsprechen (16.3.5.) /NV - neue Version von Dateien, gleich wie /SV (16.3.7.) /OV - Ausgabe veralteter Versionen (16.3.8.) /PA - verdichtete Ausgabe der Dateispezifikationen (16.3.37.) /PU - loeschen veralteter Versionen (16.3.16.) /RD - Nutzung des Revisionsdatums (16.3.19.) /SD - selektives loeschen von Dateien (16.3.17.) /SE - Ersatzzeichen in der Dateispezifikation (16.3.10.) /SI - Ausgabe der Puffergroesse (16.3.29.) /SM - Ausgabe einer Summenzeile (16.3.35.) /SP - Ausgabe ueber Printspooler (16.3.32.) /SR - Sortieren des Dateiverzeichnisses (16.3.20.) /SV - hoechste Version, gleich wie /NV (16.3.7.) /SY - einschliesslich System-UFD's in [*,*]-Suche (16.3.21.) /TB - Feststellen der belegten Bloecke (16.3.14.) /WB - Zurueckschreiben in das UFD (16.3.18.) /WD - Sternvereinbarung fuer nichtspezifizierte Dateielemente bei Loeschoperationen (16.3.23.) /WI - Sternvereinbarung fuer nichtspezifizierte Dateielemente bei Listenoperationen (16.3.23.) /ZE - Suche nach leeren Dateien (16.3.26.) 16.3.1. Erstellen einer Liste (/LI) ----------------------------------- Es werden Dateiname, Typ und Versionsnummer von den Dateien aus- gegeben, die der Eingabedateispezifikation entsprechen. Die Aus- gabe erfolgt sortiert entsprechend folgender Regel (Standard): - zuerst aufsteigend nach Dateityp - dann aufsteigend nach Dateiname - und dann fallend nach Versionsnummer Es werden Kopf- und Abschlusszeilen fuer jeden UFD ausgegeben. Die Kopfzeilen beinhalten den Namen des UFD, Datum und Zeit, so- wie die eingegebene Kommandozeile. Die Abschlusszeile enthaelt die Anzahl der entsprechend dem Suchkriterium ausgewaehlten Da- teien, sowie die Gesamtanzahl der Dateien im Verzeichnis. Wurde einer der Schalter /MI, /FU, /AE, /AF, /BE, /BF, /DA, /CO, /LO, /MU, /ZE, /GT, /ER, /FO oder /TB angegeben, wird die Anzahl be- nutzter und zugewiesener Bloecke fuer die ausgewaehlten Dateien ebenfalls ausgegeben. 364 Der Schalter kann negiert werden (/-LI). Dadurch wird die Ausga- be einer Liste unterdrueckt, die bei einigen Schaltern standard- maessig ausgegeben wird (z.B. /WB oder /PU). Es werden dann nur Kopf- und Abschlusszeilen ausgegeben. 16.3.2. Ausgabe einer "mittleren" Liste (/MI[:n], /M2) ------------------------------------------------------ Diese Schalter wirken aehnlich dem /LI-Schalter. Es werden zu- saetzliche Informationen fuer die betreffenden Dateien ausgege- ben. Die zusaetzlichen Informationen werden in Abhaengigkeit vom /M2-Schalter ausgegeben und sind entweder (/M2 nicht angegeben): - Erstellungsdatum und Zeit - Revisionsdatum und Zeit - Revisionsnummer oder (/M2 angegeben): - Anzahl der zugewiesenen Bloecke der Datei - EOF-Blocknummer - Kennzeichnung (Contiguous/Locked/Multihaeder) - File-ID - Erstellungsdatum (Revisionsdatum, wenn /RD angegeben) Der Wert n des /MI-Schalters legt die Ausgabebreite der Liste fest (70 bis 132). Wird n nicht angegeben, gilt als Standard die Puffergroesse des Ausgabegeraetes. 16.3.3. Ausgabe einer vollstaendigen Liste (/FU[:n]) ---------------------------------------------------- Es wird eine vollstaendige Liste ausgegeben, die folgende Infor- mationen der entsprechenden Dateien enthaelt: - Anzahl der zugewiesenen Bloecke der Datei - EOF-Blocknummer - Kennzeichnung (Contiguous/Locked/Multihaeder) - File-ID - Eigentuemer-UIC - Dateischutzcode - Erstellungsdatum und Zeit - Revisionsdatum und Zeit - Revisionsnummer Der Wert n des /FU-Schalters legt die Ausgabebreite der Liste fest (70 bis 132). Wird n nicht angegeben, gilt als Standard die Puffergroesse des Ausgabegeraetes. 16.3.4. Aenderung der Sortierfolge (/NA) ---------------------------------------- Bei Angabe des Schalters erfolgt die Ausgabe nach einer geaender- ten Sortierfolge: - zuerst aufsteigend nach Dateinamen - dann aufsteigend nach Dateityp - und dann fallend nach Versionsnummer 365 16.3.5. Liste der Dateien, die nicht der Spezifikation entsprechen (/NE) ------------------------------------------------------ Dieser Schalter bewirkt die Ausgabe aller derjenigen Dateien, die nicht der angegebenen Eingabedateispezifikation entsprechen. 16.3.6. Auswahl der Dateien entsprechend der Versionsnummer (/HV[:n]) -------------------------------------------- Durch diesen Schalter werden alle Dateien ausgelistet, die der Eingabedateispezifikation entsprechen und deren Versionsnummer groesser oder gleich dem Wert n ist. Wird n nicht angegeben, ist der Standard = 2. 16.3.7. Ausgabe der hoechsten Versionen von Dateien (/SV[:n] und /NV[:n]) --------------------------------------------------- Dieser Schalter listet die n-hoechsten Versionen der Dateien aus, die der Eingabedateispezifikation entsprechen. Wird n nicht ange- geben, so ist der Standard = 1. Wird fuer n = -1 angegeben, wird die aelteste Version der entsprechenden Datei ausgegeben. 16.3.8. Ausgabe veralteter Versionen von Dateien (/OV:n) -------------------------------------------------------- Dieser Schalter listet die entsprechenden Dateien aus, ausgenom- men die n-hoechsten Versionen. Der Standardwert fuer n = 1. Dieser Schalter hat die entgegengesetzte Wirkung der /SV- und /PU-Schalter, d.h. es werden diejenigen Dateinamen ausgegeben, die beim /SV-Schalter nicht ausgegeben, bzw. beim /PU-Schalter geloescht wuerden. 16.3.9. Auswahl der Dateien entsprechend Datum (/AE, /AF, /BE, /BF, /DA) ---------------------------------------------- Jeder dieser Schalter akzeptiert ein angegebenes Datum und/oder die Zeit als Parameter in der Form dd-mmm-yy hh:mm oder hh:mm dd-mmm-yy z.B.: /DA:08-APR-86 12:22 Das Datum kann auch in der Form ddmmmyy angegeben werden z.B.: /DA:08APR86 12:22 Wird kein Datum angegeben, gilt das aktuelle Datum und wird keine Zeit angegeben, erfolgt keine Zeitpruefung. - /AE listet alle Dateien, welche zum oder nach eingegebenen Datum (und Zeit) erstellt wurden - /AF listet alle Dateien, welche nach dem eingegebenen Datum (und Zeit) erstellt wurden - /BE listet alle Dateien, welche zum oder vor dem eingegebenen Datum (und Zeit) erstellt wurden - /BF listet alle Dateien, welche vor dem eingegebenen Datum (und Zeit) erstellt wurden - /DA listet alle Dateien, welche zum eingegebenen Datum (und Zeit) erstellt wurden Fuer diese Schalter beinhaltet die Liste das Erstellungsdatum und die -zeit. Wird der /RD-Schalter mit angegeben, dann wird dieser Schalter fuer die Auswahl benutzt und die Ausgabeliste beinhaltet das Revisionsdatum und die Revisionszeit. 366 16.3.10. Ersatzzeichen in der Dateispezifikation (/SE:filespec) --------------------------------------------------------------- Als Ersatzzeichen koennen in der Dateispezifikation die Zeichen %, ? oder * angegeben werden. Dabei ersetzen % und ? genau ein Zeichen und * eine beliebige Anzahl von Zeichen innerhalb von Dateinamen, Dateityp und Versionsnummer. Der Schalter /SE kann nicht bei der Standardspezifikation fuer die Eingabedatei = *.*;* benutzt werden. Wenn z.B. im Dateiverzeichnis folgende Dateinamen enthalten sind, AUTO, AUTOR, AUTOMAT, ANNO, ALSO, ANTON, AMINO, AO dann werden entsprechend filespec folgende Dateien ausgelistet: /SE:A%%O* --> AUTO, AUTOR, AUTOMAT, ANNO, ALSO, ANTON /SE:A%%O --> AUTO, ANNO, ALSO /SE:A*O --> AUTO, ANNO, ALSO, AMINO, AO /SE:A*O* --> Ausgabe aller im Beispiel angefuehrten Dateien 16.3.11. Ausgabe entsprechend Datei-ID-Nummer (/FI:n) ----------------------------------------------------- Dieser Schalter gibt den Namen einer Datei entsprechend ihrer Datei-ID-Nummer aus. Wird durch eine Fehlermeldung eines Dienstprogrammes, wo nur die File-ID-Nummer angegeben wird, die die Datei nicht genauer be- zeichnet, kann man durch diesen Schalter den Namen der betreffen- den Datei ermitteln. 16.3.12. Ausgabe entsprechend UIC (/FO:[ggg,mmm]) ------------------------------------------------- Es werden alle Dateien ausgegeben, deren Eigentumsrechte dem an- gegebenen UIC entsprechen oder, wenn der Schalter negiert ist, diejenigen Dateien im UIC, die nicht zu dem angegebenen UIC ge- hoeren. Jedes der UIC-Felder kann eine Sternvereinbarung sein. 16.3.13. Auswahl entsprechend der Blockgroesse (/GT:n) ------------------------------------------------------ Dieser Schalter listet alle diejenigen Dateien aus, denen min- destens n Bloecke zugewiesen sind. 16.3.14. Feststellen der belegten und zugeordneten Bloecke (/TB) ---------------------------------------------------------------- Bei Angabe dieses Schalters wird die Summe der belegten und zu- gewiesenen Bloecke ermittelt und in einer Summenzeile ausgegeben. 16.3.15. Loeschen von Dateien (/DE) ----------------------------------- Durch diesen Schalter werden alle Dateien, die der Eingabedatei- spezifikation entsprechen, geloescht und zur Bestaetigung ausge- listet. 367 16.3.16. Loeschen veralteter Versionen (/PU[:n]) ------------------------------------------------ Dieser Schalter loescht alle ausser den n-hoechsten Versionen aus dem Verzeichnis entsprechend der Eingabedateispezifikation und listet alle geloeschten Dateien aus. Wird n nicht angegeben, ist der Standard = 1. Wird fuer n = -1 angegeben, dann werden alle, ausser der aeltesten Version ge- loescht. 16.3.17. Selektives Loeschen von Dateien (/SD:filespec) ------------------------------------------------------- Dieser Schalter listet alle Dateien entsprechend filespec auf dem Bediengeraet aus und fordert den Nutzer auf, eine Antwort einzugeben, ob die entsprechende Datei geloescht werden soll. Folgende Antworten sind moeglich: Y - Loeschen dieser Datei N - Diese Datei wird nicht geloescht G - Loeschen aller weiteren entsprechenden Dateien Q - Beenden ohne weiteres Loeschen von Dateien CTRL/Z - Abbrechen des selektiven Loeschens Alle anderen Antworten werden als "N" interpretiert. Wird "G" als Antwort eingegeben, erscheint die Frage ARE YOU SURE ? um sicherzugehen, ob die restlichen zutreffenden Dateien ge- loescht werden sollen. Wird N eingegeben, geht SRD zur Abfrage zurueck. Bei Eingabe von Y werden die restlichen zutreffenden Dateien geloescht. filespec gilt nach den gleichen Regeln wie bei dem /SE-Schalter. 16.3.18. Zurueckschreiben in das UFD (/WB) ------------------------------------------ Dieser Schalter erstellt eine Liste entsprechend der Sortiervor- gabe. Ausserdem werden die Dateihaeder in dieser Sortierfolge in das UFD zurueckgeschrieben. Dieser Schalter ist auch fuer das MFD [0,0] anwendbar. Dadurch werden bei spaeteren Listenoperationen sowohl die Dateien in numerischer Ordnung der Dateiverzeichnisse als auch sortiert nach Dateinamen ausgegeben. Fuer die Anwendung dieses Schalters ist Schreibzugriff erforderlich. 16.3.19. Nutzung des Revisionsdatums (/RD) ------------------------------------------ Dieser Schalter benutzt bei der Auswahl das Revisionsdatum. Wird dieser Schalter in Verbindung mit dem /MI- oder /M2-Schalter be- nutzt, erscheint das Revisionsdatum an Stelle des Erstellungs- datums in der Liste. 368 16.3.20. Sortieren des Dateiverzeichnisses (/SR) ------------------------------------------------ Die Angabe des Schalters ist nur wirksam bei Listen- und Zurueck- schreiboperationen. Die Benutzung von Schalterargumenten legt die alphabetische bzw. numerische Sortierreihenfolge fest. Das erste Zeichen spezifiziert das Feld der Dateispezifikation, nach wel- chem sortiert werden soll und das zweite Zeichen die Sortier- reihenfolge, aufsteigend oder fallend. Gueltige Zeichen fuer das Feld der Dateispezifikation sind: N - Dateiname T - Dateityp V - Versionsnummer D - Dateidatum Die Sortierreihenfolge wird im zweiten Zeichen gekennzeichnet durch: A - aufsteigend D - fallend Die Standardsortierreihenfolge fuer SRD ist: 1. Aufsteigend nach Dateityp 2. Aufsteigend nach Dateiname 3. Fallend nach Versionsnummer Diese Standardsortierreihenfolge entspricht /SR:T:N:VD oder /SR:TA:NA:VD Fuer ausgelassene Schalterargumente werden die Standardannahmen eingesetzt. 16.3.21. Einschliessen der System-UFD's in die [*,*]-Suche (/SY) ---------------------------------------------------------------- Bei Angabe dieses Schalters werden alle System-UFD's (Gruppen- nummer 0 bis einschliesslich 10) in die [*,*]- oder [*,n]-Suche einbezogen. 16.3.22. Einschliessen des MFD in die [*,*]-Suche (/00) ------------------------------------------------------- Bei Angabe des Schalters wird das MFD in die [*,*]-, [0,*]- oder [*,0]-Suche einbezogen. Das Hauptdateiverzeichnis [0,0] kann ausserdem immer ausgelistet werden, wenn diese Spezifizierung direkt angegeben wird. 16.3.23. Behandeln aller nicht angegebenen Dateispezifikations- elemente als Sternvereinbarung (/WI, /WD) ----------------------------------------------------------------- Diese Schalter setzen fuer alle nicht angegebenen Elemente der Dateispezifikation die Sternvereinbarung ein. Der /WI-Schalter erzeugt eine Liste und der /WD-Schalter wirkt im Zusammenhang mit Loeschoperationen. Beide Schalter werden bei Angabe des /SE- oder /SD-Schalters ignoriert. Wird zum Beispiel das Kommando SRD>A/WI angegeben, dann werden alle Dateien, deren Dateiname mit A be- ginnt, ausgelistet. SRD>.O/WI listet alle Dateien aus, deren Dateityp mit O beginnt (z.B.:.OBJ, .OLB usw.). 369 16.3.24. Auswahl von zusammenhaengenden Dateien (/CO) ----------------------------------------------------- Dieser Schalter veranlasst SRD, nur diejenigen Dateien auszu- waehlen, die zusammenhaengend (contiguous) sind. 16.3.25. Auswahl von gesperrten Dateien (/LO) --------------------------------------------- Dieser Schalter listet nur diejenigen Dateien aus, die gesperrt (locked) sind. 16.3.26. Auswahl leerer Dateien (/ZE) ------------------------------------- Dieser Schalter listet diejenigen Dateien aus, denen 0 Bloecke zugewiesen sind. 16.3.27. Auswahl von Dateien mit Mehrfachdateikoepfen (/MU) ----------------------------------------------------------- Dieser Schalter listet diejenigen Dateien aus, die Mehrfachdatei- koepfe aufweisen. 16.3.28. Ausgabe der Version von SRD (/ID) ------------------------------------------ Diese Option zeigt die aktuelle Version von SRD an. 16.3.29. Ausgabe der verfuegbaren Puffergroesse (/SI) ----------------------------------------------------- Diese Option zeigt die Groesse des SRD-Puffers im Speicher an, in den die Verzeichnisdateien gelesen werden. Dieser Schalter ist fuer die Diagnose geeignet, ob ein Verzeichnis auf Grund seiner Groesse bearbeitet werden kann. 16.3.30. Anschliessen des Ausgabeterminals (/AT) ------------------------------------------------ Durch Angabe des Schalters wird das Ausgabeterminal waehrend der SRD-Operation angeschlossen. Das hat den Vorteil, CTRL/O fuer das Unterdruecken von Listen nutzen zu koennen und den Nachteil, dass das Terminal waehrend einer laengeren Suche gebunden bleibt. 16.3.31. HELP-Funktion (/HE) ---------------------------- Dieser Schalter generiert das Kommando "HELP SRD" zur Ausgabe an das Operationssystem OMEX. Die Nutzung dieses Kommandos erfordert eine entsprechende HELP-Datei im UIC [1,2] 16.3.32. Ausgabe ueber Printspooler (/SP) ----------------------------------------- Durch diesen Schalter wird die im Kommando angegebene Ausgabeda- tei ueber den Printspooler ausgegeben. 370 16.3.33. Erstellen einer Kommandodatei (/CM:pro:aaaaa) ------------------------------------------------------ Durch diesen Schalter wird eine Kommandodatei erstellt. Fuer jede, dem Suchbegriff entsprechende Datei wird eine Kommandozei- le erstellt. Bei vollstaendiger Angabe der Schalterargumente hat die Kommandozeile folgendes Format: pro outfile,listfile=infile.typ;ver,infile2 wobei: pro - entspricht dem Programmnamen, der im ersten Schal- terargument angegeben wurde (z.B. MAC) outfile - Name der Ausgabedatei listfile - Name der Listendatei infile - Name der Eingabedatei typ - Dateityp der Eingabedatei ver - Versionsnummer der Eingabedatei infile2 - Name der zweiten Eingabedatei Der Name der Ausgabe-, Listen- und Eingabedateien ergibt sich aus den Namen der Dateien, die dem angegebenen Suchbegriff der SRD- Kommandozeile entsprechen. Im zweiten Schalterargument koennen die Buchstaben O, L, T, V und S angegeben werden. Dabei bedeuten: O - eintragen des Ausgabedateinamens in Kommandozeile L - eintragen des Listendateinamens in Kommandozeile T - eintragen des Dateityps der Eingabe in Kommandozeile V - eintragen der Versionsnummer in Kommandozeile S - eintragen des zweiten Eingabedateinamens in Kommandozeile (zusaetzlich mit Versionsnummer ;0) Wird das zweite Schalterargument nicht angegeben, so wird als Standard nur der Name der Eingabedatei eingetragen. Wird der Schalter /NV oder /SV nicht in der SRD-Kommandozeile an- gegeben, dann muss im zweiten Schalterargument V angegeben sein, um Zeilen des gleichen Inhalts zu vermeiden. Der /PA-Schalter ist im /CM-Schalter enthalten. 16.3.34. Drucken der Kommandozeile in der Kopfzeile (/HD) --------------------------------------------------------- Bei Angabe dieses Schalters wird in der zweiten Kopfzeile die vom Nutzer eingegebene SRD-Kommandozeile ausgegeben. 16.3.35. Ausgabe einer Summenzeile (/SM) ---------------------------------------- Durch Angabe des Schalters wird fuer jedes Dateiverzeichnis eine Summenzeile ausgegeben, die die Anzahl der ausgewaehlten Dateien und die Gesamtanzahl der Dateien im Dateiverzeichnis beinhaltet. Wenn die Schalter /FU, /MI, /DA, /AF, /AE, /BF, /BE, /CO, /LO, /MU, /ZE, /GT, /ER, /FO oder /TB in der Kommandozeile enthalten sind, wird zusaetzlich eine Summenzeile ausgegeben, in der die Anzahl der benutzten und die Anzahl der zugewiesenen Bloecke fuer die ausgewaehlten Dateien enthalten sind. 16.3.36. Einsetzen von zwei Leerzeichen vor jeden Dateinamen (/BK) ------------------------------------------------- Bei Angabe des Schalters werden bei der Ausgabe vor jedem Datei- namen zwei Leerzeichen eingefuegt. 371 16.3.37. Verdichtete Ausgabe der Dateispezifikation (/PA) --------------------------------------------------------- Dieser Schalter entfernt bei der Listenausgabe alle Leerzeichen in den Dateispezifikationen. 16.4. Schalterkombinationen --------------------------- In einer Kommandozeile ist die Angabe mehrerer Schalter moeglich, wenn sie in einem logischen Zusammenhang stehen. SRD /AF:15-AUG-86 09:45 /BE:15-AUG-86 15:00 listet dann alle Dateien aus, die am 15. August 1986 zwischen 09:45 und 15:00 gebildet wurden. SRD *.*/PU/SD listet alle Dateien aus, die geloescht werden sollen und gibt dem Nutzer die Moeglichkeit, die angezeigten Dateien selektiv zu loeschen. 16.4.1. Einschraenkungen bei Schalterkombinationen -------------------------------------------------- - /DA kann nicht mit den Schaltern /AE, /AF, /BE oder /BF be- nutzt werden - /DE kann nicht ohne den /SE-Schalter oder eine Dateispezifika- tion benutzt werden - Nur einer der Schalter /NV, /SV, /OV oder /PU kann in einer Kommandozeile benutzt werden. - Nur einer der Schalter /LI, /MI oder /FU sollte in einer Kommandozeile benutzt werden. SRD nutzt dann den Schalter, der die meisten Informationen liefert. - Die Schalter /ID, /SI und /HE koennen nicht mit anderen Schal- tern benutzt werden. - Widerspruechliche Schalter sind zu vermeiden (z.B.:/NA/-SR). - Es ist nicht sinnvoll, die Schalter /NE, /HV, /SV, /OV, /AE, /AF, /BE, /BF, /DA, /SE, /PU, /SD, /ID, /SI und /HE zu negie- ren. 16.5. Standardwerte der Schalter -------------------------------- Die Standardwerte von einigen Schaltern koennen zur TKB-Zeit ge- aendert werden. Dazu ist es notwendig, die Datei SRDBLD.CMD waehrend der Generierung zu editieren. Fuer folgende Schalter kann der Standardwert geaendert werden: /LI, /NA, /RD, /SR, /SY, /AT, /WD, /WI, /M2, /00, /SM, /HD, /BK. Folgende Schalter sind fuer SRD im Betriebssystem OMOS Standard und gelten als gesetzt: /LI, /SR, /SY, /AT, /WI, /M2, /SM, /HD und /BK. 372 16.6. Beispiele --------------- Die Wirkung der Schalter soll an einigen Beispielen erlaeutert werden. Alle Beispiele beziehen sich auf ein Dateiverzeichnis [200,200], in welchem folgende Dateien enthalten sind: SRD>/-SR **DK1:[200,200] 24-AUG-87 09:48 /-SR U22 .MAC;1 ET .ODL;1 LOGIN .CMD;1 HAMU .TSK;1 BADD .FOR;1 FM .TXT;2 DRUCK .FOR;1 BKE .MAC;1 BKE .TSK;1 PTI .CMD;1 DATA .OLB;1 PUNKT .DAT;1 SINUS .DAT;1 T1T1 .OBJ;1 SINUS .DAT;2 BADD .FOR;2 16. Files selected 16. Files total Eine Sortierung nach Dateinamen, sowie Angabe des /MI-Schalters ergibt folgende Liste: SRD>/NA/MI **DK1:[200,200] 24-AUG-87 09:48 /NA/MI BADD .FOR;2 12./12. (170,10) 08-APR-87 10:03 BADD .FOR;1 12./12. (134,27) 03-APR-87 12:43 BKE .MAC;1 1./1. (150,17) 17-AUG-87 14:12 BKE .TSK;1 4./4. C (152,16) 17-AUG-87 14:13 DATA .OLB;1 63./63. C (161,11) 17-AUG-87 14:20 DRUCK .FOR;1 3./3. (163,10) 22-JUL-87 09:02 ET .ODL;1 1./1. (123,32) 17-AUG-87 14:33 FM .TXT;2 10./10. (135,30) 22-JAN-85 14:24 HAMU .TSK;1 16./16. C (143,42) 17-AUG-87 14:11 LOGIN .CMD;1 1./1. (23,12) 17-AUG-87 14:09 PTI .CMD;1 1./1. (160,12) 17-AUG-87 14:17 PUNKT .DAT;1 1./1. (164,10) 07-JUL-87 15:26 SINUS .DAT;2 6./6. (167,10) 12-AUG-87 08:22 SINUS .DAT;1 6./6. (165,10) 28-MAY-87 18:34 T1T1 .OBJ;1 0./0. (166,10) 15-JUN-87 17:29 U22 .MAC;1 12./12. (17,22) 17-AUG-87 14:32 16. Files selected 16. Files total Selected blocks used/allocated: 149./149. 373 Weitere Moeglichkeiten der selektiven Auswahl von Dateien fuer Listen, Loeschoperationen usw. zeigen nachfolgende Beispiele: SRD>*.D*/NE **DK1:[200,200] 24-AUG-87 09:48 *.D*/NE LOGIN .CMD;1 PTI .CMD;1 BADD .FOR;2 BADD .FOR;1 DRUCK .FOR;1 BKE .MAC;1 U22 .MAC;1 T1T1 .OBJ;1 ET .ODL;1 DATA .OLB;1 BKE .TSK;1 HAMU .TSK;1 FM .TXT;2 13. Files selected 16.Files total SRD>/HV **DK1:[200,200] 24-AUG-87 09:48 /HV SINUS .DAT;2 BADD .FOR;2 FM .TXT;2 3. Files selected 16. Files total SRD>/OV **DK1:[200,200] 24-AUG-87 09:48 /OV SINUS .DAT;1 BADD .FOR;1 2. Files selected 16. Files total SRD>/AE:22-JUL-87 **DK1:[200,200] 24-AUG-87 09:48 /AE:22-JUL-87 LOGIN .CMD;1 17-AUG-87 14:09 PTI .CMD;1 17-AUG-87 14:17 SINUS .DAT;2 12-AUG-87 08:22 DRUCK .FOR;1 22-JUL-87 09:02 BKE .MAC;1 17-AUG-87 14:12 U22 .MAC;1 17-AUG-87 14:32 ET .ODL;1 17-AUG-87 14:33 DATA .OLB;1 17-AUG-87 14:20 BKE .TSK;1 17-AUG-87 14:13 HAMU .TSK;1 17-AUG-87 14:11 10. Files selected 16. Files total Selected blocks used/allocated: 108./108. SRD>/ZE **DK1:[200,200] 24-AUG-87 09:48 /ZE T1T1 .OBJ;1 1. Files selected 16. Files total Selected blocks used/allocated: 0./0. 374 SRD>.O/WI **DK1:[200,200] 24-AUG-87 09:48 .O/WI T1T1 .OBJ;1 ET .ODL;1 DATA .OLB;1 3. Files selected 16. Files total Das gleiche Ergebnis wird z.B. mit folgendem Kommando erreicht: SRD>/SE:*.O%% Die Angabe des Kommandos SRD>ASM.CMD=*.MAC/CM:MAC:OLTV erzeugt eine Kommandodatei ASM.CMD mit folgendem Inhalt: MAC BKE,BKE=BKE.MAC;1 MAC U22,U22=U22.MAC;1 16.7. Fehlermeldungen --------------------- SRD -- Directory too big. Doing in pieces. SRD konnte seinen Puffer nicht ausreichend erweitern, um den In- halt des gesamten Dateiverzeichnisses aufzunehmen. SRD -- Command read error Entweder ist ein Fehler beim Lesen der Kommandozeile aufgetreten, oder es wurde ein Komma in der Kommandozeile an verbotener Stelle angegeben. SRD -- Command syntax error Die Kommandozeile ist fehlerhaft fuer eine korrekte Analyse und deshalb ungueltig. SRD -- Error in input spec Es wurde eine ungueltige Eingabedateispezifikation angegeben. SRD -- Error in output spec Es wurde eine ungueltige Ausgabedateispezifikation angegeben. SRD -- Error reading MFD Es trat ein Fehler beim Lesen des MFD auf. SRD -- Parse error Die Ausgabedateispezifikation konnte nicht korrekt analysiert werden. SRD -- Open error on input Es trat ein Fehler beim Oeffnen einer Eingabedatei auf. SRD -- Open error on output Es trat ein Fehler beim Oeffnen einer Ausgabedatei auf. SRD -- Directory find error Es wurde ein Dateiverzeichnis angegeben, welches nicht existiert. SRD -- No such file(s) Es wurden keine Dateien entsprechend der Eingabedateispezifika- tion gefunden. 375 SRD -- Invalid date format. Enter DD-MMM-YY HH:MM Die Datumsangabe war fehlerhaft. Gueltige Datumsangaben sind DD-MMM-YY HH:MM oder DDMMMYY HH:MM. SRD -- Error reading file haeder for [g,m]name.typ;ver Es trat ein Fehler beim Lesen des Dateikopfes auf. SRD -- Put error Es trat ein Fehler auf beim Schreiben eines Satzes auf das Aus- gabegeraet. SRD -- Write error Es ist ein Fehler beim Zurueckschreiben in ein Dateiverzeichnis aufgetreten. SRD -- Read error Es ist ein Fehler beim Lesen eines Dateiverzeichnisses aufge- treten. SRD -- Error deleting file Es ist ein Fehler beim Loeschen einer Datei aufgetreten. SRD -- Directory privilege violation Der Nutzer hat nicht den erforderlichen Lese- oder Schreibzugriff zum angegebenen Dateiverzeichnis. SRD -- Directory open error Es ist ein Fehler beim Oeffnen einer Verzeichnisdatei aufge- treten. SRD -- Directory write-back error for [g,m] Es ist ein Fehler beim Zurueckschreiben eines Verzeichnisses in die Verzeichnisdatei aufgetreten. SRD -- Write-back cancelled. Can't fit entire directory in memory: [g,m] Es wurde ein Zurueckschreiben spezifiziert (/WB), aber es konnte wegen fehlenden Speicherplatz nicht ausgefuehrt werden. SRD -- File ID-Sequence number mis-match for [g,m]name.typ;ver Der Versuch des Lesens eines Dateikopfes war fehlerhaft, weil die Datei-ID und Folgenummer fehlerhaft waren. SRD -- Haeder-read privilege violation for [g,m]name.typ;ver Der Nutzer hatte nicht die erforderlichen Zugriffsrechte zum Lesen des Dateikopfes fuer die angegebene Datei. SRD -- File date corrupt in file haeder for [g,m]name.typ;ver Die Daten im Dateikopf sind zerstoert. SRD -- Error reading extension haeder Es trat ein Fehler beim Lesen der Dateikopferweiterung auf. SRD -- Invalid or duplicate /SR: sort key values Die Sortierschalterwerte koennen nicht ausgefuehrt werden. Gueltige Schalter sind T, N, V und D. SRD -- Sort key combination invalid for /SV, /NV, /OV, /PU Bei der Angabe der Sortierreihenfolge muessen die ersten beiden Sortierschalter Dateiname und Dateityp sein und als dritter Wert ist die Version anzugeben. 376 SRD -- Some file dates can not be read for sort by date Die Daten in einigen Dateikoepfen sind zerstoert. Sind diese Dateien fuer eine Ausgabe vorgesehen, werden diese Dateien als erste ausgegeben. SRD -- Char other than O,L,T,V,S found in /CM switch - ignored Gueltige Werte fuer das zweite Schalterargument beim /CM-Schalter sind nur die Zeichen O, L, T, V und S. 377 17. Plattenkopierprogramm DSC 1630(OMEX) ---------------------------------------- 17.1. Vorbemerkungen -------------------- Das Plattenkopierprogramm DSC (Disk Save and Compress) kopiert alle Dateien im FM-16-Format von einer Platte auf eine andere Platte oder auf Magnetband. Dabei ist es moeglich eine Platte zu reorganisieren. Die kopierten Dateien und moegliche ueber die Platte verstreute Datei-Erweiterungen werden in aufeinanderfol- genden Bloecken abgespeichert. Dadurch werden die Anzahl und der Umfang von Dateikennsaetzen und Blockadresszeigern reduziert. Unbelegte Bloecke zwischen den Dateien werden frei, die Zugriffs- wirkung verbessert sich, und mehr zusammenhaengender Speicher- platz wird auf der Platte gewonnen. Es ist auch moeglich, fehler- hafte Bloecke zu erfassen und verfaelschte Inhalte zu korri- gieren. Mit DSC bearbeitete Platten muessen ausgegliedert sein. 17.2. Kommandoformat -------------------- Alle DSC-Kommandos werden nach folgendem allgemeinen Kommando- format eingegeben: outdev:[filelabel][/switch] = indev:[filelabel][/switch] [Eckige Klammern kennzeichnen wahlfreie Parameter] outdev: Geraete, zu denen Daten uebertragen werden, von fol- gendem Format: AAnn AA: Geraetemnemonik nn: Geraetenummer (oktal) Der Doppelpunkt (:) begrenzt den Geraetenamen. Wird die Geraetenummer weggelassen, wird 0 angenom- men. Wenn mehr als eine Magnetbandspule angegeben werden soll, werden deren Geraetesymbole durch Komma getrennt. [filelabel] Name der Datei auf dem Band, unter der der Platten- inhalt ausgegeben wird. Fehlt der Dateiname, wird der Datentraegername der Platte benutzt. [/switch] Ein oder mehrere Schalter (Ausgabeseite). indev: Geraete, von denen Daten uebertragen werden. (Format wie unter outdev:) [filelabel] (Eingabeseite) Name der vom DSC auf dem Band erzeug- ten Datei, die zur Platte zurueckuebertragen werden soll. Fehlt die Angabe des Dateinamens, wird die er- ste Datei von der aktuellen Bandposition an uebertra- gen. [/switch] Ein oder mehrere Schalter (Eingabeseite). Beispiel: DSC>MT1:SYSDAT/RW=DK: ----------------- DSC spult das Magnetband MT1: zum Anfang zurueck und uebertraegt anschliessend den Inhalt der Platte DK: unter dem Dateinamen SYSDAT auf das Band. 378 17.3. Start und Beendigung des DSC ---------------------------------- Das unter OMEX 1630 arbeitende DSC kann entweder ueber die Kom- mandoanforderung der Monitor Console Routine (MCR) mit >RUN %DSC oder nach vorhergehender Task-Installation >INS %DSC mit nachfolgendem Entgliedern der an der Uebertragung beteiligten Platten >DMOU DKn: mit >DSC gestartet werden. Es meldet sich mit DSC> und kann nach obigen Kommandoformat bedient werden. Beim Start des DSC nach vorhergehender Task-Installation koennen die System- platten, auf der das DSC installiert wurde, kopiert werden. 17.4. Geraetebenutzung ---------------------- Folgende Geraete koennen von DSC benutzt werden: Tabelle 59: DSC - Von DSC unterstuetzte Geraete ---------------------------------------- Mnemonik | Typ ---------------------------------------- DK: | Kassettenplatte | CM 5400-00/12 | DM: | Festplatte K5501 | MT: | Magnetbandgeraet MBG1 | CM 5300 | | Magnetbandgeraet MBG2 | CM 5303 ---------------------------------------- 17.5. Schalter -------------- Das allgemeine Kommandoformat kann mit einer Reihe von Schaltern und der wahlweisen Angabe des Dateinamens variiert werden: Tabelle 60: DSC - Schalter ----------------------------------------------------------------- Format | Beschreibung ----------------------------------------------------------------- /RW | Zurueckspulen des Magnetbandes vor jeder | Uebertragung auf Startposition. | /BAD=MAN | Mit dem /BAD-Schalter kann bei Ausgaben /BAD=NOAUTO | auf Platten zu fehlerhaften Dateibloecken /BAD=MAN:NOAUTO | zugegriffen werden. ----------------------------------------------------------------- 379 Tabelle 60: (Fortsetzung) ----------------------------------------------------------------- Format Beschreibungen ----------------------------------------------------------------- /AP | Anhaengen einer Datei an schon mit DSC- | Dateien beschriebene Magnetbaender. | /BL=n | Festlegen des Blockungsfaktors oder | fuer die Arbeit von DSC /BL:n | (Standard=4) | /CMP | Vergleicht den Inhalt zweier Datentraeger. | Ein Kopieren findet nicht statt. | /VE | Nach der Uebertragung werden Eingabe und | erzeugte Ausgabe miteinander verglichen. | ----------------------------------------------------------------- 17.5.1. Dateiname ----------------- Sowohl bei der Eingabe eines Platteninhalts auf Magnetband als auch bei der Ausgabe eines Platteninhalts vom Magnetband kann ein Dateiname angegeben werden. Unter diesem Dateinamen markiert das DSC die gespeicherten Daten. - Wird bei der Ausgabe auf Magnetband kein Dateiname angegeben, benutzt das DSC den Datentraegernamen der Eingabeplatte als Dateinamen. - Wenn der Dateiname auf der Eingabeseite angegeben ist, sucht das DSC von der augenblicklichen Position an nach diesem Namen. Wird der Name gefunden, uebertraegt DSC die Datei zur Platte. - Ist kein Dateiname auf der Eingabeseite angegeben, uebertraegt DSC die erste gefundene Datei. - Wird auf der Eingabeseite der /RW-Schalter angegeben, spult das DSC zuerst das Band zum Anfang zurueck, bevor es mit der Suche nach der Datei beginnt, oder es uebertraegt die erste Datei, wenn kein Dateinamen angegeben ist. - Findet das DSC auf dem angegebenen Datentraeger die Datei nicht, gibt es eine Fehlermeldung aus und unterbricht die Ar- beit. Der Dateiname kann aus 1 bis 12 alphanumerischen Zeichen be- stehen, wovon nur die ersten 9 Zeichen signifikant sind. Ange- geben wird der Dateiname nach der Geraetespezifikation und vor den Schaltern. Beispiele: 1) DSC>MT1:SYSDAT/RW=DK: 2) DSC>DK1:=MT:SYSDAT/RW ----------------- DSC spult das Band MT: zum Bandanfang zurueck und sucht an- schliessend nach der Datei SYSDAT, die es zur Platte DK1: uebertraegt. 380 17.5.2. Zurueckspulen des Magnetbandes (/RW) -------------------------------------------- Der /RW-Schalter kann nur in Verbindung mit Magnetbaendern be- nutzt werden, bei anderen Geraeten erfolgt eine Fehlermeldung. Der /RW-Schalter bewirkt ein Zurueckspulen des ersten Magnetban- des einer aus mehreren Magnetbaendern bestehenden Konfiguration, bevor DSC mit der Operation beginnt. Angabe als Teil der Ausgabedateispezifikation: Ist der /RW-Schalter ausgabeseitig angegeben, spult das DSC das Band zum Ladepunkt zurueck und beginnt hier den Schreibvorgang. Steht das Band bereits im Ladepunkt, ist der /RW-Schalter ueber- fluessig. Wird kein /RW-Schalter angegeben und steht das Band nicht am Ladepunkt, beginnt das DSC das Band vom letzten Dateiendeblock an zu beschreiben. Nach dem Beenden der Operation wird das Band nicht zurueckge- spult. Erstreckt sich die zu uebertragende Datei ueber mehrere Daten- traeger, spult das DSC das Band zurueck und entlaedt es. Jeder folgende Datentraeger wird zurueckgespult und entladen. Beispiel: DSC>MT:SYSDAT/RW=DK1: ----------------- Das Band MT: wird zum Anfang zurueckgespult, bevor der Schreib- vorgang beginnt. Die Platte DK1: wird als Datei SYSDAT vom Lade- punkt an geschrieben. Angabe als Teil der Eingabespezifikation: Ist der /RW-Schalter auf der Eingabeseite angegeben, spult das DSC das erste Band zurueck, bevor kopiert wird. Wenn ein Datei- namen mit dem /RW-Schalter angegeben ist, sucht DSC nach dem Zurueckspulen die angegebene Datei vom Anfang an auf dem ersten Datentraeger. Ist kein Dateiname angegeben, uebertraegt DSC die erste Datei, die es nach dem Zurueckspulen findet. Nachdem ein Band kopiert wurde, wird es zum Anfang zurueckgespult und off-line gesetzt. Somit ist das Band wieder auf den Anfang der ersten oder einzigen Datei positioniert. Beispiel: DSC>DK1:=MT:SYSDAT/RW ----------------- Das DSC speichert die Platte DK1: vom Band MT: zurueck, das vor- her zum Ladepunkt zurueckgespult und nach der Datei SYSDAT abge- sucht wird. 381 17.5.3. Anhaengen einer Datei (/AP) ----------------------------------- Der /AP-Schalter darf nur bei der Ausgabe auf Bandgeraete benutzt werden. Die Angabe von /AP bei anderen Geraeten fuehrt zu einer Fehlermeldung und Abbruch der Kommandobearbeitung. Der /AP-Schal- ter bewirkt, dass auf einem Magnetband, das nur von DSC erzeugte Dateien enthaelt, die auszugebende Datei angehaengt wird. Dazu sucht das DSC auf dem ersten angegebenen Magnetband den letzten EOF-Block. Endet die zuletzt von DSC ausgegebene Datei nicht auf diesem Band, beendet DSC die Operation und gibt folgende Fehlermeldung aus: OUTPUT TAPE AAnn: IS FULL Wenn auf dem ersten angegebenen Band ein Teil einer DSC-Datei gefunden wird, die auf einen anderen Band beginnt, beendet DSC die Operation und gibt folgende Fehlermeldung aus: OUTPUT TAPE AAnn: IS A CONTINUATION TAPE Erkennt das DSC das Dateiende (EOF) einer Datei, die auf einem anderen Band begann, beendet DSC die Operation und gibt folgende Fehlermeldung aus: OUTPUT TAPE AAnn: IS NOT THE ONLY REEL IN ITS SET Beispiel: DSC>MT:,MT1:SYSDAT/RW/AP=DM1: ------------------------- DSC gibt den Inhalt der Platte DM1: als Datei SYSDAT auf das Magnetband MT: aus. Bevor die Daten uebertragen werden, wird zu- naechst das Band zurueckgespult und der letzte EOF-Block gesucht. Wenn notwendig, kann sich die Datei SYSDAT auch in den nachfol- genden Datentraeger erstrecken. 17.5.4. Vergleich des Inhalts von Datentraegern (/CMP) ------------------------------------------------------ Der /CMP-Schalter darf nur ausgabeseitig angegeben werden: outdev:[filelabel]/CMP=indev:[filelabel] Er bewirkt nur das Vergleichen des Inhalts - zweier Platten - einer Platte und eines Magnetbandes oder - eines Magnetbandes und einer Platte. Ein Kopiervorgang findet nicht statt. Mehrere Magnetbaender werden als Datentraeger akzeptiert, aber nicht mehrere Platten. Bei einem Vergleich zwischen Magnetband und Platte ist das Magnetband als Eingabegeraet zu spezifizieren. Stimmt waehrend des Vergleichsvorgangs der Inhalt eines Blocks nicht ueberein, wird eine Mitteilung ausgegeben, anschliessend wird die Vergleichsoperation fortgesetzt. Die Vergleichsoperation bei Platte und Magnetband beginnt mit der Positionierung des ersten Bandes auf den Beginn der angegebenen Datei. Wird nur mit einem Band die Vergleichsoperation durchge- fuehrt, bleibt das Band am Ende der Datei stehen, wenn der Ver- 382 gleichsvorgang beendet ist. Wird der Vergleich mit mehreren Baendern durchgefuehrt, wird zuerst das laufende Band zurueckgespult und entladen, bevor die Operation auf dem naechsten Band fortgesetzt wird. 17.5.5. Vergleich nach dem Kopieren (/VE) ----------------------------------------- Der /VE-Schalter darf nur ausgabeseitig angegeben werden: outdev:[filelabel]/VE=indev:[filelabel][/switch] Er bewirkt nach Ausfuehrung eines Kopiervorgangs den Vergleich der uebertragenen Informationen. Dazu wird nach Beendigung des Kopiervorganges das Band zum Dateianfang zurueckgespult. Wird kein Dateiname bei mehreren Magnetbaendern als Datentraeger ange- geben, beginnt der Kopiervorgang auf dem ersten Band. Das Erken- nen von EOF und EOV auf dem aktuellen Band waehrend des Ver- gleichsvorganges bewirkt ein Zurueckspulen und Entladen des Ban- des. Der Vergleich wird dann auf dem naechsten Band fortgesetzt. 17.5.6. Zugriff zur Fehlerblockdatei (/BAD) ------------------------------------------- Der /BAD-Schalter wird bei der Ausgabe auf Platten benutzt. Damit ist es moeglich, zur Fehlerblockdatei zuzugreifen und Informatio- nen ueber fehlende Bloecke einzutragen. Es gibt 3 Varianten des /BAD-Schalters: /BAD=MAN Durch manuelle Eingabe ueber das Bediengeraet kann die Fehlerblockdatei zusaetzlich um weitere fehlerhafte Bloecke ergaenzt werden. /BAD=NOAUTO DSC wird veranlasst, die Informationen der Plat- te ueber fehlerhafte Bloecke in der Fehlerblock- datei zu ignorieren. /BAD=MAN:NOAUTO Es werden nur die manuell eingegebenen Fehler- bloecke akzeptiert. Mit dem /BAD-Schalter wird nicht der Fehlerblockdeskriptor be- einflusst, der beim INITVOL- und BAD-Kommando durchlaufen wird, weiterhin auch nicht die vom Herstellerwerk aufgezeichneten Feh- lerbloecke. Eingabe von Fehlerbloecken: Wenn mit dem Schalter /BAD=MAN oder /BAD=MAN:NOAUTO eingegeben wird, meldet sich DSC sofort mit DSC>LBN(S)= bevor die Kommandos ausgefuehrt werden. Die fehlerhaften Bloecke koennen nach dem Gleichheitszeichen mit folgendem Format eingegeben werden: DSC>LBN(S)=n[:m] n: erster Fehlerblock einer Gruppe fehlerhafter Bloecke (oktale Angabe der LBN) 383 m: Anzahl der aufeinanderfolgenden Fehlerbloecke (oktale An- gabe) Wird m weggelassen, wird 1 Fehlerblock angenommen. Die Angabe von Dezimalzahlen ist moeglich, wenn hinter m oder n ein Punkt gesetzt wird. Mit wird die Eingabe abgeschlossen. Bei erneuter Anforderung DSC>LBN(S)= koennen weitere Fehlerbloecke eingegeben werden. Es koennen auch mehrere Eintragungen ueber Fehlerbloecke in einer Zeile eingege- ben werden. Trennzeichen fuer diese Angaben sind Leerzeichen, Tabulator oder Komma. Die Eingabe von Fehlerbloecken wird been- det, wenn auf die Kommandoanforderung sofort ein eingegeben wird. Danach beginnt DSC mit der Datenuebertragung. Beispiel: DSC>DK1:/BAD=MAN:NOAUTO=MT1:,MT2:SYSDAT/RW -------------------------------------- DSC>LBN(S)=601:6 ------- DSC>LBN(S)=644:2 ------- DSC>LBN(S)=501 ------- DSC>LBN(S)= ------- Das DSC speichert die Platte DK1: vom Magnetband als Datei SYSDAT zurueck. Ueber das BAD-Kommando wurden folgende Fehlerbloecke eingegeben: 601,602,603,604,605,606 644,645 501 Diesen Bloecken werden bei der Rueckspeicherung keine Daten zu- gewiesen. Mit dem Kommando DSC>DK1:/BAD=NOAUTO=DK0: -------------------- wuerden unabhaengig vom Inhalt der Fehlerblockdatei die Daten zu den unteren LBN uebertragen. Berechnung der logischen Blocknummer aus Zylinder, Spur und Sek- torangabe: LBN=(((Zyl.-Nr.*Spur/Zyl.)+Spur-Nr.)*Sektoren/Spur)+Sektoren-Nr. Beispiel: Ein Fehlerblock auf der Kassettenplatte CM5400-00/12 (204 Spuren/ Oberflaeche, 12 Sektoren/Spur, 2 speichernde Oberflaechen) hat die physische Adresse: Zylinder = 150 Spur = 2 Sektor = 10 LBN=(((150*2)+2)*12)+10 = 3634 384 17.5.7. Festlegen des Blockungsfaktors (/BL) -------------------------------------------- Der Schalter gestattet es, die Anzahl der Bloecke festzulegen, die DSC in jedem seiner Puffer waehrend der E/A- Operationen be- nutzt. Dadurch verringert sich die Zeit der DSC-Arbeit. Der Standardwert fuer DSC ist 4. outdev:[filelabel]/BL:n=indev:[filelabel] Bei Angabe eines groesseren Blockungsfaktors erweitert sich DSC automatisch, wenn Speicherplatz verfuegbar ist. Ist dieser Spei- cherplatz nicht verfuegbar, gibt DSC die Fehlermeldung BAD BLOCKING FACTOR aus, und beendet die Arbeit. 17.6. DSC-Uebertragungstechnik ------------------------------ Die DSC-Operationen bestehen entweder aus zwei oder vier Daten- uebertragungen. Entweder kopiert das DSC die Daten von Platte zu Platte oder von einer Platte auf Magnetband und danach wieder vom Magnetband zur Platte. Die vier moeglichen Schritte sind: 1) Von der Platte kopieren 2) Auf Magnetband schreiben 3) Vom Magnetband kopieren 4) Auf Platte schreiben 17.6.1. Datenuebertragung von der Platte ---------------------------------------- Wenn ein DSC-Kommando das Kopieren einer Platte anweist, wird vor Beginn der Operation die Eingabeplatte auf das richtige Datei- format OMOS 1630 geprueft. Die Datenuebertragung beginnt mit der Uebernahme der Platten- Indexdatei, da diese den Zustand und die Lage der Bloecke wieder- gibt. Die Dateikennsatzliste, die Datentraegerbelegungsdatei und die Fehlerblockdatei werden nicht genau uebertragen, da das DSC nur die fuer den Aufbau der neuen Platte notwendigen Daten ueber- nimmt. DSC greift der Reihe nach zu den aktiven Dateikoepfen in der In- dexdatei zu, um den naechsten Dateikennsatz zu lokalisieren. Die- ser und alle etwaige Erweiterungen sowie alle zur Datei gehoeren- den Bloecke werden in eine komplette Datei uebertragen, bevor der naechste Dateikopf in der Indexdatei gesucht wird. 17.6.2. Datenuebertragung auf das Magnetband -------------------------------------------- Bei der Uebertragung eines Platteninhalts auf Magnetband wird vom DSC eine Datei des Platteninhalts in einem bestimmten DSC-Format aufgebaut, die nur vom DSC benutzbar ist. Der erste Datenblock ist ein Dateikopf, der den Datentraegernamen und die relative Datentraegernummer enthaelt, d.h. den Platz der Datei auf dem Band. Die nachfolgenden Daten dienen zum Aufbau der Verzeichnisdateien, 385 Blockadresszeiger und der Nutzerdateien. Fuer die Datenuebertra- gung ist zu sichern, dass die Magnetbandgeraete betriebsbereit sind. Man kann mehrere Magnetbandgeraete des gleichen Typs ange- ben. Beispiel: DSC>MT0:,MT1:SYSDAT/RW=DM1: ----------------------- Das Eingabegeraet muss eine Platte sein. Bei der Ausgabe auf Magnetband sind folgende Angaben moeglich: /RW /AP /CMP (fuer Ausgabegeraete nicht noetig) /VE filename 17.6.3. Datenuebertragung vom Magnetband ---------------------------------------- Das DSC kann nur solche Baender benutzen, die im DSC-Format auf- gebaut sind, d.h. nur die vom DSC beschriebenen Baender. Wenn das Magnetbandgeraet als Eingabegeraet angegeben ist, schreibt das DSC den Bandinhalt auf die Ausgabeplatte. Mit Beginn der Daten- uebertragung erzeugt und aktualisiert das DSC die Verzeichnis- dateien, bevor die Nutzerdateien uebertragen werden. Ist ein Dateiname angegeben, uebertraegt DSC nur den Inhalt dieser Datei. Ist kein Dateiname angegeben, uebertraegt DSC die erste gefundene Datei von der aktuellen Bandposition an. Beispiel: DSC>DK1:=MT1:SYSDAT/RW ------------------ Vom Magnetband MT1: soll der unter dem Dateinamen SYSDAT abge- speicherte Platteninhalt wieder auf die Platte DK1: zurueckge- speichert werden. Bei der Eingabe vom Magnetband sind folgende Angaben moeglich: /RW filename 17.6.4. Datenuebertragung zur Platte ----------------------------------- Um kopierte Daten auf eine Platte zurueckzuuebertragen, muss ge- sichert sein, dass die Platte - betriebsbereit ist - eine aktuelle Fehlerblockdatei fuehrt - gross genug ist, um die zu uebertragenden Bloecke aufzuneh- men. Fehlerbloecke koennen mit Hilfe des /BAD-Schalters ergaenzt oder ignoriert werden. Vor Beginn der Uebertragung prueft das DSC, ob die verfuegbare Anzahl von Bloecken auf der Platte die zu ueber- tragenden Daten aufnehmen kann. Stehen nicht genuegend Bloecke zur Verfuegung, erfolgt eine Fehlermeldung. Mit Beginn der Datenuebertragung werden zunaechst die Dateikenn- 386 satzliste und die Datentraegerbelegungsdatei aufgebaut, bevor die Dateikennsaetze aktualisiert werden, um die Lage der Dateien auf der neuen Platte zu merken. Diese Aktualisierung ist notwendig, da jetzt Bloecke, die bisher ueber die Platte verstreut waren, in zusammenhaengende Blockbereiche kopiert werden, beginnend von der niedrigsten moeglichen Blocknummer an. Auf der Ausgabeplatte entsteht eine Indexdatei von derselben Groesse wie auf der urspruenglichen Platte. Weil das DSC die Ausgabeplatte neu ordnet, kann die Anzahl von Blockadresszeigern bedeutend reduziert werden, da viele verstreu- te Bloecke einer Datei zu benachbarten Bloecken zusammengefuegt werden. Weiterhin kann auch die Anzahl der Datei- und Dateikopferweite- rungen reduziert werden. Grundsaetzlich beginnt das DSC beim Aufbau einer neuen Platte mit dem Schreiben von den niedrigsten moeglichen logischen Blocknum- mern an. 17.7. Fehlermitteilungen ------------------------ DSC gibt zwei Arten von Fehlerausschriften auf der Konsole aus: DSC -- *WARNING* xx TEXT dev: xx: Fehlernummer TEXT: Fehlertext oder DSC -- *FATAL* xx TEXT dev: Gibt DSC eine *WARNING*-Meldung aus, wird die DSC-Operation nach der Ausgabe-Meldung fortgesetzt, bei einer *FATAL*-Meldung wird die Operation abgebrochen. Im folgenden sind die DSC-Fehlermeldungen in numerischer Reihen- folge aufgefuehrt. Zuerst erscheint die Fehlerausschrift, danach eine Erlaeuterung und schliesslich noch Hinweise ueber die Fort- fuehrung der Operation. DSC gibt nur die Fehlermeldung und das Geraet aus, es fehlt der Fehlertext. 1 UNDEFINED ERROR Ein undefinierter interner Fehler ist aufgetreten. 2 CONFLICTING DEV. TYPES Eine unerlaubte Kombination von Geraetetypen wurde angegeben. 3 MIXED TAPE TYPES Zwei unterschiedliche Typen von Magnetbandgeraeten wurden in der Kommandokette angegeben. 4 ILLEGAL SWITCH Falscher Schalter in Kommandokette. 5 FILE LABEL TOO LONG Ein Dateiname enthaelt mehr als 12 Zeichen. 6 SYNTAX ERROR Fehler im Format der Kommandokette. 7 DUP. DEV. NAME Dasselbe Geraet wurde mehr als einmal im Kommando angegeben. 387 8 TOO MANY DEV'S Mehr als die zulaessige Anzahl von Geraeten wurde auf einer Seite des Kommandos eingegeben. 9 DEV. dev: NOT IN SYSTEM Das angegebene Geraet ist nicht vorhanden. 10 DEV. dev: NOT FM16 Das angegebene Eingabegeraet hat kein Dateiformat OMOS 1630. 11 BAD BLOCK SYNTAX ERROR Ein Syntaxfehler bei manueller Fehlerblockeingabe. 12 BAD BLOCK COUNT TOO LARGE Zu viele Fehlerbloecke wurden in einer einzelnen Gruppe an- gegeben. 13 BAD BLOCK CLUSTER OUT OF RANGE Ein manuell eingegebener Fehlerblock oder Gruppe von Fehler- bloecken ist nicht auf der Platte vorhanden. 15 OUTPUT TAPE dev: FULL Das angegebene Band ist voll, und es kann nichts angehaengt werden. 16 OUTPUT TAPE dev: NOT ONLY REEL IN SET Ein unerlaubtes Anhaengen wurde versucht. Entweder den /AP- Schalter weglassen oder das Band wechseln. 17 TAPE XXn: NOT ANSI FORMAT Ist XXn: ein Ausgabeband, wurde ein Anhaengen angewiesen und das Band hat kein ANSI-Format. Ist XXn: ein Eingabeband, dann ist es kein von DSC erstelltes Band. 18 OUTPUT TAPE dev: IS NOT A DSC TAPE Ein unerlaubtes Anhaengen ist fuer ein Band angewiesen, das nicht im DSC-Format aufgebaut ist. 19 TAPE XXn: A CONTINUATION TAPE Ist XXn: ein Ausgabeband, wurde ein unerlaubtes Anhaengen angewiesen. Der /AP-Schalter kann nur fuer das erste Band des Bandsatzes benutzt werden. Ist XXn: ein Eingabeband, ist das Band aus der Reihe ausge- gliedert. 21 FAILED TO FIND HOME BLOCK dev: Ein Lesefehler beim Kopieren von einer Eingabeplatte. Ent- weder ist die Platte nicht in Ordnung oder der Datentraeger- kennsatz zerstoert, oder die Platte ist nicht im Dateiformat OMOS 1630. 22 FILE STRUCTURE LEVEL ON dev: NOT SUPPORTED Das Dateiaufbauniveau des zugewiesenen Geraetes kann nicht benutzt werden. 23 I/O ERROR A ON dev: Die Mitteilung, die folgt, erlaeutert, warum die angegebene Datei nicht gelesen werden kann. 388 24 I/O ERROR B ON dev: Der I/O-Fehlergibt an, dass der Dateikennsatz nicht auf dem Geraet gelesen werden konnte. Die angegebene Datei ist nicht auffindbar.. 25 CODE A Der Dateikennsatz fuer die Datentraegerbelegungsdatei kann nicht gelesen werden. Die Platte ist unbrauchbar, und es kann nicht kopiert werden. 26 I/O ERROR C ON dev: Die folgende Mitteilung erlaeutert den Fehler, der waehrend des Lesens der angegeben Datei auftritt. 27 I/O ERROR D ON dev: Ein Lesefehler, der durch folgende Mitteilung gemeldet wird, kommt vor, wenn der Name oder der Systemladeblock der Platte gelesen wird. Erneuter Versuch der Operation auf einem neuen Geraet. 31 I/O ERROR E ON dev: file id Die folgende Mitteilung erlaeutert den E/A-Fehler, der waeh- rend des Lesens des spezifizierten Dateikopfes auftritt. 32 INPUT DEVICE dev: file id file number NOT PRESENT Die angegebene Datei hat keinen Dateikennsatz in der Index- Datei, die Datei wird nicht kopiert. 33 INPUT DEVICE dev: file id file number IS DELETED Die angegebene Datei ist teilweise geloescht aufgefunden und nicht kopiert worden. 34 INPUT DEVICE dev: file id UNSUPPORTED STRUCTURE LEVEL Die angegebene Eingabeplatte hat kein Dateiformat OMOS 1630 und kann nicht benutzt werden. 35 INPUT DEVICE dev: file id, file number , FILE NUMBER CHECK Ein falscher Dateikennsatz wurde von der Platte gelesen, da die angegebene Datei nicht auffindbar ist. Die Operation kann wiederholt werden. 36 INPUT DEVICE dev: file id, file number FILE HEADER CHECKSUM ERROR Ein falscher Dateikennsatz bewirkt, dass die angegebene Datei als verloren gilt. Die Operation kann wiederholt werden. 37 INPUT DEVICE dev: file id, SEQUENCE NUMBER CHECK Die Folgenummer ist falsch. Operation wiederholen und/oder Platte wechseln. 38 INPUT DEVICE dev: file id, file number SEGMENT NUMBER CHECK Die Verbindung, die die Dateisegmente verknuepft, ist unter- brochen; die angegebene Datei ist nicht auffindbar. 39 DIRECTIVE ERROR Ein interner Fehler ist aufgetreten, meistens im Zusammenhang mit der Geraeteperipherie (z.B. Magnetbanddriver ist nicht geladen). 389 40 I/O ERROR F ON dev: Die folgende Mitteilung zeigt an, dass das angegebene Ein- oder Ausgabegeraet einen Folgefehler verursachen kann. Es ist keine Reaktion erforderlich, es sei denn, eine andere Fehlermeldung wird angezeigt. Dann ist die Fehlerursache zu beseitigen und das Kommando zu wiederholen. 41 I/O ERROR i ON dev: file id, file number, virtual block number Ein E/A-Fehler, in dessen Mitteilung angegeben wird, dass fehlerhafte Daten von der angegebenen virtuellen Blocknummer auf dem angefuehrten Geraet gelesen wurden. Der angegebene Block muesste untersucht werden, um den Umfang des Fehlers zu bestimmen. 42 VERIFICATION ERROR ON dev: file id, virtual block number Beim Vergleich von Original und Kopie wurde ein Fehler fest- gestellt. Kopiervorgang mit anderem Datentraeger oder Geraet wiederholen. 43 BAD DATA BLOCK ON dev: file id, file number, virtual block number Paritaetsfehler beim Kopieren der Bloecke von der Platte. Nach vollendetem Kopiervorgang die Daten im angegebenen Block pruefen und korrigieren. 44 MOUNT REEL x ON dev: AND HIT RETURN Nur eine Anweisung. Eingeben der Datentraegernummer, die vom angegebenen Systemblock gefordert wird, und Abschliessen mit . 45 STARTING VERIFY PASS Nur eine Mitteilung. Kopiervorgang ist vollendet, und das DSC beginnt den Vergleichslauf (/VE). 46 RESUME COPYING Nur eine Mitteilung. Vergleichslauf ist vollendet (/VE), und das DSC setzt den Kopiervorgang fort. 47 dev: IS WRITE LOCKED. INSERT WRITE AND HIT RETURN. Schreibring fehlt. 48 INPUT FILE ON dev: WILL BE RESYNCHRONIZED Die Bandposition ist waehrend des Lesens des Eingabebandes verlorengegangen. Die in der Mitteilung angegebene Datei als auch einige der folgenden Dateien koennen verloren gehen. Wiederholen der Operation von Anfang an. 49 OUTPUT DEVICE dev: FULL Das angegebene Geraet ist voll belegt und kann keine weiteren Daten aufnehmen. Es koennte auch darauf hinweisen, dass ein fehlerhaftes Eingabeband vorliegt. 50 OUTPUT FILE HEADER FULL ON dev: Zu viele Bloecke auf der Ausgabeplatte haben eine Unverein- barkeit in den Dateikennsaetzen hervorgerufen. Die angegebene Datei ist nicht zugreifbar. Operation wiederholen mit einer anderen Ausgabeplatte. 390 51 OUTPUT FILE HEADER ON dev: NOT MAPPED -- file id, file number Zwischenraum fuer den angegebenen Dateikennsatz war nicht zu- gewiesen. Die Datei ist nicht zugreifbar. Neue Platte evtl. erforderlich. 52 I/O ERROR G ON dev: Die folgende Mitteilung erlaeutert den E/A -Fehler, der waeh- rend des Schreibens der angegebenen Datei auftritt. 53 FAILED TO READ FILE EXTENSION HEADER ON dev: file id, file number Beim Kopieren von der Eingabeplatte kann eine Dateikennsatz- erweiterung nicht gefunden werden. Der Rest der angegebenen Datei ist nicht auffindbar. Ursache kann eine fehlerhafte Eingabeplatte oder ein vorhergehender E/A-Fehler sein. 54 FAILED TO ALLOCATE HOME BLOCK dev: Der Datentraegerkennsatz kann nicht auf der angegebenen Plat- te erzeugt werden, weil sie zu viele fehlerhafte Bloecke hat. Andere Platte verwenden. 55 INDEX FILE ALLOCATION FAILURE dev: Zu viele Fehlerbloecke sind bei der Zuweisung der angegebenen Platte vorhanden. Andere Platte verwenden. 56 OUTPUT DISK dev: IS NOT BOOTABLE Der logische Block 0 der angegebenen Platte oder des Bandes ist falsch (kein Systemladeblock). 57 INVALID BAD BLOCK DATA dev: Die Fehlerblockdaten der Ausgabeplatte sind ungueltig. Start des BAD-Programms fuer die Platte und manuelle Fehler-Block- eingabe oder Kommandowiederholung mit einer anderen Platte. 58 BAD BLOCK FILE FULL dev: Zu viele Fehlerbloecke sind auf der Ausgabeplatte vorhanden. Platte wechseln und erneutes Kommando. 59 NO BAD BLOCK DATA FOUND dev: Es existieren keine Fehlerbloecke fuer die angegebene Aus- gabeplatte. Wenn keine Fehlerblockdaten verlangt werden, kann die Mitteilung ignoriert werden. Andernfalls Start des BAD- Programms fuer die Platte und manuelle Fehlerblockeingabe oder Kommandowiederholung auf einer neuen Platte. 60 OUTPUT DEVICE dev: IS A DIAGNOSTIC PACK. DO NOT USE IT! Die angegebene Ausgabeplatte ist ein Diagnosepaket und kann nicht benutzt werden. Neue Ausgabeplatte auflegen und Komman- do wiederholen. 61 CODE B ON dev: file id, file number, VBN, expected x, found y. Die Bandposition war verlorengegangen, als die angegebene virtuelle Blocknummer gelesen wurde. Einige Daten koennen fehlen. Wenn noetig, das Band auf einem anderen Geraet pro- bieren oder ein anderes Band erzeugen. 62 CODE C ON dev: file id, file number, VBN Die Bandposition ist waehrend des Ladens der angegebenen Datei verlorengegangen. Neues Band herstellen oder die Ope- ration auf einem anderen Geraet wiederholen. 391 63 CODE D ON dev: file id, file number, expected x, found y Die Bandposition ist waehrend des Lesens des in der Mittei- lung angegebenen Bandes verlorengegangen. 64 FAILED TO MAP OUTPUT FILE ON dev: file id, file number Der Dateikennsatz lieferte nicht die richtige virtuelle Blocknummer, die fuer das Schreiben der Datei erforderlich ist. Operation wiederholen. 65 OUTPUT DISK dev: IS TOO SMALL -- nn BLOCKS NEEDED Auf dem Ausgabegeraet ist nicht genug Platz, um die zu ueber- tragenden Daten abzuspeichern. 66 I/O ERROR C ON dev: Die folgende Mitteilung erlaeutert den Fehler, der waehrend des Lesens der angegebenen Datei auftritt. Operation wieder- holen. 67 I/O ERROR H ON dev: Die folgende Mitteilung erlaeutert den E/A-Fehler, der waeh- rend des Lesens der angegebenen Datei auftritt. Operation wiederholen. 68 I/O ERROR J ON dev: Ein E/A-Fehler (der folgt) tritt auf, wenn der 'tape label' auf dem angegebenen Geraet gelesen wird. Operation auf einem anderen Bandgeraet wiederholen. 69 INPUT TAPE ON dev: MUST BE AT BOT Das angegebene Band muss am Anfang oder am Ladepunkt stehen. Diese Mitteilung wird auch waehrend einer /VE-Operation aus- gegeben, nur um hinzuweisen, dass der aktuelle Datentraeger zurueckgespult wird, um den Vergleichslauf vorzubereiten. 70 WRONG INPUT TAPE ON dev: EXPECTING file id FOUND file id Die Eingabebaender wurden in falscher Reihenfolge angegeben. Erneute Eingabe in richtiger Reihenfolge. 71 CODE E ON dev: AFTER file id, file number Lesefehler vom Band. Beim Versuch, einen attributiven Block zu lesen, wurde zu irgendeinem anderen Block zugegriffen. Operation wiederholen. 72 I/O ERROR K ON dev: Die folgende Mitteilung erlaeutert den E/A-Fehler, der waeh- rend des Lesens der angegebenen Datei auftritt. Operation wiederholen. 73 I/O ERROR L ON dev: Die folgende Mitteilung erlaeutert den E/A-Fehler, der waeh- rend des Lesens des Dateikennsatzes auftritt. Operation wie- derholen. 392 74 INPUT TAPE dev: RESYNCHRONIZED AT file id, file number Die Bandposition ist wiederhergestellt worden. Einige Daten der vorhergehenden Datei sind verlorengegangen. Das tritt meistens im Zusammenhang mit einer oder mehrerer Fehlermit- teilungen auf, die alle darauf hinweisen, dass entweder das Eingabeband falsch gelesen oder schlecht beschrieben wurde. Das Band muss neu erzeugt und die Operation wiederholt wer- den. 75 TAPE FILE filelabel NOT FOUND ON dev: Das angegebene Eingabeband enthaelt nicht die Datei, deren Dateiname angegeben wurde. Dateinamen und Band ueberpruefen. 76 EXPECTED EXTENSION HEADER NOT PRESENT ON dev: file id, file number Lesefehler vom Band, da die angegebene Datei nicht gefunden wurde. Wenn der Fehlermeldung eine oder mehrere E/A-Warnungen vorausgingen, kann die Operation wiederholt werden. Wenn nicht, ist das Eingabeband fehlerhaft beschrieben und muesste erneuert werden. 77 CODE F ON dev: AFTER file id, file number Lesefehler vom Band. Beim Versuch einen Dateikennsatz zu lesen, wurde auf andere Blocktypen zugegriffen. Die Datei, die der in der Fehlermeldung folgt, ist verlorengegangen. Operation wiederholen. 78 I/O ERROR M ON dev: Die folgende Mitteilung erlaeutert, warum die angegebene Datei nicht gefunden werden konnte. Operation wiederholen. 79 INDEX FILE DATA NOT PRESENT dev: Beim Lesen des angegebenen Eingabebandes wurde nicht zur Index-Datei zugegriffen. Ursache ist ein Bandfehler oder E/A- Fehler. Band neu herstellen oder das gleiche Band auf einem anderen Geraet probieren. 80 I/O ERROR N ON dev: Die folgende Mitteilung erlaeutert den E/A-Fehler, der waeh- rend der Rueckspeicherung der Index- und der Datentraegerbe- legungsdatei vom angegebenen Eingabeband auftritt. Operation wiederholen und anderes Eingabegeraet benutzen. 81 VOLUME SUMMARY DATA NOT PRESENT dev: Entweder ist das Eingabeband kein DSC-Band, oder unvollstaen- dige Daten sind enthalten. 82 I/O ERROR O dev: file id, file number Die folgende Mitteilung erlaeutert den E/A-Fehler, der waeh- rend des Schreibens des angegebenen Dateikennsatzes auftritt. Operation wiederholen. 83 BAD BLOCK FACTOR Der angegebene Blockungsfaktor ist zu gross fuer das Be- triebssystem bzw. kein freier Speicherplatz verfuegbar. Operation mit kleinerem Blockungsfaktor wiederholen. 84 INPUT DISK NOT BOOTABLE Die Eingabeplatte hat keinen gueltigen Systemladeblock. Diese Meldung ist nur eine Warnungsmitteilung. 393 85 INPUT/OUTPUT DISKS DIFFER Der Systemladeblock ist gewoehnlich bei jedem Plattentyp an- ders. Deshalb kann die Ausgabeplatte eventuell nicht geladen werden. Diese Meldung ist eine Warnungsmitteilung. 86 BAD LBN # 0 Die Ausgabe hat eine fehlerhafte LBN 0, die Ausgabeplatte ist nicht ladbar. Diese Meldung ist eine Warnungsmitteilung. 87 OUTPUT DISK dev: MAY NOT BE BOOTABLE Warnungsmitteilung, dass die Ausgabeplatte nicht ladefaehig ist. Ergaenzungen zu Fehlermitteilungen ----------------------------------- E/A-Fehler werden durch eine oder mehrere der folgenden Fehler- mitteilungen begleitet, die den auftretenden E/A-Fehlertyp naeher erlaeutern. BAD BLOCK NUMBER Block exsistiert nicht auf der Platte, oder interner DSC-Fehler ist aufgetreten, oder der Block ist nicht in Ordnung. Operation wiederholen mit einer neuen Platte oder/und Platten- geraet. BAD BLOCK ON DEVICE Geraetefehler, oder Band enthaelt fehlerhafte Daten. Operation wiederholen. BLOCK CHECK OR CRC CHECK Paritaetsfehler; fehlerhafte Daten sind uebertragen worden. Operation wiederholen. DATA OUVERRUN Die benutzte Datei ist groesser als erwartet wurde. Das Band geriet ausser Position oder ist im falschen Format. Pruefen, ob es ein richtiges Band ist, und Operation wiederholen. DEVICE NOT READY Geraet nicht bereit oder ein leeres Band wurde benutzt. DEVICE OFFLINE Geraet ist dem System nicht bekannt. DEVICE WRITE LOCKED Schreibsperre im Plattengeraet. END OF FILE DETECTED Die Bandposition ging verloren. END OF TAPE DETECTED EOT erkannt, d.h. Bandposition ging verloren. END OF VOLUME DETECTED EOV erkannt, d.h. Bandposition ging verloren. FATAL HARDWARE ERROR Hardwarefehler aufgetreten. 394 HANDLER NOT RESIDENT Geraetedriver ist nicht geladen. INSUFFICIENT POOL SPACE Das Operationssystem ist ueberschrieben. Operation wiederholen. PARITY ERROR ON DEVICE Geraetefehler oder -unvereinbarkeit aufgetreten. Operation wiederholen. PRIVILEGE VIOLATION Ein Geraet ist im OMOS 1630-Dateiformat eingegliedert. Ausgliedern und Kommandowiederholung. ERROR CODE IS Es ist ein E/A-Fehler aufgetreten, den DSC nicht ermitteln kann. ILLEGAL FUNCTION Das Magnetband ist seit dem Systemladen nicht zurueckgespult worden. Kommando mit /RW-Schalter wiederholen. Allgemeine Fehler- und E/A-Fehlermitteilungen ---------------------------------------------- 1) Allgemeine Fehlermitteilungen CODE A Fehler beim Lesen des Dateikennsatzes der Datentrae- gerbelegungsdatei CODE B Eingabedaten zerteilt CODE C Keinen Dateiblock gefunden CODE D Eingabedatei zerteilt CODE E Datei-Attribute zerteilt CODE F Dateikennsatz zerteilt 2) Fehlermitteilungen A Dateikennsatz gelesen B Dateikennsatz der Index-Datei gelesen C Datentraegerbelegungsdatei gelesen D Systemladeblock oder Datentraegerkennsatz gelesen E Dateikennsatz gelesen F Eingabe (oder Ausgabegeraet) G Dateikennsatzliste geschrieben H Dateikennsatz der Datentraegerbelegungsdatei geschrie- ben I Eingabegeraet gelesen J Im Eingabeband sind Marken (Labels) K Dateityp gelesen L Dateikennsatz gelesen N Datenausschnitt gelesen O Dateikennsatz gelesen 395 18. Programm zur Feststellung von Fehlerbloecken auf Datentraegern BAD 1630(OMEX) ------------------------------------------------ 18.1. Vorbemerkungen -------------------- BAD prueft Platten durch zweimaliges Beschreiben aller Bloecke mit zwei unterschiedlichen Testmustern. Nach jeder zweiten Schreiboperation erfolgt eine Leseoperation und der Vergleich mit dem Sollwert (zweites Testmuster). Mit jeder Schreib- bzw. Leseoperation werden mehrere Bloecke (20) geprueft. Tritt beim Vergleich ein Fehler auf, werden die Bloecke einzeln durch zweimaliges Beschreiben und anschliessendes Lesen und Ver- gleichen geprueft. Die Adresse jedes Fehlerblocks wird registriert und am Ende der Pruefung auf dem letzten fehlerfreien Block des Geraetes aufge- zeichnet. Es muss mindestens einen fehlerfreien Block geben, damit BAD korrekt arbeiten kann. Der letzte fehlerfreie Block enthaelt eine Liste der defekten Bloecke des Geraetes (Defektblockliste). Jede Eintragung besteht aus zwei Worten. Das hoeherwertige Byte im 1. Wort enthaelt die Anzahl der zusammenhaengenden defekten Bloecke minus 1. Das nie- derwertige Byte enthaelt Bit 16 bis 23 der Adresse des ersten de- fekten Blockes, das 2. Wort enthaelt die Bits 0 bis 15 dieser Ad- resse. Bei Last-Track-Geraeten enthaelt das 1. Wort die Zylinderadresse und das 2. Wort im hoeherwertigen Byte die Spuradresse und im niederwertigen Byte die Sektoradresse. Es sind maximal 126 Eintragungen moeglich, wobei eine Eintragung einen defekten Block oder eine Reihe aufeinanderfolgender Bloecke adressieren kann. Sind bei einem Geraet mehr als 126 Fehlerein- tragungen vorhanden, gibt BAD eine Fehlermitteilung. Wenn Block 0 defekt ist, schreibt BAD eine Warnung fuer den Operator aus, diese Platte nicht als Systemplatte zu verwenden, da sich bei Systemplatten in Block 0 der Systemladeblock befindet. 18.2. Benutzung des Dienstprogramms ----------------------------------- Ehe BAD ein Geraet pruefen kann, muss dieses formatiert worden sein. Das zu ueberpruefende Geraet darf nicht eingegliedert sein, d.h. das MCR-Kommando MOUNT darf fuer das Geraet nicht gegeben worden sein. Sonst muss es mit dem Kommando DISMOUNT ausgegliedert wer- den. BAD kann parallel zu anderen Tasks arbeiten, vorausgesetzt die anderen Tasks benoetigen das zu pruefende Geraet nicht. BAD kann auch durch eine Indirektkommandodatei gestartet werden bzw. verarbeitet IKD's bis zu einer Tiefe von drei. 18.3. Kommandos --------------- BAD ist aufzurufen: >BAD dev:/sw wobei dev: ein physischer Geraetename ist, bestehend aus 2 Zeichen 396 gefolgt von einer 2-stelligen-Oktalzahl und einem Doppel- punkt. /sw ein Schalter ist, der eine Kommandozeile modifiziert: 18.4. Schalter und ihre Bedeutung --------------------------------- /ALLOCATE:label Eingabe fehlerhafter Bloecke zur Eintragung in oder die Datei [0,0] BADBLK.SYS und in die Defekt- /ALO:label blockliste /LI[ST] Ausgabe der Fehlerblocknummern auf dem Bedienge- raet /MAN[UAL] Manuelle Eingabe von Fehlerblocknummern in die Defektblockliste vor Strukturpruefung des Daten- traegers /PAT[TERN]=m:n Festlegen des Bitmusters, mit welchem die Platte geprueft werden soll /RETRY Damit werden leichte Fehler behoben /UPD[ATE] Eingabe fehlerhafter Bloecke zur Eintragung in die Defektblockliste 18.4.1. Die Schalter ALLOCATE, MANUAL UND UPDATE ------------------------------------------------ Mit diesem Schalter ist es moeglich, weitere fehlerhafte Bloecke ueber das Bediengeraet einzugeben. Nach Eingabe der Kommandozeile meldet sich BAD wie folgt: BAD>LBN(S)= Danach koennen fehlerhafte Bloecke in folgendem Format eingegeben werden: blocknum[:number] wobei: blocknum - Nummer des fehlerhaften Blockes number - Anzahl der aufeinanderfolgenden fehlerhaften Bloecke. Bei nur einem fehlerhaften Block kann diese Angabe entfallen Alle Werte sind standardmaessig Dezimalwerte. Oktalwerte muessen durch das #-Zeichen gekennzeichnet werden (z.B. #124). Es koennen auch mehrere Fehlerblockangaben in einer Zeile stehen. Gueltige Trennzeichen fuer diese Angaben sind Komma, Tabulator oder Leer- zeichen. Die Kommandozeile wird mit dem Zeichen abge- schlossen. Das Ende der Eingabe von Fehlerbloecken erfolgt mit ESCAPE oder CTRL/Z. Beispiel: BAD>LBN(S)=122:3,12,400:100 75:1 397 Es werden die Bloecke 122, 123, 124, 12, 400 bis 500 und 75 in die Defektblockliste eingetragen. Bei Angabe des /ALO-Schalters werden die fehlerhaften Bloecke gleichzeitig in die Datei [0,0] BADBLK.SYS eingetragen. Wird auf die BAD-Meldung BAD>LBN(S)= ein eingegeben, werden bei Verwendung des /MAN- oder /UPD- Schalters die fehlerhaften Bloecke, welche in der Defektblock- liste eingetragen sind, wie folgt ausgegeben: BAD>LBN(S)= 000122:003 000012:001 000400:100 000075:001 BAD>LBN(S)= Die erste Zahl stellt den Anfangsblock und die zweite Zahl die Anzahl der fehlerhaften Bloecke dar. Bei Verwendung des /ALO-Schalters wird auf dem Bediengeraet aus- gegeben: BAD>LBN(S)= LBNs allocated to BADBLK.SYS = 004799:001 000122:003 000012:001 000400:100 000075:001 LBNs in BAD BLOCK FILE = 000122:003 000012:001 000400:100 000075:001 000712:001 BAD>LBN(S)= Die LBN 4799 in BADBLK.SYS kennzeichnet das BAD BLOCK FILE (De- fektblockliste = letzter fehlerfreier Block der Platte) als be- legt. Dieser Wert erscheint nicht in der Defektblockliste. In diesem Beispiel ist der Block 712 in der Defektblockliste ver- zeichnet, der durch den /ALLOCATE - Schalter in die Datei [0,0] BADBLK.SYS eingetragen werden kann. (In diesem Fall erfolgt die Meldung "Duplicate block number", weil die LBN bereits in der Defektblockliste eingetragen ist.) Besonderheiten: /ALO-Schalter: Dieser Schalter veranlasst BAD nicht, eine neue Strukturpruefung vorzunehmen und die Platte neu zu initialisieren. Die Platte muss gemountet und der Nutzer privile- giert sein ! /MAN-Schalter: Nach Eingabe der Fehlerblockangaben erfolgt eine Strukturpruefung der Platte. Weitere gefundene Fehlerbloecke werden in die Defektblockliste ein- getragen. 398 /UPD-Schalter: Nach Eingabe der Fehlerblockangaben erfolgt keine Strukturpruefung der Platte. Die Angaben der De- fektblockliste werden vom MCR-Kommando INI fuer das Einrichten der Datei [0,0] BADBLK.SYS verwen- det. 18.4.2. Der Schalter LIST ------------------------- Die bei der Strukturpruefung als fehlerhaft erkannten Bloecke werden auf dem Bediengeraet (dezimal) ausgegeben. 18.4.3. Der Schalter PATTERN ---------------------------- Damit wird BAD veranlasst, fehlerhafte Bloecke mittels eines vom Nutzer eingegebenen Doppelwortdatenmuster zu pruefen. Die Variab- le m:n stellt die beiden 16 Bit langen Oktalzahlen dar, die als Pruefmuster verwendet werden. Es kann eine Dezimalzahl eingegeben werden, indem hinter die Zahl ein Punkt gesetzt wird. Standard- werte fuer das Doppelwortpruefmuster sind bei BAD die beiden Oktalwerte 165555 und 133333. 18.4.4. Der Schalter RETRY -------------------------- Dieser Schalter bewirkt, Anlagenfehler mittels des Geraetedrivers zu beheben. Das bedeutet, dass einfache Fehler, wie z.B. ein ECC- Fehler (Error Correction Code), der korrigierbar ist, behoben wird und der Block als fehlerfrei gekennzeichnet wird. 18.5. Verwendung von Defektblockinformationen --------------------------------------------- Das MCR-Kommando INI benutzt die Informationen der Defektblock- liste, um eine Datei BADBLK.SYS zu eroeffnen. Sie ist in der UFD [0,0] des zu pruefenden Geraetes zu finden und enthaelt die Adressen der defekten Bloecke, so dass das Dateisystem keine Datei auf einem defekten Block eroeffnet. Die Benutzung des MCR-Kommandos INI ist in der "Anleitung fuer den Bediener, Teil 2" beschrieben. 18.6. Fehlermitteilungen ------------------------ BAD -- ddu: Allocation Failure BAD hat nicht die Blocknummernfolge zugeordnet, die eingegeben wurde. Die eingegebenen Blocknummern sind bereits einer anderen Datei zugeordnet. Diese Meldung gilt nur fuer den /ALLOCATE- Schalter. Der Datentraeger ist entweder falsch oder das Geraet arbeitet fehlerhaft. BAD -- ddu: Bad block file not found Die Defektblockliste konnte im UPDATE-Modus nicht gelesen werden. Geraet ist neu zu formatisieren. BAD -- ddu: Bad block file overflow BAD findet mehr als 126 Eintragungen fehlerhafter Bloecke. Diese Mitteilung weist gewoehnlich auf einen Geraetefehler hin. Geraetetest durchfuehren. 399 BAD -- ddu: Bad block found - LBN = nnnnnn. Wenn der Schalter /LI angegeben wurde, werden die defekten Bloecke in diesem Format angegeben, wobei LBN die logische Block- nummer (dezimal) ist. BAD -- ddu: Block already allocated - LBN = numb Die eingegebene Blocknummernfolge ist bereits einer Datei zuge- ordnet. Diese Meldung gilt nur fuer den /ALLOCATE-Schalter. Kommandozeile mit richtigen Werten wiederholen. BAD -- ddu: Block 0 bad - Do not use as system disk Der Block 0 ist defekt, so dass die Platte als Systemplatte unge- eignet ist. BAD -- Command I/O-Error BAD konnte die Eingabe nicht als Kommandozeile erkennen. Kommandozeile mit richtigen Werten wiederholen. BAD -- Command too long Das Kommando war laenger als 80 Zeichen. Kommandozeile wiederholen. BAD -- Duplicate block number - numb Die eingegebene Blochnummernfolge befindet sich bereits in der Defektblockliste. Diese Nachricht gilt nur fuer die Schalter /ALLOCATE, /MANUAL und /UPDATE. Beim /ALLOCATE-Schalter bedeutet diese Meldung, dass die Blocknummer, die [0,0] BADBLK.SYS zuge- ordnet wurde, bereits in der Defektblockliste eingetragen war. BAD -- ddu: Failed to attach BAD hat keinen Zugriff zu dem Geraet, welches geprueft werden soll. Es ist zu pruefen, ob ein anderer Nutzer bzw. eine Task dieses Geraet nutzt. BAD -- ddu: Failed to read BADBLK.SYS haeder BAD konnte den Dateikopf von BADBLK.SYS nicht lesen. Diese Nach- richt gilt nur fuer den /ALLOCATE-Schalter. Platte muss neu initialisiert werden. BAD -- ddu: Failed to write Bad Block File Die Defektblockliste konnte nicht geschrieben werden. Gewoehnlich liegt ein Plattenschreibfehler vor. Kommando wiederholen. Sonst ist ein Geraetetest durchzufuehren. BAD -- ddu: Fatal hardware error Es liegt ein Hardware-Fehler vor. Geraet reparieren. BAD -- ddu: Handler/Driver missing Der Geraetedriver ist nicht geladen. Driver laden und Kommando wiederholen. BAD -- ddu: Home block not found BAD konnte den Datentraegerkennsatz nicht finden. Diese Meldung gilt nur fuer den /ALLOCATE-Schalter. Platte muss neu initialisiert werden. BAD -- ddu: Illegal device Das angegebene Geraet hat keine OMOS 1630 - Dateistruktur. Das Geraet muss neu formatisiert werden. 400 BAD -- Invalid block number - numb Es wurde eine ungueltige Blocknummernfolge eingegeben oder ist eine ungueltige Zeichenkette. Diese Meldung gilt nur fuer die Schalter /MANUAL, /ALLOCATE oder /UPDATE. Kommandozeile mit richtigen Werten wiederholen. BAD -- Invalid switch Schalter fehlerhaft. Kommando mit korrektem Schalter wiederholen. BAD -- ddu: Not in system Das Geraet ist kein Bestandteil der Geraetekonfiguration. Kommandozeile mit richtigem Geraet wiederholen. BAD -- ddu: Not ready Das Geraet ist nicht betriebsbereit. Fehlerursache beseitigen, Kommando wiederholen. BAD -- ddu: Privilege violation Es besteht kein Zugriff zum angegebenen Geraet. Fehlerursache beseitigen, Kommando wiederholen. BAD -- Syntax error Syntaxfehler in der Kommandozeile. Wiederholen der korrekten Kommandos. BAD -- ddu: Total bad blocks = n. Diese Ausschrift gibt die Gesamtanzahl (dezimal) der defekten Bloecke des Geraetes an. Die Zahl der defekten Bloecke ist im Datentraegernamen zu vermer- ken. BAD -- ddu: Unrecoverable error n BAD wurde auf Grund eines E/A-Fehlers abgebrochen. n kennzeichnet die Fehlernummer der E/A-Operation. BAD -- ddu: Volume label incorrect Der Datentraegername, der mit dem /ALLOCATE-Schalter angegeben wurde, entspricht nicht dem Namen auf der Platte. Kommandozeile mit korrektem Datentraegernamen wiederholen. BAD -- ddu: Write locked Das Geraet ist fuer Schreiben gesperrt. Schreibzugriff herstellen, Kommandozeile wiederholen. 401 19. Datensicherungsprogramm BRU 1630 (OMEX) ------------------------------------------- 19.1. Vorbemerkungen -------------------- Das Datensicherungsprogramm BRU (Backup and Restore Utility) dient zur schnellen Sicherung und Wiedereinlagerung von Dateien oder ganzen Datentraegerinhalten im OMOS-Dateiformat. Folgende Uebertragungsmoeglichkeiten gibt es fuer BRU: - Sichern von Platte auf Magnetband - Wiedereinlagern von Magnetband auf Platte - Uebertragung von Platte zu Platte Zu diesen grundlegenden Uebertragungsfunktionen bietet BRU Schal- ter, die gestatten: - Platten zu initialisieren - selektives Sichern und Wiedereinlagern - steuern der Magnetbandarbeit - Datentraeger- und Datenpruefung - anzeigen von Informationen am Bedienterminal Sicherungsabzuege bzw. Wiedereinlagerungen koennen von bzw. auf eingegliederte (mounted) oder nicht eingegliederte (unmounted) Platten erfolgen. Waehrend des Wiedereinlagerns auf Platte koennen die Dateien so reorganisiert werden, dass der freie Plat- tenspeicherbereich wieder zusammenhaengend ist. Auf einem Magnetband koennen ein oder mehrere Sicherungssaetze aufgezeichnet werden. Ein Sicherungssatz besteht aus allen Daten, die waehrend einer einzelnen Sicherungsoperation auf Magnetband aufgezeichnet werden und wird als benanntes "Backup-set" bezeich- net. Fuer die Sicherungsoperationen stehen folgende Moeglichkeiten zur Verfuegung: - vollstaendige Sicherung - selektive Sicherung - konventionelle Sicherung - Sicherung im Abbildungsformat (nur fuer Operationen von Platte zu Platte) Bei einer vollstaendigen Sicherungsoperation werden alle Dateien eines Datentraegers auf einen (oder mehrere) Sicherungsdatentrae- ger uebertragen. Damit wird eine komplette Kopie der Orginalplat- te erzeugt. Bei einer selektiven Sicherungsoperation wird nur eine Teilmenge des Eingabedatentraegers abgezogen. Die Auswahl und Kennzeichnung der Dateien, die zu einem Sicherungssatz ge- hoeren sollen, erfolgt durch UFD, Datum oder die Dateispezifika- tion. Ein Typ der selektiven Sicherung ist das inkrementelle Sichern, wo die Auswahl der Dateien nur durch das Datum erfolgt. Bei einer konventionellen Sicherungsoperation auf Magnetband werden die Dateien der Eingabeplatte in einen Sicherungssatz im BRU-Format gespeichert. Dieser Sicherungssatz kann sich ueber mehrere Baender erstrecken oder es koennen sich mehrere Siche- rungssaetze auf einem Band befinden. Der Zugriff zu einzelnen Dateien eines Sicherungssatzes ist moeglich. Es muss jedoch vor- her eine Wiederherstellungsoperation vollstaendig oder selektiv auf eine Platte erfolgen. Eine konventionelle Sicherungsoperation von Platte zu Platte ermoeglicht dem Nutzer, sofort wieder auf einzelne Dateien des Abzuges zugreifen zu koennen. Eine Sicherungsoperation im Abbildungsformat kann nur von Platte zu Platte erfolgen und wird durch den Schalter /IMAGE ge- steuert. Diese Moeglichkeit kann genutzt werden, wenn die Inhalte von mehreren kleinen Platten auf einer grossen Platte gesichert 402 werden sollen. Ein Zugriff zu einzelnen Dateien eines Sicherungs- satzes ist nicht moeglich und es muss erst eine Wiedereinla- gerungsoperation auf eine andere Platte vorgenommen werden. Von BRU werden die Geraete DK:, DM:, DY: und MT: unterstuetzt. 19.2. Kommandosyntax -------------------- BRU-Kommandozeilen koennen eine maximale Laenge von 256. Zeichen besitzen. Das allgemeine Kommandoformat fuer BRU lautet: BRU>/switch(es) indevice:,...[filespec,..] outdevice:,... Eine weitere Moeglichkeit der Kommandoeingabe bei BRU lautet: BRU>[/switch(es)] Danach erscheinen folgende Meldungen auf dem Terminal: FROM: TO: INITIALIZE[Y/N] wobei: FROM - Damit werden ein oder mehrere Geraetenamen angefordert, von denen die Eingabe erfolgen soll. Es kann auch ein UIC angegeben werden TO - Damit werden ein oder mehrere Geraetenamen angefordert, auf die die Ausgabe erfolgen soll. INITIALIZE[Y/N] - Es muss Y oder N angegeben werden, um zu kennzeichnen, ob der Ausgabedatentraeger initialisiert werden soll oder nicht. 19.2.1. Kommandozeilenparameter ------------------------------- Parameter fuer BRU- Kommandozeilen sind Schalter, Geraete- und Dateispezifikationen. /switch(es) Damit werden die Schalter spezifiziert, die fuer eine Operation notwendig sind. Werden mehr als ein Schalter angegeben, muessen diese zusammenhaengend, nur durch einen Schraegstrich (/) ge- trennt, angegeben werden. Die Reihenfolge der Schalter ist wahl- frei. Schalter koennen soweit abgekuerzt werden, wie keine Mehrdeutig- keiten entstehen koennen. In jedem Falle sind drei Zeichen aus- reichend fuer eine eindeutige Kennzeichnung. Besitzt ein Schalter Optionen, sind diese durch einen Doppelpunkt (:) vom Schalter zu trennen. indevice Damit wird das physische Geraet spezifiziert, von dem Daten uebertragen werden sollen. Bei Verwendung des Schalters /IMAGE koennen mehr als ein Eingabegeraet angegeben werden. Die Geraete- bezeichnung entspricht der allgemein bei OMOS ueblichen Geraete- mnemonik dd[nn]:. Mehrere Geraetebezeichnungen werden durch Komma getrennt. 403 filespec Diese Angabe bezeichnet die Dateispezifikation, nach welcher be- stimmte Dateien oder Kategorien von Dateien ausgewaehlt werden, die durch BRU behandelt werden. Es gilt folgendes allgemeine Format: [UIC]filename.filetyp;version Es koennen bis zu 16. Dateispezifikationen in einer Kommandozeile angegeben werden. Wird keine Dateispezifikation angegeben, werden alle Dateien vom Eingabedatentraeger auf den Ausgabedatentraeger kopiert. Dateien koennen selektiv nach UIC, Dateinamen, Dateityp oder Versionsnummer gesichert oder wiederhergestellt werden. Bei einer Auswahl nach Versionsnummer muss entweder die Sternvereinbarung oder eine explizite Versionsnummer oder keine Versionsnummer angegeben werden. Dabei hat die Sternvereinbarung die gleiche Wirkung wie keine Angabe der Versionsnummer. Die Versionsnummern- angabe 0 oder -1 wird von BRU nicht unterstuetzt. outdevice Dadurch wird das physische Ausgabegeraet spezifiziert, auf wel- ches die Daten uebertragen werden. Es gelten die gleichen Konven- tionen wie fuer den Parameter indevice. 19.2.1.1. Sternvereinbarungen bei der Eingabespezifikation ---------------------------------------------------------- Als Sternvereinbarungen fuer die UIC-Angabe sind folgende Formen moeglich: [*,*] - bezeichnet alle UIC's [g,*] - bezeichnet alle Mitglieder einer Gruppe [*,m] - bezeichnet alle Gruppennummern fuer Mitglied m Ausserdem gestattet BRU die Sternvereinbarung fuer die Elemente Dateiname, Dateityp und Versionsnummer einer Dateispezifikation. Dabei richtet sich BRU nach den allgemein gueltigen Richtlinien fuer die Anwendung der Sternvereinbarung im Betriebssystem OMOS. Es gelten jedoch zwei Aussnahmen: - Wird ein Element der Dateispezifikation ausgelassen, so behan- delt BRU das ausgelassene Element als Sternvereinbarung. Wird der UIC ausgelassen, gilt der aktuelle UIC als Standardwert. - Werden spezielle UIC's in einer Kommandozeile angegeben, aber keine Dateinamen und/oder Dateitypen spezifiziert, werden alle Dateien in einer Sicherungs- oder Wiederherstellungsoperation uebertragen, d.h. die Angabe [UIC]*.* ist nicht erforderlich. 19.2.2. Fortsetzungszeilen -------------------------- BRU-Kommandozeilen koennen maximal 256. Zeichen lang sein. Als Fortsetzungszeichen gilt fuer BRU ein Bindestrich (-). Das Betriebssystem OMOS unterstuetzt Fortsetzungszeilen nur im Mehrzeilenformat, d.h. dass Fortsetzungszeilen nur bei der Mel- dung 404 BRU> eingeben kann. Im Einzeilenformat, d.h. bei Kommandoeingabe in der BRU akti- vierenden Zeile, sowie bei Nutzung von Indirektkommandodateien werden keine Fortsetzungszeilen unterstuetzt. 19.3. Uebersicht der Schalter, Optionen und Standardwerte --------------------------------------------------------- Tabelle 61 gibt eine Uebersicht ueber alle Schalter, moegli- che Optionen und Standardwerte, die fuer Sicherung und Wiederein- lagerung mit BRU verfuegbar sind. Tabelle 61: Zusammenfassung der BRU-Schalter ----------------------------------------------------------------- | | | | | Schalter | Optionen | Standardwert | | | | | ----------------------------------------------------------------- | | | | |/APPEND | | keiner | | | | | |/BACKUP SET:name | | DT-Name der Eingabe- | | | | platte | | | | | |/BAD: | MANUAL | BAD:AUTOMATIC | | | AUTOMATIC | | | | | | |/BUFFERS:number | | Anzahl der FCB der | | | | Eingabeplatte | | | | | |/COMPARE | | keiner | | | | | |/CREATED: |BEFORE:(dd-mmm-yy | aktuelles Datum | | | hh:mm:ss) | | | |BEFORE:dd-mmm-yy | | | |BEFORE:hh:mm:ss | | | |AFTER:(dd-mmm-yy | | | | hh:mm:ss) | | | |AFTER:dd-mmm-yy | | | |AFTER:hh:mm:ss | | | | | | |/DENSITY:number | | Standardwert des | | | | Geraetes | | | | | |/DIRECTORY | | keiner | | | | | |/DISPLAY | | keiner | | | | | |/ERRORS:number | | /ERRORS:25. | | | | | |/EXCLUDE | | keiner | | | | | |/EXTEND:number | | Anzahl der Bloecke | | | | von Eingabeplatte | | | | | |/HEADERS:number | | Anzahl der Kennsaetze| | | | die Eingabegeraet | | | | zugeordnet sind | 405 Tabelle 61: (Fortsetzung) ----------------------------------------------------------------- | | | | | Schalter | Optionen | Standardwert | | | | | ----------------------------------------------------------------- | | | | |/IMAGE: | SAVE | keiner | | | RESTORE | | | | | | |/INITIALIZE | | keiner | | | | | |/INVOLUME:name | | keiner | | | | | |/LENGTH:number | | Laenge des Ausgabe- | | | | bandes | | | | | |/MAXIMUM:number | | max. Anzahl, die auf | | | | Eingabedatentraeger | | | | zulaessig sind | | | | | |/MOUNTED | | keiner | | | | | |/NEW VERSION | | /NOSUPERSEDE | | | | | |/NOINITIALIZE | | keiner | | | | | |/NOPRESERVE | | keiner | | | | | |/NOSUPERSEDE | | /NOSUPERSEDE | | | | | |/OUTVOLUME:name | | Datentraegername der | | | | Eingabeplatte | | | | | |/POSITION: | BEGINNING | Position der Index- | | | MIDDLE | datei auf Eingabe- | | | END | platte | | | BLOCK:number | | | | | | |/PROTECTION: | SYSTEM:value | Schutz der Eingabe- | | | OWNER :value | platte | | | GROUP :value | | | | WORLD :value | | | | | | |/REVISED: | BEFORE:(dd-mmm-yy | aktuelles Datum | | | hh:mm:ss) | | | | BEFORE:dd-mmm-yy | | | | BEFORE:hh:mm:ss | | | | AFTER:(dd-mmm-yy | | | | hh:mm:ss) | | | | AFTER:dd-mmm-yy | | | | AFTER:hh:mm:ss | | | | | | |/REWIND | | keiner | | | | | |/SUPERSEDE | | /NOSUPERSEDE | | | | | |/TAPE LABEL:label | | keiner | 406 Tabelle 61: (Fortsetzung) ----------------------------------------------------------------- | | | | | Schalter | Optionen | Standardwert | | | | | ----------------------------------------------------------------- | | | | |/UFD | | keiner | | | | | |/VERIFY | | keiner | | | | | |/WINDOWS:value | | Anzahl der Zeiger | | | | auf der Eingabeplatte| | | | | ----------------------------------------------------------------- 19.3.1. Funktionen der Schalter ------------------------------- Wird durch den Schalter /INITIALIZE eine Platte initialisiert, koennen folgende Schalter verwendet werden, um verschiedene Merk- male fuer die Ausgabeplatte festzulegen: /BAD /NOPRESERVE /BUFFERS /OUTVOLUME /EXTEND /POSITION /HEADERS /PROTECTION /MAXIMUM /WINDOWS Der Schalter /MOUNTED gestattet es, Dateien von einer eingeglie- derten Platte zu kopieren. Die folgenden Schalter gestatten es, Dateien mit unterschiedlichen Ergebnissen zu kopieren: /NEW VERSION /SUPERSEDE /NOINITIALIZE /UFD /NOSUPERSEDE Die Schalter /CREATED /REVISED /EXCLUDE gestatten es, Dateien nach folgenden Kriterien zu sichern und wiedereinzulagern: - nach Dateispezifikation - nach Erstellungsdatum und Zeit - nach Revisionsdatum und Zeit 407 Schalter zur Steuerung von Magnetbandoperationen fuer Sicherungen und Wiedereinlagerungen sind: /APPEND /LENGTH /BACKUP SET /REWIND /DENSITY /TAPE LABEL /ERRORS Zum Feststellen von Unterschieden zwischen den Daten von Eingabe- und Ausgabedatentraeger dienen die Schalter: /COMPARE /VERIFY /INVOLUME Schalter zum Anzeigen von Informationen ueber die uebertragenen Dateien sind : /DIRECTORY /DISPLAY Der /IMAGE-Schalter gilt fuer Sicherungs- und Wiedereinlagerungs- operationen im Abbildungsformat von Platte zu Platte. 19.4. Beschreibung der Schalter ------------------------------- 19.4.1. /APPEND ---------------- Damit wird BRU veranlasst, einen Sicherungssatz (backup set) von der Eingabeplatte an den letzten Sicherungssatz auf einem Magnet- band, oder, bei Angabe von /IMAGE auf der Ausgabeplatte , anzu- haengen. Ist das Magnetband auf dem Bandanfang positioniert, dann veran- lasst das Kommando BRU zur Suche nach dem logischen Bandende und beginnt danach mit der Uebertragung. Ist das Magnetband bereits auf dem logischen Bandende positioniert, beginnt BRU sofort mit der Uebertragung. Befindet sich das Band auf einer undefinierten Position, ist der Schalter /REWIND mit dem /APPEND- Schalter zu kombinieren. In diesem Falle wird das Band erst an den Bandanfang zurueckgespult, dann auf das logische Bandende positioniert und danach mit der Uebertragung begonnen. Wenn das Ausgabegeraet ein Folgegeraet ist (d.h. nicht das erste in einem Satz), oder wenn der Sicherungssatz nicht auf dem Ausga- begeraet endet, gibt BRU eine Fehlermeldung aus. In Verbindung mit dem /IMAGE-Schalter prueft BRU auf der Ausgabeplatte den Be- legungskennsatz und schreibt den Sicherungssatz hinter das logi- sche Dateiende. Der /APPEND-Schalter kann nicht bei einer Operation zu einer ein- gegliederten Platte verwendet werden. 19.4.2. /BACKUP SET: name ------------------------- Damit wird der Name des Sicherungssatzes spezifiziert, der auf dem Ausgabedatentraeger gespeichert werden soll. Der Name kann bis zu 12 Zeichen lang sein und wird beim Ausgabedatentraeger angegeben. Wird dieser Schalter bei einem Eingabedatentraeger an- gegeben, dann sucht BRU auf dem Eingabeband nach diesem Namen und 408 lagert den entsprechenden Sicherungssatz wieder ein. Aufeinander- folgende Sicherungssaetze auf einem Magnetband koennen in dieser Reihenfolge auf Platten wiederhergestellt werden ohne Angabe des /REWIND-Begriffes. 19.4.3. /BAD: option -------------------- Mit dem Schalter /BAD wird die Datei BADBLK.SYS auf dem Ausgabe- datentraeger erstellt. Der Schalter wird mit dem Schalter /INITIALIZE bei Operationen von Band auf Platte und von Platte zu Platte angewandt. Fuer den Schalter /BAD gibt es zwei Optionen, AUTOMATIC und MANUAL. Mit der Option AUTOMATIC wird festgelegt, dass BRU die Informa- tionen der Defektblockliste verwendet, welche durch das Dienst- programm BAD auf dem letzten fehlerfreien Block der Platte einge- tragen wurden, um die Datei BADBLK.SYS zu erstellen. AUTOMATIC ist die Standardoption fuer BRU. Mit der Option MANUAL koennen Adressen ueber fehlerhafte Bloecke im Dialog ueber Terminal eingegeben werden. Bei der Angabe /BAD:MANUAL gibt BRU ueber Terminal folgende Ein- gabeanforderung aus: BRU> LBN(S)= Danach kann die logische Blocknummer (LBN) und getrennt durch ei- nen Doppelpunkt (:) die Anzahl aufeinanderfolgender fehlerhafter Bloecke eingegeben werden. Die Eingabe wird mit abgeschlos- sen. BRU interpretiert alle Eingabewerte als Dezimalzahlen. Ok- talzahlen muessen mit dem #-Zeichen markiert sein. Wird ein Block eingegeben, der sich bereits in der Defektblockliste befindet, gibt BRU eine Fehlermeldung aus. Wird ein Schraegstrich (/) auf eine Eingabeanforderung eingege- ben, listet BRU alle bisher eingegebenen LBN der Defektblockliste aus und die Eingabe von zwei Schraegstrichen (//) veranlasst BRU, die Eintragung der defekten Bloecke in die Datei BADBLK.SYS vor- zunehmen. Nach Eingabe von kehrt BRU zur Kommandoebene zu- rueck. Beispiel: BRU>/REW/INI/BAD:MAN MT1: DK4: BRU Starting tape 1 on MT1: BRU>LBN(S)=2740:2 BRU>LBN(S)=3641 BRU>LBN(S)=/ 002740:002 003641:001 BRU>LBN(S)=// BRU - End of tape 1 on MT1: BRU - Completed BRU> 409 19.4.4. /BUFFERS:number ----------------------- Damit wird die Anzahl fuer Dateisteuerbloecke des Verzeichnisses (FCB) auf dem Datentraeger festgelegt. Diese FCB werden durch die Zusatzsteuerroutine FM16DA in den Speicher geladen. Dadurch wird eine Erhoehung der Zugriffsgeschwindigkeit zur Platte wegen weni- ger Plattenzugriffe erreicht, da die Informationen, die auf der Platte enthalten sind, im Internspeicher stehen. Dies erfordert aber Zugestaendnisse an den Speicherplatz. Die Standardanzahl der Dateisteuerbloecke entspricht dem der Ein- gabeplatte. Der Schalter /BUFFERS wird mit dem Schalter /INITIALIZE bei Ope- rationen von Band auf Platte oder von Platte zu Platte benutzt. 19.4.5. /COMPARE ---------------- Damit werden die Daten auf dem Ausgabegeraet mit den Daten auf dem Eingabegeraet verglichen. Die Unterschiede werden auf dem Terminal angezeigt. Waehrend der Vergleichsoperation finden keine Datenuebertragungen statt. Die Kommandozeile der Vergleichsopera- tion muss mit derjenigen identisch sein, die eingegeben wurde, als die Daten auf dem Ausgabegeraet erstellt wurden, ausgenommen bei den Schaltern /INITIALIZE, /NOINITIALIZE und /APPEND. 19.4.6. /CREATED:option ----------------------- Der Schalter fuer das Erstellungsdatum kann mit der Option AFTER oder BEFORE sowie einer Datums- und Zeitangabe eingegeben werden. Entsprechend der Optionsangabe werden alle Dateien, die vor oder nach dem eingegebenen Datum und Zeit erstellt wurden, kopiert. Werden Datum und Zeit angegeben, dann muessen diese Werte in run- de Klammern eingeschlossen werden. Wenn nur eine Zeit oder nur ein Datum angegeben wird, sind die Klammern nicht erforderlich. Wird nur die Zeit angegeben, gilt als Standard das aktuelle Da- tum. Wird nur das Datum angegeben, gilt als Standard fuer die Zeit 00:00. 19.4.7. /DENSITY:number ----------------------- Damit wird die Aufzeichnungsdichte auf Magnetband spezifiziert. Der Standardwert betraegt 800 bpi. Dieser Schalter ist nur sinn- voll bei Magnetbandgeraeten, die hardwaremaessig eine andere Auf- zeichnungsdichte gestatten. 19.4.8. /DIRECTORY ------------------ Durch diesen Schalter werden auf dem Terminal entweder die ent- haltenen Backupsets oder, bei Angabe des Backupsetnamens der In- halt des Sicherungssatzes, der sich auf Magnetband oder einer Platte befindet, angezeigt. Wird der Schalter ohne Angabe eines Sicherungsnamens angegeben, werden die entsprechenden Backupsets ausgegeben. Wird ein Backup- setname angegeben, erscheint eine Liste der in diesem Sicherungs- satz enthaltenen Dateien. 410 Beispiel: BRU>/BACKUP SET:SYSDK/DIRECTORY MT1: Durch dieses Kommando werden alle Dateien, die im Sicherungssatz SYSDK abgespeichert wurden, auf dem Terminal ausgegeben. 19.4.9. /DISPLAY ---------------- Durch diesen Schalter wird auf dem Terminal der Dateiname und der UIC jeder Datei ausgegeben, welcher durch BRU uebertragen wird. 19.4.10. /ERRORS:number ----------------------- Eine Wiedereinlagerungsoperation wird nach der angegebenen Feh- leranzahl abgebrochen. Dieser Wert kann zwischen 0 und 65535 be- tragen, der Standardwert betraegt 25. 19.4.11. /EXCLUDE ----------------- Durch den /EXCLUDE-Schalter werden diejenigen Dateien von der Uebertragung ausgeschlossen, die in der Kommandozeile spezifi- ziert sind. Beispiel: BRU>/MOU/EXC DK0:[1,6] MT1: Dadurch werden alle Dateien, ausser denen des UIC [1,6], auf das Ausgabeband uebertragen. 19.4.12. /EXTEND:number ----------------------- Dieser Schalter legt die Anzahl der Bloecke fest, um die eine Da- tei erweitert wird , wenn der zugewiesene Platz nicht ausreicht. Der Standardwert wird vom initialisierten Wert der Eingabeplatte uebernommen. Der Schalter wird im Zusammenhang mit /INITIALIZE bei Operationen von Band zu Platte oder von Platte zu Platte verwendet. 19.4.13. /HEADERS:number ------------------------ Durch diesen Schalter wird die maximale Anzahl der Dateikennsaet- ze festgelegt, die der Indexdatei zugeordnet werden koennen. Als Standardwert gilt die Anzahl der Kennsaetze, die dem Eingabeda- tentraeger zugeordnet sind. Dieser Schalter wird mit /INITIALIZE bei Operationen von Band auf Platte und Platte zu Platte angewandt. 19.4.14. /IMAGE:arg ------------------- Dieser Schalter kennzeichnet eine Uebertragung im Abbildungsfor- mat von Platte zu Platte. Bei einer Sicherungsoperation muss das 411 Argument SAVE angegeben werden und bei einer Wiedereinlagerungs- operation das Argument RESTORE. 19.4.15. /INITIALIZE -------------------- Dieser Schalter spezifiziert , dass eine Platte bei einer Ueber- tragung von Band auf Platte oder von Platte zu Platte initiali- siert werden soll. Mit der Initialisierung wird ein FM16-D-Datei- format(OMOS) erzeugt, einschliesslich des Systemladeblocks, des Datentraegerkennsatzes und den Dateien INDEXF.SYS, BADBLK.SYS, BITMAP.SYS, 000000.DIR und CORIMG.SYS. Der Datentraeger darf nicht eingegliedert sein. Gemeinsam mit dem Schalter /INITIALIZE koennen folgende Schalter angegeben werden: /BAD /NOPRESERVE /BUFFERS /OUTVOLUME /EXTEND /POSITION /HEADERS /PROTECTION /MAXIMUM /WINDOWS Wird keiner dieser Schalter angegeben, verwendet BRU standard- maessig die Werte des Eingabedatentraegers, ausser /BAD und /NOPRESERVE. 19.4.16. /INVOLUME:name ----------------------- Damit wird der Datentraegername der Eingabeplatte spezifiziert. Dieser Name kann bis zu 12 Zeichen lang sein. Bei Sicherungsoperationen wird BRU angewiesen, den Kennsatz der Eingabeplatte zu pruefen. Damit wird abgesichert, den richtigen Datentraeger abzuziehen. Bei Wiedereinlagerungsoperationen prueft BRU den Kennsatz, der sich in einem Sicherungssatz auf Band befindet. 19.4.17. /LENGTH:number ----------------------- Dieser Schalter gibt die nutzbare Magnetbandlaenge dezimal in Fuss an. 19.4.18. /MAXIMUM:number ------------------------ Mit diesem Schalter wird die maximale Anzahl von Dateien spezifi- ziert, die auf einem Datentraeger gespeichert werden koennen. Als Standardwert gilt der Wert der Eingabeplatte. Dieser Schalter wird mit dem Schalter /INITIALIZE verwendet. 19.4.19. /MOUNTED ----------------- Dieser Schalter weist BRU an, eine Uebertragung von oder auf eine eingegliederte Platte vorzunehmen. Bei Sicherungsoperationen von einer eingegliederten Platte muss beachtet werden, dass die Da- 412 teien, die gesicherten werden sollen, nicht von anderen Nutzern waehrend der Sicherungsoperationen modifiziert werden. Ver- gleichsoperationen koennen dann zu Fehlern fuehren, weil BRU waehrend einer Sicherungsoperation nicht prueft, ob diese Dateien momentan in Bearbeitung sind. 19.4.20. /NEW VERSION --------------------- Mit diesem Schalter werden beim Wiedereinlagern auf eine einge- gliederte Platte Namenskollisionen verhindert. Wenn eine Datei bereits auf der Ausgabeplatte vorhanden ist, wird die Versions- nummer erhoeht. 19.4.21. /NOINITIALIZE ---------------------- Dadurch wird spezifiziert, dass die Ausgabeplatte bereits ueber ein FM16-D-Format(OMOS) verfuegt und nicht initialisiert werden soll. 19.4.22. /NOPRESERVE -------------------- Damit wird festgelegt, die interne Dateiorganisation (File-ID) beim Wiedereinlagern nicht beizubehalten. Beim Wiedereinlagern auf eine eingegliederte Platte ist dieser Schalter Standard. /NOPRESERVE wird nur zusammen mit dem Schalter /INITIALIZE ver- wendet. 19.4.23. /NOSUPERSEDE --------------------- Mit diesem Schalter wird spezifiziert, dass bei einer Wiederein- lagerung auf eine eingegliederte Platte eine bestehende Datei nicht durch eine Datei gleicher Spezifikation vom Eingabedaten- traeger ersetzt wird. Dieser Schalter ist Standardwert. 19.4.24. /OUTVOLUME:name ------------------------ Damit wird der Datentraeger der Ausgabeplatte spezifiziert. Der Name kann bis zu 12 Zeichen lang sein. Bei Sicherungs- und Wiedereinlagerungsoperationen wird der bei /OUTVOLUME angegebene Namen als neuer Datentraegername verwendet. Wird der Schalter nicht angegeben, dann wird standardmaessig der Name des Eingabedatentraegers zum Namen des Ausgabedatentraegers. 19.4.25. /POSITION:option ------------------------- Mit diesem Schalter wird die Position der Indexdatei auf der Aus- gabeplatte festgelegt, wenn diese initialisiert wird. Als Op- tionen stehen zur Verfuegung: BEGINNING - Die Indexdatei steht am Anfang des Datentraegers. MIDDLE - Die Indexdatei steht in der Mitte des Datentrae- gers. END - Die Indexdatei steht am Ende des Datentraegers. 413 BLOCK:number - Die Indexdatei steht bei der angegebenen Block- nummer. Die Option MIDDLE wird empfohlen, um die Zugriffszeit zu minimie- ren. Die bei der Option BLOCK angegebenen Zahlen werden als Dezimal- zahlen interpretiert. Oktalzahlen muessen durch Vorsetzen des #-Zeichens gekennzeichnet werden. Wird dieser Schalter nicht angegeben, gilt bei BRU als Standard die Position der Indexdatei auf der Eingabeplatte. 19.4.26. /PROTECTION:option:value --------------------------------- Damit wird der Dateischutzcode fuer alle Dateien festgelegt, die auf dieser Platte erstellt werden. Dieser Schutzcode gilt nicht fuer die durch BRU uebertragenen Dateien, sondern fuer diejenigen Dateien, die anschliessend auf dieser Platte erstellt werden. Als Option sind moeglich: SYSTEM:value OWNER :value GROUP :value WORLD :value Die Schutzwerte koennen R (READ), W (WRITE), E (EXTEND) oder D (DELETE) oder eine Kombination dieser Moeglichkeiten sein. Er- laeuterungen zum Dateischutz sind der Anleitung fuer den Bedie- ner, Teil 2, zu entnehmen. Wird dieser Schalter nicht angegeben, gelten die Schutzwerte der Eingabeplatte. 19.4.27. /REVISED:option:value ------------------------------ Durch diesen Schalter werden diejenigen Dateien gesichert bzw. wiedereingelagert, die dem Revisionsdatum und den angegebenen Op- tionen entsprechen. Als Option sind die Angabe von BEFORE oder AFTER moeglich. Die Werte zu diesen Optionen sind Datum und Zeit in der Form: (dd-mmm-yy hh:mm:ss) dd-mmm-yy hh:mm:ss Ebenso wie beim Schalter /CREATED, muessen Datum und Zeit, wenn gleichzeitig angegeben, in runde Klammern eingeschlossen sein. Wird kein Datum angegeben, gilt das aktuelle Datum und wird keine Zeit angegeben, so gilt als Standard die Zeit 00:00. 19.4.28. /REWIND ---------------- Bei Angabe dieses Schalters spult BRU zuerst das Band zurueck, bevor ein Sicherungssatz auf dem Magnetband gesucht wird. Im Zu- 414 sammenhang mit dem /APPEND-Schalter wird erst zurueckgespult, dann das logische Bandende gesucht und anschliessend die Siche- rungsoperation durchgefuehrt. 19.4.29. /SUPERSEDE ------------------- Dieser Schalter legt fest, dass eine bestehende Datei auf dem Ausgabedatentraeger durch eine Datei gleicher Spezifikation des Eingabedatentraegers ueberschrieben wird. Als Standard gilt bei BRU /NOSUPERSEDE 19.4.30. /TAPE LABEL:name ------------------------- Damit wird der ANSI-VOL1-Bandname (max. 6 Zeichen) spezifiziert. Dadurch ist es moeglich zu pruefen, ob das richtige Magnetband verwendet wird. 19.4.31. /UFD ------------- Damit wird BRU angewiesen, UFD's auf einem eingegliederten Daten- traeger einzurichten und dann die Dateien vom Eingabedatentraeger zu kopieren. /UFD wird nur mit dem Schalter /NOINITIALIZE verwen- det. 19.4.32. /VERIFY ---------------- Es werden die Dateien vom Eingabe- auf den Ausgabedatentraeger kopiert. Anschliessend erfolgt eine Vergleichsoperation und alle festgestellten Differenzen werden am Terminal aufgelistet. 19.4.33. /WINDOWS:number ------------------------ Dieser Schalter legt die Anzahl der Blockadresszeiger in einem Dateifenster fest, wenn eine Platte initialisiert wird. Dieses Dateifenster wird im Hauptspeicher (Pool) eingetragen, wenn eine Datei eroeffnet wird. Ein grosses Dateifenster mit vielen Block- adresszeigern beschleunigt den Zugriff zu einer Datei. Es sollte ein guenstiges Verhaeltniss zwischen Poolbelastung und Zugriffs- zeit gewaehlt werden. Wird dieser Schalter nicht angegeben, gilt als Standard der Wert der Eingabeplatte. 19.5. Verwendung von BRU beim Kopieren von Platten, die ein Systemabbild enthalten ----------------------------------------------------------- Wird eine ladbare Systemplatte auf eine Platte des gleichen Typs kopiert, dann schafft BRU automatisch eine ladbare Ausgabeplatte fuer den Nutzer. 415 19.5.1. Kopieren eines nichtgeretteten Systems(virgin system) ------------------------------------------------------------- Bei einen nicht geretteten System wird auf die installierten Tasks durch die physische LBN des Task-Abbildes auf der Platte zugegriffen. Wird ein nichtgerettetes System mittels BRU kopiert, weist BRU neue LBN fuer die Task-Abbildungen auf der Ausgabeplat- te zu. Um dieses kopierte System softwaremaessig laden zu koen- nen, muss man vorher VMR benutzen, um die entsprechenden Tasks zu entfernen und neu zu installieren. 19.5.2. Kopieren eines geretteten Systems ----------------------------------------- In einem geretteten System wird auf die installierten Tasks mit- tels Dateikennzeichen (File-ID) der Task-Abbildungen zugegriffen. 19.5.2.1. Kopieren auf eine kleinere Platte ------------------------------------------- Beim Kopieren eines Systems auf eine kleinere Platte werden zuerst die Schalter /MAXIMUM und /HAEDERS (s. 19.4.18. und 19.4.13.) verwendet, um die Groesse der Indexdatei zu verringern. BRU ist dadurch nicht in der Lage, die Dateikennzeichen (File-ID) zu erhalten. Deshalb muss VMR benutzt werden, um die entsprechen- den Tasks im kopierten Systemabbild zu entfernen und neu zu in- stallieren. 19.5.2.2. Kopieren auf ein Geraet mit einem anderen Steuer- geraetetyp ----------------------------------------------------------- Wird ein hardwaremaessig ladbares System auf eine Platte mit ei- nem anderen Controllertyp kopiert und die Ausgabeplatte wiederum hardwaremaessig ladbar sein soll, muss das MCR-Kommando BOOT ver- wendet werden. Damit wird das System geladen und anschliessend ist das Kommando MCR SAV /WB einzugeben. Dadurch wird ein korrek- ter Systemladeblock erstellt, der ein erneutes Systemladen er- moeglicht. 19.6. Beispiele --------------- BRU /TAPE LABEL:SAVE DK0: MT4: Abzug von DK0:auf MT4:mit dem Namen SAVE im VOL1. BRU /REW /INI MT1: DK3: Zurueckspulen des Magnetbandes, Initialisieren der Platte DK3: und anschliessendes Uebertragen des ersten Backup-Sets vom Band auf Platte. BRU> DK4:[100,3],[110,12]*.MAC,*.CMD TO: MT1: Es wird eine Sicherungsoperation auf Grundlage der Dateispezifi- kation durchgefuehrt. In diesem Fall sichert BRU alle Dateien vom UIC[100,3] und die Dateien vom Typ .MAC und .CMD des UIC[110,12] von DK4: auf MT1:. 416 BRU> /INI DK0: DK1: Eine vollstaendige Kopie der Platte DK0: wird auf DK1: erstellt. Beide Platten sind nicht eingegliedert. BRU> /APP /VER /BAC:SYST FROM: DK2:[200,4] TO: MT: Es wird ein Sicherungssatz von DK2:[200,4] auf dem Magnetband MT0: an bestehende Sicherungssaetze angehangen. Anschliessend er- folgt ein Vergleichslesen. BRU> /MOU /NOI /OUT:DISK /REW - BRU> /BAC:DATEN /TAPE:BAND FROM: MT1: TO: DK2: Dieses Beispiel zeigt die Mehrzeileneingabe und es werden die Da- teien, die unter dem BACKUP-SET-Namen "DATEN" zusammengefasst sind, von MT1: auf eine eingegliederte Platte uebertragen, die nicht initialisiert wird. Vor der Uebertragung wird das Magnet- band zurueckgespult und die Datentraegernamen von Band und Platte ueberprueft. Bei Nichtuebereinstimmung der Namen erfolgt keine Uebertragung. 19.7. Fehlermitteilungen ------------------------ Die Fehlermitteilungen von BRU sind entweder als WARNING-Meldun- gen oder als FATAL-Meldung gekennzeichnet. WARNING-Meldungen bre- chen die BRU-Arbeit nicht in jedem Fall ab, FATAL-Meldungen fueh- ren jedoch stets zum Abbruch der BRU-Operation. Weitere Meldungen, die von BRU ausgegeben werden, dienen der In- formation fuer den Nutzer. BRU --*WARNING*-- Allocation failure[ufd]filename.typ;version Waehrend des Kopierens auf einen eingegliederten Datentraeger gibt es nicht ausreichend freien Platz, um die spezifizierte Da- tei zu kopieren. BRU --*FATAL*-- Allocation for system file exceeds volume limit Eine Systemdatei (z.B.: INDEXF.SYS, BITMAP.SYS, BADBLK.SYS, 000000.DIR) erfordert mehr Platz, als auf der Ausgabeplatte ver- fuegbar ist. Dieser Fehler tritt gewoehnlich dann auf, wenn die Ausgabeplatte kleiner als die Eingabeplatte ist. BRU --*FATAL*-- Ambiguous option Eine mittels eines Schalters spezifizierte Option ist nicht ein- deutig. Z.B.:"B" in /POSITION:B ist entweder BEGINNING oder BLOCK. BRU --*FATAL*-- Ambiguous qualifier Ein Schalter ist nicht eindeutig. So koennte /RE entweder /REVISED oder /REWIND bedeuten. 417 BRU --*WARNING*-- Appending at default bpi on ddnn: oder BRU --*WARNING*-- Appending at 1600 bpi on ddnn: Es wurde die falsche Aufzeichnungsdichte mit dem /APPEND-Schalter spezifiziert. BRU nimmt die Anhaengeoperation nur mit der Dichte vor, mit dem das Band vorher beschrieben wurde. BRU --*FATAL*-- Attach failed on ddnn: Das spezifizierte Geraet konnte durch BRU nicht angeschlossen werden. BRU --*FATAL*-- Backup disk read error Auf der Ausgabeplatte ist ein Lesefehler aufgetreten, vermutlich durch einen fehlerhaften Block. BRU --*FATAL*-- Backup disk write error Auf der Ausgabeplatte ist ein Schreibfehler aufgetreten, vermut- lich durch einen fehlerhaften Block. BRU --*WARNING*-- Bad block data error Eine manuell eingegebene Blochnummer fuer einen fehlerhaften Block, die Anzahl der fehlerhaften Bloecke oder die Syntax waren falsch. BRU --*WARNING*-- Bad block file full Das manuelle Hinzufuegen von fehlerhaften Bloecken hat zu mehr als 204. Saetzen von physisch zusammenhaengenden Bloecken ge- fuehrt. BRU --*WARNING*-- Block exceeds volume size Es wurde manuell eine fehlerhafte Blocknummer eingegeben, die groesser ist, als die moegliche Blocknummer auf der Ausgabeplat- te. BRU --*WARNING*-- Boot block is bad Es konnte nicht in den Ladeblock geschrieben werden. Dadurch kann die Ausgabeplatte hardwaremaessig nicht geladen werden. BRU --*WARNING*-- Boot block is corrupt Die Eingabeplatte enthaelt keinen gueltigen Ladeblock. Die Ausga- beplatte ist dadurch hardwaremaessig nicht ladbar. BRU --*WARNING*-- Boot block read error Beim Lesen des Systemladeblockes ist ein Fehler aufgetreten. BRU --*WARNING*-- Boot block verify error on ddnn: Waehrend einer Sicherungsoperation entsprach der Ladeblock auf dem Ausgabegeraet nicht dem Ladeblock auf dem Eingabegeraet. BRU --*FATAL*-- Cannot append on a mounted disk Eine Sicherungsoperation von mehreren Datentraegern auf eine ein- gegliederte Platte ist nicht moeglich bei Angabe des /APPEND- Schalters. Eine /APPEND-Operation ist nur zu nicht eingeglieder- ten Platten moeglich. BRU --*WARNING*-- Cannot restore contiguously [ufd]filename.typ; version Das Ausgabegeraet enthaelt nicht genuegend physisch zusammen- haengende Bloecke fuer das Wiedereinlagern der angegebenen, phy- sisch zusammenhaengenden, Datei. Die Datei wird physisch nicht zusammenhaengend abgespeichert. 418 BRU --*WARNING*-- Close or write attribute error [ufd]filename. typ;version Beim Kopieren auf einen eingegliederten Datentraeger trat ein Fehler beim Schliessen der angegebenen Datei auf. BRU -- Completed Die BRU-Arbeit ist abgeschlossen. BRU --*FATAL*-- Conflicting qualifiers Zwei oder mehrere Schalter schliessen sich gegenseitig aus. BRU --*WARNING*-- Data ID record verify error Es ist ein Fehler beim Pruefen eines Daten-ID-Satzes aufgetreten. BRU --*WARNING*-- Data record verify error [ufd]filename.typ; version File ID-number LBN number Es bestand ein Unterschied zwischen einem Datenblock auf dem Ein- und dem Ausgabegeraet. File-ID-Nummer und LBN der entsprechenden Datei werden ausgegeben. BRU --*WARNING*-- Data was lost due to IO errors [ufd]filename. typ;version Ein Bandlesefehler fuehrte zum Verlust von Daten. Die Dateien werden wiederhergestellt, koennen aber fehlerhaft sein. BRU --*FATAL*-- Device conflict Sowohl ein Band- als auch ein Plattengeraet wurden als Teil der Ausgabe- oder Eingabegeraetespezifikation angegeben. BRU --*FATAL*-- Device not in system Das angegebene Geraet gehoert nicht zum Systembestand. BRU --*FATAL*-- Device not supported Das angegebene Geraet ist kein Band oder Platte. BRU --*FATAL*-- Directive error Es ist ein interner BRU-Fehler aufgetreten. BRU --*WARNING*-- Directory verify error Ein Verzeichnissatz auf dem Eingabegeraet entsprach nicht einem Verzeichnissatz auf dem Ausgabegeraet. BRU --*FATAL*-- Disk is alignment cartridge Es wurde eine Platte identifiziert, die nicht als FM16-D-Platte (OMOS) initialisiert werden kann. BRU --*-- Disk label error Es ist ein E/A-Fehler aufgetreten beim Lesen oder Schreiben eines Plattenkennsatzes aufgetreten. BRU --*WARNING*-- Disk out of sequence. Please mount correct disk Es ist eine falsche Platte waehrend einer Wiedereinlagerungs- operation eingegliedert worden. BRU --*FATAL*-- Disk read error Es ist ein Lesefehler auf einer Ausgabeplatte aufgetreten, der eventuell durch einen fehlerhaften Block verursacht wurde. BRU --*FATAL*-- Disk write error Es ist ein Schreibfehler auf einer Ausgabeplatte aufgetreten. 419 BRU --*FATAL*-- Doubly defined qualifier Ein Schalter wurde mehr als einmal in einer Kommandozeile angegeben. BRU --*WARNING*-- Duplikate blocks found Ein manuell eingegebener Fehlerblock war bereits in der Fehlerblockdatei eingetragen. BRU -- End of disk number on ddnn: BRU hat die Datenuebertragung oder die Pruefung einer Platte bei Mehrfachplattenoperationen abgeschlossen. BRU -- End of tape number on ddnn: BRU hat die Datenuebertragung oder die Pruefung eines Bandes bei Mehrfachbandoperationen abgeschlossen. BRU --*FATAL*-- End of volume encountered. Backup set not found. Der angegebene Sicherungssatz einer Wiedereinlagerungsoperation befindet sich nicht auf Magnetband oder Platte. BRU --*WARNING*-- EOT marker error Waehrend einer Sicherungsoperation ist ein Fehler beim Schreiben oder Pruefen einer Bandendemarke aufgetreten. Bei einer Wiedereinlagerungsoperation ist ein Fehler beim Positionieren auf das Ende eines Sicherungssatzes aufgetreten, um eine nachfolgende Operation auszufuehren. BRU --*WARNING*-- Error accesing file I/D error code number File ID number Es ist ein Fehler aufgetreten, waehrend BRU Daten in eine Datei gelesen hat oder BRU versuchte, ein Vergleichslesen bei einer Datei vorzunehmen, die bereits geoeffnet war. BRU --*WARNING*-- Error accessing UFD. Skipping [ufd] I/O error code number Waehrend des Kopierens auf einem eingegliederten Datentraeger ist ein Fehler aufgetreten, als BRU versuchte , auf ein Verzeichnis zuzugreifen. BRU --*FATAL*-- Error limit exceeded Die spezifizierte Anzahl von Bandlesefehlern wurde erreicht und BRU bricht die Arbeit ab. BRU --*FATAL*-- Error reading command file Es ist ein E/A-Fehler beim Lesen einer Indirektkommandodatei aufgetreten. BRU --*WARNING*-- Error reading data blocks I/O error code number File ID number LBN number oder Recovered Es ist ein E/A-Fehler waehrend des Lesens eines Datenblockes von der Platte aufgetreten. Das Dateikennzeichen und die LBN des Blockes werden mit dem E/A-Fehlercode angezeigt. Wird Recovered nach der Nachricht ausgegeben, so ist der Block durch erneutes Lesen wiederhergestellt worden. 420 BRU --*WARNING*-- Error reading UFD [ufd] Es ist ein E/A-Fehler beim Lesen Eines Blockes aus dem angegebenen UFD aufgetreten. Es werden keine Dateien dieses Blockes gesichert. BRU --*WARNING*-- Error reading UFD header [ufd] Es ist ein Fehler beim Lesen des Kennsatzes des angegebenen UFD's aufgetreten. Dateien dieses UFD werden nicht gesichert. BRU --*WARNING*-- Extending index file Die urspruengliche Anzahl der Dateikennsaetze war zu gering. Es werden entweder 256. oder 16. weitere Kennsaetze, je nach Anzahl der Bloecke auf der Ausgabeplatte, zugeordnet. BRU --*FATAL*-- Failed to read bad block file Die Informationen der Defektblockliste konnten von BRU nicht gelesen werden. BRU --*WARNING*-- File header read error [ufd]filename.typ; version I/O error code number Beim Lesen eines Dateikennsatzes ist ein Fehler aufgetreten. Diese Datei wird nicht gesichert. BRU --*WARNING*-- File header verify error [ufd]filename.typ; version Der Dateikennsatz der spezifizierten Datei auf dem Ausgabegeraet stimmt nicht mit dem auf dem Eingabegeraet ueberein. BRU --*WARNING*-- File ID area verify error Die von BRu erstellen Datei-ID-Bereiche von Datensaetzen war zwischen Ein- und Ausgabegeraet unterschiedlich. BRU --*FATAL*-- File ID exceeds maximum number of files Es wurde eine maximale Anzahl von Dateien mit dem Schalter /MAXI- MUM spezifiziert, die kleiner ist als auf der Eingabeplatte festgelegt. BRU --*WARNING*-- File ID sequence number error [ufd]filename. typ;version Moegliche Fehlerquellen dafuer sind entweder, die Folgenummer einer Eintragung im UFD, oder die Folgenummer eines UFD entspricht nicht der Folgenummer einer Eintragung im MFD. Die Datei oder das UFD ist nicht gueltig und wird nicht kopiert. BRU --*WARNING*-- File ID's will not preserved Die Dateikennzeichen (File-ID) koennen bei der Uebertragung durch BRU nicht erhalten werden. BRU --*WARNING*-- File marked for delete [ufd]filename.type; version Das Loeschbit (SC.MDL) im Dateikennsatz war gesetzt und die Datei ist teilweise geloescht. Die Datei wird nicht kopiert. BRU --*WARNING*-- File not found [ufd]filename.typ;version Waehrend einer Sicherungsoperation kann BRU den Kennsatz der angegebenen Datei oder das Verzeichnis in der Indexdatei nicht finden. Die Datei wird nicht kopiert. 421 BRU --*FATAL*-- file not found Die angegebene Indirektkommandodatei konnte von BRU nicht gefunden werden. BRU --*WARNING*-- File not superseded [ufd]filename.typ;version Waehrend des Kopierens auf eine eingegliederte Platte wurde die spezifizeirte Datei nicht wiederhergestellt, weil sie bereits auf der Ausgabeplatte vorhanden war. BRU --*FATAL*-- Handler not resident Der Geraetedriver fuer das angegebene Geraet ist nicht geladen. BRU --*WARNING*-- Header ID record verify error Der durch BRU auf dem Ausgabegeraet erstellte Kennzeichensatz ist unterschiedlich zu dem des Eingabegeraetes. BRU --*WARNING*-- Header read error [ufd]filename,typ;version Es ist ein E/A-Fehler beim Lesen eines Dateikennsatzes aus der Indexdatei bei einer Sicherungsoperation aufgetreten. BRU --*FATAL*-- Home block read error I/O error code number Es ist ein E/A-Fehler beim Lesen des Datentraegersatzes des Eingabegeraetes aufgetreten. BRU --*WARNING*-- Home block verify error Der Datentraegerkennsatz des Ausgabegeraetes unterscheidet sich von dem des Eingabegeraetes. BRU --*FATAL*-- Home block write error Ein E/A-Fehler ist beim Schreiben des Datentraegerkennsatzes auf das Ausgabegeraet aufgetreten. BRU --*FATAL*-- Illegal use of directory qualifier Der Schalter /DIREKTORY wurde in einem unzulaessigem Zusammenhang verwendet, z.B. in Verbindung mit einem Ausgabegeraet oder mit dem Schalter /INITIALIZE. BRU --*FATAL*-- Inconsistent initialize qualifiziers Der Schalter /INITIALIZE oder ein ihm entsprechender Schalter wurde zusammen mit /NOINITIALIZE angegeben. BRU --*FATAL*-- Index file header read error I/O error code number Es ist ein Fehler beim Lesen des Kopfsatzes der Indexdatei der Eingabeplatte aufgetreten. BRU --*FATAL*-- Index file write error Beim Schreiben der Indexdatei auf die Ausgabeplatte ist ein Fehler aufgetreten. BRU --*FATAL*-- INDEXF.SYS is full Die Indexdatei kann keine weiteren Dateikennsaetze aufnehmen. BRU --*FATAL*-- Initialize qualifiziers invalid when output is tape Der Schalter /INITIALIZE und die entsprechenden zugehoerigen Schalter koennen nur fuer Platten verwendet werden. 422 BRU --*FATAL*-- Input device Ein- und Ausgabegeraet muessen verschieden sein. BRU --*FATAL*-- Input line too long Die maximale Laenge einer Kommandozeile von 256. Zeichen wurde ueberschritten. BRU --*FATAL*-- Internal error Bei der Arbeit von BRU ist ein interner Fehler aufgetreten. BRU --*FATAL*-- Invalid date or time Es wurde ein Datum oder eine Zeit angegeben, welches ausserhalb des Gueltigkeitsbereichs lag. BRU --*WARNING*-- Invalid date or time [ufd]filename.typ;version Bei einem inkrementellen Sichern einer Datei wurde im Dateikennsatz ein ungueltiges Datum oder Zeit festgestellt. BRU --*FATAL*-- Invalid density or tape format Es wurde eine ungueltige Aufzeichnungdichte fuer ein Magnetband angegeben. BRU --*FATAL*-- Invalid disk format Die Platte, die fuer eine /IMAGE-Wiedereinlagerungsoperation eingegliedert wurde, ist eine BRU- Sicherungsplatte mit mehreren Sicherungssaetzen. BRU --*FATAL*-- Invalid filename Der Name der Indirektkommandodatei ist syntaktisch falsch. BRU --*WARNING*-- Invalid tape format Es wurde ein ungueltiger Bandsatz bei einer Wiedereinlagerungs- operation gelesen. BRU --*FATAL*-- Invalid value or name Ein Wert oder ein Name, der fuer einen Schalter angegeben wurde, hat eine unzulaessige Syntax oder liegt ausserhalb des Gueltigkeitsbereiches. BRU --*FATAL*-- MFD Header read error Ein E/A-Fehler ist beim Lesen des Kennsatzes des MFD aufgetreten. BRU --*WARNING*-- MFD Read error Es wurde ein E/A-Fehler beim Lesen eines MFD- Blockes erkannt. Die UFD dieses MFD- Blockes koennen nicht kopiert werden. BRU --*FATAL*-- Missing colon Eine Option eines Schalters wurde ohne Doppelpunkt angegeben. BRU --*FATAL*-- More than 1 level of indirection BRU unterstuetzt nur eine Ebene von Indirektkommandodateien. BRU -- Mount disk n on ddnn:. Press "Return" when done Diese Nachricht wird immer dann ausgegeben, wenn BRU eine Platte fuer eine Abbildungsopreation anfordert. BRU -- Mount tape n on ddnn: Entweder liegt kein Band auf dem angegebenen Geraet oder das Band befindet sich nicht am Ladepunkt. 423 BRU -- Mount another disk BRU fordert eine andere Platte an, nachdem ein schwerwiegender Schreibfehler erkannt wurde. BRU -- Mount another tape BRU fordert ein anderes Band an, nachdem ein schwerwiegender Schreibfehler erkannt wurde. BRU --*FATAL*-- Name exceeds maximum allwowed length Es wurde ein Sicherungssatzname eingegeben, der laenger als 12 Zeichen ist. BRU --*WARNING*-- No bad block data file found Es wird eine Platte verwendet, die vorher nicht mit dem Dienstprogramm BAD geprueft wurde. BRU --*WARNING*-- No files found Waehrend einer Sicherungs- oder Wiedereinlagerungsoperation hat BRU keine Dateien gefunden. BRU --*WARNING*-- Nonfatal qualifier conflicts being ignored Es wurde ein Schalter eingegeben, der mit dem Rest der Kommandozeile nicht uebereinstimmt, aber nicht schwerwiegend ist, wenn er ignoriert wird. Das ist beispielsweise der Fall bei Angabe des /REWIND- Schalters bei Uebertragung von Platte zu Platte. BRU --*WARNING*-- No such UFD exists. Skipping [ufd] Beim Kopieren auf eine eingegliederte Platte wurden eine oder mehrere Dateien im spezifizierten UFD gefunden, aber es gibt keinen entsprechenden UFD auf dem Ausgabegeraet. BRU --*FATAL*-- Number of headers in consistent with maximum files Waehrend der Initialisierung eines Ausgabegeraetes wurde durch BRU festgestellt, dass die maximale Anzahl von Dateien, die mit /MAXIMUM spezifiziert wurden, nicht mit der Anzahl der Kennsaetze uebereinstimmt, die urspruenglich der Indexdatei mittels /HEADERS zugewiesen wurden. BRU --*WARNING*-- Open error I/O Error code number File- ID number or [ufd]filename.typ;version Bei einer Kooperation auf einen eingegliederten Datentraeger ist ein Fehler beim Oeffnen der angegebenen Datei aufgetreten. BRU --*FATAL*-- Output disk too fragmented to restore Die internen Tabellen von BRU sind wegen zu starker Fragmentierung auf der Ausgabeplatte uebergelaufen. Falls die Ausgabeplatte initialisiert war, hat sie eine nicht zulaessige Anzahl von fehlerhaften Bloecken. BRU --*FATAL*-- Output device is full Es sind keine freien Bloecke auf der Ausgabeplatte verfuegbar oder bei einer /APPEND- Operation wurde das Bandende erreicht. BRU -- Please auswer yes or no BRU benoetigt als Antwort nur Y(es) oder N(o). 424 BRU --*WARNING*-- Privilege violation [ufd]filename.typ;version Waehrend einer Sicherungsoperation wurde versucht, eine Datei zu kopieren, zu der kein Lesezugriff besteht. BRU --*FATAL*-- Privilege violation Der Eingliederungsstatus eines Geraetes entspricht nicht den in der Kommandozeile spezifizierten Schaltern. BRU --*FATAL*-- Ran out of spare file ID's Fuer die Ausgabeplatte wurden mehr Dateikennsaetze benoetigt als fuer die Eingabeplatte und es sind keine freien Kennsaetze verfuegbar. Es muessen nicht benoetigte Dateien geloescht werden und die kommandozeile mit /NOPRESERVE zu wiederholen. Eventuell ist die Platte mit dem Dienstprogramm BAD zu ueberprue- fen. BRU --*WARNING*-- Record not expected size Bei einer Pruef- oder Vergleichsoperation wurde auf dem Ausgabegeraet ein Satz gelesen, der nicht die erwartete Groesse aufwies. BRU --*FATAL*-- Requiered input missing Das Eingabegeraet wurde in der Kommandozeile nicht angegeben. BRU --*FATAL*-- Required output device missing Das Ausgabegeraet wurde in der Kommandozeile nicht angegeben. BRU -- Rewind error on ddnn: Es ist ein E/A- Fehler beim Rueckspulen eines Magnetbandes aufgetreten. BRU --*FATAL*-- Search for home block failed Der Datentraegerkennsatz der Eingabeplatte konnte nicht gelesen werden, weil dieser Block fehlerhaft ist, oder die Platte kein FM16-D-Format (OMOS) besitzt. BRU -- Starting tape n on ddnn: Diese Nachricht teilt mit, auf oder von welcher Geraeteeinheit welches Band kopiert wird. BRU -- Starting verify pass Diese Nachricht teilt mit, dass der Pruefungslauf einer Operation von Platte zu Platte beginnt. BRU -- Starting verify pass tape n on ddnn: Diese Nachricht teilt mit, welches Band waehrend einer BRU- Operation geprueft wird. BRU --*FATAL*-- Syntax error Diese Kommandozeile ist unzulaessig. BRU -- Tape label error on ddnn: I/O error code number Beim Schreiben oder Lesen eines Bandnamens ist ein E/A- Fehler aufgetreten. BRU --*WARNING*-- Tape label verify error Bei einer Vergleichsoperation wurde ein Fehler des Bandnamens auf einem Eingabe- oder Ausgabedatentraegers festgestellt. 425 BRU --*WARNING*-- Tape not at append specified Bei einer Sicherungsoperation auf Band steht das Band nicht auf Bandanfang und kein /APPEND- oder /REWIND- Schalter ist ange- geben. BRU --*WARNING*-- Tape out of sequence. Please mount correct tape Es wurde ein falsches Mangnetband fuer eine Wiedereinlagerungs- operation aufgelegt. BRU --*WARNING*-- Tape positioning error. Blackspace failed Fuer eine /APPEND- Operation ist das Band nicht richtig posi- tioniert. BRU --*FATAL*-- Tape positioning error. NO EOV encountered I/O error code number Die Bandoperation zum Auffinden des logischen Bandendes ist nicht gelungen. BRU --*WARNING*-- Tape raed error Beim Lesen eines Bandes ist ein E/A- Fehler aufgetreten. BRU --*FATAL*-- Tape to tape not supported Eine Sicherungsoperation von Band zu Band ist bei BRU nicht moeglich. BRU --*WARNING*-- Tape write error I/O error code number Beim Beschreiben eines Bandes ist ein E/A- Fehler aufgetreten. Das Band wird zurueckgespult und ein neues Band angefordert. BRU -- This disk will not contain a hardware bootable system Diese Nachricht teilt mit, dass sich auf dieser Platte kein hard- wareladbares System befindet. Beim Uebertragen auf eine eingegliederte Platte erscheint diese Nachricht nicht. BRU --*FATAL*-- Too many devices Bei einer konventionellen Sicherungsoperation kann eine Platte nur einmal als Eingabe- oder Ausgabegeraet angegeben werden. Es koennen jedoch bis zu acht Bandeinheiten, oder, bei einer Sicherung im Abbildungsformat acht Platten die Ein- oder Ausgabe darstellen. BRU --*FATAL*-- Too many file specifications Es wurden mehr als 16 Dateispezifikationen in der Kommandozeile angegeben. BRU --*FATAL*-- UFD or MFD unsupported extension headers BRU unterstuetzt keine Kennsatzerweiterungen fuer MFD oder UFD. BRU --*WARNING*-- UFD record verify error Es ist ein Unterschied in einem UFD- Satz zwischen Ein- und Ausgabegeraet festgestellt worden. BRU --*FATAL*-- Unknown option Es wurde eine Option angegeben, die durch BRU nicht erkannt wurde. BRU --*FATAL*-- Unknown qualifier Es wurde ein Schalter angegeben, der durch BRU nicht erkannt wurde. 426 BRU --*FATAL*-- Unsupporded structure level Die Dateistruktur der Eingabeplatte wird von BRU nicht unterstuetzt. BRU --*WARNING*-- VBN not in file Es wurde ein Dateikennzeichen erkannt, das groesser ist als das groesste Dateikennzeichen (File- ID) in der Indexdatei. Diese Datei wird ignoriert, weil die UFD- Eintragung verstuemmelt ist. BRU --*FATAL*-- verify lost Waehrend einer Pruefoperation bei einer Sicherung von Platte auf Band hat BRU die Synchronisation zwischen Platte und Band verloren, weil die Bandposition verlorengegangen ist oder die Platte wieder eingegliedert wurde und waehrend der Sicherungsoperation veraendert wurde. BRU --*FATAL*-- Volume not backup disk Die eingegliederte Platte enthaelt keinen von BRU erstellten Sicherungssatz. BRU --*FATAL*-- Volume not backup tape Das Band ist kein durch BRU erstelltes Band oder bei einer /APPEND- Operation ist das Band nicht richtig positioniert. BRU --*FATAL*-- Volume not ready Das angegebene Geraet ist nicht bereit. BRU --*FATAL*-- Volume write locked Das Ausgabegeraet ist schreibgeschuetzt. BRU --*FATAL*-- Wrong backup set Bei einer Wiedereinlagerungsoperation von einem Bandsatz hat BRU ein Band erkannt, welches nicht zum Sicherungssatz gehoert. BRU --*FATAL*-- Wrong input volume label Der Eingabedatentraegername entspricht nicht dem Namen, der beim Schalter /INVOLUME angegeben wurde. 427 20. Plattenformatisierungsprogramm FMT 1630 (OMEX) -------------------------------------------------- 20.1. Vorbemerkungen -------------------- Das Plattenformatisierungsprogramm FMT (Disk Volume Formatter) formatisiert und prueft Datentraeger vom Typ DK:, DM:, und DY:. Folgende Funktionen werden durch FMT ausgefuehrt: - Schreiben eines kompletten Kopfsatzes fuer jeden Sektor - Pruefen des Adressinhaltes von jedem Kopfsatz des Sektors - Festlegen der Aufzeichnungsdichte fuer DY: - Festlegen einer Fehlergrenze fuer den zu formatisiernden Da- tentraeger - Abarbeiten der BAD-Task nach dem Formatisieren 20.2. Kommandosyntax -------------------- Alle FMT-Kommandos werden nach folgendem allgemeinen Kommandofor- mat eingegeben: >FMT ddn:[/switch1.../switchn] ddn : dd ist der physische Geraetename des Datentraegers, der formatisiert werden soll und n ist die Geraetenummer. /switch : Schalter, der die Kommandozeile modifiziert. Nach dem Start von FMT wird folgende Meldung ausgegeben: **WARNING-Data will be lost on ddn:** Continue?[Y or N] Bei Eingabe von Y werden alle Daten geloescht und der Datentrae- ger neu formatisiert. FMT gibt die Mitteilung aus: Start formatting Bei Eingabe von N wird die Arbeit von FMT abgebrochen. 20.3. Schalterbeschreibung -------------------------- 20.3.1. Aufrufen der BAD-Task (/BAD) ------------------------------------ Mit dem BAD-Schalter wird spezifiziert, dass nach der Abarbeitung von FMT automatisch das Dienstprogramm BAD aufgerufen wird, um fehlerhafte Bloecke zu lokalisieren. Das Dienstprogramm BAD muss im Betriebssystem installiert sein. Das Kommandoformat lautet: FMT>ddn:/BAD 428 20.3.2. Festlegen der Aufzeichnungsdichte (/DENSITY) ---------------------------------------------------- Dieser Schalter gilt nur fuer DY-Geraete. Er legt die Aufzeich- nungsdichte fuer diese Geraete fest. Doppelte oder einfache Auf- zeichnungsdichte sind moeglich. Der Standardwert ist die einfache Aufzeichnungsdichte. Das Kommandoformat fuer diesen Schalter lautet: FMT>DYn:/DENS=HIGH (oder DOUBLE) FMT>DYn:/DENS=LOW (oder SINGLE) 20.3.3. Festlegen einer Fehlergrenze (/ERL) ------------------------------------------- Dieser Schalter legt eine Fehlergrenze fuer den zu formatisieren- den Datentraeger fest. Wird die angegebene Fehlergrenze erreicht, wird eine Fehlermeldung ausgegeben und die Operation abgebrochen. Der Standardwert betraegt 256. Gueltige Werte fuer n koennen zwi- schen 1 und 256 liegen. Das Kommandoformat lautet: FMT>ddn:/ERL=n 20.3.4. Unterdruecken des Vergleichslesens (/NOVERIFY) ------------------------------------------------------ Es wird kein Vergleichslesen der von FMT geschriebenen Vorsaetze fuer jeden Sektor durchgefuehrt. Das Kommandoformat lautet: FMT>ddn:/NOVERIFY 20.3.5. Vergleichslesen (/VERIFY) --------------------------------- Es wird ein Vergleichslesen der von FMT geschriebenen Vorsaetze fuer jeden Sektor durchgefuehrt. Dieser Schalter ist Standard. Das Kommandoformat lautet: FMT>ddn:/VE 20.3.6. Unterdrueckung von Terminalmeldungen (@Y) ------------------------------------------------- Bei der Arbeit mit einer Indirektkommandodatei und Angabe des /@Y-Schalters in dieser, werden von FMT keine Meldungen auf dem Terminal ausgegeben und es sind keine Anwenderreaktionen moeg- lich. Beispiel: >@FMT Es wird eine Indirektkommandodatei FMT.CMD aufgerufen. Diese ent- haelt z.B. fuer das Formatisieren von DK1: folgende Kommando- zeile: FMT DK1:/@Y Dadurch wird DK1: formatiert und der /@Y-Schalter unterbindet jegliche FMT-Meldung am Terminal bis zur Beendigung der Arbeit von FMT. Bei dieser Arbeitsweise muss FMT installiert sein. 429 20.4. Fehlermeldungen --------------------- Command I/O-error Bei der Kommandoeingabe trat ein E/A-Fehler auf. Kommando wiederholen. Command too long Das Kommando war laenger als 80 Zeichen. Kommando verkuerzt eingeben. Device does not support formatting Es wurde ein Geraetetyp angegeben, der nicht formatisiert wer- den kann. Kommando mit richtiger Geraetebezeichnung wiederholen. Device driver missing Der Geraetedriver ist nicht geladen. Driver laden und Kommando wiederholen. Device not in system Das angegebene Geraet gehoert nicht zur Anlagenkonfiguration. Kommandozeile mit richtiger Geraetebezeichnung wiederholen. Device not ready Das Geraet ist nicht bereit. Betriebsbereitschaft herstellen und Kommando wiederholen. Device offline Das Geraet ist dem System nicht bekannt. Betriebsbereitschaft herstellen oder Kommando mit berichtigter Geraetebezeichnung wiederholen. Device write locked Das Geraet ist fuer das Schreiben gesperrt. Aufheben der Schreibsperre und Kommando wiederholen. Error limit exceeded Die Anzahl der Fehler, die FMT gefunden hat, uebersteigt die Anzahl der mit /ERL spezifizierten oder der Standardwert von 256 wurde ueberschritten. Es ist eine hoehere Fehlergrenze bei Verwendung des /ERL- Schalters anzugeben oder der Datentraeger ist defekt. Error reading data Beim Versuch, Daten von einer Platte zu lesen, trat ein Fehler auf. FMT wiederholt die Operation und setzt die Pruefung fort. Error reading header Beim Lesen eines Vorsatzes waehrend einer Pruefoperation trat ein Fehler auf. FMT wiederholt die Operation und setzt die Pruefung fort. Error setting diskette density Ein Geraet vom Typ DY: konnte nicht formatisiert werden. Pruefung der Kommandosyntax auf gueltige Aufzeichnungsdichte. 430 Error writing data oder Error writing header Beim Schreiben von Vorsaetzen ist ein Fehler aufgetreten. FMT wiederholt die Operation und setzt die Pruefung fort. Failed to attach device Das Geraet konnte von FMT fuer das Formatisieren nicht ange- schlossen werden. Ueberpruefen, ob eine andere Task das Geraet angeschlossen hat. Fatal hardware error Es ist ein Hardwarefehler aufgetreten. Fehlerursache beseitigen und Kommando wiederholen. Header compare error Beim Vergleichslesen der Vorsaetze ist ein Fehler aufgetreten. FMT wiederholt die Operation und setzt die Pruefung fort. Invalid switch Es wurde ein unzulaessiger Schalter angegeben. Kommando mit richtiger Syntax wiederholen. Privilege violation Es wurde ein Geraet angegeben, welches einem anderen Nutzer zugeordnet ist. Kommando mit richtiger Geraetebezeichnung wiederholen. Syntax error Die Kommandozeile war syntaktisch falsch. Kommando mit richtiger Syntax wiederholen. Unable to run badblock utility In der Kommandozeile wurde der /BAD-Schalter angegeben, aber das Dienstprogramm BAD war nicht installiert. Das Dienstprogramm BAD ist nach dem Formatisieren einzeln ab- zuarbeiten. Unrecoverable error -n Ein E/A-Fehler (Fehlercode n) veranlasste FMT, die Operation abzubrechen. 431 21. Bildschirmorientierter Editor EDT 1630 (OMEX) ------------------------------------------------------ 21.1. Vorbemerkungen ----------------------- Das bildschirmorientierte Editionsprogramm EDT dient wie EDI und SLP zum Aufbereiten von Textdateien. Diese koennen eingegeben und korrigiert, mit anderen Dateien vermischt oder in mehrere Teile zerlegt werden. EDT ermoeglicht die Arbeit mit mehreren Dateien und mehreren benannten Puffern. Die Arbeit mit EDT erfolgt interaktiv ueber ein Bediengeraet. Die Benutzung von Makros, das sind Folgen von EDT-Kommandos, ist ebenfalls moeglich. Ausserdem koennen die verschiedenen Arbeitsmoeglichkeiten ange- zeigt und veraendert werden (SET- und SHOW-Kommandos, HELP- Funktion). Beim Kommando CHANGE wird die bildschirmorientierte Arbeitsweise eingeleitet. Hierbei kann der auf dem Bildschirm angezeigte Text direkt manipuliert werden. Die Funktionen werden ueber Funktions- tasten ausgeloest. 21.2 Aktivierung und Beendigung der Arbeit, Initialisierung ----------------------------------------------------------- EDT wird wie jedes Dienstprogramm mit dem Namen aufgerufen. Die komplette Aufrufzeile lautet wie folgt: EDT>[/schalter][ausgabedatei]=[eingabedatei][,initdatei] Jede Datei hat das Format dev:[g,m]name.typ;version Im einzeiligen Format muss mindestens die Eingabedatei angegeben werden. Im mehrzeiligen Format muss diese als erste Eingabe nach der Programmeldung eingegeben werden. 21.2.1. Eingabedatei --------------------- Fuer die Eingabedatei gelten folgende Standards: dev: Geraeteangabe in der Form dd[uu]:. Bei fehlender Angabe wird SY0: angenommen. [g,m]: UIC. Falls der UIC nicht angegeben wurde, wird der aktuelle Terminal-UIC angenommen. name: Dateiname, muss angegeben werden. .typ: Es wird kein Standard angenommen. version: Hoechste vorhandene Versionsnummer wird benutzt. Die angegebene Eingabedatei wird in den Textpuffer MAIN kopiert. Anschliessend wird die erste Zeile der Datei angezeigt. Durch einen Stern wird die Bereitschaft des EDT zur Uebernahme von Kommandos signalisiert. Ist die Datei noch nicht vorhanden, wird sie angelegt. Um Text in sie eingeben zu koennen, muss durch das Kommando I[NSERT] der Eingabemodus zur Texteingabe oder durch C[HANGE] der Bildschirm- modus eingeschaltet werden. 432 21.2.2 Ausgabedatei --------------------- Die Editionssitzung kann durch die Kommandos EXIT oder QUIT (siehe 21.7.) geschlossen werden. Bei Verwendung des Kommandos EXIT wird der Inhalt des Textpuffers MAIN in die Ausgabedatei uebertragen. Wird in der Aufrufzeile oder beim Beenden der Arbeit keine Ausgabedatei angegeben, gelten folgende Standards: dev: Geraet der Eingabedatei oder SY0: [g,m] UIC der Eingabedatei bzw. aktueller UIC name.typ wie bei der Eingabedatei version 1, wenn die Datei bisher nicht existierte, oder hoechste existierende Versionsnummer +1 Bei Verwendung des Kommandos QUIT wird die Editionssitzung ohne Uebertragung in die Ausgabedatei beendet. 21.2.3 Initialisierungsdatei ------------------------------ Um den Anforderungen bestimmter Nutzergruppen zu genuegen, kann beim Start des Editors eine Initialisierungsdatei abgearbeitet werden. Standardmaessig waehlt EDT die Datei SY:[aktueller_uic]EDTINI.EDT bzw. eine in der Aufrufzeile explizit angegebene Kommandodatei aus. Sie kann beliebige EDT-Kommandos enthalten. Gewoehnlich wird sie benutzt, um bestimmte Bedingungen fuer die Arbeit des EDT einzustellen (siehe 21.5., Setzen und Anzeigen von Arbeitsparametern). Um die Abarbeitung einer Initialisierungsdatei zu unterdruecken, muss EDT mit dem Schalter /NOCOMMAND aufgerufen werden. 21.2.4. Schalter ----------------- EDT kann mit verschiedenen Schaltern aufgerufen werden, die im folgenden beschrieben werden. Tabelle 62: EDT - Aufrufschalter -------------------------------------------------------------- | Schalter | Standard | betrifft | -------------------------------------------------------------- | /[NO]COMMAND | /COMMAND | Initialisierungsdatei 21.2.3.| | /[NO]JOURNAL | /JOURNAL | Protokolldatei 21.3. | | /[NO]RECOVER | /RECOVER | Restart mit Protokoll 21.3. | | /[-]RO | /-RO | Nur Lesen | -------------------------------------------------------------- Wenn eine Datei nur zum Lesen eroeffnet wird, bildet EDT weder eine Protokolldatei noch eine Ausgabedatei. Die entsprechende Eingabedatei kann nur gelesen werden. Beim Beenden der Editionssitzung muss EDT jedoch den Namen einer Ausgabedatei kennen; wenn er nicht explizit angegeben wurde, wird er in diesem Falle nicht automatisch erzeugt. Beim Abschluss mit EXIT gibt es in jedem Falle eine Fehlermeldung. 433 21.3. Sicherung der Arbeitsergebnisse ------------------------------------- Waehrend der Editionssitzung wird von EDT eine Protokolldatei gefuehrt, in die alle Aktionen eingetragen werden. Bei Abschluss der Arbeit mit EDT kann diese Protokolldatei durch Angabe des Schalters /SAVE im Abschlusskommando permanent gemacht werden. Als Name der Protokolldatei wird der Name der Ausgabedatei mit dem Dateityp .JOU benutzt. Die Protokolldatei kann z.B. zur Wiederholung der Editionssitzung benutzt werden, wenn Fehler aufgetreten sind, die das Abspeichern der Ausgabedatei verhindert haben. Schliesslich kann die Arbeit des EDT an einer Datei bei Netzaus- fall/Netzwiederkehr oder bei irrtuemlichem Abschluss mit QUIT/SAVE wiederholt werden. Nach Netzwiederkehr bzw. sofort nach Beendigung mit QUIT/SAVE wird EDT mit dem Schalter /RECOVER erneut gestartet. EDT wieder- holt die Arbeit an der Datei anhand der gespeicherten Protokoll- datei. Die Protokolldatei bleibt erhalten und wird in der neuen Editionssitzung fortgefuehrt. Die Benutzung der Protokolldatei ist aber auch moeglich, um bestimmte Aktionen rueckgaengig zu machen, die waehrend der Editionssitzung faelschlicherweise angewiesen wurden. Hierzu wird nach Beendigung der Editionssitzung mit QUIT/SAVE der Editor mit dem Schalter /NOJOURNAL fuer die Protokolldatei gestartet. Dadurch wird die Bildung einer neuen, nun untergeord- neten Protokolldatei verhindert. Nun kann die Protokolldatei editiert werden. Die Editionssitzung wird mit EXIT beendet. Nach dem erneuten Start des EDT mit dem Schalter RECOVER wird die eigentliche Datei mittels Protokolldatei bearbeitet. 21.4. Spezielle EDT-Begriffe ---------------------------- 21.4.1. Textpuffer ------------------ Bei Beginn der Arbeit eroeffnet EDT ausser dem Textpuffer MAIN, in den eine Kopie der Eingabedatei uebertragen wird, noch einen Puffer mit dem Namen PASTE. Er ist zum Zwischenspeichern von Textteilen bestimmt, die mit dem Kommando CUT oder APPEND abge- schnitten wurden und mit PASTE wieder angefuegt werden koennen. Der entsprechende Teiltext wird bei CUT in den geloeschten Puffer eingefuegt, bei APPEND an den Pufferinhalt angehaengt und ver- bleibt solange dort, bis er mit PASTE an anderer Stelle in den Hauptpuffer eingefuegt oder beim naechsten CUT-Kommando geloescht wird. Weitere Puffer koennen durch den Nutzer selbst eingerichtet werden, um Teile aus anderen Puffern aufzunehmen oder Text aus anderen Dateien zu speichern. Die Textpuffer werden durch EDT gebildet, wenn ein Puffername in einem Kommando angegeben wird. Der Name wird durch ein Gleich- heitszeichen oder durch das Schluesselwort BUFFER als Puffername qualifiziert und kann bis zu 30 alphanumerische Zeichen enthal- ten, wovon das erste ein Buchstabe sein muss. Die Groesse der Textpuffer, die EDT insgesamt bearbeiten kann, darf zusammen 250 000 Zeilen mit 80 Zeichen nicht ueberschreiten. Weitere Einschraenkungen koennen aus dem EDT zugewiesenen Arbeitsspeicherbereich auf dem Systemgeraet bzw. aus der Hauptspeichergroesse resultieren. 434 21.4.2. Geltungsbereiche von Kommandos -------------------------------------- EDT-Kommandos beziehen sich auf Zeilen im Textpuffer. EDT ordnet jeder Zeile in jedem Textpuffer eine Zeilennummer zu. Der Anfangswert und die Schrittweite koennen mit dem Kommando RESEQUENCE (siehe Abschnitt 21.7.24.) eingestellt werden. Ist kein Geltungsbereich angegeben, wird das eingegebene Kommando einmal auf die aktuelle Zeile angewendet. Der Geltungsbereich kann als einzelne Zeile oder als Zeilengruppe auf vielfaeltige Weise angegeben werden, wie aus den Tabellen 63 und 64 ersicht- lich ist. In den Tabellen umschliessen eckige Klammern Angaben, die wahl- frei sind. Tabelle 63: EDT - Einfache Zeilenangaben im Kommandomodus ------------------------------------------------------------ | Geltungsbereich | Bedeutung | ------------------------------------------------------------ | . | Aktuelle Zeile | | zahl[.zahl] | Zeile, die durch Zeilennummer gekenn- | | | zeichnet ist. | | 'zeichenkette' | Naechste Textzeile, in der zeichenkette| | "zeichenkette" | auftritt (Richtung Pufferende) | | | | | -'zeichenkette' | Letzte Textzeile vor der aktuellen Zei-| | -"zeichenkette" | le, in der zeichenkette auftrat (Rich- | | | tung Pufferanfang) | | | Ist zeichenkette leer, wird die zuletzt| | | verwendete zeichenkette wieder benutzt.| | | | | [zeile]+|-[zahl]| Relative Angabe der neuen Zeilennummer | | BEGIN | Erste Zeile des Textpuffers | | END | Leerzeile nach der letzten Zeile des | | | Textpuffers | | LAST | Letzte Zeile des zuvor benutzten Puf- | | | fers | | ORIGINAL zeile | zeile bezeichnet hier die Zeilennummer,| | | wie sie beim Aufruf von EDT fuer die | | | Datei vergeben wurde. Gilt auch nach | | | Neunumerierung. | ------------------------------------------------------------ 435 Um Gruppen von Zeilen zu bezeichnen, koennen einzelne Zeilenanga- ben kombiniert werden. zeile steht hierbei fuer eine einzelne Zeilenangabe, bereich fuer eine zusammengesetzte Zeilenangabe. Tabelle 64: EDT - Zusammengesetzte Zeilenangaben im Kommando- modus ------------------------------------------------------------ | Geltungsbereich | Bedeutung | ------------------------------------------------------------ | [zeile1]:[zeile2] | Alle Zeilen von zeile1 bis zeile2 | | oder | (einschliesslich) | | [zeile1] THRU | | | [zeile2] | | | | | | [zeile]#[zahl] | Angegebene zahl von Zeilen, begin- | | oder | nend mit zeile. | | [zeile]FOR[zahl] | | | | | | BEFORE | Alle Zeilen vor der aktuellen Zeile | | REST | Alle Zeilen einschliesslich der ak- | | | tuellen Zeile bis zum Ende des Puf- | | | fers. | | WHOLE | Gesamter Textpufferinhalt | ------------------------------------------------------------ | [=puffer][bereich]| Angabe bezieht sich auf puffer, nicht| | oder | auf Standardpuffer MAIN | | [BUFFER puffer] | | | [bereich] | | ------------------------------------------------------------ 21.4.3. Texteinheiten ----------------------- Bei Kommandos im gemischten Modus muss stets eine Texteinheit angegeben werden, auf die diese wirken sollen. Dieselben Textein- heiten gelten auch im Bildschirmmodus, werden aber dort gleich durch die Funktionstasten ausgewaehlt. Der Bezugspunkt ist jeweils die Kursorposition. Tabelle 65 und 66 erlaeutern die moeglichen Texteinheiten, wobei die natuerliche Arbeitsrichtung Dateianfang --> Dateiende zugrunde gelegt wird. Tabelle 65: EDT - Einfache Texteinheiten ------------------------------------------------------------ | Texteinheit | Bedeutung | ------------------------------------------------------------ | C | (Character) Einzelnes Zeichen | | W | (Word) Zeichenkette, die von Wort- | | | trennzeichen eingeschlossen ist. | | | Trennzeichen zaehlen als Worte! | | L | (Line) Textzeile zwischen zwei Zei- | | | lenendezeichen | | PAR | (Paragraph) Vom Nutzer zu definieren-| | | de Einheit zwischen Paragraphen- | | | trennzeichen. | | SEN | (Sentence) Vom Nutzer zu definierende| | | Einheit zwischen Satztrennzeichen. | | PAGE | (Seite) Vom Nutzer zu definierende | | | Einheit zwischen Seitenvorschub- | | | zeichen | ------------------------------------------------------------ 436 Die so angegebenen Texteinheiten enthalten ihre Trennzeichen nicht. Trennzeichen koennen mit entsprechenden SET-Kommandos (SET ENTITY) festgelegt und mit Show-Kommando (SHOW ENTITY) angezeigt werden (siehe Abschnitt 21.5.). Durch Vorsetzen des Buchstabens B (Beginning of) wird die Text- einheit modifiziert. BW bezeichnet z.B. die Zeichenkette vor dem Kursor bis zum Wort- anfang. Steht der Kursor auf einem Wortanfang, wird das vorher- gehende Wort ausgewaehlt. B kann mit allen Texteinheiten (ausser C) kombiniert werden und gilt dann im gleichen Sinne. Eine weitere Modifikation ist durch Vorsetzen des Buchstabens E (End of) moeglich. EL bezeichnet z.B. die Zeichenkette von der Kursorposition (einschliesslich) bis zum Zeilenende. Fuer die anderen Textein- heiten gilt E analog. Tabelle 66: EDT - Zusammengesetzte Texteinheiten ------------------------------------------------------------ | Texteinheit | Bedeutung | ------------------------------------------------------------ | NL | (Next Line) Zeichenkette vom Kursor | | | bis zum Beginn der naechsten Zeile. | | BR | (Beginning of Range) Gesamter Text | | | vor der Kursorposition bis zum Puf- | | | feranfang. | | ER | (End of Range) Gesamter Text von der | | | Kursorposition (einschliesslich bis | | | zum Pufferende. | | V | (Vertical) Beim Stellen des Kursors | | | wird die Spalte beibehalten. | | 'zeichenkette' | Argument bei Suchoperationen | | | Wird diese Angabe zusammen mit D oder| | | CUT verwendet, wird die Zeile anhand | | | zeichenkette aufgesucht, zeichenkette| | | wird geloescht. | | SR | (Select Range) Text zwischen der Mar-| | | kierung aus dem letzten SELECT und | | | der Kursorposition. | ------------------------------------------------------------ Durch die Vorzeichen + oder - wird die Richtung, in der die Operation ausgefuehrt werden soll, explizit angegeben. + (oder kein Vorzeichen) bezeichnet die natuerliche Arbeitsrich- tung Pufferanfang --> Pufferende. - bezeichnet die umgekehrte Arbeitsrichtung Pufferende --> Pufferanfang. Schliesslich kann noch ein Wiederholungsfaktor vor der Textein- heit angegeben werden. So bezeichnet z.B. +16L die naechsten 16 Zeilen. 437 21.5. Setzen und Anzeigen von Arbeitsparametern und Funktionen -------------------------------------------------------------- Im EDT gibt es die Moeglichkeit, mittels SET-Kommando Arbeitszustaende fuer alle Arbeitsmodi einzustellen, mittels SHOW-Kommando diese Zustaende anzeigen zu lassen und mit DEFINE KEY die Belegung der Funktionstasten zu bestimmen. Tabelle 67 gibt einen Ueberblick ueber die in SET- und SHOW- Kommandos moeglichen Bedingungen. Tabelle 67: EDT-Parameter bei SET und SHOW ----------------------------------------------------------------- |Parameter bei |Parameter bei |Bedeutung | | SET | SHOW | | ----------------------------------------------------------------- | - |BUFFER |Liste aller aktiven | | | |Puffer | |CASE |CASE |Gross/Kleinschreibung | |CURSOR |CURSOR |Kursorbewegung | |ENTITY |ENTITY |Trennzeichen fuer | | | |Texteinheiten | | - |KEY |Belegung von Funkions- | | | |tasten | |LINES | |Zeilenzahl auf Bild | |MODE | - |Grundzustand | |[NO]KEYPAD | - |Funktionsgrundzustand | |[NO]NUMBERS | - |Zeilennumerierung | |[NO]QUIET | - |Akustisches Signal | | | |bei Fehler | |[NO]TRUNCATE | - |Zeilenwiedergabe | |[NO]VERIFY | - |Ausgabe von Makros | |[NO]WRAP | - |Zeilenlaenge fuer | | | |FILL-Kommando | |SCREEN |SCREEN |Zeilenlaenge auf Bild | |SEARCH |SEARCH |Parameter fuer FIND | |TAB | - |Erste TAB-Position | |TERMINAL |TERMINAL |Terminaltyp | | - |VERSION |Versionsnummer | ----------------------------------------------------------------- 21.5.1. Erlaeuterung der SET- und SHOW-Parameter ------------------------------------------------ BUFFER ------ Kommando: SHOW BUFFER Die waehrend der Editionssitzung angelegten Puffer werden am Terminal angezeigt. Zu jedem Puffer wird die aktuelle Zeilenzahl angegeben. Der augenblickliche Arbeitspuffer wird durch ein Gleichheitszeichen vor dem Namen markiert. 438 CASE ---- Kommando: SET CASE {UPER | LOWER | NONE} SHOW CASE Durch SET CASE kann ausgewaehlt werden, welche Buchstaben auf dem Bildschirm markiert werden sollen. Bei UPPER werden die Grossbuchstaben, bei LOWER die Kleinbuchstaben durch ein Apostroph gekennzeichnet. Die Markierung wird nicht in die Ausgabedatei uebernommen. Standard ist NONE (keine Markierung). CURSOR ------ Kommando: SET CURSOR zeile1:zeile2 SHOW CURSOR Der Bereich fuer die Kursorbewegung wird festgelegt bzw. angezeigt. Die oberste Zeile des Bildschirms ist Zeile 0. zeile1 bezeichnet den Anfang, zeile2 das Ende des Bewegungsbereichs. Zeile 21 darf nicht ueberschritten werden. Wird der Kursor beim Editieren im Bildschirmmodus ueber den gesetzten Bereich hinausbewegt, wird der entsprechende Textausschnitt durch Rollen des Bildes veraendert. Standard ist 7:14. ENTITY ------ Kommando: SET ENTITY {WORD | SENTENCE | PARAGRAPH | PAGE} 'zeichenkette' SHOW ENTITY {WORD | SENTENCE | PARAGRAPH | PAGE} Die Trennzeichen fuer die entsprechenden vom Nutzer zu definierenden Texteinheiten koennen definiert bzw. angezeigt werden. Standardmaessig gelten folgende Trennzeichen: WORD (Wort) : Leerzeichen, TAB, , , SENTENCE (Satz): Punkt, Fragezeichen, Ausrufezeichen PARAGRAPH : doppeltes PAGE (Seite) : KEY --- Kommando: SHOW KEY {[GOLD] {n | CONTROL buchstabe} | GOLD zeichen Die fuer den Bildschirmmodus definierte Belegung der Funktionstasten wird angezeigt (siehe dazu 21.5.2., Belegung der Funktionstasten fuer den Bildschirmmodus). LINES ----- Kommando: SET LINES anzahl Die Anzahl der auf dem Bildschirm auszugebenden Zeilen wird fuer den Bildschirmmodus gesetzt. anzahl darf nicht groesser als 22 sein (siehe auch CURSOR). MODE ---- Kommando: SET MODE {LINE | CHANGE} In einer Initialisierungskommandodatei fuer EDT wird mit diesem Kommando der Anfangsarbeitsmodus festgelegt. LINE bezeichnet den Kommandomodus, CHANGE den Bildschirmmodus bzw. gemischten Modus (entsprechend [NO]KEYPAD). 439 [NO]KEYPAD ---------- Kommando: SET KEYPAD SET NOKEYPAD Der Modus, der nach Eingabe des CHANGE-Kommandos wirksam wird, wird mit diesem Kommando eingestellt. Ist KEYPAD gegeben, ist das der Bildschirmmodus, bei NOKEYPAD der gemischte Modus. [NO]NUMBERS ----------- Kommando: SET NUMBERS SET NONUMBERS Durch SET NONUMBERS kann die standardmaessige Ausgabe der Zeilennummern im Kommandomodus unterdrueckt werden. Das wird durch SET NUMBERS wieder rueckgaengig gemacht. [NO]QUIET --------- Kommando: SET QUIET SET NOQUIET Durch SET QUIET wird das akustische Signal bei Fehlern im Bildschirmmodus unterdrueckt. Standard ist NOQUIET. [NO]TRUNCATE ------------ Kommando: SET TRUNCATE SET NOTRUNCATE Im Zusammenhang mit der durch SET SCREEN bestimmten Zeilenlaenge fuer die Wiedergabe des Textes auf dem Bildschirm wird hiermit festgelegt, was mit den Zeichen geschehen soll, die ueber das Zeilenlimit hinausgehen. Bei TRUNCATE (Standard) werden die ueberzaehligen Zeichen nicht angezeigt. Die Zeile wird am rechten Rand markiert. Bei NOTRUNCATE werden die ueberzaehligen Zeichen auf der Folgezeile (und evtl. weiteren Zeilen) angezeigt. [NO]VERIFY ---------- Kommando: SET VERIFY SET NOVERIFY Zeilen aus Indirektkommandodateien bzw. Makros werden angezeigt, wenn VERIFY wirksam ist. Im anderen Falle (Standard) werden sie nicht wiedergegeben. [NO]WRAP -------- Kommando: SET WRAP n SET NOWRAP Mit SET WRAP n wird die Zeilenlaenge mit n Zeichen festgelegt. Wenn bei der Eingabe im Bildschirmmodus eine Zeile diesen Wert ueberschreiten wuerde, plaziert EDT automatisch die letzten Worte auf die naechste Zeile. Wenn die Eingabe nicht am Zeilenanfang erfolgt, kann der Wert n allerdings ueberschritten werden, weil die Zeichen vor Beginn der Eingabe nicht gezaehlt werden. Zusammen mit dem FILL-Kommando dient die durch n eingestellte Zeilenlaenge bei der Textbearbeitung zur Bestimmung der maximalen Wortanzahl pro Zeile. Dieser Zustand wird durch SET NOWRAP (Standard) wieder ausge- schaltet. 440 SCREEN ------ Kommando: SET SCREEN n SHOW SCREEN Die Wiedergabelaenge fuer die Zeilen wird bestimmt. Standard sind 80 Zeichen. In Abhaengigkeit von [NO]TRUNCATE koennen Zeichen ausserhalb des Anzeigebereichs auf Folgezeilen wiedergegeben werden. SEARCH ------ Kommando: SET SEARCH {GENERAL | EXACT} SET SEARCH {BOUNDED | UNBOUNDED} SET SEARCH {BEGIN | END} SHOW SEARCH Hiermit werden Festlegungen fuer die Art des Auffindens von Zeichenketten getroffen. GENERAL: Die Zeichenkette gilt als gefunden, wenn sie - unabhaengig von der Schreibweise - in allen Zeichen mit der Suchzeichenkette uebereinstimmt. EXACT: Auch die Schreibweise muss uebereinstimmen. BOUNDED: Suche nur bis zum naechsten Seitenendezeichen. UNBOUNDED:Suche ueber den gesamten Puffer. BEGIN: Der Kursor steht im gefundenen Feld am Anfang der Zeichenkette. END: Der Kursor steht am Ende der Zeichenkette. Standard sind GENERAL BEGIN UNBOUNDED, was mit SHOW SEARCH erfahren werden kann. TAB --- Kommando: SET TAB n SET NOTAB Die erste Tabulatorposition auf der Zeile wird neu festgelegt. Die uebrigen Positionen bleiben weiterhin auf Vielfachen von 8 Zeichenpositionen (weitere Informationen dazu siehe 21.7.29., Tabulationskommandos). TERMINAL -------- Kommando: SET TERMINAL {HCPY | VT52 | VT100} SHOW TERMINAL Normalerweise erhaelt EDT die Terminalparameter vom Betriebssystem. Dieser Typ kann mit SET TERMINAL veraendert werden. (Das Terminal K8911/17 wird von EDT wie VT100 behandelt.) VERSION ------- Kommando: SHOW VERSION Die Versionsnummer des EDT wird ausgegeben. 441 21.5.2. Belegung der Funktionstasten fuer den Bildschirmmodus ------------------------------------------------------------- Die Belegung der Funktionstasten fuer den Bildschirmmodus kann in den verschiedenen Arbeitsmodi erfolgen, und zwar im Kommandomodus mit dem Kommando DEFINE KEY, im Bildschirmmodus durch die Tastenkombination CTRL/K und im gemischten Modus mit dem Kommando DEFK. Die eingestellte Belegung kann im Bildschirmmodus durch die HELP-Funktion ermittelt werden. Im Kommandomodus wird das Kommando SHOW KEY (siehe 21.5.1.) benutzt. Die Funktion wird dann als Folge von Kommandos des gemischten Modus wiedergegeben. 21.5.2.1. DEFINE KEY und DEFK ----------------------------- Format der Anweisung: DEFINE KEY {[GOLD] {n | CONTROL x}| GOLD x as 'zeichenkette' Eine der in {} eingeschlossenen Alternativen muss ausgewaehlt werden. Die senkrechten Striche trennen die Alternativen. Das Auslassen des Schluesselwortes GOLD bewirkt die Definition (bzw. bei SHOW KEY die Anzeige) der Grundfunktion, die Angabe von GOLD die der Alternativfunktion der Funktionstaste. n bezeichnet eine Zahl. x bezeichnet einen Buchstaben. GOLD und CONTROL sind Schluesselwoerter. Die Zahlen n und Buchstaben x und ihre Zuordnung zu Funktionstasten am Bedienterminal K 8911 zeigt die folgende Tabelle. Die in der dritten Spalte aufgefuehrten Kommandos sind den Tasten als Standardfunktionen zugewiesen. Sie werden im Abschnitt 21.7., Beschreibung der Kommandos, erlaeutert. Tabelle 68: EDT - Standardbelegung der Funktionstasten im Bildschirmmodus ----------------------------------------------------------------- |Definitions- | Tasten | Kommando | |abgabe | | | ----------------------------------------------------------------- | 0 | | LINE | | 1 | | WORD | | 2 | | EOL | | 3 | | SUBS | | 4 | | ADV | | 5 | | BAC | | 6 | | CUT | | 7 | | PAGE | | 8 | <--/ (NL) | SECTION | | 9 | | APPEND | | 10 | | HELP | | 11 | | FNDNXT | | 12 | Pfeil aufw. | -v. | | 13 | Pfeil abw. | +v. | | 14 | Pfeil rechts | +c. | | 15 | Pfeil links | -c. | | 16 | | SELECT | | 17 | | DEL L | | 18 | | DEL W | | 19 | 1 | DEL C | | 20 | | | | 21 | 2 | ENTER | | 22 | | DEL - c | ----------------------------------------------------------------- 442 Tabelle 68: (Fortsetzung) ----------------------------------------------------------------- |Definitions- | Tasten | Kommando | |abgabe | | | ----------------------------------------------------------------- | GOLD 0 | | OPEN LINE | | GOLD 1 | | CHNGC | | GOLD 2 | | DEL EOL | | GOLD 3 | | SPECINS | | GOLD 4 | | BOTTOM | | GOLD 5 | | TOP | | GOLD 6 | | PASTE | | GOLD 7 | | COMMAND | | GOLD 8 | <--/ (NL) | FILL | | GOLD 9 | | REPLACE | | GOLD 10 | | HELP | | GOLD 11 | | FIND | | GOLD 12 | | | | GOLD 13 | | | | GOLD 14 | | | | GOLD 15 | | | | GOLD 16 | | RESET | | GOLD 17 | | UND L | | GOLD 18 | | UND W | | GOLD 19 | 1 | UND C | | GOLD 20 | | DEL L | | GOLD 21 | 2 | CHAR | | GOLD 22 | | OPEN LINE | ----------------------------------------------------------------- | CONTROL A | CTRL/A | TC. | | CONTROL D | CTRL/D | TD. | | CONTROL E | CTRL/E | TI. | | CONTROL H | CTRL/H | BL. | | CONTROL I | -->| | TAB | | CONTROL J | CTRL/J | DBW. | | CONTROL K | CTRL/K | DEFK. | | CONTROL L | CTRL/L | einfuegen | | CONTROL M | CTRL/M | einfuegen | | CONTROL R | CTRL/R | REFR | | CONTROL T | CTRL/T | TADJ | | CONTROL U | CTRL/U | DBL | | CONTROL W | CTRL/W | REFR | | CONTROL Z | CTRL/Z | EXIT | ----------------------------------------------------------------- 'zeichenkette' stellt die Befehlsfolge aus Kommandos des gemischten Modus dar, die der entsprechenden Taste oder Tastenkombination zugeordnet wird. In dieser Folge koennen mehrere Kommandos enthalten sein. Schliesst eine Folge mit einem Punkt, wird sie im Bildschirmmodus beim Betaetigen der Funktionstaste sofort ausgefuehrt. Fehlt der Punkt am Ende, wird der Befehl solange gespeichert, bis ein Kommando mit einem Punkt endet oder die Funktion ENTER ausgeloest wird, und dann erst ausgefuehrt. 443 Eine Kommandofolge kann ein Fragezeichen, gefolgt von einer Zeichenkette in Apostrophes, enthalten. Die so dargestellte Zeichenkettte wird bei der Ausfuehrung der Kommandofolge auf dem Terminal ausgegeben, um anzuzeigen, dass eine Eingabe erwartet wird. Damit erhaelt der Nutzer die Moeglichkeit, nach eigenem Wunsch oft benoetigte Ablaeufe Funktionstasten zuzuordnen, um die Arbeit des Bedieners zu rationalisieren. 21.5.2.2. CTRL/K ---------------- Im Bildschirmmodus erfolgt die Belegung der Funktionstasten nach Betaetigen der Tastenkombination CTRL/K interaktiv. Es erfolgt die Nachricht: Press the key you wish to define. Die entsprechende Funktionstaste ist zu betaetigen. Anschliessend erfolgt die Aufforderung: Now enter the definition terminated by ENTER> Nun sind nacheinander die schon definierten Standardfunktionstasten zu betaetigen. Die Eingabe ist mit 2 abzuschliessen. Zur Kontrolle wird die Anweisungsfolge in Form von Kommandos im gemischten Modus auf der letzten Bildschirmzeile wiedergegeben. In der Kommandofolge duerfen auch Steuerzeichen auftreten und die Kursortasten benutzt werden. Steuerzeichen werden in der im gemischten Modus ueblichen Form mit Circumflex ^ dargestellt (siehe 21.7.3., Einfuegen von Steuerzeichen). 21.6. Arbeitsmodi --------------------- Bei der Arbeit mit EDT koennen mehrere Arbeitsmodi unterschieden werden: - Kommandomodus (zeilenweise Verarbeitung) - Insertmodus - Bildschirmmodus (zeichenweise Verarbeitung) - gemischter Modus Im Kommandomodus koennen EDT-Kommandos eingegeben werden. Dieser Modus wird durch einen Stern am Zeilenanfang signalisiert. Das Umschalten in den Insertmodus erfolgt durch die Eingabe der Kommandos I[NSERT] oder R[EPLACE]. Der Kursor geht auf die naechste Zeile ueber, und die Eingabe des neuen Textes kann erfolgen. Als Zeilenende dient . Den Abschluss bildet die Kombination CTRL/Z am Zeilenanfang. Der Text wird vor (bei I) bzw. anstelle (bei R) der aktuellen Zeile eingefuegt. 444 Das Umschalten in den Bildschirmmodus oder in den gemischten Modus erfolgt durch das Kommando C[HANGE]. Der Bildschirmmodus erfordert spezielle Funktionstasten und ist deshalb nicht bei jedem Terminaltyp moeglich. Ist der Modus KEYPAD aber moeglich und gesetzt, wird nach Umschaltung ein Teil des Textpuffers in der Umgebung der aktuellen Zeile angezeigt, auf der der Kursor steht. Er wirkt nun als Zeichenzeiger. Das Zurueckschalten in den Kommandomodus erfolgt durch Eingabe der Kombination CTRL/Z. Beim gemischten Modus (NOKEYPAD gesetzt) wird ebenfalls der aktuelle Teil des Textpuffers angezeigt. Die Kommandos werden in ungekuerzter Form ohne Trennzeichen eingegeben, und auf dem Bildschirm werden alle Aktionen am Pufferinhalt sofort angezeigt. Das Zurueckschalten in den Komandomodus erfolgt durch Eingabe des Kommandos EX. 21.6.1. Kommandomodus ----------------------- Im Kommandomodus erfolgt das Editieren mittels Eingabe von EDT- Kommandos. Der Editor arbeitet zeilenweise. Der Kursor steht jeweils vor der aktuellen Zeile. Bei Eroeffnung der Datei wird die Zeile 1 der Datei automatisch angezeigt. Die Kommandos, die nun eingegeben werden, beziehen sich jeweils auf den Textpuffer MAIN und die aktuelle Zeile, wenn keine anderen Angaben ueber den Geltungsbereich gemacht werden (siehe Abschnitt 21.4.2., Geltungsbereiche von Kommandos). Alle Kommandos koennen im Kommandomodus in verkuerzter Form eingegeben werden. Folgende Funktionen sind moeglich: ---------------------------------- Einstelllen der aktuellen Zeile FIND, TYPE oder und Anzeige von Zeilen Geltungsbereich Loeschen von Zeilen DELETE Einfuegen von Zeilen INSERT Ersetzen von Zeilen REPLACE Loeschen eines Puffers CLEAR Verschieben von Textzeilen im Puffer bzw. in einen anderen Puffer - ohne Loeschen COPY - mit Loeschen MOVE Ersetzen von Zeichenreihen SUBSTITUTE SN Einfuegen von anderen Dateien INCLUDE Ausgabe von Zeilen auf andere Dateien PRINT, WRITE Zeilen neu numerieren RESEQUENCE Beenden der Arbeit des EDT - mit Abspeichern des Textpufferinhalts EXIT - ohne Abspeichern QUIT 445 21.6.2. Insertmodus --------------------- Der Insertmodus wird eingestellt, wenn das Kommando I[NSERT] eingegeben wird. Durch eine Geltungsbereichsangabe kann die aktuelle Zeile veraendert werden. Der Text wird vor der aktuellen Zeile eingefuegt. Nach Betaetigen der Taste wird der Kursor auf dem Bildschirm auf die naechste Zeile gestellt. Am Anfang jeder Zeile bleiben 16 Spalten fuer die Wiedergabe der Zeilennummer frei. Jede Zeile wird durch abgeschlossen. Das Eingabeende wird durch CTRL/Z erreicht. Danach geht EDT in den Kommandomodus zurueck. Im Insertmodus koennen Fehler in der augenblicklich eingegebenen Zeile mit der Taste beseitigt werden. Soll in einer schon beendeten Zeile korrigiert werden, ist die Eingabe abzuschliessen und die Zeile mittels anderer Kommandos etwa im Kommandomodus zu berichtigen. Der Insertmodus wird auch durch das Kommando REPLACE erreicht. Hierbei werden zusaetzlich die Zeilen im angegebenen Geltungsbereich geloescht. Die Einfuegung beginnt in der ersten Zeile des geloeschten Geltungsbereichs. Das Eingabeende wird hier ebenfalls durch CTRL/Z erreicht. Fuer die richtige Zeilennumerierung sorgt EDT automatisch durch Dezimalteilung zahl.zahl. 21.6.3. Bildschirmmodus ------------------------- Ist die Arbeitsweise Bildschirmmodus mit SET KEYPAD eingestellt, geht EDT nach Eingabe des Kommandos CHANGE in den Bildschirmmodus ueber. Auf dem Bildschirm wird ein Teil der Eingabedatei in der Umgebung der aktuellen Zeile abgebildet. Der Kursor steht auf dem ersten Zeichen der aktuellen Zeile. Jede Taste der Normaltastatur loest eine Eingabe aus. Der Text wird an der Kursorposition eingetragen, ohne den schon eingegebenen Text zu ueberschreiben. Die Anzeige erfolgt sofort. Andere als die Tasten der Normaltastatur loesen spezielle Editierfunktionen aus. Die meisten dieser Tasten sind doppelt belegt. Das Aktivieren der alternativen Funktionen geschieht durch vorheriges Betaetigen der Taste PF1 (GOLD-Funktion). In dieser Dokumentation wird die Standardbelegung der Funktionstasten beschrieben, wie sie bei der Systemgenerierung eingestellt ist. Jeder Nutzer hat die Moeglichkeit, die Zuordnung der Funktionen zu Tasten bzw. Tastenkombinationen zu veraendern (siehe Abschnitt 21.5.2., Belegung der Funktionstasten fuer den Bildschirmmodus). Die Arbeit im Bildschirmmodus wird durch CTRL/Z beendet. Ueber die Standardbelegung der Tasten gibt Tabelle 68 Auskunft. 446 Im Bildschirmmodus sind folgende Funktionen moeglich: ----------------------------------------------------- Arbeitsrichtung bestimmen vorwaerts ADVANCE rueckwaerts BACK Texteinheit festlegen Zeichen CHAR Wort WORD Zeile LINE nach Markierung SELECT vor der auszufuehrenden Funktion Kursor positionieren Pufferende BOTTOM Pufferbeginn TOP Seitenanfang PAGE Zeilenende EOL Wortende EOW Loeschen Zeichen Wort DEL W Zeile DEL L, DEL EOL Abschnitte CUT Wiederherstellen Zeichen UND C Wort UND W Zeile UND L Abschnitt PASTE Aufsuchen anhand Suchbegriff FIND FNDNXT Auffuellen der Textzeilen FILL Textteile verschieben CUT PASTE APPEND REPLACE Kommandos aus anderen Modi eingeben COMMAND Steuerzeichen einfuegen SPECINS Beenden der Arbeit im Bildschirmmodus CTRL/Z 447 21.6.4. Gemischter Modus ------------------------ Der gemischte Modus wird durch das CHANGE-Kommando eingestellt, wenn die Grundeinstelung NOKEYPAD gegeben ist. Im oberen Teil des Bildschirms wird der gerade zu bearbeitende Teil der Eingabedatei abgebildet. Auf der letzten Bildschirmzeile koennen Kommandos des gemischten Modus eingegeben werden. Diese duerfen im Unterschied zum Kommandomodus nicht abgekuerzt werden. Sie beziehen sich auf Texteinheiten, wie sie im Abschnitt 21.4.3. beschrieben sind Nach Eingabe eines Kommandos wird seine Wirkung auf den Textpuffer sofort auf dem Bildschirm dargestellt. Durch EX erfoglt der Uebergang zum Zeilenmodus, waehrend durch QUIT die Arbeit von EDT abgebrochen wird. Folgende Funktionen sind im gemischten Modus moeglich: ------------------------------------------------------ Arbeitsrichtung bestimmen vorwaerts ADV rueckwaerts BACK Aktuelle Zeile veraendern siehe Texteinheiten Loeschen D Einfuegen I Ersetzen R Textteile verschieben CUT PASTE APPEND Kommandos aus dem Zeilenmodus eingeben EXT Steuerzeichen einfuegen ASC ^ Text veraendern S SN Arbeit im gemischten Modus beenden EX 21.7. Beschreibung der Funktionen --------------------------------- In diesem Abschnitt werden die Kommando zur Ausfuehrung einzelner Funktionen in alphabetischer Reihenfolge beschrieben. Dabei werden die Unterschiede in der Benutzung der Kommandos in den einzelnen Modi besonders gekennzeichnet. Bei der Uebersicht werden folgende Darstellungen benutzt: < > fuer Funktionstasten [ ] wahlfreie Angaben [wdh] Wiederholungsfaktor 448 ----------------------------------------------------------------- 21.7.1. ADVANCE - Arbeitsrichtung vorwaerts ----------------------------------------------------------------- Kommandomodus : + bei der Geltungsbereichsangabe Bildschirmmodus : ADVANCE () gemischter Modus: ADV Wirkung: -------- Das Kommando wird in Richtung auf das Pufferende im Geltungsbereich ausgefuehrt. Im Bildschirmmodus und im gemischten Modus bleibt diese Arbeitsrichtung bis zu einer Neueinstellung erhalten. Die Arbeitsrichtung gilt fuer alle richtungsgebundenen Aktionen (also auch fuer DELETE, FIND, SUBSTITUTE usw.). ----------------------------------------------------------------- 21.7.2. APPEND - Text an Puffer anfuegen ----------------------------------------------------------------- Kommandomodus : siehe COPY und MOVE Bildschirmmodus : APPEND (), nachdem mit SELECT entspr. Text markiert wurde gemischter Modus: [+|-] [wdh] APPEND [+|-] [texteinheit] [= puffer] Wirkung: -------- Im Bildschirmmodus wird zunaechst eine Texteinheit mittels SELECT-Funktion () markiert (siehe 21.7.27.). Anschliessend wird dieser Teil durch Druecken der Funktionstaste aus dem aktuellen Puffer entfernt und an das Ende des Puffers PASTE angefuegt. Im gemischten Modus ist eine explizite Pufferangabe moeglich. Standard ist auch hier der Puffer PASTE. (vergleiche CUT, 21.7.11.) ----------------------------------------------------------------- 21.7.3. ASC, SPECINS und ^-Einfuegen von Steuerzeichen ----------------------------------------------------------------- Bilschirmmodus : n (n dezimal) gemischter Modus : n ASC (n dezimal) [wdh] ^x (x alphabetisch) Wirkung: -------- Das Zeichen des KOI7-Codes, dessen dezimale Repraesentation n ist, wird an der Kursorposition in den Text eingefuegt. Dieselbe Wirkung wird mit ^x erreicht. Tabelle 69 gibt den Zusammenhang zwischen KOI7-Zeichen, n und x wieder. 449 Tabelle 69: EDT - Ausgewaehlte Steuerzeichen ----------------------------------------------------------------- |Zeichen | dezimal | ^x | Zeichen | dezimal | x^ | ----------------------------------------------------------------- |NUL | O | | NAK | 21 | u | |SOH | 1 | A | SYN | 22 | v | |STX | 2 | B | ETB | 23 | w | |ETX | 3 | C | CAN | 24 | x | |EOT | 4 | D | EM | 25 | y | |ENQ | 5 | E | SUB | 26 | z | |ACK | 6 | F | ESC | 27 | | |BEL | 7 | G | FS | 28 | | |BS | 8 | H | GS | 29 | | |HT | 9 | I | RS | 30 | | |LF | 10 | J | US | 31 | | |VT | 11 | K | SP | 32 | | |FF | 12 | L ------------------------------------ |CR | 13 | M |Bemerkung: Die uebrigen Zeichen | |SO | 14 | N |---------- der Codetabelle koennen| |SI | 15 | O |entspr. durch Dezimalrepraesen- | |DIE | 16 | P |tation dargestellt werden. | |DC1 | 17 | Q |^x ist nur fuer x = {A...Z} | |DC2 | 18 | R |moeglich. | |DC3 | 19 | S | | |DC4 | 20 | T | | ----------------------------------------------------------------- ----------------------------------------------------------------- 21.7.4. BACK - Arbeitsrichtung rueckwaerts ----------------------------------------------------------------- Kommandomodus : - bei der Bereichsangabe Bildschirmmodus : BACK () gemischter Modus: BACK Wirkung ------- Das Kommando wird in Richtung auf den Pufferanfang ausgefuehrt. Im Bildschirmmodus und im gemischten Modus bleibt diese Arbeitsrichtung bis zu einer Neueinstellung erhalten. Die Arbeitsrichtung gilt fuer alle richtungsgebundenen Aktionen. ----------------------------------------------------------------- 21.7.5. BOTTOM - Pufferende einstellen ----------------------------------------------------------------- Kommandomodus : Geltungsbereich END Bildschirmmodus : BOTTOM ( ) gemischter Modus: Texteinheit ER Wirkung ------- Der Kursor wird vor das Ende des Puffers gestellt. Im Kommandomodus ist das die letzte Zeile, sonst das letzte Zeichen. 450 ----------------------------------------------------------------- 21.7.6. CHANGE - Modus umschalten ----------------------------------------------------------------- Kommandomodus : C[HANGE] [bereich] Wirkung ------- In Abhaenigkeit von den Bedingungen KEYPAD bzw. NOKEYPAD wird zum Bildschirm- bzw. gemischten Modus umgeschaltet. [bereich] gibt die wahlweise Zeile an, auf die dabei der Kursor gestellt wird. Das Zurueckschalten in den Kommandomodus geschieht mit CTRL/Z im Bildschirmmodus bzw. durch die Eingabe von EX im gemischten Modus. ----------------------------------------------------------------- 21.7.7. CHANGE CASE - Vertauschen von Gross- und Kleinbuchstaben ----------------------------------------------------------------- Bildschirmmodus : CHNGC ( ) gemischter Modus: CHGC [texteinheit] Wirkung: -------- Die Schreibweise innerhalb der ausgewaehlten Texteinheit wird umgekehrt. Es werden nur alphabetische Zeichen betroffen. Ist keine Texteinheit ausgewaehlt, wird das Zeichen an der Kursorposition vertauscht. Ist eine Texteinheit durch SELECT vorher markiert worden, wird die gesamte Texteinheit bearbeitet. ----------------------------------------------------------------- 21.7.8. CLEAR - Puffer loeschen ----------------------------------------------------------------- Kommandomodus : CL[EAR] puffer Wirkung: -------- Der Inhalt des angegebenen Puffers wird geloescht. ----------------------------------------------------------------- 21.7.9. COMMAND, EXT-Kommando aus anderem Modus ----------------------------------------------------------------- Bildschirmmodus : COMMAND ( ) gemischter Modus : EXT kommando Wirkung: -------- Im Bildschirmmodus wird zwischenzeitlich zum Kommandomodus zurueckgeschaltet. Auf dem Bildschirm erscheint die Aufforderung Command: worauf ein Kommando erwartet wird. 451 Um das Kommando auszufuehren, ist die Tastenkombination <2> (Funktion ENTER) zu druecken. Anschliessend ist der Bildschirmmodus wieder aktiv. Wird allerdings EX oder QUIT als Kommando verwendet, dann ist die Arbeit des Editors beendet. Im gemischten Modus kann die Eingabe eines Kommandos aus dem Kommandomodus mit EXT eingeleitet werden. Der Rest der Zeile wird als Kommando interpretiert. ----------------------------------------------------------------- 21.7.10. COPY - Textteile kopieren ----------------------------------------------------------------- Kommandomodus : CO[PY] [bereich 1] TO [bereich 2] [/QUERY] [/DUPLICATE:n] Bildschirmmodus :} siehe APPEND bzw. CUT gemischter Modus:} und PASTE Wirkung: -------- EDT kopiert alle Zeilen von bereich 1 in bereich 2. Diese Bereiche koennen sich im selben oder in verschiedenen Puffern befinden. An der urspruenglichen Stelle wird der Text nicht geloescht (vgl. MOVE). Hinweis: Um Texte aus einer anderen Datei zu kopieren, wird ------- das Kommando INCLUDE benutzt. Standard fuer bereich 2 ist die aktuelle Zeile. Nach der Operation ist die erste Zeile von bereich 2 aktuelle Zeile. /QUERY veranlasst, dass die Operation fuer jede Zeile erst bestaetigt werden muss. Auf die Zeilennummer und das