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.
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
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