Daten anlegen und ändern

#### Search Results

Search

# Daten anlegen und ändern

Dieser Abschnitt beschreibt die Funktionen, die bei allen Objekttypen zur Verfügung stehen, bei denen Hauptkommandos oder Zeilenkommandos verwendet werden können.

- Zeilen einfügen und löschen

- Zeilen kopieren, verschieben, überlagern und wiederholen

- Ein Fenster mit Daten kopieren oder verschieben

- Horizontale und vertikale Bereichsgrenzen einstellen

- Maskenzeile definieren

- Daten zwischen Bereichsgrenzen anordnen

- Daten zentrieren

- Daten ausrichten

- Physischen oder logischen Tabulator benutzen

- Zeilen in alphabetischer Reihenfolge sortieren

- Zeichenkette suchen

- Zeichenkette ersetzen

## Zeilen einfügen und löschen

Dieser Abschnitt beschreibt die Zeilenkommandos und Hauptkommandos, die zum Einfügen und Löschen von Zeilen zur Verfügung stehen.

- Verfügbare Zeilenkommandos

- POWER-Kommando

- DELETE-Kommando

### Verfügbare Zeilenkommandos

Zum Einfügen und Löschen von Zeilen auf dem Editor-Bildschirm stehen Ihnen folgende Zeilenkommandos zur Verfügung:

Zeilenkommando | Erläuterung
--- | ---
`D` | Löscht die markierte Zeile.
`Dn` | Löscht die nächsten `n` Zeilen.
`DD` | Markiert die erste Zeile eines zu löschenden Blocks. Zum Eingrenzen des Blocks ist ein zweites `DD`-Kommando nötig. Die Löschung erfolgt nach der Eingabe des zweiten `DD`-Kommandos..
`DX` | Löscht die mit `.X` markierte Zeile.
`DY` | Löscht die mit `.Y` markierte Zeile.
`DX-Y` | Löscht den Zeilenblock ab der mit `.X` markierten Zeile bis zur mit `.Y` markierten Zeile.
`I` | Fügt eine Zeile unterhalb der aktuellen Zeile ein. Der Editor wird auf den Einfügemodus umgeschaltet. Das heißt, wenn Sie in der neuen Zeile Daten oder ein Leerzeichen eintippen und Enter drücken, wird automatische eine neue Zeile eingefügt und der Cursor in diese Zeile platziert. Falls Sie in eine eingefügte Zeile keine neuen Daten eingeben und Enter drücken, verlässt der Editor den Einfügemodus, und die Leerzeile wird gelöscht. Wenn Sie eine Maskenzeile definiert haben und das Kommando `MASK` ist auf `ON` gesetzt, wird die Maskenzeile eingefügt, wenn Sie dieses Kommando absetzen.
`In` | Fügt `n` Zeilen unterhalb der aktuellen Zeile ein. Sie können in die neuen Zeilen Daten eingeben. Wenn Sie Enter drücken, werden nicht benutzte Zeilen gelöscht, eine Leerzeile bleibt jedoch erhalten, und der Cursor wird in diese Zeile platziert (d.h. der Editor bleibt im Einfügemodus).
`TE` | Schaltet den Editor in den Texteingabemodus. Das heißt, dass ab dieser Zeile der Editor-Bildschirm leer ist (ohne Zeilennummern) und dass Sie Daten eingeben können. Wenn Sie Enter drücken, werden alle übrig gebliebenen Leerzeilen gelöscht, Zeilennummern werden wieder angezeigt und der Text wird, unter Berücksichtigung der Ausrichtungseinstellungen innerhalb der eingestellten Randbegrenzungen neu formatiert. Siehe auch POWER-Kommando.
`W` | Öffnet ein einzeiliges Fenster. Es wird keine neue Zeile eingefügt, wenn Sie in dieses Fenster Daten eingeben und Enter drücken.
`Wn` | Öffnet ein Fenster mit `n` Zeilen. Wenn Sie Enter drücken, werden alle nicht benutzten Zeilen gelöscht.

### POWER-Kommando

Sie können auch das Hauptkommando `POWER` benutzen, um in den Texteingabemodus umzuschalten.

Wenn Sie das Hauptkommando `POWER` absetzen, erscheint ein leerer Editor-Bildschirm (ohne Zeilennummern), und Sie können Daten eingeben. Wenn Sie Enter drücken, werden übrig gebliebene Leerzeilen gelöscht, Zeilennummern werden wieder angezeigt und der Text wird, unter Berücksichtigung der Ausrichtungseinstellungen innerhalb der eingestellten Randbegrenzungen neu formatiert.

### DELETE-Kommando

Zum Löschen von Zeilen können Sie auch das Hauptkommando `DELETE` benutzen.

Beispiel:

    DEL C'Abc' .X .Y 10 30 ALL

Dieses Kommando löscht alle Zeilen, die die Zeichenkette `Abc` genau so wie hier angegeben enthalten zwischen den Spalten 10 bis 30 innerhalb des Blocks, der mit den Markierungen `.X` und `.Y` eingegrenzt ist.

Sie können alle weiter oben für das `FIND`-Kommando beschriebenen Operanden angeben. Ausnahme: Der Richtungsoperand `ALL` gibt die Löschung aller Zeilen mit der angegebenen Zeichenkette an. Ein nicht qualifiziertes `DELETE`-Kommando löscht die aktuelle Zeile.

## Zeilen kopieren, verschieben, überlagern und wiederholen

Mit den folgenden Zeilenkommandos können Sie Zeilen oder Datenblöcke kopieren, verschieben, überlagern und wiederholen.

Zeilenkommando | Erläuterung
--- | ---
`A` | Markiert die Zielzeile für ein Zeilenkommando zum Kopieren (`C`, `Cn`, `CC`) oder Verschieben (`M`, `Mn`, `MM`). Die Daten werden nach dieser Zeile eingefügt.
`B` | Markiert die Zielzeile für ein Zeilenkommando zum Kopieren (`C`, `Cn`, `CC`) oder Verschieben (`M`, `Mn`, `MM`). Die Daten werden vor dieser Zeile eingefügt.
`C` | Kopiert diese Zeile an die Stelle, die mit einem Zeilenkommando `A`, `B` or `O` markiert ist.
`Cn` | Kopiert die nächsten `n` Zeilen an die Position, die mit einem Zeilenkommando `A`, `B` or `O` markiert ist.
`CC` | Markiert die erste Zeile des zu kopierenden Blocks. Ein zweites Kommando `CC` ist nötig, um den Block einzugrenzen. Das Kopieren erfolgt, nachdem das Ziel mit einem Zeilenkommando `A`, `B` oder `O` markiert worden ist.
`CX` | Kopiert die mit `.X` markierte Zeile. Fügt die Daten nach dieser Zeile ein.
`CY` | Kopiert die mit `.Y` markierte Zeile. Fügt die Daten nach dieser Zeile ein.
`CX-Y` | Kopiert den Zeilenblock ab der Zeile, die mit `.X` markiert ist, bis zur Zeile, die mit `.Y` markiert ist. Fügt die Daten nach dieser Zeile ein.
`M` | Verschiebt diese Zeile an die Position, die mit einem Zeilenkommando `A`, `B` oder `O` markiert ist.
`Mn` | Verschiebt die nächsten `n` Zeilen an die Position, die mit einem Zeilenkommando `A` oder `B` markiert ist.
`MM` | Markiert die erste Zeile des zu verschiebenden Blocks. Ein zweites Zeilenkommando `MM` ist nötig, um den Block abzugrenzen. Das Verschieben erfolgt, nachdem das Ziel mit einem Zeilenkommando `A`, `B` oder `O` markiert worden ist.
`MX` | Verschiebt die mit `.X` markierte Zeile. Fügt die Daten nach dieser Zeile ein.
`MY` | Verschiebt die mit `.Y` markierte Zeile. Fügt die Daten nach dieser Zeile ein.
`MX-Y` | Verschiebt den Zeilenblock ab der Zeile, die mit `.X` markiert ist, zur Zeile, die mit `.Y` markiert ist. Fügt die Daten nach dieser Zeile ein.
`O` | Markiert die Zielzeile für ein Zeilenkommando zum Kopieren (`C`, `Cn`, `CC`) oder zum Verschieben (`M`, `Mn`, `MM`). Die Daten werden mit dieser Zeile zusammengeführt. (Es werden nur Leerzeichen innerhalb der Bereichsgrenzen geändert). Siehe auch Beispiel für das Überlagern von Daten.
`On` | Markiert diese Zeile und die nächsten n Zeilen als Zielzeilen für ein Kopier-Zeilenkommando (`C`, `Cn`, `CC`) oder Verschieben-Zeilenkommando (`M`, `Mn`, `MM`). Die kopierten oder verschobenen Zeilen werden mit diesen Zeilen zusammengeführt, d.h. Leerzeichen in den Zeilen werden überlagert. Siehe auch Beispiel für das Überlagern von Daten.
`OO` | Markiert die erste Zeile eines Zielzeilenblocks für ein Kopier-Zeilenkommando (`C`, `Cn`, `CC`) oder Verschiebe-Zeilenkommando (`M`, `Mn`, `MM`). Ein zweites Zeilenkommando `OO` ist nötig, um die letzte Zeile des Zielzeilenblocks zu markieren. Die kopierten oder verschobenen Zeilen werden mit diesen Zeilen zusammengeführt, d.h. Leerzeichen in den Zeilen werden überlagert. Siehe auch Beispiel für das Überlagern von Daten.
`R` | Wiederholt diese Zeile einmal.
`Rn` | Wiederholt diese Zeile `n` Mal.
`RR` | Markiert die erste Zeile eines Blocks, der wiederholt werden soll. Ein zweites Kommando `RR` ist nötig, um den Block einzugrenzen. Die Wiederholung erfolgt, nachdem das zweite Kommando `RR` eingegeben worden ist.
`RRn` | Wiederholt den Block, der durch zwei Zeilenkommandos `RRn` eingegrenzt ist, n Mal. Klammerkommandos `)` (siehe weiter unten) verschieben Text um die angegebene Anzahl an Spalten, jedoch nur innerhalb der angegebenen Begrenzungen, deshalb ist es möglich, dass der Text teilweise verschwindet.
`)` | Verschiebt diese Zeile ab der linken Begrenzung um eine Spalte nach Rechts.
`)n` | Verschiebt diese Zeile um `n` Spalten nach Rechts.
`))n` | Markiert die erste Zeile eines um `n` Spalten nach Rechts zu verschiebenden Blocks. Ein zweites Kommando `))n` ist nötig, um den Block einzugrenzen. Das Verschieben erfolgt, nachdem das zweite Kommando `))n` eingeben worden ist. Zwei nicht qualifizierte Zeilenkommandos `))` verschieben den Block um eine Spalte nach Rechts.
`(` | Verschiebt diese Zeile um eine Spalte nach Links.
`(n` | Verschiebt diese Zeile um `n` Spalten nach Links.
`((n` | Markiert die erste Zeile eines um `n` Spalten nach Links zu verschiebenden Blocks. Ein zweites Zeilenkommando `((n` ist nötig, um den Block einzugrenzen. Das Verschieben erfolgt, nachdem das zweite Kommando `((n` eingeben worden ist. Zwei nicht qualifizierte Zeilenkommandos `((` verschieben den Block um eine Spalte nach Links. Wenn Sie die Symbole `>` (größer als) oder `<` (kleiner als) benutzen (siehe unten), um Daten zu verschieben, dann ist das Verschieben innerhalb der gesetzten Begrenzungen maximal bis zum nächsten Zeichen, das kein Leerzeichen ist, möglich.
`>` | Verschiebt diese Zeile um eine Spalte nach Rechts.
`>n` | Verschiebt diese Zeile um `n` Spalten nach Links.
`>>n` | Markiert die erste Zeile eines um `n` Spalten nach Rechts zu verschiebenden Blocks. Ein zweites Zeilenkommando `>>` ist nötig, um den Block einzugrenzen. Das Verschieben erfolgt, nachdem das zweite Kommando `>>` eingeben worden ist. Zwei nicht qualifizierte Zeilenkommandos `>>` verschieben den Block um eine Spalte nach Rechts.
`<` | Verschiebt diese Zeile um eine Spalte nach Links.
`<n` | Verschiebt diese Zeile um `n` Spalten nach Links.
`<<n` | Markiert die erste Zeile eines um `n` Spalten nach Links zu verschiebenden Blocks. Ein zweites Zeilenkommando `<<` ist nötig, um den Block einzugrenzen. Das Verschieben erfolgt, nachdem das zweite Kommando `<<` eingeben worden ist. Zwei nicht qualifizierte Zeilenkommandos `<<` verschieben den Block um eine Spalte nach Links.

### Beispiel für das Überlagern von Daten

Mit einem Überlagerungszeilenkommando (`O`, `On` oder `OO`) können Sie einspaltige Listen in ein mehrspaltiges Format (d.h., in eine Tabellenform) zusammenführen. Sie können ein Überlagerungszeilenkommando in Verbindung mit einem Kopier-Zeilenkommando (`C`, `Cn` oder `CC`) oder einem Verschiebe-Zeilenkommando (`M`, `Mn` oder `MM`) benutzen.

Dies wird in den folgenden zwei Abbildungen veranschaulicht:

    EDIT-NAT:NATLIB1(JOB1JCL)-Program->Struct-Free-77K ------------ Columns 001 072
     COMMAND===>                                                    SCROLL===> CSR
    000090 //JOBNAME JOB NAT,MSGCLASS=X,CLASS=G,TIME=1400
    000100 /*JOBPARM LINES=2000
    000110 //COPY EXEC PGM=NATBAT,TIME=60,
    000120 // PARM=('DBID=9,FNR=33,FNAT=(,15),FSIZE=19',
    000130 // 'EJ=OFF,IM=D,ID='';'',MAINPR=1,INTENS=1')
    OO0140 //STEPLIB DD
    000150 //        DD
    000160 //        DD
    OO0170 //        DD
    MM0180                     DISP=SHR,DSN=SPF.SYSF.ADALOAD
    000190                     DISP=SHR,DSN=SPF.SYSF.LOAD
    000200                     DISP=SHR,DSN=SPF.SYSF.PROD.INST   * OPS INSTALL
    MM0210                     DISP=SHR,DSN=SPF.SYSF.SOURCE      * OPS DOCUMENTS
    000220 //DDCARD  DD *
    000230 ADARUN DA=9,DE=3380,SVC=249
    000240 //CMPRINT DD SYSOUT=X
    000250 //CMPRT01 DD SYSOUT=X
    000260 //CMWKF01 DD DUMMY
    000270 //CMSYNIN DD *
    000280 LOGON SYSMAIN2
    000290 CMD C C * FM  #FL DBID  #FD FNR  #FF TO  #TL DBID  #TD FNR  #TF REP
    000300 FIN
    000310 /*
    ****** **************************** bottom of data ****************************

    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

In der obigen Abbildung sind die Zeilen 180 bis 210 mit dem Zeilenkommando `MM` (Verschieben) markiert. Sie werden über die Zeilen 140 bis 170 gelegt, die mit dem Zeilenkommando `OO` (Überlagern) markiert sind.

Die folgende Abbildung zeigt das Ergebnis der Ausführung der Zeilenkommandos, die in der obigen Abbildung zu sehen sind. Die Zeilen 180 bis 220 sind über die Zeilen 140 bis 170 gelegt worden:

    EDIT-NAT:NATLIB1(JOB1JCL)-Program->Struct-Free-76K ------------ Checkpoint done
     COMMAND===>                                                    SCROLL===> CSR
    000090 //JOBNAME JOB NAT,MSGCLASS=X,CLASS=G,TIME=1400
    000100 /*JOBPARM LINES=2000
    000110 //COPY EXEC PGM=NATBAT,TIME=60,
    000120 // PARM=('DBID=9,FNR=33,FNAT=(,15),FSIZE=19',
    000130 // 'EJ=OFF,IM=D,ID='';'',MAINPR=1,INTENS=1')
    000140 //STEPLIB DD        DISP=SHR,DSN=SPF.SYSF.ADALOAD
    000150 //        DD        DISP=SHR,DSN=SPF.SYSF.LOAD
    000160 //        DD        DISP=SHR,DSN=SPF.SYSF.PROD.INST   * OPS INSTALL
    000170 //        DD        DISP=SHR,DSN=SPF.SYSF.SOURCE      * OPS DOCUMENTS
    000180 //DDCARD  DD *
    000190 ADARUN DA=9,DE=3380,SVC=249
    000200 //CMPRINT DD SYSOUT=X
    000210 //CMPRT01 DD SYSOUT=X
    000220 //CMWKF01 DD DUMMY
    000230 //CMSYNIN DD *
    000240 LOGON SYSMAIN2
    000250 CMD C C * FM  #FL DBID  #FD FNR  #FF TO  #TL DBID  #TD FNR  #TF REP
    000260 FIN
    000270 /*
    ****** **************************** bottom of data ****************************

    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

## Ein Fenster mit Daten kopieren oder verschieben

Sie können ein Fenster mit Daten für Verschiebe- oder Kopieraktionen markieren. Auf diese Weise können Sie Daten, die nicht am Anfang einer Zeile beginnen und nicht am Ende einer Zeile enden, kopieren oder verschieben. Diese Aktionen können Sie mittels Editor-Zeilenkommandos und/oder Editor-Hauptkommandos durchführen.

Wenn Sie ein Fenster definieren, werden alle Daten auf dem Bildschirm, die sich zwischen dem Anfang und dem Ende des Fensters befinden, zu einem Teil des Fensters.

Dieser Abschnitt behandelt folgende Themen:

- Verfügbare Zeilenkommandos

- Verfügbare Hauptkommandos

- Beispiel für die Benutzung eines Datenfensters

### Verfügbare Zeilenkommandos

Zeilenkommando | Erläuterung
--- | ---
`WS` | Markiert den Anfang eines Datenfensters. Die Cursor-Position markiert die Spalte, ab der die Daten gelesen werden. Falls sich der Cursor nicht in der Zeile befindet, bei der das Kommando eingegeben wurde, beginnt das Fenster in Spalte 1.
`WSn` | Das Datenfenster beginnt in Spalte `n` dieser Zeile.
`WE` | Markiert das Ende eines Datenfensters. Funktion wie bei `WS`. Falls das Fenster in derselben Zeile beginnen und enden soll, tippen Sie das `WS`-Kommando über das `WE`-Kommando. Der Editor bestätigt das eingestellte Fenster mit den Meldungen `WS` (`WSn`) und `WE` (`WEn`) im Präfixbereich bzw. mit `WW`, wenn sich Anfang und Ende des Fensters in derselben Zeile befinden. Bevor Sie ein neues Fenster definieren, müssen Sie das alte Fenster mit dem `RESET`-Kommando zurücksetzen, um einen Kommandokonflikt zu vermeiden.
`WEn` | Das Datenfenster endet in Spalte `n` dieser Zeile.
`WC` | Kopiert das Datenfenster. Die Cursor-Position markiert die Spalte, an der die Zeile aufgespalten werden soll, um die kopierten Daten einzufügen.
`WCn` | Spaltet diese Zeile in Spalte `n`, und kopiert die Daten zwischen die beiden Teilen dieser Zeile.
`WM` | Verschiebt das Datenfenster. Funktion wie bei `WC`, jedoch werden die ursprünglichen Daten nach dem Kopiervorgang gelöscht.
`WMn` | Spaltet diese Zeile in Spalte `n`, und verschiebt die Daten zwischen die beiden Teilen dieser Zeile.

### Verfügbare Hauptkommandos

Hauptkommando | Erläuterung
--- | ---
`WINDOW` | Definiert ein Fenster. Als Parameter werden die Startzeile und Startspalte und die Endzeile und Endspalte angeben. Es muss mindestens ein Parameter angegeben werden. Beispiele: `WINDOW 5 10 24 13` Definiert ein Fenster, das in Zeile 5/Spalte 24 beginnt und in Zeile 10/Spalte 13 endet. `WINDOW 5 10 24` Definiert ein Fenster, das in Zeile 5/Spalte 24 beginnt und in Zeile 10/letzte Spalte endet. `WINDOW 5 10` Definiert ein Fenster, das in Zeile 5/erste Spalte beginnt und in Zeile 10/letzte Spalte endet. `WINDOW 5 5` Definiert ein Fenster, das in Zeile 5/erste Spalte beginnt und in Zeile 5/letzte Spalte endet.
`CWINDOW` | Kopiert ein Fenster, das mit dem `WINDOW`-Kommando definiert wurde. Optionale Parameter geben die Zeile an, bei der das Fenster eingefügt werden soll. Beispiele: `CWINDOW 5` Kopiert das Fenster nach Zeile 5. `CWINDOW 5 24` Spaltet Zeile 5 bei Spalte 24 und kopiert das Fenster zwischen die beiden Teile.
`DWINDOW` | Löscht ein Datenfenster, das mit dem `WINDOW`-Befehl definiert wurde.
`MWINDOW` | Verschiebt ein Fenster, das mit dem `WINDOW`-Befehl definiert wurde. Funktion wie beim `CWINDOW`-Kommando, jedoch werden die ursprünglichen Daten nach dem Kopiervorgang gelöscht.

### Beispiel für die Benutzung eines Datenfensters

Dieser Abschnitt enthält ein Beispiel für das Definieren und Verschieben von Text mittels eines Datenfensters, wobei entweder Zeilenkommandos oder die entsprechenden Hauptkommandos zur Anwwendung kommen.

Das Beispiel bezieht sich auf den Text, der in Schritt 1 weiter unten gezeigt wird. Es wird davon ausgegangen, dass Sie den ganzen Satz, der mit `Note that when...` (Zeile 8) beginnt, so verschieben wollen, dass er auf den angezeigten Text folgt, der mit `...copy operations` (Zeile 3) endet.

Um ein Fenster mit Zeilenkommandos zu definieren und zu verschieben:

1. Geben Sie den unten abgebildeten Text ein:

       EDIT-NAT:NATLIB1(WINEX)-Text->Struct-Free-78K ----------------- Columns 001 072
        COMMAND===>                                                    SCROLL===> CSR
       ****** ****************************** top of data *****************************
       000001 Copy a Window with Data
       000002
       000003 You can specify a window with data for move or copy operations. This
       000004 allows you to copy or move data that does not start or end at the
       000005 beginning or end of a line. This function can be performed using
       000006 editor line commands and/or main commands.
       000007
       000008 Below are some examples of copying windows with data. Note that when
       000009 you define a window, all data on your screen between start and end of
       000010 the window become part of the window. Available line commands are:
       ****** **************************** bottom of data ****************************

       Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
             Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

2. Geben das Zeilenkommando `WS` in Zeile 8 (der ersten zu verschiebenden Datenzeile) ein. Positionieren Sie den Cursor in die betreffende Spalte (`N` des Worts `Note`) und drücken Sie Enter.

   Die Meldung `WS55` erscheint im Präfixbereich der Zeile 8 und zeigt die Nummer der gewählten Spalte an:

       EDIT-NAT:NATLIB1(WINEX)-Text->Struct-Free-78K ---------------- Block is pending
        COMMAND===>                                                    SCROLL===> CSR
       ****** ****************************** top of data *****************************
       000001 Copy a Window with Data
       000002
       000003 You can specify a window with data for move or copy operations. This
       000004 allows you to copy or move data that does not start or end at the
       000005 beginning or end of a line. This function can be performed using
       000006 editor line commands and/or main commands.
       000007
       WS55   Below are some examples of copying windows with data. Note that when
       000009 you define a window, all data on your screen between start and end of
       000010 the window become part of the window. Available line commands are:
       ****** **************************** bottom of data ****************************

       Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
             Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

3. Geben Sie das Zeilenkommando `WE` in Zeile 10 (die letzte Zeile der zu verschiebenden Daten) ein, platzieren Sie den Cursor auf die letzte zu verschiebende Spalte (Satzende-Zeichen (`.`) nach `window`) und drücken Sie Enter.

   Die Meldung `WE37` erscheint im Präfixbereich der Zeile 10:

       EDIT-NAT:NATLIB1(WINEX)-Text->Struct-Free-78K ---------------- Block is pending
        COMMAND===>                                                    SCROLL===> CSR
       ****** ****************************** top of data *****************************
       000001 Copy a Window with Data
       000002
       000003 You can specify a window with data for move or copy operations. This
       000004 allows you to copy or move data that does not start or end at the
       000005 beginning or end of a line. This function can be performed using
       000006 editor line commands and/or main commands.
       000007
       WS55   Below are some examples of copying windows with data. Note that when
       000009 you define a window, all data on your screen between start and end of
       WE37   the window become part of the window. Available line commands are:
       ****** **************************** bottom of data ****************************

       Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
             Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

4. Geben Sie das Zeilenkommando `WM` in Zeile 3 ein (die Daten werden in die Folgezeile, Zeile 4, verschoben), und bewegen Sie den Cursor in die Spalte, bei der Zeile 3 gesplittet werden soll (das Leerzeichen vor den Wort `This`). Drücken Sie Enter.

   Der angegebene Textabschnitt wird verschoben:

       EDIT-NAT:NATLIB1(WINEX)-Text->Struct-Free-78K ----------------- Checkpoint done
        COMMAND===>                                                    SCROLL===> CSR
       ****** ****************************** top of data *****************************
       000001 Copy a Window with Data
       000002
       000003 You can specify a window with data for move or copy operations.
       000004 Note that when
       000005 you define a window, all data on your screen between start and end of
       000006 the window become part of the window.
       000007 This
       000008 allows you to copy or move data that does not start or end at the
       000009 beginning or end of a line. This function can be performed using
       000010 editor line commands and/or main commands.
       000011
       000012 Below are some examples of copying windows with data.
       000013                                       Available line commands are:
       ****** **************************** bottom of data ****************************

       Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
             Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

Sie können das gleiche Ergebnis wie in der zuvor beschriebenen Anleitung erzielen, indem Sie die folgende Kommandoabfolge benutzen.

Um ein Fenster mit Hauptkommandos zu definieren und zu verschieben:

1. Geben Sie den Text ein, der unter Schritt 1 weiter oben abgebildet ist.

2. Geben Sie folgende Hauptkommandos in der Kommandozeile ein:

       WINDOW 8 10 55 37;MWINDOW 3 64

   Der angegebene Textabschnitt wird wie in Schritt 4 dargestellt verschoben.

## Horizontale und vertikale Bereichsgrenzen einstellen

Es gibt Editor-Kommandos, mit denen Sie bei bestimmten Funktionen die horizontalen und vertikalen Bereichsgrenzen einstellen können, zum Beispiel die Hauptkommandos `FIND`, `CHANGE`, `CEnter`, `ORDER`, `JLEFT` und `JRIGHT` sowie die entsprechenden Zeilenkommandos (Zum Beispiel `TC`, `TO`, `LJ` oder `RJ`).

Dieser Abschnitt behandelt folgende Themen:

- Bereichsgrenzen einstellen

- Einzelne oder mehrere Zeilen markieren

### Bereichsgrenzen einstellen

Mit dem Hauptkommando `BNDS` können Sie die horizontalen Bereichsgrenzen so wie in der nachfolgenden Beispiel-Anleitung beschrieben einstellen.

Um Bereichsgrenzen einzustellen und anzuzeigen:

1. Setzen Sie folgendes Hauptkommando ab:

       BNDS 20 50

   Die horizontalen Grenzen werden bei den Spalten 20 und 50 gesetzt.

2. Um die aktuelle Einstellung der Bereichsgrenzen anzuzeigen, setzten Sie das folgende Zeilenkommando ab:

       BNDS

   Die folgende Abbildung zeigt das Ergebnis des Hauptkommandos `BNDS 20 50`, auf das ein Zeilenkommando `BNDS` in Zeile 2 folgt:

       EDIT-NAT:NATLIB1(JOB1JCL)-Program->Struct-Free-77K ------------ Columns 001 072
        COMMAND===>                                                    SCROLL===> CSR
       ****** ****************************** top of data *****************************
       =cols> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
       =bnds>                    <                             >
       000010   RESET #JOBNAME(A8)
       000020   RESET #FD(N3) #FL(A8) #FF(N3)
       000030   RESET #TD(N3) #TL(A8) #TF(N3)
       000040   COMPRESS *INIT-USER 'SM' INTO #JOBNAME LEAVING NO SPACE
       000050   SET CONTROL 'WL60C6B005/010F'
       000060   INPUT  'Enter PARAMETERS FOR LIBRARY COPY:'
       000070    /     'FROM:   DBID:' #FD 'FNR:' #FF 'LIB:' #FL
       000080    /     'TO  :   DBID:' #TD 'FNR:' #TF 'LIB:' #TL
       000090 // #JOBNAME JOB JWO,MSGCLASS=X,CLASS=G,TIME=1400
       000100 /*JOBPARM LINES=2000
       000110 //COPY EXEC PGM=NATBAT21,REGION=2000K,TIME=60,
       000120 // PARM=('DBID=9,FNR=33,FNAT=(,15),FSIZE=19',
       000130 //       'EJ=OFF,IM=D,ID='';'',MAINPR=1,INTENS=1')
       000140 //STEPLIB  DD  DISP=SHR,DSN=OPS.SYSF.V5.ADALOAD
       000150 //         DD  DISP=SHR,DSN=OPS.SYSF.PROD.LOAD
       000160 //DDCARD   DD  *
       000170 ADARUN DA=9,DE=3380,SVC=249
       000180 //CMPRINT  DD  SYSOUT=X
       000190 //CMPRT01 DD SYSOUT=X
       000200 //CMWKF01 DD DUMMY
       000210 //CMSYNIN DD *
       000220 LOGON SYSMAIN2
       000230 CMD C C * FM  #FL DBID  #FD FNR  #FF TO  #TL DBID  #TD FNR  #TF REP
       000240 FIN
       000250 /*
       Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
             Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

### Einzelne oder mehrere Zeilen markieren

Sie können die aktuelle Zeile (die sich zurzeit am Anfang des Editierbereichs befindet) oder einen Zeilenblock markieren, indem Sie entweder das Hauptkommando `LABEL` oder entsprechende Zeilenkommandos benutzen.

Um aktuelle Zeilen mit `LABEL` zu markieren:

1. Setzen Sie das folgende Hauptkommando ab:

       LABEL .X

   Die aktuelle Zeile wird mit `.X` markiert.

2. Um einen Zeilenblock einzugrenzen, können Sie jetzt zur nächsten gewünschten Begrenzungszeile blättern und dann das folgende Hauptkommando absetzen:

       LABEL .Y

   Die neue aktuelle Zeile wird mit `.Y` markiert, womit die letzte Zeile eines Zeilenblocks gekennzeichnet ist.

Um bestimmte Zeilen mittels Zeilenkommandos zu markieren:

1. Setzen Sie neben der ersten zu markierenden Zeile folgendes Zeilenkommando ab:

       .X

   Die angegebene Zeile wird mit `.X` markiert.

2. Setzen Sie neben der letzten zu markierenden Zeile folgendes Zeilenkommando ab:

       .Y

   Die angegebene Zeile wird mit `.Y` markiert, womit ein Zeilenblocks gekennzeichnet ist, der bei der mit `.X` markierten Zeile beginnt.

Tipp
Sie können zum Markieren von Zeilen eine beliebige Zeichenkette benutzen, z.B. `.START` und `.END`.

Beispiele für die Verwendung von Markierungszeilen siehe Zeichenkette suchen und Zeichenkette ersetzen.

## Maskenzeile definieren

Sie können Daten definieren, die automatisch in eine Zeile platziert werden, und zwar mittels einer Zeileneinfüge-Operation (z.B. mit dem Zeilenkommando `I` oder `W`). Eine solche Zeile wird als Maskenzeile bezeichnet. Eine Maskenzeile ist nützlich, wenn Sie mehrere Codezeilen schreiben müssen, die identisch oder sehr ähnlich sind.

Anmerkung
Während einer Bearbeitungssitzung können Sie nur eine Maskenzeile haben. Wenn Sie eine neue Maskenzeile definieren, wird eine bereits vorhandene Maskenzeilendefinition automatisch mit dem neuen Wert aktualisiert.

Um eine Maskenzeile zu definieren und zu benutzen:

1. Setzen Sie folgendes Zeilenkommando ab:

       MASK

   Über der Zeile, in der Sie das Kommando eingegeben haben, erscheint eine Leerzeile mit `=mask>`.

2. Geben Sie die Daten, die Sie als Maskenzeile definieren wollen, in die Leerzeile ein, und drücken Sie Enter.

   Die Maskenzeile steht nun solange für den aktuellen Quellcode zur Verfügung, bis Sie die Maske mit einer neuen Maskenzeile aktualisieren oder bis Sie die Maskenfunktion deaktivieren.

3. Setzen Sie folgendes Hauptkommando ab:

       MASK ON

   Die Maskenfunktion wird aktiviert. Die definierte Maske erscheint nun in allen Zeilen, die durch eine Zeileneinfüge-Operation hinzugefügt werden.

4. Setzen Sie ein Einfüge-Zeilenkommando ab, zum Beispiel:

       I2

   Es werden zwei neue Zeilen mit dem Text aus der Maskenzeile in den Quellcode eingefügt. Der Text einer Maskenzeile erscheint in allen Zeilen, die durch ein Einfüge-Zeilenkommando hinzugefügt werden.

5. Ändern Sie den Text in den neuen Zeilen. Wenn Sie den Text nicht ändern, wird jede eingefügte Zeile gelöscht, wenn Sie das nächste Mal Enter drücken.

6. Falls erforderlich, deaktivieren Sie die Maskenfunktion mit dem folgende Hauptkommando:

       MASK OFF

   Das Kommando `MASK OFF` deaktiviert die Maskenfunktion, löscht aber nicht den Inhalt der Maskenzeile.

Siehe auch `MASK` in Hauptkommandos (Übersicht).

## Daten zwischen Bereichsgrenzen anordnen

Sie können die Einrückung angegebener Zeilen ändern, indem Sie das Hauptkommando `ORDER` zusammen mit einer Bereichsgrenzen-Einstellung benutzen. Beispiel: Die Kommandoabfolge

    BNDS 3;ORDER 5 20

verschiebt die Zeilen 5 bis 20 soweit nach Rechts, dass sie in Spalte 3 beginnen.

Anmerkung
Falls das Ende einer neu angeordneten Zeile jenseits der rechten Bereichsgrenze zu liegen käme, wird sie automatisch gesplittet.

Um die verschobenen Daten wieder nach links auszurichten, benutzen Sie das Kommando `JLEFT`.

Sie können außerdem die Einrückung von Zeilen oder eines Zeilenblocks ändern, indem Sie Zeilenkommandos absetzen. Dabei gilt ebenfalls, dass, falls das Ende einer Zeile jenseits der rechten Bereichsgrenze zu liegen käme, diese Zeile automatisch gesplittet wird.

Zeilenkommando | Erläuterung
--- | ---
`TF` | Ordnet die Daten ab der Zeile neu an, in der es eingegeben wurde, bis zum Ende des Paragraphs oder bis zur nächsten Leerzeile bei der rechten Bereichsgrenze. Dieses Zeilenkommando kann mit einem numerischen Wert, der die rechte Bereichsgrenze angibt, eingegeben werden. Beispiel: Das Zeilenkommando `TF50` ordnet die Daten bei Spalte 50.
`TO` | Markiert eine Zeile, die ausgerichtet werden soll.
`TOO` | Markiert die erste Zeile eines Datenblocks, der ausgerichtet werden soll. Ein zweites Zeilenkommando `TOO` ist nötig, um den Block einzugrenzen. Die Ausrichtung erfolgt, nachdem das zweite `TOO`-Kommando abgesetzt worden ist.

Die Daten können innerhalb der eingestellten Bereichsgrenzen neu angeordnet und bündig mit der linken, der rechten oder mit beiden Bereichsgrenzen angeordnet werden. Dazu dient das Kommando `JUSTIFY`. Beispiel: Das Kommando:

    BNDS 6 60;JUSTIFY BOTH

aktiviert die Ausrichtung auf die Spalten 5 und 60. Um die Neuausrichtung auszuführen, müssen Sie einen Datenblock mit dem Zeilenkommando `TOO` markieren.

Außerdem bietet der Editor ein Zeilenkommando, mit dem Sie eine einzelne Zeile in zwei Zeilen aufspalten können. Geben Sie das Zeilenkommando `S` im Präfixbereich der Zeile ein, die Sie aufspalten möchten. Platzieren Sie den Cursor an die Stelle, an der die Aufspaltung erfolgen soll, und drücken Sie Enter.

## Daten zentrieren

Der Editor bietet Kommandos, mit denen Sie angegebene Daten innerhalb eingestellter Bereichsgrenzen zentrieren können. Beispiel: Die Kommandosequenz

    BNDS 5 60;CEnter 5 15

zentriert die Daten in den Zeilen 5 bis 15 zwischen den Spalten 5 und 60.

Anmerkung
Nur der Text zwischen den Bereichsgrenzen wird zentriert. Der Text links und rechts der Bereichsgrenzen ist nicht betroffen.

Alternativ können Sie Zeilenkommandos zum Ausführen der Zentrierungsfunktion benutzen:

Zeilenkommando | Erläuterung
--- | ---
`TC` | Zentriert diese Zeile innerhalb der eingestellten Bereichsgrenzen.
`TCC` | Markiert die erste Zeile in einem Datenblock, der zentriert werden soll. Ein zweites Zeilenkommando `TCC` ist nötig, um den Block einzugrenzen. Die Zentrierung erfolgt, nachdem das zweite Kommando `TCC` abgesetzt worden ist.

## Daten ausrichten

Der Editor bietet verschiedene Hauptkommandos und Zeilenkommandos, mit denen Sie Zeilen oder Datenblöcke auf dem Bildschirm neu ausrichten können, und zwar in Abhängigkeit von den horizontalen Bereichsgrenzen, die Sie eingestellt haben (Hauptkommando `BNDS`); siehe Horizontale und Vertikale Bereichsgrenzen einstellen.

Die Hauptkommandos `JLEFT` und `JRIGHT` richten die Daten bündig mit der linken bzw. der rechten Bereichsgrenze aus. Beispiel: Die Kommandosequenz

    BNDS 16 80;JLEFT 140 170

richtet die Daten zwischen den Spalten 16 bis 80 in den Zeilen 140 bis 170 linksbündig mit Spalte 16 aus.

Die folgende Abbildung veranschaulicht dieses Beispiel:

    EDIT-NAT:NATLIB1(JOB1JCL)-Program->Struct-Free-77K ------------ Columns 001 072
     COMMAND===> BNDS 16 80;JLEFT 140 170                           SCROLL===> CSR
    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
    000090 // #JOBNAME JOB NAT,MSGCLASS=X,CLASS=G,TIME=1400
    000100 /*JOBPARM LINES=2000
    000110 //COPY EXEC PGM=NATBAT,TIME=60,
    000120 // PARM=('DBID=9,FNR=33,FNAT=(,15),FSIZE=19',
    000130 //       'EJ=OFF,IM=D,ID='';'',MAINPR=1,INTENS=1')
    000140 //STEPLIB  DD           DISP=SHR,DSN=SPF.SYSF.ADALOAD
    000150 //         DD           DISP=SHR,DSN=SPF.SYSF.LOAD
    000160 //         DD           DISP=SHR,DSN=SPF.SYSF.PROD.INST  * OPS INSTALL
    000170 //         DD           DISP=SHR,DSN=SPF.SYSF.SOURCE     * OPS DOCUMENTS
    000180 //DDCARD   DD  *
    000190 ADARUN DA=9,DE=3380,SVC=249
    000200 //CMPRINT  DD  SYSOUT=X
    000210 //CMPRT01 DD SYSOUT=X
    000220 //CMWKF01 DD DUMMY
    000230 //CMSYNIN DD *
    000240 LOGON SYSMAIN2
    000250 CMD C C * FM  #FL DBID  #FD FNR  #FF TO  #TL DBID  #TD FNR  #TF REP
    000260 FIN
    000270 /*
    ****** **************************** bottom of data ****************************

    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

Der folgende Bildschirm zeigt das Ergebnis des Kommandos, das in der Kommandozeile des obigen Bildschirms angezeigt wird:

    EDIT-NAT:NATLIB1(JOB1JCL)-Program->Struct-Free-77K ------ File has been ordered
     COMMAND===>                                                    SCROLL===> CSR
    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
    000090 // #JOBNAME JOB NAT,MSGCLASS=X,CLASS=G,TIME=1400
    000100 /*JOBPARM LINES=2000
    000110 //COPY EXEC PGM=NATBAT,TIME=60,
    000120 // PARM=('DBID=9,FNR=33,FNAT=(,15),FSIZE=19',
    000130 //       'EJ=OFF,IM=D,ID='';'',MAINPR=1,INTENS=1')
    000140 //STEPLIB  DD  DISP=SHR,DSN=SPF.SYSF.ADALOAD
    000150 //         DD  DISP=SHR,DSN=SPF.SYSF.LOAD
    000160 //         DD  DISP=SHR,DSN=SPF.SYSF.PROD.INST  * OPS INSTALL
    000170 //         DD  DISP=SHR,DSN=SPF.SYSF.SOURCE     * OPS DOCUMENTS
    000180 //DDCARD   DD  *
    000190 ADARUN DA=9,DE=3380,SVC=249
    000200 //CMPRINT  DD  SYSOUT=X
    000210 //CMPRT01 DD SYSOUT=X
    000220 //CMWKF01 DD DUMMY
    000230 //CMSYNIN DD *
    000240 LOGON SYSMAIN2
    000250 CMD C C * FM  #FL DBID  #FD FNR  #FF TO  #TL DBID  #TD FNR  #TF REP
    000260 FIN
    000270 /*
    ****** **************************** bottom of data ****************************

    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

Die Kommandosequenz:

    BNDS 10;JRIGHT 15

richtet die Daten rechts von Spalte 10 in Zeile 15 bis zum Ende des Bildschirms bündig mit der letzten Spalte des Editor-Bildschirms (Spalte 88 des Terminal-Bildschirms) aus.

Alternativ können Sie Zeilen ausrichten, indem Sie eines der nachfolgend aufgeführten Zeilenkommandos benutzen:

Zeilenkommando | Erläuterung
--- | ---
`LJ` | Richtet die Daten innerhalb der eingestellten Begrenzungen in dieser Zeile bündig mit der linken Begrenzung aus.
`LJJ` | Markiert die die erste Zeile eines Datenblocks innerhalb der Begrenzungen (die mit dem Hauptkommando `BNDS` eingestellt wurden), der linksbündig ausgerichtet werden soll. Ein zweites Zeilenkommando `LJJ` ist nötig, um den Block einzugrenzen. Die Ausrichtung erfolgt, nachdem das zweite Kommando `LJJ` abgesetzt worden ist.
`RJ` | Richtet die Daten innerhalb der eingestellten Begrenzungen in dieser Zeile bündig zur rechten Begrenzung aus.
`RJJ` | Markiert die erste Zeile eines Datenblocks innerhalb der Begrenzungen (die mit dem Hauptkommando `BNDS` eingestellt wurden), der rechtsbündig ausgerichtet werden soll. Ein zweites Zeilenkommando `RJJ` ist nötig, um den Block einzugrenzen. Die Ausrichtung erfolgt, nachdem das zweite Kommando `RJJ` abgesetzt worden ist.

Sie können Daten auch bündig zur linken Begrenzung ausrichten oder Daten zwischen der linken und der rechten Begrenzung ausrichten, indem Sie das Kommando `JUSTIFY` benutzen.

Beispiel: Die Kommandosequenz

    BNDS 10 60;JUSTIFY LEFT

ermöglicht die Ausrichtung mit der linken Begrenzung. Markieren Sie einen Datenblock mit zwei Zeilenkommandos `TOO` (Erläuterung weiter unten), um die Daten zwischen den Spalten 10 und 60 so neu zu formatieren, dass sie bündig mit Zeile 10 ausgerichtet sind.

## Physischen oder logischen Tabulator benutzen

Dieser Abschnitt beschreibt, wie Sie das Hauptkommando `TABS` und/oder das Zeilenkommando `TABS` benutzen können, um die Tabulatorstopps zu steuern.

In den Tabellierungsbeispielen, die in diesem Abschnitt enthalten sind, wird davon ausgegangen, dass das kaufmännische Und-Zeichen (&) als Tabulatorzeichen verwendet wird und dass das Zeilenkommando `COLS` abgesetzt worden ist, um die Spaltenpositionen anzuzeigen.

Dieser Abschnitt behandelt folgende Themen:

- Hauptkommando TABS benutzen

- Zeilenkommando TABS benutzen

- Beispiel 1 - Tab Positionen

- Beispiel 2 - TABS RIGHT

- Beispiel 3 - TABS DECIMAL

- Beispiel 4 - Gemischte Ausrichtung

- Beispiel 5 - Leerzeichen als Tabulationssymbol

### Hauptkommando TABS benutzen

Wenn Sie das Hauptkommando `TABS ON` absetzen, werden die Standard-Tabulatorpositionen, die in Ihrem Editor-Profil eingestellt sind, eingeschaltet, und `tabs on std` erscheint in Ihrem Profil. Um die Tabulatorstopps wieder auszuschalten, müssen Sie das Hauptkommando `TABS OFF` absetzen.

Ausführliche Informationen zur Kommandosyntax, die für das Hauptkommando `TABS` gilt, finden Sie im entsprechenden Abschnitt unter Hauptkommandos (Übersicht).

Dieser Abschnitt behandelt folgende Themen:

- Standard-Tabulatorpositionen einstellen
- Logisches Tabulatorzeichen einstellen
- Ausrichtungsparameter einstellen

#### Standard-Tabulatorpositionen einstellen

Um die Tabulatorfunktion einzuschalten und die Standard-Tabulatorpositionen für Ihr Profil beispielsweise auf die Spalten 10, 20, 30, 40 und 50 einzustellen, müssen Sie das Hauptkommando `TABS 10 20 30 40 50` absetzen.

#### Logisches Tabulatorzeichen einstellen

Um die Tabulatorfunktion einzuschalten und das logische Tabulatorzeichen einzustellen, beispielsweise das &-Zeichen, müssen Sie das Hauptkommando `TABS &` absetzen.

Sie können Daten eingeben und diese automatisch zu einer bestimmtem Tabulatorposition verschieben, indem Sie vor den Daten ein logisches Tabulatorzeichen eingeben. Ein einzelnes Tabulatorzeichen verschiebt die Daten an die nächste Tabulatorposition, zwei Tabulatorzeichen verschieben die Daten an die zweite Tabulatorposition usw.

#### Ausrichtungsparameter einstellen

Außer den Tabulatorpositionen können Sie mit dem Hauptkommando `TABS` noch folgende Parameter angeben:

Parameter | Erläuterung
--- | ---
`DECIMAL` | Ordnet die Daten so an, dass sich das darin enthaltene Dezimalzeichen an der Tabulatorposition befindet. Siehe auch Beispiel 3 - TABS DECIMAL.
`LEFT` | Ordnet die Daten links von der Tabulatorposition an. Siehe auch Beispiel 1 - Tab Positions.
`RIGHT` | Ordnet die Daten rechts von der Tabulatorposition an. Siehe auch Beispiel 2 - TABS RIGHT.

Um das aktuelle logische Tabulatorzeichen und den Verschiebeparameter (unter Ausschluss der Tabulatorpositionen) anzuzeigen, setzen Sie das Hauptkommando `PROFILE` ab.

### Zeilenkommando TABS benutzen

Wenn Sie das Zeilenkommando `TABS` in einer beliebigen Zeile absetzen, werden in dieser Zeile die in Ihrem Editor-Profil eingestellten Tabulatorpositionen angezeigt und mit einem Stern (*) gekennzeichnet, falls kein logisches Tabulatorzeichen gesetzt worden ist. Mit diesem Kommando wird die Tabulatorfunktion nicht eingeschaltet.

Beispiel: Setzen Sie das Zeilenkommando `TABS` ab, um die Positionen anzuzeigen, die mit dem Hauptkommando `TABS 10 20 30 40 50` eingestellt worden sind.

Dadurch werden die aktuellen Tabulatorpositionen folgendermaßen angezeigt:

    =tabs>             *        *        *        *         *         *

#### Mehrere logische Tabulatorzeichen und gemischte Ausrichtungsparameter einstellen

Um Daten in einer bestimmten Spalte mit einer bestimmten Einrückung tabellarisch darzustellen, sind mehrere logische Tabulatorzeichen und gemischte Ausrichtungsparameter möglich.

Um mehrere logische Tabulatorzeichen einzustellen, setzen Sie das Zeilenkommando `TABS` ab und überschreiben Sie jeden Stern (*) mit einem Sonderzeichen. Jegliche Daten, die Sie unter Voranstellung eines dieser Sonderzeichen eingeben, werden in der entsprechenden Spalte tabuliert.

Um gemischte Ausrichtungsparameter einzustellen, geben Sie rechts neben jedem logischem Tabulatorzeichen `L` (Links), `R` (Rechts) oder `D` (Dezimal) für linksbündige, rechtsbündige bzw. am Dezimalzeichen orientierte Ausrichtung ein.

Siehe auch Beispiel 4 - Gemischte Ausrichtung.

### Beispiel 1 - Tab Positionen

Das Kommando

    TABS 10 20 40 LEFT

aktiviert logische Tabulatoren bei den Tabulatorspalten 10, 20 und 40 mit linksbündiger Ausrichtung. Nachdem Sie Enter gedrückt haben, wird die eingegebene Textzeile

    &abc &def &ghi

folgendermaßen angezeigt:

    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6
                    abc       def                 ghi

### Beispiel 2 - TABS RIGHT

Das Kommando

    TABS RIGHT

aktiviert logische Tabulatoren mit rechtsbündiger Ausrichtung. Nachdem Sie Enter gedrückt haben, wird die eingegebene Textzeile

    &abc &def &ghi

folgendermaßen angezeigt:

    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6
                  abc       def                 ghi

### Beispiel 3 - TABS DECIMAL

Das Kommando

    TABS DECIMAL

aktiviert logische Tabulatoren mit Ausrichtung am Dezimalzeichen an der Tabulatorposition. Nachdem Sie Enter gedrückt haben, wird die eingegebene Textzeile

    &15.27$ &16.3 EUR &13 IS

folgendermaßen angezeigt:

    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6
                  15.27$    16.3 EUR             13 IS

### Beispiel 4 - Gemischte Ausrichtung

Setzen Sie folgendes Kommando ab:

    TABS 10 20 30 40 50

Setzen Sie dann das Zeilenkommando `TABS` ab. Dadurch werden die aktuellen Tabulatorpositionen folgendermaßen angezeigt:

    =tabs>          *         *         *         *         *

Geben Sie je nach Bedarf neben jeder Tabulatorposition ein `L`, `R` oder `D` ein (an nicht markierten Tabulatorpositionen wird der Wert des letzten `TAB`-Kommandos übernommen):

    =tabs>          *R        *D        *D        *D        *L

Nachdem Sie Enter gedrückt haben, wird die eingegebene Textzeile

    &start &0.01 &0.02 &0.03 &end

folgendermaßen angezeigt:

    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6
                start        0.01      0.02      0.03       end

### Beispiel 5 - Leerzeichen als Tabulationssymbol

Setzen Sie folgendes Kommando ab:

    TABS ' '

Es aktiviert die Tabulatorfunktion mit einem Leerzeichen als Tabulatorzeichen. Nachdem Sie Enter gedrückt haben, wird die eingegebene Textzeile

    this is a blank tabulation

folgendermaßen angezeigt:

    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6
                    this      is        a         blank     tabulation

## Zeilen in alphabetischer Reihenfolge sortieren

Sie können Datenzeilen in aufsteigender oder absteigender alphabetischer Reihenfolge nach Sortierkriterien sortieren. Beispiel: Das Kommando

    SORT 10 15

sortiert alle Zeilen im Quellcode in aufsteigender Reihenfolge entsprechend den Zeichen ab Spalte 10 bis zur Spalte 15.

Um nur einen Zeilenblock zu sortieren, können Sie beispielsweise die Zeilen, an denen der Block anfangen und enden soll, mit `.X` bzw.`.Y` markieren. Das Kommando:

    SORT .X .Y D

sortiert alle Zeilen in dem mit `.X` und `.Y` markierten Block in absteigender Reihenfolge.

Um beispielsweise einen Zeilenblock entsprechend den Zeichen, die in Spalte 5 beginnen und in Spalte 20 enden, zu sortieren, markieren Sie die Zeilen, wo der Block anfangen und enden soll, mit `.X` und `.Y`. Das Kommando

    SORT 5 20 .X .Y

sortiert alle Zeilen in dem mit `.X` und `.Y` markierten Block in aufsteigender Reihenfolge entsprechend den Zeichen ab Spalte 5 bis zur Spalte 20.

## Zeichenkette suchen

Um eine bestimmte Zeichenkette zu finden, können Sie das Hauptkommando `FIND` mit Operanden benutzen, um die die Zeichenkette, den zu durchsuchenden Bereich und die Suchrichtung zu definieren. Der Cursor wird auf das erste Zeichen der gefundenen Zeichenkette platziert. Falls die Zeile, die die gesuchte Zeichenkette enthält, von der Anzeige ausgeschlossen ist, wird sie jetzt in die Anzeige aufgenommen.

Die folgenden Abschnitte beschreiben die möglichen Kommando-Operanden.

- Operand für die Definition der Zeichenkette

- Operand für die Suche nach Übereinstimmungen

- Operand für die Angabe der Suchrichtung

- Operand für die Angabe des Zeilentyps

- Block-Operand

- Spalten-Operand

- Beispiele für das FIND-Kommando

### Operand für die Definition der Zeichenkette

Der Operand für die Definition der Zeichenkette definiert die zu suchende Zeichenkette.

Folgende Angaben sind möglich:

Operand | Erläuterung
--- | ---
`*` | Findet die im vorangehenden Kommando `FIND` angegebene Zeichenkette.
`'abc'` | Findet die Zeichenkette `abc` unabhängig davon, ob sie in Klein- oder Großschreibung vorliegt.
`C'Abc'` | Findet exakt die hier Zeichenkette eingegebene Zeichenkette.
`P'a(char)c'` | Findet die Zeichenkette, deren erstes Zeichen ein `a` und deren drittes Zeichen ein `c` ist. `(char)` steht für ein Sonderzeichen, das als Platzhalterzeichen (Wildcard) fungiert. Bedeutung:
`=` | beliebiges Zeichen
`§` | alphabetisches Zeichen
`#` | numerisches Zeichen
`$` | Sonderzeichen
`^` | nicht-Leerzeichen
`-` | nicht-numerisches Zeichen
`<` | Zeichen in Kleinschreibung
`>` | Zeichen in Großschreibung
`T'abc'` | Findet die Zeichenkette `abc` unabhängig davon, ob sie in Klein- oder Großschreibung vorliegt.
`X'D4A8'` | Findet die Zeichenkette, die dem Hexadezimalwert `D4A8` entspricht.

### Operand für die Suche nach Übereinstimmungen

Der Operand für die Suche nach Übereinstimmungen gibt an, ob eine besondere Ausprägung der Zeichenkette gefunden werden soll. Folgende Optionen sind verfügbar:

Operand | Erläuterung
--- | ---
`CHARS` | Ohne Einschränkungen (jede beliebige Ausprägung der Zeichenkette).
`PREFIX` | Nur die Ausprägungen, die die Vorsilbe (Präfix) eines Wortes sind.
`SUFFIX` | Nur die Ausprägungen, die die Nachsilbe (Suffix) eines Wortes sind.
`WORD` | Nur die Ausprägungen, die ein Wort bilden.

Die Standardeinstellung ist `CHARS`.

### Operand für die Angabe der Suchrichtung

Der Operand für die Angabe der Suchrichtung gibt an, in welcher Richtung die Suche erfolgen soll.

Folgende Optionen sind verfügbar:

Operand | Erläuterung
--- | ---
`ALL` | Jede beliebige Ausprägung der Zeichenkette (Suche in allen Richtungen).
`FIRST` | Erstes Vorkommen der Zeichenkette.
`LAST` | Letztes Vorkommen der Zeichenkette.
`NEXT` | Nächstes Vorkommen der Zeichenkette ab der Cursor-Position.
`PREV` | Vorheriges Vorkommen der Zeichenkette.

Die Standardeinstellung ist `NEXT`.

### Operand für die Angabe des Zeilentyps

Der Operand für die Angabe des Zeilentyps gibt an, ob nur nach ausgeschlossenen oder nur nach eingeschlossenen Zeilen gesucht werden soll. Folgende Optionen sind verfügbar:

Operand | Erläuterung
--- | ---
`X` | Nur nach Zeilen suchen, die von der Anzeige ausgeschlossen sind.
`NX` | Nur nach Zeilen suchen, die nicht von der Anzeige ausgeschlossen sind.

Wenn dieser Operand weggelassen wird, durchsucht der Editor alle Daten nach der gegebenen Zeichenkette, in von der Anzeige ausgeschlossenen und nicht von der Anzeige ausgeschlossenen Zeilen. Wird die Zeichenkette in einer ausgeschlossenen Zeile gefunden, dann wird die Zeile wieder zur Anzeige gebracht.

### Block-Operand

Wenn Sie Zeilen oder einen Zeilenblock markiert haben, können Sie den Block-Operanden benutzen, um den Suchbereich für das `FIND`-Kommando einzuschränken.

Beispiele für den Gebrauch des Block-Operanden:

Operand | Erläuterung
--- | ---
`.X` | Suche ab der mit `.X` markierten Zeile bis zum Ende der Daten.
`.X .Y` | Suche ab der mit `.X` markierten Zeile bis zur Zeile, die mit `.Y` markiert ist.

Dabei können `X` und `Y` eine beliebige alphabetische oder eine aus vier Zeichen bestehende Zeichenkette sein.

### Spalten-Operand

Mit dem Spalten-Operanden können Sie die Suche nach der gegebenen Zeichenkette zwischen bestimmten Spalten eingrenzen. Beispiele für den Gebrauch des Spalten-Operanden:

Operand | Erläuterung
--- | ---
`20` | Suche nach der gegebenen Zeichenkette ab Spalte 20 (das erste Zeichen der Zeichenkette muss in Spalte 20 sein).
`20 40` | Suche nach der gegebenen Zeichenkette zwischen Spalte 20 bis 40.

### Beispiele für das FIND-Kommando

    F C'HILITE' X PREV

Suche nach dem vorangegangenen Vorkommen der Zeichenkette `HILITE`, und zwar exakt wie hier eingegeben. Suche nur nach ausgeschlossenen Zeilen.

    F P'RCV#' .X .Z 20 30

Suche nach der Zeichenkette, die mit `RCV` beginnt, mit einem numerischen vierten Zeichen zwischen dem Block `.X .Z`, und zwischen den Spalten 20 bis 30.

    F X'6C' SUFFIX NX

Suche nach dem Zeichen, das dem Hexadezimalwert `6C` entspricht, und zwar nur in nicht von der Anzeige ausgeschlossenen Zeilen. Das Zeichen muss am Ende eines Wortes stehen.

Command | Erläuterung
--- | ---
`F C'HILITE' X PREV` | Suche nach dem ersten Vorkommen der Zeichenkette `HILITE`, und zwar exakt wie hier eingegeben. Suche nur in ausgeschlossenen Zeilen.
`F P'RCV#' .X .Z 20 30` | Suche nach der Zeichenkette, die mit `RCV` beginnt, mit einem numerischen vierten Zeichen zwischen dem Block `.X .Z`, und zwischen den Spalten 20 bis 30.
`F X'6C' SUFFIX NX` | Suche nach dem Zeichen, das dem Hexadezimalwert `6C` entspricht, und zwar nur in nicht von der Anzeige ausgeschlossenen Zeilen. Das Zeichen muss am Ende eines Wortes stehen.

Falls die zu suchende Zeichenkette einzelne Hochkommazeichen enthält, müssen Sie im `FIND`-Kommando ein anderes Trennzeichen benutzen, zum Beispiel doppelte Hochkommazeichen:

    FIND C"'string'"

Mit dem Hauptkommando `RFIND` können Sie ein vorangegangenes `FIND`-Kommando wiederholen.

## Zeichenkette ersetzen

Sie können eine gegebene Zeichenkette suchen und durch eine andere Zeichenkette ersetzen, indem Sie das Hauptkommando `CHANGE` benutzen.

Falls die zu ersetzende Zeichenkette Apostrophe enthält, müssen Sie im `CHANGE`-Kommando ein anderes Trennzeichen benutzen, zum Beispiel Anführungszeichen:

    CHANGE "'string1'" "'string2'"

Beim `CHANGE`-Kommando können Sie die gleichen Operanden wie beim `FIND`-Kommando benutzen. Beim `CHANGE`-Kommando bedeuten jedoch die Richtungsoperanden `ALL`, dass alle Vorkommen der angegebenen Zeichenkette geändert werden sollen.

Nachdem der Ersetzungsvorgang abgeschlossen ist, erscheint im Präfixbereich der geänderten Zeile die Meldung `==chg>`

Dieser Abschnitt behandelt folgende Themen:

- Beispiele für das CHANGE-Kommando

- Kommandos RFIND und RCHANGE

### Beispiele für das CHANGE-Kommando

Kommando | Erläuterung
--- | ---
`CHG 'LOW' 'HIGH'` | Ersetzt das erste Vorkommen von `HIGH` (Groß-/Kleinschreibung wird nicht beachtet).
`CHG C'OPS' 'SPF' .X .Y 28 32 all` | Ersetzt `OPS` (exakt wie hier eingegeben) durch `SPF`; ersetze `all`e Vorkommen in dem mit `.X` und `.Y` markierten Block und zwischen den Spalten 28 und 32. Siehe auch Beispiel-Bildschirme weiter unten.
Wiederholte `CHANGE`-Kommandos:
`CHG * 'NEW'` | Ersetzt das nächste Vorkommen der Zeichenkette, die in dem letzten `CHANGE`-Kommando angegeben wurde, durch die neue Zeichenkette `NEW`.
`CHG 'OLD' *` | Ersetzt `OLD` durch dieselbe neue Zeichenkette, die im letzten `CHANGE`-Kommando angegeben wurde.

Der folgende Bildschirm veranschaulicht das zweite Beispiel bevor das Kommando mit Enter ausgeführt wurde:

    EDIT-NAT:NATLIB1(JOB1JCL)-Program->Struct-Free-77K ------------ Columns 001 072
     COMMAND===> CHG C'OPS' 'SPF' .X .Y 28 32 ALL                   SCROLL===> CSR
    ****** ****************************** top of data *****************************
    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
    000010   RESET #JOBNAME(A8)
    000020   RESET #FD(N3) #FL(A8) #FF(N3)
    000030   RESET #TD(N3) #TL(A8) #TF(N3)
    000040   COMPRESS *INIT-USER 'SM' INTO #JOBNAME LEAVING NO SPACE
    000050   SET CONTROL 'WL60C6B005/010F'
    000060   INPUT  'Enter PARAMETERS FOR LIBRARY COPY:'
    000070    /     'FROM:   DBID:' #FD 'FNR:' #FF 'LIB:' #FL
    000080    /     'TO  :   DBID:' #TD 'FNR:' #TF 'LIB:' #TL
    000090 // #JOBNAME JOB NAT,MSGCLASS=X,CLASS=G,TIME=1400
    000100 /*JOBPARM LINES=2000
    000110 //COPY EXEC PGM=NATBAT,TIME=60,
    000120 // PARM=('DBID=9,FNR=33,FNAT=(,15),FSIZE=19',
    000130 //       'EJ=OFF,IM=D,ID='';'',MAINPR=1,INTENS=1')
    .X     //STEPLIB  DD  DISP=SHR,DSN=OPS.SYSF.ADALOAD
    000150 //         DD  DISP=SHR,DSN=OPS.SYSF.LOAD
    000160 //         DD  DISP=SHR,DSN=OPS.SYSF.PROD.INST  * OPS INSTALL
    .Y     //         DD  DISP=SHR,DSN=OPS.SYSF.SOURCE     * OPS DOCUMENTS
    000180 //DDCARD   DD  *
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

Der folgende Bildschirm veranschaulicht das zweite Beispiel nachdem das Kommando mit Enter ausgeführt wurde:

    EDIT-NAT:NATLIB1(JOB1JCL)-Program->Struct-Free-77K ------ 4 char  'OPS' changed
     COMMAND===>                                                    SCROLL===> CSR
    ****** ****************************** top of data *****************************
    =cols> ----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
    000010   RESET #JOBNAME(A8)
    000020   RESET #FD(N3) #FL(A8) #FF(N3)
    000030   RESET #TD(N3) #TL(A8) #TF(N3)
    000040   COMPRESS *INIT-USER 'SM' INTO #JOBNAME LEAVING NO SPACE
    000050   SET CONTROL 'WL60C6B005/010F'
    000060   INPUT  'Enter PARAMETERS FOR LIBRARY COPY:'
    000070    /     'FROM:   DBID:' #FD 'FNR:' #FF 'LIB:' #FL
    000080    /     'TO  :   DBID:' #TD 'FNR:' #TF 'LIB:' #TL
    000090 // #JOBNAME JOB NAT,MSGCLASS=X,CLASS=G,TIME=1400
    000100 /*JOBPARM LINES=2000
    000110 //COPY EXEC PGM=NATBAT,TIME=60,
    000120 // PARM=('DBID=9,FNR=33,FNAT=(,15),FSIZE=19',
    000130 //       'EJ=OFF,IM=D,ID='';'',MAINPR=1,INTENS=1')
    .X     //STEPLIB  DD  DISP=SHR,DSN=SPF.SYSF.ADALOAD
    ==chg> //         DD  DISP=SHR,DSN=SPF.SYSF.LOAD
    ==chg> //         DD  DISP=SHR,DSN=SPF.SYSF.PROD.INST  * OPS INSTALL
    .Y     //         DD  DISP=SHR,DSN=SPF.SYSF.SOURCE     * OPS DOCUMENTS
    000180 //DDCARD   DD  *
    Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
          Help  Split End   Suspe Rfind Rchan Up    Down  Swap  Left  Right Curso

Alle Vorkommen der Zeichenkette `OPS` sind zwischen den Zeile 140 und 170 und innerhalb der Spalten 28 durch die Zeichenkette `SPF` bis 32 ersetzt worden.

### Kommandos RFIND und RCHANGE

Beim Ändern von Zeichenketten sind die folgenden Kommandos hilfreich: `RFIND` (wiederholtes `FIND`) und `RCHANGE` (wiederholtes `CHANGE`)

Beispiel: Mit der Kommandosequenz

    FIND 'abc'
      CHANGE 'abc' 'def'
      RFIND
      RCHANGE

können Sie Vorkommen einer bestimmten Zeichenkette finden und diese wahlweise mit relativ geringem Aufwand ändern.

### On this page

- Zeilen einfügen und löschen
- Zeilen kopieren, verschieben, überlagern und wiederholen
- Ein Fenster mit Daten kopieren oder verschieben
- Horizontale und vertikale Bereichsgrenzen einstellen
- Maskenzeile definieren
- Daten zwischen Bereichsgrenzen anordnen
- Daten zentrieren
- Daten ausrichten
- Physischen oder logischen Tabulator benutzen
- Zeilen in alphabetischer Reihenfolge sortieren
- Zeichenkette suchen
- Zeichenkette ersetzen