Forum
Hallo Thomas,
Du kannst externen Prozeduren keinen Stem überreichen, aber es gibt andere Möglichkeiten. Anbei ein Beispiel:
[hr]
*REXX – StackA: Daten auf Queue legen */
parse source op_sys . exec_name .
/* Schreiben in LIFO Methode */
push "A1"
push "A2"
push "A3"
/* Schreiben in FIFO Methode */
queue "A4"
queue "A5"
queue "A6"
records = queued()
say "Unter "op_sys" in Procedure "exec_name records,
"Record in die Queue gestellt."
call StackB
records = queued()
say "Reste in der Queue: "records" Records."
exit
[hr]
/*REXX – StackB: Daten aus Queue nehmen */
parse source op_sys . exec_name .
records = queued()
say "Unter "op_sys" in Procedure "exec_name records,
"Records aus der Queue nehmen."
drop stem.
do i=1 to records
pull record
say i". Record="record
stem.i = record
end
call iStackC (i-1)
exit 0
/*–*/
iStackC: Procedure expose stem.
parse arg records
say "Unter "op_sys" in Procedure "exec_name "(iStackC)" records,
"Records aus Stem nehmen."
do i=1 to records
say i". Record="stem.i
end
return
[hr]
Mit PUSH bzw QUEUE kannst Du in der LIFO- oder FIFO-Methode auf einen Stack schreiben, mit PULL vom Stack lesen.
Die Übergabe eines Stems funktioniert nur innerhalb der Prozedur zu einer internen Prozedur, die via EXPOSE die Variablen mit ihrer Umgebung teilt.
Viel Erfolg
Gernot