##########################################################################
# UMWANDLUNG #
##########################################################################
# Wandelt Zahlenwerte (Integer) en el Formato tt:hh:mm:ss en #
# tt=Tage, hh=Stunden, mm=Minuten y ss=Sekunden #
# #
# Aufruf = Umwandlung Tiempo%,Typ%,Edición% #
# #
# Dabei kann uno dieser Procedimiento verschiedene Zeitformate übergeben #
# Typ 1 = Sekunden #
# Typ 2 = Minuten #
# Typ 3 = Stunden #
# Typ 4 = Tage #
# Ejemplo: Umwandlung 187458,1,1 son 02:04:04:18 zurück (tt:hh:mm:ss) #
# Umwandlung 2844,2,1 son 01:23:24:00 zurück (tt:hh:mm:ss) #
# #
# #
# Auch el Ausgabeformat kann determinado voluntad #
# Edición 1 = tt:hh:mm:ss #
# Edición 2 = hh:mm:ss #
# Edición 3 = mm:ss #
# Edición 4 = ss #
# Ejemplo: Umwandlung 187458,1,2 son 52:04:18 zurück (hh:mm:ss) #
# Umwandlung 187458,1,3 son 3124:18 zurück (mm:ss) #
##########################################################################
Proc Umwandlung
Parámetros Tiempo%,Typ%,Edición%
Declarar Sek%,Std%,Min%,Tag%,Sek$,Std$,Min$,Tag$,ToSub%,Volver$
Case equ(Tiempo%,0):Volver 00:00:00:00
Case equ(Typ%,0):Volver 00:00:00:00
Case gt(Typ%,4):Volver 00:00:00:00
Case equ(Edición%,0):Let Edición%=1
Case gt(Edición%,4):Let Edición%=1
if equ(Typ%,1)
Let Sek%=Tiempo%
elseif equ(Typ%,2)
Let Sek%=mul(Tiempo%,60)
elseif equ(Typ%,3)
Let Sek%=mul(Tiempo%,3600)
elseif equ(Typ%,4)
Let Sek%=mul(Tiempo%,86400)
endif
Case equ(Edición%,4):Volver Str$(Sek%)
Let Tag%=Div(Sek%,86400)
Let Tag$=@Str$(Tag%)
Case lt(@Len(Tag$),2):Let Tag$=add$(0,Tag$)
Let ToSub%=mul(Tag%,86400)
Let Sek%=Sub(Sek%,ToSub%)
Let Std%=Div(Sek%,3600)
Let Std$=@Str$(Std%)
Case lt(@len(Std$),2):Let Std$=add$(0,Std$)
Let ToSub%=mul(Std%,3600)
Let Sek%=Sub(Sek%,ToSub%)
Let Min%=Div(Sek%,60)
Let Min$=@Str$(Min%)
Case lt(@len(Min$),2):Let Min$=add$(0,Min$)
Let ToSub%=mul(Min%,60)
Let Sek%=Sub(Sek%,ToSub%)
Let Sek$=@Str$(Sek%)
Case lt(@len(Sek$),2):Let Sek$=add$(0,Sek$)
if equ(Edición%,1)
Volver add$(add$(add$(add$(add$(add$(tag$,:),std$),:),min$),:),sek$)
elseif equ(Edición%,2)
Let Std%=add(mul(Tag%,24),Std%)
Let Std$=Str$(Std%)
Case lt(@len(Std$),2):Let Std$=add$(0,Std$)
Volver add$(add$(add$(add$(std$,:),min$),:),sek$)
elseif equ(Edición%,3)
Let Std%=add(mul(Tag%,24),Std%)
Let Min%=add(mul(Std%,60),Min%)
Let Min$=str$(Min%)
Case lt(@len(min$),2):Let min$=add$(0,Min$)
Volver add$(add$(Min$,:),Sek$)
endif
ENDPROC
################################################################
# ZeitToDec #
################################################################
# Wandelt Cuerdas en el Formato XX:YY en Decimal en #
# #
# Aufruf = ZeitToDec Tiempo$,Typ% #
# Ejemplo: ZeitToDec 16:45,1 son 16,75 zurück #
# #
# Auch el Ausgabeformat kann determinado voluntad #
# Typ 1 = String #
# Typ 2 = Float #
# Ejemplo: ZeitToDec 16:45,1 son el String 16,75 zurück #
# ZeitToDec 16:45,2 son el Float 16.75 zurück #
# #
################## ! ! ! A C H T U N G ! ! ! #################
# #
# Beachte, dass uno beim Aufruf dieser Procedimiento, je después de Typ #
# una otro Volver-Valor zurück bekommt. #
# En Typ 1 = @$(0) en Typ 2 = @!(0) #
################################################################
Proc ZeitToDec
Parámetros Tiempo$,Typ%
Case lt(len(Tiempo$),5):Volver 00:00
Case gt(len(Tiempo$),5):Volver 00:00
Case lt(Typ%,1):Let Typ%=1
Case gt(Typ%,2):Let Typ%=1
Declarar xx%,yy%,Zentel!,Volver$,Zentel$,Volver!,xx$
Let xx%=@Val(left$(Tiempo$,2))
Let yy%=@Val(right$(Tiempo$,2))
Let Zentel!=div(yy%,0.6)
Decimals 0
Let xx$=Str$(xx%)
Let Zentel$=Str$(Zentel!)
Case lt(@len(xx$),2):Let xx$=add$(0,xx$)
Case lt(@len(Zentel$),2):Let Zentel$=add$(0,Zentel$)
Let Volver$=add$(add$(xx$,,),Zentel$)
if equ(Typ%,1)
Volver Volver$
elseif equ(Typ%,2)
Decimals 2
Let Volver$=@Translate$(Volver$,,,.)
Let Volver!=val(Volver$)
Volver Volver!
endif
Decimals 6
ENDPROC
################################################################
# DecToZeit #
################################################################
# Wandelt Decimal (Float) en el String-Formato XX:YY en. #
# #
# Aufruf = DecToZeit Tiempo! #
# Ejemplo: DecToZeit 16.75 son 16:45 zurück #
# #
################################################################
Proc DecToZeit
Parámetros Tiempo!
Declarar GanzZahl%,Zentel!,Zentel%,GanzZahl$,Zentel$
Let GanzZahl%=Tiempo!
Let Zentel!=sub(Tiempo!,GanzZahl%)
Let Zentel!=mul(Zentel!,60)
Let Zentel%=Zentel!
Let GanzZahl$=@Str$(GanzZahl%)
Let Zentel$=@Str$(Zentel%)
Case lt(@len(GanzZahl$),2):Let GanzZahl$=add$(0,GanzZahl$)
Case lt(@len(Zentel$),2):Let Zentel$=add$(0,Zentel$)
Volver add$(add$(GanzZahl$,:),Zentel$)
ENDPROC
################################################################
# AddSubZeit #
################################################################
# Berechnet el Addition oder Subtraktion de zwei Zeitwerten #
# en el Formato hh:mm #
# #
# Aufruf = AddSubZeit Summand1$,Summand2$,Typ% #
# Ejemplo: AddSubZeit 16:45,03:30,1 son 20:15 zurück #
# Ejemplo: AddSubZeit 16:45,03:30,2 son 13:15 zurück #
# #
# Typ 1 = Addition ( Grundschuldeutsch: Plus nehmen ) #
# Typ 2 = Subtraktion ( Grundschuldeutsch: Minus nehmen ) #
################################################################
# Achtung: Lo puede auch Werte über 24:00 herauskommen #
# Siehe dazu el Procedimiento AddSubUhrzeit #
################################################################
Proc AddSubZeit
Parámetros Summand1$,Summand2$,Typ%
Declarar Summand1!,Summand2!,Summe!
ZeitToDec Summand1$,2
Let Summand1!=@!(0)
ZeitToDec Summand2$,2
Let Summand2!=@!(0)
if equ(Typ%,1)
Let Summe!=add(Summand1!,Summand2!)
elseif equ(Typ%,2)
Let Summe!=sub(Summand1!,Summand2!)
endif
DecToZeit Summe!
Volver @$(0) Cool -> Returnt el letzten Returnwert <- Wollte Yo siempre ya veces hacer... absolut Sinnlos... ;-)
ENDPROC
#################################################################
# AddSubUhrzeit #
#################################################################
# Berechnet el Addition oder Subtraktion de zwei Uhrzeiten #
# en el Formato hh:mm #
# #
# Aufruf = AddSubUhrzeit Summand1$,Summand2$,Typ% #
# Ejemplo: AddSubUhrzeit 17:30,07:45,1 son 01:15 zurück #
# Ejemplo: AddSubUhrzeit 17:30,07:45,2 son 09:45 zurück #
# #
# Typ 1 = Addition ( Grundschuldeutsch: Plus nehmen ) #
# Typ 2 = Subtraktion ( Grundschuldeutsch: Minus nehmen ) #
#################################################################
Proc AddSubUhrzeit
Parámetros Summand1$,Summand2$,Typ%
Declarar Tiempo$,Tiempo!,Teiler%
AddSubZeit Summand1$,Summand2$,Typ%
Let Tiempo$=@$(0)
ZeitToDec Tiempo$,2
Let Tiempo!=@!(0)
Let Teiler%=Div(Tiempo!,24)
Let Tiempo!=sub(Tiempo!,mul(Teiler%,24))
DecToZeit Tiempo!
ENDPROC