DIRECTORY AMBridge, AMTypes, IO, PrincOps, PrincOpsUtils, PrintTV, ViewerIO; PrintStack: CEDAR PROGRAM IMPORTS AMBridge, AMTypes, IO, PrincOpsUtils, PrintTV, ViewerIO = BEGIN TV: TYPE = AMTypes.TV; log: IO.STREAM _ ViewerIO.CreateViewerStreams["PrintStack"].out; Print: PROC = BEGIN me, local: TV; TRUSTED {me _ AMBridge.TVForFrame[PrincOpsUtils.MyLocalFrame[]]}; FOR local _ me, AMTypes.DynamicParent[local] WHILE local # NIL DO what: TV; what _ AMTypes.Procedure[local !AMTypes.Error => {what _ NIL; CONTINUE}]; IF what = NIL THEN what _ AMTypes.Signal[local !AMTypes.Error => {what _ NIL; CONTINUE}]; PrintTV.Print[what, log]; log.PutRope["\n"]; ENDLOOP; END; Signal: SIGNAL = CODE; SigTest: PROC = BEGIN Sub: PROC = {SIGNAL Signal[]}; Sub[!Signal => {Print[]; CONTINUE}]; END; SigTest2: PROC = BEGIN Signal2: SIGNAL = CODE; Sub: PROC = {SIGNAL Signal2[]}; Sub[!Signal2 => {Print[]; CONTINUE}]; END; END. PPrintStack.Mesa Last Edited by: Spreitzer, March 14, 1984 4:29:42 pm PST ΚΡ– "cedar" style˜Icode™J™8K˜KšΟk œœ-˜LK˜šΠbx œœ˜Kšœœ$˜A—K˜Kš˜K˜Kšœœ œ˜K˜Kšœœœ2˜@K˜šΟnœœ˜ Kš˜Kšœ œ˜Kšœ:˜Ašœ*œ œ˜AKšœœ˜ Kšœ9œœ˜IKš œœœ7œœ˜YKšœ˜K˜Kšœ˜—Kšœ˜—K˜Kšœœœ˜K˜šŸœœ˜Kš˜KšŸœœœ ˜Kšœœ˜$Kšœ˜—K˜K˜šŸœœ˜Kš˜Kšœ œœ˜KšŸœœœ ˜Kšœœ˜%Kšœ˜—K˜Kšœ˜—…—˜Ή