Macro Sign-On automático para Mainframes

En este ejemplo se utiliza el objeto AutoSignon para crear una macro que utiliza las credenciales asociadas a un usuario para obtener un vale de paso del Digital Certificate Access Server (servidor de acceso a certificados digitales, DCAS).

var macro = createMacro(function*() {
	'use strict';
	
	// Obtener PresentationSpace para interactuar con el host
	var ps = session.getPresentationSpace();
	
	// Variable para vale de paso de inicio de sesión
	var passTicket;
	
	// ID de inicio de sesión en aplicación
	var appId = 'CICSV41A';
	
	// Establecer el tiempo de espera predeterminado para las funciones "wait"
	wait.setDefaultTimeout(10000);
	
	// Inicio Macro Generada
	try {
		yield wait.forCursor(new Position(24, 2));
		
		// Obtener un vale de paso de DCAS.
		passTicket = yield autoSignon.getPassTicket(appId);
		
		ps.sendKeys('cics');
		ps.sendKeys(ControlKey.ENTER);
		
		yield wait.forCursor(new Position(10, 26));
		
		// Sustituir nombre de usuario generado por 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));
		
		// Sustituir contraseña generada por sendPassword(passTicket) ...
		yield autoSignon.sendPassword(passTicket);
		
		// var userInput3 = yield ui.prompt('Contraseña:', '', 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);
	}
	//Fin Macro Generada
});

// Ejecutar la macro
return macro();