VERBOS DE TRANSFERENCIA DE DATOS
GENERALIDADES
campo
emisor = contiene la información a transferir 
campo
receptor = recibe dicha información. 
Los
datos se pueden transferir a un campo receptor de 
varias
formas: 
 El
efecto de usar la opción GIVING con verbos aritméticos. 
 El
verbo COMPUTE por si mismo incluye una 
 transferencia
de datos al almacenar los resultados en un 
 campo
específico. 
Las
opciones READ .... INTO y WRITE.... FROM incluye 
transferencia
de información implícitas. 
La
cláusula VALUE de la DATA DIVISION incluye una 
transferencia
de información implícita, aunque sólo se 
ejecutará
una vez al principio del programa.
VERBO
MOVE 
 Transfiere
información de una zona a otra de memoria,  este verbo modifica
el contenido del campo receptor por  el contenido del campo emisor,
permaneciendo  inalterado éste último campo. 
  MOVE
  identificador-1/literal       TO
 identificador-2... 
 Los
efectos de la sentencia MOVE dependen de los tamaños y 
especificaciones PICTURE de los campos
emisor (identificador-1)  y receptor (identificador-2). 
 Además,
la categoría de los campos emisor y receptor es un 
 factor
al determinar si una instrucción MOVE es válida o no válida. 
La
constante figurativa SPACE, o un campo alfanumérico editado o
alfabético no puede moverse a un campo numérico o numérico
editado. 
Una
constante numérica, la constante figurativa ZERO, un campo numérico
o numérico editado no puede moverse a un campo alfabético. 
Una
constante o campo numérico no entero no se puede mover a un campo
alfanumérico editado o no.
TIPOS
DE MOVIMIENTOS
| 
CAMPO EMISOR | 
ALFABETICO | 
ALFANUMERICO ALFANUMERICO EDITADO | 
NUM. ENTERO NUM. NO ENTERO NUM. EDITADO | 
| 
Alfabético | 
SI | 
SI | 
NO | 
| 
Alfanumérico | 
SI | 
SI | 
NO | 
| 
Alfanumérico Editado | 
SI | 
SI | 
NO | 
| 
Numérico Entero | 
NO | 
SI | 
SI | 
| 
Numérico No entero | 
NO | 
NO | 
SI | 
| 
Numérico Editado | 
NO | 
SI | 
SI | 
 De
un campo numérico a otro numérico de edición o no. 
 Los
campos emisor y receptor se alinean por el punto decimal.
 Si
tamaño (campo receptor) < tamaño (campo emisor), se produce
truncamiento de la parte entero y/o decimal.
 Si
tamaño (campo receptor) > tamaño (campo emisor), se rellena con
ceros no significativos en cualquiera de las partes.
 De
un campo alfabético o alfanumérico a otro de tipo alfabético o
alfanumérico
de edición o no. 
 El
contenido del campo emisor se va colocando en el campo receptor
de izquierda a derecha, excepto cuando el campo receptor se ha
especificado la cláusula JUSTIFIED RIGHT. 
 Si
tamaño (campo receptor) < tamaño(campo emisor), se produce
truncamiento. 
 Si
tamaño (campo receptor) > tamaño(campo emisor), se rellena con
blancos. 
VERBO
MOVE CORRESPONDING 
La
transferencia de un campo compuesto puede 
realizarse
como un campo elemental, cuya longitud es la 
suma
de los campos elementales que lo forman, o bien 
moviendo
los campos elementales uno a uno. 
 MOVE
CORRESPONDING/CORR identificador-1 TO
identificador-2 ... 
Con
esta opción del verbo MOVE se transfiere el contenido 
de
los campos elementales de identificador-1 a los campos 
elementales
de igual nombre de identificador-2.
EJEMPLOS
01
 GRUPO-1 .
05
 NUMERO            PIC 99. 
05
 DIA                      PIC X(7). 
05
 AÑO                    PIC 99. 
01
 GRUPO-2.
 05
 LOCALIDAD       PIC X(15). 
05
 MUNICIPIO        PIC 999. 
05
 PRESUPUESTO PIC 9(5)V99. 
GRUPO-1
       12JUEVESb95 
GRUPO-2
        ARANDAbDEbDUERO9815321572
Después
de ejecutar     MOVE GRUPO-1            TO GRUPO-2 
GRUPO-1
         12JUEVESb95 
GRUPO-2
         12JUEVESb95
Si
se ha declarado la tabla siguiente: 
01
  TABLA 
02
    TABLA-CELDA   OCCURS   50   TIMES   PIC 9(5)V99. 
MOVE
ZEROS           TO TABLA
rellena
los 350 bytes del campo de TABLA 
con
ceros. Como resultado cada uno de los 7 bytes de los campos de 
TABLA-CELDA
también tendrá valores cero. 
01 
  REGISTRO-PERSONAL. 
03
NUMERO              PIC 9(5). 
03
NOMBRE              PIC X(30). 
03
DIRECCION         PIC X(20). 
03
DIS-POSTAL        PIC 99. 
01
   LINEA-IMPRESIÓN.. 
02
 FILLER                 PIC X(10)   VALUE SPACES.
02
 FILLER                  PIC X(10) VALUE SPACES. 
02
 NUMERO              PIC Z(5). 
02
 FILLER                  PIC X(5)   VALUE SPACES. 
02
 NOMBRE              PIC X(30). 
02
 FILLER                  PIC X(5)   VALUE SPACES. 
02
 DIRECCION          PIC X(20). 
02
FILLER                   PIC X(5)   VALUE SPACES. 
02
 DIS-POSTAL         PIC ZZ. 
MOVE
CORRESPONDING REGISTRO-PERSONAL 
TO
LINEA-IMPRESION 

 
No hay comentarios:
Publicar un comentario