À propos des nulls
La transformation offre la possibilité de gérer le traitement des nulls sur les buffers I, B, O, W, V. Cela signifie qu'un champ faisant partie de ce buffer pourra voir sa valeur null respectée, attribuée et testée.
Cette option est ajoutée par défaut sur les nouvelles transformations et n'affecte pas les transformations existantes, à moins de rajouter cette option en première ligne.
Pour le reste de cette section, vous devez vérifier les transformations pour lesquelles l'option NULL_SUPPORT est définie. Lorsque cette option n'est pas définie, le mot null, par exemple, n'est pas autorisé.
Affectation de zones avec traitement des nulls
Dans le cas d'un champ de buffer I, ce champ contient soit des espaces blancs, si son type est alphanumérique, soit des 0, si son type est numérique.
Le fait qu'elle soit nulle est enregistré et transmis lors de son affectation à un autre champ.
Exemples :
O.LIBELLE = I.LIBELLE
Si la valeur de I.LIBELLE est nulle et attribuée à O.LIBELLE, la valeur de O.LIBELLE devient nulle également et le champ est vide, car il est de type alpha.
W.LIBELLE = I.LIBELLE
O.LIBELLE = W.LIBELLE
Si la valeur I.LIBELLE est nulle et attribuée à W.LIBELLE, la valeur de W.LIBELLE devient nulle.
Attribuer la valeur de W.LIBELLE à O.LIBELLE rend la valeur de O.LIBELLE nulle.
Attribution de la valeur Null
Il est désormais possible de forcer un champ nulle :
Exemple :
O.LIBELLE = Null
Si le champ est de type alpha, son contenu est laissé blanc et sa propriété nulle est affectée.
Si le champ est de type numérique, son contenu est réinitialisé à 0 et sa propriété nulle est affectée.
Il est possible d'affecter Null à tous les champs (de base de données sur un autre champ) pour les buffers I, B, O, W, V.
Calcul de zones numériques avec valeur Null
Lors de l'addition ou de la soustraction de deux zones, il faut qu'elles soient toutes les deux nulles pour que le résultat soit nul.
Exemple :
Option NULL_SUPPORT
W.VAL1 = 1
W.VAL2 = Null
W.VAL3 = W.VAL1 + W.VAL2
TRACE W.VAL3
Trace : 1
Après multiplication ou division des deux champs, comme l'un est null, le résultat est null.
Exemple :
Option NULL_SUPPORT
W.VAL1 = 1
W.VAL2 = Null
W.VAL3 = W.VAL1 * W.VAL2
TRACE W.VAL3
Test de la valeur Null
Il est possible de tester un champ afin de voir si elle est nulle :
Exemple :
If I.LIBELLE = Null Then GoTo *SKIP
If I.LIBELLE = Null Then
I.LIBELLE = 'N/A'
EndIf
O.LIBELLE = I.LIBELLE
If I.LIBELLE <> Null Then
O.LIBELLE = I.LIBELLE
Else
O.LIBELLE = 'N/A'
EndIf
Seuls les tests = et <> sont possibles et le mot clé Null ne peut être défini qu'en deuxième facteur.
Vous pouvez donc utiliser la commande IF Null=I.LIBELLE Then.