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