OUTREC – CONVERSIÓN DE DATOS
El outrec nos permite cambiar el formato de los campos. Se realiza del
siguiente modo:
OUTREC FIELDS=(inicio_campo1,
fin_campo1,
tipo_dato_inicial,
TO=tipo_dato_de_destino,
LENGTH=longitud_final_del_campo_convertido,
…)
Los tipos de formato son los siguientes:
CH --> Alfanumérico
ZD --> Numérico normal
BI --> Hexadecimal (campos COMP)
PD --> Empaquetado con o sin signo(campos COMP-3)
Para saber la longitud del LENGTH, se debe seguir la norma siguiente:
- Campos COMP --> Dividimos la longitud entre 2 y nos quedamos con la parte
entera:
S9(9) COMP
--> LENGTH=4
9(9) COMP --> LENGTH=4
S9(8) COMP --> LENGTH=4
9(8) COMP --> LENGTH=4
- Campos COMP-3 --> Dividimos la longitud + 1 entre 2, si el resultado da
decimales se redondea al mayor:
S9(9) COMP-3
--> LENGTH=5
9(9) COMP-3 --> LENGTH=5
S9(8) COMP-3 --> LENGTH=5
9(8) COMP-3 --> LENGTH=5
- Si el campo tiene decimales, ya sea COMP o COMP-3, se suman primero los
enteros + los decimales, y a partir de ahí se aplica la fórmula anterior:
S9(9)V99
COMP --> LENGTH=5
9(9)V99 COMP --> LENGTH=5
S9(9)V99 COMP-3 --> LENGTH=6
9(9)V99 COMP-3 --> LENGTH=6
Ejemplos prácticos suponiendo que el campo comience en la primera posición:
- Convertir 9(8) a S9(9) COMP-3 y viceversa:
OUTREC FIELDS=(1,8,ZD,TO=PD,LENGTH=5)
OUTREC FIELDS=(1,5,PD,TO=ZD,LENGTH=8)
- Convertir 9(8) COMP a 9(8) y viceversa:
OUTREC FIELDS=(1,4,BI,TO=ZD,LENGTH=8)
OUTREC FIELDS=(1,8,ZD,TO=BI,LENGTH=4)
Cosas a tener en cuenta:
- La longitud del fichero de salida puede no ser la misma de entrada, porque si
convertimos tipos de datos, por ejemplo, un numérico normal a un empaquetado la
longitud se reduce al comprimir el campo.
- Se pueden realizar varias conversiones dentro de un mismo OUTREC.
- No se puede convertir un campo alfanumérico(que tenga letras) a un campo
numérico.
Buenos días;
ResponderBorrarDespués de bucear y navegar por la red encuentro ejemplos de conversión de datos, pero necesitaría un caso mas concreto.
Al convertir un número de cualquier formato a hexadecimal siempre lo convierte en este formato X'000C' número con signo positivo, pero yo necesito que lo convierta a este otro formato X'000F' número sin signo, pero no encuentro la manera.
¿Podrías echarme una mano?
Muchas gracias,
Un saludo.
Txema.
En el outrec indicándole ZD,TO=ZD, te pongo un ejemplo:
ResponderBorrarOUTREC FIELDS=(1,10,BI,TO=ZD), no se si te servirá.
Un saludo.
Hola me surge una duda, como puedo convertir un numérico a comp-3 directamente escrito en el paso del jcl? Lo estoy indicando de la siguiente manera pero me marca error
ResponderBorrarOUTREC FIELDS=(01,278,C'9999123120060630',ZD,TO=PD)
Buenas, te falta añadir el tamaño final, lo tendrías que poner así:
BorrarOUTREC FIELDS=(01,278,C'9999123120060630',ZD,TO=PD,LENGTH=9)
Hola, yo no necesito convertir un dato, sino insertar un dato con valor
ResponderBorrar900, en un campo PIC S9(9) USAGE COMP. Estoy intentando de ésta forma, pero no le gusta :
22,08, -- FECALTA
(0900,ZD,TO=BI,LENGTH=4), -- SECUACC
$
SYNTAX ERROR
El campo al que me refiero es el SECUACC.
Desde ya, muchas gracias !!
Amigo, buenas noches.
ResponderBorrarPruebalo así, a ver si te resulta.
OUTREC FIELDS=(22,08,C'000000900',ZD,TO=PD,LENGTH=4)
Saludos
OUTREC FIELDS=((12,13,ZD,DIV,26,13,ZD),TO=ZD,LENGTH=5)
ResponderBorrarEstoy dividiendo dos campos numericos enteros, pero el resultado es 2 enteros y 3 decimales, dado que el resultado es un porcentaje, con esta forma solo me entrega enteros, me falta algo mas para definir los decimales, de manera que el resultado quede 00,023?.
gracias
Buenos días.. Tengo el mismo caso...Estoy dividiendo dos campos numericos enteros, pero el resultado es 2 enteros y 3 decimales, dado que el resultado es un porcentaje, con esta forma solo me entrega enteros. Lo hice con campos empaquetados y ocurre lo mismo. Alguien tendrá respuesta?
ResponderBorrarTengo un archivo que transferi de un txt a host
ResponderBorrarY donde dice por ejemplo 156.789,23
quiero que en el sort OUTREC me lo deje así 000015678923
se puede? mil gracias
como puedo desplegar el valor de un campo S9(04) con el EDIT del SORT?
ResponderBorrartengo el siguiente valor 029H y quiero que con el EDIT me muestre el signo, o sea que el resultado sea 0298, alguna recomendación?
Estimado como puedo hacer para convertir un computacional, esta definido de esta manera "PIC S9(13)V9(2) USAGE COMP-3.", en un numerico con el signo, necesitamos realizar esa conversion y que traiga el signo correspondiente (+ o -).
ResponderBorrar