aquí es un poco diferente al intento de responder a sus preguntas.
PIC S9 (15) V9 (3) COMP-3 es la siguiente con el archivo:
00 00 00 00 00 00 00 00 00 0F
Si el valor era -4568248.323, sería:
00 00 00 00 04 56 82 48 32 3D
Esto no lo ayuda, pero puede ayudar a otros. descomprimido el valor anterior se vería así:
F0 F0 F0 F0 F0 F0 F0 F0 F0 F4 F5 F6 F8 F2 F4 F8 F3 F2 D3 (or F3 as the last byte, therefore losing the sign)
Este campo cuenta con 15 (16 en realidad) dígitos antes del punto decimal y 3 después.
Aunque solo solicita 18 dígitos (15 + 3), obtiene 19 para que sea un campo de longitud par con el signo (un dígito agregado al frente para que tenga 10 bytes de longitud en el archivo). La mejor práctica es siempre hacer que los campos empaquetados tengan una longitud impar para evitar esta confusión.
** La última letra denota el signo, C & F es positivo, D es negativo. Para su programa, verifique si es negativo (D) y, de no ser así, trátelo como positivo.
** La 'V' es un punto decimal implícito. no existe en el archivo, pero COBOL sabe que está allí para redondear y tal. Necesitas contabilizarlo programáticamente. No hay nada en el archivo que lo ayude a identificar dónde está o si existe.
Los otros dos campos ya son de longitudes impares, por lo que cuando se empaquetan, con el signo, se pueden almacenar en una cantidad de espacio par.
Cualquier otra pregunta, edite su pregunta o pregunte en los comentarios y alguien intentará responder por usted.