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.