Supongamos que tenemos un fichero de entrada en el que uno de los campos, por ejemplo REG-E-IMPORTE, es un PIC X(15) y representa un importe de 13 posiciones enteras y 2 posiciones decimales. ¿Qué tendríamos que hacer para convertir dicho campo a un PIC S9(13)V9(2) USAGE COMP-3?
Es muy sencillo y muy fácil. En un programa que he realizado recientemente (y que está probado) he declarado en working las siguientes variables:
01 WS-IMP1 PIC X(15).
01 WS-IMP1-N REDEFINES WS-IMP1 PIC 9(15).
01 WS-IMP1-AUX PIC 9(15) VALUE ZEROES.
01 WS-IMP-AMORT-PRINC PIC S9(13)V9(02).
En el programa, en donde corresponda, tendríamos que codificar lo siguiente:
MOVE REG-E-IMPORTE TO WS-IMP1
MOVE WS-IMP1-N TO WS-IMP1-AUX
MOVE WS-IMP1-AUX(1:13) TO WS-IMP-AMORT-PRINC(1:13)
MOVE WS-IMP1-AUX(14:2) TO WS-IMP-AMORT-PRINC(14:2)
Pues esto es todo lo que hay que hacer. A lo mejor te preguntarás: pero, ¿qué sucede si el campo REG-E-IMPORTE es un PIC X(13) y tenemos que convertirlo a un PIC S9(13)V9(2) USAGE COMP-3? Pues muy sencillo. Tanto la longitud de WS-IMP1 como la de WS-IMP1-N sería 13 mientras la definición de WS-IMP1-AUX y WS-IMPO-AMORT-PRINC sería exactamente a la indicada anteriormente. En cuanto al código, sería exactamente el mismo que el indicado anteriormente.