/*
 * REXX-Script für WRITE 3.592 © 1994 by Tim Teulings
 *
 * Dieses Script wird aus WRITE heraus gestartet.
 * Es dient dazu lange Spalten von Zahlen umzunummerrieren.
 * Man startet dieses Script mit dem Cursor auf der Zahl von der man aus
 * umnummerieren möchte.
 * WRITE nummeriert dann in 1er Schritten aufwärts, bis er keine Zahl mehr
 * findet.
 * Er beachtet dabei die aktuelle Formatierung.
 */

IF ~show('P',"WRITE")
THEN DO
  say "Dieses Script ist zutzlos ohne WRITE !"
  EXIT
END

ADDRESS WRITE

OPTIONS RESULTS

'VERSIONCHECK 3848 "Renumber.wrx"'
IF RC~=0 THEN DO
  exit 10
END

'GETVAR "_CurrentID"'
ID = RESULT
IF ID=0 THEN DO
  'MESSAGEOK "REXX-Script\n'Renumber.wrx' :\n\nSie müssen dieses Script\naus WRITE heraus starten !"'
  EXIT
END

OPENPORT ID           /* PrivatePort des aktuellen Fensters öffnen        */
Port = RESULT

IF Port="" THEN DO    /* 'OPENPORT' gibt "" zurück, wenn Port nicht       */
                      /* geöffnet werden konnte                           */

  LOCKWINDOW ID
END
ELSE DO
  INTERPRET ADDRESS Port  /* PrivatePort addressieren.Alle Komandos beziehen */
                          /* sich nun auf das Fenster mit diesem Port        */
END

'GETVAR "_WordDef"'     /* Wortdefinition 1 */
OldWordDef = RESULT
'SETVAR "_WordDef" 1'

'GETVAR "_CurrentWord"' /* Aktuelles Wort holen */
Word = RESULT

IF ~DATATYPE(Word,'Numeric') THEN DO
  'MESSAGEOK "REXX-Script Renumber.wrx :\n\nDer Cursor muß auf\neiner Zahl stehen !"'
  Quit()
END

SILENT                  /* Zwecks Geschwindigkeit in den Silent-Mode */
                        /* schalten                                  */

'GETVAR "_xPos"'        /* Cursorposition holen */
OldPos.x = RESULT
'GETVAR "_yPos"'
OldPos.y = RESULT

'GETVAR "_CurrentChar"' /* Aktuelles Zeichen holen */
Char = RESULT

DO WHILE DATATYPE(Char,'Numeric') /* Rechten Rand der Zahl suchen */
  CURSORRIGHT 0
  'GETVAR "_CurrentChar"'
  Char = RESULT
END
CURSORLEFT 0

'GETVAR "_xPos"'        /* Wieder aktuelle Cursorposition holen */
StartPos.x = RESULT
'GETVAR "_yPos"'
StartPos.y = RESULT

MaxLen = 0
Lines  = 0
'GETVAR "_CurrentWord"'
Word = RESULT
DO WHILE DATATYPE(Word,'Numeric')
  Lines = Lines + 1
  Len = Length(Word)
  IF Len>MaxLen THEN DO
    MaxLen = Len
  END
  CURSORDOWN 0
  'GETVAR "_CurrentWord"'
  Word = RESULT
END

GOTO StartPos.x StartPos.y
'GETVAR "_CurrentWord"'
Count = RESULT + 1

DO r = 1 TO Lines-1
  CURSORDOWN 0

  GOTO StartPos.x-MaxLen+1 _yPos

  DO q = 1 TO MaxLen
    DELETE
  END

  ZahlLen = Length(Count)
  GOTO StartPos.x-MaxLen+1 _yPos
  DO q = 1 TO MaxLen-ZahlLen
    'WRITETEXT " "'
  END
  WRITETEXT "(" || Count || ")"
  Count = Count + 1
END

GOTO OldPos.x OldPos.y

Quit()

Quit:

'SETVAR "_WordDef"' OldWordDef /* Alten Wert setzen       */
WINDOW 0 0 0 0                 /* Silent-Mode ausschalten */
IF Port="" THEN DO
  LOCKWINDOW 0
END
ELSE DO
  CLOSEPORT ID
END
EXIT
