Basic Univers

; Permet de de convertir tous les caractères accentués
;   en leur équivalent non-accentué, en convertissant la string en majuscule


;- Fonction en version PB 4

Procedure.s UCase2(string.s)
 
  Protected *mask.BYTE, *str.CHARACTER = @string
 
  While *str\c
    *mask = ?CHARMASK + *str\c
    *str\c = *mask\b
    *str + SizeOf(CHARACTER)
  Wend
 
  ProcedureReturn string
 
  DataSection
    CHARMASK:
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 32, 32
    Data.b 32, 32, 32, 32, 32, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79
    Data.b 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 32, 32, 32, 32, 32, 32, 65, 66, 67
    Data.b 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87
    Data.b 88, 89, 90, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83, 32
    Data.b 32, 32, 90, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 90, 89
    Data.b 32, 73, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 65, 65, 65, 65, 65, 65, 67
    Data.b 69, 69, 69, 69, 73, 73, 73, 73, 68, 78, 79, 79, 79, 79, 79, 32, 79, 85, 85, 85
    Data.b 85, 89, 80, 32, 65, 65, 65, 65, 65, 65, 32, 67, 69, 69, 69, 69, 73, 73, 73, 73
    Data.b 32, 78, 79, 79, 79, 79, 79, 32, 32, 85, 85, 85, 85, 89, 32, 89
  EndDataSection
 
EndProcedure

;- Fonction en version PB 3

Procedure.s UCase2(string.s)
 
  Protected *mask.BYTE, *str.BYTE
 
  *str = @string
 
  While *str\b
    *mask = ?CHARMASK + *str\b & $FF
    *str\b = *mask\b
    *str + 1
  Wend
 
  ProcedureReturn string
 
  DataSection
    CHARMASK:
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 32, 32
    Data.b 32, 32, 32, 32, 32, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79
    Data.b 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 32, 32, 32, 32, 32, 32, 65, 66, 67
    Data.b 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87
    Data.b 88, 89, 90, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83, 32
    Data.b 32, 32, 90, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 90, 89
    Data.b 32, 73, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32
    Data.b 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 65, 65, 65, 65, 65, 65, 67
    Data.b 69, 69, 69, 69, 73, 73, 73, 73, 68, 78, 79, 79, 79, 79, 79, 32, 79, 85, 85, 85
    Data.b 85, 89, 80, 32, 65, 65, 65, 65, 65, 65, 32, 67, 69, 69, 69, 69, 73, 73, 73, 73
    Data.b 32, 78, 79, 79, 79, 79, 79, 32, 32, 85, 85, 85, 85, 89, 32, 89
  EndDataSection
 
EndProcedure



Debug UCase2("Pürèbâsïç, Là pùIssañçÊ à l'étät pùr!")