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