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