Utilizar Variables de Control M desde un JCL
Hay tareas que requieren de variables que ya están disponibles en el Mainframe, algunas de ellas son la fecha de programación (schedule). En el caso de Control M existe la variable ODATE ¿el problema? para utilizarla, debía ejecutar el Job en Control M, entonces ¿Cómo puedo hacer pruebas antes de salir al aire con una propuesta?
Acá entra el Simulador de Control M, un utilitario que permite submitir un JCL para que Control M simule su ejecución... ¿Qué ganamos con esto? El uso de variables propias de Control M como ODATE o funciones de fecha como CALCDATE.
Suena bonito, veamos cómo se hace:
Lo primero es crear un JCL en nuestra librería personal (u otra), en este caso le llamaremos CTRLMSIM.

El procedimiento CTMAESIM crea la simulación basado en una serie de parámetros que se le deben entregar. Veamos los que se utilizan en un ejemplo simple:
- ODATE 300925: Define la fecha del scheduler como 30/09/2025
- LIBRARY MYLIB.JCLLIB: Definimos nuestra librería personal o la que necesitemos utilizar
- MEMBER IEFBR14: Nombre del JCL a utilizar por el simulador
- LIST: Control-M comprueba el JCL y escribe los resultados únicamente en SYSPRINT Con esto, tenemos listo nuestro simulador. Ahora debemos crear el JCL para utilizarlo en el simulador. Utilizaremos un JCL llamado IEFBR14 para este ejemplo.
Utilizamos el utilitario IEFBR14 de z/OS para este ejemplo. Luego, utilizamos las variables tal como lo indica la documentación de Control M:
%%ODATE**: entrega la fecha del scheduler definida en el simulador//* %%SET %%AYER = %%CALCDATE %%ODATE -1: Comenzamos con un comentario para el JCL //* y luego, utilizamos %%SET para definir una variable la cual llamaremos AYER. Las variables en Control M comienzan con %%. Finalmente, le asignamos el valor de la función de Control M llamada CALCDATE, la cual permite hacer cálculos con las fechas... Más info en la documentación. En este caso estamos calculando el día anterior a la fecha del scheduler.//* %%SET %%MANA = %%CALCDATE %%ODATE +1: Acá hacemos algo similar a la línea anterior, pero buscamos el día siguiente y llamamos a la variable MANA.%%AYER: Mostrar el valor de la variable AYER%%MANA: Mostrar el valor de la variable MANA
Guardamos los cambios del JCL y submitimos el JCL con el Simulador CTRLMSIM. Finalmente vamos a la salida y vemos los resultados:

Ahí podemos ver los valores de las variables ODATE (propia de Control M) y las nuestras AYER y MANA que utilizan la función CALCDATE.
