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:
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.
Um ein einzelnes Interface-Objekt zu generieren:
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.
Geben Sie im Feld Code des Menüs Client Maintenance das folgende Kommando ein:
IG
Drücken Sie ENTER.
Der Bildschirm Generate Interface Object erscheint.
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.
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.
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 |
Anmerkung: |
||||||
LIMIT |
|
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.
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 Für ein Beispiel einer Gruppendefinition siehe Gruppen definieren und Beispiel 2. |
Attr | Das Attribut des Parameters:
Parameter, denen eine Ebenennummer von Wenn ein Interface-Objekt aus einem Subprogramm oder aus
einem PDA generiert wurde, ist das Attribut standardmäßig 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:
|
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: Das Natural-Datenformat |
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:
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.
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.
Wenn Sie Reliable RPC verwenden wollen und Ihre
Parameterdefinitionen keine Gruppenstrukturen enthalten, müssen Sie
COMPAT
IDL
vor der Generierung des Interface-Objekts
setzen.
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.
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.
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 |
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 |
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 |