Interazioni di base con l'host

Questo esempio illustra le interazioni di base seguenti:

  • Invio di dati all'host

  • Attesa della visualizzazione di schermi

  • Utilizzo della parola chiave yield in attesa delle funzioni asincrone

  • Lettura del testo dallo schermo

  • Visualizzazione di informazioni di base all'utente

  • Gestione di errori di base

Per impostazione predefinita, per tutte le macro sono disponibili gli oggetti seguenti:

  1. session - Punto di ingresso principale per accedere all'host. Consente di connettersi, disconnettersi e fornisce accesso a PresentationSpace.

    L'oggetto PresentationSpace ottenuto da session rappresenta lo schermo e fornisce molte capacità comuni, ad esempio ottenimento e impostazione della posizione del cursore, invio di dati all'host e lettura dello schermo.

  2. wait - Fornisce un modo semplice per attendere che si verifichino i vari stati dell'host prima di continuare a inviare altri dati o a leggere dallo schermo.

  3. UI - Fornisce capacità di interfaccia utente di base. Mostra i dati o richiede informazioni all'utente.

// Creare una nuova funzione macro
var macro = createMacro(function*(){
  'use strict';
  
  // Per impostazione predefinita, per tutte le macro sono disponibili gli oggetti seguenti:
  // 1. session - Punto di ingresso principale per accedere all'host. Consente di connettersi, disconnettersi e fornisce accesso a PresentationSpace.
  //  L'oggetto PresentationSpace ottenuto da session rappresenta lo schermo e fornisce molte capacità comuni, ad esempio ottenimento e impostazione della
  //  posizione del cursore, invio di dati all'host e lettura dello schermo.
  // 2. wait - Fornisce un modo semplice per attendere che si verifichino i vari stati dell'host prima di continuare a inviare altri dati o a leggere dallo schermo.
  // 3. ui - Fornisce capacità di base di interazione con l'utente. Mostra i dati o richiede informazioni all'utente.
  
  // Dichiarare una variabile per la lettura e la visualizzazione di alcuni dati dello schermo.
  // La procedura consigliata è dichiarare tutte le variabili all'inizio di una funzione.
  var numberOfAccounts = 0;
  
  // Iniziare ottenendo l'oggetto PresentationSpace, che fornisce molte operazioni comuni dello schermo.
  var ps = session.getPresentationSpace();
  
  try {
    // Può impostare e ottenere la posizione del cursore
    ps.setCursorPosition(new Position(24, 2));
    
    // Utilizzare la funzione sendKeys per inviare caratteri all'host
    ps.sendKeys('cics');
    
    // SendKeys viene utilizzata anche per inviare all'host tasti quali PA e PF.
    // Vedere tutte le opzioni disponibili in "Tasti di controllo" nella documentazione
    ps.sendKeys(ControlKey.ENTER);
    
    // Attendere che il cursore si trovi nella posizione corretta.
    // L'oggetto wait fornisce numerose funzioni per attendere che si verifichino determinati stati
    // in modo che sia possibile inviare altri tasti o leggere i dati dello schermo.
    yield wait.forCursor(new Position(24, 2));
    
    // È possibile combinare caratteri e tasti di controllo in una chiamata sendKeys.
    ps.sendKeys('data' + ControlKey.TAB + ControlKey.TAB + 'more data' + ControlKey.ENTER);

    // La parola chiave "yield" deve essere utilizzata prima di tutte le chiamate alle funzioni "wait" e "ui".
    // Indica al browser di interrompere l'esecuzione della macro fino a quando la 
    // funzione wait (asincrona) restituisce il risultato. Consultare la documentazione per informazioni sulle funzioni
    // che richiedono la parola chiave yield.
    yield wait.forCursor(new Position(10, 26));
    ps.sendKeys('accounts' + ControlKey.ENTER);
    
    // È possibile anche attendere che il testo venga visualizzato in aree specifiche dello schermo
    yield wait.forText('ACCOUNTS', new Position(3, 36)) ;
    ps.sendKeys('1' + ControlKey.ENTER);
    
    // Tutte le funzioni wait scadranno se i criteri non vengono soddisfatti entro il limite di tempo definito.
    // È possibile aumentare i timeout con un parametro aggiuntivo nelle funzioni wait (in millisecondi)
    // Tutti i timeout sono specificati in millisecondi e il valore predefinito è 10 secondi (10000ms).
    yield wait.forCursor(new Position(1, 1), 15000);
    ps.sendKeys('A' + ControlKey.ENTER);
    
    // PS fornisce la funzione getText per leggere il testo dalla schermata
    numberOfAccounts = ps.getText(new Position(12, 3), 5);

    // Utilizzare l'oggetto ui per visualizzare alcuni dati dalla schermata
    ui.message('Numero di account attivi: ' + numberOfAccounts);
    
    // try/catch consente di rilevare gli errori e segnalarli in un'ubicazione centrale
  } catch (error) {
    // Utilizzare di nuovo l'oggetto ui per visualizzare un messaggio che informa che si è verificato un errore
    yield ui.message('Error: ' + error.message);
  }
  //Fine della macro generata
});

// Eseguire la macro e restituire i risultati a Macro Runner
// L'istruzione return è necessaria poiché l'applicazione la utilizza
// per sapere se la macro è stata eseguita correttamente e se è terminata
return macro();