Nachdem mit den Funktionen des GEMDOS-Betriebssystems und den im letzten Serienteil vorgestellten Hilfsfunktionen des Moduls ATOM eine gewisse Grundlage gelegt worden ist, können nun erste Kommandos implementiert werden:
CD - Ändern des Arbeitsverzeichnisses
PWD - Ausgabe des Arbeitsverzeichnisses
DATE - Auslesen/Setzen des Systemdatums
TIME - Auslesen/Setzen der Systemzeit
DF - Auslastungsstatistik für Dateisysteme
Diese insgesamt fünf Kommandos zeichnet aus, daß sie allesamt auf einfache Weise auf die Funktionen des Moduls ATOM oder auf GEMDOS-Funktionen abbildbar sind. Kommandos die weiterreichende Resourcen benötigen, werden später noch behandelt. Bei der Beschreibung bzw. Erläuterung aller Kommandos werde ich eine formalisierte Schreibweise verwenden. Die Formalisierung geschieht nach folgendem Schema:
NAME
Zunächst wird der/die Kommandoname(n) angegeben, gefolgt von einer Kurzerläuterung der Funktionalität des/der Kommandos.
ANWENDUNG
Alle Möglichkeiten der Parametrisierung werden in der im ersten Serienteil, im Zusammenhang mit dem Kommando ECHOSIMP, eingeführten Kurzschreibweise angegeben.
BESCHREIBUNG
Die Wirkung des Kommandos wird erläutert.
OPTIONEN
Soweit vorhanden, werden Möglichkeiten der Parametrisierung durch Optionen genauer beschrieben.
PROGRAMMIERUNG
Neben dem Abdruck des Kommandolistings werden noch weitere Programmierungserläuterungen gegeben. Außerdem können noch BEISPIELe und ANMERKUNGen an gegebener Stelle in die Ausführungen eingestreut werden.
NAME
ANWENDUNG
CD Verzeichnis
BESCHREIBUNG
Handelt es sich bei Verzeichnis um einen zulässigen Pfadnamen für ein Verzeichnis, dann wird Verzeichnis zum neuen Arbeitsverzeichnis gemacht. Andernfalls ändert sich das Arbeitsverzeichnis nicht.
PROGRAMMIERUNG
Die Programmierung des Kommandos CD ist mit Listing 1.5 erfolgt. Die Parameterübergabe und die Kopplung der Funktion cd mit der Hauptfunktion main geschieht dabei auf die bereits im Zusammenhang mit dem Kommando ECHOSIMP dargelegt Weise. In der Funktion cd wird nun zunächst geprüft, ob das Kommando auch mit der korrekten Anzahl von Parametern aufgerufen wurde. Gegebenenfalls wird das aktuelle Verzeichnis durch Aufruf der Funktion acd neu gesetzt.
Zwar ist mit Listing 1.5 eine Realisierung von CD als externes Kommando erfolgt, d.h. CD kann theoretisch separiert von einer Shell benutzt werden, jedoch scheitert dieses Unterfangen an der Tatsache, daß das aktuelle Verzeichnis in TOS an den ausführenden Prozeß gebunden ist und nicht an den aufrufenden Prozeß exportiert werden kann. Entsprechend würde ein externes Kommando CD zwar durchaus den Wechsel des Arbeitsverzeichnisses bewerkstelligen, jedoch geht dieses neue Arbeitsverzeichnis beim Prozeßabbruch verloren. CD gehört mithin zu den wenigen, internen Kommandos, die direkt in die Shell integriert werden. Die Hauptfunktion in Listing 1.5 hat daher eher Platzhaltecharakter, als daß sie eine sinnvolle Funktion ausübt.
NAME
PWD - Ausgabe des Arbeitsverzeichnisses
ANWENDUNG
PWD
BESCHREIBUNG
PWD zeigt den Pfadnamen des Arbeitsverzeichnisses.
PROGRAMMIERUNG
Die Programmierung des Kommandos PWD ist mit Listing 1.6 erfolgt. Die Funktion pwd wird dabei direkt auf die Funktion apwd aus ATOM abgebildet. Auch PWD gehört zu den wenigen, später intern realisierten Kommandos, obwohl dazu nicht die gleiche Notwendigkeit, wie beim Kommando CD besteht.
NAME
DATE, TIME - Auslesen/Setzen der Systemzeit
ANWENDUNG
DATE [ ddSmmSyy ] TIME [ hhSmm [ Sss ] ]
Mit DATE wird das Systemdatum gesetzt/ausgelesen, mit TIME die Systemzeit. Werden DATE und TIME ohne Argumente aufgerufen, so wird die entsprechende Größe angezeigt. Wenn sie dagegen genau ein Argument erhalten, dann ist dieses Argument wie folgt zu spezifizieren, um die entsprechende Größe zu setzen:
Tage (dd), Monate (mm), Jahre (yy), Stunden (hh), Minuten (mm) und Sekunden (ss) sind als zweiziffrige Zahlen einzugeben. Alle Größen sind durch einen Separator (S) voneinander zu trennen. Der Separator darf weder Leerzeichen noch Ziffer sein. Die Eingabe der Sekunden (ss) und des zugehörigen Separators ist optional.
Wird das Systemdatum oder die Systemzeit gesetzt, dann wird die entsprechende Größe noch einmal zur Kontrolle ausgegeben.
BEISPIEL
$ DATE
Date: Fr, 03-11-89
$ TIME 12:00
Time: 12:00:00
PROGRAMMIERUNG
Die Kommandos DATE und TIME sind in Listing 1.7 und 1.8 programmiert. Die gleichnamigen Funktionen date (Listing 1.7, Zeilen 31-78) und time (Listing 1.8, Zeilen 31-87) - sie realisieren die beiden Kommandos - bestehen hauptsächlich aus einer etwas umfangreicheren Kontrolle der übergebenen Parameter. Zunächst ist hier zwischen einem Kommandoaufruf ohne Parameter und einem Aufruf mit einem einzigen Parameter zu unterscheiden. Im ersten Fall soll die gewünschte Größe - Systemdatum oder Zeit - nur ausgegeben werden. Im zweiten Fall muß zuvor der Parameter, entsprechend dem unter BESCHREIBUNG gesagtem, ausgewertet werden. Nachfolgend geschieht dann das Ändern der gewünschten Größe, gefolgt von einer Kontrollausgabe. Die Funktion time ist dabei einige Zeilen länger, da hier zusätzlich noch berücksichtigt werden muß, daß eine Sekundeneingabe lediglich optional erfolgen kann (siehe oben). Im Kern werden beide Funktionen auf die vier ATOM-Funktionen zum Setzen der Systemzeit (getdate, putdate, gettime und puttime) abgebildet.
NAME
DF - Auslastungsstatistik für Dateisysteme
ANWENDUNG
DF [ -A ] [ Dateisystem... ]
BESCHREIBUNG
DF zeigt Auslastungsstatistiken für die angegebenen Dateisysteme. Wird kein Dateisystem angegeben, dann erfolgt die Ausgabe einer Statistik für das aktuelle Dateisystem.
OPTIONEN
-A Ausgabe von Auslastungsstatistiken für alle Dateisysteme. Werden zusätzlich zur Option "-A" Argumente übergeben, dann werden sie ignoriert.
BEISPIEL
$ DF A: C:
Filesystem kbytes used avail capacity
A: 700 350 350 50%
C: 20000 15000 5000 75%
PROGRAMMIERUNG
Das Kommandos DF ist in Listing 1.9 programmiert. Entsprechend dem unter BESCHREIBUNG gesagtem sind insgesamt drei Fälle zu unterscheiden. Entweder wird DF ohne Parameter aufgerufen. In diesem Fall wird der Belegungsplan des aktuellen Laufwerks ausgegeben (Listing 1.9, Zeile 51), oder DF erhält Parameter. Im zweiten Fall ist zunächst abzuprüfen, ob die Parameter die Option "-A" enthalten, dann muß eine Ausgabe aller angemeldeten Geräte erfolgen (Zeilen 54-57), ansonsten werden nur die Geräte untersucht, die als Argumente angegeben sind (Zeilen 60-78). Die Funktion info (Zeilen 29-39) erhält dabei die Aufgabe den Belegungsplan für ein bereits definiertes Gerät abzurufen (Dfree) und daraus die gewünschten Werte zu errechnen.
Einige einfache Kommandos sind nun implementiert. Bevor weitere Kommandos folgen können, wird in der nächsten Folge zunächst der Begriff der Argumentexpansion geklärt. Ich möchte hier nur kurz ein Beispiel in den Raum stellen, das bereits einmal zu Beginn der Artikelserie, zwecks Motivation der Thematik, herangezogen wurde:
CP C:\XYZ\*.C A:\
In der nächsten Folge wird entsprechend geklärt, wie solche Kommandozeilen zu interpretieren sind.
Listings zur Programmer's Toolbox (4)