> Tech > Faire un passage de données latéral

Faire un passage de données latéral

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Quand les deux variables (source et résultat) sont des données caractère, EVAL est l'équivalent de l'opération MOVEL(P) (Move left with blank padding). EVALR est l'équivalent de MOVE(P). Le code en format fixe suivant

C Movel(p) Source Result
C Move(p) Source2 Result2
est converti en
Result = Source; //

Faire un passage de données latéral

MOVEL(P)
Evalr Result2 = Source2; // MOVE(P)

Si l’on veut éviter de combler le résultat avec des blancs,
il faut prendre en compte les longueurs des champs respectifs.
Si le résultat est plus court que la source, il faut
utiliser la fonction %SUBST (Substring) à  droite de l’expression
pour attribuer la portion appropriée du champ source
au résultat :

Result = %Subst(Source
     :%Size(Source)-%Size(Result)+1
     :%Size(Result)) ;

Bien que ce code plutôt encombrant soit capable de
bien convertir une opération MOVE dans cette situation, il
sera préférable de le simplifier en substituant les tailles en
octets réelles des champs source et résultat. Ainsi, si la
source a neuf octets et si le résultat en a cinq, utilisez ce
code dans la version en format libre :

Result = %Subst(Source:5:5);

Si la variable result est plus longue que la variable
source, on peut utiliser la fonction %SUBST à  gauche de
l’expression d’attribution, pour
n’attribuer la source qu’à  une portion
du résultat :

%Subst(Result
%Size(Result)-%Size(Source)+1) =
Source;

Si la source a cinq octets et si le résultat en a neuf, on
peut simplifier le code

%Subst(Result:5) = Source;

Pour une opération MOVEL sans remplissage, il faut
quand même ajuster les emplacements, mais on utilisera
encore la fonction %SUBST si le résultat est plus long que la
variable source :

%Subst(Result:1:%Size(Source)) = Source;

Si la source a cinq octets et si le résultat en a neuf, on
peut simplifier le code

%Subst(Result:1:5) = Source;

Bien entendu, si le résultat est plus court que la source,
une attribution simple fera l’affaire dans une conversion
MOVEL:

Result = Source;

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010