c store the process for remote processing subroutine rshdoh( id, name) integer*4 id character*8 name include "/usr4/vgr/include/rshcom.i" include "/usr4/vgr/include/rshio.i" include "/usr4/vgr/include/rshcmd.i" character*4 filnn integer i, j, time if ( rshmax .le. 0) then call rshstrt else call rshdw(1) end if rshfnum = rshfnum + 1 if (rshfnum .le. rshfnx) then i = rshfnum else c find free slot do 200 j=1,rshfnx if ( rshstw(j) .eq. 0) then i = j go to 250 end if 200 continue c no free blocks if ( id .eq. 0) then id = - rshfnx else id = -id end if return end if c we have a free block so store request 250 continue j = i c check that there is such a remote process do 270 ii=1,rshmax if (name .eq. rshnama(ii)) go to 280 270 continue c no such remote process, return negative id if ( id .eq. 0) then id = - rshfnx else id = -id end if return 280 continue rshidn = rshidn + 1 rshtyp = 0 rshnam = name rshmach = "" rshsid = rshidn rshblen = rshlen + 40 if (id .eq. 0) id = rshidn rshuid = id rshblen = rshlen + 40 rshsidw( i) = rshsid rshuidw( i) = rshuid rshnamw( i) = rshnam rshtimw( i) = time() rshtypw( i) = 0 rshstw ( i) = 1 call i4toc4( filnn, rshsid) ii = index( rshnam, ' ') ii = max0(1,min0(8,ii-1)) rshfilw( i) = rshfilr(1:rshfnl)// '_' // rshnam(1:ii) // '.' // filnn call rshwrt( rshfilw( i), rshblen, rshbuf, rsheod) i = 1 call rshdw(i) return end