Cobol - Send Map/Receive Map

 
Vista:

Send Map/Receive Map

Publicado por Palermo (138 intervenciones) el 02/02/2011 16:02:45
Hola quisiera saber cual es el campo CICS la
DFHBMSCA o del MAPA o donde me diga que el mapa ha CAMBIADO
entre un SEND MAP y un RECEIVE MAP
A ver me Explico,
1- Yo muestro la pantalla y espero que el user ingrese datos
2- Enter (valido dichos campos) y pido otro enter para confirmar la operacion
3- Enter de confirmacion y es aqui en el que quiero detectar
Si el user me cambio o no los campos que habia ingresado con anterioridad
y no quiero enviarle por commarea y comparar. Lo que quiero
es detectar a atraves de algun campo CICS de algun copy CICS

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Detectar cambios en campos entre un SEND MAP y un RECEIVE MAP en CICS

Publicado por Alejandro (300 intervenciones) el 08/09/2023 23:45:19
Para detectar si un usuario ha realizado cambios en los campos de un mapa entre un SEND MAP y un RECEIVE MAP en CICS sin utilizar Commarea, puedes lograrlo mediante el uso de un campo especial llamado "Modified Data Tag" (MDT) o el uso de variables de trabajo en tu programa COBOL dentro del entorno CICS.

1. MDT (Modified Data Tag): En un campo de un mapa en CICS, puedes habilitar el MDT. El MDT se establece en "ON" cuando un usuario modifica el contenido de un campo en la pantalla y en "OFF" cuando no lo modifica. Puedes verificar el estado del MDT después de que el usuario presione Enter para confirmar la operación. Si el MDT está en "ON" para un campo específico, significa que el usuario lo modificó.

Por ejemplo, si tienes un campo llamado "Nombre" en tu mapa y quieres detectar si el usuario lo cambió, puedes hacer lo siguiente:

1
2
3
01 NOMBRE-FIELD.
05 NOMBRE-PIC X(30).
05 NOMBRE-MDT PIC X.

Después del RECEIVE MAP, puedes verificar el valor de NOMBRE-MDT. Si es "ON", significa que el usuario cambió el campo "Nombre".

2. Variables de trabajo: Otra forma de lograrlo es mediante el uso de variables de trabajo en tu programa COBOL. Antes de hacer el SEND MAP, puedes copiar los valores de los campos del mapa en variables de trabajo. Luego, después del RECEIVE MAP, puedes comparar los valores en las variables de trabajo con los valores en los campos del mapa para detectar cualquier cambio.

1
2
3
4
5
6
7
8
9
10
11
12
01 WS-NOMBRE-PREVIO PIC X(30).
01 WS-NOMBRE-ACTUAL PIC X(30).
 
MOVE NOMBRE-FIELD TO WS-NOMBRE-PREVIO
SEND MAP
 
RECEIVE MAP
MOVE NOMBRE-FIELD TO WS-NOMBRE-ACTUAL
 
IF WS-NOMBRE-PREVIO NOT EQUAL WS-NOMBRE-ACTUAL
   DISPLAY "El usuario cambió el campo Nombre"
END-IF

Estas son dos formas comunes de detectar cambios en campos entre un SEND MAP y un RECEIVE MAP en CICS sin usar Commarea. El enfoque que elijas dependerá de tus preferencias y de cómo estés estructurando tu programa COBOL dentro de CICS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar