##########################################################################
# UMWANDLUNG #
##########################################################################
# Wandelt Zahlenwerte (Integer) in the stature tt:hh:mm:ss circa #
# tt=days, hh=hours, mm=minutes and ss=sec #
# #
# appeal = conversion Time%,type%,spending% #
# #
# thereby can one this procedure different Zeitformate übergeben #
# type 1 = sec #
# type 2 = minutes #
# type 3 = hours #
# type 4 = days #
# example: conversion 187458,1,1 gives 02:04:04:18 back (tt:hh:mm:ss) #
# conversion 2844,2,1 gives 01:23:24:00 back (tt:hh:mm:ss) #
# #
# #
# too the Ausgabeformat can certainly go #
# spending 1 = tt:hh:mm:ss #
# spending 2 = hh:mm:ss #
# spending 3 = mm:ss #
# spending 4 = ss #
# example: conversion 187458,1,2 gives 52:04:18 back (hh:mm:ss) #
# conversion 187458,1,3 gives 3124:18 back (mm:ss) #
##########################################################################
Proc conversion
Parameters Time%,type%,spending%
Declare Sek%,Std%,mins%,day%,Sek$,Std$,mins$,day$,ToSub%,Return$
Case equ(Time%,0):Return 00:00:00:00
Case equ(type%,0):Return 00:00:00:00
Case gt(type%,4):Return 00:00:00:00
Case equ(spending%,0):Let spending%=1
Case gt(spending%,4):Let spending%=1
if equ(type%,1)
Let Sek%=Time%
elseif equ(type%,2)
Let Sek%=mul(Time%,60)
elseif equ(type%,3)
Let Sek%=mul(Time%,3600)
elseif equ(type%,4)
Let Sek%=mul(Time%,86400)
endif
Case equ(spending%,4):Return Str $(Sek%)
Let day%=Div(Sek%,86400)
Let day$=@Str $(day%)
Case lt(@Len(day$),2):Let day$=add$(0,day$)
Let ToSub%=mul(day%,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 mins%=Div(Sek%,60)
Let mins$=@Str $(mins%)
Case lt(@len(mins$),2):Let mins$=add$(0,mins$)
Let ToSub%=mul(mins%,60)
Let Sek%=Sub(Sek%,ToSub%)
Let Sek$=@Str $(Sek%)
Case lt(@len(Sek$),2):Let Sek$=add$(0,Sek$)
if equ(spending%,1)
Return add$(add$(add$(add$(add$(add$(day$,:),std$),:),mins$),:),sek$)
elseif equ(spending%,2)
Let Std%=add(mul(day%,24),Std%)
Let Std$=Str $(Std%)
Case lt(@len(Std$),2):Let Std$=add$(0,Std$)
Return add$(add$(add$(add$(std$,:),mins$),:),sek$)
elseif equ(spending%,3)
Let Std%=add(mul(day%,24),Std%)
Let mins%=add(mul(Std%,60),mins%)
Let mins$=st$(mins%)
Case lt(@len(mins$),2):Let mins$=add$(0,mins$)
Return add$(add$(mins$,:),Sek$)
endif
ENDPROC
################################################################
# ZeitToDec #
################################################################
# Wandelt Strings in the stature XX:YY in Decimal circa #
# #
# appeal = ZeitToDec Time$,type% #
# example: ZeitToDec 16:45,1 gives 16,75 back #
# #
# too the Ausgabeformat can certainly go #
# type 1 = String #
# type 2 = Float #
# example: ZeitToDec 16:45,1 gives whom String 16,75 back #
# ZeitToDec 16:45,2 gives whom Float 16.75 back #
# #
################## ! ! ! A C H T u n G ! ! ! #################
# #
# mind, that one at appeal this procedure, apiece to type #
# a others Return-worth back get. #
# with type 1 = @$(0) with type 2 = @!(0) #
################################################################
Proc ZeitToDec
Parameters Time$,type%
Case lt(len(Time$),5):Return 00:00
Case gt(len(Time$),5):Return 00:00
Case lt(type%,1):Let type%=1
Case gt(type%,2):Let type%=1
Declare xx%,yy%,Zentel!,Return$,Zentel$,Return!,xx$
Let xx%=@Val(left$(Time$,2))
Let yy%=@Val(right$(Time$,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 Return$=add$(add$(xx$,,),Zentel$)
if equ(type%,1)
Return Return$
elseif equ(type%,2)
Decimals 2
Let Return$=@Translate$(Return$,,,.)
Let Return!=val(Return$)
Return Return!
endif
Decimals 6
ENDPROC
################################################################
# DecToZeit #
################################################################
# Wandelt Decimal (Float) in the String-stature XX:YY circa. #
# #
# appeal = DecToZeit Time! #
# example: DecToZeit 16.75 gives 16:45 back #
# #
################################################################
Proc DecToZeit
Parameters Time!
Declare GanzZahl%,Zentel!,Zentel%,GanzZahl$,Zentel$
Let GanzZahl%=Time!
Let Zentel!=sub(Time!,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$)
Return add$(add$(GanzZahl$,:),Zentel$)
ENDPROC
################################################################
# AddSubZeit #
################################################################
# accounts The addition or Subtraktion of two Zeitwerten #
# in the stature hh:mm #
# #
# appeal = AddSubZeit Summand1$,Summand2$,type% #
# example: AddSubZeit 16:45,03:30,1 gives 20:15 back #
# example: AddSubZeit 16:45,03:30,2 gives 13:15 back #
# #
# type 1 = addition ( Grundschuldeutsch: plus take ) #
# type 2 = Subtraktion ( Grundschuldeutsch: less take ) #
################################################################
# deference: it can too values über 24:00 get out #
# See moreover The procedure AddSubUhrzeit #
################################################################
Proc AddSubZeit
Parameters Summand1$,Summand2$,type%
Declare Summand1!,Summand2!,amount!
ZeitToDec Summand1$,2
Let Summand1!=@!(0)
ZeitToDec Summand2$,2
Let Summand2!=@!(0)
if equ(type%,1)
Let amount!=add(Summand1!,Summand2!)
elseif equ(type%,2)
Let amount!=sub(Summand1!,Summand2!)
endif
DecToZeit amount!
Return @$(0) calm -> Returnt whom last Returnwert <- wished I always already time Make ... utterly futile... ;-)
ENDPROC
#################################################################
# AddSubUhrzeit #
#################################################################
# accounts The addition or Subtraktion of two times #
# in the stature hh:mm #
# #
# appeal = AddSubUhrzeit Summand1$,Summand2$,type% #
# example: AddSubUhrzeit 17:30,07:45,1 gives 01:15 back #
# example: AddSubUhrzeit 17:30,07:45,2 gives 09:45 back #
# #
# type 1 = addition ( Grundschuldeutsch: plus take ) #
# type 2 = Subtraktion ( Grundschuldeutsch: less take ) #
#################################################################
Proc AddSubUhrzeit
Parameters Summand1$,Summand2$,type%
Declare Time$,Time!,Teiler%
AddSubZeit Summand1$,Summand2$,type%
Let Time$=@$(0)
ZeitToDec Time$,2
Let Time!=@!(0)
Let Teiler%=Div(Time!,24)
Let Time!=sub(Time!,mul(Teiler%,24))
DecToZeit Time!
ENDPROC