Buscar este blog

jueves, 8 de agosto de 2013

COBOL - Verbos aritmeticos en COBOL


COBOL - LENGUAJE ORIENTADO A SISTEMAS DE GESTIÓN


VERBOS ARITMETICOS


INTRODUCCIÓN

Los verbos aritméticos permiten realizar las típicas operaciones de suma, resta, producto y división, además podremos almacenar el resto de una división y realizar conjuntamente todas estas operaciones en una sola sentencia.

Verbos Aritméticos.

Suma ADD
Resta SUBSTRACT
Producto MULTIPLY
División DIVIDE
O. Aritméticas COMPUTE



SUMA
ADD ident-1 literal-1 [ident-2 / literal-2] ....
TO ident-n [ident-m]

ADD ident-1/literal-1 ident-2/literal-2
GIVING ident-n [ident-m]




SUMA. OPCIONES

Opción ROUNDED
Si en una suma (o cualquier otra operación) el número de decimales del resultado es mayor que el número de ellos especificados en el campo receptor, trunca el número sobrante de dígitos por la derecha.

PICTURE RESULTADO VALOR DESPUÉS VALOR DESPUÉS
CALCULADO DE TRUNCAR DE REDONDEAR

S99V9 -12.36 -12.3 12.4
9V9 8.432 8.4 8.4
99V9 35.6 35.6 35.6
S99V 65.6 65 66
SV999 .0058 .005 .006





Opción ON SIZE ERROR
Si la parte entera de un cálculo no cupiera en el campo receptor, se produciría un desbordamiento.

La utilización de esta cláusula permite al programador especificar una serie de instrucciones que solo se ejecutarían cuando se produzca dicho desbordamiento.
ADD HORAS-SEMANA TO TOTAL -HORAS-AÑO
ON SIZE ERROR DISPLAY 'DESBORDAMIENTO DEL CAMPO '

ADD A B TO C
ON SIZE ERROR DISPLAY 'ERROR.......'.



SUMA. EJEMPLOS


ADD IDA IDB TO IDC ANTES DESPUÉS
77 IDA PIC 9(3) 010 010
77 IDB PIC 999 020 020
77 IDC PIC S99 -10 +20

ADD IDA IDB -30 TO IDD IDC ANTES DESPUÉS
77 IDA PIC 9(3) 030 030
77 IDB PIC 999 010 010
77 IDC PIC S9(2) +05 +15
77 IDD PIC S999 -15 -005





SUMA. EJEMPLOS

ADD IDA IDB GIVING IDC ANTES DESPUÉS
77 IDA PIC S9(2) -10 -10
77 IDB PIC S9(3) +020 +020
77 IDC PIC S9(4) +0030 +0010
ADD -15 IDA IDB GIVING IDC ANTES DESPUÉS
77 IDA PIC S9(2) -10 -10
77 IDB PIC S9(3) +020 +020
77 IDC PIC S9(4) +0030 +0005




SUMA. EJEMPLOS


ADD IDA IDB GIVING IDC ANTES DESPUÉS
77 IDA PIC 9(5) 21987 21987
77 IDB PIC 9(4) 4593 4593
77 IDC PIC 99 52 ---80 Se han perdido dígitos (26580)
ADD 0.0003 IDA GIVING IDC ANTES DESPUÉS
77 IDA PIC 9V9(5) 0,00005 000005
77 IDC PIC 9V99 0,38 000 -se han perdido dígitos (0.0008)


RESTA

La sentencia SUBTRACT se utiliza para restar uno o más items de datos numéricos de otro u otros items de datos numéricos, sustituyendo el valor de la diferencia en el último items de la declaración.

SUBTRACT ident-1/literal-1 .... FROM ident-2

SUBTRACT ident-1/literal-1.... FROM ident-2/literal-2
GIVING ident-3

RESTA. EJEMPLOS
SUBTRACT IDA FROM IDB ANTES DESPUÉS
77 IDA PIC 99 10 10
77 IDB PIC 999 042 032
SUBTRACT IDA 4 IDB FROM IDC IDD ANTES DESPUÉS
77 IDA PIC 99 10 10
77 IDB PIC 999 027 027
77 IDC PIC 99 52 11
77 IDD PIC 99 47 06
SUBTRACT CANTIDAD-1, CANTIDAD-2, CANTIDAD-3 FROM
CANTIDAD-4 GIVING CANTIDAD-5, CANTIDAD-6 ROUNDED
ON SIZE ERROR PERFORM DESBORDAMIENTO.

Las operaciones que se realizan en este caso son:
CANTIDAD-5 = CANTIDAD-4 -(CANTIDAD-3 + CANTIDAD-2 + CANTIDAD-1).
CANTIDAD-6 = CANTIDAD-4 -(CANTIDAD-3 + CANTIDAD-2 + CANTIDAD-1).

En el caso de que se produzca el desbordamiento de alguno
de los campos receptores ( CANTIDAD-5, CANTIDAD-6 ) el
programa será desviado a la rutina de desbordamiento.


RESTA. EJEMPLOS

SUBTRACT IDA FROM IDB ANTES DESPUÉS
GIVING IDC
77 IDA PIC 99 10 10
77 IDB PIC 999 032 032
77 IDC PIC 99 41 22

SUBTRACT IDD IDC FROM IDB ANTES DESPUÉS
GIVING IDA
77 IDA PIC 9(6) 000123 072000
77 IDB PIC 9(6) 122000 122000
77 IDC PIC 9(6) 020000 020000
77 IDD PIC 9(6) 030000 030000






MULTIPLICACIÓN
MULTIPLY ident-1/literal-1 BY ident-2
siendo:
ident-1: multiplicando.
ident-2: multiplicador y campo receptor del resultado de la operación.
MULTIPLY IDB BY IDA ANTES DESPUÉS
77 IDA PIC 9(5) 01000 25000
77 IDB PIC 99 25 25

MULTIPLY 0.5 BY IDA ANTES DESPUÉS
77 IDA PIC 9(5) 25000 12500


MULTIPLY ident-1/literal-1 BY ident-2 GIVING ident-3

MULTIPLY A BY B GIVING C ROUNDED, E ON SIZE ERROR
PERFORM RUTINA-DESBORDAMIENTO.

MULTIPLY IDA BY 0.5 GIVING IDB ANTES DESPUÉS
77 IDA PIC 9(5) 12500 12500
77 IDB PIC 9(5) 50000 06250


DIVISIÓN
DIVIDE ident-1/literal-1 INTO ident-2

DIVIDE A INTO B, C ROUNDED
ON SIZE ERROR
PERFORM RUTINA-DE-DESBORDAMIENTO.

Las operaciones que se realizan son B=B/A y C=C/A, en el caso
de que en algún campo receptor, no cupiera el resultado de las
operaciones realizadas se rompería la secuencia del programa
ejecutándose el párrafo RUTINA DE DESBORDAMIENTO.


DIVIDE ident-1/literal-1 INTO ident-2 GIVING ident-3
DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3
DIVIDE ident-1/literal-1 INTO ident-2 GIVING ident-3
REMAINDER ident-4

DIVIDE ident-1/literal-1 BY ident-2 GIVING ident-3
REMAINDER ident-4


DIVISIÓN EJEMPLOS

DIVIDE IDB INTO IDA ANTES DESPUÉS
77 IDA PIC 9(5) 50000 01000
77 IDB PIC 99 50 50

DIVIDE IDA BY 365 GIVING IDB ANTES DESPUÉS
77 IDA PIC 9(5) 36500 36500
77 IDB PIC 1000

DIVIDE 365 INTO IDA GIVING IDB ANTES DESPUÉS
77 IDA PIC 9(5) 36500 36500
77 IDB PIC 1000

DIVIDE DIVIDENDO ANTES DESPUÉS
BY DIVISOR
GIVING COCIENTE
REMAINDER RESTO
77 DIVIDENDO PIC 999 100 100
77 DIVISOR PIC 99 03 03
77 RESTO PIC 99V99 55 0100 (01.00)
77 COCIENTE PIC 99 33




COMPUTE
Esta sentencia se utiliza para realizar
operaciones aritméticas sin necesidad de
utilizar las declaraciones aritméticas vistas
hasta ahora.
COMPUTE ident-1
[ROUNDED] = expresión-aritmética
[ON SIZE ERROR sentencia-1]
SÍMBOLO OPERACIÓN PRIORIDAD
REPRESENTADA
+ Suma MENOR
- Resta I
* Producto I
/ Cociente V
** Exponenciación MAYOR
COMPUTE A = B ** C. No tiene sentencia equivalente.

COMPUTE A = B + C. ADD B, C GIVING A.

COMPUTE A = B – C SUBTRACT C FROM B GIVING A.

COMPUTE A = B * C. MULTIPLY B BY C GIVING A. ZERO GIVING A,

COMPUTE A = B / C. DIVIDE B BY C GIVING A.

COMPUTE A = -B. SUBTRACT B FROM ZERO GIVING A.

MULTIPLY -1 BY B GIVING A



No hay comentarios:

Publicar un comentario