<<>> <> <> <> <> <> <> DIRECTORY PFS USING [Error, PathFromRope, StreamOpen], TJaM USING [AtomFromRope, CommandProc, Error, ExecuteStream, PopRope, PushRope, RegisterPrimitive, ROPE, STREAM]; TJaMIOImpl: CEDAR PROGRAM IMPORTS PFS, TJaM ~ BEGIN OPEN TJaM; badName: ATOM ~ AtomFromRope[".badname"]; pfsError: ATOM ~ AtomFromRope[".pfserror"]; ApplyRun: CommandProc = { fileName: ROPE ~ PopRope[frame]; errorAtom: ATOM ¬ NIL; stream: STREAM ¬ NIL; stream ¬ PFS.StreamOpen[PFS.PathFromRope[fileName] ! PFS.Error => { SELECT error.group FROM user => errorAtom ¬ badName; ENDCASE => { PushRope[frame, error.explanation]; errorAtom ¬ pfsError }; CONTINUE; }; ]; IF stream#NIL THEN ExecuteStream[frame, stream] ELSE ERROR Error[errorAtom]; }; RegisterPrimitive[".run", ApplyRun]; <<>> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> END.