© 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