# Fonction PCODE ID = 860026233
REGISTRE ENTIER num
############################################################################
#
# nom du fichier: hex_str.src
#       Retourne un pointeur sur un buffer contenant en hexadecimal la valeur numerique en entree
#       POINTEUR pt_hex = num_hex_str( ENTIER num)
#       Format de sortie : ABCDEFGH (4 octets)
#
############################################################################

#---------------------------------------------------------------------------
# VARIABLES LOCALES
#---------------------------------------------------------------------------
REGISTRE ENTIER fort
REGISTRE ENTIER faible
REGISTRE ENTIER res
REGISTRE ENTIER poids_fort
REGISTRE ENTIER val_AB
REGISTRE ENTIER val_CD
REGISTRE ENTIER val_EF
REGISTRE ENTIER val_GH

REGISTRE POINTEUR pt_A
REGISTRE POINTEUR pt_B
REGISTRE POINTEUR pt_C
REGISTRE POINTEUR pt_D
REGISTRE POINTEUR pt_E
REGISTRE POINTEUR pt_F
REGISTRE POINTEUR pt_G
REGISTRE POINTEUR pt_H
REGISTRE POINTEUR pt_AB
REGISTRE POINTEUR pt_CD
REGISTRE POINTEUR pt_EF
REGISTRE POINTEUR pt_GH
REGISTRE POINTEUR pt_hex
REGISTRE POINTEUR pt_BUF

pt_A = "pt_A012"
pt_B = "pt_B012"
pt_C = "pt_C012"
pt_D = "pt_D012"
pt_E = "pt_E012"
pt_F = "pt_F012"
pt_G = "pt_G012"
pt_H = "pt_H012"
pt_AB = "pt_AB01234"
pt_CD = "pt_CD01234"
pt_EF = "pt_EF01234"
pt_GH = "pt_GH01234"
pt_hex = "pt_hex12345678891011121314151617181920"
pt_BUF = "pt_BUF12345678891011121314151617181920"

i_strcpy(pt_A, "0")
i_strcpy(pt_B, "0")
i_strcpy(pt_C, "0")
i_strcpy(pt_D, "0")
i_strcpy(pt_E, "0")
i_strcpy(pt_F, "0")
i_strcpy(pt_G, "0")
i_strcpy(pt_H, "0")
i_strcpy(pt_AB, "00")
i_strcpy(pt_CD, "00")
i_strcpy(pt_EF, "00")
i_strcpy(pt_GH, "00")

num = depilerENTIER()

SI num == 0
  ALORS
  i_strcpy(pt_hex, "00000000")
  RETOUR pt_hex
FINSI

# Test du bit de poids fort
poids_fort = 0
res = num & 2147483648
SI res !=0
  ALORS
  poids_fort = 1
  # mise a 0 du bit de poids fort
  num = num & 2147483647
FINSI

# **************************************** Octet AB ****************************************
res = num >> 24
SI poids_fort == 0
  ALORS
  val_AB = res
SINON
  # restauration a 1 du poids fort
  val_AB = res | 128
FINSI

SI val_AB == 0
  ALORS
  i_strcpy(pt_AB, "00")
SINON
  fort = 0
  SI val_AB > 15
    ALORS
    fort = val_AB >> 4
    SI fort == 0
      ALORS
      i_strcpy(pt_A, "0")
    SINON
      SI fort == 1
        ALORS
        i_strcpy(pt_A, "1")
      SINON
        SI fort == 2
          ALORS
          i_strcpy(pt_A, "2")
        SINON
          SI fort == 3
            ALORS
            i_strcpy(pt_A, "3")
          SINON
            SI fort == 4
              ALORS
              i_strcpy(pt_A, "4")
            SINON
              SI fort == 5
                ALORS
                i_strcpy(pt_A, "5")
              SINON
                SI fort == 6
                  ALORS
                  i_strcpy(pt_A, "6")
                SINON
                  SI fort == 7
                    ALORS
                    i_strcpy(pt_A, "7")
                  SINON
                    SI fort == 8
                      ALORS
                      i_strcpy(pt_A, "8")
                    SINON
                      SI fort == 9
                        ALORS
                        i_strcpy(pt_A, "9")
                      SINON
                        SI fort == 10
                          ALORS
                          i_strcpy(pt_A, "A")
                        SINON
                          SI fort == 11
                            ALORS
                            i_strcpy(pt_A, "B")
                          SINON
                            SI fort == 12
                              ALORS
                              i_strcpy(pt_A, "C")
                            SINON
                              SI fort == 13
                                ALORS
                                i_strcpy(pt_A, "D")
                              SINON
                                SI fort == 14
                                  ALORS
                                  i_strcpy(pt_A, "E")
                                SINON
                                  SI fort == 15
                                    ALORS
                                    i_strcpy(pt_A, "F")
                                  FINSI
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI

  faible = val_AB & 15
  SI faible == 0
    ALORS
    i_strcpy(pt_B, "0")
  SINON
    SI faible == 1
      ALORS
      i_strcpy(pt_B, "1")
    SINON
      SI faible == 2
        ALORS
        i_strcpy(pt_B, "2")
      SINON
        SI faible == 3
          ALORS
          i_strcpy(pt_B, "3")
        SINON
          SI faible == 4
            ALORS
            i_strcpy(pt_B, "4")
          SINON
            SI faible == 5
              ALORS
              i_strcpy(pt_B, "5")
            SINON
              SI faible == 6
                ALORS
                i_strcpy(pt_B, "6")
              SINON
                SI faible == 7
                  ALORS
                  i_strcpy(pt_B, "7")
                SINON
                  SI faible == 8
                    ALORS
                    i_strcpy(pt_B, "8")
                  SINON
                    SI faible == 9
                      ALORS
                      i_strcpy(pt_B, "9")
                    SINON
                      SI faible == 10
                        ALORS
                        i_strcpy(pt_B, "A")
                      SINON
                        SI faible == 11
                          ALORS
                          i_strcpy(pt_B, "B")
                        SINON
                          SI faible == 12
                            ALORS
                            i_strcpy(pt_B, "C")
                          SINON
                            SI faible == 13
                              ALORS
                              i_strcpy(pt_B, "D")
                            SINON
                              SI faible == 14
                                ALORS
                                i_strcpy(pt_B, "E")
                              SINON
                                SI faible == 15
                                  ALORS
                                  i_strcpy(pt_B, "F")
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI
  res = i_format_str2( pt_AB, "%s%s", pt_A, pt_B)
FINSI

# **************************************** Octet CD ****************************************
# masque de AB  (00FFFFFF = 16777215)
res = num & 16777215
val_CD = res >> 16

SI val_CD == 0
  ALORS
  i_strcpy(pt_CD, "00")
SINON
  fort = 0
  SI val_CD > 15
    ALORS
    fort = val_CD >> 4
    SI fort == 0
      ALORS
      i_strcpy(pt_C, "0")
    SINON
      SI fort == 1
        ALORS
        i_strcpy(pt_C, "1")
      SINON
        SI fort == 2
          ALORS
          i_strcpy(pt_C, "2")
        SINON
          SI fort == 3
            ALORS
            i_strcpy(pt_C, "3")
          SINON
            SI fort == 4
              ALORS
              i_strcpy(pt_C, "4")
            SINON
              SI fort == 5
                ALORS
                i_strcpy(pt_C, "5")
              SINON
                SI fort == 6
                  ALORS
                  i_strcpy(pt_C, "6")
                SINON
                  SI fort == 7
                    ALORS
                    i_strcpy(pt_C, "7")
                  SINON
                    SI fort == 8
                      ALORS
                      i_strcpy(pt_C, "8")
                    SINON
                      SI fort == 9
                        ALORS
                        i_strcpy(pt_C, "9")
                      SINON
                        SI fort == 10
                          ALORS
                          i_strcpy(pt_C, "A")
                        SINON
                          SI fort == 11
                            ALORS
                            i_strcpy(pt_C, "B")
                          SINON
                            SI fort == 12
                              ALORS
                              i_strcpy(pt_C, "C")
                            SINON
                              SI fort == 13
                                ALORS
                                i_strcpy(pt_C, "D")
                              SINON
                                SI fort == 14
                                  ALORS
                                  i_strcpy(pt_C, "E")
                                SINON
                                  SI fort == 15
                                    ALORS
                                    i_strcpy(pt_C, "F")
                                  FINSI
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI

  faible = val_CD & 15
  SI faible == 0
    ALORS
    i_strcpy(pt_D, "0")
  SINON
    SI faible == 1
      ALORS
      i_strcpy(pt_D, "1")
    SINON
      SI faible == 2
        ALORS
        i_strcpy(pt_D, "2")
      SINON
        SI faible == 3
          ALORS
          i_strcpy(pt_D, "3")
        SINON
          SI faible == 4
            ALORS
            i_strcpy(pt_D, "4")
          SINON
            SI faible == 5
              ALORS
              i_strcpy(pt_D, "5")
            SINON
              SI faible == 6
                ALORS
                i_strcpy(pt_D, "6")
              SINON
                SI faible == 7
                  ALORS
                  i_strcpy(pt_D, "7")
                SINON
                  SI faible == 8
                    ALORS
                    i_strcpy(pt_D, "8")
                  SINON
                    SI faible == 9
                      ALORS
                      i_strcpy(pt_D, "9")
                    SINON
                      SI faible == 10
                        ALORS
                        i_strcpy(pt_D, "A")
                      SINON
                        SI faible == 11
                          ALORS
                          i_strcpy(pt_D, "B")
                        SINON
                          SI faible == 12
                            ALORS
                            i_strcpy(pt_D, "C")
                          SINON
                            SI faible == 13
                              ALORS
                              i_strcpy(pt_D, "D")
                            SINON
                              SI faible == 14
                                ALORS
                                i_strcpy(pt_D, "E")
                              SINON
                                SI faible == 15
                                  ALORS
                                  i_strcpy(pt_D, "F")
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI
  res = i_format_str2( pt_CD, "%s%s", pt_C, pt_D)
FINSI

# **************************************** Octet EF ****************************************
# masque de ABCD (0000FFFF = 65535)
res = num & 65535
val_EF = res >> 8

SI val_EF == 0
  ALORS
  i_strcpy(pt_EF, "00")
SINON
  fort = 0
  SI val_EF > 15
    ALORS
    fort = val_EF >> 4
    SI fort == 0
      ALORS
      i_strcpy(pt_E, "0")
    SINON
      SI fort == 1
        ALORS
        i_strcpy(pt_E, "1")
      SINON
        SI fort == 2
          ALORS
          i_strcpy(pt_E, "2")
        SINON
          SI fort == 3
            ALORS
            i_strcpy(pt_E, "3")
          SINON
            SI fort == 4
              ALORS
              i_strcpy(pt_E, "4")
            SINON
              SI fort == 5
                ALORS
                i_strcpy(pt_E, "5")
              SINON
                SI fort == 6
                  ALORS
                  i_strcpy(pt_E, "6")
                SINON
                  SI fort == 7
                    ALORS
                    i_strcpy(pt_E, "7")
                  SINON
                    SI fort == 8
                      ALORS
                      i_strcpy(pt_E, "8")
                    SINON
                      SI fort == 9
                        ALORS
                        i_strcpy(pt_E, "9")
                      SINON
                        SI fort == 10
                          ALORS
                          i_strcpy(pt_E, "A")
                        SINON
                          SI fort == 11
                            ALORS
                            i_strcpy(pt_E, "B")
                          SINON
                            SI fort == 12
                              ALORS
                              i_strcpy(pt_E, "C")
                            SINON
                              SI fort == 13
                                ALORS
                                i_strcpy(pt_E, "D")
                              SINON
                                SI fort == 14
                                  ALORS
                                  i_strcpy(pt_E, "E")
                                SINON
                                  SI fort == 15
                                    ALORS
                                    i_strcpy(pt_E, "F")
                                  FINSI
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI

  faible = val_EF & 15
  SI faible == 0
    ALORS
    i_strcpy(pt_F, "0")
  SINON
    SI faible == 1
      ALORS
      i_strcpy(pt_F, "1")
    SINON
      SI faible == 2
        ALORS
        i_strcpy(pt_F, "2")
      SINON
        SI faible == 3
          ALORS
          i_strcpy(pt_F, "3")
        SINON
          SI faible == 4
            ALORS
            i_strcpy(pt_F, "4")
          SINON
            SI faible == 5
              ALORS
              i_strcpy(pt_F, "5")
            SINON
              SI faible == 6
                ALORS
                i_strcpy(pt_F, "6")
              SINON
                SI faible == 7
                  ALORS
                  i_strcpy(pt_F, "7")
                SINON
                  SI faible == 8
                    ALORS
                    i_strcpy(pt_F, "8")
                  SINON
                    SI faible == 9
                      ALORS
                      i_strcpy(pt_F, "9")
                    SINON
                      SI faible == 10
                        ALORS
                        i_strcpy(pt_F, "A")
                      SINON
                        SI faible == 11
                          ALORS
                          i_strcpy(pt_F, "B")
                        SINON
                          SI faible == 12
                            ALORS
                            i_strcpy(pt_F, "C")
                          SINON
                            SI faible == 13
                              ALORS
                              i_strcpy(pt_F, "D")
                            SINON
                              SI faible == 14
                                ALORS
                                i_strcpy(pt_F, "E")
                              SINON
                                SI faible == 15
                                  ALORS
                                  i_strcpy(pt_F, "F")
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI
  res = i_format_str2( pt_EF, "%s%s", pt_E, pt_F)
FINSI

# **************************************** Octet GH ****************************************
# masque de ABCDEF (000000FF = 255)
val_GH = num & 255

SI val_GH == 0
  ALORS
  i_strcpy(pt_GH, "00")
SINON
  fort = 0
  SI val_GH > 15
    ALORS
    fort = val_GH >> 4
    SI fort == 0
      ALORS
      i_strcpy(pt_G, "0")
    SINON
      SI fort == 1
        ALORS
        i_strcpy(pt_G, "1")
      SINON
        SI fort == 2
          ALORS
          i_strcpy(pt_G, "2")
        SINON
          SI fort == 3
            ALORS
            i_strcpy(pt_G, "3")
          SINON
            SI fort == 4
              ALORS
              i_strcpy(pt_G, "4")
            SINON
              SI fort == 5
                ALORS
                i_strcpy(pt_G, "5")
              SINON
                SI fort == 6
                  ALORS
                  i_strcpy(pt_G, "6")
                SINON
                  SI fort == 7
                    ALORS
                    i_strcpy(pt_G, "7")
                  SINON
                    SI fort == 8
                      ALORS
                      i_strcpy(pt_G, "8")
                    SINON
                      SI fort == 9
                        ALORS
                        i_strcpy(pt_G, "9")
                      SINON
                        SI fort == 10
                          ALORS
                          i_strcpy(pt_G, "A")
                        SINON
                          SI fort == 11
                            ALORS
                            i_strcpy(pt_G, "B")
                          SINON
                            SI fort == 12
                              ALORS
                              i_strcpy(pt_G, "C")
                            SINON
                              SI fort == 13
                                ALORS
                                i_strcpy(pt_G, "D")
                              SINON
                                SI fort == 14
                                  ALORS
                                  i_strcpy(pt_G, "E")
                                SINON
                                  SI fort == 15
                                    ALORS
                                    i_strcpy(pt_G, "F")
                                  FINSI
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI

  faible = val_GH & 15
  SI faible == 0
    ALORS
    i_strcpy(pt_H, "0")
  SINON
    SI faible == 1
      ALORS
      i_strcpy(pt_H, "1")
    SINON
      SI faible == 2
        ALORS
        i_strcpy(pt_H, "2")
      SINON
        SI faible == 3
          ALORS
          i_strcpy(pt_H, "3")
        SINON
          SI faible == 4
            ALORS
            i_strcpy(pt_H, "4")
          SINON
            SI faible == 5
              ALORS
              i_strcpy(pt_H, "5")
            SINON
              SI faible == 6
                ALORS
                i_strcpy(pt_H, "6")
              SINON
                SI faible == 7
                  ALORS
                  i_strcpy(pt_H, "7")
                SINON
                  SI faible == 8
                    ALORS
                    i_strcpy(pt_H, "8")
                  SINON
                    SI faible == 9
                      ALORS
                      i_strcpy(pt_H, "9")
                    SINON
                      SI faible == 10
                        ALORS
                        i_strcpy(pt_H, "A")
                      SINON
                        SI faible == 11
                          ALORS
                          i_strcpy(pt_H, "B")
                        SINON
                          SI faible == 12
                            ALORS
                            i_strcpy(pt_H, "C")
                          SINON
                            SI faible == 13
                              ALORS
                              i_strcpy(pt_H, "D")
                            SINON
                              SI faible == 14
                                ALORS
                                i_strcpy(pt_H, "E")
                              SINON
                                SI faible == 15
                                  ALORS
                                  i_strcpy(pt_H, "F")
                                FINSI
                              FINSI
                            FINSI
                          FINSI
                        FINSI
                      FINSI
                    FINSI
                  FINSI
                FINSI
              FINSI
            FINSI
          FINSI
        FINSI
      FINSI
    FINSI
  FINSI
  res = i_format_str2( pt_GH, "%s%s", pt_G, pt_H)
FINSI

# concatenation AB CD EF GH
res = i_format_str2( pt_hex, "%s%s", pt_AB, pt_CD)
res = i_format_str2( pt_BUF, "%s%s", pt_hex, pt_EF)
res = i_format_str2( pt_hex, "%s%s", pt_BUF, pt_GH)

RETOUR pt_hex

