include define CMDS 500 # maximum number of commands # OPSTRM -- Operate on an input stream. procedure t_opstrm () int ncmds, nscan(), locva() pointer sp, input, cmd, cmds begin call smark (sp) call salloc (input, SZ_FNAME, TY_CHAR) call salloc (cmd, SZ_FNAME, TY_CHAR) call salloc (cmds, CMDS, TY_POINTER) call clgstr ("input", Memc[input], SZ_FNAME) call strpak (Memc[input], Memc[input], SZ_FNAME) call clscan ("commands") ncmds = 0 repeat { call gargwrd (Memc[cmd], SZ_FNAME) if (nscan() == ncmds) break call salloc (Memi[cmds+ncmds], SZ_FNAME, TY_CHAR) call strpak (Memc[cmd], Memc[Memi[cmds+ncmds]], SZ_FNAME) Memi[cmds+ncmds] = locva (Memc[Memi[cmds+ncmds]]) * SZB_CHAR ncmds = ncmds+1 } call opstrm (Memc[input], ncmds, Memi[cmds]) call sfree (sp) end