tutorial - COBOL palabra clave REDEFINES
cobol ventajas y desventajas (3)
¿Puedo preguntar cuál es el uso de la palabra clave REDEFINES en COBOL? No puedo entender la definición del manual.
¿Cuál es el significado del siguiente código?
01 WS_CHARGE_TXT_8X PIC X(08) VALUE "10000000".
01 WS_CHARGE_NUM_8 REDEFINES WS_CHARGE_TXT_8X.
05 WS_CHARGE_8 PIC 9(05)V9(03).
¡Gracias!
A REDEFINES permite una descripción de datos diferente para el almacenamiento que ya se ha definido.
Eso podría ser permitir que datos completamente diferentes sean retenidos allí.
05 RL-AGENT-DATA.
...
05 RL-CUSTOMER-DATA REDEFINES RL-AGENT-DATA.
...
O para dar una descripción que permita el uso de una parte de los datos, como en el ejemplo de Bruce.
O para usar un dato que es el mismo, pero para un propósito diferente:
05 INPUT-AMOUNT PIC X(10).
05 INPUT-AMOUNT-NUMERIC REDEFINES PIC 9(8)V99.
Lo que sea que esté en INPUT-AMOUNT se puede informar sin problemas, pero solo si se trata de un número válido (comprobándolo con NUMERIC), se usa INPUT-AMOUNT-NUMERIC para algún propósito.
Tenga en cuenta que cada 01 posterior al primero bajo un FD es un "REDEFINES implícito".
Tenga en cuenta también que los elementos de la SECCIÓN DE ENLACE tienen el efecto de "redefinir" "algo", aunque si la dirección de los datos proviene de un programa de LLAMADAS, la definición es a menudo la misma que la definición original y, por lo general, debería coincidir Las fotos del original.
Básicamente redefine Reutiliza los espacios, por lo que en el ejemplo anterior, WS_CHARGE_TXT_8X y WS_CHARGE_8 apuntarán al mismo bloque de memoria. Esto le permite mirar un bloque de memoria de diferentes maneras.
En el ejemplo anterior
- el valor de WS_CHARGE_TXT_8X es "10000000"
- El valor de WS_CHARGE_8 es de 10000.000.
Si movió 123.456 a WS_CHARGE_8 el valor de WS_CHARGE_TXT_8X "00123456".
Un ejemplo más útil es
03 Birth-Date-YYYYMMDD pic 9(8).
03 filler redefines Birth-Date-YYYYMMDD.
05 Birth-Date-YYYY pic 9(4).
05 Birth-Date-MM pic 99.
05 Birth-Date-MM pic 99.
En este caso, puede acceder a la fecha completa Fecha de nacimiento-AAAAMMDD o al año / mes / día individualmente ( Fecha de nacimiento-AAAA, etc.).
Es análogo a la unión en ''C''. Ahorra espacio de almacenamiento de trabajo y declaraciones MOVE, y también es útil para la transposición de arreglos de PIC (X), o para acceder a campos repetidos como un arreglo. En el caso del OP, se está creando un "tipo" numérico para el contenido de caracteres del campo prototipo.