Mithilfe DCL-Kommandos lassen sich sogar komplexe Befehlssequenzen "zerlegen" und in sehr kompakter Schreibweise zusammenfassen. ======Format====== Ein DCL-Kommando besteht in aller Regel aus: * **Verb** - "**Was** soll gemacht werden?" / Kommandoname * **Qualifizierer** - "**Wie** soll es gemacht werden?" / Optionen * **Parameter** - "**Womit** soll es gemacht werden?" / Datei bzw. Objekt * **Schlagwörter** - zusätzliche Informationen und Optionen Ein Beispiel: $ PRINT MYFILE.TXT/COPIES=3 Der Befehl druckt die Datei **MYFILE.TXT** auf dem Standarddrucker **3x** aus. * **PRINT** = Verb * **MYFILE.TXT** = Parameter * **/COPIES=3** = Qualifizierer =====Verb/Kommando===== **Unvollständige** Kommandos werden in der Regel interaktiv um ihre zwingend benötigten Parameter ergänzt - die beiden folgenden führen zum gleichen Ergebnis: $ RENAME MYFILE1.TXT MYFILE2.TXT $ RENAME _From: MYFILE1.TXT _To: MYFILE2.TXT Wichtig ist, dass lediglich die zwingend notwendigen Parameter abgefragt werden - eventuelle optionale Parameter und Qualifizierer gehen verloren. **Überlange** Kommandos können auch über mehrere Zeilen hinweg geschrieben werden. Die beiden folgenden Befehle bewirken exakt das gleiche: $ PRINT MYFILE1.TXT/COPIES=1/QUEUE=OFFICEA,MYFILE2.TXT/COPIES=2/QUEUE=OFFICEB,MYFILE3.TXT/COPIES=3/QUEUE=OFFICEC $ PRINT - _$ MYFILE1.TXT/COPIES=1/QUEUE=OFFICEA, - _$ MYFILE2.TXT/COPIES=2/QUEUE=OFFICEB, - _$ MYFILE3.TXT/COPIES=3/QUEUE=OFFICEC Das hinten angefügte Minus-Zeichen erklärt der Shell, dass das Kommando noch nicht komplett ist. Hierdurch ändert sich auch der Prompt in **_$**. =====Qualifizierer===== Qualifizierer können entweder für einen Parameter oder für einen kompletten DCL-Aufruf definiert werden, ein Beispiel: $ PRINT MYFILE1.TXT/COPIES=3 MYFILE2.TXT/COPIES=3 MYFILE3.TXT/COPIES=3 Dieser Aufruf würde die Dateien **MYFILE1.TXT**, **MYFILE2.TXT** und **MYFILE3.TXT** jeweils **3x** auf dem Standarddrucker ausdrucken. Man könnte das Ganze auch zusammenfassen und folgenden Befehl ausführen: $ PRINT/COPIES=3 MYFILE1.TXT,MYFILE2.TXT,MYFILE3.TXT Parameter können natürlich für jede Definition einen anderen Wert haben - beispielsweise: $ PRINT MYFILE1.TXT/COPIES=1 MYFILE2.TXT/COPIES=2 MYFILE3.TXT/COPIES=3 Dieser Aufruf würde die Datei **MYFILE1.TXT** **1x**, die Datei **MYFILE2.TXT** **2x** und die Datei **MYFILE3.TXT** **3x** ausdrucken. Mehrfachdefinitionen sind auch möglich - der folgende Aufruf würde die Dateien prinzipiell **3x** ausdrucken; mit Ausnahme von **MYFILE3.TXT** die nur einmal ausgedruckt wird: $ PRINT/COPIES=3 MYFILE1.TXT,MYFILE2.TXT,MYFILE3.TXT/COPIES=1 Jeder Parameter erhält automatisch den Qualifizierer **/COPIES=3**, der letzte Parameter (//in dem Fall eine Datei//) **MYFILE3.TXT** erhält den Qualifizierer **/COPIES=1**. Mehrere Qualifizierer werden einfach hintereinander geschrieben, es wird keine Trennung durch Leerzeichen oder Komma vorgenommen - ein Beispiel ist: $ PRINT/COPIES=3/QUEUE=OFFICEC MYFILE1.TXT,MYFILE2.TXT Dieser Aufruf druckt die Dateien **MYFILE1.TXT** und **MYFILE2.TXT** jeweils **3x** auf der Drucker-Warteschlange **OFFICEC** und **nicht** der definierten Standard-Warteschlange aus. =====Parameter===== Mehrere Parameter werden in der Regel durch Kommas (//und nicht durch Leerzeichen wie in der UNIX-Welt//) getrennt: $ TYPE MYFILE1.TXT,MYFILE2.TXT,MYFILE3.TXT Der Befehl gibt den Inhalt der Dateien **MYFILE1.TXT**, **MYFILE2.TXT** und **MYFILE3.TXT** aus. ======Kommentare====== Als Abtrenner zwischen Befehlsdefinitionen und Kommentaren dient unter DCL das Ausrufe zeichen. Alles was hinter einem nicht-maskierten Ausrufezeichen steht ist ein Kommentar - ein Beispiel: $ SHOW USERS ! This command shows all currently logged in users Insbesondere in Skripten sind Kommentare sehr hilfreich, um den Code zu erläutern.