/****************************************************
;
;  *****   $VER: Tanloesch 3.710 (29.Jun 98)  *****
;              © 1996/98 Gerald Froehlich
;
;  PROGRAMNAME:
;      Tanloesch
;
;  FUNCTION:
; zum Löschen der TAN-Nr. und der Überweisungsfiles
;
;
;
;  $HISTORY:
;
'  29 Jun 1998 : 003.710 :  unverändert
;  22 Jan 1998 : 003.601 :  Strukturänderung
;  12 Jan 1998 : 003.554 :  Abfangen, falls letzte Zeile der TAN-Liste gelöscht werden soll
;  12 Jan 1998 : 003.553 :  Abfangen von ungesendeten Üws
;  12 Jan 1998 : 003.552 :  off error wegen delete
;  12 Jan 1998 : 003.551 :  ParameterPfad als Clip
;  08 Jan 1998 : 003.550 :  OPTIONS FAILAT
;  08 Jan 1998 : 003.549 :  Parameterpfad eingefügt
;  04 Jan 1998 : 003.548 :  null.Uew ersetzt
;  30 Dec 1997 : 003.547 :  Keyabfrage
;  14 Dec 1997 : 003.546 :  .rexx weg
;  26 Nov 1997 : 003.545 :  Strukturänderung I
;  21 Nov 1997 : 003.544 :  - no comment -
;  21 Nov 1997 : 003.543 :  TAN-löschen hier integriert
;  25 Sep 1997 : 003.502 :  delete-Batch entfernt
;  24 Aug 1997 : 003.501 :  auch bei mehr als 10 ÜWs klappts nun
;  14 Apr 1997 : 003.500 :  1.Arexx-VERSION
;  14 Jan 1997 : 003.101 :  identisch
;
;****************************************/

OPTIONS RESULTS
SIGNAL on error
SIGNAL ON break_c
SIGNAL ON break_d
SIGNAL ON break_e
SIGNAL ON break_f
SIGNAL ON failure
SIGNAL ON halt
SIGNAL ON ioerr
SIGNAL ON syntax
TRACE Background
ADDRESS command 'sys:rexxc/te'

Parameterpfad = GetClip("ParameterPfad")

IF (~show('l','rexxreqtools.library')) THEN
        CALL AddLib('rexxreqtools.library',0,-30,0)

screen = GetClip('screenName')


IF Exists('ENV:Tan') THEN DO
   IF ~Open("k","RAM:Key.HB","R") THEN DO
     CALL rtezrequest('Leider ist diese VERSION noch nicht registriert',
     '0a'x '(keine TAN-Verwaltung möglich)','Ja doch!',,'rt_pubscrname='screen)
     CALL del
   END
   ELSE DO
     TRACE Background
     j = ReadLn('k')
  PARSE VAR j . "0bzo" seST "jk010" y "NMQ" co "0b1" se "101" Be "111öß" Vers "\" seL
     j = Close("k")

   se = SubStr(se,seST,seL)
   ControlS   = BitXor(B2C(Reverse(y)),co)
   ControlUNR = BitXor(B2C(Reverse(y)),co)/1000
   ControlUNR = ControlUNR-se
   ControlUNR = Trunc(ControlUNR-B2C(Vers))
   ControlU = BitXor(B2C(Reverse(Be)),co)
   IF Word(ControlU,Words(ControlU))~=ControlUNR THEN DO
     CALL rtezrequest('Vielleicht probierst Du es doch mal mit einem' '0a'x,
     'legalem Key?','Ja doch!',,'rt_pubscrname='screen)
     CALL del
   END
  END

    Tfile = GetClip("ParameterPfad") || "TAN.lst"


    IF (~show('l','rexxtricks.library')) THEN
        CALL AddLib('rexxtricks.library',0,-30,0)

    IF ~READFILE(Tfile,'Tlist') THEN CALL rtezrequest('Fehler beim Einlesen',
         Tfile '!!!','Ja doch!',"Fehlermeldung Aufräumen",'rt_pubscrname='screen)

    LTAN = GETENV('TAN')

    nummer = RXTR_LSEARCH(LTAN,'Tlist')
    IF nummer = -1 THEN DO
        CALL rtezrequest('Die letzte TAN wurde in der Liste nicht gefunden.',
         'Bitte überprüfen Sie die TAN-Liste!!!','Ja doch!',"Fehlermeldung Aufräumen",'rt_pubscrname='screen)
        EXIT
    END


    IF ~RXTR_STEMREMOVE('Tlist',1,nummer) THEN CALL rtezrequest('Fehler beim Löschen der Zeilen',
         ' der TAN-Liste!!!','Ja doch!',"Fehlermeldung Aufräumen",'rt_pubscrname='screen)

    IF Tlist.0 = 0 THEN do
         CALL rtezrequest('Fehler beim Löschen der Zeilen',
         ' der TAN-Liste!!!' '0a'x 'Es sollte die letzte Zeile gelöscht werden!',
         ,'Ja doch!',"Fehlermeldung Aufräumen",'rt_pubscrname='screen)
         EXIT 10
     END
     ELSE DO
      IF ~WRITEFILE(Tfile,'Tlist') THEN CALL rtezrequest('Fehler beim Schreiben von',
         Tfile '!!!','Ja doch!',"Fehlermeldung Aufräumen",'rt_pubscrname='screen)
     END
del:

    IF ~UNSETENV('TAN') THEN CALL rtezrequest('Fehler beim Löschen',
         ' der ENV-TAN!!!','Ja doch!',"Fehlermeldung Aufräumen",'rt_pubscrname='screen)



 IF Exists("HB:Senden") THEN DO
   a = "del"
   ADDRESS command
   'delete >NIL: HB:Senden/(Ueberw#?|GKtoUeberw#?).hb'
 END

param:
  a  = Open("N",ParameterPfad || "priv.Uew","W")
  a = WriteCh("N","00")
  a = Close("N")
  a = Open("N1",ParameterPfad ||"gesch.Uew","W")
  a = WriteCh("N1","00")
  a = Close("N1")

 EXIT
END

EXIT

/*###################################
*** Debugging-Fehlerroutinen *******
###################################*/
syntax:
text =  'Syntax-Fehler' rc 'in Zeile' sigl '0A'x ErrorText(rc),
    '0A'x || SourceLine(sigl)
   CALL rtezrequest(text,"Alles klar!", "Tanloesch",'rt_pubscrname='screen)
  EXIT 10

failure:
ioerr:
ERROR:
IF rc = 20 THEN DO
    IF a = "del" THEN DO
      CALL rtezrequest("Es wurden nicht alle ÜWs erledigt!" '0A'x,
      "Bitte überprüfen Sie das!",
      , "Ja doch!",'rt_pubscrname='screen)
      CALL param
  END
END

text =  'Fehler' rc 'in Zeile' sigl '0A'x ErrorText(rc),
    '0A'x || SourceLine(sigl)
   CALL rtezrequest(text,"Alles klar!", "Tanloesch",'rt_pubscrname='screen)
  EXIT 10
halT:
break_c:
break_d:
break_e:
break_f:
 text =  'User-Abbruch durch Halt!' || '0A'x || 'Wirklich abbrechen ?'
 ab = rtezrequest(text,"_Mach Schluss|_Neeiiin", "Tanloesch",'rt_pubscrname='screen)
 IF ab = 1 THEN DO
   ADDRESS "HB" END
   EXIT
 END
 ELSE RETURN
