Einzelne Interface-Objekte mit Parameterangabe generieren

Die Funktion Interface Object Generation bietet die Möglichkeit, einzelne Interface-Objekte online in einem separaten Bildschirm zu generieren. Die benötigten Parameterdefinitionen geben Sie entweder ein oder lesen sie aus einem bestehenden Subprogramm oder einem Parameterdatenbereich (s. Parameter Data Area, PDA) ein.

Die Generierung eines Schnittstellenobjekts aus einer PDA erspart Ihnen die Erstellung eines Subprogramms und die Definition eines Inline-Parameterdatenbereichs.

In diesem Abschnitt werden die folgenden Themen behandelt:


Funktion Interface Object Generation benutzen

Interface-Objekte werden in der aktuellen Natural Library in der aktuellen Systemdatei generiert. Es wird daher dringend empfohlen, sich zur Ausführungszeit des Remote CALLNAT in der vom Client verwendeten Application Library (oder einer ihrer Steplibs) anzumelden.

Wichtig:
Die Funktion Interface Object Generation überschreibt alle im Quellcode-Arbeitsbereich enthaltenen Daten. Wenn Sie die Funktion aufrufen, werden Sie durch eine entsprechende Meldung davor gewarnt, vorhandene Daten unbeabsichtigt zu löschen: Drücken Sie PF12, um abzubrechen, oder drücken Sie ENTER, um die Aktion zu bestätigen und den Inhalt des Quellcode-Arbeitsbereich zu überschreiben.

Beginn der Anweisungsliste Um ein einzelnes Interface-Objekt zu generieren:

  1. Bevor Sie die SYSRPC Utility aufrufen, sollten Sie Folgendes beachten:

    • Melden Sie sich bei der Library an, in der Sie das Interface-Objekt generieren wollen.

    • Wenn Sie ein Interface-Objekt aus einem Parameter-Datenbereich (PDA) generieren: Benennen Sie den PDA, von dem Sie das Interface-Objekt generieren wollen, um oder kopieren Sie ihn, wenn es auf der Client-Seite noch Objekte gibt, die auf diesen PDA verweisen. Der neue Name des PDA muss mit dem Namen des Remote CALLNAT-Programms identisch sein.

  2. Geben Sie im Feld Code des Menüs Client Maintenance das folgende Kommando ein:

    IG
  3. Drücken Sie ENTER.

    Der Bildschirm Generate Interface Object erscheint.

  4. Geben Sie im Feld Program Name den Namen des zu generierenden Interface-Objekts ein.

    Der Name des Interface-Objekts muss mit dem Namen des Remote CALLNAT-Programms identisch sein.

    Das Feld Library ist mit dem Namen der aktuellen Library vorbelegt und kann nicht geändert werden.

    Geben Sie im Feld Compression die Komprimierungsart 0, 1 oder 2 an (Standardwert ist 1). Siehe Komprimierung verwenden in Betrieb einer Natural RPC-Umgebung in der Natural RPC (Remote Procedure Call) -Dokumentation.

  5. Drücken Sie ENTER.

    • Wenn der im Feld Program Name eingegebene Name mit dem Namen eines Objekts übereinstimmt, das bereits in der zugeordneten Library existiert, erscheint ein Fenster mit einer entsprechenden Meldung:

      Geben Sie ein N (Nein) ein und drücken Sie ENTER, wenn Sie den Vorgang abbrechen möchten. Sie kehren dann zum Menü Client Maintenance zurück.

      Oder:
      Geben Sie ein Y (Ja) ein und drücken Sie ENTER, wenn Sie mit der Generierung von Interface-Objekten fortfahren wollen.

      Wenn der angegebene Name mit einem katalogisierten Objekt vom Typ Subprogramm oder PDA identisch ist, werden die Parameterdefinitionen des entsprechenden Subprogramms oder PDA auf dem Bildschirm Interface Generation angezeigt.

      Ist der angegebene Name identisch mit einem bereits generierten Interface-Objekt, zu dem auch ein Source-Objekt existiert, werden alle Feldattribute (siehe auch Parameter angeben) beibehalten.

    • Wenn die im Feld Program Name eingegebene Zeichenkette nicht mit dem Namen eines Objekts übereinstimmt, das bereits in der zugewiesenen Library existiert, wird ein leerer Interface Object Generation-Bildschirm angezeigt.

  6. Fügen Sie auf dem Bildschirm Interface Object Generation die im Interface-Objekt zu verwendenden Parameter hinzu oder ändern Sie sie, wie in Parameter angeben beschrieben.

    Die Kommandos auf dem Bildschirm Interface Object Generation entsprechen den Kommandos, die unter Kommandos zur Pflege des Service Directory im Kapitel Funktion Service Directory Maintenance benutzen beschrieben sind.

    Ausnahmen:

    Attribute Werte
    EXPIRATION Nicht anwendbar bei der Interface-Objekt-Generierung.
    COMPAT
    IDL Generiert ein Interface-Objekt gemäß den IDL-Anforderungen.
    NONE Generiert ein Interface-Objekt gemäß den Natural-Anforderungen.
    void COMPAT-Einstellung anzeigen.
    LIMIT
    32000 Setzt die obere Größenbegrenzung auf 32000 Bytes.
    1GB Setzt die obere Größenbegrenzung auf 1 GB.
    void Entfernt eine mit LIMIT 32000 oder LIMIT 1GB gesetzte Größenbegrenzung.
  7. Drücken Sie ENTER, um das Interface-Objekt zu generieren und zu beenden. Das Interface-Objekt wird in der zugewiesenen Library generiert.

    Es erscheint das Fenster SYSRPC - Information, das die Größe des Interface-Objekts anzeigt, die für das Senden von Daten vom Client zum Server oder umgekehrt erforderlich ist. Die Größe beinhaltet die internen RPC-Informationen, die für das Interface-Objekt verwendet werden. Die Angabe der Größe hilft Ihnen bei der Konfiguration der verwendeten Middleware-Schicht, z. B. der Broker-Attributdatei, wenn EntireX Broker verwendet wird.

    Die folgende Meldung erscheint im Fenster SYSRPC - Information, wenn Sie ein Interface-Objekt aus dem Beispiel-Subprogramm TESTS5 generieren (siehe Beispiel 1 weiter unten):

    Interface Object TESTS5 is generated in library SAGTEST (99,49).
       It requires:
            Send length: 2249 bytes
         Receive length: 2221 bytes
    

    Bei Verwendung von dynamischen Parametern, X-Arrays oder X-Gruppen-Arrays gibt diese Meldung nur die Mindestlängenanforderungen an. Der tatsächliche Längenbedarf kann nur während der Programmausführung ermittelt werden und kann von Aufruf zu Aufruf unterschiedlich sein. Überschreitet die Sendelänge oder die Empfangslänge die Entire-Net-Work-Grenze von 32000 Bytes, erscheint ein Fenster mit einer entsprechenden Warnung:

    Geben Sie ein Y (Ja) ein, um fortzufahren, oder ein N (Nein), um die Generierung abzubrechen. Wenn Sie ein Y eingeben, wird diese Einstellung für die gesamte SYSRPC-Sitzung beibehalten, d.h. Sie können mit der Generierung von Interface-Objekten fortfahren, ohne weitere Warnungen zu erhalten.

    Überschreitet die Gesamtzahl der gesendeten oder empfangenen Daten (ohne interne RPC-Informationen) die Grenze von 1073739357 Bytes (1 GB minus 2467 Bytes interne RPC-Informationen), bricht die SYSRPC Utility die Verarbeitung ab und gibt eine entsprechende Fehlermeldung aus. Diese Fehlermeldung zeigt die Zwischensumme der Daten in Bytes an, die in dem Feld, bis zu dem die Zwischensumme berechnet wurde, übertragen werden konnten. Das entsprechende Feld ist dann markiert. Reduzieren Sie in diesem Fall die Datenmenge, bevor Sie die Generierung fortsetzen.

    Wenn das Interface-Objekt in der Natural System Library SYSRPC generiert wurde, müssen Sie es mit der Natural Transfer Utility SYSMAIN oder dem Object Handler in die Application Library oder Steplib verschieben. Beachten Sie, dass Sie eventuell den Quellcode des Interface-Objekts in der Zielumgebung neu katalogisieren müssen.

Parameter angeben

In den Eingabefeldern auf dem Bildschirm Interface Object Generation können Sie die Parameterdefinitionen eingeben, die im Interface-Objekt verwendet werden. Sie können bis zu 5000 Parameter angeben. Sofern in der nachstehenden Tabelle nicht anders angegeben, ist die Eingabe in die Felder obligatorisch.

Feld Beschreibung
Level Die Ebene des Feldes.

Ebene kann eine Zahl im Bereich von 01 (höchste Ebene) bis 99 (niedrigste Ebene) sein. Die führende 0 ist optional.

Für ein Beispiel einer Gruppendefinition siehe Gruppen definieren und Beispiel 2.

Attr Das Attribut des Parameters:

M (Modifiable/änderbar - INOUT), O (Output/Ausgabe - OUT) oder I (Input/Eingabe - IN).

Parameter, denen eine Ebenennummer von 2 oder höher zugewiesen wurde, werden als Teil einer Gruppe betrachtet. Parameter innerhalb einer Gruppe müssen dasselbe Attribut haben wie die unmittelbar vorangehende Gruppe, die eine Ebene höher zugeordnet ist. Bei verschachtelten Gruppen ist dies das Attribut der Gruppe mit der höchsten Ebene. Ein Beispiel für eine Gruppendefinition finden Sie unter Beispiel 2.

Wenn ein Interface-Objekt aus einem Subprogramm oder aus einem PDA generiert wurde, ist das Attribut standardmäßig M, was eventuell geändert werden muss.

Wenn ein Interface-Objekt aus einem anderen Interface-Objekt generiert wurde, werden die für das ursprüngliche Objekt angegebenen Attributwerte beibehalten.

Das generierte Interface-Objekt enthält einen Kommentar, der angibt, welches Attribut für den Parameter angegeben wurde: IN, OUT oder INOUT.

Type Ein Natural-Datenformat wie N (numerisch) und G (Gruppe) oder K (Kanji). Die Natural-Datenformate C (Attributsteuerung) und HANDLE OF OBJECT sind nicht zulässig.

Beschreibung der Natural-Datenformate siehe Format und Länge von Benutzervariablen und Spezielle Formate im Abschnitt Benutzervariablen im Leitfaden zur Programmierung.

Length Die Länge des Parameters oder DYNAMIC.

Dieses Feld gilt nicht für die folgenden Natural-Datenformate: D (Datum), G (Gruppe), L (logisch) und T (Zeit).

Das Natural-Datenformat A ist auf 1073739357 Bytes beschränkt, das Natural-Datenformat B auf 536869678 Bytes.

DYNAMIC bezeichnet einen dynamischen Parameter und gilt für die Natural-Datenformate A und B.

Prec Gilt nur für die Natural-Datenformate N (numerisch) und P (gepackt). Optional.

Die Genauigkeit des Parameters, d. h. die Anzahl der Stellen nach dem Dezimalzeichen.

Dimension 1/2/3 Gilt nur bei Arrays. Optional.

Die erste, zweite und dritte Dimension des Parameters.

Ein X-Array oder ein X-Gruppen-Array wird durch Eingabe eines Sterns (*) für eine Dimension angegeben.

Siehe auch X-Arrays und X-Gruppen-Arrays definieren.

Dieser Abschnitt enthält Informationen über:

Gruppen definieren

Sie müssen nur eine Gruppenstruktur für ein Client-Natural-Objekt definieren, das ein Nicht-Natural-Objekt auf einem EntireX-RPC-Server aufruft. Die Gruppenstruktur muss mit der IDL-Definition in EntireX übereinstimmen (siehe Besondere Aspekte beim Aufrufen von EntireX RPC Servern). Für ein Natural-Client-Objekt, das ein Subprogramm auf einem Natural-RPC-Server aufruft, ist eine Gruppenstruktur nicht erforderlich.

Gruppen-Arrays und X-Gruppen-Arrays, die von einem Client-Natural-Objekt an ein Interface-Objekt übergeben werden, müssen zusammenhängend sein. Daher wird dringend empfohlen, immer ein vollständiges Array an das Objekt zu übergeben, indem Sie für alle Dimensionen die Stern-Notation (*) verwenden. Außerdem wird dringend empfohlen, im Client-Natural-Programm, im Interface-Objekt und im Server-Programm identische Datendefinitionen zu verwenden.

Für ein Beispiel einer Gruppendefinition siehe Beispiel 2.

X-Arrays und X-Gruppen-Arrays definieren

Wenn eine Dimension eines Parameters erweiterbar ist, sind alle anderen Dimensionen des Parameters ebenfalls erweiterbar. Wenn Sie in einem Subprogramm erweiterbare und feste Dimensionen für einen Parameter definieren, gibt die Funktion Interface Object Generation eine Warnung aus und ändert automatisch die feste Dimension in eine erweiterbare Dimension, wie in Beispiel 3 gezeigt. In einer Gruppenstruktur können Sie für jede Ebene entweder eine erweiterbare oder eine feste Dimension definieren. Ein automatischer Wechsel von einer festen Dimension zu einer erweiterbaren Dimension zwischen den Ebenen findet nicht statt.

Natural RPC unterstützt nur erweiterbare Obergrenzen. Alle X-Arrays und X-Gruppen-Arrays im generierten DEFINE DATA PARAMETER-Bereich des Interface-Objekts sind daher als (1:*) definiert.

Warnung:
Wenn Sie ein Interface-Objekt aus einem Subprogramm oder einem PDA generieren, das ein X-Array oder X-Gruppen-Array mit einer erweiterbaren Untergrenze enthält, wird die erweiterbare Untergrenze in eine erweiterbare Obergrenze umgewandelt.

Für ein Beispiel einer Gruppendefinition siehe Beispiel 3.

Besondere Aspekte beim Reliable RPC

Wenn Sie Reliable RPC verwenden wollen und Ihre Parameterdefinitionen keine Gruppenstrukturen enthalten, müssen Sie COMPAT IDL vor der Generierung des Interface-Objekts setzen.

Besondere Aspekte beim Aufrufen von EntireX RPC Servern

Die Attributdefinitionen auf dem Bildschirm Interface Object Generation spiegeln die Perspektive des Clients wider. Umgekehrt spiegelt die Parameterrichtung in der IDL-Definition die Perspektive des Servers wider. Dies bedeutet:

  • OUT im Bildschirm Interface Object Generation entspricht IN in der IDL-Definition.

  • IN im Bildschirm Interface Object Generation entspricht OUT in der IDL-Definition.

Wenn Sie einen EntireX-RPC-Server aufrufen möchten und die Parameterdefinitionen auf dem Bildschirm Interface Object Generation Gruppenstrukturen enthalten, müssen die Gruppenstruktur- und Attributdefinitionen auf dem Bildschirm Interface Object Generation mit der Gruppenstruktur- und Parameterrichtung in der IDL-Definition übereinstimmen.

Wenn Sie einen EntireX-RPC-Server aufrufen möchten und die entsprechende IDL-Datei keine Gruppenstrukturen enthält, empfiehlt es sich, vor der Generierung des Interface-Objekts COMPAT IDL zu setzen. In diesem Fall müssen die Attributdefinitionen auf dem Bildschirm Interface Object Generation mit der Parameterrichtung in der IDL-Definition übereinstimmen.

Beispiele für die Generierung von Interface-Objekten

In diesem Abschnitt finden Sie Beispiele für Natural-Subprogramme und die daraus generierten Interface-Objekte.

Die unten angegebenen Parameterdefinitionen stammen aus Beispiel-Subprogrammen, die in der Natural System Library SYSRPC ausgeliefert werden.

Beispiel 1

Der folgende DEFINE DATA PARAMETER-Bereich (Beispiel-Subprogramm TESTS5) zeigt vier änderbare Parameter und die entsprechenden Parameterdefinitionen auf dem Bildschirm Interface Object Generation:

DEFINE DATA
PARAMETER
  01 #IDENTIFIER  (A10)
  01 #N-OF-ID     (I4)
  01 #FREQ        (P5.2)
  01 #A100        (A100/5,4)
Interface Object Generation
  Level Attr Type Length Prec Dimension 1 Dimension 2 Dimension 3
1 01 M A 10        
2 01 M I 4        
3 01 M P 5 2      
4 01 M A 100   5 4  

Beispiel 2

Der folgende DEFINE DATA PARAMETER-Bereich (Beispiel-Subprogramm TESTS6) zeigt eine geschachtelte Gruppenstruktur und die entsprechenden Parameterdefinitionen auf dem Bildschirm Interface Object Generation:

DEFINE DATA
PARAMETER
 01 GROUP-1(10)
   02 A (A20)
   02 B (A20)
   02 GROUP-2(20)
     03 C (A10/5)
     03 D (A10)
 01 LINE (A) DYNAMIC
Interface Object Generation
  Level Attr Type Length Prec Dimension 1 Dimension 2 Dimension 3
1 01 M G     10    
2 02 M A 20        
3 02 M A 20        
4 02 M G     20    
5 03 M A 10   5    
6 03 M A 10        
7 01 M A DYNAMIC        

Beispiel 3

Der folgende DEFINE DATA PARAMETER-Bereich (Beispiel-Subprogramm TESTS7) zeigt eine geschachtelte Gruppenstruktur mit erweiterbaren Dimensionen und die entsprechenden Parameterdefinitionen auf dem Bildschirm Interface Object Generation:

DEFINE DATA
PARAMETER
 01 GROUP-1(10)
   02 A (A20)
   02 B (A20)
   02 GROUP-2(0:*)
     03 C (A10/5)
     03 D (A10)
 01 LINE (A) DYNAMIC
Interface Object Generation
  Level Attr Type Length Prec Dimension 1 Dimension 2 Dimension 3
1 01 M G     10    
2 02 M A 20        
3 02 M A 20        
4 02 M G     *    
5 03 M A 10   5    
6 03 M A 10        
7 01 M A DYNAMIC