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