package /Test1; use /Fmt; use /Debug; uint DEBUG_LEVEL = 4; uint DebugLevel; export proc test1()void: /* These are unconditional, and always come out. */ for uint i from 1 upto 10 do Debug/P("Hello there world: ", i :: d0 : i); od; DebugLevel := 3; /* This should come out. */ Debug/P3("Level 3 #1-1"); /* This also comes out. */ Debug/P2("Level 2 #1-1"); DebugLevel := 2; /* These should be compiled in, but not come out. */ Debug/P3("Level 3 #1-2"); Debug/S3() begin Fmt/FmtL("Level 3 Fmt #1a"); Fmt/FmtL("Level 3 Fmt #1b"); end; /* These come out. */ Debug/P2("Level 2 #1-2"); Debug/S2() begin Fmt/Fmt("Level 2 Fmt:"); for uint i from 1 upto 5 do Fmt/Fmt(' ', i << 8 | i << 4 | i :: X0 : 5); od; Fmt/FmtL(); end; corp; package /Test2; use /BI; use /Fmt; use /Debug; uint DEBUG_LEVEL = 3; uint DebugLevel; export proc test2()void: /* Neither of these should be compiled in. */ DebugLevel := 3; Debug/P3("Level 3 #2-1"); DebugLevel := 2; Debug/P3("Level 3 #2-2"); Debug/S3() begin Fmt/FmtL("Level 3 Fmt #2a"); Fmt/FmtL("Level 3 Fmt #2b"); end; BI/Disassemble(test2); corp; package /Test3; use /Fmt; use /Debug; uint DEBUG_LEVEL = 1; uint DebugLevel; export proc test3()void: DebugLevel := 1; /* These should come out. */ Debug/P0("Level 0 #3"); Debug/S0() begin Fmt/FmtL("Level 0 Fmt #3a"); Fmt/FmtL("Level 0 Fmt #3b"); end; corp; package /Test4; use /BI; use /Fmt; use /Debug; uint DEBUG_LEVEL = 0; uint DebugLevel; export proc test4()void: DebugLevel := 1; /* These should not be compiled in. */ Debug/P0("Level 0 #4"); Debug/S0() begin Fmt/FmtL("Level 0 Fmt #4a"); Fmt/FmtL("Level 0 Fmt #4b"); end; BI/Disassemble(test4); corp; package /; export proc main()void: Test1/test1(); Test2/test2(); Test3/test3(); Test4/test4(); corp;