Este ejemplo muestra la interacción básica con el host, incluyendo:
Enviar datos al host
Esperar pantallas a mostrar
Utilizar la palabra clave yield para esperar funciones asíncronas
Leer texto de la pantalla
Mostrar información básica al usuario
Tratamiento de errores básicos
Todas las macros tienen disponibles los siguientes objetos de forma predeterminada:
session - Punto de entrada principal para acceder al host. Puede conectar, desconectar y facilitar acceso al PresentationSpace.
El objeto PresentationSpace obtenido de la sesión representa la pantalla y provee capacidades muy comunes como obtener y ajustar la posición del cursor, enviar datos al host y leer de la pantalla.
wait - Facilita una forma sencilla de esperar a varios estados del host antes de seguir enviando más datos o leer de la pantalla.
UI - Provee capacidades básicas de interfaz de usuario. Muestra datos al usuario o le pide información.
// Función Crear una nueva macro
var macro = createMacro(function*(){
'use strict';
// Todas las macros tienen disponibles los siguientes objetos de forma predeterminada:
// 1. session - Punto de entrada principal para acceder al host. Puede conectar, desconectar y facilitar acceso al PresentationSpace.
// El objeto PresentationSpace obtenido de la sesión representa la pantalla y provee capacidades muy comunes como obtener y ajustar la
// posición del cursor, enviar datos al host y leer de la pantalla.
// 2. wait - Facilita una forma sencilla de esperar a varios estados del host antes de seguir enviando más datos o leer de la pantalla.
// 3. uiI - Provee capacidades básicas de interfaz de usuario. Mostrar datos al usuario o pedirle información.
// Declarar una variable para leer y visualizar algunos datos de pantalla.
// La mejor práctica es declarar todas las variables cerca de la parte superior de una función.
var numberOfAccounts = 0;
// Iniciar obteniendo el objeto PresentationSpace, que provee muchas operaciones de pantalla comunes.
var ps = session.getPresentationSpace();
try {
// Puede ajustar y obtener la posición del cursor
ps.setCursorPosition(new Position(24, 2));
// Utilizar la función sendKeys para enviar caracteres al host
ps.sendKeys('cics');
// SendKeys se utiliza también para enviar teclas de host como teclas PA y PF.
// Véase "Control Keys" en la documentación para todas las opciones disponibles
ps.sendKeys(ControlKey.ENTER);
// Esperar a que el cursor se encuentre en la posición correcta.
// El objeto wait provee varias funciones para esperar a que ocurran determinados estados
// de modo que usted pueda proceder o bien a enviar más teclas, o bien a leer datos de la pantalla.
yield wait.forCursor(new Position(24, 2));
// Puede mezclar caracteres y teclas de control en una llamada sendKeys.
ps.sendKeys('data' + ControlKey.TAB + ControlKey.TAB + 'more data' + ControlKey.ENTER);
// La palabra clave "yield" se debe utilizar enfrente de todas las llamadas de función "wait" y "ui".
// Le dice al navegador que detenga la ejecución de la macro hasta que la
// función wait (asíncrona) vuelva. Consulte la documentación para saber qué funciones
// requieren la palabra clave yield.
yield wait.forCursor(new Position(10, 26));
ps.sendKeys('accounts' + ControlKey.ENTER);
// Puede esperar también a que aparezca un texto en ciertas áreas de la pantalla
yield wait.forText('ACCOUNTS', new Position(3, 36)) ;
ps.sendKeys('1' + ControlKey.ENTER);
// Todas las funciones wait excederán el tiempo de espera si no se cumplen los criterios dentro de un límite de tiempo.
// Puede incrementar tiempos de espera con un parámetro opcional en las funciones wait (en milisegundos)
// Todos los tiempos de espera se especifican en milisegundos y el valor predeterminado es 10 segundos (10000 ms).
yield wait.forCursor(new Position(1, 1), 15000);
ps.sendKeys('A' + ControlKey.ENTER);
// PS proporciona la función getText para leer texto de la pantalla
numberOfAccounts = ps.getText(new Position(12, 3), 5);
// Utilizar el objeto ui para visualizar algunos datos de la pantalla
ui.message('Número de cuentas activas: ' + numberOfAccounts);
// La try / catch permite capturar todos los errores y notificarlos a una ubicación central }
catch (error) {
// De nuevo, utilizamos el objeto ui para visualizar un mensaje que indica que se ha producido un error
yield ui.message('Error: ' + error.message);
}
//Fin Macro Generada
});
// Ejecutar la macro y devolver los resultados al Ejecutor de macros
// La instrucción return es necesaria, ya que la aplicación aprovecha
// esto para saber si la macro se ha ejecutado correctamente y cuándo ha finalizado
return macro();