zOs/REXX/USSPIPE
/* rexx */
call sysCall 'pipe pi.'
say 'descInp' pi.1 'descOut' pi.2
say 'o_nonblock' o_nonblock
call sysCall 'f_setfl' pi.1 4
r1 = 'not read'
rv = sysCall('read' pi.1 'r1 100')
say 'read1 retval' rv 'read' r1
l1 = 'write 1 to pipe'
call sysCall 'write' pi.2 'l1'
rv = sysCall('read' pi.1 'r1 100')
say 'read2 retVal' rv 'read' r1
call sysCall 'read' 99 'r1 100'
exit
sysCall:
parse arg ggSysCall, ggRet
say '>>>sysCall' ggSysCall
address sysCall ggSysCall
ggRV = retVal
if rc <> 0 | errNo <> 0 then do
say 'rc='rc 'retVal' retVal 'errNo' errNo 'errNoJR' errNoJR ,
'for syscall' ggSysCall
address syscall 'strerror' errNo errNoJR 'ggSce.'
do ggX=1 to ggSce.0
say ' ' ggSce.ggX
end
end
return ggRV