Hallo,

ich habe da eine Prozedur die zwei Parameter mitbekommt. Diese beiden sollen innerhalb der Prozedur verarbeitet werden und dann zurückgegeben werden. Die beiden Parameter sind global gültige Variablen. Ich will also eine Wertzuweisung an die eigentlichen Variablen nicht in der Funktion vornehmen, in der die Verarbeitung vorgenommen wird (Stichwort Kapselung). Das habe ich mir sagen lassen würde über Input/Output-Variablen möglich sein.

Nun habe ich mit der Umsetzung dieser Idee so meine Schwierigkeiten.

Erstens kann man aus einer Prozedur doch nur einen Wert zurückliefern, oder (Return XXX gibt den Wert raus und die Prozedur wird verlassen)?

Zweitens, selbst wenn ich zwei Werte zurückliefern könnte wie wäre dann eine Zuweisung in einem Funktionsaufruf zu gestalten?

Ein bisschen plastischer:

Code:
P Hauptfunktion B											  
D Hauptfunktion PI											 
/Free
 
// Wertzuweisungen auf globale Variablen sollen nur hier in dieser Prozedur stattfinden 
globVar1 = Wert1 aus Unterfunktion(globVar1:globVar2);
globVar2 = Wert2 aus Unterfunktion(globVar1:globVar2);
 
/End-Free
P Hauptfunktion E

Code:
P Unterfunktion  B											  
D Unterfunktion  PI											 
D  Parm1		   Like(globVar1)
D  Parm2		   Like(globVar2) 
**----
D  intVar1		 S
D  intVar2		 S
/Free
 
intVar1 = Parm1;
intVar2 = Parm2;
 
//Verarbeitung der Variablen...
 
Return inVar1;	 // ???
Return inVar2;	 // ???
 
/End-Free
 
P Unterfunktion  E
So ungefähr soll der Ablauf des Ganzen vonstatten gehen, aber ich hab nicht so wirklich eine gute Idee, wie das zu machen wäre. Ich könnte mir ein "schönes" Konstrukt mir Pointern auf die Werte vorstellen, aber das wäre ja letztendlich auch nur innerhalb der Unterprozedur zu machen und so der Kapselungsgedanke verletzt. Oder ich könnte je eine Prozedur für je einen Wert erstellen. Aber gäbe es nicht auch eine Möglichkeit das Ganze zu lösen wie oben angedeutet? Kann mit jemand sagen, wie ich eine I/O Variable nutzen kann?

Herlichen Dank für Anregungen, Björn