Buscar este blog

jueves, 8 de agosto de 2013

COBOL - Verbos de transferencia de datos Cobol

COBOL - LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN


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