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