Buscar este blog

Mostrando entradas con la etiqueta guia. Mostrar todas las entradas
Mostrando entradas con la etiqueta guia. Mostrar todas las entradas

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



COBOL - Tipos de datos en Cobol

COBOL - LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN


LOS DATOS DEL LENGUAJE COBOL


DATA DIVISION

FUNCIÓN
Se describen los datos que van a ser usados, creados, o
producidos por el programa.
Se describe la estructura de los ficheros que se van a utilizar, así como las variables utilizadas en el programa y que no son parte de los ficheros.

FORMATO
DATA DIVISION.
[FILE SECTION.
{ Entrada de descripción de ficheros....}
{ Entrada de descripción de registros...}]
[WORKING-STORAGE SECTION.
[ Entrada de descripción de variables o registros ]]



TIPOS DE DATOS

Una de las características típicas de
los datos que se usan en las
aplicaciones de gestión es la variedad
de formas y estructuras.

Los datos se clasifican en:
Campos Independientes
Campos Compuestos
Tablas








CAMPOS INDEPENDIENTES

Es un campo de trabajo que será definido en la sección de
working”. No forman parte de la descripción de los ficheros.
Formato mínimo para su definición:
número-de-nivel nombre-de-dato
PICTURE especificación de formato.

Donde:
• Número-de-nivel. Se utiliza el nivel 77.
• Nombre-de-datos. Un nombre de datos sirve para nombrar un campo con el fin de poder referenciar en el programa, el contenido del mismo.
• PICTURE. Determina la información que puede almacenarse en el
campo, así como las operaciones que con él pueden realizarse.
Permite definir el tipo y el tamaño del campo



CLÁUSULA PICTURE



PICTURE/PIC IS especificación de formato









La inicialización de los campos independientes se debe
realizar a través de la cláusula VALUE, cuando se
están definiendo.

• Formato
VALUE IS literal/constante figurativa

WORKING-STORAGE SECTION.
77 VARIABLE PIC X(20) VALUE “Listado Empleados”.
77 VARIABLE PIC 99 VALUE 10.
77 VARIABLE PIC V99 VALUE 0.03.
77 VARIABLE PIC 9(8) VALUE ZEROS.
77 VARIABLE PIC X(10) VALUE SPACES.
77 VARIABLE PIC X(9) VALUE ‘---------’ .
77 VARIABLE PIC X(9) VALUE ALL ‘-’.
77 CERO PIC 99999 VALUE ZEROS.
77 CERO PIC 99999 VALUE 0.

JUSTIFIED RIGHT

• Se utiliza únicamente con variables de tipo
alfabético o alfanumérico y su efecto es
eliminar la convención de justificación a la
izquierda de los datos no numéricos.


77 CAMPO PIC X(4) VALUE ‘AB’ JUST RIGHT.

CAMPOS COMPUESTOS

• Son campos que pueden subdividirse.

• Se le conoce también con el nombre de registros.

• Pueden definirse en el área de trabajo
(WORKING-STORAGE SECTION) y es obligada su utilización al describir la estructura de los ficheros.

 
NUMERO NOMBRE ESPECIFICACION
DE NIVEL DE DATO DE FORMATO

01 VENDEDOR.
02 NUMERO PIC 999.
02 DATOS-VENDEDOR.
03 NOMBRE PIC X(10).
03 APELLIDO1 PIC X(10).
03 APELLIDO2 PIC X(10).
02 DATOS-DIRECCION.
03 PROVINCIA PIC X(30).
03 CALLE PIC X(15).
03 NCALLE PIC 99.

02 FECHA-ALTA.
03 DÍA PIC 99.
03 MES PIC 99.
03 ANIO PIC 99.




• Los nombre de datos sirven para nombrar un campo
con el fin de poder referenciar en el programa, el
contenido del mismo.

• Si la información no se va a referenciar, el nombre de
datos puede sustituirse por la palabra reservada
FILLER.

• Los números de Nivel sirven para indicar la relación
existente entre un campo y el resto de los campos.

• Los números de nivel que pueden utilizarse son: del 01 al 49.
• [01] Sólo precede al nombre del registro.
• [02 a 49] Preceden a cualquier campo grupo o elemental.






• Un campo grupo tiene un nivel superior que cualquiera de sus
campos elementales.

• Los números de nivel utilizados no tiene porque ser correlativos.

• Cualquier nombre de datos debe ir precedido por su número de nivel.

• El número de nivel 01 deberá escribirse en el margen A, mientras que su
nombre asociado lo será en el margen B.

• Cualquiera de los restantes números de nivel dentro del campo
compuesto pueden situarse en cualquier columna.

• Se aconseja un escalonado progresivo de los niveles para una
mejor interpretación
• El tipo del campo determina la información que puede almacenarse en el
campo, así como las operaciones que con él pueden realizarse.
Se hace a través de la cláusula PICTURE.
• La longitud del campo viene dada por el número de caracteres
empleados en la especificación del formato para declarar el campo.


Calificación de los nombres de datos.

• En la declaración de campos compuestos, dos campos elementales pueden tener el mismo nombre de datos.

01 DATOS.
02 TOTALES-SEMANALES.
03 HORAS PIC 99V99.
03 DEPTO-NO PIC 9(5).
02 TOTALES-MENSUALES.
03 HORAS PIC 99V99.
03 MAS-INFORMACION PIC 9(5).

HORAS OF/IN TOTALES-SEMANALES

HORAS OF/IN TOTALES-MENSUALES


01 REG-VIEJO.
02 A-LA-FECHA.
03 MES....
03 ANUAL....
02 ULTIMO-PERIODO.
03 MES.... MES OF ULTIMO-PERIODO OF REG-VIEJO
03 ANUAL....
03 TOTAL.... TOTAL OF REG-NUEVO

01 REG-NUEVO.
02 A-LA-FECHA.
03 MES....
03 ANUAL....
02 ULTIMO-PERIODO.
03 MES....
03 ANUAL....
03 TOTAL....


NOMBRES DE CONDICIÓN

• Permite al programador definir constantes figurativas
adicionales para usarlas en el programa COBOL


88 nombre-de-dato VALUE IS/VALUES ARE constante-1
[THRU constante-2]

77 FINAL-FICHERO PIC XX.
88 FIN-FICHERO VALUE `SI`.

Si se desea preguntar SI ES FINAL DE FICHERO bastará con decir:

IF FIN-FICHERO

en lugar de preguntar IF FINAL-FICHERO = `SI`.


01 DATOS-PERSONALES.
02 NUMERO-ID ...
02 NOMBRE......
02 DIRECCION....
02 EDUCACION PICTURE 99.
88 NO-BACHILLER VALUES ARE 0 THRU 11.
88 BACHILLER VALUE IS 12.
88 ALGO-UNIVERSIDAD VALUES ARE 13 THRU 15.
88 PROFESIONAL VALUE IS 16.
88 POSTGRADO VALUES ARE 17 THRU 20.
88 CODIGO-ERROR VALUES ARE 21 THRU 99.

IF BACHILLER ....

IF ALGO-UNIVERSIDAD OR PROFESIONAL

IF EDUCACION < 16


RENAMES
• La cláusula RENAMES provee al programador la capacidad de reagrupar los items de datos elementales.
66 nombre-de-datos-1 RENAMES nombre-de -datos-2
[THRU nombre-de-datos-3]

01 REG-IMPUESTO.
02 NO-SEG-SOCIAL PIC X(9).
02 NOMBRE-COMPLETO.
03 NOMBRE PIC X(10).
03 INICIAL PIC XX.
03 APELLIDO PIC X(15).
02 TOTAL-A-LA-FECHA.
03 PAGO-BRUTO PIC 9(8)V99.
03 PAGO-NETO PIC 9(8)V99.
03 IMPUESTO-TRIBUTADO PIC 9(6)V99.
03 IMPUESTO-ESTADO PIC 9(4)V99.
66 ULTIMO-PAGO RENAMES APELLIDO THRU PAGO-NETO.

TABLAS
Una tabla es un conjunto de valores almacenados en
posiciones consecutivas de memoria y con un nombre
de datos asignado.

La referencia a entradas específicas de la tabla se
hace mediante un sólo nombre junto con un subíndice
que indica la posición de entrada particular.

WORKING-STORAGE SECTION.
01 Nombre-de-tabla.
02 Nombre-de-elemento OCCURS número-de-elementos TIMES
PICTURE tipo-de-elemento.


Una tabla es un conjunto de valores almacenados en
01 TABLA-INGRESOS-ESTADO.
02 INGRESOS-PROMEDIOS
OCCURS 50 TIMES PIC 9(6)V99.
..INGRESOS-PROMEDIOS (Índice) donde Índice es
mayor o igual que 1 y menor o igual que 50.

01 TABLA-INGRESOS-ESTADO.
02 INGRESOS-PROMEDIOS OCCURS 50 TIMES PIC 9(6)V99.
02 PROMEDIO-NACIONAL PIC 9(7)V99.

..INGRESOS-PROMEDIOS (Índice) donde Índice es
mayor o igual que 1 y menor o igual que 50.

01 TABLA-INGRESOS-ESTADO.
02 NOMBRE-INGRESO OCCURS 50 TIMES.
03 NOMBRE PIC X(4).
03 INGRESO PIC 9(6)V99.





 • La cláusula OCCURS no puede aplicarse a nivel 01.

• La cláusula OCCURS no puede aplicarse a nivel 77.

• La dimensión de una tabla debe ser menor o igual que 7, aunque
depende del compilador.

• La cláusula PICTURE se aplica sólo a campos elementales.

• Los subíndices pueden ser constantes o variables de tipo entero. Sus
valores deben ser positivos.

• El subíndice o subíndices se encierran en un conjunto de paréntesis
y se separan del nombre de la tabla por un espacio. Los subíndices
múltiples se separan uno de otros por comas y espacios.


• Inicialización de una tabla en tiempo de compilación.

nombre-de-dato-1 REDEFINES nombre-de-dato-2

01 FECHA.
02 DÍA PIC 99.
02 MES PIC 99.
02 AÑO PIC 99.

01 FECHA-ACTUAL REDEFINES FECHA PIC X(6).


01 TABLA-S.
02 FILLER PIC X(10) VALUE "LUNES".
02 FILLER PIC X(10) VALUE "MARTES".
02 FILLER PIC X(10) VALUE "MIÉRCOLES".
02 FILLER PIC X(10) VALUE "JUEVES".
02 FILLER PIC X(10) VALUE "VIERNES".
02 FILLER PIC X(10) VALUE "SÁBADO".
02 FILLER PIC X(10) VALUE "DOMINGO".

01 TABLA-DIA-S REDEFINES TABLA-S.
02 DIA-SEMANA OCCURS 7 TIMES PIC X(10).