Articulo de referencia

Firmado sobrepunción

En informática , un sobrepunción con signo es un esquema de codificación que almacena el signo de un número cambiando (generalmente) el último dígito. Se utiliza en datos de car...

En informática , un sobrepunción con signo es un esquema de codificación que almacena el signo de un número cambiando (generalmente) el último dígito. Se utiliza en datos de caracteres en mainframes de IBM mediante lenguajes como COBOL , PL/I y RPG . [ 1 ] Su propósito es ahorrar un carácter que de otro modo sería utilizado por el dígito del signo. [ 2 ] El código se deriva del código de tarjeta perforada de Hollerith , donde tanto un dígito como un signo pueden ingresarse en la misma columna de la tarjeta. Se llama sobrepunción porque el dígito en esa columna tiene una perforación de 12 o una perforación de 11 encima para indicar el signo. Las tres filas superiores de la tarjeta se llaman perforaciones de zona , [ 3 ] y por lo tanto, los datos de caracteres numéricos que pueden contener sobrepunciones se llaman decimales zonales .

En la terminología de IBM, los cuatro bits de menor orden de un byte en almacenamiento se denominan dígito , y los cuatro bits de mayor orden, zona . [ 4 ] Los bits de dígito contienen el valor numérico 0–9. Los bits de zona contienen 'F'x, formando los caracteres 0–9, o bien la posición del carácter que contiene el sobreimpresión contiene un valor hexadecimal que indica un valor positivo o negativo, formando un conjunto diferente de caracteres. (Las zonas A, C, E y F indican valores positivos, B y D negativos).

La PACKinstrucción en las máquinas con arquitectura IBM System/360 convierte el signo de un número decimal zonificado al convertirlo a decimal empaquetado , y la UNPKinstrucción correspondiente establecerá el signo de sobreimpresión correcto de su salida decimal zonificada. [ 5 ]

Soporte de idiomas

PL/I

PL/I utiliza el PICTUREatributo para declarar datos decimales zonificados con un sobreimpresión con signo. Cada carácter en una imagen numérica, excepto V, que indica la posición del punto decimal asumido, representa un dígito. Un carácter de imagen de T, I, o Rindica una posición de dígito que puede contener una sobreimpresión. Tindica que la posición contendrá {–I si es positivo y {–R si es negativo. Iindica que la posición contendrá {–I si es positivo y 0-9 si es negativo. Rindica que la posición contendrá 0–9 si es positivo y {–R si es negativo.

Por ejemplo, PICTURE 'Z99R'describe un campo numérico de cuatro caracteres. La primera posición puede estar en blanco o contener un dígito del 0 al 9. Las dos posiciones siguientes contendrán dígitos, y la cuarta posición contendrá del 0 al 9 para un número positivo y {–R para uno negativo. [ 6 ]

Asignar el valor 1021 a la imagen anterior almacenará los caracteres "1021" en la memoria; asignar -1021 almacenará "102J".

COBOL

COBOL utiliza el carácter pictórico 'S' para USAGE IS DISPLAYdatos sin SIGN IS SEPARATE CHARACTERpara indicar un sobreimpresión. SIGN IS LEADINGindica que la sobreimpresión está sobre el primer carácter del campo. SIGN IS TRAILING, lo ubica sobre el último carácter. SIGN IS TRAILINGes el valor predeterminado. [ 7 ]

C/C++

El lenguaje C no tiene ninguna disposición para decimales con zonas. El compilador IBM ILE C/C++ para System i proporciona funciones para la conversión entre y decimales con zonas: [ 8 ]intdouble

  • QXXDTOZ() — Convierte un número decimal de tipo Double a un número decimal con zona de seguridad.
  • QXXITOZ() — Convierte un entero a un decimal con zona
  • QXXZTOD() — Convierte un número decimal con zona a un número doble
  • QXXZTOI() — Convierte un número decimal con zona a un número entero.

Códigos de sobreperforación EBCDIC

Ejemplos

10} es -100 45A es 451

representación ASCII

La representación de caracteres de sobreimpresión con signo "no está estandarizada en ASCII , y diferentes compiladores usan diferentes códigos de sobreimpresión". En algunos casos, "la representación no es la misma que el resultado de convertir un campo EBCDIC Signed a ASCII con una tabla de traducción". [ 10 ] En otros casos son iguales, para mantener la compatibilidad de los datos fuente a pesar de la pérdida de la conexión entre el código de carácter y el dígito correspondiente.

Un campo negativo EBCDIC que termina en el dígito '1' se codifica como 'D1'x', 'J' mayúscula, donde el dígito es '1' y la zona es 'D' para indicar un campo negativo. La 'J' mayúscula ASCII es '4A'x', donde el valor hexadecimal no guarda relación con el valor numérico. Una codificación alternativa utiliza la 'q' minúscula, '71'x', para esta representación, donde el dígito es '1' y la zona es '7'. Esto conserva el dígito y la secuencia de intercalación, pero requiere reconocer y traducir individualmente los campos con sobreperforaciones.

Ejemplos

Gnu COBOL y MicroFocus COBOL utilizan las letras minúsculas 'p' a 'y' para representar los valores negativos '0' a '9'. [ 11 ] [ 12 ]

Los compiladores PL/I en sistemas ASCII utilizan el mismo conjunto de caracteres ({, J–R) que EBCDIC para representar valores negativos. [ 13 ]

Referencias

  1. IBM Corporation (junio de 1994). Referencia RPG/400 (PDF) . pág.  403. Consultado el 7 de agosto de 2018 .
  2. "Charla técnica, tutoriales de COBOL, conversión de campos con signo de EBCDIC a ASCII" . Consultado el 15 de marzo de 2008 .
  3. Van Overberghe, Jr., Albert G. (1987). Técnico de procesamiento de datos de tercera clase . Programa de educación y capacitación naval. págs. 3–8 . Recuperado el 12 de enero de 2022 . 
  4. IBM Corporation. Principios de funcionamiento del sistema IBM System/360 (PDF) . pág. 34. Consultado el 12 de enero de 2022 . 
  5. IBM Corporation (octubre de 2001). Principios de funcionamiento de la arquitectura z (2.ª ed.). págs. 7–112 , 7–158 . Consultado el 7 de agosto de 2018 .  
  6. IBM Corporation (junio de 1995). Referencia del lenguaje IBM PL/I para MVS y VM (PDF) . págs. 294–296 . Consultado el 2 de agosto de 2018 . 
  7. IBM Corporation. "Enterprise COBOL para z/OS, V4.2, Language Reference" . Centro de conocimiento de IBM . Consultado el 1 de mayo de 2020 .
  8. IBM Corporation. "Funciones de biblioteca" . Centro de conocimiento de IBM . Consultado el 1 de mayo de 2020 .
  9. IBM Corporation (1989). Resumen de referencia de la arquitectura extendida del sistema/370 . pág. 41. 
  10. "Conversión de campos con signo de EBCDIC a ASCII" . Especialistas en conversión de medios DISC . Consultado el 29 de noviembre de 2018 .
  11. "Guía del programador de GnuCOBOL" . SourceForge . Consultado el 12 de enero de 2022 .
  12. "Micro Focus Visual COBOL 5.0 para Visual Studio 2019" . Micro Focus . Consultado el 12 de enero de 2022 .
  13. Kednos Corporation. "Manual de referencia de Kednos PL/I para sistemas OpenVMS" . Kednos.com . Consultado el 12 de enero de 2022 .