DIRECTORY BasicTime, IO, Misp, Rope, Tempus; MispTime: CEDAR PROGRAM IMPORTS BasicTime, IO, Misp, Tempus = BEGIN LORA: TYPE = LIST OF REF ANY; ROPE: TYPE = Rope.ROPE; RefTime: TYPE = Misp.RefTime; NewTime: PROC [time: BasicTime.GMT] RETURNS [rt: RefTime] = {rt _ NEW [Misp.TimeRec _ [time]]}; EvalTimeDiff: PROC [args: LORA, environment: Misp.Environment, data: REF ANY _ NIL, stack: Misp.Stack] RETURNS [cooked: REF ANY] --Misp.EvalProc-- = { rt1: RefTime _ NARROW[args.first]; rt2: RefTime _ NARROW[args.rest.first]; cooked _ NEW [INT _ BasicTime.Period[from: rt1.t, to: rt2.t]]}; EvalTimeUpdate: PROC [args: LORA, environment: Misp.Environment, data: REF ANY _ NIL, stack: Misp.Stack] RETURNS [cooked: REF ANY] --Misp.EvalProc-- = { rt1: RefTime _ NARROW[args.first]; i: INT _ Misp.ToInt[args.rest.first, environment, stack]; cooked _ NewTime[BasicTime.Update[rt1.t, i]]}; EvalTimeNow: PROC [args: LORA, environment: Misp.Environment, data: REF ANY _ NIL, stack: Misp.Stack] RETURNS [cooked: REF ANY] --Misp.EvalProc-- = { cooked _ NewTime[BasicTime.Now[]]}; EvalTimeFmt: PROC [args: LORA, environment: Misp.Environment, data: REF ANY _ NIL, stack: Misp.Stack] RETURNS [cooked: REF ANY] --Misp.EvalProc-- = { rt: RefTime _ NARROW[args.first]; r: ROPE; r _ IO.PutFR["%g", IO.time[rt.t] !BasicTime.OutOfRange => {r _ "?time out of range?"; CONTINUE}]; cooked _ r}; EvalTimeParse: PROC [args: LORA, environment: Misp.Environment, data: REF ANY _ NIL, stack: Misp.Stack] RETURNS [cooked: REF ANY] --Misp.EvalProc-- = { rope: ROPE _ NARROW[args.first]; cooked _ NewTime[Tempus.Parse[rope].time]}; DefineRopeStuff: PROC [env: Misp.Environment] = { Misp.Defun[env, $timeDiff, EvalTimeDiff]; Misp.Defun[env, $timeUpdate, EvalTimeUpdate]; Misp.Defun[env, $timeNow, EvalTimeNow]; Misp.Defun[env, $timeFmt, EvalTimeFmt]; Misp.Defun[env, $timeParse, EvalTimeParse]; }; Start: PROC = { Misp.RegisterPrimitiveDefiner[DefineRopeStuff]; }; Start[]; END. <MispTime.Mesa Spreitzer, July 30, 1985 2:13:42 pm PDT ΚΔ– "cedar" style˜code™ K™'—K˜KšΟk œ œ˜,K˜šΠbxœœ˜Kšœ œ˜%—K˜Kš˜K˜Kš œœœœœœ˜Kšœœœ˜Kšœ œ˜K˜šΟnœœœœ˜;Kšœœ˜#—K˜šŸ œœœ'œœœœ œœΟcœ˜–Kšœœ ˜"Kšœœ˜'Kšœ œœ.˜?—K˜šŸœœœ'œœœœ œœ œ˜˜Kšœœ ˜"Kšœœ3˜9Kšœ.˜.—K˜šŸ œœœ'œœœœ œœ œ˜•Kšœ#˜#—K˜šŸ œœœ'œœœœ œœ œ˜•Kšœœ ˜!Kšœœ˜Kšœœ œAœ˜aKšœ ˜ —K˜šŸ œœœ'œœœœ œœ œ˜—Kšœœœ ˜ Kšœ+˜+—K˜K˜šŸœœ˜1Kšœ)˜)Kšœ-˜-Kšœ'˜'Kšœ'˜'Kšœ+˜+K˜—K˜šŸœœ˜Kšœ/˜/K˜—K˜K˜K˜Kšœ˜—…—¦ ¦