©
serviceprofessionalgmbh
Haben Sie sich auch schon darüber geärgert, dass man Variablenstämme nicht an ein übergerodnetes Programm
zurückreichen kann? Man kann! (die Frage ist ja nie, ob etwas geht, sondern immer nur wie es geht)
Zur besseren Übersicht sind die Unterprogramme intern kodiert.
Die erste Variante gibt das Ergebnis eines EXECIO zurück. Die zweite Variante bereitet einen String zur Rückgabe vor,
der im Hauptprogramm interpretativ umgesetzt wird.
Beispiel-1 mit EXECIO
/* REXX
*/
get#data('stem')
/* use stem.n here */
say "Stemgroesse aus UPROG:" stem.0
do I = 1 to stem.0
say strip(stem.i)
end
exit
get#data: procedure
parse arg var
"newstack"
ende = random(1,15)
do i=1 to ende
Queue "Das ist zeile" i
if i = ende then queue "Und das ist das ENDE"
end
DDname="T"reverse(userid())
"alloc dd("ddname") new space(1) tracks lrecl(80) dsorg(ps) reuse"
"EXECIO" queued() "DISKW" DDname "(FINIS)"
"delstack"
Return "EXECIO * DISKR" DDname "(STEM "var". FINIS)"
Beispiel-2 mit zu interpretierndem String
/* REXX
*/
DATEI="TEST.DATA(FIFOLIFO)"
interpret fileitem("INFO",DATEI) /* jetzt INFO.0 etc. vorhanden */
say "Records:" INFO.0
do I = 1 to INFO.0
say right(i,2) ">>" strip(INFO.I,"T")
end
say "Bye, bye..."
exit
fileitem: procedure
arg var,dsn
"newstack"
"alloc dd(tmp) da("dsn") shr reuse"
"execio * diskr tmp (finis"
"free dd(tmp)"
erg = var".0="queued()";"
do I = 1 to queued()
parse pull rec
ERG = ERG !! var"."I"='"rec"';"
end
"delstack"
return erg
zurück zu Hilfen im Alltag