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