Copy the Queue into a compound variable
[Autolink] Menu
/* sample routine to copy the queue into a compound variable */
"@dir | rxqueue"
call CopyQueueIntoStem "filesFound"
say filesFound.0 || " entries found."
do i = 1 to filesFound.0
say i || "-> " || filesFound.i
end /* do i = 1 to filesFound.0 */
exit 0
/* ------------------------------------------------------------------ */
/* function: Save all entries from within the queue into a compound */
/* variable */
/* */
/* call: CopyQueueIntoStem stem */
/* */
/* where: stem - stem of the compound variable for the lines from */
/* the queue */
/* */
/* returns: no. of entries read */
/* */
CopyQueueIntoStem:
parse arg rqis.__stemName
/* set the return code */
rc = 0
if rqis.__stemName <> "" then
do
if right( rqis.__stemName,1 ) <> "." then
rqis.__StemName = rqis.__StemName || "."
if symbol( rqis.__StemName || "0" ) <> "VAR" then
do
/* the compound variable is not used at this */
/* time -- init the number of stem elements */
/* with 0 */
rqis.__iLine = rqis.__StemName || "0 = 0 "
interpret rqis.__iLine
rqis.__InitNo = 0
end /* if */
else
do
/* compound variable is already in use */
rqis.__InitNo = value( rqis.__StemName || "0" )
end /* else */
if queued() <> 0 then
do
rqis.__iLine = "i = " rqis.__StemName || "0"
interpret rqis.__iLine
/* create the code to read the queue */
rqis.__iLine = ,
"do until queued() = 0; " ,
" rqis.__qLine = strip( lineIn( ""QUEUE:"" ) ); " ,
" if rqis.__qLine <> """" then " ,
" do; " ,
" i = i +1; " ,
rqis.__StemName || "i = rqis.__qLine; " ,
" end; " ,
"end;"
/* and now execute the code to read the queue */
interpret rqis.__iLine
/* correct the no. of lines in stem.0 */
rqis.__iLine = rqis.__StemName || "0 = i "
interpret rqis.__iLine
/* set the return code */
rc = i - rqis.__InitNo
end /* if stream( ... */
end /* if rqis.__stemName <> "" then */
do while queued() <> 0
rqis.__dummyLine = lineIN( "QUEUE:" )
end /* do while */
drop rqis.
RETURN rc
[Back: Simple debug routine]
[Next: Sample for persistent variables]