# Fonction PCODE ID = 660004265
REGISTRE POINTEUR pt_tableHoraire
REGISTRE ENTIER T
REGISTRE ENTIER P
REGISTRE ENTIER duree
REGISTRE ENTIER date

REGISTRE ENTIER coutComm
REGISTRE ENTIER commCourte

# coefficient tranche horaire
REGISTRE ENTIER Hi
# duree restante dans tranche horaire
REGISTRE ENTIER duree_r
#duree a taxe
REGISTRE ENTIER duree_t
# coefficient T module
REGISTRE ENTIER TMN

REGISTRE ENTIER nbreTmp
REGISTRE ENTIER nbreTmp2

REGISTRE ENTIER resTmp
REGISTRE POINTEUR pt_buffer
REGISTRE POINTEUR pt_buffer2

pt_tableHoraire = depilerPOINTEUR()
T = depilerENTIER()
P = depilerENTIER()
duree = depilerENTIER()
date = depilerENTIER()

trace3 ("appel a f_tax1 : <date %d> <duree %d> ", date , duree, 0)

pt_buffer = "0987654321"
pt_buffer2 = "1234567890"

resTmp = i_float_to_str(P, pt_buffer)
resTmp = i_float_to_str(T, pt_buffer2)
trace2 ("<P %s> <T %s>",pt_buffer, pt_buffer2)

trace2 ("<%s %s>", "tableHoraire", pt_tableHoraire)

commCourte = 0

nbreTmp = i_entier_to_float(duree)

SI  ( i_float_cmp( nbreTmp, P) <1 )
ALORS
  duree = i_float_to_entier(P)
  commCourte = 1
  trace ("communication courte")
SINON
  commCourte = 0
FINSI

POINT LOOP

SI ( 0 < duree )
ALORS

  pt_buffer = "1234567890"
  duree_r = find_tranche_660004265 ( date, pt_tableHoraire, pt_buffer)
  SI (duree_r < 0)
  ALORS
    trace ("tranche non trouvee")
    RETOUR -1
  FINSI
  Hi = i_str_to_float(pt_buffer)
  resTmp = i_float_div (T, Hi)
  TMN = i_float_to_entier(resTmp)

  SI (i_float_cmp(resTmp, i_entier_to_float(TMN)) != 0)
  ALORS
    TMN = TMN + 1
  FINSI
  SI (commCourte == 0)
  ALORS
    nbreTmp = i_entier_to_float(duree_r)
    nbreTmp2 = i_entier_to_float(TMN)
    resTmp = i_float_div(nbreTmp,nbreTmp2)

    duree_r = i_float_to_entier(resTmp)

    SI (i_float_cmp(resTmp, i_entier_to_float(duree_r)) != 0)
    ALORS
      duree_r = duree_r + 1
    FINSI
    duree_r = duree_r * TMN
  FINSI

  SI (duree > duree_r )
  ALORS
    duree_t = duree_r
  SINON
    duree_t = duree
  FINSI

  SI (commCourte == 1)
  ALORS
    coutComm = coutComm + duree_t/TMN
  SINON
    nbreTmp = i_entier_to_float(duree_t)
    nbreTmp2 = i_entier_to_float(TMN)
    resTmp = i_float_div(nbreTmp,nbreTmp2)
    nbreTmp2 = i_float_to_entier (resTmp)
    SI (i_float_cmp(resTmp, i_entier_to_float(nbreTmp2)) != 0)
    ALORS
      nbreTmp2 = nbreTmp2 + 1
    FINSI
    coutComm = coutComm +  nbreTmp2
  FINSI

  duree = duree - duree_t
  date = date + duree_t

  SAUT LOOP
FINSI

trace1(" nombre d'UT par la fomule1 : <%d>", coutComm)

RETOUR coutComm

