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.
Das Kommando CD
NAME
CD - Ăndern des Arbeitsverzeichnisses
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.
Das Kommando PWD
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.
Die Kommandos DATE und TIME
NAME
DATE, TIME - Auslesen/Setzen der Systemzeit
ANWENDUNG
DATE [ ddSmmSyy ]
TIME [ hhSmm [ Sss ] ]
BESCHREIBUNG
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.
Das Kommando DF
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.
Vorausschau
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)