Stapelverarbeitung
Stapelverarbeitung oder auch Batchverarbeitung bezeichnet die Bearbeitung von Aufgaben nacheinander (sequentiell). Dies ist ein Ausdruck aus dem EDV-Bereich und wird synonym als Batchdatei, Batchfile, Batchprogrammierung, JCL verwendet.
Ursprüngliche Bedeutung
Ursprünglich bedeutete es, dass Aufgaben nicht scheinbar gleichzeitig, sondern rein sequentiell durchgeführt werden. Der Stapel wird Aufgabe für Aufgabe abgearbeitet. In Großrechensystemen der Anfangszeit war die Stapelverarbeitung das Standardverfahren, bei dem die Anfragen der Benutzer eine nach der anderen abgearbeitet wurden. Ihren Namen hat die Stapelverarbeitung, weil die Eingaben als Stapel von Lochkarten in das System gegeben wurden. Heute spricht man immer noch von Batchverarbeitung und meint damit vor allem das Abarbeiten von Aufgaben- bzw. Befehlsketten, die während der Laufzeit keine Benutzerinteraktion erfordern. Man gibt einen Auftrag vor und der wird vom Computer erledigt, ohne dass der Benutzer weiter eingreifen muss.
Wörtlich übersetzt heißt Batch in diesem Zusammenhang Listenabarbeitung, Stapelverarbeitung.
Batch-Dateien werden in verschiedenen Betriebssystemen (z. B. DOS, Unix) häufig genutzt. Man spricht heute mehr von Skript-Dateien, vom Konzept her ist es aber dasselbe. Eine Reihe von Befehlen, die die Betriebssystemfunktionen nutzen, werden in einer Datei festgehalten und nach Starten des Skripts abgearbeitet.
Auf Mainframes, die unter dem IBM-Betriebssystem z/OS (vormals MVS) laufen, spricht man von Jobs. Diese Batchverarbeitungen werden normalerweise durch eine Steuerungssoftware (z.B. OPC) gesteuert, können aber auch durch einen TSO-Benutzer oder einen bereits laufenden Job oder eine so genannte Started Task ausgelöst werden.
Bei DOS/Windows werden die Batchdateien üblicherweise mit der Dateiendung .bat versehen. Unter Windows können sie durch einen Doppelklick gestartet werden. Beim Macintosh wird mit AppleScript gearbeitet. Das neueste System Mac OS X ist eine Unix-Variante und kennt auch Batchdateien im üblichen Sinn. Bei z/OS sind Batchjobs in JCL geschrieben und normalerweise in einem Partitioned Dataset (JCL-Library) mit Recordformat FB und Recordlänge 80 abgelegt. Eine Art Unterprogramm ist durch die Verwendung von Cataloged Procedures möglich.
Bei Unix bezeichnet man das Erstellen von Batchdateien als Shellscripting, was genau so einfach wie bei DOS funktioniert, aber viel leistungsfähiger ist, da unter Unix mehr Betriebssystembefehle bzw. -werkzeuge zur Verfügung stehen.
Administrative Arbeiten, welche bei Unix mittels Shellskripten durchgeführt werden, werden bei z/OS heutzutage sehr oft mit REXX-Skripten unter TSO durchgeführt. Die Batchjobs werden in erster Linie für automatisierte Verarbeitungen (oft Massenverarbeitungen) eingesetzt. Das Betriebssystem enthält zur Jobsteuerung ein Job Entry Subsystem JES2 oder JES3.
Vorteile
- einfach zu erstellen
- Wiederverwendbarkeit
- Zeitersparnis (bei der Ausführung)
Batch-Skripte unter Windows
Batch-Dateien oder auch Stapelverarbeitungs-Dateien stammen zwar noch aus der Zeit von DOS, sind aber keineswegs von gestern. Im Gegenteil: Auch heute leisten sie unter allen Windows-Versionen wertvolle Arbeit. Immer, wenn häufig die gleichen Befehle ausgeführt werden sollen, bieten sich Batch-Dateien geradezu an. Genau das ist beispielsweise bei Anmeldeskripten der Fall. Es ist auch möglich, die Ausführung einzelner Befehlszeilen von einer Bedingung abhängig zu machen. Dafür gibt es Konstrukte wie IF oder IF NOT. Ausserdem kann man Vergleiche durchführen, Variablen benutzen, Sprünge ausführen, Kommentare schreiben etc. Das mag sich zwar fast nach einer Programmiersprache anhören, aber Batch ist definitiv keine Sprache. Man programmiert also keine Batch-Dateien, man schreibt sie. Es gibt mehrere Gründe, warum Batch keine Sprache darstellt, der wichtigste ist, dass grundlegende mathematische Arithmetik in Batch-Dateien nicht ausgedrückt werden kann.
Vorteile gegenüber einer Programmiersprache
- kostenneutral
- sehr einfach zu erlernen
- keine Entwicklungsumgebung erforderlich
- Anpassungen / Erweiterungen jederzeit möglich
- laufende Batchdateien können sich (im Gegensatz zu laufenden Programmen) selbst löschen
Nachteile gegenüber einer Programmiersprache
- funktionsarm
- ermöglicht lediglich einfache Aufgabenbewältigung
- der Code ist nicht geschützt und für jedermann einsehbar
Unter DOS bzw. in einer DOS-Box kann man sogar ohne einen Editor ganz einfach Batch-Skripte erstellen.
Die folgende Zeile erstellt ein Datei namens test.bat:
COPY CON test.bat <ENTER>
Die Datei CON die hier kopiert wird ist allerdings keine Datei sondern die CONsole (hier: Tastatur). Alles was ab jetzt eingegeben wird landet direkt in der Datei bis man diese mit <Strg + z> <ENTER> schliesst. Das könnte beispielsweise so aussehen:
@ECHO OFF <ENTER> CLS <ENTER> ECHO Hallo Welt! <ENTER> <Strg + z> <ENTER>
Wichtig: nach der letzten Befehlszeile <ENTER> drücken und erst in der nächsten Zeile <Strg + z> <ENTER> eingeben.
Wenn man die Datei test.bat jetzt startet wird erst der Bildschirm gelöscht und danach wird der Text Hallo Welt! ausgegeben.
Befehle für Batchdateien unter DOS und Windows
Grundsätzlich kann man in einem Batch-Skript die Befehle genau so eingeben wie man es in der Konsole auch tun würde. Zusätzlich gibt es u.A. Kommentare, Sprünge, etc.
- @[Befehl] = Unterdrückt die Anzeige des Befehls
- ECHO ON = Schaltet die Befehlsanzeige für alle nachfolgenden Befehle ein
- ECHO OFF = Schaltet die Befehlsanzeige für alle nachfolgenden Befehle aus
- ECHO [Text] = Gibt [Text] auf dem Bildschirm aus
- ECHO. = Gibt eine Leerzeile aus
- ECHO = Gibt den Status der Befehlsanzeige zurück, z.B. "ECHO ist eingeschaltet (ON)."
- ECHO $P$G = Aktiviert die normale Anzeige der Dos-Kommandozeile. Dies muß vor allem bei alten Dos-Versionen gemacht werden.
- REM [Text] = Leitet ein Kommentar ein (REMark = Bemerkung)
- :[Sprungmarke] = Deklariert eine Sprungmarke, zu der man mit "GOTO" springen kann
- GOTO [Sprungmarke] = Springt zur Sprungmarke
- IF (NOT) [Bedingung] = Führt einen Befehl aus, wenn die Folgebedingung (nicht) erfüllt ist
- EXIST [Datei] = angegebene Datei muss existieren, sonst wird der Befehl nicht ausgeführt
- NOT EXIST [Datei] = angegebene Datei darf nicht existieren, sonst wird der Befehl nicht ausgeführt
- FOR = Führt einen Befehl für jede einzelne Datei für einen Satz von Dateien aus
- %[Zahl] = %0 entspricht dem Namen der Batchdatei. %1 bis %x entspricht Parameter 1 bis x
- CALL [Dateiname] = Ruft ein weiteres Batch-Skript auf und setzt danach das Ausführen fort
- CLS = setzt die Bildschirmausgabe zurück. (CLS = CLear Screen)
- SET [Variable] = [Wert] = Setzt eine Variable
- %[Variable]% = Liest eine Variable
- Pause = Fügt die Zeile "Drücken Sie eine Taste um fortzusetzen" ein und hält währenddessen den Batch an bis eine Taste gedrückt wird
- Um zwei Werte miteinander zu vergleichen benutzt man "==" Bsp.: IF %VAR% == %1 ECHO Hallo Welt!
Selbstverständlich kann man in einer Batch-Datei auch die Umleitungsoperatoren benutzen:
dir *.txt | more
In diesem Beispiel wird die Ausgabe des Befehls "dir *.txt" durch den Zusatz "| more" als Parameter für die Datei more.com verwendet.
Besonderheit autoexec.bat
Die autoexec.bat wird erstellt wie eine normale Batch-Datei, hat allerdings ein paar Besonderheiten, weil mit ihr meist Parameter und speicherresistente Programme geladen werden.
In der autoexec.bat ist es z.B. sehr praktisch den Vorsatz lh (loadhigh) zu verwenden, weil man damit die speicherresistenten Programme in den höheren Speicherbereich laden kann. Zudem ist es wichtig, in der autoexec.bat immer den ganzen Pfad anzugeben, um einen möglichst einwandfreien Ablauf zu gewährleisten.
Bei der Aktivierung der deutschen Tastatur muß in der autoexec.bat anders vorgegangen werden als auf der normalen Kommandozeile: Es muß der Pfad der keyboard.sys angeegeben werden. Dies sieht dann so aus:
keyb gr,,c:\windows\command\keyboard.sys
Weblinks
- http://www.admini.de Umfangreiche Informationen über Batchprogrammierung unter NT/2000/XP
- http://www.fpschultze.de/batstuff.html Batch Scripting Site mit vielen Beispielen
- http://download.knowware.de/batch.pdf Leicht verständliche Einführung
- http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/BOOKS/IEA2B510/CCONTENTS?SHELF=IEA2BK32&DN=SA22-7598-01&DT=20010626133938 englischsprachiges JCL Benutzerhandbuch