Sie können eine EGL-Eigenschaft festlegen, damit ein strukturierter Datensatz an ein aufrufendes Programm gesendet und von diesem in einer von unterschiedlichen Formen empfangen werden kann - als strukturierter Datensatz, als Gruppe von einzelnen Feldern, die den Blattelementen in diesem Datensatz entsprechen, oder als sequenzielle Gruppe von Datensätzen und Feldern. Die Verwendung dieser Eigenschaft ist insbesondere dann geeignet, wenn in EGL codierte Logik mit einer Logik interagiert, die in EGL codiert ist, aber aus Code migriert wurde, der in der Programmiersprache 'Natural' geschrieben wurde.
Das Verhalten basiert auf der Einstellung für die Eigenschaft callingConvention sowohl in der Anweisung call als auch im aufgerufenen Programm. Der Eigenschaftswert lautet entweder 'CallingConventionKind.Expanded' oder in der Kurzform 'Expanded'.
Record MyCompletePart type BasicRecord
10 myInt INT;
10 myInt02 INT;
10 myChars CHAR(5);
end
Record MySubPart type BasicRecord
10 myInt02 INT;
10 myChars CHAR(5);
end
myCompleteRecord MyCompletePart;
mySubRecord MySubPart;
myIntVar INT;
myInt02Var INT;
myCharsVar CHAR(5);
call MyProgram( myCompleteRecord ) { callingConvention=Expanded };
call MyProgram( myIntVar, mySubRecord ) { callingConvention=Expanded };
call MyProgram( myIntVar, myInt02Var, myCharsVar) { callingConvention=Expanded };
Program MyProgram type BasicProgram ( myCompleteRecord MyCompletePart )
{ callingConvention=Expanded }
end
Program MyProgram type BasicProgram ( myIntVar INT, mySubRecord MySubPart )
{ callingConvention=Expanded }
end
Program MyProgram type BasicProgram ( myIntVar INT, myInt02Var INT, myCharsVar CHAR(5))
{ callingConvention=Expanded }
end
Jede der drei Argumentlisten in der Anweisung call ist für jede der drei Parameterlisten des aufgerufenen Programms gültig.
Record X type BasicRecord
10 myChar CHAR(4)[2];
20 mySubChar01 char(2);
20 mySubChar02 char(2);
end
Wird 'Expanded' verwendet, wird jedes Blatt (mySubChar01 oder mySubChar02) selbst dann als zusammenhängender Speicherblock übergeben, wenn die Felder in diesem Blatt nicht zusammenhängend gespeichert sind. Die Daten müssen kopiert werden und diese zusätzliche Verarbeitung benötigt Zeit. Details über die Speicherung von mehrdimensionalen Strukturfeldern finden Sie unter 'Feldgruppen'.
Falls Sie eine Strukturfeldgruppe explizit übergeben, lesen Sie die Informationen im Abschnitt 'Strukturfeldgruppen übergeben'.