| Author: | Brian Tiffin |
|---|---|
| Date: | 13-Nov-2008 |
| Purpose: | Very High Level Regina Rexx engine |
| Requires: | regina-rexx, regina3, regina3-dev, OC 1.1 pre-rel |
| Tectonics: | cobc -I/usr/include/regina -c ocrexx.c
cobc -x -lregina rexxcaller.cob ocrexx.o
ocdoc rexxcaller.cob rexxcaller.rst rexxcaller.html
|
working-storage section. 01 newline constant as x"0a". 01 apicode usage binary-long. 01 resultcode usage binary-short. 01 scriptname pic x(12) value 'verrexx.cmd' & x'00'. 01 argument pic x(256) value 'OC1.1 args' & x"00". 01 cmds pic x(1024). 01 rexxstring pic x(1048576).
Pass a null-term scriptname, a null-term argument string the return value field and length, the return code and returning the Rexx api result code.
Usage:
call "ocrexx"
using
by reference scriptname
by reference argument
by reference rexxstring
by value function length(rexxstring)
by reference resultcode
returning apicode
end-call
display "|" apicode "|" resultcode with no advancing end-display
display "|" function trim(rexxstring trailing) "|" end-display
Usage:
move "say 'Hello World!'; return 'From Rexx';" & x'00' to cmds.
compute
apicode = function length(function trim(cmds))
end-compute
display newline
"CALL Rexx command with |" cmds(1:apicode - 1) "|"
end-display
call "ocrexxcmd"
using
by reference cmds
by reference argument
by reference rexxstring
by value function length(rexxstring)
by reference resultcode
returning apicode
end-call
display "|" apicode "|" resultcode with no advancing end-display
display "|" function trim(rexxstring trailing) "|" end-display
or perhaps:
move
"parse arg argument; say '##' || argument || '##';" & x"0a" &
"capture = '';" & x"0a" &
"address system 'cat tectonic && cat verrexx.cmd && ls -l" &
" && w3m rexxcaller.html'" &
" with output fifo '';" & x"0a" &
"DO i=1 WHILE queued() \= 0;" & x"0a" &
" parse pull line;" & x"0a" &
" capture = capture || line || '0a'x;" & x"0a" &
"END;" & x'0a' &
"return capture;" & x'00' to cmds
compute
apicode = function length(function trim(cmds))
end-compute
display newline
"CALL Rexx command with |" cmds(1:apicode - 1) "|"
end-display
call "ocrexxcmd"
using
by reference cmds
by reference argument
by reference rexxstring
by value function length(rexxstring)
by reference resultcode
returning apicode
end-call