Utilizar Campos y Listas de Campos

Este ejemplo de macro explica cómo utilizar funciones comunes para interactuar con los campos de la Macro API. Por ejemplo, cómo obtener texto de campo, ver información de campo y cómo utilizar field.setText como alternativa a sendKeys para interactuar con el host.

NOTA:Por consideraciones de navegador, ui.message colapsa cadenas de espacios a un solo espacio. Los espacios se preservan en el JavaScript actual.

var macro = createMacro(function*() {
  'use strict';
  
  // Obtener PresentationSpace para interactuar con el host
  var ps = session.getPresentationSpace();
  
  // Declarar variables para uso posterior
  var fields;
  var field;
  var searchString = 'z/VM';
  
  // Establecer el tiempo de espera predeterminado para las funciones "wait"
  wait.setDefaultTimeout(10000);
  
  // Macro de ejemplo para trabajar con FieldList y Fields
  try {
    yield wait.forCursor(new Position(24, 2));
    
    // Obtener la lista de campos.
    fields = ps.getFields();
    
    // Ejecutar en toda la lista de campos y mostrar la información del campo.
    for(var index = 0; index < fields.size(); index++) {
      field = fields.get(index);
      
      yield ui.message("Field " + index + " info: " + field.toString());
    }
    
    yield ui.message("Ahora, encontrar un campo que contenga el texto '" + searchString + "'");
    field = fields.findField(new Position(1, 1), searchString);
    
    if(field !== null) {
      yield ui.message("Found field info: " + field.toString());
      yield ui.message("¿Encontrado primer plano de campo es verde? " + (Color.GREEN === field.getForegroundColor()));
      yield ui.message("¿Encontrado primer plano de campo es predeterminado? " + (Color.BLANK_UNSPECIFIED === field.getBackgroundColor()));
    }
    
    // Ahora, encontrar campo de comando y modificarlo.
    field = fields.findField(new Position(23, 80));
    if(field !== null) {
      field.setText("cics");
    }
    
    yield ui.message("Clic para enviar 'cics' al host.");
    ps.sendKeys(ControlKey.ENTER);
    
    // Esperar a nueva pantalla; obtener nuevos campos.
    yield wait.forCursor(new Position(10, 26));
    fields = ps.getFields();
    
    // Encontrar campo de usuario y configurarlo.
    field = fields.findField(new Position(10, 24));
    if(field !== null) {
      field.setText("myusername");
    }
    
    // Encontrar campo de contraseña y configurarlo.
    field = fields.findField(new Position(11, 24));
    if(field !== null) {
      field.setText("mypassword");
    }
    
    yield ui.message("Clic para enviar inicio de sesión al host.");
    ps.sendKeys(ControlKey.ENTER);
    
    // Esperar a nueva pantalla; obtener nuevos campos.
    yield wait.forCursor(new Position(1, 1));
    fields = ps.getFields();
    
    // Encontrar campo de comando y configurar comando logoff.
    field = fields.findField(new Position(24, 45));
    if(field !== null) {
      field.setText("cesf logoff");
    }
    
    yield ui.message("Clic para enviar logoff al host.");
    ps.sendKeys(ControlKey.ENTER);
    
  } catch (error) {
    yield ui.message(error);
  }
  //Fin Macro Generada
});

// Ejecutar la macro
return macro();