Grundlegende Hostinteraktion

In diesem Beispiel wird die grundlegende Hostinteraktion dargestellt. Dazu zählen die folgenden Interaktionen:

  • Daten an den Host senden

  • Auf die Anzeige von Bildschirmen warten

  • Das yield-Schlüsselwort verwenden, um auf asynchrone Funktionen zu warten

  • Text auf dem Bildschirm lesen

  • Dem Benutzer grundlegende Informationen anzeigen

  • Fehlergrundlagen behandeln

Für alle Makros sind standardmäßig die folgenden Objekte verfügbar:

  1. Session – Hauptzugriffspunkt zum Host. Kann Verbindungen herstellen und trennen und bietet Zugriff auf den Präsentationsbereich.

    Das aus der Sitzung abgerufene PresentationSpace-Objekt stellt den Bildschirm dar und bietet zahlreiche allgemeine Funktionen wie das Abrufen und Einrichten der Cursorposition, das Senden von Daten an den Host und das Lesen auf dem Bildschirm.

  2. wait – Dieses Objekt bietet eine einfache Möglichkeit, auf das Auftreten der verschiedenen Hoststatus zu warten, bevor weitere Daten gesendet oder auf dem Bildschirm gelesen werden.

  3. UI – Stellt die grundlegenden Funktionen der Benutzeroberfläche bereit. Zeigt Benutzern Daten an oder fragt Informationen von Benutzern ab.

// Neue Makrofunktion erstellen
var macro = createMacro(function*(){
  'use strict';
  
  // Für alle Makros sind standardmäßig die folgenden Objekte verfügbar:
  // 1. session – Hauptzugriffspunkt zum Host. Kann Verbindungen herstellen und trennen und bietet Zugriff auf das PresentationSpace-Objekt.
  //    Das aus der Sitzung abgerufene PresentationSpace-Objekt stellt den Bildschirm dar und bietet zahlreiche allgemeine Funktionen wie das Abrufen und Einrichten der
  //    Cursorposition, das Senden von Daten an den Host und das Lesen auf dem Bildschirm.
  // 2. wait - Dieses Objekt bietet eine einfache Möglichkeit, auf das Auftreten der verschiedenen Hoststatus zu warten, bevor weitere Daten gesendet oder auf dem Bildschirm gelesen werden.
  // 3. ui – Stellt die grundlegenden Funktionen der Benutzeroberfläche bereit. Benutzern Daten anzeigen oder Informationen von Benutzern abfragen.
  
  // Eine Variable zum Lesen und Anzeigen von Bildschirmdaten deklarieren.
  // Es wird empfohlen, alle Variablen im oberen Bereich einer Funktion zu deklarieren.
  var numberOfAccounts = 0;
  
  // Mit dem Abrufen des PresentationSpace-Objekts beginnen, das zahlreiche gängige Bildschirmoperationen bereitstellt.
  var ps = session.getPresentationSpace();
  
  try {
    // Kann die Cursorposition einrichten und abrufen
    ps.setCursorPosition(new Position(24, 2));
    
    // Die sendKeys-Funktion zum Senden von Zeichen an den Host verwenden
    ps.sendKeys('cics');
    
    // SendKeys wird auch zum Senden von Hosttasten wie PA- und PF-Tasten verwendet.
    // Siehe "Steuertasten" in der Dokumentation für alle verfügbaren Optionen
    ps.sendKeys(ControlKey.ENTER);
    
    // Darauf warten, dass der Cursor die korrekte Position erreicht.
    // Das wait-Objekt bietet verschiedene Funktionen zum Warten auf das Eintreten bestimmter Status,
    // sodass Sie weitere Tasten senden oder Daten auf dem Bildschirm lesen können.
    yield wait.forCursor(new Position(24, 2));
    
    // Sie können Zeichen und Steuerungstasten gemeinsam in einem sendKeys-Aufruf verwenden.
    ps.sendKeys('data' + ControlKey.TAB + ControlKey.TAB + 'more data' + ControlKey.ENTER);
    
    // Das "yield"-Schlüsselwort muss allen "wait"- und "ui"-Funktionsaufrufen voranstehen.
    // Es weist den Browser an, die Ausführung des Makros anzuhalten, bis die
    // (asynchrone) wait-Funktion zurückgegeben wird. Informationen darüber, welche Funktionen das yield-Passwort
    // erfordern, finden Sie in der Dokumentation.
    yield wait.forCursor(new Position(10, 26));
    ps.sendKeys('accounts' + ControlKey.ENTER);
    
    // Kann auch darauf warten, dass in bestimmten Bereichen des Bildschirms Text angezeigt wird
    yield wait.forText('ACCOUNTS', new Position(3, 36)) ;
    ps.sendKeys('1' + ControlKey.ENTER);
    
    // Alle wait-Funktionen werden unterbrochen, wenn die Kriterien nicht innerhalb einer bestimmten Zeitspanne erfüllt werden.
    // Kann mit einem optionalen Parameter in den wait-Funktionen die Wartezeit erhöhen (in Millisekunden)
    // Alle Wartezeiten werden in Millisekunden angegeben. Der Standardwert ist 10 Sekunden (10000 ms).
    yield wait.forCursor(new Position(1, 1), 15000);
    ps.sendKeys('A' + ControlKey.ENTER);
    
    // PS provides the getText function for reading text from the screen
    numberOfAccounts = ps.getText(new Position(12, 3), 5);
    
    // Use the ui object to display some data from the screen
    ui.message('Number of active accounts: ' + numberOfAccounts);
    
    // The try / catch allows all errors to be caught and reported in a central location
  } catch (error) {
    // Again we use the ui object to display a message that an error occurred
    yield ui.message('Error: ' + error.message);
  }
  //End Generated Macro
});

// Run the macro and return the results to the Macro Runner
// The return statement is required as the application leverages
// this to know if the macro succeeded and when it is finished
return macro();