/* $VER: 0.11 , (30.08.1997), © by Thorsten Willert
   
   Macro um Tabellenzeilen zu addieren (den Inhalt
   in Zahlen natürlich)

-------------------------------------------------
Voreinstellungen:                               */

Info = 1

/*----------------------------------------------*/

ADDRESS = 'FinaW'
OPTIONS CACHE RESULTS
NUMERIC DIGITS 14


STATUS PORTNAME
FW = RESULT
ADDRESS = FW

SIGNAL ON BREAK_C
SIGNAL ON HALT
SIGNAL ON SYNTAX

/*-----------------------------------------------*/

RT.Title = "FWAddZeile"
RT.Para1 = "rtez_flags = ezreqf_centertext"
RT.Para2 = "rt_pubscrname = FinalWriterPubScreen rtfi_flags = freqf_selectdirs"

Copyright = RT.Title || ", © 1997, by Thorsten Willert"

R = '0A'X
Zahlen = "1234567890,.-"

/*-----------------------------------------------*/

IF ~show('L',"rexxreqtools.library") THEN DO
   IF ~addlib('rexxreqtools.library',0,-30,0) THEN DO
      'ShowMessage 1 1 "Fehler ..." "Benötige RexxReqTools.library!" "" "Abbruch !!" "" ""'
      EXIT 20
   END
END

IF Info=1 THEN CALL Info

ADDRESS (FW)
GETDocItemPrefs Decimal
Punkt = result

CALL SetCursor
CALL Addieren

/*-----------------------------------------------*/

Ende:
EXIT

/*-----------------------------------------------*/

SetCursor:

ADDRESS(FW)
TableGetActiveCell
PARSE VAR RESULT Zeile Spalte

TableGetColumns
PARSE VAR RESULT Muell Spalten

IF Spalte=1|Spalte=Spalten THEN Spalte=2

TableSetActiveCell Zeile Spalte

RETURN

/*-----------------------------------------------*/

Addieren:

ADDRESS (FW)

i=1;Summand=0;Summe=0

DO FOREVER
    i=i+1
    TableSetActiveCell Zeile Spalte
        SelectAll
        Extract
        Summand=COMPRESS(Result,'09'X'0A'X" ")
        IF ~VERIFY( Summand, Zahlen) ~= 0 THEN
            DO
                Justify Rigth
                Summand=TRANSLATE(Summand,".",",")
                IF Summand = "" THEN Summand = 0
            END
            ELSE Summand=0
            
Summe=Summe+Summand

IF Spalte=Spalten-1 THEN LEAVE
Spalte=Spalte+1

END

TableSetActiveCell Zeile Spalten
    SelectAll
    Clear
    Justify Right
    Style Bold
        IF Punkt~="Period" THEN Summe=TRANSLATE(Summe,",",".")
    Type Summe
    
RETURN

/*-----------------------------------------------*/

Info:

rtezrequest(Copyright || R || R ||,
            "Addiert Zeilen ab Cursorposition" || R ||,
            "Die erste Spalte wird nie mitaddiert" || R ||,
            "und in der letzen steht immer das Ergebnis!","_Aha",RT.Title)
            
RETURN

/*-----------------------------------------------*/

HALT:
BREAK_C:

rtezrequest("Macro wurde abgebrochen ... ","Weiter",RT.Title,RT.Para1)

EXIT 10

SYNTAX:

IF RC = 47 THEN
rtezrequest("Fehler!"_Weiter",RT.Title,RT.Para1)

EXIT 10