Déplacements de zones
Dans les déplacements de zones, le contenu des zones est déplacé sans conversion.
Prenez l'exemple suivant :
Sur AS/400 IBMi, lorsque vous déplacez un champ numérique packé vers un champ alpha, aucune conversion n'est effectuée en numérique étendu. Pour obtenir cette conversion, il faut d'abord transférer le champ numérique packé dans un champ numérique étendu (zoned) à l'aide de l'instruction Z-ADD.
Dans Oracle, SQL Server et ODBC, lorsque vous déplacez un champ numérique vers un champ alpha, aucune conversion n'est effectuée en numérique étendu. Pour obtenir cette conversion, vous devez utiliser l'instruction STR.
MOVER – Copier des octets de droite à gauche (uniquement AS/400 IBMi)
Cette opération copie le contenu d'un champ/d'une constante dans un autre champ, de droite à gauche.
Vous pouvez utiliser des sous-chaînes de caractères pour le champ d'origine et de destination.
Aucune conversion n'est effectuée au cours de la copie.
MOVER bField1/Constant TO b.Field2
Cette opération effectue un transfert octet par octet, de droite à gauche, du contenu de Field1 vers Field2 dans la limite de la longueur de Field2.
Si Field2 est plus courte que Field1, le transfert est limité à la longueur de Field2.
DCL W.field_1 CHAR 9
DCL W.field_2 CHAR 6
W.field_1 = ’ABCDEFGHI’
W.field_2 = ’123456’
MOVER W.field_1 TO W.field_2
TRACE W.field_2
Trace "DEFGHI"
Si Field2 est plus longue que Field1, le transfert n’affecte que la partie de Field2 égale à la longueur de Field1.
DCL W.field_1 CHAR 6
DCL W.field_2 CHAR 9
W.field_1 = ’ABCDEF’
W.field_2 = ’123456789’
MOVER W.field_1 TO W.field_2
TRACE W.field_2
Trace "123ABCDEF"
Grâce à la notion d'extrait de champ, vous pouvez attribuer une partie du champ cible uniquement.
DCL W.field_1 CHAR 6
DCL W.field_2 CHAR 9
W.field_1 = ’ABCDEF’
W.field_2 = ’123456789’
MOVER W.field_1(3:2) TO W.field_2(5:3)
TRACE W.field_2
Trace "12345CD89"
MOVEA – Copie gauche d'octets complétée par un caractère
Cette opération copie le contenu d'un champ/d'une constante dans un autre champ en complétant par la répétition du caractère souhaité. Des sous-chaînes peuvent être utilisées pour le champ d'origine et pour le champ de destination. Aucune conversion n'est effectuée au cours de la copie.
MOVEA b.Field1/Constant TO b.FieldR COMPLETEDBY b.Field2/Constant
Cette instruction n'est utile que si Field2 est plus longue que Field1.
Cette opération effectue un transfert, octet par octet, de gauche à droite, du contenu de Field1 vers Field2 dans la limite de la longueur de Field1 et complète Field2 par le premier caractère de Field3.
Si Field2 est plus courte que Field1, le transfert est limité à la longueur de Field2.
DCL W.field_1 CHAR 9
DCL W.field_2 CHAR 6
W.field_1 = ’ABCDEFGHI’
W.field_2 = ’123456’
MOVEA W.field_1 TO W.field_2 COMPLETEDBY ‘.’
TRACE W.field_2
Trace "ABCDEF"
Si Field2 est plus longue que Field1, le transfert n'affecte que la partie de Field2 égale à la longueur de Field1. Le reste de Field2 reçoit ensuite le premier caractère de Field3, répété jusqu'à compléter la longueur.
DCL W.field_1 CHAR 6
DCL W.field_2 CHAR 9
W.field_1 = ’ABCDEF’
W.field_2 = ’123456789’
MOVEA W.field_1 TO W.field_2 COMPLETEDBY ‘.’
TRACE W.field_2
Trace "ABCDEF..."