Interacción Básica con el Host

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:

  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. 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();