/*
'  *****   $VER: Gebuehren 4.014 (03 Feb 1999) *****
'              © 1996/98 Gerald Froehlich
'
'  PROGRAMNAME:
'      Gebuehren
'
'  FUNCTION:
'      speichert T-Online-Gebuehren in ein File (auch von einem Mitbenutzer)
'                      (private Fassung OHNE Abfrage nach 0002)
'
'  $HISTORY:
'
'  03 Feb 1999 : 004.014 :  wenn Zugang nicht möglich -> split 0
'  11 Jan 1999 : 004.013 :  Fehler mit split f. MT5.0 gefixt
'  29 Nov 1998 : 004.012 :  unverändert
'  29 Jun 1998 : 003.710 :  unverändert
'  22 Jan 1998 : 003.601 :  Strukturänderung
'  09 Jan 1998 : 003.542 :  Clips umbenannt
'  14 Dec 1997 : 003.541 :  .rexx weg
'  12 Apr 1997 : 003.500 :  1. kombinierte Fassung
'  10 Apr 1997 : 003.110 :  else-Fehler gefixt
'  10 Apr 1997 : 003.109 :  User-Halt mit Abfrage
'  06 Apr 1997 : 003.108 :  BREAK eingebaut
'  05 Apr 1997 : 003.107 :  Open " A " verändert
'  03 Apr 1997 : 003.106 :  Nicht erreichbar-Abfrage versetzt
'  03 Apr 1997 : 003.105 :  FOR gefixt
'  03 Apr 1997 : 003.104 :  Überprüfungen dazu
'  02 Apr 1997 : 003.103 :  1. Fassung
'  02 Apr 1997 : 003.102 :  Anfang - Übersetzung
'  14 Jan 1997 : 003.101 :  identisch
'
'****************************************/

DPfad   = GetClip("ParameterPfad")               /* Parameterpfad */
KWlaenge        = 0                         /* Länge des Kennwortes */
MT_Port = GetClip('MT_Port')
screen          = GetClip('screenName')

IF (~show('l','rexxreqtools.library')) THEN
    call addlib('rexxreqtools.library',0,-30,0)

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

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

IF ~(OpenPort("HB_REXX")) THEN DO
    CALL rtezrequest('Fehler beim Öffnen des Portes HB_REXX',
    ,'Ja doch!','HB','rt_pubscrname='screen)
    EXIT
END

/*##########################
**** Werte einlesen ********
##########################*/

CALL stop

Prot      = DPfad || "homebank.config"            /* Configdatei auslesen */
IF ~(Open(A1,Prot,"r")) THEN DO
  CALL rtezrequest('Config-Datei nicht zu öffnen',
  ,'Ja doch!',,'rt_pubscrname='screen)
  EXIT 10
END

a = Seek(A1,453,'B')
Kw = ReadLn(A1)

a = Seek(A1,494,'B')
KWlaenge = ReadLn(A1)
Kw = left(Kw,KWlaenge)

a = Seek(A1,498,'B')
MitBenutzer = ReadLn(A1)

a = Close(A1)

ADDRESS VALUE MT_Port

SIGNAL off error

checkonline
IF rc ~= 0 THEN DO
    CALL rtezrequest('MT ist nicht online',
  ,'Ja doch!','Gebühren','rt_pubscrname='screen)
  ADDRESS "HB" GEB_END
  EXIT
END

checkER
IF rc = 0 THEN DO
    CALL rtezrequest('Sie befinden sich noch in einem ER',
  ,'Ja doch!','Gebühren','rt_pubscrname='screen)
  ADDRESS "HB" GEB_END
  EXIT
END


SIGNAL on error

prot       = "HB:Ablage/Gebuehren_0001"
split 3
locate 3 2
mplprint " Jetzt werden die Gebuehren gespeichert "
callpage "92"
Call cuwait

sendter
Call cuwait

IF KWlaenge = 8 THEN
 send Kw
ELSE DO
 send Kw
 sendter
END
Call cuwait

send "2"
Call cuwait
send "19"
Call cuwait

SIGNAL off error

existstring "zur Zeit nicht erreichbar"
IF rc = 0 THEN DO
    CALL rtezrequest('Leider momentan kein Zugang möglich',
  ,'Ja doch!','Gebühren','rt_pubscrname='screen)
  split 0
  ADDRESS "HB" GEB_END
  EXIT
END

SIGNAL on error

/* hier nur vorläufig für eine Mitteilungsanzeige, die zeitweilig gesendet wurde
send ter
Call cuwait
*/

split 0
IF ~exists(Prot) THEN
   a = Open(A1,Prot,"w")
ELSE
   a = Open(A1,prot,"a")
a = WriteLn(A1,"Tagesdaten vom " || date() || "-" || time())
a = WriteLn(A1," ")

DO i = 3 TO 13
line i
a = WriteLn(A1,RESULT)
END

a = WriteLn(A1,Copies("-",40))
send "5"
Call cuwait

a = WriteLn(A1,"Monatsdaten vom " || Date() || "-" || Time())
a = WriteLn(A1," ")
DO i = 1 TO 14
 line i
 a = WriteLn(A1,RESULT)
END

a = WriteLn(A1,Copies("-",40))

a = Close(a1)

Call cuwait

split 4
locate 3 2
mplprint " Die Tages- und Monats-Gebuehren wurden gespeichert!"


IF UPPER(MitBenutzer) = "JA" THEN DO

  send "5"
  prot       = "HB:Ablage/Gebuehren_0002"

  locate 3 3
  mplprint " Jetzt werden die Gebuehren von 0002 gespeichert"

  CALL cuwait
  sendter
  CALL cuwait
  sendter
  CALL cuwait

  IF ~exists(Prot) THEN
    a = Open(A1,Prot,"w")
  ELSE
    a = Open(A1,prot,"a")

  a = WriteLn(A1,"Tagesdaten vom " || Date() || "-" || Time())
  a = WriteLn(A1," ")

  DO i = 3 TO 13
    line i
    a = WriteLn(A1,RESULT)
  END

  a = WriteLn(A1,Copies("-",40))

  send "5"
  CALL cuwait

  a = WriteLn(A1,"Monatsdaten vom " || Date() || "-" || Time())
  a = WriteLn(A1," ")

  DO i = 1 TO 14
   line i
   a = WriteLn(A1,RESULT)
  END
  a = WriteLn(A1,Copies("-",40))
  a = Close(A1)
  split 4
  locate 3 2
  mplprint " Die Gebuehren von Mitbenutzer 0002 wurden gespeichert!"
END   /* END Mitbenutzer */

send "0"
CALL cuwait
send "9"
CALL cuwait

locate 3 3
mplprint "Verbindung zum externen Rechner wurde beendet..."
locate 3 4
mplprint "das Skript endet hier!"
a = delay(300)

split 0

ADDRESS "HB" GEB_END
EXIT


/********* Auf Cursor warten **********/
cuwait:
CALL stop
SIGNAL off error
a = delay(30)
checkcuron
DO WHILE rc ~= 0
 CALL stop
 a = delay(30)
 checkcuron
END
SIGNAL on error
RETURN

/*########################################
********** BREAK-Message ? **************
#######################################*/


STOP:

packet = GetPkt("HB_REXX")
      IF packet ~= "0000 0000"x THEN DO
        pack = GetArg(packet)
        CALL Reply(packet,0)
        IF pack = "STOP" THEN DO
          CALL HALT
        END
      END
RETURN





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

failure:
ioerr:
ERROR:
text =  'Fehler' rc 'in Zeile' sigl '0A'x ErrorText(rc),
    '0A'x || SourceLine(sigl)
   CALL rtezrequest(text,"Alles klar!", "Fehlermeldung Gebühren",'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", "Gebühren-REXX",'rt_pubscrname='screen)
 IF ab = 1 THEN DO
   ADDRESS "HB" END
   EXIT
 END
 ELSE RETURN
