Utilizzo di Field e FieldList

Questa macro di esempio illustra come utilizzare funzioni comuni per interagire con i campi nell'API Macro. Ad esempio, come ottenere il testo dei campi, visualizzare informazioni sui campi e come utilizzare field.setText come alternativa a sendKeys per interagire con l'host.

NOTA:A causa delle considerazioni sul browser ui.message comprime stringhe di spazi in un solo spazio. Gli spazi vengono mantenuti nel codice JavaScript effettivo.

var macro = createMacro(function*() {
  'use strict';
  
  // Ottenere PresentationSpace per interagire con l'host
  var ps = session.getPresentationSpace();
  
  // Dichiarare variabili da utilizzare successivamente use
  var fields;
  var field;
  var searchString = 'z/VM';

  // Impostare il valore di timeout predefinito per le funzioni "wait"
  wait.setDefaultTimeout(10000);

  // Macro di esempio per operazioni con FieldList e Field
  try {
    yield wait.forCursor(new Position(24, 2));
    
    // Ottenere l'elenco di campi.
    fields = ps.getFields();
    
    // Scorrere l'intero elenco di campi e visualizzare le informazioni sul campo.
    for(var index = 0; index < fields.size(); index++) {
      field = fields.get(index);
      
      yield ui.message("Field " + index + " info: " + field.toString());
    }
    
    yield ui.message("Now, find a field containing the text '" + searchString + "'");
    field = fields.findField(new Position(1, 1), searchString);
    
    if(field !== null) {
      yield ui.message("Found field info: " + field.toString());
      yield ui.message("Found field foreground is green? " + (Color.GREEN === field.getForegroundColor()));
      yield ui.message("Found field background is default? " + (Color.BLANK_UNSPECIFIED === field.getBackgroundColor()));
    }
    
    // Cercare ora un campo comando e modificarlo.
    field = fields.findField(new Position(23, 80));
    if(field !== null) {
      field.setText("cics");
    }
  
    yield ui.message("Click to send 'cics' to host.");
    ps.sendKeys(ControlKey.ENTER);
    
    // Attendere il nuovo schermo; ottenere nuovi campi.
    yield wait.forCursor(new Position(10, 26));
    fields = ps.getFields();
    
    // Trovare il campo utente e impostarlo.
    field = fields.findField(new Position(10, 24));
    if(field !== null) {
      field.setText("myusername"); 
    }

    // Trovare il campo della password e impostarlo.
    field = fields.findField(new Position(11, 24));
    if(field !== null) {
      field.setText("mypassword");
    }
    
    yield ui.message("Click to send login to host.");
    ps.sendKeys(ControlKey.ENTER);
    
    // Attendere il nuovo schermo; ottenere nuovi campi.
    yield wait.forCursor(new Position(1, 1));
    fields = ps.getFields();
    
    // Trovare il campo comando e impostare il comando di disconnessione.
    field = fields.findField(new Position(24, 45));
    if(field !== null) {
      field.setText("cesf logoff");
    }
    
    yield ui.message("Click to send logoff to host.");
    ps.sendKeys(ControlKey.ENTER);

  } catch (error) {
    yield ui.message(error);
  }
  //Fine della macro generata
});

// Eseguire la macro
return macro();