Verwenden von Feldern und Feldlisten

Dieses Makrobeispiel veranschaulicht die Verwendung allgemeiner Funktionen für die Interaktion mit den Feldern in der Makro-API. Es wird beispielsweise dargestellt, wie Feldtext abgerufen wird, Feldinformationen angezeigt werden und wie field.setText als Alternative zu sendKeys für die Interaktion mit dem Host verwendet werden kann.

HINWEIS:Aufgrund bestimmter Browseraspekte reduziert ui.message mehrere aufeinander folgende Leerzeichen zu einem einzelnen Leerzeichen. Die Leerzeichen werden im JavaScript-Code beibehalten.

var macro = createMacro(function*() {
  'use strict';
  
  // Präsentationsbereich für die Interaktion mit dem Host abrufen
  var ps = session.getPresentationSpace();
  
  // Variablen für eine spätere Verwendung deklarieren
  var fields;
  var field;
  var searchString = 'z/VM';
  
  // Standardwartezeit für "wait"-Funktionen festlegen
  wait.setDefaultTimeout(10000);
  
  // Beispielmakro für das Arbeiten mit Feldlisten und Feldern
  try {
    yield wait.forCursor(new Position(24, 2));
    
    // Feldliste abrufen.
    fields = ps.getFields();
    
    // Die gesamte Feldliste durchlaufen und Feldinfo anzeigen.
    for(var index = 0; index < fields.size(); index++) {
      field = fields.get(index);
      
      yield ui.message("Field " + index + " info: " + field.toString());
    }
    
    yield ui.message("Hier ein Feld mit dem 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()));
    }
    
    // Jetzt nach einem Befehlsfeld suchen und es ändern.
    field = fields.findField(new Position(23, 80));
    if(field !== null) {
      field.setText("cics");
    }
    
    yield ui.message("Klicken Sie mit der Maus, um 'cics' an den Host zu senden.");
    ps.sendKeys(ControlKey.ENTER);

    // Auf neuen Bildschirm warten; neue Felder abrufen.
    yield wait.forCursor(new Position(10, 26));
    fields = ps.getFields();
    
    // Benutzerfeld suchen und festlegen.
    field = fields.findField(new Position(10, 24));
    if(field !== null) {
      field.setText("myusername");
    }
    
    // Kennwortfeld suchen und festlegen.
    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);
    
    // Auf neuen Bildschirm warten; neue Felder abrufen.
    yield wait.forCursor(new Position(1, 1));
    fields = ps.getFields();
    
    // Befehlsfeld suchen und 'logoff'-Befehl festlegen.
    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);
  }
  //Ende generiertes Makro
});

// Makro ausführen
return macro();