<< | Inhaltsverzeichnis | Suchen | >> |
Anweisung Typ 1
Syntax: |
CALL <PROGRAMM-NAME> |
Bedeutung: |
Aufruf eines EBUS-Unterprogramms |
Beispiel: |
CALL UPROG |
siehe auch: |
Anweisung Typ 2
Syntax: |
CALL <CALL-NAME> [(<AUSDRUCK> [,<AUSDRUCK>]... )] |
|
Bedeutung: |
Aufruf eines Assembler- oder C-Unterprogramms |
|
|
Beim Aufruf von Unterprogrammen sind folgende Konventionen zu beachten: |
|
|
Call by value |
Numerische Variable und numerische Ausdrücke werden per Voreinstellung 'by value' an das Unterprogramm übergeben, d.h. der Parameter wird als Wert übergeben und Veränderungen des Parameters haben im rufenden Programm keine Wirkung. |
|
Call by reference |
Bereiche (Arrays) und alphanumerische Variable und Ausdrücke werden immer 'by reference' übergeben, d.h. an das Unterprogramm wird die Adresse des Parameters (Pointer) übergeben. Änderungen des Parameters im Unterprogramm wirken auch im rufenden Programm. |
|
|
Numerische Variable können mit Hilfe des Adreßoperators <&> ebenfalls by reference übergeben werden. |
|
|
Beispiel: CALL PROG7(&X) |
|
Numerische Parameter |
werden mit dem Typ 'double' übergeben. |
|
Integer-Variablen |
werden mit dem Typ 'long int' übergeben. |
|
Integer-Konstanten |
werden mit dem Typ 'int' übergeben. |
|
Strings, |
Bei Strings wird die Adresse einer Struktur 'STRING' übergeben, die in der INCLUDE-Datei ebus.h deklariert ist: |
|
|
struct string { |
|
|
Soll nur die Zeichenkette und nicht die komplette Struktur übergeben werden, so muß am Ende des String-Ausdrucks "->P" angefügt werden. Beispiel: CALL SUB("Hallo"->P) Die Zeichenkette setzt sich aus dem im EBUS-Programm sichtbaren Teil des Strings und einem Stringterminator ‘\0’ zusammen. |
|
Bereiche (Arrays) |
Bereiche sind im C-Programm Arrays mit der um 1 erhöhten Dimension des EBUS-Programms, z.B.: |
|
|
EBUS-Programm: DIM A(100) <nr> ist eine Zahl, die vom Programm-Generator erzeugt wird. |
|
Cast- |
Bei Parametern, die 'by value' übergeben werden, kann der Cast-Operator 'short', 'int' oder 'long' angegeben werden. Dadurch können numerische Variable als 'short int', 'int' oder 'long' übergeben werden. |
Beispiel: |
/* Übergabe von I% als short
int (2 Bytes) |
|
|
/* Übergabe der short int
Adresse der long int Variablen I% |
|
|
/* Übergabe des Wertes von H als short int |
|
|
/* Übergabe des Wertes von L als int |
|
|
/* Übergabe der Integerkonstanten 23 als
long |
|
|
/* Übergabe mehrerer Parameter |
|
|
/* Übergabe eines Strings als
EBUS-Struktur |
|
|
/* Übergabe eines Strings als Zeichenkette |