Hallo,

was dahinter steckt ist CALL by reference und call bei value.
CALL BY REFERENCE: es wird die Adresse des Parameters übergeben
- Veränderungen werden im aufrufenden Programm direkt sichtbar
- auf der AS400 grundsätzlich default
- auf der AS400 keinerlei Typprüfung
- Risiko: falsche Definition im aufgerufenen Programm erzeugt Probleme bis zum Absturz im aufrufenden Programm
mein Resumee: Finger weg, wenn möglich immer (in Worten: immer) VALUE nehmen. (Sclüsselwort VALUE bei gebundenen Calls, CONST bei dynamischen Calls wirkt ähnlich)

CALL BY VALUE: Übergabe eines Wertes
- Veränderungen des Parameters im aufgerufenen Programm werden nicht sichtbar im aufrufenden
- genaue Kontrolle des Rückgabeflusses
- Rückgabe über return, bei mehreren Werten Verbundtypen nehmen (DS im RPG)
- (fast) vollständige Typprüfung auch in ILE RPG (über Prototyp) möglich.

Weitergabe von Referenzen (CALL BY REFERENCE, oder Pointer) nur in klar definierten Ausnahmefällen, wofür ein positiver Grund vorliegen muss.

mfg

Dieter Bender

@Baldur: wo der C Vergleich hinkt: C weiss üblicherweise auf was ein Pointer zeigt (Ausnahme Pointer auf Pointer), RPG weiss nie auf was ein Pointer zeigt!!!

Zitat Zitat von BUG
Das gefällt mir, ich werd's mal probieren!

Aber vielleicht nochmal ganz kurz zu meiner anderen Frage:
Könnt ihr mir vielleicht sagen, wie ich mir eine I/O-Variable vorzustellen habe? Ich mag mich hier blamieren weil ich eine Riesenlücke in meinem Basiswissen rausposaune, aber ich finde partout nirgends eine konkrete Definition finde oder eine Anleitung zur Implementierung... Was wie genau geh ich damit um?

Ich meine, der Name sagt natürlich schon einiges. Geht's dabei dann einfach nur darum, einen Parameter zu übergeben, zu verarbeiten und zurückzugeben?