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