CMOVE [(l1) [l2])] c1 [c2] COLUMN [+|-]col [LINE [+|-]num] [n] CMCMOVE steht für column move, verschiebt also Spalten einer Zeile und sollte nicht mit dem Befehl MOVE verwechselt werden, der Zeilen verschiebt.
cmove 5 column 20
cmove 5 10 col 20
Das Verschieben kannst du dir so vorstellen: Die Zeichen ab der Zielspalte werden um die Anzahl der zu verschiebenden Zeichen nach rechts verschoben. In die aufgegangene Lücke werden die zu verschiebenden Zeichen geschrieben, die am Originalplatz dann gelöscht werden. Die sich dadurch ergebende Lücke wird durch Linksverschiebung der Zeichen rechts von der Lücke wieder geschlossen. Im Beispiel cmove 5 10 col 20 befinden sich die zu verschiebenden Zeichen danach in Spalte 14 bis 19, weil sie "zwischen" die ursprünglichen Spalten 19 und 20 verschoben wurden. Das ist dasselbe Verfahren wie bei dem Befehl MOVE, der auch keine Zeilen überschreibt sondern dazwischen einfügt, und an der Verschiebungsquelle keine Lücke hinterlässt.
Quell- und Zielbereich dürfen sich nicht überlappen. Falls doch, so erhältst du die Meldung
Quell- und Zielbereich überlappen
cmove 5 10 c +15
Bisher beschränkten sich alle Beispiele auf die aktuelle Zeile. Durch Angabe einer Anzahl als letzter Parameter kannst du wie üblich den Befehl in n aufeinanderfolgenden Zeilen ab der aktuellen ausführen lassen:
cmove 5 10 colu 20 7
Datenende
cmove (500 1200) 5 10 c20
Nun zum letzten Parameter von CMOVE. Bisher waren die Zielspalten in der selben Zeile wie die Quellspalten. Du kannst aber auch die Zielspalten separat angeben:
cm5 10c20 line 700
Wie bei COLUMN kannst du auch bei LINE durch Voransetzens eines Vorzeichens eine relative Zielzeile angeben:
cm5 10c20 l-6
Zielsatz nicht gefunden
cmove (500 b) 8 column 9 line 000400
Mit CMOVE lassen sich ganze Rechtecke des workfiles an eine andere Stelle verschieben.