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