Macro di accesso automatico per mainframe

In questo esempio l'oggetto Autosignon viene utilizzato per creare una macro che usa le credenziali associate a un utente per ottenere un pass ticket da DCAS (Digital Certificate Access Server).

var macro = createMacro(function*()
	{ 'use strict';
	
	// Ottenere PresentationSpace per interagire con l'host
	var ps = session.getPresentationSpace();
	
	// Variabile per il pass ticket di accesso
	var passTicket;
	
	// ID applicazione di accesso
	var appId = 'CICSV41A';
	
	// Impostare il timeout predefinito per le funzioni "wait"
	wait.setDefaultTimeout(10000);
	
	// Inizio della macro generata
	try {
		yield wait.forCursor(new Position(24, 2));
		
		// Ottenere un pass ticket da DCAS.
		passTicket = yield autoSignon.getPassTicket(appId);
		
		ps.sendKeys('cics');
		ps.sendKeys(ControlKey.ENTER);
		
		yield wait.forCursor(new Position(10, 26));
		
		// Sostituire il nome utente generato con sendUserName(passTicket) ...
		yield autoSignon.sendUserName(passTicket);
		
		// ps.sendKeys('bvtst01' + ControlKey.TAB + ControlKey.TAB);
		ps.sendKeys(ControlKey.TAB + ControlKey.TAB);
		
		yield wait.forCursor(new Position(11, 26));
		
		// Sostituire la password generata con sendPassword(passTicket) ...
		yield autoSignon.sendPassword(passTicket);
		
		// var userInput3 = yield ui.prompt('Password:', '', true);
		// if (userInput3 === null) {
			// throw new Error('Password not provided');
		// }
		// ps.sendKeys(userInput3);
		ps.sendKeys(ControlKey.ENTER);
		
		yield wait.forCursor(new Position(1, 1));
		yield ui.message('Logged in. Log me off.');
		ps.sendKeys('cesf logoff');
		ps.sendKeys(ControlKey.ENTER);
	} catch (error) {
		yield ui.message(error);
	}
	//Fine della macro generata
});

// Eseguire la macro
return macro();