Pregunta

Tengo un archivo de texto de longitud fija, que ha sido desempaquetado de Comp-3 de datos en cadenas de ancho fijo.

Necesito saber cómo interpretar los siguientes campos:

FIELD-NAME-1 PIC S9(15)V9(3) COMP-3.
FIELD-NAME-2 PIC S9(3)V9(8) COMP-3.
FIELD-NAME-3 PIC S9(3)V9(6) COMP-3.

Estos aparecen en mi archivo plano como:

FIELD-NAME-1 0123456789123456780
FIELD-NAME-2 01234567890
FIELD-NAME-3 012345670

Necesito saber qué números lo anterior representarían.

¿Es esto correcto:

FIELD-NAME-1 123456789123456.780  --> The first 0 means +ve?
FIELD-NAME-2 012.34567890
FIELD-NAME-3 012.345670

Gracias por la ayuda. Jamón

¿Fue útil?

Solución

El S9 (15) V9 (3) requiere 19 nybbles (20 en realidad ya que debe hacer un número par de nybbles) para almacenar:

  • para el signo.
  • 15 para el bit de número entero.
  • 3 para el bit no entero (V es un decimal implícita, no una verdadera).

El signo suele aparecer al final como un C o una nybble D lo que la respuesta a esta pregunta depende totalmente de lo que lo hizo el desembalaje.

Su primer ejemplo en realidad tiene el número correcto de dígitos sin el signo de modo que estaría preocupado con su declaración de que uno de ellos representaba el signo. O eso, o que haya quedado fuera de la "9". Los otros dos ejemplos tienen suficientes dígitos, tanto para el signo y parte numérica.

La mejor opción, ver si se puede conseguir un número negativo (y otros datos de prueba como 1) en allí para ver lo que genera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top