OS2.org Site Index - Feedback - Impressum
Sprachauswahl / Choose your Language News Software Hardware Projekte Forum Tipps Links Verschiedenes
Editorial Diskussion HelpDesk Umfrage
[Forum]
in nach (Erweiterte Suche)
[Forum]
( Archiv ) ( Neues Thema )
23.07.2000
Wie und Was: Die Besonderheiten der REXX-Funktion RxFuncAdd,( Teil I) Die Registrierung (von: GA, 14:44:53) ^ »
1. Allgemeine Syntax

rc = RxFuncAdd(name, dll, entry)

Die eingebaute OS/2 Funktion RxFuncAdd (function add = Funktion hinzufügen) registriert systemweit die Funktion mit dem Namen name, die in der dynamischen Bibliothek (Dynamic Link Library = DLL) mit dem Namen dll (aber meistens ohne die Extension *.dll)unter dem Einsprungspunkt(entry point) entry enthalten ist. Ein Fuktionsergebnis von rc = 0 bedeutet (nur), daß die Registrierung in eine Liste erfolgreich war. Der Name von entry ist dabei sensitiv, daß bedeutet, daß falls der Name nicht exakt die Groß- und Kleinschreibung des Namens in der DLL wiedergibt, die Funktion nicht geladen werden kann. Wie gebau der Name des entry geschrieben wird, kann man mit der Routine EXEINFO(suche im helpdesk) ausgeben.
Der aktuelle Name vom 1. Argument name kann innerhalb der gültigen OS/2 Funktionen frei gewählt werden, so daß man meistens hier eine kürzere oder verständlichere Bezeichnung der Funktion wählen kann.

2. Externe REXX - Funktionen in einer DLL

Externe Funktionen, die als Funktionspaket in einer DLL gespeichert sind, können in einem Programm erts dann aufgerufen werden, wenn die verbindung zwischen dem Programm und der DLL hergestellt sind. Diese verbindung wird durch eine Registrierung einer Funktion mit RxFuncAdd erzeugt.

2. Wichtige Hinweise

RxfuncAdd prüft weder die Existenz der DLL dll noch ob die zu registrierende Funktion name und der Einsprungspunkt entry in der DLL vorhanden sind. Das Funktionsergebnis rc = 0 bedeutet lediglich, daß die Registrierung vorgenommen, d.h. daß die Funktion name in eine Speichertabelle eingetragen wurde. Erst beim Aufruf der zu registrierenden Funktion wird festgestellt, ob die Funktion (im Arbeitsspeicher) vorhanden ist. Wenn nicht, wird der REX0043 Fehler ausgegeben. Der englische Text des Fehler lautet:

REX0043: ***Routine not found***

EXPLANATION: A function has been invoked within an expression (or
a subroutine has been invoked by a CALL) but it
cannot be found. No label with the specified name
exists in the program, it is not the name of a
built-in function, and the language processor has
been unable to locate it externally.
ACTION: Check for: - a mis-typed label or name
- a symbol or literal string adjacent to a '('
when it should have been separated by a
blank or some other operator (this would
be understood as a function invocation)

Siehe auch: http://www.howzatt.demon.co.uk/articles/12dec96.html

Im folgenden Kapitel werden Beispiele und Methoden gezeigt, wie man die oben genannten Defizite teilweise reduzieren kann.

Wer kann hierzu Ergänzungen und/oder Korrekturen vorbringen?





[ Leser: 115 ]

Datum Thema
07.01.2017 *

*

Name: * eMail: Benachrichtigung

Mit * markierte Felder müssen ausgefüllt werden !

( Zeige alle Einträge ) ( Zur Startübersicht )
Thema von: Leser Datum Zeit
 Wie und Was: Die Besonderheiten der REXX-Funktion RxFuncAdd,( Teil I) Die Registrierung
GA11523.07.200014:44
 Re: Wie und Was: Die Besonderheiten der REXX-Funktion RxFuncAdd,( Teil I) Die Registrierung
Hans Martin Sauer8324.07.200014:14
 Quelle Nr. 1: Konventionen für REXX unter C
GA7924.07.200014:39
 Quelle Nr. 2: Red Book : From Bark to Byte
GA8524.07.200014:46
 Quelle Nr. 3: EDM/2
GA7524.07.200015:08
  Quelle Nr. 4: EDM/2 mit anderen Ausführungen
GA7124.07.200015:18
 Re: ... RxFuncAdd ... entry
Manfred Greulich5227.07.200017:09
 Wenn man ...
GA5028.07.200012:04
 Ein Beispiel für sensitive Funktionsnamen...
GA4528.07.200012:56
 Pruefen ob Funktion geladen?
Andreas Schnellbacher4428.07.200017:53
 Prüfen, ob Funktion registriert wurde
GA5229.07.200013:30
 Re: Prüfen, ob Funktion registriert wurde
Andreas Schnellbacher4029.07.200020:36
 RxFuncAdd als Subroutine formuliert:
GA2908.08.200012:06


php.net OpenIT © 1998-2017 by WebTeam OS2.org