COMP-3 en COBOL

En COBOL, un programador puede especificar la forma interna de los elementos de registros que le permite facilitar su uso de la manera más eficiente. COMPUTACIONAL y DISPLAY son las dos formas generales de representación interna. Se utiliza para almacenar y comprimir el espacio de almacenamiento. 

  • USO DE CÁLCULO – Almacenar valor binario
  • PANTALLA – Almacenar valor decimal

Cómo se almacenan los datos:

El tipo de datos decimal codificado en binario (BCD) es exactamente el mismo que su nombre representa, es un valor almacenado en decimal y cada dígito está codificado en binario. Dado que un dígito tiene solo diez valores posibles (0-9), solo se puede representar en forma binaria con 4 bits. Los cuatro bits se denominan «nybble» y cada nybble contiene un dígito del valor. Por lo tanto, puede obtener dos dígitos en cada byte de 8 bits.

El valor en el COMP-3 se almacena en orden alto a orden bajo. el nybble superior del primer byte encontrado dentro del documento es el dígito más significativo del valor, el nybble inferior del byte es el dígito siguiente, y así sucesivamente. el nybble final, el nybble bajo del byte menos enorme. El hexágono «C» es positivo, el hexágono «D» es negativo y el hexágono «F» no tiene signo.

Los campos Comp-3 están alineados en los límites de bytes y un campo es siempre un número entero de bytes. El carácter nybble es siempre el nybble LSD bajo (dígito menos significativo). Dado que un signo toma un nibble, y dado que siempre hay un número par de nibbles en cualquier número de bytes, un número impar de dígitos llenará completamente el campo comp-3. (Un número impar de dígitos más un signo de nibble hace un número par de nibbles o bytes completamente llenos). Si el tamaño del campo se especifica como un número par de dígitos, como en “PIC S9(6) comp-3.”, el nibble superior se ignora y generalmente, pero no siempre, se establece en cero.

Ejemplo 1:

Cobol

COBOL program for COMP-3
IDENTIFICATION DIVISION.
PROGRAM-ID. Comp3-Code.
ENVIRONMENT DIVISION.
DATA DIVISION.
    WORKING-STORAGE SECTION.
        77 WS-VALA  USAGE IS COMP-1.
        77 WS-VALB  USAGE IS COMP-2.
        77 WS-VALC  PIC S9(3)  USAGE IS COMP-3.
        77 WS-VALD  PIC S9(4)  USAGE IS COMP-3.
PROCEDURE DIVISION.
MAIN-PARA.
    DISPLAY '***COMP-1 USAGE DISPLAY***'.
        MOVE 999 TO WS-VALA.
    DISPLAY 'VALUE OF WS-VALA IS: ' WS-VALA.
    DISPLAY 'LENGHTH OF WS-VALA IS: ' LENGTH OF  WS-VALA.
    DISPLAY '***COMP-2 USAGE DISPLAY***'.
        MOVE 999 TO WS-VALB.
    DISPLAY 'VALUE OF WS-VALB IS: ' WS-VALB.
    DISPLAY 'LENGHTH OF WS-VALB IS: ' LENGTH OF WS-VALB.
    DISPLAY '***COMP-3 USAGE USING 2 BYTES DISPLAY***'.
        MOVE 999 TO WS-VALC.
    DISPLAY 'VALUE OF WS-VALC IS: ' WS-VALC.
    DISPLAY 'LENGHTH OF WS-VALC IS: ' LENGTH OF WS-VALC.
    DISPLAY '***COMP-3 USAGE USING 3 BYTES DISPLAY***'.
        MOVE 999 TO WS-VALD.
    DISPLAY 'VALUE OF WS-VALD IS: ' WS-VALD.
    DISPLAY 'LENGHTH OF WS-VALD IS: ' LENGTH OF WS-VALD.
STOP RUN.

Producción:

 

Explicación:

  • Para un campo empaquetado comp-3 especifica el número de dígitos después de desempaquetar. El número real de bytes ocupados en el archivo es aproximadamente la mitad de esos bytes.
    Para calcular la cantidad de bytes, debemos agregar 1 (por signo) a la cantidad total de dígitos, luego dividirlo por 2 y redondear hacia arriba.
  • Aquí, en nuestro ejemplo tomado, estamos considerando la variable denominada WS-VALC y WS-VALD.
  • Para WS-VALC PIC S9(3), EL USO ES COMP-3, por lo que aquí podemos tomarlo como (3+1)/2, que equivale a un tamaño de 2 bytes.
  • De manera similar, en la variable de 3 bytes que es WS-VALD PIC S9(4) EL USO ES COMP-3, aquí podemos tomarlo como (4+1)/2 que es igual a 2.5 (redondeado) por lo que tomará 3 bytes .

Publicación traducida automáticamente

Artículo escrito por rupajha144 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *