[Chaos CD]
[HaBi 1]    IBM Grossrechner: Time Sharing, Option TSO
[Gescannte Version] [ -- ] [ ++ ] [Suchen]  

 

IBM Grossrechner: Time Sharing, Option TSO

Dieses Kapitel behandelt die Datenstruktur und die Befehle der TSO (Time Sharing Option) des IBM Betriebssystems OSIMVS. Viele Sachen sollten auch für die Siemens Systeme mit BS3000 und TSS (Time Sharing System) nützlich sein.
1. Betriebssysterne

Unter IBM Grossrechner werden hier Computer der Serien /360, /370, 303x und 308x verstanden (Reihenfolge entspricht historischer Entwicklung), Für diese Rechner gibt es eine Reihe von Betriebssystemen: DOS für kleine Systeme (bis ca. 1 Mbyte Hauptspeicher) und OS für die Großen. OS bzw. speziell OS/MVS ist das von IBM am stärksten unterstützte Produkt. Um alten Kunden das Umsteigen von DOS auf MVS (Multiple Virtuell Storage) zu erleichtern, wurde das System VM (Virtuell Machine) geschaffen. VM erlaubt es, eine physikalische Maschine in mehrere logische aufzuteilen und auf jeder ein anderes Betriebssystem laufen zu lassen (wie z.B. DOS und MVS).

2. Betriebsarten

Programme können in zwei verschiedenen Umgebungen ablaufen: Entweder interaktiv am Terminal oder als Batch Job. Während der Entwicklung des Systems /360 wurde zum Testen die Job-Control-Language (JCL) entwickelt. Da IBM es bis heute nicht geschafft hat, die geplante benutzerfreundliche Steuersprache zu implementieren, wird JCL immer noch benutzt, um die Verarbeitung von Batch Jobs zu kontrollieren. Da dieses Kapitel sich NICHT mit Batch Jobs beschäftigt, wird auf JCL hier nicht weiter eingegangen. Zum interaktiven Arbeiten wird unter VM das CMS (Conversational Monitor System) und unter MVS die TSO (Time Sharing Option) benutzt. Durch einige unglückliche Design Entscheidun gen ist CMS so anwendungsfreundlich geworden, daß einige Benutzer beim Umsteigen von DOS zu MVS bei VM hängengeblieben sind und nun ihre Anwendungen unter VM fahren. Am meisten installiert ist allerdings das TSO System unter MVS.

3. Dateistruktur

DieserAbschnitt beschreibt die Dateistruktur im Betriebssystem OS/MVS.
Dateinamen
Jede Datei besitzt einen Namen. Jeder Name besteht aus einem oder mehreren Feldern. Jedes Feld besteht aus 1-8 alphanumerischen Zeichen. ' Dollar, § Paragraph und ' Nummernzeichen werden zu den Buchstaben gezählt. Jedes Feld beginnt mit einem Buchstaben. Felder werden durch Punkte voneinander getrennt. Die maximale Länge beträgt 44 Zeichen (einschließlich Punkte).

Extensions

Per Konvention bestehen Dateinamen oft aus: User Name, Datei Name und Anhang (Extension). Der Anhang bezeichnet dann den Typ der Datei. Oft benutzte Extensions sind z.B.:
ASM - Assembler Source
CLIST - Mit EXEC Befehl ausführbare TSO Kommandos
CNTL - Batch JOB: JCIL. Wird mit SUBMIT Kommando gestartet
DATA - Grol3geschriebener Text
FORT - FORTRAN Source
LIST - Listings
LOAD - Mit CALL Befehl ausf0hrbare Programme
OBJ - Objekt Module. Ausgabe vom Compiler, Eingabe vom Linker
PLI - PL/1 Source
TEXT - Text mit kleinen und großen Buchstaben

Dateinamen werden in TSO in Apostrophen eingegeben. Beginnt der Dateiname mit dem User Namen, unter dem man sich eingeloggt hat, dann kann man Apostophe, den User Namen und den ersten Punkt weglassen.

Beispiele: 'MEYER.PASSWORD.ANALYSE.ASM'oder GAMES.LOAD

Units

Dateien können sich auf verschiedenen Speichermedien befinden: Platten (DISK), Trommeln (DRUM), Massenspeicher (MSS), Bänder (TAPE) etc. MSS (Mass Storage Systems) sind Archive mit vielen Magnetbandpatronen, die automatisch geladen und entladen werden können. Auf 1 Patrone paßt ca. 1/2 Platte. Zum Bearbeiten werden Dateien auf sogenannte Staging Disks geladen und hinterher wieder zurückgeschrieben. Einfacher und schneller ist es, mit Hilfe des HSM (Hieraical Storage Manager) die Dateien erst auf normale Platten zu kopieren und später wieder ins MSS zurück zu migrieren (Kommandos HRECALL und HMIGRATE). An Stelle der genauen Gerätebezeichnungen lassen sich an vielen Stellen die allgemeinen Namen TAPE für alle Bandeinheiten und SYSDA für alle Plattenspeicher verwenden. Unter TSO ist normalerweise nur der Zugriff auf Plattendateien möglich.

Catalog

Die Dateinamen und Dateiattribute werden bei Banddateien in sogenannten Header und Trailer Labels und bei Plattendatein im VTOC gespeichert. Jede Platte besitzt ein eigenes VTOC (Volume Table Of Contents). Auf einer Platte kann jeder Name nur einmal existieren. Um den Zugriff zu erleichtern, gibt es auch noch einen Katalog. In ihm stehen Dateinamen und wo sich die jeweilige Datei befindet (Gerätetyp und Gerätebezeichnung (VOLSER oder Volume Serial). Gibt es im System mehrere Dateien gleichen Namens (z.B. auf verschiedenen Platten oder auf Platte und auf Band), kann nur eine davon im Katalog stehen. Es kann also auch unkatalogisierte Dateien geben, Genauso ist es möglich, eine nicht existierende Datei im Katalog einzutragen.

Attribute (Data Set Control Block, DCB)

Jede Datei besitzt eine Reihe von Attributen. Sie werden im VTOC oder im Headerlabel gespeichert- Hier werden nur die wichtigsten besprochen: Dataset Organization (DSORG): Die meisten Dateien sind Physical Sequential (PS), Direct Access (DA) oder Partitioned Organized (PO). Ober Partitioned Datasets wird weiter unten noch gesprochen. Direct Access ist auch bei einigen PS Dateien möglich. Weiter gibt es noch Index Sequential (IS) und Virtual Sequential (VS) Dateien, auf die aber nur mit speziellen Programmen zugegriffen werden kann.
Record Format (RECFM): Es gibt Dateien mit fester (F), variabler (V) und undefinierter Record Größe. Feste und variabel lange Records können geblockt werden (FB und VB). Für FB Dateien gibt es ein Standard Format (FBS), bei dem keine kurzen Blöcke im Inneren der Datei vorkommen können (für Direct Access). Für VB Dateien gibt es die Form VBS- Hier können logische Blöcke Zylindergrenzen überlappen. Ein angehängtes A oder M bedeutet ASA oder Maschinensteuerzeichen in der ersten Spalte (für Zeilen- und Seitenvorschub). Beim Record Format 'Undefined' ist ein Record ein Block. Logical Record Length (LRECL): Dies ist die Grösse eines Records bei 'Fixed Length' Dateien. Bei V(BS) Dateien ist es die maximale Länge und bei U Format uninteressant.
Blocksize (BLKSIZE). Die Grösse eines Blocks. Sie muss bei F(BS) Dateien ein Vielfaches von LRECL sein. Bei V(BS) und U Dateien die maximale Grösse eines Blocks.

Partitioned Datasets

Ein Datensatz ist immer mindestens eine Spur lang. Deswegen wurde die Partitioned Dataset Organization (DSORG=PO) eingeführt. Ein solcher Datensatz besteht aus einem Directory und durch EOFs (End Of File) getrennte Member. Diese Member können wie normale Dateien mit den Attributen der PO Datei benutzt werden. Hierfür wird an den Dateinamen der Name des Members in Klammern angefügt. Z.B:
'MEYER.TEST.PLI(BEISPIEL)'

Schutzmechanismen

Dateien können auch gegen Zugriff geschützt werden. Dies wird durch Vergabe von Passwörtern erreicht. Dieses Passwort muss bei jedem Öffnen der Datei dem System mitgeteilt werden. Es ist Schutz gegen Beschreiben (WPWD) und sowohl gegen Schreiben als auch Lesen (RPWD) möglich. Unter TSO wird der Benutzer gefragt, wenn er das Passwort nicht mitgeliefert hat. Im Batch jedoch wird der Operator gepromptet, da es keine Möglichkeit gibt, das Passwort in der JCL mitzuliefern. Da der Operator das Passwort nicht weiss, werden nur die wenigsten Dateien so geschützt (zumindest gegen Lesen). Die Passwörter stehen in der (normalerweise) geschützten Datei'PASSWORD'. Zusätzlich wird der Zugang zum TSO durch ein User Passwort geschützt. Dieses steht zusammen mit den durch das PROFILE Kommando veränderbaren Parametern im 'SYS1.UADS' (User Attribute Dataset). Diese Datei wird mit dem nur für einige User zugänglichern ACCOUNT Kommando gelesen und geändert.
Ein weiteres Schutzinstrument, das allerdings primär zum Finden von Fehlern gedacht ist, ist das Auditing. Auf der Master Konsole, die beim Einsatz von JES (Job Entry Subsystem) allerdings oft nicht besetzt ist, erscheint jedes Ein- bzw. Ausloggen eines Users und jeder Fehlversuch bei der Passworteingabe (das Passwort selbst erscheint aber nicht). Alle Konsolemeldungen werden in einem Log gespeichert. Zusätzlich wird jedes öffnen und Schliessen einer Datei (u.v.m) von SMF (System Measurement Facility) festgehalten. Es ist also nachvollziehbar, wenn sich User oder Jobs merkwürdig Verhalten. Diese Logs werden i.A. jedoch nicht zur Analyse von versuchten oder erfolgreichen'Einbrüchen' benutzt. Anders sieht es mit den RACIF (siehe unten) Audit Dateien aus. In besonders gefährdeten Bereichen gibt es einen speziellen Auditor, der z.B. die Systemprogrammierung überwachen soll,
Ein sehr viel stärkerer Schutz als durch den OS Passwortschutz kann(!) durch den Einsatz spezieller Software wie SECURE oder RACF (Resource Access Control Facility) erreicht werden. RACF (das ist wohl das beste zur Zeit) bietet nicht nur den Schutz von einzelnen Dateien, sondern überwacht auch Supervisor Calls (SVCs), Jobklassen, Geräteeinheiten u.v.m. Es ermöglich beispielsweise sehr flexible Anforderungen an die Passwörter zu stellen. Beispiel: Mindestens 5, höchstens 7 Zeichen. Das 1., 3. und 5. ein Buchstabe. Spätestens nach 20Tagen oder 5 Fehleingaben muss das Passwort geändert werden. (Beispiel Ende). Die Existenz der Datei 'SYS1.RACF' deutet auf die Installation von RACIF hin. Der Schutzumfang ist aber von System zu System recht unterschiedlich. Auch schaffen es viele Installationen nicht, ihre innerbetrieblichen Abläufe auf ein Datenschutzsystern abzustellen ("Wir haben alles geschützt, bis auf die Systemdatein. Das ist ein Schutzumfang von ca 90%," Haha!). Und letzten Endes hilft kein technisches System gegen Sccial Engineering.

Data Definition Names (DDNAME)

Programme greifen nicht über den Dateinamen sondern über einen symbolischen File Namen (auch DDNAME genannt) auf eine Datei zu. Dies erlaubt es, mit einem Programm auf verschiedenen Dateien zu arbeiten, ohne das Programm zu ändern und neu übersetzen zu müssen. Das dynamische Allozieren von Dateien ist im OS erst seit der Einführung von MVS möglich. Die Verknüpfung von DDNAME und DSNAME geschieht in der JCL mit dem DD (Data Definition) Befehl und in TSO mit dem ALLOC Kommando. Oft benutzte DDNamen sind:
SYSIN - Eingabe
SYSPRINT - Ausgabe
SYSTERM - kurze Ausgabe aufs Terminal, Fehlermeldungen
FT05F001 Fortran Eingabe (FORTRAN: READ (5, xxx) a, b, c)
FTO6F001 Fortran Ausgabe (FORTRAN: WRITE (6, xxx) a,b, c)
FT07F001 - Fortran Stanzer (veraltet)

Stirbt ein Programm mit einer Meldung wie'. Allocation for XXXXXXXX missing, so sollte man diesen DDNamen aufs Terminal allozieren, falls es ein Ausgabe File ist. Unerwünschte Eingaben legt man auf DUMMY oder DSNAME-NULLFILE' (gibt beim Lesen EOF und verschluckt Ausgaben). Bleibt ein Programm einfach stehen, so kann es sein, dass es auf Eingabe wartet. Ein EOF wird am Terminal durch die Sequenz '/*' erzeugt (ohne die Apostrophe, als einzige Eingaben in der Zeile). Werden fremde Dateien als Eingabe Files benutzt, so empfiehlt es sich, diese nur als INPUT Datei zu allozieren:
ATTRIB attrname INPUT
ALLOC F(ddname) DA(dsname) US(attname) SHR

4. TSO Kommandos
Der LOGON Befehl

Mit dem LOGON Befehl beginnt man eine TSO Session. Er dient dazu dem System den User Namen und das Passwort mitzuteilen. Weitere evtl. nötige Angaben sind Account Nummer und Logon Prozedur. Die Eingabe von LOGON "ret" genügt. Das Kommando fragt nach allen notwendigen Parametern. Es ist möglich, die Grösse des zur Verfügung stehenden Speichers anzugeben: SIZE(zahl), Zahl in Kbytes. Falls die Verbindung zum Rechner ohne vorheriges LOGOFF unterbrochen wurde bekommt man beim erneuten Einlog Versuch oft die Meldung: USER xxx already in use, enter LOGON or LOGOFF. Hier hilft die Angabe des RECONNECT Parameters.
Beispiele:
LOGON MEYER SIZE(1000) ACCT(4711) PROC(READY)
LOGON SMITH RECONNECT

Der LOGOFF Befehl
Der LOGOFF Befehl beendet die TSO Session. Alle allozierten Dateien werden wieder freigegeben.

Der HELP Befehl

Der HELP (H) Befehl gibt Informationen über die einzelnen Kommandos. HELP ohne Operanden gibt eine nicht notwendig vollständige Liste aller Kommandos aus. Mit LISTDS'SYS1.HELP'MEMBERS bekommt man eine Liste aller verfügbaren HELP Texte. Um die Informationen über ein bestimmtes Kommando zu erhalten schreibt man: HELP kommando. Die Ausgabemenge lässt sich dabei durch folgende Optionen einschränken.
FUNCTION Zweck und Operation des Kommandos
SYNTAX Eingabeformat des Kommandos
OPERANDS Operanden des Kommandos

Der OPERANDS Option kann eine Liste der gewünschten Operanden folgen. Ist dies nicht der Fall, so werden alle Operanden erklärt. Beispiele.
HELP PROFILE FUNCTION
HELP LOGON OPERANDS(PROC,ACCT)

Der ATTRIB Befehl

Mit dem ATTRIB (ATTR) Befehl wird eine Attribut Liste erzeugt. Wenn sie bereits existiert, dann muss sie vorher mit dem FREE Befehl wieder freigegeben werden. Die Attribut Liste wird benötigt, um einer neuen Datei beim ALLOCATE Befehl die gewünschten Attribute zu geben. Eine Attribut Liste kann mehrfach verwendet werden. Die Liste bekommt einen 1 bis 8 Zeichen langen Namen. Es sollte kein Name verwendet werden, der später als DDName benutzt wird. Der erste Operand ist der frei wählbare Name der Liste. Danach können z.B. folgende Operanden kommen:
DSORG(xx) Dataset Organisation-. PS, PO, DA
RECFM(x y z) Record Format: siehe oben; Buchstaben durch blanks trennen !
BLKSIZE(zahl) Block Size
LRECL(zahl) Logical Record Length
INPUT Datei darf nur für Eingabe benutzt werden
OUTPUT Datei darf nur für Ausgabe benutzt werden
Beispiele für den ATTR Befehl sind beim ALLOC Befehl aufgeführt.

Der ALLOCATE Befehl

Das ALLOCATE (ALLOC) Kommando dient dazu, einem DDnamen eine Datei zuzuweisen. Die wichtigsten Operanden sind.
DATASET(datasetname) gibt den Dateinamen an.
DATASET(*) benutzt das Terminal als Datei.
DUMMY statt DATASET-. EOF beim Lesen, keine Ausgabe
FILE(ddname) gibt den Filenamen an
OLD verlangt alleinige Benutzung
SHR gemeinsame Benutzung
MOD alleinige Benutzung, anhängen an das Ende der Datei
VOLUME(diskname) gibt Volume für nicht katalogisierte Datei an

Die folgenden Operanden sollten i.A. nur für neue Dateien verwendet werden:
NEW neue Datei erzeugen
USING(attrname) benutzt Attribute von attrname
DIR(zahl) verlangt zahl Blöcke für Directory (je ca. 6-8 Einträge). Nur für DSORG=PO !!!
TRACKS zahll und zah12 von SPACE in Spuren
BLOCK(zahl) zahll und zah12 von SPACE in Vielfachen von zahl
SPACE(zahll,zah12) verlangt Platz für neue Datei. zahl 1 Einheiten sofort, zahl 2 Einheiten, wenn Platz aufgebraucht. Es gibt max. zahl 1 + 15*zahl 2 Einheiten Platz für die Datei.
Beispiele:

Allozieren einer Eingabedatei auf Fortran Einheit 1:
ATTRIB'INPUT INPUT
ALLOC F(FTO1F001) DA('MEYER.INPUT.DATA') US(INPUT)

Allozieren einer neuen Datei für 80 Zeichen lange Zeilen.
ATTRIS TEXTLIB DSORG(PO) RECFM(F B) BLKSIZE(3200) LRECL(80)
ALLOC F(LIBRARY) DA(MY.LIB) NEW US(TEXTLIB) DIR(l0) TR SP(5 3)

Allozieren einer nicht katalogiserten Datei und testen, ob sie geschützt ist:
ALLOC F(TEST) DA('SYSII.TESTUADS') VOL(SYSRES) SHR
LISTALC

Der FREE Befehl

Das FREE Kommando gibt allozierte Dateien, Files und Attribut Listen wieder frei:
FREE F(ddnamel,ddname2,...ddnamen) löscht Allozierungen für ddname 1.. n
FREE DA(dataset1,...,datasetn) löscht ALLE Allozierungen für dataset 1..n
FREE A(attrlist1,...,attrlistn) löscht Attribut Listen attrlist 1..n

Es ist nie verkehrt, Dateien, die man nicht mehr braucht, wieder freizugeben, So kann man sie nicht versehentlich überschreiben. Auch kann jemand anderes diese Datei jetzt mit dem Parameter OLD allozieren, was vorher nicht möglich war. Eine einfache Methode festzustellen, ob irgend jemand gerade mit einer bestimmten Datei arbeitet, ist, diese mit OLD zu allozieren. Ist das möglich, so ist sie frei. Sonst bekommt man die Msg: DATASET allocated to another job or user.

Die HRECALL und HMIGRATE Befehle

Dateien, die sich im MSS befinden, können in TSO nicht direkt verarbeitet werden. Mit HRECALL wird die Datei von MSS auf Platte bewegt. Der HSM meldet sich, wenn die Datei da ist. Wenn die Datei nicht mehr benötigt wird, kann sie mit HMIGRATE wieder zurück migriert werden.
Syntax:
HRECALL datasetname NOWAIT
HMIGRATE datasetname

Der DELETE Befehl

Der DELETE (DEL) Befehl löscht eine Datei aus dem Katalog. Plattendateien werden zusätzlich im VTOC gelöscht und der verwendete Platz wieder freigegeben. Der erste Operand ist der Name der zu löschenden Datei. Sollen mehrere Dateien gelöscht werden, so sind die Namen durch Kommas zu trennen und in Klammern einzufassen. Beispiel:
DEL (TEST.PLI,TEST.OBJ,TEST.LOAD)
Man sollte nur die Dateien löschen, die man auch selbst erzeugt hat.

Der RENAME Befehl

Mit RENAME (REN) können Dateien und Member umbenannt werden. Es ist im allgemeinen nicht möglich, den User Namen in Dateinamen zu ändern.
Aendern des Dateinamens:
RENAME TEST.PLI WORK.PLI
Aendern eines Membernamens:
RENAME'MEYER.WORK.LOAD(OLD)' (NEW)

Der EDIT Befehl

EDIT ist ein einfacher zeilenorientierter Texteditor. Er kann an dieser Stelle nicht erklärt werden. Es werden nur zwei kurze Beispiele gegeben:

Neue Datei erstellen:
EDIT HALLO NEW CLIST
Jetzt kann Text eingegeben werden. Die Zeilen werden automatisch numeriert. Eingabe einer leeren Zeile beendet die Eingabe. Mit dem Kommando 'END SAVE' kann der Editor wieder verlassen werden.
Alte Datei ändern.
EDIT HALLO CLIST
Der Editor meldet sich jetzt mit seinem Prompt EDIT. Mit 'CHANGE' können Strings ersetzt werden. Mit 'INPUT' oder 'INSERT' können Zeilen eingefügt werden. Die Eingabe einer Zeilennummer gefolgt von Text fügt diese Zeile an der entsprechenden Stelle ein. Existiert schon eine Zeile mit dieser Nummer, so wird sie überschrieben. 'HELP' gibt eine Liste der verfügbaren Kommandos aus und 'HELP subcommand' gibt eine Erklärung dieses Kommandos. 'END SAVE' oder 'END NOSAVE' führen zurück zum TSO READY Prompt.

Der CALL Befehl

Mit CALL wird ein ausführbares Programm aufgerufen. Der erste Parameter ist der Name des Programms. Wird der User Name weggelassen und der Name nicht in Apostrophe gesetzt, so wird an den Namen die Extension LOAD angefügt. Wird kein Membername angegeben, so wird der Name TEMPNAME angenommen. Ausführbare Programme sind immer in PO Dateien gespeichert. Optional können an das Programm noch Parameter übergeben werden. Diese werden als zweiter Parameter von Apostrophen umgeben. Enthalten die Parameter Apostrophe, so sind diese doppelt zu schreiben.

CALL (GAME) ruft 'userid.LOAD(GAME)' auf
CALL 'SYS1.LINKLIB(IEUASM)' 'XREF(FULL)' mit paramter

Die'SYS1.LINKLIB' enthält einige rote Knöpfe, die nicht immer gesichert sind. Werden sie gedrückt, so wird die automatische softwaremassige Selbstzerstörung eingeleitet. Es empfiehlt sich, nur die Systemprogramme aufzurufen, von denen man wirklich weiss, was sie tun. Der EXEC Befehl

Das EXEC Kommando dient zum Aufrufen von Command Lists (CLIST). Dies sind Dateien, die eine Reihe von TSO Kommandos enthalten. Clisten mit Parametern beginnen mit einem PROC Befehl. Dem Keyword PROC folgt die Anzahl der unbedingt anzugebenden Operanden, Hierauf fügen die Namen der Operanden optional gefolgt von default Werten in Klammern. Beispiel:
Dateiname: DEBUG.CLIST(TEST)
PROC 1 NAME PARM(100)
FREE F(SYSIN,SYSPRINT)
ALLOC F(SYSIN) DA(&NAME..DATA) SHR
ALLOC F(SYSPRINT) DA(*)
CALL DEBUG(NEW) '&PARM.'
FREE F(SYSIN)
ALLOC F(SYSIN) DA(')
Aufruf:
EXEC DEBUG(TEST) SAMPLE PARM(20)
EXEC DEBUG(TEST) NEWPGM
Die Parameternamen wurden im Text mit Ampersand und Punkt (& und .) eingeklammert, damit sie durch die aktuellen Werte ersetzt werden. Viele Beispiele findet man in der Datei 'SYS1.GLISTLIB'. Diese Clisten können ohne EXEC einfach durch Eingabe ihres Namens aufgerufen werden, wenn die Datei unter dem DDNamen SYSPROC alloziert ist (wird in den meisten LOGON Prozeduren automatisch gemacht).

Der LISTALC Befehl

Mit LISTALC (LISTA) kann man eine Liste aller allozierten Dateien und Attributlisten am Terminal erzeugen. Hierbei können die Parameter STATUS, HISTORY und SYSNAMES angegeben werden. Der MEMBERS Parameter sollte nicht benutzt werden. Ist eine Datei mit vielen Membern dabei, so kann die Liste sehr lang werden. Ausserdem muss zum Erstellen der Memberliste die Datei geöff net werden. Ist sie gegen Lesen mit einem Passwort geschützt, so muss dieses angelietert werden. Um eine Liste aller Member einer Datei zu erhalten sollte der LISTDS Befehl benutzt werden. Das Allozieren einer geschützten Datei ist auch ohne Passwort möglich. Die HISTORY Option zeigt nun an, ob und wie die Datei geschützt ist (Security: NONE, WPWD oder RPWD). Dies funktioniert nicht bei VSAM Dateien und bei Dateien, die von RACF geschützt werden. Während der normale Passwortschutz erst hinter dem OPEN SVC lauert, bewacht RACF auch schon den Eingang für das dynamische Allozieren.

Der LISTCAT Befehl

LISTCAT (LISTC) liest den Katalog. Normalerweise braucht man nur den LEVEL Operanden. Dieser Operand gibt eine Liste aller Dateien die unter diesem Level im Katalog enthalten sind. Der Operand ALL sieht interessant aus. Man wird aber trotzdem nach allen Passwörtern gefragt, die man nicht sowieso schon weiss (weil es das eigene LOGON Passwort ist).
Beispiele:
LISTC L(SYS1)
LISTCAT L(MEYER.TEST)

Der LISTDS Befehl

Der LISTDS (LISTD) Befehl liefert im wesentlichen die gleichen Informationen wie LISTALC. Hier hat man die Möglichkeit Dateinamen als Operanden anzugeben. Man muss die Dateien also nicht erst allozieren. Normalerweise wird LISTD benutzt, um eine Liste aller Member zu erstellen. Interessant ist die Möglichkeit, einen LEVEL anzugeben, wie z.B.:
LISTDS LEVEL(SYS1) STATUS SYSNAMES HISTORY
LISTDS'MEYER.*.ASM' HISTORY

Der PROFILE Befehl

Der PROFILE (PROF) Befehl erlaubt es, eine Reihe von Parametern zu ändern. Der PREFIX(user) Operand ändert den Usernamen, der Dateinamen vorangestellt wird, die nicht in Apostrophe eingeschlossen sind. Dies erlaubt aber keinen weiteren Zugriff zu den Dateien des anderen Users, als man ihn nicht ohnehin schon hat. Mit NOINTERCOM verbietet man den Empfang von Msgs, die von Jobs oder anderen Usern (SEND Befehl) kommen. Mit INTERCOM wird der Empfang wieder angestellt. Weitere Operanden siehe 'HELP PROF'. Wird kein Operand angegeben, so wird eine Liste der augenblicklichen Parameter ausgegeben.
Beispiele:
PROFILE PRE(SYS1)
PROFILE NOINTERCOM LIST

Der TERMINAL Befehl

Mit dem TERMINAL (TERM) Befehl kann man die Eigenschaften seines Terminals umdefinieren. Operanden sind:
LINES(zahl) alle zahl Zeilen kann man einen Interrupt erzeugen
NOLINES
SECONDS(zahl) alle zahl Sekunden kann man einen Interrupt erzeugen
NOSECONDS
INPUT(string) die Eingabe von string erzeugt einen Interrupt
NOINPUT
LINESIZE(zahl) gibt die Zellenlänge an

Beispiel: TERM LINES(24) SECONDS(30) LINESIZE(79)

Eine weitere Art einen Attention Interrupt zu erzeugen ist es, nachdem das System den '***' Prompt (wegen LINES oder SECONDS) ausgegeben hat, eine Ziffer zwischen 1 und 9 einzugeben. Diese Ziffer entspricht der Zahl der zu gebenden Interrupts.

Der SEND Befehl

Mit Hilfe des SEND (SE) Befehls lassen sich einzeilige Nachrichten an andere Benutzer oder an den Operator senden. Auf das Schlüsselwort SEND folgt der Text in Apostrophen. Nach dem Text muss die Angabe des Empfängers, USER(user) folgen, sonst geht der Text an die Master Konsole. Beim Senden an einen anderen User gibt es noch folgende Optionen:
LOGON ist der User nicht eingeloggt, so wird die Msg bis zum LOGON gespeichert
SAVE die Message wird auf alle Fälle gespeichert
WAIT das System verweigert die Eingabe, bis alle User die Msg empfangen haben

Beispiele.
SE 'Hallo !' U(MEYER,SMITH)
SE 'Bin erst Montag wieder Online' U(VISITOR) L

Der Text wird am Ende automatisch um den Sendernamen verlängert. Es gibt keinen Befehl, der eine Liste aller im Moment aktiven Benutzer ausgibt.

Der TEST Befehl

TEST ist ein primitiver Debugger auf Assembler Ebene. Auf die verschiedenen Unterbefehle wird hier nicht weiter eingegangen. Interessant ist die Möglichkeit, sich mit TEST den Hauptspeicher anzusehen. Mit LIST 0. LENGTH(256) C kann man sich die ersten 256 bytes ansehen. Das erste Argument hinter LIST ist die Startaddresse in Hex gefolgt von einem Punkt. Das C steht für Character, X ist HEX, 1 4-Byte Integer. Weiteres steht im Online Help. Irgenwo im low core, meist in den ersten Kbytes gibt es eine Tabelle aller Units, die im Moment Online sind. Hier findet man die VOLSER Namen aller Platten. Auf diesen kann man dann mit IEHLIST nach interessanten (und evfl. nicht katalogisierten) Dateien suchen. IEHLIST wird weiter unten beschrieben. Es gibt meistens eine Platte mit dem Namen SYSRES oder mehrere mit Namen wie SYSRSA, SYSRSB oder SYSRS1, SYSRS2... In Mehrprozessorsystemen hat meist jeder Prozessor eigene Systemplatten, eigene Passwort Datasets u.a. Was auf der einen Platte geschützt ist, muss es auf der anderen noch lange nicht sein.
Weiter ist es mit TEST teilweise möglich, durch einen Command Access Code gesperrte Kommandos auszuführen:

TEST'SYS1.OMDLIB(kommando)' CP

Jetzt fragt TEST nach den Operanden für kommando (das bewirkt die CP = Command Processor Option). Danach kann mit GO das Kommando gestartet werden. Command Processors kann man nicht einfach mit CALL aufrufen.

Ist die Ausführung des Befehls auch unter TEST nicht möglich, so kann man immer noch versuchen, den Befehl aus dem Editor heraus zu starten. Geht auch das nicht, so hilft manchmal der TSO submode des PL/1 Checkout Compilers PLIC.

Privilegierte Befehle

Befehle, die nicht jeder User ausführen kann, sind ACCOUNT und OPER. Entscheidend hierfür ist die Authorisierung im 'SYS1.UADS'- Diese zu erteilen ist gerade eine der Aufgaben von ACCOUNT. Wenn man ACCOUNT kann (ausprobieren), dann kann man alle User mit Passwörtern und anderen Attributen listen (LIST subcommand), neue User einrichten, alte löschen und einiges mehr. Mit OPER kann man Jobs Löschen und eine Reihe von Systemsachen anschauen (ist aber nicht aufregend). Man kann erheblich weniger als eine richtige Master Konsole. OPER und ACCOUNT können getrennt authorisert werden

Aufrufen von Compiler und Linker

Das Uebersetzen und Linken von Programmen in den diversen Sprachen wird hier nicht behandelt. Man sollte aber in den HELP Files oder in der 'SYS1.CLISTLIB' etwas darüber finden können. Die Behandlung von Assembler oder höheren Sprachen muss aus Platzgründen auch entfallen.

Befehle für Batch Jobs

Ein Batch Job wird mit dem SUBMIT Befehl gestartet. Mit dem STATUS Befehl lässt sich feststellen, ob der Job noch in der Queue hängt, gerade ausgeführt wird oder schon fertig ist. Mit OUTPUT lässt sich die SYSOUT Ausgabe des Jobs ansehen. Das CANCEL Kommando dient dazu, den Job aus der Queue zu entfernen. Die PURGE Option des CANCEL Befehls löscht die SYSOUT Dateien, falls der Job bereits gelaufen sein sollte. Diese Befehle werden hier nicht weiter behandelt, da zum sinnvollen Gebrauch wenigstens Grundkenntnisse in JCL notwendig sind. Ausserdem ist das SUBMIT Kommando in vielen Installationen nicht allen Usern zugänglich.

5. Verschiedenes

Interessante Dateien

Die aktuellen Systemdateien befinden sich unter dem Katalogeintrag SYS1. Oft gibt es auch Dateien für SYSO oder SYS2-SYS9 für alte oder neue Versionen. Weiter interessant sind die Dateien 'SYS1.Axxxx'. Diese sind zum Teil die Original Dateien, aus denen das aktuelle System generiert wird. Zum Beispiel enthält 'SYSI.AHELP' meistens mehr Einträge als'SYS1.HELP'. Trotzdem sind oft auch die Kommandos verfügbar, für die es kein HELP gibt. Weitere interessante Systemdateien sind:
SYS1.BRODCAST Hier sind die Messages des SEND Befehls gespeichert
SYS1.CLISTLIB TSO Kommandoprozeduren
SYSII.CMDLIB TSO Kommandos (Command Processors)
SYSII.HELP Texte für das HELP Kommando
SYS1.LINKLIB Alle Systemprogramme
SYS1.LOGON LOGON Prozeduren
SYS1.PROCLIB JCIL Prozeduren
SYSII.UADS User Attribute Dataset, Passwörter
IEHLIST
Ein nützliches Utility Programm ist IEHLIST aus der 'SYS1.LINKLIB'. Beispiel:
FREE F(SYSIN,SYSPRINT)
ALLOC F(SYSIN) DA(*)
ALLOC F(SYSPRINT) DA(*)
CALL 'SYS1.LINKLIB(IEHLIST)'
LISTVTOC VOL=SYSDA-diskname,DUMP
LISTVTOC VOL=SYSDA=diskname,FORMAT,DSNAME=(MEYER.TEST.ASM,MEYER.TEST,OBJ)
LISTCTLG VOL=SYSDA=diskname,NODE=SYSO
LISTPDS VOL-SYSDA-diskname,DUMP,DSNAME=MEYER.TEST.ASM
LISTPDS VOL=SYSDA=diskname,FORMAT,DSNAME=MEYER.TEST.LOAD

Zu beachten ist: Alle Kommandos an IEHLIST beginnen mit einem Leerzeichen! Für diskname ist der tatsächliche Name einer Platte einzusetzen. Für diese Platte muss schon eine Allozierung bestehen, d.h. mindestens eine Datei auf dieser Platte muss unter beliebigem DDNamen alloziert sein. Für LISTCTLG muss als diskname natürlich die Platte genannt werden, auf der sich der Katalog für diesen NODE auch tatsächlich befindet. Ein Nachteil des Programms ist, dass die Ausgabezeilen bis zu 132 Zeichen lang und damit auf dem Bildschirm schwer zu lesen sind.

Disknamen kann man mit TEST herausfinden (siehe oben). Eine einfachere Möglichkeit bietet das LISTALC Kommando. Es gibt allerdings nur die Volumes der gerade allozierten Dateien aus. Da nicht alle Dateien im Katalog stehen müssen, findet man mit LISTVTOC oft Dateien, die nur durch Löschen aus dem Katalog "geschützt" sind. Es ist sogar schon vorgekommen, dass der 'SYSII.ILIADS' als 'SYS1.TESTLJADS' kopiert und dann nicht wieder durch ein Passwort geschützt wurde.
Ganz simpel
Zum Schluss noch ein ganz alter und sehr einfacher Trick, um an ein Passwort zu kommen: Oft verlässt ein TSO Benutzer nach Eingabe seines Passwortes das Terminal, um sich etwas zu trinken zu holen oder so (das Einloggen kann bei vielen Benutzern recht lange dauern: LOGON PROCEEDING... ). Wenn man Glück hat, löscht die LOGON Prozedur nicht den Bildschirm. Dann steht das Passwort noch auf dem Bildschirm; man kann es nur nicht sehen. Nun geht man mit den Cursortasten in die Zeile, in der das Passwort steht. So ab der 20 Stelle gibt man ein Leerzeichen ein (zum Positionieren nicht die Space Taste benutzen, sonst wird das Passwo*** Texteingabe durch Verbindungsabruch beendet:
IBMTS0H1.ws 85/08/06 04-33 Guten Morgen

 

  [Chaos CD]
[HaBi 1]    IBM Grossrechner: Time Sharing, Option TSO
[Gescannte Version] [ -- ] [ ++ ] [Suchen]