Le typage faible
Le langage d'oxygène ++ est un langage à typage faible. Il permet des opérations ou des affectations entre des données de types différents. Cependant il faut être conscient que pour obtenir ce résultat le traducteur opère des conversions entre les différents opérandes.
L'affectation
C'est l'action d'affecter une donnée par une expression
< donnée > = < expression >
Dans le langage on trouve des types numériques ( Entier, Simple et Double ) et des types alphanumériques ( Chaine et Date ). Quand on souhaite affecter une donnée avec une expression on peut rencontrer 4 cas distincts suivants le type de la donnée et celui de l'expression :
1°Cas :
Donnée : Numérique
Expression : Numérique
La conversion est faite implicitement mais des problèmes peuvent apparaître cas de dépassements de capacité:
Si la donnée est un Entier que l'expression donne un résultat ( Simple ou Double ), supérieur à la capacité des Entiers, la donnée prendra alors une valeur limite :
32767 si elle est positive, -32768 si elle est négative.Si la donnée est un Simple que l'expression donne un résultat Double , supérieur à la capacité des Simples, la donnée prendra alors une valeur limite :
999999.00 si positive -999999.00 si négative
Dans les deux cas un message d'erreur sera signalé lors de l'exécution.
2°Cas :
Donnée : Alphanumérique
Expression : Alphanumérique
Il n'y a pas de conversion. La donnée prendra exactement pour valeur le contenu de l'expression. Cependant si l'expression possédait un format particulier, ce format ne sera pas conservé lors de l'affectation.
3°Cas :
Donnée : Alphanumérique
Expression : Numérique
L'expression numérique est convertie en une chaîne automatiquement.
Le format du numérique est conservée, puis le résultat est affecté dans la chaîne.
Exemple :
VARIABLES: Entier n("variable exemple","#,##0")=1234
Chaine unechaine
unechaine = n // La variable unechaine vaudra "1 234"
4°Cas :
Donnée : Numérique
Expression : Alphanumérique
L'expression alphanumérique est convertie en numérique et le résultat est affecté dans la donnée. Si l'expression contient des lettres et ne peut donc pas êtres convertie en numérique la donnée prendra alors la valeur 0.
5°Cas :
Donnée : Monétaire
Expression : Numérique
L'expression numérique ne sera pas automatiquement convertie en type monétaire même si la monnaie courante a été définie, cela dépend si un opérande est de type Monnaie ou pas.
Conversions les plus courantes :
Monnaie * Numérique => Monnaie
Monnaie * Monnaie => Numérique
Monnaie + Monnaie => Monnaie
Monnaie + Numérique => Monnaie ou numérique selon le type du premier
opérande !